SSC0112 Organização de Computadores Digitais I 16ª Aula Arquitetura MIPS: Unidade de Controle (Multiciclo) Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br 1
MIPS Multiciclo com jump 2
MIPS Multiciclo: Unidade de controle Divisão da execução da instrução em várias etapas, maximizando o desempenho, limitando a cada ciclo somente um acesso a memória, ou um acesso ao banco de registradores, ou uma operação na ULA O tempo do clock deve ser o maior valor entre os acessos citados acima 3
MIPS Multiciclo: Unidade de controle Os sinais de controle da implementação multiciclo não dependem somente dos bits que definem a instrução Dependem também de que ciclo a instrução se encontra Utilização de uma máquina de estado finito Registrador para armazenar o estado atual (state register) Função para cálculo do próximo estado: determinado pelo estado corrente e pela entrada Função de saída: determinada pelo estado corrente e pela entrada 4
Etapas: MIPS Multiciclo: Unidade de controle 1. Busca da instrução 2. Decodificação da instrução e busca dos registradores 3. Execução, cálculo do endereço de memória ou conclusão do desvio 4. Acesso à memória ou conclusão de instrução tipo R 5. Conclusão da leitura da memória 5
MIPS Multiciclo: Unidade de controle Passo Instrução tipo R Instruções de referência à memória Branches Jumps Busca da instrução Decodificação da instrução e busca dos registradores Execução, cálculo do endereço de memória ou conclusão do desvio Acesso à memória ou conclusão de instrução tipo R Conclusão da leitura da memória IR <= Memory[PC] PC <= PC + 4 A <= Reg[IR[25:21]] B <= Reg[IR[20:16]] ALUOout <= PC + (sign-extend(ir[15:0]) << 2) ALUout <= A op B ALUout <= A + sign-extend(ir[15:0]) If (A == B) PC <= ALUout Reg[IR[15:11]] <= ALUout Load: MDR <= Memory[ALUout] ou Store: Memory[ALUout] <= B Load: Reg[IR[20:16]] <= MDR PC <= {PC[31:28], (IR[25:0],2 b00)} 6
MIPS Multiciclo: Unidade de controle 7
MIPS Multiciclo: Unidade de controle 8
MIPS Multiciclo: Unidade de controle 9
MIPS Multiciclo: Unidade de controle 10
MIPS Multiciclo: Unidade de controle 11
Máquina de Estado Finito Final 12
MIPS multiciclo: Unidade de Controle Sinais de controle dependem: da instrução atual e do ciclo em execução Especificação pode ser feita com: MEFs Microprogramação representação através de (ou como um) programa Representação Lógica equação lógica ou tabela verdade Implementação de ambas as especificações pode ser: circuito lógico (como PLA) ou ROM
UC: da especificação à implementação
UC: especificação com MEF MEF: conjunto de estados + duas funções: função próximo estado e função saída Função saída determina os sinais de controle deste ciclo Função próximo estado determina qual será o estado no ciclo seguinte
MIPS multiciclo: MEF da UC Estados que precisam ser implementados... com sinais de controle Quantos bits são necessários para determinar o estado?
MIPS multiciclo: UC hardwired Controle de sequenciamento: função próximo estado Sinais de controle deste ciclo
MIPS multiciclo: representação lógica com equações lógicas Estados numerados sequencialmente: 0=000, 1=0001, 2=0010, 3=0011, 4=0100, 5=0101, 6=0110, Qual a equação lógica do bit NS0 (NextState0)? NS0 deve estar ativo sempre que o próximo estado for ímpar, ou seja, Próximo estado Estado atual NextState1 => state0 = S3'.S2'.S1'.S0' NextState3 => state2. (Op[5-0] = lw ) = S3'.S2'.S1.S0'. Op5.Op4'.Op3'.Op2'.Op1.Op0 NextState5 => state2. (Op[5-0] = sw ) = S3'.S2'.S1.S0'. Op5.Op4'.Op3.Op2'.Op1.Op0 NextState7 => state6 = S3'.S2.S1.S0' NextState9 => state1. (Op[5-0] = jmp ) = S3'.S2'.S1'.S0. Op5'.Op4'.Op3'.Op2'.Op1.Op0' NS0 é a soma lógica (OR) de todos esses termos.
MIPS multiciclo: relação saídas x estados
MIPS multiciclo: implementação em hardware da UC com PLA AND OR
MIPS multiciclo: UC microprogramada Microprogramação: alternativa para especificar a UC Controle de sequenciamento com: contador de microprograma e tabelas de despacho
MIPS multiciclo: UC microprogramada Tabelas de despacho 22
MIPS multiciclo UC microprogramada
MIPS multiciclo: UC microprogramada Lógica de Seleção de Endereço ação do controle de endereço a cada microinstrução
MIPS multiciclo: UC microprogramada Representação lógica usando uma Tabela Verdade Valores de Entrada (estado [3-0]) \/ Saídas \/ 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 PCWrite 1 0 0 0 0 0 0 0 0 1 PCWriteCond 0 0 0 0 0 0 0 0 1 0 IorD 0 0 0 1 0 1 0 0 0 0 Mem Read 1 0 0 1 0 0 0 0 0 0 Mem Write 0 0 0 0 0 1 0 0 0 0 IRWrite 1 0 0 0 0 0 0 0 0 0 Mem toreg 0 0 0 0 1 0 0 0 0 0 PCSrc1 0 0 0 0 0 0 0 0 0 1 PCSrc0 0 0 0 0 0 0 0 0 1 0 ALUOP1 0 0 0 0 0 0 1 0 0 0 ALUOP0 0 0 0 0 0 0 0 0 1 0 ALUSrcB1 0 1 1 0 0 0 0 0 0 0 ALUSrcB0 1 1 0 0 0 0 0 0 0 0 ALUSrcA 0 0 1 0 0 0 1 0 1 0 RegWrite 0 0 0 0 1 0 0 1 0 0 RegDst 0 0 0 0 0 0 0 1 0 0
MIPS multiciclo: UC microprogramada Implementação usando uma ROM os m bits do estado são a entrada indicam o endereço da ROM a ser lido endereçam uma das 2 m entradas na ROM (altura) os n bits de controle ([17-0] no caso) são a saída é a palavra lida da ROM (largura)
MIPS Multiciclo: UC microprogramada (sinais ativos)