Arquitetura ARM

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Arquitetura ARM
Logótipo
Captura de tela
DEC StrongARM
Produção ARM Holdings
Modelo ARMv7
Lançamento 1983
Arquitetura(s) 32 Bits
Página oficial ARM

Arquitetura ARM (primeiramente Acorn RISC Machine, posteriormente Advanced RISC Machine) é uma arquitetura de processador de 32 bits usada principalmente em sistemas embarcados. Muito usada na indústria e na informática, seu desenvolvimento se deu visando obter o melhor desempenho possível, com a limitação de ser simples, ocupar pouca área e ter baixo consumo de energia.

Os processadores ARM são conhecidos pela sua versatilidade, pois possuem poucas instruções para programação. São encontrados em PDAs, telefones celulares, calculadoras, periféricos de computador, equipamentos POS e aplicações industriais.

O padrão RISC do processador permite que estes processadores tenham menos transístores que processadores CISC (x86). Essa abordagem reduz custos, liberação de calor e consumo de energia. Essas são características desejáveis para dispositivos portáteis, como smartphones, laptops, tablets e outros dispositivos embarcados. Uma estrutura mais simples facilita a criação de multi-core CPUs, o que impacta na redução de custos de produção. Os processadores ARM são 90% dos processadores embarcados RISC de 32 bits.

Histórico[editar | editar código-fonte]

Inicialmente desenvolvido pela Acorn Computers Limited de Cambridge, Inglaterra, entre outubro de 1983 e abril de 1985, foi o primeiro processador RISC desenvolvido para uso comercial. Projeto baseado no processador Berkeley RISC I. O Núcleo ARM se manteve basicamente com o mesmo tamanho durante sua evolução. ARM2 tinha 30,000 transistores, enquanto o ARM6 evoluiu para apenas 35,000. Em 2009 alguns fabricantes de netbooks utilizaram processadores Arm em seus produtos para concorrer com o Atom da Intel.

Características da arquitetura[editar | editar código-fonte]

Principais Características:[editar | editar código-fonte]

  • Arquitetura Load-Store: as instruções somente processarão (soma, subtração, etc) valores que estiverem nos registradores e sempre armazenarão os resultados em algum registrador.
  • Instruções fixas de 32 bits de largura (com exceção das instruções Thumb compactas de 16 bits) alinhadas em 4 bytes consecutivos da memória, com execução condicional, com poderosas instruções de carga e armazenamento de múltiplos registradores, capacidade de executar operações de deslocamento e na ULA com uma única instrução executada em um ciclo de clock .
  • Formato de instruções de 3 endereços (isto é, os dois registradores operandos e o registrador de resultado são independentemente especificados)
  • 15 registradores de 32 bits para uso geral
  • Manipulação de periféricos de I/O como dispositivos mapeados na memória com suporte à interrupções.
  • Conjunto de instruções aberto a extensões através de co-processador, incluindo a adição de novos registradores e tipos de dados ao modelo do programador.
  • Baixo Consumo de energia;
  • Tamanho do núcleo reduzido;

Organização da Arquitetura ARM[2] [editar | editar código-fonte]

Os processadores e microcontroladores construídos com a arquitetura ARM são identificados conforme a versão da arquitetura adotada, o perfil e suas variantes.

Até o momento já foram definidas 7 versões de arquitetura ARM, sendo atualmente em uso apenas 4, identificadas pelo Prefixo ARMv, sendo elas ARMv4, ARMv5, ARMv6 e ARMv7.

Considerando a mais atual a ARMv7, temos 3 perfis de uso definidos, ARMv7-A, ARMv7-R e ARMv7-M sendo respectivamente usadas para, processadores de aplicação geral, processadores e microcontroladores para aplicações de uso critico e resposta em tempo real, e finalmente o perfil para uso em microcontroladores de uso geral.

As variantes são identificadas por letras adicionados as versões. No momento existem as seguintes:

  • ARMv4,

uma variante que inclui apenas o conjunto padrão de instruções ARM.

  • ARMv4T,

nesta variante é adicionado o conjunto de instruções Thumb.

  • ARMv5T

melhorias em relação a interworking e instruções ARM. adicionado "Count Leading Zeros" (CLZ) e instruções para "Software Breakpoint"(BKPT).

  • ARMv5TE

Melhorias no suporte aritmético relativo a algoritmos de processamento de sinal (DSP) , adicionado "Preload Data" (PLD), "Load Register Dual" (LDRD), Store Register Dual (STRD), e adicionado instruçòes para transferencias de 64-bits para registradores de coprocessador (MCRR, MRRC).

  • ARMv5TEJ

Adicionado a instrução BXJ e outros suportes para extensão arquitetural Jazelle®.

  • ARMv6

Adicionado novas instruções para o conjunto padrão ARM, formalizado e revisado o modelo de memória, e a arquitetura de Depuração.

  • ARMv6K

Adicionado instruções para suporte a multiprocessamento ao conjunto padrão de instruções e alguns recursos extras para o modelo de memória.

  • ARMv6T2

Introduz a tecnologia Thumb-2, que dá suporte a um maior desenvolvimento de instruções fornecendo um nível de funcionalidade similar ao conjunto de instruções padrão ARM.  Há também as extensões que são opcionais que podem ser adicionadas conforme o fabricante, as extensões são dividas em grupos, algumas delas estão listadas abaixo:

  • Extensões relativas ao conjunto de Instruções
    • Jazelle, é uma extensão que dá poder a variante arquitetural ARMv5TE como ARMv5TEJ.
    • Extensão para Virtualização.
    • ThumbEE é uma extensão que fornece um conjunto de instruções ampliado do conjunto Thumb padrão e que permite código dinamicamente gerado, sendo obrigatório no perfil ARMv7-A e é opcional no perfil ARMv7-R, para a versão arquitetural ARMv7.
    • Extensões de ponto flutuante é uma extensão para comprocessador de ponto flutuante. Esta extensão é historicamente chamada de Extensão VFP.
    • Advanced SIMD, é uma extensão do conjunto de instruções que adiciona instruções do tipo "Simgle Instruction Multiple Data" (SIND), para operação com vetores com os tipos de dados Inteiros e ponto flutuante de precisão simples, sobre registradores doubleword e quadword.
  • Extensões arquiteturais
    • Extensões de segurança.
    • Extensões para Multiprocessamento.
    • Extensões para Endereçamento Físico de Maior Largura.
    • Extensões para Virtualização.

Tipos de Núcleos[editar | editar código-fonte]

  • Processadores para aplicativos;
  • Processadores para sistemas embarcados;
  • Processadores SecurCore;

Família[editar | editar código-fonte]

  • ARM7 Thumb
  • ARM9 Thumb
  • ARM9E
  • ARM10E
  • ARM11
  • ARM15
  • SecurCore
  • OptimoDE Data Engine

Sistemas Operacionais Embarcados[editar | editar código-fonte]

Unix-Like[editar | editar código-fonte]

Linux[editar | editar código-fonte]

BSD[editar | editar código-fonte]

Solaris[editar | editar código-fonte]

Sistemas Operacionais[editar | editar código-fonte]

Sistemas Acorn[editar | editar código-fonte]

  • Arthur - Primeiro Sistema Operacional ARM;

Microsoft Windows[editar | editar código-fonte]

Ver também[editar | editar código-fonte]

Referências

  1. Cortex-A15 Processor. Página visitada em 8 de dezembro de 2013.
  2. ARM® Architecture Reference Manual - ARMv7-A and ARMv7-R edition ARM - Info Center (2014). Página visitada em 26 de Agosto de 2014.
O Commons possui uma categoria contendo imagens e outros ficheiros sobre Arquitetura ARM