Enviado por jadirlucas

arquitetura cortex M3

Propaganda
Arquitetura ARM Cortex
César Yutaka Ofuchi
[email protected]
(Adaptado do Prof. Hugo Vieira Neto)
César Ofuchi – [email protected]
1
Porque ARM Cortex M3?
Baixo
Consumo
Performance
Determinismo:
garantia de
execução
críticas (Real
Time)
Baixo Custo
Fácil de Usar
Prog. C
Ferramentas
Debug
César Ofuchi – [email protected]
2
O que é ISA??
Software
Hardware
• Conjunto de técnicas de projeto utilizadas para o
processador implementar as instruções em hardware
• Interface entre o compilador (software) e o hardware
César Ofuchi – [email protected]
3
Exemplo CISC x RISC
Multiplicação de 2 números na memória
A=A x B (2:3) x (5:2)
Paradigma CISC: Completar a tarefa
utilizando menos linhas de código assembly
MULT (2:3),(5:2) -> MULT A, B
-
“MULT” é uma instrução complexa que opera na
-
Hardware implementa a instrução complexa
-
Compilador tem sua tarefa de traduzir a linguagem
de alto nível para assembly simplificada
memória diretamente (programador não precisa
explicitamente carregar ou salvar os dados em
memória)
César Ofuchi – [email protected]
4
Exemplo CISC x RISC
Multiplicação de 2 números na memória
A=A x B (2:3) x (5:2)
Paradigma RISC: – dividir a instrução
complexa em instruções simples mais
rápidas (LOAD, PROD, STORE)
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A
-
Requer mais linhas de código e mais memória RAM
para guardar as instruções
-
Maior complexidade para o Compilador traduzir a
linguagem de alto nível para assembly
-
Cada instrução requer apenas 1 ciclo de clock para
executar
-
Hardware mais simples -> menos transistores utilizados
para processamento, mais transistores utilizados em
registradores
-
Possibilidade de Pipeline
César Ofuchi – [email protected]
5
Resumo: Paradigma RISC x CISC
RISC
CISC
Conjunto de instruções reduzido
Conjunto de instruções extenso
Instruções semanticamente simples
- Maior o código
Instruções semanticamente complexas
- Menor o Código
Instruções de tamanho fixo (maior
previsibilidade)
Instruções de tamanho variável
Decodificação simplificada
(tabela)
Decodificação complexa
(microcódigo)
Execução regular
Cada instrução executa à sua maneira
Instruções requerem o mesmo número de
ciclos de clock para executar
Grande variação no número de ciclos de
clock por instrução
Possibilita o uso de pipeline
Extremamente difícil/impossível o uso de
pipeline
César Ofuchi – [email protected]
6
Análogia de PIPELINE
LAVANDERIA
1. Roupas de A, B, C e D
2. Lavadora (30 minutos)
3. Secadora (40 minutos)
4. Passar roupa (20 minutos)
César Ofuchi – [email protected]
7
Análogia de PIPELINE
Lavanderia sequencial – 6 horas
Lavanderia com pipeline – 3.5 horas
César Ofuchi – [email protected]
8
Pipeline (3 Estágios)
1. Busca (Fetch)
– Busca da instrução na memória
2. Decodificação (Decode)
– Decodificação dos registradores usados na
instrução
3. Execução (Execute)
– Leitura de registradores
– Operações lógicas, aritméticas e de
deslocamento;
– Escrita em registradores
César Ofuchi – [email protected]
9
Pipeline (3 Estágios)
Similar ao pipeline do ARM7TDMI, porém com mais funcionalidades
em cada estágio, o que resulta em maior desempenho geral
César Ofuchi – [email protected]
10
Pipeline: Situação Ideal
• Todas as operações realizadas em registradores → 6
instruções em 6 ciclos de clock (ARM Cortex-M3)
César Ofuchi – [email protected]
11
Pipeline: Efeito de Saltos
• Pior caso: salto indireto, 3 ciclos de clock para completar o salto
(ARM Cortex-M3)
César Ofuchi – [email protected]
12
Arquitetura x Organização
• Arquitetura = documento de especificação
–
–
–
–
Instruções
Exceções
Registradores
Memória
Ex: ARMv4, ARMv7
• Não tem custo, pode ser obtido diretamente do
website da ARM
César Ofuchi – [email protected]
13
Arquitetura x Organização
• Organização = implementação física (silício)
– Ex: ARM7TDMI, ARM Cortex-M3, etc.
• ARM vende a implementação de núcleos
César Ofuchi – [email protected]
14
Arm Cortex M3
• Tamanhos dos dados e instruções
• Modelo de Programação ARMv7-M
• Exceções e Interrupções
• Conjunto de Instruções
• Memória
• Gerenciamento de Energia
César Ofuchi – [email protected]
15
Tamanho dos dados
• ARM tem arquitetura de 32 bits
– BYTE: 8 bits
– HALFWORD: 16 bits (2 bytes)
– WORD: 32 bits (4 bytes)
• Comprimento de Instruções
– Instruções ARM = 32 bits (fixo)
– Instruções Thumb = 16 bits (fixo)
– Instruções Thumb-2 = 16 ou 32 bits (variável)
César Ofuchi – [email protected]
16
Conjunto de Instruções Thumb-2
• Melhor de dois mundos:
– Aproximadamente 26% de melhora em densidade de
código em relação a instruções ARM
– Aproximadamente 25% de melhora em desempenho
em relação a instruções Thumb
César Ofuchi – [email protected]
17
Arm Cortex M3
• Tamanhos dos dados e conjunto de
instruções
• Modelo de Programação ARMv7-M
• Exceções e Interrupções
• Conjunto de Instruções
• Barramento Interno/Memória
• Gerenciamento de Energia
César Ofuchi – [email protected]
18
Conjunto de Registradores (32 bits)
• 13 registradores de propósito geral
– R0 a R7 (low registers) - Thumb & Thumb-2
– R8 a R12 (high registers) - Thumb-2 32bit
• 3 registradores de uso/significado especial
– R13 = Stack Pointer (SP)
• MSP – Main Stack Pointer (SO/Exceção)
• PSP – Process Stack Pointer (Aplicação)
– R14 = Link Register (LR) – Usado como retorno
de subrotinas
– R15 = Program Counter (PC) – Aponta para a
próxima instrução
• 1 registrador de propósito especial
– xPSR = Program Status Register
xPSR
• Salvo na Stack em caso de exceção
© Prof. Dr. Douglas Renaux
César Ofuchi – [email protected]
19
Modos de Programação
• Programável totalmente em C
• Apenas dois modos de operação
• Thread para tarefas de usuário
• Handler (Supervisor) para taregas do
SO e exceções
• Tabela de vetores contém endereços
César Ofuchi – [email protected]
20
Privilégios de acesso ao processador
Exception
Return
Exception
Entry
César Ofuchi – [email protected]
21
Unidade de Proteção de Memória (MPU)
• A MPU provê controle de acesso a várias regiões
de memória
• (ex: Impedir o acesso direto a serviços do RTOS)
• Proteção de memória com latência zero
–
–
–
–
8 regiões em registradores
As mesmas regiões são usadas por instruções e dados
Tamanho: mínimo de 32 bytes, máximo de 4GB
Não há paginação de endereços
• Configurado através de registradores de controle
mapeados em memória
César Ofuchi – [email protected]
22
Arm Cortex M3
• Tamanhos dos dados e conjunto de
instruções
• Modelo de Programação ARMv7-M
• Exceções e Interrupções
• Instruções
• Memória
• Gerenciamento de Energia
César Ofuchi – [email protected]
23
Interrupções
• 1 interrupção não-mascarável (NMI)
• 1 a 240 interrupções com prioridade
• Interrupções são mascaráveis
• Implementação define número de interrupções
• Controlador de interrupções (NVIC) acoplado fortemente
ao núcleo do processador
César Ofuchi – [email protected]
24
Interrupções - registradores
User Mode
Aplicação
Exception
Entry
PSP
Exception
Return
Priviledged
Mode
SO
MSP
• Registradores xPSR, PC, LR, R12, R3,
R2, R1 e R0 são todos
armazenados automaticamente
na pilha quando uma interrupção
ocorre.
César Ofuchi – [email protected]
25
Exceções
• Reset - interrupção durante power up or warm reset
• NMI - interrupção não-mascarável sinalizada por periféfico ou
acionada por SW
• Faults
•
•
•
•
•
– Hard Fault - interrupção por erro de execução
– Memory Manage - interrupção por acesso inapropriado à
memória
– Bus Fault - interrupção por falha na transação de instrução ou
memória
– Usage Fault - intrurrução por falha de execução de instrução
SVCall - interrupção iniciada por instrução de supervisão
Debug Monitor - interrupção por debug
PendSV - interrupção no nível de serviço (ex. troca de contexto
em SO)
SysTick Interrupt - interrupção do system timer (ex. Uso do RTOS)
External Interrupt - interrupção externa
César Ofuchi – [email protected]
26
Registrador de Estado do Programa xPSR – Program
Status Register
APSR
EPSR
EPSR
IPSR
– A-PSR - Application PSR (flags da ULA)
•
•
•
•
•
N - flag de Negativo ou menor que
Z - flag de Zero
C - flag de Carry
V - flag de estouro "overflow"
Q - flag de saturação
– I-PSR - Interrupt PSR
• Número do serviço de interrupção (isr)/exceção
– E-PSR - Execution PSR
• Campo IT – informação sobre blocos If/Then (T-bit Thum state bit)
• Campo ICI – informação sobre instruções
interrompíveis/continuáveis (load LDM/store STM)
César Ofuchi – [email protected]
27
Arm Cortex M3
• Tamanhos dos dados e conjunto de
instruções
• Modelo de Programação ARMv7-M
• Exceções e Interrupções
• Instruções
• Barramento Interno/Memória
• Gerenciamento de Energia
César Ofuchi – [email protected]
28
Execução Condicional
• Bloco If-Then (IT)
– IT <X><Y><Z><COND>
• <X,Y e Z> são até 3 opcionais (T) “them” ou (E) “else”
• <COND> condições como NE, EQ, etc… que são flags do APSR
– Até 3 instruções condicionais “then” (T) ou “else” (E) podem
ser adicionadas
– Instrução minima (IT) com apenas uma condicional
– No máximo 4 instruções consecutivas em condicionais
IF <Zero> THEN THEN ELSE THEN ---------------------------------------
(mesma ordem)
Se Z mover …
Se Z somar …
Se !Z Subtrair …
Se Z Lógica OR …
• Qualquer código de condição ARM pode ser
utilizado (ver tabela a seguir)
César Ofuchi – [email protected]
29
Códigos de
Condição ARM
Mn
Descrição
APSR …
31 30 29 28
Negative
Zero
Carry (Unsigned)
Overflow (Signedl)
N Z CV
Flags
Mn
EQ equal
𝑍
NE
not equal
𝑍
CS carry set
HS higher or same
𝐶
CC
LO
carry clear
lower
𝐶
MI
minus/negative
𝑁
PL
plus/positive
𝑁
VS
overflow
𝑉
VC
no overflow
𝑉
HI
higher
𝑍𝐶
LS
lower or same
GE
greater or
equal
𝑁𝑉 + 𝑁𝑉
LT
less than
𝑁𝑍𝑉 + 𝑁𝑍𝑉
LE
less or equal
GT greater than
Descrição
César Ofuchi – [email protected]
Flags
𝑍+𝐶
𝑁𝑉 + 𝑁𝑉
𝑍 + 𝑁𝑉 + 𝑁 𝑉
30
Execução Condicional
• Instruções de 16 bits dentro do bloco não afetam
flags, exceto a instrução de comparação
• Instruções de 32 bits podem ou não afetar flags
(conforme o uso ou não do sufixo S)
– EX: ADDS R0, R1: Atualiza APSR
• Estado do bloco If-Then é armazenado no xPSR
– Bloco If-Then pode ser interrompido de forma segura
– Saltar de dentro ou para dentro de um bloco If-Then
NÃO é permitido
César Ofuchi – [email protected]
31
Exemplo
CMP <Rn>, Operando 2 Comparação
CMP
ITE
ADDLO
MOVHS
R0, #10 ;se r0 <10
LO
;habilita If Then Else para LO (Lower), flag C (Carry)
R0, #1 ; … then R0=R0+1 (se for menor) C=1
R0,#0 ; … else R0=0 (senão) C=0
Saltar de dentro ou para dentro de
um bloco If-Then NÃO é permitido
Sugestão de leitura:
https://community.arm.com/processors/b/blog/posts/conditioncodes-2-conditional-execution
César Ofuchi – [email protected]
32
Arquitetura Load/Store
• Acesso à memória:
– Somente instruções LD leem dados da memória
– Somente instruções ST escrevem dados na memória
– Instruções de processamento de dados não acessam a
memória
Instruções para os diferentes
tamanhos de dados
LDR
STR
LDRB STRB
LDRH STRH
LDRSB
LDRSH
Word
Byte
Halfword
Signed byte load
Signed halfword load
Exemplo completo:
LDR<cond><size> RD, <address>
STR<cond><size> RD, <address>
Opcionais:
<cond> condicional
<size> tamanho
Ex: LDREQB
César Ofuchi – [email protected]
33
Arm Cortex M3
• Tamanhos dos dados e conjunto de
instruções
• Modelo de Programação ARMv7-M
• Exceções e Interrupções
• Instruções
• Barramento Interno/Memória
• Gerenciamento de Energia
César Ofuchi – [email protected]
34
ARM Advanced Microcontroller Bus Architecture
Padrão aberto para conexão e gerenciamento de blocos
funcionais em um System On Chip (SoC)
APB
AHB - Advanced High-Performance Bus
APB - Advanced Peripheral Bus
César Ofuchi – [email protected]
35
Mapa de Memória – LPC1343
• Mapeamento linear da memória 4Gb
César Ofuchi – [email protected]
36
Mapa de Memória – ARM Cortex
César Ofuchi – [email protected]
37
Mapa de Memória – LPC1343
César Ofuchi – [email protected]
38
Arm Cortex M3
• Tamanhos dos dados e conjunto de
instruções
• Modelo de Programação ARMv7-M
• Exceções e Interrupções
• Instruções
• Memória
• Gerenciamento de Energia
César Ofuchi – [email protected]
39
Gerenciamento de Consumo de Energia
• Vários modos de baixo consumo (sleep modes)
– Sleep Now
• Instruções Wait for Interrupt/Event
– Sleep On Exit
• Imediatamente após o retorno da última interrupção
– Deep Sleep
• Longa duração, PLL desligado
• Sinal externo SLEEPDEEP
• Controlados pelo NVIC (interrupt controller)
César Ofuchi – [email protected]
40
Download