El problema fundamental que aborda la Infinity Cache de AMD es la brecha creciente entre la capacidad de cómputo de las GPUs integradas (iGPUs) y el ancho de banda de memoria disponible en plataformas móviles. A medida que las iGPUs aumentan su potencia, sus requisitos de ancho de banda de memoria se disparan, superando lo que los buses de memoria LPDDR convencionales pueden ofrecer de manera eficiente y con bajo consumo. Históricamente, este desafío ha llevado a soluciones como eDRAM o buses de memoria más amplios, pero estas tienen sus propias limitaciones de costo, complejidad y consumo.

La Infinity Cache, una caché de último nivel (Memory Attached Last Level - MALL) implementada en el Infinity Fabric, actúa como un búfer de alta velocidad para reducir la presión sobre el subsistema DRAM principal. Su objetivo es mantener las latencias bajas y el throughput alto, permitiendo que las iGPUs de alto rendimiento operen dentro de las restricciones de potencia y espacio de los dispositivos móviles, sin requerir un bus de memoria DRAM excesivamente amplio o costoso. Este enfoque es crucial para la viabilidad de iGPUs potentes en el segmento móvil, donde el equilibrio entre rendimiento, eficiencia energética y costo es crítico.

Arquitectura del Sistema

La Infinity Cache en Strix Halo se integra en el Infinity Fabric de AMD, una interconexión chip-wide que gestiona el tráfico de datos entre los diversos bloques (CPU, GPU, NPU, controladores de memoria). Específicamente, la caché reside en los Coherent Stations (CS), que son bloques situados antes de los Unified Memory Controllers (UMC). Los CS son responsables de mantener la coherencia de caché y de enrutar las solicitudes de memoria. Cuando una solicitud de memoria llega a un CS, este primero verifica si el dato está presente en la Infinity Cache. Un acierto de caché permite que el CS satisfaga la solicitud directamente, evitando el acceso al UMC y, por ende, a la DRAM externa.

Strix Halo utiliza 16 instancias de CS y UMC, cada una conectada a un canal LPDDR5X de 16 bits. La GPU tiene una interfaz ancha al Infinity Fabric, ocupando ocho IDs de instancia. La Infinity Cache está diseñada para ser llenada principalmente por solicitudes de memoria de la GPU, lo que la convierte en una caché optimizada para cargas de trabajo gráficas. La monitorización del rendimiento se realiza comparando el tráfico de datos (DATA_BW) en los CS y los UMC. El tráfico observado en los CS que no llega a los UMC se utiliza como proxy para los aciertos de la Infinity Cache. Este método permite inferir la eficacia de la caché en términos de reducción de la demanda de ancho de banda DRAM, a pesar de la falta de contadores directos de hit rate para la Infinity Cache.

Flujo de Solicitud de Memoria con Infinity Cache

  1. 1 GPU/CPU Genera una solicitud de lectura/escritura de memoria.
  2. 2 Infinity Fabric Enruta la solicitud al Coherent Station (CS) apropiado.
  3. 3 Coherent Station (CS) Verifica si el dato está en la Infinity Cache.
  4. 4 Infinity Cache Hit Si hay un acierto, el CS satisface la solicitud directamente.
  5. 5 Infinity Cache Miss Si hay un fallo, el CS reenvía la solicitud al Unified Memory Controller (UMC).
  6. 6 Unified Memory Controller (UMC) Accede a la DRAM LPDDR5X externa.
  7. 7 DRAM LPDDR5X Devuelve el dato al UMC.
  8. 8 UMC -> CS -> Solicitante El dato es devuelto al componente que lo solicitó y se llena la Infinity Cach...
CapaTecnologíaJustificación
compute AMD Zen 5 Cores Proporciona la capacidad de procesamiento general del sistema, interactuando con la jerarquía de memoria. 16 núcleos
compute AMD RDNA 3.5 Workgroup Processors (WGPs) Unidad de procesamiento gráfico principal, con altas demandas de ancho de banda de memoria. 20 WGPs
cache Infinity Cache (MALL) Caché de último nivel de 32 MB para reducir la demanda de ancho de banda DRAM, especialmente para la GPU. vs eDRAM (Intel), Buses de memoria GDDR6 más anchos 32 MB, optimizada para GPU
storage LPDDR5X-8000 Memoria principal de baja potencia y alto ancho de banda para dispositivos móviles. vs GDDR6 256-bit bus, 256 GB/s teórico
networking AMD Infinity Fabric Interconexión chip-wide para la comunicación entre CPU, GPU, NPU y controladores de memoria.
observability Infinity Fabric Performance Counters Herramienta de bajo nivel para monitorizar el tráfico de datos (DATA_BW) en diferentes puntos de la interconexión. 8 contadores programables, muestreo a 1 segundo

Trade-offs

Ganancias
  • Ancho de banda DRAM efectivo
  • Eficiencia energética
  • Costo del subsistema de memoria
Costes
  • Complejidad del diseño del chip
  • Área de die (para la caché)
  • Visibilidad de rendimiento (falta de contadores directos de hit rate)

Fundamentos Teóricos

El concepto de una caché de último nivel (Last Level Cache - LLC) o caché de lado de memoria (Memory Side Cache) para mitigar los cuellos de botella de ancho de banda DRAM ha sido un tema recurrente en la arquitectura de computadoras. Este problema se remonta a la 'pared de la memoria' (memory wall), un término popularizado por Wulf y McKee en su paper de 1995, "Hitting the Memory Wall: Implications for the Design of Future High-Performance Processors". Este trabajo destacó la creciente disparidad entre la velocidad de los procesadores y la latencia/ancho de banda de la memoria principal.

La Infinity Cache de AMD puede verse como una implementación moderna de una caché de víctima o una caché de nivel 4 (L4), similar a las eDRAM utilizadas por Intel en algunas de sus iGPUs (ej., Iris Pro con Crystalwell). Estos diseños buscan explotar la localidad temporal y espacial de los datos para reducir la frecuencia de accesos a la DRAM más lenta y de mayor consumo. La eficacia de estas cachés se rige por principios de jerarquía de memoria bien establecidos, donde una caché más rápida y pequeña sirve como búfer para una memoria más lenta y grande, un concepto fundamental explorado en trabajos seminales como el de Maurice Wilkes sobre la memoria caché en la década de 1960.