1 / 37

Y86: Datapath Sequencial

Y86: Datapath Sequencial. Arquitectura de Computadores Lic. em Engenharia Informática 2008/09 Luís Paulo Santos. Y86: Datapath Sequencial. 0. 1. 0. Voltage. Time. Circuitos Lógicos. Funcionam com valores discretos extraídos de um sinal contínuo Circuitos binários :

lavina
Télécharger la présentation

Y86: Datapath Sequencial

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Y86:Datapath Sequencial Arquitectura de Computadores Lic. em Engenharia Informática 2008/09 Luís Paulo Santos

  2. Y86: Datapath Sequencial

  3. 0 1 0 Voltage Time Circuitos Lógicos • Funcionam com valoresdiscretosextraídos de um sinalcontínuo • Circuitosbinários: • Cadasinal tem o valor 0 ou 1

  4. Circuitos Lógicos Existem 2 grandes tipos de componentes ou circuitos: • Circuitos combinatórios • Reagem continuamente a mudanças nos valores das entradas (com um atraso de propagação) • Circuitos sequenciais • Capazes de memorizar informação • As suas saídas só se alteram quando um sinal de temporização (relógio ou clock) o autoriza

  5. a && b Circuitos Combinatórios: Gates • As saídassãofunçõesBooleanas das entradas • Respondemcontinuamente a mudançasnasentradas • Com algumatraso Falling Delay Rising Delay b Voltage a Time

  6. Rede Acíclica Entradas Saídas Circuitos Combinatórios • RedeAcíclica de ComponentesLógicos • Respondemcontinuamente a mudançasnasentradas • As saídastransformam-se (após um atraso)emfunçõesBooleanas das entradas

  7. s b31 out31 a31 s b30 out30 MUX B Out a30 A b0 out0 a0 Circuitos combinatórios: multiplexer • Seleccionapalavra de entradaAouBdependendo do sinal de controlos

  8. s1 Se s1,s0 == 00 (0) então X + Y Se s1,s0 == 01 (1) então X - Y Se s1,s0 == 10 (2) então X & Y Se s1,s0 == 11 (3) então X | Y Y A X B OF ZF CF A L U Circuitos combinatórios: ALU s0 • LógicaCombinatória • Respondecontinuamenteàsentradas • Sinais de controlo (s1,s0) seleccionamfunção a computar • Correspondemàs 4 instruçõeslógico-aritméticas do Y86 • Tambémcalculaoscódigos de condição

  9. i7 D o7 Q+ C i6 D o6 Q+ C i5 D o5 Q+ C i4 D o4 Q+ C i3 D o3 Q+ C i2 D o2 Q+ C i1 D o1 Q+ C i0 D o0 Q+ C Clock Circuitos Sequenciais: Registos • Armazenam dados • As saídassóvariamquando o valor do sinal do clock sobe de 0 para 1 Estrutura 1 0 Fim do ciclo: Actualizar registo Fim do ciclo: Actualizar registo Fim do ciclo: Actualizar registo

  10. valW valA Register file dstW srcA A Portas de leitura W Portas de escrita valB srcB B Clock Circuitos Sequenciais: Banco de Registos valM dstM • Armazenamúltiplaspalavras de dados (múltiplosregistos) • Endereçosespecificamquaisosregistos a ler e/ouescrever • Mantemosvalores dos registos: %eax, %ebx, %esp, etc. • O ID do registo serve comoendereço • ID 8 implicaquenão é feitaleituraouescrita • MúltiplasPortas • Podeler (srcA, srcB) e/ouescrever (dstW,dstM) múltiplosregistos num ciclo

  11. newPC Y86: Organização Sequencial PC valE , valM Write back valM • Estado • Program counter (PC) • Códigos de Condição (CC) • Banco de Registos • Memória • Data: paraescrita/leitura de dados • Instruction: paraleitura de instruções • Fluxo de Instruções • Lerinstrução no endereço dado pelo PC • Processarnosváriosestágios • Escrita: • Actualizarregistosgenéricos • Escrevernamemória de dados • Actualizar PC Data Data Memory memory memory Addr , Data valE CC CC ALU ALU Execute Bch aluA , aluB valA , valB srcA , srcB Decode A A B B dstA , dstB M M Register Register Register Register file file file file E E icode , ifun valP rA , rB valC Instruction PC Instruction PC memory increment Fetch memory increment PC

  12. newPC Y86: Organização Sequencial PC valE , valM Write back valM • Busca (Fetch) • Lerinstruções da memória • icode:ifun ; rA:rB ; valC ; valP • Descodificação(Decode) • Lerregistos: valA:valB • Determina ID de regs. a alterar: • srcA ; srcB ; dstE ; dstM • Execução (Execute) • Calcular valor ouendereço / CC • valE / CC (Bch ) • Memória (Memory) • Lerouescrever dados • valM • Actualização (Write Back) • Escritanosregistosgenéricos • Actualização PC Data Data Memory memory memory Addr , Data valE CC CC ALU ALU Execute Bch aluA , aluB valA , valB srcA , srcB Decode A A B B dstA , dstB M M Register Register Register Register file file file file E E icode , ifun valP rA , rB valC Instruction PC Instruction PC memory increment Fetch memory increment PC

  13. newPC Y86: Organização Sequencial PC valE , valM Write back valM • Atenção à temporização: • Busca (início do ciclo) • Descodificação • Execução • Leitura da Memória • EscritasTODAS as escritasocorremsimultaneamente no FIM do CICLO • Escritanos CC • Escritanamemória • Escritanosregs. genéricos • Escrita no PC Data Data Memory memory memory Addr , Data valE CC CC ALU ALU Execute Bch aluA , aluB valA , valB srcA , srcB Decode A A B B dstA , dstB M M Register Register Register Register file file file file E E icode , ifun valP rA , rB valC 4 3 1 2 Instruction PC Instruction PC memory increment Fetch memory increment PC

  14. OPl rA, rB 6 fn rA rB Instrução Y86: operações lógico-aritméticas • Fetch • Ler 2 bytesicode:ifun ; rA:rB • Calcularpróximo PCvalP = PC + 2 • Decode • LerregistosvalA = R[rA]valB = R[rB] • Execute • RealizaroperaçãovalE = valA OP valB • Códigos de condiçãocc = f(valE) • Memory • Nada a fazer • Write back • ActualizarregistoR[rB] = valE • PC Update • Incrementar PCPC = valP

  15. Fetch icode:ifun  M1[PC] Ler byte de instrução rA:rB  M1[PC+1] Ler byte dos registos valP  PC+2 Calcular próximo PC Decode valA  R[rA] Ler operando A valB  R[rB] Ler operando B Execute valE  valB OP valA Realizar operação na ALU Set CC Códigos de condição Memory Write back R[rB]  valE Escrever resultado PC update PC  valP Actualizar PC Instrução Y86: operações lógico-aritméticas OPl rA, rB • Formularexecução de instruçõescomoumasequência de passos simples • Usar a mesma forma geralparatodas as instruções

  16. 8 rB 3 0 irmovl V, rB V Instrução Y86: irmovl • Fetch • Ler 6 bytesicode:ifun ; rA:rB ; valC • Calcularpróximo PCvalP = PC + 6 • Decode • Nada a fazer • Execute • PassarconstantevalE = valC • Memory • Nada a fazer • Write back • EscreverregistoR[rB] = valE • PC Update • Incrementar PCPC = valP

  17. Fetch icode:ifun  M1[PC] Ler byte de instrução rA:rB  M1[PC+1] Ler byte de registos valC  M4[PC+2] Ler deslocamento valP  PC+6 Calcular próximo PC Decode Execute valE  valC Passar constante Memory Write back R[rB]  valE PC update PC  valP Actualizar PC Instrução Y86: irmovl irmovl V, rB Escrever resultado

  18. rA rB 4 0 rmmovl rA, D(rB) D Instrução Y86: rmmovl • Fetch • Ler 6 bytesicode:ifun ; rA:rB ; valC • Calcularpróximo PCvalP = PC + 6 • Decode • LerregistosvalA = R[rA]valB = R[rB] • Execute • CalcularendereçovalE = valB + valC • Memory • EscrevernamemóriaM4[valE] = valA • Write back • Nada a fazer • PC Update • Incrementar PCPC = valP

  19. Fetch icode:ifun  M1[PC] Ler byte de instrução rA:rB  M1[PC+1] Ler byte de registos valC  M4[PC+2] Ler deslocamento valP  PC+6 Calcular próximo PC Decode valA  R[rA] Ler operando A valB  R[rB] Ler operando B Execute valE  valB + valC Calcular endereço Memory M4[valE]  valA Escrever na memória Write back PC update PC  valP Actualizar PC Instrução Y86: rmmovl rmmovl rA, D(rB)

  20. popl rA b rA 0 8 Instrução Y86: popl • Fetch • Ler 2 bytesicode:ifun ; rA:rB • Calcularpróximo PCvalP = PC + 2 • Decode • LerregistosvalA = R[%esp]valB = R[%esp] • Execute • Calcularpróximotopo da pilhavalE = valB + 4 • Memory • Ler da memóriavalM = M4[valA] • Write back • Escrever no registoR[rA] = valMR[%esp] = valE • PC Update • Incrementar PCPC = valP

  21. Fetch icode:ifun  M1[PC] Ler byte de instrução rA:rB  M1[PC+1] Ler byte de registo valP  PC+2 Calcular próximo PC Decode valA  R[%esp] Ler stack pointer valB  R[%esp] Ler stack pointer Execute valE  valB + 4 Incrementar stack pointer Memory valM  M4[valA] Ler topo da pilha Write back R[%esp]  valE Actualizar stack pointer R[rA]  valM Escrever resultado PC update PC  valP Actualizar PC Instrução Y86: popl popl rA • Usar ALU paraincrementar stack pointer • Actualizardoisregistos: rA e %esp

  22. jXX Dest Dest Não tomado continua: Dest: Tomado 7 XX XX fn XX XX Instrução Y86: Jump • Fetch • Ler 5 bytesicode:ifun ; valC • Calcularpróximo PCvalP = PC + 5 • Decode • Nada a fazer • Execute • Saltar ??Bch = f(ifun, CC) • Memory • Nada a fazer • Write back • Nada a fazer • PC Update • Novo valor depende de BchPC = (Bch ? valC : valP)

  23. Fetch icode:ifun  M1[PC] Ler byte de instrução valC  M4[PC+1] Ler destino do salto (se tomado) valP  PC+5 Calcular próximo PC (se ñ tomado) Decode Execute Bch  f(ifun, CC) Saltar? Memory Write back PC update PC  (Bch ? valC : valP) Actualizar PC Instrução Y86: Jump jxx Dest • Calcular ambos osendereços • Escolherdestinobaseado no tipo de salto e noscódigos de condição

  24. call Dest Dest return: target: 8 XX XX 0 XX XX Instrução Y86: call • Fetch • Ler 5 bytesicode:ifun ; valC • Calcularpróximo PC (end. de retorno)valP = PC + 5 • Decode • Le registovalB = R[%esp] • Execute • Calcular novo topo da pilhavalE = valB - 4 • Memory • Push do end. de retornoM4[valE] = valP • Write back • Actualizartopo da pilhaR[%esp] = valE • PC Update • PC = valC

  25. Fetch icode:ifun  M1[PC] Ler byte de instrução valC  M4[PC+1] Ler destino do salto valP  PC+5 Calcular endereço de retorno Decode valB  R[%esp] Execute valE  valB - 4 Novo topo da pilha Memory M4[valE]  valP Write back R[%esp]  valE PC update PC  valC Actualizar PC Instrução Y86: call call Dest Ler addr do topo da pilha Guardar endereço de retorno Actualizar topo da pilha

  26. 9 XX 0 XX Instrução Y86: ret ret return: • Fetch • Ler 1 byte icode:ifun • Calcularpróximo PC valP = PC + 1 • Decode • LerregistovalA = R[%esp] valB = R[%esp] • Execute • Calcular novo topo da pilhavalE = valB + 4 • Memory • Ler end. de retornovalM = M4[valA] • Write back • Actualizartopo da pilhaR[%esp] = valE • PC Update • PC = valM

  27. Fetch icode:ifun  M1[PC] Ler byte de instrução valP  PC+1 Calcular próximo PC Decode valA  R[%esp] valB  R[%esp] Execute valE  valB + 4 Novo topo da pilha Memory valM  M4[valEA Write back R[%esp]  valE PC update PC  valM Actualizar PC Instrução Y86: ret ret Ler addr do topo da pilha Ler endereço de retorno Actualizar topo da pilha

  28. Y86: Valores calculados • Fetch • icode Instruction code • ifun Instruction function • rA Instr. Register A • rB Instr. Register B • valC Instruction constant • valP Incremented PC • Decode • valA Register value A • valB Register value B • Execute • valE ALU result • Bch Branch flag • Memory • valM Value from memory

  29. newPC Y86: SEQ New PC PC • Ovais brancas: sinais internos • Caixas azuis: lógica sequencialescrita controlada pelo clock • Caixas cinzentas: multiplexers • Caixas laranja: CálculoALU e “incrementar PC” • Caixas castanhas: controlo • Traço grosso: 32 bits • Traço fino: 4 bits • Tracejado: 1 bit valM data out read Data Data Mem . Memory control memory memory write Addr Data Bch valE ALU Execute ALU ALU CC CC fun. ALU ALU A B valA valB Decode A A B B M M Register Register Register Register file file file file E E Write back icode ifun rA rB valC valP Instruction PC Instruction PC Fetch memory increment memory increment PC

  30. Y86: Fetch • Blocos • PC: Registo • MemóriaInstruções:Ler 6 bytes (PC to PC+5) • Split: Dividir byte emicode e ifun • Align: ObterrA, rB e valC • Lógica de Controlo(sinaisobtidos a partir de icode) • Instr. Valid: estainstução é válida? • Need regids: estainstrução tem oscamposrA:rB? • Need valC: estainstrução tem um valor imediato?

  31. Y86: Decode • Banco de Registos • Lerportas A, B • Escreverportas E, M • Endereçossãoos IDs do registosou 8(nãoaceder) • Lógica de Controlo • srcA, srcB: registos a ler • dstA, dstB: registos a escrever

  32. Y86: Execute • Unidades • ALU • Implementa 4 funções • Gera códigos de condição • CC • Registo com 3 bits • bcond • Calcular se o salto é tomado (Bch) • Lógica de Controlo • Set CC: Alterar CC? • ALU A: Entrada A para ALU • ALU B: Entrada B para ALU • ALU fun: Qual a função a calcular?

  33. Y86: Memory • Memória • Lerouescreverumapalavra • Lógicade Controlo • Mem.read:leitura? • Mem.write: escrita? • Mem.addr: Seleccionaaddr • Mem.data: Selecciona dados

  34. OPl; XXmovl; popl ; … jXX Dest call Dest PC update PC  valM PC update PC  valC PC update PC  Bch ? valC : valP ret PC update PC  valP Y86: PC • Novo PC • Seleccionapróximo valor do PC

  35. Y86: SEQ resumo • Implementação • Cada instrução expressa como uma sequência de passos elementares • Mesma sequência geral para todos os tipos de instruções • Identificar blocos combinatórios e sequenciais básicos • Ligar e controlar com a lógica de controlo

  36. Y86: SEQ Limitações • Em cada ciclo do relógio os sinais têm que se propagar desde o PC, memória de instruções, banco de registos, ALU e memória até aos registos de novo: • O período do relógio tem que ser suficientemente longo para permitir esta propagação • O período do relógio é constante, logo tem que ser tão grande quanto necessário para a instrução mais lenta • O relógio é, portanto, muito lento • Cada unidade de hardware só está activa (é utilizada) durante uma fracção pequena do período do relógio • Logo, desperdício das verdadeiras capacidades do equipamento

  37. PC Y86: SEQ+ valM data out read Data Data Mem . Memory control memory memory write • Estágio PC reordenado: passa a aconteceraoprincípio • Estágio PC • Selecciona PC para a instrução actual • Baseadonosresultados da últimainstrução • Estes sãoguardados num registo e consistemem:pIcode; pBch; pvalM ; pvalC ; pvalP • PC nãoestáguardadoemnenhumregisto Addr Data Bch valE ALU CC CC Execute ALU ALU fun. ALU ALU A B valA valB Write back Decode A A B B M M Register Register Register Register file file file file E E icode ifun rA rB valC valP Instruction PC Fetch Instruction PC memory increment memory increment PC PC pIcode pBch pValM pValC pValP

More Related