Por esto no todas las aplicaciones de Windows funcionan en ARM

Una de las claves para el futuro de Windows para ARM es el traslado a tiempo real de las instrucciones AVX2 a ARM, algo que se trata del mayor problema para los fabricantes de chips que utilizan dicha ISA y que hace que no solo aplicaciones, sino que los sistemas operativos requieran adaptaciones. En este artículo os explicaremos el motivo real que impide una compatibilidad total de las aplicaciones x86 en ARM a través de un simple interprete de instrucciones.

Qualcomm hace trampas en el traslado de AVX2 a ARM

Resulta que la traducción de instrucciones AVX2, instrucciones SIMD de 256 bits para las CPU x86, no tiene soporte de forma nativa por en los Snapdragon X de Qualcomm, simple y llanamente el intérprete las ignora y ya está. Entonces, ¿cómo se hace en un programa que requiere de dichas instrucciones para que funcione? Para ello es necesario pasar la aplicación a ARMv8, reprogramando las partes necesarias para ello o simplemente haciendo una recompilación del código fuente.

CPU ARM x86 AVX2

El problema viene cuando, por norma, si tienes una licencia ARM no puedes quitar ni añadir instrucciones a las ya especificadas. Esto es lo que la diferencia de las licencias RISC-V que son totalmente abiertas. Pues bien, por lo visto de cara a la conversión del benchmark Cinebench a Snapdragon X para el traslado de instrucciones AVX2 a ARM a tiempo real, Qualcomm ha añadido una serie de instrucciones extras al estándar que de usarse hacen que las aplicaciones obviamente pasen a ser exclusivas de su chip. Por lo que de usarse, hacen que no funcionen en otros chips con CPU ARM que se lanzarán en un futuro, como es el caso del futuro chip colaboración entre NVIDIA y Mediatek, así como el proyecto Sound Wave de AMD.

Obviamente, lo de “instrucciones extras” se refieren a algún tipo de unidad no documentada que se encarga de ejecutar dichas instrucciones, ya que de ser un superconjunto de la ISA ARMv8, entonces esto se traduce en una violación directa del acuerdo comercial para el uso de dicho set de instrucciones. Lo cual puede poner a Qualcomm en graves problemas, ya que recordemos que todas sus CPU utilizan dicha ISA.

¿Son realmente importantes estas instrucciones?

Las instrucciones SIMD tienen la particularidad de poder ejecutar una misma instrucción en varios datos al mismo tiempo. De cara a aplicaciones multimedia este tipo de instrucciones son importantes y en su día cuando aparecieron en las CPU por primera vez se llamaron extensiones multimedia por el hecho que las aplicaciones de dicho tipo se beneficiaban de ella, de la misma manera que a día de hoy las de Deep Learning y Machine Learning usan los arrays sistólicos para ir más rápido.

Por ejemplo, de cara a la codificación de vídeo (tanto en H.264 como en HEVC) cuando se ejecuta desde la CPU, pues se usan dichas instrucciones, también se utilizan en Blender para el renderizado por software. Por lo que dichas aplicaciones tendrían problemas en ese sentido al funcionar en ARM. Obviamente, existiendo hoy en dia decodificadores de vídeo por hardware e incluso GPU integradas, pues su uso es testimonial.

Claro está que si bien estas instrucciones son una extensión y no forman parte del set básico x86, a partir de cierto punto se encuentran disponibles tanto en las CPU de Intel como de AMD, lo que hace que se usen no solo para muchas aplicaciones, sino también para funciones del sistema operativo. De ahí a que sea necesario un intérprete de AVX2 a ARM para una total compatibilidad de las aplicaciones.

El elefante en la habitación

Ahora bien, muchos os preguntaréis cómo es posible que se pueda hacer un intérprete del resto de instrucciones del conjunto creado por Intel, pero cuando hablamos del traslado de AVX2 a ARM, pues es cuando empiezan todos los problemas. No vamos a entrar en detalles muy técnicos, pero el traslado directo no se puede hacer y requiere una serie de pasos y complicaciones para dichas instrucciones que suponen un dolor de cabeza para los ingenieros, quienes limitados en lo que a los recursos se refieren, pues prefieren que sean los propios programadores quienes lleven a cabo los cambios en sus aplicaciones, lo cual es mucho más económico y efectivo.

Esto es el elefante en la habitación en lo que a Windows para ARM se refiere, ya que es lo que realmente impide que las aplicaciones pensadas para x86 puedan funcionar directamente en una CPU ARM con un simple intérprete, y no digamos ya las aún más complejas instrucciones AVX-512. Por si fuese poco, una CPU que no sea de Intel o AMD que soporte la ISA al completo sería una violación sobre la licencia que podría llevar a la empresa a los tribunales, de ahí a que existan subterfugios extraoficiales.

0 0 votes
Article Rating
Subscribe
Notify of
guest

3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] os hablamos de cómo el soporte de ciertas instrucciones es clave para poder ejecutar, a través de un intérprete o traductor, las aplicaciones para x86, […]

Pepegrillo
Pepegrillo
11 de junio de 2024 3:53 PM

Si fuera Intel empiezo a demandar

Pepegrillo
Pepegrillo
14 de junio de 2024 5:47 PM

Algo que comentar de la noticia de demanda de arm

3
0
Would love your thoughts, please comment.x
()
x