6
22/08/2018 1 Arquitetura ARM Cortex-M4 Prof. Hugo Vieira Neto 2018/2 Paradigma CISC Complex Instruction Set Computer Conjunto de instruções inicialmente simples Avanços tecnológicos permitiram a fabricação de computadores com mais transistores e menor custo Projetistas optaram por conjuntos de instruções cada vez mais complexos Intenção: reduzir a distância semântica entre Assembly e linguagens de alto nível Paradigma CISC Instruções com elevado grau semântico Elevado número de modos de endereçamento Um único registrador acumulador Elevado número de ciclos de clock por instrução Redução da frequência de execução Menor número de instruções por programa Menor uso de memória de código Decodificação através de microcódigo Dificulta/Impossibilita o uso de pipeline Paradigma RISC Reduced Instruction Set Computer Instruções simples que executam rápido Grande número de registradores de uso geral Decodificação de instruções com lógica combinacional (tabela) Execução utilizando pipeline Média de um ciclo de clock por instrução Paradigma RISC Regularidade de tempo de execução Regularidade de tamanho de instrução Redução da área de silício e tempo de projeto Efeito final: melhor desempenho, apesar do número de instruções por programa ser maior Livro: David A. Patterson e John L. Hennessy. Arquitetura de Computadores: uma abordagem quantitativa, 5ª Ed, Elsevier Academic, 2014. Resumo: RISC x CISC RISC CISC Conjunto de instruções reduzido Conjunto de instruções extenso Instruções semanticamente simples Instruções semanticamente complexas Instruções de tamanho fixo 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

Arquitetura ARM Cortex-M3 - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/~hvieir/EL68E/2_intro.pdf · 22/08/2018 1 Arquitetura ARM Cortex-M4 Prof. Hugo Vieira Neto 2018/2 cada vez mais

Embed Size (px)

Citation preview

Page 1: Arquitetura ARM Cortex-M3 - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/~hvieir/EL68E/2_intro.pdf · 22/08/2018 1 Arquitetura ARM Cortex-M4 Prof. Hugo Vieira Neto 2018/2 cada vez mais

22/08/2018

1

Arquitetura ARM Cortex-M4

Prof. Hugo Vieira Neto

2018/2

Paradigma CISC

• Complex Instruction Set Computer

– Conjunto de instruções inicialmente simples

– Avanços tecnológicos permitiram a fabricação de computadores com mais transistores e menor custo

– Projetistas optaram por conjuntos de instruções cada vez mais complexos

• Intenção: reduzir a distância semântica entre Assembly e linguagens de alto nível

Paradigma CISC

• Instruções com elevado grau semântico

• Elevado número de modos de endereçamento

• Um único registrador acumulador

• Elevado número de ciclos de clock por instrução – Redução da frequência de execução

• Menor número de instruções por programa – Menor uso de memória de código

• Decodificação através de microcódigo – Dificulta/Impossibilita o uso de pipeline

Paradigma RISC

• Reduced Instruction Set Computer

– Instruções simples que executam rápido

– Grande número de registradores de uso geral

– Decodificação de instruções com lógica combinacional (tabela)

– Execução utilizando pipeline

• Média de um ciclo de clock por instrução

Paradigma RISC

• Regularidade de tempo de execução

• Regularidade de tamanho de instrução

• Redução da área de silício e tempo de projeto

• Efeito final: melhor desempenho, apesar do número de instruções por programa ser maior

Livro: David A. Patterson e John L. Hennessy. Arquitetura de Computadores: uma abordagem quantitativa, 5ª Ed, Elsevier Academic, 2014.

Resumo: RISC x CISC

RISC CISC

Conjunto de instruções reduzido Conjunto de instruções extenso

Instruções semanticamente simples Instruções semanticamente complexas

Instruções de tamanho fixo 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 2: Arquitetura ARM Cortex-M3 - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/~hvieir/EL68E/2_intro.pdf · 22/08/2018 1 Arquitetura ARM Cortex-M4 Prof. Hugo Vieira Neto 2018/2 cada vez mais

22/08/2018

2

Arquitetura x Organização

• Arquitetura = documento de especificação

– Conjunto de Instruções

– Exceções/Interrupções

– Modelo de Memória

– Registradores

• Ex: ARMv4, ARMv7, etc.

• Não tem custo, pode ser obtido diretamente do website da ARM

Arquitetura x Organização

• Organização = implementação física (silício)

– Ex: ARM7TDMI, ARM Cortex-M4, etc.

• ARM vende a implementação de núcleos em VHDL ou máscara de difusão para empresas licenciadas

ARM Cortex-M4

• Arquitetura ARMv7E-M

• 18 registradores de 32 bits

• Registrador único de estado do programa

• Mapa de memória fixo

– Periféricos mapeados em memória

• Não possui memória cache ou Unidade de Gerenciamento de Memória (MMU)

• Permite gerenciamento de consumo

ARM Cortex-M4

• Controlador de Interrupções faz parte da macrocélula Cortex-M4 (fortemente acoplado ao núcleo do processador)

• Tratamento muito eficiente de interrupções

• Tabela de vetores de interrupção contém endereços, não instruções

• Interrupções salvam e recuperam automaticamente o estado do processador

ARM Cortex-M4

• Projetado para ser programado em C – Até mesmo o tratamento de interrupções

• Permite uso de sistemas operacionais (RTOS) – Modelo Usuário/Supervisor

• Possui Unidade de Ponto Flutuante (FPU)

• Núcleo de processamento Thumb-2 – Mistura de instruções de 16 e 32 bits (alta

densidade de código), mas não requer alinhamento para instruções de 32 bits

Conjunto de Instruções Thumb-2

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

• 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

Page 3: Arquitetura ARM Cortex-M3 - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/~hvieir/EL68E/2_intro.pdf · 22/08/2018 1 Arquitetura ARM Cortex-M4 Prof. Hugo Vieira Neto 2018/2 cada vez mais

22/08/2018

3

Conjunto de Instruções Thumb-2

Fonte: ARM

Visão Simplificada do Cortex-M4

Advanced Microcontroller Bus Architecture Mapa de Memória do Cortex-M4

Lembrete: Unidades de Informação

• Sistema Internacional (SI):

– Quilo: 1k = 103

– Mega: 1M = 106

– Giga: 1G = 109

• IEC/80000-13 (última revisão: 2008):

– Kibibyte: 1 KiB = 210 bytes

– Mebibyte: 1 MiB = 220 bytes

– Gibibyte: 1 GiB = 230 bytes

Unidade de Proteção de Memória

• A MPU provê controle de acesso a várias regiões de memória

• 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 4GiB

– Não há paginação de endereços

• Configurado através de registradores de controle mapeados em memória

Page 4: Arquitetura ARM Cortex-M3 - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/~hvieir/EL68E/2_intro.pdf · 22/08/2018 1 Arquitetura ARM Cortex-M4 Prof. Hugo Vieira Neto 2018/2 cada vez mais

22/08/2018

4

Diagrama em Blocos – TM4C1294

...

...

...

Mapa de Memória – TM4C1294

Início Final Descrição

0x0000 0000 0x000F FFFF On-chip Flash (1MiB)

0x0010 0000 0x01FF FFFF Reserved

0x0200 0000 0x02FF FFFF On-chip ROM (16 MiB)

0x0300 0000 0x1FFF FFFF Reserved

0x2000 0000 0x2006 FFFF On-chip SRAM (256KiB)

0x2007 0000 0x21FF FFFF Reserved

0x2200 0000 0x2234 FFFF Bit-band alias of SRAM

0x2235 0000 0x3FFF FFFF Reserved

0x4000 0000 0xDFFF FFFF Peripherals

0xE000 0000 0xFFFF FFFF Private Peripheral Bus

Registradores (32 bits)

• 13 registradores de propósito geral – R0 a R7 (low registers)

– R8 a R12 (high registers)

• 3 registradores de uso/significado especial – R13 = Stack Pointer (SP)

– R14 = Link Register (LR)

– R15 = Program Counter (PC)

• 1 registrador de propósito especial – xPSR = Program Status Register

Registradores (32 bits)

• Registradores xPSR, PC, LR, R12, R3, R2, R1 e R0 são armazenados automaticamente na pilha quando ocorre uma interrupção.

Registrador de Estado do Programa

• Composição do xPSR: – APSR - Application Program Status Register (flags da

ULA) – EPSR - Execution Program Status Register

• Campo IT – informação sobre blocos If/Then • Campo ICI – informação sobre instruções

interrompíveis/continuáveis

– IPSR - Interrupt Program Status Register (número da interrupção/exceção)

Datapath do Cortex-M4

Page 5: Arquitetura ARM Cortex-M3 - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/~hvieir/EL68E/2_intro.pdf · 22/08/2018 1 Arquitetura ARM Cortex-M4 Prof. Hugo Vieira Neto 2018/2 cada vez mais

22/08/2018

5

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

• Operações sobre dados em memória requerem:

– Leitura em registrador

– Operação

– Escrita em memória

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

Pipeline em 3 Estágios

• Similar ao pipeline do ARM7TDMI, porém com mais funcionalidades em cada estágio, o que resulta em maior desempenho geral

Pipeline: Situação Ideal

• Todas as operações realizadas em registradores → 6

instruções em 6 ciclos de clock (Cortex-M4)

Pipeline: Efeito de Saltos

• Pior caso: salto indireto (instrução BX), 3 ciclos de clock para completar o salto (Cortex-M4)

Execução Condicional

• Bloco If-Then (IT)

– Até 3 instruções condicionais “then” (T) ou “else” (E) podem ser adicionadas

– Transforma até 4 instruções consecutivas em condicionais

Page 6: Arquitetura ARM Cortex-M3 - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/~hvieir/EL68E/2_intro.pdf · 22/08/2018 1 Arquitetura ARM Cortex-M4 Prof. Hugo Vieira Neto 2018/2 cada vez mais

22/08/2018

6

Execução Condicional

• Qualquer código de condição ARM pode ser utilizado (ver tabela a seguir)

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

• 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ódigos de Condição ARM

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 𝑍 + 𝐶

GE greater or equal 𝑁𝑉 + 𝑁 𝑉 LT less than 𝑁𝑉 + 𝑁 𝑉

GT greater than 𝑁𝑍 𝑉 + 𝑁 𝑍 𝑉 LE less or equal 𝑍 + 𝑁𝑉 + 𝑁 𝑉

Privilégios de Execução Exceções e Interrupções

• Exceções (faltas, SVC, PendSV, etc.)

• 1 interrupção não-mascarável (NMI)

• 1 a 240 interrupções mascaráveis com controle de prioridade

– Implementação define número de interrupções

• Controlador de interrupções (NVIC) acoplado fortemente ao núcleo do processador

Gerenciamento de Consumo

• Vários modos de baixo consumo (sleep modes)

– Sleep Now

• Instr. Wait for Interrupt (WFI) / Wait for Event (WFE)

– 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

Atividade Extra-classe

• Aprofundamento na arquitetura Cortex-M

– Leitura do artigo “ARM Cortex-M for Beginners” (Joseph Yiu)

• Familiarização com o conjunto de instruções do Cortex-M4 e linguagem Assembly

– Leitura da Seção 3.3 do documento “ARM Cortex-M4 Processor Technical Reference Manual” (ARM)

– Leitura do Capítulo 4 do livro “Definitive Guide To the ARM Cortex-M3” (Joseph Yiu)