Resulta que Apple ha incorporado soporte en sus procesadores Apple Silicon para una instrucción que fue diseñada para el procesador 8080 de Intel que debutó en 1974, utilizando una extensión secreta no documentada para ejecutar las instrucciones que se usan con muy poca frecuencia, lo que aumenta el rendimiento de la emulación.
Rosetta 2 de Apple es parte de macOS que permite que las aplicaciones escritas para procesadores Intel se ejecuten en Apple Silicon (se abre en una pestaña nueva)-Macs equipados, y funciona bastante bien. Llamado así por la piedra de Rosetta, que permitió a los egiptólogos comenzar a descifrar el antiguo sistema de escritura jeroglífica en la década de 1820. Rosetta ha sido igualmente misteriosa, pero puede haber comenzado a revelar sus secretos, como se detalla en una publicación de blog. (se abre en una pestaña nueva) por el investigador de seguridad australiano Dougall Johnson, en el que revela una extensión no documentada mientras analiza por qué Rosetta 2 es tan rápido.
La extensión secreta parece alterar la forma en que el procesador almacena la paridad y ajusta los indicadores de una aplicación para proporcionar una emulación más precisa. La historia es retomada por el desarrollador web y entusiasta de la computación retro Blake Patterson. (se abre en una pestaña nueva)quien explica cómo y por qué lo hace, con la ayuda de las publicaciones de Johnson en Mastodon (se abre en una pestaña nueva).
Todo se remonta al Intel 8080 de 1974, que fue el segundo chip de la empresa. (se abre en una pestaña nueva). Este microprocesador de 8 bits manejó sus indicadores de ajuste y paridad de una manera particular, usándolos para indicar si llevar números en una operación decimal codificada en binario, y esto ha persistido hasta los chips x64 de hoy en día, aunque las aplicaciones modernas casi nunca lo usan. .
La arquitectura Arm utilizada por Apple Silicon, al no estar relacionada con x64, no tiene esa funcionalidad, por lo que era necesario emularla. De lo contrario, algún software de Intel no funcionaría en las nuevas Mac, y calcular la misma operación sin el manejo de banderas del 8080 usaría cinco veces más instrucciones y ralentizaría la Mac.
Rosetta 2 vuelve a compilar una aplicación binaria destinada a un procesador Intel en el momento del lanzamiento en lugar de proporcionar una emulación en tiempo real, pero no puede determinar si la aplicación utilizará los indicadores de ajuste y paridad. Utiliza los bits 26 y 27 del registro de banderas Arm para emular el manejo de las mismas por parte del 8080 para evitar tener que ir por el camino largo cada vez.
Rompería la especificación Arm para tener esto funcionando todo el tiempo, por lo que los procesadores Apple Silicon solo hacen esto cuando ejecutan Rosetta 2. Johnson señala que no funciona cuando el procesador Apple está ejecutando una máquina virtual Linux, ya que el procesador es No es configurable en esta situación.
Si bien no es exactamente una noticia trascendental, es una visión fascinante del funcionamiento de una pieza de software extremadamente inteligente y de alto rendimiento, aunque, de la misma manera que Rosetta original se introdujo en Mac OS X 10.4 Tiger y se retiró en 10.7 Lion: es probable que desaparezca una vez que Apple Silicon tenga algunas generaciones más.