Distinguir Arm, Arm ARM, Armv9, ARM9, ARM64, AArch64, A64, A78,..
(nickdesaulniers.github.io)Una guía de términos para quienes se inician en el ecosistema Arm
- La arquitectura Arm es una familia RISC con modos de direccionamiento simples
- Arm Limited es la empresa británica que administra la arquitectura Arm
- ARM pasó de significar Acorn RISC Machine a Advanced RISC Machines
- Arm ARM (Architecture Reference Manual) es el manual de programación de Arm
- Armv9 es la más reciente de las familias de arquitectura (al momento de escribir esto). Agrega vectores SIMD (SVE) y operaciones matriciales (SME/SME2), entre otras cosas
- Armv9.4-A es el conjunto más reciente de extensiones de Armv9. Estas extensiones están documentadas en el Arm ARM. Algunas extensiones son opcionales cuando se introducen, pero en versiones futuras pasarán a ser obligatorias
- La A de Armv9.4-A significa "Application Profile". Soporta memoria virtual a través de la MMU, y aparece en prácticamente todos los sistemas Arm como teléfonos, laptops y servidores.
También existen perfiles como "R" para sistemas en tiempo real, o "M" para microcontroladores sin MMU.
Estos tres perfiles de arquitectura también son "A", "R" y "M" - AArch64 es un "execution state" introducido en ARMv8. Soporta registros de 64 bits (31 registros de propósito general, un puntero de pila dedicado de 64 bits, un contador de programa de 64 bits y un pseudo-registro de valor cero)
Junto con esto, las capacidades de 32 bits usadas en ARMv7 pasaron a llamarse AArch32 - Curiosamente, el Arm ARM no menciona el término ARM64 (aunque Apple, Microsoft y Linus Torvalds lo prefieren)
Al final, este nombre sí tiene sentido; el kernel Linux arm64 puede ejecutar código de espacio de usuario tanto en estado de ejecución AArch64 como AArch32, pero el kernel en sí es exclusivo de AArch64 - A64 es el conjunto de instrucciones introducido con AArch64. En la práctica, es el único conjunto de instrucciones que AArch64 soporta. Los registros de AArch64 son de 64 bits, pero las instrucciones siguen siendo de 32 bits (ancho fijo)
A32 se refiere a la ISA anterior. También es de ancho fijo de 32 bits. T32 es el conjunto de instrucciones usado antes de Armv8, y se refiere a Thumb2 de 32 y 16 bits - Algo que no debe confundirse con A64 es el uso de "A78" para referirse a un núcleo, es decir, Cortex-A78.
Arm no solo diseña la arquitectura Arm, sino también implementaciones de esa arquitectura, lo que solemos llamar microarquitecturas. Sin importar el número que venga después, si ves las palabras Cortex o Neoverse, se trata de microarquitecturas diseñadas por Arm.
Por ejemplo, Cortex-A78 implementa extensiones hasta ArmV8.3. En Wikipedia hay una plantilla que lo resume - DynamIQ (antes bit.LITTLE) se basa en la idea de usar núcleos heterogéneos, no homogéneos, en un sistema multinúcleo
La ventaja de este diseño es que distintos núcleos pueden hacer mejor distintos trabajos en distintos momentos. Cuando se necesita rendimiento, se usan procesadores out-of-order de alto consumo; para reducir el consumo, se usan núcleos in-order más lentos
Es interesante ver que Intel hace algo parecido con sus núcleos de rendimiento y eficiencia en Alder Lake - Si uno revisa los manuales de referencia, es interesante cómo fueron evolucionando los distintos execution states: A55, X1, X3, etc.
- Términos heredados
- ARM9 no debe confundirse con Armv9. Es una familia de núcleos; algunos implementan ARMv4t y otros ARMv5
- StrongARM es una serie de CPU ARMv4 creada por DEC. Intel obtuvo esta IP mediante un acuerdo judicial y terminó diseñando su propia microarquitectura ARMv5 llamada XScale
Con el tiempo, Intel vendió a Marvell la familia de SoC PXA que usaba XScale. Da curiosidad imaginar cómo habría sido el mundo si Intel hubiera seguido con XScale junto con Atom, o incluso en lugar de Atom - ARMv4 introdujo el conjunto de instrucciones comprimidas llamado Thumb. Sus instrucciones eran de ancho fijo de 16 bits
- ARMv6t2 introdujo Thumb2, con soporte para instrucciones de 32 bits y UAL (Unified Assembly Language), entre otras cosas
3 comentarios
Ese
Arm ARM, por más que lo vea, parece totalmente intencional jaja*jaja
Creo que
Arm ARMdefinitivamente se me va a quedar grabado :)