¿Por qué la memoria caché de la CPU es tan rápida?


58

¿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.


2
¿Qué quieres decir con memoria principal ?
marcocs

1
@marcocs editado para mayor claridad. Me refiero a la memoria caché de la CPU y la memoria del sistema principal, es decir, los dimms extraíbles en la mayoría de las placas base.
ConditionRacer


2
@ratchetfreak Uh ... OP claramente está pidiendo una causa próxima, no una causa final.
Kyle Strand

1
Vaya, no pensé que alguna vez usaría mi título de ingeniero informático. La respuesta aceptada no es realmente una respuesta. Esto se debe a que la memoria caché de la CPU funciona a una frecuencia de reloj mucho más alta (la frecuencia de reloj de la CPU, alrededor de 4 GHz), mientras que la memoria principal funciona a la frecuencia de reloj del bus (alrededor de 1600MHz). No solo eso, sino que el caché de la CPU puede leer en 4 ciclos de reloj, sino que la RAM del sistema puede tomar 100 ciclos de reloj del sistema. Además, la RAM del sistema tiene contención con otros periféricos como el disco o la red, mientras que el caché de la CPU está dedicado. Cuanto más largo sea el cable, más lenta será la velocidad de reloj a la que puede operar. tinyurl.com/zkdsstd
Chloe

Respuestas:


115

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


29
Creo que esta es una buena respuesta. Sin embargo, puede valer la pena agregar que también hay una jerarquía de costos para el almacenamiento en caché: el almacenamiento en red es más barato que un disco duro local, que es más barato que la RAM, que es mucho más barato que el caché en la CPU. Si no fuera por esto, simplemente fabricaríamos CPU con 120 GB de memoria en el chip, y terminaremos.
Charles E. Grant

1
@ConditionRacer: Las mismas razones. L1 es más rápido, pero más costoso, por lo que le dan un poco de L1 muy costoso y más de L2 menos costoso, pero más lento. Ver también stackoverflow.com/questions/3699582/…
Robert Harvey

99
"¿Por qué L1 es más rápido que L2?", La pregunta se vuelve fuera de tema para Programmers.SE, y debe hacerse en Electronics.SE
mattnz

55
@ConditionRacer IIRC, tiene que ver con la tecnología utilizada para implementar la memoria. Creo que L2 es DRAM en chip, mientras que L1 es SRAM o algo así; mucho más caro, pero mucho más rápido. Hace más de una década que trabajé en el diseño de CPU ...
Donal Fellows

44
@ CharlesE.Grant: si bien la jerarquía de costos es un buen ejemplo, hay otra razón por la que no tenemos 120 GB de caché en el chip: el direccionamiento de una memoria más grande requiere direcciones más grandes, por lo tanto, instrucciones más grandes o más ciclos de CPU. Entonces, para ser el más rápido, la cantidad de registros debe ser relativamente pequeña. Por supuesto, uno podría tener memoria en el chip además de los registros, pero el nivel más rápido tiene que permanecer pequeño, de lo contrario ya no sería tan rápido.
vsz

33

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.


1
SRAM también consume más energía por bit, por lo que tendría que agregarle radiadores, y cualquier cosa que funcione con batería sufriría.
9000

1
Sin mencionar el hecho de que hacer que SRAM sea más grande lo hace MUCHO más lento.
Darkhogg

de acuerdo, más poder y más lento en relación con otro sram. Creo que son 4 transistores por bit para sram y 1 por bit para dram. dram confía en la capacitancia en el fet, donde sram se basa en una buena lógica anticuada. por lo que debe alimentar todos esos transistores todo el tiempo y no solo bombear la carga periódicamente.
old_timer

44
SRAM en cachés generalmente es 6T, no 4T. Además, la SRAM (ciertamente la variante 6T) es más eficiente energéticamente. El verdadero consumo de energía en DRAM es el ciclo de actualización, y SRAM simplemente no necesita eso. Los transistores SRAM consumen energía al cambiar, el condensador DRAM tiene fugas todo el tiempo. Si reemplaza la tapa con fugas de DRAM, termina con EEPROM, pero eso no es rápido: si es difícil que se filtre la carga, también es difícil sacarla de la manera normal.
MSalters

Los FET CMOS de @dwelch no agotan la energía si están en estado abierto o cerrado, por lo que el argumento sobre el consumo de energía no es válido. Además, es la conmutación lógica CMOS, lo que hace que las CPU agoten la mayor parte de su potencia: los picos de corriente en el estado intermedio (no 1 y no 0), por lo que la situación es inversa a lo que usted dice :)
Ruslan

21

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.


2
Límite duro para el cobre. Sin embargo, este es un buen punto, no consideré cuán ridículamente rápidos son los procesadores modernos.
ConditionRacer

@ConditionRacer Acabo de agregar una corrección, 11.8 pulgadas es ligera en el vacío.
Matthew Finlay

2
Debe reducir a la mitad ese número, ya que necesita un viaje de ida y vuelta para recuperar memoria. Por lo tanto, solo son 5 cm, no 10 cm por ciclo de latencia en vacío .
CodesInChaos

2
La velocidad de la luz es la razón por la cual el reloj del bus de memoria principal dejó de acelerarse hace unos años (¿2000?) No es un efecto directo, tiene que ver con que las señales lógicas CMOS ya no sean ondas cuadradas perfectas en las frecuencias del bus, pero c muestra de manera prominente en las matemáticas.
zwol

5

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

Si alguien intentara implementar un caché L1 ridículamente grande, la lógica que realiza todas las operaciones requeridas para una lectura de caché también se volvería grande. En algún momento, el retraso de propagación a través de toda esta lógica sería demasiado largo y las operaciones que habían tomado un solo ciclo de reloj de antemano tendrían que dividirse en varios ciclos de reloj. Esto aumentará la latencia.


5

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.


-2

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


"La filosofía de los sistemas operativos es ...". ¿Es esta solo su opinión o puede respaldarla de alguna manera?
mosquito

Maurice Bach me enseñó sobre esto mientras estudiaba Unix. Lamentablemente no hay documentación de apoyo. Editado ..
roshan4074

55
howstuffworks es notoriamente poco confiable para obtener información técnica confiable. Son agradables para simplificaciones que el promedio de Joe y Jane pueden entender, pero eso es todo.
Jwent
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.