O Processador: Via de Dados e Controle Ch5A
Via de Dados e Controle Implementação da arquitetura MIPS Visão simplificada de uma arquitetura monociclo Instruções de memória: lw, sw Instruções lógicas aritméticas: add, sub, and, or, slt Instruções de desvio: beq, j Não implementadas: mult, div, jal, fp Implementação genérica: O contador de programa (PC) fornece o endereço da instrução Obtém instrução da memória Ler registradores Usar o opcode da instrução para decidir exatamente o que deve ser feito Todas as instruções utilizam a ULA após a leitura dos registradores Ch5A 2
Elementos de estado Clock é usado em lógica síncrona Quando um elemento de estado deve ser atualizado? falling edge cycle time rising edge Ch5A 3
Implementação da lógica baseada em clock Metodologia de disparo na borda Execução típica: Ler conteúdo de elementos de estado Enviar valores através de alguma lógica combinacional Escrever resultados para um ou mais elementos de estado State element Combinational logic State element 2 Clock cycle Ch5A 4
Banco de registradores (e Memória) Banco de registradores Memória: acesso Mem[addr] register number Register 0 Register Register n Register n M u x RD WR register number 2 M u x 2 Dados Endereço register number register number 2 Register file register 2 Ch5A 5
Uma visão simplificada Dados: lw, sw Arit: add, sub,.. op Log: slt Desvio: beq lw $t, 00($t2) add $t, $t2, $t3 slt $t, $t2, $t3 beq $t, $t2, label Fetch ou busca IR Mem[PC] PC PC + 4 lw, sw arit slt beq R Mem[R2+off] R R2 op R3 N R2<R3? R=R2? N S S R 0 R PC PC +off Ch5A 6
Mais detalhes de implementação Primeira abordagem: período de clock por instrução exec de uma instrução Visão simplificada Data Register # PC Address Registers Register # Register # Address Data Data Ch5A 7
Simple Implementation Include the functional units we need for each instruction address PC Add Sum Mem a. b. Program counter c. Adder Address Data 6 Sign 32 extend Register numbers Data 5 3 register 5 5 register 2 Registers register 2 Reg Data control Zero result Mem a. Data unit b. Sign extension unit Why do we need this stuff? a. Registers b. Ch5A 8
Busca (Fetch) Add 4 PC address Ch5A 9
Tipo R Instructio n register register 2 Registers W rite register W rite 2 RegW rite 3 operation Zero result Ch5A 0
Referência a Memória register register 2 Registers register Reg 2 3 operation Zero result Address Mem Data 6 Sign 32 extend Mem Ch5A
beq PC + 4 from instruction path Add Sum Branch target Shift left 2 register register 2 Registers register Reg 2 6 Sign 32 extend 3 operation Zero To branch control logic Ch5A 2
Construção da via de dados Uso de multiplexadores para seleção do valor dos dados PCSrc Add M ux 4 Shift left 2 Add result PC address register register 2 register Reg Registers 2 6 Sign 32 extend Src M ux 3 operation Zero result Address Mem Mem Data MemtoReg M ux Ch5A 3
s e Multiplexadores genérica: R R2 op R3 soma para endereço instrução: PC + 4 soma para endereço de desvio: PC + SignExt (ShiftLeft (Offset)) MUX 2: para escolher segundo operando da genérica R2 SignExt (Offset) MUX 2: para escolher o que será carregado no PC PC + 4 PC + SignExt (ShiftLeft (Offset)) MUX 2: para escolher qual é a origem do dado a ser escrito no Banco de Registradores lido da memória resultado da operação da genérica Ch5A 4
Controle Selecionar operações para uso da, leitura/escrita dos elementos, etc. Controlar o fluxo de dados (entrada dos multiplexadores) Todas as informações vêm dos 32 bits da instrução Exemplo: add $8, $7, $8 Formato da instrução 000000 000 000 0000 00000 00000 op rs rt rd shamt funct Operação da ULA é baseada nos campos opcode e função Ch5A 5
Controle Exemplo: lw $, 00($2) 35 2 00 op rs rt 6 bit offset Entrada de controle da ULA 000 AND 00 OR 00 add 0 subtract set on less than Ch5A 6
Controle da OPCODE Function op Operação lw ou sw xxx xxx 00 soma 000 000 tipo da instr. 0 depende da instr. beq xxx xxx 0 subtração OPCODE 6 Unid. Contr. (parte) op funct 6 2 Control 3 IR OPCODE Funct. Op Funct field Operation Op Op0 F5 F4 F3 F2 F F0 0 0 X X X X X X 00 X X X X X X X 0 X X X 0 0 0 0 00 X X X 0 0 0 0 X X X 0 0 0 000 X X X 0 0 00 X X X 0 0 Binv cod Inst Funct. add 32=20H sub 34=22H and 36=24H or 37=25H slt 42=2AH Ch5A 7
Lógica de controle da Op Op0 Op control block F3 Operation2 F (5 0) F2 F F0 Operation Operation0 Operation Op Funct field Operation Op Op0 F5 F4 F3 F2 F F0 0 0 X X X X X X 00 X X X X X X X 0 X X X 0 0 0 0 00 X X X 0 0 0 0 X X X 0 0 0 000 X X X 0 0 00 X X X 0 0 Inst Funct. add 32=20H sub 34=22H and 36=24H or 37=25H slt 42=2AH Ch5A 8
Campos da instrução e MUX adicional Tipo R op rs rt rd shamt funct 3 26 25 2 20 6 5 0 6 5 0 lw sw op rs rt addr 3 26 25 2 20 6 5 0 beq op rs rt addr 3 26 25 2 20 6 5 0 2 registradores a serem lidos em todos os tipos: campos rs (25 2) e rt (20 6) offset para beq, lw e sw: (5 0) Registradores de destino (write register) em dois lugares: lw e sw: rt (20 6) Tipo R: rd (5 ) Necessário MUX controlado por RegisterDestination: RegDst Ch5A 9
Controle 0 M ux 4 Add [3 26] Control RegDst Branch Mem MemtoReg Op Mem Src Reg Shift left 2 Add result PC address [3 0] [25 2] [20 6] [5 ] M ux 0 register register 2 Registers 2 register 0 M ux Zero result Address Data M ux 0 [5 0] 6 Sign 32 extend control [5 0] RegDst Src Memto Reg Reg Mem Mem Branch Op p0 R format 0 0 0 0 0 0 lw 0 0 0 0 0 sw X X 0 0 0 0 0 beq X 0 X 0 0 0 0 Ch5A 20
Unidade de Controle RegDst Src Memto Reg Reg Mem Mem Branch Op p0 R format 0 0 0 0 0 0 lw 0 0 0 0 0 sw X X 0 0 0 0 0 beq X 0 X 0 0 0 0 Formato R: 000 000 lw: 00 0 sw: 0 0 beq: 000 00 Inputs Op5 Op4 Op3 Op2 Op Op0 R format Iw sw beq Outputs RegDst Src MemtoReg Reg Mem Mem Branch Op OpO Ch5A 2
Implementação monocicloc Considerar os seguintes atrasos (2ns), and adders (2ns), register file access (ns) PCSrc Add M ux 4 Reg Shift left 2 Add result 0 PC address [3 0] [25 2] [20 6] M ux [5 ] 0 RegDst [5 0] register register 2 register 2 Registers 6 Sign 32 extend Src M ux 0 control Zero result Mem Address Data Mem MemtoReg M ux 0 [5 0] Op Ch5A 22
Adicionando a instrução jump [25 0] Shift Jump address [3 0] left 2 26 28 0 4 Add PC+4 [3 28] [3 26] Control RegDst Jump Branch Mem MemtoReg Op Mem Src Reg Shift left 2 Add result M u x M u x 0 PC address [3 0] [25 2] [20 6] [5 ] 0 M u x register register 2 Registers 2 register 0 M u x Zero result Address Data M u x 0 [5 0] 6 Sign 32 extend control [5 0] 2 address 3 26 25 0 Ch5A 23
Problemas com a alternativa de ciclo único Vantagem : CPI =? Desempenho? supor unidades em uso: Memória (2ns), (2ns), Registr (ns) Classe R Fetch Registr Registr lw Fetch Registr Mem Registr sw Fetch Registr Mem beq Fetch Registr j Fetch Classe Mem. Instr. Reg RD Data Mem Reg WR total R 2 2 0 6 lw 2 2 2 8 sw 2 2 2 7 beq 2 2 5 j 2 2 Ch5A 24
Problemas com o ciclo único (2) Desempenho: TCK = caminho crítico = 8 ns velocidade limitada pelo pior caso Alternativas: fazer clock com freqüência variável (muito custoso e complicado) picar a instrução em pequenas funções e executá las em vários ciclos de clock, uma (ou mais) por ciclo em vez de duração variável de ciclo, número variável Vantagens do multiciclo: velocidade: ciclo limitado pela operação mais lenta e não pela instrução mais lenta instruções mais simples executam mais rapidamente economia de hardware ter apenas :, memória, registrador usar uma vez todos esses, por ciclo Ch5A 25