Você está na página 1de 24

MICROPROCESSADORES E

MICROCONTROLADORES
AULA 6

Prof. Sérgio Luiz Veiga

1
CONVERSA INICIAL

Neste tema iremos estudar um dispositivo que oferece alta performance,


alto poder de processamento e um baixo consumo, com vastas aplicações,
principalmente daquelas que necessitam e fazem uso de
sistemas operacionais.
Atualmente, os aplicativos com base em processadores ARM pode ser
encontrado em cerca de 85% dos dispositivos móveis do mundo, incluindo
smartphones, tablets, videogames, etc. Mais de 50% dos smartphones contêm
processadores implementados com as mais recente arquitetura ARM.
Então, ao estudarmos este dispositivo, estaremos familiarizados com uma
arquitetura considerada o marco na indústria de semicondutores.
Algumas características mencionadas ao longo de nosso estudo estarão
referenciadas para a CPU do ARM7. Bons estudos!

Tema 1: Introdução e Famílias


“Os microcontroladores e microprocessadores ARM (Advanced RISC
Machine – Máquina RISC Avançada) são CPUs de 32 bits que utilizam a filosofia
RISC (Reduced Instruction Set Computer)”. (PEREIRA, 2013, p. 17)

Os processadores ARM têm seu projeto focado em baixo consumo de


energia e apresentam tamanho reduzido do chip. Essas características
tornam a arquitetura ideal para aplicações que sofrem restrições de
consumo de energia, e de tamanho dos dispositivos.
De fato, processadores ARM podem ser encontrados em grande
variedade de aparelhos, e entre eles estão muitos que já fazem parte
do cotidiano de inúmeros usuários, como Smartphones, Tablets,
televisores, etc. A evolução da arquitetura desde o seu advento trouxe
diversas capacidades ao processador ARM, tornando-o ainda mais
utilizado. Dessa forma, é de grande interesse o entendimento de suas
características básicas.
A história da arquitetura ARM começou em 1980, quando a
Acorn Computer assinou um contrato com a emissora britânica BBC,
para projetar a arquitetura do processador que seria usado no projeto
Computer Literacy Project. O sucesso do projeto e os lucros obtidos

2
permitiram o projeto do primeiro processador ARM, ARM1, que foi
usado posteriormente como coprocessador no computador da BBC e
foi sucedido por versões gradativamente melhores. Na época, ARM era
a sigla para Acorn RISC Machine. No início, a Acorn Computer
encomendava a fabricação dos processadores à VLSI Technology Inc.,
mas o sucesso da arquitetura levou a grandes demandas, que a
fabricante não podia atender. Isso levou à necessidade de outro
fabricante ou à criação de uma nova empresa. Decidiu-se por uma
nova empresa, a ARM Ltda., fundada por Acorn Computer, VLSI
Technology e Apple Computer.
(Disponível em:
<http://docplayer.com.br/8897475-Processadores-arm-visao-geral-e-
aplicacoes.html>. Acesso em: 01 de dezembro de 2016)

Foi mantida a opção de não fabricar os processadores, mas licenciar


as arquiteturas projetadas para fabricantes de semicondutores. A sigla
ARM passou a significar Advanced RISC Machine, mas em meados da
década de 90, a arquitetura passou a se chamar apenas ARM.
Atualmente a arquitetura já conta com sua 11ª versão, mas as versões
antigas ainda são usadas e desenvolvidas, já que o uso de cada família
é voltado para um nicho de mercado.
(Disponível em:
<http://docplayer.com.br/8897475-Processadores-arm-visao-geral-e-
aplicacoes.html>. Acesso em: 01 de dezembro de 2016)

Entre os negócios da ARM, podemos destacar:


 Licenciamento simples dos núcleos de CPU: neste, o fabricante
ou o integrador recebe uma listagem que permite a fabricação do chip
em escala industrial, contendo os periféricos que o fabricante desejar,
além dos materiais necessários aos testes e integração do chip.
(Disponível em:
<https://pt.wikipedia.org/wiki/N%C3%BAcleo_(sistema_operacional)>.
Acesso em: 16 de dezembro de 2016)

 Licenciamento dos núcleos de CPU em código sintetizável:


neste, os modelos licenciados recebem além de todo o citado
anteriormente, o código em uma linguagem de descrição de hardware
(geralmente Verilog ou VHDL). Com esse código é possivel modificar
o chip para atender às necessidades específicas de projeto ou mesmo
incluir novas funcionalidades.
(Disponível em:
<https://pt.wikipedia.org/wiki/Linguagem_de_descrição_de_hardware
>. Acesso em: 16 de dezembro de 2016).

3
Evolução da família
“As diferentes versões das CPUs ARM, resultaram na criação de diversas
famílias ARM, em que cada uma é evolução da família
anterior, normalmente visando ao aumento de performance, sendo”:
(PEREIRA, 2013, p. 19)
• ARM1 – 1985 - protótipo que não chegou ao mercado.
• ARM2 – 1986 – Possuía um barramento de dados de 32 bits, porém
só usava 26 bits, deixando os 6 bits restantes para as flags de estado.
Foi considerado o microprocessador de 32 bits mais simples, com
30.000 transistores (comparando com o Motorola modelo 68000, seis
anos mais velho e continha 70.000 transistores), não
tinha cache.
• ARM3 – 1989 – 4KB de cache, melhorou a performance.
Ao longo dos anos 90, a ARM torna-se líder no mercado de
processadores embarcados, pois oferece alto desempenho com baixo
consumo de energia.
• ARM6 – 1991 – Processador 32 bits, tinha somente 35000
transistores. A Apple usou em seus primeiros PDAs processadores
ARM 610 (1994).
• ARM7 – 1994 – Usa metade da energia utilizada no ARM6 e tem de
50% a 100% mais performance.
• ARM7TDMI – Pipeline de 3 estágios. Processador de 32 bits que
combina tamanho reduzido, pouca energia e alta performance (usado
em Game Boy Advance, iPod).
• StrongARM – Série mais rápida que os ARM anteriores, tem
limitações de softwares com suas versões anteriores, pois possui
diferentes tamanhos para memória e instruções.
• ARM8 – Pipeline de 5 estágios, banda de memória duplicada.
Aumento na taxa de clock.
• ARM9TDMI – Pipeline de 5 estágios também, usado em calculadoras
HP. Reduziu o espaço do programa executável em 35%.
• ARM9E – Processador de 32 bits, incluindo instruções da ARM®,
Thumb® e Dsp. Usado em vídeogames da Nintendo e telefones como
Sony Ericson.
• ARM10E – Pipeline de 6 estágios, cache variando entre 32k e 16k,
dependendo do modelo. Excelente combinação de performance e
pouco consumo de energia.
(Disponível em:
<http://sca.unioeste-
foz.br/~habib/x/trabalhos/grupob3/public_html/html/evolucao.htm>.
Acesso em: 02 de dezembro de 2016).

• XScale – Linha produzida pela Intel, baseada na arquitetura


StrongARM, usam menos energia porque trabalham em velocidades

4
inferiores do que os CPUs Desktop. Trabalham entre 133MHz e
400MHz, comparado a 2GHz dos CPUs usados em desktop. Pipeline
de 7 estágios.
• ARM11 – É uma das famílias de maior performance. Essas CPUs
utilizam a versão 6 da arquitetura ARM, com Pipeline de 8 ou 9
estágios, predição dinâmica de desvios, barramento de 64 bits,
trabalham entre 532 e 665 MHz. É usado em comunicadores como
Nokia E90, Apple, iPhone.
• Cortex – Atualmente o processador mais poderoso da ARM, trabalha
de 600Mhz até mais de 1 GHz. Inclui 13 estágios de Pipeline, com
estados de espera programáveis.
(Disponível em:
<http://sca.unioeste-
foz.br/~habib/x/trabalhos/grupob3/public_html/html/evolucao.htm>.
Acesso em: 02 de dezembro de 2016).

Tema 2: Arquitetura

 A arquitetura ARM foi desenvolvida para possibilitar


implementações muito enxutas, sem deixar de lado o alto
desempenho. Isso é possível pela simplicidade dos processadores
ARM. Importante lembrar que implementações pequenas simplificam
em baixo consumo de energia, o que torna esses processadores
interessantes para aplicações móveis. O ARM é tipicamente uma
máquina RISC (Reduced Instruction Set Computer).
 Algumas características interessantes das CPUs ARM:
Conjunto grande e uniforme de registradores;
(Disponível em:
<http://docplayer.com.br/12862182-A-arquitetura-arm-mc722-projeto-
de-sistemas-computacionais-pedro-henrique-gomes-tatiane-silvia-
leite-uirauna-imirim-caetano.html>. Acesso em: 02 de dezembro de
2016).

 Arquitetura de LOAD / STORE. Normalmente utilizada em


máquinas RIC, essa arquitetura baseia-se no princípio de que qualquer
operação de dados é feita somente com o conteúdo de registradores.
Instruções especiais de carga (Load) e armazenamento (STORE) são
utilizados para intercâmbio entre os dados da memória e dos
registradores da CPU;
 Modos de endereçamento simples, com todos endereços de
load/store sendo determinados a partir dos registradores ou pelos
campos da instrução;
 Uniformidade e tamanho fixo dos campos das instruções para
simplificar a decodificação de instruções;

5
 Controle sobre a ALU e sobre o shifter (deslocador) em todas
instruções de processamento de dados;
(Disponível em:
<http://docplayer.com.br/12862182-A-arquitetura-arm-mc722-projeto-
de-sistemas-computacionais-pedro-henrique-gomes-tatiane-silvia-
leite-uirauna-imirim-caetano.html>. Acesso em: 02 de dezembro de
2016).

 Instruções Condicionais. Todas as instruções ARM podem ter


sua execução condicionada ao estado predefinido dos flags de estado
da CPU. Desta forma, uma instrução somente é executada se a
condição especificada nela for igual à condição atual dos flags da CPU,
caso contrário não é executada e não produz efeito algum.
(Disponível em: <https://pt.wikipedia.org/wiki/Arquitetura_ARM>.
Acesso em: 16 de dezembro 2016).

 Utilização arquitetura de memória Von Neumann. Um detalhe


bastante importante é que, apesar de o processador ARM ser RISC, o
modo de acesso das memórias de dados e programa estruturalmente
são Von Neumann com barramento de 32 bits.
(Disponível em: <https://pt.wikipedia.org/wiki/Arquitetura_ARM>
Acesso em: 16 de dezembro 2016).

A Figura 1, a seguir, apresenta um diagrama em blocos simplificado da


CPU ARM7, no qual se vê que a unidade lógica e aritmética (ULA) possui duas
entradas, sendo o barramento A (A bus) e B (B bus) responsáveis por alimentar
a ULA com operandos vindos de registradores da CPU.
Adicionalmente os dados vindos pelo barramento B podem ser
deslocados de 0 a 31 bits (deslocamento lógico bit a bit à esquerda ou à direita)
antes de serem utilizados pela ULA. Essa operação é feita pelo bloco barrel
shifter (conhecido como circuito lógico digital, capaz de realizar o deslocamento
de múltiplos bits à esquerda ou à direita).

As instruções RISC utilizadas pelo ARM viabilizaram a construção de


uma CPU bastante simples e eficiente, que permitiu a implementação
de um decodificador de instrução muito menos complexo do que o
baseado no CISC que faz uso de microcódigo.
(Disponível em: <https://pt.wikipedia.org/wiki/Arquitetura_ARM>.
Acesso em: 16 de dezembro 2016).

6
Figura 1: Diagrama em blocos CPU ARM7

Tema 3: Registradores da CPU

7
“A arquitetura ARM inclui um total de 31 registradores da CPU e pode
operar com dois conjuntos de instruções, sendo um de 32 bits chamado ARM e
outro de 16 bits chamado Thumb”. (PEREIRA, 2013, p. 70)

Registradores do Estado ARM

Quando operam no estado ARM, a CPU do ARM7 com exemplo, estão


disponíveis 34 instruções, cada uma com 32 bits, inclui características
interessantes como acesso ao conjunto completo de 17 registradores,
execução condicional de todas as instruções e suporte a instruções de
coprocessadores.
(Disponível em: <https://pt.wikipedia.org/wiki/Arquitetura_ARM>
Acesso em: 16 de dezembro 2016).

“Os registrados denominados de R0 a R12 são destinados ao uso geral e


podem ser utilizados livremente pelo programador”. (SOUZA, 2013, p. 71)
O registrador R13 é utilizado como apontador de pilha (SP - Stack
Pointer). No estado ARM, o controle da pilha fica inteiramente a cargo do
software, que pode selecionar a sua posição e direção desejada. O registro R14
armazena o endereço de retorno de uma sub-rotina ou no processamento de
uma exceção (LR – Link Register), permitindo, assim, diminuir o tempo gasto
com a operação de empilhar e desempilhar do PC (Contador de Programa) da
pilha. As instruções de desvios (Branch) copiam automaticamente o endereço
da instrução seguinte direto para
esse registrador.
O registrador R15 é o utilizado pelo contador de programa (PC – Program
Counter) e aponta o endereço de memória em que a próxima instrução será
buscada. Como a memória é organizada em bytes, o incremento do PC ocorre
de quatro em quatro bytes, a cada nova instrução ARM executada. Como
exemplo, o ARM7 possui um Pipeline de três estágios, busca decodifica e
executa as instruções, sendo assim, o PC está sempre apontando oito bytes
adiante da instrução atualmente em execução. Como cada instrução tem 32 bits
(quatro bytes), a instrução no estágio de decodificação está quatro bytes à frente
da instrução em execução, e a instrução a ser buscada está oito bytes à frente

8
da instrução em execução. A Tabela 1 apresenta a descrição de operação do
Pipeline para o estado ARM.

Tabela 1: Funcionamento Pipeline estado ARM

Endereço Operação
PC Busca
PC - 4 Decodificação
PC - 8 Execução

Uma característica bastante importante referente ao Pipeline é


que, sempre quando ocorre um desvio no fluxo sequencial de
execução do programa, o conteúdo do Pipeline é esvaziado e
em seguida é preenchido novamente. Em decorrência disso, são
necessários três ciclos de clock até que a primeira instrução no
endereço de destino seja executada.
(Disponível em:
<https://pt.wikipedia.org/wiki/Pipeline_(hardware)>. Acesso em:
16 de dezembro de 2016).

O registrador CPSR (Current Program Status Register –


Registrador Estado Atual do Programa) contém os bits de estado
do processador: flags da ULA, bits de controle de interrupção e
bits de controle do modo de operação do processador.
(PEREIRA, 2013, p. 71)

Registrador do Estado Thumb

No estado Thumb, estão disponíveis somente 30 instruções, cada uma


com tamanho fixo de 16 bits. Tecnicamente, esse conjunto de instrução é um
subconjunto das instruções ARM, comprimidas e convertidas nas instruções
ARM equivalentes, antes de serem executadas.
Neste estado de operação, há 12 registros, sendo de R0 a R7 destinados
ao uso geral e podem ser utilizados livremente pelo programador.

9
O registrador R13 do modo ARM que opera como apontador da pilha é
chamado simplesmente de SP para o modo Thumb, assim como o registrador
R14 do modo ARM, chamado de LR no estado Thumb e o registrador R15,
contador de programa chamado PC para o modo Thumb.
Como as instruções do modo Thumb possuem tamanho de 16 bits, o PC
é incrementado de dois em dois bytes a cada nova instrução a ser executada.
Além disso, o PC aponta sempre para a próxima instrução a ser buscada, o que
implica, devido ao Pipeline, na instrução em execução quatro bytes abaixo do
valor atual do PC. Na Tabela 2, temos apresentação da descrição do
funcionamento do Pipeline para o modo de execução Thumb.

Tabela 2: Funcionamento Pipeline estado Thumb

Endereço Operação
PC Busca
PC – 2 Decodificação
PC – 4 Execução

Na tabela 3, temos apresentação dos registradores disponíveis, tanto para


o modo ARM como para o modo Thumb.

Tabela 3: Conjunto de registradores para modos ARM e Thumb


Modo ARM Modo Thumb
Função
Registradores Registradores
R0 R0
R1 R1
R2 R2
R3 R3 Uso geral
R4 R4
R5 R5
R6 R6

10
R7 R7
R8
R9
R10
R11
R12
R13 SP Apontador de Pilha (SP)
R14 LR Endereço de Retorno (LR)
R15 PC Contador de Programa (PC)
CPSR CPSR Estado da CPU

Tema 4: Modos de Operação

Podemos classificar os modos de operação da CPU ARM em duas


classes genéricas: modo privilegiado e não privilegiado. No modo privilegiado é
permitido ao programa alterar algumas características de operação da CPU no
que consiste em habilitação / desabilitação das interrupções e alteração do modo
de processamento. São especialmente utilizados pelo núcleo de sistemas
operacionais. No modo não privilegiado, não é possível realizar as alterações
descritas anteriormente. Esta operação é utilizada normalmente pelas
aplicações executadas dentro de um sistema operacional. Dessa forma, elas não
podem interferir no funcionamento do núcleo do sistema.
Existem, no total, sete modos de operação da CPU ARM, sendo, seis
caracterizados como privilegiados e um não privilegiado. Os modos User (usr) e
System (sys) não são usados para a operação cotidiana do dispositivo, enquanto
os modos supervisor (svc), FIQ (fiq), IRQ (irq), abort (abt) e undifined (und) são
denominados modos de exceções, pois são automaticamente solicitados por
eventos externos à CPU.

11
Modo User (usr)
Este modo de operação é não privilegiado e utilizado para operações
cotidianas do programa, sendo que o programa em execução não pode alterar o
modo de operação nem habilitar/desabilitar interrupções. As únicas formas de
saída desse modo são o reset ou a execução de uma interrupção por software.
Em ambas as situações, o novo modo de operação passa a ser o supervisor.

Modo system (sys)


Esse modo privilegiado é normalmente empregado para execução de
sistemas operacionais, no qual permite acesso ao mesmo conjunto de
registradores do modo usuário, mas não possui as limitações contidas nele.
Como é um modo privilegiado, é possível selecionar qualquer outro modo
de operação.

Modo Supervisor (svc)


Este modo é selecionado automaticamente após um reset ou uma
interrupção por software. Quando selecionado pela execução de uma
interrupção o endereço de retorno, ou seja, o endereço da instrução seguinte é
salvo no registrador LR, e o conteúdo do registrador de status CPSR é salvo
temporariamente num registrador chamado SPSR.

Modo Abort (abt)


É um modo privilegiado que consiste basicamente na tentativa de acesso
à posição de memória não implementada ou não permitida. Existem duas
modalidades de abort, sendo uma por busca de instrução em endereço não
permitido (prefetch abort) e outra por acesso de dado em endereço não permitido
(data abort).
 Prefetch Abort – Ocorre ao tentar executar uma instrução buscada em
posição de memória inválida ou não permitida. Nesse caso, a execução da
instrução é abortada, mas a operação gasta um ciclo de acesso sequencial, no

12
que se refere à temporização da instrução. Este nome decorre do fato de que a
instrução que ocasiona a execução já foi previamente carregada da memória e
encontra-se no Pipeline, aguardando o instante da sua execução. Essa
execução somente ocorre se a instrução for efetivamente executada, ou seja, se
ela atingir o último estágio do Pipeline.
 Data Abort – Possui um comportamento muito similar ao do
prefetch abort, com a diferença de que esse tipo de abort é provocado pela
tentativa de escrever ou ler um dado de uma posição de memória não permitida
ou não implementada, sendo que a detecção ocorre durante a execução da
instrução.

Normalmente, essa execução é utilizada em associação com uma


unidade de gerenciamento de memória (MMU). Quando a CPU tenta
acessar um endereço de memória não implementado fisicamente ou
não permitido, a MMU gera um sinal de abort que provoca a entrada
nesse modo. (PEREIRA, 2013, p. 78)

Modo Undefined (und)


Este modo de processamento privilegiado é selecionado quando uma
instrução não definida atinge a unidade de execução no final do Pipeline. Quando
a CPU não reconhece a instrução, um sinal de controle é ativado, e caso o
coprocessador esteja presente e reconheça a instrução, ele sinaliza esta
ocorrência à CPU, onde então aguarda que o coprocessador termine de executar
a instrução e, neste caso, nenhuma exceção é gerada.
“Outra situação seria a extensão do conjunto de instrução da CPU, em
que é possível inserir opcodes não implementados, cuja tentativa de execução
resulta nesta exceção”. (PEREIRA, 2013, p. 79)

Modo IRQ (irq)


Consiste num modo privilegiado para tratamento de interrupções ARM. É
selecionada esta exceção, quando a linha de controle de interrupção IRQ da
CPU é colocada em nível lógico “0”, ao mesmo tempo em que o bit do registrador

13
CPSR referente a interrupções IRQ habilitadas, também estiver em nível lógico
“0”.

Modo FIQ (fiq)


É também outro modo de interrupção disponível nos processadores ARM.
As principais diferenças em relação ao IRQ são:
 Maior Prioridade – O modo FIQ possui maior prioridade no tratamento das
interrupções em relação ao modo IRQ. Se ocorrerem interrupções
simultaneamente, o modo FIQ será tratado primeiramente.
Segundo Pereira (2013, p. 80):

Conjunto de registradores especiais – O modo FIQ dispõe de um


conjunto de registradores de R8 a R12 diferenciado do modo IRQ e
dos demais modos de operação da CPU. Esses registradores
diferenciados permitem que a rotina de tratamento das interrupções
FIQ respondam muito mais rapidamente ao evento, já que estes
registradores podem ser empregados localmente sem a necessidade
de preservarem os seus dados.

Tema 5: Conjunto de Instruções

O conjunto principal de instruções possui um tamanho fixo de 32 bits e é


o conjunto padrão de instruções quando a CPU se encontra no modo ARM (T=0
no CPSR). As instruções ARM podem ser divididas em 6 classes: (PEREIRA,
2013, p. 82)
 Instruções de branch;
 Instruções de processamento de dados;
 Instruções de acesso ao registrador de estado;
 Instruções de load e store;
 Instruções do coprocessador;
 Instruções geradoras de exceções.

14
Instruções de Branch

Todos os processadores ARM suportam instruções de branch com


saltos condicionais. Saltos mais longos podem ser feitos através de
chamadas de sub-rotinas, como o Branchwhith Link (BL), que mantém
o endereço de retorno no LR (R14). A maioria destas instruções
contém um campo de condição de 4 bits. Estas condições são ativadas
através de sufixos que são colocados junto com os mnemônicos das
instruções. Por exemplo, um salto (B) pode ser acompanhado de um
NE (not equal), o que gera uma expressão BNE. Essa instrução só será
executada caso a condição seja verdadeira. Na Tabela 4, são
apresentas as instruções para o controle de fluxo.
A instrução BX permite a troca entre o estado ARM e o estado THUMB.
Esta instrução copia o conteúdo de um registrador de propósito geral
para o PC. Caso o bit[0] do valor transferido para o PC seja 1, o
processador troca para o estado THUMB.
(Disponível em:
<http://sca.unioeste-
foz.br/~habib/x/trabalhos/grupob3/public_html/html/assembly.htm>
Acesso em: 02 de dezembro de 2016)

Tabela 4: Instruções controle de fluxo


Tipo Salto Significado Utilização Típica
B Incondicional Executar sempre o salto
BAL Sempre Executar sempre o salto
BEQ Igual Comparação de igualdade ou teste de resultado a 0
BNE Diferente Comparação de desigualdade ou teste de resultado
não 0
BPL Maior Resultado positivo ou nulo
BMI Menor Resultado negativo
BCC Flag de Carry a “0” Operação aritmética não gerou carry-out
BLO Inferior Resultado da comparação sem sinal é valor inferior
BCS Flag de Carry a “1” Operação aritmética gerou carry-out
BHS Superior ou igual Resultado da comparação sem sinal é valor superior
ou igual

15
BVC Flag overflow a “0” Resultado da operação com sinal não gerou
overflow
BVS Flag overflow a “1” Resultado da operação com sinal gerou overflow
BGT Superior Resultado da operação com sinal é valor superior
BGE Superior ou igual Resultado da operação com sinal é valor superior ou
igual
BLT Menor Resultado da operação com sinal é valor inferior
BLE Menor ou igual Resultado da operação com sinal é valor inferior ou
igual
BHI Superior Resultado da operação com sinal é valor superior
BLS Igual ou superior Resultado da operação com sinal é valor igual ou
superior

Instruções de Processamento de Dados

As instruções de manipulação de dados têm tipicamente três


endereços, que são independentes e podem ser repetidos na mesma
instrução:
<opcode>{<cond>}{S} <Rd>, <Rn>, <oper2>
 O primeiro endereço (Rd) identifica o registro de destino;
 O segundo endereço (Rn) identifica o registro que contém o
primeiro operando;
 O terceiro endereço (oper2) identifica a origem do segundo
operando, que pode ser um registro, ou um valor guardado num
registro após deslocamento ou uma constante.
(Disponível em:
<https://adeetc.thothapp.com/classes/SE1/1314i/LI51D-LT51D-
MI1D/resources/2210>. Acesso em: 02 de dezembro de 2016).

O ARM possui 16 instruções, apresentadas, a seguir, na Tabela 5.

Tabela 5: Resumo instruções processamento de dados


Opcode Mnemônico Significado Efeito
0000 AND E lógico bit-a-bit Rd:=Rn AND oper2
0001 EOR Ou Exclusivo lógico bit-a-bit Rd:=Rn EOR oper2

16
0010 SUB Subtração Rd:=Rn - oper2
0011 RSB Subtração com comutação Rd:= oper2 – Rn
operandos
0100 ADD Adição Rd:=Rn + oper2
0101 ADC Adição com carry Rd:=Rn + oper2 + C
0110 SBC Subtração com carry Rd:=Rn - oper2 + C -1
0111 RSC Subtração com carry e Rd:=oper2 – Rn + C -1
comutação dos operandos
1000 TST Teste Update flags após Rn
AND oper2
1001 TEQ Teste de equivalência Update flags apósRn EOR
oper2
1010 CMP Comparação Update flags apósRn -
oper2
1011 AMN Comparação com negação do Update flags apósRn +
segundo operando oper2
1100 ORR Ou lógico bit-a-bit Rd:=Rn OR oper2
1101 MOV Mover, copiar dado Rd:= oper2
1110 BIC Nand lógico bit-a-bit Rd:=Rn AND NOT oper2
1111 MVN Mover, copiar com negação Rd:= NOT oper2

Instruções de Acesso ao Registrador de Estado da CPU

Existem duas instruções para mover os conteúdos de um registrador


de propósito geral e de um registrador de estado, que são as seguintes:
 MRS – move o conteúdo do registrador de estado para um
registrador de propósito geral.
 MSR – move o conteúdo do registrador de propósito para um
registrador de estado.
(Disponível em:
<http://sca.unioeste-
foz.br/~habib/x/trabalhos/grupob3/public_html/html/assembly.htm>.
Acesso em: 02 de dezembro de 2016).

Instruções de Load e Store

17
A arquitetura ARM suporta dois tipos de instruções de load e store, que
transferem o conteúdo de um registrador para a memória ou ao
contrário. O primeiro tipo pode carregar ou escrever uma palavra de 32
bits ou um byte sem sinal.
O segundo tipo pode ler ou escrever meia palavra de 16 bit sem sinal,
e pode carregar e sinalizar meia palavra de 16 bit ou um byte. Este tipo
de instrução está disponível apenas para a arquitetura ARM versão 4
ou posterior.
Codificação das instruções:
Instrução que lê e carrega palavra ou byte sem sinal:
(Disponível em:
<http://sca.unioeste-
foz.br/~habib/x/trabalhos/grupob3/public_html/html/assembly.htm>.
Acesso em: 02 de dezembro de 2016)

I,P, U, W – são bits para distinguir diferenças entre tipos de


<addressing_mode>.
 L bit – Diferencia instrução de load (L==1) e store (L==0)
 B bit – Diferencia byte sem sinal (B==1) e palavra (B==0)
 Rn – Especifica o registrador base utilizado por <addressing_mode>
 Rd – Especifica o registrador onde vai ser carregado ou de onde vai
ser escrito.
Instrução que lê e carrega meia palavra ou lê um byte sinalizado:
(Disponível em:
<http://sca.unioeste-
foz.br/~habib/x/trabalhos/grupob3/public_html/html/assembly.htm>.
Acesso em: 02 de dezembro de 2016)

I,P,U,W – são registradores que especificam o tipo de endereçamento


 L bit - Diferencia Load (L==1) e Store (L==0)
 S bit – Diferencia meia palavra sinalizada (S==1) e não sinalizada
(S==0).
 H bit – diferencia meia palavra (H==1) e byte sinalizado (H==0).
 Rn – Especifica o registrador base a ser utilizado pelo modo de
endereçamento.

18
 Rd – Especifica o registrador do qual será lido ou onde será carregado
a informação.
(Disponível em:
<http://sca.unioeste-
foz.br/~habib/x/trabalhos/grupob3/public_html/html/assembly.htm>
Acesso em: 02 de dezembro de 2016)

Instruções Geradoras de Exceções


Existem duas instruções deste tipo:
 A SWI, que causa uma interrupção de software. É o mecanismo
principal utilizado pelo ARM para poder executar códigos do Sistema
Operacional no modo de usuário (User Mode).
 E existe o BKPT. Essa instrução é usada para breakpoints na
arquitetura ARM da versão 5 em diante.
A codificação destas instruções é a seguinte:
(Disponível em:
<http://sca.unioeste-
foz.br/~habib/x/trabalhos/grupob3/public_html/html/assembly.htm>.
Acesso em: 02 de dezembro de 2016)

Instruções do Coprocessador

São instruções para fazer a comunicação com coprocessadores. Elas


permitem ao processador ARM iniciar uma operação de
processamento de um coprocessador. Permite fazer transferências
entre os registradores do processador e dos coprocessadores. E

19
permite, também, ao processador criar endereços para o
coprocessador carregar e escrever instruções.
(Disponível em:
<http://sca.unioeste-
foz.br/~habib/x/trabalhos/grupob3/public_html/html/assembly.htm>.
Acesso em: 02 de dezembro de 2016)

Conjunto de Instruções Thumb

Este conjunto possui instruções com as mesmas finalidades das


instruções ARM, porém são codificadas com 16 bits. Estas instruções
THUMB geram códigos menores, porém muitas vezes ocorre de
aumentar o número de instruções que o processador deve executar.
Uma solução para isso são aplicações que utilizam ambos os tipos de
instruções (ARM e THUMB). Aplicações deste tipo conseguem reduzir
o tamanho do seu código significativamente e conseguem manter o
consumo de energia baixo.
(Disponível em:
<http://sca.unioeste-
1 8
foz.br/~habib/x/trabalhos/grupob3/public_html/html/assembly.htm>.
3 Acesso em: 02 de dezembro de 2016)

SÍNTESE

Neste tema aprendemos a respeito do princípio de funcionamento e da


arquitetura dos processadores ARM, que é implementada em mais de 80% dos
processadores de 32 bits atuais, principalmente devido à sua versatilidade de
uso em diversas aplicações práticas, pela boa performance
8 que apresenta e pela
8
constante atualização de novas versões que são lançadas pela ARM.
“Também, não podemos deixar de mencionar a curiosidade que a ARM
não manufatura chips, e sim fornece licença para as empresas, tais como: ST
Semiconductor, Freescale, Texas Instruments, Phillips e outras, fabricarem seus
respectivos chips.” (PEREIRA, 2013, p. 18)

O tamanho reduzido dos processadores ARM e seu baixo consumo de


energia permitem o desenvolvimento de sistemas a baixíssimo custo e, por meio
do alto poder de processamento, tal como o Raspberry Pi. Trata-se de um

20
pequeno "computador" de baixo custo, que executa diversas aplicações
evolvendo sistema operacional Linux.

Raspberry Pi

É um “computador” do tamanho de um cartão de crédito, que se


conecta a um monitor de computador ou TV e usa um teclado e um
mouse padrão, desenvolvido no Reino Unido pela Fundação
Raspberry Pi. Todo o hardware é integrado numa única placa,
conforme a Figrua 2.
(Disponível em: <https://pt.wikipedia.org/wiki/Raspberry_Pi>. Acesso
em: 16 de dezembro de 2016)

Figura 2: Placa Raspberry Pi3 modelo B

Esta placa contém as seguintes características:

21
Fonte:<http://wiki.seeedstudio.com/wiki/Raspberry_Pi_3_Model_B>.
Acesso em: 16 de dezembro de 2016.

REFERÊNCIAS

ARM THE ARCHITECTURE FOR THE DIGITAL WORLD. ARM Architecture


Reference Manual. 1996-1998, 2000, 2004, 2005 ARM Limited. Disponível
em: <http://www.arm.com/products/CPUs/families.html>

DOCPLAYER. Processadores ARM: visão geral e aplicações. Disponível em:


<http://docplayer.com.br/8897475-Processadores-arm-visao-geral-e-
aplicacoes.html>. Acesso em: 01 de dezembro de 2016.

GOMES, P. H.; LEITE, T. S.; CAETANO, U. I. Arquitetura ARM. MC722 -


Projeto de Sistemas Computacionais. Disponível em:

22
<http://docplayer.com.br/12862182-A-arquitetura-arm-mc722-projeto-de-
sistemas-computacionais-pedro-henrique-gomes-tatiane-silvia-leite-uirauna-
imirim-caetano.html> Acesso em: 02 de dezembro de 2016.

SOUSA, D. R. de. Microcontroladores ARM7: o poder dos 32 bits – São Paulo:


Érica 2006. ISBN 85-365-0120-0.

PEREIRA, F. Tecnologia ARM: Microcontroladores de 32 bits. 1. ed. São


Paulo: Érica, 2007. ISBN 978-85-365-0170-3.

SEEED. Raspberry Pi 3 Model B. Disponível em:


<http://wiki.seeedstudio.com/wiki/Raspberry_Pi_3_Model_B>. Acesso em: 16
de dezembro de 2016.

UNIOESTE. Conjunto de instruções. Disponível em: <http://sca.unioeste-


foz.br/~habib/x/trabalhos/grupob3/public_html/html/assembly.htm> Acesso em:
02 de dezembro de 2016.

WESLEY, A.; FURBER, S. ARM System-on-ChipArchitecture. 2. ed.

WIKIPEDIA. Arquitetura ARM. Disponível em:


<https://pt.wikipedia.org/wiki/Arquitetura_ARM> Acesso em: 16 de dezembro
2016.

WIKIPEDIA. Linguagem de descrição de hardware. Disponível em:


<https://pt.wikipedia.org/wiki/Linguagem_de_descrição_de_hardware>. Acesso
em: 16 de dezembro de 2016.

23
WIKIPEDIA. Núcleo (Sistema Operacional). Disponível em:
<https://pt.wikipedia.org/wiki/N%C3%BAcleo_(sistema_operacional)>. Acesso
em: 16 de dezembro de 2016.

WIKIPEDIA. Pipeline (hardware). Disponível em:


<https://pt.wikipedia.org/wiki/Pipeline_(hardware)>. Acesso em: 16 de
dezembro de 2016.

WIKIPEDIA. Raspberry Pi. Disponível em:


<https://pt.wikipedia.org/wiki/Raspberry_Pi> Acesso em: 16 de dezembro de
2016.

UNIOESTE. Evolução da família. Disponível em: <http://sca.unioeste-


foz.br/~habib/x/trabalhos/grupob3/public_html/html/evolucao.htm>. Acesso em:
02 de dezembro de 2016.

24