Capítulo 5 Permission is granted to copy and distribute this material for educational purposes only, provided that the complete bibliographic citation and following credit line is included: "Copyright 998 Morgan Kaufmann Publishers." Permission is granted to alter and distribute this material provided that the following credit line is included: "Adapted from Computer Organization and Design: The Hardware/Software Interface, 2nd Edition David A. Patterson, John L. Hennessy Morgan Kaufmann, 2nd ed., 997, ISBN 55864286 Copyright 998 Morgan Kaufmann Publishers." Lecture slides created by Michael Wahl in English Tradução: Christian Lyra Gomes Revisão: Wagner M. N. Zola This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder. O Processador: Datapath & Controle Nós estamos prontos para olhar uma implementação do MIPS Simplificada para conter apenas: instruções de referência a memória: lw, sw instruções lógico-aritméticas: add, sub, and, or, slt instruções de controle de fluxo: beq, j? Implementação Genérica: usa o contador de programa (PC) para fornecer o endereço das instruções pega a instrução da memória ler registradores usa a instrução para decidir exatamente o que fazer? Todas as instruções usam a ULA após ler os registradores Por que? referência a memória? aritmética? controle de fluxo? 2
Mais detalhes da implementação Visão Abstrata / Simplificada: Data PC Address Instruction Registers ALU Instruction memory Register # Register # Register # Address Data memory Data Dois tipos de unidades funcionais: elementos que operam sobre valores de dados (combinacional) elementos que contêm estados (seqüencial) 3 Elementos de Estado Não-cronometrado vs. Cronometrado (clocked) Relógios usados em lógica síncrona quando um elemento que contêm um estado deve ser atualizado? Borda de descida Tempo de Ciclo Borda de subida 4
Um elemento de estado não-cronometrado A trava RS (set-reset latch) a saída depende da entrada presente e também de entradas passadas 5 Travas (Latches) e Flip-flops Saída é igual ao valor armazenando no elemento (Não precisa pedir permissão para olhar o valor) Mudança de estado (valor) é baseado no relógio Travas: quando a entrada muda, e o pulso de relógio está em Flip-flop: Estado muda apenas na borda do pulso de relógio (edge-triggered methodology) verdadeiro lógico", pode significar um sinal elétrico baixo Uma metodologia de relógio define quando um sinal pode ser lido e escrito Não se deseja ler um sinal ao mesmo tempo em que ele está sendo escrito 6
Trava-D Duas entradas: o valor a ser armazenado (D) o sinal do relógio (C) indicando quando ler e armazenar D Duas saídas: o valor do estado interno (Q) e o seu complemento C D Q _ Q D C Q 7 Flip-flop D Saída muda apenas na borda do relógio D D D Q latch C D Q D latch _ C Q Q _ Q C D C Q 8
Nossa Implementação Usamos metodologia de gatilho pela borda do pulso de relógio Execução típica: ler o conteúdo de alguns elementos de estado, enviar o conteúdo através de alguma lógica combinacional escrever o resultado em um ou mais elementos de estado State element Combinational logic State element 2 Clock cycle 9 Banco de Registradores (register file) Construído usando flip-flops D register number register number 2 Register Register Register n Register n M u x data Rea d register nu mber Rea d register nu mber 2 Register file W rite registe r W rite da ta Write Rea d da ta Rea d da ta 2 M u x data 2
Banco de registradores (register file) Nota: nós ainda usamos o relógio real para determinar quando escrever W rite C D R e g is te r R e g iste r n u m b e r n -to - d e co d e r n n C D R e g is te r R e g is te r d a ta C R e g is te r n D C D R e g iste r n Implementação Simples Inclui as unidades funcionais que precisamos para cada instrução Instruction address Instruction memory Instruction PC a. Instruction memory b. Program counter Register numbers Data RegWrite Add Sum c. Adder ALU control 5 3 register 5 data register 2 Zero Registers Data ALU ALU 5 Write result register Write data data 2 a. Registers b. ALU Address Write data Me mwrite D ata memory data Me m a. Data memory unit 6 32 Sign extend b. Sign-extension unit Por que precisamos dessascoisas? 2
Construindo o Datapath Use multiplexadores para grudar as partes PCSrc Add M ux PC 4 address Instruction Instruction memory register register 2 Write register Write data Registers data data 2 RegW rite 6 Sign 32 extend Shift left 2 ALUSrc M ux Add ALU result 3 ALU operation Zero ALU ALU result Address Write data Mem MemWrite data Data memory MemtoReg M ux 3 Controle Seleciona as operações a serem executadas (ULA, leitura/escrita, etc.) Controla o fluxo de dados (entradas dos multiplexadores) A Informação vem de instruções de 32 bits Exemplo: add $8, $7, $8 Formato de Instrução: op rs rt rd shamt funct Operações da ULA são baseadas no tipo de instrução e no código de função 4
Controle ex., O que a ULA deve fazer com essa instrução Exemplo: lw $, ($2) 35 2 op rs rt 6 bit offset Controle de entrada da ULA E OU adição subtração Ajusta-se-menor-que (set-on-less-than) Por que o código para subtração é e não? 5 Controle Devemos descrever o hardware para computar a uma entrada de 3- bit de controle de ULA dado um tipo de instrução = lw, sw = beq, = aritmética código de função para aritmética ULA Op computado a partir do tipo de instrução Descreva ele usando uma tabela verdade (que pode ser transformada em portas): ALUOp Funct field Operation ALUOp ALUOp F5 F4 F3 F2 F F X X X X X X X X X X X X X X X X X X X X X X X X X X X X 6
M ux Controle A d d A L U r e su lt 4 Ad d Ins truct ion [3 26] R e g D st Br a n ch Me mr e a d Me mt o Re g C o n tr o l AL U O p Sh if t le ft 2 Me mw r ite AL U Sr c Re g W r ite PC R ea d a d d re s s I ns tr u c tio n me mo r y In s tr u ct io n [3 ] Ins truct ion [25 2] Ins truct ion [2 6] Ins truct ion [5 ] M ux R e a d regis ter R e a d regis ter 2 R e g ist e rs W r it e r e g is te r W r it e d a t a R e a d d a t a R e a d d a t a 2 M ux A LU Ze r o A L U r e su lt A d d re s s Wr it e da t a Da t a me m or y R e a d d a ta M u x Ins truct ion [5 ] 6 3 2 Sig n e xt e nd AL U c o n tr o l Ins truct ion [ 5 ] Instruction RegDst ALUSrc Memto- Reg Reg Write Mem Mem Write Branch ALUOp ALUp R-format lw sw X X beq X X 7 Controle Lógica combinacional simples (tabelas verdade) F (5 ) F3 F2 F F ALUOp ALU control block ALUOp ALUOp Operation2 Operation Operation Inp uts Op5 Op4 Op3 Op2 Op Op Operation R-format Iw sw beq Outputs R egd st A LUSrc M emtore g R egwrite M emrea d M emwrite B ranch A LUOp A LUOpO 8
Nossa Estrutura de Controle Simples Toda a lógica é combinacional Nós esperamos tudo estabilizar, e a coisa certa a se fazer ULA pode não produzir a resposta correta imediatamente nós usamos sinais de escrita junto com o relógio para determinar quando escrever Tempo de ciclo determinado pelo tamanho do maior caminho State element Combinational logic State element 2 Clock cycle Nós estamos ignorando alguns detalhes como tempos de setup e hold 9 Implementação de ciclo único Calcula o tempo de ciclo assumindo atrasos negligenciáveis exceto: memória(2ns)(porque?), ULA e somadores (2ns), acesso a bloco de registradores (ns) PCSrc Add M ux 4 RegWrite Shift left 2 Add ALU result PC address Instruction [3 ] Instruct ion memory Instruction [25 2] Instruction [2 6] M ux Instruction [5 ] RegDst Instruction [5 ] register register 2 Write register Write data data data 2 Registers 6 Sign 32 extend ALUSrc M ux ALU control Z ero ALU ALU result MemWrite Address Write data Data memory Mem MemtoReg data M ux Instruction [5 ] ALUOp 2
Para onde estamos nos dirigindo Problemas de ciclo único: E se nós tivermos uma instrução mais complicada, como uma instrução de ponto flutuante? Desperdício de área Uma solução: use um tempo de ciclo menor faça com que diferentes instruções usem diferentes números de ciclos um datapath multiciclo : P C A d dr e s s M em o r y D at a In s tr uc t ion o r da ta I ns tr u c tio n r eg is te r M e m or y da ta r eg is te r D at a R eg is te r # Re g is ter s R eg is te r # R eg is te r # A B A LU A LU O ut 2 Abordagem Multiciclo Nós iremos re-utilizar as unidades funcionais ULA utilizada para computar endereços e incrementar o PC Memória utilizada para instruções e dados Nossos sinais de controle não serão determinados unicamente pela instrução ex., O que a ULA deve fazer para a instrução de subtração? Nós iremos usar uma máquina de estados finitos para o controle 22
Revisão: Máquina de estados finitos Máquina de estados finitos: um conjunto de estados e função de próximo estado (determinada pelo estado corrente e a entrada) função de saída (determinada pelo estado corrente e possível entrada Cu rren t sta te Ne xt-state funct io n N ext state In put s Clo ck Outp ut funct io n Out put s Nós usaremos uma máquina de Moore (saída baseada apenas no estado corrente) 23 Revisão: Máquina de estados finitos Exemplo: B. 2 Um amigo gostaria que você construísse um olho eletrônico para ser usado como um falso dispositivo de segurança. O dispositivo consiste de três luzes alinhadas, controladas pelas saídas Esquerda, Meio e Direita, que quando ligadas, indicam qual a luz deve estar acesa. Somente uma luz deve estar acesa em um determinado momento, e as luzes se movem da esquerda para a direita e depois da direita para a esquerda, espantando assim os ladrões que acreditarão que o dispositivo está monitorando a atividade deles. Desenhe uma representação gráfica da máquina de estados finitos usada para especificar o olho eletrônico. Observe que a velocidade de movimentação do olho será controlada pela freqüência de relógio (que não deve ser muito grande) e que essencialmente não há entradas. 24
Abordagem Multiciclos Quebre a instrução em passos, cada passo leva um ciclo balanceie a quantidade de trabalho a ser feita restrinja cada ciclo a usar apenas uma unidade funcional maior No final de cada ciclo armazene os valores para uso em ciclos posteriores (a coisa mais fácil a ser feita) introduza registradores internos adicionais P C M ux Address Wri te data Mem ory M em Dat a Inst ruction [25 2] Inst ruction [2 6] Inst ruction [ 5 ] I nstruct ion register I nst ruction [5 ] Instruct ion [5 ] M u x M ux register register 2 dat a Regist ers Writ e register dat a 2 Writ e dat a A B 4 M u 2 x 3 M u x Zero A LU ALU result ALUOut Memory data register 6 Sign ext end 32 Shif t left 2 25 Cinco passos de execução Instrução Busca Instrução Decodifica e Busca Registrador Execução, Cálculo de Endereço de Memória, ou Conclusão de Desvio Acesso à Memória ou Conclusão de instruções tipo-r Passo de Write-back INSTRUÇÕES LEVAM 3-5 CICLOS! 26
Passo : Instrução Busca Usa o PC para pegar a instrução e coloca a instrução no Registrador de Instrução. Incrementa PC em 4 e coloca o resultado de volta no PC. Pode ser descrito de forma sucinta usando a Linguagem Transferência-Registrador - RTL "Register-Transfer Language" IR = Memory[PC]; PC = PC + 4; Nós conseguimos descobrir os valores dos sinais de controle? Qual é a vantagem de se atualizar o PC agora? 27 Passo 2: Instrução Decodifica e Busca Registrador Leia os registradores rs e rt para o caso de precisarmos deles Compute o endereço de desvio no caso da instrução ser um desvio RTL: A = Reg[IR[25-2]]; B = Reg[IR[2-6]]; ALUOut = PC + (sign-extend(ir[5-]) << 2); Nós não estamos ajustando nenhuma linha de controle baseado no tipo de instrução (Nós estamos ocupados decodificando ela em nossa lógica de controle) 28
Passo 3 (dependente de instrução) A ULA está desempenhando uma das 3 funções, baseada no tipo de instrução Referência à memória: Tipo-R: ALUOut = A + sign-extend(ir[5-]); ALUOut = A op B; Desvio: if (A==B) PC = ALUOut; 29 Passo 4 (Tipo-R ou acesso-memória) Carrega ou armazena na memória MDR = Memory[ALUOut]; or Memory[ALUOut] = B; Finaliza instruções Tipo-R Reg[IR[5-]] = ALUOut; A escrita acontece no final do ciclo na borda 3
Passo Write-back Reg[IR[2-6]]= MDR; E sobre todas as outras instruções? 3 Sumário: Passo Busca Instrução Instrução Decodifica/busca reg. Ação para instruções Tipo-R Ação para instruções Ação para referência à memória desvios IR = Memory[PC] PC = PC + 4 A = Reg [IR[25-2]] B = Reg [IR[2-6]] ALUOut = PC + (sign-extend (IR[5-]) << 2) Ação para saltos Execução, cálculo de ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [3-28] II endereço, desvio/ (IR[5-]) PC = ALUOut (IR[25-]<<2) fim de salto Acesso Memória ou fim Reg [IR[5-]] = Load: MDR = Memory[ALUOut] de Tipo-R ALUOut or Store: Memory [ALUOut] = B fim leitura de Memória Load: Reg[IR[2-6]] = MDR 32
Questões Simples Quantos ciclos leva para executar esse código? lw $t2, ($t3) lw $t3, 4($t3) beq $t2, $t3, Label add $t5, $t2, $t3 sw $t5, 8($t3) Label:... #assuma não O que está acontecendo durante o oitavo ciclo de execução? Em que ciclo acontece realmente a adição de $t2 e $t3? 33 Implementando o Controle O Valor dos sinais de controle dependem de: Qual instrução está sendo executada Qual passo esta sendo executado Use as informações que nós acumulamos para especificar uma máquina de estados finitos Especifique a máquina de estados finitos graficamente, ou utilize microprogramação A Implementação pode ser derivada da especificação 34
Representação Gráfica da MEF Mem ory address com putat ion I nstruct ion f etch M em ALUSrcA = I ord = St art IRWrite ALUSrcB = ALUOp = PCWrit e PCSource = Branch Execut ion completi on Instruction decode/ register f etch ALUSrcA = ALUSrcB = ALUOp = Jum p com pletio n 2 6 8 9 ALUSrcA = ALUSrcA = ALUSrcA = ALUSrcB = ALUSrcB = PCWri te ALUSrcB = ALUOp = ALUO p = PCSource = ALUOp= PCWriteCond PCSource = (Op = 'LW') or (Op = 'SW') (Op = R-type) (Op = 'BEQ') (Op = 'J') 3 (Op = 'LW') M emory a ccess (Op = 'SW') 5 M emory access 7 R-t ype com pletion Mem I ord = M emwrit e IorD = RegDst = RegWrite M emt oreg = 4 Write-back st ep RegDst = RegWrit e Memt oreg= Quantos bits de estados nós precisaremos? Máquina de Estados Finitos para o Controle Implementação: PCWrit e Control logic I nputs Outputs PCWrit econd IorD Mem MemW rit e IRWrite Memt oreg PCSource ALUOp ALUSrcB ALUSrcA RegWrit e RegDst NS3 NS2 NS NS Op5 Op4 Op3 Op2 Op Op S3 S2 S S Instruction regist er opcode f ield Stat e register 36
Implementação PLA Se eu pegar uma linha horizontal e uma vertical você consegue explicar ela? Op5 Op4 Op3 Op2 Op Op S3 S2 S S P CWrit e P CWrit econd I ord M em M emwri te I RWrit e M emtoreg P CSource P CSource A LUOp A LUOp A LUS rcb A LUS rcb A LUS rca RegWrit e RegDst NS 3 NS 2 NS NS 37 Implementação ROM ROM = Memória de leitura apenas (" Only Memory ) Valores de locais da memória são fixados previamente Uma ROM pode ser usada para implementar uma tabela verdade Se o endereço tem m-bits, nós podemos endereçar 2 m entradas na ROM. Nossas saídas são os bits de dados para os quais o endereço aponta. m n m é a altura", e n é a largura" 38
Implementação ROM Quantas entradas existem lá? 6 bits para opcode, 4 bits para o estado = linhas de endereço (i.e., 2 = 24 endereços diferentes) Quantas saídas existem lá? 6 Saídas de controle datapath, 4 bits de estado = 2 saídas ROM é 2 x 2 = 2K bits (é um tamanho um tanto estranho) Um tanto esbanjador, já que para um monte de entradas, as saídas são as mesmas i.e., o opcode é freqüentemente ignorado 39 ROM vs PLA Divida a tabela em duas partes 4 bits de estado te retornam 6 saídas, 2 4 x 6 bits de ROM bits te retornam os 4 bits do próximo estado, 2 x 4 bits de ROM Total: 4.3K bits de ROM PLA é muito menor pode compartilhar termos de produtos precisa apenas de entradas que produzem saídas ativas pode levar em conta os não importa O tamanho é (#entradas? #termos-produto) + (#saídas? #termosproduto) Para este exemplo = (x7)+(2x7) = 46 células PLA Células PLA são usualmente do mesmo tamanho de uma célula de ROM (ligeiramente maior) 4
Outro Estilo de Implementação Instruções Complexas: o próximo estado é freqüentemente o estado atual + Control unit P LA or ROM Input O utputs P CWri te P CWri tecond I ord M em M emwrit e I RWri te B Write M emt oreg P CSource A LUOp A LUSrcB A LUSrcA RegWrite RegDst AddrCtl S tat e A dder A ddress select l og ic Op[5 ] Instruction registe r opcode fi eld 4 Detalhes Dispatch ROM Dispatch ROM 2 Op Opcode name Value Op Opcode name Value R-format lw jmp sw beq PLA or ROM lw sw Adder St at e Mux 3 2 AddrCt l Dispat ch ROM 2 Di spat ch RO M Ad dress select logi c Op Instructi on regist er opcode f ield número estado Ação do endereço de controle valor do AddrCtl Usa incremento de estado 3 Usa dispatch ROM 2 Usa dispatch ROM 2 2 3 Usa incremento de estado 3 4 Troca número de estado por 5 Troca número de estado por 6 Usa incremento de estado 3 7 Troca número de estado por 8 Troca número de estado por 9 Troca número de estado por 42
Microprogramação Control uni t Microcode memory I nput Out puts PCWrit e PCWrit econd I ord M em M emwrite I RW rit e BWrit e M emtoreg PCSource ALUOp ALUSrcB ALUSrcA RegWrite RegDst AddrCt l Dat apat h Microprogram counter Adder Address sel ect logi c Op[ 5 ] I nst ruct ion register opco de fi el d O que são micro-instruções? 43 Microprogramação Uma metodologia de especificação apropriada se temos centenas de opcodes, modos, ciclos, etc. sinais são especificados simbolicamente com micro-instruções Label ALU control SRC SRC2 Register control Memory PCWrite control Sequencing Fetch Add PC 4 PC ALU Seq Add PC Extshft Dispatch Mem Add A Extend Dispatch 2 LW2 ALU Seq Write MDR Fetch SW2 Write ALU Fetch Rformat Func code A B Seq Write ALU Fetch BEQ Subt A B ALUOut-cond Fetch JUMP Jump address Fetch Duas implementações da mesma arquitetura terão o mesmo micro código? O que deverá fazer o micro assembler? 44
Formato Micro-instrução Nome do Campo Valor Sinais Ativos Comentários Add ALUOp = Faz a ULA adicionar ALU control Subt ALUOp = Faz a ILA subtrair; Isso implementa a comparaçao para desvios. Func code ALUOp = Usa o código de função da instrução para determinar o controle da ULA SRC PC ALUSrcA = Usa o PC como a primeira entrada da ULA. A ALUSrcA = Registrador A é a primeira entrada da ULA. B ALUSrcB = Registrador B é a segunda entrada da ULA. SRC2 4 ALUSrcB = Usa "4" como a segunda entrada da ULA. Extend ALUSrcB = Usa a saída da unidade de extensão de sinal como a segunda entrada da ULA. Extshft ALUSrcB = Usa saída da unidade desloca-2 como a segunda entrada da ULA. Lê dois registradores usando os campos rs e rt do IR como números de registradores e coloca os dados nos registradores A e B. Write ALU RegWrite, Escreve em um registrador usando o campo rd do IR como número do registrador e Register RegDst =, o contéudo da ALUOut como os dados. control MemtoReg = Write MDR RegWrite, Escreve em um registrador usando o campo rt do IR como número do registrador e RegDst =, o conteúdo do MDR como os dados. MemtoReg = PC Mem, L6e a memória usando o PC como endereço; escreve o resulado no IR (e lord = o MDR). Memory ALU Mem, Lê a memória usando o ALUOut como endereço; escreve o resultado no MDR. lord = Write ALU MemWrite, Escreve na memória usando o ALUOut como endereço, e o conteúdo de B como dado. lord = ALU PCSource = Escreve a saída da ULA no PC. PCWrite PC write control ALUOut-cond PCSource =, Se a saída Zero estiver ativa, escreve o PC com o conteúdo PCWriteCond do registrador ALUOut. jump address PCSource =, Escreve o PC com endereço de salto da instrução. PCWrite Seq AddrCtl = Escolhe a próxima micro-instrução sequencialmente. Sequencing Fetch AddrCtl = vai para a primeira micro-instrução para começar uma nova instrução. Dispatch AddrCtl = Dispacha usando a ROM. Dispatch 2 AddrCtl = Dispacha usando a ROM 2. Codificação Maximizada Vs Minimizada Nenhuma codificação: bit para cada operação do datapath mais rápida, requer mais memória (lógica) usada para o Vax 78 incríveis 4K de memória! Muita codificação: envia micro-instruções através de lógica para pegar os sinais de controle usa menos memória, mais lento Contexto histórico do CISC: Muita lógica para colocar num único chip com todo o resto Usa uma ROM (ou mesmo RAM) para armazenar o microcódigo é fácil adicionar novas instruções 46
Microcódigo: Compromissos A distinção entre a especificação e a implementação é muitas vezes misturada Vantagens da Especificação: Fácil de projetar e escrever Projeto da arquitetura e microcódigo em paralelo Vantagens da Implementação ( off-chip ROM ) Fácil de mudar já que os valores estão na memória Pode emular outras arquiteturas Pode usar os registradores internos Desvantagens da Implementação, mais LENTO já que: Controle é implementado no mesmo chip que o processador ROM não é mais rápida que RAM Não há necessidade de voltar e fazer mudanças 47 O Grande Quadro I nitial representati on Finit e stat e d iagram M icroprogram Se quencing cont rol Expli cit next st ate function Microprogram count er + dispatch ROM S Logi c representati on Logic equat ions Trut h tables I mplem entat ion te chnique P rogram mable logic array only mem ory 48