¿Existe una correspondencia entre el tamaño de caché y la latencia de acceso?

9

¿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 lentamente? Si es así, ¿por qué? ¿Cuánto más lento?

Ivanmp
fuente
1
Si está interesado en explorar algunas compensaciones en el diseño de caché, HP desarrolló la herramienta CACTI que proporciona estimaciones de latencia y uso de energía en función de las características de diseño. También está disponible una interfaz web para la versión 5.3 .
Paul A. Clayton

Respuestas:

5

Los artículos en sus manos son más rápidos para acceder que los artículos en sus bolsillos, que son más rápidos para acceder que los artículos en su armario, que son más rápidos para 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 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 de acceso más lento es la distancia . El almacenamiento más grande está más alejado de usted 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 algunos lugares 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 tus bolsillos y Digikey, los límites de velocidad son la velocidad de tus 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 caché L1 de tamaño A4 si lo desea, y coloque su CPU justo en el centro. Cuando la CPU quiere acceder a algo de memoria justo 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 registrar todo el lote con un reloj lento para hacer frente al peor momento de la ubicación más distante en la memoria. Esto significa que las ubicaciones de memoria distantes ahora están frenando las locales, que podrían haberse sincronizado más rápido. Por lo tanto, lo mejor que podría hacer sería ubicar la memoria en la zona. 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 un poco más lento, etc.

Y ahora tienes 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 las 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).

Rocketmagnet
fuente
1
+1 Me gusta tu respuesta. Golpea todos los puntos relevantes y lo respalda también. Fácil de leer
Gustavo Litovsky
¿está bien? La respuesta se basa en el retraso en la velocidad de la luz de una pulgada frente a varias pulgadas?
Andyz Smith
1
Esta respuesta es buena como una descripción general, pero sospecho que no responde a la pregunta inicial. Uno no debería ser un experto en uArch para darse cuenta de que el caché de tamaño A4 no es práctico. Creo que OP preguntó acerca de un aumento razonable en el tamaño del caché y cómo este aumento afectará la latencia del acceso al caché.
Vasiliy
1
@AndyzSmith: es una gran exageración y simplificación excesiva, pero creo que hace que el punto general se transmita, que en algún momento, el caché L1 no se puede ampliar indefinidamente. En algún momento, entran las leyes de la física y la ralentizan.
Rocketmagnet
El retraso de una señal en el chip no es la velocidad de la luz, es un valor más complicado calculado considerando la capacidad de la puerta impulsada por la red / cable más como una red RLC. No es lo suficientemente largo como para ser una línea de transmisión. Cuanto más larga sea la red, más grande debe ser la puerta de conducción, o debe insertar buffers como repetidores. Todo lo cual también consume más energía.
pjc50
4

Dejando de lado todos los factores económicos / de rendimiento / consumo de energía, la respuesta a su pregunta es: depende de muchos factores micro arquitectó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 en hasta un factor de 3.

La razón de la latencia constante a L1 en varios procesadores diferentes en la prueba anterior se basa en la microarquitectura de la memoria caché: el acceso a la memoria caché en sí (recuperar datos de la memoria) toma solo un ciclo de reloj. Se emplean 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 la prueba, por lo tanto, las latencias de acceso son las mismas.

A pesar del ejemplo anterior, uno no debería llegar a la conclusión de que la latencia de la caché es independiente del tamaño de la caché. Si alguien intentara implementar un caché L1 ridículamente grande, la lógica que realiza todas las operaciones requeridas para una lectura de caché también se volvería grande. En algún momento, el retraso de la 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 se implementó en SRAM, los módulos que más se vieron afectados por el tamaño del 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 capacitancia más alta 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 más que una dependencia 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 si se consideran los procesadores de varios núcleos: tienen una lógica adicional para garantizar la coherencia de la memoria 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 los núcleos.

Resumen

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 de cachés preferibles, 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 de la computadora 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).

Vasiliy
fuente
¡Gracias por la respuesta! Las respuestas de usted y @ Rocketmagnet son bastante complementarias. Espero poder elegir ambos. Ya tengo mi copia de la referencia citada y últimamente me ha interesado mucho el tema, de ahí la pregunta.
ivanmp
¿Por qué la lógica para realizar una operación de lectura depende del tamaño de la memoria caché? o si no hay un salto discreto, ¿cuál es la fórmula para el tiempo de acceso versus el tamaño?
Andyz Smith
¿puede ser específico sobre qué componente: "La recurrencia crítica, entonces, es un sumador, un decodificador, la línea de palabras SRAM, la (s) línea (s) de bits SRAM, el (los) amplificador (es), los muxes de dirección de byte y el bypass muxes ". hace que la lógica se vuelva grande? en.wikipedia.org/wiki/Sum_addressed_decoder
Andyz Smith
@AndyzSmith, la fórmula del tiempo de acceso frente al tamaño solo puede ser dada por alguien que diseñe y simule el caché. En la referencia que publiqué, puede ver que se necesitan 4 ciclos de reloj para obtener datos de L1, pero nadie intenta estimar las holguras asociadas con estas lecturas. Pedir una fórmula no es una pregunta práctica sin mucha información adicional de implementación específica.
Vasiliy
1
@AndyzSmith, suponiendo que el caché en cuestión implementado en SRAM, los módulos que más se vieron afectados por el tamaño del caché son: decodificadores de fila y muxes. Sin embargo, incluso los amplificadores de detección se verán afectados para cachés muy grandes: menor oscilación de voltaje en una línea de bits debido a una mayor capacitancia -> 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 más que una dependencia lineal del tamaño de la SRAM. Nuevamente, los detalles son específicos de la implementación.
Vasiliy
3

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. El caché es generalmente el mayor consumidor de espacio para troqueles, por lo que su tamaño marca una gran diferencia económica (y de rendimiento).

Eche un vistazo a la página de la familia de CPU Ivy Bridge de Intel: http://ark.intel.com/products/codename/29902/Ivy-Bridge

El extremo superior Xeon 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 encontrarla 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.

xyzio
fuente
2
Muy interesante respuesta. Pero como dije en la pregunta, no estoy buscando la respuesta económica y obvia. Lo que estoy tratando de entender se relaciona con el rendimiento involucrado en acceder a un caché muy grande (> 512 MB). ¿El tamaño degradaría el rendimiento del caché?
ivanmp