You are on page 1of 302

Arquitetura de Computadores

Arquitetura a interface entre


hardware / software
Contedo
Organizao e hierarquia de memria
Arquitetura de pipeline escalar de instrues
Arquitetura de pipeline superescalar de instrues
Suporte multithreading na arquitetura do processador
Arquitetura de processadores multi-core
Arquitetura de Redes-em-Chip (Networks-on-Chip -
NoCs)
Arquitetura de processadores many-core
Arquitetura de mquinas paralelas
Arquitetura de Computadores

Elementos, organizao e hierarquia


de Memria
Uma verso da arquitetura do
Processador MIPS
? ?
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 [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

? Instruction [15 11]


1 Write
data 1
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?

Como representar a palavra de dados?


Como armazenar uma palavra de dados?
Tipos de Memria
RAM: Random-Access Memory
ROM: Read-Only Memory
PROM: Programmable ROM
EPROM: Apagvel com radiao ultravioleta
EEPROM: Apagvel por sinais eltricos.

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 [25 21] Read


Read register 1
PC address Read
Instruction [20 16] Read data 1
register 2 Zero
Instruction 0 Registers Read
[31 0] ALU ALU
M Write data 2 0 Address Read
result 1
Instruction u register M data
u M
memory x u
Instruction [15 11] Write x
1 Data x
data 1 memory 0
Write
data
16 32
Instruction [15 0] Sign
extend ALU
control

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

100 hiato cresce 50%


a cada ano
10
DRAM
DRAM
9% / ano
1 (2X / 10 anos)
1989
1982

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.

Cada nvel contm cpia de parte da


informao armazenada no nvel superior
seguinte.
Hierarquia de Memria

Processador

Bloco de controle
Memria
Memria
Memria

Memria

Memria
Bloco
operac.

Velocidade: Mais rpida Mais lenta


Tamanho: Menor Maior
Custo: Mais alto Mais baixo
Hierarquia de Memria

Processador

Bloco de controle
Memria
Cache Memria secundria
Registrad.

On-Chip

(disco)
Cache

2 nvel principal
Bloco
(SRAM) (DRAM)
operac.

Velocidade (ns): 0,1 1 2-5 10-20 10.000.000 (10 ms)


Tamanho (bytes): 100 16 k 512 k 256 M Gs
...Ms ...Gs
Hierarquia de Memria
Hierarquia de Memria
Como a hierarquia gerenciada?
Registradores <-> memria
pelo compilador
cache <-> memria principal
pelo hardware
memria principal <-> disco
pelo hardware e pelo sistema operacional (memria
virtual)
pelo programador (arquivos)
Hierarquia de Memria
Princpio da Localidade
Espacial: se um dado referenciado, seus vizinhos tendem a serem
referenciados logo.
Temporal: um dado referenciado, tende a ser referenciado
novamente.

Como explorar o princpio de localidade numa hierarquia de


memria?
Localidade Temporal
=> Mantenha itens de dados mais recentemente acessados nos nveis da
hierarquia mais prximos do processador
Localidade Espacial
=> Mova blocos de palavras contguas para os nveis da hierarquia mais
prximos do processador
Organizaes de Memria Cache
processador gera endereo de memria e o envia cache
cache deve
verificar se tem cpia da posio de memria correspondente
se tem, encontrar a posio da cache onde est esta cpia
se no tem, trazer o contedo da memria principal e escolher
posio da cache onde a cpia ser armazenada
mapeamento entre endereos de memria principal e endereos de
cache resolve estas 3 questes
deve ser executado em hardware
estratgias de organizao (mapeamento) da cache
mapeamento completamente associativo
mapeamento direto
mapeamento set-associativo
Memrias Cache
Caractersticas
Pouco espao de armazenamento
Alto custo financeiro
Baixo tempo de acesso

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

12 modulo 8 = 4 12 modulo 4 = 0 Qualquer end.


Bloco 4 Bloco 0
Mapeamento Direto
Organizaes da Cache
Mapeamento Direto
Um bloco pode ser colocado em apenas um
slot na cache
Necessita de apenas uma comparao
Exemplo:
Endereos de 5 bits (32 palavras)
4 slots
Blocos de 4 palavras
Tamanho da linha
Tamanho da linha tirando
vantagem da localidade espacial
Organizaes da Cache
Associativa por Conjunto N-way
N blocos podem ser colocados em um mesmo
slot
Necessita de N comparaes
Exemplo:
Endereos de 5 bits (32 palavras)
4 slots
2-way
Blocos de 4 palavras
Organizaes da Cache
Associativa por conjunto
4 vias
Organizaes da Cache
Completamente Associativa
Possui um slot com N blocos
Necessita de N comparaes
Enderea o bloco diretamente
Exemplo:
Endereos de 5 bits (32 palavras)
1 slot (com 4 blocos)
Blocos de 4 palavras
Acesso Cache
Quando a cache estiver sem espao, qual
bloco ser substitudo?
Mapeamento Direto: o bloco que estiver no slot
Associativa por conjunto e Completamente
Associativa: usar uma poltica de substituio
LRU: substituir o bloco menos recentemente utilizado
FIFO: substituir o primeiro bloco que entrou na cache
Aleatrio: escolher um bloco qualquer
Acesso Cache
Quando ocorrer uma escrita, como manter a
coerncia com a memria principal?
Write-through: a palavra escrita tanto no bloco
da cache, quanto no bloco da memria principal.
Write-back: a palavra escrita somente no bloco
da cache. Quando este bloco for substitudo,
ento a palavra ser escrita na memria principal.
Cache hit e Cache miss
Cache Hit: acerto na cache, ou seja, o dado procurado j se encontra carregado na cache
Hit Time: tempo de acesso ao nvel superior, que consiste de tempo de acesso +
tempo para determinar hit/miss
Cache Miss: falta na cache, ou seja, o dado procurado ainda tem que ser buscado na
memria principal.
Miss Penalty: tempo gasto para substituir um bloco no nvel superior +
tempo para fornecer o bloco ao processador

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

cada linha tem 32 bits de dados mais um tag (32-14-2


bits) mais um bit de validade:
214 x (32 + 32 -14 -2 +1) = 214 x 49 = 784 x 210 =
784 kbits
98 kB para 64 kB de dados, ou 50% a mais
Quantos bits tem a cache no
total?
supondo cache com mapeamento direto, com 16 kB de
dados, blocos de 4 palavras, sendo cada palavra de 32
bits e endereos de 32 bits
16 kB -> 4 kpalavras, 212 palavras
Bloco de 4 palavras (22), 210 blocos (linhas)
cada bloco tem 32 bits x 4 = 128 bits de dados mais um
tag (32-10-2-2 bits) mais um bit de validade:
210 x (128 + 32 -10 -2 -2 +1) = 210 x 147 = 147 kbits

18.4 kB para 16 kB de dados, ou 15% a mais


Impacto da associatividade

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.

Tc = tempo de acesso cache


Tm = tempo de acesso memria principal
Tce = tempo efetivo de acesso cache
N Tc + Tm Tm
Tce = = Tc +
N N

se Tc = 1 ns, Tm = 20 ns, N = 10 Tce = 3 ns


N = 100 Tce = 1,2 ns
Localidade espacial
memria principal entrelaada
uma linha transferida num nico acesso entre a memria
principal e a cache, atravs de um largo barramento de dados
casamento entre tempo de acesso da cache e da memria
principal
M = nmero de mdulos da memria principal

Tc = tempo de acesso cache

Tm = tempo de acesso memria principal

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

ento Tce = 1,1 ns Tce = 1,01 ns


Impacto no desempenho
Medindo o impacto do hit ratio no tempo efetivo de acesso
Tc = tempo de acesso memria cache
Tm = tempo de acesso memria principal
Tce = tempo efetivo de acesso memria cache, considerando efeito
dos misses

Tce = h Tc + (1 h) Tm
se Tc = 1 ns, Tm = 20 ns

h = 0.85 0.95 0.99 1.0

ento Tce = 3.85 ns 1.95 ns 1.19 ns 1 ns


Impacto no desempenho
Supondo um processador que executa um programa com:
CPI = 1.1
50% aritm/lgica, 30% load/store, 20% desvios
Supondo que 10% das operaes de acesso a dados na memria sejam misses. Cada
miss resulta numa penalidade de 50 ciclos.
CPI ideal 1.1
CPI = CPI ideal + n mdio de stalls por instruo Data misses 1.5
= 1.1 ciclos + (0.30 acessos memria / instruo
Instr.misses 0.5
x 0.10 misses / acesso) x (50 ciclos / miss)
= 1.1 ciclos + 1.5 ciclos
= 2. 6
58 % do tempo o processador est parado esperando pela memria!
um miss ratio de 1% no fetch de instrues resultaria na adio de 0.5 ciclos ao CPI
mdio
Hierarquia de caches
caches integradas dentro de um processador tm limitao de
tamanho
miss penalty na cache muito grande, pela diferena entre os
tempos de acesso da cache e da memria principal
soluo: caches em dois ou trs nveis
cache integrada (L1, de primeiro nvel) de tamanho pequeno,
p.ex. 8 kbytes, e tempo de acesso menor
cache secundria (L2) tem tamanho maior, p.ex. 256 kbytes, e
tempo de acesso maior
cache de terceiro nvel (L3)
cache L3 fora do chip do processador, cache L2 dentro
misses podem ocorrer em referncias a qualquer nvel de cache
transferncias entre nveis de cache apresentam mesmos problemas
e possveis solues j discutidos
Caches de dados e instrues
dados e instrues: cache unificada x caches separadas
vantagens das caches separadas
poltica de escrita s precisa ser aplicada cache de dados
caminhos separados entre memria principal e cada cache,
permitindo transferncias simultneas (p.ex. num pipeline)
estratgias diferentes para cada cache: tamanho total, tamanho
de linha, organizao
caches separadas so usadas na maioria dos processadores, no
nvel L1
caches unificadas nos nveis L2 e L3
Caches de dados e instrues
memria principal

cache instr. cache dados

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

cpu mecanismo automtico de gerncia de


memria, que traz automaticamente para a
$ MP os blocos de informao (do disco)
caching necessrios
cache usurio tem a impresso de trabalhar com
uma memria nica, do tamanho da
memria secundria, mas com tempo de
memory acesso prximo do tempo da MP

virtual memory

disk
Tempo de acesso
Tempo mdio de acesso Tma dado por

Tma = Tm + ( 1 h ) Ts

onde Tm = tempo de acesso MP


Ts = tempo de acesso ao disco
h = hit ratio

p.ex. se Tm = 20 ns, Ts = 20 ms, h = 0.9999


ento Tma = 2,02 s ( 100 x maior do que Tm )
Por que MV diferente das
caches?
Miss penalty MUITO maior (milhes de ciclos)! Se informao
no est na memria, est no disco!

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)

endereo virtual (lgico): gerado pelo programa


deve enderear todo espao em disco
maior nmero de bits

endereo real (fsico): endereo na memria principal


menor nmero de bits
Unidade de Gerenciamento de
Memria
MMU (Memory Management Unit)
gerncia da hierarquia de memria
proteo de memria
usualmente integrada dentro do microprocessador

MMU deve fazer mapeamento do endereo virtual para


endereo real

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

espaos de memria real e virtual divididos em blocos


chamados de pginas
pginas tem tipicamente de 4 kbytes a 16 kbytes
Pginas para sistemas embarcados so de 1 kbytes

endereos virtuais e reais divididos em 2 campos


endereo da pgina
endereo da linha (ou palavra), dentro da pgina
Paginao
memria virtual = 4 GB memria real = 256 MB

pgina virtual pgina real


4 kB 4 kB

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

Como transformar endereamento original do programa no


endereamento real?

page tables
guardam a correspondncia entre pginas virtuais e pginas
reais
permitem a translao de endereos
Paginao

apenas uma funo de mapeamento dos endereos virtuais


(do disco) para endereos reais (fsicos) na memria principal
Gerncia de processos
cada processo tem sua prpria tabela de pginas
processos so compilados para espaos de endereamento
virtuais
tabela de pginas define toda a utilizao do espao de
endereamento pelo processo

sistema operacional responsvel pela alocao de espao fsico


para o espao virtual de cada processo
SO carrega tabela de pginas de cada processo

hardware possui registrador que aponta para incio da tabela de


pginas do processo atual

quando novo processo passa a ser ativo, sistema operacional s


precisa atualizar valor deste registrador
Paginao
main memory translation table (MMTT)
implementada em hardware
tamanho = n de pginas na memria principal

disk memory translation table (DMTT)


implementada em software, armazenada na memria
principal
tamanho = n de pginas em disco

algoritmo de substituio, em software, para selecionar pgina


da memria principal a ser substituda em caso de page fault

bom desempenho garantido pelo princpio de localidade


Paginao
processador

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

Translation Look-Aside Buffer (TLB)


implementado em hardware
traduz endereos virtuais para endereos reais
s inclui pginas do working set
pode ser considerado como uma cache da MMTT

Main Memory Translation Table (MMTT)


implementada em software
Translation Look-Aside Buffer
endereo virtual
pgina linha

miss
TLB

disk memory miss main mem.


translation translation hit
table table carga
TLB

ou

pgina linha
endereo real
Mecanismos de translao de endereos
mapeamento direto

endereo de pgina virtual utilizado como endereo de uma


memria cujo contedo o endereo de pgina real procurado
tamanho = n de pginas na memria virtual
utilizado na MMTT (em software), mas no na TLB
pgina n linha endereo virtual

0
n

pgina linha endereo real


Mecanismos de translao de endereos
mapeamento completamente associativo
memria associativa contm endereos virtual e real
comparao simultnea com todos os endereos virtuais

pgina n linha endereo virtual

comparao
simultnea endereo
memria associativa real
pgina linha
Mecanismos de translao de endereos
mapeamento conjunto associativo (1-way)

tag ndice n linha endereo virtual

0
tag
n

memria RAM

=?

endereo
real
pgina linha
Mecanismos de translao de endereos
mapeamento conjunto associativo

endereos divididos em 3 campos: tag, ndice, linha


endereo da pgina = tag e ndice
1way associativo: cada posio da tabela contm um par
< end. pgina virtual, end. pgina real >
apenas um comparador
endereos de pginas virtuais armazenados na tabela tm ndices
diferentes
nway associativo: cada posio da tabela contm n pares de
endereos de pgina
n comparadores
n endereos de pginas virtuais armazenados na tabela tm
mesmo ndice
Disco
Desempenho do Disco
Tempo de Disco = Tempo de busca + Latncia rotacional + Tempo de transferncia

A latncia rotacional mdia para a informao desejada est a meio caminho ao redor
do disco.

TB = 1ms

LRM = 0,5 rotao = 0,5 rotao = 0,0056s = 5,6ms


5400 RPM 5400RPM/60(seg./min.)

TT = 1kB / 100MB/s = 1*210 / 50*106 = 20,48s

TD = 1ms + 5,6ms + 0,02048ms = 6,62048ms


Viso geral

?
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 [25 21] Read


Read register 1
PC address Read
Instruction [20 16] Read data 1
register 2 Zero
Instruction 0 Registers Read
[31 0] ALU ALU
M Write data 2 0 Address Read
result 1
Instruction u register M data
u M
memory x u
Instruction [15 11] Write x
1 Data x
data 1 memory 0
Write
data
16 32
Instruction [15 0] Sign
extend ALU
control

Instruction [5 0]

Memto- Reg Mem Mem


Instruction RegDst ALUSrc Reg Write Read Write Branch ALUOp1 ALUp0
R-format 1 0 0 1 0 0 0 1 0
lw 0 1 1 1 1 0 0 0 0
sw X 1 X 0 0 1 0 0 0
beq X 0 X 0 0 0 1 0 1
Implementao de um nico ciclo
Memria de Leitura Operao Memria Escrita no
Classe Total
Instrues Registrador UAL de Dados registrador
Formato R 2 1 2 (16) 0 1 6 ns
Load Word 2 1 2 2 1 8 ns
Store Word 2 1 2 2 7 ns
Branch 2 1 2 5 ns
Jump 2 2 ns
Formato R sem e com ponto flutuante

O ciclo de clock definido em funo da durao da instruo


mais longa = 8 ns.
Uma mquina com ciclo de clock varivel: 2ns a 8ns.
Ciclo de clock: 8x24% + 7x12% + 6x44% + 5x18% + 2x2% = 6,3 ns
Ganho de desempenho: Tempo execuo clock fixo / Tempo de
execuo clock varivel = 8 / 6,3 = 1,27
No caso de operaes em ponto flutuante podemos ter para a
multiplicao: 2 + 1 + 16 + 1 = 20 ns
A mesma relao pode ser feita para operaes em ponto
flutuante e o ganho favorvel ao clock varivel pode ser ainda
maior.
Abordagem multiciclo
Quebre a instruo em passos, cada passo leva um ciclo
balanceie a quantidade de trabalho a ser feita
restrinja cada ciclo a usar apenas uma unidade funcional maior
No final de cada ciclo
armazene os valores para uso em ciclos posteriores (a coisa mais
fcil a ser feita)
introduza registradores internos adicionais

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

Memory read completion Load: Reg[IR[20-16]] = MDR


Abordagem multiciclo
Exemplo de sinais de controle de uma
instruo para abordagem multiciclo
Busca da instruo:
LerMem =1, IREsc = 1, IouD = 0, UALFonteA = 0, UALFonteB = 01, UALOp =
00, PCEsc = 1
Decodificao e busca do registrador:
UALFonteA = 0, UALFonteB = 11, UALOp = 00
Execuo, clculo do endereo de memria ou efetivao do desvio
condicional:
Instrues de referncia memria: UALFonteA = 1, UALFonteB = 10, UALOp =
00
Instrues do tipo R: UALFonteA = 1, UALFonteB = 00, UALOp = 10
Desvio condicional: UALFonteA = 1, UALFonteB = 00, UALOp = 01,
PCEscCond = 1, FontePC = 01
Desvio incondicional: FontePC = 11, PCEsc = 1
Escrita em memria ou registrador:
Instrues de referncia memria: LerMem = 1 ou EscMem = 1, se lw, IouD = 1
Instrues do tipo R: RegDst = 1, EscReg = 1, MemParaReg = 0
Leitura de memria e escrita em registrador:
MemParaReg = 1, EscReg = 1, RegDst = 0
Questo simples
Quantos ciclos leva para executar esse cdigo?
lw $t2, 0($t3)
lw $t3, 4($t3)
beq $t2, $t3, Label #assuma no
add $t5, $t2, $t3
sw $t5, 8($t3)
Label: ...
O que est acontecendo durante o oitavo ciclo de
execuo?
Em que ciclo acontece realmente a adio de $t2 e $t3?
Pipelines

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

Diagrama espao tempo


estgio 4 T1 T2 T3
estgio 3 T1 T2 T3 T4
estgio 2 T1 T2 T3 T4
estgio 1 T1 T2 T3 T4
tempo
Introduo
bloco operacional e bloco de controle
independentes para cada estgio
necessidade de buffers entre os estgios
estgio 1 buffer estgio 2 buffer estgio 3 buffer

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.157 x 106 0.842 x 105

0.157 x 106 0.0842 x 106

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

fetch fetch store


instruo decode operandos execute operando

memria memria memria


Processadores RISC
memria acessada apenas por instrues LOAD e STORE
apenas um estgio do pipeline faz acesso a operandos de memria
apenas 1 instruo pode estar executando acesso a dados a cada
instante
se caches de dados e instrues so separadas, no h nenhum conflito de
acesso memria

fetch fetch acesso store


instruo operandos execuo memria operando

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

2. Prever o sentido do desvio


predio esttica
predio dinmica

3. Eliminar o problema
delayed branch
Buffers paralelos de instrues

buffer para
instrues seqenciais

fetch restante do pipeline

MEM branch

buffer para
instrues no-seqenciais
Predio esttica
supor sempre mesma direo para o desvio
desvio sempre ocorre
desvio nunca ocorre

compilador define direo mais provvel


instruo de desvio contm bit de predio, ligado / desligado pelo
compilador
incio de lao ( ou desvio para frente ): desvio improvvel
final de lao ( ou desvio para trs ): desvio provvel

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

caso particular: instruo precisa de


resultado anterior (p.ex. registrador) para
clculo de endereo efetivo de operando
tipos de dependncias de dados
dependncia verdadeira
antidependncia
dependncia de sada
Dependncias verdadeiras
exemplo
1. ADD R3, R2, R1 ; R3 = R2 + R1
2. SUB R4, R3, 1 ; R4 = R3 1

instruo 2 depende de valor de R3 calculado


pela instruo 1
instruo 1 precisa atualizar valor de R3 antes
que instruo 2 busque os seus operandos
read-after-write hazard
pipeline precisa ser parado durante certo
nmero de ciclos
Dependncias verdadeiras
instruction operand operand
fetch fetch execute store

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

SUB R5, R3, 8 banco de registradores

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

supe-se escrita no banco de registradores na primeira


metade do ciclo e leitura na segunda metade
Forwarding
caminho interno dentro do pipeline entre a
sada da ALU e a entrada da ALU
evita stall do pipeline

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

1. Pipeline do DLX (MIPS)


2. Dependncias no Pipeline
3. Forwarding
4. Exemplos
5. Instrues de Desvio no Pipeline
Pipeline do DLX
Clock
Instruo 1 2 3 4 5 6 7 8 9
i IF ID EX MEM WB
i+1 IF ID EX MEM WB
i+2 IF ID EX MEM WB
i+3 IF ID EX MEM WB
i+4 IF ID EX MEM WB

IF Instruction Fetch MEM Memory Access


ID Instruction Decode WB Write Back
EX - Execution
Pipeline do DLX
Dependncias no Pipeline
Forwarding
Forwarding nem sempre possvel
Forwarding
Forwarding
Forwarding
Forwarding
Instrues de Desvio no Pipeline
Desvio IF ID EX MEM WB
IS IF stall stall IF ID EX MEM WB
IS + 1 IF ID EX MEM WB
IS + 2 IF ID EX MEM
IS + 3 IF ID EX
IS + 4 IF ID
IS + 5 IF

IS Instruo Sucessora.

Uma instruo de desvio causa um atraso de trs ciclos no pipeline:


Um ciclo por repetir o estgio de busca (IF);
Dois ciclos ociosos (stall).
Descartando instrues
Instrues de Desvio no Pipeline
Instrues de Desvio no Pipeline

Os atrasos devido s instrues de desvio podem ser reduzidos atravs


da antecipao do clculo do endereo alvo do desvio e do teste Zero?
para a etapa de decodificao do pipeline (ID).
Exerccio 1
Explicar o que acontece na execuo das instrues abaixo em ordem
de entrada no pipeline do processador:

1. Loop: add $t1, $s3, $s3


2. add $t1, $t1, $t1
3. add $t1, $t1, $s6
4. lw $t0, 0($t1)
5. bne $t0, $s5, Exit # considere existncia do desvio
6. add $s3, $s3, $s4
7. j Loop # jump - instruo de desvio incondicional
8. Exit:
Exerccio 1
Explicar o que acontece na execuo das instrues abaixo em ordem
de entrada no pipeline do processador:

1. Loop: add $t1, $s3, $s3


2. add $t1, $t1, $t1
3. add $t1, $t1, $s6
4. lw $t0, 0($t1)
5. bne $t0, $s5, Exit # considere existncia do desvio
6. add $s3, $s3, $s4
7. j Loop # jump - instruo de desvio incondicional
8. Exit: instruo

Para cada seta, explicar o que acontece:


Bolha (s/n)? Por que? Quais blocos funcionais do pipeline esto envolvidos?
Quantos ciclos no total? CPI? Pode acrescentar desenho do pipeline.
E se o adiantamento estiver desabilitado?
Exerccio 2
Explicar o que acontece na execuo das instrues abaixo em ordem
de entrada no pipeline do processador:

1. Loop: sub $s2, $s3, $s4


2. lw $s0, 4($s2)
3. lw $s1, 0($s3)
4. slt $t0, $s0, $s1
5. beq $t0, $zero, Loop # considere que no h desvio
6. sub $t0, $t0, $t0
7. beq $t0, $zero, Loop # considere que h desvio
Exerccio 2
Explicar o que acontece na execuo das instrues abaixo em ordem
de entrada no pipeline do processador:

1. Loop: sub $s2, $s3, $s4


2. lw $s0, 4($s2)
3. lw $s1, 0($s3)
4. slt $t0, $s0, $s1
5. beq $t0, $zero, Loop # considere que no h desvio
6. sub $t0, $t0, $t0
7. beq $t0, $zero, Loop # considere que h desvio

Para cada seta, explicar o que acontece:


Bolha (s/n)? Por que? Quais blocos funcionais do pipeline esto envolvidos?
Quantos ciclos no total? CPI? Pode acrescentar desenho do pipeline.
E se o adiantamento estiver desabilitado?
Arquitetura de Computadores

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

cache de instrues precisa fornecer dobro de instrues por


ciclo
Unidades de execuo
especializadas
memria de ALU
instrues

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

janela de instrues um buffer que armazena todas as


instrues pendentes para execuo
instruo enviada para unidade de execuo
correspondente quando operandos esto disponveis
operandos buscados no banco de registradores
se operando no est disponvel, identificador de
registrador colocado na instruo
quando instruo atualiza este registrador, janela de
instrues pesquisada associativamente e
identificador do registrador substitudo pelo valor do
operando
Janela de instrues centralizada
registr.
instr. cdigo destino oper. 1 reg.1 oper. 2 reg.2

1 operao ID valor ID

2 operao ID valor ID

3 operao ID ID valor

4 operao ID valor 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

cada unidade de execuo tem uma estao de reserva


estao tem capacidade para armazenar 2 a 6 instrues
instrues so decodificadas e enviadas para a estao de reserva
apropriada
instrues so enviadas para unidade de execuo quando operandos
esto disponveis
mesmo mecanismo de identificao de registradores nas instrues
quando registradores so atualizados, valores so passados diretamente
para as estaes de reserva
busca associativa para substituio de identificadores por valores
Algoritmo de Tomasulo: combinao de estaes de reserva
distribudas com renomeao de registradores
Exemplo
supondo um processador superescalar com a seguinte configurao:
4 unidades funcionais - 2 somadores, 1 multiplicador, 1 load/store
pode executar 4 instrues por ciclo em cada estgio do pipeline
latncias
somador - 1 ciclo
multiplicador - 2 ciclos
load/store - 2 ciclos
deve ser executado o seguinte programa:
ADD R1, R2, R3
LW R10, 100 (R5)
ADD R5, R1, R6
MUL R7, R4, R8
ADD R2, R7, R3
ADD R9, R4, R10
ADD R11, R4, R6
Exemplo
ciclo somador 1 somador 2 multiplicador load/store

1 R1 = R2 + R3

ADD R1, R2, R3 dependncias verdadeiras


LW R10, 100 (R5)
ADD R5, R1, R6 dependncias falsas
MUL R7, R4, R8
ADD R2, R7, R3
ADD R9, R4, R10
ADD R11, R4, R6
Exemplo

ciclo somador 1 somador 2 multiplicador load/store

1 R1 = R2 + R3 R10 = mem (R5+100)

2 R10 = mem (R5+100)

ADD R1, R2, R3 dependncias verdadeiras


LW R10, 100 (R5)
ADD R5, R1, R6 dependncias falsas
MUL R7, R4, R8
ADD R2, R7, R3
ADD R9, R4, R10
ADD R11, R4, R6
Exemplo

ciclo somador 1 somador 2 multiplicador load/store

1 R1 = R2 + R3 R10 = mem (R5+100)

2 R5 = R1 + R6 R10 = mem (R5+100)

ADD R1, R2, R3 dependncias verdadeiras


LW R10, 100 (R5)
ADD R5, R1, R6 dependncias falsas
MUL R7, R4, R8
ADD R2, R7, R3
ADD R9, R4, R10
ADD R11, R4, R6
Exemplo

ciclo somador 1 somador 2 multiplicador load/store

1 R1 = R2 + R3 R7 = R4 * R8 R10 = mem (R5+100)

2 R5 = R1 + R6 R7 = R4 * R8 R10 = mem (R5+100)

ADD R1, R2, R3 dependncias verdadeiras


LW R10, 100 (R5)
ADD R5, R1, R6 dependncias falsas
MUL R7, R4, R8
ADD R2, R7, R3
ADD R9, R4, R10
ADD R11, R4, R6
Exemplo

ciclo somador 1 somador 2 multiplicador load/store

1 R1 = R2 + R3 R7 = R4 * R8 R10 = mem (R5+100)

2 R5 = R1 + R6 R7 = R4 * R8 R10 = mem (R5+100)

3 R2 = R7 + R3

ADD R1, R2, R3 dependncias verdadeiras


LW R10, 100 (R5)
ADD R5, R1, R6 dependncias falsas
MUL R7, R4, R8
ADD R2, R7, R3
ADD R9, R4, R10
ADD R11, R4, R6
Exemplo

ciclo somador 1 somador 2 multiplicador load/store

1 R1 = R2 + R3 R7 = R4 * R8 R10 = mem (R5+100)

2 R5 = R1 + R6 R7 = R4 * R8 R10 = mem (R5+100)

3 R9 = R4 + R10 R2 = R7 + R3

ADD R1, R2, R3 dependncias verdadeiras


LW R10, 100 (R5)
ADD R5, R1, R6 dependncias falsas
MUL R7, R4, R8
ADD R2, R7, R3
ADD R9, R4, R10
ADD R11, R4, R6
Exemplo

ciclo somador 1 somador 2 multiplicador load/store

1 R1 = R2 + R3 R11 = R4 + R6 R7 = R4 * R8 R10 = mem (R5+100)

2 R5 = R1 + R6 R7 = R4 * R8 R10 = mem (R5+100)

3 R9 = R4 + R10 R2 = R7 + R3

ADD R1, R2, R3 dependncias verdadeiras


LW R10, 100 (R5)
ADD R5, R1, R6 dependncias falsas
MUL R7, R4, R8
ADD R2, R7, R3
ADD R9, R4, R10
ADD R11, R4, R6
Renomeao de registradores
antidependncias e dependncias de sada so causadas pela
reutilizao de registradores
efeito destas dependncias pode ser reduzido pelo aumento do nmero
de registradores ou pela utilizao de outros registradores disponveis
exemplo
ADD R1, R2, R3 ; R1 = R2 + R3
ADD R2, R1, 1 ; R2 = R1 + 1 antidependncia em R2
ADD R1, R4, R5 ; R1 = R4 + R5 dependncia de sada em R1
utilizando 2 outros registradores R6 e R7 pode-se eliminar as
dependncias falsas
ADD R1, R2, R3 ; R1 = R2 + R3
ADD R6, R1, 1 ; R6 = R1 + 1
ADD R7, R4, R5 ; R7 = R4 + R5
Renomeao de registradores
no possvel criar nmero ilimitado de registradores
arquitetura deve manter compatibilidade quanto aos registradores visveis para
o programador
soluo
utilizar banco de registradores interno, bem maior do que o banco visvel
renomear registradores temporariamente
cada registrador visvel que escrito numa instruo renomeado para um
registrador interno escolhido dinamicamente
no exemplo anterior, supondo registradores internos Ra, Rb, Rc, Rd, Re, Rf,
Rg
ADD Ra, Rb, Rc
ADD Rd, Ra, 1
ADD Re, Rf, Rg
antidependncia e dependncia de sada foram eliminadas
Buffer de reordenamento
buffer de
reordenamento
ALU
banco de
registradores
cache de memria
instrues br
de dados

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

Qual o impacto na arquitetura?

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

10% a 30% 50% a 100%


ILP TLP
Processadores multi-core

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

Suporte a 8 threads por ncleo (64 threads ativas, 16 threads simultneas).


Instrues executadas em ordem, previso de desvio esttico ou pela ltima
deciso tomada.
Crossbar switch de 268,8 GB/s.
Processadores multi-core
SMT combinado com IMT em chip multi-core.
Superescalaridade associada a SMT com entrelaamento de
instrues.
Aumenta desempenho para cargas de trabalho de propsitos
gerais.
Reduz tamanho e complexidade da arquitetura superescalar do
processador.

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.

Diferena no acesso a cache L3.

A grande diferena: o Power 5


suporte a duas threads simultneas
(SMT) por ncleo.
O Power5 possui dois ncleos
Power 5 fsicos, mas quatro ncleos lgicos
de processamento.

Kalla (2004)
Power 5

Kalla (2004)

A informao mais interessante no projeto do Power5 justamente o fato do


desempenho no melhorar com o suporte SMT por ncleo. Os principais motivos so:
O nmero limitado de unidades de execuo que so compartilhados entre as duas
threads.
O alto consumo da largura de banda de memria pelas duas threads.
Esta a principal razo para que o Power5 tambm suporte apenas uma thread por
ncleo.
Intel Dual Core
Os processadores Pentium D e Core Duo, so compostos por dois
ncleos, mas sem suporte a hyperthreading. Fisicamente e logicamente
so dois ncleos internos.

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!?

48 ncleos: como interconectar!?


Processador Many-core
O problema est no fio para interconectar os
ncleos!

(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!

Rede-em-Chip sem fio!


Rede-em-Chip ptica!
Rede-em-Chip reconfigurvel!
Se o problema est no fio
Vamos eliminar a influncia do fio!

Rede-em-Chip sem fio!


Rede-em-Chip ptica!
Rede-em-Chip reconfigurvel!

Rede-em-Chip com fio, mas fio curto!


Do Barramento ao roteador

Evoluo da interconexo global


para NoC.
(a) fio longo dominado pela resistncia,
(b) adio de repetidores ou buffers,
(c) repetidores se tornam latches,
(d) latches evoluem para roteadores de
NoC.

(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?

Imaginem uma chave crossbar 99x99?


vivel? Por que?
Origem da NoC?
a) Fio longo dominado
pela resistncia.
b) Adio de
repetidores ou
buffers.
c) Repetidores se
tornam latches.
d) Latches evoluem
Kolodny, 2009 para roteadores de
NoC.
Redes-em-Chip

Arquitetura tpica de um roteador


Topologia
mesh
Freitas, 2009

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.

Buffers de sada: Em funo de N entradas conectadas a cada um dos buffers de sada,


a chave crossbar precisa ser N vezes mais rpida. A adoo de buffers de sada no a
mais adequada para alto desempenho. No entanto, existem vantagens em se tratando da
eliminao do bloqueio de pacotes que no receberam permisso de envio porque o
primeiro pacote da fila ainda no teve liberao de uma determinada sada. Este
problema conhecido como head of the line blocking e pode acontecer nas solues
com buffers de entrada.

Buffers de crosspoint: Cada ponto de conexo da chave crossbar possui um buffer.


utilizada a tcnica de roteamento chamada de self-routing. Neste caso, em cada
crosspoint seria necessrio alm do buffer um decodificador para deciso de envio ou
no do pacote. Esta soluo aumenta o tamanho e a potncia consumida da chave
crossbar.
Preocupaes no projeto de NoC
Deadlock: a representao de uma dependncia
cclica. Neste caso, um pacote no consegue progredir e
fica restrito a um subconjunto de estados ou roteadores.

Livelock: a representao de uma contnua


retransmisso do pacote sem atingir o n destino.
Comum em protocolos de roteamento.

Starvation: a representao da no alocao de um


recurso devido a postergao indefinida de acesso ao
mesmo. Comum em protocolos de arbitragem.
Redes-em-Chip (topologias)

Freitas, 2008

(a) Estrela (d) Torus


(b) rvore (e) Hipercubo
(c) Mesh (f) Pipeline
Redes-em-Chip (Classificaes)

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.

A definio do protocolo descreve as principais


caractersticas de funcionamento da rede.

Os protocolos precisam ser capazes de:


Garantir a entrega de dados.
Confiabilidade da rede.
A melhor rota.
Melhor desempenho, entre outros.
Processadores many-Core

Intel, 2006
Processadores many-core

Intel, 2007
Processadores many-core

Intel, 2007

Por que a Intel estuda dois tipos de topologias?


Processadores many-core
Cache compartilhada

Alves, 2009
Arquiteturas paralelas

Conceitos Principais e Classificaes


Arquiteturas monoprocessadas
Os processos compartilham o mesmo
processador.

S.O. pode ser implementado com o conceito


de monoprogramao ou multiprogramao.
Arquiteturas monoprocessadas
Monoprogramao: recursos do computador
alocados para uma nica tarefa at o seu
trmino.

Multiprogramao: processador alterna a


execuo de vrios processos.
Arquiteturas multiprocessadas
Multiprocessada: vrios elementos de
processamento.

Tipos de arquiteturas multiprocessadas:


Memria compartilhada
Memria distribuda
Classificaes de Flynn
Classificao de Flynn (Flynn, 1972) segundo o
fluxo de instrues e fluxo de dados.
SD (Single Data) MD (Multiple Data)
SISD SIMD
SI (Single Instruction) Mquinas von Mquinas Array
Neumann
MISD MIMD
MI (Multiple Instruction) Sem representante Multiprocessadores e
at agora multicomputadores
De Rose (2003)
Classificaes de Flynn

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

NUMA: Non-Uniform Memory Access

CC-NUMA: Cache-Coherent NUMA

NCC-NUMA: Non-Cache-Coherent NUMA

SC-NUMA: Software-Coherent NUMA

COMA: Cache-Only Memory Architecture

NORMA: Non-Remote Memory Access


Classificaes segundo
compartilhamento de memria

De Rose (2003)

A linha tracejada indica que atravs de um software que implemente


coerncia de cache, as mquinas NCC-NUMA e NORMA podem se
transformar em mquinas SC-NUMA.
Memria Compartilhada

?
Memria Compartilhada
Elementos de processamento compartilham
a mesma memria.

Programao realizada atravs de varivel


compartilhada. Maior facilidade na
construo de programas paralelos.
Memria Compartilhada

Neste tipo de arquitetura existe uma


limitao de nmero de ns.

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.

Surge o problema de coerncia de cache.

Soluo em software ou em hardware.


Memria Compartilhada
As mquinas de memria compartilhada
podem ser UMA ou NUMA.
UMA Uniform memory access
NUMA Non-uniform memory access
Memria Compartilhada
Exemplos de arquiteturas de memria
compartilhada:
Dual Pentium (UMA)
Quad Pentium (UMA)
UMA
NUMA
NUMA
NUMA
Existem dois tipos de arquiteturas NUMA:
NC-NUMA: NUMA que no utiliza cache
CC-NUMA: (Cache-Coherent NUMA) -
NUMA com cache (e coerncia de cache)
CC-NUMA
Coerncia de cache
(Diretrio)

Cada mdulo de memria possui um diretrio local que


armazena as informaes sobre onde as cpias dos blocos esto
residentes.

Os protocolos baseados em diretrio enviam comandos de


consistncia seletivamente para aquelas caches que possuem
uma cpia vlida do bloco de dados compartilhado.
Coerncia de cache
(Snooping)

Coerncia de cache com snooping. Um Write-invalidate. Um tipo de protocolo


mtodo para manter coerncia de cache em de snooping em que o processador de
que todos os controladores de cache escrita faz com que todas as cpias em
monitoram o barramento para determinar se outras caches sejam invalidadas antes de
possuem ou no uma cpia do bloco mudar sua cpia local, o que permite
desejado. atualizar os dados locais at que outro
processador os solicite.
Coerncia de cache
(MSI, MESI, MOESI)
Estados que cada bloco na memria cache possui:
Invlido (I): bloco invlido na memria cache.
Shared (S) ou Compartilhado: bloco s foi lido e pode
haver cpias em outras memrias cache.
Modificado (M): apenas essa cache possui cpia do bloco
e a memria principal no est atualizada.
Exclusivo (E): Apenas essa cache possui cpia do bloco e
a memria principal est atualizada.
Owner (O) : Essa cache supre o dado em caso de leitura
com falha no barramento uma vez que a memria no
est atualizada. Outras caches podem ter cpia do dado.
Memria Distribuda
Grupo de computadores autnomos (ns)
que trabalham juntos como um recurso
nico.

Os ns so interconectados atravs de redes


de alto desempenho.
Memria Distribuda
Escalabilidade absoluta e incremental.

Alta disponibilidade.

Excelente custo benefcio.


Memria Distribuda
Comunicao realizada atravs de passagem
de mensagens.
MPI (Message Passing Interface) ou
PVM (Parallel Virtual Machine).

Podemos usar o conceito de memria


compartilhada. Software ou suporte em
hardware.
Memria Distribuda
Cluster ou aglomerado de computadores.

Grids ou grades computacionais.

So usados em gerenciadores de bancos de


dados, com servidores WEB.

So usados principalmente com processamento


paralelo.
Cluster de Computadores
Cluster? de Computadores
MPP

Cluster

MPP
MPP

Cluster

MPP

MPP
MPP
Cluster

Cluster

Rmax: desempenho mximo alcanado usando Linpack. Novembro de 2009


Rpeak: desempenho de pico terico.
Valores em Tera Flops.
Cluster? de Computadores

Rmax: desempenho mximo alcanado usando Linpack. Junho de 2011


Rpeak: desempenho de pico terico.
Valores em Tera Flops.
Jaguar Cray XT5-HE
Opteron Six Core 2.6 GHz
Cluster? de Computadores

Jaguar?

Rmax: desempenho mximo alcanado usando Linpack. Novembro de 2011


Rpeak: desempenho de pico terico.
Valores em Tera Flops.
Cluster? de Computadores Cores Rmax Rpeak Power
(TF) (TF) (kW)

Cluster

Cluster

MPP

Cluster

Cluster

Cluster

Cluster

nica da Amrica do Sul no Top500 Novembro de 2009


Cluster? de Computadores

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?

Rede. Por que?

Balanceamento de carga. Por que?

Regies sequenciais dos programas. Por que?


Lei de Amdahl
Uma aplicao pode ter uma grande regio
de instrues que devem ser executadas
sequencialmente.
G: ganho de desempenho.
Ts: trecho da regio sequencial.
Tp: trecho da regio paralela.
n: nmero de processadores
Ts Tp 1 1
G ( n)
Ts
Tp 1 Ts Ts
Ts
n n
Lei de Amdahl
Um programa possui 60% do cdigo puramente seguencial.
40% pode ser paralelizado.
Dois ncleos sero utilizados.

Portanto: 1/(0.6 +0.4/2) = 1/0.8 = 1.25


Ganho de desempenho ser de 25%.

Se o nmero de ncleos tende ao infinito.


Portanto: 1/0.6 = 1.67
Ganho de desempenho de 67% no mximo.
Anlise de Eficincia
Tempo sequencial = 0.05 segundos
Tempo paralelo = 0.019 segundos
Quantidade de processadores = 32
Speedup ideal = 32
Speedup obtido = (tempo sequencial/tempo paralelo)
= 0.05/0.019 = 2.63

Eficincia = (Speedup obtido / Qtd processadores) = 0.05 / (0.019 * 32) =


0.0822 * 100% = 8.22%

Ou seja, o speedup alcanado cerca de 12.16 vezes menor do que o


speedup ideal.
A eficincia de 8.22% mostra que a soluo paralela na verdade
ineficiente.
Avaliao de desempenho

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

SMP: Symmetric Multiprocessor (memria compartilhada)


MPP: Massively Parallel Processors
NOW: Network of Workstations
Grid Computacional
TeraGrid
4 centros de supercomputao norte-americanos
Cada centro com milhares de processadores dedicados ao TeraGrid
Canais de altssima velocidade (40 GBits/s)
Poder agregado de 13,6 TeraFlops
SETI@home
Ciclos ociosos de 1.6 milhes de processadores espalhados em 224 pases
Computa em mdia a uma velocidade de 10 Teraflops
Grid5000
Instrumento cientfico para estudo de sistemas paralelos e distribudos de larga
escala.
O objetivo inicial era alcanar 5000 processadores, atualizado para ncleos e
alcanado no inverno de 2008-2009.
So 9 sites na Frana e 1 site no Brasil na cidade de Porto Alegre (UFRGS).
112 ncleos na UFRGS, 14 ns DELL Power Edge 1950, 2 Intel Xeon Quad Core 1.6GHz.
Computao em Grid
Caractersticas das solues para computao em Grid:

Globus: conjunto de servios que facilitam computao em grade,


podendo ser utilizados para submisso e controle de aplicaes,
descoberta de recursos, movimentao de dados e segurana.

Condor: um sistema que objetiva fornecer grande quantidade de


poder computacional a mdio e longo prazo utilizando recursos
ociosos na rede. Os autores salientam que o Condor objetiva vazo
e no desempenho.

MyGrid: foca a execuo de aplicaes paralelas Bag-of-Tasks


(tarefas independentes executadas em qualquer ordem). Aplicaes
Bag-of-Tasks se adequam melhor a heterogeneidade e
dinamicidade do grid.
Explorao do Paralelismo
atravs de GPUs
Conceitos
Graphic Processing Units (GPUs)
Graphic Processing Units (GPUs)
Aplicaes grficas eram executadas em CPUs.

Aceleradores grficos surgiram para operar sobre pixels baseados


em pipelines fixos/dedicados.
Algoritmos denominados shaders melhoram a qualidade dos grficos
gerados.
Shaders: algoritmos de propsito geral que utilizam vrtices e pixels
como entrada e sada.

GPUs so processadores grficos com pipelines programveis


capazes de suportar os shaders.

Nova terminologia: GPGPU ou General-Purpose GPU, j que os


shaders so basicamente algoritmos de prposito geral.
GPUs se tornaram uma alternativa para processamento paralelo de
propsito geral.
Graphic Processing Units (GPUs)

rea proporcional dos componentes bsicos


em um chip de uma CPU comparativamente ao
chip de uma GPU (NVIDIA, 2009b).
Graphic Processing Units (GPUs)

Codinome para ncleo


que compe o Core 2 e
o Xeon.

rea do chip de uma GPU (GeForce GTX 280,


chip GT200) e de uma CPU (Penryn, da Intel)
Graphic Processing Units (GPUs)

TPC: Thread Processor Cluster


SM: Streaming Multiprocessor
SP: Streaming Processor
SFU: Super Function Unit
SIMT: Single Instruction Multiple Thread (semelhante ao SIMD)
Graphic Processing Units (GPUs)

Evoluo da performance aritmtica mxima de


GPUs e CPUs entre 2003 e 2008 (NVIDIA, 2009)
Graphic Processing Units (GPUs)

Evoluo da largura de banda de GPUs e CPUs,


entre 2003 e 2007 (NVIDIA, 2009)
Graphic Processing Units (GPUs)

CUDA: Computer Unified Device Architecture


Driver para a primeira camada de abstrao do hardware.
API CUDA Run time library que executa sobre a API do
driver.
Graphic Processing Units (GPUs)
Um programa em CUDA tem a seguinte
sequencia de operaes:
O host inicializa um vetor com dados.
O array copiado da memria do host para a
memria do dispositivo CUDA.
O dispositivo CUDA opera sobre o vetor de
dados.
O array copiado de volta para o host.
Graphic Processing Units (GPUs)

Hierarquia de Memria CUDA (NVIDIA,


2009)
Graphic Processing Units (GPUs)
Bloco: unidade de organizao
das threads.
Grid: Unidade bsica onde esto
distribudos os blocos.
Graphic Processing Units (GPUs)
Estrutura de um
programa:
Definir funes em
linguagem C (kernels)
Executados N vezes por
N threads em paralelo
SIMT
Graphic Processing Units (GPUs)
A API CUDA introduz 4 extenses linguagem
C:
Qualificadores do tipo de funo (lgica de
execuo, GPU ou CPU).
Qualificadores do tipo de varivel (onde est
armazenada, GPU ou CPU).
Uma nova sintaxe de chamada de funo para
configurar blocos e grid.
Quatro variveis internas para acessar ndices e
dimenses dos blocos, grid e threads.
Graphic Processing Units (GPUs)
Qualificadores de tipo de funo:
__device__: define funo que ser executada
na GPU.
__global__: define o que a plataforma CUDA
chama de kernel, ou seja, a funo chamada a
partir da CPU que ser executada na GPU.
__host__: define funo que ser executada na
CPU e s pode ser chamada a partir da CPU.
Graphic Processing Units (GPUs)
Qualificadores de tipo de varivel:
__device__: define varivel que reside na memria
global da GPU. Acessveis por todas as threads de
um grid e pela CPU.
__constant__: a diferena est no fato de que a
varivel reside na memria constante da GPU.
__shared__: variveis que residem na memria
compartilhada da GPU, so acessveis apenas pelas
threads de um mesmo bloco. Tempo de vida igual
ao tempo de vida do bloco.
Graphic Processing Units (GPUs)
Sintaxe da chamada de funo:
Informar no cdigo as dimenses do grid e do
bloco.
Entre o nome da funo e os argumentos usar
um array bidimensional onde constam as
dimenses do grid e do bloco.
Delimitado pelos caracteres <<< e >>>.
Graphic Processing Units (GPUs)
Variveis auxiliares:
Acesso aos ndices das threads por dimenses:
threadIdx.x, threadIdx.y, threadIdx.z
Acesso ao identificador de cada bloco dentro do
grid: blockIdx.x, blockIdx.y
Acesso aos ndices dos blocos de threads:
blockDim.x, blockDim.y, blockDim.z
Acesso aos valores de dimenses de grids:
gridDim.x, gridDim.y
Graphic Processing Units (GPUs)
Thread (1,2) do bloco (1,1)
threadIdx.x = 1
threadIdx.y = 2
blockIdx.x = 1
blockIdx.y = 1
blockDim.x = 4
blockDim.y = 3
gridDim.x = 3
gridDim.y = 2
Graphic Processing Units (GPUs)
Produto escalar em CUDA 16. __global__ void mult(unsigned int* C, unsigned int* A,
unsigned int* B) {
(VASCONCELOS, 2009) 17. int i = blockDim.x * blockIdx.x + threadIdx.x;
18. C[i] = A[i] * B[i];
1. int main(){ Alocao de mem. na GPU 19. }
2. 20.
3. cudaMalloc((void**) &d_A, mem_size); 21. __global__ void soma(unsigned int* C, unsigned int* total) {
4. cudaMalloc((void**) &dev, sizeof(unsigned int)); 22. unsigned int tid = threadIdx.x;
5. 23. unsigned int i = blockIdx.x * blockDim.x + threadIdx.x;
6. cudaMemcpy(d_A, h_A, mem_size,
24.
cudaMemcpyHostToDevice);
7. cudaMemcpy(d_B, h_B, mem_size, 25. __shared__ unsigned int
cudaMemcpyHostToDevice); x[VECTOR_LENGTH/THREAD_BLOCKS];
8. Cpia p/ mem. da
GPU 26. x[tid] = C[i];
9. mult<<<blocos, threads>>>(d_C, d_A, d_B); 27. __syncthreads();
10. soma<<<blocos, threads>>>(d_C, d_Result); 28.
11. 29. for(int s=blockDim.x/2; s>0; s=s/2) {
12. cudaMemcpy(host, dev, sizeof(unsigned int), 30. if(tid < s) x[tid] += x[tid + s];
cudaMemcpyDeviceToHost);
31. __syncthreads();
13. cudaFree(d_A);
32. }
14. }
33.
15. Cpia dados p/ CPU 34. if (tid == 0) atomicAdd(total, x[0]);
Liberar memria. 35. }
Graphic Processing Units (GPUs)

You might also like