Memória - Informática

Propaganda
Arquitetura de Computadores
Celso Alberto Saibel Santos
Professor do Depto. Informática
UFES - Universidade Federal do Espírito Santo
1
O que é a Arquitetura de um Computador?
Arquitetura de Computadores =
Conjunto de Instruções
(ISA - Instruction Set Architecture)
+
Organização da Máquina
2
Arquitetura Básica dos Computadores Atuais
CPU: ALU
(datapath)
+ control
interrupts
Cache
main bus
Main
Memory
I/O
Controller
I/O
Controller
I/O
Controller
Graphics
display
Keyboard
3
Implementação um pipeline
Busca
Instrução
Decodifica
instrução
Ordem de
execução
1
Executa
Operação
Acessa
Memória
Escreve
resultado
1 clock
2
1
3
2
4
3
5
4
1
2
1
3
2
1
5
4
3
2
1
5
4
3
2
5
4
3
5
4
5
tempo
4
Problemas a vista: conflitos do pipeline
• Conflitos estruturais: com uma memória única para
dados e instruções, existe um conflito entre o ciclo de
busca de instrução e escrita em memória; a solução é
usar duas memórias independentes (design)
• Conflitos de controle: obrigam a parada do pipeline
− Instruções de desvio
− Paradas geram bolhas no pipeline
Ordem de
execução
add $4,$5,$6
beq $1,$2,40
lw $3,300($0)
busca
di
ULA
mem
w reg
busca
di
ULA
mem
bolha
bolha
bolha
busca
di
w reg
bolha
ULA
bolha
mem
w reg
tempo
5
Outros conflitos
• Conflitos por dados: a próxima instrução utiliza um
operando da instrução anterior que ainda não está
pronto:
add $s0, $t0, $t1
sub $t2, $s0, $t1
Ordem de
execução
add$s0,$t0,$t1
sub $t2,$s0,$t3
busca
di
ULA
busca
di
mem
w reg
di
ULA
mem
w reg
tempo
6
Soluções clássicas para conflitos
• Reordenação do código (compilador): mudar a ordem
de execução sem que o resultado da execução global
seja alterado pode evitar as bolhas
• Incluir instruções do tipo NOP
• Adiantamento de instruções
• Pré-suposição da realização do desvio condicional (if)
• Predição dinâmica em loops e desvios baseado em
dados armazenados (história)
• E em pipelines superescalares? Mais complexidade...
7
Próximo passo...
• Hierarquia de Memória:
reduzindo o tempo de acesso
aos dados
8
Os componentes clássicos de um computador
Computer
Processor
Memory
Devices
Control
Input
Datapath
Output
• O processador deve buscar cada dado e instrução na
memória durante a execução de um programa: o
tempo de acesso é fundamental para o desempenho!
9
Desafios para a memória...
• Desempenho da CPU aumenta 25-50% p.a.
• Desempenho das memórias, cerca de 7% p.a.
Capacidade
Lógica: 2x em 3 anos
Velocidade
2x em 3 anos
DRAM: 4x em 3 anos 1.4x em 10 anos
Disco:
2x em 3 anos 1.4x em 10 anos
• Valores típicos em 2004:
10
Características das memórias DRAM
11
Tipos de Memória Baseada em Semicondutores
Reflexões Sobre Arquiteturas de Memórias
• A “velocidade” de memória aumenta muito menos
rapidamente que a dos processadores (Lei de Moore)
• Para máquinas + rápidas, é necessário projetar um
sistema de memória de forma a não desperdiçar os
ganhos adquiridos com o processador
• Solução: hierarquia de memória e caches
• É desejável que o usuário “acredite” que ele tem um
espaço de memória enorme, mesmo se a quantidade de
memória é sabidamente limitada
• O SO precisa suprir o mesmo espaço de memória para
vários usuários sem que haja conflito
• Solução: Memória Virtual
13
Melhorando o desempenho: Princípio da localidade
• Localidade Temporal
− Uma palavra de memória que acaba de ser referenciada, tende a
ser novamente referenciada
• Localidade Espacial
− Itens cujos endereços estão próximos daqueles que acabam de ser
referenciados tendem a ser referenciados também brevemente
• Conclusão: usar mecanismos que permitam armazenar
temporariamente o material com que se trabalha
• Observar a estrutura dos programas:
− Programas acessam somente uma pequena porção de memória
num curto espaço de tempo
variáveis - temporal
laços - temporal e espacial
percurso de arrays - espacial
14
Idéia de hierarquia para a memória
• Dividir o espaço de memória em níveis com tamanhos,
velocidades e custos diferentes por nível
• O princípio da localidade pode ser aplicado diretamente à
hierarquia de memória: quanto mais rápida a memória,
mais próxima ao processador
Processador
Velocidade Tam
+ rápida
menor
Custd: $/bit
Exemplo
+ alto
128K SRAM
Memória
Nível 1
Memória
Nível 2
1G DRAM
Memória
Nível 3
+ lenta
maior
+ baixo
500 G Mag. Disk
capacidade
15
Hierarquia de Memória atualmente
Capacidade
Tempo de Acesso
Registradores CPU
~100 Bytes
~10 ns
Cache
K Bytes
10-100 ns
Estágio
Unidade
+ rápido
Registradores
Operandos Inst.
SO
512-64K bytes
Disco
Arquivos
Tape
infinito
sec-min
contr. cache
8-128 bytes
Memória
Páginas
Disco
G Bytes
ms
prog./compil.
1-8 bytes
Cache
Blocos
Memória Principal
M Bytes
100ns-1us
Nível + Alto
Tape, ...
user/operador
Mbytes
Maior
Nível + baixo
Fonte: Slides Patterson
16
Funcionamento a hierarquia (1)
• Unidades de mapeamento entre níveis: blocos
• Se um bloco está no nível i, ele também estará presente
no nível i+1 da hierarquia
17
Funcionamento a hierarquia (1)
• Pode conter diversos níveis: a gerência é feita entre
apenas entre níveis adjacentes
• Se a informação solicitada pelo processador estiver
presente no nível superior da hierarquia, ocorre um
“acerto” (hit)
• Se a informação não puder ser encontrada nesse nível,
ocorre uma “falha” (miss) e um nível mais baixo é
acessado para que o bloco desejado seja recuperado
• A medida de desempenho da hierarquia é relacionada à
taxa de acertos dos acessos: fração dos acessos à memória encontrados no nível superior
• Outra medida: taxa de falhas = 1 – taxa de acertos
18
Funcionamento a hierarquia (2)
Desempenho ~ tempo de acesso à memória
1. Tempo de acerto (ta): tempo para acessar o nível
superior da hierarquia (RAM) + tempo necessário para
se determinar se o acesso é ou não um acerto
2. Penalidade por falta (tf): tempo para substituir um dos
blocos do nível superior pelo bloco do nível inferior
com a informação desejada + tempo para enviar o
dado ao processador
ta << tf: tempo de acesso ao nível inferior é muito maior
• Hierarquia de memória tem influência direta na gerência de memória feita pelo SO, no código gerado pelo
compilador e até mesmo no tipo de aplicação a ser
executada na máquina.
19
Conceitos básicos sobre Memória Cache
• Cache: esconderijo! ☺
• De maneira abrangente: qualquer memória gerenciada que tira
proveito das propriedades de localidade
• Como fazer para guardar os dados e instruções recentemente
usados numa cache:
− Como saber se um item de dado está ou não na cache?
− Se estiver, como achá-lo?
• Caches com mapeamento direto mapeiam cada endereço de
memória numa locação específica da cache
− Várias locações de memória têm a mesma locação na cache
− Usa um mecanismo modulo N (N é potência de 2)
− Precisa de uma tag indicando o endereço atualmente armazenado
− Precisa de um bit de validade indicando se o dado está na cache
20
Cache com mapeamento direto simples
Memória
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Cache diretamente mapeado
Tamanho = 4
0
1
2
3
•Cache de 4 (22) palavras
•Endereços de memória “mod 4”
mapeiam locações de cache
•Muitos endereços de memória são
mapeados p/ uma mesma locação
•Usa log2N bits de endereços para
a indexaçao da cache
21
Acesso à cache: Rótulo (tag) e Índice (index)
Considerando endereços de memória de 32-bits :
Uma cache com mapeamento direto de 2N bytes:
− Índice (index): Os N bits mais baixos dos endereços de memória
− Rótulo (tag): Os (32-N) bits mais altos dos endereços de memória
31 Endereços de Memória
Cache Tag
Bit validade
N
Ex: 0x50
Armazenados como
parte do cache “state”
0x50
:
:
0
Cache Index
2 N Bytes
Cache com Mapeamento Direto
Byte 0
0
Byte 1
1
Byte 2
2
Byte 3
3
:
Byte 2N -1
Fonte: Slides do Patterson
Ex: 0x03
2 N- 1
22
Alguns comentários…
• Cache com mapeamento direto precisa ser grande
suficiente , por ex, para que as últimas instruções num
laço de execução não se sobreponham sobre as
anteriores (a cache com 4 blocos é apenas exemplo)
• Podem existir 2 caches o numa arquitetura: uma para
instruções e outra para dados
− Em geral, não é mais eficiente que apenas uma cache para um
tamanho fixo de cache
− Mas, o dobro de vazão pode ser compensar
• No start-up, a cache está vazia (ou inválida) e tem-se
uma taxa de falhas elevada inicialmente
• A abordagem trata assim da localidade temporal, mas
não da localidade espacial
23
Cache com 64KB (DECStation 3100)
Endereços de Memória
31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ...
14
Index
16
V
Tag
... 7 6 5 4 3 2 1 0
Deslocamento
Data-32bits
16k
entradas
Tag
16
Valid
32
EQ
AND
Data
HIT
24
Sequência de acessos para leitura numa cache (1)
(1) Estado inicial da cache, após inicialização da máquina
25
Sequência de acessos para leitura numa cache (2)
(2) Referência ao endereço 10110 provoca uma falta
26
Sequência de acessos para leitura numa cache (3)
(2.1) Tratamento da falta: buscar no nível inferior (ex. memória principal)
o bloco com endereço 10110
27
Sequência de acessos para leitura numa cache (4)
(3) Referência ao endereço 11010 provoca uma falta
28
Sequência de acessos para leitura numa cache (5)
(3.1) Tratamento da falta: buscar no nível inferior (ex. memória principal) o
bloco com endereço 11010
29
Sequência de acessos para leitura numa cache (6)
(4) Referência ao endereço 10000 provoca uma falta
30
Sequência de acessos para leitura numa cache (7)
(4.1)Tratamento da falta: buscar no nível inferior (ex. memória principal) o
bloco com endereço 10000
31
Sequência de acessos para leitura numa cache (8)
(5) Referência ao endereço 00011 provoca uma falta
32
Sequência de acessos para leitura numa cache (9)
(5.1) Tratamento da falta: buscar no nível inferior (ex. a memória
principal) o bloco com endereço 00011
33
Sequência de acessos para leitura
(6) Referência ao endereço 10010 provoca uma falta
34
Sequência de acessos para leitura (9)
(6.1) Tratamento da falta = buscar no nível inferior (ex. memória principal)
o bloco com endereço 00011, escrevendo-o na posição 010 da cache
35
Localidade temporal
• A cache mostrada anteriormente apenas explora a
localidade temporal
• Para tratar com a localidade espacial um bloco de mais
de uma palavra é transferido para a cache no caso de
uma falha (miss)
• No exemplo seguinte, a cache tem o mesmo tamanho
(64KB), mas 4K entradas para blocos de 16 bytes cada:
− Os próximos devem gerar acertos ao invés de faltas
− Isso pode provocar um aumento significativo na taxa de
acertos, mesmo com pequenos tamanhos de blocos
36
Cache com 64KB (DECStation 3100)
Endereços de Memória
31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ...
... 7 6 5 4 3 2 1 0
Block offset
Index
V
Tag
Data-0
Data-4
Data-8
Data-12
4k
entries
Tag
Valid
EQ
Select
AND
HIT
Data
37
Outro exemplo de cache 16KB
38
Resultados de desempenho das duas caches
Programa Tam. Bloco TaxaI-miss Taxa D-miss Taxa Comb. miss
gcc
1
4
6.1%
2.0%
2.1%
1.7%
5.4%
1.9%
spice
1
4
1.2%
0.3%
1.3%
0.6%
1.2%
0.4%
Fonte: Livro P&H p. 329
Tamanho da cache: 128KB (64KB Dados + 64KB Instruções)
39
Tamanho do Bloco de Cache
• Em geral, um tamanho maior leva a vantagem da localidade
espacial dos dados, MAS:
− Maior tamanho de bloco significa maior penalidade de falhas (miss
penalties) – mais tempo para encher um bloco
− Se o tamanho do bloco é muito grande em relação ao tamanho da
cache, a taxa de falhas irá aumentar
TMédio de Acesso = tacerto x (1 – taxa_acerto) + penalidade_falha x tfalhas
Taxa de
Acerto
Taxa de
Falhas
Explora a Localidade
Espacial
Poucos blocos:
compromete a
localidade temporal
Tam. Bloco
Tam. Bloco
Tempo Médio de
Acesso
Aumenta Miss Penalty
& Miss Rate
Tam. Bloco
Fonte: Patterson slides
40
Taxa de Falha x Tamanho de Bloco - SPEC92
Fig.7.8 – p.481
41
Acessos para escrita
• Não são tão simples em se tratando de cache
− Deve-se assegurar que o dado foi escrito na memória
− Do contrário, memória e cache podem se tornar
inconsistentes
• Solução mais simples: write-through
− Memória e cache escritas ao mesmo tempo
− Mas se for necessário uma espera para isso, os
valores da cache serão perdidos!
Usar um buffer (FIFO) no caminho de escrita para a
memória
Buffers permitem “equalizar” o serviço quando a taxa de
chegada de requisições é variável (algo como cadeiras num
banco para os clientes esperarem…)
42
Outras soluções para escrita…
• Escrita somente no retorno: write-back
− Atualização quando o bloco for susbstituído e se
houver ocorrido alteração
• Escrita somente uma vez : write-once
− Ideal para sistemas multiprocessadores, que
compartilham um mesmo barramento
− O controlador da cache escreve a atualização na
memória principal sempre que o bloco for atualizado
pela primeira vez na cache – ou seja, faz um writethrough e ainda alerta os demais componentes
ligados ao barramento que houve a alteração
43
Comparando as três soluções
• write-through : pode acontecer uma grande quantidade
de escritas desnecessárias na memória…
• write-back : minimiza o problema, mas a memória pode
ficar temporariamente desatualizada, obrigando que
outros dispositivos acessem os valores via cache…
• write-once : conveniente, mas apenas em sistemas
com múltiplas CPUs; utilização excessiva do barramento
pode ser um fator de queda de desempenho…
44
Indo mais adiante...
• Outros Modelos de mapeamento
− Conjunto Associativo; Totalmente Associativo
− Direto = one-way associativo
45
Indo mais adiante...
46
Indo mais adiante...
47
Indo mais adiante...
• Elementos de Projeto de uma Cache
− Definição do tamanho
− Função de mapeamento de dados Memória/cache
− Algoritmos de substituição de dados na cache
− Política de escrita na cache
48
Próximo passo...
• Hierarquia de Memória:
Memória Virtual, Paginação,
Aumento de Desempenho
49
Requisitos de um Sistema de Memória
• Dar a ilusão de um vasto espaço de memória
total memória para todos os jobs simultâneos > memória real
um job pode usar um espaço de endereços > memória atual
• Acesso rápido à memória
• Transparência:
− Livrar os programadores da tarefa de otimizar da
utilização da memória → cache:memória:disco
• Espaço de endereçamento uniforme:
− Não se pode saber onde os programas serão
carregados nem quais partes dos programas serão
mudadas e recarregadas durante a execução
− Ideal: os endereços situados entre 0 e 2N-1
50
Endereço virtual x endereço físico
• O programador usa um espaço de endereçamento
virtual “imenso”, por ex. 263 bytes
− Ele pode escrever programas como se todas essas
posições de memória existissem realmente!
− O SO e a arquitetura de memória gerenciam o
mapeamento endereço virtual – físico
− Se o programa é realmente muito grande, deve existir
uma forma de armazená-lo na memória da máquina –
seja em memória ou em disco (“memória de massa”)
• A memória real é normalmente muito menor que o
espaço virtual de endereçamento
− o tanto quanto puder ser suportado…
− endereços físicos ou reais?
51
Memória Virtual
• Mapeamento endereços virtuais – memória real é
feita em blocos – tipicamente de 1 a 8KB
• Blocos de memória virtual são chamados páginas
• Páginas de memória virtual que estão no disco são
chamadas de paginadas-fora (paged-out)
• Uma referência feita a uma página que não está na
memória principal é chamada de falha de página
(page fault)
• A transformação entre endereços virtuais em
endereços físicos (memory mapping) é feito através
de uma tabela de paginação (page table)
52
Mapeamento de endereços virtuais
Prog A Virtual
Addresses
0x0000
Physical Memory
Addresses
Prog B Virtual
Addresses
Unused
Unused
0x1000
0x2000
Unused
Memory
address
space
0x3000
0x4000
0x5000
0x6000
0x7000
Virtual
Address
Space
No memory
:::
Disk Addresses
:::
0xD000
0xE000
0xF000
53
Mapeamento de Memória
• O mapeamento Endereço Virtual x Endereço
Físico é também chamado de translação de
endereço
• No INTEL 80386: espaço de end. lógico de 4GB
(232) – 220 páginas de 4KB – endereços de 12 bits.
Uma tabela de página poderia ocupar 4MB de
memória (entradas de 4 bytes)
• Endereços virtuais são divididos em Número da
Página Virtual (NPV) e offset da página (12 bits,
nesse caso)
• Mapeamento de memória feito observando-se o
NPV na tabela de páginas e concatenando com o
offset da página
• Nas arquiteturas atuais, o tamanho das tabelas
de página varia (esquema de diretório de tabelas)
54
Processo de Mapeamento
• Considere um espaço de endereçamento virtual de 4
GB e um espaço físico em memória de 1 GB
4GB
31 30 29 28 ..
..
15 14 13 12 11 10 9
Número da Página Virtual
..
..
3 2 1 0
Deslocamento
Translação
29 28 ..
..
15 14 13 12 11 10 9
Número da Página Física
..
..
3 2 1 0
Deslocamento
1GB
55
Falhas com Memória Virtual
• Custo de uma falha é muito alto: em torno de ms
para acessar um bloco de disco
• As páginas devem ser grandes o suficiente para
amortizar o alto custo de acesso (4 KB, 8 KB, e
mesmo MB …)
− Mas não tão grandes para evitar a fragmentação…
− Tamanho fixado pelo hardware (MMU)
• Re-estruturação de programas reduz taxa de falhas
• Processar as falhas de página por SW e não por HW
− Algoritmos sofisticados podem ser empregados
− Pequenos aumentos na miss rate podem ser recompensadas
pela redução de custos do algoritmo
• Evitar a política write-through:
− Escritas em níveis mais baixos são muito demoradas
56
Tabelas de Páginas (1)
• As páginas deveriam poder ser localizadas em
qualquer lugar conveniente na memória
− Qualquer página virtual pode ser mapeada em
qualquer página física disponível
− Chamado mapeamento totalmente associativo
− Tabela de páginas faz o mapeamento e reside na
memória
− Cada programa tem sua própria tabela de página
− O hardware tem um registrador de tabela que aponta
para a tabela de página
• O diagrama anterior de mapeamento torna-se, então:
57
Tabelas de Páginas (2)
4GB
31 30 29 28 ..
..
15 14 13 12 11 10 9
Número da Página Virtual
Validade
..
3 2 1 0
Deslocamento
20
Registrador da tabela de página
..
Endereço Virtual
12
Número da página física
Page
table
18
Se Zero :
Falha de
página
1GB
29 28 ..
..
15 14 13 12 11 10 9
Número da página física
..
..
3 2 1 0
Deslocamento
Endereço Físico
58
Falhas de Página (Page Faults) (1)
• Quando o valid bit é zero ele indica que a página não
está na memória principal
• O controle deve ser passado ao SO para buscar a
página (ou criar a página, para páginas de dados…)
− Tipicamente o SO cria uma imagem do programa no
disco quando o programa começa
− Busca as partes relevantes quando é preciso
− Onde olhar? – um mapeamento é necessário para
mostrar onde estão as imagens no disco
− Pode ser parte da tabela de páginas ou ser feita em
separado
59
Falhas de Página (Page Faults) (2)
• Se todas as páginas na memória física estão em uso e
o S.O. precisa substituir uma – Qual será escolhida?
• Política de substituição de páginas
− Localidade Temporal é um critério normal
− Menos recentemente usada (MRU ou LRU)
i.e., sendo os acessos recentes às páginas: 10, 12, 9, 7, 11, 10.
MRU numa falha de página trocaria a página 12; na próxima
falha, substituiria a página 9, etc.
• Tabelas de páginas tem um bit de uso ou referência
− “Levado a 1” quando a página é acessada
− Pode ser periodicamente “levado a 0” pelo S.O.
− Possibilita que o S.O. tenha uma visão aproximada das
páginas recentemente utilizadas
60
Falhas de Página (Page Faults) (3)
• Para um endereço virtual de 32-bits, páginas de 4KB
(12-bits) com 4 bytes por entrada na tabela de página
− 220 pag x 4 bytes = 4MB
− Isto para cada programa ativo → muito memória
“presa” em tabelas de páginas não usadas
• Existem soluções para o problema, não abordadas
nesse curso
− Ex: registradores de limites
61
Operações de escrita
• Write-through para o nível mais baixo da hierarquia
(o disco nesse caso) é impraticável nesse caso
devido ao alto custo para a escrita no disco
• A idéia é “salvar as escritas” para depois executá-las
• Write-back quando a página é substituída!
• Entretanto...
− Custoso e desnecessário fazer write-back para
páginas para as quais não forem feitas escritas (por
ex., páginas de programa)
− Assim, as tabelas de páginas têm um bit de sujeira
(dirty bit) por entrada que é setado quando dados são
escritos na página
− Se esse dirty bit é setado quando a página precisa ser
substituída, ele é escrito em write-back para a
imagem do programa no disco
62
Fazendo isso rápido…
• Tabela de páginas em máquinas atuais está na
memória principal:
− 2 registradores: um de base da tabela na memória e
outro indicando o no. de entradas
• Portanto ...
− Cada acesso à memória lógica de um programa
necessita de dois outros acessos à memória fícia
para achar a tabela de páginas
• Como agilizar isso?
− Localidade de referências novamente
• Inserir numa cache as tabelas de página mais
recentementes utilizadas:
− Translation-lookaside buffer = cache inserida dentro
da MMU (memory management unit)
63
Translation-Lookaside Buffer (TLB)
Número da
página virtual Validade
Rótulo
End. Página Física
TLB
Validade Página Física ou End. Disco
Memória
Física
Tabela de Página
Disco
64
Outro exemplo de TLB
65
Translation-Lookaside Buffer
• TLB é uma cache
• Se não existir a entrada na TLB, é preciso buscá-la na
tabela de páginas que está na memória principal
• A tabela de páginas tem uma entrada para cada página
• O TLB e a página usam o dirty bit e o reference bit
• Usar a abordagem write-back para esses bits da TLB
para a página de tabelas numa falha é muito eficiente
66
Exemplos de Sistemas de Memória
Characteristic
Virtual address
Physical address
Page size
TLB organization
Intel Pentium Pro
32 bits
32 bits
4 KB, 4 MB
A TLB for instructions and a TLB for data
Both four-way set associative
Pseudo-LRU replacement
Instruction TLB: 32 entries
Data TLB: 64 entries
TLB misses handled in hardware
Characteristic
Cache organization
Cache size
Cache associativity
Replacement
Block size
Write policy
Intel Pentium Pro
Split instruction and data caches
8 KB each for instructions/data
Four-way set associative
Approximated LRU replacement
32 bytes
Write-back
PowerPC 604
52 bits
32 bits
4 KB, selectable, and 256 MB
A TLB for instructions and a TLB for data
Both two-way set associative
LRU replacement
Instruction TLB: 128 entries
Data TLB: 128 entries
TLB misses handled in hardware
PowerPC 604
Split intruction and data caches
16 KB each for instructions/data
Four-way set associative
LRU replacement
32 bytes
Write-back or write-through
67
Memória x área do processador
68
Próximo passo...
• Arquiteturas Avançadas:
multicomputadores e
multiprocessadores
69
Sistemas Multiprocessadores (I)
• Mais que uma CPU
• Em geral confinadas a um mesmo espaço físico
(gabinete, rack, ...)
• Fortemente acoplados
• Comunicação via memória compartilhada
70
Sistemas Multiprocessadores (II)
CPU
CPUcache
Bus
Mem
71
Sistemas Multiprocessadores (III)
CPU
Switch
(Ômega)
Mem
72
Sistemas Multiprocessadores (IV)
CPU
Mem
Crossbar
73
Sistemas Multicomputadores (I)
• Mais que uma CPU
• Máquinas podem estar geograficamente distantes
• Sistemas fracamente acoplados
• Cada processador possui sua memória local
própria e a comunicação é feita por passagem de
mensagens
74
Sistemas Multicomputadores (II)
Mem
local
CPU
Rede
75
Sistemas Multicomputadores (III)
MALHA TRIDIMENSIONAL (k=3, n=3)
Mem local
CPU
76
Desafios
•
•
•
•
•
Balanceamento de carga entre processadores
Adequação aplicação x arquitetura
Coerência de memória (cache)
Linguagem de programação e compiladores
Limitações físicas: temperatura, comprimento das
ligações, custo
77
“Cadeia alimentar dos computadores” até 1990
(chegando ao limite)
Mini Computer
Workstation
(futuro incerto)
PC
Mainframe
Vector Supercomputer
MPP
78
Cadeia alimentar dos computadores: Clusters substituem
as “grandes máquinas”
79
Download