SlideShare uma empresa Scribd logo
1 de 114
Baixar para ler offline
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Pipeline
Exemplo 1: sw $17, 12($19)
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 7 / 35
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Pipeline
Controlando a pipeline
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 35
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
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
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
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
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
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
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
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
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
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
Pipeline
Controlando a pipeline
E como fica o
controle ent˜ao?
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 12 / 35
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
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
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
Pipeline
Controlando a pipeline
Fonte: [1]
Ent˜ao...
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 13 / 35
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
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
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
Pipeline
Conflitos de Pipeline
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 15 / 35
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
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
Pipeline
Conflitos de Pipeline
Fonte: [1]
E `a esquerda
que ´e escrito
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 15 / 35
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
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
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
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
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
Pipeline
Conflitos de Pipeline
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 17 / 35
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Mais de Norton Trevisan Roman

Mais de Norton Trevisan Roman (20)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 

Último

Regulamento do Festival de Teatro Negro - FESTIAFRO 2024 - 10ª edição - CEI...
Regulamento do Festival de Teatro Negro -  FESTIAFRO 2024 - 10ª edição -  CEI...Regulamento do Festival de Teatro Negro -  FESTIAFRO 2024 - 10ª edição -  CEI...
Regulamento do Festival de Teatro Negro - FESTIAFRO 2024 - 10ª edição - CEI...
Eró Cunha
 
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
GisellySobral
 
Gramática - Texto - análise e construção de sentido - Moderna.pdf
Gramática - Texto - análise e construção de sentido - Moderna.pdfGramática - Texto - análise e construção de sentido - Moderna.pdf
Gramática - Texto - análise e construção de sentido - Moderna.pdf
Kelly Mendes
 
Aspectos históricos da educação dos surdos.pptx
Aspectos históricos da educação dos surdos.pptxAspectos históricos da educação dos surdos.pptx
Aspectos históricos da educação dos surdos.pptx
profbrunogeo95
 
atividade para 3ª serie do ensino medi sobrw biotecnologia( transgenicos, clo...
atividade para 3ª serie do ensino medi sobrw biotecnologia( transgenicos, clo...atividade para 3ª serie do ensino medi sobrw biotecnologia( transgenicos, clo...
atividade para 3ª serie do ensino medi sobrw biotecnologia( transgenicos, clo...
WelitaDiaz1
 

Último (20)

SQL Parte 1 - Criação de Banco de Dados.pdf
SQL Parte 1 - Criação de Banco de Dados.pdfSQL Parte 1 - Criação de Banco de Dados.pdf
SQL Parte 1 - Criação de Banco de Dados.pdf
 
Acróstico - Maio Laranja
Acróstico  - Maio Laranja Acróstico  - Maio Laranja
Acróstico - Maio Laranja
 
Regulamento do Festival de Teatro Negro - FESTIAFRO 2024 - 10ª edição - CEI...
Regulamento do Festival de Teatro Negro -  FESTIAFRO 2024 - 10ª edição -  CEI...Regulamento do Festival de Teatro Negro -  FESTIAFRO 2024 - 10ª edição -  CEI...
Regulamento do Festival de Teatro Negro - FESTIAFRO 2024 - 10ª edição - CEI...
 
Testes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdfTestes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdf
 
Dados espaciais em R - 2023 - UFABC - Geoprocessamento
Dados espaciais em R - 2023 - UFABC - GeoprocessamentoDados espaciais em R - 2023 - UFABC - Geoprocessamento
Dados espaciais em R - 2023 - UFABC - Geoprocessamento
 
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
472037515-Coelho-Nelly-Novaes-Literatura-Infantil-teoria-analise-e-didatica-p...
 
"Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande""Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande"
 
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
 
UFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdf
UFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdfUFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdf
UFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdf
 
Peça de teatro infantil: A cigarra e as formigas
Peça de teatro infantil: A cigarra e as formigasPeça de teatro infantil: A cigarra e as formigas
Peça de teatro infantil: A cigarra e as formigas
 
Tema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdfTema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdf
 
Proposta de redação Soneto de texto do gênero poema para a,usos do 9 ano do e...
Proposta de redação Soneto de texto do gênero poema para a,usos do 9 ano do e...Proposta de redação Soneto de texto do gênero poema para a,usos do 9 ano do e...
Proposta de redação Soneto de texto do gênero poema para a,usos do 9 ano do e...
 
Gramática - Texto - análise e construção de sentido - Moderna.pdf
Gramática - Texto - análise e construção de sentido - Moderna.pdfGramática - Texto - análise e construção de sentido - Moderna.pdf
Gramática - Texto - análise e construção de sentido - Moderna.pdf
 
As teorias de Lamarck e Darwin para alunos de 8ano.ppt
As teorias de Lamarck e Darwin para alunos de 8ano.pptAs teorias de Lamarck e Darwin para alunos de 8ano.ppt
As teorias de Lamarck e Darwin para alunos de 8ano.ppt
 
transcrição fonética para aulas de língua
transcrição fonética para aulas de línguatranscrição fonética para aulas de língua
transcrição fonética para aulas de língua
 
Aspectos históricos da educação dos surdos.pptx
Aspectos históricos da educação dos surdos.pptxAspectos históricos da educação dos surdos.pptx
Aspectos históricos da educação dos surdos.pptx
 
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptxEBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
 
atividade para 3ª serie do ensino medi sobrw biotecnologia( transgenicos, clo...
atividade para 3ª serie do ensino medi sobrw biotecnologia( transgenicos, clo...atividade para 3ª serie do ensino medi sobrw biotecnologia( transgenicos, clo...
atividade para 3ª serie do ensino medi sobrw biotecnologia( transgenicos, clo...
 
662938.pdf aula digital de educação básica
662938.pdf aula digital de educação básica662938.pdf aula digital de educação básica
662938.pdf aula digital de educação básica
 
UFCD_10659_Ficheiros de recursos educativos_índice .pdf
UFCD_10659_Ficheiros de recursos educativos_índice .pdfUFCD_10659_Ficheiros de recursos educativos_índice .pdf
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
  • 48. Pipeline Controlando a pipeline Fonte: [1] Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 11 / 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
  • 59. Pipeline Controlando a pipeline E como fica o controle ent˜ao? Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 12 / 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
  • 63. Pipeline Controlando a pipeline Fonte: [1] Ent˜ao... Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 13 / 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
  • 67. Pipeline Conflitos de Pipeline Fonte: [1] Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 15 / 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
  • 70. Pipeline Conflitos de Pipeline Fonte: [1] E `a esquerda que ´e escrito 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
  • 76. Pipeline Conflitos de Pipeline Fonte: [1] Norton Trevisan Roman (norton@usp.br) 15 de outubro de 2019 17 / 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