Вы находитесь на странице: 1из 36

Aula 7

Engenharia de Sistemas Embarcados


Prof. Abel Guilhermino
Tpico: Arquitetura ARM
Arquitetura ARM

Advanced RISC Machine (Mquina RISC


Avanada)
So CPUs de 32 bits que utilizam a
filosofia RISC.
Histria do ARM

Surgiram no incio da dcada de 80, resultantes de um


projeto bem-sucedido da Acorn Computer Group,
Cambridge, Inglaterra.
Computadores que usavam microprocessadores de 8 bits
(ex: 6502)
1985, primeiros exemplares do ARM1 (Acorn RISC
Machine 1)
Barramento de Dados 32 bits
ARM2 e ARM3
Usados nos primeiros computadores RISC pessoais (Ex:
Archimedes 300, 400 e 500) fabricados pela Acorn.
1990, Acorn, Apple e a VLSI Technology uniram-se para
formar a Joint Venture ARM Limited.
1991, primeira verso embedded comercial da CPU
ARM, o ARM6.
ARM Limited

Atualmente a ARM Limited no fabrica chips, apenas


licencia o uso de suas CPUs (a sua propriedade
intelectual) por outros fabricantes de
microcontroladores e microprocessadores como
(Cirrus Logic, STMicroelectronics, Freescale, OKI,
Nitendo, Fujitsu, Intel, VLSI, Sansung Sharp).
Modelos de Negcio da ARM
Licenciamento simples dos ncleos da CPU
Fabricante recebe netlist + materiais necessrios aos testes
e integrao do chip
Licenciamento dos ncleos de CPU em cdigo sintetizvel
Alm de tudo listado acima, o cdigo HDL.
Caractersticas

Tornou-se lder de mercado para aplicaes


embarcadas de baixa potncia.
O processador ARM um processador RISC
ARM foi o primeiro microprocessador RISC desenvolvido
para uso comercial
A combinao de um hardware simples com um
repertrio de instrues reduzido permite eficincia no
consumo de potncia e tamanho reduzido.
Verses da CPU ARM

V1: primeira verso; inclua um conjunto de 16 registradores


da CPU, instrues bsicas de carga e armazenamento;
suportando dados de 8, 32 ou mltiplos de 32 bits. No foi
usada em nenhum produto comercial.
V2: inclua instrues de multiplicao, MAC, suporte a co-
processador; bancos de registradores para interrupes
rpidas (FIQ).
V3: Expandiu o barramento de endereos de 32 bits
(permitindo enderear at 4GiB); novos registradores de
estado da CPU; conjunto alternativo de instrues de 16 bits
(Thumb)=> aumenta densidade de cdigo com um mnimo de
impacto na velocidade de execuo.
Verses da CPU ARM

V4: adicionou instrues de manipulaes de 16bits


V5: adicionou novas instrues (ex: contagem de zeros a
esquerda, breakpoint por software, etc). Melhorou a
interoperabilidade entre os modos ARM e Thumb. Incluiu 2
mdulos de suporte a CPU: instrues avanadas de
Processamemto digital de sinal (v5TE) e o mdulo de
acelerador Java (Jazelle)(v5TEJ).
Jazelle uma mquina virtual Java multitarefa implementada
em hardware, que permite que Java Bytecode seja executado
diretamente na arquitetura do ARM como um terceiro estado de
execuo ao longo dos existentes (ARM e Thumb) = Mquina
Virtual Java.
V6: Suporte a memria; multiprocessamento e
gerenciamento de excees. Inclui os mdulos DSP e Java da
verso 5. Inserida instrues especiais para processamento
de audio e vdeo. Introduziu-se tambm a verso Thumb-2
(aumento da funcionalidade do conjunto de instrues
Thumb de 16bits, incluindo instrues de 32 bits).
Verses da CPU ARM

V7: gerao mais recente da arquitetura ARM e totalmente


baseada na tecnologia Thumb-2. Existem 3 variantes da
verso:
A Para alto desempenho. Para sistemas operacionais
sofisticados, ou baseados em memria virtual e aplicaes de
usurio.
R Para aplicaes de tempo real.
M Para pequenas aplicaes de baixo custo. Otimizado para
aplicaes de baixo custo
Caractersticas

Sries ARM

Verses ARM
Caractersticas

Modernas tecnologias
Famlias da ARM

As diferentes verses das CPUs ARM, resultaram na


criao de diversas famlias ARM, em que uma
evoluo da famlia anterior.
Somente das verses 4 e superiores do ARM continuam em
uso.
Booth Algorithm
Algoritmo de Multiplicao que multiplica dois nmeros
ARM CPU binrios com sinal em notao complemento de 2.

Processador RISC de 32 bits


Instrues de 32 bits
MAR: aponta a posio de memria (endereo) onde uma
informao ser lida ou escrita.

MBR: contm a informao lida ou escrita na posio de


memria apontada por MAR.

16 registradores de 32 bits (37


registradores internos)
Pipeline (ARM7: 3 estgios)
Cache
Tipos de dados de 8, 16 e 32 bits.
7 modos de operao
USR,Supervisor,FIQ, IRQ, ABT, SYS, UND
Estrutura Simples
Baixo consumo / Bom desempenho
Barrel Shifter
Circuito Digital que pode dar um shift em uma palavra
de N bits em um nico ciclo de clock.
Modos de Operao

O processador ARM possui 7 modos de operao


USR (User Mode): Execuo normal de programas
Programa em execuo no pode alterar o modo de
operao nem habil/desabil interrup. Apenas por reset/SWI
FIQ (Fast Interrupt Mode): Tratamento de interrupes
Para processamento rpidas
de Interrupes
IRQ (Interrupt Mode): Usado para tratamento de
interrupes comuns
Supervisor: automaticamente ativado aps reset ou
Para utilizao de interrupo de software SWI.
tarefas e S.O.
SYS (System Mode): Executa rotinas privilegiadas do S.O.
ABT (Abort Mode): Tenta tratar acesso a posies de
memria (endereos) no permitidos. Dois tipos: (1)
Processamento de busca de instruo em endereo no permitidos (2)
outras excees
acesso a dado em endereo no permitido.
UND (Undefined Mode): invocado quando instruo no
definida atinge o estgio de execuo (final do pipeline).
Estados da CPU

As CPUs ARM7 implementam a verso 4T da arquitetura


ARM e podem operar com dois conjuntos de instrues:
Estado ARM (conjunto de 32 bits)
34 instrues disponveis (cada uma com largura de 32 bits)
Caractersticas:
Acesso ao conjunto completo de 16
registradores da CPU (uso geral)
Execuo condicional de todas as instrues
Suporte a instrues para co-processadores
Estados da CPU

Estado Thumb (conjunto de 16 bits)


Disponveis 30 instrues (cada uma com largura de 16 bits)
Caractersticas
Trata-se de um subconjunto de instrues da ARM
comprimidas de 32 para 16 bits
Estas instrues so decomprimidas em tempo real e
convertidas nas instrues ARM equivalentes, antes de
serem executadas.
Em virtude da largura reduzida:
Acesso direto a apenas 8 registradores (uso geral)
Inexistncia de instrues condicionais ( a no ser os
desvios condicionais)
Inexistncia de instrues para co-processadores
Impossibilidade de alterar o modo de processamento.
No podem se valer de instrues encontradas no modo
ARM como: deslocamento de um dado, MAC, etc.
Estados da CPU

Estado Thumb (conjunto de 16 bits)


Vantagens
Aumento da densidade de cdigo (comparado ao
modo ARM).
Uma sequncia de cdigo Thumb tende a ocupar
cerca de 30% menos memria que a mesma
sequncia codificada com instrues ARM.
Estados da CPU

Obs: O cdigo no modo ARM tende a ser at 40% mais rpido, j que
so necessrias mais instrues Thumb para executar o mesmo
trabalho.
Obs: De uma maneira geral, utiliza-se o cdigo ARM nas rotinas em
que a temporizao crtica. No resto do programa normalmente
usa-se cdigo Thumb, por conta da economia de memria.
Obs: Para provocar mudana de estado ARM <-> Thumb, o
programador deve utilizar a instruo BX (desvio com mudana de
estado), disponvel nos dois conjuntos de instrues.
No caso da Linguagem C (Compilador IAR), possvel usar os
identificadores _arm e _thumb para forar o compilador a
gerar cdigo ARM ou Thumb para a funo especfica.
Neste caso o compilador providencia o uso da instruo BX para
realizar a chamada com a alterao do estado da CPU
Registradores da CPU

A arquitetura ARM inclui um total de 37 registradores


da CPU, todos com largura de 32 bits.
A quantidade de registradores disponveis depende do
estado da CPU.
Estado ARM: 17 registradores (16 de uso geral e um de
estado de programa)
Estado Thumb: 12 registradores (oito de uso geral e
quatro de uso interno da CPU)
Registradores da CPU
Registradores no estado ARM

No estado ARM, os registradores R0 e R12 so destinados ao


uso geral e podem ser utilizados livremente pelo
programador (ou compilador).
O R13 normalmente usado como apontador de pilha de
memria (SP). No estado ARM o controle da pilha fica
inteiramente a cargo do sofware, que pode selecionar a sua
posio e direo de empilhamento.
O R15 utilizado como contador de programa (PC), e aponta
o endereo de memria e que a prxima instruo ser
buscada.
Observe que a memria organizada em bytes, portanto o PC
incrementado de 4 em 4 bytes a cada nova instruo ARM
executada.
Devido ao Pipeline (busca, decodificao,execuo), o PC
est sempre apontando 8 bytes adiante a instruo
atualmente em execuo. (Em desvios o pipeline esvaziado
(flushed) e em seguida preenchido novamente -> 3 ciclos).
Registradores no estado ARM

O CPSR (Current Program Status Register Registrador de


Estado Atual do Programa) contm os bits de estado do
processador: flags de resultados da ULA, bits de controle de
interrupo, bits de controle do modo de operao do Proc.
Registrador SPSR (Saved Program Status Register
Registrador de Salvamento do Estado do Programa) armazena
o temporariamente o contedo do CPSR durante o
processamento de uma execuo.
Na entrada da rotina de tratamento da exceo, a CPU copia
automaticamente o CPSR para o SPSR.
Na execuo de uma rotina especial de retorno do programa faz
com que o contedo salvo no SPSR seja copiado pra o CPSR.
Registradores no estado ARM
Registradores no estado Thumb

No estado ARM, apenas 8 registradores (R0 a R7) so diretamente


acessveis maioria das instrues.
O R13 no modo ARM opera sempre como apontador da pilha
(SP) no estado Thumb e ela implementada como uma
estrutura LIFO (Pilha).
O registrador R14 chamado de LR no estado Thumb e
tambm no pode ser acessado pela maioria das funes.
O registrador R15 no modo ARM chamado de PC no estado
Thumb e tambm no pode ser acessado pela maioria das
instrues.
Como as instrues Thumb possuem largura de 16 bits, o PC
incrementado de 2 em 2 bytes a cada nova instruo
executada.
Devido ao pipeline (busca, descompresso, execuo) o PC
aponta sempre apontando 4 bytes adiante a instruo
atualmente em execuo.
Registradores no estado Thumb
Registrador CPSR

O registrador CPSR (Registrador de Estado Atual da


CPU) contm os principais bits e flags de controle da
CPU

31 30 29 28 27 ........ 8 7 6 5 4 3 2 1 0
N Z C V Q ........ - I T F M4 M3 M2 M1 M0

I=Controle de Interrupo IRQ Modos Process CPU


N=indicador de negativo
Z =indicador de zero F=Controle de Interrupo FIQ
C =carry T=Controle do estado da CPU
V =overflow (resultado maior que limite) 0 = estado ARM
1 = estado Thumb
Q =Indicao de Saturao Obs: No estado Usurio = Nunca alterar T
Indicao de saturao para operaes com instrues DSP.
Deve-se usar o registrador BX
Saturao no resultado de uma adio usando QADD ou QSUB.
Bits de Seleo do Modo de Processamento da CPU

M4 M3 M2 M1 M0 MODO
1 0 0 0 0 User
1 1 1 1 1 System
1 0 0 0 1 FIQ
1 0 0 1 0 IRQ
1 0 0 1 1 Supervisor
1 0 1 1 1 Abort
1 1 0 1 1 Undefined
Modos de Processamento

Modo Usurio (usr)


O modo de usurio no-privileiado e utilizado para
operaes cotidianas do programa.
O programa de execuo no pode alterar o modo de
operao nem habilitar/desabilitar interrupes
As nicas formas de sada desse modo no o reset ou a
execuo de uma interrupo por software (SWI).
Em ambos os casos, o novo modo de operao para a ser
o supervisor.
Modos de Processamento

Modo System (sys)


Esse modo privilegiado normalmente empregado para
execuo de sistemas operacionais.
Modo privilegiado de usurio para sistema operacional
Permite acesso ao mesmo conjunto de registradores do
modo de usurio, mas no possui as limitaes dele.
Como este um modo privilegiado, possvel selecional
qualquer outro modo de operaes a partir dele.
Modos de Processamento

Modo Supervisor (svc)


O modo supervisor automaticamente selecionado aps um
reset ou uma interrupo de software (SWI).
Normalmente utilizado para execuo de sistemas operacionais.
Quando a entrada nesse modo foi provocada pela execuo de
uma instruo SWI, o endereo de retorno (o endereo da
instruo seguinte a SWI) salvo no registrador LR(R14) e o
contedo do CPSR salvo em SPSR_svc.
Em seguida a CPU selciona o modo correto nos bits M4 a M0 do
registrador CPSR (10011), seleciona o estado ARM(T=0) e
desabilita as interrupes IRQ(I=1).
Aps isso, o PC(R15) carregado com valor 0x00000008, o que
faz o cluso do programa seja desviado para esse endereo. O
contedo do pipeline esvazia-se e ele passa a ser preenchido
com as instrues do novo endereo e seguintes.
Aps a execuo da instruo, o contedo do pipeline
novamente e carregado com as instrues seguintes a SWI.
Modos de Processamento

Modo Abort (abt)


Modo privilegiado utilizado para processamento dos chamados
aborts, que consistem basicamente na tentativa de acesso a
posies de memria no implementadas ou no permitidas.
Existem duas modalidades de abort, sendo uma por busca de
instruo em endereo no permitido (prefetch abort) e outra
por acesso de dado em endereo no permitido (data abort).
Prefetch Abort
Esse tipo de abort somente ocorre ao tentar executar uma instruo,
biscada em uma posio de memria invlida ou no permitida.
Data Abort
Possui comportamento similar ao prefetch abort, com a diferena de
que esse tipo de abort provocado pela tentativa de escrever ou ler
um adado em uma posio de memria no permitida.
Modos de Processamento

Modo Undefined (und)


O undefined um modo de processamento privilegiado invocado
quando uma instruo no definica atinge a unidade de
execuo ( o final do pipeline ).
Quando a CPU no reconhece a instruo, a linha interna nCPI
ativada (nvel 0), o caso o co-processador esteja presente e
reconhea a instruo, ele sinaliza este fato CPU (atravs da
linha CPA). A CPU ento aguarda que o co-processador termine
de executar a instruo, o que sinalizado pela linha interna
CPB. Nesse caso nenhuma exceo gerada.
Modos de Processamento

Modo IRQ (irq)


Modo privilegiado para tratamento de interrupes nos ARM.
Ele invocado quando a linha de interrupo IRQ da CPU
colocada em nvel lgico 0 ao mesmo tempo em que o bit I do
CPSR est em nvel 0.
Reconhecida a interrupo, a CPU completa a execuo da
instruo corrente e realiza as aes:
O endereo da prxima instruo mais 4 armazenado no R14_irq
O contedo do CPSR armazenado no registrador SPSR_irq
O registrador CPSR alterado. O modo IRQ selecionado nos bits de
modo (10010), assim como o estado ARM (T=0). A interrupo IRQ
desabilitada (I=1).
Em seguida o PC carregado com o endereo 0x00000018 e o
programa desviado para l.
Modos de Processamento

Modo FIQ (fiq)


Outro modo de interrupo disponvel nos ARMs.
Diferenas entre ele e o IRQ so:
Maior prioridade: o modo FIQ possui maior prioridade que o IRQ.
Conjunto de registradores especiais: o modo FIQ dispe de um
conjunto de registradores R8 a R12 diferenciado do modo IRQ e dos
demais modos de operao da CPU. Isso permite que o tratamento
da interrupo responda muito mais rpido ao evento da
interrupo, j que esses registradores podem ser empregados
localmente sem a necessidade de preservao do seu contedo.
Organizao de Memria do ARM

Apesar de se tratar de uma CPU de 32 bits, o ARM


capaz de manipular dados de 8 e 16 bits.
Alm disso o conjunto de instrues Thumb possui
tamanho de 16 bits.
O contador de programa (PC) desses chips aponta
sempre para words de memria (essa a razo de ser
incrementado de 2 em 2 a cada instruo Thumb e de
4 em 4 para ARM).
Tambm suportam organizao de dados no formato
little endian e big endian.
Organizao de Memria do ARM

Array linear de bytes numerados


de 0 a 232 1 bit 31 bit 0

A CPU normalmente requer 23 22 21 20

alinhamento da memria 19 18 17 16
word16
conforme o tipo de dado. 15 14 13 12
Tipos de dados half-word14 half-word12
11 10 9 8
bytes (8 bits) word8
7 6 5 4
half-words (16 bits) sempre byte6 half-word4
alinhadas no limite de 2-bytes 3 2 1 0 byte
byte3 byte2 byte1 byte0 address
(iniciam em endereo par)
words (32 bits) sempre
alinhadas no limite de 4-bytes
(iniciam em endereo mltiplo
de 4)
Barrel Shifter

Вам также может понравиться