A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Arquitetura do ARM RISC (Reduced Instruction Set Computer) – Conjunto relativamente grande de registradores – Modelo “load/store “de processamento Operações.

Apresentações semelhantes


Apresentação em tema: "Arquitetura do ARM RISC (Reduced Instruction Set Computer) – Conjunto relativamente grande de registradores – Modelo “load/store “de processamento Operações."— Transcrição da apresentação:

1 Arquitetura do ARM RISC (Reduced Instruction Set Computer) – Conjunto relativamente grande de registradores – Modelo “load/store “de processamento Operações são feitas em registradores e não diretamente na memória. – Número limitado de modos de endereçamento. – Tamanho fixo de instruções (32 bits).

2 Arquitetura do ARM Além da arquitetura RISC tradicional... – ALU e Shifter separados. Controle adicional e aumento de velocidade. – Modos de endereçamento de Auto- incremento/decremento. Loops mais rápidos. – Execução condicional de instruções Aumento de velocidade através da redução do “pipeline flushing”

3 Diagrama de Blocos do ARM

4 Modos do Processador

5 User mode – modo normal – Acesso limitado ao sistema – Não pode mudar o modo Privileged Mode - modo privilegiado – Acesso total ao sistema – Pode mudar modo – Registros adicionais para evitar corrupção – FIQ, IRQ, Supervisor, Abort, Undefined System mode – modo para o S.O. – Privilegiado, mas sem registradores adicionais

6 Registradores 37 registradores ao todo. – 30 de uso geral – 6 de status – Program Counter – PC R0 - R7 : Uso geral, comum a todos os modos. R8 - R12 : idem, menos no modo FIQ, onde são substituídos por R8_fiq – R12_fiq R13-R15: Uso especial (SP, Link Register, PC), com versões diferentes para exception modes.

7 Registradores Registradores de status: – CPSR : Current Processor Status Register Informação de estado corrente do processador – SPSR: Saved Processor Status Register Só disponível nos modos privilegiados Armazena informação de estado imediatamente antes do processador mudar para o estado privilegiado.

8 Registradores Stack Pointer ou R13 – Cada exception mode tem o seu SP – Ponteiro de pilha – Stack é usado para armazenar valores temporários

9 Registradores Link Register ou R14 – Armazena o endereço de retorno para a sub-rotina – Ao chamar uma sub-rotina com a instrução BL (Branch and Link) o endereço da próxima instrução é armazenado em R14. – No retorno da sub-rotina: MOV PC, LR ou... BAL LR

10 Registradores Program counter (PC) ou R15 – R15 armazena o PC. – Se for escrito causará a execução da instrução no endereço armazenado em R15. – Não deve ser usado com STR (Store Register) ou STM (Store Multiple Registers)

11

12 Registradores Os de uso geral, podem ser usados para manipular : – Bytes – Half-words (16 bits) – Words (32 bits)

13 Registradores CSPR - Current Processor Status Register – Dividido em User flags e Systems Control flags – Pode ser usado para afetar a operação de um programa. – SBZ = Uso futuro – I = Interrupções são permitidas – F = Fast Interrupts são permitidas – Mode = Modo corrente do processador – Salvo em SPSR nos modos de exceção

14 Registradores Flags “condition code” ou cc – Negative (N) : valor do bit mais significativo do resultado da operação, em complemento 2. – Zero (Z) : 1 se a operação resultou em 0. – Carry (C) : “vai-um” do bit mais significativo em adições ou deslocamentos. – Overflow (V) : 1 quando o resultado da operação é maior que o registrador pode armazenar.

15 Exceções 7 tipos, geradas interna ou externamente – Interrupção. – Execução de instrução não definida.

16 Exceções Reset : Power on ou Pino de Reset baixo Software Interrupt: chamadas ao S.O. Undefined Instruction: instrução inválida Prefetch Abort: Acesso a memória inexistente Data abort: Acesso a dados fora do alinhamento (2 bits menos significativos <> 0) Interrupt: interrupção de hardware Fast Interrupt: Interrupção rápida (não pode ser interrompida).

17 Interrupções Processador para após a execução da instrução corrente. CPSR é salvo em SPSR. Endereço da próxima instrução é salvo em LR. Processador inicia a execução da rotina de tratamento de interrupção.

18 Conjunto de Instruções 6 categorias: – Movimentação de dados – Aritmética – Acesso a memória – Lógica e manipulação de bits – Controle de fluxo – Controle do sistema / instruções privilegiadas

19

20 Execução Condicional A instrução é executada dependendo do resultado de uma flag de condição. Ex: MOVCS R0,R1

21 Execução Condicional Geralmente usadas após instrução CMP (compare) Greater than (GT) and Less than (LT) são usados com inteiros com sinal. Higher than (HT) and Lower than (LO) são usados para inteiros sem sinal.

22 Atualização das flags de condição Adicionando um “S” ao final do mnemônico Ex: MOV R0, #0 – Move 0 para R0 e não atualiza flags MOVS R0,#0 – Move 0 para R0 e atualiza flags Flag Zero vai para 1 Flag Negative vai para 0 Flags Carry e Overflow não serão afetadas

23 Exercício Considere o comando – MOV Rd, O que o código seguinte faz? MOVS R0, R1 MOVEQS R0, R2 MOVEQ R0, R3

24 Operandos de Processamento de Dados Pode ser uma constante ou registrador Pode ser modificado de 5 formas diferentes Um operando é roteado pelo Barrel Shifter Ex: MOV R0, #1234 MOV R0, R1

25 Operandos de Processamento de Dados Logical Shift Left (LSL) Maneira prática de multiplicar por 2 n Bits menos significativos vão para 0 EX: MOV R0, R1, LSL #2 MOV R0, R1, LSL R2 Bit “perdido” vai para Carry Flag se modificador S é usado.

26 Operandos de Processamento de Dados Logical Shift Right (LSR) Maneira prática de dividir por 2 n Bits mais significativos vão para 0 EX: MOV R0, R1, LSR #2 MOV R0, R1, LSR R2 Bit “perdido” vai para Carry Flag se modificador S é usado.

27 Operandos de Processamento de Dados Arithmetic Shift Right (ASR) Maneira prática de dividir por 2 n para inteiros sinalizados. Bit mais significativo é mantido EX: MOV R0, R1, ASR #2 MOV R0, R1, ASR R2 Não existe Arithmetic Shift Left!

28 Operandos de Processamento de Dados Rotate Right (ROR) Bit menos significativo é copiado para Carry Flag (C) e Carry Flag é copiada para o bit mais significativo. EX: MOV R0, R1, ROR #2 MOV R0, R1, ROR R2 Não existe ROL!

29 Operandos de Processamento de Dados Rotate Right (ROR)

30 Operandos de Processamento de Dados Rotate Right Extended (RRX) Permite rotação de 33 bits através da Carry Flag.

31 Operandos de Acesso a memória 3 métodos para especificar o endereço de memória. – Offset Addressing – Pre-Index Addressing – Post Index Addressing Offset pode ser: – Valor constante – Registrador – Scaled (LSL, LSR, ASR, ROR, RRX)

32 Operandos acesso a memória Offset Addressing: adiciona o valor do registrador base a um offset LDR R0, [R1] LDR R0, [R1, #4] LDR R0, [R1, R2] LDR R0, [R1, R2, LSL #2] Usado para acesso a vetores e tabelas: – R1 <- Endereço Base, R2 <- Indice, LSL #2 = R2 * 4

33 Operandos acesso a memória Pre-Index Addressing: mesmo comportamento que no offset, mas atualiza base register. LDR R0, [R1, #4]! LDR R0, [R1, R2]! LDR R0, [R1, R2, LSL #2]! Usado em loops!

34 Operandos acesso a memória Post-index Addressing: Usa o conteúdo do registrador base. Depois adiciona o offset e atualiza o registrador base. LDR R0, [R1], #4 LDR R0, [R1], R2 LDR R0, [R1], R2, LSL #2 Usado para ler o endereço corrente e apontar para o próximo endereço automaticamente.


Carregar ppt "Arquitetura do ARM RISC (Reduced Instruction Set Computer) – Conjunto relativamente grande de registradores – Modelo “load/store “de processamento Operações."

Apresentações semelhantes


Anúncios Google