Os truques das CPUs da Apple - reordenação de memória, suporte a JS, contagem de referências
(threadreaderapp.com)-
A velocidade de execução do código Intel da Apple, que parece magia negra, é basicamente a combinação das arquiteturas Arm e Intel.
-
As duas CPUs têm, por padrão, "ordenação de memória" diferente, o que torna a emulação lenta; uma solução da Apple foi simplesmente incorporar também o modo da Intel. Ao executar código x86, ela faz com que siga a ordenação de memória da Intel.
-
Ao adicionar instruções otimizadas para JavaScript e dobrar o cache L1, ela tornou a navegação na web mais rápida e fez a bateria durar mais.
-
O dual-core do Intel MacBook Air operava a 3,8 GHz quando estava rápido e a 1,2 GHz no modo lento para economizar energia, mas a Intel não projetou isso para rodar em downclock.
A Apple otimizou isso colocando 4 processadores de desempenho e 4 de eficiência. No modo de baixo consumo, ela desliga os 4 processadores de desempenho e opera apenas com os de eficiência.
Ao realizar tarefas como compilação, ela usa plenamente os 4 processadores, ficando realmente rápida.
-
A Intel está 3 anos atrás na Lei de Moore. O Apple Silicon usa o processo mais recente de 5 nm da TSMC, enquanto a Intel usa processos de 10 nm/7 nm, e muitos produtos da Intel ainda usam processos mais antigos de 14/10 nm.
-
A linguagem Swift usa "contagem de referências" em vez do "garbage collection" do Android. A Apple fez algo na CPU para dobrar a velocidade da contagem de referências.
5 comentários
Por que há instruções com nome de JavaScript em chips ARM? https://pt.news.hada.io/topic?id=3057
A contagem de referências é o básico da coleta de lixo... do que ele está falando... de repente a credibilidade caiu bastante...
Há um comentário sobre isso.
https://twitter.com/catfish_man/status/1326238434235568128?s=21
Dizem que a velocidade de fazer Retain/Release de um simples
NSObjectem si é 5 vezes mais rápida.Parece também que a própria instrução de contagem de referências funciona mais rápido, por causa da diferença na estrutura de ordenação de memória.
Em Java, normalmente se usa um estilo de coleta de lixo diferente, como Mark-and-Sweep, em vez de Reference Counting.
Ué? Eu pensei: então isso significa que o garbage collection também deve ser rápido nessa mesma proporção, né... kkk