enero 19, 2021

Game Over Apple (Last Feedback)

Comentario Original:

A ver, ya en un vídeo de la WWDC de este año se explicaba el funcionamiento de Rosetta, y no es una solución hardware. Minuto 12:08 aproximadamente.

Entra en funcionamiento por tres formas: en la instalación desde la Apple Store, en la instalación desde un .pkg y si la aplicación no se ha instalado de ninguna de las formas anteriores (es decir, simpemente se ha copiado al disco) se invoca un JIT en el momento de la primera ejecución. En los tres casos se hace una traducción completa de la aplicación y de las bibliotecas que necesite y que no estén ya traducidas o sean nativas. Luego ya es sólo cuestión de ejecutar la aplicación traducida, no hay nada interpretado ni traducido al vuelo

Veamos…

Por fin un dato con cara y ojos y no mantrás propagandísticos que repiten los fanboys de Apple sin tener dos dedos de frente.

Obviamente es una tontería volver a traducir el código una vez ha sido traducido con anterioridad ya que es una perdida de recursos y de tiempo, la idea no es estar traduciendo el binario al vuelo sino traducirlo durante la instalación.

Teniendo en cuenta que el interprete ya puede crear un ejecutable del binario durante la primera instalación, entonces la conclusión a la que se lelga es que las pruebas de rendimiento para x86 corriendo bajo M1 son el realidad código x86 que ha sido traducido por el interprete para el M1.

Eso si, el resultado es menos eficiente que una compilación nativa para x86, lo cual supone que esto:

Contiene una enorme falsedad cuando se dice que el Mac Mini esta ejecutando código x86 bajo Rosetta 2, ya que realmente esta ejecutando código x86 traducido a ARM.

En cuanto al tema del JIT, yo no he hablado jamás de que exista un interprete que este traduciendo todo el rato, lo que creo que existe es un interprete por hardware, un descodificador que traduce las instrucciones x86 a las del Apple «ARM» y lo pongo entre comillas porque pronto vais a ver que no solo van a hablar de procesadores Apple sino también de ISA Apple, la cual será un fork de ARM de la misma manera que su GPU es un fork del PowerVR.

Un descodificar no es más que un dispositivo electrónico que guarda en su interior una tabla, este recibe unos datos de entrada que sirven para seleccionar un dato de esa tabla y que te devuelva un resultado o varios, la idea de una instrucción x86 se genere de manera automática la instrucción o instrucciones ARM pertinentes. ¿Y por qué no tirar de CPU? Pues por el hecho que una CPU sería 100 veces menos eficiente energéticamente hablando y con esto liberamos a la CPU de tener que interpretar nada durante el tiempo de compilación y durante la primera ejecución.

Apple no pudo hacer eso en el paso de PowerPC a Intel debido a que la CPU no era de ellos, pero ahora si que pueden hacerlo y creedme que es mucho más limpio y eficiente que tener que tener que realizar un traductor por software.

Esto es todo, tenéis los comentarios para decir vuestra opinión de esta entrada, cualquier post fuera del tema de la misma o que sea irrespetuoso será borrado sin contemplaciones, por otro lado recordad que el blog también tiene un servidor de Discord donde podéis entrar.

3.3 3 votes
Article Rating
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Over

Ya te lo expliqué, aunque esté traducido hay instrucciones x86 complejas que requieren más ciclos en ARM. Es de ahí de donde surge la pérdida de rendimiento. Lo ideal es que el desarrollador recompile para la cpu exacta aprovechando sus instrucciones y desechando las que no están disponibles. Eso requiere tiempo de optimización y revisión del código, pero es como se hacen los ports en condiciones. Un buen ejemplo de mal port es No man sky: en su salida en PC no funcionaba en CPUs Phenom 2 que movían Witcher 3 a 60 FPS porque esas CPUs no tienen una… Read more »

Last edited 1 month ago by Over
IntelCeleronMasterRace

«Lo ideal es que el desarrollador recompile para la cpu exacta aprovechando sus instrucciones y desechando las que no están disponibles» Antes de ir de contestatario por hacerte el erudito, trata, por favor, de tener comprension lectora, quiero decir, EJEM: Y CLARO QUERIDO, PERO ACORDATE QUE HAY TODO UN MUNDO DEL 2020 PARA ATRAS, no le van a pedir A CADA DESARROLLADOR que cambien sus apps recompilando, ademas una solucion por software con alta portabilidad generaria perdida de rendimiento debido a ser de alto nivel, y a nivel metal DIRECTAMENTE PONEN UNA SOLUCION POR HARDWARE Y BASTA DE DOLORES DE… Read more »

Over

-es lo ideal, como he dicho.
-normalmente se aprovechan instrucciones si están disponibles en vez de ser incompatible con algunas CPUs x86/x86-64
-en este caso lo ideal conlleva recompilar para otra arquitectura, pero sigue siendo «para la cpu exacta».

Over

Y además confirma que estás cpus son un pepino sin trampa ni cartón, de nuevo, el superordenador más potente del mundo está basado en arm y Nvidia ha visto venir la mesa volcada.