Proprietário | BRAÇO |
---|---|
Local na rede Internet | www.arm.com |
As arquiteturas ARM são arquiteturas externas do tipo RISC 32 bits (ARMv1 a ARMv7) e 64 bits ( ARMv8 ) desenvolvidas pela ARM Ltd. desde 1983 e introduzidas a partir de 1990 pela Acorn Computers . A arquitetura ARM é fruto do trabalho de Sophie Wilson .
Com uma arquitetura relativamente mais simples do que outras famílias de processadores e consumidores de baixo consumo de energia, os processadores ARM são hoje dominantes no campo da computação embarcada , em particular na telefonia móvel e nos tablets .
Esses processadores são fabricados sob licença por um grande número de fabricantes.
Hoje, a ARM é mais conhecida por seus sistemas em um chip (SoC) , integrando-se em um único chip: microprocessador , processador gráfico (GPU), DSP , FPU , SIMD e controlador de periférico . Eles estão presentes na maioria dos smartphones e tablets. ARM oferece arquiteturas que são vendidas sob licença de propriedade intelectual para designers. Eles oferecem diferentes opções nas quais os construtores podem levar o que lhes interessar para complementar com suas próprias opções de designer ou de terceiros. A ARM, portanto, oferece microprocessadores Cortex para os SoCs mais recentes ( Cortex-A para dispositivos portáteis como smartphones e tablets, Cortex-M para acoplamento a um microcontrolador , Cortex-R para microprocessadores em tempo real ), processadores gráficos ( Mali ), barramentos AMBA sob licença gratuita, bem como os vários outros componentes necessários para a composição do SoC completo. Alguns fabricantes, como a Nvidia , preferem produzir seu próprio processador gráfico, outros, como a Samsung, preferem em alguns casos levar em alguns casos um processador gráfico de terceiros ou ARM dependendo do modelo, e outros, como a Apple, modificam algum microprocessador componentes combinando várias arquiteturas de processador ARM (o Apple A6, por exemplo, combina as tecnologias de microprocessador Cortex-A9 e Cortex-A15).
A arquitetura ARM foi inicialmente desenvolvida internamente pela empresa britânica Acorn Computers , que a utilizou a partir de 1987 em sua linha de computadores Archimedes de 32 bits .
ARM então significava 'Acorn Risc Machine'. Posteriormente, a divisão de “criação de microprocessadores” da Acorn foi separada da matriz e passou a ser “Advanced Risc Machine limited”, posicionando-se com uma oferta independente para o mercado de eletrônicos embarcados.
Uma particularidade dos processadores ARM é seu modo de venda. Na verdade, ARM Ltd. não fabrica nem vende seus processadores como circuitos integrados . A empresa vende as licenças de seus processadores para que sejam gravados em silício por outros fabricantes. Hoje, a maioria dos principais fundadores de chips oferece arquitetura ARM.
O primeiro núcleo produzido é o ARM2, vendido no Archimedes A310 e depois na gama A4xx. Ele apresentava um pipeline de 3 estágios.
O núcleo mais famoso é o ARM7TDMI que tem um pipeline de 3 estágios. Além disso, o ARM7TDMI possui um segundo conjunto de instruções denominado THUMB que permite a codificação de instruções em 16 bits para, assim, conseguir uma economia significativa de memória, em particular para aplicações on-board.
ARM Ltd. em seguida, desenvolveu o núcleo ARM9, que apresenta um pipeline de 5 estágios. Isso permite, portanto, um aumento no número de operações lógicas em cada ciclo de clock e, portanto, uma melhoria no desempenho da velocidade.
A arquitetura ARM é usada em um grande número de campos e equipamentos, por exemplo, as calculadoras TI-Nspire e HP-50G . Essa arquitetura também é muito difundida na telefonia móvel.
Muitos sistemas operacionais são compatíveis com esta arquitetura:
Também é possível aglomerar núcleos de diferentes potências, os de menor consumo e potência trabalhando a maior parte do tempo, possibilitando minimizar o consumo de potência dos núcleos mais potentes, que são acionados apenas em caso de alta demanda de computação para acelerar o processamento. Esta tecnologia é chamada big.LITTLE , é usada pela Samsung , com seus 5 octo Exynos (4 córtex de baixa potência-A7 e 4 córtex de alta potência-A15), MediaTek e outros. O Tegra 3 da Nvidia, usa uma técnica semelhante com um só coração e vários de baixa potência de alta potência.
A arquitetura ARM é fortemente inspirada pelos princípios de design RISC . Possui 16 registros gerais de 32 bits. As instruções, codificadas em 32 bits até ARMv7, podem ter execução condicional; na arquitetura de 64 bits ( ARMv8 ), apenas algumas instruções podem ter execução condicional.
O conjunto de instruções recebeu extensões ao longo do tempo, como Thumb , para melhorar a densidade do código, NEON , para fornecer instruções SIMD , ou Jazelle , para melhorar a execução do código Java .
Os seguintes processadores usam as tecnologias indicadas abaixo:
Jazelle DBX (Direct Bytecode eXecution) é uma técnica para executar diretamente bytecode Java em arquiteturas ARM como um terceiro estado de execução (e conjunto de execução), em paralelo com o ARM existente e no modo Thumb. O suporte para este estado é indicado pelo " J " da arquitetura ARMv5TEJ e os nomes principais ARM9EJ-S e ARM7EJ-S. O suporte para este estado é necessário do ARMv6 (exceto para o perfil ARMv7-M). No entanto, os núcleos mais novos incluem apenas uma implementação trivial que não fornece aceleração de hardware.
Thumb é um conjunto de instruções de 16 bits que fornece um subconjunto das instruções ARM clássicas de 32 bits e economiza memória significativa. Para obter uma codificação mais compacta dessas instruções, certos operandos estão implícitos e as possibilidades oferecidas são mais limitadas.
No modo Thumb, as instruções de 16 bits oferecem menos possibilidades. Apenas as conexões podem, por exemplo, ser condicionais e várias instruções são limitadas ao acesso de uma pequena parte dos registros gerais do processador. Essas possibilidades reduzidas melhoram a densidade geral de um programa, embora algumas operações exijam mais instruções. Isso pode reduzir o tempo necessário para carregar o código na memória (liberando largura de banda) e aumentar a probabilidade de permanecer no cache de instruções, aumentando significativamente o desempenho.
Hardware integrado, como o Game Boy Advance, normalmente tem uma pequena quantidade de RAM acessível através de um barramento de dados de 32 bits, mas a maioria é acessada através de um segundo barramento de 16 bits ou menos. Nesta situação, é muito interessante compilar seu programa no modo Thumb e otimizar manualmente as poucas seções mais demoradas usando o conjunto completo de instruções ARM de 32 bits, permitindo que essas instruções maiores sejam colocadas no barramento. .
O primeiro processador que contém um decodificador de instrução Thumb é o ARM7TDMI . Todos os ARM9s e superiores (incluindo XScale ) incluem um decodificador Thumb.
A tecnologia Thumb-2 começa com o núcleo ARM1156 anunciado em 2003. Thumb-2 expande o conjunto limitado de instruções de 16 bits do Thumb com instruções adicionais de 32 bits para dar mais amplitude ao conjunto de instruções. Isso resulta em um conjunto de instruções de largura variável. O Thumb-2 visa atingir uma densidade de código próxima à do Thumb enquanto mantém um desempenho semelhante ao da instrução ARM definida na memória de 32 bits.
Thumb-2 estende o conjunto de instruções Thumb e o conjunto de instruções ARM, incluindo manipulação de campo de bits, ramificações de tabela e execuções condicionais. Uma nova Unified Assembly Language (UAL) oferece suporte à geração simultânea de código de instrução ARM e Thumb-2 a partir do mesmo código-fonte; As versões do Thumb nos processadores ARMv7 também são capazes de código ARM, incluindo a capacidade de escrever funções de tratamento de interrupções. É necessário um pouco de cuidado e o uso da nova instrução " IT " (se-então), que permite executar quatro instruções sucessivas dependendo de uma condição de teste. Ao compilar para código ARM, este caso é ignorado, mas ao compilar para Thumb-2, uma instrução real é gerada. Por exemplo :
; if (r0 == r1) CMP r0, r1 ITE EQ ; ARM : pas de code ... Thumb : instruction IT ; then r0 = r2; MOVEQ r0, r2 ; ARM : conditionnel ; Thumb : condition via ITE 'T' (then) ; else r0 = r3; MOVNE r0, r3 ; ARM : conditionnel ; Thumb: condition via ITE 'E' (else) ; Se rappeler que l'instruction MOV de Thumb n'a pas de bits pour encoder "EQ" ou "NE"Todos os chips ARMv7 suportam o conjunto de instruções Thumb-2. Os outros chips nas séries Cortex e ARM11 suportam todos os estados de instrução ARM ou instrução Thumb-2.
ThumbEE , também chamado Thumb-2EE , ou, comercialmente Jazelle RCT for (Runtime Compilation Target, que significa em inglês "destino de compilação em tempo real"), foi anunciado em 2005 e aparece pela primeira vez no processador Cortex-A8 . ThumbEE é o quarto estado do processador, adicionando pequenas alterações ao conjunto de instruções estendidas do Thumb-2. Essas mudanças tornam o conjunto de instruções particularmente adequado para gerar código em tempo de execução, por compilação em tempo real, em ambientes de tempo de execução controlados. ThumbEE é voltado para linguagens de programação como Limbo , Java, C # , Perl , Python ou Ruby e permite que compiladores gerem menos código de saída sem afetar o desempenho.
Os novos recursos do ThumbEE incluem a verificação automática de ponteiro nulo em cada instrução de carregamento e salvamento, uma instrução que verifica os limites de um array, acesso aos registradores r8-r15 (onde a máquina virtual Jazelle / Java DBX é mantida) e instruções especiais que chamam uma função de retorno de chamada . Os manipuladores são freqüentemente chamados de pequenas seções de código, normalmente usados para implementar uma funcionalidade de linguagem de programação de alto nível, como alocar memória para um novo objeto. Essas alterações foram feitas para reorientar alguns opcodes e saber se o coração está no modo ThumbEE.
A tecnologia VFP ( ponto flutuante vetorial ) é uma extensão de coprocessador do tipo FPU em arquiteturas ARM. Ele fornece o cálculo de baixo custo de ponto flutuante de precisão única e formatos de ponto flutuante de precisão dupla que atendem ao padrão ANSI / IEEE Std 754-1985 para aritmética de ponto flutuante binário . O VFP fornece cálculos de ponto flutuante para realizar um amplo espectro de aplicativos e necessidades, como PDAs , smartphones , compressão e descompressão de voz, gráficos tridimensionais ou áudio digital, impressoras, caixas multimídia e aplicativos automotivos. A arquitetura VFP foi projetada para suportar a execução de modo de instruções vetoriais curtas, mas elas operam sequencialmente em cada elemento vetorial e, portanto, não oferecem o desempenho de um verdadeiro paralelismo vetorial como um SIMD faz . Esses modos vetoriais foram rapidamente retirados após sua introdução para serem substituídos pela unidade NEON Advanced SIMD muito mais poderosa.
Alguns processadores, como o ARM Cortex-A8, foram amputados com um módulo VFPLite em vez de um módulo VFP completo e requerem aproximadamente dez vezes mais ciclos de clock por operação de ponto flutuante. Outros coprocessadores de ponto flutuante ou SIMD que podem ser encontrados em processadores baseados na arquitetura ARM incluem NEON , FPA , FPE, iwMMXt . Eles fornecem algumas funcionalidades semelhantes aos VFPs, mas não são compatíveis com ele no nível de opcode .
A extensão Advanced SIMD (também chamada de NEON ou MPE para Media Processing Engine ) é um SIMD ( Instrução Única, Dados Múltiplos ), combinando conjuntos de instruções de 64 e 128 bits, que fornecem aceleração computacional padronizada para mídia, 2D / 3D e aplicativos de processamento de sinal. O NEON está incluído em todos os núcleos Cortex-A8, mas é opcional nos núcleos Cortex-A9. NEON pode fazer a decodificação de MP3 em um processador operando a 10 MHz e pode codificar / decodificar codec de áudio GSM AMR para 13 MHz e pode acelerar a decodificação de formatos de vídeo como h264 ou Real . Ele contém um conjunto de instruções, um arquivo de registro separado e execução de hardware independente. Possui 32 registros flutuantes de 64 bits, que compartilha com a FPU, que podem ser acoplados para formar 16 registros de 128 bits flutuantes, e também aceita que esses registros sejam tratados como inteiros com ou sem sinal de 8, 16, 32 e 64 bits. Este SIMD suporta até 16 operações simultâneas. Cores como o ARM Cortex-A8 e Cortex-A9 suportam vetores de 128 bits, mas processam apenas 64 bits por vez, enquanto no Cortex-A15 mais recente pode processar 128 bits por vez.
A tecnologia LPAE ( Grande extensão de endereço físico ) foi implementado pela primeira vez no Cortex A 3 ª geração (Cortex-A7, Cortex-A15 e Cortex-A17). Esta extensão é usada em processadores ARM de 32 bits, permitindo endereçamento de 32 bits (máximo de 4 gigabytes) a 40 bits (máximo de 1 terabyte). Requer uma MMU com extensão VMSAv7 . Com essa extensão, a granularidade de controle do MMU é de 4 KiB .
Esta extensão funciona em várias etapas:
O registro ID_MMFR3fornece o tamanho do endereço físico suportado (32 bits, 36 bits ou 40 bits).
TrustZone é uma tecnologia de criptografia e segurança de trocas com plataformas de terceiros, segundo os padrões Trusted Execution Environment (TEE). O objetivo é evitar que o usuário ou aplicativos de terceiros instalados no terminal acessem os dados trocados neste chamado ambiente confiável. É, por exemplo, usado em ambientes de arquivos protegidos por gerenciamento de direitos digitais (GND), também chamado de DRM em inglês.
ARM também oferece processadores gráficos (GPUs) chamados Mali que podem ser integrados em arquiteturas ARM SoC . A primeira série, Mali 200, usada em processadores como o SoC Telechips TCC890x.
A segunda série, Mali 300, não parece ter sido usada pelos fabricantes.
A terceira série, Mali 400 MP, é oferecida em processadores mais avançados , geralmente Cortex A9, como o ST-Ericsson U8500, Samsung Exynos 4 ou Amlogic 8726-M, mas também no Cortex A8 AllWinner A1X .
A série Mali 600 é destinada ao Cortex A15. Ele equipa em particular o Samsung Exynos série 5. O primeiro modelo foi o Mali T604.
A API genérica para acessar a GPU MALI compatível com EXA / DRI2 de código aberto gratuito (licenças Apache e MIT) está disponível para Mali 200, 300, 400 e 600 na plataforma Linux, mas a parte de menor acesso ao processador, dependendo no fabricante permanece fechado.
O projeto do driver Lima foi criado para desenvolver um driver livre que permitisse a plena utilização desses processadores. DentroSetembro de 2013, já excede o desempenho de pilotos proprietários na série 400 do Mali.
No entanto, muitos SoCs ARM incluem uma GPU PowerVR ou, mais raramente, outros processadores gráficos ( Qualcomm Adreno , Vivante , Nvidia ), todos com drivers para Linux, mas a parte 3D é proprietária e de código fechado. O projeto Freedreno tem os mesmos objetivos para o Adreno que o projeto do piloto de Lima para a série do Mali.
Arquitetura | Família (s) |
---|---|
ARMv1 | ARM1 |
ARMv2 | ARM2 , ARM3 |
ARMv3 | ARM6, ARM7 |
ARMv4 | StrongARM , ARM7TDMI , ARM8 , ARM9 TDMI |
ARMv5 | ARM7EJ , ARM9E , ARM10E , XScale , FA626TE, Feroceon, PJ1 / Mohawk |
ARMv6 | ARM11 (en) |
ARMv6-M | ARM Cortex-M ( ARM Cortex-M0 , ARM Cortex-M0 + , ARM Cortex-M1 ) |
ARMv7-A | ARM Cortex-A (Gen1: ARM Cortex-A8 , Gen2: ARM Cortex-A9 MPCore , ARM Cortex-A5 MPCore , Gen3: ARM Cortex-A7 MPCore , ARM Cortex-A12 MPCore , ARM Cortex-A15 MPCore , adaptação de terceiros : Escorpião, Krait, PJ4 / Sheeva , Swift |
ARMv7-M | ARM Cortex-M ( ARM Cortex-M3 , ARM Cortex-M4 , ARM Cortex-M7 ) |
ARMv7-R | ARM Cortex-R ( ARM Cortex-R4 , ARM Cortex-R5 , ARM Cortex-R7 ) |
ARMv8-A | ARM Cortex-A35 , ARM Cortex-A50 ( ARM Cortex-A53 , ARM Cortex-A57 ), ARM Cortex-A72 , ARM Cortex-A73 , X-Gene , Denver, Cyclone , Exynos M1 / M2 |
ARMv8.2-A | ARM Cortex-A55 , ARM Cortex-A65 , ARM Cortex-A75 , ARM Cortex-A76 |
ARMv8.3-A | ARM Cortex-A65AE (apenas LDAPR, o resto em 8.2), ARM Cortex-A76AE (igual a A65AE) |
ARMv8-M | ARM Cortex-M23 , ARM Cortex-M33 |
ARMv8-R | ARM Cortex-R53 |
A propriedade intelectual pertence a uma empresa do Reino Unido, mas os processadores licenciados são licenciados por várias empresas em todo o mundo. Entre as empresas que fabricam os modelos da série Cortex (as mais avançadas), a maioria está na Ásia (20), seguida pelos Estados Unidos (13) e finalmente pela Europa (6).