O que é AArch64? O que você precisa saber sobre essa arquitetura de CPU

Embora você provavelmente já tenha usado um dispositivo com um processador AArch64 interno, talvez não saiba o que isso significa. Aqui está o que você precisa saber.

Existem muitos processadores arquiteturas lá fora, com os maiores sendo x86 e BRAÇO. Dito isto, o AArch64 provavelmente passou despercebido pelo seu radar. Mesmo o entusiasta de tecnologia bastante lido pode nunca ter ouvido falar dele, apesar do fato de estar presente em milhões de dispositivos. Bem, o fato é que AArch64 não é tão misterioso quanto é um termo técnico muito confuso. Aqui está o que você precisa saber sobre o AArch64.

AArch64 é ARM64, mais ou menos

Fonte: Braço

Resumindo, AArch64 é o nome oficial da arquitetura de conjunto de instruções (ISA) de 64 bits da Arm que foi introduzida com a atualização Armv8-A. Quase sempre se refere a AArch64. Não está claro exatamente por que o ARM64 é frequentemente usado no lugar do AArch64, mas parte da confusão parece originar-se de dois lugares. Parte disso é porque a extensão de 64 bits de x86 é x86-64, portanto, naturalmente, a extensão de 64 bits do ARM deve ser ARM64. A Apple certamente parecia pensar assim e se referiu ao AArch64 como ARM64 até 2014. Para a maioria das pessoas, "AArch64 é ARM64" é uma explicação muito satisfatória.

Se você quiser ser realmente técnico, o AArch64 não é o ISA, mas sim o estado de execução que permite que as CPUs ARM usem (e apenas usem) o conjunto de instruções A64 do ARMv8 ISA, que foi introduzido pela primeira vez com a arquitetura Armv8-A. Se isso parece confuso, é porque é. Mesmo se você estiver familiarizado com arquitetura de computadores, isso pode ser difícil de entender, então vou explicar passo a passo.

Então, tecnicamente, AArch64 é um estado, não um ISA, mas ninguém se importa, nem mesmo o próprio Arm.

ARM é uma família de ISAs relacionados e, embora diferentes ISAs geralmente impliquem incompatibilidade, isso não é estritamente verdade. Diferentes versões do ARM ISA são chamadas de ARMv1, ARMv2 e assim por diante, mas esses ISAs contêm o que são essencialmente sub-ISAs: A-profile, M-profile e R-profile. A diferença básica entre esses sub-ISAs é a quantidade mínima de instruções que cada um usa, sendo que o perfil A usa mais e o perfil M usa menos. Portanto, o ARM ISA é dividido em versões individuais, como ARMv8, e essas versões são divididas em diferentes implementações do ISA.

Armv8-A é a implementação inicial de perfil A do ARMv8 ISA, que adicionou duas coisas novas: AArch32 e AArch64. Estes são chamados de estados ou modos e permitem que as CPUs ARM acessem diferentes conjuntos de instruções, com AArch32 contendo as instruções A32 e T32 de 32 bits e AArch64 contendo as instruções A64 de 64 bits instruções. Por exemplo, se um processador está atualmente no estado AArch64 e deseja usar as instruções A32, ele deve alterar seu estado para AArch32. Além disso, no modo AArch64, os registradores de 32 bits e 64 bits são acessíveis, enquanto no modo AArch32 apenas os registradores de 32 bits são utilizáveis. A parte mais confusa de tudo isso é que todas essas coisas são variavelmente referidas como ISAs e até mesmo a Arm (a empresa que desenvolve o ARM ISA) é culpada disso.

Mas se estamos sendo super técnicos, na verdade é assim: a oitava versão do ARM ISA, ARMv8, foi implementada pela primeira vez com Armv8-A, que contém dois estados chamados AArch32 e AArch64. Quando uma CPU está no estado AArch64, ela pode executar instruções A64 de 64 bits. Então, tecnicamente, AArch64 é um estado, não um ISA, mas ninguém se importa, nem mesmo o próprio Arm.

Por que 32 bits e 64 bits são importantes para o ARM

Portanto, o AArch64 é realmente muito complicado e ter que alternar os estados apenas para usar as instruções de 32 e 64 bits parece complicado. O problema é que o suporte para 32 bits e 64 bits era importante demais para deixar passar, então tem que ser assim. Na verdade, tudo se resumia a dois problemas principais: a necessidade de oferecer suporte a softwares antigos de 32 bits e a busca por computação moderna e de alto desempenho.

Se a Arm não incluísse suporte nativo para software de 32 bits em seu primeiro ISA de 64 bits, poderia ter sido um desastre porque, simplesmente, ninguém quer reescrever o código. Se o ARMv8 exigisse que todos escrevessem um novo software do zero, isso poderia colocar o ISA em uma espiral mortal, onde ninguém fabrica ou compra Dispositivos ARMv8 devido à falta de software e, em seguida, os desenvolvedores não fazem aplicativos devido à falta de usuários, ad infinitum até que Arm tenha que chamá-lo desiste. Portanto, o suporte de 32 bits não era negociável.

Por outro lado, não implementar a computação de 64 bits também não era uma opção. A Intel e a AMD, as empresas por trás do x86, usavam arquiteturas de 64 bits desde o início dos anos 2000 para seus CPUs incríveis, embora na época não houvesse necessidade de chips ARM de 64 bits, pois os telefones não precisavam deles. Mas a invenção do smartphone mudou tudo, e todos queriam que seus telefones fizessem mais coisas. O suporte de 64 bits não apenas ajudaria os smartphones a se tornarem mais poderosos, mas também abriria a porta para as empresas fabricarem chips ARM para mercados onde o x86 tradicionalmente dominava, como laptops e servidores.

Basicamente, toda essa confusão de nomes surgiu da necessidade da Arm de modernizar sua tecnologia em resposta à mudança de prioridades. Talvez Arm não precisasse implementar o suporte de 64 bits dessa maneira, mas precisava, e foi assim que o AArch64 surgiu. Embora o AArch64 não seja um ISA, é assim que a maioria das pessoas usa o termo, para o bem ou para o mal.