O documento discute pipeline e seus conflitos. Explica como dividir o datapath de um único ciclo em estágios de pipeline, necessitando registradores para reter valores parciais entre estágios. Apresenta exemplos de instruções passando pelos estágios, ilustrando como os valores e registradores precisam ser recuperados do estágio anterior.
UFCD_10659_Ficheiros de recursos educativos_índice .pdf
(ACH2055) Arquitetura de Computadores - Aula 07
1. Arquitetura de Computadores
ACH2055
Aula 07 – Pipeline e seus Conflitos
Norton Trevisan Roman
(norton@usp.br)
15 de outubro de 2019
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 1 / 35
2. Pipeline
Organizando o Modelo de Ciclo ´Unico
Fonte: Adaptado de [1]
Voltemos ao datapath
de ciclo ´unico (simplifi-
cado e sem j) j´a visto
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 2 / 35
3. Pipeline
Organizando o Modelo de Ciclo ´Unico
Fonte: Adaptado de [1]
Existe nele uma divis˜ao de
est´agios natural, seguindo
o fluxo da informa¸c˜ao
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 2 / 35
4. Pipeline
Organizando o Modelo de Ciclo ´Unico
Fonte: Adaptado de [1]
Que vai da es-
querda para a direita
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 2 / 35
5. Pipeline
Organizando o Modelo de Ciclo ´Unico
Fonte: Adaptado de [1]
Com exce¸c˜ao da atua-
liza¸c˜ao do PC e armaze-
namento no registrador,
que “voltam” na pipeline
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 2 / 35
6. Pipeline
Organizando o Modelo de Ciclo ´Unico
Fonte: Adaptado de [1]
Embora n˜ao afetem a
instru¸c˜ao corrente, in-
fluenciam as posteriores
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 2 / 35
7. Pipeline
Organizando o Modelo de Ciclo ´Unico
Separar em est´agios,
contudo, n˜ao ´e simples
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 3 / 35
8. Pipeline
Organizando o Modelo de Ciclo ´Unico
Separar em est´agios,
contudo, n˜ao ´e simples
Rodaremos instru¸c˜oes
diferentes em cada est´agio
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 3 / 35
9. Pipeline
Organizando o Modelo de Ciclo ´Unico
Separar em est´agios,
contudo, n˜ao ´e simples
Rodaremos instru¸c˜oes
diferentes em cada est´agio
Precisamos ent˜ao reter os
valores parciais de cada
instru¸c˜ao, para que
possam ser usados nos
est´agios seguintes
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 3 / 35
10. Pipeline
Organizando o Modelo de Ciclo ´Unico
Precisamos salvar esses valores em registradores
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 4 / 35
11. Pipeline
Organizando o Modelo de Ciclo ´Unico
Precisamos salvar esses valores em registradores
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 4 / 35
12. Pipeline
Organizando o Modelo de Ciclo ´Unico
Precisamos salvar esses valores em registradores
Fonte: [1]
Os registradores precisam
ser grandes o suficiente
para armazenar os dados
que passam por eles
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 4 / 35
13. Pipeline
Organizando o Modelo de Ciclo ´Unico
Precisamos salvar esses valores em registradores
Fonte: [1]
IF/ID, por exemplo,
possui 32b (instru¸c˜ao)
+ 32b (PC+4) = 64b
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 4 / 35
14. Pipeline
Organizando o Modelo de Ciclo ´Unico
Precisamos salvar esses valores em registradores
Fonte: [1]
A cada ciclo do clock,
as instru¸c˜oes avan¸cam
de um registrador
da pipeline ao outro
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 4 / 35
15. Pipeline
Organizando o Modelo de Ciclo ´Unico
Mas se cada ciclo comanda a sa´ıda
e entrada de registradores da
pipeline, quando o arquivo de
registradores ser´a atualizado, j´a
que est´a dentro de um est´agio?
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 5 / 35
16. Pipeline
Organizando o Modelo de Ciclo ´Unico
Mas se cada ciclo comanda a sa´ıda
e entrada de registradores da
pipeline, quando o arquivo de
registradores ser´a atualizado, j´a
que est´a dentro de um est´agio?
Podemos esperar a pr´oxima borda do
ascendente clock, mas isso pode gerar
algum atraso (como veremos mais
adiante)
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 5 / 35
17. Pipeline
Organizando o Modelo de Ciclo ´Unico
Alternativamente, podemos mudar
o projeto
Permitindo que o arquivo seja escrito e
lido no mesmo ciclo de clock
A escrita ocorrendo na primeira metade,
e a leitura na segunda
Assim, a leitura retorna o que foi escrito
Basta para isso usar a borda
descendente no arquivo de registradores
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 6 / 35
18. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
sw
PC+4PC+4
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
19. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
O PC ´e incremen-
tado e escrito de
volta, esperando o
pr´oximo ciclo de clock
sw
PC+4PC+4
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
20. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
PC+4 tamb´em ´e
salvo no registrador
da pipeline, caso a
instru¸c˜ao seja um beq
sw
PC+4PC+4
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
21. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
Toda informa¸c˜ao
necess´aria em um
est´agio posterior deve
ser passada via um
registrador da pipeline
sw
PC+4PC+4
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
22. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
PC+4
19
17
$19
$17
12
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
23. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
PC+4
PC+4
$19
$17
12
$19+12
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
24. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
$19+12
$17
PC+4
PC+4
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
25. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
Mas a instru¸c˜ao
em PC+4 j´a n˜ao
est´a rodando no
3o
est´agio (Ex)?
$19+12
$17
PC+4
PC+4
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
26. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
Sim, e justamente
para controlar
isso existe o MUX
$19+12
$17
PC+4
PC+4
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
27. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
28. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
Mesmo tendo acabado
no est´agio anterior, a
instru¸c˜ao ainda passa
por todos os demais
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
29. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
Como as instru¸c˜oes
seguintes j´a est˜ao
em progresso, n˜ao h´a
como acelerar isso
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
30. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
Assim, as instru¸c˜oes
passam por to-
dos os est´agios,
mesmo sem precisar
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
31. Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
Pois as instru¸c˜oes
posteriores j´a est˜ao
caminhando o mais
r´apido que podem
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
32. Pipeline
Exemplo 2: lw $17, 12($19)
Fonte: Adaptado de [1]
lw
PC+4PC+4
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 8 / 35
33. Pipeline
Exemplo 2: lw $17, 12($19)
Fonte: Adaptado de [1]
PC+4
19
17
$19
12
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 8 / 35
34. Pipeline
Exemplo 2: lw $17, 12($19)
Fonte: Adaptado de [1]
PC+4
PC+4
$19
12
$19+12
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 8 / 35
35. Pipeline
Exemplo 2: lw $17, 12($19)
Fonte: Adaptado de [1]
$19+12
$19+12
($19+12)
PC+4
PC+4
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 8 / 35
36. Pipeline
Exemplo 2: lw $17, 12($19)
Fonte: Adaptado de [1]
($19+12)
($19+12)
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 8 / 35
37. Pipeline
Exemplo 2: lw $17, 12($19)
Fonte: Adaptado de [1]
Que valor est´a aqui,
se h´a outra instru¸c˜ao
rodando nesse est´agio?
($19+12)
($19+12)
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 8 / 35
38. Pipeline
Exemplo 2: lw $17, 12($19)
Fonte: Adaptado de [1]
OPS! Assim como
o valor a ser arma-
zenado, tamb´em o
registrador deve vir
do ´ultimo est´agio
($19+12)
($19+12)
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 8 / 35
39. Pipeline
Exemplo 2: lw $17, 12($19)
Fonte: Adaptado de [1]
Ent˜ao...
($19+12)
($19+12)
17 17 17 17
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 8 / 35
40. Pipeline
Exemplo 3: lw $10,40($11); sub $11,$22,$23
PC1+4
lw
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 9 / 35
41. Pipeline
Exemplo 3: lw $10,40($11); sub $11,$22,$23
PC1+8
sub
PC1+4
11
10
40
$11
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 9 / 35
42. Pipeline
Exemplo 3: lw $10,40($11); sub $11,$22,$23
PC1+8
22
23
11
$22
$23
PC1+4
40
$11
10
$11+40
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 9 / 35
43. Pipeline
Exemplo 3: lw $10,40($11); sub $11,$22,$23
10
$11+40 ($11+40)
PC1+8
$22
$23
11
$22-$23
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 9 / 35
44. Pipeline
Exemplo 3: lw $10,40($11); sub $11,$22,$23
($11+40)
($11+40)
10
10
$22-$23
11
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 9 / 35
45. Pipeline
Exemplo 3: lw $10,40($11); sub $11,$22,$23
$22-$23
$22-$23
11
11
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 9 / 35
46. Pipeline
Controlando a pipeline
Fonte: [1]
Agora que temos a pipeline, que mais falta?
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 10 / 35
47. Pipeline
Controlando a pipeline
Fonte: [1]
Agora que temos a pipeline, que mais falta?
Adicionarmos os sinais de controle
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 10 / 35
49. Pipeline
Controlando a pipeline
Fonte: [1]
O PC e os registradores
da pipeline s˜ao escritos
a cada ciclo do clock,
por isso seus sinais
n˜ao s˜ao mostrados
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
50. Pipeline
Controlando a pipeline
Fonte: [1]
Inclu´ımos os 6 bits
do campo funct
da instru¸c˜ao, para
o controle da ALU
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
51. Pipeline
Controlando a pipeline
Fonte: [1]
Bem como um
MUX, para definir
se o registrador de
escrita ser´a o do
campo rd ou rt
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
52. Pipeline
Controlando a pipeline
Fonte: [1]
Para controlar a
pipeline, basta definir
os valores de controle
durante cada est´agio
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
53. Pipeline
Controlando a pipeline
Fonte: [1]
Busca de instru¸c˜ao:
os sinais de controle
est˜ao sempre liga-
dos, ent˜ao n˜ao h´a
nada para controlar
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
54. Pipeline
Controlando a pipeline
Fonte: [1]
Decodifica¸c˜ao:
O mesmo que na
busca da instru¸c˜ao.
Nada a controlar
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
55. Pipeline
Controlando a pipeline
Fonte: [1]
Execu¸c˜ao: Devemos
definir RegDst,
ALUOp e ALUSrc
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
56. Pipeline
Controlando a pipeline
Fonte: [1]
Acesso `a mem´oria:
Devemos definir
Branch, MemRead
e MemWrite
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
57. Pipeline
Controlando a pipeline
Fonte: [1]
Lembrando que PCsrc
seleciona entre PC+4
(da instru¸c˜ao em IF) e
o endere¸co de branch
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
58. Pipeline
Controlando a pipeline
Fonte: [1]
Write back: definimos
MemtoReg e RegWrite
(este no 3o
est´agio)
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
60. Pipeline
Controlando a pipeline
E como fica o
controle ent˜ao?
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 12 / 35
61. Pipeline
Controlando a pipeline
E como fica o
controle ent˜ao?
Cada instru¸c˜ao
carrega consigo os
sinais necess´arios
em cada est´agio
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 12 / 35
62. Pipeline
Controlando a pipeline
E como fica o
controle ent˜ao?
Cada instru¸c˜ao
carrega consigo os
sinais necess´arios
em cada est´agio
Uma vez que as
linhas come¸cam no
est´agio de
execu¸c˜ao (EX),
Fonte: [1]
criamos a informa¸c˜ao de controle durante a decodifica¸c˜ao
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 12 / 35
64. Pipeline
Conflitos de Pipeline
Considere as seguintes instru¸c˜oes
lw $10, 20($1)
sub $11, $2, $3
add $12, $3, $4
lw $13, 24($1)
add $14, $5, $6
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 14 / 35
65. Pipeline
Conflitos de Pipeline
Para complet´a-las
todas ser˜ao necess´arios
9 ciclos de clock
Considere as seguintes instru¸c˜oes
lw $10, 20($1)
sub $11, $2, $3
add $12, $3, $4
lw $13, 24($1)
add $14, $5, $6
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 14 / 35
66. Pipeline
Conflitos de Pipeline
Para complet´a-las
todas ser˜ao necess´arios
9 ciclos de clock
Considere as seguintes instru¸c˜oes
lw $10, 20($1)
sub $11, $2, $3
add $12, $3, $4
lw $13, 24($1)
add $14, $5, $6
H´a algum problema com elas?
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 14 / 35
68. Pipeline
Conflitos de Pipeline
Fonte: [1]
Um componente
sem cor indica
que n˜ao ´e usado
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 15 / 35
69. Pipeline
Conflitos de Pipeline
Fonte: [1]
Colorido `a direita
indica que ´e lido
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 15 / 35
71. Pipeline
Conflitos de Pipeline
Fonte: [1]
Embora apare¸ca
2×, o conjunto
de registrado-
res ´e um s´o
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 15 / 35
72. Pipeline
Conflitos de Pipeline
Fonte: [1]
Problema ne-
nhum com essa
sequˆencia...
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 15 / 35
73. Pipeline
Conflitos de Pipeline
E agora?
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 16 / 35
74. Pipeline
Conflitos de Pipeline
E agora?
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
H´a uma grande
dependˆencia do valor de
$2 definido em sub
Valor este definido no 5o
est´agio dessa instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 16 / 35
75. Pipeline
Conflitos de Pipeline
E agora?
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
H´a uma grande
dependˆencia do valor de
$2 definido em sub
Valor este definido no 5o
est´agio dessa instru¸c˜ao
Mas qu˜ao grave ´e esse
problema, e que instru¸c˜oes
ser˜ao afetadas?
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 16 / 35
77. Pipeline
Conflitos de Pipeline
Fonte: [1]
Suponha que o valor de
$2, antes 10, foi feito
-20 por sub, durante
o 5o
ciclo do clock
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 17 / 35
78. Pipeline
Conflitos de Pipeline
Fonte: [1]
and e or usar˜ao o
valor antigo (10)
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 17 / 35
79. Pipeline
Conflitos de Pipeline
Fonte: [1]
E somente add e
sw usar˜ao o va-
lor correto (-20)
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 17 / 35
80. Pipeline
Conflitos de Pipeline
Fonte: [1]
Isso se o arquivo de
registradores puder ser lido
e escrito no mesmo ciclo
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 17 / 35
81. Pipeline
Conflitos de Pipeline
Fonte: [1]
As linhas em azul mos-
tram as dependˆencias
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 17 / 35
82. Pipeline
Conflitos de Pipeline
Fonte: [1]
E o problema fica
claro quando uma de-
pendˆencia precisa viajar
de volta no tempo
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 17 / 35
83. Pipeline
Conflitos de Pipeline
Temos aqui um caso de conflito de pipeline
(pipeline hazard)
Uma situa¸c˜ao em que a instru¸c˜ao seguinte n˜ao pode
executar no pr´oximo ciclo de clock
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 18 / 35
84. Pipeline
Conflitos de Pipeline
Temos aqui um caso de conflito de pipeline
(pipeline hazard)
Uma situa¸c˜ao em que a instru¸c˜ao seguinte n˜ao pode
executar no pr´oximo ciclo de clock
H´a 3 tipos diferentes de conflitos:
Estruturais
De dados
De controle
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 18 / 35
85. Pipeline
Conflitos de Pipeline
Conflitos estruturais
Quando o hardware n˜ao permite que
uma determinada combina¸c˜ao de
instru¸c˜oes seja executada no mesmo
ciclo de clock
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 19 / 35
86. Pipeline
Conflitos de Pipeline
Conflitos estruturais
Quando o hardware n˜ao permite que
uma determinada combina¸c˜ao de
instru¸c˜oes seja executada no mesmo
ciclo de clock
Ex: se o arquivo de registradores for
ativado na mesma borda do clock que
os registradores da pipeline
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 19 / 35
87. Pipeline
Conflitos de Pipeline
Ou se tiv´essemos uma ´unica mem´oria
Nesse caso, Ter´ıamos um conflito toda vez
que busc´assemos uma nova instru¸c˜ao no
mesmo ciclo em que outra acessa dados da
mem´oria
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 20 / 35
88. Pipeline
Conflitos de Pipeline
Conflitos de Dados
Quando uma instru¸c˜ao
n˜ao pode executar porque
o dado de que necessita
n˜ao est´a dispon´ıvel
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 21 / 35
89. Pipeline
Conflitos de Pipeline
Conflitos de Dados
Quando uma instru¸c˜ao
n˜ao pode executar porque
o dado de que necessita
n˜ao est´a dispon´ıvel
Surgem da dependˆencia
de uma instru¸c˜ao com
rela¸c˜ao a outra anterior
que ainda est´a na pipeline
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 21 / 35
90. Pipeline
Conflitos de Pipeline
Conflitos de Dados
Quando uma instru¸c˜ao
n˜ao pode executar porque
o dado de que necessita
n˜ao est´a dispon´ıvel
Surgem da dependˆencia
de uma instru¸c˜ao com
rela¸c˜ao a outra anterior
que ainda est´a na pipeline
Fonte: [1]
´E o tipo visto em nosso exemplo inicial
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 21 / 35
91. Pipeline
Conflitos de Pipeline
Conflitos de Dados
Precisamos ent˜ao parar
(stall) a pipeline at´e a 1a
instru¸c˜ao se completar
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 22 / 35
92. Pipeline
Conflitos de Pipeline
Conflitos de Dados
Precisamos ent˜ao parar
(stall) a pipeline at´e a 1a
instru¸c˜ao se completar
Suponha agora que temos
as seguintes instru¸c˜oes:
add $s0, $t0, $t1
sub $t2, $s0, $t3
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 22 / 35
93. Pipeline
Conflitos de Pipeline
Conflitos de Dados
Precisamos ent˜ao parar
(stall) a pipeline at´e a 1a
instru¸c˜ao se completar
Suponha agora que temos
as seguintes instru¸c˜oes:
add $s0, $t0, $t1
sub $t2, $s0, $t3
Temos um conflito
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 22 / 35
94. Pipeline
Conflitos de Pipeline: Conflitos de Dados
A solu¸c˜ao parte do princ´ıpio de que n˜ao precisamos
esperar que a instru¸c˜ao se complete:
Assim que a soma ´e calculada, podemos envi´a-la a sub
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 23 / 35
95. Pipeline
Conflitos de Pipeline: Conflitos de Dados
Processo denominado forwarding ou bypassing
Requer, naturalmente, a adi¸c˜ao de hardware
Al´em de ser v´alido somente se o est´agio de destino estiver
mais no futuro que o atual
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 24 / 35
96. Pipeline
Conflitos de Dados: Forwarding
Forwarding, contudo, n˜ao previne todo stall
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 25 / 35
97. Pipeline
Conflitos de Dados: Forwarding
Forwarding, contudo, n˜ao previne todo stall
Suponha que as instru¸c˜oes fossem:
lw $s0, 20($t1)
sub $t2, $s0, $t3
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 25 / 35
98. Pipeline
Conflitos de Dados: Forwarding
Forwarding, contudo, n˜ao previne todo stall
Suponha que as instru¸c˜oes fossem:
lw $s0, 20($t1)
sub $t2, $s0, $t3
O dado estaria dispon´ıvel somente ap´os o 4o
est´agio
de lw
Tarde demais para a entrada de sub no 3o
est´agio
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 25 / 35
99. Pipeline
Conflitos de Dados: Forwarding
Mesmo com forwarding, ainda precisar´ıamos parar a
pipeline por um est´agio
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 26 / 35
100. Pipeline
Conflitos de Dados: Forwarding
Mesmo com forwarding, ainda precisar´ıamos parar a
pipeline por um est´agio
Fonte: [1]
Stalls da pipeline
s˜ao tamb´em conhe-
cidas como bolhas
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 26 / 35
101. Pipeline
Conflitos de Dados: Forwarding
Uma maneira de lidar com isso ´e reordenar o c´odigo,
quando poss´ıvel
Procedimento adotado por compiladores e montadores
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 27 / 35
102. Pipeline
Conflitos de Pipeline
Conflitos de Controle (ou de Branch)
Quando precisamos tomar uma decis˜ao de controle baseada
no resultado de uma instru¸c˜ao enquanto outras executam
O atraso em determinar qual instru¸c˜ao rodar ´e chamado de conflito
de controle
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 28 / 35
103. Pipeline
Conflitos de Pipeline
Conflitos de Controle (ou de Branch)
Quando precisamos tomar uma decis˜ao de controle baseada
no resultado de uma instru¸c˜ao enquanto outras executam
O atraso em determinar qual instru¸c˜ao rodar ´e chamado de conflito
de controle
Como, quando em um beq, a instru¸c˜ao que est´a na pipeline
n˜ao ´e a que deveria ser rodada
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 28 / 35
104. Pipeline
Conflitos de Pipeline
Conflitos de Controle (ou de Branch)
Quando precisamos tomar uma decis˜ao de controle baseada
no resultado de uma instru¸c˜ao enquanto outras executam
O atraso em determinar qual instru¸c˜ao rodar ´e chamado de conflito
de controle
Como, quando em um beq, a instru¸c˜ao que est´a na pipeline
n˜ao ´e a que deveria ser rodada
Solu¸c˜ao 1: stall
Pare a pipeline imediatamente ap´os buscar um branch da mem´oria
Aguarde at´e que a pipeline possa determinar o resultado do branch
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 28 / 35
105. Pipeline
Conflitos de Pipeline: Conflitos de Controle
Mesmo com adi¸c˜ao de hardware para todo o c´alculo
do branch no 2o
est´agio, ainda ter´ıamos paradas
Pois a nova instru¸c˜ao s´o poderia ser buscada ap´os isso
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 29 / 35
106. Pipeline
Conflitos de Pipeline: Conflitos de Controle
Ent˜ao o custo dessa op¸c˜ao ´e alto
Pois ter´ıamos que parar a cada branch
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 30 / 35
107. Pipeline
Conflitos de Pipeline: Conflitos de Controle
Solu¸c˜ao 2: Predi¸c˜ao
Assuma (prediga) que o branch sempre ir´a falhar
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 31 / 35
108. Pipeline
Conflitos de Pipeline: Conflitos de Controle
Solu¸c˜ao 2: Predi¸c˜ao
Assuma (prediga) que o branch sempre ir´a falhar
Se estivermos corretos, n˜ao haver´a atraso
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 31 / 35
109. Pipeline
Conflitos de Pipeline: Conflitos de Controle
Se estivermos errados, haver´a o atraso
Al´em do controle ter que “limpar” a pipeline das instru¸c˜oes
incorretamente em andamento
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 32 / 35
110. Pipeline
Conflitos de Pipeline: Conflitos de Controle
Solu¸c˜ao 3: Decis˜ao Adiada
Imediatamente ap´os o branch, posicione uma instru¸c˜ao que
n˜ao seja afetada por ele
Assim, o branch muda o endere¸co somente da instru¸c˜ao
seguinte a esta instru¸c˜ao
Solu¸c˜ao automaticamente implementada pelo montador
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 33 / 35
111. Pipeline
Conflitos de Controle: Decis˜ao Adiada
No exemplo abaixo, o add n˜ao afeta o branch
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 34 / 35
112. Pipeline
Conflitos de Controle: Decis˜ao Adiada
No exemplo abaixo, o add n˜ao afeta o branch
Podemos ent˜ao movˆe-lo para depois do branch, escondendo
o atraso
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 34 / 35
113. Pipeline
Conflitos de Controle: Decis˜ao Adiada
No exemplo abaixo, o add n˜ao afeta o branch
Podemos ent˜ao movˆe-lo para depois do branch, escondendo
o atraso
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 34 / 35
114. Referˆencias
1 Patterson, D.A.; Hennessy, J.L. (2013): Computer Organization and
Design: The Hardware/Software Interface. Morgan Kaufmann. 5a
ed.
Para detalhes sobre as partes do circuito consulte tamb´em o
Apˆendice B e a se¸c˜ao avan¸cada 4.13 (online)
2 http://bellerofonte.dii.unisi.it/index.asp
Simulador de uma arquitetura de pipeline (MIPS)
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 35 / 35