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
17
Embed
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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
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+ 2400
106 × 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
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