Upload
others
View
23
Download
0
Embed Size (px)
Citation preview
1César Ofuchi – [email protected]
Arquitetura ARM Cortex
(Adaptado do Prof. Hugo Vieira Neto)
César Yutaka Ofuchi
2César Ofuchi – [email protected]
Porque ARM Cortex M3?
PerformanceBaixo
Consumo
Determinismo:
garantia de
execução
críticas (Real
Time)
Fácil de Usar
Prog. C
Ferramentas
Debug
Baixo Custo
3César Ofuchi – [email protected]
O que é ISA??
• Conjunto de técnicas de projeto utilizadas para o processador implementar as instruções em hardware
• Interface entre o compilador (software) e o hardware
Hardware
Software
4César Ofuchi – [email protected]
Exemplo CISC x RISC
Multiplicação de 2 números na memória
Paradigma CISC: Completar a tarefautilizando menos linhas de código assembly
MULT (2:3),(5:2) -> MULT A, B
- “MULT” é uma instrução complexa que opera na memória diretamente (programador não precisa explicitamente carregar ou salvar os dados em memória)
- Hardware implementa a instrução complexa
- Compilador tem sua tarefa de traduzir a linguagem de alto nível para assembly simplificada
A=A x B (2:3) x (5:2)
5César Ofuchi – [email protected]
Exemplo CISC x RISC
Paradigma RISC: – dividir a instruçãocomplexa em instruções simples maisrá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
Multiplicação de 2 números na memória A=A x B (2:3) x (5:2)
6César Ofuchi – [email protected]
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 (maiorprevisibilidade)
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
7César Ofuchi – [email protected]
Análogia de PIPELINE
1. Roupas de A, B, C e D
2. Lavadora (30 minutos)
3. Secadora (40 minutos)
4. Passar roupa (20 minutos)
LAVANDERIA
8César Ofuchi – [email protected]
Análogia de PIPELINE
Lavanderia com pipeline – 3.5 horas
Lavanderia sequencial – 6 horas
9César Ofuchi – [email protected]
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
10César Ofuchi – [email protected]
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
11César Ofuchi – [email protected]
Pipeline: Situação Ideal
• Todas as operações realizadas em registradores → 6
instruções em 6 ciclos de clock (ARM Cortex-M3)
12César Ofuchi – [email protected]
Pipeline: Efeito de Saltos
• Pior caso: salto indireto, 3 ciclos de clock para completar o salto(ARM Cortex-M3)
13César Ofuchi – [email protected]
Arquitetura x Organização
• Arquitetura = documento de especificação– Instruções
– Exceções
– Registradores
– Memória
• Não tem custo, pode ser obtido diretamente do website da ARM
Ex: ARMv4, ARMv7
14César Ofuchi – [email protected]
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
15César Ofuchi – [email protected]
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
16César Ofuchi – [email protected]
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)
17César Ofuchi – [email protected]
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 desempenhoem relação a instruções Thumb
18César Ofuchi – [email protected]
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
19César Ofuchi – [email protected]
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
• Salvo na Stack em caso de exceção
© Prof. Dr. Douglas Renaux
xPSR
20César Ofuchi – [email protected]
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
21César Ofuchi – [email protected]
Privilégios de acesso ao processador
Exception
EntryException
Return
22César Ofuchi – [email protected]
Unidade de Proteção de Memória (MPU)
• A MPU provê controle de acesso a várias regiõesde 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 controlemapeados em memória
23César Ofuchi – [email protected]
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
24César Ofuchi – [email protected]
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
25César Ofuchi – [email protected]
Interrupções - registradores
• Registradores xPSR, PC, LR, R12, R3,
R2, R1 e R0 são todos
armazenados automaticamente
na pilha quando uma interrupção
ocorre.
User Mode
Aplicação
Priviledged
Mode
SO
Exception
EntryException
Return
MSP
PSP
26César Ofuchi – [email protected]
Exceções
• Reset - interrupção durante power up or warm reset
• NMI - interrupção não-mascarável sinalizada por periféfico ouacionada 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 oumemó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 contextoem SO)
• SysTick Interrupt - interrupção do system timer (ex. Uso do RTOS)
• External Interrupt - interrupção externa
27César Ofuchi – [email protected]
– 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)
Registrador de Estado do Programa xPSR – Program
Status Register
APSR IPSREPSREPSR
28César Ofuchi – [email protected]
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
29César Ofuchi – [email protected]
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
• Qualquer código de condição ARM pode ser
utilizado (ver tabela a seguir)
(mesma ordem)
Se Z mover …
Se Z somar …
Se !Z Subtrair …
Se Z Lógica OR …
IF <Zero> THEN THEN ELSE THEN ---------------------------------------
30César Ofuchi – [email protected]
Mn Descrição Flags Mn Descrição Flags
EQ equal 𝑍 NE not equal 𝑍
CS
HS
carry set
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 𝑍 + 𝐶
GEgreater or
equal𝑁𝑉 + 𝑁 𝑉 LT less than 𝑁 𝑉 + 𝑁𝑉
GT greater than 𝑁 𝑍𝑉 + 𝑁 𝑍 𝑉 LE less or equal 𝑍 + 𝑁 𝑉 + 𝑁 𝑉
N Z C V
31 30 29 28Códigos de
Condição ARM
Negative
Zero
Carry (Unsigned)
Overflow (Signedl)
APSR …
31César Ofuchi – [email protected]
Execução Condicional
• Instruções de 16 bits dentro do bloco não afetamflags, 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
32César Ofuchi – [email protected]
Exemplo
Sugestão de leitura:
https://community.arm.com/processors/b/blog/posts/condition-
codes-2-conditional-execution
CMP <Rn>, Operando 2 Comparação
CMP R0, #10 ;se r0 <10ITE LO ;habilita If Then Else para LO (Lower), flag C (Carry)ADDLO R0, #1 ; … then R0=R0+1 (se for menor) C=1MOVHS R0,#0 ; … else R0=0 (senão) C=0
Saltar de dentro ou para dentro de um bloco If-Then NÃO é permitido
33César Ofuchi – [email protected]
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 diferentestamanhos de dados
LDR STR WordLDRB STRB ByteLDRH STRH HalfwordLDRSB Signed byte loadLDRSH Signed halfword load
Exemplo completo:
LDR<cond><size> RD, <address>STR<cond><size> RD, <address>Opcionais:<cond> condicional<size> tamanho
Ex: LDREQB
34César Ofuchi – [email protected]
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
35César Ofuchi – [email protected]
AHB - Advanced High-Performance Bus
APB - Advanced Peripheral Bus
ARM Advanced Microcontroller Bus Architecture
APB
Padrão aberto para conexão e gerenciamento de blocos
funcionais em um System On Chip (SoC)
37César Ofuchi – [email protected]
Mapa de Memória – ARM Cortex
38César Ofuchi – [email protected]
Mapa de Memória – LPC1343
39César Ofuchi – [email protected]
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
40César Ofuchi – [email protected]
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)