40
1 César Ofuchi – [email protected] Arquitetura ARM Cortex (Adaptado do Prof. Hugo Vieira Neto) César Yutaka Ofuchi [email protected]

Arquitetura ARM Cortex - UTFPR

  • Upload
    others

  • View
    23

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arquitetura ARM Cortex - UTFPR

1César Ofuchi – [email protected]

Arquitetura ARM Cortex

(Adaptado do Prof. Hugo Vieira Neto)

César Yutaka Ofuchi

[email protected]

Page 2: Arquitetura ARM Cortex - UTFPR

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

Page 3: Arquitetura ARM Cortex - UTFPR

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

Page 4: Arquitetura ARM Cortex - UTFPR

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)

Page 5: Arquitetura ARM Cortex - UTFPR

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)

Page 6: Arquitetura ARM Cortex - UTFPR

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

Page 7: Arquitetura ARM Cortex - UTFPR

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

Page 8: Arquitetura ARM Cortex - UTFPR

8César Ofuchi – [email protected]

Análogia de PIPELINE

Lavanderia com pipeline – 3.5 horas

Lavanderia sequencial – 6 horas

Page 9: Arquitetura ARM Cortex - UTFPR

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

Page 10: Arquitetura ARM Cortex - UTFPR

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

Page 11: Arquitetura ARM Cortex - UTFPR

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)

Page 12: Arquitetura ARM Cortex - UTFPR

12César Ofuchi – [email protected]

Pipeline: Efeito de Saltos

• Pior caso: salto indireto, 3 ciclos de clock para completar o salto(ARM Cortex-M3)

Page 13: Arquitetura ARM Cortex - UTFPR

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

Page 14: Arquitetura ARM Cortex - UTFPR

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

Page 15: Arquitetura ARM Cortex - UTFPR

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

Page 16: Arquitetura ARM Cortex - UTFPR

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)

Page 17: Arquitetura ARM Cortex - UTFPR

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

Page 18: Arquitetura ARM Cortex - UTFPR

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

Page 19: Arquitetura ARM Cortex - UTFPR

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

Page 20: Arquitetura ARM Cortex - UTFPR

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

Page 21: Arquitetura ARM Cortex - UTFPR

21César Ofuchi – [email protected]

Privilégios de acesso ao processador

Exception

EntryException

Return

Page 22: Arquitetura ARM Cortex - UTFPR

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

Page 23: Arquitetura ARM Cortex - UTFPR

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

Page 24: Arquitetura ARM Cortex - UTFPR

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

Page 25: Arquitetura ARM Cortex - UTFPR

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

Page 26: Arquitetura ARM Cortex - UTFPR

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

Page 27: Arquitetura ARM Cortex - UTFPR

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

Page 28: Arquitetura ARM Cortex - UTFPR

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

Page 29: Arquitetura ARM Cortex - UTFPR

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 ---------------------------------------

Page 30: Arquitetura ARM Cortex - UTFPR

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 …

Page 31: Arquitetura ARM Cortex - UTFPR

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

Page 32: Arquitetura ARM Cortex - UTFPR

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

Page 33: Arquitetura ARM Cortex - UTFPR

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

Page 34: Arquitetura ARM Cortex - UTFPR

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

Page 35: Arquitetura ARM Cortex - UTFPR

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)

Page 36: Arquitetura ARM Cortex - UTFPR

36César Ofuchi – [email protected]

Mapa de Memória – LPC1343

• Mapeamento linear da memória 4Gb

Page 37: Arquitetura ARM Cortex - UTFPR

37César Ofuchi – [email protected]

Mapa de Memória – ARM Cortex

Page 38: Arquitetura ARM Cortex - UTFPR

38César Ofuchi – [email protected]

Mapa de Memória – LPC1343

Page 39: Arquitetura ARM Cortex - UTFPR

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

Page 40: Arquitetura ARM Cortex - UTFPR

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)