Buscar

ARQUITETURA DE SISTEMAS DISTRIBUIDOS - AULA 4

Prévia do material em texto

- -1
ARQUITETURA DE SISTEMAS 
DISTRIBUÍDOS
CLASSIFICAÇÃO DE FLYNN E MODELOS DE 
PROGRAMAÇÃO
- -2
Olá!
Nesta aula, estudaremos a classificação de multiprocessadores em relação à quantidade de fluxo de dados e
instruções, e em relação ao acesso à memória. Conheceremos, também, algumas características de
desenvolvimento de aplicações para as arquiteturas MIMD.
Nesta aula, você irá:
1- Definir a classificação de Flynn;
2- Reconhecer as implementações da arquitetura MIMD e as características de desenvolvimento de aplicações
para essa arquitetura;
3- Descrever a motivação a partir de alguns modelos de programação paralela.
1 Taxonomia de Flynn
Em 1966, Michael J. Flynn propôs uma taxonomia: o primeiro esquema para classificar computadores em
configurações de paralelismo crescente. 0 esquema consistia de quatro categorias baseadas em tipos diferentes
de fluxos usados por processadores.
Um processador aceita dois fluxos: um fluxo de instruções e um fluxo de dados.
Veja, a seguir, uma tabela que apresenta a classificação de Flynn para os computadores:
- -3
1.1 Computadores de fluxo único de instruções e fluxo clínicode dados - 
 (SISD)Single-Instruction-Stream, Single-Data-Stream
Trata-se da classificacao do tipo mais simples: sac) os monoprocessadores tradicionais, nos quais um ark°
processador busca uma instrucho por vez e a executa sobre um Unico item de dada. Como exemplos dessa
classificacao, podemos citar a arquitetura sequencial e a maquina de Von-Neumann.
Tecnicas como a de , a - e a dopipeline da palavra de instrucão muito longa - Very Long Instruction Word (VLIW)
projeto superescalar podem introduzir paralelismo em computadores SISD.
Alem disso, a tecnologia Hyper-Threading da Intel introduz paralelismo, criando dois processadores virtuais por
meio de urn Unico processador fisico, o que da a um sistema operacional habilitado a multiprocessador a
impressao de que esteja executando em dois processadores (um a urn) com pouco menos da metade da
velocidade do processador fisico.
Na técnica de , o caminho de execução de uma instrução é dividido em estágios discretos, o que permitepipeline
que o processador processe várias instruções simultaneamente, contanto que, no máximo, uma instrução ocupe
cada estágio durante um ciclo de relógio.
Já as técnicas VLIW e superescalar emitem, simultaneamente, várias instruções independentes (de um fluxo de
instruções), que executam em diferentes unidades de execução. A VLIW depende de um compilador para
determinar quais instruções emitir a qualquer ciclo de relógio, enquanto um projeto superescalar requer que um
processador tome essa decisão.
1.2 Computadores de fluxo múltiplo de instruções e fluxo único de dados - 
 (MISD)Multiple-Instruction-Stream, Single-Data-Stream
Esses tipos de computadores não são usados. Uma arquitetura MISD teria várias unidades de processamento que
agiriam sobre um fluxo único de dados. Cada unidade executaria uma instrução diferente nos dados e passaria o
resultado para a próxima unidade.
1.3 Computadores de fluxo único de instruções e fluxo múltiplo de dados - 
 (SIMD)Single-Instruction-Stream, Multiple-Data-Stream
Esses computadores emitem instruções que agem sobre vários itens de dados. Um computador SIMD consiste
em uma ou mais unidades de processamento.
- -4
Um processador executa uma instrução SIMD processando-a em um bloco de dados (por exemplo, adicionando
esse bloco a todos os elementos de um arranjo). Se houver mais elementos de dados do que unidades de
processamento, essas unidades buscarão elementos de dados adicionais para o ciclo seguinte.
Isso pode melhorar o desempenho da arquitetura SIMD em relação às arquiteturas SISD, que exigiriam um laço
para realizar a mesma operação em um elemento de dados por vez. Um laço contém muitos testes condicionais e
requer que o processador SISD decodifique a mesma instrução várias vezes, além de exigir que o processador
SISD leia os dados uma palavra por vez.
Ao contrário, arquiteturas SIMD leem um bloco de dados por vez, reduzindo dispendiosas transferências da
memória para o registrador. Por isso, arquiteturas SIMD são mais efetivas em ambientes em que um sistema
aplica a mesma instrução a grandes conjuntos de dados.
Como exemplos de computadores que usam uma arquitetura SIMD, podemos citar os processadores vetoriais e
os processadores matriciais.
Processadores vetoriais
Contêm uma unidade de processamento que executa cada instrução vetorial em um conjunto de dados,
processando a mesma operação em cada elemento de dado. Esses processadores dependem de pipelines
profundos e de altas velocidades de clock.
Pipelines profundos permitem que o processador realize trabalho em diversas instruções por vez, de modo que
muitos elementos de dados possam ser manipulados de uma só vez.
Processadores matriciais
Também denominados processadores maciçamente paralelos, contêm diversas unidades de processamento que
executam a mesma instrução em paralelo sobre muitos ele-mentos de dados.
Os processadores matriciais podem conter dezenas de milhares de elementos de processamento. Portanto, esses
processadores são mais eficientes quando manipulam grandes conjuntos de dados.
1.4 Computadores de fluxo múltiplo de instruções e fluxo múltiplo de dados 
- (MIMD)Multiple-Instruction-Stream, Multiple-Data-Stream
Trata-se de multiprocessadores, nos quais as unidades processadoras são completamente independentes e
operam sobre fluxos de instruções separados.
Entretanto, esses sistemas normalmente contêm hardware que permite que os processadores se sincronizem
uns com os outros quando necessário, como no caso de acessarem um dispositivo periférico compartilhado.
Essa classe foi subdividida em sistemas fortemente acoplados e fracamente acoplados.
- -5
2 Esquemas de interconexão de processadores
O esquema de interconexão de um sistema multiprocessador descreve de que modo os componentes do sistema
(como, por exemplo, um processador e módulos de memória) são conectados fisicamente.
O esquema de interconexão é uma questão fundamental para projetistas de multiprocessadores, porque afeta o
desempenho, a confiabilidade e o custo do sistema. Um sistema de interconexão consiste de (compostos denós 
componentes do sistema ou de chaves que fazem o roteamento das mensagens entre componentes) e enlaces
(conexão entre dois nós)
Em muitos sistemas, um único nó pode conter um ou mais processadores, seus caches associados, um módulo de
memória e uma chave. Em multiprocessadores de grande escala, às vezes, abstraímos o conceito de nó e
indicamos um grupo de nós como um único supernó.
Uma técnica para medir a tolerância à falha de um esquema de interconexão é contar o número de enlaces de
comunicação que devem falhar antes que a rede não possa mais funcionar adequadamente. Isso pode ser
quantificado por meio da largura de (número mínimo de enlaces que precisam ser cortados parabisseção
dividir a rede em duas metades não conectadas).
Sistemas que têm larguras de bisseção maiores são mais tolerantes à falha do que aqueles que têm larguras de
bisseção menores, pois mais componentes têm de falhar antes que o sistema inteiro tenha problemas.
O desempenho de um esquema de interconexão depende, em grande parte, da latência de comunicação entre
nós, que pode ser medida de várias maneiras, como, por exemplo, por meio da latência média.
Outra medição de desempenho é o (distância mais curta entre os dois nós mais remotos dodiâmetro da rede
esquema de interconexão). Para determiná-lo, você deve considerar todos os pares de nós da rede e identificar o
caminho de comprimento mais curto para cada par calculado pela soma do número de enlaces percorridos. Só
então, você identificará o maior desses caminhos.
Um diâmetro de rede pequeno indica baixa latência de comunicação e desempenho mais alto. Por fim, arquitetos
de sistemas tentam minimizar o custo de um esquema de interconexão, semelhante ao número total de enlaces
de uma rede.
Saibamais
Clique aqui e conheça agora alguns esquemas de interconexão de processadores: 
http://estaciodocente.webaula.com.br/cursos/gra257/docs/esquemas_inter_processadores.
pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/esquemas_inter_processadores.pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/esquemas_inter_processadores.pdf
- -6
3 Arquiteturas de acesso à memória
Veja, a seguir, uma figura que representa a classificação das arquiteturas segundo o acesso à memória:
3.1 Acesso uniforme à memória - UMA
Arquiteturas de multiprocessadores com acesso uniforme à memória - Uniform Memory Access multiprocessor
(UMA) - requerem que todos os processadores compartilhem a memória principal do sistema. Essa é uma
extensão direta da arquitetura de memória de um monoprocessador, mas com vários processadores e módulos
de memória.
O tempo de acesso à memória é uniforme para qualquer processador que acessar qualquer item de dado, exceto
quando esse estiver armazenado no cache de um processador ou quando houver contenção no barramento.
Saiba mais
Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/UMA.pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/UMA.pdf
- -7
3.2 Acesso não uniforme à memória - NUMA
Arquiteturas de multiprocessador de acesso não uniforme à memória - (NUMA)NonUniform Memory Access
mantêm uma memória global compartilhada, que pode ser acessada por todos os processadores.
A memória global é fracionada em módulos, e cada nó usa um desses módulos de memória como a memória local
do processador. Cada nó contém um processador, mas isso não é uma exigência. Embora a implementação do
esquema de interconexão possa variar, os processadores são conectados diretamente a seus módulos de
memória local e conectados indiretamente ao restante da memória global. Esse arranjo proporciona acesso mais
rápido à memória local do que ao restante da memória global, porque o acesso à memória global requer que se
percorra a rede de interconexão.
3.3 NUMA com cache coerente (CC-NUMA)
NUMAs com cache coerente (CC-NUMAs) sâo multiprocessadores NUMA que im-pôemCache Coherent NUMAS
coerência de cache. Em uma arquitetura CC-NUMA típica, cada endereço de memória física está associado a um
nó nativo, responsável por armazenar o item de dado com aquele endereço de memória principal.
Muitas vezes, o nó nativo é simplesmente determinado pelos bits de ordem mais alta do endereço.
Saiba mais
Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/NUMA.
pdf
Saiba mais
Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/CC-
NUMA.pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/NUMA.pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/NUMA.pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/CC-NUMA.pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/CC-NUMA.pdf
- -8
3.4 Arquitetura de memória somente de cache - COMA
Em um sistema NUMA, cada nó mantém sua própria memória local, cujo acesso pode ser feito por processadores
de outros nós. Muitas vezes, o acesso à memória local é radicalmente mais rápido do que o acesso à memória
global (ou seja, o acesso a outrc nó da memória local).
A latência de falta de cache ( ), que é o tempo requerido para recuperar dados que não estãocache-miss latency
no cache, pode ser significativa quando o dado requisitado não estiver presente na memória local. Um modo de
reduzir a latência de falta de cache é reduzir o número de requisições de memória atendidas por nós remotos.
Os multiprocessadores de arquitetura de memória somente de cache - (COMA)Cache Only Memory Architecture
usam uma ligeira variação da NUMA para abordar essa questão do posicionamento da memória.
3.5 Sem acesso à memória remota - NORMA
Multiprocessadores sem acesso à memória remota - (NORMA) - sãoNo Remote Memory Access
multiprocessadores fracamente acoplados que não fornecem nenhuma memória global compartilhada. Cada nó
mantém sua própria memória local, e multiprocessadores NORMA implementam, frequentemente, uma memória
virtual compartilhada comum (SVM).Shared Virtual Memory
Saiba mais
Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/COMA.
pdf
Saiba mais
Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/NORMA.
pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/COMA.pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/COMA.pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/NORMA.pdf
http://estaciodocente.webaula.com.br/cursos/gra257/docs/NORMA.pdf
- -9
4 Programação distribuída
A programação distribuída pode ser:
• Sequencial: Composta por um conjunto de instruções que são executadas sequencialmente.
• Concorrente: Permite execução concorrente de tarefas dentro de um mesmo processo ou entre 
processos que compartilham recursos.
• Paralela: Pressupõe a existência de mais de uma CPU, pois é destinada à execução simultânea de tarefas 
de um mesmo processo.
5 Execução de uma tarefa
Existem três maneiras de executar uma tarefa de forma mais rápida, quais sejam:
Aumento da velocidade da CPU
Algumas limitações estão associadas à aquisição de CPUs com maior poder de processamento, como o aumento
de seu custo e a previsão para a velocidade dos processadores duplicarem a cada 18 meses (Lei de Moore), que
tem sido mantida até os dias atuais.
Mesmo com o aumento da frequência das CPUs, há a possibilidade de essas não atenderem à solução de alguns
problemas.
Otimização do algoritmo
Geralmente, conseguimos aumentar o desempenho de um sistema com a melhora do algoritmo. Entretanto, esse
sistema pode ser comprometido quando não há uma solução determinística para o problema.
Colaboração
Quando pensamos em trabalhar com colaboração, devemos atentar para a diferença entre paralelismo e
concorrência. Veja:
• Paralelismo - Execução de uma tarefa em mais de uma CPU (os processadores colaboram para execução 
dessa tarefa);
• Concorrência – Os processos disputam CPUs (uma ou mais).
6 Aspectos técnicos da programação distribuída
Veja alguns aspectos técnicos da programação distribuída:
• Interação da aplicação e do usuário com o ambiente distribuído em níveis diferentes;
• Suporte a plataformas heterogêneas através de uma camada de entre o kernel e a aplicação (software 
);middleware
• Problemas como custo e carência de produtos de adequados; software 
• Programação paralela, utilizando bibliotecas de troca de mensagem (como, por exemplo, o MPI e o PVM) 
ou bibliotecas baseadas em memória compartilhada (como, por exemplo, ).Pthreads
•
•
•
•
•
•
•
•
•
- -10
A troca de mensagens ( ) é o método de comunicação baseada no envio e recebimento demessage passing
mensagens através de uma rede de computadores, seguindo regras de protocolo de comunicação entre vários
processadores que possuam memória própria.
Os processos possuem acesso à memória local. As informações, por sua vez, são enviadas da memória local do
processo à memória local do processo remoto. Nesse modelo, o programador é responsável pela sincronização
das tarefas.
O que vem na próxima aula
Na próxima aula, você estudará sobre os seguintes assuntos:
• Introdução aos modelos de comunicação e a arquitetura cliente/servidor;
• O que é um modelo e quais são as características dos modelos arquitetural e fundamental;
• Fundamentos e características de cada componente do modelo cliente/servidor.
CONCLUSÃO
Nesta aula, você:
• Conheceu a classificação de multiprocessadores em relação à quantidade de fluxo de dados e instruções, 
e em relação ao acesso à memória;
• Verificou o desenvolvimento de aplicações para as arquiteturas MIMD.
Saiba mais
Clique aqui e conheça, a seguir, os exemplos citados de bibliotecas de troca de mensagem e
bibliotecas baseadas em memória compartilhada:
http://estaciodocente.webaula.com.br/cursos/gra257/Aula_04.htm
•
•
•
•
•
http://estaciodocente.webaula.com.br/cursos/gra257/Aula_04.htmOlá!
	1 Taxonomia de Flynn
	1.1 Computadores de fluxo único de instruções e fluxo clínicode dados - Single-Instruction-Stream, Single-Data-Stream (SISD)
	1.2 Computadores de fluxo múltiplo de instruções e fluxo único de dados - Multiple-Instruction-Stream, Single-Data-Stream (MISD)
	1.3 Computadores de fluxo único de instruções e fluxo múltiplo de dados - Single-Instruction-Stream, Multiple-Data-Stream (SIMD)
	1.4 Computadores de fluxo múltiplo de instruções e fluxo múltiplo de dados - Multiple-Instruction-Stream, Multiple-Data-Stream (MIMD)
	2 Esquemas de interconexão de processadores
	3 Arquiteturas de acesso à memória
	3.1 Acesso uniforme à memória - UMA
	3.2 Acesso não uniforme à memória - NUMA
	3.3 NUMA com cache coerente (CC-NUMA)
	3.4 Arquitetura de memória somente de cache - COMA
	3.5 Sem acesso à memória remota - NORMA
	4 Programação distribuída
	5 Execução de uma tarefa
	6 Aspectos técnicos da programação distribuída
	O que vem na próxima aula
	CONCLUSÃO

Continue navegando