
Recientemente leí sobre procesadores (principalmente multiprocesadores) y me encontré con el concepto de cachés multinivel. Estos diseños cuentan con varios niveles de caché en este caso para aumentar el rendimiento.
Sin embargo, no pude entender cómo los cachés adicionales aumentan el rendimiento del procesador. ¿Por qué no simplemente aumentar el tamaño de los cachés existentes?
Respuesta1
El uso de múltiples niveles de caché es en parte un mecanismo para coordinar procesadores multinúcleo y en parte un compromiso entre precio y rendimiento.
En un procesador con múltiples núcleos, cada núcleo tiene su propia caché L1. Esto permite que el núcleo lea y escriba desde y hacia el caché sin preocuparse por interferir con otros núcleos. Sin embargo, los núcleos necesitan almacenamiento compartido para poder intercambiar cierta información fácilmente. La caché L2 es compartida por todos los núcleos, por lo que se utiliza como una especie de espacio de almacenamiento comunitario donde la información está disponible para todos los subprocesos.
La diferencia entre las cachés L2 y L3 es la parte de compromiso. Los cachés están hechos de RAM estática o SRAM. Esto es diferente de la RAM dinámica (DRAM) que constituye su memoria principal. La RAM dinámica debe "actualizarse" periódicamente, es decir, con el tiempo las celdas DRAM pierden su valor a menos que se lean y luego se reescriban. Su controlador de memoria hace esto automáticamente, pero cada vez que el controlador de memoria tiene que hacer esto (miles de veces por segundo) no puede leer/escribir valores para el procesador hasta que termine. Esto ralentiza la DRAM. SRAM no tiene esta limitación, SRAM mantendrá su valor indefinidamente mientras tenga potencia operativa, haciéndolo mucho más rápido. Entonces, sus cachés (tanto L2 como L3) están hechos de SRAM. El problema es que SRAM esmuycaro; Si bien 4 GB de DRAM de alta velocidad son un poco caros pero asequibles, 4 GB de SRAM están mucho más allá de su rango de precios.
Entonces, cada vez que un fabricante de procesadores decide agregar más SRAM al diseño, se vuelve notablemente más caro. La SRAM viene en múltiples velocidades y, como es de esperar, la SRAM más rápida es más cara que la SRAM más lenta. Entonces, el fabricante de su procesador ha intentado optimizarlo para ambosvelocidadycostoutilizando tanto una SRAM de mayor velocidad como una SRAM de menor velocidad. Luego, el procesador se diseña de manera que coloque los valores que más necesita en la caché más rápida (L2) y la información que necesita menos en una caché más lenta (L3). Al administrar cuidadosamente esta memoria en el microcódigo del procesador, se crea un compromiso equitativo: hay más caché y parte del caché (con suerte, el caché que más necesita el procesador) es muy rápido.
Entonces, para resumir, los procesadores tienen cachés de varios niveles para aumentar la capacidad de la caché del procesador sin aumentar drásticamente el precio del procesador. Esta cuidada mezcla permite obtener procesadores más rápidos y económicos.
Respuesta2
Los cachés multinivel son principalmente un compromiso entre capacidad y costo de acceso (tanto latencia/tiempo como energía).
Podría ser útil compararlo con la compra de una herramienta. Ir a la ferretería local (comparable al caché L1) sería rápido y consumiría menos energía, pero la ferretería local es pequeña y es más probable que no tenga la herramienta específica que uno busca. Ir a una ferretería grande (comparable a la caché L2) requerirá más tiempo y energía (está más lejos y buscar la herramienta llevará más tiempo), pero es más probable que la herramienta esté disponible. Si incluso la gran ferretería no tiene la herramienta, uno podría ir al almacén del fabricante (comparable a la memoria principal), que es casi seguro que tendrá la herramienta. Si ni siquiera el almacén tiene la herramienta, entonces se espera una espera aún más larga hasta que la fábrica del fabricante (comparable al disco) produzca más herramienta.
Vivir al lado de una ferretería grande (con una caché L1 muy grande) ahorraría tiempo si la diversidad de suministros de hardware buscados fuera generalmente grande (algunos procesadores PA-RISC destinados a cargas de trabajo comerciales hicieron esto), pero normalmente se requiere una pequeña diversidad de suministros. Se usa para que sea muy probable que una pequeña tienda local tenga el artículo en stock (alta probabilidad de un golpe de caché) y encontrar un artículo de uso común es más rápido en una tienda más pequeña.
Como mencionó jcrawfordor, existen algunas ventajas al compartir un nivel de caché entre múltiples núcleos, ya que puede: evitar el almacenamiento repetido del mismo contenido de memoria, permitir el uso desequilibrado de la capacidad de almacenamiento (por ejemplo, un núcleo podría usar todo el almacenamiento L2 con un L2 compartido mientras que con los cachés L2 por núcleo, el núcleo estaría restringido a su propio caché L2), y simplificaría y aceleraría la comunicación entre núcleos (se accedería al mismo L2 de todos modos en caso de fallo de L1 y no habría necesidad de verificar si otros cachés L2 tenía los datos).
(Se pueden aplicar ventajas de uso compartido similares con respecto a cachés de datos e instrucciones L2 y L1 separados, pero dicho intercambio de contenido generalmente se evita (es decir, una línea de caché generalmente solo tiene código o datos) y se excluyen acciones menos comunes como la automodificación del código. y compilación JIT, rara vez hay comunicación entre una caché de instrucciones y una caché de datos).
Sin embargo, compartir tiene gastos generales. Se podría comparar con comprar en unos grandes almacenes. Cuantos más compradores utilicen la tienda, más probable será que haya una cola en cualquier caja registradora (comparable a los bancos en una caché L2). Además, la entrada/salida compartida introduce retrasos (comparables a los retrasos de arbitraje para el acceso a la caché), proporcionar múltiples puertas puede soportar un mayor rendimiento pero aumenta el tiempo requerido para elegir una puerta; la sobrecarga de elección puede ser extremadamente pequeña (pero no inexistente). existente) cuando nadie más entra/sale pero cuando la tienda está ocupada la elección de la puerta se vuelve más compleja. Si se supone que la tienda estará ocupada, se puede evitar parte del retraso en la decisión; pero simplemente usar la puerta más conveniente sería más rápido si el almacén no está ocupado (de manera similar, un caché podría, por ejemplo, tomarse tiempo adicional para asignar un búfer para contener la información de solicitud de memoria, incluso si dicho búfer no fuera necesario si el caché no está ocupado: sin dicha optimización, si el caché está ocupado, los dos pasos de determinar si el caché estaba ocupado y asignar una entrada de búfer se producirían en secuencia, de modo que el tiempo total sería la suma de los dos, pero si el caché no está ocupado, se evita el paso de asignación de búfer).
El uso compartido también puede aumentar la frecuencia de errores de conflicto dada la asociatividad limitada de un caché y puede causar malas opciones de reemplazo de caché (por ejemplo, un núcleo que usa un patrón de acceso de transmisión con poca reutilización de datos tendería a usar capacidad que otro núcleo con reutilización frecuente de datos). los datos tendrían un mayor beneficio en el uso). Existen técnicas para reducir tales desventajas, pero añaden complejidad y tienen otros costos.
Respuesta3
Los escondites más cercanos son mucho más pequeños.Aquí hay un poco sobre esto., No puedo encontrar nada sobre la velocidad, pero probablemente esté limitada (no tiene sentido y es costosa revisarla) a la velocidad del procesador o de la placa base.
Hay tres niveles de caché de CPU (dos en un solo núcleo), RAM (secundario) y discos duros (terciarios).
Respuesta4
Los procesadores tienen caché multinivel como l1, l2 y l3.
L1 es el caché más rápido pero también el más caro. L2 ocupa el segundo lugar y es el más discutido. Y después de eso L3 que viene después de L2.
Cuanto más rápido sea el caché, más rápido el procesador lee y escribe datos en él.
Pero las empresas tienen que elegir entre el rendimiento y el coste de cada procesador, por lo que introducen caché multinivel en los procesadores según su precio.