¿Qué es el caché L1, L2 y L3 de un microprocesador y cómo afecta el rendimiento del mismo? Por ejemplo, tengo una computadora portátil con un microprocesador Intel 4700MQ con un caché L3 de 6 MB. ¿Qué indica este valor?

Un caché de la CPU es una memoria más pequeña y más rápida utilizada por la unidad central de procesamiento (CPU) de una computadora para reducir el tiempo promedio de acceso a la memoria.
L1 (Nivel 1), L2, caché L3 son algunas memorias especializadas que trabajan de la mano para mejorar el rendimiento de la computadora.

Cuando se realiza una solicitud al sistema, la CPU tiene un conjunto de instrucciones para ejecutar, que obtiene de la RAM. Por lo tanto, para reducir el retraso, la CPU mantiene un caché con algunos datos que anticipa que serán necesarios.

(L1) Caché de nivel 1 (2 KB – 64 KB): las instrucciones se buscan primero en este caché. El caché L1 es muy pequeño en comparación con otros, lo que lo hace más rápido que el resto.

(L2) caché de nivel 2 (256 KB – 512 KB): si las instrucciones no están presentes en el caché L1, entonces se ve en el caché L2, que es un grupo de caché ligeramente más grande, por lo tanto, acompañado de cierta latencia.

(L3) Caché de nivel 3 (1MB -8MB): con cada falta de caché, pasa al siguiente caché de nivel. Este es el más grande entre todos los caché, aunque es más lento, sigue siendo más rápido que la RAM.

Ahora ya sabe qué es el caché y qué nivel de caché es diferente.
Y ese valor de 6 MB de la caché L3 en su microprocesador Intel 4700MQ es en realidad el tamaño de la memoria de esa caché.
Por lo tanto, Cache mejora el rendimiento general de la CPU, pero estos números no deben tenerse en cuenta al comprar cualquier sistema. Mire los puntos de referencia de la CPU en su conjunto. Una CPU con una arquitectura similar pero con más caché no haría ninguna diferencia notable. La tecnología en estos días ha avanzado hasta tal punto que las especificaciones de una CPU simplemente no tienen sentido.

Esta respuesta es adicional a lo que Shekhar Upadhaya ha dicho aquí claramente.

La explicación del laico:

Imagine un empleado de uno de nuestros gobiernos “realmente eficientes”. oficinas. Está sentado allí en su escritorio con todo tipo de papeles tirados. Hay un cajón para el escritorio donde guarda un fajo de papeles más grande y puedes ver un gran armario de Godrej detrás de él donde tiene toneladas de papeles, ¡con Dios solo sabe a qué se remonta antes de la independencia!

Vas a él y le dices: “Hola amigo, ¿podrías traerme el ABC de papel?”. ¿Qué responde él? Él dice : “Oh, sí, ABC, ¿verdad? ¡Creo que acabo de ver eso aquí en la mesa! ” . Busca entre los 64 papeles que yacen sobre el escritorio y levanta un papel, lo mira de reojo, se golpea la frente y dice: “¡Arey! Fue ABD! ¡No ABC! ” “Espera, pero realmente creo que lo vi hace un par de días , debe estar aquí mismo “. Luego se agacha, abre el cajón del escritorio y

saca un paquete de aproximadamente 512 papeles, lo pone sobre la mesa y procede a escanearlos. Después de un par de minutos, dice : “Señor, no está aquí también. Por favor, ven mañana “. Pero tú dices: ” Por favor, es un asunto urgente “. Él te mira con disgusto, mira el reloj, murmura algo, y de mala gana se levanta y se dirige al armario. Puedes ver claramente que hay ¡8000 papeles allí! Los revisa y saca un documento, tosiendo y estornudando, por todo el polvo que gira, y le entrega su papel. Él dice : “Si eso no estuviera allí, ¡Hubiéramos tenido que ir a la habitación de atrás y buscar alrededor de 2 millones de documentos! “ . Lo miras, gracias a Dios y sales de allí antes de que el empleado tenga tiempo para pensar en “transacciones monetarias” .

Epílogo de la historia:

Aquí, el empleado es el procesador. El espacio en la parte superior de la tabla que puede contener esos 64 papeles (kB) y está más cerca de él y se puede buscar más rápido es el caché L1. El espacio en su cajón que puede contener una mayor cantidad de documentos (512kb) y lleva un poco más de tiempo buscar es el caché L2. El armario detrás de él que tiene una capacidad de almacenamiento aún mayor (8000kB) es el caché L3. El cuarto de almacenamiento con la mayor capacidad (2GB aquí) es la RAM.

La explicación del técnico:

Los cachés L1, L2 y L3 son agrupaciones de memoria diferentes similares a la RAM en una computadora. Se incorporaron para disminuir el tiempo que tarda el procesador en acceder a los datos. Este tiempo tomado se llama latencia. La arquitectura con la que están construidos también difiere considerablemente. Por ej. El caché L1 está construido con transistores más grandes y pistas metálicas más anchas, intercambiando espacio y potencia por velocidad. Las cachés de nivel superior están más compactas y usan transistores más pequeños.

Hay otras complejidades en la historia, como el hecho de que otros empleados (procesadores) pueden abrir y buscar (tiene acceso a) el armario (caché L3).

Los tiempos de acceso a los datos en estas memorias son generalmente del orden de nanosegundos y realmente no hacen una diferencia para el usuario promedio. Pero para los científicos / programadores que desarrollan / usan programas que procesan una gran cantidad de datos, es importante. ¡Hacen una gran diferencia en el orden de días o meses, incluso!

Para los realmente geek:

En un sistema Linux puede averiguar cuál es su tamaño de caché utilizando el comando lscpu o comprobando el archivo cpuinfo en el directorio proc utilizando el comando cat /proc/cpuinfo Busque el campo titulado tamaño de caché ; este suele ser el tamaño de caché L3 para los procesadores más nuevos.

   

Una de las prácticas que uso ampliamente en mis códigos para aumentar el rendimiento es el bloqueo de bucle . Intel prescribe la práctica y tiene una página bien explicada al respecto aquí: Cómo usar el bloqueo de bucle para optimizar el uso de la memoria en la arquitectura Intel® de 32 bits

Aquí hay un fragmento de código (de la página web anterior) para agregar una matriz ‘A’ a la transposición de otra matriz ‘B’, antes y después del bloqueo del bucle:

Antes de:

  flotante A [MAX, MAX], B [MAX, MAX] 
 para (i = 0; i 

Después:

  flotador A [MAX, MAX], B [MAX, MAX];
 para (i = 0; i 

Suponiendo que está escrito en C (que almacena las matrices en fila). Lo que hace el código anterior es dividir la matriz en matrices más pequeñas que caben dentro del caché L1. El parámetro 'block_size' se elige de modo que cada fila de A y cada columna de B sea acomodada por el caché L1 durante una iteración. Por lo tanto, la latencia disminuye y el rendimiento aumenta.

Imagen cortesía: http://www.thehindu.com

La CPU funciona en una frecuencia mucho más alta y necesita una latencia de acceso a datos más corta en orden de magnitud que la que proporcionan incluso los mejores DDR disponibles. Para permitir que la CPU continúe sin estados de espera (inactivo, esperando que lleguen los datos), debe proporcionarle una pequeña memoria de baja latencia para almacenar los datos relevantes.

Por lo general, es una SRAM ( https://en.m.wikipedia.org/wiki/ …) que es más costosa que la DRAM ( https://en.m.wikipedia.org/wiki/ …).

Los cachés vienen en tamaños bastante pequeños en comparación con DDR 2-16 GB en las computadoras de hoy. Cada nivel de caché está más cerca del núcleo de la CPU y es de menor tamaño.

Cada vez que un núcleo de la CPU necesita datos y no está en la memoria caché (una falta), la memoria caché pasa a su siguiente caché más grande y más lenta para intentar evitar la llamada al DDR.

Aquí hay un artículo más detallado:

http://www.extremetech.com/extre

  • El caché L1 está más cerca del núcleo (cada núcleo tiene su propio caché) y, por lo general, hay uno para datos y otro para instrucciones, los tamaños son de 8-64 KB.
  • L2 se puede compartir con múltiples núcleos y está en el rango de 2-4MB
  • L3 también está en el dado en algunos sistemas y puede tener 8-16 MB, aunque algunos procesadores lo han reemplazado con caché L2.
  • L4 está en la placa base y está en el rango de 100 MB

https://en.m.wikipedia.org/wiki/

Las memorias caché contienen instrucciones y datos “cercanos” a la CPU a tiempo, es decir. La latencia (tiempo) necesaria para acceder a los datos es más corta. L1 es una latencia más baja (y más pequeña que) L2. Del mismo modo para la relación L2 a L3.

Una memoria caché tiene un tamaño finito más pequeño que la RAM y, por lo tanto, necesita una política para determinar qué queda en la memoria caché frente a lo que se sobrescribe cuando hay una falta de memoria caché y se recupera algo más abajo en la jerarquía de la memoria.

Dado que los datos en caché están disponibles antes que los datos en RAM, el procesador tiene menos tiempo de inactividad mientras espera datos, lo que hace que el sistema sea más rápido.

Todos estos son niveles de caché. Supongo que ya sabe sobre Cache, que se implementa para acelerar el acceso a los datos. Hoy en día esto se implementa como niveles L1, L2, L3. La diferencia es la ubicación donde se colocan. L1 que se coloca en el chip de la CPU más cercano al procesador, L2 que se coloca entre la CPU y la RAM, si L23 está presente, entonces está en la placa base.

Ahora, debido a su ubicación, todos tienen un tiempo de acceso diferente medido en términos de número de ciclos de reloj. Por lo tanto, son importantes para acelerar el acceso y varían en términos de tiempo de acceso.

Hay una enorme diferencia entre las velocidades de la memoria primaria y el procesador. El procesador funciona a una frecuencia mucho más alta que la RAM. Considere esta analogía: el procesador es una persona que está exhausta y con mucha sed, y está bebiendo agua de una taza con una pajita. No importa cuánta sed tenga, el volumen de agua que puede consumir por segundo se ve afectado por las dimensiones de la pajita que está usando. Entonces, no importa qué tan rápido sea su procesador, solo puede obtener tantos datos por segundo (ancho de banda de RAM) de la RAM. El resto del tiempo, está inactivo, esperando datos.

Para optimizar, queremos hacer tantos cálculos como sea posible para un número determinado de accesos a la memoria global (accesos a la RAM). La memoria global es de alta latencia, memoria de bajo ancho de banda. Si el procesador sigue accediendo a él para obtener datos, el rendimiento disminuirá. En cambio, los procesadores modernos almacenan en caché agresivamente los datos de uso frecuente. Los cachés son memorias de gran ancho de banda y baja latencia. El caché L1 está más cerca del procesador y funciona a frecuencias muy cercanas a la del procesador. Luego viene el caché L2, y finalmente, el caché L3. L1 tiene el tamaño más pequeño, pero el ancho de banda más alto. L3 tenía el tamaño más grande, pero el ancho de banda más pequeño de los tres.

Considere el siguiente escenario: itera a través de una matriz y sigue agregando 5 a cada elemento de la matriz. Si el procesador tuviera que obtener 5 de la RAM para cada iteración, el rendimiento sería miserable. En cambio, almacenaría 5 en la caché L1. La recuperación del caché L1 apenas afecta el rendimiento.

Los cachés son invisibles para el sistema operativo. Es decir, no juega ningún papel en la gestión de la memoria caché. De lo contrario, el punto de tener cachés sería derrotado, ya que las llamadas al sistema operativo tienen enormes gastos generales.

Este asunto se trata de la memoria RAM estática (SRAM) y la estructura de la memoria dinámica (DRAM). Una celda DRAM básicamente tiene una estructura capacitiva y de transistor que requiere mucho tiempo para responder a la solicitud. Una celda RAM estática contiene solo un grupo de transistores que son estructura FET. No hay condensador en el mismo. SRAM es muy caro debido a los transistores. Por lo tanto, la memoria caché (L1, etc.) se utiliza en pequeñas cantidades en los sistemas informáticos.

¡Buenas respuestas aquí!

Un número único como 6 MB difícilmente puede describir la complejidad de la organización moderna de caché. Obtenga más números para el caché del procesador de su computadora portátil para comprenderlo mejor. Una buena manera de obtener más números y “ver” la organización de la memoria caché es usar hwloc.

http://www.open-mpi.org/projects

Básicamente, la memoria caché es una pequeña memoria en la computadora que obtiene los datos o las instrucciones de la RAM y la entrega al procesador. Debido a la memoria caché, la velocidad del procesador aumenta y funciona muy rápido. El tamaño de caché L1 es pequeño pero su velocidad es rápida en comparación con L2 y L3. Básicamente, el tamaño de caché y la velocidad son inversamente proporcionales. Si el tamaño del caché aumenta, entonces la velocidad de ese caché debe disminuir.