Disruptive Ludens

Blog personal sobre tecnología

Game Over Apple (Feedback II)

Creo que se me ha malinterpretado, por eso realizo este segundo Feedback.

Comentario#1:

Mira que eres terco xD

La «salsa secreta» consiste en que arm es mucho más eficiente energéticamente que x86, y los de Apple más aún que el promedio, por lo que en sólo 10 watios es lógico que rinda mucho más.

Me dices que tengo que aceptar que ARM es más eficiente que x86 porque si, siempre porque si y punto, no hay argumento ni nada por el estilo, simplemente me lo tengo que tragar como dogma de fe.

Anda, leete esto donde explico el motivo por el cual la ISA ARM es más eficiente que la x86-64.

Incluso emulando, especialmente si el s.o, apis y servicios son agnósticos pero optimizados para arm, porque aunque la app sea emulada, hace llamadas a apis y servicios que sí están optimizados a máquina local.

Gracías por darme la razón, ya que esas APIs y servicios en la versión para el M1 están mejor optimizadas y se ejecutan mucho versión que en la versión x86 del macOS, es decir, Apple ralentizando los Mac con x86 para justificar la transición.

Que estuviera diseñado el s.o. para ser agnóstico no significa que fuera código interpretado, sino que se recompila fácilmente sin tocar casi nada sin que surjan problemas ni dependencias de instrucciones concretas de la cpu, y que en caso de usarlas es opcional y está previsto. está optimizado tanto para x86 como para arm.

No has entendido nada de nada, lo que es macOS o antes conocido como Mac OS X es agnóstico de plataforma en el sentido de que el código fuente del sistema operativo no tiene dependencias de ninguna ISA en concreto, lo que les permitió realizar el salto de PowerPC a Intel facilmente, les permitió desarrollar iOS con base del propio Mac OS X y ahora les ha permitido realizar la transición a los M1.

La pérdida de rendimiento que mencionas la vi en dos iphones e ipads que tuve, apple hace obsolescencia programada haciendo el s.o. cada vez más pesado para renovar el equipo.

La perdida de rendimiento es debida a lo que he comentado más arriba, las APIs y los servicios para x86 están optimizados para ir como el culo y eso esta hecho adrede. el macOS durante los últimos años ha sido un enorme Windows Vista pero con la diferencia de que los medios Pro-Apple carecen por completo de capacidad de crítica y se lo han dejado pasar.

Otra cosa que hacen es sacar lenguajes y herramientas nuevos que si no se utilizan rinde peor, como con Swift. El ecosistema está hecho para rendir mejor con las últimas versiones de las herramientas y lenguajes, los cuales capan en s.o. de varios años porque no te deja instalarlos desde la store, igual que también limitan la versión de s.o. que instalar

Eso es otro tema aparte,

Comentario#2:

Cito a un forero programador:

Rosetta 2 no es un intérprete ni un JIT, ni una virtualización ni nada de eso. Es un traductor. Funciona más o menos como los wrappers que hizo Valve para DirectX en Linux. Cuando abre un software Intel, lo recompila para soportar el set de instrucciones de ARM y de Apple. Por lo tanto, un binario recompilado por Rosetta 2 ejecuta su propio código sin ninguna intervención externa. El problema viene dado de que el set de instrucciones de x64 (que no x86, ya que macOS no soporta librerías de 32 bits) es más amplio que el de ARM.

Justo lo que he dicho en el feedback anterior sobre este tema, un interprete, justo igual como hizo Qualcomm y Microsoft pero con la diferencia de que Apple ha realizado un interprete por hardware, de ahí a que el impacto sobre el rendimiento no sea tan alto.

Y si, no deja de ser un wrapper, pero mucho más eficiente y rápido ya que estamos utilizando un acelerador para ello, pero claro, la trampa es que este wrapper por hardware necesita que las aplicaciones tengan un tag para actuar en el binario correspondiente.

¿Y como? Pues si Mahoma no va a la montaña entonces la montaña va a Mahoma, es decir, todas las aplicaciones compiladas para el M1 tienen un bit adicional que le marca al interprete por hardware que no tiene que interpretar esa instrucción o serie de instrucciones.

¿Y como lo se? Pues porque si fuera por software iría tan mal como el de Qualcomm y Microsoft.

AL recompilar, algunas tareas se ejecutan en más ciclos de reloj que si fuese un binario Intel. Según las pruebas, un binario creado por Rosetta 2 se ejecuta al 75-79% de velocidad nativa en Intel. Lo cual no está nada mal, teniendo en cuenta que en single core el M1 domina por más de ese 25%

Voy a contar un secreto, ninguna de las aplicaciones para x86 independientemente del sistema operativo se ejecuta internamente como x86, el problema es que los conjuntos de instrucciones CISC no se pueden segmentar bien, por eso son re-interpretadas en micro-instrucciones más pequeñas a nivel interno.

Intel y AMD hace tiempo que tienen su interprete x86 → RISC. Creo que Apple tiene en el M1 un interprete de este tipo pero no es parte de la CPU sino que es un acelerador aparte.

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

Lo que ese forero dice es que NO es un intérprete. Se queda traducido, es recompilar. O es lo que yo entiendo cuando dice específicamente «no es un intérprete ni un JIT ni una virtualización». Al quedarse corta la arquitectura ARM en algunas tareas y necesitar más ciclos, que es cuando cae el rendimiento y no porque se interprete en tiempo real, es cuando este problema queda compensado por ser una bestia de cpu hiper eficiente. También te puse que el superordenador más potente del mundo está basado en ARM. Este paso de relevo a ARM era algo que en… Read more »

Xtampida

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… Read more »

Over

Eso es.