Arquitetura de Computadores
Celso Alberto Saibel Santos
Professor do Depto. Informática Professor do Depto. Informática
UFES - Universidade Federal do Espírito Santo
O que é a Arquitetura de um Computador?
Arquitetura de Computadores =
Conjunto de Instruções
( ISA - Instruction Set Architecture )
+
Organização da Máquina
Arquitetura Básica dos Computadores Atuais
CPU: ALU (datapath)
+ control Cache
main bus interrupts
I/O Controller
I/O Controller
I/O Controller Main
Memory
Graphics
display Keyboard
Implementação um pipeline
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
Busca Instrução Decodifica
instrução Executa Operação
Ordem de execução
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 clock Operação
Acessa Memória
Escreve
resultado tempo
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
busca di ULA mem w reg
busca di ULA mem w reg
busca di ULA mem w reg
tempo Ordem de
execução
add $4,$5,$6 beq $1,$2,40 lw $3,300($0)
bolha bolha bolha bolha bolha
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
busca di ULA mem w reg
busca di
tempo Ordem de
execução
add$s0,$t0,$t1 sub $t2,$s0,$t3
ULA mem w reg di
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)
• 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...
Próximo passo...
• Hierarquia de Memória:
reduzindo o tempo de acesso
aos dados
Os componentes clássicos de um computador
Processor Computer
Control
Memory Devices
Input
• 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!
Datapath Output
Desafios para a memória...
• Desempenho da CPU aumenta 25-50% p.a.
• Desempenho das memórias, cerca de 7% p.a.
Capacidade Velocidade Lógica: 2x em 3 anos 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:
Disco: 2x em 3 anos 1.4x em 10 anos
Características das memórias DRAM
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
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
• 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
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
Velocidade Tam Custd: $/bit Exemplo Processador
+ rápida menor + alto 128K SRAM
1G DRAM
+ lenta maior + baixo 500 G Mag. Disk Memória
Nível 1 Memória
Nível 2 Memória
Nível 3
Hierarquia de Memória atualmente
Registradores CPU
~100 Bytes
~10 ns Cache K Bytes 10-100 ns Capacidade
Tempo de Acesso
Cache
Registradores
Operandos Inst.
Blocos
Estágio Unidade
prog./compil.
1-8 bytes
contr. cache 8-128 bytes
Nível + Alto + rápido
Memória
Memória Principal M Bytes
100ns-1us
Disco G Bytes ms
Tapeinfinito
sec-min Tape, ...
Disco
Blocos
Páginas
Arquivos
8-128 bytes
SO512-64K bytes
user/operador Mbytes
Nível + baixo Maior
Fonte: Slides Patterson
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
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 é
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 à me- mória encontrados no nível superior
• Outra medida: taxa de falhas = 1 – taxa de acertos
Funcionamento a hierarquia (2)
Desempenho ~ tempo de acesso à memória
1. Tempo de acerto (t
a): 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 (t
f): 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 com a informação desejada + tempo para enviar o dado ao processador
t
a<< t
f: tempo de acesso ao nível inferior é muito maior
• Hierarquia de memória tem influência direta na gerên-
cia 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.
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
Cache com mapeamento direto simples
0 1 2 3 4 5 6 7 8
Memória
0 1 2 3 Cache diretamente mapeado
Tamanho = 4
13 14 15 16 17 18 8 9 10 11
12
•Cache de 4 (2
2) 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 log
2N bits de endereços para a indexaçao da cache
19
Acesso à cache: Rótulo (tag) e Índice (index)
Considerando endereços de memória de 32-bits :
Uma cache com mapeamento direto de 2
Nbytes:
− Í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
Cache Index N
0 N
31
Cache Tag Ex: 0x50 Ex: 0x03
Armazenados como Endereços de Memória
0 1 2 3
2 - 1N
:
2 N Bytes
Cache com Mapeamento Direto Byte 0
Byte 1 Byte 2 Byte 3
Byte 2N -1
:
0x50
Armazenados como parte do cache “state”
Bit validade
:
Fonte: Slides do Patterson
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
− 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
Cache com 64KB (DECStation 3100)
31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ... ... 7 6 5 4 3 2 1 0 Endereços de Memória
V Tag Data-32bits
Index 14
16
Deslocamento
16k entradas
EQ Data
AND Tag
Valid
HIT
16 32
Sequência de acessos para leitura numa cache (1)
(1) Estado inicial da cache, após inicialização da máquina
Sequência de acessos para leitura numa cache (2)
(2) Referência ao endereço 10110 provoca uma falta
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
Sequência de acessos para leitura numa cache (4)
(3) Referência ao endereço 11010 provoca uma falta
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
Sequência de acessos para leitura numa cache (6)
(4) Referência ao endereço 10000 provoca uma falta
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
Sequência de acessos para leitura numa cache (8)
(5) Referência ao endereço 00011 provoca uma falta
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
Sequência de acessos para leitura
(6) Referência ao endereço 10010 provoca uma falta
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
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:
(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
Cache com 64KB (DECStation 3100)
31 30 29 28 ... ... 19 18 17 16 15 14 13 12 ... ... 7 6 5 4 3 2 1 0 Endereços de Memória
V Tag Data-0 Data-4 Data-8 Data-12
Block offset Index
4k entries
Select
Data EQ
AND Tag
Valid
HIT
Outro exemplo de cache 16KB
Resultados de desempenho das duas caches
Programa Tam. Bloco TaxaI-miss Taxa D-miss Taxa Comb. miss
gcc 1 6.1% 2.1% 5.4%
4 2.0% 1.7% 1.9%
spice 1 1.2% 1.3% 1.2%
Fonte: Livro P&H p. 329
spice 1 1.2% 1.3% 1.2%
4 0.3% 0.6% 0.4%
Tamanho da cache: 128KB (64KB Dados + 64KB Instruções)
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
T
Médio de Acesso= t
acertox (1 – taxa_acerto) + penalidade_falha x t
falhasTaxa de Falhas
Tam. Bloco
Taxa de
Acerto Explora a Localidade Espacial
Poucos blocos:
compromete a
localidade temporal
Tempo Médio de Acesso
Aumenta Miss Penalty
& Miss Rate
Tam. Bloco Tam. Bloco
Fonte: Patterson slides
Taxa de Falha x Tamanho de Bloco - SPEC92
Fig.7.8 – p.481
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
− 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…)
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
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 write- through e ainda alerta os demais componentes
ligados ao barramento que houve a alteração
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
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…
Indo mais adiante...
• Outros Modelos de mapeamento
− Conjunto Associativo; Totalmente Associativo
− Direto = one-way associativo
Indo mais adiante...
Indo mais adiante...
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
Próximo passo...
• Hierarquia de Memória:
Memória Virtual, Paginação,
Aumento de Desempenho
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
− 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 2
N-1
Endereço virtual x endereço físico
• O programador usa um espaço de endereçamento virtual “imenso”, por ex. 2
63bytes
− 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?
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)
Mapeamento de endereços virtuais
0x0000 0x1000 0x2000 0x3000 0x4000
Prog A Virtual Addresses
Prog B Virtual Addresses Physical Memory
Addresses
Unused
Memory address space
Unused Unused
0x5000 0x6000 0x7000
0xD000 0xE000 0xF000
::: Disk Addresses :::
Virtual Address Space
No memory
space
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 (2
32) – 2
20páginas de 4KB – endereços de 12 bits.
Uma tabela de página poderia ocupar de memória (entradas de 4 bytes) 4MB
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)
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
31 30 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0
Número da Página Virtual Deslocamento
4GB
Translação
29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0
Número da Página Física Deslocamento
1GB
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)
− 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
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
− 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:
Tabelas de Páginas (2)
Registrador da tabela de página
12
31 30 29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0
Número da Página Virtual Deslocamento
Endereço Virtual
Validade Número da página física 20
4GB
29 28 .. .. 15 14 13 12 11 10 9 .. .. 3 2 1 0
Número da página física Deslocamento
Endereço Físico 18
Se Zero : Falha de página
Page table
1GB
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
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.
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
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
− 2
20pag 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
• Existem soluções para o problema, não abordadas nesse curso
− Ex: registradores de limites
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
− 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
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 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)
Translation-Lookaside Buffer (TLB)
Número da página virtual
Memória Física Validade Página Física ou End. Disco
Validade Rótulo End. Página Física
TLB
Disco Tabela de Página
Outro exemplo de TLB
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
• Usar a abordagem write-back para esses bits da TLB
para a página de tabelas numa falha é muito eficiente
Exemplos de Sistemas de Memória
Characteristic Intel Pentium Pro PowerPC 604
Virtual address 32 bits 52 bits
Physical address 32 bits 32 bits
Page size 4 KB, 4 MB 4 KB, selectable, and 256 MB
TLB organization A TLB for instructions and a TLB for data A TLB for instructions and a TLB for data Both four-way set associative Both two-way set associative
Pseudo-LRU replacement LRU replacement
Instruction TLB: 32 entries Instruction TLB: 128 entries Data TLB: 64 entries Data TLB: 128 entries
TLB misses handled in hardware TLB misses handled in hardware
Characteristic Intel Pentium Pro PowerPC 604
Cache organization Split instruction and data caches Split intruction and data caches Cache size 8 KB each for instructions/data 16 KB each for instructions/data Cache associativity Four-way set associative Four-way set associative
Replacement Approximated LRU replacement LRU replacement
Memória x área do processador
Próximo passo...
• Arquiteturas Avançadas:
multicomputadores e
multiprocessadores
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
Sistemas Multiprocessadores (II)
CPU
CPU cache
Mem Bus
Sistemas Multiprocessadores (III)
Switch
CPU
Switch (Ômega)
Mem
Sistemas Multiprocessadores (IV)
CPU
Mem
Crossbar
Sistemas Multicomputadores (I)
• Mais que uma CPU
• Máquinas podem estar geograficamente distantes
• Sistemas fracamente acoplados
• Sistemas fracamente acoplados
• Cada processador possui sua memória local
própria e a comunicação é feita por passagem de
mensagens
Sistemas Multicomputadores (II)
CPU Mem local
CPU
Rede
Sistemas Multicomputadores (III)
MALHA TRIDIMENSIONAL (k=3, n=3)
CPU Mem local
CPU
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
ligações, custo
Mini Computer (chegando ao limite)
“Cadeia alimentar dos computadores” até 1990
Mainframe
Vector Supercomputer MPP
Workstation PC (futuro incerto)