Guía de estimación del rendimiento de Xilinx DDR2 MIG 7
Nota importante: Este PDF descargable de un Registro de respuestas se proporciona para mejorar su usabilidad y legibilidad. Es importante tener en cuenta que los registros de respuestas son Web-Contenido basado en que se actualiza con frecuencia a medida que hay nueva información disponible. Se le recuerda visitar el Soporte Técnico de Xilinx Websitio y review (Respuesta Xilinx 63234) para obtener la última versión de esta respuesta.
Introducción
Debido a la forma en que están diseñadas las memorias DDR2 y DDR3 y al diseño del controlador de la serie MIG 7, el rendimiento no es sencillo.
Requiere comprender varios parámetros de sincronización de Jedec y la arquitectura del controlador, y deberá ejecutar simulaciones para obtener las estimaciones.
El principio general para determinar el rendimiento es el mismo, pero este documento proporciona una manera fácil de obtener eficiencia utilizando el MIG ex.ample diseño con la ayuda de banco de pruebas y estímulo fileSe adjunta aquí.
Ancho de banda efectivo
El bus de datos DRAM alcanza un ancho de banda casi máximo sólo durante ráfagas de lectura y escritura y su sobrecarga reduce la velocidad de datos efectiva.
Algunos exampLos archivos de gastos generales son:
- tiempo de precarga al acceder a filas en el mismo banco (la dirección de acceso no está en la misma página de fila)
- tiempo de recuperación de escritura para cambiar de acceso de escritura a lectura
- el tiempo de respuesta del autobús para cambiar de acceso de lectura a escritura
Ancho de banda efectivo = Ancho de banda máximo * Eficiencia
Generación de diseño MIG
Consulte el Capítulo 586 de UG1 para obtener detalles paso a paso sobre MIG IP y ex.ampla generación del diseño.
Antes de ejecutar la simulación de rendimiento de la serie MIG 7, haga lo siguiente para asegurarse de que su entorno de simulación esté bien. Abra el MIG exampDiseñe y asigne las bibliotecas apropiadas, ejecute la simulación y asegúrese de poder ver el mensaje "prueba aprobada" en la transcripción.
Para demostrar el flujo, generé una IP MIG para xc7vx690tffg1761-2 e invoqué el exampdiseño.
Dos cosas que se deben tener en cuenta son los bits de dirección de memoria y la selección de asignación de direcciones de memoria.
Por ejemploamparchivo, he seleccionado MT41J128M8XX-125 en las opciones desplegables de la parte de memoria.
Para la parte de memoria seleccionada de la Figura 1, fila = 14, columna = 10 y banco = 3, entonces app_addr_width = fila + columna + banco + rango = 28
Puede seleccionar BANK_ROW_COLUMN o ROW BANK Column.
Dejé la columna ROW BANK, que es la asignación de dirección predeterminada.
Example design Simulación con banco de pruebas sintetizable
En Configuración de simulación, seleccione QuestaSim/ModelSim Simulator y busque la ubicación de las bibliotecas compiladas.
Para obtener detalles sobre cómo señalar una ruta de instalación de herramientas de terceros, seleccionar el simulador de destino y compilar y mapear bibliotecas, puede consultar (UG900) Guía del usuario de Vivado Design Suite Simulación lógica
Ejecute la simulación a través de la GUI (haga clic en la pestaña Ejecutar simulación en el administrador de proyectos) y asegúrese de ver el mensaje "prueba aprobada" en la transcripción.
Modificaciones RTL de simulación de rendimiento
- Haga clic derecho en la pestaña de fuentes, seleccione "agregar o crear fuentes de simulación" y busque mig7_perfsim_traffic_generator.sv file y haga clic en finalizar para agregarlo.
- Haga clic derecho en la pestaña de fuentes, seleccione "agregar o crear fuentes de simulación", busque perfsim_stimulus.txt y haga clic en finalizar para agregarlo.
- Comenta al exampCreación de instancias de le_top en sim_tb_top.v file.
- Agregue las siguientes líneas RTL a sim_tb_top,v
- parámetro local APP_ADDR_WIDTH = 28;
- parámetro local APP_DATA_WIDTH = 64;
- parámetro local APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
- parámetro local MEM_ADDR_ORDER = “BANK_ROW_COLUMN”;
- parámetro local BANK_WIDTH = 3;
- parámetro local 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;
- cable app_sr_req = 0;
- cable app_ref_req = 0;
- cable app_zq_req =0;
- cable c0_app_wdf_mask =0;
Creación de instancias del controlador de memoria FPGA
mig_7series_0_mig u_mig_7series_0_mig (
// Puertos de interfaz 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),
// Puertos de interfaz de 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 (aplicación_sr_req),
- .app_ref_req (aplicación_ref_req),
- .app_zq_req (aplicación_zq_req),
- .app_sr_active (aplicación_sr_active),
- .app_ref_ack (aplicación_ref_ack),
- .app_zq_ack (aplicación_zq_ack),
- .ui_clk (ui_clk),
- .ui_clk_sync_rst (ui_clk_sync_rst),
- .app_wdf_mask (c0_ddr3_app_wdf_mask),
// Puertos del reloj del sistema
- .sys_clk_i (sys_clk_i),
// Puertos de reloj de referencia
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Creación de instancias del generador de tráfico de rendimiento
mig7_perfsim_traffic_generator#
(
.APP_DATA_WIDTH (APLICACIÓN_DATA_WIDTH),
.COL_WIDTH (COL_WIDTH),
.ROW_WIDTH (ROW_WIDTH),
.RANK_WIDTH (RANK_WIDTH),
.BANK_WIDTH (BANCO_WIDTH),
.MEM_ADDR_ORDER (MEM_ADDR_ORDER),
.tCK (tCK),
.ADDR_WIDTH (APP_ADDR_WIDTH)
)
u_traffic_gen
(
.clk (ui_clk),
.primero (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 y BANK_WIDTH según su selección de parte de memoria.
Los valores se pueden obtener de la _mig.v file. - El nombre de creación de instancias resaltado en amarillo mig_7series_0_mig puede variar según el nombre de su componente durante la creación de IP; verifique si ha elegido un nombre diferente y cámbielo en consecuencia.
- Una vez generada la IP, abra el _mig.v file y verifique cualquier variación en los nombres de las señales LHS y corríjalas.
- app_sr_req, app_ref_req y app_zq_req deben inicializarse en 0.
- como example_top.v está comentado y es nuevo files, probablemente verá "?" al lado de
mig_7series_0_mig.v file bajo fuentes de simulación.
Para mapear el correcto file, haga clic derecho en mig_7series_0_mig.v, seleccione "Agregar fuentes", busque
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
y agregue el mig_7series_0_mig_sim.v file. - Si tú ves "?" para el subyacente files, agregue todos los RTL files en las carpetas de sincronización, controlador, ip_top, phy y UI.
- Una vez realizados los cambios RTL y todos los requisitos fileCuando se agregan archivos a sus fuentes de simulación, la jerarquía debe ser similar a la Figura 5.
El fileLos mensajes resaltados en rojo se agregaron recientemente y "?" Esto se espera en los módulos relacionados con ECC ya que la configuración de memoria seleccionada tiene la opción ECC deshabilitada.
Estímulo File Descripción
Cada patrón de estímulo tiene 48 bits y el formato se describe en las Figuras 6-1 a 6-4.
Codificación de dirección (Dirección [35:0])
La dirección está codificada en el estímulo según la Figura 7-1 a la Figura 7-6. Todos los campos de dirección deben ingresarse en formato hexadecimal. Todos los campos de dirección tienen un ancho divisible por cuatro para ingresar en formato hexadecimal. El banco de pruebas sólo envía los bits necesarios de un campo de dirección al controlador de memoria.
Por ejemploampPor ejemplo, en una configuración de ocho bancos, sólo los bits del banco [2:0] se envían al controlador de memoria y los bits restantes se ignoran. Los bits adicionales para un campo de dirección se proporcionan para que pueda ingresar la dirección en formato hexadecimal.
Debe confirmar que el valor ingresado corresponde al ancho de una configuración determinada.
- Dirección de columna (columna [11:0]) – La dirección de columna en el estímulo se proporciona en un máximo de 12 bits, pero debe abordar esto según el parámetro de ancho de columna establecido en su diseño.
- Dirección de fila (Fila[15:0]) – La dirección de fila en el estímulo se proporciona con un máximo de 16 bits, pero debe abordar esto según el parámetro de ancho de fila establecido en su diseño.
- Dirección del banco (Banco[3:0]) – La dirección del banco en el estímulo se proporciona en un máximo de cuatro bits, pero debe abordarla según el parámetro de ancho del banco establecido en su diseño.
- Dirección de rango (Rango [3:0]) – La dirección de clasificación en el estímulo se proporciona en un máximo de cuatro bits, pero debe abordar esto según el parámetro de ancho de clasificación establecido en su diseño.
La dirección se ensambla según el parámetro MEM_ADDR_ORDER de nivel superior y se envía a la interfaz de usuario.
Repetición de comando (Repetición de comando [7:0])
El recuento de repeticiones de comandos es el número de veces que se repite el comando respectivo en la interfaz de usuario. La dirección para cada repetición se incrementa en 8. El recuento máximo de repeticiones es 128.
El banco de pruebas no comprueba el límite de la columna y se ajusta si se alcanza el límite máximo de la columna durante los incrementos.
Los 128 comandos llenan la página. Para cualquier dirección de columna distinta de 0, el recuento de repeticiones de 128 termina cruzando el límite de la columna y llegando al inicio de la dirección de la columna.
Utilización del autobús
La utilización del bus se calcula en la interfaz de usuario teniendo en cuenta el número total de lecturas y escrituras y se utiliza la siguiente ecuación:
- BL8 toma cuatro ciclos de reloj de memoria
- end_of_stimulus es el momento en que se realizan todos los comandos.
- calib_done es el momento en que finaliza la calibración.
Examplos patrones
Estos exampLos archivos se basan en MEM_ADDR_ORDER establecido en BANK_ROW_COLUMN.
Patrón de lectura única
00_0_2_000F_00A_1: este patrón es una lectura única de la décima columna, la decimoquinta fila y el segundo banco.Patrón de escritura único
00_0_1_0040_010_0: este patrón es una escritura única en la columna 32, la fila 128 y el primer banco.Escritura única y lectura en la misma dirección
00_0_2_000F_00A_0 – Este patrón es una escritura única en la décima columna, la decimoquinta fila y el segundo banco.
00_0_2_000F_00A_1 – Este patrón es una lectura única de la décima columna, la decimoquinta fila y el segundo banco.
Múltiples escrituras y lecturas con la misma dirección
0A_0_0_0010_000_0 – Esto corresponde a 10 escrituras con direcciones que van del 0 al 80 que se pueden ver en la columna.
0A_0_0_0010_000_1 – Esto corresponde a 10 lecturas con direcciones que van de 0 a 80, que se pueden ver en la columna.
Ajuste de página durante las escrituras
0A_0_2_000F_3F8_0 – Esto corresponde a 10 escrituras con la dirección de la columna ajustada al inicio de la página después de una escritura.
Simulación del generador de tráfico de rendimiento
En este punto ya ha terminado con MIG ex.ampsimulación del diseño. Esto implica que su configuración de simulación está lista, ha realizado modificaciones RTL de simulación de rendimiento, la nueva jerarquía de simulación es correcta y ha comprendido los patrones de estímulo. Ejecute la simulación una vez más con 16 escrituras y lecturas en perfsim_stimulus.txt.
Ejecute todo, espere hasta que se confirme la señal init_calib_complete y podrá ver el número propuesto de escrituras y lecturas. Entonces la simulación se detendrá.
Cuando se le solicite salir de la simulación, seleccione No y vaya a la ventana de transcripción donde podrá ver las estadísticas de rendimiento.
Si seleccionas “dejar la simulación” Las estadísticas de rendimiento se escribirán en un file nombrado mig_band_width_output.txt ubicado en sim_1/behave carpeta.
Exampruta del directorio del archivo: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Quizás te preguntes por qué el porcentajetagLa utilización del bus es solo 29. Vuelva a ejecutar la simulación con la misma configuración de IP pero solo cambiando el estímulo. file a 256 escrituras y 256 lecturas
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Ahora verás el porcentaje.tage como 85, lo que implica que DDR3 ofrece una mejor utilización del bus para secuencias largas de escrituras y ráfagas de lectura.
Formas generales de mejorar el rendimiento
Los factores que influyen en la eficiencia se pueden dividir en dos apartados:
- Memoria específica
- Controlador específico
La figura 9 te da una vista másview de los términos que son específicos de la memoria.
A diferencia de las SRAM y las memorias en bloque, el rendimiento DDR2 o DDR3 no es solo la velocidad de datos máxima.
Depende de muchos factores de tiempo, que incluyen:
- TRCD: Retraso del comando de fila (o retraso de ras a cas).
- tCAS(CL): Latencia estroboscópica de dirección de columna.
- PRDT: Retraso en la precarga de fila.
- tRAS: Tiempo activo de fila (activar para precambiar).
- TRC: Tiempo del ciclo de hilera. tRC = tRAS + tRP
- TRÁC: Retraso en el acceso Radom. tRAC = tRCD + tCAS
- tCWL: Latencia de escritura Cas.
- tZQ: Tiempo de calibración ZQ.
- TRFC: Tiempo del ciclo de actualización de fila
- tWTR: Retraso de escritura a lectura. Última transacción de escritura en el momento del comando de lectura.
- tWR: Escribe el tiempo de recuperación. Última transacción de escritura en el momento de la precarga
La sincronización de todos los parámetros enumerados depende del tipo de memoria utilizada y del grado de velocidad de la parte de la memoria.
Se pueden encontrar más detalles sobre las definiciones y especificaciones de sincronización en DDR2 DDR3 JEDEC o en la hoja de datos de cualquier dispositivo de memoria.
La eficiencia depende principalmente de cómo se accede a la memoria. Diferentes patrones de direcciones dan diferentes resultados de eficiencia.
Gastos generales de sincronización de memoria
- Tiempo de activación y tiempo de precarga al cambiar a nuevos bancos/filas o cambiar filas en el mismo banco. Entonces, si reduce el cambio de filas, esto puede eliminar tRCD y tRP.
- Enviar comandos continuos de escritura o lectura. -Mantener la sincronización tCCD.
- Minimice el cambio de comandos de escritura a lectura y lectura a escritura: tiempo de recuperación de escritura para cambiar a accesos de lectura, tiempo de respuesta del bus para cambiar de lectura a escritura
- Establezca un intervalo de actualización adecuado.
- La SDRAM DDR3 requiere ciclos de actualización en un intervalo periódico promedio de tREFI.
- Se pueden emitir por adelantado un máximo de 8 comandos de actualización adicionales (“incorporados”). Esto no reduce la cantidad de actualizaciones, pero el intervalo máximo entre dos comandos de actualización circundantes está limitado a 9 × tREFI
- Utilice todos los bancos – Es preferible un mecanismo de direccionamiento adecuado.
- Fila-Banco-Columna: Para una transacción que ocurre en un espacio de direcciones secuencial, el núcleo abre automáticamente la misma fila en el siguiente banco del dispositivo DRAM para continuar la transacción cuando se llega al final de una fila existente. Es muy adecuado para aplicaciones que requieren la distribución de grandes paquetes de datos en ubicaciones de direcciones secuenciales.
- Columna-fila-banca: Al cruzar el límite de una fila, la fila actual se cerrará y se abrirá otra fila dentro del mismo banco. MSB es una dirección bancaria que se puede utilizar para cambiar entre diferentes bancos. Es adecuado para transacciones más cortas y aleatorias a un bloque de memoria durante un período de tiempo y luego un salto a otro bloque (banco).
- Duración de la ráfaga
- BL 8 es compatible con DDR3 en la serie 7. BC4 tiene una eficiencia muy baja, inferior al 50%. Esto se debe a que el tiempo de ejecución de BC4 es el mismo que el de BL8. Los datos simplemente están enmascarados dentro del componente.
- En los casos en los que no desee escribir en ráfaga completa, se puede considerar la máscara de datos o la escritura después de la lectura.
- Establezca un intervalo ZQ adecuado (solo DDR3)
El controlador envía comandos de calibración ZQ corto (ZQCS) y ZQ largo (ZQCL).- Adherirse al estándar DDR3 Jedec
- La calibración ZQ se analiza en la sección 5.5 del estándar JEDEC Spec JESD79-3 DDR3 SDRAM.
- La calibración ZQ calibra la terminación en matriz (ODT) a intervalos regulares para tener en cuenta las variaciones en VT
- La lógica está contenida en bank_common.v/vhd
- El parámetro Tzqcs determina la velocidad a la que se envía un comando de calibración ZQ a la memoria.
- Es posible desactivar el contador y enviarlo manualmente usando app_zq_req, es similar a enviar manualmente una actualización.
Consulte (Respuesta Xilinx 47924) para obtener más detalles.
Gastos generales del controlador
- Lecturas periódicas: consulte (Respuesta de Xilinx 43344) Para más detalles.
- No cambiar el período de la lectura.
- Omita lecturas periódicas durante las escrituras y emita el número de lecturas perdidas antes de una lectura verdadera
- Reordenar – Consultar (Respuesta de Xilinx 34392) Para más detalles.
Para diseños de interfaz de usuario y AXI, es preferible tener esto habilitado.- Reordenar es la lógica que anticipa varios comandos y cambia el orden de los comandos del usuario para que los comandos que no son de memoria no ocupen un ancho de banda válido. El desempeño también se relacionó con el patrón de tráfico real.
- Según el patrón de dirección, el reordenamiento ayuda a omitir los comandos de precarga y activación y hace que tRCD y tRP no ocupen el ancho de banda de datos.
- Intente aumentar el número de cajeros automáticos.
- La mayor parte de la lógica del controlador reside en los cajeros automáticos y corresponden a bancos DRAM.
- Un cajero automático determinado gestiona un único banco de DRAM en un momento dado.
- La asignación de cajeros automáticos es dinámica por lo que no es necesario tener un cajero automático por cada banco físico.
- Los cajeros automáticos se pueden configurar, pero es un equilibrio entre área y rendimiento.
- El número permitido de cajeros automáticos oscila entre 2 y 8.
- De forma predeterminada, se configuran 4 máquinas bancarias mediante parámetros RTL.
- Para cambiar de Máquina Bancaria, considere el parámetro nBANK_MACHS = 8 contenido en memc_ui_top Examparchivo para 8 cajeros automáticos – nBANK_MACHS = 8
Ahora conoce los factores que influyen en el rendimiento.
Considere una aplicación ascendente que le proporciona 512 bytes de datos por paquete y necesita guardarlos en diferentes ubicaciones de memoria. Como 512 bytes de datos equivalen a 64 ráfagas de datos DDR3, vuelva a ejecutar el example diseño con un estímulo file que contiene 512 escrituras, 512 lecturas y cambio de fila por cada 64 escrituras o 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
Al final de la simulación verá que la utilización del autobús es del 77 por ciento.
Figura 11: Estadísticas de rendimiento para 512 escrituras y 512 lecturas: cambio de fila para 64 escrituras o lecturas.
Ahora puede aplicar los conocimientos aprendidos en la sección anterior para mejorar la eficiencia. Con un view Para utilizar todos los bancos en lugar de cambiar la fila, modifique el patrón de dirección para cambiar el banco como se muestra a continuación.
Esto equivale a configurar ROW_BANK_Column en la configuración de asignación de direcciones de memoria en la 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
Al final de la simulación, verá que el 77 por ciento de utilización del autobús anterior ahora es 87.
Si aún necesita una mayor eficiencia, puede optar por paquetes de gran tamaño, de 1024 o 2048 bytes, o considerar una actualización manual.
Nota: Xilinx no recomienda omitir la actualización del controlador, ya que no estamos seguros de si podrá cumplir con el tiempo de actualización automática de Jedec, lo que afecta la confiabilidad de los datos.
Desde el lado del controlador puedes cambiar nBANk_MACH y ver la mejora en el rendimiento.
Sin embargo, esto puede afectar el tiempo de diseño; consulte (Respuesta de Xilinx 36505) para más detalles sobre nBANk_MACH
Abra core_name_mig_sim.v file y cambie los parámetros nBANK_MACHS de 4 a 8 y vuelva a ejecutar la simulación. Para que el valor del parámetro surta efecto en el hardware, debe actualizar core_name_mig.v file.
Utilicé el mismo patrón donde obtuvimos una utilización del autobús del 87% (figura -12).
Con nBANK_MACHS configurado en 8, la eficiencia ahora es del 90%.
También tenga en cuenta que los controladores ½ y ¼ afectan negativamente la eficiencia debido a sus latencias.
Por ejemploampSin embargo, dado que solo podemos enviar comandos cada 4 ciclos de CK, a veces hay un relleno adicional cuando se cumplen las especificaciones mínimas de sincronización de DRAM, lo que puede disminuir la eficiencia desde el punto de vista teórico.
Pruebe diferentes controladores para encontrar el que se adapte a sus requisitos de eficiencia.
Referencias
- SoC AP Zynq-7000 y FPGA serie 7 MIS v2.3 [UG586]
- Centro de soluciones Xilinx MIG http://www.xilinx.com/support/answers/34243.html
Historial de revisiones
13/03/2015 – Lanzamiento inicial
Descargar PDF: Guía de estimación del rendimiento de Xilinx DDR2 MIG 7