¿Qué es la ISA ARMv9 y que aporta al rendimiento de futuras CPU?

Hace unas semanas, ARM presentó la novena generación del conjunto de registros e instrucciones utilizado en los procesadores con la ISA del mismo nombre. ARMv9 es el nombre bajo el cual se ha bautizado la nueva versión de esta ISA, la cual será utilizada en futuros SoC para dispositivos PostPC. ¿Qué es y qué novedades trae ARMv9 respecto a anteriores versiones, cómo serán las futuras CPU ARM?

Una ISA no es más que el lenguaje que entienden los diferentes procesadores y por tanto marca lo que significan el conjunto de unos y ceros en el código que ejecutan. El binario para una CPU x86 no tiene el mismo sentido que el binario para una CPU ARM por ejemplo.

No obstante, el avance de la tecnología hace que sean necesario añadir nuevas instrucciones a las ISA, lo que les da la capacidad de añadir nuevas funcionalidades para aumentar su rendimiento, seguridad a la hora de tratar los datos o para hacer frente a nuevos desafíos que se les presentan.

En este artículo os vamos hablar de novena generación de la ISA ARM, la cual después de años dirigida a CPUs de bajo consumo y microcontroladores han decidido ser más ambiciosos y entrar en el mercado que mayor rendimiento requiere, el de los centros de datos y la computación de alto rendimiento o HPC.

Scalable Vector Extensions 2

SVE ARMv9

La japonesa Fujitsu creó para su núcleo ARM una serie de extensiones propietarias llamadas SVE, siglas que corresponden a Scalable Vector Extensions. Por su nombre habréis adivinado que estamos hablando de un conjunto de instrucciones SIMD. No olvidemos que en las CPU con ISA ARM durante años se ha hecho uso de las instrucciones Neon. Las cuales se verán reemplazadas por las instrucciones SVE2 en ARMv9.

SVE fue creado por Fujitsu para su superordenador Fugaku, el cual hace uso de sus núcleos A64-FX. ¿La intención? Aprovechar el paralelismo de datos que requiere la computación científica, la cual utiliza números de mayor precisión. Esto se traduce en unidades SIMD mucho más grandes y que por tanto de mayor cantidad de bits.

Dado que el interés de ARM es llevar sus núcleos al mercado de la computación de alto rendimiento y los servidores han decidido adoptar SVE y fusionarlo con Neon para crear SVE2. ¿La mayor ventaja que SVE le añade a Neon? Se trata de instrucciones que son agnósticas a su tamaño, por lo que no es necesario tener una versión de cada instrucción para diferentes tamaños como sí ocurre con las instrucciones AVX en los x86.

Reinos de memoria en ARMv9

reinos ARMv9

Un concepto interesante que agrega la ISA ARMv9 a la ecuación es el concepto de los reinos, el cual consiste en poder coger parte del direccionamiento de memoria y hacer que el código que se ejecute en el no afecte al resto del sistema por tanto quede totalmente aislado. Lo cual es ideal de cara a la implementación de máquinas virtuales donde un sistema operativo se ejecuta al mismo tiempo que otro en la misma CPU.

Normalmente las CPUs tienen diferentes niveles de privilegio, pero con concepto de los reinos que ha sido añadido en ARMv9 va a ser posible ejecutar de manera más fácil ejecutar máquinas virtuales en una CPU con ISA ARM, pero las ventajas de esto no solo se limitan a máquinas virtuales, sino que también se puede utilizar en aplicaciones concretas.

Por lo que ARMv9 parece ser una extensión a la ISA más preparada de cara a los centros de datos y otro tipo de ordenadores donde la virtualización y la seguridad son mucho más importantes que otras funcionalidades. No en vano, ARM está llevando una guerra contra Intel y AMD en el mercado de las CPUs para servidores, donde los procesadores x86 dominaban el mercado hasta ahora.

Memory Tagging Extensions

Memory Tagging Extensions ARM

No son una novedad de ARMv9, sino de la versión 8.5. ¿Su utilidad? Se trata de un mecanismo encargado de ir haciendo seguimiento de todos los accesos a memoria ilegales que hacen los programas. Un acceso ilegal no es más que un acceso a una dirección de memoria que el programa no tiene permiso para acceder. ¿Qué utilidad tiene esto? Pues sirve para evitar el llamado desbordamiento del búfer, un problema de seguridad común en todos los procesadores que ocurre cuando la cantidad de datos copiada supera a la reserva de memoria, escribiendo código no esperado en las direcciones de memoria colindantes.

Si el desbordamiento de memoria tiene éxito entonces el código original se verá reemplazado por nuevo código en memoria, el cual será ejecutado por la CPU tan pronto como llegue a memoria. Por lo que es importante evitar esto, en especial si hablamos de centros de datos que suelen dar servicio para millones de usuarios al mismo tiempo y donde un desbordamiento del búfer se puede utilizar para robar datos comprometidos de los usuarios.

El MTE no forma parte de la ISA propiamente dicha, sino que se trata de un mecanismo implementado en el Northbridge de las CPUs ARMv9 que hace seguimiento de todos los accesos a memoria y cuya funcionalidad es la de evitar los desbordamientos de memoria de manera transparente.

¿ARMv9 solo para centros de datos y servidores?

Data center

Las novedades de la ISA ARMv9 que os hemos descrito en las secciones anteriores tienen un marcado carácter en concreto y no tiene nada que ver con el uso en los dispositivos clásicos en los que se suele ver la ISA ARM. De todos ellos llama poderosamente el SVE, ya que uno de los motivos por los cuales no se suelen ver unidades SIMD de gran tamaño en CPUs para dispositivos PostPC es el enorme consumo energético que supone su uso.

Por el momento los dos únicos núcleos anunciados por ARM son dos de la familia Neoverse. Por un lado el NeoVerse V1 bajo el nombre en clave «Zeus» y por el otro el Neoverse N2 bajo el nombre en clave «Perseus». No se trata de núcleos que vais a ver en un futuro smartphone, sino en los centros de datos y servidores para computación de alto rendimiento de empresas como Amazon AWS, Oracle, Tencent, Google, etc.

ARM por el momento no ha anunciado ningún núcleo para dispositivos PostPC como smartphones y tablets. Aunque no podemos olvidar que el objetivo de ARM es desplazar a x86 en varios mercados, no solamente en los servidores, sino también en el PC. La compra por parte de NVIDIA y su gran influencia en el mercado de los videojuegos para PC puede traer la llegada de PCs gaming con ARM y GPUs de NVIDIA, aunque es un futuro que va a necesitar de un gran apoyo por parte de los desarrolladores de videojuegos y no de la propia NVIDIA-ARM.