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é: