MIPS MULTICICLO Fluxo de Dados e Controle 1998 Morgan Kaufmann Publishers 1 Usa máquina de estado finito para controle • Máquinas de estado finito: – Um conjunto de estados e – Função próximo estado (determinado pelo estado atual e entrada) – Função de saída (determinada pelo estado atual e possivelmente entrada) Usaremos uma máquina Moore (saída baseada somente no estado atual) Current state Next-state function Next state Clock Inputs Output function Outputs 1998 Morgan Kaufmann Publishers 2 Técnica multiciclo • • Quebrar as instruções em passos, cada passo leva um ciclo – Balancear a quantidade de trabalhos a realizar – Restringir cada ciclo para usar somente uma unidade funcional No fim de um ciclo – Armazenar valores para serem usados nos ciclos posteriores – introduzir registradores internos adicionais PC 0 M u x 1 Address Memory MemData Write data Instruction [25– 21] Read register 1 Instruction [20– 16] Read Read register 2 data 1 Registers Write Read register data 2 Instruction [15– 0] Instruction register Instruction [15– 0] Memory data register 0 M Instruction u x [15– 11] 1 A B 0 M u x 1 Sign extend 32 Zero ALU ALU result ALUOut 0 4 Write data 16 0 M u x 1 1 M u 2 x 3 Shift left 2 1998 Morgan Kaufmann Publishers 3 Cinco passos de Execução • Busca da instrução (Instruction Fetch) • Decodificação da instrução e busca do registrador • Execução, Computação do endereço de memória, ou conclusão de uma instrução de branch • Acesso à memória ou conclusão de uma instrução R-type • Passo de Write-back INSTRUÇÕES LEVEM DE 3 - 5 CICLOS! 1998 Morgan Kaufmann Publishers 4 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. Pode ser descrito sucintamente usando RTL "Register-Transfer Language" IR = Memory[PC]; PC = PC + 4; Podemos obter os valores dos sinais de controle? Quais as vantagens de atualizar o PC neste passo? 1998 Morgan Kaufmann Publishers 5 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 RTL: A = Reg[IR[25-21]]; B = Reg[IR[20-16]]; ALUOut = PC + (sign-extend(IR[15-0]) << 2); • Estamos acionando as linhas de controle baseadas no tipo de instrução (a instrução está sendo "decodificada" na lógica de controle) 1998 Morgan Kaufmann Publishers 6 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; 1998 Morgan Kaufmann Publishers 7 Passo 4 (R-type ou acesso à memória) • Acesso à memória através de loads e stores MDR = Memory[ALUOut]; or Memory[ALUOut] = B; • Fim das instruções R-type Reg[IR[15-11]] = ALUOut; A escrita é realizada no fim do ciclo, na borda 1998 Morgan Kaufmann Publishers 8 Passo Write-back • Reg[IR[20-16]]= MDR; E as outras instruções? 1998 Morgan Kaufmann Publishers 9 Resumo: Step name Instruction fetch Action for R-type instructions Instruction decode/register fetch Action for memory-reference Action for instructions branches IR = Memory[PC] PC = PC + 4 A = Reg [IR[25-21]] B = Reg [IR[20-16]] ALUOut = PC + (sign-extend (IR[15-0]) << 2) Execution, address computation, branch/ jump completion ALUOut = A op B ALUOut = A + sign-extend (IR[15-0]) Memory access or R-type completion Reg [IR[15-11]] = ALUOut Load: MDR = Memory[ALUOut] or Store: Memory [ALUOut] = B Memory read completion if (A ==B) then PC = ALUOut Action for jumps PC = PC [31-28] II (IR[25-0]<<2) Load: Reg[IR[20-16]] = MDR 1998 Morgan Kaufmann Publishers 10 Implementando o Controle • Para os dois primeiros passos, os sinais de controle são iguais para todas as instruções. • A partir do passo 3, os sinais de controle são dependentes de: – Que instrução está sendo executada – Que passo está sendo realizada • Usar as informações acumuladas para especificar uma máquina de estado finito – Especificar uma máquina de estado finito: 1) para os dois primeiros passos correspondem dois estados da máquina 2) a partir do passo 3, cada combinação de instrução e passo resulta num estado diferente. 1998 Morgan Kaufmann Publishers 11 Especificação da FSM Instruction decode/ register fetch Instruction fetch (Op 2 W ') = 'L O or ( 'S p= = ') W 'S 5 MemRead IorD = 1 R-type completion 7 MemWrite IorD = 1 Write-back step 4 RegDst = 0 RegWrite MemtoReg = 1 Quantos bits de estado são necessários? RegDst = 1 RegWrite MemtoReg = 0 ') Jump completion 9 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 p Memory access 'B EQ 8 (O (Op = 'LW') e) -t yp R = Branch completion Execution ALUSrcA =1 ALUSrcB = 00 ALUOp = 10 Memory access 3 • (Op W ') 6 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 (Op = 'J') Memory address computation 1 = Start MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 (O p 0 PCWrite PCSource = 10 Máquina de estado finito para controle (controle hardwired, controle fixo) PCWrite • PCWriteCond IorD MemRead Implementação: MemWrite (Op 2 W ') = 'L p= 'SW 6 Branch completion 'B EQ 8 ALUSrcA =1 ALUSrcB = 00 ALUOp = 10 PCSource ') e) -typ =R ALUOp Jump completion Outputs 9 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 PCWrite PCSource = 10 ALUSrcB ALUSrcA RegWrite (O p = 'S ') W (Op = 'LW') (Op ') Execution ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 MemtoReg ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 (Op = 'J') or (O Control logic 1 = Memory address computation MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 (O p Start IRWrite Instruction decode/ register fetch Instruction fetch 0 Memory access 3 Memory access 5 MemRead IorD = 1 RegDst R-type completion 7 MemWrite IorD = 1 RegDst = 1 RegWrite MemtoReg = 0 NS3 NS2 NS1 NS0 Write-back step 4 S0 S1 S2 S3 Op1 Op2 Op3 Op5 Op4 Instruction register opcode field Op0 Inputs RegDst = 0 RegWrite MemtoReg = 1 State register 1998 Morgan Kaufmann Publishers 13 Implementação em PLA da lógica de controle Op5 Op4 Op3 Op2 Op1 Op0 S3 S2 S1 S0 PCWrite PCWriteCond IorD MemRead MemWrite IRWrite MemtoReg PCSource1 PCSource0 ALUOp1 ALUOp0 ALUSrcB1 ALUSrcB0 ALUSrcA RegWrite RegDst NS3 NS2 NS1 NS0 1998 Morgan Kaufmann Publishers 14 Controle microprogramado – uso de memória de microprograma (microcódigo) Control unit Microcode memory Outputs Input PCWrite PCWriteCond IorD MemRead MemWrite IRWrite BWrite MemtoReg PCSource ALUOp ALUSrcB ALUSrcA RegWrite RegDst AddrCtl Datapath 1 Microprogram counter Adder Op[5– 0] Address select logic Instruction register opcode field • O que são “microinstruções” ? 1998 Morgan Kaufmann Publishers 15 Microprogramação • Uma metodologia de especificação – Apropriado se centenas de opcodes, modos, ciclos, etc. – sinais especificados simbolicamente usando microinstruções Label Fetch Mem1 LW2 ALU control Add Add Add SRC1 PC PC A Register control SRC2 4 Extshft Read Extend PCWrite Memory control Read PC ALU Read ALU Write MDR SW2 Rformat1 Func code A Write ALU B Write ALU BEQ1 JUMP1 • • Subt A B ALUOut-cond Jump address Sequencing Seq Dispatch 1 Dispatch 2 Seq Fetch Fetch Seq Fetch Fetch Fetch Duas implementações da mesma arquitetura tem o mesmo microcódigo? O que faria um microassembler? 1998 Morgan Kaufmann Publishers 16 Comparação: Controle fixo e Microprogramado • Controle fixo: - complexidade do circuito cresce linearmente com o número de instruções. - após a construção é difícil a alteração do conjunto de instruções implementado - apresenta melhor desempenho • Controle Microprogramado: – a complexidade do circuito não muda enquanto usar a mesma memória de microcódigo – é fácil mudar o conteúdo da memória de microprograma e portanto alterar o conjunto de instruções implementado – o desempenho é menor em relação ao controle fixo. 1998 Morgan Kaufmann Publishers 17 C on tro le fix o complexidade Comparação: Controle fixo e Microprogramado Controle microprogramado 20 40 60 80 100 120 Número de instruções 1998 Morgan Kaufmann Publishers 18