? MemWrite
ALUSrc
?
RegWrite ? ?
Instruction [25 21] Read
Read register 1
PC address Read
Instruction
[31 0]
Instruction [20 16]
0
Read
register 2
data 1
Registers Read
0
Zero
ALU ALU
Read
?
M Write data 2 result Address 1
Instruction u register M data
u M
memory x
Write
Data
memory 0
u
x
data
Instruction [15 0]
? 16
Sign
extend
32
Instruction [5 0]
ALU
control ?
O que uma palavra de dados?
Conjunto de bits?
Quantos bits?
O que significa processador de 32 bits? E de
64 bits?
Registradores?
Latch
Um latch um elemento lgico que pode
acompanhar as variaes do dado e
transferir estas mudanas para uma linha de
sada.
Circuito biestvel: Q pode valer 0 ou 1.
Latch SR (Set-Reset)
O latch SR um elemento biestvel transparente,
ou seja, sensvel s variaes das entradas.
Na operao de set a sada forada para o valor
Q=1
Na operao reset a sada forada para Q=0
Latch D
Um latch tipo D tem uma nica entrada D
que atua como entrada de um bit de dado.
Latch D com Clock
Registradores
Um registrador um elemento lgico
utilizado para armazenar uma palavra
binria de n-bits.
Registradores de Deslocamento
Registradores de Deslocamento
Registradores de Deslocamento
Registradores de Deslocamento
Operaes de rotao
Memria RAM
Clula RAM esttica: A memria esttica capaz de
manter os bits de dados armazenados apenas enquanto a
fonte de alimentao estiver conectada ao circuito. Uma
clula SRAM equivalente ao Latch SR.
Memria RAM
Clula RAM dinmica: A DRAM similar a SRAM. A diferena o
projeto das clulas. As clulas dinmicas so mais simples e
necessitam de menos rea no chip. Isto permite que a DRAM seja
construda com densidades de armazenamento maiores, reduzindo o
custo do bit. A DRAM muito utilizada para memrias principais dos
computadores. A desvantagem da DRAM que as clulas so mais
lentas. Os tempos de leitura e escrita so maiores. Uma clula DRAM
construda a partir de capacitores, demandando refresh de memria
para manter o os dados armazenados.
Arranjo das SRAMs
Matriz 8x8
Operao de Leitura em uma
Matriz RAM
Diagrama em Blocos para SRAM
64x8
O que ns j sabemos?
0
M
u
x
Add ALU 1
result
Add Shift
RegDst left 2
4 Branch
MemRead
Instruction [31 26] MemtoReg
Control ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [5 0]
Hierarquia de Memria
Memria Secundria (Disco)
Memria Principal
Cache
Registrador
Tendncias tecnolgicas
Hiato de desempenho (latncia) entre
processador e memria DRAM
1000 CPU
Proc
60% / ano
Lei de Moore (2X / 1.5 anos)
Performance
1993
1980
1981
1983
1984
1985
1986
1987
1988
1990
1991
1992
1994
1995
1996
1997
1998
1999
2000
Tempo
Hierarquia de Memria
Objetivo: oferecer iluso de mximo tamanho
de memria, com mnimo custo.
Mxima velocidade.
Processador
Bloco de controle
Memria
Memria
Memria
Memria
Memria
Bloco
operac.
Processador
Bloco de controle
Memria
Cache Memria secundria
Registrad.
On-Chip
(disco)
Cache
2 nvel principal
Bloco
(SRAM) (DRAM)
operac.
Conceitos
Palavra: conjunto de um ou mais bytes.
Bloco: conjunto de uma ou mais palavras (unidade da cache)
Bit de Vlido: indica se o dado ou bloco est vlido
Tag ou rtulo: parte do endereo de uma palavra na memria
principal
Slot: cada linha de uma cache, que pode armazenar um ou mais
blocos dependendo da organizao da cache.
Comparador: compara a tag de um endereo de uma palavra, com
as tags dos endereos armazenados na cache
Modos de Mapeamento
Mtrica
Taxa de acerto: dado um nmero de acessos a cache, qual a porcentagem de cache
hit.
N Cache Hit
Taxa de Acerto
N de Acessos
Tipos de cache miss
compulsrios (cold start ou chaveamento de processos, primeira
referncia): primeiro accesso a uma linha
um fato da vida: no se pode fazer muito a respeito
se o programa vai executar bilhes de instrues, misses
compulsrios so insignificantes
de conflito (ou coliso)
mltiplas linhas de memria acessando o mesmo conjunto da cache
conjunto-associativa ou mesma linha da cache com mapeamento
direto
soluo 1: aumentar tamanho da cache
soluo 2: aumentar associatividade
de capacidade
cache no pode conter todas as linhas accessadas pelo programa
soluo: aumentar tamanho da cache
invalidao: outro processo (p.ex. I/O) atualiza memria
Tamanho da linha vs. miss ratio
Tamanho da cache
Tamanho da linha
em geral, uma linha maior aproveita melhor a localidade espacial MAS
linha maior significa maior miss penalty
demora mais tempo para preencher a linha
se tamanho da linha grande demais em relao ao tamanho da cache, miss ratio vai
aumentar
muito poucas linhas
em geral, tempo mdio de acesso =
Hit Time x (1 - Miss Ratio) + Miss Penalty x Miss Ratio
Miss Miss Tempo mdio
de acesso
Penalty Ratio
explora localidade espacial
Miss Penalty
& Miss Ratio
poucas linhas: aumentam
compromete
localidade temporal
Tamanho da linha
Tamanho da linha Tamanho da linha
Quantos bits tem a cache no
total?
supondo cache com mapeamento direto, com 64 kB de
dados, linha com uma palavra de 32 bits (4 bytes), e
endereos de 32 bits
64 kB -> 16 kpalavras, 214 palavras, neste caso 214 linhas
ndice e offset
Tamanho da cache
Localidade temporal
usualmente encontrada em laos de instrues e acessos a pilhas de dados e
variveis
essencial para a eficincia da memria cache
se uma referncia repetida N vezes durante um lao de programa, aps a
primeira referncia a posio sempre encontrada na cache
quanto maior o nmero de acessos, menor o tempo mdio de acesso.
Ideal: Tm = M Tc
Obs.: mais de um bloco copiado ao mesmo tempo.
Dessa forma, explora-se localidade espacial, fazendo
com que o tempo de acesso a MP seja M x Tc, j que os blocos
esto na cache (Tc).
Localidade espacial
tempo mdio de acesso a um byte, na primeira referncia
= MTcmemria + MTccache = (2 M Tc) / M = 2 Tc
se cada byte referenciado N vezes na cache, ento o tempo
efetivo (mdio) de acesso Tce a cada byte
2 Tc + (N 1) Tc (N + 1) Tc
Tce = =
N N
se Tc = 1 ns
Tm = 20 ns
N = 10 N = 100
Tce = h Tc + (1 h) Tm
se Tc = 1 ns, Tm = 20 ns
instrues dados
unidade unidade
de fetch de acesso
de instr. memria
pipeline de instrues
processador
Desempenho em caches
multinvel
Suponha que o processador tenha um CPI de 1,0 e que
todas as referencias acertem na cache primria a uma
velocidade de clock de 5GHz (0,2ns). O tempo de acesso
memria principal de 100ns com todos os tratamentos de
faltas. Taxa de falhas por instruo na cache primria de
2%. O quanto mais rpido ser o processador se
acrescentarmos uma cache secundria com tempo de
acesso de 5ns para um acerto ou uma falha e que seja
grande o suficiente para que a taxa de falhas na L2 seja de
0,5%?
Desempenho em caches
multinvel
Penalidade de falha para memria principal:
100ns = 500 ciclos de clock.
0,2ns/ciclo de clock
Para processador com apenas L1:
CPI total = 1,0 + ciclos de stall de memria por isntruo =
1,0 + 2% x 500 = 11,0
Em relao a L1, penalidade de falha para L2:
5ns / 0,2ns = 25 ciclos de clock
Para cache de dois nveis:
CPI total = 1 + stall L1 + stall L2 = 1 + 2%x25 + 0,5%x500
= 1+0,5+2,5 = 4,0
Portanto, com cache L2:
11,0 / 4,0 = 2,8 vezes mais rpido
Memria Virtual
Introduo
memria principal semicondutora
capacidade limitada
tempo de acesso entre 10 e 20 ns
memria secundria em disco
capacidade muito maior
tempo de latncia entre 10 e 30 ms
O problema
Nosso computador tem 32 kbytes de memria
principal
Como podemos:
rodar programas que usam mais do que 32
kbytes?
permitir que vrios usurios usem o computador?
executar vrios programas ao mesmo tempo?
Memria Virtual: a soluo!
Memria Virtual : tcnica que nos permite ver a memria principal
como uma cache de grande capacidade de armazenamento
apenas mais um nvel na hierarquia de memrias
virtual memory
disk
Tempo de acesso
Tempo mdio de acesso Tma dado por
Tma = Tm + ( 1 h ) Ts
Logo:
miss ratio precisa ser bem menor do que em cache
alta penalidade do miss => necessrio buscar blocos maiores em
disco
princpio de localidade opera sobre blocos maiores de dados ou
instrues e leva a hit ratios bem mais elevados
Mapeamento totalmente associativo das pginas
misses so tratados por software (h tempo disponivel)
tcnica de escrita write-through no uma opo. Usa-se write-
back.
Terminologia
mesma idia da cache, mas com terminologia diferente
cache MV
bloco pgina (ou segmento)
cache miss page fault
endereo endereo virtual (ou lgico)
ndice endereo real (ou fsico)
SO usa a MMU
Paginao
Por que paginao? Resposta: mecanismo simples para
traduo de endereos virtuais em reais e para gerenciamento
do espao de memria
1 M pginas de 4 kB 64 k pginas de 4 kB
Tamanho Tamanho
de pgina de pgina
n pgina = 20 bits 12 bits n pgina = 16 bits 12 bits
endereo virtual = 32 bits endereo real = 28 bits
Paginao
page fault ocorre quando a pgina virtual no est na memria
principal
mapeamento completamente associativo, mais eficiente, ajuda
a diminuir alta penalidade dos page faults
page tables
guardam a correspondncia entre pginas virtuais e pginas
reais
permitem a translao de endereos
Paginao
endereo virtual
pgina linha
page fault
mecanismo (miss) main mem.
de translao translation
de endereo table
disk mem.
translation hit
table pgina linha
endereo real
memria
disco principal
Tamanho de pginas
tamanhos de pginas variam muito, de 64 bytes a 4 Mbytes
pgina de pequeno tamanho
tempo curto para transferncia de pgina entre disco e memria
muitas pginas de diferentes programas podem estar residentes
em memria
exige page tables muito grandes, que ocupam espao em
memria
mais adequada para instrues
pgina de grande tamanho
page tables pequenas
tempo longo para transferncia de pgina entre disco e memria
mais adequada para dados
Translation Look-Aside Buffer
n de pginas na memria secundria muito grande
espao virtual de 232bytes, pginas de 4k bytes, 4 bytes por entrada na tabela
4 MBytes apenas para a tabela de pginas!!!
tamanho excessivo da main memory translation table
se tabela ficar na memria principal => dois acessos memria a cada cache miss
working set = conjunto de pginas mais provveis de serem acessadas num dado
momento, devido ao princpio de localidade
miss
TLB
ou
pgina linha
endereo real
Mecanismos de translao de endereos
mapeamento direto
0
n
comparao
simultnea endereo
memria associativa real
pgina linha
Mecanismos de translao de endereos
mapeamento conjunto associativo (1-way)
0
tag
n
memria RAM
=?
endereo
real
pgina linha
Mecanismos de translao de endereos
mapeamento conjunto associativo
A latncia rotacional mdia para a informao desejada est a meio caminho ao redor
do disco.
TB = 1ms
?
Arquitetura de Computadores
Pipeline Escalar
O Processador: Caminho de
Dados e Controle
Controle
0
M
u
x
Add ALU 1
result
Add Shift
RegDst left 2
4 Branch
MemRead
Instruction [31 26] MemtoReg
Control ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [5 0]
PC 0 0
M Instruction Read
Address [25 21] register 1 M
u u
x Read x
Instruction Read A Zero
1 Memory
[20 16] register 2 data 1 1
0 ALU ALU ALUOut
MemData Registers
Instruction M Write result
Read
[15 0] Instruction u register data 2 B 0
Write [15 11] x
Instruction Write 4 1 M
data 1 u
register data 2 x
Instruction 0 3
[15 0] M
u
x
Memory 1
data 16 32
Sign Shift
register
extend left 2
Cinco passos para execuo
Busca de instruo
Pode ser descrito de forma sucinta usando a Linguagem Transferncia-Registrador - RTL "Register-
Transfer Language
IR = Memory[PC];
PC = PC + 4;
Decodifica instruo e Busca Registrador
Leia os registradores rs e rt para o caso de precisarmos deles
Compute o endereo de desvio no caso da instruo ser um desvio
RTL:
A = Reg[IR[25-21]];
B = Reg[IR[20-16]];
ALUOut = PC + (sign-extend(IR[15-0]) << 2);
Ns no ativamos linhas de controle baseados em tipo de instruo.
Execuo, Clculo de Endereo de Memria, ou Concluso de Desvio
A ULA est desempenhando uma das 3 funes, baseada no tipo de instruo
Referncia memria: ALUOut = A + sign-extend(IR[15-0]);
Tipo-R: ALUOut = A op B;
Desvio: if (A==B) PC = ALUOut;
Acesso Memria ou Concluso de instrues tipo-R
Carrega ou armazena na memria: MDR = Memory[ALUOut]; ou Memory[ALUOut] = B;
Finaliza instrues Tipo-R: Reg[IR[15-11]] = ALUOut;
Passo de Write-back
Reg[IR[20-16]]= MDR;
Instrues levam de 3 a 5 ciclos.
Sumrio
Action for R-type Action for memory-reference Action for Action for
Step name instructions instructions branches jumps
Instruction fetch IR = Memory[PC]
PC = PC + 4
Instruction A = Reg [IR[25-21]]
decode/register fetch B = Reg [IR[20-16]]
ALUOut = PC + (sign-extend (IR[15-0]) << 2)
Execution, address ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [31-28] II
computation, branch/ (IR[15-0]) PC = ALUOut (IR[25-0]<<2)
jump completion
Memory access or R-type Reg [IR[15-11]] = Load: MDR = Memory[ALUOut]
completion ALUOut or
Store: Memory [ALUOut] = B
MIPS
Pipelines
primeira parte
1. Introduo
2. Pipelines aritmticos
3. Pipelines de instrues
4. Desempenho
5. Conflitos de memria
6. Dependncias em desvios
Introduo
Objetivo: aumento de desempenho
diviso de uma tarefa em N estgios
N tarefas executadas em paralelo, uma em cada estgio
BO BO BO
BC BC BC
Pipelines Aritmticos
exemplo: soma em ponto flutuante executada em 4 estgios
1. comparar expoentes
2. acertar expoentes dos operandos
3. somar
4. normalizar resultado
exemplo
0.0628 x 106
0.628 x 105
Pipelines de Instrues
2 estgios
fetch / decodificao, execuo
3 estgios
fetch, decodificao / busca de operandos, execuo
4 estgios
fetch, decodificao / busca de operandos, execuo, store
5 estgios
fetch, decodificao / clculo de endereo de operandos, busca de
operandos, execuo, store
6 estgios
fetch, decodificao, clculo de endereo de operandos, busca de
operandos, execuo, store
estgio s para decodificao bom em processadores CISC
Desempenho
existe um tempo inicial at que o pipeline encha
cada tarefa leva o mesmo tempo, com ou sem pipeline
mdia de tempo por tarefa no entanto dividida por N
s tarefas
N estgios
primeira tarefa: N ciclos de relgio
s 1 tarefas seguintes: s 1 ciclos de relgio
Tempo total com pipeline = N + ( s 1 )
Tempo total sem pipeline = s N
sN
Speedup terico = limite = N
N+ (s1)
Problemas no desempenho
como dividir todas as instrues num mesmo conjunto de
estgios?
como obter estgios com tempos de execuo similares?
conflitos de memria
acessos simultneos memria por 2 ou mais estgios
dependncias de dados
instrues dependem de resultados de instrues
anteriores, ainda no completadas
instrues de desvio
instruo seguinte no est no endereo seguinte ao da
instruo anterior
Conflitos de memria
problema: acessos simultneos memria
por 2 ou mais estgios
memria memria
Dependncias em desvios
efeito de desvios condicionais
se o desvio ocorre, pipeline precisa ser esvaziado
no se sabe se desvio ocorrer ou no at o momento de sua execuo
deciso sobre desvio
desvio prxima
condicional instrues abandonadas
instruo
Dependncias de desvios
instrues abandonadas no podem ter afetado contedo de registradores e
memrias
isto usualmente automtico, porque escrita de valores sempre feita
no ltimo estgio do pipeline
deve-se procurar antecipar a deciso sobre o desvio para o estgio mais
cedo possvel
desvios incondicionais
sabe-se que um desvio desde a decodificao da instruo
(segundo estgio do pipeline )
possvel evitar abandono de nmero maior de instrues
problema: em que estgio feito o clculo do endereo efetivo do
desvio?
Tcnicas de tratamento dos
desvios condicionais
1. Executar os dois caminhos do desvio
buffers paralelos de instrues
3. Eliminar o problema
delayed branch
Buffers paralelos de instrues
buffer para
instrues seqenciais
MEM branch
buffer para
instrues no-seqenciais
Predio esttica
supor sempre mesma direo para o desvio
desvio sempre ocorre
desvio nunca ocorre
at 85 % de acerto possvel
Predio dinmica
tabela look-up associativa
endereo endereo bit de validade
instruo desvio
carga do endereo
de desvio
PC
endereo
fetch
instruo
Predio dinmica
tabela look-up associativa armazena triplas
endereos das instrues de desvio condicional mais recentemente
executadas
endereos de destino destes desvios
bit de validade, indicando se desvio foi tomado na ltima execuo
quando instruo de desvio condicional buscada na memria
feita comparao associativa na tabela, procura do endereo desta
instruo
se endereo encontrado e bit de validade est ligado, o endereo de
desvio armazenado na tabela usado
ao final da execuo da instruo, endereo efetivo de destino do
desvio e bit de validade so atualizados na tabela
tabela pode utilizar diversos mapeamentos e algoritmos de substituio
Predio dinmica
variao: branch history table
contador associado a cada posio da tabela
a cada vez que uma instruo de desvio contida na tabela executada
...
contador incrementado se desvio ocorre
contador decrementado se desvio no ocorre
valor do contador utilizado para a predio
Delayed Branch
desvio no ocorre imediatamente, e sim apenas aps uma ou mais
instrues seguintes
caso mais simples: pipeline com 2 estgios fetch + execute
desvio feito depois da instruo seguinte
instruo seguinte no pode ser necessria para deciso sobre
ocorrncia do desvio
compilador reorganiza cdigo
tipicamente, em 70% dos casos encontra-se instruo para colocar
aps o desvio
pipeline com N estgios
desvio feito depois de N 1 instrues
Pipelines
Segunda parte
1. Introduo
2. Dependncias verdadeiras
3. Dependncias falsas
4. Pipeline interlock
5. Forwarding
Introduo
problema: instrues consecutivas podem
fazer acesso aos mesmos operandos
execuo da instruo seguinte pode depender de operando
calculado pela instruo anterior
instrues IF OF EX OS
ler R3 escrever R3
ADD IF OF EX OS
SUB IF OF EX OS ERRO !
escrever R3 ler R3
ADD IF OF EX OS
SUB IF stall stall OF EX OS
bolha
Dependncias falsas
Antidependncia
exemplo
1. ADD R3, R2, R1 ; R3 = R2 + R1
2. SUB R2, R4, 1 ; R2 = R4 1
instruo 1 utiliza operando em R2 que escrito pela instruo 2
instruo 2 no pode salvar resultado em R2 antes que instruo 1 tenha
lido seus operandos
write-after-read hazard
no um problema em pipelines onde a ordem de execuo das instrues
mantida
escrita do resultado sempre o ltimo estgio
problema em processadores superescalares
Dependncias falsas
Dependncia de sada
exemplo
1. ADD R3, R2, R1 ; R3 = R2 + R1
2. SUB R2, R3, 1 ; R2 = R3 1
3. ADD R3, R2, R5 ; R3 = R2 + R5
instrues 1 e 3 escrevem no mesmo operando em R3
instruo 1 tem que escrever seu resultado em R3 antes do que a instruo
3, seno valor final de R3 ficar errado
write-after-write hazard
tambm s problema em processadores superescalares
Pipeline interlock
mtodo para manter seqncia correta de leituras e escritas em
registradores
tag de 1 bit associado a cada registrador
tag = 0 indica valor no vlido, = 1 indica valor vlido
se instruo que buscada e decodificada escreve num
registrador, o tag do mesmo zerado
tag ligado quando instruo escreve o valor no registrador
outras instrues que sejam executadas enquanto tag est
zerado devem esperar tag = 1 para ler valor deste registrador
Pipeline interlock
ADD R3, R4, 4 tag
R3
ligar tag de R3
desligar
tag de R3
ler tag de R3
esperar, se tag = 0
ADD IF OF EX OS ler operando, se tag = 1
SUB IF OF OF OF EX OS
Forwarding
exemplo
ADD R3, R2, R0
SUB R4, R3, 8
instruo SUB precisa do valor de R3, calculado pela instruo ADD
valor escrito em R3 por ADD no ltimo estgio WB (write-back)
valor necessrio em SUB no terceiro estgio
instruo SUB ficar presa por 2 ciclos no 2 estgio do pipeline
IF OF EX MEM WB
IF stall stall OF EX
IF OF EX MEM WB
forwarding
IF OF EX MEM WB
IF OF EX MEM WB
Forwarding
exemplo 2
LOAD R3, 100 (R0)
ADD R1, R2, R3
forwarding: caminho interno dentro do pipeline entre a sada da memria
de dados e a entrada da ALU
IF OF EX MEM WB
forwarding
IF OF EX MEM WB
IF OF stall EX MEM
Como fazer o adiantamento de
dados?
Forwarding
Pipelines
Terceira parte
IS Instruo Sucessora.
Pipeline Superescalar
Superescalaridade
1. Introduo
2. Despacho em ordem, terminao em ordem
3. Despacho em ordem, terminao fora-de-ordem
4. Despacho fora-de-ordem, terminao fora-de-ordem
5. Janela de instrues centralizada
6. Janela de instrues distribuda
7. Exemplo
8. Renomeao de registradores
Introduo
princpios da super-escalaridade
vrias unidades de execuo
vrias instrues completadas simultaneamente em cada ciclo de
relgio
hardware responsvel pela extrao de paralelismo
na prtica, obtm-se IPC pouco maior do que 2
limitao do paralelismo intrnseco dos programas
problemas com a execuo simultnea de instrues
conflitos de acesso a recursos comuns
memria
dependncias de dados
verdadeiras
falsas - anti-dependncias, dependncias de sada
dependncias de controle (desvios)
Introduo
pipelines ou unidades funcionais podem operar com velocidades
variveis latncias
trmino das instrues pode no seguir a seqncia estabelecida no
programa
processador com capacidade de look-ahead
se h conflito que impede execuo da instruo atual, processador
examina instrues alm do ponto atual do programa
procura instrues que sejam independentes
executa estas instrues
possibilidade de execuo fora de ordem
cuidado para manter a correo dos resultados do programa
Processador com 2 pipelines
banco de registradores memria de dados
memria de
instrues
OF EX Mem OS
IF
OF EX Mem OS
exemplo: Pentium I
branch
IF OF OS
load
store
exemplo: Pentium-Pro
memria de dados
Despacho e terminao de
instrues
despacho de instrues
refere-se ao fornecimento de instrues para as unidades
funcionais
terminao de instrues
refere-se escrita de resultados ( em registradores, no caso de
processadores RISC )
alternativas
despacho em ordem, terminao em ordem
despacho em ordem, terminao fora de ordem
despacho fora de ordem, terminao fora de ordem
Despacho em ordem, terminao
em ordem
despacho de novas instrues s feito quando instrues
anteriormente despachadas j foram executadas
despacho congelado ...
quando existe conflito por unidade funcional
quando unidade funcional exige mais de um ciclo para gerar
resultado
exemplo, supondo processador que pode a cada ciclo ...
decodificar 2 instrues
executar at 3 instrues em 3 unidades funcionais distintas
escrever resultados de 2 instrues
Despacho em ordem, terminao
em ordem
decodificao execuo write-back ciclo
I1 I2 1
I3 I4 I1 I2 2
I3 I4 I1 3
I4 I3 I1 I2 4
I5 I6 I4 I3 5
I6 I5 I4 6
I6 I5 7
I6 8
restries:
fase de execuo de I1 exige 2 ciclos 6 instrues em
I3 e I4 precisam da mesma unidade funcional 6 ciclos
I5 e I6 precisam da mesma unidade funcional
I5 depende do valor produzido por I4 IPC = 1.0
Despacho em ordem, terminao
fora de ordem
despacho no espera que instrues anteriores j tenham
sido executadas
ou seja: despacho no congelado quando unidades
funcionais levam mais de um ciclo para executar
instruo
conseqncia: uma unidade funcional pode completar uma
instruo aps instrues subseqentes j terem sido
completadas
despacho ainda precisa ser congelado quando
h conflito por uma unidade funcional
h uma dependncia de dados verdadeira
Despacho em ordem, terminao
fora de ordem
decodificao execuo write-back ciclo
I1 I2 1
I3 I4 I1 I2 2
I4 I1 I3 I2 3
I5 I6 I4 I1 I3 4
I6 I5 I4 5
I6 I5 6
I6 7
6 instrues em
5 ciclos
notar: IPC = 1.2
I1 termina fora de ordem em relao a I2
I3 executada concorrentemente com ltimo ciclo de execuo de I1
tempo total reduzido para 7 ciclos
Despacho em ordem, terminao
fora de ordem
supondo a seguinte situao
R3 := R3 op R5
R4 := R3 + 1
R3 := R5 + 1
dependncia de sada
1 e 3 instruo escrevem em R3
valor final de R3 deve ser o escrito pela 3 instruo
atribuio da 1 instruo no pode ser feita aps atribuio da 3
instruo
despacho da 3 instruo precisa ser congelado
terminao fora de ordem ...
exige controle mais complexo para testar dependncias de dados
torna mais difcil o tratamento de interrupes
Despacho fora de ordem,
terminao fora de ordem
problemas do despacho em ordem
decodificao de instrues congelada quando instruo cria
conflito de recurso
dependncia verdadeira ou dependncia de sada
conseqncia: processador no tem capacidade de look-ahead alm da
instruo que causou o problema, mesmo que haja instrues posteriores
independentes
soluo
isolar estgio de decodificao do estgio de execuo
continuar buscando e decodificando instrues, mesmo que elas no
possam ser executadas imediatamente
incluso de um buffer entre os estgios de decodificao e execuo:
janela de instrues
instrues so buscadas de janela independentemente de sua ordem de
chegada: despacho fora de ordem
Despacho fora de ordem,
terminao fora de ordem
decodificao janela execuo write-back ciclo
I1 I2 1
I3 I4 I1, I2 I1 I2 2
I5 I6 I3, I4 I1 I3 I2 3
I4, I5, I6 I6 I4 I1 I3 4
I5 I5 I4 I6 5
I5 6
6 instrues em
4 ciclos
IPC = 1.5
notar:
estgio de decodificao opera a velocidade mxima, pois
independe do estgio de execuo
I6 independente e pode ser executada fora de ordem,
concorrentemente com I4
tempo total reduzido para 6 ciclos
Despacho fora de ordem,
terminao fora de ordem
supondo a seguinte situao
R4 := R3 + 1
R3 := R5 + 1
anti-dependncia
2 instruo escreve em R3
1 instruo precisa ler valor de R3 antes que 2
instruo escreva novo valor
despacho da 2 instruo precisa ser congelado at que
1 instruo tenha lido valor de R3
Janela de instrues centralizada
banco de
registradores
ALU
branch cache
de dados
Janela
IF de
instr. dado
store
cache de
instrues load end.
Janela de instrues centralizada
1 operao ID valor ID
2 operao ID valor ID
3 operao ID ID valor
5 operao ID ID ID
Janela de instrues distribuda
banco de
registradores
ALU
br memria
de dados
IF OF
dado
store
cache de
instrues load end.
estaes de reserva
Janela de instrues distribuda
1 R1 = R2 + R3
3 R2 = R7 + R3
3 R9 = R4 + R10 R2 = R7 + R3
3 R9 = R4 + R10 R2 = R7 + R3
dado
IF OF store
load end.
Buffer de reordenamento
buffer organizado como FIFO
quando decodifica-se instruo que escreve em registrador,
posio do buffer alocada para o resultado
cada posio do buffer contm
nmero do registrador original
campo para armazenamento do resultado
tag de renomeao
quando resultado est disponvel, valor escrito no buffer
valor simultaneamente enviado para estaes de
reserva e substitui tag de renomeao correspondente,
se encontrado
Arquitetura de Computadores
Multithreading, Multi/Many-core,
Redes-em-Chip, Mquinas paralelas
Multithreading e Multi-Core
Conceitos e Exemplos
Suporte a mltiplas threads
D
C
B
A
D
Threads: instruo ou bloco
C
A B C D Vertical
B
A Horizontal
D
C A B C D
B A B C D
A A B C D
IMT / BMT SMT
Suporte a mltiplas threads
Quantas instrues so executadas simultaneamente?
Freitas, 2009
Sem IMT
Com IMT
Suporte a mltiplas threads
Freitas (2008)
Suporte a mltiplas threads
Suporte a mltiplas threads
Benefcios: Desafios / Problemas:
CPI => IPC Tamanho da arquitetura.
(Superescalar). Banco de registradores
Vazo de instrues muito grande para
(Superescalar) => Vazo guardar vrios contextos.
de threads (SMT). Diviso de recursos e
Iluso de mais de um equilbrio de
ncleo de desempenho.
processamento. Conflitos de cache sem
No existe o degradao de
esvaziamento de pipeline desempenho.
comum no BMT.
No h atraso na
execuo de threads,
comum no IMT/BMT.
Processadores multi-core
(a) Superescalaridade de seis vias de execuo.
(b) Chip multi-core. Cada core superescalar com duas vias
de execuo.
Olukotun, 1996
Kongetira, 2005
Kongetira, 2005
Suporte a 4 threads IMT por ncleo (32 threads ativas, 8 threads simultneas).
Crossbar switch de 134,4 GB/s.
4 canais DDR 23GB/s.
Potncia < 80W.
Processadores multi-core
Quantas threads simultneas?
? ?
Yen, 2005
Yen, 2005
Processadores multi-core
Kanter, 2006
D H
C G Duas threads simultneas
Pipeline superescalar Chaveamento IMT
de duas vias B F Simultaneous Multithreading
(SMT)
A E
A B C D E F G H
Threads ativas A B C D E F G H
A B C D E F G H
Qual a origem do processador
multi-core?
Em uma fbrica de processadores to to
distante
O diretor para o arquiteto: Precisamos de mais
desempenho!
O arquiteto para o diretor: No possvel
aumentar o paralelismo de instrues!
O diretor para o engenheiro: Precisamos de
mais desempenho!
O engenheiro para o diretor: No possvel
aumentar a frequencia, o chip vai queimar!
Qual a origem do processador
multi-core?
Em uma fbrica de processadores to to distante
Algum diz: E a Lei de Moore!?
A Lei de Moore est relacionada capacidade de integrao.
No est relacionada ao aumento de frequencia.
Est relacionada a quantidade de transistores em um mesmo espao.
Se diminuirmos o tamanho dos transistores?
180 nm, 130 nm, 90 nm, 65 nm, 45 nm, 32 nm, 22 nm.
Vamos aumentar a quantidade de processadores dentro do chip de
processador!
Vamos cham-los de ncleos!
Portanto, no adianta apenas aumentar paralelismo de instrues, nem
frequencia de operao!
Precisamos aumentar a quantidade de ncleos!
UltraSparc-T1 (Niagara 1)
Kongetira (2005)
Kongetira (2005)
Suporte a 4 threads IMT por ncleo (32 threads ativas, 8 threads simultneas).
Crossbar switch de 134,4 GB/s.
4 canais DDR 23GB/s.
Potncia < 80W.
Power 4 e Power 5
Os processadores Power 4 e Power5
possuem cdigos binrios e estrutura
Power 4 compatveis.
Kalla (2004)
Power 5
Kalla (2004)
Diferenas bsicas:
Suporte a mltiplas threads
Cache nvel L2
Intel (2007b)
Intel Quad Core
O projeto de um processador com 4 ncleos pela Intel basicamente a
unio de dois processadores dual core.
A cache L2 compartilhada ganhou fora.
SMT no utilizado.
Intel (2007b)
AMD Quad Core
AMD (2007a)
AMD (2007a)
Nehalem, Istanbul, Shanghai
AMD Mangy Cours (12 ncleos)
Processadores Many-Core
Redes-em-Chip
(Networks-on-Chip - NoCs)
Antes do Many-core
Processador multi-core:
2 ncleos: barramento
4 ncleos: barramento ou chave crossbar
6 ncleos: barramento ou chave crossbar
8 ncleos: barramento ou chave crossbar
12 ncleos: barramento ou chave crossbar
16 ncleos: barramento ou chave crossbar!?
(Uyemura, 2002)
Processador Many-core
O problema est no fio para interconectar os
ncleos!
Problema 1: atenuao do sinal.
Sinal
Perda dos dados.
Barramento
N1 N2 N3 N998 N999 N1000
Ncleo
Processador Many-core
O problema est no fio para interconectar os
ncleos!
Problema 2: ncleos distantes no escutam
sinal.
Sinal Coliso e perda de dados.
Barramento
N1 N2 N3 N99 N100 N1000
Ncleo
Se o problema est no fio
Vamos eliminar a influncia do fio!
(Kolodny, 2009)
Rede-em-Chip
Principais caractersticas:
Composta por roteadores,
Possui pacotes de rede,
Trabalha com protocolo de roteamento,
Possui diversas topologias,
Trabalha com Qualidade-de-Servio (QoS),
tolerante a falhas,
escalvel!
Rede-em-Chip
Interconexes no escalveis:
Barramento e Chave Crossbar.
Por que?
9x9
Qual a principal limitao do barramento?
Como realizado
o roteamento?
Freitas, 2009
Tipos de Buffers
Buffers de entrada: As tcnicas de arbitragem so relativamente simples, possui uma
melhor relao de rea e potncia, alm de proporcionar um melhor desempenho para a
chave crossbar.
Freitas, 2008
Freitas, 2009
Redes Dinmicas (multi-nvel)
Banyan Omega
Freitas, 2009
Um nico caminho entre entrada e sada faz com que o roteamento seja eficiente,
podendo ser feito de forma descentralizada.
Redes Dinmicas (multi-nvel)
Redes Dinmicas (multi-nvel)
Redes Dinmicas (multi-nvel bloqueante)
Redes-em-Chip (Classificaes)
Freitas, 2009
Core Exemplo
compartilhado?
Roteador
Core
Roteador
Rede direta
Rede indireta
Viabilidade das NoCs
Adaptado de
Bjerregaard, 2006
Protocolos
Polticas e estratgias de transporte de dados em uma
NoC de responsabilidade dos protocolos.
Intel, 2006
Processadores many-core
Intel, 2007
Processadores many-core
Intel, 2007
Alves, 2009
Arquiteturas paralelas
De Rose (2003)
SISD
Classificaes de Flynn
De Rose (2003)
MISD
Classificaes de Flynn
Processadores vetoriais:
Vetor um conjunto de
dados escalares do
mesmo tipo,
armazenados em
memria.
Processamento vetorial
ocorre quando
executamos operaes
aritmticas ou lgicas
sobre vetores.
De Rose (2003)
Um processador escalar
opera sobre um ou um
par de dados.
SIMD
Classificaes de Flynn
De Rose (2003)
MIMD
Subdiviso da classe MIMD
MIMD - computadores
(paralelos / distribudos)
Multiprocessadores Multicomputadores
(memria compartilhada) (memria privada)
Classificaes segundo
compartilhamento de memria
UMA: Uniform Memory Access
De Rose (2003)
?
Memria Compartilhada
Elementos de processamento compartilham
a mesma memria.
Escalabilidade no total.
Memria Compartilhada
Programao em memria compartilhada
realizada com threads.
Exemplos:
Pthreads
OpenMP
Memria Compartilhada
O desempenho neste tipo de sistema maior
se consideramos no seu projeto o uso de
memria cache.
Alta disponibilidade.
Cluster
MPP
MPP
Cluster
MPP
MPP
MPP
Cluster
Cluster
Jaguar?
Cluster
Cluster
MPP
Cluster
Cluster
Cluster
Cluster
Junho de 2011
Cluster? de Computadores
Junho de 2011
Cluster? de Computadores
Novembro de 2011
Cluster? de Computadores
Novembro de 2011
Cluster de Computadores
Escalabilidade
O que pode impactar no ganho de desempenho
de uma aplicao paralela reduzindo sua
escalabilidade?
Resultados de Desempenho
12
Tempo de Execuo (s)
9,68 9,49
10
6 4,93 4,79
4
2,43 2,42
1,61
2 1,24
1,22
0,84 0,82 0,62
0,66
0,35 0,28
0
Seqncial 1 N 2 Ns 4 Ns 6 Ns 8 Ns 12 Ns 16 Ns
Quantidade de Ns
1 Processo / n 2 Processos / n
Grid Computacional
Uma plataforma para execuo de
aplicaes paralelas
Amplamente distribuda
Heterognea
Compartilhada
Sem controle central
Com mltiplos domnios administrativos
Grid Computacional
Analogia com rede eltrica
Grid Computacional
(fonte de recursos
computacional)
Goes , 2005
Grid Computacional
SMPs acoplamento
MPPs
NOWs
Grids distribuio