¿Por qué no se puede mantener la tasa de transferencia máxima de DRAM?

Muy simple:

1) el bus de datos es bidireccional. Para pasar de lectura a escritura o viceversa, el flujo de datos se interrumpe y aparecen ciclos muertos en el bus.

2) El dispositivo debe ser actualizado. Solo bajo patrones de acceso predecibles ideales se puede realizar la actualización sin interrumpir la transferencia de datos.


Más generalmente:

Depende de la aplicación y el hardware sobre / dentro del cual se utiliza la DRAM. Hace un tiempo, en un sistema informático de alto rendimiento, he visto un enfoque de rendimiento DRAM sostenido del 60% del pico en el uso real y un poco más alto que el diagnóstico del sistema en ejecución. La razón por la que no alcanza el pico es debido a la sobrecarga del sistema, como el cambio de bus, las interrupciones y la actualización.

Alrededor del mismo período de tiempo, una PC con un solo procesador / núcleo único podría obtener del 30% al 40% del pico, simplemente porque eso es todo lo que se necesitaba para admitir la CPU y el caché para esa aplicación.

La única aplicación donde se maximiza el ancho de banda de DRAM es en una aplicación de almacenamiento intermedio de datos donde el almacenamiento y la recuperación de las ubicaciones de la información es determinista. Por ejemplo, las memorias intermedias de paquetes de red para equipos de alta gama pueden superar el 90% para ráfagas largas / paquetes grandes, nuevamente limitados por el tiempo de respuesta. La memoria GDDR de gráficos puede ser la misma si la GPU es lo suficientemente eficiente.

El único lugar donde una DRAM alcanza el ancho de banda máximo es en el equipo de prueba de caracterización de los fabricantes. Una hoja de datos del dispositivo generalmente está vinculada a una orden de compra que tiene ciertas obligaciones contractuales. Para algunos clientes, el incumplimiento de la hoja de datos se considera un incumplimiento material del contrato con severas sanciones financieras. Es por eso que un dispositivo debe cumplir con su hoja de datos.

Razones para un rendimiento inferior al pico:

  • Cada sistema de memoria tiene una alineación ideal. El acceso no alineado es más lento.
  • Cada nivel de caché tiene una longitud de línea de caché. Si no usa toda la línea de caché, entonces parte del ancho de banda utilizado es inútil para usted.
  • Los sistemas de memoria tienen muchos canales (2 para más computadoras de escritorio / portátiles, 8 para la mayoría de los servidores de dos sockets y 16 para sockets cuádruples). Cada canal de memoria solo puede manejar una única solicitud pendiente. Entonces, si no equilibra perfectamente sus solicitudes en todos los canales, termina deteniéndose en el canal con más de una solicitud.
  • En un sistema de doble socket, la mitad del ram es más cercana / menor latencia y tiene un mayor ancho de banda. Por lo tanto, los accesos no locales son más lentos.
  • TLB asigna páginas de direcciones virtuales a direcciones físicas basadas en asignaciones de páginas. Solo se pueden abrir tantas páginas a la vez, cualquier acceso a una página no abierta provoca una penalización de latencia. Por lo general, más cercano a cero una vez amortizado para accesos secuenciales, pero puede ser un problema importante para accesos aleatorios.
  • La latencia en general es el enemigo, es más difícil utilizar un ancho de banda dado a medida que aumenta la latencia. Los cachés y la captación previa pueden ayudar, pero solo hasta cierto punto.
  • Escribir código y estructuras de datos para ayudar a los accesos secuenciales y cargar cosas desde la memoria mucho antes de que realmente las necesite. Esto implica muchas cosas como separar operaciones dependientes con otro trabajo útil. Incluso cosas como acceder a una matriz 2D por fila y columna pueden mostrar grandes diferencias de ancho de banda debido al patrón de acceso a la memoria.

Entonces, todos los factores anteriores combinan que es muy raro obtener el 100% del ancho de banda. Pero con un código cuidadoso, el compilador correcto, accesos secuenciales y un sistema de configuración bien, he visto más del 50% del pico.

La DRAM ordinaria es lenta por diseño y está optimizada para una mayor densidad. Además, la programación inteligente de DRAM es clave para obtener un alto rendimiento.

Le recomiendo que lea los documentos de Onur Mutlu, un experto en rendimiento DRAM. Sus video conferencias disponibles en línea también son buenas fuentes para comprender el rendimiento de DRAM.

El ancho de banda DRAM es como el rendimiento máximo de la CPU: solo se puede obtener si todos los bits están en el lugar correcto. Lo que no sucede a menudo. Por ejemplo, DRAM tiene una organización interna en los bancos. Siempre que salga de un banco, obtendrá un alto rendimiento. Pero si el procesador solicita datos colocados de manera irregular, provendrá de más de un banco, la DRAM necesita cambiar entre bancos, y eso toma un par de ciclos. Entonces su transferencia se interrumpe temporalmente.

A veces puede observar directamente este comportamiento: si tiene un bucle

para (i)
x [i] = x [i] + y [i] + z [i]

puede obtener un mayor rendimiento al dividir esto como

para (i)
x [i] = x [i] + y [i]
para (i)
x [i] = x [i] + z [i]

El primer bucle necesita múltiples flujos de datos, lo que hace que la DRAM cambie entre bancos; dividirlo en dos bucles hace que el acceso a los datos sea más regular, por lo que mejora las tasas de transferencia de DRAM.

More Interesting

¿Es más práctico actualizar la RAM al momento de la compra o varios años después?

¿Es el Core i3 6100U / 4GB mejor que el Core i3 6006U / 8GB?

¿Puede la RAM no volátil (MRAM, FRAM) hacer que Python sea más rápido?

¿Las aplicaciones de 32 bits están limitadas a 4 GB de VRAM?

¿Cómo puede una CPU de 32 bits manejar 4 gigabytes de RAM (en realidad no puedo entender el hecho de que la CPU se cuenta con 'bit', pero cómo el cálculo de RAM está en bytes)?

Estoy planeando comprar un Asus Zenfone 2 (2 GB de RAM, modelo FHD). ¿Es una buena elección?

Entre un procesador y RAM, ¿cuál es más compatible con el software basado en la web para que funcione sin problemas?

¿Puedo ejecutar juegos como Watch Dogs 2, Just Cause 3, etc., con 8 GB de RAM, i7-7200U (creo) y gráficos Intel HD 620?

¿El Dell 7560 con procesador i7 y SSD de 128 GB es bueno para la edición de fotos? ¿La pantalla tiene una buena representación de color y profundidad? ¿El stock de 8 GB de RAM es suficiente para el procesamiento pesado de fotos?

¿Qué factores debes considerar al comprar RAM?

¿Cómo será una computadora con 512 GB de RAM y 256 TB de almacenamiento?

¿Podría jugar WWE2K15 en mi PC que tiene 8GB de RAM y 512 mb de AMD Radeon 6330HD?

¿Por qué la RAM dentro de la CPU de un microprocesador es un RAM estático? ¿Por qué no dinámico?

¿Qué es mejor para navegar por Internet: 3 GB de RAM y un procesador de 2.5 núcleos o 2 GB de RAM y un procesador de 1.7 octa núcleos?

¿Cuál es más rápido: un núcleo de 1.7 octaios con una RAM de 2GB o un núcleo cuádruple de 1.2 con una RAM de 2GB?