1 / 23

Exemplo de arquitetura registrador-registrador- MIPS

Exemplo de arquitetura registrador-registrador- MIPS. MIPS. ISA – todas as instruções de 32 bits, em 3 formatos: Máquina RISC – aritmética registrador-registrador 32 registradores de 32 bits Memória endereçada por 32 bits, organizada em bytes – ou seja,

aderyn
Download Presentation

Exemplo de arquitetura registrador-registrador- MIPS

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. Exemplo de arquitetura registrador-registrador- MIPS

  2. MIPS • ISA – todas as instruções de 32 bits, em 3 formatos: • Máquina RISC – aritmética registrador-registrador • 32 registradores de 32 bits • Memória endereçada por 32 bits, organizada em bytes – ou seja, a diferença de endereçamento de uma palavra (32 bits) e outra, da memória, é múltipla de 4. 230 words têm endereços de bytes 0, 4, 8, ... 232-4 op rs rt rd funct R I J op rs rt 16 bit address op 26 bit address

  3. Banco de 32 Registradores do MIPS Notação: sempre usa $ como prefixo $0 . . . $31

  4. Instruções típicas op rs rt rd funct op rs rt 16 bit address op 26 bit address • InstruçãoSignificadoadd $s1,$s2,$s3 $s1 = $s2 + $s3sub $s1,$s2,$s3 $s1 = $s2 – $s3slt $s1,$s2,$s3 se $s2 < $s3 então $s1=1 senão $s1=0 lw $s1,100($s2) $s1 = Memory[$s2+100] sw $s1,100($s2) Memory[$s2+100] = $s1 bne $s4,$s5,L Próx. instr. é no Label se $s4< >$s5 beq $s4,$s5,L Próx. instr. é no Label se $s4 = $s5 j Label Próx. instr. é no Label • Formatos: R I I J 5 6 6 5 5 5 R I J

  5. Instruções aritméticas usando operandos imediatos (constantes) instrução significado addi $29, $29, 4 I andi $29, $29, 6 ori $29, $29, 4 slti $t1, $s1, 2 $29 = $29+ 4 $29 = $29 and 6 $29 = $29 or 4 Se $s1 < 2 então $t1=1 senão $t1=0 Formato: I op rs rd 16 bits imediato

  6. Modos de Endereçamento imediato registrador memória (dados) memória (instrução) memória (instrução)

  7. HARDWARE: Unidades funcionais necessárias Mem.dados Mem. instrução Somador PC Extensão de sinal Banco de registradores ALU

  8. Implementação de MIPS em um único ciclo controle PC regs Mem. instrução Mem. dados

  9. Controle: - decodificação do opcode e geração dos sinais de controle control ALU-control opcode sinais de controle

  10. Fluxo numa instrução aritmética (R-format) RegDst ALUOp Memto Reg ALUSrc

  11. Circuito de Controle (decodificação do opcode e geração dos sinais de controle) 0 0 0 opcode 0 0 0 1 0 0 1 sinais de controle 0 0 0 1 0

  12. Fluxo para a instrução lw LMD (Load Mem. Data)

  13. Circuito de Controle (para lw) 1 0 0 opcode 0 1 1 0 1 1 1 sinais de controle 1 0 0 0 0

  14. Fluxo para a instrução sw SMD – Store Mem. Data

  15. Circuito de Controle (para sw) 1 0 1 opcode 0 1 1 0 1 0 0 sinais de controle 0 1 0 0 0

  16. Fluxo para a instrução beq

  17. Circuito de Controle (para beq) 0 0 0 opcode 1 0 0 0 0 0 0 sinais de controle 0 0 1 0 1

  18. Fluxo de dados multiciclo – usando uma única memória para instruções e dados ALUSrcA IorD RegDst MemtoReg ALUSrcB

  19. Passo 1: Busca da instrução (Instruction Fetch) • Usar o PC para a leitura da instrução e carga da mesma no registrador de instrução (Instruction Register). • Incrementar o valor do PC por 4 e carregar o resultado no PC. IR = Memory[PC]; PC = PC + 4;Podemos obter os valores dos sinais de controle?

  20. Passo 2: Decod. da Instrução e Busca de Registradores • Leitura dos registradores rs e rt • Computar o endereço de branch no caso da instrução de branch A = Reg[IR[25-21]]; B = Reg[IR[20-16]]; ALUOut = PC + (sign-extend(IR[15-0]) << 2); • Preparando para acionar as linhas de controle baseadas no tipo de instrução (a instrução está sendo "decodificada" na lógica de controle)

  21. Passo 3 (dependente da instrução) • ALU está realizando uma das três funções, baseadas no tipo de instrução • Referência à memória: ALUOut = A + sign-extend(IR[15-0]); • R-type: ALUOut = A op B; • Branch: if (A==B) PC = ALUOut;

  22. Passo 4 (R-type ou acesso à memória) • Acesso à memória através de loads e stores MDR = Memory[ALUOut]; ou Memory[ALUOut] = B; • Fim das instruções R-type Reg[IR[15-11]] = ALUOut;A escrita é realizada no fim do ciclo, na borda

  23. Passo 5 (Write-back, para instrução load) • Reg[IR[20-16]]= MDR; Fim da instrução load!

More Related