Cálculo teórico de la velocidad de transferencia DDR3L

1

No estoy seguro de si estas preguntas pertenecen a este sitio de intercambio de pila pero no encontré otra mejor. En caso de que no sea así, avíseme y lo trasladaré a otro lugar.

Estoy trabajando con una QorIQ T2080 Soc y DDR3L (modo DDR3-1866, tiempo de ciclo: 1.071ns @ CL = 13) memoria (modelo MT41K256M16). La configuración del DDR3L me permite una velocidad de datos de 1866M / T con un ancho de bus de 64 bits, por lo que la tasa de datos alcanzable pico teórica sería de 14,9 GB / s (1866 MHz * 64 bits / 8). Sin embargo, al realizar una prueba de copia de memoria DMA, la tasa de transferencia de datos que obtengo es de aproximadamente 4GB / s (2GB / s x 2 porque estoy copiando memoria).

Me gustaría entender de dónde proviene este valor.

Por lo que sé, corríjame si me equivoco, los DMA normalmente crean la ruta de datos cuando mueven la memoria y, por lo tanto, los datos no pasan por ellos. Por lo tanto, no lo consideré como un factor limitante de la tasa de datos.

Llegué a la conclusión de que la memoria podría ser el factor limitante e hice la siguiente suposición:

La hoja de datos especifica una longitud de ráfaga de 8 transacciones del tamaño del bus (64b). También se especifica una latencia CAS de 13 para cada acceso de columna a la memoria (tiempo de ciclo de 1.07ns). Como dije antes, la velocidad máxima de datos alcanzable máxima debería ser de 14.9GB / s. Sin embargo, cada vez que accedemos a una nueva columna desde el ram, los datos solo se recibirán durante 8 ciclos a una frecuencia de 1866 MHz y luego tendremos que esperar la verdadera latencia [ 3 ]: CL * 1.07 = 13.9 ns. Por lo tanto, obtengo un peor caso teórico:

$$ \ frac {64B \: transferido \; en \; una \; ráfaga} {\ frac {8 \: ráfaga \; longitud} {1.866 \: Ghz} + 14ns} = 3.4 \; GB / s $$

En [ 1 ] mencionan que comúnmente El controlador DDR puede obtener un rendimiento más alto, llegando incluso a acercarse a la tasa de datos máxima.

Mi pregunta es: ¿es correcta esta suposición?

Otras fuentes donde miré:

pregunta JoseleMG

1 respuesta

0

Su cálculo del rendimiento máximo es correcto, dada la entrada.

El rendimiento real depende en gran medida del diseño de los controladores DMA y DRAM. Los 3.4 GB / s son una buena aproximación, pero se basan en el supuesto de que el controlador DMA realiza una transferencia de 64 bytes a la vez y cada transferencia llega a un banco DRAM ya abierto (activo).

En la DRAM, las lecturas y las escrituras pueden superponerse parcialmente, por lo que la dirección de la columna de la siguiente operación se envía al chip de la DRAM mientras aún se transfieren datos para el acceso anterior. Así es como el rendimiento real puede acercarse al pico teórico. Para que esto suceda, debería haber suficiente espacio de almacenamiento para almacenar los datos de ráfaga, obviamente. En las transferencias de memoria a CPU, por lo general, la memoria caché de la CPU puede consumir rápidamente o producir una porción de bytes relativamente grande, cuando se extrae de memoria. Sin embargo, no estoy seguro de los controladores DMA. Su controlador DMA puede tener búferes FIFO, pero no sé si son lo suficientemente grandes como para mantener una transferencia más larga que una sola ráfaga. La falta de suficientes buffers puede ser la razón por la que no te estás acercando al rendimiento teórico.

Otro aspecto está relacionado con las páginas DRAM. Para emitir lecturas y escrituras, la página correspondiente debe estar abierta ("activada"). Normalmente, los chips DRAM consisten en varios bancos, cada uno con su propio búfer de página. Si el origen y el destino de sus transferencias residen en bancos diferentes, es posible que no haya un costo adicional por abrir una página. De lo contrario, es posible que el controlador tenga que cerrar y abrir páginas en cada acceso, lo que ralentizaría significativamente las transferencias (~ 30-50 ns cada vez). El controlador también puede optar por cerrar la página DRAM después de cada acceso, implementando la llamada política de "página cerrada", si está configurado para hacerlo.

Siempre habrá sobrecarga de apertura / cierre de página al cruzar páginas, pero se debe amortizar en grandes lecturas y escrituras secuenciales.

Desafortunadamente, para obtener una respuesta más definitiva, debe revisar las hojas de datos de los controladores DRAM y SoC / DMA, si están disponibles.

AGREGADO: olvidé preguntar: ¿por qué le preocupa la memoria DMA al rendimiento de la memoria? Dado que DMA está destinado principalmente para el acceso a dispositivos, es posible que no esté diseñado para alta velocidad y que tenga más suerte copiando memoria desde la CPU.

    
respondido por el A.K.

Lea otras preguntas en las etiquetas