Los trucos del CPU de Apple: reordenamiento de memoria, soporte para JS y conteo de referencias
(threadreaderapp.com)-
La velocidad de ejecución del código de Intel por parte de Apple, que parece magia negra, se basa esencialmente en la combinación de las arquitecturas Arm e Intel
-
Estos dos CPU tienen diferencias de base en el "ordenamiento de memoria", por lo que la emulación suele ser lenta. Una de las soluciones de Apple fue simplemente incorporar también la forma de Intel. Al ejecutar código x86, hace que siga el ordenamiento de memoria de Intel
-
Agregó instrucciones optimizadas para JavaScript y duplicó la caché L1, logrando que al navegar por la web sea más rápido y la batería dure más
-
El dual-core de la MacBook Air con Intel funciona a 3.8Ghz cuando va rápido, y en modo lento opera a 1.2Ghz para ahorrar energía, pero Intel no lo diseñó para ejecutarse con reducción de frecuencia.
Apple optimizó esto colocando 4 procesadores de rendimiento y 4 de eficiencia por separado. En modo de bajo consumo, apaga los 4 procesadores de rendimiento y funciona solo con los de eficiencia.
Al realizar tareas como compilación, aprovecha los 4 procesadores completos y por eso es realmente rápido.
-
Intel está 3 años detrás de la ley de Moore. Apple Silicon usa el más reciente proceso de 5 nanómetros de TSMC, mientras que Intel usa procesos de 10 nm/7 nm, e incluso muchos productos de Intel siguen usando procesos más antiguos de 14/10 nm.
-
El lenguaje Swift usa "conteo de referencias" en lugar del "garbage collection" de Android. Apple hizo algo en el CPU para duplicar la velocidad del conteo de referencias.
5 comentarios
¿Por qué los chips ARM tienen instrucciones con nombres de JavaScript? https://es.news.hada.io/topic?id=3057
El conteo de referencias es la base de la recolección de basura... ¿de qué está hablando...? De repente mi nivel de confianza se desplomó...
Relacionado con esto, hay un comentario interesante.
https://twitter.com/catfish_man/status/1326238434235568128?s=21
Dicen que la velocidad de hacer Retain/Release de un
NSObjectsimple en sí es 5 veces más rápida.Parece que incluso la instrucción misma que hace el conteo de referencias funciona más rápido debido a diferencias en la estructura de ordenamiento de memoria.
En Java, por lo general se usan otros estilos de recolección de basura, como Mark-and-Sweep, en lugar de Reference Counting.
¿Eh? Entonces... supongo que también hay que pensar que el garbage collection será así de rápido, ¿no? jaja