1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 2006 Prof. Paulo Cesar Centoducatte

Slides:



Advertisements
Apresentações semelhantes
Organização e Arquitetura de Computadores I Microarquitetura
Advertisements

MC542 Organização de Computadores Teoria e Prática
PIPELINE (continuação).
CPU: Controle e processamento
WebDesign Redes de Computadores Aula 07
Arquitetura e organização de computadores
Arquitetura e organização de computadores.
Entrada e Saída Introdução.
Arquitetura de Computadores
Aula 06: Introdução ao Pipelining, Hazards Estruturais e Forwarding
Aula 08: Execução Multiciclo e MIPS R4000
A Arquitetura: conjunto de instruções
Introdução Arquitectura com unidade de controlo uniciclo.
0. Introdução.
Exemplo de arquitetura registrador-registrador- MIPS
MIPS PIPELINE.
MIPS MULTICICLO Fluxo de Dados e Controle
Processador Fluxo de Dados e Controle
AULA 06 - MIPS PIPELINE.
Arquitetura de Sistemas Operacionais
Processo de Pipelining (exemplo da lavanderia)
MC542 Organização de Computadores Teoria e Prática
Processador Intel Itanium
Técnicas de Predição de Desvios
Sistemas Operacionais
Pipeline.
Problemas com Entrada e Saída
Organização e Arquitetura de Computadores I Parte de Controle
SSC114 Arquitetura de Computadores Pipeline - Predição de desvios
Joao Cláudio Soares Otero
Rganização de Computadores Melhorias de Desempenho com Pipelines - Parte B - Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de.
Pipelining Ana Cristina Alves de Oliveira ufcg. edu
Multiplicador e Forwarding no MIPS
1998 Morgan Kaufmann Publishers Ch5B-1 O Processador: Via de Dados e Controle (Parte C: microprogramação)
Autor: Fernando de Mesentier Silva
Melhorando o desempenho com pipeline
Y86: Encadeamento de Instruções (PIPE)
Processadores – Aula 3 Professor: André Luis Meneses Silva
Processadores – Aula 3 Professor: André Luis Meneses Silva
Introdução à Programação
Prof. Felipe Ferreira de Oliveira
Funcionamento básico de um computador
Representação de Instruções
Pipeline O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline. Todos os estágios devem estar prontos ao mesmo.
Arquitetura de computadores
Família Intel P5 e P6 P5 P6 NetBurst Incluindo cache L2.
Projeto de Engenharia de Software e Sistemas
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Contextualização de Paralelismo em nível de instrução
Unidade Central De Processamento: Processador
Unidade Central De Processamento: Processador
Técnico em Informática
A Linguagem de Máquina – Desvios e Laços
Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Reduced Instruction Set Computer 6.
Arquitetura de Computadores 2009 Infra-estrutura Hardware
Parte 3 Seção de Dados e Unidade de Controle
Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Arquiteturas Superpipeline e Superescalares.
Arquitetura de computadores
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
Introdução ao Processamento Vetorial
Organização de Computadores Implementação da UCP Construção do caminho de dados Controle Implementação monociclo.
 Evolução constante das linguagens de programação de alto nível (LAN) desde o Fortran (primeira LAN)  Surgimento de novos paradigmas como a OO, Orientação.
Universidade Federal do Espírito Santo - UFES Laboratório de Computação de Alto Desempenho - LCAD Banco de Registradores e ALU Prof. Alberto F. De Souza.
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
TRABALHO AVALIATIVO ALUNO: FRANCISCO HELIÉSUS DE MEDEIROS MATÉRIA: ORGANIZAÇÃO DE COMPUTADORES.
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Determinou o endereço de A
Chapter Six Pipelining Harzard
Transcrição da apresentação:

1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática

2  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 “Computer Organization and Design: The Hardware/Software Interface” (Capítulo 6) MC542 Arquitetura de Computadores Processador MIPS Pipeline (continuação)

3  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Sumário Dependências –Soluçãopor Softwarwe –Solução por Hardware Forwarding Condições para determinar se há Hazard de dados Datapath sem Forwarding Datapath com Forwarding Detecção e Controle de Hazard Datapath Modificado para Fowarding Exemplo de Execução de instruções com Forwarding

4  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Dependências Problema com iniciar a execução de uma instrução antes do término da anterior –Exemplo: Instruções com dependências sub$2, $1, $3# reg $2 modificado and$12, $2,$5# valor (1 º operando) de $2 # depende do sub or $13, $6,$2# idem (2 º operando) add$14, $2,$2# idem (1 º e 2 º operando) sw$15, 100($2)# idem (base do endereçamento )

5  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 IMReg IMReg CC 1CC 2CC 3CC 4CC 5CC 6 Time (in clock cycles) sub $2, $1, $3 Program execution order (in instructions) and $12, $2, $5 IM Reg DMReg IMDMReg IMDMReg CC 7CC 8CC /–20–20–20–20–20 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Value of register $2: DM Reg Reg Reg Reg DM Se a escrita no banco de registradores é feita no 1 o semi-ciclo e a leitura no 2 o, em CC5 não há hazard.

6  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Solução por Software Compilador garante um código sem Hazard inserindo nops –Onde inserir os nops? sub$2, $1, $3 and$12, $2,$5 or $13, $6,$2 add$14, $2,$2 sw$15, 100($2) sub$2, $1, $3 nop and$12, $2,$5 or $13, $6,$2 add$14, $2,$2 sw$15, 100($2) Problema: reduz o desempenho

7  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Solução por Hardware Usar o resultado assim que calculado, não esperar que ele seja escrito. Neste caso é necessário mecanismo para detectar o hazard. Qual a condição para que haja hazard? Quando uma instrução tenta ler um registrador (estágio EX) e esse registrador será escrito por uma instrução anterior no estágio WB

8  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Forwarding O que ocorre se $13 no lugar de $2

9  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Condições que determinam Hazards de dados EX/MEM –EX/MEM.RegisterRd = ID/EX.RegisterRs –EX/MEM.RegisterRd = ID/EX.RegisterRt MEM/WB –MEM/WB.RegisterRd = ID/EX.RegisterRs –MEM/WB.RegisterRd = ID/EX.RegisterRt

10  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Exemplo: –sub–and: EX/MEM.RegisterRd = ID/EX.RegisterRs = $2 –sub-or: MEM/WB.RegisterRd = ID/EX.RegisterRt = $2 –sub-add: não tem hazard –sub-sw: não tem hazard sub$2, $1, $3# reg $2 modificado and$12, $2, $5# valor de $2 depende do sub or $13, $6,$2# idem (2 º operando) add$14,$2,$2# idem (1 º e 2 º operandos) sw$15, 100($2)# idem (base do endereçamento) Condições que determinam Hazards de dados

11  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Esta não é uma política precisa, pois existem instruções que não escrevem no register file. –solução seria verificar o sinal RegWrite  MIPS usa $0 para operandos de valor 0. Para instruções onde $0 é destino?  sll $0, $1, 2  valor diferente de zero nos regs de pipeline  add $3, $0, $2  se houver fowarding, $3 terá valor errado no fim da instrução add  Para isto temos que incluir as condições  EX/MEM.registerRd <> 0 (1 º hazard)  MEM/WB.registerRd <> 0 (2 º hazard) Condições que determinam Hazards de dados

12  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Datapath sem Forwarding

13  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Datapath com Forwarding ( para add, sub, and e or )

14  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Valores dos Sinais ForwardA e ForwardB

15  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Detecção e Controle de Hazard  O controle de fowarding será no estágio EX, pois é neste estágio que se encontram os multiplexadores de fowarding da ULA. Portanto devemos passar o número do registrador operando do estágio ID via registrador de pipeline ID/EX  adicionar campo rs (bits 25-21).

16  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Condições para Detecção de Hazard EX hazard if (EX/MEM.RegWrite and (EX/MEM.RegisterRd <> 0 ) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) FowardA = 10 if (EX/MEM.RegWrite and (EX/MEM.RegisterRd <> 0 ) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) FowardB = 10 MEM hazard if (MEM/WB.RegWrite and (MEM/WB.RegisterRd <> 0 ) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) FowardA = 01 if (MEM/WB.RegWrite and (MEM/WB.RegisterRd <> 0 ) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) FowardB = 01

17  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Observações: Não existe data hazard no estágio WB, pois estamos assumindo que o register file supre o resultado correto se a instrução no estágio ID é o mesmo registrador escrito pela instrução no estágio WB  forwarding no register file –Na 1 a edição do livro P&H tem hazard

18  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Observações: Um data hazard potencial pode ocorrer entre o resultado de uma instrução em WB, o resultado de uma instrução em MEM e o operando fonte da instrução no estágio da ULA Neste caso o resultado é antecipado do estágio MEM porque o resultado neste estágio é mais recente add $1, $1, $2 add $1, $1, $3 add $1, $1, $4 if (MEM/WB.RegWrite and (MEM/WB.RegisterRd <> 0 ) and (EX/MEM.RegisterRd <> ID/EX.registerRs) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) FowardA = 01 if (MEM/WB.RegWrite and (MEM/WB.RegisterRd <> 0 ) and (EX/MEM.RegisterRd <> ID/EX.registerRt) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) FowardB = 01

19  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Datapath Modificado para Fowarding

20  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Forwarding sub$2, $1, $3 and$4, $2, $5 or $4, $4, $2 add$9, $4, $2

21  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Forwarding sub$2, $1, $3 and$4, $2, $5 or $4, $4, $2 add$9, $4, $2

22  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Forwarding sub$2, $1, $3 and$4, $2, $5 or $4, $4, $2 add$9, $4, $2

23  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Forwarding sub$2, $1, $3 and$4, $2, $5 or $4, $4, $2 add$9, $4, $2

24  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Forwarding: Datapath para Entrada Signed- imediate Necessária para lw e sw

25  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Data Hazard e Stalls

26  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Data Hazards e Stalls  Quando uma instrução tenta ler um registrador precedida por uma instrução de load, que escreve no mesmo registrador  o dado tem que ser mantido (ciclo 4) enquanto a ULA executa a operação  atrasar o pipeline para que a instrução leia o valor correto.  Condição de detecção de hazard para atraso no pipeline # testa se é um load: if (ID/EX.MemRead and # verifica se registrador destino da instrução load em EX é o registrador fonte da instrução em ID: ((ID/EX.RegisterRt = IF/ID.RegisterRs) or ( ID/EX.RegisterRt = IF/ID.RegisterRt))) stall pipeline

27  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Data Hazards e Stalls

28  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Data Hazards e Stalls  Se a instrução no estágio ID é atrasada, a instrução no estágio IF também deve ser atrasada  Como fazer? Impedir a mudança no PC e no registrador IF/IF. A instrução em IF continua sendo lida e em ID continuam sendo lido os mesmos campos da instrução.  Stall pipeline: mesmo efeito da instrução nop começando pelo estágio EX  desativar os 9 sinais de controle dos estágios EX, MEM e WB

29  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Datapath com forwarding e data hazard detection PC Instruction memory Registers M u x M u x M u x Control ALU EX M WB M WB WB ID/EX EX/MEM MEM/WB Data memory M u x Hazard detection unit Forwarding unit 0 M u x IF/ID I n s t r u c t i o n ID/EX.MemRead I F / I D W r i t e P C W r i t e ID/EX.RegisterRt IF/ID.RegisterRd IF/ID.RegisterRt IF/ID.RegisterRt IF/ID.RegisterRs Rt Rs Rd Rt EX/MEM.RegisterRd MEM/WB.RegisterRd

30  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Seqüência de Execução do Exemplo Anterior

31  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Seqüência de Execução do Exemplo Anterior

32  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Seqüência de Execução do Exemplo Anterior

33  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Seqüência de Execução do Exemplo Anterior

34  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Seqüência de Execução do Exemplo Anterior

35  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Seqüência de Execução do Exemplo Anterior

36  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Branch Hazards Devemos ter um fetch de instrução por ciclo de clock, decisão: qual caminho de um branch deve ocorrer até o estágio MEM.

37  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Branch Hazards Tês esquemas para resolver control hazard : Branch-delay Slots Assume Branch Not Taken Dynamic Branch Prediction Assume Branch Not Taken continua a execução seqüencialmente e se o branch for tomado, descarta as instruções entre a instrução de branch e a instrução no endereço alvo, fazendo seus sinais de controle iguais a zero

38  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Branch Hazards  Redução do atraso de branches  reduzir o custo se o branch for tomado  adiantar a execução de uma instrução de branch.  O next PC para uma instrução de branch é selecionado no estágio MEM  executar o branch no estágio ID (apenas uma instrução será descartada)  deslocar o cálculo do endereço de branch (branch adder) do MEM para o ID e comparando os registradores lidos do register file.

39  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Branch Hazards

40  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Branch Hazards (exemplo) 36 sub $10, $4, $8 40 beq $1, $3, 7 # PC  *4 = and $12, $2, $5 48 or $13, $2, $6 52 add $14, $4, $2 56 slt $15, $6, $ lw$4, 50($7)

41  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Branch Hazards (exemplo)

42  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Branch Hazards (exemplo)

43  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Dymanic Branch Prediction  Branch not taken  forma de branch predicton que assume que o branch não será tomado.  Dymanic Branch Prediction  descobre se o branch foi tomado ou não na última vez que foi executado e faz o fetch das instruções pelo mesmo local da última vez.

44  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s2 Dymanic Branch Prediction  Implementação  branch prediction buffer  branch history table  Branch prediction buffer: pequena memória indexada por bits menos significativos do endereço da instrução de branch. Ela contém um bit que diz se o branch foi recentemente tomado ou não (Neste esquema não sabemos se a previsão é correta ou não, pois este buffer pode ser alterado por outra instrução de branch que tem os mesmos bits menos significativos de endereço).