1 / 34

Arquitetura do ARM

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.

jereni
Download Presentation

Arquitetura do ARM

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitetura do ARM • RISC (ReducedInstruction 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. Modos do Processador • Usermode – modo normal • Acesso limitado ao sistema • Não pode mudar o modo • PrivilegedMode - 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 • Programcounter – 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 exceptionmodes.

  7. Registradores • Registradores de status: • CPSR : Current Processor Status Register • Informação de estado corrente do processador • SPSR: Saved Processor Status Register • Só disponivel nos modos privilegiados • Armazena informação de estado imediatamente antes do processador mudar para o estado privilégiado.

  8. Registradores • Stack Pointer ou R13 • Cada exceptionmode 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 (Branchand 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 • Programcounter (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 (storeregister)

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

  12. Registradores • CSPR - Current Processor Status Register • Dividido em Userflags e Systems Controlflags • Pode ser usado para afetar a operação de um programa. • SBZ = Uso futuro • I = Interrupções são permitidas • F = FastInterrupts são permitidas • Mode = Modo corrente do processador • Salvo em SPSR nos modos de exceção

  13. Registradores • Flags “conditioncode” 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.

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

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

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

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

  18. Execução Condicional <cc> • A instrução é executada dependendo do resultado de uma flag de condição. Ex: MOVCS R0,R1

  19. Execução Condicional <cc> • Geralmente usadas após instrução CMP (compare) • Greaterthan (GT) andLessthan (LT) são usados com inteiros com sinal. • Higherthan (HT) andLowerthan (LO) são usados para inteiros sem sinal.

  20. 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 FlagsCarry e Overflow não serão afetadas

  21. Considere o comando • MOV <cc> <S> Rd, <op1> • O que o código seguinte faz? MOVS R0, R1 MOVEQS R0, R2 MOVEQ R0, R3

  22. Operandos de Processamento de Dados <op1> • Pode ser uma constante ou registrador • Pode ser modificado de 5 formas diferentes • Um operando é roteado pelo BarrelShifter Ex: MOV R0, #1234 MOV R0, R1

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

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

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

  26. Operandos de Processamento de Dados <op1> • RotateRight (ROR) • Bit menos significativo é copiado para CarryFlag (C) e CarryFlag é copiada para o bit mais significativo. EX: MOV R0, R1, ROR #2 MOV R0, R1, ROR R2 • Não existe ROL!

  27. Operandos de Processamento de Dados <op1> • RotateRight (ROR)

  28. Operandos de Processamento de Dados <op1> • RotateRightExtended (RRX) • Permite rotação de 33 bits através da CarryFlag.

  29. Operandos de Acesso a memória <op2> • 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)

  30. Operandos acesso a memória <op2> • 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

  31. Operandos acesso a memória <op2> • 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

  32. Operandos acesso a memória <op2> • 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.

More Related