Processador Fluxo de Dados e Controle 1998 Morgan Kaufmann Publishers 1 O processador: Fluxo de Dados & Controle • • Estamos prontos para realizarmos uma implementação do MIPS Simplificada para conter somente: – Instruções de referência à memória: lw, sw – Instruções aritméticas e lógicas: add, sub, and, or, slt – Instruções de fluxo de controle: beq, j • Implementação genérica: – usar o contador de programa (PC) para fornecer o endereço da instrução – Ler a instrução da memória – ler registradores – Usar a instrução para decidir exatamente o que fazer • Todas as instruções usam a ALU após a leitura dos registradores Por que? Referência a memória?Aritmética? Fluxo de controle? 1998 Morgan Kaufmann Publishers 2 Mais detalhes sobre a Implementação • Resumo / Vista Simplificada: Data Register # PC Address Instruction memory Instruction Registers ALU Address Register # Data memory Register # Data Dois tipos de unidades funcionais: – Elementos que operam sobre dados (combinacional) – Elementos que contêm estado (sequencial) 1998 Morgan Kaufmann Publishers 3 Elementos de Estado • • Sem clock vs. com clock Clocks são usados em lógica síncrona – como um elemento que contem estado pode ser atualizado? Borda de descida Tempo de ciclo Borda de subida 1998 Morgan Kaufmann Publishers 4 preliminares Número ímpar de inversores em anel Número par de inversores em anel 1998 Morgan Kaufmann Publishers 5 Um elemento de estado sem clock • O retentor (latch) set-reset – A saída depende das entradas atuais e também das entradas passadas R Q S R Q S Q S Q R Q 1998 Morgan Kaufmann Publishers 6 Latch D e Flip-flop D • A saída é igual ao valor armazenado no elemento (não é necessário pedir permissão para ver o valor) • A mudança de estado (valor) é baseada no clock • Latch D: sempre que as entradas mudam, e o clock é acionado • Flip-flop D: o estado muda somente na borda do clock (edge-triggered) 1998 Morgan Kaufmann Publishers 7 Latch D • Duas entradas: – O valor do dado a ser armazenado (D) – O sinal de clock (C) indicando quando ler & escrever D Duas saídas: – O valor do estado interno (Q) e o seu complemento • C Q D _ Q C D Q D Q C Q 1998 Morgan Kaufmann Publishers 8 flip-flop D • A saída somente muda na borda do clock D D C D latch Q D Q D latch _ C Q Q D _ Q C C Q D Q C Q 1998 Morgan Kaufmann Publishers 9 Nossa Implementação • • Uma metodologia usando borda para o disparo ( “trigger”) Execução típica: – Ler conteúdo de certos elementos de estado, – Enviar valores através de alguma lógica combinacional – Escrever resultados a um ou mais elementos de estado State element 1 Combinational logic State element 2 Clock cycle 1998 Morgan Kaufmann Publishers 10 Banco de Registradores (Register file) • Construido usando D flip-flops Read register number 1 Read register number 1 Register 0 Register 1 Register n – 1 M u x Read data 1 Read data 1 Read register number 2 Register file Write register Register n Read register number 2 Write data M u x Read data 2 Write Read data 2 1998 Morgan Kaufmann Publishers 11 Banco de Registradores • Nota: ainda usamos o clock real para determinar quando escrever Write 0 Register number C Register 0 1 D n-to-1 decoder C n– 1 Register 1 D n C Register n – 1 D C Register n Register data D 1998 Morgan Kaufmann Publishers 12 Implementação simples • Inclui as unidades funcionais que necessitamos para as instruções Instruction address PC Instruction Add Sum MemWrite Instruction memory Address a. Instruction memory 5 Register numbers 5 5 Data b. Program counter Write data 3 Read register 1 Read register 2 Registers Write register Write data c. Adder ALU control Read data 1 Read data Data memory Sign extend 32 MemRead a. Data memory unit Data 16 b. Sign-extension unit Zero ALU ALU result Read data 2 RegWrite a. Registers b. ALU 1998 Morgan Kaufmann Publishers 13 multiplexador • Seleciona uma das entradas para a saída, baseado numa entrada de controle S A 0 B 1 mux de 2-entradas A e B e controle S C S S 2 A B C D 2 0 1 2 3 C A B C D 01 10 10 C mux de 4 entradas 11 1998 Morgan Kaufmann Publishers 14 ALU Operando A Flag de resultado zero resultado Operando B 1998 Morgan Kaufmann Publishers 15 ALU de 32 bits Bnegate Operation Seleção a0 b0 CarryIn ALU0 Less CarryOut Result0 a1 b1 0 CarryIn ALU1 Less CarryOut Result1 a2 b2 0 CarryIn ALU2 Less CarryOut Result2 a31 b31 0 CarryIn ALU31 Less a ALU 32 result 32 b Zero 32 Linhas de controle: 000 001 010 110 111 = = = = = and or add subtract slt Result31 Set Overflow 1998 Morgan Kaufmann Publishers 16 Convertendo um número de n bits em números de mais de n bits Um dado imediato de 16 bits do MIPS é convertido para 32 bits em aritmética Copiar o bit mais significativo (o bit de sinal) para outros bits 0010 -> 0000 0010 1010 -> 1111 1010 "sign extension" 1998 Morgan Kaufmann Publishers 17 Memória de instruções endereço de 32 bits pelo PC instrução de 32 bits 1998 Morgan Kaufmann Publishers 18 Memória de dados Para leitura: deve fornecer o endereço (Address) e acionar o controle de leitura (MemRead=1) Para escrita deve fornecer o endereço (Address), o dado a ser escrito no (Writedata) e acionar o controle de escrita (MemWrite=1) 1998 Morgan Kaufmann Publishers 19 Contador de programa endereço da próxima de instrução endereço da instrução corrente Quando é sequencial é o endereço da instrução corrente adicionado de 4 (memória de instruções constituída de bytes) 1998 Morgan Kaufmann Publishers 20 Construindo o Fluxo de Dados • Usar os multiplexadores para juntar os elementos PCSrc M u x Add Add ALU result 4 Shift left 2 PC Read address Instruction Instruction memory Registers Read register 1 Read Read data 1 register 2 Write register Write data RegWrite 16 ALUSrc Read data 2 Sign extend M u x 3 ALU operation Zero ALU ALU result MemWrite MemtoReg Address Read data Data memory Write data M u x 32 MemRead 1998 Morgan Kaufmann Publishers 21 Controle • Selecionar as operações para executar (ALU, leitura/escrita, etc.) • Controlar o fluxo de dados (entradas para o multiplexador) • A informação vem de 32 bits da instrução • Exemplo: add $8, $17, $18 • Formato de Instrução: 000000 10001 10010 01000 op rs rt rd 00000 100000 shamt funct Operação da ALU baseada no tipo de instrução e código da função 1998 Morgan Kaufmann Publishers 22 Controle • • • P.ex., o que a ALU faz para essa instrução Example: lw $1, 100($2) 35 2 1 op rs rt 16 bit offset Entrada de controle da ALU 000 001 010 110 111 • 100 AND OR add subtract set-on-less-than Por que o código da subtração é 110 e não 011? 1998 Morgan Kaufmann Publishers 23 Controle • Deve descrever o hardware para computar a entrada de controle da ALU de 3-bit – Dado o tipo de instrução 00 = lw, sw ALUOp 01 = beq, Computado do tipo de instrução 10 = aritmética – Código de função para aritmética • Descreve usando uma tabela verdade (que pode ser convertido em ALUOp Funct field Operation portas): ALUOp1 ALUOp0 F5 F4 0 0 X X 0 1 X X 1 0 X X 1 0 X X 1 0 X X 1 0 X X 1 0 X X F3 X X 0 0 0 0 1 F2 X X 0 0 1 1 0 F1 X X 0 1 0 0 1 F0 X X 0 0 0 1 0 010 110 010 110 000 001 111 1998 Morgan Kaufmann Publishers 24 Controle 0 M u x Add Add 4 Instruction [31– 26] Control Instruction [25– 21] PC Read address Instruction memory Instruction [15– 11] 1 Shift left 2 RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Read register 1 Instruction [20– 16] Instruction [31– 0] ALU result 0 M u x 1 Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Write data Zero ALU ALU result Address Write data Instruction [15– 0] 16 Sign extend Read data Data memory 1 M u x 0 32 ALU control Instruction [5– 0] Memto- Reg Mem Mem Instruction RegDst ALUSrc Reg Write Read Write Branch ALUOp1 ALUp0 R-format 1 0 0 1 0 0 0 1 0 lw 0 1 1 1 1 0 0 0 0 sw X 1 X 0 0 1 0 0 0 beq X 0 X 0 0 0 1 0 1 1998 Morgan Kaufmann Publishers 25 Controle • Lógica combinacional simples (tabela verdade) Inputs Op5 Op4 Op3 Op2 ALUOp Op1 ALU control block Op0 ALUOp0 ALUOp1 Outputs F3 F2 F (5– 0) Operation2 Operation1 Operation Iw sw beq RegDst ALUSrc MemtoReg F1 Operation0 F0 R-format RegWrite MemRead MemWrite Branch ALUOp1 ALUOpO 1998 Morgan Kaufmann Publishers 26 Nossa estrutura de controle simples • Todas as lógicas são combinacionais • Esperamos estabilizar tudo, e a operação certa a ser realizada – ALU não produz resposta certa imediatamente – Usamos os sinais de escrita sincronizados ao clock para determinar quando escrever • O tempo de ciclo é determinado pelo circuito mais moroso State element 1 Combinational logic State element 2 Clock cycle 1998 Morgan Kaufmann Publishers 27 Implementação em um ciclo • Calcular o tempo de ciclo assumindo atrasos desprezíveis exceto: – Memória (2ns), ALU e somadores (2ns), acesso aos registradores (1ns) PCSrc Add ALU Add result 4 RegWrite Instruction [25– 21] PC Read address Instruction [31– 0] Instruction memory Instruction [20– 16] 1 M u Instruction [15– 11] x 0 RegDst Instruction [15– 0] Read register 1 Read register 2 Read data 1 Read Write data 2 register Write Registers data 16 Sign 32 extend 1 M u x 0 Shift left 2 MemWrite ALUSrc 1 M u x 0 ALU control Zero ALU ALU result MemtoReg Address Read data Data Write memory data 1 M u x 0 MemRead Instruction [5– 0] ALUOp 1998 Morgan Kaufmann Publishers 28 Implementação de MIPS em um único ciclo 0 M u x Add Add 4 Instruction [31– 26] Control Instruction [25– 21] PC Read address Instruction memory Instruction [15– 11] 1 Shift left 2 RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Read register 1 Instruction [20– 16] Instruction [31– 0] ALU result 0 M u x 1 Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Write data Zero ALU ALU result Address Write data Instruction [15– 0] 16 Sign extend Read data Data memory 1 M u x 0 32 ALU control Instruction [5– 0] Instruction R-format lw sw beq RegDst 1 0 X X ALUSrc 0 1 1 0 Memto- Reg Mem Mem Reg Write Read Write 0 1 0 0 1 1 1 0 X 0 0 1 X 0 0 0 Branch 0 0 0 1 ALUOp1 ALUp0 1 0 0 0 01998 Morgan0Kaufmann Publishers 0 1 29 Onde estamos? • • Problemas de ciclo simples: – E se tivéssemos instruções mais complexas como pontoflutuante? – Devastação de área Uma Solução: – usar um tempo de ciclo “menor” – Ter diferentes instruções levando diferentes números de ciclos – Um fluxo de dados de “multiplos ciclos”: Instruction register PC Address Data A Memory Data Register # Instruction or data Memory data register ALU Registers Register # ALUOut B Register # 1998 Morgan Kaufmann Publishers 30 Técnica Multiciclo • • • Estaremos usando as mesmas unidades funcionais – ALU é usada para computar o endereço e para incrementar PC – A memória é usada para instruções e dados Nossos sinais de controle não são determinados somente pelas instruções – P.ex., o que a ALU faria para uma instrução de “subtração” ? Usamos uma máquina de estado finito para o controle 1998 Morgan Kaufmann Publishers 31 Revisão: máquinas de estado finito • 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) Current state Next-state function Next state Clock Inputs Output function Outputs – Usaremos uma máquina Moore (saída baseada somente no estado atual) 1998 Morgan Kaufmann Publishers 32 Revisão: máquinas de estado finito • Exemplo: B. 21 Um amigo gostaria de construir um olho “eletrônico” para uso em dispositivo de segurança. O dispositivo consiste de 3 luzes alinhados, controladas por saídas Esquerda, Central, e Direita, que, se acionadas, indicam que uma luz estaria acesa. Somente uma luz é acionada por vez, e a luz “move” da esquerda para a direita e, então, da direita para a esquerda, para assustar os ladrões que acreditam que os dispositivos estejam monitorando as suas atividades. Traçar a representação gráfica para a máquina de estado finito usada para especificar o olho eletrônico. Notar que a taxa de movimentação do olho será controlado pela velocidade do clock (que não deveria ser excessivamente grande) e que não existem essencialmente entradas. 1998 Morgan Kaufmann Publishers 33 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 Instruction [25– 21] Address Memory MemData Write data Read Read register 2 data 1 Registers Write Read register data 2 Instruction [20– 16] Instruction [15– 0] Instruction register Instruction [15– 0] Memory data register 0 M u x 1 Read register 1 0 M Instruction u x [15– 11] 1 A B 0 M u x 1 16 Sign extend 32 ALUOut 0 4 Write data Zero ALU ALU result 1 M u 2 x 3 Shift left 2 1998 Morgan Kaufmann Publishers 34 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 35 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 36 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 37 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 38 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 39 Passo Write-back • Reg[IR[20-16]]= MDR; E as outras instruções? 1998 Morgan Kaufmann Publishers 40 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 41 Questões simples • Quantos ciclos são necessários para o código? Label: • • lw $t2, 0($t3) lw $t3, 4($t3) beq $t2, $t3, Label add $t5, $t2, $t3 sw $t5, 8($t3) ... #assume not O que acontece durante o oitavo ciclo de execução? Em que ciclo a soma de $t2 e $t3 é realizada? 1998 Morgan Kaufmann Publishers 42 Implementando o Controle • 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 graficamente, ou – usar microprogramação 1998 Morgan Kaufmann Publishers 43 Especificação da FSM Instruction decode/ register fetch Instruction fetch (Op 2 or W') = 'L (Op W = 'S Branch completion = ') W 'S MemRead IorD = 1 R-type completion 7 5 3 MemWrite IorD = 1 Write-back step 4 RegDst = 0 RegWrite MemtoReg = 1 Quantos bits de estado são necessários? 'B EQ ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 p Memory access RegDst = 1 RegWrite MemtoReg = 0 Jump completion 9 8 6 ALUSrcA =1 ALUSrcB = 00 ALUOp = 10 Memory access ') e) -t yp R = (O (Op = 'LW') (Op ') Execution 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 Implementação: PCWrite PCWriteCond IorD MemRead MemWrite IRWrite Control logic MemtoReg PCSource ALUOp Outputs ALUSrcB ALUSrcA RegWrite RegDst NS3 NS2 NS1 NS0 Instruction register opcode field S0 S1 S2 S3 Op0 Op1 Op2 Op3 Op4 Inputs Op5 • State register 1998 Morgan Kaufmann Publishers 45 Implementação em PLA 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 46 Implementação em ROM • • ROM = "Read Only Memory" – Os valores das palavras de memória são fixas ao longo do tempo Uma ROM pode ser usada para implementar uma tabela verdade – Se o endereço é de m-bits, podemos endereçar 2m entradas na ROM. – Nossas saídas são os bits de dados onde o endereço aponta. m n 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 m é a “altura", e n é a “largura" 1998 Morgan Kaufmann Publishers 47 Implementação em ROM • • • Quantas entradas existem? 6 bits para opcode, 4 bits para estado = 10 linhas de endereço (i.e., 210 = 1024 endereços diferentes) Quantas saídas existem? 16 saídas de controle do fluxo de dados, 4 bits de estado = 20 saídas ROM é 210 x 20 = 20K bits (um tamanho não usual) 1998 Morgan Kaufmann Publishers 48 ROM vs PLA • Quebrar a tabela em duas partes — 4 bits de estado fornecem as 16 saídas, 24 x 16 bits of ROM — 10 bits fornecem o endereço para os 4 bits de estado seguinte, 210 x 4 bits of ROM — Total: 4.3K bits de ROM • PLA é menor — pode compartilhar termos produtos — são necessárias somente entradas que produzem saída ativa — pode levar em conta os irrelevantes • O tamanho é (#entradas #termos-produto) + (#saídas #termosproduto) Para esse exemplo = (10x17)+(20x17) = 460 células PLA • Células PLA são de tamanho aproximado de uma célula de ROM (levemente maior) 1998 Morgan Kaufmann Publishers 49 Um outro estilo de Implementação Instruções complexas: o “estado seguinte" é quase sempre o estado atual + 1 Control unit PLA or ROM Outputs Input PCWrite PCWriteCond IorD MemRead MemWrite IRWrite BWrite MemtoReg PCSource ALUOp ALUSrcB ALUSrcA RegWrite RegDst AddrCtl 1 State Adder Address select logic Op[5– 0] • Instruction register opcode field 1998 Morgan Kaufmann Publishers 50 Detalhes Op 000000 000010 000100 100011 101011 Dispatch ROM 1 Opcode name R-format jmp beq lw sw Value 0110 1001 1000 0010 0010 Dispatch ROM 2 Opcode name lw sw Op 100011 101011 Value 0011 0101 PLA or ROM 1 State Adder 3 Mux 2 1 AddrCtl 0 0 Dispatch ROM 2 Dispatch ROM 1 Op Address select logic Instruction register opcode field State number 0 1 2 3 4 5 6 7 8 9 Address-control action Use incremented state Use dispatch ROM 1 Use dispatch ROM 2 Use incremented state Replace state number by 0 Replace state number by 0 Use incremented state Replace state number by 0 Replace state number by 0 Replace state number by 0 Value of AddrCtl 3 1 2 3 0 0 3 0 0 0 1998 Morgan Kaufmann Publishers 51 Microprogramação 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 52 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 53 Formato de Microinstrução Field name ALU control SRC1 SRC2 Value Add Subt Func code PC A B 4 Extend Extshft Read ALUOp = 10 ALUSrcA = 0 ALUSrcA = 1 ALUSrcB = 00 ALUSrcB = 01 ALUSrcB = 10 ALUSrcB = 11 Write ALU RegWrite, RegDst = 1, MemtoReg = 0 RegWrite, RegDst = 0, MemtoReg = 1 MemRead, lorD = 0 MemRead, lorD = 1 MemWrite, lorD = 1 PCSource = 00 PCWrite PCSource = 01, PCWriteCond PCSource = 10, PCWrite AddrCtl = 11 AddrCtl = 00 AddrCtl = 01 AddrCtl = 10 Register control Write MDR Read PC Memory Read ALU Write ALU ALU PC write control ALUOut-cond jump address Sequencing Signals active ALUOp = 00 ALUOp = 01 Seq Fetch Dispatch 1 Dispatch 2 Comment Cause the ALU to add. Cause the ALU to subtract; this implements the compare for branches. Use the instruction's function code to determine ALU control. Use the PC as the first ALU input. Register A is the first ALU input. Register B is the second ALU input. Use 4 as the second ALU input. Use output of the sign extension unit as the second ALU input. Use the output of the shift-by-two unit as the second ALU input. Read two registers using the rs and rt fields of the IR as the register numbers and putting the data into registers A and B. Write a register using the rd field of the IR as the register number and the contents of the ALUOut as the data. Write a register using the rt field of the IR as the register number and the contents of the MDR as the data. Read memory using the PC as address; write result into IR (and the MDR). Read memory using the ALUOut as address; write result into MDR. Write memory using the ALUOut as address, contents of B as the data. Write the output of the ALU into the PC. If the Zero output of the ALU is active, write the PC with the contents of the register ALUOut. Write the PC with the jump address from the instruction. Choose the next microinstruction sequentially. Go to the first microinstruction to begin a new instruction. Dispatch using the ROM 1. Dispatch using the ROM 2. Codificação Maximal vs. Minimal • Sem codificação: – 1 bit para cada operação do fluxo de dados – rápido, requer mais memória (lógica) – Usada para Vax 780 — 400K de memória! • Muita codificação: – Enviar as microinstruções através de lógicas para a obtenção dos sinais de controle – Usa menos memória, lenta • Contexto histórico do CISC: – Muita lógica a ser colocada num único chip – Usar uma ROM (ou mesmo RAM) para manter o microcódigo – Fácil para adicionar novas instruções 1998 Morgan Kaufmann Publishers 55 Microcódigo: compromisso (Trade-offs) • Vantagens da especificação: – Fácil de projetar e escrever – Projetar a arquitetura e o microcódigo simultaneamente • Vantagens da Implementação (off-chip ROM) – Fácil de mudar se os valores estão em memória – Pode emular outras arquiteturas – Pode fazer uso de registradores internos • Desvantagens da Implementação, MAIS LENTO que: – O controle seja implementado no mesmo chip como o processador – ROM não é mais rápido que RAM – Quando não existe necessidade para fazer mudanças 1998 Morgan Kaufmann Publishers 56 Exceções e Interrupções Exceções e interrupções – são eventos diferentes de branches e jumps que mudam o fluxo normal de execução de instruções. Exceção – evento inesperado que causa uma mudança no fluxo de controle, que tem origem dentro do processador (por ex. overflow aritmético) Interrupção –evento inesperado que causa uma mudança inesperada no fluxo de controle, que tem origem fora do processador. (por ex. digitação de um caracter no teclado) Observação: arquitetura 80x86 (ou IA-32, Intel) usa o termo Interrupção para todos esses eventos. 1998 Morgan Kaufmann Publishers 57 Exceções e interrupções Exemplos: TIPO DE EVENTO ORIGEM TERMINOLOGIA MIPS Solicitação de dispositivo de E/S externa interrupção Chamada do SO pelo programa de usuário interna exceção Overflow aritmético interna exceção Uso de uma instrução indefinida interna exceção Mal funcionamento do hardware ambas exceção ou interrupção 1998 Morgan Kaufmann Publishers 58 Como manipular exceções e interrupções • Ações básicas a serem tomadas pela máquina quando ocorre uma exceção : 1) salvar o endereço da instrução ofendida (instrução atual) num registrador especial EPC (Exception Program Counter). 2) transferir o controle (atualizar o conteúdo de PC) para um endereço específico, que possibilite ao computador executar a rotina de tratamento de exceção. • ROTINA DE TRATAMENTO DE EXCEÇÃO: depende do tipo de exceção, por exemplo, reportar ao usuário que ocorreu um erro de overflow. • Ações a serem tomadas após a execução do tratamento de exceção: - Depende do tipo de exceção: por ex. pode encerrar, ou continuar executanto, o programa que estava executando antes da exceção. - O EPC é usado para determinar o endereço de reinício da execução. 1998 Morgan Kaufmann Publishers 59 Como saber a causa da exceção • Para o computador manipular uma exceção, ele deve conhecer a razão da exceção. • A razão pode ser obtida de duas formas: 1) usar o registrador de status (cause register) que indica a razão 2) usar interrupção vetorizada, caso em que o endereço de desvio para executar a exceção é determinado pela causa da exceção 1998 Morgan Kaufmann Publishers 60 Implementação de exceção no MIPS • Implementação de duas exceções: 1) overflow aritmético 2) instrução indefinida A causa é determinada pelo valor do registrador CAUSE de 32 bits: CAUSE = 00 00 00 00 (em hexa), overflow aritmético CAUSE = 00 00 00 01 (em hexa), instrução indefinida O endereço da instrução ofendida é guardada em EPC O endereço de desvio para o início da execução da rotina de tratamento de exceção é dado por C0 00 00 00 (em hexa). 1998 Morgan Kaufmann Publishers 61 Alterações no fluxo de dados PCSource EPCWrite ALU PC+4 ALUOut ALUOut EPC JumpAddr C0 00 00 00 IntCause 0 0 1 2 PC 3 CauseWrite Registradores adicionais: EPC, Cause 0 Cause 1 1 Sinais de controle adicionais: EPCWrite, CauseWrite, IntCause 62 1998 Morgan Kaufmann Publishers Alteração na máquina de estado 1 lw o u sw tipo -R beq ou jmp s tro op co de 6 s 10 11 7 overflow IntCause = 1 CauseWrite ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11 IntCause=0 CauseWrite ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11 Estado 0 Estado 0 Estado 0 1998 Morgan Kaufmann Publishers 63