¿Qué hace que la memoria caché de la CPU sea mucho más rápida que la memoria principal? Puedo ver algún beneficio en un sistema de caché escalonado. Tiene sentido que un caché más pequeño sea más rápido de buscar. Pero debe haber más.
58
Respuestas:
En el caso de un caché de CPU, es más rápido porque está en el mismo dado que el procesador. En otras palabras, los datos solicitados no tienen que ser transferidos al procesador; Ya está ahí.
En el caso de la memoria caché en un disco duro, es más rápido porque está en la memoria de estado sólido y no aún en las bandejas giratorias.
En el caso de la memoria caché en un sitio web, es más rápido porque los datos ya se han recuperado de la base de datos (que, en algunos casos, podría ubicarse en cualquier parte del mundo).
Entonces se trata de la localidad , en su mayoría. La memoria caché elimina el paso de transferencia de datos .
La localidad es una forma elegante de decir datos que están "muy juntos", ya sea en el tiempo o en el espacio. El almacenamiento en caché con una memoria más pequeña, más rápida (pero generalmente más costosa) funciona porque generalmente una cantidad relativamente pequeña de los datos generales son los datos a los que se accede con mayor frecuencia.
Lectura adicional de
caché (informática) en Wikipedia
fuente
Es más rápido porque está más cerca y porque es SRAM, no DRAM.
SRAM es y puede ser considerablemente más rápido que DRAM, los valores se mantienen estáticamente (S en S RAM) para que no tengan que actualizarse, lo que quita los ciclos. DRAM es dinámico, como pequeñas baterías recargables, debe recargarlas regularmente para que no se agoten y se conviertan en ceros. Esto roba el tiempo del ciclo además de cómo tiene que acceder a los bits, etc.
Estar en el mismo dado o más cerca del procesador reduce el viaje de ida y vuelta, tanto L1 como L2 son más rápidos que DRAM desde una perspectiva de acceso.
El acceso a la SRAM es más rápido que la DRAM lleva las manzanas a las manzanas, y los cachés generalmente están en chip o más cerca o en autobuses más rápidos que la DRAM, lo que también hace que el tiempo de acceso sea más rápido.
fuente
Una cosa que debe mencionarse explícitamente es el impacto de la velocidad de la luz. En este video, Grace Hopper muestra un trozo de cable de aproximadamente un pie de largo, que es qué tan lejos puede viajar una señal eléctrica en un nanosegundo *. Si una CPU está funcionando a 3GHz, eso implica una distancia de 4 "por ciclo de reloj. Este es un límite físico difícil en las velocidades de acceso a la memoria. Esta es una gran parte de por qué estar cerca de la CPU (como lo es el caché L1), permite memoria para ser más rápido
EDITAR * en realidad qué tan lejos puede viajar la luz en el vacío, la distancia a través del cobre / silicio es menor.
fuente
Otras respuestas ya cubrieron todos los bits relevantes: localidad (y el costo de transferencia de datos asociado, ancho de bus y reloj, etc.); velocidad de la luz (nuevamente, asociada con los costos de transferencia y el ancho y rendimiento del bus); Tecnología de memoria diferente (SRAM vs.DRAM). Todo esto visto a la luz del equilibrio costo / rendimiento .
Un poco que quedó fuera y solo se menciona en el comentario de Darkhogg: los cachés más grandes tienen mejores tasas de éxito pero una latencia más larga. Múltiples niveles de caché se introdujeron también para abordar esta compensación.
Hay una excelente pregunta y respuesta sobre este punto en electrónica SE
A partir de las respuestas, me parece que un punto a destacar es: la lógica que realiza todas las operaciones requeridas para una lectura de caché no es tan simple (especialmente si el caché es asociativo, como la mayoría de los cachés de hoy). Requiere puertas y lógica. Entonces, incluso si descartamos el costo y el espacio muerto
fuente
Hay muchas cosas buenas planteadas en las otras respuestas, pero parece faltar un factor: la latencia de decodificación de direcciones.
La siguiente es una gran simplificación excesiva de cómo funciona la decodificación de direcciones de memoria, pero da una buena idea de por qué los chips DRAM grandes son generalmente bastante lentos.
Cuando el procesador necesita acceder a la memoria, envía un comando al chip de memoria para seleccionar la palabra específica que quiere usar. Este comando se llama Selección de dirección de columna (ignoraremos las direcciones de fila por ahora). El chip de memoria ahora tiene que activar la columna solicitada, lo que hace enviando la dirección por una cascada de puertas lógicas para hacer una sola escritura que se conecte a todas las celdas de la columna. Dependiendo de cómo se implemente, habrá una cierta cantidad de retraso para cada bit de dirección hasta que el resultado salga por el otro extremo. Esto se llama latencia CAS de la memoria. Debido a que esos bits deben examinarse secuencialmente, este proceso lleva mucho más tiempo que un ciclo de procesador (que generalmente tiene unos pocos transistores en secuencia para esperar). También lleva mucho más tiempo que un ciclo de bus (que suele ser unas veces más lento que un ciclo de procesador). Es probable que un comando CAS en un chip de memoria típico tome el orden de 5ns (IIRC: ha pasado un tiempo desde que miré los tiempos), que es más de un orden de magnitud más lento que un ciclo de procesador.
Afortunadamente, dividimos las direcciones en tres partes (columna, fila y banco), lo que permite que cada parte sea más pequeña y procese esas partes simultáneamente, de lo contrario, la latencia sería aún más larga.
El caché del procesador, sin embargo, no tiene este problema. No solo es mucho más pequeño, sino que la traducción de direcciones es un trabajo más fácil, sino que en realidad no necesita traducir más que un pequeño fragmento de la dirección (en algunas variantes, nada de eso) porque es asociativa. Eso significa que junto a cada línea de memoria almacenada en caché, hay celdas de memoria adicionales que almacenan parte (o la totalidad) de la dirección. Obviamente, esto hace que el caché sea aún más costoso, pero significa que se pueden consultar todas las celdas para ver si tienen la línea de memoria particular que queremos simultáneamente, y luego el único (con suerte) que tiene los datos correctos lo volcará en un bus que conecta toda la memoria al núcleo del procesador principal. Esto sucede en menos de un ciclo, porque es mucho más simple.
fuente
Una de las filosofías que estudié fue el movimiento de obtener el máximo rendimiento en el hardware mínimo cuando hablamos de cualquier memoria basada en caché, ya sea caché de CPU, caché de buffer o caché de memoria para ese propósito. El motivo básico se logra cuando hay un movimiento mínimo o nulo de hardware para recuperar / leer / escribir datos y la operación se completa más rápido.
Las transferencias de datos desde el disco -> memoria principal (RAM) (almacenamiento temporal) -> caché de la CPU (almacenamiento temporal más pequeño cerca de la CPU para datos de acceso frecuente) -> CPU (procesamiento).
El caché de la CPU es un espacio de memoria más pequeño y más rápido que almacena copias de los datos de las ubicaciones de memoria principal utilizadas más recientemente.
La memoria caché del búfer es un área de memoria principal que almacena copias de los datos de las ubicaciones de disco utilizadas más recientemente.
La memoria caché del navegador es un directorio o espacio similar que almacena copias de los datos de los sitios web visitados más recientemente por los usuarios.
Referencia: Cómo funciona la memoria de la computadora
fuente