A notícia que a Apple está desenvolvendo uma CPU própria para sua próxima linha de Macbooks, e que será um processador ARM pegou zero pessoas de surpresa, mas nem por isso deixa de ser algo potencialmente revolucionário.
Para entender a importância da arquitetura de um processador ARM vamos começar do passado distante, o longínquo ano de 1971, quando chegou ao mercado o Intel 4004, o primeiro microprocessador comercial em grande escala.
Comparado com o que temos hoje ele era feito de barro fofo e pedra lascada; ele foi projetado inicialmente para ser usado em calculadoras, depois se tornou popular em computadores vendidos em kits, mas mesmo extremamente limitado em potência, o 4004 era incrivelmente versátil por, bem, ser um microprocessador, um circuito integrado capaz de receber comandos e dados, efetuar operações matemáticas com aqueles dados e retornar os valores calculados.
Essas instruções são bem simples, como “Leia o conteúdo do endereço XXXX de memória e guarde no registrador AA” ou “Some o conteúdo do endereço XXXX com o registrador AA e guarde no registrador BB”.
Chamamos a lista de Operações, ou “comandos” que um processador é capaz de entender de conjunto de instruções, e aos espaços de memória internos usados para armazenar dados usados nessas operações, de registradores. O 4004 tinha 46 instruções e 16 registradores.
O venerável Z-80, processador usado no MSX, ZX Spectrum e outros computadores clássicos tinha 252 instruções, fora algumas outras centenas não-documentadas.
Cada instrução dessas precisava ser programa em hardware, e quanto mais instruções, mais complexo isso se tornava. O Z-80 por exemplo não tinha instruções para multiplicar números. Quando chegou o Pentium 4, o processador ganhou uma extensão de instruções chamada SSE2 que tinha até raiz quadrada.
![](https://tecnoblog.net/meiobit/wp-content/uploads/2020/08/2020081400-37-23.jpg)
A visão do Exterminador do Futuro? Linguagem de máquina de processadores 6502 tirada de uma revista de Apples.
A lista de instruções para os processadores de 32 bits compatíveis com a arquitetura x86 é imensa, e apenas uma gota no oceano. Processadores de 64 bits possuem essas e outras instruções, processadores da AMD possuem essas instruções em comum com os da Intel e mais conjuntos próprios (a Intel por sua vez também tem conjuntos exclusivos) e essas instruções envolvem de matemática complexa genérica a cálculos de criptografia. Tudo feito dentro da CPU.
Esses processadores são chamados de CISC, de Complex Instruction Set Computer – Computador Com Conjunto Complexo de Instruções. A vantagem óbvia é que seja lá o que você quer fazer, provavelmente há um conjunto de instruções em hardware que vai facilitar sua vida, rodando bem mais rápido do que um programa externo.
A desvantagem é que todas essas instruções consomem mais área de chip, são mais complicadas de implementar e demandam mais energia, o que resulta nos ridículos processadores comedores de eletricidade de hoje em dia.
Existe uma alternativa? Sim, é o RISC – Complex Instruction Set Computer.
Um chip CISC possui menos flexibilidade em termos de instruções, mas em compensação ele consome bem menos energia e é bem mais rápido ao executar as instruções.
Vamos a uma analogia: Imagine que você tem uma cozinha com um cozinheiro que não é muito rápido, mas você pode ordenar “Me prepare um bolo de chocolate” e aquele cozinheiro vai fazer o bolo em 10 minutos. Essa é uma cozinha CISC.
Outra cozinha tem vários estagiários que não fazem a menor idéia de como fazer um bolo, mas você pode dizer pra um “pegue uma tigela e coloque 500g de farinha” e ele vai fazer isso em segundos. Em seguida você manda “adicione 3 ovos” e vai dando a receita passo a passo. Em 5 minutos o bolo está pronto, pois mesmo sem saber o que está fazendo o cozinheiro RISC é muito rápido executando tarefas simples.
Outra diferença fundamental: A arquitetura RISC além de (em teoria) ter menos instruções que a CISC, opera com instruções que usam menos ciclos de clock.
De novo, eu explico: Sabe aquelas galeras romanas, com um monte de remadores sincronizados por um sujeito batendo tambor? Primeiro, esqueça. Isso é bobagem de Hollywood, ninguém nunca usou tambor pra isso, mas a sincronia era importante.
Um navio com 180 remadores, se eles não remarem de forma sincronizada, ele não vai conseguir se mover em linha reta, nem vai navegar muito rápido. Para evitar que um remador estivesse com o remo no alto enquanto outro estivesse no começo do movimento, eram usados vários métodos.
Estudos de arqueologia experimental descobriram que o melhor método era todo mundo murmurar ou cantar uma música, naturalmente todos entravam no mesmo ritmo e sincronizavam as remadas naturalmente.
Agora imagine que cada remador é um componente de seu PC, e um componente de seu microprocessador. As memórias precisam ler ou gravar bytes, os chips de rede precisam saber quando disponibilizar dados no barramento. Os controladores tem que saber quando é hora de ler esses barramentos.
Internamente na CPU os vários módulos precisam estar sincronizados, do contrário uma pilha de memória pode enviar dados (adoro esse cacófato) para um registrador antes que ele esteja pronto, e os dados se perderão. Ou uma operação de memória para copiar XXX bytes de uma posição para outra pode não saber se os chips de memória receberam e gravaram corretamente os dados.
Para que isso não aconteça todo computador tem um clock, um oscilador operando a uma frequência específica, com base na qual todas as operações são sincronizadas. É como se aquele sujeito do tambor dos filmes de Hollywood existisse dentro desta pecinha aqui.
E sim, é mais complicado que isso em processadores modernos, cheios de paralelismo, com coisas ocorrendo ao mesmo tempo, múltiplos núcleos, threads, etc, mas continua sendo uma verdade que instruções de do processador consomem em um número discreto de ciclos de CPU.
Nos processadores CISC uma instrução tende a consumir mais ciclos de CPU para ser executada. Nos RISC as instruções são executadas mais rápido, por serem otimizadas para usar menos ciclos.
A filosofia dos processadores RISC é fazer mais via software, confiando que o processador será mais rápido executando muitas instruções simples. Eles também usam muito mais registradores do que variáveis em memória, o que também, em teoria, seria uma vantagem.
Imagine que você está descendo uma escada. Se você for um CISC você desce de degrau em degrau. Se for um RISC, desce de três em três, aos pulos.
Qual a melhor arquitetura? Não vou entrar nessa briga, faz Linux vs Windows parecer a ONU em dia de visita de turmas de escolas. As duas tecnologias possuem vantagens e desvantagens, mas originalmente o CISC saiu na frente.
Hoje um processador CISC como um Intel i9 ou um AMD Ryzen™ possuem milhares e milhares de instruções, cobrindo coisas como criptografia, otimização para games, processamento de imagem e muito mais. O custo disso é o consumo de energia.
Os CISC se especializaram em performance a qualquer custo, os RISC foram feitos para rodar com menos energia, abrindo mão de recursos e performance.
Apesar do que a Apple anda dizendo, arquitetura RISC não tem nada de novo. O conceito surgiu no final da Década de 1970, quando pesquisas mostraram que a maioria dos programas não usavam o conjunto total de instruções das CPUs da época. O Unix por exemplo quando compilado para o Motorola 68000, CPU usada no Venerável Amiga e outros computadores de menor importância, só usava 30% das instruções disponíveis.
Uma CPU com menos instruções seria menor, mais rápida, barata e consumiria menos eletricidade.
Em 1980 Berkeley começou o projeto RISC, e em 1981 produziram seu primeiro design, um chip com 44500 transístores, 31 instruções e 78 registradores.
A MIPS lançou seu primeiro processador em 1985, e fizeram extremo sucesso em sistemas embarcados, automação industrial, consoles como o Playstation, Playstation 2 e Nintendo 64. A arquitetura RISC em geral era muito procurada por consoles, até o Dreamcast do Leonan usava um SuperH RISC da Hitachi.
Em 1985 também surgiu a arquitetura ARM, na época Acorn RISC Machine, desenvolvida pela Acorn Computers britânica. A empresa já fabricava chips RISC para aplicações específicas, e decidiram produzir placas com processadores auxiliares para seu popular computador, o BBC Micro.
Eles logo descobriram que a maioria dos chips no mercado não eram ideais para o projeto, e começaram a bater cabeça, até que depois de ler os papers publicados pelo Projeto RISC de Berkeley, e descobrir que a equipe de desenvolvimento do MOS Technology 6502 era minúscula, dois engenheiros da Acorn, Steve Furber e Sophie Wilson resolveram projetar eles mesmos seu próprio chip, que seria o primeiro processador ARM.
O conjunto de instruções foi desenvolvido por Sophie Wilson, que também escreveu um simulador do chip usando BASIC. O chip foi construído pela VLSI Technology, segundo as especificações da Acorn, as parcerias começaram a aparecer, em no final dos Anos 80 a Acorn e a VLSI criaram um projeto junto com a Apple de um processador ARM que viria a se tornar a CPU do Apple Newton.
Com o tempo a arquitetura foi evoluindo, o modelo de licenciamento escolhido foi extremamente generoso, e o processador ARM se tornou imensamente popular. Hoje o market share da arquitetura é imenso:
![](https://tecnoblog.net/meiobit/wp-content/uploads/2020/08/20200814screenshot-14_08_2020-05_06_22.jpg)
Fonte: Statista
Hoje associamos o processador ARM e a arquitetura RISC a dispositivos móveis e equipamentos mais “fracos”, mas antigamente computadores de alta performance também usavam RISC, as estações gráficas da Silicon Graphics eram todas baseadas na arquitetura.
Computadores de menor capacidade também eram baseados em RISC, como os computadores da Curiosity e tantas outras sondas, baseadas na CPU RAD 750, ela mesma baseada na arquitetura Power PC.
O Power PC aliás é a grande ironia aqui. A Apple anunciou a migração de seus computadores para a plataforma ARM, como se fosse uma idéia revolucionária. E foi, em 1992, quando a Apple se juntou à Motorola e à IBM (isso mesmo, a mesma IBM que era a vilã de Steve Jobs) para produzir o PowerPC, um microprocessador com arquitetura RISC.
Em 1994 chegava ao mercado o Power Macintosh 6100, rodando em um processador PowerPC 601 a 66MHz. Dali em diante foram dezenas e dezenas de Macs, mas a performance das CPUs PowerPC não acompanhou a evolução das arquiteturas x86 e x64 da Intel e da AMD, e em 2006 a Apple migrou para a plataforma CISC da Intel.
Agora qualquer celular tem uma CPU extremamente poderosa. Em verdade um processador ARM usado em telefones e tablets é chamado SOC – System On a Chip. Além da CPU ele contém no mesmo silício controladores de rede, WIFI, uma GPU completa, controladores de memória, USB, processamento de imagem, compressão e descompressão de vídeo etc. etc e mais etc.
O Apple Silicon, codinome do novo processador ARM desenvolvido para a empresa vai mudar profundamente a forma com que software é desenvolvido para a plataforma. Teremos uma integração hardware/software como nunca vimos antes, o que em teoria resultará em excelente performance, mas não conte com isso. Software tende a crescer até consumir todos os recursos, é uma das Leis Básicas da Computação.
O que mudará também é que não teremos mais como rodar Windows de forma nativa. Há uma versão de Windows para arquitetura ARM mas a Microsoft dificilmente vai investir os recursos necessários para portar o Windows para funcionar nos novos Macs. Quem quiser usar Windows deverá se contentar com emuladores.
A Apple a cada 10 ou 15 anos muda de arquitetura; do 6502 foi para o 68000, depois para o PowerPC, depois x86/x64 e agora, Arm. A diversão é imaginar se em 2035 eles vão voltar para a Intel, ou escolher outra arquitetura esotérica que hoje só existe em algum laboratório no porão de uma empresa.
Quem viver, verá.
Source link