¿Por qué el caché L1 es más rápido que el caché L2?


14

Estoy tratando de entender por qué ciertas memorias caché de la CPU son más rápidas que otras. Al comparar la memoria caché con algo como la memoria principal, existen diferencias en el tipo de memoria (SRAM vs DRAM) y problemas de localidad (en el chip frente a tener que atravesar un bus de memoria) que pueden afectar las velocidades de acceso. Pero L1 y L2 generalmente están en el mismo chip, o al menos en el mismo dado, y creo que son el mismo tipo de memoria. Entonces, ¿por qué es L1 más rápido?


99
Porque está construido de esa manera.
Ignacio Vazquez-Abrams

Existen múltiples formas de construir el mismo tipo de RAM. Algunas formas resultan en RAM que es más rápida que la RAM construida de otras maneras.
Ignacio Vazquez-Abrams

La misma razón por la cual su DDR RAM es más rápida que su HDD ...
hassan789

1
relacionado: mi respuesta y una pregunta SO sobre los tamaños de caché también explican algunas razones de compensación de velocidad / consumo de energía para tener cachés de varios niveles. Básicamente, hacer que un caché sea súper rápido cuesta energía y área de matriz para hacer más en paralelo, y es incompatible con los grandes tamaños / asociatividad que desea en un caché de último nivel.
Peter Cordes

Respuestas:


24

No, no son del mismo tipo de RAM, aunque estén en el mismo chip que usa el mismo proceso de fabricación.

De todos los cachés, el caché L1 necesita tener el tiempo de acceso más rápido posible (latencia más baja), en comparación con la capacidad que necesita para proporcionar una tasa de "acierto" adecuada. Por lo tanto, se construye utilizando transistores más grandes y pistas metálicas más anchas, intercambiando espacio y potencia por velocidad. Los cachés de nivel superior deben tener capacidades más altas, pero pueden permitirse ser más lentos, por lo que usan transistores más pequeños que están más apretados.


3
Esto es lo que estoy buscando, gracias. ¿Conoces alguna buena fuente donde pueda leer más sobre las diferencias?
ConditionRacer

No, no por casualidad. Los detalles de estas compensaciones de espacio / potencia / tiempo, así como las opciones con respecto a la capacidad y arquitectura de la memoria caché, están estrechamente vinculados a los detalles de propiedad de los procesos del fabricante, por lo que se publica muy poco (si es que hay algo) al respecto. Solo puedo hablar en términos generales.
Dave Tweed

10
L1 también es más pequeño, lo que significa que la propagación de la señal a través de él requiere menos ciclos de reloj: a menudo, el tamaño de L1 se decide como la memoria más grande accesible en 1 (o 2) relojes.
Brian Drummond

66
Además del punto de Brian Drummond, L1 también suele utilizar el acceso paralelo de etiquetas de datos. L2 generalmente accede a las etiquetas primero (determinando de qué manera si hay algún impacto) y luego a los datos, aumentando la latencia pero ahorrando energía (significativo dado un mayor tamaño, una mayor asociatividad y una mayor tasa de fallas). (El acceso L2 también suele comenzar después de que se confirma una falla L1, lo que aumenta su latencia efectiva.)
Paul A. Clayton

@BrianDrummond: más pequeño tanto en términos de carga de cables como de profundidad de la puerta (no creo que sea obvio por su comentario).
Sean Houlihane el

5

L1 generalmente se usa como almacenamiento para instrucciones decodificadas, mientras que L2 es un caché general para un solo núcleo. Cuanto más bajo es el caché, menor es el tamaño y más rápido suele ser. Como regla general para los procesadores de PC:

Caché L1: acceso de ciclo de reloj 2-3

Caché L2: ~ 10 ciclos de acceso de reloj

Caché L3: ~ 20-30 acceso de ciclo de reloj

El diseño de la caché L1 debe ser para maximizar la tasa de aciertos (la probabilidad de que la dirección de instrucción deseada o la dirección de datos estén en la caché) mientras se mantiene la latencia de la caché lo más baja posible. Intel usa un caché L1 con una latencia de 3 ciclos. El caché L2 se comparte entre uno o más cachés L1 y, a menudo, es mucho, mucho más grande. Mientras que el caché L1 está diseñado para maximizar la tasa de aciertos, el caché L2 está diseñado para minimizar la penalización por falla (el retraso incurrido cuando ocurre una falla L1). Para los chips que tienen cachés L3, el propósito es específico para el diseño del chip. Para Intel, los cachés L3 aparecieron por primera vez en sistemas multiprocesador de 4 vías (procesadores Pentium 4 Xeon MP) en 2002. Los cachés L3 en este sentido redujeron en gran medida los retrasos en entornos de subprocesos múltiples y quitaron una carga del FSB. En el momento,

Cita obtenida aquí de la respuesta de "Pinhedd".


1
L1 también se usa para datos en general, pero es cierto que a menudo los datos L1 y la instrucción L1 están separados mientras L2 se comparte: programmers.stackexchange.com/questions/44731/… (una razón por la que se puede compartir es que tiene más formas )
Guy Sirton

1
Es común que los procesadores tengan instrucciones separadas y cachés de datos en el nivel L1. Ciertamente cierto para los chips posteriores x86 y SPARC. Y algunos cachés de instrucciones L1 no almacenan instrucciones decodificadas. El Pentium 4 almacenó instrucciones decodificadas, pero luego Intel volvió a los cachés I normales, luego recientemente agregó cachés de instrucciones decodificadas nuevamente en sus chips.
Craig S. Anderson el

3

Hay varias razones por las cuales la velocidad es inversamente proporcional al tamaño. Lo primero que viene a la mente es el dominio físico de los conductores, donde la propagación de la señal se limita a algún factor de la velocidad de la luz. Una operación puede llevar tanto tiempo como una señal eléctrica para recorrer la mayor distancia dentro del mosaico de memoria y viceversa. Otra razón relacionada es la separación de dominios de reloj. Cada CPU funciona con su propio generador de reloj, que permite que la CPU se ejecute en relojes de varios GHz. La caché de nivel 1 se ejecuta en y se sincroniza con el reloj de la CPU, que es el más rápido del sistema. El caché de nivel 2, por otro lado, debe servir a muchas CPU y se ejecuta en un dominio de reloj diferente (más lento). No solo el reloj L2 es más lento (mosaico más grande) sino que al cruzar un límite de dominio de reloj agrega otro retraso. Luego, por supuesto, están los problemas de despliegue (ya mencionados).


1

Además de las características de rendimiento inherentes, la localidad también tiene un papel (L1 está más cerca de la CPU). Según lo que todo programador debe saber sobre la memoria :

Es interesante observar que para el caché L2 en matriz, una gran parte (probablemente incluso la mayoría) del tiempo de acceso es causada por demoras en la conexión. Esta es una limitación física que solo puede empeorar con el aumento de los tamaños de caché. Solo la reducción del proceso (por ejemplo, pasar de 60 nm para Merom a 45 nm para Penryn en la línea de Intel) puede mejorar esos números.


Creo que esto se aplica principalmente donde las cachés son grandes: esto no se aplica a todos los tipos de procesadores (aunque el retraso del cable es significativo).
Sean Houlihane
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.