Professional Documents
Culture Documents
1. INTRODUC
AO Instruc
oes de tres enderecos;
A arquitetura ARM (Advanced RISC Machines) comecou
Capacidade de executar instruc
oes de 16 bits usando
como um projeto em 1983 na Arcon Computers de Cam-
a arquitetura Thumb;
bridge, Inglaterra, para desenvolver um processador que
fosse similar ao j
a usado MOS Technology 6502. Baixo consumo de energia;
O desenvolvimento da primeira vers ao foi terminado em
1985, chamado ARM1. Esta arquitetura n ao chegou ao Tamanho do n
ucleo reduzido;
mercado e a Arcon continuou no desenvolvimento, ter-
minando no ano seguinte a segunda vers ao, chamada de Ate 16 co-processadores l
ogicos.
ARM2.
Alem do 6502, a arquitetura ARM tem uma grande he- 1.2
Tipos de Nucleos:
ranca do processador Berkeley RISC1, como instruc oes de
tamanho fixo (32 bits), formato das instruc oes e a arqui- Processadores para aplicativos;
tetura load-store. Apesar disso, a Arcon optou por ter
instruc
oes multi-ciclo, ao contrario do RISC1. Processadores para sistemas embarcados;
Em sua epoca, o ARM2 era o processador de 32 bits
mais simples no mercado, com apenas 30.000 transistores, Processadores SecurCore;
mas ainda assim superava o desempenho de muitos proces-
sadores (RISC ou CISC) mais complexos, como o 286 da 1.3 Famlias:
Intel.
O desenvolvimento continuou, e o nome original (Arcon ARM7 Thumb;
RISC Machine) deixado de lado quando a ARM Ltda. foi
criada e assumiu as patentes e o desenvolvimento da ar- ARM9 Thumb;
quitetura ARM. Atualmente a arquitetura j a conta com
sua 11a versao, mas as vers oes antigas ainda sao usadas e ARM9E;
desenvolvidas, ja que o uso de cada famlia e voltado para
ARM10E;
um nicho de mercado.
Existem tambem v arias extens
oes especializadas para al- ARM11;
guma funcao ou processamento, como o Jazelle e o Thumb.
SecurCore;
1.1 Principais caractersticas da arquitetura:
OptimoDE Data Engine;
Processador de 32 bits;
Cortex Family;
16 registradores de uso geral;
Conjunto de instruc
oes extensvel com o uso de co- 2. CONJUNTO DE INSTRUC
OES DA AR-
processadores; QUITETURA ARM
Instruc
oes b
asicas similares ao 6502; A arquitetura ARM foi desenvolvida para possibilitar
implementacoes muito enxutas, sem deixar de lado o alto
desempenho. Isso e possvel pela simplicidade dos proces-
sadores ARM. Importante lembrar que implementac oes pe-
quenas implicam em baixo consumo de energia, o que torna
esses processadores interessantes para aplicac
oes m
oveis.
O ARM e tipicamente um RISC (Reduced Instruction
Set Computer). Algumas caractersticas interessantes das
instruc
oes ARM:
1
Arquitetura de LOAD / STORE. Operac oes de pro- User: execuc ao normal de programas. Possui res-
cessamento de dados nao operam diretamente com o tric
oes de acesso a registradores;
conteudo da memoria, somente com o conteudo de
registradores; FIQ (Fast Interrupt): suporta a transferencia r
apida
de dados;
Modos de enderecamento simples, com todos enderecos
IRQ (Interrupt): usado para manipulac
ao de inter-
de load / store sendo determinados a partir dos re-
rupc
oes de prop
osito geral;
gistradores ou pelos campos da instruc
ao;
Supervisor: e um modo protegido para o sistema ope-
Uniformidade e tamanho fixo dos campos das ins- racional;
truc
oes para simplificar a decodificac
ao de instruc
oes;
Abort: implementa mem
oria virtual e/ou protec
ao
Controle sobre a ALU e sobre o shifter (deslocador) de memoria;
em todas instruc
oes de processamento de dados;
Undefined: suporta emulac
ao em software de co-pro-
Auto incremento e decremento dos enderecos das ins- -cessadores;
truc
oes;
System: executa tarefas privilegiadas do sistema ope-
Instruc
oes de m
ultiplos loads / stores para maximizar racional, existente a partir da vers
ao 4 do ARM.
a performance;
Os modos de operacao podem mudar atraves de controle
Execuc
ao condicional da maioria das instruco
es. de software ou atraves de interrupc
oes externas. Durante
a execuc
ao normal de um programa o processo encontra-se
2.1 Registradores no modo User.
A arquitetura possui 31 registradores de proposito geral,
todos de 32 bits. Em qualquer momento apenas 16, dos
2.3 Tipos de Instruco es
31, registradores sao visveis. Os registradores restantes O conjunto de instruc
oes do ARM pode ser dividido em
s
ao usados em operac oes de excec
ao, quando o processa- 6 grandes classes:
dor entra em um de seus modos especiais de operac ao e
Instruc
oes de Branch;
substitui alguns dos 16 registradores comuns por registra-
dores especficos do modo. Instruc
oes de processamento de dados;
Dos 16 registradores, 2 tem papel especial:
Transferencia de registradores de status;
Link Register (R14) - possui o endereco da pr
oxima
instruc
ao a ser executada ap
os um Branch and Link Instruc
oes de Load / Store;
(BL), que e uma instruc
ao usada na chamada de su-
Instruc
oes de co-processador;
brotinas. Excluindo essa situacao, o R14 pode ser
utilizado normalmente pelo programador. Instruc
oes de gerac
ao de excec
oes.
Program Counter (R15) - possui o endereco da proxima Uma caracterstica muito importante das instruc oes ARM
instruc
ao a ser executada pelo processador. Sempre diz respeito aos bits de condicoes. A maioria das instruc
oes
possui o valor do endereco da instruc
ao atual mais 8 de processamento pode atualizar os 4 bits de flag contidos
bytes. no registrador CPSR, que indicam a ocorrencia de uma re-
sultado nulo (Zero), de resultado negativo (Negative), de
comum o uso do registrador R13 para fins de Stack
E Carry ou Overflow. Quase todas instruc oes ARM possuem
Pointer; todos outros 13 podem ser usados para prop osito 4 bits condicionais que especificam se a instrucao sera exe-
geral. A partir da vers ao 3 o ARM passou a separar em cutada ou n ao, a partir da situac
ao em que os bits de flag se
registradores independentes o seu status. Existem dois re- encontram. Com esses 4 bits condicionais e possvel existir
gistradores responsaveis por essa func
ao: o Current Pro- ate 16 situac
oes condicionais; dessas, uma e utilizada para
gram Status Register (CPSR) e o Saved Program Status execucao incondicional (sempre) de uma instruc ao a outra
Register (SPSR), ambos de 32 bits. para instrucoes que n
ao possibilitam execucao condicional.
O primeiro possui 4 bits condicionais de flag (Negative, Das outras 14 situacoes condicionais que restam podem
Zero, Carry e Overflow), 2 bits de controle de interrupc
ao, ser testadas condicoes tais quais:
5 para controle do modo atual do processador e 1 que in-
dica o tipo de instruc
ao que est
a sendo executada (ARM Igualdade e desigualdade;
ou Thumb). O segundo registrador de status guarda o
conteudo do primeiro durante uma excec ao, para possi- Menor que, menor ou igual que, maior que, maior ou
bilitar um retorno seguro do contexto anterior da CPU; igual que, em aritmetica sinalizada e n
ao-sinalizada;
existe um registrador SPSR para cada modo de excec ao Situac
ao de cada flag do registrador CPSR individu-
do processador. A figura 1 mostra a disposicao dos 31 re- almente.
gistradores e os modos de operacao que podem acess a-los.
Quando o processador encontra uma instruc ao com campo
2.2 Modos da Arquitetura ARM condicional v alido, ele compara a condic
ao desejada com
A arquitetura ARM suporta ate 7 modos de operac
oes, o status dos flags do CPSR; se ambos concordam a ins-
apresentados a seguir. truc
ao e executada normalmente, caso contr ario n
ao. Os
2
Figure 1: Tabela de Registradores
3
bits condicionais s ao ativado atraves de sufixos nas ins- S
ao instruc
oes que podem iniciar uma operacao no co-
truc
oes, conforme e mostrado na figura 2. Exemplificando, processador, podem tambem transferir dados deste ultimo
o sufixo EQ indica que a instruc
ao s
o e executada se o bit Z para a mem oria e vice-versa, e ainda podem ser usadas
(Zero) estiver ativado; assim, a instrucao ADDEQ R1,R2, para transferir dados entre registradores do ARM e do seu
20 somente adicionar a 20 ao registrador R2 e armazenar a co-processador.
em R1 se a operaca o anterior tiver ativado o bit Z.
2.3.6 Instruco es de Geraca o de Exceco es
2.3.1 Instruco es de Branch A instruc
ao SWI causa uma interrupc ao de software,
Essas instrucoes possibilitam a troca do fluxo de ins- sendo normalmente usada para fazer chamadas ao sistema
truc
oes escrevendo um endereco no PC. As instruc
oes Branch operacional. A instrucao BKPT causa uma excec ao de
comuns possuem um offset sinalizado de 24 bits, possibili- aborto. Caso uma rotina de tratamento esteja instalada
tando desvios de 32 MB. Existem ainda outros 3 tipos de no vetor de interrupc
oes essa excec
ao e tratada como um
instruc
oes Branchs. O primeiro, Branch and Link preserva breakpoint e se ha um hardware de debug instalado ele
o endereco anterior no registrador R14, podendo ser utili- tambem pode tratar essa instruc
ao como um breakpoint.
zado em chamadas de subrotinas. Um segundo tipo realiza
a troca do tipo de instruc oes, de ARM para Thumb, ou 2.4 Codigo ARM
vice-versa. Por ultimo, existe um tipo de branch que troca A caracterstica mais importante da arquitetura ARM
para o modo de execuc ao de bytecodes Java (extens ao Ja- e a grande densidade de seu c odigo. Podemos analisar
zelle). isso atraves do exemplo do algoritmo euclidiano de MDC
(Maximo Divisor Comum) apresentado a seguir.
2.3.2 Instruco es de Processamento de Dados
C
odigo em C:
Existem 12 instrucoes que tem o mesmo formato e fazem
operacoes l
ogicas e aritmeticas com ate dois operandos de
int mdc (int i, int j) {
origem, escrevendo o resultado em um terceiro operando,
while (i != j)
de destino. Essas instruc oes podem atualizar os bits de
if (i > j)
flag. Como origem podemos ter registradores, imediatos
i -= j;
ou registradores deslocados.
else
Ha ainda 4 tipos de instruc
oes de comparacao, que usam
j -= i;
o mesmo formato que as instruc oes l
ogico-aritmeticas. Es-
return i;
sas instrucoes, porem, nao escrevem o resultado em um
}
registrador de destino, mas sempre atualizam os bits de
flag.
C
odigo em ARM Assembler:
Instruc
oes de multiplicacao operam sobre dois registra-
dores de 32 bits. O resultado pode ser de dois tipos: de 32
b test
bits, que e escrito em um u nico registrador, e de 64 bits,
loop subgt R0,R0,R1
que e escrito em dois registradores.
suble R1,R1,R0
2.3.3 Transferencia de Registradores de Status test cmp R0,R1
bne loop
Existem duas instrucoes (MRS e MSR) que podem trans-
ferir dados do registrador de status. A primeira move o
conteudo do registrador de status para um registrador de 3.
SISTEMA DE MEMORIA
proposito geral e a segunda faz o inverso. A instruca
o MSR Os processadores ARM podem ser encontrados nas mais
pode ser usada para ajustar os valores dos flags, valores dos diversas aplicac
oes, e por essa raz
ao, os requisitos de mem oria
bits de interrupc
ao ou para mudar o modo do processador. variam, utilizando-se dos seguintes recursos: m ultiplos ti-
pos de mem oria, caches, buffers de escrita, mem oria virtual
2.3.4 Instruco es de Load/Store e outras tecnicas de mapeamento. O CP15 (co-processador),
Essas instrucoes podem ser de 3 tipos que fazem load / tambem conhecido como co-processador de Controle de
store de 1 unico registrador, fazem load / store de v arios Sistema, e respons avel por realizar o controle do sistema
registradores ou que trocam o conte udo de um registrador de mem oria padr ao do ARM e suas facilidades. Ele pode
com um endereco da mem oria. conter ate 16 registradores prim arios, com 32 bits cada um.
Instruc
oes de um u nico registrador acessam words, half- E para alguns destes registradores, existem bits adicionais
-words e bytes. Como podem acessar o PC, s ao usadas usados para identificar uma vers ao especfica do registra-
para jumps que alcancam os 4 GB de enderecamento. dor e/ou o tipo de acesso especfico do registrador.
As instrucoes LDM e STM, respectivamente, fazem load
e store de varios registradores ao mesmo tempo. Podem 3.1 Mais Detalhes sobre o Sistemas de Memoria
ser usadas no incio e fim de subrotinas para empilhar os Os processadores ARM (e softwares) foram projetados
registradores que devem ser preservados. para serem conectados a uma mem oria enderecada a byte,
A instrucao SWP faz a troca do conte udo de um regis- ou seja, cada endereco da memoria corresponde a um byte.
trador com um endereco de mem oria. Entao para ter acesso a uma word os dois bits menos
significativos s
ao ignorados, e caso se queira ter acesso
a uma halfword apenas o bit menos significativo e igno-
rado. O formato dos dados (Little Endian ou Big Endian)
2.3.5 Instruco es dos co-Processadores de um processador ARM e igual ao formato do sistema
4
de mem oria. A mem oria que e usada para armazenar os
programas esta dividida em: Mem oria Principal (RAM) e
Mem oria ROM. O sistema de mem oria de primeiro nvel e
composto por cache de instrucao e dados separados, areas
separadas de mem oria para instrucoes e dados, sistema
DMA para acessar a mem oria, buffer de escrita e duas
micro-TLBs.
3.1.1 Cache
Cada local de mem oria na cache e conhecido como linha
de cache. A cache no ARM e full associative, o que sig-
nifca que ela e associativa por conjunto de N vias, sendo N
o n umero total de linhas de cache, assim, qualquer busca
na cache precisa checar cada linha de cache. A cache e
tambem mapeada diretamente, ou seja, a cache e associa-
tiva por conjunto de m vias, com um conjunto de m blocos Figure 3: Sequ
encia de Acesso `
a Mem
oria
e uma entrada pode residir em qualquer bloco dentro desse
conjunto. O tamanho das linhas de cache e sempre uma
fsico, assim como a checagem de permiss ao de acesso.
potencia de dois e tipicamente s ao de 16 bytes (4 words) ou
Atraves das tabelas de traduc
ao armazenadas na memoria
de 32 bytes (8 words). A poltica de substituic ao utilizada
e obtido quase todo controle detalhado do sistema, e as
pela cache dos processadores ARM podem ser: peseudo-
entradas dessas tabelas e que definem as propriedades de
r
andomica ou Round-Robin. Quanto ao tamanho, o sis-
areas de mem
oria que variam de 1KB a 1MB de tamanho.
tema de mem oria ARM permite diferentes tamanhos de
Essas propriedades incluem:
cache, dependendo da import ancia de performance no dis-
positivo. Os processadores ARM dividem sua cache em Mapeamento de endereco virtual para fsico (este en-
duas partes: uma cache exclusiva para dados e uma cache dereco fsico identifica que localizac
ao da mem
oria
exclusiva para instruc oes, podendo assim acelerar o pro- principal est a sendo acessada);
cesso de execuc ao j
a que e permitido instruc
oes de leitura
e escrita num mesmo ciclo de clock. E o tamanho da cahe Permiss oes de aceso a mem oria (quando um acesso
de dados pode diferir do tamanho da cache de instruc ao. n
ao e permitido, um sinal de memory abort e enviado
Para cada cache, existe uma area da mem oria RAM de- para o processador);
dicada tambem separadamente, uma para dados e outra
Bits de cachability e bufferability;
para instrucoes, essas
areas sao chamadas TCM. A TCM
foi desenvolvida com objetivo de fornecer uma mem oria Registradores do CP15 que permitem controle de alto
mais est avel que as caches e ao mesmo tempo com baixa nvel, como a localizac
ao de tabelas de traduc ao.
latencia. Assim, elas s ao utilizadas para conter rotinas Tambem s ao utilizados para fornecer a situac
ao (sta-
crticas, em que a imprevisibilidade da mem oria cache e tus) dos memory aborts para o ARM;
altamente indesej avel, como por exemplo: rotinas mani-
puladoras de interrupc oes. Visando reduzir o custo medio de acesso a mem oria, os
resultados das buscas nas tabelas de traducao s
ao armaze-
3.1.2 Buffer de escrita nadas em estruturas de cache, tambem chamadas de TLBs
um bloco de mem
E oria de alta velocidade que tem (Translation Lookaside Buffers). Geralmente, um sistema
como objetivo otimizar as gravac oes na mem oria princi- que possui apenas uma interfaze de mem oria possui uma
pal. Quando deve ocorrer a gravac ao, os dados, o endereco u
nica TLB, j a um sistema que possui interface de mem oria
e outros detalhes s
ao escritos no buffer de escrita (com alta de instruc
ao e interface de memoria de dados separadas,
velocidade). E o buffer de escrita fica responsavel em com- normalmente possui TLBs separadas tambem, uma para
pletar a gravac
ao na mem oria principal, na velocidade da instruc
ao e uma para dados.
mem oria principal, que e tipicamente menor que a veloci-
dade do processador ARM.
4.1
Sequencia de Acesso a` Memoria
Ao ser gerado um acesso a mem oria pelo processador
3.1.3 Interrupco es ARM, a MMU procura o endereco virtual de acesso na
As interrupc
oes nos processadores ARM s ao sinalizadas TLB (ou nas TLBs). Caso a TLB n ao contenha a entrada
externamente e muitas implementac oes sincronizam as in- para o endereco virtual, o hardware e invocado, retornando
terrupc
oes antes de gerar uma excec
ao. Elas podem ser: a traduc
ao e a permiss ao de acesso da tabela de traducao
na mem oria principal. A informacao retornada e colocada
FIQ :solicitac
ao de interrupc
ao r
apida; na TLB em uma entrada n ao utilizada, ou sobrescrevendo
alguma entrada existente.
IRQ: solicitac
ao de interrupc
ao normal. A MMU pode ser habilitada ou desabilitada, para isso
basta alterar o bit menos significativo do registrador 11
4. SISTEMA DE GERENCIAMENTO DE do CP15. Ao desabilitar a MMU, os acessos a mem oria
MEMORIA passam a ser tratados da seguinte forma:
A MMU controla o acesso ` a mem oria externa e e res- A aplicac
ao e que determina se o uso de caches e
pons
avel pela traduc
ao do endereco virtual em endereco buffers de escrita ser
ao habilitados ou n
ao;
5
Nao s
ao realizadas verificac
oes de permiss
ao de acesso 1. FAR (Fault Adress Register): onde e escrito o en-
a mem oria, e n
ao s
ao mais gerados sinais de abortos dereco que causou a falha;
pela mmu;
2. FSR (Fault Status Register): e atualizado com status
O endereco fsico e igual ao endereco virtual, para de falha.
todos os acessos.
A arquitetura ARM tambem define um pino para abor-
Ao habilitar ou desabilitar a MMU altera-se o mapea- tos externos, permitindo que os acessos de leitura, escritas
mento de endereco virtual-para-fsico, ent
ao podem ocor- sem buffer, descritor de fetch de primeiro nvel, descritor
rer alguns problemas caso o endereco fsico do c
odigo que de fetch de segundo nvel e sem
aforos em
areas de mem oria
habilita ou desabilita a MMU n ao seja igual ao endereco possam ser abortados externamente e reiniciados de forma
virtual, devido ao prefetch de instruc
ao. segura.
Min
usculas: compreendem blocos de mem
oria de 1KB; Registrador 1: habilita/desabilita MMU;
Pequenas: compreendem blocos de mem oria de 4 KB Registrador 2: fornece o endereco fsico da tabela de
(com o controle de acesso dividido em subpaginas de traduc
ao de primeiro nvel atualmente ativa a partir
1KB); do valor dos 18 bits mais significativos;
Grandes: compreendem blocos de mem oria de 64 KB Registrador 3: cada dois bits definem a permiss ao de
(com o controle de acesso dividido em subpaginas de acesso para cada domnio (colec
ao de seco
es, paginas
16KB). grandes e pequenas).
6
Figure 4: Fluxo do Pipeline
Figure 5: Est
agios do Pipeline 6.
EXTENSOES DA ARQUITETURA
6.1 Thumb
instruc
oes l
ogico-aritmeticas assim como outras instruc
oes
As instruc
oes Thumb s ao na verdade instruc oes ARM
mais simples do processador, como branch, enquanto o
codificadas para aumentar a performance do processador
modulo de mem oria, tambem chamado Memory Pipeline, e
em certas aplicacoes, utilizando um barramento de dados
respons avel pelo processamento de instrucoes relacionadas
mais simples (de apenas 16 bits) e criando uma melhor den-
ao uso da mem oria e o m odulo de multiplicac
ao, tambem
sidade dos codigos. As vers oes de processadores ARM que
chamado de MAC Pipeline, e respons avel pelas operac
oes
possuem o conjunto de instruc oes Thumb tem a letra T em
de acumulac ao e multiplicac
ao.
seu nome, como ARM720T. O uso de instruc oes Thumb e
Main Execution Pipeline: Este pipeline e respons avel recomendado em aplicac oes que n ao utilizam toda largura
pela leitura (F1 e F2) e decodificac ao (ID) das ins- do barramento de mem oria, como algumas aplicac oes em-
truc
oes e pela leitura dos registradores (RF). Ap os barcadas.
a leitura dos registradores, se a instruc ao envolver Todas instruc
oes Thumb s ao codificadas em 16 bits. As
operac
oes de multiplicacao ou acumulac ao, ela sera operac
oes matem aticas continuam sendo de 32 bits, so-
enviada ent ao para o MAC que continua seu proces- mente o tamanho da instruc ao e que passa a ser de 16
samento. Caso contr ario, a instruc
ao continua no bits. Quando o processador est a em modo Thumb somente
pipeline principal e passa pela etapa de execuc ao na 8 registradores (R0 - R7) est ao disponveis para uso, alem
ALU (X1) e novamente, dependendo da instruc ao, do PC (R15) e do Link Register (R14). O uso do modo
pode ser desviada para o pipeline de mem oria. Caso Thumb e especificado atraves de um bit (bit T) do regis-
contrario, ele continua no pipeline principal e termina trador CPSR. Quando o bit T est a ativado a fase de fetch
o processamento nas duas fases seguintes. do processador busca instruc oes Thumb, de 16 bits.
7
6.2 Thumb-2 A ARM produz apenas as especificac oes dos processa-
Esse tipo novo de instruc ao foi implementado inicial- dores, deixando que outras empresas os fabriquem. Isso
mente no n ucleo ARM1156 (em 2003). Ele extende o li- torna um pouco difcil descobrir se um determinado pro-
mite de 16 bits do modo Thumb com algumas instruc oes duto possui um processador ARM. Ainda, grande parte
adicionais de 32 bits, para dar um melhor f olego para desses fabricantes integram outros dispositivos, principal-
aplicac
oes totalmente escritas em modo Thumb. Assim, es- mente co-processadores especficos, ao processador ARM,
sas aplicac
oes podem continuar com a densidade de codigo criando maior versatilidade ao projeto de seu produto.
do antigo Thumb, mas tem a possibilidade de utilizar re- Abaixo temos uma lista de alguns produtos que utilizam
cursos do modo ARM. processadores ARM.