Hace 1 año | Por acl a dougallj.wordpress.com
Publicado hace 1 año por acl a dougallj.wordpress.com

Rosetta 2 es sorprendentemente rápido cuando se compara con otros emuladores x86 sobre ARM. He dedicado algo de tiempo mirando cómo funciona por mera curiosidad, y me ha parecido bastante inusual. Rosetta 2 traduce por adelantado todo el segmento de texto del binario de x86 a ARM. También admite la traducción "justo a tiempo" (JIT), pero se utiliza relativamente poco ya que evita tanto el coste directo de la compilación en tiempo de ejecución como los efectos indirectos de la caché de instrucciones y datos.

Comentarios

meneandro

Más o menos lo que uno esperaría, ayudas en hardware en forma de instrucciones no estándares de la arquitectura ARM para imitar comportamientos de instrucciones x86, manejar con inteligencia cómo tratar los saltos, interrupciones, etc., apoyarte mucho en cachés y saber poner las cosas en memoria para optimizar y minimizar muchísimo los accesos, triquiñuelas varias vía software a la hora de traducir y tratar de mantener la relación 1 a 1 lo máximo posible en cuanto a traducir instrucciones x86 ("complejas") a instrucciones ARM ("simples") de manera que tras traducir hayas producido el menor número de instrucciones ARM posibles. Entre eso y las peculiares características del hardware (muchísimo ancho de banda, mucho paralelismo en cuanto a la decodificación y ejecución de instrucciones, etc), pues ya lo tienes.

M

#0 No sé si aún te da tiempo, creo que deberías poner por ahí que está en inglés.

a

#1 Hecho.