SlideShare uma empresa Scribd logo
1 de 121
Baixar para ler offline
Arquitetura de Computadores
ACH2055
Aula 10 – Processadores Superescalares
Norton Trevisan Roman
(norton@usp.br)
22 de fevereiro de 2020
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 1 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Pipeline
Vimos que o uso de pipeline corresponde a uma
forma de paralelismo
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 2 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Pipeline
Vimos que o uso de pipeline corresponde a uma
forma de paralelismo
Fonte: [1]
Uma vez que v´arias
instru¸c˜oes est˜ao execu-
tando simultaneamente
a cada ciclo do clock
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 2 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Pipeline
Vimos que o uso de pipeline corresponde a uma
forma de paralelismo
Fonte: [1]
Explorando assim o
paralelismo potencial
entre as instru¸c˜oes em
um fluxo sequencial
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 2 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Pipeline
Esse tipo de paralelismo ´e chamado de Paralelismo
em N´ıvel de Instru¸c˜ao
Instruction-level
Paralelism (ILP)
Referindo-se ao grau com
que, em m´edia, as
instru¸c˜oes de um
programa podem ser
executadas em paralelo Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 3 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
H´a 2 modos de se aumentar o paralelismo
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 4 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
H´a 2 modos de se aumentar o paralelismo
Ou aumentamos o comprimento da pipeline
De modo a sobrepor mais instru¸c˜oes
E arriscando stalls durarem muito
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 4 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
H´a 2 modos de se aumentar o paralelismo
Ou aumentamos o comprimento da pipeline
De modo a sobrepor mais instru¸c˜oes
E arriscando stalls durarem muito
Ou replicamos os componentes internos do
computador
De modo a rodar mais de uma instru¸c˜ao em cada est´agio da
pipeline
T´ecnica conhecida como expedi¸c˜ao m´ultipla (multiple
issue)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 4 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Expedi¸c˜ao m´ultipla
Com expedi¸c˜ao m´ultipla podemos conseguir que
CPI < 1
Ou, Alternativamente, IPC > 1 (Instru¸c˜oes por Ciclo)
CPI =
1
ICP
, ent˜ao CPI = 0.25 ⇒ IPC = 4
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 5 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Expedi¸c˜ao m´ultipla
Com expedi¸c˜ao m´ultipla podemos conseguir que
CPI < 1
Ou, Alternativamente, IPC > 1 (Instru¸c˜oes por Ciclo)
CPI =
1
ICP
, ent˜ao CPI = 0.25 ⇒ IPC = 4
H´a contudo restri¸c˜oes quanto a que instru¸c˜oes
podem rodar simultaneamente
Especialmente com rela¸c˜ao a dependˆencias
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 5 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Expedi¸c˜ao m´ultipla: Implementa¸c˜ao
H´a dois tipos principais de implementa¸c˜ao de
expedi¸c˜ao m´ultipla
A depender se as decis˜oes ser˜ao feitas estatica ou
dinamicamente
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 6 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Expedi¸c˜ao m´ultipla: Implementa¸c˜ao
H´a dois tipos principais de implementa¸c˜ao de
expedi¸c˜ao m´ultipla
A depender se as decis˜oes ser˜ao feitas estatica ou
dinamicamente
Expedi¸c˜ao M´ultipla Est´atica
As decis˜oes s˜ao tomadas em tempo de compila¸c˜ao
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 6 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Expedi¸c˜ao m´ultipla: Implementa¸c˜ao
H´a dois tipos principais de implementa¸c˜ao de
expedi¸c˜ao m´ultipla
A depender se as decis˜oes ser˜ao feitas estatica ou
dinamicamente
Expedi¸c˜ao M´ultipla Est´atica
As decis˜oes s˜ao tomadas em tempo de compila¸c˜ao
Expedi¸c˜ao M´ultipla Dinˆamica
As decis˜oes s˜ao tomadas em tempo de execu¸c˜ao
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 6 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Expedi¸c˜ao M´ultipla Est´atica
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 7 / 1
Expedi¸c˜ao M´ultipla Est´atica
Pacote de Expedi¸c˜ao
Necessitam de ajuda do compilador para determinar
o pacote de expedi¸c˜ao
O conjunto de instru¸c˜oes
lan¸cadas em um
determinado ciclo de
clock, como se fossem
uma ´unica longa instru¸c˜ao
Fonte: puyaa.ir/long-instruction-word-vliw-
processors/
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 8 / 1
Expedi¸c˜ao M´ultipla Est´atica
Pacote de Expedi¸c˜ao
Necessitam de ajuda do compilador para determinar
o pacote de expedi¸c˜ao
O conjunto de instru¸c˜oes
lan¸cadas em um
determinado ciclo de
clock, como se fossem
uma ´unica longa instru¸c˜ao
Fonte: puyaa.ir/long-instruction-word-vliw-
processors/
Essa interpreta¸c˜ao rendeu seu nome original: Very Long
Instruction Word (VLIW)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 8 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Expedi¸c˜ao dupla, onde uma
instru¸c˜ao (pacote) ´e uma
opera¸c˜ao na ALU ou branch,
e a outra um lw ou sw
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
A cada ciclo do clock, duas
instru¸c˜oes s˜ao buscadas
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Uma referente a opera¸c˜oes
na ALU e branch (preto),
e outra referente a trans-
ferˆencias de dados (azul)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Se n˜ao for poss´ıvel esse
pareamento, uma delas
´e substitu´ıda por nop
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
No mesmo ciclo, s˜ao lidos,
em paralelo, os registradores
para a ALU e para a
opera¸c˜ao em mem´oria
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Existindo uma ALU para
cada opera¸c˜ao em paralelo
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Em alguns projetos, o
hardware detecta confli-
tos de dados e gera stalls
entre 2 pacotes (o com-
pilador ainda ter´a que
lidar com dependˆencias
dentro do pacote)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Em outros, o compilador
´e quem deve assumir
toda a responsabilidade
de remo¸c˜ao de conflitos
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Como no caso de um
lw, que impede uma
instru¸c˜ao de usar seu
resultado no pr´oximo ciclo
de clock (ou seja, possui
latˆencia de uso de 1 ciclo)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
No caso de edi¸c˜ao dupla
isso significa parar o
pr´oximo par de instru¸c˜oes
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Mas pior, instru¸c˜oes que
numa pipeline comum
n˜ao possuem latˆencia
de uso, agora possuem
latˆencia de uma instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Expedi¸c˜ao M´ultipla Est´atica
Exemplo
Fonte: [1]
Uma vez que o resultado
de uma instru¸c˜ao n˜ao pode
ser usado na instru¸c˜ao
que faz par com ela
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Expedi¸c˜ao M´ultipla
Dinˆamica
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 10 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar
Processadores assim s˜ao tamb´em conhecidos como
superescalares
Em contraste com a arquitetura escalar vista at´e agora, que
processa um ´unico dado por vez
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 11 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar
Processadores assim s˜ao tamb´em conhecidos como
superescalares
Em contraste com a arquitetura escalar vista at´e agora, que
processa um ´unico dado por vez
Superescalar ´e ent˜ao uma t´ecnica de pipeline que permite
que processadores executem mais de uma instru¸c˜ao por ciclo
de clock, selecionando cada instru¸c˜ao durante a execu¸c˜ao
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 11 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar
Possuem m´ultiplas c´opias do hardware para executar
m´ultiplas instru¸c˜oes simultaneamente
Bastante semelhante `a expedi¸c˜ao est´atica
Fonte: [3]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 12 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar
Fonte: Adaptado de [2]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 13 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar: Exemplo
Fonte: [3]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 14 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar: Conflitos
Fonte: [3]
Naturalmente, conflitos ocorrem
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 15 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar: Conflitos
Fonte: [3]
A dependˆencia entre add e lw n˜ao s´o impede sua expedi¸c˜ao conjunta
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 15 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar: Conflitos
Fonte: [3]
Como para a pipeline por mais um ciclo, at´e lw po-
der fazer um forward de $t0 a add no 5o
ciclo
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 15 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar: Conflitos
Fonte: [3]
As dependˆencias entre sub e and e en-
tre or e sw s˜ao resolvidas via forwarding
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 15 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar
Tipicamente buscam m´ultiplas instru¸c˜oes, tentando
determinar dependˆencias entre elas
Para que instru¸c˜oes independentes possam rodar em paralelo
Ainda assim precisam da remo¸c˜ao de dependˆencia, pelo
compilador, para obter um bom desempenho
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 16 / 1
Expedi¸c˜ao M´ultipla Dinˆamica
Superescalar
Tipicamente buscam m´ultiplas instru¸c˜oes, tentando
determinar dependˆencias entre elas
Para que instru¸c˜oes independentes possam rodar em paralelo
Ainda assim precisam da remo¸c˜ao de dependˆencia, pelo
compilador, para obter um bom desempenho
Fazem uso do Escalonamento Dinˆamico de Pipeline
Dynamic pipeline scheduling
Consiste de escolher que instru¸c˜oes executar em um dado
ciclo de clock, buscando evitar conflitos e stalls
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 16 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline
Naturalmente, a ordem de execu¸c˜ao das instru¸c˜oes
n˜ao necessariamente bate com a ordem original
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 17 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline
Naturalmente, a ordem de execu¸c˜ao das instru¸c˜oes
n˜ao necessariamente bate com a ordem original
Em nosso exemplo, o
processador podia rodar
at´e 2 instru¸c˜oes por
ciclo
Vindas de qualquer parte
do c´odigo, desde que
fossem observadas as
dependˆencias
Fonte: [3]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 17 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Considere a sequˆencia
lw $t0, 40($s0)
nop
add $t1, $t0, $t1
sub $t0, $s2, $s3
and $t2, $s4, $t0
or $t3, $s5, $s6
sw $s7, 80($t3)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
H´a dependˆencias que s˜ao
velhas conhecidas nossas...
Considere a sequˆencia
lw $t0, 40($s0)
nop
add $t1, $t0, $t1
sub $t0, $s2, $s3
and $t2, $s4, $t0
or $t3, $s5, $s6
sw $s7, 80($t3)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Estas s˜ao conhecidas como
RAW (Read After Write),
porque tentamos ler algo
que depende de escrita que
pode n˜ao ter finalizado
Considere a sequˆencia
lw $t0, 40($s0)
nop
add $t1, $t0, $t1
sub $t0, $s2, $s3
and $t2, $s4, $t0
or $t3, $s5, $s6
sw $s7, 80($t3)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
E h´a outras introduzidas pelo
paralelismo superescalar, que
impedem 2 instru¸c˜oes de
serem expedidas em conjunto
Considere a sequˆencia
lw $t0, 40($s0)
nop
add $t1, $t0, $t1
sub $t0, $s2, $s3
and $t2, $s4, $t0
or $t3, $s5, $s6
sw $s7, 80($t3)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Como as WAR (Write After
Read, ou antidependˆencia),
quando modificamos um valor
sem conseguir garantir que lei-
turas anteriores foram corretas
Considere a sequˆencia
lw $t0, 40($s0)
nop
add $t1, $t0, $t1
sub $t0, $s2, $s3
and $t2, $s4, $t0
or $t3, $s5, $s6
sw $s7, 80($t3)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Ou as WAW (Write After
Write), onde 2 instru¸c˜oes
modificam um mesmo va-
lor sem garantir que sua
ordem seja preservada. Ex:
add $t0, $s1, $s2
sub $t0, $s3, $s4
Considere a sequˆencia
lw $t0, 40($s0)
nop
add $t1, $t0, $t1
sub $t0, $s2, $s3
and $t2, $s4, $t0
or $t3, $s5, $s6
sw $s7, 80($t3)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Rodado nessa ordem, o c´odigo se comportaria como j´a visto:
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 19 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
E se o processador conseguisse definir a ordem dinamicamente?
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 19 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Ciclo 1: lw ´e escolhido para rodar.
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Como add e sub dependem de lw, elas n˜ao podem rodar
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Por ser independente dessas, or ´e escolhida para rodar com lw
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Ciclo 2: H´a uma latˆencia de 2 ciclos para lw, ent˜ao add tem que esperar
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Por escrever em $t0, sub n˜ao pode ir antes de add (WAR)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Como and depende de sub, sobrou apenas sw para ser escolhida
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
E esta roda sozinha...
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Ciclo 3: $t0 estar´a dispon´ıvel no ciclo seguinte, ent˜ao add pode rodar
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Naturalmente, seu valor ser´a passado via forwarding
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
sub tamb´em pode rodar, pois escrever´a $t0 somente ap´os add lˆe-lo
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
Mas isso somente se fizermos o arquivo de registradores agir assim
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
and pode finalmente rodar, pois $t0 ´e enviado a ela via forwarding
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline: Exemplo
Fonte: [3]
S˜ao ent˜ao iniciadas 6 instru¸c˜oes em 4 ciclos → um IPC de 1.5
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline
O processador preserva ent˜ao o fluxo dos dados, em
vez da ordem original no programa
Modelo
conhecido
como
execu¸c˜ao
fora de
ordem
Fonte: [3]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 21 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline
Como vimos, execu¸c˜ao fora de ordem faz surgir
novos problemas de dependˆencia
Notoriamente WAR
Oriundos do fato de n˜ao conseguirmos determinar o valor
dos registradores olhando apenas para a sequˆencia de
instru¸c˜oes
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 22 / 1
Superescalar
Escalonamento Dinˆamico de Pipeline
Como vimos, execu¸c˜ao fora de ordem faz surgir
novos problemas de dependˆencia
Notoriamente WAR
Oriundos do fato de n˜ao conseguirmos determinar o valor
dos registradores olhando apenas para a sequˆencia de
instru¸c˜oes
Como ent˜ao lidar com esse problema?
Renomea¸c˜ao de registradores
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 22 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores
Consiste de adicionar registradores de renomea¸c˜ao
ao processador
$r0 a $r19 em MIPS
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 23 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores
Consiste de adicionar registradores de renomea¸c˜ao
ao processador
$r0 a $r19 em MIPS
E us´a-los para substituir registradores em conflito
Estes n˜ao podem ser usados diretamente pelo programador
Apenas o processador os usa, para eliminar conflitos.
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 23 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
Considere novamente a sequˆencia e seu WAR
lw $t0, 40($s0)
add $t1, $t0, $t1
sub $t0, $s2, $s3
and $t2, $s4, $t0
or $t3, $s5, $s6
sw $s7, 80($t3)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 24 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
Considere novamente a sequˆencia e seu WAR
lw $t0, 40($s0)
add $t1, $t0, $t1
sub $r0, $s2, $s3
and $t2, $s4, $t0
or $t3, $s5, $s6
sw $s7, 80($t3)
O processador poderia,
por exemplo, renomear
$t0 para $r0 em sub,
eliminando assim o WAR
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 24 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
Considere novamente a sequˆencia e seu WAR
lw $t0, 40($s0)
add $t1, $t0, $t1
sub $r0, $s2, $s3
and $t2, $s4, $r0
or $t3, $s5, $s6
sw $s7, 80($t3)
O processador poderia,
por exemplo, renomear
$t0 para $r0 em sub,
eliminando assim o WAR
Naturalmente, usos
posteriores de $t0 teriam
que ser substitu´ıdos
tamb´em
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 24 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
Considere novamente a sequˆencia e seu WAR
lw $t0, 40($s0)
add $t1, $t0, $t1
sub $r0, $s2, $s3
and $t2, $s4, $r0
or $t3, $s5, $s6
sw $s7, 80($t3)
Para isso, o processador
mant´em uma tabela com
os registradores que foram
renomeados
De modo a renomear de
modo consistente os
registradores em
instru¸c˜oes subsequentes
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 25 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Fonte: [3]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Fonte: [3]
Ciclo 1: lw ´e escolhido para rodar.
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Fonte: [3]
Com $r0, sub ficou independente de lw, ent˜ao ´e escolhida
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Fonte: [3]
Ciclo 2: add n˜ao pode rodar, pela latˆencia de 2 ciclos em lw
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Fonte: [3]
and depende de sub, ent˜ao podemos passar $r0 por forwarding
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Fonte: [3]
Por ser independente, or tamb´em roda
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Fonte: [3]
Ciclo 3: $t0 j´a est´a dispon´ıvel (forwarding), ent˜ao add pode rodar
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Fonte: [3]
$t3 tamb´em est´a dispon´ıvel (forwarding), ent˜ao sw roda
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
Renomea¸c˜ao de Registradores: Exemplo
E isso traz algum benef´ıcio?
Fonte: [3]
E as mesmas 6 instru¸c˜oes agora s˜ao iniciadas em 3 ciclos, com IPC = 2
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Dividimos a pipeline em
3 unidades principais
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Uma unidade para busca e
decodifica¸c˜ao das instru¸c˜oes
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
M´ultiplas unidades fun-
cionais de execu¸c˜ao
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Cada uma com um buffer
(esta¸c˜ao de reserva), que guarda
a opera¸c˜ao e seus operandos
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
E uma unidade de commit
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Ap´os decodificada, cada
instru¸c˜ao ´e armazenada em um
buffer: a janela de instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Enquanto esse buffer n˜ao
estiver cheio, novas instru¸c˜oes
s˜ao buscadas e decodificadas
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Assim que uma unidade fun-
cional estiver dispon´ıvel,
uma instru¸c˜ao da janela
pode ser enviada a ela
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Por meio de sua
esta¸c˜ao de reserva
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Tamb´em na decodifica¸c˜ao s˜ao
verificadas as dependˆencias entre
instru¸c˜oes na janela de instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Essa informa¸c˜ao ´e man-
tida em uma tabela, de-
nominada scoreboard
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
A cada ciclo, o processador
examina essa tabela e roda
tantas instru¸c˜oes quanto puder
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Limitando-se `as dependˆencias
existentes a ao n´umero de
unidades funcionais dispon´ıveis
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
O resultado de cada opera¸c˜ao ´e
enviado para quaisquer esta¸c˜oes
de reserva que o aguardem
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Implementando assim uma
esp´ecie de forwarding
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Esse resultado tamb´em ´e
enviado `a unidade de commit
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
L´a, ele ´e armazenado em
um buffer de reordena¸c˜ao
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
At´e poder ser enviado `a
mem´oria ou registradores
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
E como ´e feito esse escalonamento dinˆamico?
Fonte: [1]
Caso o resultado perten¸ca
a um branch erroneamente
predito, ele ´e descartado
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
Durante a busca (fetch), ´e
formado um fluxo de instru¸c˜oes
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
Dependˆencias s˜ao verifi-
cadas e possivelmente re-
movidas (via renomea¸c˜ao)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
As instru¸c˜oes s˜ao ent˜ao enviadas
a uma janela de execu¸c˜ao
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
Onde s˜ao estruturadas con-
forme suas dependˆencias
restantes (reordena¸c˜ao)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
As instru¸c˜oes s˜ao
ent˜ao executadas
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
Em uma ordem que de-
pende das dependˆencias e
disponibilidade de recursos
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
Por fim, elas s˜ao reorde-
nadas e seu resultado
registrado (commit)
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
Instru¸c˜oes podem tamb´em
ser abandonadas, se forem
falhas de branch prediction
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
Essa manuten¸c˜ao da or-
dem de busca ´e denomi-
nada in-order commit
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
E facilita a identifica¸c˜ao de
instru¸c˜oes problem´aticas
no caso de exce¸c˜oes
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
Embora commit e
fetch sejam em ordem,
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Superescalar: Escalonamento Dinˆamico
Rodando um programa...
Fonte: [2]
as unidades funcionais s˜ao
livres para iniciar a execu¸c˜ao
quando o dado estiver dispon´ıvel
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Tempo × Espa¸co
O paralelismo pode acontecer de forma temporal ou
espacial
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 29 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Tempo × Espa¸co
O paralelismo pode acontecer de forma temporal ou
espacial
Pipelining ´e um caso de paralelismo temporal
N˜ao h´a realmente duplica¸c˜ao de recurso algum, mas apenas uma
organiza¸c˜ao do fluxo no tempo
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 29 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Tempo × Espa¸co
O paralelismo pode acontecer de forma temporal ou
espacial
Pipelining ´e um caso de paralelismo temporal
N˜ao h´a realmente duplica¸c˜ao de recurso algum, mas apenas uma
organiza¸c˜ao do fluxo no tempo
M´ultiplas unidades de execu¸c˜ao ´e um caso de paralelismo
espacial
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 29 / 1
Paralelismo em N´ıvel de Instru¸c˜ao
Tempo × Espa¸co
O paralelismo pode acontecer de forma temporal ou
espacial
Pipelining ´e um caso de paralelismo temporal
N˜ao h´a realmente duplica¸c˜ao de recurso algum, mas apenas uma
organiza¸c˜ao do fluxo no tempo
M´ultiplas unidades de execu¸c˜ao ´e um caso de paralelismo
espacial
Processadores superescalares exploram ambas as
formas de paralelismo
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 29 / 1
Referˆencias
1 Patterson, D.A.; Hennessy, J.L. (2013): Computer Organization and
Design: The Hardware/Software Interface. Morgan Kaufmann. 5a
ed.
2 Stallings, W (2010): Computer Organization and Architecture: Designing
for Performance. Prentice Hall. 8a
ed.
3 Harris, D.M.; Harris, S.L.: Digital Design and Computer Architecture.
Morgan Kaufmann. 2a
ed.
Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 30 / 1

Mais conteúdo relacionado

Mais procurados

Mais procurados (7)

(ACH2001) Introdução à Programação - Aula 05
(ACH2001) Introdução à Programação - Aula 05(ACH2001) Introdução à Programação - Aula 05
(ACH2001) Introdução à Programação - Aula 05
 
Aula Simulação por Eventos Discretos
Aula Simulação por Eventos DiscretosAula Simulação por Eventos Discretos
Aula Simulação por Eventos Discretos
 
Analisador de vibrações I - Modo de funcionamento
Analisador de vibrações I - Modo de funcionamentoAnalisador de vibrações I - Modo de funcionamento
Analisador de vibrações I - Modo de funcionamento
 
Ntp 1-cp2011
Ntp 1-cp2011Ntp 1-cp2011
Ntp 1-cp2011
 
Controle de Congestionamento e fluxos ratos
Controle de Congestionamento e fluxos ratosControle de Congestionamento e fluxos ratos
Controle de Congestionamento e fluxos ratos
 
Analisador de vibrações - Modo de funcionamento V
Analisador de vibrações - Modo de funcionamento VAnalisador de vibrações - Modo de funcionamento V
Analisador de vibrações - Modo de funcionamento V
 
Ko 7 kdp-03
Ko 7 kdp-03Ko 7 kdp-03
Ko 7 kdp-03
 

Semelhante a (ACH2055) Arquitetura de Computadores - Aula 10

(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02Norton Trevisan Roman
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univemevandrovv
 
Controlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e SubversionControlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e Subversionlekitamura
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Comunidade NetPonto
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Marcelo Dieder
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Thiago Rondon
 
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...Eduardo de Lucena Falcão
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloComunidade NetPonto
 
Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Jose Silva
 
Skytools, pgbouncer e plproxy
Skytools, pgbouncer e plproxySkytools, pgbouncer e plproxy
Skytools, pgbouncer e plproxyFernando Ike
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Jose Silva
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Wellington Silva
 
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE - Vo...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE - Vo...UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE - Vo...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE - Vo...Edinaldo La-Roque
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 

Semelhante a (ACH2055) Arquitetura de Computadores - Aula 10 (20)

Sistemas Distribuídos - Clusters
Sistemas Distribuídos - ClustersSistemas Distribuídos - Clusters
Sistemas Distribuídos - Clusters
 
Orquestração com Mcollective
Orquestração com McollectiveOrquestração com Mcollective
Orquestração com Mcollective
 
(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02
 
F oc aula_04
F oc aula_04F oc aula_04
F oc aula_04
 
[Ottoni micro05] resume
[Ottoni micro05] resume[Ottoni micro05] resume
[Ottoni micro05] resume
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univem
 
Cluster
ClusterCluster
Cluster
 
Controlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e SubversionControlando Projetos com Netbeans e Subversion
Controlando Projetos com Netbeans e Subversion
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
 
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno Cancelo
 
Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)
 
Skytools, pgbouncer e plproxy
Skytools, pgbouncer e plproxySkytools, pgbouncer e plproxy
Skytools, pgbouncer e plproxy
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
 
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE - Vo...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE - Vo...UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE - Vo...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Tutorial Rede LTE - Vo...
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 

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

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresAnaCarinaKucharski1
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfMárcio Azevedo
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreElianeElika
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memorialgrecchi
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfFernandaMota99
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptxMarlene Cunhada
 

Último (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdf
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memoria
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptx
 

(ACH2055) Arquitetura de Computadores - Aula 10

  • 1. Arquitetura de Computadores ACH2055 Aula 10 – Processadores Superescalares Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 1 / 1
  • 2. Paralelismo em N´ıvel de Instru¸c˜ao Pipeline Vimos que o uso de pipeline corresponde a uma forma de paralelismo Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 2 / 1
  • 3. Paralelismo em N´ıvel de Instru¸c˜ao Pipeline Vimos que o uso de pipeline corresponde a uma forma de paralelismo Fonte: [1] Uma vez que v´arias instru¸c˜oes est˜ao execu- tando simultaneamente a cada ciclo do clock Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 2 / 1
  • 4. Paralelismo em N´ıvel de Instru¸c˜ao Pipeline Vimos que o uso de pipeline corresponde a uma forma de paralelismo Fonte: [1] Explorando assim o paralelismo potencial entre as instru¸c˜oes em um fluxo sequencial Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 2 / 1
  • 5. Paralelismo em N´ıvel de Instru¸c˜ao Pipeline Esse tipo de paralelismo ´e chamado de Paralelismo em N´ıvel de Instru¸c˜ao Instruction-level Paralelism (ILP) Referindo-se ao grau com que, em m´edia, as instru¸c˜oes de um programa podem ser executadas em paralelo Fonte: [1] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 3 / 1
  • 6. Paralelismo em N´ıvel de Instru¸c˜ao H´a 2 modos de se aumentar o paralelismo Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 4 / 1
  • 7. Paralelismo em N´ıvel de Instru¸c˜ao H´a 2 modos de se aumentar o paralelismo Ou aumentamos o comprimento da pipeline De modo a sobrepor mais instru¸c˜oes E arriscando stalls durarem muito Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 4 / 1
  • 8. Paralelismo em N´ıvel de Instru¸c˜ao H´a 2 modos de se aumentar o paralelismo Ou aumentamos o comprimento da pipeline De modo a sobrepor mais instru¸c˜oes E arriscando stalls durarem muito Ou replicamos os componentes internos do computador De modo a rodar mais de uma instru¸c˜ao em cada est´agio da pipeline T´ecnica conhecida como expedi¸c˜ao m´ultipla (multiple issue) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 4 / 1
  • 9. Paralelismo em N´ıvel de Instru¸c˜ao Expedi¸c˜ao m´ultipla Com expedi¸c˜ao m´ultipla podemos conseguir que CPI < 1 Ou, Alternativamente, IPC > 1 (Instru¸c˜oes por Ciclo) CPI = 1 ICP , ent˜ao CPI = 0.25 ⇒ IPC = 4 Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 5 / 1
  • 10. Paralelismo em N´ıvel de Instru¸c˜ao Expedi¸c˜ao m´ultipla Com expedi¸c˜ao m´ultipla podemos conseguir que CPI < 1 Ou, Alternativamente, IPC > 1 (Instru¸c˜oes por Ciclo) CPI = 1 ICP , ent˜ao CPI = 0.25 ⇒ IPC = 4 H´a contudo restri¸c˜oes quanto a que instru¸c˜oes podem rodar simultaneamente Especialmente com rela¸c˜ao a dependˆencias Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 5 / 1
  • 11. Paralelismo em N´ıvel de Instru¸c˜ao Expedi¸c˜ao m´ultipla: Implementa¸c˜ao H´a dois tipos principais de implementa¸c˜ao de expedi¸c˜ao m´ultipla A depender se as decis˜oes ser˜ao feitas estatica ou dinamicamente Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 6 / 1
  • 12. Paralelismo em N´ıvel de Instru¸c˜ao Expedi¸c˜ao m´ultipla: Implementa¸c˜ao H´a dois tipos principais de implementa¸c˜ao de expedi¸c˜ao m´ultipla A depender se as decis˜oes ser˜ao feitas estatica ou dinamicamente Expedi¸c˜ao M´ultipla Est´atica As decis˜oes s˜ao tomadas em tempo de compila¸c˜ao Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 6 / 1
  • 13. Paralelismo em N´ıvel de Instru¸c˜ao Expedi¸c˜ao m´ultipla: Implementa¸c˜ao H´a dois tipos principais de implementa¸c˜ao de expedi¸c˜ao m´ultipla A depender se as decis˜oes ser˜ao feitas estatica ou dinamicamente Expedi¸c˜ao M´ultipla Est´atica As decis˜oes s˜ao tomadas em tempo de compila¸c˜ao Expedi¸c˜ao M´ultipla Dinˆamica As decis˜oes s˜ao tomadas em tempo de execu¸c˜ao Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 6 / 1
  • 14. Paralelismo em N´ıvel de Instru¸c˜ao Expedi¸c˜ao M´ultipla Est´atica Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 7 / 1
  • 15. Expedi¸c˜ao M´ultipla Est´atica Pacote de Expedi¸c˜ao Necessitam de ajuda do compilador para determinar o pacote de expedi¸c˜ao O conjunto de instru¸c˜oes lan¸cadas em um determinado ciclo de clock, como se fossem uma ´unica longa instru¸c˜ao Fonte: puyaa.ir/long-instruction-word-vliw- processors/ Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 8 / 1
  • 16. Expedi¸c˜ao M´ultipla Est´atica Pacote de Expedi¸c˜ao Necessitam de ajuda do compilador para determinar o pacote de expedi¸c˜ao O conjunto de instru¸c˜oes lan¸cadas em um determinado ciclo de clock, como se fossem uma ´unica longa instru¸c˜ao Fonte: puyaa.ir/long-instruction-word-vliw- processors/ Essa interpreta¸c˜ao rendeu seu nome original: Very Long Instruction Word (VLIW) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 8 / 1
  • 17. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 18. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Expedi¸c˜ao dupla, onde uma instru¸c˜ao (pacote) ´e uma opera¸c˜ao na ALU ou branch, e a outra um lw ou sw Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 19. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] A cada ciclo do clock, duas instru¸c˜oes s˜ao buscadas Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 20. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Uma referente a opera¸c˜oes na ALU e branch (preto), e outra referente a trans- ferˆencias de dados (azul) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 21. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Se n˜ao for poss´ıvel esse pareamento, uma delas ´e substitu´ıda por nop Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 22. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] No mesmo ciclo, s˜ao lidos, em paralelo, os registradores para a ALU e para a opera¸c˜ao em mem´oria Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 23. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Existindo uma ALU para cada opera¸c˜ao em paralelo Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 24. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Em alguns projetos, o hardware detecta confli- tos de dados e gera stalls entre 2 pacotes (o com- pilador ainda ter´a que lidar com dependˆencias dentro do pacote) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 25. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Em outros, o compilador ´e quem deve assumir toda a responsabilidade de remo¸c˜ao de conflitos Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 26. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Como no caso de um lw, que impede uma instru¸c˜ao de usar seu resultado no pr´oximo ciclo de clock (ou seja, possui latˆencia de uso de 1 ciclo) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 27. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] No caso de edi¸c˜ao dupla isso significa parar o pr´oximo par de instru¸c˜oes Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 28. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Mas pior, instru¸c˜oes que numa pipeline comum n˜ao possuem latˆencia de uso, agora possuem latˆencia de uma instru¸c˜ao Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 29. Expedi¸c˜ao M´ultipla Est´atica Exemplo Fonte: [1] Uma vez que o resultado de uma instru¸c˜ao n˜ao pode ser usado na instru¸c˜ao que faz par com ela Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 9 / 1
  • 30. Paralelismo em N´ıvel de Instru¸c˜ao Expedi¸c˜ao M´ultipla Dinˆamica Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 10 / 1
  • 31. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar Processadores assim s˜ao tamb´em conhecidos como superescalares Em contraste com a arquitetura escalar vista at´e agora, que processa um ´unico dado por vez Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 11 / 1
  • 32. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar Processadores assim s˜ao tamb´em conhecidos como superescalares Em contraste com a arquitetura escalar vista at´e agora, que processa um ´unico dado por vez Superescalar ´e ent˜ao uma t´ecnica de pipeline que permite que processadores executem mais de uma instru¸c˜ao por ciclo de clock, selecionando cada instru¸c˜ao durante a execu¸c˜ao Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 11 / 1
  • 33. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar Possuem m´ultiplas c´opias do hardware para executar m´ultiplas instru¸c˜oes simultaneamente Bastante semelhante `a expedi¸c˜ao est´atica Fonte: [3] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 12 / 1
  • 34. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar Fonte: Adaptado de [2] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 13 / 1
  • 35. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar: Exemplo Fonte: [3] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 14 / 1
  • 36. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar: Conflitos Fonte: [3] Naturalmente, conflitos ocorrem Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 15 / 1
  • 37. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar: Conflitos Fonte: [3] A dependˆencia entre add e lw n˜ao s´o impede sua expedi¸c˜ao conjunta Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 15 / 1
  • 38. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar: Conflitos Fonte: [3] Como para a pipeline por mais um ciclo, at´e lw po- der fazer um forward de $t0 a add no 5o ciclo Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 15 / 1
  • 39. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar: Conflitos Fonte: [3] As dependˆencias entre sub e and e en- tre or e sw s˜ao resolvidas via forwarding Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 15 / 1
  • 40. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar Tipicamente buscam m´ultiplas instru¸c˜oes, tentando determinar dependˆencias entre elas Para que instru¸c˜oes independentes possam rodar em paralelo Ainda assim precisam da remo¸c˜ao de dependˆencia, pelo compilador, para obter um bom desempenho Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 16 / 1
  • 41. Expedi¸c˜ao M´ultipla Dinˆamica Superescalar Tipicamente buscam m´ultiplas instru¸c˜oes, tentando determinar dependˆencias entre elas Para que instru¸c˜oes independentes possam rodar em paralelo Ainda assim precisam da remo¸c˜ao de dependˆencia, pelo compilador, para obter um bom desempenho Fazem uso do Escalonamento Dinˆamico de Pipeline Dynamic pipeline scheduling Consiste de escolher que instru¸c˜oes executar em um dado ciclo de clock, buscando evitar conflitos e stalls Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 16 / 1
  • 42. Superescalar Escalonamento Dinˆamico de Pipeline Naturalmente, a ordem de execu¸c˜ao das instru¸c˜oes n˜ao necessariamente bate com a ordem original Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 17 / 1
  • 43. Superescalar Escalonamento Dinˆamico de Pipeline Naturalmente, a ordem de execu¸c˜ao das instru¸c˜oes n˜ao necessariamente bate com a ordem original Em nosso exemplo, o processador podia rodar at´e 2 instru¸c˜oes por ciclo Vindas de qualquer parte do c´odigo, desde que fossem observadas as dependˆencias Fonte: [3] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 17 / 1
  • 44. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Considere a sequˆencia lw $t0, 40($s0) nop add $t1, $t0, $t1 sub $t0, $s2, $s3 and $t2, $s4, $t0 or $t3, $s5, $s6 sw $s7, 80($t3) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
  • 45. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo H´a dependˆencias que s˜ao velhas conhecidas nossas... Considere a sequˆencia lw $t0, 40($s0) nop add $t1, $t0, $t1 sub $t0, $s2, $s3 and $t2, $s4, $t0 or $t3, $s5, $s6 sw $s7, 80($t3) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
  • 46. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Estas s˜ao conhecidas como RAW (Read After Write), porque tentamos ler algo que depende de escrita que pode n˜ao ter finalizado Considere a sequˆencia lw $t0, 40($s0) nop add $t1, $t0, $t1 sub $t0, $s2, $s3 and $t2, $s4, $t0 or $t3, $s5, $s6 sw $s7, 80($t3) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
  • 47. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo E h´a outras introduzidas pelo paralelismo superescalar, que impedem 2 instru¸c˜oes de serem expedidas em conjunto Considere a sequˆencia lw $t0, 40($s0) nop add $t1, $t0, $t1 sub $t0, $s2, $s3 and $t2, $s4, $t0 or $t3, $s5, $s6 sw $s7, 80($t3) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
  • 48. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Como as WAR (Write After Read, ou antidependˆencia), quando modificamos um valor sem conseguir garantir que lei- turas anteriores foram corretas Considere a sequˆencia lw $t0, 40($s0) nop add $t1, $t0, $t1 sub $t0, $s2, $s3 and $t2, $s4, $t0 or $t3, $s5, $s6 sw $s7, 80($t3) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
  • 49. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Ou as WAW (Write After Write), onde 2 instru¸c˜oes modificam um mesmo va- lor sem garantir que sua ordem seja preservada. Ex: add $t0, $s1, $s2 sub $t0, $s3, $s4 Considere a sequˆencia lw $t0, 40($s0) nop add $t1, $t0, $t1 sub $t0, $s2, $s3 and $t2, $s4, $t0 or $t3, $s5, $s6 sw $s7, 80($t3) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 18 / 1
  • 50. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Rodado nessa ordem, o c´odigo se comportaria como j´a visto: Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 19 / 1
  • 51. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] E se o processador conseguisse definir a ordem dinamicamente? Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 19 / 1
  • 52. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 53. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Ciclo 1: lw ´e escolhido para rodar. Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 54. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Como add e sub dependem de lw, elas n˜ao podem rodar Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 55. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Por ser independente dessas, or ´e escolhida para rodar com lw Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 56. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Ciclo 2: H´a uma latˆencia de 2 ciclos para lw, ent˜ao add tem que esperar Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 57. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Por escrever em $t0, sub n˜ao pode ir antes de add (WAR) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 58. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Como and depende de sub, sobrou apenas sw para ser escolhida Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 59. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] E esta roda sozinha... Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 60. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Ciclo 3: $t0 estar´a dispon´ıvel no ciclo seguinte, ent˜ao add pode rodar Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 61. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Naturalmente, seu valor ser´a passado via forwarding Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 62. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] sub tamb´em pode rodar, pois escrever´a $t0 somente ap´os add lˆe-lo Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 63. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] Mas isso somente se fizermos o arquivo de registradores agir assim Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 64. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] and pode finalmente rodar, pois $t0 ´e enviado a ela via forwarding Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 65. Superescalar Escalonamento Dinˆamico de Pipeline: Exemplo Fonte: [3] S˜ao ent˜ao iniciadas 6 instru¸c˜oes em 4 ciclos → um IPC de 1.5 Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 20 / 1
  • 66. Superescalar Escalonamento Dinˆamico de Pipeline O processador preserva ent˜ao o fluxo dos dados, em vez da ordem original no programa Modelo conhecido como execu¸c˜ao fora de ordem Fonte: [3] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 21 / 1
  • 67. Superescalar Escalonamento Dinˆamico de Pipeline Como vimos, execu¸c˜ao fora de ordem faz surgir novos problemas de dependˆencia Notoriamente WAR Oriundos do fato de n˜ao conseguirmos determinar o valor dos registradores olhando apenas para a sequˆencia de instru¸c˜oes Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 22 / 1
  • 68. Superescalar Escalonamento Dinˆamico de Pipeline Como vimos, execu¸c˜ao fora de ordem faz surgir novos problemas de dependˆencia Notoriamente WAR Oriundos do fato de n˜ao conseguirmos determinar o valor dos registradores olhando apenas para a sequˆencia de instru¸c˜oes Como ent˜ao lidar com esse problema? Renomea¸c˜ao de registradores Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 22 / 1
  • 69. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores Consiste de adicionar registradores de renomea¸c˜ao ao processador $r0 a $r19 em MIPS Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 23 / 1
  • 70. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores Consiste de adicionar registradores de renomea¸c˜ao ao processador $r0 a $r19 em MIPS E us´a-los para substituir registradores em conflito Estes n˜ao podem ser usados diretamente pelo programador Apenas o processador os usa, para eliminar conflitos. Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 23 / 1
  • 71. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo Considere novamente a sequˆencia e seu WAR lw $t0, 40($s0) add $t1, $t0, $t1 sub $t0, $s2, $s3 and $t2, $s4, $t0 or $t3, $s5, $s6 sw $s7, 80($t3) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 24 / 1
  • 72. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo Considere novamente a sequˆencia e seu WAR lw $t0, 40($s0) add $t1, $t0, $t1 sub $r0, $s2, $s3 and $t2, $s4, $t0 or $t3, $s5, $s6 sw $s7, 80($t3) O processador poderia, por exemplo, renomear $t0 para $r0 em sub, eliminando assim o WAR Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 24 / 1
  • 73. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo Considere novamente a sequˆencia e seu WAR lw $t0, 40($s0) add $t1, $t0, $t1 sub $r0, $s2, $s3 and $t2, $s4, $r0 or $t3, $s5, $s6 sw $s7, 80($t3) O processador poderia, por exemplo, renomear $t0 para $r0 em sub, eliminando assim o WAR Naturalmente, usos posteriores de $t0 teriam que ser substitu´ıdos tamb´em Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 24 / 1
  • 74. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo Considere novamente a sequˆencia e seu WAR lw $t0, 40($s0) add $t1, $t0, $t1 sub $r0, $s2, $s3 and $t2, $s4, $r0 or $t3, $s5, $s6 sw $s7, 80($t3) Para isso, o processador mant´em uma tabela com os registradores que foram renomeados De modo a renomear de modo consistente os registradores em instru¸c˜oes subsequentes Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 25 / 1
  • 75. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 76. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Fonte: [3] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 77. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Fonte: [3] Ciclo 1: lw ´e escolhido para rodar. Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 78. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Fonte: [3] Com $r0, sub ficou independente de lw, ent˜ao ´e escolhida Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 79. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Fonte: [3] Ciclo 2: add n˜ao pode rodar, pela latˆencia de 2 ciclos em lw Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 80. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Fonte: [3] and depende de sub, ent˜ao podemos passar $r0 por forwarding Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 81. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Fonte: [3] Por ser independente, or tamb´em roda Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 82. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Fonte: [3] Ciclo 3: $t0 j´a est´a dispon´ıvel (forwarding), ent˜ao add pode rodar Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 83. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Fonte: [3] $t3 tamb´em est´a dispon´ıvel (forwarding), ent˜ao sw roda Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 84. Superescalar: Escalonamento Dinˆamico Renomea¸c˜ao de Registradores: Exemplo E isso traz algum benef´ıcio? Fonte: [3] E as mesmas 6 instru¸c˜oes agora s˜ao iniciadas em 3 ciclos, com IPC = 2 Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 26 / 1
  • 85. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Dividimos a pipeline em 3 unidades principais Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 86. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Uma unidade para busca e decodifica¸c˜ao das instru¸c˜oes Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 87. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] M´ultiplas unidades fun- cionais de execu¸c˜ao Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 88. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Cada uma com um buffer (esta¸c˜ao de reserva), que guarda a opera¸c˜ao e seus operandos Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 89. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] E uma unidade de commit Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 90. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Ap´os decodificada, cada instru¸c˜ao ´e armazenada em um buffer: a janela de instru¸c˜ao Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 91. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Enquanto esse buffer n˜ao estiver cheio, novas instru¸c˜oes s˜ao buscadas e decodificadas Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 92. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Assim que uma unidade fun- cional estiver dispon´ıvel, uma instru¸c˜ao da janela pode ser enviada a ela Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 93. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Por meio de sua esta¸c˜ao de reserva Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 94. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Tamb´em na decodifica¸c˜ao s˜ao verificadas as dependˆencias entre instru¸c˜oes na janela de instru¸c˜ao Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 95. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Essa informa¸c˜ao ´e man- tida em uma tabela, de- nominada scoreboard Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 96. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] A cada ciclo, o processador examina essa tabela e roda tantas instru¸c˜oes quanto puder Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 97. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Limitando-se `as dependˆencias existentes a ao n´umero de unidades funcionais dispon´ıveis Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 98. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] O resultado de cada opera¸c˜ao ´e enviado para quaisquer esta¸c˜oes de reserva que o aguardem Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 99. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Implementando assim uma esp´ecie de forwarding Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 100. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Esse resultado tamb´em ´e enviado `a unidade de commit Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 101. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] L´a, ele ´e armazenado em um buffer de reordena¸c˜ao Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 102. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] At´e poder ser enviado `a mem´oria ou registradores Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 103. Superescalar: Escalonamento Dinˆamico E como ´e feito esse escalonamento dinˆamico? Fonte: [1] Caso o resultado perten¸ca a um branch erroneamente predito, ele ´e descartado Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 27 / 1
  • 104. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 105. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] Durante a busca (fetch), ´e formado um fluxo de instru¸c˜oes Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 106. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] Dependˆencias s˜ao verifi- cadas e possivelmente re- movidas (via renomea¸c˜ao) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 107. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] As instru¸c˜oes s˜ao ent˜ao enviadas a uma janela de execu¸c˜ao Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 108. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] Onde s˜ao estruturadas con- forme suas dependˆencias restantes (reordena¸c˜ao) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 109. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] As instru¸c˜oes s˜ao ent˜ao executadas Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 110. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] Em uma ordem que de- pende das dependˆencias e disponibilidade de recursos Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 111. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] Por fim, elas s˜ao reorde- nadas e seu resultado registrado (commit) Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 112. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] Instru¸c˜oes podem tamb´em ser abandonadas, se forem falhas de branch prediction Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 113. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] Essa manuten¸c˜ao da or- dem de busca ´e denomi- nada in-order commit Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 114. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] E facilita a identifica¸c˜ao de instru¸c˜oes problem´aticas no caso de exce¸c˜oes Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 115. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] Embora commit e fetch sejam em ordem, Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 116. Superescalar: Escalonamento Dinˆamico Rodando um programa... Fonte: [2] as unidades funcionais s˜ao livres para iniciar a execu¸c˜ao quando o dado estiver dispon´ıvel Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 28 / 1
  • 117. Paralelismo em N´ıvel de Instru¸c˜ao Tempo × Espa¸co O paralelismo pode acontecer de forma temporal ou espacial Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 29 / 1
  • 118. Paralelismo em N´ıvel de Instru¸c˜ao Tempo × Espa¸co O paralelismo pode acontecer de forma temporal ou espacial Pipelining ´e um caso de paralelismo temporal N˜ao h´a realmente duplica¸c˜ao de recurso algum, mas apenas uma organiza¸c˜ao do fluxo no tempo Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 29 / 1
  • 119. Paralelismo em N´ıvel de Instru¸c˜ao Tempo × Espa¸co O paralelismo pode acontecer de forma temporal ou espacial Pipelining ´e um caso de paralelismo temporal N˜ao h´a realmente duplica¸c˜ao de recurso algum, mas apenas uma organiza¸c˜ao do fluxo no tempo M´ultiplas unidades de execu¸c˜ao ´e um caso de paralelismo espacial Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 29 / 1
  • 120. Paralelismo em N´ıvel de Instru¸c˜ao Tempo × Espa¸co O paralelismo pode acontecer de forma temporal ou espacial Pipelining ´e um caso de paralelismo temporal N˜ao h´a realmente duplica¸c˜ao de recurso algum, mas apenas uma organiza¸c˜ao do fluxo no tempo M´ultiplas unidades de execu¸c˜ao ´e um caso de paralelismo espacial Processadores superescalares exploram ambas as formas de paralelismo Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 29 / 1
  • 121. Referˆencias 1 Patterson, D.A.; Hennessy, J.L. (2013): Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann. 5a ed. 2 Stallings, W (2010): Computer Organization and Architecture: Designing for Performance. Prentice Hall. 8a ed. 3 Harris, D.M.; Harris, S.L.: Digital Design and Computer Architecture. Morgan Kaufmann. 2a ed. Norton Trevisan Roman (norton@usp.br) 22 de fevereiro de 2020 30 / 1