Arquitetura de Computadores II
Gabriel P. Silva
Universidade Federal do Rio de Janeiro Informática DCC/IM
Arquiteturas MIMD
Arquiteturas MIMD
As arquiteturas MIMD dividem-se
em dois grandes modelos:
Arquiteturas MIMD de Memória
Distribuída
Cada processador é capaz de endereçar apenas a sua memória local.
Arquiteturas MIMD de Memória
Compartilhada
Cada processador consegue ter acesso a todo o espaço de memória do sistema.
Gabriel P. Silva
MIMD com Memória Distribuída
Cada processador enxerga apenas o
seu espaço de memória.
Vantagens:
Altamente escalável e permitem a
construção de processadores maciçamente paralelos.
A comunicação entre os processadores
se dá através de troca de mensagens.
A troca de mensagens resolve tanto o
problema da comunicação processadores como o da sincronização.
MIMD com Memória Distribuída
Desvantagens:
Necessidade de fazer uma boa
distribuição de carga entre os processadores, quer seja automaticamente, quer seja manualmente.
É necessário evitar as situações de
“deadlock”, tanto no nível de aplicação como no nível de aplicação.
Gabriel P. Silva
MIMD com Memória Distribuída
. . . REDE DE INTERCONEXÃO M0 P0 PE0 M1 P1 PE1 Mn Pn PEn
MIMD com Memória Compartilhada
Vantagens:
Não há necessidade de particionar o
código ou dados, logo técnicas de programação para uniprocessadores podem ser facilmente adaptados para ambientes multiprocessadores.
Não há necessidade de se movimentar
fisicamente os dados quando dois ou mais processadores se comunicam. Como resultado a comunicação entre processos é bastante eficiente.
Gabriel P. Silva
MIMD com Memória Compartilhada
Desvantagens:
Há necessidade do uso de primitivas
especiais de sincronização quando do acesso a regiões compartilhadas na memória, para assegurar um resultado correto para a computação.
Falta de escalabilidade devido ao
problema de contenção de memória. Depois de um determinado número de processadores a adição de mais
processadores não aumenta o desempenho.
MIMD com Memória Compartilhada
M0 M1 . . . Mk
REDE DE INTERCONEXÃO
Gabriel P. Silva
Arquiteturas UMA
Arquiteturas com memória única global. Tempo de acesso à memória é uniforme para todos os nós de processamento. Nós de processamento e memória
interconectados através de barramento único.
Número reduzido de nós de processamento.
Coerência de cache mantida por “hardware” com o uso da técnica de “snooping”.
Arquiteturas UMA
MEMÓRIA
P0 P1 . . . Pn BARRAMENTO ÚNICO
Gabriel P. Silva
Análise de Escalabilidade em
Memória Compartilhada
Um dos grandes problemas dos sistemas de memória compartilhada com uso de barramento único é a escalabilidade. Ou seja, para um grande número de processadores a contenção no uso do barramento aumenta até o ponto em que a adição de novos processadores não é mais efetiva.
Um barramento único tem um tamanho limitado, o que limita o número de
processadores e módulos de memória que podem ser acrescidos ao sistema.
Análise de Escalabilidade em
Memória Compartilhada
Ao invés do barramento, pode-se utilizar uma rede de interconexão com alto
“throughput” e baixa latência.
Essa rede tem características distintas do barramento, pois permite que vários
processadores tenham acesso a módulos de memória distintos simultaneamente. Uma solução utilizada para permitir que a quantidade de memória do sistema cresça na medida em que cresce o número de processadores é agregar um módulo de memória local para cada processador do sistema.
Gabriel P. Silva
Análise de Escalabilidade em
Memória Compartilhada
Um dos problemas decorrentes desta estratégia é a necessidade de se tolerar e esconder as
latências de acesso aos dados nos níveis mais distantes.
Uma rede de interconexão com alto desempenho serve para reduzir o tempo de acesso aos módulos de memória remotos, melhorando assim a
escalabilidade.
Busca avançada dos dados/páginas é uma outra solução empregada para diminuir a latência. Uso de memórias “caches” locais, com cópia dos conteúdos das memórias remotas, também reduz o problema da contenção e da latência, pois não é necessário atravessar a rede de interconexão.
Análise de Escalabilidade em
Memória Compartilhada
O uso de cache locais, por outro lado, exige o uso de algoritmos em “hardware” para manutenção da coerência de dados.
Uso de “threads” e um mecanismo rápido de troca de contexto entre “threads” é uma outra forma de esconder a latência aos dados remotos.
Mas é necessário também tolerar e esconder o tempo de espera devido a sincronização entre processos/threads paralelos.
Isto acontece porque o acesso a estruturas de dados compartilhadas exige o uso de primitivas de sincronização (semáforos), cujo tempo de espera aumenta a medida que aumenta o número de processadores envolvidos na computação.
Gabriel P. Silva
Análise de Escalabilidade em
Memória Compartilhada
A implementação de um memória que é logicamente compartilhada, mas que pode ser implementada com o uso de um conjunto de memórias locais recebe o nome de “Arquitetura de Memória
Compartilhada Distribuída”, que pode ser dividido em três classes:
NUMA (Non-uniform Memory Access) CC-NUMA (Cache Coherent Non-uniform
Memory Access)
COMA (Cache-Only Memory Access)
Arquiteturas NUMA
Nessas arquiteturas a memória é dividida em tantos blocos quanto forem os processadores do sistema, e cada bloco de memória é conectado via barramento a um processador com memória local. O acesso aos dados que estão na memória local é muito mais rápido que o acesso aos dados em blocos de memória remotos.
Esta diferença faz com que sejam necessários cuidados especiais ao se programar em
arquiteturas deste tipo.
Apesar do uso de memória compartilhada, as arquiteturas NUMA mais modernas oferecem bibliotecas para programação utilizando troca de mensagens.
Gabriel P. Silva
Arquiteturas NUMA
. . . P0 M0 PE0 P1 M1 PE1 Pn Mn PEn REDE DE INTERCONEXÃOArquiteturas COMA
Assemelham-se a uma arquitetura NUMA, onde cada nó de processamento possui uma parte da memória global.
O particionamento dos dados entre as memórias de cada nó não é estático Î as memórias
funcionam como caches de nível 3.
O problema de partição de dados e balanceamento dinâmico de carga é realizado automaticamente. Conforme o algoritmo de coerência utilizado, os dados migram automaticamente para as caches locais dos processadores onde é mais necessária. Exemplo: KSR-1 e DDM
Gabriel P. Silva
Arquiteturas COMA
. . . P0 C0 PE0 P1 C1 PE1 Pn Cn PEn REDE DE INTERCONEXÃOArquiteturas CC-NUMA
Solução de compromisso entre as arquiteturas NUMA e COMA.
Cada nó processador possui uma cache local para reduzir o tráfego na rede de interconexão.
O balanceamento de carga é realizado dinamicamente pelos protocolos de coerência das caches.
Exemplo: Convex SPP1000, Stanford DASH e MIT Alewife.
Gabriel P. Silva
Arquiteturas CC-NUMA
. . . REDE DE INTERCONEXÃO PE0 P0 C0 M0 PE1 P1 C1 M1 PEn Pn Cn MnExemplos de Arquitetura
MIMD
Gabriel P. Silva
Arquiteturas MIMD Multithreaded
Uma tipo de arquitetura muito
interessante, que foi desenvolvida para ocultar a latência a módulos de memória remotos.
Baseada no conceito de “threads”, realiza a troca de contexto de “thread” cada vez que uma operação de grande latência era executada.
Esse tipo de arquitetura eram baseados em processadores especiais, capazes de armazenar contexto e executar várias “threads” simultaneamente.
Arquiteturas MIMD Multithreaded
HEP
Projeto pioneiro desenvolvido em 1975. Multithread com granulosidade fina. Pipeline com 8 estágios, uma “thread”
diferente para cada estágio.
Um máximo de 64 “threads” podem
estar ativas simultaneamente.
Multiprocessador com memória
compartilhada.
Máximo de 16 processadores e 128
módulos de memória via uma rede de interconexão chaveada de alta
Gabriel P. Silva
Arquiteturas MIMD Multithreaded
Tera
Sucessor do projeto HEP. Ciclo de 3 ns.
128 “threads” simultâneas com 41
registradores de 64 bits cada.
Multiprocessador com memória compartilhada
distribuída.
Até 256 processadores, 512 módulos de
memória e 256 processadores de E/S.
Desempenho máximo de 256 GFlops.
O paralelismo pode ser extraído implicitamente
pelo compilador ou definido explicitamente pelo programador com uso de biblioteca de primitivas.
MIT Alewife
MIT Alewife
Multiprocessador com memória
compartilhada distribuída com coerência de cache (CC-NUMA).
Multithreading de granulosidade grossa Objetivo de integrar capacidade
“multi-threading” com coerência de cache suportada pelo “hardware”.
A coerência da cache é mantida através
de um diretório na memória local.
Suporte em “hardware” para troca de
mensagem a nível de usuário, evitando assim o uso de interrupções e troca de
Gabriel P. Silva
MIT Alewife
MIT Alewife
Cada nó possui :
1 processador SPARCLE
4 Mbytes de memória principal
64 Kbytes de memória cache
4 Mbytes de memória local 1 unidade de ponto flutuante
1 unidade de gerência de memória e
comunicação
1 roteador/chave de rede
Gabriel P. Silva