Logotipo Xilinx

Xilinx DDR2 MIG 7 Guia de estimativa de desempenho

Xilinx_DDR2_MIG_7_Produto de estimativa de desempenho

Nota importante: Este PDF para download de um registro de resposta é fornecido para melhorar sua usabilidade e legibilidade. É importante observar que os Registros de Resposta são Webconteúdo baseado em conteúdo que é atualizado frequentemente à medida que novas informações são disponibilizadas. Você é lembrado de visitar o Suporte Técnico da Xilinx Website e review (Resposta Xilinx 63234) para obter a versão mais recente desta resposta.

Introdução

Devido à forma como as memórias DDR2 e DDR3 são arquitetadas e o controlador da série MIG 7 é projetado, o desempenho não é simples.
Requer uma compreensão de vários parâmetros de temporização Jedec e arquitetura do controlador, e você precisará executar simulações para obter as estimativas.
O princípio geral para determinar o desempenho é o mesmo, mas este documento fornece uma maneira fácil de obter eficiência usando o MIG example design com a ajuda de bancada de teste e estímulo fileestá anexado aqui.

Largura de banda efetiva

O barramento de dados DRAM atinge largura de banda próxima ao pico apenas durante picos de leitura e gravação e sua sobrecarga reduz a taxa de dados efetiva.
Alguns exampos custos indiretos são:

  • tempo de pré-carga acessando linhas no mesmo banco (endereço de acesso não na mesma linha-página atingida)
  • tempo de recuperação de gravação para mudar do acesso de gravação para leitura
  • o tempo de resposta do barramento para mudar do acesso de leitura para gravação

Estimativa de desempenho Xilinx DDR2 MIG 7-fig-28
Largura de banda efetiva = largura de banda de pico * Eficiência 

Geração de Projeto MIG

Consulte o Capítulo 586 do UG1 para obter detalhes passo a passo sobre MIG IP e example geração de design.
Antes de executar a simulação de desempenho do MIG Série 7, faça o seguinte para garantir que seu ambiente de simulação esteja adequado. Abra o MIG exampProjete e mapeie as bibliotecas apropriadas, execute a simulação e certifique-se de ver a mensagem “teste aprovado” na transcrição.
Para demonstrar o fluxo, gerei um IP MIG para xc7vx690tffg1761-2 e invoquei o exampProjeto.
Duas coisas que devem ser observadas são os bits de endereço de memória e a seleção de mapeamento de endereço de memória.
Por exemploample, selecionei MT41J128M8XX-125 nas opções suspensas da parte da memória.Xilinx DDR2 MIG-7-Estimativa de desempenho-fig-1

Para a parte de memória selecionada na Figura 1, linha = 14, coluna = 10 e banco = 3, então app_addr_width = linha + coluna + banco + classificação = 28 Estimativa de desempenho Xilinx DDR2 MIG 7-fig-2

Você pode selecionar a coluna BANK_ROW_COLUMN ou ROW BANK.
Saí da coluna ROW BANK, que é o mapeamento de endereço padrão.

Example design Simulação com bancada de testes sintetizável

Em configurações de simulação, selecione QuestaSim/ModelSim Simulator e navegue até o local das bibliotecas compiladas.
Para obter detalhes sobre como apontar para um caminho de instalação de ferramentas de terceiros, selecionar o simulador de destino e compilar e mapear bibliotecas, você pode consultar (UG900) Guia do usuário do Vivado Design Suite Simulação lógicaEstimativa de desempenho Xilinx DDR2 MIG 7-fig-3

Execute a simulação por meio da GUI (clique na guia Executar Simulação no gerenciador de projetos) e certifique-se de ver a mensagem “teste aprovado” na transcrição.

Modificações RTL de simulação de desempenho

  1. Clique com o botão direito na guia de fontes, selecione “adicionar ou criar fontes de simulação” e navegue até mig7_perfsim_traffic_generator.sv file e clique em Concluir para adicioná-lo.
  2. Clique com o botão direito na guia de fontes, selecione “adicionar ou criar fontes de simulação”, navegue até perfsim_stimulus.txt e clique em Concluir para adicioná-lo.
  3. Comente o exampinstanciação le_top no sim_tb_top.v file.
  4. Adicione as linhas RTL abaixo a sim_tb_top,v
  • localparam APP_ADDR_WIDTH = 28;
  • localparam APP_DATA_WIDTH = 64;
  • localparam APP_MASK_WIDTH=APP_DATA_WIDTH/8;
  • localparam MEM_ADDR_ORDER = “BANK_ROW_COLUMN”;
  • parâmetro local BANK_WIDTH = 3;
  • parâmetro local RANK_WIDTH = 1;
  • fio [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • fio [2:0] c0_ddr3_app_cmd;
  • fio c0_ddr3_app_en;
  • fio [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • fio c0_ddr3_app_wdf_end;
  • fio [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • fio c0_ddr3_app_wdf_wren;
  • fio [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • fio c0_ddr3_app_rd_data_end;
  • fio c0_ddr3_app_rd_data_valid;
  • fio c0_ddr3_app_rdy;
  • fio c0_ddr3_app_wdf_rdy;
  • fio c0_data_compare_error;
  • fio ui_clk;
  • conectar ui_clk_sync_rst;
  • conectar app_sr_req = 0;
  • conectar app_ref_req = 0;
  • conectar app_zq_req =0;
  • fio c0_app_wdf_mask =0;

Instanciação do controlador de memória FPGA

mig_7series_0_mig u_mig_7series_0_mig (
//Portas de interface de memória

  • .ddr3_addr (ddr3_addr_fpga),
  • .ddr3_ba (ddr3_ba_fpga),
  • .ddr3_cas_n (ddr3_cas_n_fpga),
  • .ddr3_ck_n (ddr3_ck_n_fpga),
  • .ddr3_ck_p (ddr3_ck_p_fpga),
  • .ddr3_cke (ddr3_cke_fpga),
  • .ddr3_ras_n (ddr3_ras_n_fpga),
  • .ddr3_reset_n (ddr3_reset_n),
  • .ddr3_we_n (ddr3_we_n_fpga),
  • .ddr3_dq (ddr3_dq_fpga),
  • .ddr3_dqs_n (ddr3_dqs_n_fpga),
  • .ddr3_dqs_p (ddr3_dqs_p_fpga),
  • .init_calib_complete (init_calib_complete),
  • .ddr3_cs_n (ddr3_cs_n_fpga),
  • .ddr3_dm (ddr3_dm_fpga),
  • .ddr3_odt (ddr3_odt_fpga),

//Portas de interface do aplicativo

  • .app_addr (c0_ddr3_app_addr),
  • .app_cmd (c0_ddr3_app_cmd),
  • .app_en (c0_ddr3_app_en),
  • .app_wdf_data (c0_ddr3_app_wdf_data),
  • .app_wdf_end (c0_ddr3_app_wdf_end),
  • .app_wdf_wren (c0_ddr3_app_wdf_wren),
  • .app_rd_data (c0_ddr3_app_rd_data),
  • .app_rd_data_end (app_rd_data_end),
  • .app_rd_data_valid (c0_ddr3_app_rd_data_valid),
  • .app_rdy (c0_ddr3_app_rdy),
  • .app_wdf_rdy (c0_ddr3_app_wdf_rdy),
  • .app_sr_req (app_sr_req),
  • .app_ref_req (app_ref_req),
  • .app_zq_req (app_zq_req),
  • .app_sr_active (app_sr_active),
  • .app_ref_ack (app_ref_ack),
  • .app_zq_ack (app_zq_ack),
  • .ui_clk (ui_clk),
  • .ui_clk_sync_rst (ui_clk_sync_rst),
  • .app_wdf_mask (c0_ddr3_app_wdf_mask),

// Portas de relógio do sistema

  • .sys_clk_i (sys_clk_i),

// Portas de relógio de referência

  • .clk_ref_i (clk_ref_i),
  • .sys_rst (sys_rst)
  • );

Instanciação do gerador de tráfego de desempenho

mig7_perfsim_traffic_generator#
(
.APP_DATA_WIDTH (APP_DATA_WIDTH),
.COL_WIDTH (COL_WIDTH),
.ROW_WIDTH (ROW_WIDTH),
.RANK_WIDTH (RANK_WIDTH),
.BANK_WIDTH (BANK_WIDTH),
.MEM_ADDR_ORDER (MEM_ADDR_ORDER),
.tCK (tCK),
.ADDR_WIDTH (APP_ADDR_WIDTH)
)

u_traffic_gen
(
.clk (ui_clk),
.rst (ui_clk_sync_rst),
.init_calib_complete (init_calib_complete),
.cmp_error (c0_data_compare_error),
.app_wdf_rdy (c0_ddr3_app_wdf_rdy),
.app_rd_data_valid (c0_ddr3_app_rd_data_valid),
.app_rd_data (c0_ddr3_app_rd_data),
.app_rdy (c0_ddr3_app_rdy),
.app_cmd (c0_ddr3_app_cmd),
.app_addr (c0_ddr3_app_addr),
.app_en (c0_ddr3_app_en ),
.app_wdf_mask (c0_ddr3_app_wdf_mask),
.app_wdf_data (c0_ddr3_app_wdf_data),
.app_wdf_end (c0_ddr3_app_wdf_end),
.app_wdf_wren (c0_ddr3_app_wdf_wren)
);

  • 5. Modifique APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH e BANK_WIDTH de acordo com sua seleção de parte de memória.
    Os valores podem ser obtidos no _mig.v file.
  • O nome de instanciação destacado em amarelo mig_7series_0_mig pode variar de acordo com o nome do seu componente durante a criação do IP, verifique se você escolheu um nome diferente e altere-o de acordo.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-4
  • Assim que o IP for gerado, abra o _mig.v file e verifique quaisquer variações nos nomes dos sinais LHS e corrija-as.
  • app_sr_req, app_ref_req e app_zq_req devem ser inicializados como 0.
  • como example_top.v está comentado e novo files forem adicionados, você provavelmente verá “?” ao lado do
    mig_7series_0_mig.v file sob fontes de simulação.
    Para mapear o correto file, clique com o botão direito em mig_7series_0_mig.v, selecione “Adicionar fontes”, navegue até
    /mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    e adicione o mig_7series_0_mig_sim.v file.
  • Se você ver "?" para o subjacente files, adicione todos os RTL files nas pastas clocking, controller, ip_top,phy e UI.
  • Assim que as alterações RTL forem feitas e todos os requisitos necessários files são adicionados às suas fontes de simulação, a hierarquia deve ser semelhante à Figura 5.
    O files destacados em vermelho foram adicionados recentemente e “?” é esperado em módulos relacionados a ECC, pois a configuração de memória selecionada tem a opção ECC desativada.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-5

Estímulo File Descrição
Cada padrão de estímulo tem 48 bits e o formato é descrito nas Figuras 6-1 a 6-4.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-6

Codificação de endereço (Endereço [35:0])

O endereço é codificado no estímulo conforme Figura 7-1 a Figura 7-6. Todos os campos de endereço precisam ser inseridos no formato hexadecimal. Todos os campos de endereço têm uma largura divisível por quatro para serem inseridos no formato hexadecimal. A bancada de testes envia apenas os bits necessários de um campo de endereço para o Controlador de Memória.
Por exemploampPor exemplo, em uma configuração de oito bancos, apenas os bits do banco [2:0] são enviados ao controlador de memória e os bits restantes são ignorados. Os bits extras para um campo de endereço são fornecidos para você inserir o endereço em formato hexadecimal.
Você deve confirmar se o valor inserido corresponde à largura de uma determinada configuração.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-7

  • Endereço da Coluna (Coluna[11:0]) – O endereço da coluna no estímulo é fornecido com no máximo 12 bits, mas você precisa resolver isso com base no parâmetro de largura da coluna definido em seu design.
  • Endereço da linha (Linha[15:0]) – O endereço da linha no estímulo é fornecido com no máximo 16 bits, mas você precisa resolver isso com base no parâmetro de largura da linha definido em seu design.
  • Endereço do Banco (Banco[3:0]) – O endereço do banco no estímulo é fornecido com no máximo quatro bits, mas você precisa resolver isso com base no parâmetro de largura do banco definido em seu design.
  • Endereço de classificação (Classificação[3:0]) – O endereço de classificação no estímulo é fornecido com no máximo quatro bits, mas você precisa resolver isso com base no parâmetro de largura de classificação definido em seu design.
    O endereço é montado com base no parâmetro MEM_ADDR_ORDER de nível superior e enviado para a interface do usuário

Repetição de Comando (Repetição de Comando [7:0])
A contagem de repetições de comando é o número de vezes que o respectivo comando é repetido na interface do usuário. O endereço para cada repetição é incrementado em 8. A contagem máxima de repetições é 128.
A bancada de testes não verifica o limite da coluna e verifica se o limite máximo da coluna é atingido durante os incrementos.
Os 128 comandos preenchem a página. Para qualquer endereço de coluna diferente de 0, a contagem de repetições de 128 acaba cruzando o limite da coluna e chegando ao início do endereço da coluna.

Utilização de ônibus
A utilização do barramento é calculada na interface do usuário levando em consideração o número total de leituras e gravações e a seguinte equação é usada:

Estimativa de desempenho Xilinx DDR2 MIG 7-fig-8

  • BL8 leva quatro ciclos de clock de memória
  • end_of_stimulus é o momento em que todos os comandos são executados.
  • calib_done é o momento em que a calibração é concluída.

Exampos Padrões
Esses exampOs arquivos são baseados no MEM_ADDR_ORDER definido como BANK_ROW_COLUMN.

Padrão de leitura única
00_0_2_000F_00A_1 – Este padrão é uma leitura única da 10ª coluna, 15ª linha e segundo banco.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-9Padrão de gravação único
00_0_1_0040_010_0 – Este padrão é uma única gravação na 32ª coluna, 128ª linha e primeiro banco.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-10Gravação única e leitura no mesmo endereço
00_0_2_000F_00A_0 – Esse padrão é uma única gravação na 10ª coluna, na 15ª linha e no segundo banco.
00_0_2_000F_00A_1 – Este padrão é uma única leitura da 10ª coluna, 15ª linha e segundo bancoEstimativa de desempenho Xilinx DDR2 MIG 7-fig-11

Várias gravações e leituras com o mesmo endereço
0A_0_0_0010_000_0 – Isso corresponde a 10 gravações com endereços de 0 a 80 que podem ser vistos na coluna.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-12

0A_0_0_0010_000_1 – Isso corresponde a 10 leituras com endereços de 0 a 80 que podem ser vistos na coluna.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-13

Quebra de página durante gravações
0A_0_2_000F_3F8_0 – Isso corresponde a 10 gravações com o endereço da coluna agrupado no início da página após uma gravação.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-14

Simulando o Gerador de Tráfego de Desempenho

Neste ponto você concluiu o MIG example simulação de projeto. Isso implica que sua configuração de simulação está pronta, você fez modificações de RTL na simulação de desempenho, a nova hierarquia de simulação está correta e você entendeu os padrões de estímulo. Execute a simulação mais uma vez com 16 gravações e leituras em perfsim_stimulus.txt.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-15

Execute tudo, espere até que o sinal init_calib_complete seja afirmado e você poderá ver o número proposto de gravações e leituras. A simulação irá então parar. Estimativa de desempenho Xilinx DDR2 MIG 7-fig-16

Quando for solicitado a sair da simulação, selecione Não e vá para a janela de transcrição onde você poderá ver as estatísticas de desempenho. Estimativa de desempenho Xilinx DDR2 MIG 7-fig-17

Se você selecionar “sair da simulação” estatísticas de desempenho serão gravadas em um file nomeado mig_band_width_output.txt localizado em sim_1/behave pasta.

Exampcaminho do diretório: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavEstimativa de desempenho Xilinx DDR2 MIG 7-fig-18

Você pode se perguntar por que a porcentagemtagA utilização do barramento é de apenas 29. Execute novamente a simulação com as mesmas configurações de IP, mas apenas alterando o estímulo file para 256 gravações e 256 leituras

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Agora você verá a porcentagemtage como 85, o que implica que DDR3 oferece melhor utilização do barramento para longas sequências de gravações e rajadas de leitura. Estimativa de desempenho Xilinx DDR2 MIG 7-fig-19

Maneiras gerais de melhorar o desempenho

Os fatores que influenciam a eficiência podem ser divididos em duas seções:

  1. Específico de memória
  2. Específico do controladorEstimativa de desempenho Xilinx DDR2 MIG 7-fig-20

A Figura 9 fornece uma visão geralview dos termos que são específicos da memória.
Ao contrário das SRAMs e Block Memories, o desempenho DDR2 ou DDR3 não é apenas a taxa máxima de dados.

Depende de muitos fatores de tempo, incluindo:

  • tRCD: Atraso de comando de linha (ou atraso de ras para cas).
  • tCAS(CL): Latência do estroboscópio do endereço da coluna.
  • tRP: Atraso na pré-carga da linha.
  • tRAS: Tempo ativo da linha (ativar para pré-alterar).
  • tRC: Tempo de ciclo da linha. tRC = tRAS + tRP
  • TRAC: Atraso de acesso Radom. tRAC = tRCD + tCAS
  • tCWL: Latência de gravação do Cas.
  • tZQ: Tempo de calibração ZQ.
  • tRFC: Tempo de ciclo de atualização de linha
  • tWTR: Atraso de gravação para leitura. Última transação de gravação na hora do comando de leitura.
  • tWR: Escreva o tempo de recuperação. Última transação de gravação no tempo de pré-carga

O tempo de todos os parâmetros listados depende do tipo de memória usada e do grau de velocidade da peça de memória.
Mais detalhes sobre as definições e especificações de tempo podem ser encontrados em DDR2 DDR3 JEDEC ou em qualquer folha de dados de dispositivo de memória.

A eficiência depende principalmente de como a memória é acessada. Diferentes padrões de endereço fornecem diferentes resultados de eficiência.

Sobrecargas de tempo de memória

  1. Tempo de ativação e tempo de pré-carga ao mudar para novos bancos/linhas ou alterar linhas no mesmo banco. - Portanto, se você reduzir a mudança de linha, isso pode remover tRCD e tRP.
  2. Enviar comandos contínuos de gravação ou leitura -Manutenção do tempo tCCD.
  3. Minimize a mudança de comando de gravação para leitura e de leitura para gravação – Tempo de recuperação de gravação para mudar para acessos de leitura, tempo de resposta do barramento para mudar de leitura para gravação
  4. Defina um intervalo de atualização adequado.
    • SDRAM DDR3 requer ciclos de atualização em um intervalo periódico médio de tREFI.
    • Um máximo de 8 comandos de atualização adicionais podem ser emitidos antecipadamente (“puxados”). Isso não reduz o número de atualizações, mas o intervalo máximo entre dois comandos de atualização adjacentes é limitado a 9 × tREFIEstimativa de desempenho Xilinx DDR2 MIG 7-fig-21
  • Utilize todos os bancos – É preferível um mecanismo de endereçamento adequado.
    • Coluna do banco de linhas: Para uma transação que ocorre em um espaço de endereço sequencial, o núcleo abre automaticamente a mesma linha no próximo banco do dispositivo DRAM para continuar a transação quando o final de uma linha existente for atingido. É adequado para aplicações que exigem a expansão de grandes pacotes de dados para locais de endereços sequenciais.
    • Coluna de linha do banco: Ao cruzar o limite de uma linha, a linha atual será fechada e outra linha será aberta dentro do mesmo banco. MSB é um endereço bancário que pode ser usado para mudar de bancos diferentes. É adequado para transações mais curtas e aleatórias para um bloco de memória por um período de tempo e depois saltar para outro bloco (banco)
  • Duração da rajada
    • BL 8 é compatível com DDR3 na série 7. BC4 tem uma eficiência muito baixa, inferior a 50%. Isso ocorre porque o tempo de execução de BC4 é igual ao de BL8. Os dados são apenas mascarados dentro do componente.
    • Nos casos em que você não deseja gravar em rajada completa, a máscara de dados ou a gravação após leitura podem ser consideradas.
  • Defina um intervalo ZQ adequado (somente DDR3)
    O controlador envia comandos de calibração ZQ Short (ZQCS) e ZQ Long (ZQCL).
    • Aderir ao padrão DDR3 Jedec
    • A calibração ZQ é discutida na seção 5.5 do padrão JEDEC Spec JESD79-3 DDR3 SDRAM
    • A Calibração ZQ calibra On Die Termination (ODT) em intervalos regulares para levar em conta variações no VT
    • A lógica está contida em bank_common.v/vhd
    • O parâmetro Tzqcs determina a taxa na qual um comando de calibração ZQ é enviado para a memória
    • É possível desabilitar o contador e enviar manualmente usando app_zq_req, é semelhante ao envio manual de uma atualização.
      Consulte (Resposta Xilinx 47924) para obter detalhes.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-22

Despesas gerais do controlador

  1. Leituras Periódicas – Consulte (Xilinx Resposta 43344) para mais detalhes.
    • Não altere o período da leitura
    • Ignore leituras periódicas durante gravações e emita o número de leituras perdidas antes de uma leitura verdadeira
  2. Reordenando – Consulte (Xilinx Resposta 34392) para mais detalhes.
    Para designs de interface de usuário e AXI, é preferível que esta opção esteja habilitada.
    • Reordenar é a lógica que antecipa vários comandos e altera a ordem dos comandos do usuário para fazer com que comandos que não sejam de memória não ocupem largura de banda válida. O desempenho também está relacionado ao padrão de tráfego real.
    • Com base no padrão de endereço, a reordenação ajuda a ignorar os comandos de pré-carga e ativação e faz com que tRCD e tRP não ocupem largura de banda de dados.Estimativa de desempenho Xilinx DDR2 MIG 7-fig-23
  3. Tente aumentar o número de Máquinas Bancárias.
    • A maior parte da lógica do controlador reside nas máquinas bancárias e elas correspondem aos bancos DRAM
    • Uma determinada máquina bancária gerencia um único banco DRAM a qualquer momento.
    • A atribuição de máquinas bancárias é dinâmica, portanto não é necessário ter uma máquina bancária para cada banco físico.
    • As máquinas bancárias podem ser configuradas, mas é uma troca entre área e desempenho.
    • O número permitido de máquinas bancárias varia de 2 a 8.
    • Por padrão, 4 Máquinas Bancárias são configuradas através de parâmetros RTL.
    • Para alterar Máquinas de Banco, considere o parâmetro nBANK_MACHS = 8 contido em memc_ui_top Examparquivo para 8 Máquinas Bancárias – nBANK_MACHS = 8

Agora você está ciente dos fatores que influenciam o desempenho.
Considere um aplicativo upstream que fornece 512 bytes de dados por pacote e você precisa salvá-los em diferentes locais de memória. Como 512 bytes de dados são iguais a 64 rajadas de dados DDR3, execute novamente o example design com um estímulo file contendo 512 gravações, 512 leituras e troca de linha para cada 64 gravações ou leituras:

  • 3f_0_0_0000_000_0
  • 3f_0_0_0001_000_0
  • 3f_0_0_0002_000_0
  • 3f_0_0_0003_000_0
  • 3f_0_0_0004_000_0
  • 3f_0_0_0005_000_0
  • 3f_0_0_0006_000_0
  • 3f_0_0_0007_000_0
  • 3f_0_0_0000_000_1
  • 3f_0_0_0001_000_1
  • 3f_0_0_0002_000_1
  • 3f_0_0_0003_000_1
  • 3f_0_0_0004_000_1
  • 3f_0_0_0005_000_1
  • 3f_0_0_0006_000_1
  • 3f_0_0_0007_000_1

No final da simulação você verá que a utilização do ônibus está em 77%. Estimativa de desempenho Xilinx DDR2 MIG 7-fig-24

Figura 11: Estatísticas de desempenho para 512 gravações e 512 leituras – Troca de linha para 64 gravações ou leituras. 

Agora você pode aplicar o conhecimento aprendido na seção anterior para melhorar a eficiência. Com um view para utilizar todos os bancos em vez de alterar a linha, modifique o padrão de endereço para alterar o banco conforme mostrado abaixo.
Isso é equivalente a definir ROW_BANK_Column na configuração de mapeamento de endereço de memória na GUI do MIG.

  • 3f_0_0_0000_000_0
  • 3f_0_1_0000_000_0
  • 3f_0_2_0000_000_0
  • 3f_0_3_0000_000_0
  • 3f_0_4_0000_000_0
  • 3f_0_5_0000_000_0
  • 3f_0_6_0000_000_0
  • 3f_0_7_0000_000_0
  • 3f_0_0_0000_000_1
  • 3f_0_1_0000_000_1
  • 3f_0_2_0000_000_1
  • 3f_0_3_0000_000_1
  • 3f_0_4_0000_000_1
  • 3f_0_5_0000_000_1
  • 3f_0_6_0000_000_1
  • 3f_0_7_0000_000_1

No final da simulação você verá que os 77 por cento anteriores de utilização do ônibus agora são 87! Estimativa de desempenho Xilinx DDR2 MIG 7-fig-25

Se você ainda precisar de maior eficiência, poderá optar por pacotes grandes de 1024 ou 2048 bytes ou considerar uma atualização manual.

Observação: A Xilinx não incentiva o desvio da atualização do controlador, pois não temos certeza se você conseguirá cumprir o tempo de atualização automática do Jedec, o que afeta a confiabilidade dos dados.
Do lado do controlador você pode alterar nBANk_MACH e ver a melhoria no desempenho.
No entanto, isso pode afetar o tempo do projeto, consulte (Xilinx Resposta 36505) para obter detalhes sobre nBANk_MACHEstimativa de desempenho Xilinx DDR2 MIG 7-fig-26

Abra core_name_mig_sim.v file e altere os parâmetros nBANK_MACHS de 4 para 8 e execute novamente a simulação. Para que o valor do parâmetro tenha efeito no hardware, você precisa atualizar o core_name_mig.v file.
Usei o mesmo padrão onde obtivemos 87% de utilização do barramento (figura -12).
Com nBANK_MACHS definido como 8, a eficiência agora é de 90%. Estimativa de desempenho Xilinx DDR2 MIG 7-fig-27

Observe também que ½ e ¼ controladores afetam negativamente a eficiência devido às suas latências.
Por exemploampContudo, como só podemos enviar comandos a cada 4 ciclos de CK, às vezes há preenchimento extra ao aderir às especificações mínimas de tempo de DRAM, o que pode diminuir a eficiência do teórico.
Experimente diferentes controladores para encontrar aquele que se adapta às suas necessidades de eficiência.

Referências

  1. Zynq-7000 AP SoC e FPGAs Série 7 MIS v2.3 [UG586]
  2. Centro de soluções Xilinx MIG http://www.xilinx.com/support/answers/34243.html

Histórico de revisão
13/03/2015 – Lançamento inicial

Baixar PDF: Xilinx DDR2 MIG 7 Guia de estimativa de desempenho

Referências

Deixe um comentário

Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados *