¿Existe una correspondencia entre los tamaños de caché y la latencia de acceso? En igualdad de condiciones, ¿un caché más grande funciona más lento? Si es así, ¿por qué? ¿Cuánto más lento?
¿Existe una correspondencia entre los tamaños de caché y la latencia de acceso? En igualdad de condiciones, ¿un caché más grande funciona más lento? Si es así, ¿por qué? ¿Cuánto más lento?
Los artículos en sus manos son más rápidos de acceder que los artículos en sus bolsillos, que son más rápidos de acceder que los artículos en su armario, que son más rápidos de acceder que los artículos en Digikey. Cada tipo de almacenamiento sucesivo que he enumerado es más grande pero más lento que el anterior.
Entonces, tengamos lo mejor de ambos mundos, ¡hagamos que tus manos sean tan grandes como un almacén de Digikey! No, no funciona, porque ahora ya no son realmente manos. Son una bala de cañón que te pesa.
La razón por la que el almacenamiento más grande es más lento para acceder es distancia . El almacenamiento más grande está más lejos de ti en promedio. Esto es cierto para los elementos físicos y para la RAM.
La memoria de la computadora ocupa espacio físico. Por esa razón, los recuerdos más grandes son físicamente más grandes, y algunas ubicaciones en esa memoria estarán físicamente más lejos. Las cosas que están lejos tardan más tiempo en acceder, debido a los límites de velocidad existentes. En el caso de sus bolsillos y Digikey, los límites de velocidad son la velocidad de sus brazos y los límites de velocidad de la carretera.
En el caso de la RAM, los límites de velocidad son la velocidad de propagación de las señales eléctricas, el retardo de propagación de las puertas y los controladores y el uso común de los relojes síncronos. Incluso si el dinero no fuera un objeto, y usted pudiera comprar todo lo que quiera con la tecnología de RAM más rápida disponible en la actualidad, no podría beneficiarse de todo. Coloque una hoja de tamaño A4 de caché L1 si lo desea, y coloque su CPU en el centro. Cuando la CPU quiere acceder a alguna memoria en la esquina de la memoria, literalmente tomará un nanosegundo para que la solicitud llegue allí, y un nanosegundo para que regrese. Y eso no incluye todos los retrasos de propagación a través de puertas y controladores. Eso va a ralentizar seriamente su CPU de 3GHz.
Dado que la lógica síncrona es mucho más fácil de diseñar que la lógica asíncrona, un "bloque" de RAM se sincronizará con el mismo reloj. Si desea convertir toda la memoria en un caché L1, entonces tendría que cronometrar todo el lote con un reloj lento para hacer frente al peor de los casos de la ubicación más distante en la memoria. Esto significa que las ubicaciones de memoria distantes ahora están reteniendo las locales, que podrían haberse cronometrado más rápido. Entonces, lo mejor que se puede hacer es zonificar la memoria. La sección más cercana y más pequeña de la caché usaría el reloj más rápido. La siguiente sección más cercana y más pequeña usaría un reloj un poco más lento, etc.
Y ahora tienes L1 & L2 cachés y RAM.
Lo que nos lleva a la siguiente razón, el consumo de energía.
El caché en realidad consume una cantidad significativa de energía. No solo la memoria en sí, sino toda la lógica que la rodea, que maneja la asignación entre las líneas de caché y la memoria principal. El aumento del rendimiento de esta lógica adicional puede resultar en un aumento en el consumo de energía. Ahora, para ciertas aplicaciones (móviles, integradas), tiene aún más incentivo para mantener el caché pequeño.
Consulte Compromisos de diseño de caché para la optimización de potencia y rendimiento: un estudio de caso (Ching-Long Su y Alvin M. Despain, 1995).
Dejando de lado todos los factores económicos / rendimiento / consumo de energía, la respuesta a su pregunta es: depende de muchos factores micro arquitectónicos.
A modo de ejemplo, consulte this reference : la latencia de acceso L1 medida para todos los procesadores bajo prueba es de 4 ciclos de reloj. Las frecuencias de los procesadores son casi las mismas, pero los tamaños de la memoria caché L1 difieren hasta en un factor de 3.
El motivo de la latencia constante a L1 en varios procesadores diferentes en la prueba anterior está arraigado en la microarquitectura de la memoria caché: el acceso a la memoria caché (recuperación de datos de la memoria) toma un solo ciclo de reloj. Se gastan tres ciclos adicionales para decodificar el acceso, verificar la presencia de datos y más ... El número de etapas adicionales es el mismo en todos los procesadores en prueba, por lo tanto, las latencias de acceso son las mismas.
A pesar del ejemplo anterior, uno no debe llegar a la conclusión de que la latencia del caché es independiente del tamaño del caché. Si alguien intentara implementar un caché L1 ridículamente grande, la lógica que realiza todas las operaciones necesarias 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.
Suponiendo que el caché en cuestión implementado en SRAM, los módulos que más afectaron al tamaño del caché son: decodificadores de filas y muxes. Sin embargo, incluso los amplificadores de detección se verán afectados por cachés muy grandes: una variación de voltaje más pequeña en una línea de bits debido a una mayor capacitancia requerirá un amplificador de detección "más fuerte". Dijo que, el efecto más severo en la velocidad lógica se agregará mediante la capacidad de interconexiones de cables - esta capacidad tiene más que una dependencia lineal del tamaño de la SRAM. Los detalles exactos son específicos de la implementación.
Ahora, las cachés L1 son bastante estables en sus latencias porque su rendimiento es el más crucial. Si intentas analizar los cachés L2 y L3, la imagen se complica mucho.
La imagen se complica mucho más cuando se consideran procesadores de múltiples núcleos: tienen lógica adicional para garantizar coherencia de caché . Esto conduce a un factor adicional que afecta la latencia del acceso a la memoria caché: el historial de accesos a la memoria de todos cores.
Summary
Como puede ver, su pregunta está lejos de ser trivial y no se puede responder por completo. Sin embargo, si considera económicamente y el rendimiento es preferible el almacenamiento en caché, entonces diría que su tamaño no afectará la latencia de ninguna manera apreciable.
Para lectores interesados:
Esta referencia es un análisis muy profundo de las CPU modernas " Factores de rendimiento. Hay un montón de material relacionado con el caché allí. Requiere una comprensión profunda de la arquitectura de la computadora y los principios de microarquitectura (alternativamente, un buen resumen de los temas que uno necesita conocer para convertirse en un profesional en este campo).
Ingeniero de pruebas de caché de CPU aquí: Dave Tweed en los comentarios tiene las explicaciones correctas. La memoria caché está dimensionada para maximizar el rendimiento en el punto de precio esperado de la CPU. El caché es generalmente el mayor consumidor de espacio y, por lo tanto, su tamaño hace una gran diferencia económica (y de rendimiento).
Eche un vistazo a la página de la familia de CPU Ivy Bridge de Intel: enlace
El extremo superior Xeon viene con 30MB de caché, tiene 12 núcleos y cuesta alrededor de $ 2700. El i3 de gama inferior con 3 MB de caché (i3-3217) cuesta solo $ 500 por una computadora portátil completa (no puedo encontrarlo individualmente).
El Xeon ofrece el máximo rendimiento, pero también cuesta más fabricarlo y probarlo. El i3 es mucho más barato, pero la compensación es un tamaño de matriz más pequeño del cual el caché es la parte más grande.
Lea otras preguntas en las etiquetas microprocessor cache latency