¿El tiempo de acceso a la memoria caché se reduce con la frecuencia en las CPU modernas?

Tengo una aplicación en la que sospecho que la sobrecarga principal es acceder a la memoria caché L3. Se ejecuta en un moderno microprocesador Intel de nivel de servidor con una gran caché L3. Hay muchos microprocesadores disponibles con varios recuentos de núcleos y frecuencias, y seleccionar entre ellos es difícil.

Entonces, eso me llevó a preguntarme si el tiempo de acceso (acierto) del caché L3 se reduce con la frecuencia. Entonces, si la CPU de 2 GHz accede a la memoria caché L3 en, por ejemplo, 12 ns, ¿significa eso que una CPU de 3 GHz accede a la memoria caché L3 en 8 ns? Por supuesto, esto puede depender de los detalles de implementación interna de la CPU, así que limitemos las respuestas a los microprocesadores i386/AMD64 modernos.

Sé que, al menos en el caso de DRAM, los retrasos son prácticamente constantes, por lo que si realiza un acceso aleatorio a DRAM, una frecuencia más alta significa solo una mejor velocidad de datos secuenciales después de que se haya pagado la penalización por acceso aleatorio. Pero, ¿SRAM es fundamentalmente diferente? Se basa en transistores, así que supongo que podría sincronizarse a frecuencias bastante buenas.

Disculpe si este es el lugar equivocado para preguntar, no hay mejor lugar para hacer preguntas detalladas sobre la arquitectura de la computadora. He considerado CS StackExchange y StackOverflow, pero creo que Electrical Engineering StackExchange fue el mejor lugar. Realmente debería haber un StackExchange de arquitectura informática, ¡pero no lo hay!

uno esperaría que escalara linealmente, pero no lo asumiría. por 2 GHz, por ejemplo, es posible que haya maximizado ese bus L3 y cuanto más rápido vaya el núcleo, L3 no puede aumentar. Como ejemplo. Multiplique esto por cada bus en cada capa entre las partes internas del núcleo y el dram más lejano y lento. Y eso es solo para empezar, luego están los detalles sangrientos...
sram se puede ejecutar más rápido que dram seguro y, a veces, se puede escalar con la cpu (archivos de registro en la cpu, por ejemplo, posiblemente caché L1). Pero por varias razones, particularmente la física, no va a ser lineal de adentro hacia afuera hasta el final.

Respuestas (2)

Fue en los viejos tiempos (mediados de los 90') cuando cada bloque de CPU escalaba con frecuencia. Con los procesadores modernos ya no es cierto. El núcleo de la CPU y las cachés tienen diferentes topologías de diseño, y las memorias generalmente no escalan mucho. La alineación de tiempo entre el reloj del núcleo de la CPU y los cachés generalmente se realiza reconfigurando el acceso de la canalización al caché, por lo que es muy probable que el tiempo de acceso de la línea de caché no se escale en absoluto con la frecuencia del núcleo. Recuerdo que me encontré con problemas similares mientras trabajaba en los procesadores K6, cuando para cada multiplicador de reloj se debe reconfigurar el acceso a la memoria caché.

Con las CPU modernas y la frecuencia central adaptativa, las cosas son mucho, mucho más complicadas. Las CPU están diseñadas por miles de ingenieros de diseño y diseñadas por cientos de arquitectos, por lo que para entrar en detalles necesita acceso de alta autorización a documentación de alto secreto, e incluso entonces será difícil encontrar la respuesta exacta.

Hay 3 dominios de reloj diferentes principales. Memoria, uncore (L3) y core. Todos estos oscilan a diferentes frecuencias y todos están controlados individualmente por algoritmos complejos. En un nivel amplio, sus relojes centrales pueden escalar desde sub-GHz hasta 2 a 5 GHz dependiendo de su CPU. Uncore oscila desde el mismo extremo inferior hasta aproximadamente la mitad de la frecuencia central. Si no está accediendo mucho desde L3/IIO/Memory, los algoritmos probablemente mantendrán bajo el reloj sin núcleo y evitarán que vea los tiempos de acceso L3 más rápidos absolutos a menos que tenga un conjunto específico de factores estresantes. Puede haber perillas visibles para el cliente para ajustar estos elementos también, pero no estoy seguro.

Más que nada, sospecho que las CPU con menor número de núcleos pueden alcanzar velocidades de reloj sin núcleo más altas (disminuyendo así el tiempo de acceso a la memoria caché L3). Sin embargo, para ser claros, las frecuencias del reloj central no tienen una correlación directa con el reloj no central, por lo que aumentar la frecuencia del reloj central por sí solo no aumentará la velocidad de caché L3.