
La brecha entre la velocidad de los procesadores en el sentido general y la velocidad de la DRAM principal, también en un sentido general, ha sido un problema en los últimos 30 años; durante este período, la brecha comenzó a crecer realmente. Y vale la pena decir honestamente que los ingenieros que desarrollaron tanto el equipo como los programas que crearon la jerarquía de caché y el software que podría aprovecharla lo hicieron de manera brillante. Esta es una de las arquitecturas más difíciles jamás concebidas por el hombre.
Sin embargo, ahora que estamos al borde de una jerarquía de memoria en constante expansión, cuando comienza a aparecer memoria no volátil como Optane 3D XPoint (una variante de memoria con cambio de fase) en formatos DIMM y SSD, así como nuevos protocolos (CXL, OpenCAPI, CCIX, NVLink y Gen-Z), surge la pregunta: ¿es hora de agregar un caché de cuarto nivel a los servidores? Dado que el trabajo de tal cantidad de dispositivos depende del complejo de la CPU, algunos de los cuales están más cerca, mientras que otros están más lejos, es lógico pensar si necesitamos otro nivel de caché que enmascare los retrasos de estos otros tipos de memoria y aumente el rendimiento de todo el sistema.
Para presentar las oportunidades, hurgamos en nuestra propia memoria y, al mismo tiempo, hablamos con los desarrolladores de arquitectura de chips de IBM, Intel, AMD y Marvell para comprender lo que piensan sobre el uso de la caché L4 en los servidores. El caché L4, por supuesto, no es una palabra nueva en velocidad, pero no es tan común en las arquitecturas de sistemas.
Sin embargo, antes deberíamos repasar la historia del problema.
Agregar un caché de primer nivel a los procesadores que tenían solo un núcleo en ese momento fue un compromiso en la década de 1980 que agregó latencia a los subsistemas de memoria al tiempo que reducía la latencia promedio de las solicitudes de datos y las instrucciones de los procesadores. Las memorias caché L1 se ubicaron originalmente en la SRAM externa ubicada en las placas base y conectadas al complejo CPU-memoria. Tal caché L1 estaba muy cerca del procesador, tanto en términos de frecuencia de reloj como en términos de espacio físico en la placa, e hizo posible aumentar la carga de la CPU. Luego, estos cachés se dividieron para que los datos de uso frecuente pudieran almacenarse en un bloque y las instrucciones populares en el segundo, y esto aumentó ligeramente el rendimiento. En algún momento del aumento en la velocidad del reloj del procesador y la brecha correspondiente en la velocidad de la CPU y la DRAM, se agregaron cachés L2 más gordos, pero también más lentos (pero más baratos en términos de ancho de banda), nuevamente al principio estaban fuera del gabinete de la CPU, pero luego integrado en él. Y cuando se comenzaron a agregar más y más núcleos a la CPU, así como más y más controladores DRAM para cargarlos, se agregaron bloques de caché L3 aún más grandes a la jerarquía.
En su mayor parte, dicho sistema funcionó bastante bien. En algunos circuitos de CPU, incluso vemos ciertas reglas prácticas que reflejan los niveles de la jerarquía de caché, lo que nos permitirá estimar las posibilidades asociadas con el cuarto nivel.
Chris Gianos, un ingeniero de chips y arquitecto de Intel, que ha liderado el desarrollo de muchas generaciones pasadas de procesadores Xeon, explica esto: “Con cada nivel de caché, generalmente necesitamos que crezcan lo suficientemente fuertes desde el nivel anterior, para que todo tenga sentido, porque Para lograr un aumento notable en el rendimiento del sistema, debe lograr una frecuencia bastante interesante de llamadas exitosas. Si "cae" en los datos en caché en solo un pequeño porcentaje de los casos, será difícil notarlo. Todo lo demás ralentiza tu velocidad, y este aumento será imperceptible. Por lo tanto, se requieren cachés relativamente grandes, y cuando se trata de niveles más altos, se necesitan cachés realmente enormes. Hoy, L2 se mide en megabytes, L3 se mide en decenas o cientos de megabytes. Por lo tanto, está claro que si comienzas a pensar en el caché L4, hablaremos de cientos de megabytes, si no gigabytes. Y tal tamaño definitivamente conducirá a su alto costo. Es necesario que existan ciertas condiciones, para que esta opción se vuelva interesante, y ciertamente no será barata ".
Los ingenieros de AMD que entrevistamos deseaban permanecer en el anonimato porque no querían dar la impresión de que la compañía iba a agregar el caché L4 a la línea de procesadores Epyc, y, para ser precisos, AMD no prometió nada de eso. Sin embargo, la compañía reconoce que este es el próximo paso obvio a considerar y, al igual que Intel, cree que todos los ingenieros están pensando en implementar el caché L4. En esencia, AMD dice que las compensaciones asociadas con los niveles de caché y las latencias se han estudiado ampliamente tanto en la industria como en la academia, y que con cada nuevo nivel que es más grande y más lento que el anterior, existe una compensación al aumentar el camino general hacia DRAM. Esto también lo indica Intel Gianos, que habla sobre la necesidad de encontrar un equilibrio entre las solicitudes exitosas de caché y su volumen.
IBM, por supuesto, agregó caché L4 a algunos de sus conjuntos de chips X86 en la década de 2000, y en la década de 2010 agregó L4 a los conjuntos de chips NUMA (
acceso de memoria desigual ) en los mainframes System z11. El procesador z11 tiene cuatro núcleos, 64 KB de caché L1 para instrucciones y 128 KB de caché L1 para datos, más 1.5 MB de caché L2 para cada núcleo y 24 MB de caché L3 compartida para todos los núcleos. El chipset NUMA para z10 tenía dos bancos de 96 MB de caché L4, es decir, 192 MB en total. Al lanzar z12, IBM redujo el tamaño del caché L1 a 98 KB por núcleo, pero aumentó el caché L2 a 2 MB por núcleo, dividiéndolo en dos partes, para instrucciones y datos, como en el caso de L1. También duplicó el tamaño del caché L3 a 48 MB para seis núcleos, y el tamaño del caché L4 se incrementó a 384 MB para un par de chips en el conjunto de chips. A medida que cambian las generaciones de procesadores System z, los tamaños de caché crecieron, y para los procesadores z15 anunciados en septiembre, un par de cachés L1 pesarán 128 KB cada uno, un par de cachés L2 pesarán 4 MB cada uno, y un caché L3 compartido para 256 núcleos tendrá una capacidad de 256 MB. El caché L4 en cada bahía de mainframe es de 960 MB, y su tamaño total para todo el sistema, que consta de cinco bahías, es de 4.68 GB.
Como
señalamos anteriormente , los procesadores Power8 y Power9 tienen memoria intermedia, e IBM agregó 16 MB de caché L4 a cada búfer Centaur, que es 128 MB de caché L4 por socket para 32 ranuras de memoria. Las máquinas Power9 más baratas no tienen un búfer de memoria y, por lo tanto, no tienen caché L4. Los arquitectos que desarrollaron el circuito Power10 estaban ocupados desarrollando el circuito para Power11 y, por lo tanto, no pudieron responder nuestras preguntas, pero William Stark, quien dirigió el desarrollo de Power10, encontró un poco de tiempo para nosotros y notó lo siguiente:
"En general, llegamos a la conclusión de que los cachés de gran nivel del último nivel son útiles para aumentar la velocidad de los sistemas industriales", nos explicó Stark por correo electrónico. "La alta latencia asociada con la memoria no volátil, en particular con la memoria de estado de fase, genera una solicitud de caché, posiblemente un caché de tipo L4, en la jerarquía de almacenamiento".
Eso es exactamente lo que pensamos. Y, por cierto, no afirmamos que la memoria caché L4 esté necesariamente cerca de la memoria almacenada en el futuro DDR5 DIMM. Quizás sea mejor colocarlo entre el caché del procesador PCI-Express y el L3, y aún mejor, en los búferes de memoria y entre el caché del procesador PCI-Express y el L3. Quizás tenga que colocarse encima del controlador de E / S y la memoria en la futura arquitectura del servidor, que es un poco como
la tecnología Foveros de Intel .
Es posible ver esto desde un punto de vista diferente; por ejemplo, IBM tuvo la oportunidad de cambiar el tamaño del cristal, y los ingenieros decidieron agregar el caché L4 al bus System z NUMA o al chip de memoria intermedia Power8 y Power9, no por su propio bien, sino simplemente porque aún tenían la oportunidad de agregar transistores después de implementar todas las funciones necesarias. A veces nos parece que la cantidad de núcleos en los procesadores Intel X86 depende del tamaño de la memoria caché L3 que pueden pagar. A veces parece que Intel asigna el tamaño máximo de la caché L3 a un cristal, y después de eso, los cristales Xeon de tres tamaños diferentes simplemente se fabrican de acuerdo con estas especificaciones: en las últimas generaciones tienen 10, 18 o 28 núcleos en un proceso de fabricación de 14 nm.
Todos estos, por supuesto, son cuestiones puramente académicas, pero nos dan la motivación potencial para que IBM y otros fabricantes de conjuntos de chips agreguen el caché L4. Esto no solo puede ayudar en algunos casos, sino que es algo bastante obvio. Creemos que en un monstruo de E / S como el mainframe System z, el caché L4 está en su lugar sin dudas y beneficia a todos los clientes, lo que aumenta el rendimiento de estas máquinas y les permite trabajar con una carga del procesador del 98-99%, ya que cuántos núcleos , y la escala de NUMA en mainframes ha crecido mucho últimamente.
No hay ninguna razón para hacer el caché L4 exclusivamente en la DRAM incorporada (como lo hace IBM con sus chips) o en base a una SRAM mucho más costosa; esto es lo que nos recuerda Rabin Sugumar, arquitecto de chips de Cray Research, Sun Microsystems, Oracle, Broadcom. , Cavium y Marvell:
"Nuestros cachés L3 ya son lo suficientemente grandes", dice Sugumar. - Por lo tanto, L4 en el caso de que esté interesado debe hacerse utilizando una tecnología diferente. Quizás eDRAM o incluso HBM o DRAM. En este contexto, una implementación de caché L4 basada en HBM parece una opción interesante, y este caché no resuelve tanto el problema de latencia como el ancho de banda. Dado que la capacidad de HBM es limitada y el ancho de banda es alto, podemos obtener un cierto aumento en la velocidad, y en algunos casos especiales realmente vemos un aumento significativo en el ancho de banda ". Sugumar agrega que para un número bastante grande de aplicaciones, se observa un número relativamente grande de errores de caché. Sin embargo, debe calcular si valdrá la pena agregar el siguiente nivel de caché.
Otro posible caso de uso para algo como el caché L4, dice Sugumar, es usar DRAM local como caché. “No realizamos ningún estudio de este tipo en el laboratorio, pero supongamos que tenemos una interfaz de gran ancho de banda en el chip, conectada a una memoria compartida en algún lugar del otro extremo del bucle, a una distancia de 500 ns a 1 μs. Entonces, uno de los casos de uso será crear un caché que mueva estos datos de la memoria compartida a la DRAM local. Puede imaginar el trabajo de la máquina de estado administrando esta memoria, por lo que la mayoría de las veces las llamadas irán a la DRAM local, y puede minimizar el número de llamadas a la DRAM distribuida general ".
Esta opción nos parece un tipo de NUMA muy interesante. Por cierto, Sugumar estaba trabajando en memoria distribuida para sistemas paralelos de alta velocidad en Sun Microsystems incluso antes de que apareciera la memoria no volátil. Y uno de los problemas con estas diferentes variantes de la jerarquía de memoria fue que si una de ellas se pierde debido a una falla de la red o del bus, entonces toda la máquina se bloqueará. "En los sistemas de memoria distribuida, las fallas de la red deben manejarse de manera más elegante, y esto causa muchos desafíos de diseño".
Otro punto es que queremos que cualquier caché de alto nivel, ni siquiera L4, se realice al máximo con la ayuda del hierro y con el mínimo con la ayuda del software. Los núcleos del sistema operativo y otro software siempre necesitan algo de tiempo para ponerse al día con el hardware, ya sea agregando nuevos núcleos, o cachés L3 o L4, o memoria direccionable no volátil.
"En algún momento, un nivel de caché adicional será inevitable", dice Gianos. - Obtuvimos el primer nivel de caché, y en algún momento apareció el segundo. Y luego finalmente agregamos un tercero. Y algún día tendremos un cuarto. La única pregunta es cuándo y por qué. Y me parece que sus observaciones con respecto a las capacidades de este caché son bastante interesantes. Pero Intel aún no ha decidido cuándo o por qué tales cosas se harán públicas. Otras compañías también están estudiando este tema; Sería tonto no examinarlo. Tarde o temprano esto sucederá, pero pronto sucederá, o no muy, aún no está claro ”.