360 likes | 634 Views
MIPS. Características do MIPS: 32 registradores de 32 bits de uso geral Quantidade suficiente para não aumentar o tamanho da instrução, pois endereçar 32 registradores requer apenas 5 bits na instrução
E N D
MIPS • Características do MIPS: • 32 registradores de 32 bits de uso geral • Quantidade suficiente para não aumentar o tamanho da instrução, pois endereçar 32 registradores requer apenas 5 bits na instrução • Facilita a decodificação e velocidade, pois um grande número de registradores torna lenta a decodificação • Usa instruções com 3 operandos • Número natural de operandos para uma operação matemática é 3 • Todos os operandos estão em registradores, evita acesso à memória para buscar dados em cada operação • Somente 2 instruções acessam a memória (load e store) • Uma palavra (word) do MIPS tem 32 bits • Todas as instruções têm o mesmo tamanho: 32 bits • Facilita a decodificação
31 26 21 16 11 6 0 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits 31 26 21 16 0 op rs rt displacement 6 bits 5 bits 5 bits 16 bits Instruções do MIPS • Tipo-R (registrador) • add rd, rs, rt • sub, and, or, slt • Tipo-I (imediato) • lw rt, rs, imm • sw rt, rs, imm • Tipo-J (jump/desvio) • beq rs, rt, imm • Lê registradores rs e rt • Fornece dados para a ULA • Atualiza conjunto de registradores • Lê registrador rs (e rt para armazenar) • Fornece rs e imediato para a ULA • Move dado entre memória e registrador • Lê registradores rs e rt • Fornece-os para a ULA comparar • Soma PC ao deslocamento; atualiza PC
Instruções do MIPS Exemplos MIPS g = (b + c) (e + f) add $t8,$s2,$s3 # $t8 b + c add $t9,$s5,$s6 # $t9 e + f sub $s7,$t8,$t9 # $s7 ($t8) ($t9) # g ($t8) ($t9) opcode operando destino, operando fonte 1, operando fonte 2
Instruções do MIPS Exemplos MIPS: Inst. Aritméticas addi $s3,$s3,4 # $s3 $s3 + 4 sub $s7,$t8,$t9 # $s7 ($t8) ($t9)
Instruções do MIPS Exemplos MIPS: Inst. Transferência de Dados lw $t0,100($s3) # $t0 [($s3) + 100] sw $t0,100($t1) # [($t1)+100] ($t0) lw: load word sw: store word • Somente estas duas instruções acessam a memória: • Facilita decodificação • Hardware mais simples para decodificar
Instruções do MIPS Exemplos MIPS: Inst. OperaçõesLógicas and $s1,$s2,$s3 # $s1 $s2 & $s3 or $s1,$s2,$s3 # $s1 $s2 | $s3 nor $s1,$s2,$s3 # $s1 ~($s2 | $s3) andi $s1,$s2,100 # $s1 $s2 & 100 ori $s1,$s2,100 # $s1 $s2 | 100
Instruções do MIPS Exemplos MIPS: Inst. de Desvios beq $s1,$s2,L # if ($s1==$s2) go to L bne $s1,$s2,L # if ($s1!=$s2) go to L slt $s1,$s2,$s3 # if ($s2<$s3) $s1 1; # else # $s1 0 slt $s1,$s2,100 # if ($s2<100) $s1 1; # else # $s1 0
Instruções do MIPS • Endereçamento no MIPS • Endereçamentoemregistrador: o operando é um registrador • add $s1,$s2,$s3
Instruções do MIPS • Endereçamento no MIPS • Endereçamento de base oudeslocamento: o operandoestá no local de memóriacujoendereço é a soma de um registrador e umaconstante • lw $t0,0,($t1)
Instruções do MIPS • Endereçamento no MIPS • Endereçamentoimediato: o operando é umaconstantedentrodaprópriainstrução • addi $s1,$s2,100
Instruções do MIPS • Endereçamento no MIPS • Endereçamentorelativoao PC: o endereçamento é a soma do PC e umaconstantenainstrução • beq $s1,$s2,L #if ($s1==$s2) go to [PC+4]+[L]
Instruções do MIPS • Endereçamento no MIPS • Endereçamentoabsoluto: o endereço de jump faz parte dainstrução • j 10000 #go to 10000
Datapath • Construção do Datapath • Para determinar o datapath devemos examinar cada um dos componentes necessários à execução de cada uma das classes de instruções do processador
Datapath • Datapath • Exemplo de Estudo: Processador MIPS • Para o estudo: selecionamos um grupo básico de instruções que representa todas as demais instruções do processador • loadword (lw) • storeword (sw) • add, sub, and, or • beq Corresponde aos componentes e suas interligações que possibilitam a execução das instruções de um processador instruções de referência à memória instruções aritméticas e lógicas instrução de desvio
Instruções do MIPS • Formatos das Instruções da Arquitetura MIPS • Instruções de Registradores: Tipo R • Instruções Imediatas: Tipo I • Instruções de Desvios: Tipo J
31 26 21 16 11 6 0 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits 31 26 21 16 0 op rs rt displacement 6 bits 5 bits 5 bits 16 bits Instruções do MIPS • Tipo-R • add rd, rs, rt • sub, and, or, slt • Tipo-I • lw rt, rs, imm • sw rt, rs, imm • Tipo-J • beq rs, rt, imm • Lê registradores rs e rt • Fornece dados para a ULA • Atualiza conjunto de registradores • Lê registrador rs (e rt para armazenar) • Fornece rs e imediato para a ULA • Move dado entre memória e registrador • Lê registradores rs e rt • Fornece-os para a ULA comparar • Soma PC ao deslocamento; atualiza PC
Endereço da Instrução Instrução Memória de Instruções Datapath • Simbologia usada no Datapath • Unidades funcionais necessárias para cada instrução: • Busca de Instruções (ação executada para todas as instruções) Memória para armazenar as instruções do programa
PC Contador de Programa Datapath • Simbologia usada no Datapath • Unidades funcionais necessárias para cada instrução: • Busca de Instruções (ação executada para todas as instruções) PC - Program Counter mantém o endereço da próxima instrução
Somador Datapath • Simbologia usada no Datapath • Unidades funcionais necessárias para cada instrução: • Busca de Instruções (ação executada para todas as instruções) Somador incrementa o valor do PC para compor o endereço da próxima instrução
Memória no MIPS Palavras de 4 bytes Datapath • Visão Lógica da Memória no MIPS • Palavras de 4 bytes posicionadas seqüencialmente
PC Clk Lógica do Próximo Endereço Endereços Palavra de Instrução Memória de Instruções 32 Datapath • Datapath • Parte do Datapath para Busca de Instruções
Datapath • Datapath • Parte do Datapath para Busca de Instruções
Datapath • Unidades funcionais necessárias para operação da ULA (instruções do tipo Registrador): • Banco de Registradores (Register File) e a própria ULA • Todas as instruções do Tipo-R precisam: • Ler 2 registradores • Realizar a operação na ULA • Escrever o resultado num registrador • Escrita precisa: • Especificar o número do registrador a ser escrito • Entrada do dado a ser escrito • Leitura precisa: • Especificar o número do registrador a ser lido • Saída para o registrador lido
5 Dado1 lido 32 Reg1 a ser lido 5 Números dos Registradores Reg2 a ser lido Registradores Dados 5 Reg a ser escrito 32 Dado2 lido 32 Dado Dado de escrita EscReg Datapath • Simbologia usada no Datapath • Unidades funcionais necessárias para operação da ULA (instruções do tipo Registrador): • Banco de Registradores (Register File) e a própria ULA
Controle da ULA Zero ULA Resultado da ULA Datapath • Simbologia usada no Datapath • Unidades funcionais necessárias para operação da ULA (instruções do tipo Registrador): • Banco de Registradores (Register File) e a própria ULA
Datapath • Estrutura do Banco de Registradores para Leitura
Datapath • Estrutura do Banco de Registradores para Escrita
31 26 21 16 11 6 0 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Datapath • Parte do Datapath para Instruções do Tipo Registrador • R[rd] <- R[rs] op R[rt] Exemplo: addrd, rs, rt • Ra, Rb, e Rw vem dos campos rs, rt e rd • Sinal de operação da ALU depende da operação
Datapath • Unidades funcionais necessárias para as instruções de load e store: • Memória de Dados e Unidade de Extensão de Sinal • Todas as instruções do Tipo-I precisam: • Ler 1 registrador base para calcular o endereço do operando • Somar o conteúdo do registrador base ao endereço de 16 bits na instrução • Instrução de Store: • Especificar o número do registrador a ser lido • Escrever o conteúdo do registrador lido na posição de memória calculada • Instrução de Load: • Ler o conteúdo da posição de memória no endereço calculado • Escrever o conteúdo da posição de memória no registrador especificado • Elementos necessários: • Todas as instruções usam a ULA, o banco de registradores e a memória de dados
EscMem Endereço Dado lido Dado a ser escrito Memória de Dados LerMem Datapath • Simbologia usada no Datapath • Unidades funcionais necessárias para as instruções de load e store: • Memória de Dados e Unidade de Extensão de Sinal A memória precisa ter sinais de controle para leitura e escrita, um endereço de entrada, além de uma entrada para dados e uma saída para dados
16 bits 32 bits ExtSin Extensão de Sinal Datapath • Simbologia usada no Datapath • Unidades funcionais necessárias para as instruções de load e store: • Memória de Dados e Unidade de Extensão de Sinal Unidade de Extensão de Sinal: Tem entrada de 16 bits e estende o sinal para 32 bits para calcular o endereço do operando
31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits Datapath • Parte do Datapath para Instruções do Tipo Load e Store • R[rt] <- Mem[R[rs] + SignExt[imm16]] Exemplo: lw rt,rs,imm16
31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits Datapath • Parte do Datapath para Instruções do Tipo Load • R[rt] <- Mem[R[rs] + SignExt[imm16]] Exemplo: lw rt, rs, imm16
31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits Datapath • Parte do Datapath para Instruções do Tipo Store • Mem[R[rs] + SignExt[imm16]] <- R[rt] Exemplo: sw rt,rs,imm16
Agradecimentos • Professor: • João Angelo Martini