El diseño de sistemas en chip (SoC) modernos, especialmente aquellos que integran CPUs y GPUs de alto rendimiento, enfrenta un desafío fundamental en la gestión eficiente del subsistema de memoria. La tesis central de este análisis es que la arquitectura de memoria de Nvidia GB10, con sus clústeres de CPU heterogéneos y una System Level Cache (SLC) compartida, representa una serie de compensaciones de diseño para equilibrar la densidad de núcleos, el rendimiento de la CPU y la capacidad de servicio de la GPU. La necesidad de optimizar la latencia y el ancho de banda para cargas de trabajo diversas, desde tareas de CPU sensibles a la latencia hasta el consumo masivo de ancho de banda por parte de la GPU, impulsa decisiones arquitectónicas complejas que impactan directamente en la experiencia del usuario y la eficiencia energética. Este enfoque es crucial en la era de la computación heterogénea, donde la integración de diferentes tipos de unidades de procesamiento en un solo die es la norma, y la interconexión de memoria se convierte en el cuello de botella crítico.
Históricamente, la brecha entre la velocidad de la CPU y la memoria ha sido un problema persistente, conocido como el "Memory Wall". Los diseñadores de chips han respondido con jerarquías de caché multinivel y algoritmos de prefetching para mitigar este problema. Sin embargo, la introducción de GPUs integradas de gran tamaño añade una nueva dimensión de complejidad, ya que las GPUs suelen ser mucho más intensivas en ancho de banda que las CPUs. La arquitectura GB10 intenta abordar este desafío mediante una combinación de cachés L1/L2/L3 específicas de la CPU, una SLC que actúa como L4 y puente entre CPU y GPU, y un bus LPDDR5X de alto ancho de banda. La configuración asimétrica de los clústeres de CPU y las diferentes latencias y anchos de banda observados entre los núcleos A725 y X925, así como entre los clústeres, son el resultado directo de estas compensaciones para lograr un equilibrio entre rendimiento, área de die y consumo de energía en un SoC de propósito general.
La relevancia actual de este tipo de análisis radica en la creciente demanda de sistemas integrados de alto rendimiento para dispositivos móviles, edge computing y estaciones de trabajo compactas. La capacidad de un SoC para manejar eficientemente cargas de trabajo mixtas de CPU y GPU, sin que una estrangule a la otra, es un diferenciador clave. Entender las decisiones de diseño detrás de la jerarquía de memoria de GB10 proporciona información valiosa sobre cómo los arquitectos de sistemas abordan los desafíos de rendimiento y eficiencia en el contexto de la computación heterogénea a escala de hyperscaler, donde cada nanosegundo de latencia y cada byte de ancho de banda cuentan.
Arquitectura del Sistema
El SoC Nvidia GB10 integra una GPU Blackwell con 48 SMs y un subsistema de CPU compuesto por 20 núcleos Arm: 10 Cortex X925 y 10 Cortex A725. Estos núcleos están organizados en dos clústeres. El Clúster 0 y el Clúster 1 tienen cada uno cinco núcleos A725 y cinco núcleos X925. Los núcleos A725 operan a 2.8 GHz, mientras que los X925 alcanzan hasta 3.9 GHz en el Clúster 0 y 4 GHz en el Clúster 1. Esta configuración heterogénea de núcleos es una decisión de diseño para optimizar tanto la densidad como el rendimiento.
La jerarquía de caché comienza con cachés L1 de instrucción y datos de 64 KB para ambos tipos de núcleos. Los núcleos A725 tienen cachés L2 de 512 KB, mientras que los X925 disponen de 2 MB de L2, ambas 8-way set associative. La latencia de L2 para A725 es de 9 ciclos (3.2 ns) y para X925 es de 12 ciclos. Después de L2, ambos clústeres comparten una caché L3. El Clúster 0 tiene 8 MB de L3, y el Clúster 1 tiene 16 MB de L3. La latencia de L3 es notablemente diferente: >60 ciclos (>21 ns) para A725 y ~56 ciclos (~14 ns) para X925, a pesar de compartir la misma L3. Esta disparidad sugiere optimizaciones en el camino de datos o en la lógica de control de la caché para los núcleos X925.
Por encima de la L3, existe una System Level Cache (SLC) de 16 MB, que funciona como una caché L4 y facilita el intercambio de datos entre la CPU y la GPU sin necesidad de ir a la DRAM. La latencia de la SLC es de aproximadamente 42-47 ns. La DRAM utilizada es LPDDR5X, con una latencia de 113 ns, lo cual es excelente para este tipo de memoria. El bus de memoria puede operar hasta 9400 MT/s. La coherencia de caché dentro de cada clúster se gestiona mediante la Arm DynamIQ Shared Unit 120 (DSU-120), que incluye una Snoop Control Unit con filtros de snoop. La coherencia entre clústeres y con la GPU se mantiene a través de la High Performance Coherent Fabric de Nvidia/Mediatek. La DSU-120 puede configurarse con hasta cuatro interfaces CHI de 256 bits, lo que podría explicar las diferencias de ancho de banda externo entre los clústeres.
Flujo de Acceso a Memoria desde CPU (X925)
- 1 X925 Core Solicitud de datos (64B/cycle L1D)
- 2 L1 Cache 64 KB, 64B/cycle. Hit: 1 ciclo. Miss: va a L2.
- 3 L2 Cache 2 MB, 8-way. Hit: 12 ciclos. Miss: va a L3.
- 4 L3 Cache (Cluster 1) 16 MB. Hit: ~56 ciclos (~14 ns). Miss: va a SLC.
- 5 System Level Cache (SLC) 16 MB. Hit: ~42 ns. Miss: va a DRAM.
- 6 LPDDR5X DRAM 113 ns latencia. Ancho de banda hasta 9400 MT/s.
Flujo de Coherencia de Caché Intra-Clúster
- 1 CPU Core (A725/X925) Modifica línea de caché, la marca como Modified.
- 2 DSU-120 (Snoop Control Unit) Detecta modificación, consulta filtros de snoop.
- 3 Peer Caches (mismo clúster) Determina si otra caché tiene una copia válida.
- 4 Transferencia Cache-a-Cache Actualiza o invalida copias en otras cachés del clúster.
- 5 L3 Cache Asegura la coherencia de la línea en L3.
| Capa | Tecnología | Justificación |
|---|---|---|
| compute | Arm Cortex X925 | Núcleos de alto rendimiento para cargas de trabajo sensibles a la latencia y con mayores demandas de ancho de banda. vs Arm Cortex X-series (generaciones anteriores), Diseños de núcleos personalizados 5 núcleos por clúster, L2 de 2 MB, L3 optimizada para menor latencia. |
| compute | Arm Cortex A725 | Núcleos de eficiencia y densidad, optimizados para cargas de trabajo que requieren más hilos pero menos rendimiento por núcleo. vs Arm Cortex A-series (generaciones anteriores) 5 núcleos por clúster, L2 de 512 KB, L3 con mayor latencia. |
| storage | LPDDR5X DRAM | Memoria principal del sistema, seleccionada por su alta densidad, ancho de banda y eficiencia energética, crucial para SoCs integrados. vs DDR5, HBM Latencia de 113 ns (excelente para LPDDR5X), bus de hasta 9400 MT/s. |
| storage | System Level Cache (SLC) | Caché L4 compartida que facilita el intercambio de datos eficiente entre CPU y GPU, reduciendo la contención en DRAM y mejorando la eficiencia energética. vs Mayor L3, Interconexión directa CPU-GPU sin caché intermedia 16 MB de capacidad, latencia de ~42-47 ns. |
| networking | Arm DynamIQ Shared Unit 120 (DSU-120) | Unidad de control de clúster de CPU que gestiona la coherencia de caché intra-clúster y proporciona interfaces CHI para la comunicación externa. vs Diseños de interconexión de clúster personalizados Configurable con hasta cuatro interfaces CHI de 256 bits. |
| networking | Nvidia/Mediatek High Performance Coherent Fabric | Interconexión de alta velocidad y baja latencia responsable de mantener la coherencia de caché entre los clústeres de CPU y con la GPU. vs Interconexiones estándar de la industria (ej. CCIX) |
Trade-offs
Ganancias
- ▲ Latencia DRAM
- ▲ Ancho de banda externo (Cluster 1)
- ▲ Densidad de núcleos de CPU
- ▲ Eficiencia de intercambio de datos CPU-GPU (SLC)
Costes
- ▲ Latencia L3 (A725)
- ▲ Latencia core-to-core
- ▲ Ancho de banda L3 (comparado con AMD)
- ▲ Contención de memoria bajo carga CPU/GPU
- △ Complejidad del scheduler del SO (clústeres heterogéneos)
Fundamentos Teóricos
El diseño de jerarquías de memoria multinivel y la gestión de la coherencia de caché son problemas fundamentales en la arquitectura de computadoras, explorados extensamente en la literatura académica. El concepto del "Memory Wall", popularizado por Wulf y McKee en su trabajo de 1995, subraya la creciente disparidad entre la velocidad de la CPU y la memoria, lo que impulsa la necesidad de cachés más grandes y complejas. La arquitectura de GB10, con sus múltiples niveles de caché (L1, L2, L3, SLC) y la optimización de latencias y anchos de banda, es una aplicación directa de los principios para mitigar este muro.
La gestión de la coherencia de caché en sistemas multiprocesador, como los clústeres de CPU de GB10, se basa en protocolos como el MSI (Modified, Shared, Invalid) o sus variantes (MESI, MOESI). La Snoop Control Unit dentro de la DSU-120 de Arm, que utiliza filtros de snoop, es una implementación de estos protocolos de coherencia basados en snooping. Estos protocolos fueron formalizados en trabajos seminales como el de Goodman (1983) sobre protocolos de coherencia de caché para multiprocesadores con bus. La High Performance Coherent Fabric de Nvidia/Mediatek extiende estos principios para mantener la coherencia a través de clústeres y entre CPU y GPU, un desafío que se vuelve más complejo en arquitecturas de SoC heterogéneas.
La decisión de tener clústeres de CPU heterogéneos (A725 y X925) y asimétricos en capacidad de L3 y ancho de banda externo, refleja principios de diseño de arquitecturas especializadas y de computación heterogénea. Esto se alinea con la investigación en la optimización de rendimiento y eficiencia energética mediante la asignación de tareas a núcleos con características de rendimiento y consumo adecuadas, un concepto explorado en trabajos sobre arquitecturas big.LITTLE de Arm y otros diseños de procesadores heterogéneos. La SLC, actuando como una caché L4 y un punto de intercambio de datos entre CPU y GPU, es una evolución del concepto de cachés compartidas en sistemas heterogéneos, buscando reducir los viajes a la DRAM y mejorar la eficiencia de la comunicación entre diferentes unidades de procesamiento.