¿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 sus 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 cual el almacenamiento más grande es más lento para acceder es la distancia . En promedio, un almacenamiento más grande está más lejos de usted. Esto es cierto para los elementos físicos y para la memoria RAM.
La memoria de la computadora ocupa espacio físico. Por esa razón, las memorias 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 en acceder, debido a los límites de velocidad que existen. 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 retraso de propagación de las puertas y los controladores, y el uso común de relojes síncronos. Incluso si el dinero no fuera un problema y pudieras comprar todo lo que quisieras de la tecnología RAM más rápida disponible en la actualidad, no podrías beneficiarte de todo. Diseñe una hoja de tamaño A4 de caché L1 si lo desea, y coloque su CPU justo en el centro. Cuando la CPU quiere acceder a alguna memoria justo en la esquina de la memoria, la solicitud tardará literalmente un nanosegundo en llegar allí y un nanosegundo en volver. Y eso no incluye todos los retrasos de propagación a través de puertas y controladores. Eso ralentizará seriamente su CPU de 3 GHz.
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 sincronizar todo el lote con un reloj lento para hacer frente al peor de los casos de tiempo 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 haber sido cronometradas 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 del 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 ligeramente más lento, etc.
Y ahora tiene cachés L1 y L2 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 el mapeo entre las líneas de caché y la memoria principal. Aumentar el 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 incentivos para mantener el caché pequeño.
Consulte Compensaciones 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, de rendimiento y de consumo de energía, la respuesta a su pregunta es: depende de muchos factores microarquitectónicos.
Como ejemplo, vea esta referencia : 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 caché L1 difieren hasta en un factor de 3.
La razón de la latencia constante a L1 a través de varios procesadores diferentes en la prueba anterior tiene sus raíces en la microarquitectura del caché: el acceso al caché en sí (recuperación de datos de la memoria) toma solo un 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, no se debe llegar a la conclusión de que la latencia de la memoria caché es independiente del tamaño de la memoria caché. Si alguien intentara implementar una caché L1 ridículamente grande, la lógica que realiza todas las operaciones requeridas para una lectura de caché también sería grande. En algún momento, el retardo 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 antes tendrían que dividirse en varios ciclos de reloj. Esto aumentará la latencia.
Suponiendo que la memoria caché en cuestión esté implementada en SRAM, los módulos que más se ven afectados por el tamaño de la memoria caché son: decodificadores de fila y muxes. Sin embargo, incluso los amplificadores de detección se verán afectados por cachés muy grandes: una oscilació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". Dicho esto, el efecto más severo en la velocidad lógica se agregará mediante la capacitancia de las interconexiones de cables: esta capacitancia tiene una dependencia más que lineal del tamaño de la SRAM. Los detalles exactos son específicos de la implementación.
Ahora, los cachés L1 son bastante estables en sus latencias porque su rendimiento es el más crucial. Si intenta analizar los cachés L2 y L3, la imagen se complica mucho.
La imagen se complica mucho más cuando considera los procesadores multinúcleo: tienen una lógica adicional para garantizar la coherencia de la memoria caché . Esto lleva a un factor adicional que afecta la latencia de acceso a la memoria caché: el historial de accesos a la memoria de todos los núcleos.
Resumen
Como puede ver, su pregunta está lejos de ser trivial y no puede responderse por completo. Sin embargo, si considera cachés preferibles desde el punto de vista económico y de rendimiento, entonces diría que su tamaño no afectará la latencia de manera apreciable.
Para lectores interesados:
Esta referencia es un análisis muy profundo de los factores de rendimiento de las CPU modernas. Hay mucho material relacionado con el caché allí. Requiere una comprensión profunda de la arquitectura informática y los principios de la microarquitectura (alternativamente, un buen resumen de los temas que uno necesita saber para convertirse en un profesional en este campo).
Ingeniero de prueba de caché de CPU aquí: Dave Tweed en los comentarios tiene las explicaciones correctas. El caché está dimensionado para maximizar el rendimiento en el punto de precio esperado de la CPU. La memoria caché es generalmente el mayor consumidor de espacio de matriz 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 Intel Ivy Bridge: http://ark.intel.com/products/codename/29902/Ivy-Bridge
El Xeon de gama alta viene con 30 MB de caché, tiene 12 núcleos y cuesta alrededor de $2700. El i3 de gama baja 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 troquel más pequeño, del cual el caché es la parte más grande.
Pablo A. Clayton