Apple Silicon: Tudo que você precisa saber sobre os novos processadores ARM (Parte 1)

Por que mudar agora?

Gustavo Salibi
Academy@EldoradoCPS

--

Widgets, app clips, iOS 14, watchOS, macOS Big Sur. Foram várias as novidades apresentadas durante o evento anual da Apple, a WWDC, mas uma delas certamente se sobressai: Apple Silicon. A adoção dessa nova arquitetura, prevista para toda a linha dee computadores da empresa até 2022, implicará em diversas mudanças internas e, talvez, para o mercado de tecnologia como um todo.

Apple Silicon é nome da nova família de processadores que começarão a ser utilizados nos novos computadores da Apple até o fim deste ano. Mas essa está longe de ser uma simples atualização dos processadores. É uma implementação em uma arquitetura completamente diferente, o que significa que nenhum software atual seria capaz de rodar na nova versão — mas, obviamente, isso seria insustentável e a Apple anunciou formas de contornar esse problema, como veremos mais a frente — .

Quais as diferenças entre a arquitetura atual e a nova?

Os processadores atuais utilizam a arquitetura x86_64 (também chamada de AMD64) e são produzidos pela Intel, enquanto os novos Apple Silicon utilizarão a arquitetura ARM64 e serão produzidos pela própria Apple. Os processadores Intel são baseados em um conjunto complexo de instruções (CISC), já o novo chip da Apple utilizará um conjunto reduzido de instruções (RISC).

Isso implica em diversas diferenças: os processadores CISC trabalham tipicamente com clock elevado, são mais caros para produzir e tendem a ser mais poderosos no que diz respeito a desempenho. Entretanto, eles são maiores e consomem mais energia. Já os processadores que utilizam RISC, geralmente resultam em projetos menores, mais baratos e que consomem menos energia. Isso faz com que eles sejam amplamente adotados no mercado de smartphones.

Outra diferença importante é o conjunto de instruções em si. Quando escrevemos um programa em alguma linguagem de alto nível (como Java, Python ou C), ele precisa, em algum momento, ser transcrito para as instruções do processador através de um tipo de linguagem assembly. Um conjunto de instruções CISC produz programas menores, em termos de código, o que já foi importante no passado, já que a memória, dividida entre os dados do programa em execução e o código armazenado, era limitada. Enquanto um conjunto RISC possui muito menos instruções disponíveis, o que faz com que os programas precisem utilizar muito mais código para executar uma mesma tarefa, o que os torna mais difíceis de programar diretamente.

Exemplo de código assembly em x86
Mesmo exemplo em ARM

Diferente do que muitas pessoas pensam, ARM não precisa ser necessariamente destinado a projetos menos exigentes. ARM pode, sim, escalar muito bem. Um exemplo disso é o atual supercomputador mais rápido do mundo, a máquina japonesa Fugaku, que é baseada em ARM.

Por que mudar agora?

Na verdade, uma troca dessa magnitude envolvendo a Apple não é inédita. Antes de adotar os chips x86 da Intel, processadores com a arquitetura PowerPC — que, aliás, eram RISC — já eram utilizados nos computadores da Apple. E, antes disso, houve outra troca grande na década de 90. A diferença desta vez está no fato de os chips serem produzidos pela própria Apple.

WWDC 2020 — Explore the new system architecture of Apple Silicon Macs

Uma métrica muito importante da nova arquitetura, quando tratamos de portáteis como o MacBook, é a melhor performance per watt, o que garante maior autonomia de bateria. Isso já era perseguido pela Apple desde antes da transição para Intel, já que os chips da época, G3 e G4, equipavam os laptops, mas o G5, chip mais poderoso e que consumia mais energia, nunca pôde integrar um portátil. Outro ponto importante é o menor aquecimento, o que permite que os computadores possuam menos equipamentos de resfriamento e sejam ainda mais finos.

Embora outras empresas pudessem utilizar no passado, atualmente só a Intel, a AMD e a VIA têm licença para desenvolver chips x86_64. Enquanto que os projetos de chips ARM são licenciados a diversas outras empresas, incluindo, agora, a própria Apple. Esse, por si só, já é um grande fator comercial, pois ela passa a não mais depender da Intel, que nos últimos anos atrasou o lançamento das novas versões dos processadores, fazendo com que a data de lançamento dos computadores da Apple não pudessem ser totalmente controladas — já reparou que, diferente dos outros produtos, os Macs não seguem um padrão de data de lançamento? — . Além disso, as tecnologias implementadas e as novidades são totalmente dependentes da Intel. Junto a isso tudo, o custo para embarcar cada chip nos dispositivos da Apple é aumentado, já que eles são comprados dessa outra empresa.

A apple não é a primeira companhia que pensa em utilizar ARM em computadores nos últimos tempos. A Microsoft vem tentando isso há muitos anos, embora ainda não tenha nenhuma versão comercial de Windows com ARM.

System on a chip (sistema em um chip)

WWDC 2020 — Special Event Keynote

Atualmente, os Macs baseados na arquitetura Intel já possuem múltiplos núcleos, uma GPU discreta (memória separada da CPU) e um chip extra T2 produzido pela própria Apple e utilizado para controlar dispositivos integrados ao Mac que permitem funcionalidades como Apple Pay, TouchID e Hey Siri.

Já com o novo SoC (System on a Chip) Apple Silicon, todos os componentes atualmente utilizados serão combinados em um único chip. Isso permite ao sistema uma arquitetura de memória unificada, sem mais precisar passar dados através de comunicação PCIe.

Além disso, diferente dos processadores Intel, onde todos os núcleos possuem desempenho similar, o Silicon terá multiprocessamento assimétrico (AMP), o que permitirá padrões de uso do processador mais personalizáveis de acordo com as necessidades de processamento mais ou menos intensivas por parte das aplicações. Isso poderá ser explicitado pelo programador através de classes de quality of service (QoS) que indicam para o sistema se a demanda maior é por velocidade ou por eficiência energética.

multiprocessamento assimétrico
WWDC 2020 — Special Event Keynote: Multiprocessamento assimétrico

Também foram anunciadas melhorias em machine learning, com o uso de diversos aceleradores, de compressão, de SIMD (computação paralela onde a mesma instrução é aplicada simultaneamente a diversos dados para produzir mais resultados) e uma neural engine embarcada no chip. Além de um coprocessador dedicado a codificação e decodificação de vídeos combinado com os aceleradores de machine learning para multiplicação de matrizes.

Segurança

Construir o próprio chip permitiu à Apple desenvolver dispositivos de segurança mais avançados para iPhone e iPad. Agora eles trarão isso também para o Mac. As novidades são:

  • Write XOR Execute (WˆX): As páginas de memória não poderão mais ser ao mesmo tempo aptas a escrita e a execução. E isso irá funcionar por threads, de forma que diferentes processos poderão ter diferentes permissões para uma mesma página, o que é muito útil para JITs multi-thread (como as utilizadas nas linguagens Java e JavaScript).
  • Proteção de integridade do núcleo: Através de suporte via hardware, o controlador de memória tornará o código do kernel imutável. Tanto para modificações do código atual quanto para o carregamento de novos.
  • Pointer authentication codes (PACs): São códigos armazenados nos bits superiores de um ponteiro a fim de verificar quando ele está sendo usado. Isso impede o uso indevido de ponteiros e pode proteger contra ataques como os de programação orientada ao retorno. Estará disponível em um primeiro momento nos códigos do kernel, nas aplicações do sistema e nos serviços do sistema.
  • Isolamento do dispositivo: Em Macs baseados em Intel, o macOS oferece a todos os dispositivos uma visão compartilhada da memória do sistema, já que dispositivos PCIe acessam a memória por meio de uma IOMMU (unidade de gerenciamento de memória de entrada e saída). No Apple Silicon, por outro lado, todos os dispositivos recebem mapeamentos de memória separados. Isso restringe os dispositivos a acessarem apenas a memória destinada a eles.

Para saber quais os impactos sobre os desenvolvedores, usuários e mercado, acesse a parte 2.

Links utilizados

--

--