800 likes | 997 Views
Arquitetura de Sistemas Embarcados. Edna Barros (ensb @cin.ufpe.br) Centro de Informática – UFPE. Introdução a Arquitetura ARM (Advanced RISC Machine). História do ARM. Originalmente significava: ARM – Acorn RISC Machine (1983 – 1985) Acorn Computers Limited, Cambridge, England
E N D
Arquitetura de Sistemas Embarcados Edna Barros (ensb@cin.ufpe.br) Centro de Informática – UFPE
História do ARM • Originalmente significava: • ARM – Acorn RISC Machine (1983 – 1985) • Acorn Computers Limited, Cambridge, England • ARM – Advanced RISC Machine 1990 • ARM Limited, 1990 • ARM tem sido licenciado para diferentes fabricantes • Tornou-se líder de mercado para aplicações embarcadas de baixa potência
O processador ARM processor é um processador RISC (Reduced Instruction Set Computer) • ARM foi o primeiro microprocessador RISC desenvolvido para uso comercial • A combinação de um hardware simples com um repertório de instruções reduzido permite eficiência no consumo de potência e tamanho reduzido
O Processador ARM • Um dos cores mais licenciados e mais vendidos • Usado em equipamentos móveis devido ao baixo consumo de potência e desempenho razoável • Várias extensões: • THUMB: instruções de 16 bits • JAZELLE: máquina virtual JAVA
O Processador ARM • Cores: ARM6, ARM7, ARM9, ARM10, ARM11 • Extensões: THUMB, JAZELLE, etc.. • IP-Blocks: UART, GPIO, controladores de memória
O Processador ARM • Processador RISC de 32 bits • Instruções de 32 bits • 16 registradores de 32 bits (37 registradores internos) • Pipeline (ARM7: 3 estágios) • Cache • Tipos de Dados de 8, 16 e 32 bits • 7 modos de operação: • Usr, fiq, irq, abt, sys, und • Estrutura simples • Baixo consumo/ bom desempenho
Modos de Operação O Processador ARM possui 7 modos de operação (exceções): • User modeé modo usual de execução de programas de usuário • Exceções: • Fast Interrupt (FIQ) mode suporta transferência de dados • Interrupt (IRQ) modeé usado para tratamento de interrupções • Supervisor modeé um modo protegido para o sistema operacional
Exceções: • Abort modeexecuta após a interrupção de busca antecipada de dado ou instrução • System modeé um modo privilegiado de usuário para o S.O. • Undefined modeexecuta quando instrução indefinida é executada
Modelo ARM para o Programador 16 Registradores visíveis: • Quinze registradores de propósito geral (r0, r1, r2, r3, ....................., r12) • Registrador r13 é o stack-pointer • Registrador r14 guarda endereço de retorno • O contador de programa - PC (r15) • O Registrador de Status (CPSR) Registradores usados no modo de usuário Outros registradores são usados nos modos privilegiados e de exceção
Registradores do ARM r0 usable in user mode r1 r2 r3 system modes only r4 r5 r6 r7 r8_fiq r8 r9_fiq r9 r10_fiq r10 r1 1_fiq r1 1 r13_und r12_fiq r13_irq r12 r13_abt r13_svc r14_und r13_fiq r14_irq r13 r14_abt r14_svc r14_fiq r14 r15 (PC) SPSR_und SPSR_irq SPSR_abt CPSR SPSR_svc SPSR_fiq svc abort irq undefi ned fiq user mode mode mode mode mode mode • Modo de Usuário • 15 Registradores de Propósito Geral • PC, CPSR (Registrador de Status) • Registradores restantes são usados para programação a nível de sistema e tratamento de exceções
Registrador de Status do ARM CPSR • N (Negative), Z (Zero), C (Carry), V (Overflow) • mode – controla modo do processador • T – controla repertório de instruções • T = 1 – repertório de instruções de 16-bit (Thumb instructions) • T = 0 – repertório de instruções de 32-bit (ARM instructions) • I F – desabilita interrupções
Organização de Memória do ARM • Array linear de bytes numerados de 0 a 232 – 1 • Tipos de dados • bytes (8 bits) • half-words (16 bits) • sempre alinhadas no limite de 2-bytes (iniciam em endereço par) • words (32 bits) • sempre alinhadas no limite de 4-bytes (iniciam em endereço múltiplo de 4)
Repertório de InstruçõesARM • Instruções de Processamento de Dados • Instruções de Transferência de Dados • Instruções de Fluxo de Controle
Instruções de Processamento de Dados • Classes de instruções de Processamento de Dados • Operações aritméticas • Operações lógicas (nível de bit) • Operações de Movimentação entre registradores • Operações de Comparação • Operandos: 32-bits;existem 3 maneiras de especificar os operandos • Operandos estão em registradores • O segundo operando pode ser uma constante (imediado) • Operando no registrador de deslocamento • Resultado: 32-bits, armazenado em registrador • Multiplicação produz um resultado de 64-bits
Instruções de Processamento de Dados • Formato • Todos os operandos são de 32 bits e estão em registradores • O resultado também é armazenado em um registrador
Instruções de Processamento de Dados Operações Aritméticas Operações Lógicas com Bits Movimentação de Registradores Operações de Comparação
Operandos Imediatos:Constante = (0->255) x 22n, 0 <= n <= 12 Operandos em Registrador de Deslocamento O segundo operando está sujeito a uma operação de deslocamento antes que seja combinado com o primeiro operando Instruções Aritméticas
Operações Lógicas • Operações Booleanas AND r0, r1, r2 ; r0 :=r1 and r2 ORR r0, r1, r2 ; r0 :=r1 or r2 EOR r0, r1, r2 ; r0 :=r1 xor r2 BIC r0, r1, r2 ; r0 :=r1 and not r2
Operações de Movimentação de Registradores MOV r0, r2 ; r0 := r2 MVN r0, r2 ; r0 := not r2 MVN: o registrador destino recebe o registrador fonte com o bits invertidos
Operações de Comparação • Só afetam os flags (N, Z, C and V) no CPSR CMP r1, r2 ;set cc on r1 – r2 CMN r1, r2 ;set cc on r1 + r2 TST r1, r2 ;set cc on r1 and r2 TEQ r1, r2 ;set cc on r1 xor r2
Registrador de Deslocamento • O ARM não possui instruções de deslocamento • O registrador de deslocamento permite o deslocamento de um operando de instrução aritmética
Barrel Shifter- Deslocamento para Esquerda • LSL #5 => multiplicapor 2^5 => multiplica por 32 • Barrel Shifter- Deslocamento para Direita • LSR #5 => divide por 2^5 => divide por 32
Deslocando Operandos • Por exemplo, ADD r3, r2, r1, LSL #3 ; r3 := r2 + 8 x r1 ‘LSL’ indica ‘logical shift left pelo número de bits especificado’, que é igual a 3 • ‘#’ indica valor imediato.
Operações de DeslocamentoARM • LSL – Deslocamento Lógico para Esquerda • LSR – Deslocamento Lógico para Direita • ASR – Deslocamento Aritmético para Direita • ROR – Rotação para Direita • RRX – Rotação para Direita
Setando os Códigos de Condição – FLAGS • Qualquer instrução pode setar os códigos de condição (N, Z, V, e C) • Para todas as instruções (exceto para a operação de comparação) uma requisição deve ser feita explicitamente • Em linguagem de montagem esta requisição é indicada pela adição de um `S` ao opcode • Exemplo (r3-r2 := r1-r0 + r3-r2)
Setando os Códigos de Condição – FLAGS • Operações aritméticas setam todos os flags (N, Z, C, and V) • Operações lógicas e de move setam N e Z • Preserva V e C quando não se trata de operações de deslocamento, ou setam C de acordo com a operação de deslocamento realizada no operando
Multiplicação • Exemplo (Multiply, Multiply-Accumulate) • Nota • 32-bits menos significativos são colocados no registrador de resultados, os outros são ignorados • Segundo operando imediato não é suportado • Registrador de resultado pode ser diferente de registradores fonte • Se bit `S` é setado então V é preservado e C não possui siginificado
Instruções de Transferência de Dados • Instruções Simples de load e store • Transferência de um dado (byte, half-word, word) entre registradores ARM e memória • Instruções de Múltiplos load e store • Permite a transferência de uma grande quantidade de dados • Usado para entrada e saída de subrotina para salvar e restaurar registradores de trabalho e para copiar blocos de dados na memória • Instruções de swap de registradores simples • Toda a transferência entre registrador e memória em uma instrução • Usado na implementação de semáforos para garantir exclusão mutua no acesso a dados compartilhados
Instruções de Transferência de Dados Endereçamento de Registrador Indireto Load e Store simples Nota: r1 armazena endereço de palavra (2 LSBs são 0) Endereçamento de Base+offset (offset até 4K bytes) Nota: nenhuma restrição para r1 Endereçamento auto-indexado Endereçamento Pós-indexado
Cópia de Bloco Dado deve ser armazenado antes ou abaixo do endereço guardado no registrador base Incremento ou decremento do endereço inicia antes ou depois de armazenamento do primeiro valor Instruções de Transferência de Dados Multiple register data transfers Notas: 1. qualquer subconjunto (ou todos) os registradores podem ser transferidos em uma única instrução 2. a ordem dos registradores é insignificante 3. incluir o r15 na lista causará mudança no fluxo de execução • Organizações de Pilha • FA – ascendente full • EA – ascendente vazia • FD – descendente full • ED – descendente vazia
Modos de endereçamento para Transferências Múltiplas 1018 1018 r9’ r9’ r5 16 16 r5 r1 r1 r0 r9 r0 100c r9 100c 16 16 1000 1000 16 16 STMIA r9!, {r0,r1,r5} STMIB r9!, {r0,r1,r5} 1018 1018 16 16 r9 r5 100c r9 100c 16 16 r1 r5 r0 r1 1000 1000 r9’ r9’ r0 16 16 STMDA r9!, {r0,r1,r5} STMDB r9!, {r0,r1,r5}
Execução Condicional • Execução condicional evita instruções de desvio • Exemplo Com execução condicional Nota: condições são adicionadas ao opcode
Instruções Branch and link • Desvio para subrotina (r14 armazena endereço de retorno) • Subrotinas aninhadas
Repertório de InstruçõesARM • Arquitetura Load-store • operandos armazenados em registradores • load/store – únicas instruções que acessam a memória • Instruções • Processamento de Dados – utiliza e modifica valores de registradores • Transferência de Dados – copia valores de memória em registradores (load) ou copia valores de registradores em memória (store) • Controle de Fluxo • branch • branch-and-link – salva endereço de retorno • trapping – chamada de supervisor
Repertório de Instruções do ARM • Instruções de processamento de dados com três endereços • Execução condicional para todas as instruções • Instruções de load/store para multiplos registradores • Habilidade de realizar uma operação de deslocamento e uma operação de ALU em um único ciclo • Extensão do repertório de instruções através do co-processador incluindo mais registradores e tipos de dados • Representação das instruções com 16 bits na arquitetura Thumb
Exceções Os vários modos de operação do processador
Exceções • Exceções são geradas por fontes internas ou externas ao programa em execução: evento de dispositivo ou instrução não definida • Mais que uma exceção pode acontecer ao mesmo tempo • Estado do processador antes da exceção deve ser preservado • ARM suporta 7 tipos de exceções
Modos de Operação O Processador ARM possui 7 modos de operação: • User modeé modo usual de execução de programas de usuário • Fast Interrupt (FIQ) mode suporta transferência de dados • Interrupt (IRQ) modeé usado para tratamento de interrupções • Supervisor modeé um modo protegido para o sistema operacional
Abort modeexecuta após a interrupção de busca antecipada de dado ou instrução • System modeé um modo privilegiado de usuário para o S.O. • Undefined modeexecuta quando instrução indefinida é executada
Exceções ARM • Tratamento de Exceções • Estado corrente é salvo através da cópia de PC no registrador r14_exc e CPSR em SPSR_exc (exc significa para tipo exceção) • Modo de operação do processador é mudado para o tipo apropriado de exceção • PC é forçado a ter um valor entre 0016e 1C16, sendo o valor particular dependente do tipo de exceção • Instrução na localização do PC é forçada a conter um desvio para a rotina de tratamento de exceções (the vector address); a rotina de tratamento usará o registrador r13_exc, o qual é normalmente inicializado para apontar para pilha na memória, onde registradores serão salvos • retorno: restaurar registradores de usuário, então restaurar PC e CPSR (atomicamente)
Organização dos Registradores General registers and Program Counter User32 / System FIQ32 Supervisor32 Abort32 IRQ32 Undefined32 r0 r0 r0 r0 r0 r0 r1 r1 r1 r1 r1 r1 r2 r2 r2 r2 r2 r2 r3 r3 r3 r3 r3 r3 r4 r4 r4 r4 r4 r4 r5 r5 r5 r5 r5 r5 r6 r6 r6 r6 r6 r6 r7 r7 r7 r7 r7 r7 r8 r8_fiq r8 r8 r8 r8 r9 r9_fiq r9 r9 r9 r9 r10 r10 r10 r10 r10 r10_fiq r11 r11_fiq r11 r11 r11 r11 r12 r12_fiq r12 r12 r12 r12 r13 (sp) r13_fiq r13_svc r13_abt r13_irq r13_undef r14 (lr) r14_fiq r14_svc r14_abt r14_irq r14_undef r15 (pc) r15 (pc) r15 (pc) r15 (pc) r15 (pc) r15 (pc) Program Status Registers cpsr cpsr cpsr cpsr cpsr cpsr sprsr_fiq sprsr_fiq sprsr_fiq sprsr_fiq sprsr_fiq spsr_fiq spsr_svc spsr_abt sprsr_fiq sprsr_fiq sprsr_fiq sprsr_fiq sprsr_fiq spsr_irq spsr_undef sprsr_fiq sprsr_fiq sprsr_fiq sprsr_fiq sprsr_fiq