SlideShare uma empresa Scribd logo
1 de 134
Baixar para ler offline
Arquitetura de Computadores
ACH2055
Aula 08 – Conflitos de Pipeline e Exce¸c˜oes
Norton Trevisan Roman
(norton@usp.br)
24 de outubro de 2019
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 1 / 36
Conflitos de Dados
Forwarding
Fonte: Adaptado de [1]
Voltemos ao exem-
plo da aula passada
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
Conflitos de Dados
Forwarding
Fonte: Adaptado de [1]
Nele, o problema era que
o valor necess´ario no
2o
est´agio do and sa´ıa
do 5o
est´agio de sub
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
Conflitos de Dados
Forwarding
Fonte: Adaptado de [1]
Esse valor, no entanto,
j´a est´a dispon´ıvel ao final
do 3o
est´agio de sub
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
Conflitos de Dados
Forwarding
Fonte: Adaptado de [1]
Sendo realmente ne-
cess´ario somente no in´ıcio
do 3o
est´agio de and e or
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
Conflitos de Dados
Forwarding
Fonte: Adaptado de [1]
Evitamos ent˜ao o pro-
blema simplesmente en-
viando o dado para quem
precisa assim que ele esti-
ver dispon´ıvel (forwarding)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
Conflitos de Dados
Forwarding
Fonte: Adaptado de [1]
Note que o forwarding
foi feito ao final do
3o
est´agio e refeito
ao final do 4o
est´agio,
eliminando assim 2 stalls
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
Conflitos de Dados
Forwarding
Sob que condi¸c˜oes forwarding deve ocorrer?
Tipo-R: op rs rt rd shamt funct
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
Conflitos de Dados
Forwarding
Sob que condi¸c˜oes forwarding deve ocorrer?
Tipo-R: op rs rt rd shamt funct
Fonte: Adaptado de [1]
rs ou rt em ID/EX = rd em EX/MEM
A instru¸c˜ao que sai de EX ir´a armazenar o resultado da
ALU em uma entrada da ALU da instru¸c˜ao seguinte
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
Conflitos de Dados
Forwarding
Sob que condi¸c˜oes forwarding deve ocorrer?
Tipo-R: op rs rt rd shamt funct
Fonte: Adaptado de [1]
rs ou rt em ID/EX = rd em EX/MEM
Ou seja, o resultado de uma instru¸c˜ao ´e usado
diretamente pela ALU da instru¸c˜ao seguinte
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
Conflitos de Dados
Forwarding
Sob que condi¸c˜oes forwarding deve ocorrer?
Tipo-R: op rs rt rd shamt funct
Fonte: Adaptado de [1]
rs ou rt em ID/EX = rd em EX/MEM
Mas somente se a instru¸c˜ao em EX/MEM for realmente
escrever no registrador (caso em que seu RegWrite = 1)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
Conflitos de Dados
Forwarding
Sob que condi¸c˜oes forwarding deve ocorrer?
Tipo-R: op rs rt rd shamt funct
Fonte: Adaptado de [1]
rs ou rt em ID/EX = rd em MEM/WB
A instru¸c˜ao que sai de MEM ir´a armazenar o valor lido
em uma entrada da ALU da instru¸c˜ao que sai de ID
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
Conflitos de Dados
Forwarding
Sob que condi¸c˜oes forwarding deve ocorrer?
Tipo-R: op rs rt rd shamt funct
Fonte: Adaptado de [1]
rs ou rt em ID/EX = rd em MEM/WB
Novamente, somente se a instru¸c˜ao em MEM/WB for
realmente escrever no registrador (seu RegWrite = 1)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
Conflitos de Dados
Forwarding
Sob que condi¸c˜oes forwarding deve ocorrer?
Tipo-R: op rs rt rd shamt funct
Fonte: Adaptado de [1]
Isso, contudo, n˜ao impede forwarding no caso
de tentativas de escrita em $s0 (rd = $s0)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 4 / 36
Conflitos de Dados
Forwarding
Sob que condi¸c˜oes forwarding deve ocorrer?
Tipo-R: op rs rt rd shamt funct
Fonte: Adaptado de [1]
Isso, contudo, n˜ao impede forwarding no caso
de tentativas de escrita em $s0 (rd = $s0)
Devemos ent˜ao adicionar essa condi¸c˜ao
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 4 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
Se (EX/MEM.RegWrite
e (EX/MEM.Rd = 0) e
(EX/MEM.Rd = ID/EX.Rs))
ForwardA = 10
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
ForwardA = 10: O pri-
meiro operando da ALU
vem da sa´ıda anterior da
ALU
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
Se (EX/MEM.RegWrite
e (EX/MEM.Rd = 0) e
(EX/MEM.Rd = ID/EX.Rt))
ForwardB = 10
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
ForwardB = 10: O se-
gundo operando da ALU
vem da sa´ıda anterior da
ALU
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
Se (MEM/WB.RegWrite
e (MEM/WB.Rd = 0) e
(MEM/WB.Rd = ID/EX.Rs))
ForwardA = 01
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
ForwardA = 01: O pri-
meiro operando da ALU
vem da mem´oria ou de um
resultado anterior da ALU
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
Se (MEM/WB.RegWrite
e (MEM/WB.Rd = 0) e
(MEM/WB.Rd = ID/EX.Rt))
ForwardB = 01
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
ForwardB = 01: O se-
gundo operando da ALU
vem da mem´oria ou de um
resultado anterior da ALU
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
O controle de forwarding
est´a no est´agio EX porque
´e onde est˜ao os MUXes da
ALU
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
Al´em dos registradores
necess´arios para a tomada
de decis˜ao (sobre fazer ou
n˜ao o forwarding)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Fonte: Adaptado de [1]
N˜ao h´a conflitos em WB
porque os registradores
podem ser escritos e lidos
no mesmo ciclo de clock
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Estamos livres de problemas?
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Estamos livres de problemas?
Considere o seguinte c´odigo:
add $1, $1, $2
add $1, $1, $3
add $1, $1, $4
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
De onde vir´a esse valor?
(add RD, RS, RT)
Estamos livres de problemas?
Considere o seguinte c´odigo:
add $1, $1, $2
add $1, $1, $3
add $1, $1, $4
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
De onde vir´a esse valor?
(add RD, RS, RT)
Se (MEM/WB.RegWrite e (MEM/WB.Rd = 0)
e (MEM/WB.Rd = ID/EX.Rs)) ForwardA = 01
Estamos livres de problemas?
Considere o seguinte c´odigo:
add $1, $1, $2
add $1, $1, $3
add $1, $1, $4
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
De onde vir´a esse valor?
(add RD, RS, RT)
Se (MEM/WB.RegWrite e (MEM/WB.Rd = 0)
e (MEM/WB.Rd = ID/EX.Rs)) ForwardA = 01
Se (EX/MEM.RegWrite e (EX/MEM.Rd = 0)
e (EX/MEM.Rd = ID/EX.Rs)) ForwardA = 10
Estamos livres de problemas?
Considere o seguinte c´odigo:
add $1, $1, $2
add $1, $1, $3
add $1, $1, $4
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
OPS! Dos 2 est´agios seguintes...
Se (MEM/WB.RegWrite e (MEM/WB.Rd = 0)
e (MEM/WB.Rd = ID/EX.Rs)) ForwardA = 01
Se (EX/MEM.RegWrite e (EX/MEM.Rd = 0)
e (EX/MEM.Rd = ID/EX.Rs)) ForwardA = 10
Estamos livres de problemas?
Considere o seguinte c´odigo:
add $1, $1, $2
add $1, $1, $3
add $1, $1, $4
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Que fazer ent˜ao?
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 7 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Que fazer ent˜ao? Fazer com que valha o mais novo:
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 7 / 36
Conflitos de Dados
Forwarding Unit: Condi¸c˜oes de Controle
Que fazer ent˜ao? Fazer com que valha o mais novo:
Fonte: Adaptado de [1]
Somente far´a forwarding de WB
se este n˜ao for acontecer em MEM
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 7 / 36
Conflitos de Dados
Pipeline Stalls
Vimos na aula passada que forwarding n˜ao evita
todo problema
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 8 / 36
Conflitos de Dados
Pipeline Stalls
Vimos na aula passada que forwarding n˜ao evita
todo problema
Como quando
uma instru¸c˜ao
lˆe um
registrador em
seguida a um
lw para esse
mesmo
registrador
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 8 / 36
Conflitos de Dados
Pipeline Stalls
Vimos na aula passada que forwarding n˜ao evita
todo problema
Como quando
uma instru¸c˜ao
lˆe um
registrador em
seguida a um
lw para esse
mesmo
registrador
Fonte: [1]
Forwarding n˜ao ajuda,
pela dependˆencia
voltar no tempo
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 8 / 36
Conflitos de Dados
Pipeline Stalls
Nesses casos nos resta apenas parar a pipeline at´e o
conflito ser resolvido
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 9 / 36
Conflitos de Dados
Pipeline Stalls
Nesses casos nos resta apenas parar a pipeline at´e o
conflito ser resolvido
E para isso, precisamos
de uma unidade de
detec¸c˜ao de
conflitos (Hazard
Detection Unit)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 9 / 36
Conflitos de Dados
Pipeline Stalls
Nesses casos nos resta apenas parar a pipeline at´e o
conflito ser resolvido
E para isso, precisamos
de uma unidade de
detec¸c˜ao de
conflitos (Hazard
Detection Unit)
Posicionada em ID,
para que ela possa
introduzir a parada Fonte: [1]
entre a carga e o uso de uma instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 9 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Se (ID/EX.MemRead e ((ID/EX.Rt
= IF/ID.Rs) ou (ID/EX.Rt =
IF/ID.Rt))) pare a pipeline
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Fazemos isso impedindo que PC e
IF/ID sejam modificados
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Isso faz com que a instru¸c˜ao no
est´agio IF continue a ser lida com
o mesmo PC
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
O mesmo ocorre com a instru¸c˜ao
em ID, usando os valores de IF/ID
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Al´em disso, os sinais de controle
s˜ao desativados (zerados) em ID
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Criando uma instru¸c˜ao sem efeito
(que n˜ao gera mudan¸cas de estado)
→ um nop
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Instru¸c˜ao esta que ´e propagada
pela pipeline a cada ciclo do clock
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Sem causar escrita em registradores
ou na mem´oria
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Note que o atraso dura um ´unico
ciclo do clock
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Ap´os isso o forwarding pode lidar
com o problema
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Note tamb´em que somente quando
lw est´a em EX que h´a informa¸c˜ao
suficiente para seu teste
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento
Por isso o stall s´o ocorre a partir
desse est´agio, impedindo os efeitos
da instru¸c˜ao que sai de ID/EX
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
Conflitos de Dados
Pipeline Stalls
Nosso exemplo ent˜ao fica
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
Conflitos de Dados
Pipeline Stalls
Nosso exemplo ent˜ao fica
Fonte: [1]
Ao detectar o lw, o controle
de conflitos gera um stall,
transformando o and em nop
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
Conflitos de Dados
Pipeline Stalls
Nosso exemplo ent˜ao fica
Fonte: [1]
A detec¸c˜ao ocorre apenas em
EX, onde a bolha ´e inserida
no pr´oximo ciclo do clock
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
Conflitos de Dados
Pipeline Stalls
Nosso exemplo ent˜ao fica
Fonte: [1]
Nesse momento, contudo,
and e or j´a estavam na
pipeline, ficando “presos”
em seus est´agios (ciclo 4)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
Conflitos de Dados
Pipeline Stalls
Nosso exemplo ent˜ao fica
Fonte: [1]
Sendo for¸cados a re-
petir o que fizeram
no ciclo 3 do clock
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
Conflitos de Dados
Pipeline Stalls
Nosso exemplo ent˜ao fica
Fonte: [1]
Como resultado, and e
or tiveram seu tempo de
pipeline “esticado”, enquanto
que as demais instru¸c˜oes
foram atrasadas em um ciclo
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
Conflitos de Dados
Pipeline Stalls
Nosso exemplo ent˜ao fica
Fonte: [1]
Ap´os a inser¸c˜ao da bolha,
todas as dependˆencias
se d˜ao para frente no
tempo, sendo ent˜ao tra-
tadas pelo forwarding
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
Conflitos de Controle
Branches
Considere o seguinte c´odigo na pipeline:
Fonte: Adaptado de [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 12 / 36
Conflitos de Controle
Branches
Considere o seguinte c´odigo na pipeline:
Fonte: Adaptado de [1]
Lembre que o c´alculo do
endere¸co de branch ´e (PC
+ 4) + 4×deslocamento
((40 + 4) + 4 × 7 = 72)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 12 / 36
Conflitos de Controle
Branches
Considere o seguinte c´odigo na pipeline:
Fonte: Adaptado de [1]
O problema ´e que, na
ausˆencia de hardware extra
para reduzir o tempo desse
conflito, s´o no ciclo 4 sabe-
remos se o branch ocorrer´a
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 12 / 36
Conflitos de Controle
Branches
Considere o seguinte c´odigo na pipeline:
Fonte: Adaptado de [1]
Quando outras 3 ins-
tru¸c˜oes j´a est˜ao na pipeline
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 12 / 36
Conflitos de Controle
Branches
Infelizmente, n˜ao h´a um equivalente ao forwarding
para conflitos de controle
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 13 / 36
Conflitos de Controle
Branches
Infelizmente, n˜ao h´a um equivalente ao forwarding
para conflitos de controle
Que fazer ent˜ao?
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 13 / 36
Conflitos de Controle
Branches
Infelizmente, n˜ao h´a um equivalente ao forwarding
para conflitos de controle
Que fazer ent˜ao?
Assumir que o branch n˜ao ocorrer´a
Reduzir o atraso de branches
Predi¸c˜ao dinˆamica de branches
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 13 / 36
Conflitos de Controle
Branches: Assumindo que o branch n˜ao ocorrer´a
Continuamos a execu¸c˜ao, supondo que o branch
n˜ao ocorrer´a
Se ele ocorrer, precisamos descartar as instru¸c˜oes
processadas indevidamente
A execu¸c˜ao continua ent˜ao no alvo do branch
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 14 / 36
Conflitos de Controle
Branches: Assumindo que o branch n˜ao ocorrer´a
Continuamos a execu¸c˜ao, supondo que o branch
n˜ao ocorrer´a
Se ele ocorrer, precisamos descartar as instru¸c˜oes
processadas indevidamente
A execu¸c˜ao continua ent˜ao no alvo do branch
E como descartar uma instru¸c˜ao?
Mudando seus valores de controle para 0s (como num stall),
nos est´agios IF, ID e EX, quando o branch chegar a MEM
Processo conhecido como descarga (flush)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 14 / 36
Conflitos de Controle
Branches: Reduzindo o atraso de branches
Movemos o tratamento de branches para antes de
MEM
Assim menos instru¸c˜oes precisam ser removidas
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 15 / 36
Conflitos de Controle
Branches: Reduzindo o atraso de branches
Movemos o tratamento de branches para antes de
MEM
Assim menos instru¸c˜oes precisam ser removidas
Fazemos isso apenas para testes simples, que n˜ao
necessitam de uma ALU completa
Como testes de igualdade e sinal, por exemplo
Bastante comuns em c´odigo
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 15 / 36
Conflitos de Controle
Branches: Reduzindo o atraso de branches
Movemos o tratamento de branches para antes de
MEM
Assim menos instru¸c˜oes precisam ser removidas
Fazemos isso apenas para testes simples, que n˜ao
necessitam de uma ALU completa
Como testes de igualdade e sinal, por exemplo
Bastante comuns em c´odigo
Se testes mais complexos s˜ao necess´arios, usamos
uma instru¸c˜ao separada, para uso da ALU
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 15 / 36
Conflitos de Controle
Branches: Reduzindo o atraso de branches
Para isso,
adiantamos o c´alculo
o endere¸co-alvo do
branch
F´acil, pois temos o PC
e o campo imediato da
instru¸c˜ao no
registrador IF/ID
Ent˜ao podemos mover Fonte: [1]
o c´alculo do endere¸co de EX para ID
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 16 / 36
Conflitos de Controle
Branches: Reduzindo o atraso de branches
O problema ´e definir
se haver´a ou n˜ao o
branch
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 17 / 36
Conflitos de Controle
Branches: Reduzindo o atraso de branches
O problema ´e definir
se haver´a ou n˜ao o
branch
Mover esse teste
para ID implica mais
hardware para
detec¸c˜ao de conflitos
e forwarding
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 17 / 36
Conflitos de Controle
Branches: Reduzindo o atraso de branches
Uma vez que o
branch pode
depender do
resultado de uma
instru¸c˜ao ainda na
pipeline
Como no caso de
conflitos de dados
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 18 / 36
Conflitos de Controle
Branches: Reduzindo o atraso de branches
Uma vez que o
branch pode
depender do
resultado de uma
instru¸c˜ao ainda na
pipeline
Como no caso de
conflitos de dados
Ainda assim, vale Fonte: [1]
Pois reduz o custo de um branch para apenas 1 instru¸c˜ao,
caso este ocorra
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 18 / 36
Conflitos de Controle
Branches: Datapath
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 19 / 36
Conflitos de Controle
Branches: Datapath
Fonte: [1]
Movemos o hardware
de detec¸c˜ao de
branch para ID
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 19 / 36
Conflitos de Controle
Branches: Datapath
Fonte: [1]
Para dar um flush em
IF, usamos o sinal
IF.Flush, que zera a
instru¸c˜ao em IF/ID,
transformando-
a em um nop
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 19 / 36
Conflitos de Controle
Branches: Exemplo
Considere a seguinte sequˆencia de instru¸c˜oes:
36 sub $10, $4, $8
40 beq $1, $3, 7
44 and $12, $2, $5
48 or $13, $2, $6
52 add $14, $4, $2
56 slt $15, $6, $7
. . .
72 lw $4, 50($7)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 20 / 36
Conflitos de Controle
Branches: Exemplo
O que acon-
tece quando o
branch ´e seguido?
Considere a seguinte sequˆencia de instru¸c˜oes:
36 sub $10, $4, $8
40 beq $1, $3, 7
44 and $12, $2, $5
48 or $13, $2, $6
52 add $14, $4, $2
56 slt $15, $6, $7
. . .
72 lw $4, 50($7)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 20 / 36
Conflitos de Controle
Branches: Exemplo
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 21 / 36
Conflitos de Controle
Branches: Exemplo
Fonte: [1]
No 3o ciclo, o branch
´e determinado em ID,
72 ´e definido como
novo PC e IF.Flush=1
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 21 / 36
Conflitos de Controle
Branches: Exemplo
Fonte: [1]
A instru¸c˜ao em
72 ´e buscada, en-
quanto que a bolha
viaja pela pipeline
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 21 / 36
Conflitos de Controle
Branches: Exemplo
Fonte: [1]
Com esse es-
quema, uma ´unica
bolha ´e inserida
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 21 / 36
Conflitos de Controle
Branches: Predizendo branches dinamicamente
Com hardware adicional, podemos prever o
comportamento de branches durante a execu¸c˜ao
Podemos, por exemplo, verificar se da ´ultima vez que o
endere¸co da instru¸c˜ao foi executado, ocorreu um branch
Se tiver ocorrido, podemos come¸car buscando instru¸c˜oes do
mesmo lugar do ´ultimo branch
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 22 / 36
Conflitos de Controle
Branches: Predizendo branches dinamicamente
Com hardware adicional, podemos prever o
comportamento de branches durante a execu¸c˜ao
Podemos, por exemplo, verificar se da ´ultima vez que o
endere¸co da instru¸c˜ao foi executado, ocorreu um branch
Se tiver ocorrido, podemos come¸car buscando instru¸c˜oes do
mesmo lugar do ´ultimo branch
Usamos para isso um buffer de predi¸c˜ao de branch
Uma mem´oria, em ID, indexada por parte do endere¸co da
instru¸c˜ao, contendo um bit dizendo se houve ou n˜ao branch
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 22 / 36
Conflitos de Controle
Branches: Predizendo branches dinamicamente
Isso, naturalmente, ´e um “chute”
Nada garante que o comportamento ocorrer´a
Se n˜ao ocorrer, basta dar um flush na instru¸c˜ao
incorretamente carregada, e inverter o bit de predi¸c˜ao no
buffer
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 23 / 36
Conflitos de Controle
Branches: Predizendo branches dinamicamente
Isso, naturalmente, ´e um “chute”
Nada garante que o comportamento ocorrer´a
Se n˜ao ocorrer, basta dar um flush na instru¸c˜ao
incorretamente carregada, e inverter o bit de predi¸c˜ao no
buffer
Frequentemente s˜ao usados 2 bits em vez de 1
Exigindo 2 erros antes da mudan¸ca dos bits
E acomodando assim as varia¸c˜oes de comportamento na
entrada e sa´ıda de la¸cos
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 23 / 36
Conflitos de Controle
Exce¸c˜oes
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 24 / 36
Interrup¸c˜oes e Exce¸c˜oes
Defini¸c˜ao
Exce¸c˜ao
Um evento n˜ao programado que interrompe a execu¸c˜ao do
programa (Ex: instru¸c˜ao inv´alida e overflow em opera¸c˜oes
aritm´eticas)
Interrup¸c˜ao
Uma exce¸c˜ao vinda de fora do processador (Ex: E/S)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 25 / 36
Interrup¸c˜oes e Exce¸c˜oes
Defini¸c˜ao
Exce¸c˜ao
Um evento n˜ao programado que interrompe a execu¸c˜ao do
programa (Ex: instru¸c˜ao inv´alida e overflow em opera¸c˜oes
aritm´eticas)
Interrup¸c˜ao
Uma exce¸c˜ao vinda de fora do processador (Ex: E/S)
Algumas arquiteturas adotam o nome “interrup¸c˜ao”
para ambas
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 25 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Suponha um overflow em add $1, $2, $1. O que
fazer?
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Suponha um overflow em add $1, $2, $1. O que
fazer?
O processador salva o endere¸co da instru¸c˜ao problem´atica no
EPC (exception program counter)
De fato, salva seu PC+4
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Suponha um overflow em add $1, $2, $1. O que
fazer?
O processador salva o endere¸co da instru¸c˜ao problem´atica no
EPC (exception program counter)
De fato, salva seu PC+4
Ele ent˜ao transfere o controle ao sistema operacional, em
algum endere¸co espec´ıfico
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Suponha um overflow em add $1, $2, $1. O que
fazer?
O processador salva o endere¸co da instru¸c˜ao problem´atica no
EPC (exception program counter)
De fato, salva seu PC+4
Ele ent˜ao transfere o controle ao sistema operacional, em
algum endere¸co espec´ıfico
O S.O. ent˜ao executa a a¸c˜ao apropriada
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Suponha um overflow em add $1, $2, $1. O que
fazer?
O processador salva o endere¸co da instru¸c˜ao problem´atica no
EPC (exception program counter)
De fato, salva seu PC+4
Ele ent˜ao transfere o controle ao sistema operacional, em
algum endere¸co espec´ıfico
O S.O. ent˜ao executa a a¸c˜ao apropriada
Se resolver n˜ao matar o programa, o S.O. pode usar o EPC
para continuar sua execu¸c˜ao
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Mas saber que instru¸c˜ao causou a exce¸c˜ao n˜ao ´e
suficiente
O S.O. tamb´em precisa saber sua raz˜ao
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 27 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Mas saber que instru¸c˜ao causou a exce¸c˜ao n˜ao ´e
suficiente
O S.O. tamb´em precisa saber sua raz˜ao
Algumas arquiteturas usam um arranjo de
interrup¸c˜oes
Um arranjo, indexado pela causa, contendo o endere¸co em
RAM de onde deve estar a rotina de tratamento:
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 27 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
MIPS usa um ´unico ponto de entrada para todas as
exce¸c˜oes
Endere¸co de mem´oria fixo (0x8000 0180), onde deve ser
colocado (pelo S.O.) o c´odigo geral para o tratamento das
exce¸c˜oes
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 28 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
MIPS usa um ´unico ponto de entrada para todas as
exce¸c˜oes
Endere¸co de mem´oria fixo (0x8000 0180), onde deve ser
colocado (pelo S.O.) o c´odigo geral para o tratamento das
exce¸c˜oes
A causa da exce¸c˜ao ´e armazenada em um registrador de
status chamado Registrador de Causa (Cause Register)
Usado pelo S.O. para ativar a rotina de tratamento apropriada
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 28 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Temos o EPC, guar-
dando o endere¸co da ins-
tru¸c˜ao problem´atica (+4)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
E o registrador de Causa,
guardando a raz˜ao da exce¸c˜ao
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Al´em do endere¸co onde
deve estar a rotina de trata-
mento, no caso de exce¸c˜ao
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Exce¸c˜oes s˜ao trata-
das como uma forma
de conflito de controle
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Ent˜ao linhas de con-
trole s˜ao criadas, para
flushes em IF, ID e EX
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Lembre que EX ´e o
est´agio em que o over-
flow ´e detectado na ALU
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Embora n˜ao seja mostrado,
a ALU envia um sinal de
overflow como entrada
para a unidade de controle
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Note que flush em IF j´a
estava implementado
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
E usamos o mesmo mecanismo
de stalls para o flush em IF
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
O ´unico sinal realmente novo
´e o de flush em EX, tamb´em
para zerar as linhas de controle
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Muitas exce¸c˜oes exigem que
completemos a instru¸c˜ao ap´os
seu tratamento (Ex: E/S)
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
Fonte: [1]
Para isso, podemos fazer um
flush na instru¸c˜ao e inici´a-la
novamente ao fim da exce¸c˜ao
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
Considere a sequˆencia de instru¸c˜oes:
Endere¸co Instru¸c˜ao
0x40 sub $11, $2, $4
0x44 and $12, $2, $5
0x48 or $13, $2, $6
0x4C add $1, $2, $1
0x50 slt $15, $6, $7
0x54 lw $16, 50($7)
. . .
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 30 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
O que acontece
em caso de over-
flow em add?
Considere a sequˆencia de instru¸c˜oes:
Endere¸co Instru¸c˜ao
0x40 sub $11, $2, $4
0x44 and $12, $2, $5
0x48 or $13, $2, $6
0x4C add $1, $2, $1
0x50 slt $15, $6, $7
0x54 lw $16, 50($7)
. . .
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 30 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
Fonte: [1]
O overflow ´e detectado em
EX e o endere¸co da instru¸c˜ao
seguinte a add ´e salvo em EPC
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
Fonte: [1]
O sinal de overflow (n˜ao mos-
trado) ´e enviado ao controle,
que liga todos os sinais de flush
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
Fonte: [1]
Isso ocorre pr´oximo ao
fim desse ciclo de clock
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
Fonte: [1]
Os sinais de flush trans-
forma as instru¸c˜oes a
partir de add em bolhas
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
Fonte: [1]
Fazendo tamb´em com
que a instru¸c˜ao em
0x8000 0180 seja buscada
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
Fonte: [1]
Onde espera-se que o S.O.
tenha colocado o c´odigo
de tratamento de exce¸c˜oes
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: Exemplo
Fonte: [1]
Vale notar que as ins-
tru¸c˜oes anteriores ao add
(and e or) completaram
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes
M´ultiplas exce¸c˜oes podem ocorrer no mesmo ciclo
de clock
Caso em que devem ser priorizadas
Em muitas implementa¸c˜oes, s˜ao ordenadas de modo a
interromper a instru¸c˜ao mais antiga na pipeline
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 32 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes
M´ultiplas exce¸c˜oes podem ocorrer no mesmo ciclo
de clock
Caso em que devem ser priorizadas
Em muitas implementa¸c˜oes, s˜ao ordenadas de modo a
interromper a instru¸c˜ao mais antiga na pipeline
Interrup¸c˜oes (E/S) tem a vantagem de n˜ao serem
associadas a instru¸c˜oes espec´ıficas
Temos mais flexibilidade com rela¸c˜ao a quando interromper,
e podemos usar os mesmos mecanismos das exce¸c˜oes
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 32 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes
No caso de m´ultiplas exce¸c˜oes, nada muda com o
EPC
Ele ainda mant´em o endere¸co da instru¸c˜ao seguinte `a
interrompida
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 33 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes
No caso de m´ultiplas exce¸c˜oes, nada muda com o
EPC
Ele ainda mant´em o endere¸co da instru¸c˜ao seguinte `a
interrompida
O registrador de causa, contudo, registra todas as
interrup¸c˜oes em um mesmo ciclo de clock
Fazendo com que a rotina de tratamento tenha que casar
cada exce¸c˜ao `a sua instru¸c˜ao correspondente
Para isso, ajuda saber em que est´agio da pipeline cada
exce¸c˜ao pode ocorrer
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 33 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes
As exce¸c˜oes s˜ao mantidas no registrador de causa
em um campo de exce¸c˜oes pendentes
Assim o hardware pode interromper a pipeline com base nas
exce¸c˜oes ainda n˜ao tratadas, quando terminar o tratamento
de alguma
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 34 / 36
Interrup¸c˜oes e Exce¸c˜oes
Exce¸c˜oes em MIPS
´E importante que o hardware e o S.O. trabalhem em
conjunto
O hardware deve parar a instru¸c˜ao problem´atica; completar
as anteriores; dar um flush nas posteriores; carregar o
registrador de causa com a causa da exce¸c˜ao; carregar o EPC
com o endere¸co da instru¸c˜ao seguinte `a problem´atica; e
desviar para um endere¸co de mem´oria pr´e-definido
O S.O. deve olhar a causa da exce¸c˜ao e agir
apropriadamente, armazenando o c´odigo para seu
tratamento no endere¸co de mem´oria definido pelo hardware
Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 35 / 36
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) 24 de outubro de 2019 36 / 36

Mais conteúdo relacionado

Mais de Norton Trevisan Roman

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05Norton 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

ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptNathaliaFreitas32
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxJustinoTeixeira1
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaCentro Jacques Delors
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubeladrianaguedesbatista
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfLidianeLill2
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...azulassessoria9
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docPauloHenriqueGarciaM
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 

Último (20)

ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 

(ACH2055) Arquitetura de Computadores - Aula 08

  • 1. Arquitetura de Computadores ACH2055 Aula 08 – Conflitos de Pipeline e Exce¸c˜oes Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 1 / 36
  • 2. Conflitos de Dados Forwarding Fonte: Adaptado de [1] Voltemos ao exem- plo da aula passada Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
  • 3. Conflitos de Dados Forwarding Fonte: Adaptado de [1] Nele, o problema era que o valor necess´ario no 2o est´agio do and sa´ıa do 5o est´agio de sub Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
  • 4. Conflitos de Dados Forwarding Fonte: Adaptado de [1] Esse valor, no entanto, j´a est´a dispon´ıvel ao final do 3o est´agio de sub Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
  • 5. Conflitos de Dados Forwarding Fonte: Adaptado de [1] Sendo realmente ne- cess´ario somente no in´ıcio do 3o est´agio de and e or Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
  • 6. Conflitos de Dados Forwarding Fonte: Adaptado de [1] Evitamos ent˜ao o pro- blema simplesmente en- viando o dado para quem precisa assim que ele esti- ver dispon´ıvel (forwarding) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
  • 7. Conflitos de Dados Forwarding Fonte: Adaptado de [1] Note que o forwarding foi feito ao final do 3o est´agio e refeito ao final do 4o est´agio, eliminando assim 2 stalls Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 2 / 36
  • 8. Conflitos de Dados Forwarding Sob que condi¸c˜oes forwarding deve ocorrer? Tipo-R: op rs rt rd shamt funct Fonte: Adaptado de [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
  • 9. Conflitos de Dados Forwarding Sob que condi¸c˜oes forwarding deve ocorrer? Tipo-R: op rs rt rd shamt funct Fonte: Adaptado de [1] rs ou rt em ID/EX = rd em EX/MEM A instru¸c˜ao que sai de EX ir´a armazenar o resultado da ALU em uma entrada da ALU da instru¸c˜ao seguinte Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
  • 10. Conflitos de Dados Forwarding Sob que condi¸c˜oes forwarding deve ocorrer? Tipo-R: op rs rt rd shamt funct Fonte: Adaptado de [1] rs ou rt em ID/EX = rd em EX/MEM Ou seja, o resultado de uma instru¸c˜ao ´e usado diretamente pela ALU da instru¸c˜ao seguinte Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
  • 11. Conflitos de Dados Forwarding Sob que condi¸c˜oes forwarding deve ocorrer? Tipo-R: op rs rt rd shamt funct Fonte: Adaptado de [1] rs ou rt em ID/EX = rd em EX/MEM Mas somente se a instru¸c˜ao em EX/MEM for realmente escrever no registrador (caso em que seu RegWrite = 1) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
  • 12. Conflitos de Dados Forwarding Sob que condi¸c˜oes forwarding deve ocorrer? Tipo-R: op rs rt rd shamt funct Fonte: Adaptado de [1] rs ou rt em ID/EX = rd em MEM/WB A instru¸c˜ao que sai de MEM ir´a armazenar o valor lido em uma entrada da ALU da instru¸c˜ao que sai de ID Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
  • 13. Conflitos de Dados Forwarding Sob que condi¸c˜oes forwarding deve ocorrer? Tipo-R: op rs rt rd shamt funct Fonte: Adaptado de [1] rs ou rt em ID/EX = rd em MEM/WB Novamente, somente se a instru¸c˜ao em MEM/WB for realmente escrever no registrador (seu RegWrite = 1) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 3 / 36
  • 14. Conflitos de Dados Forwarding Sob que condi¸c˜oes forwarding deve ocorrer? Tipo-R: op rs rt rd shamt funct Fonte: Adaptado de [1] Isso, contudo, n˜ao impede forwarding no caso de tentativas de escrita em $s0 (rd = $s0) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 4 / 36
  • 15. Conflitos de Dados Forwarding Sob que condi¸c˜oes forwarding deve ocorrer? Tipo-R: op rs rt rd shamt funct Fonte: Adaptado de [1] Isso, contudo, n˜ao impede forwarding no caso de tentativas de escrita em $s0 (rd = $s0) Devemos ent˜ao adicionar essa condi¸c˜ao Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 4 / 36
  • 16. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 17. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] Se (EX/MEM.RegWrite e (EX/MEM.Rd = 0) e (EX/MEM.Rd = ID/EX.Rs)) ForwardA = 10 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 18. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] ForwardA = 10: O pri- meiro operando da ALU vem da sa´ıda anterior da ALU Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 19. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] Se (EX/MEM.RegWrite e (EX/MEM.Rd = 0) e (EX/MEM.Rd = ID/EX.Rt)) ForwardB = 10 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 20. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] ForwardB = 10: O se- gundo operando da ALU vem da sa´ıda anterior da ALU Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 21. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] Se (MEM/WB.RegWrite e (MEM/WB.Rd = 0) e (MEM/WB.Rd = ID/EX.Rs)) ForwardA = 01 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 22. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] ForwardA = 01: O pri- meiro operando da ALU vem da mem´oria ou de um resultado anterior da ALU Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 23. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] Se (MEM/WB.RegWrite e (MEM/WB.Rd = 0) e (MEM/WB.Rd = ID/EX.Rt)) ForwardB = 01 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 24. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] ForwardB = 01: O se- gundo operando da ALU vem da mem´oria ou de um resultado anterior da ALU Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 25. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] O controle de forwarding est´a no est´agio EX porque ´e onde est˜ao os MUXes da ALU Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 26. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] Al´em dos registradores necess´arios para a tomada de decis˜ao (sobre fazer ou n˜ao o forwarding) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 27. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Fonte: Adaptado de [1] N˜ao h´a conflitos em WB porque os registradores podem ser escritos e lidos no mesmo ciclo de clock Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 5 / 36
  • 28. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Estamos livres de problemas? Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
  • 29. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Estamos livres de problemas? Considere o seguinte c´odigo: add $1, $1, $2 add $1, $1, $3 add $1, $1, $4 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
  • 30. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle De onde vir´a esse valor? (add RD, RS, RT) Estamos livres de problemas? Considere o seguinte c´odigo: add $1, $1, $2 add $1, $1, $3 add $1, $1, $4 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
  • 31. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle De onde vir´a esse valor? (add RD, RS, RT) Se (MEM/WB.RegWrite e (MEM/WB.Rd = 0) e (MEM/WB.Rd = ID/EX.Rs)) ForwardA = 01 Estamos livres de problemas? Considere o seguinte c´odigo: add $1, $1, $2 add $1, $1, $3 add $1, $1, $4 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
  • 32. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle De onde vir´a esse valor? (add RD, RS, RT) Se (MEM/WB.RegWrite e (MEM/WB.Rd = 0) e (MEM/WB.Rd = ID/EX.Rs)) ForwardA = 01 Se (EX/MEM.RegWrite e (EX/MEM.Rd = 0) e (EX/MEM.Rd = ID/EX.Rs)) ForwardA = 10 Estamos livres de problemas? Considere o seguinte c´odigo: add $1, $1, $2 add $1, $1, $3 add $1, $1, $4 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
  • 33. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle OPS! Dos 2 est´agios seguintes... Se (MEM/WB.RegWrite e (MEM/WB.Rd = 0) e (MEM/WB.Rd = ID/EX.Rs)) ForwardA = 01 Se (EX/MEM.RegWrite e (EX/MEM.Rd = 0) e (EX/MEM.Rd = ID/EX.Rs)) ForwardA = 10 Estamos livres de problemas? Considere o seguinte c´odigo: add $1, $1, $2 add $1, $1, $3 add $1, $1, $4 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 6 / 36
  • 34. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Que fazer ent˜ao? Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 7 / 36
  • 35. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Que fazer ent˜ao? Fazer com que valha o mais novo: Fonte: Adaptado de [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 7 / 36
  • 36. Conflitos de Dados Forwarding Unit: Condi¸c˜oes de Controle Que fazer ent˜ao? Fazer com que valha o mais novo: Fonte: Adaptado de [1] Somente far´a forwarding de WB se este n˜ao for acontecer em MEM Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 7 / 36
  • 37. Conflitos de Dados Pipeline Stalls Vimos na aula passada que forwarding n˜ao evita todo problema Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 8 / 36
  • 38. Conflitos de Dados Pipeline Stalls Vimos na aula passada que forwarding n˜ao evita todo problema Como quando uma instru¸c˜ao lˆe um registrador em seguida a um lw para esse mesmo registrador Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 8 / 36
  • 39. Conflitos de Dados Pipeline Stalls Vimos na aula passada que forwarding n˜ao evita todo problema Como quando uma instru¸c˜ao lˆe um registrador em seguida a um lw para esse mesmo registrador Fonte: [1] Forwarding n˜ao ajuda, pela dependˆencia voltar no tempo Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 8 / 36
  • 40. Conflitos de Dados Pipeline Stalls Nesses casos nos resta apenas parar a pipeline at´e o conflito ser resolvido Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 9 / 36
  • 41. Conflitos de Dados Pipeline Stalls Nesses casos nos resta apenas parar a pipeline at´e o conflito ser resolvido E para isso, precisamos de uma unidade de detec¸c˜ao de conflitos (Hazard Detection Unit) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 9 / 36
  • 42. Conflitos de Dados Pipeline Stalls Nesses casos nos resta apenas parar a pipeline at´e o conflito ser resolvido E para isso, precisamos de uma unidade de detec¸c˜ao de conflitos (Hazard Detection Unit) Posicionada em ID, para que ela possa introduzir a parada Fonte: [1] entre a carga e o uso de uma instru¸c˜ao Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 9 / 36
  • 43. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 44. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Se (ID/EX.MemRead e ((ID/EX.Rt = IF/ID.Rs) ou (ID/EX.Rt = IF/ID.Rt))) pare a pipeline Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 45. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Fazemos isso impedindo que PC e IF/ID sejam modificados Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 46. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Isso faz com que a instru¸c˜ao no est´agio IF continue a ser lida com o mesmo PC Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 47. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento O mesmo ocorre com a instru¸c˜ao em ID, usando os valores de IF/ID Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 48. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Al´em disso, os sinais de controle s˜ao desativados (zerados) em ID Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 49. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Criando uma instru¸c˜ao sem efeito (que n˜ao gera mudan¸cas de estado) → um nop Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 50. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Instru¸c˜ao esta que ´e propagada pela pipeline a cada ciclo do clock Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 51. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Sem causar escrita em registradores ou na mem´oria Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 52. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Note que o atraso dura um ´unico ciclo do clock Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 53. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Ap´os isso o forwarding pode lidar com o problema Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 54. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Note tamb´em que somente quando lw est´a em EX que h´a informa¸c˜ao suficiente para seu teste Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 55. Conflitos de Dados Pipeline Stalls Fonte: Adaptado de [1] Tipo-I: op rs rt deslocamento Por isso o stall s´o ocorre a partir desse est´agio, impedindo os efeitos da instru¸c˜ao que sai de ID/EX Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 10 / 36
  • 56. Conflitos de Dados Pipeline Stalls Nosso exemplo ent˜ao fica Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
  • 57. Conflitos de Dados Pipeline Stalls Nosso exemplo ent˜ao fica Fonte: [1] Ao detectar o lw, o controle de conflitos gera um stall, transformando o and em nop Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
  • 58. Conflitos de Dados Pipeline Stalls Nosso exemplo ent˜ao fica Fonte: [1] A detec¸c˜ao ocorre apenas em EX, onde a bolha ´e inserida no pr´oximo ciclo do clock Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
  • 59. Conflitos de Dados Pipeline Stalls Nosso exemplo ent˜ao fica Fonte: [1] Nesse momento, contudo, and e or j´a estavam na pipeline, ficando “presos” em seus est´agios (ciclo 4) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
  • 60. Conflitos de Dados Pipeline Stalls Nosso exemplo ent˜ao fica Fonte: [1] Sendo for¸cados a re- petir o que fizeram no ciclo 3 do clock Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
  • 61. Conflitos de Dados Pipeline Stalls Nosso exemplo ent˜ao fica Fonte: [1] Como resultado, and e or tiveram seu tempo de pipeline “esticado”, enquanto que as demais instru¸c˜oes foram atrasadas em um ciclo Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
  • 62. Conflitos de Dados Pipeline Stalls Nosso exemplo ent˜ao fica Fonte: [1] Ap´os a inser¸c˜ao da bolha, todas as dependˆencias se d˜ao para frente no tempo, sendo ent˜ao tra- tadas pelo forwarding Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 11 / 36
  • 63. Conflitos de Controle Branches Considere o seguinte c´odigo na pipeline: Fonte: Adaptado de [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 12 / 36
  • 64. Conflitos de Controle Branches Considere o seguinte c´odigo na pipeline: Fonte: Adaptado de [1] Lembre que o c´alculo do endere¸co de branch ´e (PC + 4) + 4×deslocamento ((40 + 4) + 4 × 7 = 72) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 12 / 36
  • 65. Conflitos de Controle Branches Considere o seguinte c´odigo na pipeline: Fonte: Adaptado de [1] O problema ´e que, na ausˆencia de hardware extra para reduzir o tempo desse conflito, s´o no ciclo 4 sabe- remos se o branch ocorrer´a Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 12 / 36
  • 66. Conflitos de Controle Branches Considere o seguinte c´odigo na pipeline: Fonte: Adaptado de [1] Quando outras 3 ins- tru¸c˜oes j´a est˜ao na pipeline Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 12 / 36
  • 67. Conflitos de Controle Branches Infelizmente, n˜ao h´a um equivalente ao forwarding para conflitos de controle Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 13 / 36
  • 68. Conflitos de Controle Branches Infelizmente, n˜ao h´a um equivalente ao forwarding para conflitos de controle Que fazer ent˜ao? Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 13 / 36
  • 69. Conflitos de Controle Branches Infelizmente, n˜ao h´a um equivalente ao forwarding para conflitos de controle Que fazer ent˜ao? Assumir que o branch n˜ao ocorrer´a Reduzir o atraso de branches Predi¸c˜ao dinˆamica de branches Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 13 / 36
  • 70. Conflitos de Controle Branches: Assumindo que o branch n˜ao ocorrer´a Continuamos a execu¸c˜ao, supondo que o branch n˜ao ocorrer´a Se ele ocorrer, precisamos descartar as instru¸c˜oes processadas indevidamente A execu¸c˜ao continua ent˜ao no alvo do branch Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 14 / 36
  • 71. Conflitos de Controle Branches: Assumindo que o branch n˜ao ocorrer´a Continuamos a execu¸c˜ao, supondo que o branch n˜ao ocorrer´a Se ele ocorrer, precisamos descartar as instru¸c˜oes processadas indevidamente A execu¸c˜ao continua ent˜ao no alvo do branch E como descartar uma instru¸c˜ao? Mudando seus valores de controle para 0s (como num stall), nos est´agios IF, ID e EX, quando o branch chegar a MEM Processo conhecido como descarga (flush) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 14 / 36
  • 72. Conflitos de Controle Branches: Reduzindo o atraso de branches Movemos o tratamento de branches para antes de MEM Assim menos instru¸c˜oes precisam ser removidas Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 15 / 36
  • 73. Conflitos de Controle Branches: Reduzindo o atraso de branches Movemos o tratamento de branches para antes de MEM Assim menos instru¸c˜oes precisam ser removidas Fazemos isso apenas para testes simples, que n˜ao necessitam de uma ALU completa Como testes de igualdade e sinal, por exemplo Bastante comuns em c´odigo Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 15 / 36
  • 74. Conflitos de Controle Branches: Reduzindo o atraso de branches Movemos o tratamento de branches para antes de MEM Assim menos instru¸c˜oes precisam ser removidas Fazemos isso apenas para testes simples, que n˜ao necessitam de uma ALU completa Como testes de igualdade e sinal, por exemplo Bastante comuns em c´odigo Se testes mais complexos s˜ao necess´arios, usamos uma instru¸c˜ao separada, para uso da ALU Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 15 / 36
  • 75. Conflitos de Controle Branches: Reduzindo o atraso de branches Para isso, adiantamos o c´alculo o endere¸co-alvo do branch F´acil, pois temos o PC e o campo imediato da instru¸c˜ao no registrador IF/ID Ent˜ao podemos mover Fonte: [1] o c´alculo do endere¸co de EX para ID Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 16 / 36
  • 76. Conflitos de Controle Branches: Reduzindo o atraso de branches O problema ´e definir se haver´a ou n˜ao o branch Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 17 / 36
  • 77. Conflitos de Controle Branches: Reduzindo o atraso de branches O problema ´e definir se haver´a ou n˜ao o branch Mover esse teste para ID implica mais hardware para detec¸c˜ao de conflitos e forwarding Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 17 / 36
  • 78. Conflitos de Controle Branches: Reduzindo o atraso de branches Uma vez que o branch pode depender do resultado de uma instru¸c˜ao ainda na pipeline Como no caso de conflitos de dados Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 18 / 36
  • 79. Conflitos de Controle Branches: Reduzindo o atraso de branches Uma vez que o branch pode depender do resultado de uma instru¸c˜ao ainda na pipeline Como no caso de conflitos de dados Ainda assim, vale Fonte: [1] Pois reduz o custo de um branch para apenas 1 instru¸c˜ao, caso este ocorra Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 18 / 36
  • 80. Conflitos de Controle Branches: Datapath Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 19 / 36
  • 81. Conflitos de Controle Branches: Datapath Fonte: [1] Movemos o hardware de detec¸c˜ao de branch para ID Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 19 / 36
  • 82. Conflitos de Controle Branches: Datapath Fonte: [1] Para dar um flush em IF, usamos o sinal IF.Flush, que zera a instru¸c˜ao em IF/ID, transformando- a em um nop Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 19 / 36
  • 83. Conflitos de Controle Branches: Exemplo Considere a seguinte sequˆencia de instru¸c˜oes: 36 sub $10, $4, $8 40 beq $1, $3, 7 44 and $12, $2, $5 48 or $13, $2, $6 52 add $14, $4, $2 56 slt $15, $6, $7 . . . 72 lw $4, 50($7) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 20 / 36
  • 84. Conflitos de Controle Branches: Exemplo O que acon- tece quando o branch ´e seguido? Considere a seguinte sequˆencia de instru¸c˜oes: 36 sub $10, $4, $8 40 beq $1, $3, 7 44 and $12, $2, $5 48 or $13, $2, $6 52 add $14, $4, $2 56 slt $15, $6, $7 . . . 72 lw $4, 50($7) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 20 / 36
  • 85. Conflitos de Controle Branches: Exemplo Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 21 / 36
  • 86. Conflitos de Controle Branches: Exemplo Fonte: [1] No 3o ciclo, o branch ´e determinado em ID, 72 ´e definido como novo PC e IF.Flush=1 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 21 / 36
  • 87. Conflitos de Controle Branches: Exemplo Fonte: [1] A instru¸c˜ao em 72 ´e buscada, en- quanto que a bolha viaja pela pipeline Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 21 / 36
  • 88. Conflitos de Controle Branches: Exemplo Fonte: [1] Com esse es- quema, uma ´unica bolha ´e inserida Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 21 / 36
  • 89. Conflitos de Controle Branches: Predizendo branches dinamicamente Com hardware adicional, podemos prever o comportamento de branches durante a execu¸c˜ao Podemos, por exemplo, verificar se da ´ultima vez que o endere¸co da instru¸c˜ao foi executado, ocorreu um branch Se tiver ocorrido, podemos come¸car buscando instru¸c˜oes do mesmo lugar do ´ultimo branch Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 22 / 36
  • 90. Conflitos de Controle Branches: Predizendo branches dinamicamente Com hardware adicional, podemos prever o comportamento de branches durante a execu¸c˜ao Podemos, por exemplo, verificar se da ´ultima vez que o endere¸co da instru¸c˜ao foi executado, ocorreu um branch Se tiver ocorrido, podemos come¸car buscando instru¸c˜oes do mesmo lugar do ´ultimo branch Usamos para isso um buffer de predi¸c˜ao de branch Uma mem´oria, em ID, indexada por parte do endere¸co da instru¸c˜ao, contendo um bit dizendo se houve ou n˜ao branch Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 22 / 36
  • 91. Conflitos de Controle Branches: Predizendo branches dinamicamente Isso, naturalmente, ´e um “chute” Nada garante que o comportamento ocorrer´a Se n˜ao ocorrer, basta dar um flush na instru¸c˜ao incorretamente carregada, e inverter o bit de predi¸c˜ao no buffer Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 23 / 36
  • 92. Conflitos de Controle Branches: Predizendo branches dinamicamente Isso, naturalmente, ´e um “chute” Nada garante que o comportamento ocorrer´a Se n˜ao ocorrer, basta dar um flush na instru¸c˜ao incorretamente carregada, e inverter o bit de predi¸c˜ao no buffer Frequentemente s˜ao usados 2 bits em vez de 1 Exigindo 2 erros antes da mudan¸ca dos bits E acomodando assim as varia¸c˜oes de comportamento na entrada e sa´ıda de la¸cos Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 23 / 36
  • 93. Conflitos de Controle Exce¸c˜oes Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 24 / 36
  • 94. Interrup¸c˜oes e Exce¸c˜oes Defini¸c˜ao Exce¸c˜ao Um evento n˜ao programado que interrompe a execu¸c˜ao do programa (Ex: instru¸c˜ao inv´alida e overflow em opera¸c˜oes aritm´eticas) Interrup¸c˜ao Uma exce¸c˜ao vinda de fora do processador (Ex: E/S) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 25 / 36
  • 95. Interrup¸c˜oes e Exce¸c˜oes Defini¸c˜ao Exce¸c˜ao Um evento n˜ao programado que interrompe a execu¸c˜ao do programa (Ex: instru¸c˜ao inv´alida e overflow em opera¸c˜oes aritm´eticas) Interrup¸c˜ao Uma exce¸c˜ao vinda de fora do processador (Ex: E/S) Algumas arquiteturas adotam o nome “interrup¸c˜ao” para ambas Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 25 / 36
  • 96. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Suponha um overflow em add $1, $2, $1. O que fazer? Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
  • 97. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Suponha um overflow em add $1, $2, $1. O que fazer? O processador salva o endere¸co da instru¸c˜ao problem´atica no EPC (exception program counter) De fato, salva seu PC+4 Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
  • 98. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Suponha um overflow em add $1, $2, $1. O que fazer? O processador salva o endere¸co da instru¸c˜ao problem´atica no EPC (exception program counter) De fato, salva seu PC+4 Ele ent˜ao transfere o controle ao sistema operacional, em algum endere¸co espec´ıfico Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
  • 99. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Suponha um overflow em add $1, $2, $1. O que fazer? O processador salva o endere¸co da instru¸c˜ao problem´atica no EPC (exception program counter) De fato, salva seu PC+4 Ele ent˜ao transfere o controle ao sistema operacional, em algum endere¸co espec´ıfico O S.O. ent˜ao executa a a¸c˜ao apropriada Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
  • 100. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Suponha um overflow em add $1, $2, $1. O que fazer? O processador salva o endere¸co da instru¸c˜ao problem´atica no EPC (exception program counter) De fato, salva seu PC+4 Ele ent˜ao transfere o controle ao sistema operacional, em algum endere¸co espec´ıfico O S.O. ent˜ao executa a a¸c˜ao apropriada Se resolver n˜ao matar o programa, o S.O. pode usar o EPC para continuar sua execu¸c˜ao Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 26 / 36
  • 101. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Mas saber que instru¸c˜ao causou a exce¸c˜ao n˜ao ´e suficiente O S.O. tamb´em precisa saber sua raz˜ao Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 27 / 36
  • 102. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Mas saber que instru¸c˜ao causou a exce¸c˜ao n˜ao ´e suficiente O S.O. tamb´em precisa saber sua raz˜ao Algumas arquiteturas usam um arranjo de interrup¸c˜oes Um arranjo, indexado pela causa, contendo o endere¸co em RAM de onde deve estar a rotina de tratamento: Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 27 / 36
  • 103. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS MIPS usa um ´unico ponto de entrada para todas as exce¸c˜oes Endere¸co de mem´oria fixo (0x8000 0180), onde deve ser colocado (pelo S.O.) o c´odigo geral para o tratamento das exce¸c˜oes Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 28 / 36
  • 104. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS MIPS usa um ´unico ponto de entrada para todas as exce¸c˜oes Endere¸co de mem´oria fixo (0x8000 0180), onde deve ser colocado (pelo S.O.) o c´odigo geral para o tratamento das exce¸c˜oes A causa da exce¸c˜ao ´e armazenada em um registrador de status chamado Registrador de Causa (Cause Register) Usado pelo S.O. para ativar a rotina de tratamento apropriada Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 28 / 36
  • 105. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 106. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Temos o EPC, guar- dando o endere¸co da ins- tru¸c˜ao problem´atica (+4) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 107. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] E o registrador de Causa, guardando a raz˜ao da exce¸c˜ao Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 108. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Al´em do endere¸co onde deve estar a rotina de trata- mento, no caso de exce¸c˜ao Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 109. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Exce¸c˜oes s˜ao trata- das como uma forma de conflito de controle Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 110. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Ent˜ao linhas de con- trole s˜ao criadas, para flushes em IF, ID e EX Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 111. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Lembre que EX ´e o est´agio em que o over- flow ´e detectado na ALU Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 112. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Embora n˜ao seja mostrado, a ALU envia um sinal de overflow como entrada para a unidade de controle Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 113. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Note que flush em IF j´a estava implementado Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 114. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] E usamos o mesmo mecanismo de stalls para o flush em IF Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 115. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] O ´unico sinal realmente novo ´e o de flush em EX, tamb´em para zerar as linhas de controle Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 116. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Muitas exce¸c˜oes exigem que completemos a instru¸c˜ao ap´os seu tratamento (Ex: E/S) Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 117. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS Fonte: [1] Para isso, podemos fazer um flush na instru¸c˜ao e inici´a-la novamente ao fim da exce¸c˜ao Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 29 / 36
  • 118. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo Considere a sequˆencia de instru¸c˜oes: Endere¸co Instru¸c˜ao 0x40 sub $11, $2, $4 0x44 and $12, $2, $5 0x48 or $13, $2, $6 0x4C add $1, $2, $1 0x50 slt $15, $6, $7 0x54 lw $16, 50($7) . . . Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 30 / 36
  • 119. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo O que acontece em caso de over- flow em add? Considere a sequˆencia de instru¸c˜oes: Endere¸co Instru¸c˜ao 0x40 sub $11, $2, $4 0x44 and $12, $2, $5 0x48 or $13, $2, $6 0x4C add $1, $2, $1 0x50 slt $15, $6, $7 0x54 lw $16, 50($7) . . . Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 30 / 36
  • 120. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo Fonte: [1] Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
  • 121. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo Fonte: [1] O overflow ´e detectado em EX e o endere¸co da instru¸c˜ao seguinte a add ´e salvo em EPC Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
  • 122. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo Fonte: [1] O sinal de overflow (n˜ao mos- trado) ´e enviado ao controle, que liga todos os sinais de flush Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
  • 123. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo Fonte: [1] Isso ocorre pr´oximo ao fim desse ciclo de clock Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
  • 124. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo Fonte: [1] Os sinais de flush trans- forma as instru¸c˜oes a partir de add em bolhas Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
  • 125. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo Fonte: [1] Fazendo tamb´em com que a instru¸c˜ao em 0x8000 0180 seja buscada Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
  • 126. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo Fonte: [1] Onde espera-se que o S.O. tenha colocado o c´odigo de tratamento de exce¸c˜oes Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
  • 127. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: Exemplo Fonte: [1] Vale notar que as ins- tru¸c˜oes anteriores ao add (and e or) completaram Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 31 / 36
  • 128. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes M´ultiplas exce¸c˜oes podem ocorrer no mesmo ciclo de clock Caso em que devem ser priorizadas Em muitas implementa¸c˜oes, s˜ao ordenadas de modo a interromper a instru¸c˜ao mais antiga na pipeline Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 32 / 36
  • 129. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes M´ultiplas exce¸c˜oes podem ocorrer no mesmo ciclo de clock Caso em que devem ser priorizadas Em muitas implementa¸c˜oes, s˜ao ordenadas de modo a interromper a instru¸c˜ao mais antiga na pipeline Interrup¸c˜oes (E/S) tem a vantagem de n˜ao serem associadas a instru¸c˜oes espec´ıficas Temos mais flexibilidade com rela¸c˜ao a quando interromper, e podemos usar os mesmos mecanismos das exce¸c˜oes Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 32 / 36
  • 130. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes No caso de m´ultiplas exce¸c˜oes, nada muda com o EPC Ele ainda mant´em o endere¸co da instru¸c˜ao seguinte `a interrompida Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 33 / 36
  • 131. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes No caso de m´ultiplas exce¸c˜oes, nada muda com o EPC Ele ainda mant´em o endere¸co da instru¸c˜ao seguinte `a interrompida O registrador de causa, contudo, registra todas as interrup¸c˜oes em um mesmo ciclo de clock Fazendo com que a rotina de tratamento tenha que casar cada exce¸c˜ao `a sua instru¸c˜ao correspondente Para isso, ajuda saber em que est´agio da pipeline cada exce¸c˜ao pode ocorrer Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 33 / 36
  • 132. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS: M´ultiplas Exce¸c˜oes As exce¸c˜oes s˜ao mantidas no registrador de causa em um campo de exce¸c˜oes pendentes Assim o hardware pode interromper a pipeline com base nas exce¸c˜oes ainda n˜ao tratadas, quando terminar o tratamento de alguma Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 34 / 36
  • 133. Interrup¸c˜oes e Exce¸c˜oes Exce¸c˜oes em MIPS ´E importante que o hardware e o S.O. trabalhem em conjunto O hardware deve parar a instru¸c˜ao problem´atica; completar as anteriores; dar um flush nas posteriores; carregar o registrador de causa com a causa da exce¸c˜ao; carregar o EPC com o endere¸co da instru¸c˜ao seguinte `a problem´atica; e desviar para um endere¸co de mem´oria pr´e-definido O S.O. deve olhar a causa da exce¸c˜ao e agir apropriadamente, armazenando o c´odigo para seu tratamento no endere¸co de mem´oria definido pelo hardware Norton Trevisan Roman (norton@usp.br) 24 de outubro de 2019 35 / 36
  • 134. 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) 24 de outubro de 2019 36 / 36