processamento paralelo pae: julio cesar torelli docente: prof. dr. odemir martinez bruno...
TRANSCRIPT
Processamento paralelo
PAE: Julio Cesar Torelli
Docente: Prof. Dr. Odemir Martinez Bruno
Universidade de São Paulo - USP
Instituto de Ciências Matemáticas e de Computação – ICMC
SCE 188 - Arquitetura de Computadores
Conteúdo
Processamento paralelo
Computadores paralelos: taxonomia de Flynn
Computadores paralelos:
Multiprocessadores simétricos (SMPs)
Acesso Não-Uniforme à Memória (NUMA)
Agregados de computadores (Clusters)
Conteúdo
Processamento paralelo
Computadores paralelos: taxonomia de Flynn
Computadores paralelos:
Multiprocessadores simétricos (SMPs)
Acesso Não-Uniforme à Memória (NUMA)
Agregados de computadores (Clusters)
Processamento paralelo
Definição:
É usar múltiplos (dois ou mais) processadores, simultâneamente, para resolver um mesmo problema.
Objetivo:
Aumento de desempenho (i.e. redução do tempo necessário para resolver um problema)
Motivação:
(i) Problemas cada vez mais complexos e/ou maiores;
(ii) Clock dos processadores se aproximando dos limites ditados pela física;
Conteúdo
Processamento paralelo
Computadores paralelos: taxonomia de Flynn
Computadores paralelos:
Multiprocessadores simétricos (SMPs)
Acesso Não-Uniforme à Memória (NUMA)
Agregados de computadores (Clusters)
Classificação dos computadores paralelos
A classificação de Flynn (1972) é a mais utilizada. Ele se baseia nas possíveis unicidade e multiplicidade dos fluxos de instruções e de dados para definir quatro tipos de arquiteturas:
SISD (Single Instruction Stream, Single Data Stream): computadores sequenciais
SIMD (Single Instruction Stream, Multiple Data Streams): computadores vetoriais e matriciais
MISD (Multiple Instruction Streams, Single Data Stream): não existem (HENNESSY et al., 2003; STALLINGS, 2002)
MIMD (Multiple Instruction Streams, Multiple Data Streams): arquiteturas com múltiplos processadores independentes
Taxonomia de Flynn
SISD
Em arquiteturas SISD um único fluxo de instruções opera sobre um único fluxo de dados.
Exemplo: PCs com um único processador
UC EP M
CPU
FI FD
Taxonomia de Flynn
SIMD
Em arquiteturas SIMD um único fluxo de instruções opera sobre múltiplos fluxos de dados. Existe uma única UC e múltiplos EP. Todos os EP executam simultânea e sincronizadamente a mesma instrução sobre conjuntos de dados distintos.
Exemplo: Computadores vetoriais
UC
EP1 M1
EP2 M2
EPn Mn
.
.
.
FI
FD1
FD2
FDn
Taxonomia de Flynn
MISD
Em arquiteturas MISD múltiplos fluxos de instruções operam sobre um único fluxo de dados.
Exemplo: Nunca foi implementada
Taxonomia de Flynn
MIMD
Na classe MIMD está a maioria das arquiteturas paralelas da atualidade. De acordo com o método de comunicação entre os processadores, a classe MIMD pode ser divida em:
FI1 FD1EP1
EP2
EP3
EPn
.
.
.
FD2
FD3
FDn
FI2
FI3
FIn
UC1
UC2
UC3
UCn
.
.
.
Memória compartilhada
FI1 FD1EP1
EP2
EP3...
FD2
FD3
FDn
FI2
FI3
FIn
UC1
UC2
UC3
UCn
.
.
.
Sistema de comunicação
M1
M2
M3
MnEPn
.
.
.
CPU
MIMD compartilhada MIMD distribuída
CPU
Taxonomia de Flynn
MIMD
Atualmente, três tipos de arquiteturas MIMD são bastante utilizadas:
Multiprocessador Simétrico (SMP) arquitetura MIMD com memória compartilhada
Acesso Não-Uniforme à Memória (NUMA) arquitetura MIMD com memória compartilhada
Agregado de Computadores (Cluster) arquitetura MIMD com memória distribuída
Conteúdo
Processamento paralelo
Computadores paralelos: taxonomia de Flynn
Computadores paralelos:
Multiprocessadores simétricos (SMPs)
Acesso Não-Uniforme à Memória (NUMA)
Agregados de computadores (Clusters)
Multiprocessadores simétricos
Definição:
Consiste de múltiplos processadores similares conectados entre si e à memória por um barramento ou alguma outra forma de circuito de conexão interno.
CPU
CPU
CPU
CPU
Interconexão
Memória
Diagrama de blocos de um SMP
Possuem dois ou mais processadores similares, com capacidade de processamento comparável;
Todos os processadores compartilham uma mesma memória (i.e. existe um único espaço de endereçamento);
Todos os processadores compartilham acesso aos mesmos dispositivos de E/S, através de canais comuns, ou não;
O sistema inteiro é controlado por um único sistema operacional que torna transparente ao usuário a existência de vários processadores. Windows e Linux estão preparados para rodar em sistemas SMP.
Multiprocessadores simétricos
Características:
Todos os processadores podem desempenhar as mesmas funções;
O tempo de acesso tomado por um processador para o acesso a qualquer posição de memória é o mesmo, e ainda, todos os processadores experimentam o mesmo tempo de acesso à memória (i.e., é uma arquitetura UMA - Uniform Memory Access).
Multiprocessadores simétricos
Características (continuação):
Multiprocessadores simétricos
Esquema simplificado do SMP Sun Enterprise Server (CULLER, 1999)
Exemplo: SMP Sun Enterprise Server
Multiprocessadores simétricos
Esquemas de interconexão
CPU
CPU
CPU
CPU
Interconexão
Memória
Diagrama de blocos de um SMP
- Barramento- Crossbar- Redes MultiEstagio
Multiprocessadores simétricos - Esquemas de interconexão
Barramento de Tempo Compartilhado
CPU
CPU
CPU
CPU
Barramento de tempo compartilhado
Memória
SMP com barramento de tempo compartilhado
Multiprocessadores simétricos - Esquemas de interconexão
Barramento de Tempo Compartilhado
Estruturas e interfaces são praticamente as mesmas de um uniprocessador
Mecanismo de Tempo Compartilhado
Limitado a 2 ou 3 processadores, pois o barramento se torna um gargalo
Características:
Multiprocessadores simétricos - Esquemas de interconexão
Barramento de Tempo Compartilhado
CPU
CPU
CPU
CPU
Barramento compartilhado
Memória
SMP com barramento de tempo compartilhado e CPUs com cache
cache
Uso de cache melhora o tráfego no barramento e possibilita o uso de mais processadores.
CPU
cache
palavra bloco
Relacionamento CPU, cache e memória RAM
Memória
Principal
Load (1000)
Multiprocessadores simétricos - Esquemas de interconexão
Barramento de Tempo Compartilhado
Características como localidade espacial e/ou temporal nos dizem que um programa tende a referenciar endereços de memória próximos em um intervalo de tempo, reduzindo significativamente o acesso a memoria principal.
Multiprocessadores simétricos - Esquemas de interconexão
Barramento de Tempo Compartilhado
Mais processadores podem ser utilizados: 16 ou 32 (TANENBAUM; GOODMAN, 1999).
Problema de coerência de cache
Conseqüências do uso de cache em SMPs:
Multiprocessadores simétricos – Barramento de tempo compartilhado
Coerência de Cache
Acontece porque podem existir várias cópias de um mesmo dado nas caches de diferentes processadores.
Um processador pode alterar um dado na sua cache tornando o conteúdo das memórias caches dos outros processadores incoerente/inválido;
Problema de coerência de cache:
Existem soluções implementadas em software (ex: sistema operacional e/ou compilador) e em hardware (= mais comuns).
Solução:
Multiprocessadores simétricos – Barramento de tempo compartilhado
Coerência de Cache em hardware
Protocolos de diretório;
Protocolos de monitoração (snoopy protocols).
Existem duas categorias de soluções:
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolos de diretório
Funcionam com a utilização de um diretório e um controlador central.
CPU1
Barramento
Memória
Controlador
CPU2 CPU3 CPU4
Blo
cos
Load (1000)
Diretório
1
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolos de diretório
Funcionam com a utilização de um diretório e um controlador central.
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
Blo
cos
Load (1000)
Diretório
1 3
Controlador
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolos de diretório
Funcionam com a utilização de um diretório e um controlador central.
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
Blo
cos
Load (1005)
Diretório
1 3 2
Controlador
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolos de diretório
Funcionam com a utilização de um diretório e um controlador central.
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
Blo
cos
Store (1005)
Diretório
1 3 2
Controlador
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolos de diretório
Funcionam com a utilização de um diretório e um controlador central.
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
Blo
cos
Diretório
2
Controlador
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolos de diretório
Observação:
Abordagens baseadas em diretórios resolvem o problema de coerência de cache, porém, causam grande sobrecarga no sistema, já que a comunicação entre os processadores e o controlador central tem que ocorrer freqüentemente.
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolos de monitoração
Características:
São protocolos onde todos os processadores participam ativamente para resolver o problema da coerência de cache.
Para isso todos os processadores devem ficar monitorando o tráfego no barramento e atualizar o estado em que se encontra um determinado dado em sua cache. Por exemplo: quando um processador alterar um dado em sua cache, ele deve enviar um broadcast para o barramento informando que o dado foi alterado. Os processadores que tem aquele dado devem reagir de forma adequada para manter a coerência.
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolos de monitoração
A coerência pode ser mantida de duas formas:
Escrita com atualização (write-update): Quando um processador altera um dado em sua cache, tal dado é enviado para todos os outros processadores, para que estes atualizem os dados de suas caches.
Escrita com invalidação (write-invalidate): Quando um processador altera um dado em sua cache, ele manda uma mensagem por broadcast com a finalidade de invalidar esse mesmo dado contido em outras caches. Dessa forma o processador que deseja alterar o dado, fica com acesso exclusivo ao mesmo, podendo assim fazer as alterações desejadas. O MESI (Modified, Exclusive, Shared and Invalide) é um exemplo de tal protocolo.
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
Modificado (M): O dado na cache não é igual ao dado na memória principal e encontra-se somente nesta cache.
Exclusivo (E): O dado na cache é igual ao dado na memória principal e encontra-se somente nesta cache.
Compartilhado (S): O dado na cache é igual ao dado na memória, porém encontra-se em outra(s) cache(s).
Inválido (I): O dado na cache não é um dado válido.
Definição:
Esse protocolo determina 4 estados possíveis para um dado em cache. Para isso utiliza 2 bits adicionais por linha de cache para armazenar o estado. Os 4 estados são:
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
Exemplo: A CPU 1 lê/escre um endereço de memória. Assim, o bloco que contém este endereço é armazenado na sua cache e marcado como E (as próximas leituras a endereços de memória deste bloco, pela CPU 1, serão satisfeitas pelo acesso a cache, sem o uso do barramento);
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
E
Load (1005)
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
E
Load (1005)
Exemplo: A CPU 2 referencia um endereço do mesmo bloco. Assim, este bloco é copiado para a cache desta CPU. Neste caso, o bloco em ambas as cache é marcado como S, o que significa que a memória está atualizada e que ambas as CPUs podem ter suas requisições a endereços deste bloco atendidas pelas respectivas caches;
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
S
Load (1005)
S
Exemplo: A CPU 2 referencia um endereço do mesmo bloco. Assim, este bloco é copiado para a cache desta CPU. Neste caso, o bloco em ambas as cache é marcado como S, o que significa que a memória está atualizada e que ambas as CPUs podem ter suas requisições a endereços deste bloco atendidas pelas respectivas caches;
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
S
Store (1005)
S CPU2: Sinaliza alteração
Exemplo: A CPU 2 escreve na cache, no bloco compartilhado. Neste caso, ela coloca um sinal nas linhas de controle do barramento dizendo às outras CPUs que descartem suas cópias. O estado do bloco na CPU 2 é alterado para M. A CPU 2 pode agora ler e escrever neste bloco porque só ela o possui;
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
M
Exemplo: A CPU 2 escreve na cache, no bloco compartilhado. Neste caso, ela coloca um sinal nas linhas de controle do barramento dizendo às outras CPUs que descartem suas cópias. O estado do bloco na CPU 2 é alterado para M. A CPU 2 pode agora ler e escrever neste bloco porque só ela o possui;
Store (1005)
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
Load (1007)
M
Exemplo: A CPU 3 solicita um endereço do mesmo bloco. A CPU 2 detecta este evento e sabendo que a cópia da memória é inválida, coloca sinais no barramento dizendo a CPU 3 que aguarde.
CPU2: Sinais de controle
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
M
Exemplo: Enquanto a CPU 3 aguarda ela escreve de volta para a memória principal o bloco que foi modificado em sua cache.
Load (1007) - aguardando
Write back
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
Exemplo: Enquanto a CPU 3 aguarda ela escreve de volta para a memória principal o bloco que foi modificado em sua cache.
Load (1007) - aguardando
M
Write back
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
Exemplo: Finalizado o processo (write-back) ambas as CPUs obtêm uma cópia deste bloco de memória em sua cache; ambas o marcam como S e podem utilizá-lo;
S S
Load (1007) - aguardando
Multiprocessadores simétricos – Barramento de tempo compartilhado
Protocolo MESI
CPU1
Barramento
Memória
CPU2 CPU3 CPU4
Exemplo: Finalizado o processo (write-back) ambas as CPUs obtêm uma cópia deste bloco de memória em sua cache; ambas o marcam como S e podem utilizá-lo;
S S
Load (1007) – é executado
Multiprocessadores simétricos - Esquemas de interconexão
Crossbar
CPU01
CPU02
CPU03
CPU16
Sistema C.mpp: rede crossbar 16 16 (16 proc. PDP11 e 16 módulos de memória) (HWANG, 1993)
Multiprocessadores simétricos - Esquemas de interconexão Crossbar
CPUs são ligadas aos módulos de memórias por meio de crosspoints (switches que são eletronicamente abertos/fechados para conectar um par processador-memória);
Acessos à memória em paralelo, desde que para módulos de memória distintos;
Características:
Multiprocessadores simétricos - Esquemas de interconexão
Crossbar
CPU01
CPU02
CPU03
CPU16
Sistema C.mpp: rede crossbar 16 16 (16 proc. PDP11 e 16 módulos de memória) (HWANG, 1993)
Na rede Crossbar da figura, até 16 acessos à memória podem acontecer simultaneamente.
Multiprocessadores simétricos - Crossbar
Crosspoints
Diagrama de um crosspoint
Multiprocessadores simétricos - Esquemas de interconexão Crossbar
Embora seja possível construir SMPs com um número grande de processadores, na prática isto não acontece porque o custo de construção é muito algo (porque crosspoints são complexos e o número de crosspoints cresce quadraticamente);
Observações:
Multiprocessadores simétricos - Esquemas de interconexão
Redes multiestágio
Rede multiestágio Omega (switches 2x2)
CPU 01
CPU 02
CPU 03
CPU 04
CPU 05
CPU 06
CPU 07
CPU 08
Multiprocessadores simétricos - Esquemas de interconexão Redes multiestágio
São construídas a partir de switches A B, ou seja, switches com A entradas e B saídas;
Diferentes tipos/classes de redes multiestágio podem ser construídas. O que varia de uma classe para a outra é o tipo de switch utilizado e o padrão de conexão entre os estágios; a rede do slide anterior utiliza switches 22 e um padrão de conexão conhecido como perfect shuffle (ALMASI; GOTTLIEB, 1994; HWANG, 1993; TANENBAUM; GOODMAN, 1999)
Características:
Multiprocessadores simétricos - Esquemas de interconexão Redes multiestágio
Exemplo: Assumiremos um sistema com 512 MB de RAM (= endereços de 29 bits) divididos em 8 módulos de memória (= módulos de 64 MB). Portanto, os 3 primeiros bits especificam o módulo de memória, os outros 26 especificam um endereço dentro do módulo.
CPU 01
CPU 02
CPU 03
CPU 04
CPU 05
CPU 06
CPU 07
CPU 08
Rede multiestágio Omega
Multiprocessadores simétricos - Esquemas de interconexão Redes multiestágio
Exemplo: CPU 03 executa instrução LOAD (11000000000000000000000000001), i.e., para um endereço que está “contido” no módulo 110.
Load
110
CPU 01
CPU 02
CPU 03
CPU 04
CPU 05
CPU 06
CPU 07
CPU 08
Rede multiestágio Omega
Multiprocessadores simétricos - Esquemas de interconexão Redes multiestágio
Exemplo: O switch 1C verifica o 1º digito do campo módulo (um switch no 1º estágio da rede verifica o 1º dígito do campo módulo), neste caso 1. Um valor 1 indica que a requisição de leitura deve prosseguir pela saída inferior do switch, neste caso indo para o switch 2B.
110
CPU 01
CPU 02
CPU 03
CPU 04
CPU 05
CPU 06
CPU 07
CPU 08
110
Rede multiestágio Omega
Multiprocessadores simétricos - Esquemas de interconexão Redes multiestágio
Exemplo: O switch 2B, no estágio 2 da rede, analisa o segundo dígito do campo módulo, que também é 1, e a requisição prossegue através do switch 3D.
110
CPU 01
CPU 02
CPU 03
CPU 04
CPU 05
CPU 06
CPU 07
CPU 08
110
110
Rede multiestágio Omega
Multiprocessadores simétricos - Esquemas de interconexão Redes multiestágio
Exemplo: O switch 3D, no estágio 3 da rede, verifica o terceiro dígito do campo módulo, que é 0 (zero). Um valor 0 indica que a operação deve prosseguir pela a saída superior do switch. Então, o módulo 110 é “alcançado”.
110
CPU 01
CPU 02
CPU 03
CPU 04
CPU 05
CPU 06
CPU 07
CPU 08
110
110
Rede multiestágio Omega
Multiprocessadores simétricos - Esquemas de interconexão Redes multiestágio
Para a construção da rede anterior foram utilizados 12 switches
(para uma rede n n utilizam-se log2 n estágios e n/2 switches
por estágio, num total de (log2 n) * n/2 switches). Para a
construção de uma rede crossbar seriam necessários n2 switches.
A desvantagem de uma rede multiestágio em relação à crossbar, é que nem sempre dois acessos podem ocorrer em paralelo, mesmo que sejam para módulos diferentes.
Observações:
Conteúdo
Processamento paralelo
Computadores paralelos: taxonomia de Flynn
Computadores paralelos:
Multiprocessadores simétricos (SMPs)
Acesso Não-Uniforme à Memória (NUMA)
Agregados de computadores (Clusters)
NUMA
Definição:
Assim como em SMPs, neste tipo de arquitetura existem dois ou mais processadores, que compartilham uma memória global (= um único espaço de endereçamento). Em um sistema NUMA os processadores são organizados em nós. Cada nó possui 1 ou mais processadores, com sua(s) própria(s) memória(s) cache (um, dois, ou mais níveis) e alguma memória principal conectados por um barramento ou outro sistema de interconexão.
NUMA
Diagrama de uma arquitetura NUMA
NUMA
Características:
A principal característica de uma arquitetura NUMA é o acesso não uniforme à memória, ou seja, embora todos os processadores possam acessar todas as posições de memória, os tempos de acesso variam de acordo com o endereço acessado.
O acesso a uma posição de memória local (memória no mesmo nó do processador que está realizando o acesso) é mais rápido do que o acesso a uma posição de uma memória remota.
Assim, o sistema operacional de uma máquina NUMA deveria, sempre que possível, escalonar as threads de um processo entre os processadores do nó da memória usada pelo processo.
NUMA
Características (continuação):
O programador usando uma arquitetura NUMA também deveria explorar a localidade. O sistema operacional Windows, por exemplo, oferece uma série de funções através da API Win32 para programação em sistemas NUMA.
NUMA
Existem dois tipos de arquiteturas NUMA:
NC-NUMA NUMA que não utiliza cache
CC-NUMA (Cache Coherent NUMA)
NUMA com cache (e coerência de cache)
NC-NUMA
NC-NUMA Carnegie-Mellon Cm
Exemplo:
Uma das primeiras máquinas NC-NUMA foi a Carnegie-Mellon Cm. Era composta por uma coleção de CPUs LSI-11 (uma versão em chip único do PDP-11), cada uma com uma memória acessível diretamente através de um barramento local. Os nós eram interconectados por um barramento de sistema.
NC-NUMA
NC-NUMA Carnegie-Mellon Cm
Exemplo:
A MMU em cada referência à memória verificava se o endereço pertencia à memória local. Se sim, a requisição era feita à memória local, via barramento local. Caso contrário era feita ao nó remoto, através do barramento de sistema.
NC-NUMA
A coerência dos dados em máquinas NC-NUMA é garantida porque não existe caching;
Porém, um dado no lugar “errado” gera muitas penalidades. Se forem feitas três referências seguidas a uma posição de memória remota, são necessárias três buscas através do barramento de sistema.
Para amenizar este problema, usam-se esquemas implementados em software. Por exemplo: um daemon pode fazer estatísticas de uso do sistema. Se for verificado que uma página parece estar no lugar “errado”, ele remove esta página da memória para que da próxima vez ocorra uma page fault ela possa ser alocada em um novo nó.
Observações:
CC-NUMA
Um sistema NUMA com coerência de cache é chamado CC-NUMA. A existência de cache requer algum protocolo de coerência. O método mais popular para a coerência de cache em sistema CC-NUMA é baseado no conceito de diretório. O diretório funciona como uma espécie de banco de dados que indica a localização das várias porções de memória, assim como o status das caches.
CC-NUMA
Diagrama de um sistema CC-NUMA
Exemplo:
A figura abaixo ilustra um sistema CC-NUMA com 256 nós, 1 processador por nó, 16 MB por nó (256 x 16 = 4GB RAM = endereços de 32 bits). A memória dos nós é acessada em blocos de 64 bytes.
0 – 16 MB 16 – 32 MB
CC-NUMA
Coerência baseada em diretórios
Mem. 16 MB
Bloco 0
Bloco 1
64 bytes
Diretório
Bloco 218
.....
Blo
co
1
0
2
21
8.....
3
4
nó (8 bits)
NÓ 89
17
214
(1) CPU 20 executa a instrução LOAD 0x24000108
(2) MMU converte endereço lógico emfísico.
Nó Bloco/Linha de Cache Offset
8 bits 18 bits 6 bits
36 4 8
(3) Verifica sua memória cache
(4) Não encontrando envia requisição para nó 36 solicitando bloco 4
CC-NUMA
Coerência baseada em diretórios
Diretório nó 36
Blo
co
1
0
2
21
8.....
3
4
nó (8 bits)
82
(5) Hardware do nó 36 verifica diretório
(6) Entrada do bloco 4 vazia, portanto, ele não se encontra em cache
(7) Hardware do diretório 36 envia o bloco 4 à CPU 20 e atualiza o diretório 20
CC-NUMA
Coerência baseada em diretórios
Diretório nó 36
Blo
co
1
0
2
21
8.....
3
4
nó (8 bits)
82
(1) CPU 45 requisita leitura do bloco 4do nó 36
(2) Hardware do nó 36 verifica que o bloco está na cache do nó 20
(3) Hardware do diretório enviarequisição ao nó 20 solicitando que envie o bloco 4 ao nó 45
(4) Hardware atualiza entrada dobloco 4 indicando que agora estána cache do nó 45
2045
CC-NUMA
Coerência baseada em diretórios
Conteúdo
Processamento paralelo
Computadores paralelos: taxonomia de Flynn
Computadores paralelos:
Multiprocessadores simétricos (SMPs)
Acesso Não-Uniforme à Memória (NUMA)
Agregados de computadores (Clusters)
Agregados de computadores (Clusters)
Definição:
É um grupo de computadores completos/autônomos (usualmente chamados nós) interconectados, que podem
trabalhar juntos, como um recurso de computação unificado, criando a ilusão de uma máquina única.
Os nós são geralmente conectados através de uma porta de E/S (geralmente interfaces de rede) de alto desempenho.
Atualmente eles são utilizados com sistemas gerenciadores de bancos de dados, com servidores WEB e, principalmente, para proc. paralelo. Cluster do Grupo de Instrumentação e
Informática do IFSC-USP
Agregados de computadores (Clusters)
Características:
Configuração dos nós: Os nós podem ser PCs ou mesmo SMPs (neste caso ele é chamado um cluster de SMPs);
Escalabilidade absoluta: É possível construir clusters muito grandes, cuja capacidade de computação ultrapassa várias vezes a capacidade da maior máquina individual;
Escalabilidade incremental: Um cluster pode ser configurado de maneira que seja possível adicionar novos nós, expandindo-o de forma incremental;
Disponibilidade: Como cada nó de um cluster é um computador independente, uma falha em um nó não implica necessariamente na perda total de serviço.
Agregados de computadores (Clusters)
Características (continuação):
Melhor Relação custo/desempenho: devido à facilidade de construir um cluster a partir de elementos (PCs ou SMPs) comercialmente disponíveis, é possível obter um cluster com poder de computação igual ou maior que uma única máquina paralela de grande porte, por um custo muito menor.
A relação custo/benefício tem influenciado pesadamente a utilização dos clusters. Os Beowulfs são clusters compostos por microcomputadores de baixo custo (padrão IBM/PC) interligados por uma rede como Fast Ethernet e/ou Gigabit Ethernet, rodando um s.o. livre; é uma ótima opção para instituições que precisam de desempenho, mas não têm recursos suficientes para comprar uma única máquina com vasto poder de processamento nem um cluster pronto de algum fabricante ou integrador de soluções.
Agregados de computadores (Clusters)
Clusters podem ser utilizados de diversas formas:
Pode-se desenvolver aplicações específicas para resolver problemas de maneira concorrente que cuidam de todos os aspectos de processamento, balanceamento de carga, comunicação e sincronização. Para isto são utilizadas várias linguagens de programação e extensões/bibliotecas concorrentes como MPI, HPF (High Performance Fortran) e outros.
Pode ser utilizado como um recurso único, de maneira transparente para os usuários. Para isto, é necessário a utilização de escalonadores que cuidam da distribuição de carga entre os servidores. Dentre estes escalonadores destacam-se o OpenMosix. O OpenMosix é um kernel capaz de distribuir os processos em execução entre o nós do cluster (ele mantém estatísticas sobre o balanço de carga dos nós e, se necessário faz a migração de processos entre os nós)
A escolha de uma rede depende entre outros fatores:
Agregados de computadores (Clusters)
Redes de interconexão
Capital disponível;
Do tipo de aplicação que será executada no cluster. Aplicações badwidth-bound necessitam de redes de alto desempenho (ex: Myrinet). Aplicações CPU-bound podem utilizar redes mais lentas (ex: Fast Ethernet);
Alguns tipos/padrões de redes utilizados:
Agregados de computadores (Clusters)
Redes de interconexão
10.7 MB/s89.8 usec3Com 3C905B 33MHz 32bit PCI, P2 400MHz, Intel 440BX, Linux 2.2.12.
118.9 MB/s34.2 usecIntel PRO1000/T Gigabit Ethernet on 66MHz 64bit PCI P3 800MHz, Serverworks ServerSet III HE, Linux 2.4.15.
913.2 MB/s14.6 usecInfiniBand 4x Fujitsu HCA on 133 MHz 64bit PCI-XXeon 2.8GHz, Serverworks GC-LE, Linux 2.4.21.
465.9 MB/s8.3 usecMyrinet 2XP Fiber on 133 MHz 64bit PCI-XXeon 2.8GHz, ServerWorks GC-LE, Linux 2.4.20.
Largura de banda
LatênciaRede
Fonte: http://www.pccluster.org/faq/en/overview/pm-perf.html
ALMASI, G. S.; GOTTLIEB, A. Highly parallel computing. 2ed.
Redwood City: Benjamin/Cummings, 1994.
CULLER, D. E.; SINGH, J. P.; GUPTA, A. Parallel computer architecture: a hardware/software approach. San Francisco: Morgan Kaufmann Publishers, c1999.
FLYNN, M. J. Some Computer Organizations and Their Effectiveness. IEEE Transactions on Computers, v.C-21, n.9, p.948-960, Set. 1972.
HWANG, K. Advanced computer architecture: parallelism, scalability, programmability. New York: Mcgraw-Hill, 1993.
TANENBAUM, A. S.; GOODMAN, J. R. Structured computer organization. 4ed. Upper Saddle River, N.J.: Prentice Hall, c1999.
Bibliografia