23 votos

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

Este muestra que la SDRAM DDR4 tiene aproximadamente 8 veces más ancho de banda que la SDRAM DDR1. Pero el tiempo que transcurre desde que se establece la dirección de la columna hasta que los datos están disponibles sólo ha disminuido en un 10% (13,5ns). Una búsqueda rápida muestra que el tiempo de acceso de la asíncrona más rápida SRAM (18 años) es de 7ns. ¿Por qué ha disminuido tan lentamente el tiempo de acceso de la SDRAM? ¿La razón es económica, tecnológica o fundamental?

1 votos

¿Podría ser otra posible razón que simplemente no es tan necesario?

0 votos

Por ejemplo, es necesario un tiempo de acceso bajo para que la búsqueda de datos en la memoria sea más rápida.

0 votos

Me doy cuenta de eso, la velocidad extra siempre es agradable, pero viniendo desde la perspectiva de un desarrollador de software, tal vez en comparación con todo el resto de IO y la arquitectura (incluyendo microservicios que literalmente pueden ejecutarse en diferentes centros de datos), la velocidad de la RAM simplemente no es tanto un cuello de botella más. A veces "lo suficientemente bueno" es bueno, o al menos no justifica el I+D adicional para acelerarlo. Yo también consideraría la posibilidad de añadir esta razón a tu pregunta.

34voto

noti Puntos 8

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

Hay que decodificar la dirección de la columna, accionar los muxes que seleccionan las líneas a las que hay que acceder y hacer que los datos se desplacen por el chip hasta los búferes de salida. Esto lleva un poco de tiempo, sobre todo teniendo en cuenta 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, utilizando DDR(1,2,3 o 4), la mayor parte de la lógica puede ampliarse o canalizarse, y puede funcionar a la misma velocidad que en la generación anterior. Lo único que tiene que ser más rápido es el controlador de E/S para los pines DDR.

En cambio, para disminuir la latencia hay que acelerar toda la operación, lo que es mucho más difícil. Lo más probable es que haya que fabricar partes de la ram en un proceso similar al de las CPU de alta velocidad, lo que aumentaría el coste de forma sustancial (el proceso de alta velocidad es más caro, además de que cada chip tiene que pasar por 2 procesos diferentes).

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

  • Puede colocarse muy cerca de la CPU que lo utiliza, lo que significa que los datos tienen que recorrer una distancia más corta para llegar a él
  • Los cables se pueden acortar, lo que significa que los datos tardan menos en viajar a través de ellos.
  • No ocupa mucha superficie ni muchos transistores, por lo que hacerlo en un proceso de velocidad optimizada y utilizando mucha energía por bit almacenado no es tan caro

A medida que se asciende en la jerarquía, cada opción de almacenamiento aumenta su capacidad, pero también su superficie y se aleja del dispositivo que lo utiliza, lo que significa que éste debe ser más lento.

21 votos

Gran respuesta. Sólo quiero hacer hincapié en el factor de la distancia física: a unos 10 cm para la memoria RAM más lejana, de 1/3 a 1/2 de la velocidad de la luz como velocidad de la señal, más alguna longitud extra para encaminar y hacer coincidir las pistas de la PCB, podrías estar fácilmente en un tiempo de ida y vuelta de 2ns. Si el ~15% de tu retardo es causado por el límite de velocidad universal irrompible... lo estás haciendo realmente bien en mi opinión.

1 votos

L1 también está organizado de forma única, está directamente en el núcleo que lo utiliza, y utiliza SRAM.

0 votos

@forest Y también tiene un límite de tamaño bastante estricto - hazlo demasiado grande, y no hay manera de mantenerlo tan rápido.

6voto

GSerg Puntos 33571

C_Elegans proporciona una parte de la respuesta: es duro para disminuir la latencia global de un ciclo de memoria.

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

Esto es cierto tanto en la informática general, donde muchos procesos/hilos se ejecutan en paralelo, como en los sistemas integrados. Por ejemplo, en el trabajo de vídeo de alta definición que hago, no me importan las latencias del orden de los milisegundos, pero sí necesito varios gigabytes/segundo de ancho de banda.

0 votos

Y sin duda hay que mencionar 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 coste 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 se llega al límite de latencia tan a menudo como se cree, a menos que no se tenga ni idea de cómo funciona la arquitectura de la memoria y la caché/precarga de la CPU, etc. El enfoque simple suele funcionar lo suficientemente bien para la mayoría del software, especialmente el de un solo hilo.

0 votos

En las CPUs Intel modernas, la latencia de la memoria es el factor limitante para mononúcleo ancho de banda: el ancho de banda no puede exceder max_concurrency / latencia, y un solo núcleo tiene una capacidad limitada para las peticiones off-core en vuelo a la vez. Un Xeon de muchos núcleos (con mayor latencia uncore por más saltos en el bus de anillo) tiene peor ancho de banda de un solo núcleo que un chip de escritorio de cuatro núcleos, a pesar de tener más controladores de DRAM. ¿Por qué Skylake es mucho mejor que Broadwell-E en cuanto al rendimiento de la memoria en un solo hilo? . Se necesitan muchos más hilos para saturar la memoria B/N en un Xeon de muchos núcleos.

0 votos

En general, tu punto principal es correcto: la mayoría de los accesos golpean en la caché para una baja latencia para evitar el estancamiento del back-end fuera de orden. El prefetch de HW necesita sobre todo ancho de banda para mantener el ritmo de los accesos secuenciales y tener los datos listos en la caché antes de que el núcleo los necesite. La latencia de la DRAM es de cientos de ciclos de reloj del núcleo, por lo que el software eficiente tiene que ser ajustado para utilizar patrones de acceso que no de la memoria caché, ya que se evita la localización espacial/temporal y la precarga de HW. Especialmente en el caso de las cargas, porque los búferes de almacenamiento pueden desacoplar la latencia de la tienda del resto del backend fuera de orden.

2voto

Spike Puntos 304

No tengo tanta idea, pero supongo que es un poco de todo.

Economía

Para la mayoría de los ordenadores/teléfonos, la velocidad es más que suficiente. Para el almacenamiento de datos más rápido, se han desarrollado las SSD. La gente puede utilizar vídeo/música y otras tareas que requieren mucha velocidad en tiempo (casi) real. Así que no hay tanta necesidad de más velocidad (excepto para aplicaciones específicas como la predicción del tiempo, etc.).

Otra razón es que para procesar una velocidad de RAM muy alta, se necesitan CPUs que sean rápidas. Y esto conlleva un gran consumo de energía. La tendencia a utilizarlos en dispositivos con batería (como los teléfonos móviles), impide el uso de RAM (y CPU) muy rápidas, por lo que tampoco es económicamente útil fabricarlas.

Técnica

Al disminuir el tamaño de los chips/ICs (nivel de nm ahora), la velocidad sube, pero no significativamente. Se utiliza más a menudo para aumentar la cantidad de RAM, que se necesita más (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 los SSD), es simplemente repartir la carga entre varios componentes, de esta forma la velocidad de "procesamiento" también se suma. Compara el uso de 8 memorias USB leyendo al mismo tiempo y combinando los resultados, en lugar de leer los datos de una memoria USB tras otra (tarda 8 veces más).

1 votos

¿Qué tienen que ver exactamente las SSD con la latencia de la SDRAM?

0 votos

@C_Elegans ambos son circuitos, para esta pregunta "genérica" no creo que haya tanta diferencia.

2 votos

La cantidad de tiempo para abrir una página 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. En mi experiencia, eso domina el tiempo de acceso.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X