of 17 /17
Execução concorrente de instruções João Canas Ferreira Arquitectura de Computadores FEUP/LEIC Contém figuras de “Computer Organization and Design” (cap. 6), D. Patterson & J. Hennessey, 3 a . ed., Elsevier Tópicos 1 Execução sobreposta de instruções 2 Conflitos de dados e controlo 3 Caminho de dados para “pipelining” ArqComp: Execução concorrente de instruções 2/33 2007-03-23

Arquitectura de Computadorespaginas.fe.up.pt/~jcf/ensino/disciplinas/mieic/arq/2006...Execução concorrente de instruções João Canas Ferreira Arquitectura de Computadores FEUP/LEIC

  • Author
    others

  • View
    0

  • Download
    0

Embed Size (px)

Text of Arquitectura de Computadorespaginas.fe.up.pt/~jcf/ensino/disciplinas/mieic/arq/2006...Execução...

  • Execução concorrente de instruções

    João Canas Ferreira

    Arquitectura de Computadores

    FEUP/LEIC

    Contém figuras de “Computer Organization and Design” (cap. 6), D. Patterson & J. Hennessey, 3a. ed., Elsevier

    Tópicos

    1 Execução sobreposta de instruções

    2 Conflitos de dados e controlo

    3 Caminho de dados para “pipelining”

    ArqComp: Execução concorrente de instruções 2/33 2007-03-23

  • 1 Execução sobreposta de instruções

    2 Conflitos de dados e controlo

    3 Caminho de dados para “pipelining”

    ArqComp: Execução concorrente de instruções 3/33 2007-03-23

    Uma analogia . . .

    Time6 PM 7 8 9 10 11 12 1 2 AM

    Task order

    A B C D

    Time6 PM 7 8 9 10 11 12 1 2 AM

    Task order

    A B C D

    ArqComp: Execução concorrente de instruções 4/33 2007-03-23

  • “Pipeline” MIPS

    “Pipeline” (oleoduto, linha de montagem) de referência:

    + Cinco etapas correspondem a cinco andares:1. obter instrução (instruction fetch): IF2. descodificar instrução e ler registos instruction decoding: ID3. executar instrução ou calcular endereço: EX4. acesso a memória: MEM5. escrita num registo (write back): WB

    Exemplo:

    Classe IF Leit. reg. ALU op MEM ace. Escrita reg. Total

    lw 200 ps 100 ps 200 ps 200 ps 100 ps 800 pssw 200 ps 100 ps 200 ps 200 ps 700 pstipo R 200 ps 100 ps 200 ps 100 ps 600 psbeq 200 ps 100 ps 200 ps 500 ps

    ArqComp: Execução concorrente de instruções 5/33 2007-03-23

    CPU uniciclo vs. CPU com pipeline

    Program execution order (in instructions)

    lw $1, 100($0) lw $2, 200($0) lw $3, 300($0)

    Time200 400 600 800 1000 1200 1400 1600 1800

    Instruction fetch Reg ALU

    Data access Reg

    Instruction fetch Reg ALU

    Data access Reg

    Instruction fetch

    800 ps

    800 ps

    800 ps

    Program execution order (in instructions)

    lw $1, 100($0) lw $2, 200($0) lw $3, 300($0)

    Time200 400 600 800 1000 1200 1400

    Instruction fetch Reg ALU

    Data access Reg

    Instruction fetch

    Instruction fetch

    Reg ALU Data access Reg

    Reg ALU Data access Reg

    200 ps

    200 ps

    200 ps 200 ps 200 ps 200 ps 200 ps

    ArqComp: Execução concorrente de instruções 6/33 2007-03-23

  • Desempenho de pipeline

    + Situação ideal: todos os andares têm o mesmo tempo deexecução: pipeline em equilíbrio.

    + Nas condições ideais:

    Tempo entre instruçõespipeline =Tempo entre instruçõessem pipeline

    No de andares

    + O exemplo anterior tem poucas instruções:

    Speedup =2400

    1400= 1.71

    Com mais um milhão de instruções:

    Speedup =106 × 800+ 2400106 × 200+ 14000

    =800002400

    200001400≈ 4.0

    + A melhoria de desempenho é causada pelo aumento do débito(no de instruções executadas por unidade de tempo) e não pelaredução do tempo de execução das instruções individuais.

    + De facto, nenhuma instrução fica individualmente mais rápida.

    ArqComp: Execução concorrente de instruções 7/33 2007-03-23

    O conjunto de instruções

    + As características do conjunto de instruções podem facilitar aconstrução de pipelines.

    + O conjunto de instruções MIPS:1. Instruções têm todas o mesmo tamanho: facilita a

    obtenção de instruções (IF) e a sua descodificação (ID).2. Poucos formatos diferentes, com a especificação dos

    registos (para leitura) nas mesmas posições: permite obteros operandos ao mesmo tempo que se procede àdescodificação (ID).

    3. Acessos a memória apenas em load/store: andar deexecução pode ser usado para efectuar o cálculo doendereço efectivo (EX).

    4. Alinhamento de operandos em memória: transferência deum item demora apenas um ciclo (MEM).

    ArqComp: Execução concorrente de instruções 8/33 2007-03-23

  • Representação gráfica da pipeline de referência

    200 400 600 800 1000Time

    add $s0, $t0, $t1 IF MEMID WBEX

    + Conceptualmente, existem duas memórias:1. memória de instruções: usada na etapa IF2. memória de dados: usada na etapa MEM

    Na prática, existe geralmente apenas uma memória central: a “duplicação”é efectuada pela memória cache.

    + A cinzento: elementos usados no processamento da instrução.+ Para os elementos de memória:

    É cinzento do lado esquerdo: leituraÉ cinzento do lado direito: escrita

    + Banco de registos: leitura no fim do ciclo; escrita no início dociclo.

    ArqComp: Execução concorrente de instruções 9/33 2007-03-23

    1 Execução sobreposta de instruções

    2 Conflitos de dados e controlo

    3 Caminho de dados para “pipelining”

    ArqComp: Execução concorrente de instruções 10/33 2007-03-23

  • Obstáculos ao funcionamento da “pipeline”

    + Existem situações em que a instrução seguinte não podecomeçar a execução no ciclo seguinte: conflito entreinstruções.(Em inglês: hazard; não é uma tradução literal).

    + Conflitos estruturais:É o suporte físico não permite a execução concorrente(geralmente, por falta de recursos).

    + Conflitos de dados:É os dados necessários não estão disponíveis, porque sãoproduzidos por uma instrução que ainda não terminou.

    + Conflitos de controlo:É a instrução a executar é ainda desconhecida (porque nãose sabe o resultado do salto condicional).

    + Todos os conflitos podem ser “resolvidos” por protelamento:É a instrução cuja execução devia ser iniciada “espera” pelofim da instrução em execução com que está em conflito.

    ArqComp: Execução concorrente de instruções 11/33 2007-03-23

    Representação gráfica de “forwarding”

    200 400 600 800 1000Time

    add $t0, $t1$s0,

    sub $t2, $t3$s0,

    IF MEMID WBEX

    IF MEMID WBEX

    Program execution order (in instructions)

    + Alguns conflitos de dados podem ser resolvidos por forwarding:É utilização de um “atalho” (percurso alternativo internoentre os andares)

    + Condição para utilização de forwarding: o resultado requeridodeve estar disponível “algures” no caminho de dados.

    ArqComp: Execução concorrente de instruções 12/33 2007-03-23

  • Representação gráfica de protelamento

    200 400 600 800 1000 1200 1400Time

    lw 20($t1)$s0,

    sub $t2, $t3$s0,

    IF MEMID WBEX

    IF MEMID WBEX

    Program execution order (in instructions)

    bubble bubble bubble bubble bubble

    + Forwarding não resolve o problema, porque é necessário“esperar” pelos dados fornecidos pela memória.

    + Assumiremos que a unidade de controlo é capaz de identificaros conflitos durante a etapa 2 (ID).

    + Se o conflito não for resolúvel por forwarding, a instrução nãopassa para a etapa EX.

    + Todas as instruções subsequentes também são proteladas.+ Nenhuma das instruções anteriores é protelada.

    ArqComp: Execução concorrente de instruções 13/33 2007-03-23

    Conflito de controlo: resolução por protelamento

    Aplicação de protelamento para “resolver” um conflito de dados.

    Program execution order (in instructions)

    add $4, $5, $6 beq $1, $2, 40 or $7, $8, $9

    Time200 400 600 800 1000 1200 1400

    Instruction fetch Reg ALU

    Data access Reg

    Instruction fetch

    Instruction fetch

    Reg ALU Data access Reg

    Reg ALU Data access Reg

    200 ps

    400 ps

    bubble bubble bubble bubble bubble

    + Assume-se que o caminho de dados é alterado de forma a queseja possível determinar o resultado da comparação e calcularo destino do salto ainda na etapa 2!

    + Mesmo nesta condições, uma instrução de salto condicionalrequer um ciclo de protelamento.

    + Em média, surge um salto condicional em cada 7-10 instruções!

    ArqComp: Execução concorrente de instruções 14/33 2007-03-23

  • Previsão de saltos

    + Para reduzir o impacto dos saltos condicionais (que em muitoscasos reais pode ser superior a 1 ciclo), o CPU pode prever oresultado da comparação (e, em casos mais sofisticados, oendereço do destino).

    + “Previsão” simples: assumir sempre que o salto não é tomado(a condição é falsa).É Caso a previsão venha a mostrar-se errada, é precisoanular a instrução em execução e passar a executar ainstrução correcta.

    + Esquema ligeiramente mais sofisticado pode prever algunssaltos como tomados e outros como não-tomados.

    + Soluções mais sofisticadas devem ser adaptativas (dinâmicas).

    ArqComp: Execução concorrente de instruções 15/33 2007-03-23

    Conflito de controlo: previsão

    Program execution order (in instructions)

    add $4, $5, $6 beq $1, $2, 40 lw $3, 300($0)

    Time200 400 600 800 1000 1200 1400

    Instruction fetch Reg ALU

    Data access Reg

    Instruction fetch

    Instruction fetch

    Reg ALU Data access Reg

    Reg ALU Data access Reg

    200 ps

    200 ps

    Program execution order (in instructions)

    add $4, $5, $6 beq $1, $2, 40 or $7, $8, $9

    Time200 400 600 800 1000 1200 1400

    Instruction fetch Reg ALU

    Data access Reg

    Instruction fetch

    Instruction fetch

    Reg ALU Data access Reg

    Reg ALU Data access Reg

    200 ps

    400 ps

    bubble bubble bubble bubble bubble

    ArqComp: Execução concorrente de instruções 16/33 2007-03-23

  • 1 Execução sobreposta de instruções

    2 Conflitos de dados e controlo

    3 Caminho de dados para “pipelining”

    ArqComp: Execução concorrente de instruções 17/33 2007-03-23

    Caminho de dados uniciclo

    WB: Write backMEM: Acesso memóriaIF: Obter instrução ID: descodificação/ leitura de registos

    EX: execuçãocálculo endereço

    Address Write data

    Read data

    Data Memory

    Read register 1Read register 2

    Write register

    Write data

    Registers

    Read data 1

    Read data 2

    ALUZero

    ALU result

    ADD

    Add result

    Shift left 2

    Address

    Instruction

    Instruction memory

    Add

    4

    PC

    Sign extend

    16 32

    0

    0

    0

    1

    1

    1

    Mux

    Mux

    Mux

    ArqComp: Execução concorrente de instruções 18/33 2007-03-23

  • Propagação de sinais de controlo

    WB

    M

    EX

    WB

    M WB

    Controlo

    IF/ID ID/EX EX/MEM MEM/WB

    Instrução

    ArqComp: Execução concorrente de instruções 19/33 2007-03-23

    Caminho de dados “pipelined” (1/2)

    Add

    Address

    Instructionmemory

    Readregister 1

    Instru

    ction Read

    register 2

    W riteregister

    W ritedata

    Readdata 1

    Readdata 2

    RegistersAddress

    W ritedata

    Readdata

    Datamemory

    Add Addresult

    ALU ALUresult

    Zero

    Shiftleft 2

    Signextend

    PC

    4

    ID/EXIF/ID EX/MEM MEM/WB

    16 32

    Mux

    Mux

    Mux

    Esta versão contém um erro. Qual?

    ArqComp: Execução concorrente de instruções 20/33 2007-03-23

  • Caminho de dados “pipelined” (2/2)

    Add

    Address

    Instructionmemory

    Readregister 1

    Instru

    ction

    Readregister 2

    W riteregister

    W ritedata

    Readdata 1

    Readdata 2

    RegistersAddress

    W ritedata

    Readdata

    Datamemory

    Add Addresult

    ALU ALUresult

    Zero

    Shiftleft 2

    Signextend

    PC

    4

    ID/EXIF/ID EX/MEM MEM/WB

    16 32

    Mux

    Mux

    Mux

    Esta versão já está correcta.

    ArqComp: Execução concorrente de instruções 21/33 2007-03-23

    Pipeline em operação (1/3)

    Programexecutionorder(in instructions)

    lw $10, 20($1)

    sub $11, $2, $3

    add $12, $3, $4

    lw $13, 24($1)

    add $14, $5, $6

    Time (in clock cycles)CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 1 CC 2 CC 3

    IM DMReg Reg

    IM DMReg Reg

    IM DMReg Reg

    IM DMReg Reg

    IM DMReg Reg

    ALU

    ALU

    ALU

    ALU

    ALU

    ArqComp: Execução concorrente de instruções 22/33 2007-03-23

  • Pipeline em operação (2/3)

    Programexecutionorder(in instructions)

    lw $10, 20($1)

    sub $11, $2, $3

    add $12, $3, $4

    lw $13, 24($1)

    add $14, $5, $6

    Time (in clock cycles)CC 1 CC 2 CC 3 CC 4 CC 5

    Instruction fetch

    Instruction decode Execution

    Data access Write back

    CC 6 CC 1 CC 2 CC 3

    Instruction fetch

    Instruction decode Execution

    Data access Write back

    Instruction fetch

    Instruction decode Execution

    Data access Write back

    Instruction fetch

    Instruction decode Execution

    Data access Write back

    Instruction fetch

    Instruction decode Execution

    Data access Write back

    Representação alternativa (e mais convencional).

    ArqComp: Execução concorrente de instruções 23/33 2007-03-23

    Pipeline em operação (3/3)

    Add

    Address

    Instructionmemory

    Readregister 1

    Readregister 2

    W riteregister

    W ritedata

    Readdata 1

    Readdata 2

    RegistersAddress

    W ritedata

    Readdata

    Datamemory

    Add Addresult

    ALU ALUresult

    Zero

    Shiftleft 2

    Signextend

    PC

    4

    ID/EXIF/ID EX/MEM MEM/WB

    Memory

    sub $11, $2, $3

    Write back

    lw$10, 20($1)

    Execution

    add $12, $3, $4, $11

    Instruction decode

    lw $13, 24 ($1)

    Instruction fetch

    add $14, $5, $6

    16 32

    Instru

    ction

    Mux

    Mux

    Mux

    “Fotografia” de um CPU em execução.

    ArqComp: Execução concorrente de instruções 24/33 2007-03-23

  • Exemplo de dependências numa “pipeline”

    sub $2 , $1, $3

    and $12, $2 , $5

    or $13, $6, $2

    add $14, $2 , $2

    sw $15, 100 ($2)

    TempoCC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9

    IM DMReg Reg

    IM DMReg Reg

    IM DMReg Reg

    IM DMReg Reg

    IM DMReg Reg

    10 10 10 10 -20 -20 -20 -2010/-20 registo $2:

    + As ligações “para trás” indicam conflitos de dados.

    ArqComp: Execução concorrente de instruções 25/33 2007-03-23

    Caminho de dados sem atalhos

    Memóriade dados

    Registos

    Mux

    ALU

    ID/EX

    a. Sem forwarding

    EX/MEM MEM/WB

    ArqComp: Execução concorrente de instruções 26/33 2007-03-23

  • Caminho de dados com atalhos

    ALU

    b. Com forwarding

    Memóriade dados

    Registos

    Mux

    Mux

    Mux

    Mux

    ID/EX EX/MEM MEM/WB

    Unidade deForwarding

    EX/MEM.RegisterRd

    MEM/WB.RegisterRd

    RsRt

    RtRd

    ForwardB

    ForwardA

    ArqComp: Execução concorrente de instruções 27/33 2007-03-23

    Caminho de dados com “forwarding”

    Versão mais detalhada:

    M

    WB

    WB

    Memóriade dados

    Registos

    Memóriade instruções

    Mux

    Mux

    Mux

    Mux

    ALU

    ID/EX

    EX/MEM

    MEM/WB

    Unidade deforwarding

    EX/MEM.RegisterRd

    MEM/WB.RegisterRd

    Rs

    Rt

    Rt

    Rd

    PC

    Controlo

    EX

    M

    WB

    IF/ID.RegisterRsIF/ID.RegisterRtIF/ID.RegisterRt

    IF/ID.RegisterRd

    Instr

    uctio

    n

    IF/ID

    ArqComp: Execução concorrente de instruções 28/33 2007-03-23

  • Condições para utilização de “forwarding”

    + Conflito c/ instrução em EX:/*1*/ se (EX/MEM.RegWrite && EX/MEM.RegisterRd != 0 &&

    (EX/MEM.RegisterRd == ID/EX.RegisterRs))1o operando da ALU vem do resultado anterior da ALU

    /*2*/ se (EX/MEM.RegWrite && EX/MEM.RegisterRd != 0 &&(EX/MEM.RegisterRd == ID/EX.RegisterRt))

    2o operando da ALU vem do resultado anterior da ALU

    + Conflito c/ instrução em MEM:/*3*/ se (MEM/WB.RegWrite && MEM/WB.RegisterRd != 0 &&

    (EX/MEM.RegisterRd != ID/EX.RegisterRs) &&(MEM/WB.RegisterRd == ID/EX.RegisterRs))

    1o operando da ALU vem do registo temporário MEM/WB

    /*4*/ se (MEM/WB.RegWrite && MEM/WB.RegisterRd != 0 &&(EX/MEM.RegisterRd != ID/EX.RegisterRt) &&(MEM/WB.RegisterRd == ID/EX.RegisterRt))

    2o operando da ALU vem do registo temporário MEM/WB

    ArqComp: Execução concorrente de instruções 29/33 2007-03-23

    Conflito de controlo: exemplo

    Reg

    [40] beq $1, $3, 28

    [44] and $12, $2, $5

    [48] or $13, $6, $2

    [52] add $14, $2, $2

    (72) lw $4, 50($7)

    Tempo (ciclos de relógio)CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9

    IM DMReg Reg

    IM DMReg Reg

    IM DM Reg

    IM DMReg Reg

    IM DMReg Reg

    (Implementação não optimizada, ao contrário de folha 14).

    ArqComp: Execução concorrente de instruções 30/33 2007-03-23

  • Redução do atraso devido a saltos condicionais

    + Assumir que o salto é não-tomado. Se a previsão estiverincorrecta, anular a instrução (ou instruções) executadas porerro (converter em nop).

    + Efectuar o tratamento da instrução de salto condicional em 2ciclos (andares IF e ID):É Calcular o endereço de destino do salto no andar ID (usarum somador dedicado).

    É Fazer o teste de igualdade no andar ID (usando portaslógicas XOR e OR). Problema: conflitos de dados extra.1. atalhos de ALU/MEM e de MEM/WB para forwarding;

    2. protelamento (para esperar pelo resultado da ALU).

    + Na ausência de protelamentos, a penalidade para uma previsãoerrada (salto tomado) é de 1 ciclo.

    ArqComp: Execução concorrente de instruções 31/33 2007-03-23

    Características da implementação de referência

    Resumo:

    + “Pipeline” com cinco andares: IF, ID, EX, MEM, WB.

    + Detecção de conflitos é feita entra a instrução em ID e asinstruções em EX, MEM e WB.

    + Saltos condicionais: destino e resultado da comparaçãodeterminados em ID (implementação optimizada: folha 31, nãoa implementação básica: folha 30).

    + Previsão de saltos: não-tomado. Se a previsão estiver errada, ainstrução que não deve ser executada é anulada (transformadaem nop).

    + Conflitos de dados resolvidos por forwarding, se possível; senãoo CPU protela a execução da instrução em conflito (e dasseguintes).

    ArqComp: Execução concorrente de instruções 32/33 2007-03-23

  • Elementos de consulta

    A explicação detalhada da organização interna tratada nestadisciplina encontra-se no livro recomendado:

    + [Patterson & Hennessy]:É Secções 6.1–6.3

    As obras [Delgado & Ribeiro] (7.3.1–7.3.2) e [Arroz, Monteiro &Oliveira] (secção 15.3) também descrevem “pipelines”. Contudo,ambas as abordagens são consideravelmente diferentes (emboracompatíveis) da seguida aqui.

    ArqComp: Execução concorrente de instruções 33/33 2007-03-23

    Notas:

    33