Logotipo de Xilinx

Xilinx DDR2 MIG 7 Guía de estimación de rendemento

Xilinx_DDR2_MIG_7_Rendemento-Estimación-produto

Nota importante: Este PDF descargable dun rexistro de resposta ofrécese para mellorar a súa usabilidade e lexibilidade. É importante ter en conta que Answer Records son WebContido baseado en que se actualizan con frecuencia a medida que hai nova información dispoñible. Lembra que debes visitar o Soporte técnico de Xilinx Websitio e review (Xilinx Answer 63234) para obter a última versión desta resposta.

Introdución

Debido á forma en que se diseñan as memorias DDR2 e DDR3 e ao deseño do controlador da serie MIG 7, o rendemento non é sinxelo.
Require unha comprensión de varios parámetros de temporización de Jedec e a arquitectura do controlador, e terá que executar simulacións para obter as estimacións.
O principio xeral para determinar o rendemento é o mesmo, pero este documento ofrece un xeito sinxelo de obter eficiencia usando o MIG exampo deseño coa axuda do banco de probas e do estímulo files adxunto aquí.

Ancho de banda eficaz

O bus de datos DRAM alcanza un ancho de banda próximo ao pico só durante as ráfagas de lectura e escritura e a súa sobrecarga reduce a taxa de datos efectiva.
Uns exampos gastos xerais son:

  • tempo de precarga de acceso ás filas do mesmo banco (o enderezo de acceso non está no mesmo acceso á páxina de fila)
  • tempo de recuperación de escritura para cambiar de acceso de escritura a lectura
  • o tempo de resposta do autobús para cambiar de acceso de lectura a escritura

Estimación do rendemento de Xilinx DDR2 MIG 7-fig-28
Ancho de banda efectivo = Ancho de banda máximo * Eficiencia 

Xeración de deseño MIG

Consulte UG586 Capítulo 1 para obter detalles paso a paso sobre MIG IP e exampa xeración de deseño.
Antes de executar a simulación de rendemento da serie MIG 7, fai o seguinte para asegurarte de que o teu ambiente de simulación estea ben. Abre o MIG exampDeseña e mapea as bibliotecas adecuadas, executa a simulación e asegúrate de que podes ver a mensaxe "proba superada" na transcrición.
Para demostrar o fluxo, xerei unha IP MIG para xc7vx690tffg1761-2 e invoquei o exampdeseño.
Dúas cousas que hai que ter en conta son os bits de enderezos de memoria e a selección de asignación de enderezos de memoria.
Por example, seleccionei MT41J128M8XX-125 nas opcións despregable da parte de memoria.Xilinx DDR2 MIG-7-Estimación-Rendemento-fig-1

Para a parte de memoria seleccionada da Figura-1, fila = 14, columna = 10 e banco = 3, polo que app_addr_width = fila + columna + banco + rango = 28 Estimación do rendemento de Xilinx DDR2 MIG 7-fig-2

Podes seleccionar a columna BANK_ROW_COLUMN ou ROW BANK.
Deixei a columna ROW BANK, que é a asignación de enderezos predeterminada.

Example design Simulación con banco de probas sintetizables

En Configuración de simulación, seleccione QuestaSim/ModelSim Simulator e busque a localización das bibliotecas compiladas.
Para obter máis información sobre como indicar unha ruta de instalación de ferramentas de terceiros, seleccionar o simulador de destino e compilar e mapear bibliotecas, pode consultar (UG900) Guía de usuario de Vivado Design Suite Simulación lóxicaEstimación do rendemento de Xilinx DDR2 MIG 7-fig-3

Execute a simulación a través da GUI (faga clic na pestana Executar simulación no xestor de proxectos) e asegúrese de ver a mensaxe "proba superada" na transcrición.

Modificacións RTL de simulación de rendemento

  1. Fai clic co botón dereito na pestana de fontes, selecciona "engadir ou crear fontes de simulación" e busca mig7_perfsim_traffic_generator.sv file e fai clic en rematar para engadilo.
  2. Fai clic co botón dereito na pestana de fontes, selecciona "engadir ou crear fontes de simulación", busca perfsim_stimulus.txt e fai clic en Finalizar para engadilo.
  3. Comenta o exampinstanciación le_top no sim_tb_top.v file.
  4. Engade as seguintes liñas RTL 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";
  • localparam BANK_WIDTH = 3;
  • localparam RANK_WIDTH = 1;
  • cable [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • cable [2:0] c0_ddr3_app_cmd;
  • cable c0_ddr3_app_en;
  • cable [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • cable c0_ddr3_app_wdf_end;
  • cable [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • cable c0_ddr3_app_wdf_wren;
  • cable [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • cable c0_ddr3_app_rd_data_end;
  • cable c0_ddr3_app_rd_data_valid;
  • cable c0_ddr3_app_rdy;
  • cable c0_ddr3_app_wdf_rdy;
  • cable c0_data_compare_error;
  • cable ui_clk;
  • cable ui_clk_sync_rst;
  • wire app_sr_req = 0;
  • cable app_ref_req = 0;
  • wire app_zq_req =0;
  • cable c0_app_wdf_mask =0;

Instanciación do controlador de memoria FPGA

mig_7series_0_mig u_mig_7series_0_mig (
// Portos de interface de memoria

  • .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),

// Portos da interface da aplicación

  • .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 do reloxo do sistema

  • .sys_clk_i (sys_clk_i),

// Portas do reloxo de referencia

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

Instanciación do xerador de tráfico de rendemento

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_xen
(
.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. Modifica APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH e BANK_WIDTH segundo a túa selección de parte de memoria.
    Os valores pódense obter de _mig.v file.
  • O nome de instanciación resaltado en amarelo mig_7series_0_mig pode variar segundo o nome do seu compoñente durante a creación da IP, verifique se escolleu un nome diferente e cámbiao en consecuencia.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-4
  • Unha vez xerada a IP, abra o _mig.v file e comproba se hai variacións nos nomes dos sinal LHS e corríxeas.
  • app_sr_req, app_ref_req e app_zq_req deben inicializarse en 0.
  • Como example_top.v está comentado e é novo files engádense, probablemente verá "?" a carón do
    mig_7series_0_mig.v file baixo fontes de simulación.
    Para mapear o correcto file, fai clic co botón dereito en mig_7series_0_mig.v, selecciona "Engadir fontes" e busca
    /mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    e engade o ficheiro mig_7series_0_mig_sim.v file.
  • Se ves "?" para o subxacente files, engade todos os RTL files nos cartafoles clock, controller, ip_top,phy e UI.
  • Unha vez feitos os cambios RTL e todo o necesario files engádense ás súas fontes de simulación, a xerarquía debería ser similar á da Figura 5.
    O fileOs resaltados en vermello son recén engadidos e “?” espérase nos módulos relacionados con ECC xa que a configuración de memoria seleccionada ten a opción ECC desactivada.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-5

Estímulo File Descrición
Cada patrón de estímulo é de 48 bits e o formato descríbese nas Figuras 6-1 a 6-4.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-6

Codificación de enderezos (enderezo [35:0])

O enderezo está codificado no estímulo segundo a Figura 7-1 á Figura 7-6. Todos os campos de enderezo deben introducirse en formato hexadecimal. Todos os campos de enderezos teñen un ancho que é divisible por catro para introducir no formato hexadecimal. O banco de probas só envía os bits necesarios dun campo de enderezo ao controlador de memoria.
Por example, nunha configuración de oito bancos, só se envían os bits de banco [2:0] ao controlador de memoria e os bits restantes son ignorados. Os bits adicionais para un campo de enderezo ofrécense para que ingrese o enderezo nun formato hexadecimal.
Debe confirmar que o valor introducido corresponde ao ancho dunha determinada configuración.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-7

  • Enderezo da columna (Columna[11:0]) – O enderezo da columna no estímulo ofrécese ata un máximo de 12 bits, pero cómpre abordalo en función do parámetro de ancho da columna definido no seu deseño.
  • Enderezo da fila (Fila[15:0]): O enderezo de fila no estímulo ofrécese ata un máximo de 16 bits, pero debes abordalo en función do parámetro de ancho de fila establecido no teu deseño.
  • Enderezo bancario (Banco[3:0]): O enderezo do banco no estímulo ofrécese ata un máximo de catro bits, pero debes abordalo en función do parámetro de ancho do banco definido no teu deseño.
  • Enderezo de clasificación (Ranking[3:0]) – O enderezo de clasificación no estímulo ofrécese ata un máximo de catro bits, pero debes abordalo en función do parámetro de ancho de clasificación establecido no teu deseño.
    O enderezo está montado en función do parámetro MEM_ADDR_ORDER de nivel superior e envíase á interface de usuario

Repetición de comandos (Repetición de comandos [7:0])
O reconto de repeticións de comandos é o número de veces que se repite o comando respectivo na interface de usuario. O enderezo de cada repetición increméntase en 8. O número máximo de repeticións é 128.
O banco de probas non verifica o límite da columna e envolve se se alcanza o límite máximo da columna durante os incrementos.
Os 128 comandos enchen a páxina. Para calquera enderezo de columna que non sexa 0, o reconto de repeticións de 128 acaba cruzando o límite da columna e envolvendo ata o inicio do enderezo da columna.

Utilización do bus
A utilización do bus calcúlase na interface de usuario tendo en conta o número total de lecturas e escrituras e úsase a seguinte ecuación:

Estimación do rendemento de Xilinx DDR2 MIG 7-fig-8

  • BL8 leva catro ciclos de reloxo de memoria
  • end_of_stimulus é o momento no que se fan todos os comandos.
  • calib_done é o momento no que se realiza a calibración.

Example Patróns
Estes exampOs ficheiros baséanse no MEM_ADDR_ORDER establecido en BANK_ROW_COLUMN.

Patrón de lectura único
00_0_2_000F_00A_1: este patrón é unha lectura única da 10a columna, 15a fila e o segundo banco.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-9Patrón de escritura único
00_0_1_0040_010_0: este patrón é unha única escritura na columna 32, fila 128 e no primeiro banco.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-10Escritura única e lectura ao mesmo enderezo
00_0_2_000F_00A_0 – Este patrón é unha única escritura na 10a columna, 15a fila e segundo banco.
00_0_2_000F_00A_1 – Este patrón é unha lectura única da 10a columna, 15a fila e o segundo bancoEstimación do rendemento de Xilinx DDR2 MIG 7-fig-11

Varias escrituras e lecturas co mesmo enderezo
0A_0_0_0010_000_0 – Corresponde a 10 escrituras con enderezos que van de 0 a 80 que se poden ver na columna.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-12

0A_0_0_0010_000_1 – Corresponde a 10 lecturas con enderezos que van de 0 a 80 que se poden ver na columna.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-13

Axuste de páxina durante as escrituras
0A_0_2_000F_3F8_0 – Isto corresponde a 10 escrituras co enderezo de columna envolto ao inicio da páxina despois dunha escritura.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-14

Simulación do xerador de tráfico de rendemento

Neste punto xa remataches con MIG exampsimulación de deseño. Isto implica que a configuración da simulación está lista, que fixeches modificacións RTL da simulación de rendemento, que a nova xerarquía de simulación é correcta e que entendes os patróns de estímulo. Executa a simulación unha vez máis con 16 escrituras e lecturas en perfsim_stimulus.txt.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-15

Executa todo, agarda ata que se afirme o sinal init_calib_complete e poderás ver o número proposto de escrituras e lecturas. A simulación deterase entón. Estimación do rendemento de Xilinx DDR2 MIG 7-fig-16

Cando se lle solicite que saia da simulación, seleccione Non e vai á xanela de transcrición onde poderá ver as estatísticas de rendemento. Estimación do rendemento de Xilinx DDR2 MIG 7-fig-17

Se seleccionas "Saír da simulación" as estatísticas de rendemento escribiranse en a file nomeado mig_band_width_output.txt situado no sim_1/behave cartafol.

Exampruta do directorio do ficheiro: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavEstimación do rendemento de Xilinx DDR2 MIG 7-fig-18

Podes preguntar por que o porcentaxetagO uso do bus é só 29. Volve executar a simulación coa mesma configuración IP pero só cambiando o estímulo file a 256 escrituras e 256 lecturas

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Agora verás a porcentaxetage como 85, o que implica que DDR3 ofrece unha mellor utilización do bus para longas secuencias de escrituras e ráfagas de lectura. Estimación do rendemento de Xilinx DDR2 MIG 7-fig-19

Formas xerais para mellorar o rendemento

Os factores que inflúen na eficiencia pódense dividir en dúas seccións:

  1. Memoria específica
  2. Controlador específicoEstimación do rendemento de Xilinx DDR2 MIG 7-fig-20

A figura 9 dálle un repasoview dos termos específicos da memoria.
A diferenza das SRAM e Block Memories, o rendemento DDR2 ou DDR3 non é só a taxa de datos máxima.

Depende de moitos factores de tempo, incluíndo:

  • tRCD: Retraso de comando de fila (ou atraso de ras a cas).
  • tCAS(CL): Latencia estroboscópica do enderezo da columna.
  • tRP: Atraso da precarga da fila.
  • tRAS: Tempo activo de fila (activo para precambiar).
  • tRC: Tempo de ciclo de filas. tRC = tRAS + tRP
  • tRAC: Retraso de acceso Radom. tRAC = tRCD + tCAS
  • tCWL: Cas latencia de escritura.
  • tZQ: Tempo de calibración ZQ.
  • tRFC: Tempo do ciclo de actualización de filas
  • tWTR: Retraso de escritura para lectura. Última transacción de escritura na hora do comando Read.
  • tWR: Escribir Tempo de recuperación. Última transacción de escritura ao tempo de precarga

O tempo de todos os parámetros indicados depende do tipo de memoria empregada e do grao de velocidade da parte da memoria.
Podes atopar máis detalles sobre as definicións e especificacións de tempo en DDR2 DDR3 JEDEC ou en calquera folla de datos do dispositivo de memoria.

A eficiencia depende principalmente de como se accede á memoria. Diferentes patróns de enderezo dan diferentes resultados de eficiencia.

Gastos xerais de temporización da memoria

  1. Tempo de activación e tempo de precarga ao cambiar de bancos/filas novos ou cambiar de fila no mesmo banco.- Polo tanto, se reduce o cambio de fila, pode eliminar tRCD e tRP.
  2. Enviar comandos de lectura ou escritura continua -Mantendo o tempo tCCD.
  3. Minimizar o cambio de comandos de escritura para ler e ler para escribir: tempo de recuperación de escritura para cambiar a accesos de lectura, tempo de resposta do bus para cambiar de lectura a escritura
  4. Establece un intervalo de actualización adecuado.
    • A SDRAM DDR3 require ciclos de actualización nun intervalo periódico medio de tREFI.
    • Pódense emitir un máximo de 8 comandos de actualización adicionais con antelación ("pulled in"). Isto non reduce o número de actualizacións, pero o intervalo máximo entre dous comandos de actualización circundantes está limitado a 9 × tREFIEstimación do rendemento de Xilinx DDR2 MIG 7-fig-21
  • Utiliza todos os bancos - É preferible un mecanismo de enderezo axeitado.
    • Fila-Banco-Columna: Para unha transacción que se produce nun espazo de enderezos secuencial, o núcleo abre automaticamente a mesma fila no seguinte banco do dispositivo DRAM para continuar a transacción cando se chegue ao final dunha fila existente. É moi axeitado para aplicacións que requiren a explosión de grandes paquetes de datos a localizacións de enderezos secuenciais.
    • Banco-Fila-Columna: Ao cruzar un límite de fila, pecharase a fila actual e abrirase outra fila dentro do mesmo banco. MSB é un enderezo bancario, que se pode usar para cambiar de bancos diferentes. É axeitado para transaccións máis curtas e aleatorias a un bloque de memoria durante un período de tempo e despois un salto a outro bloque (banco)
  • Lonxitude da explosión
    • BL 8 é compatible con DDR3 na serie 7. BC4 ten unha eficiencia moi baixa que é inferior ao 50%. Isto débese a que o tempo de execución de BC4 é o mesmo que BL8. Os datos só están enmascarados dentro do compoñente.
    • Nos casos en que non desexe escribir a ráfaga completa, pódese considerar a máscara de datos ou a escritura despois da lectura.
  • Establece un intervalo ZQ adecuado (só DDR3)
    O controlador envía comandos de calibración ZQ Short (ZQCS) e ZQ Long (ZQCL).
    • Cumpre o estándar DDR3 Jedec
    • A calibración ZQ é discutida na sección 5.5 do estándar JEDEC Spec JESD79-3 DDR3 SDRAM
    • ZQ Calibration calibra On Die Termination (ODT) a intervalos regulares para ter en conta as variacións entre VT
    • A lóxica está contida en bank_common.v/vhd
    • O parámetro Tzqcs determina a velocidade á que se envía un comando de calibración ZQ á memoria
    • É posible desactivar o contador e enviar manualmente usando app_zq_req, é semellante ao envío manual dunha actualización.
      Consulte (Xilinx Answer 47924) para obter máis información.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-22

Gastos xerais do controlador

  1. Lecturas periódicas - Consulte (Xilinx Resposta 43344) para os detalles.
    • Non cambie o período de lectura
    • Omita lecturas periódicas durante as escrituras e emita o número de lecturas perdidas antes dunha lectura real
  2. Reordenación - Referencia (Xilinx Resposta 34392) para os detalles.
    Para os deseños de interfaces de usuario e AXI é preferible ter isto activado.
    • Reordenar é a lóxica que mira para adiante varios comandos e cambia a orde dos comandos do usuario para que os comandos que non son de memoria non ocupen un ancho de banda válido. O rendemento tamén está relacionado co patrón de tráfico real.
    • Segundo o patrón de enderezos, a reordenación axuda a saltar a precarga e a activar ordes e fai que tRCD e tRP non ocupen o ancho de banda de datos.Estimación do rendemento de Xilinx DDR2 MIG 7-fig-23
  3. Tenta aumentar o número de máquinas bancarias.
    • A maior parte da lóxica do controlador reside nas máquinas bancarias e corresponden a bancos DRAM
    • Unha máquina bancaria determinada xestiona un único banco de DRAM en cada momento.
    • A asignación de máquinas bancarias é dinámica polo que non é necesario ter unha máquina bancaria para cada banco físico.
    • As máquinas bancarias pódense configurar, pero é unha compensación entre área e rendemento.
    • O número permitido de caixeiros bancarios varía de 2 a 8.
    • Por defecto, 4 máquinas bancarias están configuradas mediante parámetros RTL.
    • Para cambiar as máquinas bancarias, considere o parámetro nBANK_MACHS = 8 contido en memc_ui_top Example para 8 máquinas bancarias – nBANK_MACHS = 8

Agora estás consciente dos factores que inflúen no rendemento.
Considere unha aplicación upstream que che ofreza 512 bytes de datos por paquete e cómpre gardalos en diferentes localizacións de memoria. Como 512 bytes de datos equivalen a 64 ráfagas de datos DDR3, volva executar o example deseño cun estímulo file contén 512 escrituras, 512 lecturas e cambio de fila por cada 64 escrituras ou lecturas:

  • 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

Ao final da simulación verás que a utilización do autobús está nun 77 por cento. Estimación do rendemento de Xilinx DDR2 MIG 7-fig-24

Figura 11: Estatísticas de rendemento para 512 escrituras e 512 lecturas: cambio de fila para 64 escrituras ou lecturas. 

Agora podes aplicar os coñecementos aprendidos na sección anterior para mellorar a eficiencia. Cun view para utilizar todos os bancos en lugar de cambiar a fila, modifique o patrón de enderezo para cambiar o banco como se mostra a continuación.
Isto é equivalente a configurar ROW_BANK_Column na configuración de asignación de enderezos de memoria na GUI de 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

Ao final da simulación, verás que o 77 por cento anterior de utilización do autobús é agora 87. Estimación do rendemento de Xilinx DDR2 MIG 7-fig-25

Se aínda necesitas unha maior eficiencia, podes optar por paquetes grandes de 1024 ou 2048 bytes, ou considerar unha actualización manual.

Nota: Xilinx non anima a ignorar a actualización do controlador xa que non estamos seguros de se poderá cumprir o tempo de actualización automática de Jedec que afecta á fiabilidade dos datos.
Desde o lado do controlador podes cambiar nBANk_MACH e ver a mellora no rendemento.
Non obstante, isto pode afectar o tempo de deseño, consulte (Xilinx Resposta 36505) para obter máis información en nBANk_MACHEstimación do rendemento de Xilinx DDR2 MIG 7-fig-26

Abre o core_name_mig_sim.v file e cambie os parámetros nBANK_MACHS de 4 a 8 e volva executar a simulación. Para que o valor do parámetro teña efecto no hardware, cómpre actualizar core_name_mig.v file.
Usei o mesmo patrón onde obtivemos un 87% de utilización do autobús (figura -12).
Con nBANK_MACHS configurado en 8, a eficiencia agora é do 90 %. Estimación do rendemento de Xilinx DDR2 MIG 7-fig-27

Tamén teña en conta que os controladores ½ e ¼ afectan negativamente á eficiencia debido ás súas latencias.
Por example, xa que só podemos enviar comandos cada 4 ciclos CK, ás veces hai un recheo extra cando se cumpren as especificacións mínimas de tempo DRAM, o que pode diminuír a eficiencia do teórico.
Proba diferentes controladores para atopar o que se adapte ás túas necesidades de eficiencia.

Referencias

  1. Zynq-7000 AP SoC e FPGA da serie 7 MIS v2.3 [UG586]
  2. Xilinx MIG Solution Center http://www.xilinx.com/support/answers/34243.html

Historial de revisións
13/03/2015 – Lanzamento inicial

Descargar PDF: Xilinx DDR2 MIG 7 Guía de estimación de rendemento

Referencias

Deixa un comentario

O teu enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *