¿Por qué el tiempo de acceso RAM (cualquier tipo) disminuye tan lentamente?

22

Este artículo muestra que DDR4 SDRAM tiene aproximadamente 8 veces más ancho de banda DDR1 SDRAM. Pero el tiempo transcurrido desde la configuración de la dirección de la columna hasta que los datos están disponibles solo ha disminuido en un 10% (13.5ns). Una búsqueda rápida muestra que el tiempo de acceso del asíncrono más rápido. SRAM (18 años) es 7ns. ¿Por qué el tiempo de acceso a SDRAM ha disminuido tan lentamente? ¿Es la razón económica, tecnológica o fundamental?

Arseniy
fuente
1
¿Podría otra posible razón ser que simplemente no es tan necesario?
Sebastiaan van den Broek
Por ejemplo, es necesario un tiempo de acceso bajo para que la búsqueda de datos en la memoria sea más rápida.
Arseniy
Me doy cuenta de que la velocidad adicional siempre es agradable, pero desde una perspectiva de desarrollador de software, tal vez en comparación con todos los demás IO y arquitectura (incluidos los microservicios que pueden ejecutarse literalmente en diferentes centros de datos), la velocidad de RAM no es un gran cuello de botella nunca más. A veces, "lo suficientemente bueno" es bueno, o al menos no garantiza la I + D adicional para acelerarlo. Consideraría agregar eso como una razón potencial en su pregunta también.
Sebastiaan van den Broek
1
De acuerdo con Wikipedia, DDR3-2200 tiene una latencia de primera palabra de 6.36 ns, es decir, cuánto tiempo tarda una señal en propagarse alrededor de 3 pies en FR4, diría que estamos bastante cerca de los límites físicos
Mark Omo

Respuestas:

33

Es porque es más fácil y más barato aumentar el ancho de banda de la DRAM que disminuir la latencia. Para obtener los datos de una fila abierta de ram, es necesaria una cantidad de trabajo no trivial.

La dirección de la columna debe decodificarse, los muxes que seleccionan a qué líneas acceder deben controlarse, y los datos deben moverse a través del chip hacia las memorias intermedias de salida. Esto lleva un poco de tiempo, especialmente dado que los chips SDRAM se fabrican en un proceso adaptado a altas densidades de ram y no a altas velocidades lógicas. Para aumentar el ancho de banda, por ejemplo, mediante el uso de DDR (1,2,3 o 4), la mayor parte de la lógica puede ampliarse o canalizarse, y puede operar a la misma velocidad que en la generación anterior. Lo único que debe ser más rápido es el controlador de E / S para los pines DDR.

Por el contrario, para disminuir la latencia, se debe acelerar toda la operación, lo cual es mucho más difícil. Lo más probable es que las partes del ram deberían hacerse en un proceso similar al de las CPU de alta velocidad, lo que aumenta el costo sustancialmente (el proceso de alta velocidad es más costoso, además cada chip debe pasar por 2 procesos diferentes).

Si compara las memorias caché de la CPU con la RAM y el disco duro / SSD, existe una relación inversa entre el almacenamiento es grande y el almacenamiento es rápido. Un L1 $ es muy rápido, pero solo puede contener entre 32 y 256kB de datos. La razón por la que es tan rápido es porque es pequeño:

  • Se puede colocar muy cerca de la CPU usándola, lo que significa que los datos tienen que viajar una distancia más corta para llegar a ella.
  • Los cables en él se pueden acortar, lo que significa que los datos tardan menos tiempo en atravesarlo.
  • No ocupa mucho área o muchos transistores, por lo que no es tan costoso hacerlo en un proceso de velocidad optimizada y usar mucha potencia por bit almacenado

A medida que avanza en la jerarquía, cada opción de almacenamiento aumenta en capacidad, pero también en área y más lejos del dispositivo que lo usa, lo que significa que el dispositivo debe ser más lento.

C_Elegans
fuente
21
Gran respuesta. Solo quiero enfatizar el factor de distancia física: tal vez a 10 cm para la memoria RAM más lejana, 1/3 a 1/2 de la velocidad de la luz como la velocidad de la señal, más algo de longitud adicional para enrutar y combinar las pistas de PCB, podría estar fácilmente en el tiempo de ida y vuelta 2ns. Si ~ 15% de su retraso es causado por el límite de velocidad universal irrompible ... en mi opinión, está haciendo muy bien.
mbrig
1
L1 también está organizado de forma única, está directamente en el núcleo que lo usa y usa SRAM.
bosque
@forest Y también tiene un límite de tamaño bastante estricto: hazlo demasiado grande y no hay forma de mantenerlo tan rápido.
Luaan
La memoria caché L1d también puede optimizarse mucho para la latencia, por ejemplo, obtener etiquetas y datos en paralelo para todas las formas del conjunto. Entonces, cuando una coincidencia de etiqueta simplemente envía los datos a la salida, en lugar de tener que obtenerlos de SRAM. Esto también puede suceder en paralelo con la búsqueda de TLB en los bits altos de la dirección, si todos los bits de índice provienen de la parte de desplazamiento dentro de la página de una dirección. (Entonces, ese es un límite difícil de tamaño, como mencionó @Luaan: tamaño / asociatividad <= tamaño de página para que funcione este truco de velocidad VIPT = PIPT. Ver VIPT Cache: ¿Conexión entre TLB y Cache? )
Peter Cordes
6

C_Elegans proporciona una parte de la respuesta: es difícil disminuir la latencia general de un ciclo de memoria.

La otra parte de la respuesta es que en los sistemas de memoria jerárquicos modernos (múltiples niveles de almacenamiento en caché), el ancho de banda de la memoria tiene una influencia mucho más fuerte en el rendimiento general del sistema que la latencia de la memoria , y ahí es donde se han centrado todos los últimos esfuerzos de desarrollo.

Esto es cierto tanto en la informática general, donde muchos procesos / subprocesos se ejecutan en paralelo, como en sistemas integrados. Por ejemplo, en el trabajo de video HD que hago, no me importan las latencias del orden de milisegundos, pero necesito varios gigabytes / segundo de ancho de banda.

Dave Tweed
fuente
Y definitivamente debe mencionarse que el software puede diseñarse para la latencia "alta" con bastante facilidad en la mayoría de los casos, en comparación con la dificultad y el costo de disminuir la latencia. Tanto las CPU como su software son muy buenos para eliminar la latencia efectiva en la mayoría de los casos. Al final, no alcanza el límite de latencia tan a menudo como podría pensar, a menos que no tenga idea de cómo funciona la arquitectura de memoria y el almacenamiento en caché / precarga de CPU, etc. El enfoque simple generalmente funciona lo suficientemente bien para la mayoría del software, especialmente de un solo subproceso.
Luaan
En las CPUs Intel moderna, latencia de la memoria es el factor limitante para un solo núcleo de ancho de banda: ancho de banda no puede exceder max_concurrency / latencia y un solo núcleo tiene una capacidad limitada para off-core solicitudes en vuelo a la vez. Un Xeon de muchos núcleos (con una latencia uncore más alta debido a más saltos en el bus de anillo) tiene un ancho de banda de un solo núcleo peor que un chip de escritorio de cuatro núcleos, a pesar de tener más controladores DRAM. ¿Por qué Skylake es mucho mejor que Broadwell-E para el rendimiento de memoria de un solo subproceso? . Se necesitan muchos más hilos para saturar la memoria B / W en un Xeon de muchos núcleos.
Peter Cordes
En general, su punto principal es correcto: la mayoría de los accesos se encuentran en la memoria caché por baja latencia para evitar detener el back-end fuera de servicio. La captación previa de HW solo necesita ancho de banda para mantenerse al día con los accesos secuenciales y tener los datos listos en caché antes de que el núcleo lo necesite. La latencia de DRAM es de cientos de ciclos de reloj de núcleo, por lo que debe ajustarse un software eficiente para usar patrones de acceso que no pierdan en caché al derrotar tanto la localidad espacial / temporal como la captación previa de HW. Especialmente para cargas, porque los almacenamientos intermedios de la tienda pueden desacoplar la latencia de la tienda del resto del back-end fuera de servicio.
Peter Cordes
Para las E / S de disco, las latencias de milisegundos serían importantes si no tuviéramos una captación previa de lectura previa para ocultarla para accesos secuenciales. Pero cuanto mayor es la latencia, más difícil es esconderse. (Cuanto mejores sean sus algoritmos de captación previa, y más predecibles deberán ser sus patrones de acceso). Y mientras más solicitudes / bytes de datos necesite mantener en vuelo para obtener el ancho de banda que desea.
Peter Cordes
2

No tengo muchas ideas, pero espero que sea un poco más.

Económico

Para la mayoría de las computadoras / teléfonos, la velocidad es más que suficiente. Para almacenamientos de datos más rápidos, se ha desarrollado SSD. Las personas pueden usar video / música y otras tareas intensivas en velocidad (casi) en tiempo real. Por lo tanto, no hay tanta necesidad de más velocidad (excepto para aplicaciones específicas como la predicción del clima, etc.).

Otra razón es procesar una velocidad de RAM muy alta, se necesitan CPU que sean rápidas. Y esto viene con mucho uso de energía. Dado que la tendencia de usarlos en dispositivos de batería (como teléfonos móviles), impide el uso de RAM (y CPU) muy rápidas, hace que no sea económicamente útil hacerlos.

Técnico

Por el tamaño decreciente de los chips / IC (nivel nm ahora), la velocidad aumenta, pero no significativamente. Se usa con mayor frecuencia para aumentar la cantidad de RAM, que se necesita con más fuerza (también una razón económica).

Fundamental

Como ejemplo (ambos son circuitos): la forma más fácil de obtener más velocidad (utilizada por SSD) es simplemente distribuir la carga en múltiples componentes, de esta manera las velocidades de 'procesamiento' también se suman. Compare usando 8 memorias USB que leen al mismo tiempo y combinando los resultados, en lugar de leer datos de una memoria USB una tras otra (toma 8 veces más tiempo).

Michel Keijzers
fuente
1
¿Qué tienen que ver exactamente los SSD con la latencia SDRAM?
C_Elegans
@C_Elegans ambos son circuitos, por esta pregunta 'genérica' no creo que haya tanta diferencia.
Michel Keijzers
2
La cantidad de tiempo para abrir una página realmente no ha disminuido tanto debido al ciclo de precarga; La cantidad de energía requerida no es significativamente diferente hoy que hace una década. Eso domina el tiempo de acceso en mi experiencia.
Peter Smith
55
@MichelKeijzers Si bien ambos son circuitos, las SSD y SDRAM sirven casos de uso muy diferentes y utilizan diferentes técnicas para almacenar datos. Además, decir que las CPU realmente no necesitan una RAM más rápida no tiene mucho sentido, la razón por la cual la mayoría de las CPU modernas tienen 3 niveles de cachés es porque su ram no se puede hacer lo suficientemente rápido como para servir a la CPU.
C_Elegans
1
Dijiste que para un almacenamiento más grande hay SSD. ¿Querías decir más rápido ? Es más costoso obtener la misma cantidad de almacenamiento en un SSD que en un HDD. El principal punto de venta de los SSD es la velocidad, y quizás el ruido y la fiabilidad. Para la capacidad, los discos duros son aún mejores
usuario198712