¿Qué determina el tamaño máximo de un caché de CPU?

Mirando una lista de las últimas CPU, veo varias de ellas con un tamaño de caché de 12 MB u 8 MB, bastante pequeño, en comparación con el tamaño cada vez mayor de los discos duros y la RAM. Parece que se da por hecho que la memoria caché de la CPU siempre será pequeña, pero ¿por qué? ¿Es solo económicamente inviable o hay razones de ingeniería por las que tiene que permanecer pequeño?

Estoy pensando en algunas criptomonedas (por ejemplo, ethereum), que están diseñadas para ser de memoria dura, por lo que la velocidad del algoritmo está limitada por el ancho de banda de E/S de la memoria, con la idea de que esto hace que sea imposible diseñar un chip personalizado. específicamente para resolver ese algoritmo como se hizo para bitcoin. Pero, si alguien estuviera haciendo un chip personalizado de todos modos, ¿no podrían simplemente meter un gigabyte en el caché y acabar con el cuello de botella de IO?

¡El departamento de marketing!
Una memoria más rápida (es decir, caché de CPU) cuesta más.
Apuesto a que tienen un tamaño de caché de 12 MB u 8 MB. Los milibits son demasiado pequeños para ser útiles a menos que tengas miles de millones de ellos.

Respuestas (3)

Es una compensación entre la mayor tasa de aciertos de un caché grande y la velocidad más rápida de la RAM de caché más pequeña. La tasa de aciertos sigue una ley de rendimientos decrecientes a medida que aumenta el caché.

Duplicar el tamaño de un caché grande puede aumentar solo menos de un par de por ciento en la tasa de aciertos, pero ciertamente aumentará su tiempo de acceso, lo que ralentiza el rendimiento de la CPU.

El problema es el tamaño de la estructura frente a la velocidad de propagación de la señal.

Si construye un caché más grande, ocupa más espacio físicamente, lo que significa que la longitud que las señales tienen que viajar aumenta, lo que reduce la frecuencia máxima de reloj a la que se puede ejecutar el caché. La memoria caché L1 debe ejecutarse sincrónicamente con la CPU para ser útil, por lo que el tamaño de la memoria caché es un factor limitante en la velocidad del reloj.

Otras capas de caché pueden ser más grandes y funcionar con relojes más lentos, pero esto requiere que la CPU espere hasta que la caché responda.

El enfoque de GPU es tener muchos subprocesos por núcleo (es decir, un factor SMT de 16 o más, en comparación con 2 en CPU Intel o 4 en POWER). Esto significa que cada subproceso individual solo se ejecutará a una fracción de la velocidad del reloj, pero los resultados de un acceso a la memoria no son necesarios hasta que todos los demás subprocesos hayan comenzado su acceso a la memoria, momento en el cual el resultado del primer acceso debería estar listo.

Es por eso que la minería GPU es interesante para estas monedas.

La memoria del tamaño de un gigabyte (DRAM) no usa el mismo proceso de fabricación que las CPU (lógica), por lo que no puede tener ambas dentro del mismo chip, a menos que esté dispuesto a hacer concesiones que harían que todo fuera ineficiente.

La memoria caché usa RAM estática, que es más similar a la lógica, pero que ocupa más espacio de silicio que DRAM, por lo que prácticamente no puede tener tanto. Además, las grandes memorias caché utilizan celdas direccionables por contenido, lo que es aún más complicado de hacer. En resumen, hacer un caché del tamaño de un gigabyte no es factible económicamente.

Pero de todos modos, incluso si pudieras hacerlo, no resolvería tu problema. Tal vez ganaría algunos ciclos de latencia, pero aún necesitaría tener un bus entre el procesador y la memoria, incluso dentro del chip. Entonces ese sería su cuello de botella de la misma manera que lo es en una computadora normal.