¿Qué hace que la memoria caché de la CPU sea mucho más rápida que la memoria principal? Puedo ver algunos beneficios en un sistema de caché en niveles. Tiene sentido que una caché más pequeña sea más rápida de buscar. Pero tiene que haber más.
¿Qué hace que la memoria caché de la CPU sea mucho más rápida que la memoria principal? Puedo ver algunos beneficios en un sistema de caché en niveles. Tiene sentido que una caché más pequeña sea más rápida de buscar. Pero tiene que haber más.
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á allí.
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 en los discos giratorios.
En el caso del 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).
Por lo que se trata de locality , en su mayoría. La memoria caché elimina el paso 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.
Lecturas adicionales
Caché (Informática) en Wikipedia
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 de forma estática (la S en S RAM), por lo que no es necesario actualizarlos, lo que elimina los ciclos. La DRAM es dinámica, como las pequeñas baterías recargables, tienes que 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 que el procesador o más cerca reduce el recorrido de ida y vuelta, tanto L1 como L2 son más rápidos que DRAM desde una perspectiva de acceso.
SRAM es de acceso más rápido que DRAM, de manzanas a 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 acelera el tiempo de acceso.
Una cosa que debe mencionarse explícitamente es el impacto de la velocidad de la luz. En este video Grace La tolva muestra un trozo de cable de aproximadamente un pie de largo, que es la distancia que puede recorrer una señal eléctrica en un nanosegundo *. Si una CPU está operando a 3GHz, eso implica una distancia de 4 "por ciclo de reloj. Este es un límite físico duro en las velocidades de acceso a la memoria. Esto es una gran parte de por qué estar cerca de la CPU (como lo es la caché L1), permite memoria para ser más rápido.
EDIT * en realidad, a cuánta distancia puede viajar la luz en el vacío, la distancia a través del cobre / silicio es menor.
Hay muchos puntos positivos en las otras respuestas, pero parece faltar un factor: latencia de decodificación de direcciones.
La siguiente es una gran simplificación de cómo funciona la decodificación de la dirección de memoria, pero da una buena idea de por qué los grandes chips DRAM 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 desea 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 al enviar la dirección a 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á un cierto retraso para cada bit de dirección hasta que el resultado salga por el otro extremo. Esto se llama la latencia CAS de la memoria. Debido a que esos bits tienen que ser examinados secuencialmente, este proceso toma mucho más tiempo que un ciclo de procesador (que generalmente tiene solo unos pocos transistores en la secuencia). También toma 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 que un orden de magnitud más lento que un ciclo de procesador.
Afortunadamente, dividimos las direcciones en tres partes (columna, fila y banco) que permiten que cada parte sea más pequeña y procesen esas partes al mismo tiempo, de lo contrario, la latencia sería aún más prolongada.
La memoria 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, en realidad no necesita traducir más que un pequeño fragmento de la dirección (en algunas variantes, ninguna) porque es asociativa. Eso significa que a lo largo de cada línea de memoria en caché, hay celdas de memoria adicionales que almacenan parte (o toda) de la dirección. Obviamente, esto hace que el caché sea aún más costoso, pero significa que se puede consultar a todas las celdas para ver si tienen la línea de memoria particular que queremos simultáneamente, y entonces la única (con suerte) que tenga los datos correctos la descargará 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.
Otras respuestas ya cubrían todos los bits relevantes: la localidad (y el costo de transferencia de datos asociado, el ancho del bus y el reloj, etc.); velocidad de la luz (de nuevo, asociada a los costos de transferencia y al ancho y rendimiento del bus); Tecnología de memoria diferente (SRAM vs.DRAM). Todo esto visto a la luz del equilibrio de costo / rendimiento .
Un bit que se omitió y que se acaba de mencionar en el comentario de Darkhogg: los cachés más grandes tienen mejores tasas de éxito pero una latencia más larga. Se introdujeron múltiples niveles de caché también para abordar esta compensación.
Hay una excelente pregunta y respuesta sobre este punto en electronics SE
A partir de las respuestas, me parece que un punto a resaltar es: la lógica que realiza todas las operaciones necesarias para una lectura de caché no es tan simple (especialmente si la caché es asociativa, como la mayoría de los cachés actuales). Requiere puertas, y lógica. Entonces, incluso si descartamos el costo y el espacio de morir
Si alguien tratara de implementar un caché L1 ridículamente grande, el Lógica que realiza todas las operaciones necesarias para una lectura de caché. También se haría grande. En algún momento, el retraso de propagación a través de Toda esta lógica sería demasiado larga y las operaciones que habían tomado Un solo ciclo de reloj de antemano tendría que ser dividido en Varios ciclos de reloj. Esto aumentará la latencia.
Una de las filosofías que estudié fue el movimiento de obtención-máximo-rendimiento-en-mínimo de hardware cuando hablamos de cualquier memoria basada en caché, ya sea caché de CPU, caché de búfer o caché de memoria para ese propósito. El motivo básico se logra cuando hay un movimiento de hardware mínimo o nulo 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 los datos de acceso frecuente) - > CPU (procesamiento).
La memoria 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 la memoria principal utilizadas más recientemente.
El 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.
El 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
Bueno, la memoria caché no se puede compartir de manera eficiente entre los nodos porque una inyección SQL no se completa hasta que todas las lecturas y escrituras de los nodos se completen. Digamos que la aplicación pasó memoria para decir example.com, entonces puede ocurrir un daño de pérdida de memoria porque la memoria caché se está utilizando para actualizar antes de que se puedan realizar lecturas completas. El proceso de aprovisionamiento de servicios y el soporte de todos los nodos depende de cada nodo.... Lee mas