El Intel i486 tiene 8 KB de caché L1. El Intel Nehalem tiene 32 KB de caché de instrucciones L1 y 32 KB de caché L1 de datos por núcleo.
La cantidad de caché L1 no ha aumentado casi a la velocidad de la velocidad de reloj.
Por qué no?
El Intel i486 tiene 8 KB de caché L1. El Intel Nehalem tiene 32 KB de caché de instrucciones L1 y 32 KB de caché L1 de datos por núcleo.
La cantidad de caché L1 no ha aumentado casi a la velocidad de la velocidad de reloj.
Por qué no?
Respuestas:
30K del texto de Wikipedia no es tan útil como una explicación de por qué un caché demasiado grande es menos óptimo. Cuando el caché se vuelve demasiado grande, la latencia para encontrar un elemento en el caché (factorizando errores de caché) comienza a acercarse a la latencia de buscar el elemento en la memoria principal. No sé a qué proporciones apuntan los diseñadores de CPU, pero creo que es algo análogo a la directriz 80-20: le gustaría encontrar sus datos más comunes en la memoria caché el 80% del tiempo, y los otros 20 % del tiempo tendrás que ir a la memoria principal para encontrarlo. (o cualesquiera que sean las proporciones previstas por los diseñadores de CPU).
EDITAR: estoy seguro de que no está cerca del 80% / 20%, así que sustituya X y 1-X. :)
Un factor es que las recuperaciones de L1 comienzan antes de que se completen las traducciones de TLB para disminuir la latencia. Con un caché lo suficientemente pequeño y lo suficientemente alto, los bits de índice para el caché serán los mismos entre las direcciones virtuales y físicas. Esto probablemente disminuye el costo de mantener la coherencia de la memoria con un caché virtualmente indexado y etiquetado físicamente.
El tamaño del caché está influenciado por muchos factores:
Velocidad de las señales eléctricas (debería ser, si no la velocidad de la luz, algo del mismo orden de magnitud):
Costo económico (los circuitos en diferentes niveles de caché pueden ser diferentes y ciertos tamaños de caché pueden no valer)
Si el tamaño de caché L1 no cambió después de 64 kb es porque ya no valía la pena. También tenga en cuenta que ahora hay una mayor "cultura" sobre el caché y muchos programadores escriben código "compatible con el caché" y / o usan instrucciones prefetech para reducir la latencia.
Una vez intenté crear un programa simple que estaba accediendo a ubicaciones aleatorias en una matriz (de varios MegaBytes): ese programa casi congelaba la computadora porque por cada lectura aleatoria se movía una página completa de la RAM a la memoria caché y como eso se hacía muy a menudo de esa manera El programa estaba drenando todo el ancho de banda dejando muy pocos recursos para el sistema operativo.
Creo que se puede resumir simplemente afirmando que cuanto mayor sea el caché, más lento será el acceso. Por lo tanto, un caché más grande simplemente no ayuda, ya que un caché está diseñado para reducir la comunicación lenta del bus a la RAM.
Dado que la velocidad del procesador ha aumentado rápidamente, el caché del mismo tamaño debe funcionar más y más rápido para mantenerse al día. Por lo tanto, los cachés pueden ser significativamente mejores (en términos de velocidad) pero no en términos de almacenamiento.
(Soy un tipo de software, así que espero que esto no sea lamentablemente incorrecto)
Desde el caché L1 :
El caché de nivel 1, o caché primario, está en la CPU y se utiliza para el almacenamiento temporal de instrucciones y datos organizados en bloques de 32 bytes. El caché primario es la forma más rápida de almacenamiento. Debido a que está integrado en el chip con una interfaz de estado de espera cero (retraso) con la unidad de ejecución del procesador, su tamaño es limitado .
SRAM utiliza dos transistores por bit y puede almacenar datos sin asistencia externa, siempre que se suministre energía al circuito. Esto se compara con la RAM dinámica (DRAM), que debe actualizarse muchas veces por segundo para mantener su contenido de datos.
El procesador P55 MMX de Intel, lanzado a principios de 1997, fue notable por el aumento en el tamaño de su caché de Nivel 1 a 32 KB. Los chips AMD K6 y Cyrix M2 lanzados más tarde ese año aumentaron aún más la apuesta al proporcionar cachés de nivel 1 de 64 KB. 64 Kb ha seguido siendo el tamaño de caché L1 estándar, aunque varios procesadores de múltiples núcleos pueden utilizarlo de manera diferente.
EDITAR: Tenga en cuenta que esta respuesta es de 2009 y las CPU han evolucionado enormemente en los últimos 10 años. Si ha llegado a esta publicación, no tome todas nuestras respuestas aquí demasiado en serio.
En realidad, el tamaño de caché L1 ES el mayor cuello de botella para la velocidad en las computadoras modernas. Los tamaños de caché L1 patéticamente pequeños pueden ser el punto dulce por el precio, pero no el rendimiento. Se puede acceder al caché L1 a frecuencias de GHz, lo mismo que las operaciones del procesador, a diferencia del acceso RAM 400 veces más lento. Es costoso y difícil de implementar en el diseño bidimensional actual, sin embargo, es técnicamente factible, y la primera compañía que lo haga con éxito, tendrá computadoras 100 veces más rápidas y aún funcionará, algo que produciría importantes innovaciones en muchos Actualmente, solo son accesibles a través de configuraciones ASIC / FPGA costosas y difíciles de programar. Algunos de estos problemas tienen que ver con problemas de propiedad / propiedad intelectual y avaricia corporativa que abarca décadas, donde un cuadro de ingenieros insignificante e ineficaz son los únicos con acceso al funcionamiento interno, y a quienes se les da principalmente órdenes de marcha para exprimir tonterías proteccionistas ofuscadas rentables. La investigación excesivamente privatizada siempre conduce a tal estancamiento tecnológico o estrangulamiento (como hemos visto en los sectores aeroespacial y automotriz por parte de los grandes fabricantes y pronto será farmacéutico). El código abierto y una regulación de patentes y secretos comerciales más sensata que beneficie a los inventores y al público (en lugar de a los jefes y accionistas de la compañía) ayudaría mucho aquí. Sería obvio para el desarrollo hacer cachés L1 mucho más grandes y esto debería y podría haberse desarrollado hace décadas. Estaríamos mucho más adelante en computadoras y muchos campos científicos usándolos si lo hubiéramos hecho. y a quienes se les da principalmente órdenes de marcha para exprimir tonterías proteccionistas ofuscadas rentables. La investigación excesivamente privatizada siempre conduce a tal estancamiento tecnológico o estrangulamiento (como hemos visto en los sectores aeroespacial y automotriz por parte de los grandes fabricantes y pronto será farmacéutico). El código abierto y una regulación de patentes y secretos comerciales más sensata que beneficie a los inventores y al público (en lugar de a los jefes y accionistas de la compañía) ayudaría mucho aquí. Sería obvio para el desarrollo hacer cachés L1 mucho más grandes y esto debería y podría haberse desarrollado hace décadas. Estaríamos mucho más adelante en computadoras y muchos campos científicos usándolos si lo hubiéramos hecho. y a quienes se les da principalmente órdenes de marcha para exprimir tonterías proteccionistas ofuscadas rentables. La investigación excesivamente privatizada siempre conduce a tal estancamiento tecnológico o estrangulamiento (como hemos visto en los sectores aeroespacial y automotriz por parte de los grandes fabricantes y pronto será farmacéutico). El código abierto y una regulación de patentes y secretos comerciales más sensata que beneficie a los inventores y al público (en lugar de a los jefes y accionistas de la compañía) ayudaría mucho aquí. Sería obvio para el desarrollo hacer cachés L1 mucho más grandes y esto debería y podría haberse desarrollado hace décadas. Estaríamos mucho más adelante en computadoras y muchos campos científicos usándolos si lo hubiéramos hecho. La investigación excesivamente privatizada siempre conduce a tal estancamiento tecnológico o estrangulamiento (como hemos visto en los sectores aeroespacial y automotor por parte de los grandes fabricantes y pronto será farmacéutico). El código abierto y una regulación de patentes y secretos comerciales más sensata que beneficie a los inventores y al público (en lugar de a los jefes y accionistas de la compañía) ayudaría mucho aquí. Sería obvio para el desarrollo hacer cachés L1 mucho más grandes y esto debería y podría haberse desarrollado hace décadas. Estaríamos mucho más adelante en computadoras y muchos campos científicos usándolos si lo hubiéramos hecho. La investigación excesivamente privatizada siempre conduce a tal estancamiento tecnológico o estrangulamiento (como hemos visto en los sectores aeroespacial y automotor por parte de los grandes fabricantes y pronto será farmacéutico). El código abierto y una regulación de patentes y secretos comerciales más sensata que beneficie a los inventores y al público (en lugar de a los jefes y accionistas de la compañía) ayudaría mucho aquí. Sería obvio para el desarrollo hacer cachés L1 mucho más grandes y esto debería y podría haberse desarrollado hace décadas. Estaríamos mucho más adelante en computadoras y muchos campos científicos usándolos si lo hubiéramos hecho. Sería obvio para el desarrollo hacer cachés L1 mucho más grandes y esto debería y podría haberse desarrollado hace décadas. Estaríamos mucho más adelante en computadoras y muchos campos científicos usándolos si lo hubiéramos hecho. Sería obvio para el desarrollo hacer cachés L1 mucho más grandes y esto debería y podría haberse desarrollado hace décadas. Estaríamos mucho más adelante en computadoras y muchos campos científicos usándolos si lo hubiéramos hecho.