Xilinx DDR2 MIG 7 Guía de estimación de rendemento
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
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.
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
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óxica
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
- 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.
- 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.
- Comenta o exampinstanciación le_top no sim_tb_top.v file.
- 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.
- 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.
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.
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.
- 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:
- 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.Patró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.Escritura ú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 banco
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.
0A_0_0_0010_000_1 – Corresponde a 10 lecturas con enderezos que van de 0 a 80 que se poden ver na columna.
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.
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.
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.
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.
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/behav
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.
Formas xerais para mellorar o rendemento
Os factores que inflúen na eficiencia pódense dividir en dúas seccións:
- Memoria específica
- Controlador específico
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
- 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.
- Enviar comandos de lectura ou escritura continua -Mantendo o tempo tCCD.
- 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
- 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 × tREFI
- 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.
Gastos xerais do controlador
- 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
- 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.
- 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.
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.
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_MACH
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 %.
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
- Zynq-7000 AP SoC e FPGA da serie 7 MIS v2.3 [UG586]
- 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