Saltar para o conteúdo

Arquitetura ARM

Origem: Wikipédia, a enciclopédia livre.
Arquitetura ARM
Logótipo
Arquitetura ARM
Captura de tela
Arquitetura ARM
DEC StrongARM
Produção ARM Holdings
Modelo ARMv7
Lançamento 1983
Arquitetura(s) 32 e 64 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. São processadores que visam a simplificação das instruções, com o intuito de atingir a máxima eficiência por ciclo, podendo realizar tarefas menores com ciclos mais curtos, e uma maior ordenação das operações dentro do núcleo de processamento. 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.

O processador ARM possui sete modos de operação que podem ser intercambiados através do software, interrupções externas e processamento de execuções. Normalmente as aplicações são executadas a nível de usuário. Enquanto o processador esta no modo usuário o programa sendo executado é incapaz de acessar alguns recursos protegidos do sistema ou mudar de modo.

Os outros modos além do modo usuário são denominados modos privilegiados. Eles tem acesso completo aos recursos do sistema e podem mudar de modo livremente.

Registradores: Os registradores podem ser utilizados para manipular dados de um byte, de meia palavra (16 bits) ou de uma palavra completa (32 bits). Quando instruções de um byte são utilizadas somente o byte menos significativo é utilizado. Quando instruções de meia palavra são utilizadas somente a palavra menos significativa é utilizada. Ao fazer referência a algum destes registros de propósito específico deve-se sempre levar em consideração qual o modo de operação corrente. Um outro registrador importante é o CPSR (Current Processor Status Register), que carrega informações sobre o estado corrente do processador, inclusive o modo de execução atual.

Histórico

Resultado do projeto inovador de um bem sucedido fabricante britânico de computadores chamado Acorn Computer Group. 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.

Em 1985 surgiram os primeiros exemplares do microprocessador ARM1 (Acorn RISC Machine 1) e, no ano seguinte, a versão comercial ARM2. Esses microprocessadores possuíam um barramento de dados de 32 bits e outro de endereços de 26 bits (que permitiam endereçar até 64MiB de memória). Incluíam também um conjunto de 16 registradores de 32 bits, sendo um deles destinado ao contador de programa e bits de estado do processador. As versões iniciais dos microprocessadores ARM (ARM2 e ARM3) foram utilizadas nos primeiros computadores RISC pessoais (Archimedes 300, 400 e 500) fabricados pela Acorn.

Em 1990, a Acorn Computer Group, a Apple Computer e a VLSI Technology uniram-se para formar a ARM Limited (Advanced RISC Machines), e em 1991 foi lançada a primeira versão comercial, o ARM6, juntamente com o primeiro microprocessador da ARM, o ARM610. Os principais conceitos por trás da arquitetura ARM são a simplicidade, baixo custo e baixo consumo.

Atualmente, a ARM Limited não fabrica chips, apenas desenvolve o projeto e licencia o uso de suas CPUs (a sua propriedade intelectual) para que outros fabricantes (como Cirrus Logic, STMicroelectronics, NXP, Texas Instruments, Atmel, Samsung, Sharp, Qualcomm, Nvidia, etc) possam produzir ou alterar as CPUs.

  • Outubro/1983, a Acorn Computers LTDA desenvolve o primeiro processador ARM.
  • 26 de abril de 1985 protótipos do ARM são fabricados pela VLSI Technilogy e são utilizados pela primeira vez em BBC Micros: primeiro processador RISC a ser comercializado.
  • 80's, os ARMs são utilizados nos desktops da Acorn (BBC MAster e Acorn Archimedes).
  • 80's, é criada uma versão estática, o ARM2aS.
  • Fim 80's, visando uma versão totalmente estática, a Apple junta-se a Acorn para desenvolver novas versões do ARM.
  • Novembro/1990, a AdvancedRM LTDA é fundada resultante de uma junção da Acorn com a Apple Computer e a VLSI Technology.
  • 1991, são lançados os primeiros do ARM6.
  • 1995, DEC e ARM lançam o StrongARM. ( Intel compra DEC e ganha o StrongARM de "presente").
  • 1998, ARM LTDA é introduzida nas bolsas de Londres e DASDAQ.
  • Ao longo dos anos 90, ARM torna-se líder no mercado de processadores embarcados de alto desempenho e baixo consumo de energia.

Características da arquitetura

Principais Características:

  • 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)
  • 16 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 mInodelo do programador.
  • Pipelines de 3 a 15[1] estágios.
  • Baixo Consumo de energia;
  • Tamanho do núcleo reduzido;

Interrupções são definidas por configurações programáveis. FIQ: Fast Interrupt Request, maior prioridade. IRQ: Vectorred Interupt Request, intermediária (0 à 15). Não - Vectored Interupt Request, menor prioridade. As prioridades das interrupções dos diversos dispositivos são ajustadas dinamicamente

Bloco de conexão de pinos, este bloco permite selecionar pinos do microcontrolador que possuem mais que uma função. registros de configuração controlam os multiplexadores para permitir a conexão entre os pinos e os periféricos no chip. Periféricos devem ser conectados a pinos apropriados antes de serem habilitados e antes de qualquer interrupção relacionada seja ativada. Ativação de qualquer função periférica que não é mapeada para um pino relacionado devem ser consideradas indefinidas.

Propósitos gerais Paralell I/O e Fast I/O: pinos que não são conectados a específicas funções periféricas são controlados pelos registros do GPIO. Pinos podem ser configurados dinamicamente como entrada ou saída. Separar os registros permite configurar ou limpar qualquer número de saídas simultaneamente, o valor do registro de saída pode ser lido novamente, bem como os estados atuais das portas. No paralell e Fast I/O há controle de direção individual dos bits e todas as I/O viram input no reset.

Organização da Arquitetura ARM[2]

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

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

Família

Sistemas Operacionais Embarcados

Unix-Like

Linux

BSD

Solaris

Sistemas Operacionais

Sistemas Acorn

  • Arthur - Primeiro Sistema Operacional ARM;

Microsoft Windows

Ver também

Referências

  1. «Cortex-A15 Processor». Consultado em 8 de dezembro de 2013 
  2. «ARM® Architecture Reference Manual - ARMv7-A and ARMv7-R edition». ARM - Info Center. 2014. Consultado em 26 de Agosto de 2014