Con la transición, ya realizada, de Apple en sus ordenadores Macintosh de utilizar CPUs con ISA x86 a ISA ARM muchos mentideros de la red lo venden como si dicho cambio supusiera por sí mismo un importante aumento en el rendimiento y la potencia. Incluso se llega a vender la ISA x86 como inferior a la ARM. ¿Realmente sería necesario para Intel y AMD abandonarán la ISA x86?
¿Os imagináis que un día las CPU x86 desaparecieran del mercado por abandono de AMD e Intel a la ISA x86? Este escenario que para muchos sería imposible no es uno que sea imposible. Pero, ¿qué es lo que impide que se haga un movimiento de este tipo?
¿AMD e Intel nunca abandonarán x86?
El motivo de ello es que son las dos únicas empresas, sin contar a VIA, que pueden fabricar CPUs con dicho set de registros e instrucciones y que por tanto pueden ejecutar software con el mismo código binario. Pese a la enorme rivalidad entre ambas empresas en el mercado, de puertas para adentro tienen una gran colaboración y han hecho evolucionar dicha ISA de forma conjunto desde su lanzamiento a finales de los 70 con el 8086 hasta el día de hoy.
Eso no quita que Intel o AMD no vayan a realizar CPUs con ISA ARM, ya que tienen la capacidad para ello, pero su duopolio en el mundo del PC y el hecho de que no exista apenas competencia para las CPU x86 son un incentivo lo suficientemente fuerte como para no abandonar dicha ISA.
Hay que tener en cuenta que en el mercado de las CPU ARM hay una enorme competencia, además, si se acaba dando luz verde a la compra de ARM por parte de NVIDIA, no hay duda que las regalías por construir una CPU compatible con la ISA ARM subirán como la espuma.
La desventaja de x86 frente a ARM
La gran desventaja de la ISA x86 en comparación con la ISA ARM tiene que ver con la descodificación de instrucciones durante el ciclo de instrucción, ya que mientras que el tamaño de los opcodes en el caso de ARM son siempre del mismo tamaño en bits, en el caso de las x86 es variable. Esto obliga a construir una unidad de control mucho más compleja, la cual consume mucho más.
Las consecuencias de ello son simples, los recursos en forma de transistores de cara a la unidad de control no permiten crear una CPU con la capacidad de aumentar la cantidad de instrucciones que procesa en paralelo dentro de un mismo hilo de ejecución. Lo que supone que las CPU bajo ISA x86 van a tener un aumento del IPC mucho más bajo que las de ISA ARM.
Debido a su mayor complejidad a la hora de descodificar instrucciones las CPU x86 tienen una gran desventaja a la hora de ser adaptadas a entornos de muy bajo consumo o acaban teniendo un rendimiento peor de lo esperado. Lo que ha llevado que la ISA ARM no tenga rival en entornos de muy bajo consumo y hace que muchos se planteen la renovación por completo de la ISA x86.
¿Hay que renovar la ISA x86?
Con tal de evitar los problemas de la ISA x86 tanto Intel como AMD deberían reunirse para renovar esta por completo haciendo una revisión de todas las instrucciones. La idea de dicha revisión sería crear una serie de instrucciones de la misma longitud en bits a través de un proceso de selección de las mismas.
El objetivo sería crear una nueva ISA que fuese totalmente compatible con el actual lenguaje ensamblador del x86, pero en el cual en vez de generar el antiguo código binario generase un nuevo código binario según las normas de la nueva ISA. Inicialmente el software se distribuiría con los dos tipos de binarios de manera combinada en un proceso que se suele llamar Fat Binary donde se incluyen binarios de diferentes ISAS.
La idea no es crear nuevas instrucciones, sino que tiene que haber una correlación 1:1 en cuanto a las instrucciones. Las que sean demasiado complejas pueden tener bits de modo u opción, el cual expliquen como funcionen en diferentes variables. Dichos bits serían distintos de los bits de instrucción y ayudarían a simplificar el descodificar.
Ahora bien, tanto AMD como Intel llevan años utilizando los mismos descodificadores de instrucciones a los que van haciendo cada vez más complejos. Cada vez que crean una nueva CPU suelen volver a aprovechar buena parte de lo creado en procesadores más recientes. El hecho no solo de renovar la ISA entera hasta el punto de recrearla, así como de crear todo el proceso de descodificación de las instrucciones es una tarea titánica que puede llevar largos años.
¿La única ventaja real? El hecho que podrían colocar CPUs x86 en dispositivos PostPC, pero entonces deberían convencer a los que hacen software para dichos dispositivos que adapten el código de sus aplicaciones y sistemas operativos.
Renovar la ISA x86, un problema para el software actual
Ante la premisa de la sección anterior de entrada podemos pensar que los x86 son inferiores a los ARM, en realidad no podemos perder de vista el contexto, ya que gracias a que en el PC existen aplicaciones que piden un alto rendimiento los núcleos ARM no pueden competir. No podemos olvidar que las CPU se diseñan para mover el software más exigente de una plataforma a la mayor velocidad posible.
Por ejemplo en el caso de los videojuegos, todos los motores están optimizados para exprimir hasta la última instrucción de las CPU x86. Las cuales tienen el monopolio absoluto en PC y consolas. La adaptación a ARM de dichos motores gráficos requiere un largo tiempo que se traduce en dinero. Si os fijas a la hora de hablar del rendimiento en juegos de su M1, Apple pone como ejemplos juegos ya antiguos que no resulten un problema de mover por la falta de optimización del código.
Renovar la ISA x86 en el caso de las diferentes aplicaciones del mercado supondría no solo una tarea titánica por parte de Intel y AMD sino también de los fabricantes de software de diferentes tipos por un lado y de hardware. La renovación sería tan compleja como un cambio de ISA. Apple puede hacerlo porque controla con puño de hierro su ecosistema, pero en PC su variedad hace que esta tarea sea diez veces mayor.