La evolución de la arquitectura Arm, tradicionalmente enfocada en eficiencia energética, hacia el segmento de alto rendimiento de desktop y laptop presenta un desafío fundamental en la microarquitectura de CPUs. Este artículo examina cómo el Cortex X925 de Arm aborda este problema, logrando paridad de rendimiento con los líderes x86-64 (AMD Zen 5, Intel Lion Cove) en cargas de trabajo de un solo hilo. La tesis central es que Arm ha logrado este hito mediante una ejecución out-of-order "gargantuesca", una predicción de ramas de última generación y una cuidadosa gestión de la latencia y el ancho de banda en la jerarquía de memoria, priorizando el rendimiento por ciclo sobre la frecuencia bruta.
Este cambio estratégico es significativo porque expande el ecosistema Arm a dominios donde el rendimiento de un solo hilo es crítico, como aplicaciones de productividad y gaming. Históricamente, la competencia en este segmento ha impulsado innovaciones en el diseño de CPUs, y la entrada de Arm con un core de este calibre intensifica esa dinámica, beneficiando a los consumidores con más opciones y potencialmente mejores precios. El X925 representa la culminación de años de desarrollo, partiendo de diseños más modestos como el Cortex A57, y demuestra la madurez de la arquitectura Arm para escalar a demandas de rendimiento extremas.
Arquitectura del Sistema
El Cortex X925 es un core de 10-wide con una arquitectura out-of-order profunda. Su frontend puede decodificar hasta 10 instrucciones por ciclo, aunque esta tasa puede verse afectada por el tamaño de página (4 KB vs. 2 MB). A diferencia de generaciones anteriores, el X925 omite el MOP cache, confiando en predecode y otras optimizaciones para manejar el costo de decodificación. La etapa de rename y allocate realiza optimizaciones como move elimination y manejo especial de zeroing idioms, aunque no a ancho completo.
El motor de ejecución out-of-order es central para su rendimiento, con una capacidad de reordenamiento que se estima en alrededor de 525 instrucciones en vuelo, superando a Zen 5 (448) y acercándose a Lion Cove (576). Los register files, memory ordering queues y otros recursos tienen una capacidad comparable a sus pares x86-64, aunque con una debilidad en la ejecución vectorial de 128-bit frente a los registros vectoriales más anchos de AMD e Intel. La unidad de enteros (ALU) distribuye ocho puertos ALU y tres unidades de rama a través de cuatro schedulers, cada uno con 28 entradas, optimizando la simetría para operaciones comunes. La FPU cuenta con seis pipes y tres schedulers con aproximadamente 53 entradas cada uno, lo que proporciona una alta capacidad para cargas de trabajo vectorizadas.
La unidad de load/store incluye cuatro Address Generation Units (AGUs), dos de las cuales pueden manejar stores. La jerarquía de memoria incluye un L1 DTLB de 96 entradas (fully associative) y un L2 TLB unificado de 2048 entradas (8-way), con latencias de 6 ciclos. El L1 data cache es de 64 KB con 4 ciclos de latencia y utiliza una política de reemplazo RRIP (Re-Reference Interval Prediction), mejorando sobre el pseudo-LRU. El L2 cache, configurable en 2 MB u 3 MB, tiene 12 ciclos de latencia y es estrictamente inclusivo del L1, actuando como snoop filter. La interconexión con el resto del sistema se realiza a través del DSU-120, que aloja un L3 cache de hasta 32 MB y soporta direcciones físicas de 40 bits.
| Capa | Tecnología | Justificación |
|---|---|---|
| compute | Arm Cortex X925 | Core de CPU de alto rendimiento para cargas de trabajo de un solo hilo en desktop y laptop. vs AMD Zen 5, Intel Lion Cove 10-wide microarquitectura, 64 KB L1D, 2-3 MB L2, DSU-120 con hasta 32 MB L3. |
| compute | DSU-120 | Interconexión a nivel de cluster y host para el L3 cache, gestionando la comunicación entre cores y el resto del sistema. Soporte para direcciones físicas de 40 bits, hasta 32 MB de L3 cache. |
Trade-offs
Ganancias
- ▲ Rendimiento por ciclo (IPC)
- ▲ Capacidad de ejecución out-of-order
- ▲ Precisión de predicción de ramas
Costes
- ▲ Frecuencia de reloj (vs. x86-64)
- ▲ Ancho de vector (128-bit vs. 256-bit+ en x86-64)
- ▲ Conteo de instrucciones para ciertas cargas de trabajo FP (vs. x86-64)
Fundamentos Teóricos
El diseño del Cortex X925, particularmente su énfasis en la ejecución out-of-order y la predicción de ramas, se basa en principios fundamentales de la arquitectura de computadoras establecidos en la academia. El concepto de ejecución out-of-order fue formalizado por Robert Tomasulo en su algoritmo de 1967 para el IBM 360/91, permitiendo que las instrucciones se ejecuten tan pronto como sus operandos estén disponibles, ocultando la latencia de memoria y las dependencias de datos. La capacidad de reordenamiento masiva del X925 es una aplicación directa de este principio, utilizando estructuras como el reorder buffer y los reservation stations para gestionar el estado del programa y la disponibilidad de recursos.
La predicción de ramas, otro pilar del rendimiento del X925, se remonta a trabajos como los de James E. Smith (1981) sobre los branch target buffers (BTBs) y los predictores de ramas dinámicos. La capacidad del X925 para reconocer patrones de ramas largos y su gran BTB de primer nivel (hasta 2048 ramas) reflejan la evolución de estos algoritmos, que buscan minimizar las burbujas en el pipeline causadas por saltos condicionales. La política de reemplazo RRIP en el L1 data cache es una evolución de los algoritmos de reemplazo de caché, como LRU (Least Recently Used), buscando una mejor predicción de la reutilización de datos para optimizar la tasa de aciertos y reducir la latencia de acceso a memoria, un área de investigación activa en la optimización de la jerarquía de memoria.