tópicos - computacao paralela introdução

13
1 UNIVERSIDADE PARANAENSE – UNIPAR Reconhecida pela Portaria - MEC N.º 1580, de 09/11/93 – D.O.U. 10/11/93 Mantenedora: Associação Paranaense de Ensino e Cultura – APEC Tópicos Especiais em Sistemas de Informação Sistemas de Informação - 4. o / 2005 Prof. LuizArthur Feitosa dos Santos 1 2 REDES DE COMPUTADORES e-mail: [email protected] Introdu ção a Computação Distribuída Computação Paralela Nas ultimas décadas a taxa de crescimento do poder de processamento de computadores e os tradicionais supercomputadores tem sido algo em torno de 20% ao ano, enquanto que a taxa de crescimento do poder de processamento de microprocessadores tem sido algo em torno de 40% ao ano. As melhorias na arquitetura servem para diminuir o esforço necessário para processar uma instrução por ciclo de máquina, enquanto que avanços tecnológicos tendem a reduzir o tempo necessário por ciclo de instrução. Mas existe a necessidade de sistemas computacionais melhores, e essa evolução pode ser conseguida através do uso de redes de interconexão modernas que facilite interligar diversos computadores através de um barramentoexterno de alta velocidade. A computação paralela surgiu para tentar resolver uma das maiores restrições computacionais que é o processamento das informações de forma seqüencial. 2 3 REDES DE COMPUTADORES e-mail: [email protected] Introdu ção a Computação Distribuída A constante demanda de poder computacional vem gerando a necessidade de processadores cada vez mais rápidos para viabilizar aplicações com elevada taxa de computação e diminuir o tempo de resposta desejado pelos usuários. Existem alguns problemas a serem resolvidos que requerem um grande poder de processamento de dados, por exemplo, simulações numéricas em sistemas complexos como clima, computação gráfica, aplicações aerodinâmicas, programas de exploração sísmica, engenharia genética, entre inúmeras outras aplicações. O modelo de execução seqüencial foi proposto nos primórdios da computação, seu precursor foi John von Neumann. Um computador seqüencial é formado basicamente pelos seguintes elementos de hardware: um único processador, memória e dispositivos de entrada e saída. Um programa desenvolvido para esta arquitetura também é planejado para ser executado de forma seqüencial, e é totalmente dependente do número de instruções que o processador pode executar em seqüência, quanto mais instruções puderem ser executadas em um determinado período de tempo (segundos, por exemplo) melhor é o processador. 3 4 REDES DE COMPUTADORES e-mail: [email protected] Introdu ção a Computação Distribuída Porém a tecnologia empregada na construção de processadores é limitada e apesar de ter evoluído rapidamente, até hoje ela ainda leva um tempo considerável para apresentar ganhos substanciais, no tocante ao tempo de execução do programa. ( “...a velocidade de operação dos circuitos eletrônicos não pode continuar a melhorar indefinidamente. ”, TANENBAUM 2001) Então, apesar dos arquitetos de hardware estarem se empenhando para produzir processadores cada vez mais velozes, processando desta forma um maior número de instruções por segundo, essa evolução um dia pode esbarrar em alguns limites físicos, como por exemplo, a velocidade da luz. Talvez a melhor solução será projetar uma arquitetura com dois processadores, trabalhando à velocidade da luz e processando o programa de forma paralela, tendo assim um sistema, que teoricamente executaria as instruções em uma velocidade equivalente a duas vezes à velocidade da luz. É justamente esta a proposta da computação paralela, ter um sistema trabalhando com milhares de processadores executando uma mesma tarefa. 4 Printed with FinePrint - purchase at www.fineprint.com

Upload: luiz-arthur

Post on 18-Dec-2014

1.810 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Tópicos - Computacao Paralela Introdução

1

UNIVERSIDADE PARANAENSE – UNIPARReconhecida pela Portaria - MEC N.º 1580, de 09/11/93 – D.O.U. 10/11/93

Mantenedora: Associação Paranaense de Ensino e Cultura – APEC

Tópicos Especiais em Sistemas de InformaçãoSistemas de Informação - 4.o / 2005

Prof. LuizArthur Feitosa dos Santos

1

2

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Computação Paralela

Nas ultimas décadas a taxa de crescimento do poder de processamento de computadores e os tradicionais supercomputadores tem sido algo em torno de 20% ao ano, enquanto que a taxa de crescimento do poder de processamento de microprocessadores tem sido algo em torno de 40% ao ano.

As melhorias na arquitetura servem para diminuir o esforço necessário para processar uma instrução por ciclo de máquina, enquanto que avanços tecnológicos tendem a reduzir o tempo necessário por ciclo de instrução.

Mas existe a necessidade de sistemas computacionais melhores, e essa evolução pode ser conseguida através do uso de redes de interconexão modernas que facilite interligar diversos computadores através de um barramentoexterno de alta velocidade.

A computação paralela surgiu para tentar resolver uma das maiores restrições computacionais que é o processamento das informações de forma seqüencial.

2

3

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

A constante demanda de poder computacional vem gerando a necessidade de processadores cada vez mais rápidos para viabilizar aplicações com elevada taxa de computação e diminuir o tempo de resposta desejado pelos usuários.

Existem alguns problemas a serem resolvidos que requerem um grande poder de processamento de dados, por exemplo, simulações numéricas em sistemas complexos como clima, computação gráfica, aplicações aerodinâmicas, programas de exploração sísmica, engenharia genética, entre inúmeras outras aplicações.

O modelo de execução seqüencial foi proposto nos primórdios da computação, seu precursor foi John von Neumann. Um computador seqüencial é formado basicamente pelos seguintes elementos de hardware: um único processador, memória e dispositivos de entrada e saída.

Um programa desenvolvido para esta arquitetura também é planejado para ser executado de forma seqüencial, e é totalmente dependente do número de instruções que o processador pode executar em seqüência, quanto mais instruções puderem ser executadas em um determinado período de tempo (segundos, por exemplo) melhor é o processador.

3

4

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaPorém a tecnologia empregada na construção de processadores é limitada e apesar de ter evoluído rapidamente, até hoje ela ainda leva um tempo considerável para apresentar ganhos substanciais, no tocante ao tempo de execução do programa.

(“...a velocidade de operação dos circuitos eletrônicos não pode

continuar a melhorar indefinidamente. ”, TANENBAUM 2001)

Então, apesar dos arquitetos de hardware estarem se empenhando para produzir processadores cada vez mais velozes, processando desta forma um maior número de instruções por segundo, essa evolução um dia pode esbarrar em alguns limites físicos, como por exemplo, a velocidade da luz.

Talvez a melhor solução será projetar uma arquitetura com dois processadores, trabalhando à velocidade da luz e processando o programa de forma paralela, tendo assim um sistema, que teoricamente executaria as instruções em uma velocidade equivalente a duas vezes à velocidade da luz.

É justamente esta a proposta da computação paralela, ter um sistema trabalhando com milhares de processadores executando uma mesma tarefa.

4

Printed with FinePrint - purchase at www.fineprint.com

Page 2: Tópicos - Computacao Paralela Introdução

5

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Mas isso não é bem verdade, pois sistemas paralelos de uma forma ou de outra sofrem influência de outros fatores que não o do processador, tais como:

Mudar a programação do modelo seqüencial para a programação paralela é muito difícil, pois já existe toda uma cultura criada quanto à maneira seqüencial de projetar programas. Além disso, existem trechos de códigos para resolução de alguns problemas que são intrinsecamente seqüenciais não podendo ser paralelizados;

Outro fator diz respeito à comunicação entre os processadores para a divisão de tarefas, esse problema gera um outro gargalo que não o do processamento, que é o do tempo gasto para enviar um dado a ser processado em um determinado processador. Os esforços tecnológicos para melhorar as redes de interconexão e minimizar essa restrição física são tão grandes quanto o de se construir processadores seqüenciais mais rápidos.

Mais um problema a ser enfrentado é a concorrência entre os processadores para acessar a memória compartilhada. Qual processador teria direito à escrita e à leitura em um determinado trecho na memória. Existem outros inúmeros fatores que influenciam a computação paralela e serão abordados no decorrer do trabalho.

5

6

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Apesar da computação paralela apresentar alguns aspectos desfavoráveis, ela provê inúmeros benefícios, e vem evoluindo a cada ano, tornando-se motivo de estudo de inúmeros pesquisadores e tem apresentado bons resultados.

E o modelo seqüencial com apenas um único processador, sempre fica limitado às restrições tecnológicas de cada época, ou seja, os programas só obterão uma performance melhor, no tocante ao tempo de execução, se os engenheiros da computação projetarem um processador mais rápido que o seu antecessor.

Em geral os processadores têm melhorado sua performance em mais de 50% ao ano, mas um dia essa evolução pode encontrar algum limite físico, o que se tornará um empecilho para cientistas que necessitam criar programas que utilizam um conjunto de dados gigantesco e necessitam de computadores que possam processar esta massa de dados a uma velocidade cada vez mais rápida e não podem ficar limitados a esse obstáculo.

Neste contexto, a computação paralela é uma alternativa viável com potencial para superar esse obstáculo da computação seqüencial. Mas o que é computação paralela? A definição clássica dada por é : “Um computador paralelo é um conjunto de elementos de processamento que se comunicam e cooperam para resolver rapidamente grandes problemas”.

6

7

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaPROCESSAMENTO SEQ ÜENCIAL

O modelo de processamento seqüencial, bem como o computador, teve dentre seus criadores Blaise Pascal, Charles Babbage e John von Neumann (cada um em sua época). John von Neumann apresentou um modelo elementar de execução seqüencial, composto basicamente por memória, unidade aritmética lógica, unidade de controle e os dispositivos de entrada/saída

Memória

Unidade de controle

Unidade Aritm ética

lógica

Acumulador

Dispositivo de entrada

Dispositivo de sa ída

Em computadores estritamente seqüenciais, as instruções que compõem um programa são executadas de forma seqüencial (conforme foram definidas pelo programador) pelo processador. Este modelo proposto serve até hoje como base para a resolução de problemas através de algoritmos seqüenciais e, também, é utilizado como modelo para a construção de computadores.

7

8

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Entretanto, mesmo as arquiteturas seqüenciais utilizam algum tipo de paralelismo interno ao processador ou aos dispositivos que compõem a arquitetura para conseguirem melhores desempenhos.

Um dos primeiros benefícios que os sistemas paralelos trouxeram aos modelos seqüenciais foi provavelmente o advento do uso do pipeline, que permite a execução sobreposta de várias instruções de forma simultânea.

Outra melhoria que os modelos seqüenciais já experimentaram é denominada de arquitetura superescalar, que permite executar alguns códigos (trechos dos programas) em paralelo, esses códigos são extraídos do paralelismo implícito no programa seqüencial, possibilitando desta forma que instruções sejam executadas em uma ordem diferente daquela do programa original, além de fazer um melhor uso de unidades funcionais através do pipeline.

Porém, esses níveis de paralelismo são considerados de baixo nível e não são tratados pelos programadores.

8

Printed with FinePrint - purchase at www.fineprint.com

Page 3: Tópicos - Computacao Paralela Introdução

9

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaO avanço dos dispositivos foi acontecendo de forma gradual até os anos 80, com o surgimento dos circuitos integrados de larga escala de integração, os chips VLSI (VeryLarge Scale Integration).

Historicamente a utilização de paralelismo começou pelo hardware.

O aumento da velocidade do hardware, por mais rápida que possa ser sempre esbarra no limite tecnológico de cada época. Dessa forma, desde o inicio do desenvolvimento dos computadores percebeu-se que a utilização de paralelismo é essencial.

A paralelização proporcionou grandes mudanças nas arquiteturas que evoluíram ao longo dos anos com o surgimento de diversas características nas máquinas, tais como:

vO aparecimento do conceito de palavra (word), leva à manipulação de vários bits em paralelo, ao invés da unidade básica (byte);

vOs processadores de entrada e saída possibilitaram o paralelismo entre os periféricos e o processador principal, tornando as tarefas de E/S mais independentes;

9

10

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídavComo as memórias também eram lentas e criavam um gargalo, surgiram técnicas como o uso da memória cache;

vO aparecimento dos pipelines ou vias internas do microprocessador, que paralelizam a execução de instruções e operações aritméticas de uma forma implícita;

vNo período de 1953 a 1970, o paralelismo existente era transparente ao usuário, influenciando apenas na melhoria do desempenho da máquina, sendo denominado paralelismo de baixo nível;

vEm 1975 o Illiac, com 64 processadores, a primeira forma em que o paralelismo diferencia do paralelismo de baixo nível;

vO surgimento da filosofia VLSI para projetos de microcomputadores, oferece maior facilidade e menor custo no desenvolvimento de microcomputadores cada vez mais complexos e menores;

vA partir dessa época surgiram dois caminhos distintos: Arquiteturas paralelas e sistemas distribuídos ou baseados em redes e as máquinas vetoriais;

10

11

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Michael Flynn (GUTZMANN, 1996) em 1966 classificou os inúmeros modelos de arquitetura computacional de acordo o número de instruções executadas e o número de conjuntos de dados tratados, essa caracterização produziu quatro classes de computadores, que são:

Arquitetura SISD - Single Instruction, Single Data: conjunto único de instruções, conjunto único de dados. É a identificação mais simples, em que a máquina é considerada seqüencial, pois só processa uma única instrução sobre um único dado por vez. É o modelo de von Neumann apresentado na seção 2.1, sem qualquer nível de paralelismo.

C P M

InstruçõesDados

11

12

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Arquitetura MISD - Multiple Instruction, Single Data: conjunto único de instruções, múltiplos conjuntos de dados. Seriam computadores que executam várias instruções ao mesmo tempo sobre um único dado. Não existe nenhuma máquina implementada neste modelo, e até mesmo Flynn duvidou que algum dia isso pudesse existir.

C P M

C P

C P

M

M

12

Printed with FinePrint - purchase at www.fineprint.com

Page 4: Tópicos - Computacao Paralela Introdução

13

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Arquitetura SIMD – Single Instruction, Multiple Data: conjunto único de instruções, múltiplos conjuntos de dados. É o equivalente ao paralelismo de dados, uma instrução éexecutada paralelamente utilizando vários dados (processadores vetoriais, matriciais e os processadores mais recentes se enquadram nesta categoria).

P M

C P

P

M

M

13

14

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Arquitetura MIMD – Multiple Instruction, Multiple Data: múltiplos conjuntos de instruções, múltiplos conjuntos de dados. Este modelo é o que faz a melhor referência àcomputação paralela propriamente dita, pois refere-se ao modelo de execução paralela, no qual cada processador está essencialmente agindo independentemente, havendo, portanto realmente múltiplos fluxos de instruções e múltiplos dados).

C P M

C P

C P

M

M

14

15

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Além da classificação de Flynn é possível similarmente dividir os computadores em outras sub-categorias:

Arquitetura de m áquinasparalelas

SISD SIMD MISD MIMD

Processadorvetorial

Processadormatricial

Multiprocessadores

Multicomputadores

UMA COMA NUMA MPP COW

Barramento Comutador CC -NUMA

NC-NUMA

Grade Hipercubo

Memó ria Compartilhada Troca de Mensagens

Taxonomia para máquinas paralelas

15

16

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

A categoria MIMD foi dividida em: •multi-processadores (máquinas com memória compartilhada); •multicomputadores (máquinas com memória distribuída).

Multiprocessadores com memória compartilhada

Um multiprocessador é um sistema computacional que tem vários processadores e um único espaço de endereçamento visível a todos esses processadores.

A comunicação entre a memória comum e processador é feito através de instruções load e store que dão acesso aos endereços da memória, neste modelo surge à necessidade de se coordenar os acessos ao meio comum, gerenciando quem pode ler e escrever em um determinado endereço comum da memória, a esta coordenação de acessos à memória se dá o nome de sincronização.

Este modelo também é denominado de “fortemente acoplado”

16

Printed with FinePrint - purchase at www.fineprint.com

Page 5: Tópicos - Computacao Paralela Introdução

17

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Multiprocessadores com memória compartilhada

PROCESSADOR 1

PROCESSADOR 2

PROCESSADOR N

...

BARRAMENTO M E MÓRIA

DISPOSITIVOSE/S

17

18

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

A principal vantagem das arquiteturas de memória compartilhada será o compartilhamento de dados entre os processos torna-se muito rápido.

E como desvantagens classificam-se:ØSão computadores extremamente caros;ØExiste uma limitação física para a quantidade de processadores;ØSão necessárias t écnicas de sincronização para a leitura e gravação de dados;

As arquiteturas de memória compartilhada podem ainda ser divididas em dois esquemas distintos que são:

•Multiprocessadores UMA ou SMP (Symmetric MultiProcessor) todos os processadores consomem o mesmo tempo para acessar a memória compartilhada;

•Multiprocessadores NUMA no qual alguns acessos à memória são mais rápidos que outros.

18

19

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaMulticomputadores com memória distribuída

Uma outra implementação da arquitetura MIMD, são os multiprocessadores com memória distribuída, é aquela na qual cada processador tem sua própria memória, acessível somente pelo proprietário e nunca diretamente por qualquer outro processador do sistema. O sistema multiprocessador de memória distribuída também e conhecida como multicomputador.

PROCESSADOR 1

PROCESSADOR 2

PROCESSADOR N

...

BARRAMENTO

DISPOSITIVOSE/S

M E MÓRIA

M E MÓRIA

M E MÓRIA

19

20

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

No esquema memória distribuída os processadores trocam mensagens uns com os outros, usando a rede de interconexão.

A falta de memória compartilhada de um sistema multicomputador tem implicações importantes na estrutura do software dessas máquinas. Em um sistema de memória distribuída ou multicomputador, a comunicação entre processos normalmente usa as primitivas SEND e RECEIVE, implementadas por software.

Isso faz com que os programas para essas máquinas adquiram uma estrutura diferente e mais complexa do que a estrutura dos programas que funcionam em sistemas multiprocessadores, isso significa que o programador e responsável pelo bom uso dos recursos computacionais, ficando a cargo do desenvolvedor definir que processadores e quais processos serão executados em determinados momentos

20

Printed with FinePrint - purchase at www.fineprint.com

Page 6: Tópicos - Computacao Paralela Introdução

21

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

As desvantagens da memória distribuída são basicamente duas:

üA programação é mais complicada e o paralelismo não é tão intuitivo. Isto porque existe a necessidade de tarefas enviarem mensagens de forma explicita a outras que estão em execução em algum outro processador, e também de forma explicita, uma tarefa precisa receber esta mensagem;

üSe exigir muita comunicação, o desempenho acaba sendo comprometido pelo alto custo envolvido na troca de mensagens.

21

22

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Com isso podemos montar nossa estrutura de máquinas, MIMD segundo compartilhamento de memória.

22

MIMD

Multiprocessadores(espaço de endereçamento único)

Multicomputadores(Múltiplos espaços de endereçamento)

UMA(Memória central)

NUMA(Memória distribuída)

CC-NUMA

COMA

NORMA

23

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Processadores Paralelos Massivos (MPP)

Um sistema MPP é um grande sistema de processamento paralelo com arquitetura de memória compartilhada e centralizada.

Ele é composto por algumas centenas de elementos processadores, interconectados por uma rede de alta velocidade.

Cada nó pode possuir uma memória principal e um ou mais processadores. Alguns nós podem possuir periféricos como discos ou um sistema de backup.

23

24

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Multiprocessadores Simétricos (SMP)

Os sistemas de processamento simétrico possuem de 2 a 64 processadores, e são considerados uma arquitetura de memória compartilhada (multiprocessador).

Cada processador tem acesso a toda a memória do sistema através de um barramento ou de uma rede de comunicação dedicada.

O modelo ideal para uma memória compartilhada por vários processadores seria um tempo de acesso baixo, num só ciclo de relógio e com largura de banda infinita. Na verdade, os tempos de aceso não são desprezíveis, crescem com o tamanho do sistema, a largura de banda é limitada.

Esta arquitetura é limitada ao nível de processadores devido ao problema clássico de saturação do barramento e coerência na memória cache.

Também, qualquer processo ou processador pode ler e escrever qualquer palavra na memória compartilhada simplesmente movendo os dados para o local determinado.

A sincronização entre as tarefas é feita por leitura/escrita na memória compartilhada, a comunicação entre tarefas é rápida, a escalabilidade é limitada pelo número de caminhos entre a memória e os processadores, podendo saturar o barramento de comunicação.

24

Printed with FinePrint - purchase at www.fineprint.com

Page 7: Tópicos - Computacao Paralela Introdução

25

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

As interligações entre computadores SMP se enquadram em três categorias principais:

Uniform Memory Access (UMA)vÉ uma arquitetura fortemente acoplada, normalmente utilizada em multiprocessadoresde pequena dimensão, devido ao aumento to tempo de acesso à medida que o sistema cresce.

vO desenvolvimento de aplicações é simplificado, pois não existe a preocupação com a localidade da informação.

vContudo, o congestionamento das interligações é um fator que limita a largura de banda que pode ser amenizada com o uso de cache nos processadores. Existem algoritmos eficiente em hardware para coerência de cache nesta arquitetura.

25

P P P P P P

Rede de Interconexão

Memória 26

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Non Uniform Memory Access (NUMA)vA memória é distribuída, implementada com vários módulos que são associadas a cada processador.

vO espaço de endere çamento é único, e cada processador pode acessar toda a memória do sistema.

vCom isso um maior número de processadores pode ser interligado, mas o projeto tende a ser mais complexo devido a protocolos altamente sofisticado para coerência em cache e o desempenho dos algoritmos depende exclusivamente da localização dos dados.

26

P P P P P P

Rede de Interconexão

M M M M M MEspaço de endereçamento único

27

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cache-OnlyMemory Architecture (COMA)É um tipo especial de NUMA, onde as memórias globais distribuídas são substituídas por caches não existe uma hierarquia de memória em cada processador.

Todas as cachês formam um espaço de endereçamento global. Um sofisticado mecanismo de coerência de cache em hardware se faz necessário, o que justifica o alto preço desta tecnologia.

Uma variação desta arquitetura utiliza o recurso de memória virtual compartilhada.

27

C C C C C C

Rede de Interconexão

P P P P P P

28

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaCC-NUMA (Cache-Coherent Non Uniform Memory Access)

É um sistema de multiprocessadores escaláveis que possui uma arquitetura de coerência de cache com acesso não uniforme.

Nestas 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.

Apesar do uso de memória compartilhada as arquiteturas NUMA mais modernas oferecem bibliotecas para programação utilizando trocas de mensagens. Cada nóprocessador possui uma cache local para reduzir o trafego na rede de interconexão. O balanceamento de carga é realizado dinamicamente pelos protocolos de coerência das caches. No caso de arquiteturas com paralelismo no nível de threads apenas sistemas com memória compartilhada foram construídos ou propostos.

No CS (Software-Coherent) a coerência de cache é feita em software e podemos incluir os recursos de memória compartilhada distribuída nesta filosofia.

28

Printed with FinePrint - purchase at www.fineprint.com

Page 8: Tópicos - Computacao Paralela Introdução

29

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Programação em Multiprocessadores

Existem varias técnicas para programar os multiprocessadores, para realizar comunicação, um processo é necessário apenas escreve dados na memória global para ser lido por todos os outros.

Para sincronização, seções criticas podem ser utilizadas, o que evitam condições de concorrência, isso se da através do emprego de técnicas como semáforos ou monitores para garantir a exclusão mutua.

O desenvolvimento de aplicações paralelas neste modelo pode ser feito tendo como base a biblioteca OpenMP. A API disponibilizada estende as linguagens de programação seqüenciais (C/C++/Fotran) acrescentando-lhes estruturas SPMD, isto é estruturas que simplificam o compartilhamento de dados entre processos cooperativos. Possui ainda primitivas de sincronização, de compartilhamento e privatização dos dados, gerando assim todo o ambiente necessário para facilitar a vida dos programadores.

29

30

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

NORMA (No Remote Memory Access)

É um modelo de memória para os multicomputadores com arquitetura fracamente acoplada.

Neste modelo, não existe um espaço de endereçamento global, cada processador tem sua memória local e a troca de dados é realizada através de passagem de mensagens e os processadores são conectados por uma rede de alto desempenho.

No entanto, o desenvolvimento de sistemas de memória compartilhada distribuída (DSM) pode gradualmente ir substituindo este modelo.

É atualmente a arquitetura mais usada tanto para máquinas paralelas e genéricas, quanto para redes de computadores.

Os sistemas MIMD são m áquinas assíncronas. Surge daí a necessidade de seus múltiplos processadores se comunicarem para que possam coordenar e se comportar como unidade coerente.

30

31

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

NORMA (No Remote Memory Access)

As redes de computadores podem ser vistas como arquiteturas NORMA, porem existem diferenças quanto à velocidade e confiabilidade da rede de interconexão. Como os processadores necessitam fazer explicitamente operações de I/O (envio e recepção de mensagens) o modelo de programação tradicionalmente usado nas arquiteturas NORMA éa troca de mensagens.

No que se refere à programação, o ambiente é formado por bibliotecas (APIs) com rotinas para passagens de mensagens (MPI e PVM) que são ligadas a programas escritos em C, C++ e Fortran, em que o problema é dividido em tarefas, e estas se comunicam entre si por troca de mensagens.

Como vantagens desta arquitetura temos um projeto simples, relativamente barato e com alta escalabilidade.

E como desvantagem fica o problema de que a memória não é mais diretamente acessível a todos os processadores do sistema e o alto custo na comunicação e sincronização entre os processadores.

31

32

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaSistemas distribuídos

Um sistema distribuído é um conjunto de elementos que se comunicam através de uma rede de interconexão e que utilizam software de sistema distribuído.

Cada elemento é composto por um ou mais processadores e uma ou mais memórias. O uso de tais sistemas tem se expandido nos últimos anos principalmente devido ao contínuo barateamento e disponibilidade de hardware para computadores, bem como a disseminação das redes de computadores.

As vantagens de sistemas distribuídos incluem a possibilidade de seu crescimento incremental, ou seja, grande escalabilidade, a possibilidade de implementação de aplicações distribuídas e a possibilidade de implementação de sistemas tolerantes a falhas por meio de replicação de serviços ou de máquinas.

Um sistema distribuído também pode ser classificado como um conjunto de computadores com seu próprio clock e que não possuem memória compartilhada, e é visto pelos seus usuários como um sistema de recurso único, também chamado de imagem única do sistema (SSI – Single System Image), que se comunicam através de um barramento por troca de mensagens. Estes sistemas são considerados por meio destas características como fracamente acoplados, ou seja, um cluster ou agregado de máquinas.

32

Printed with FinePrint - purchase at www.fineprint.com

Page 9: Tópicos - Computacao Paralela Introdução

33

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaSistemas distribuídos

Os sistemas distribuídos têm por seu maior objetivo melhorar a comunicação entre os computadores, sendo este o gargalo no incremento de performance da comunicação entre processos.

Porém, no desenvolvimento de um sistema distribuído, encontramos um pequeno problema: o software. Devido ao elevado tamanho e complexidade dos sistemas distribuídos, o seu desenvolvimento exige um conhecimento bastante profundo nesta área e a utilização de técnicas adequadas para concepção e projetos de sistemas.

O software distribuído permite aos computadores coordenarem suas atividades através de cooperação e interação, compartilhando recursos do sistema como o hardware, software e os dados.

A computação distribuída, algumas vezes denominada “metacomputação”, combina a capacidade de computação de diversos computadores geograficamente distribuídos via Internet.

33

34

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaSistemas distribuídos

Se realizado de forma especial entre seus participantes, poderemos classificá-los como:

vGrades computacionais (Grid Computing);vVariedade de estações de trabalho e PC’s;vUm meio filantrópico tal como o projeto SETI@home.

Essas classes exploram ciclos de máquinas disponíveis entre computadores ociosos.

A diferença entre um sistema distribuído e um computador paralelo está no objetivo que se tem quando se usa o sistema.

O computador paralelo é definido como uma coleção de elementos de processamento que cooperam e comunicam para resolver problemas de uma maneira bem rápida.

Conforme PITANGA: “Poderíamos dizer então que os sistemas paralelos são um tipo específico de sistema distribuído.”

34

35

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaProblemas com Supercomputadores na Atualidade

ØAlt íssimo custo;ØSoftwares proprietários e caros;ØAlto custo de manutenção;ØTotal dependência de fornecedores;ØDificuldade de atualização;

São estes fatores que diretamente influenciam na existência de fortes pesquisas em clusters de computadores.

A definição de um supercomputador varia de acordo com o tempo. A tendência é que a demanda será definida por nós, para que os futuros supercomputadores sejam cada vez mais rápidos e inteligentes. Máquinas consideradas supercomputadores hoje, por exemplo, podem perder seu posto em menos de um ano.

As pesquisas mais recentes das tendências em aplicações, arquiteturas de computadores, e redes sugerem um futuro no qual o paralelismo atingirá não somente em supercomputadores ou clusters de computadores, mas sim a união de todos eles interligados pelo mundo, daí um enorme esforço na junção destes equipamentos geograficamente dispersos: nasce o projeto GRID.

35

36

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster de computadores

O termo Cluster é definido como “Quando você utiliza dois ou mais computadores em conjunto para resolver um problema...”.

Os Clusters de computadores podem ser subdividos em duas categorias básicas:

Alta Disponibilidade (HA – High Availability) e Alta Performance de Computação (HPC – High Performance Computing).

O cluster de alta disponibilidade tem a finalidade de manter um determinado serviço de forma ininterrupta, e o Cluster de Alta Performance tem por finalidade oferecer alto poder de processamento.

36

Printed with FinePrint - purchase at www.fineprint.com

Page 10: Tópicos - Computacao Paralela Introdução

37

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaCluster de Alta Disponibilidade

Cluster de Alta Disponibilidade (HA – High Availability) conceitua-se em dois ou mais nós interligados por uma rede de computadores de qualquer topologia, no qual o objetivo é ter disponibilidade continua dos serviços oferecidos pelos servidores do cluster .

Cluster de Alta Disponibilidade é definido como “uma técnica que consiste na configuração de dois ou mais computadores para que eles passem a trabalhar em conjunto”, um cluster não é uma característica de hardware, e sim um conjunto completo de sistema operacional e softwares desenvolvidos especificamente para trabalhar como um cluster .

O Cluster de Alta Disponibilidade trabalha com a redundância de servidores, softwares e dados para poder dispor a disponibilidade continua dos serviços fornecidos a uma rede de computadores.

O Cluster de Alta Disponibilidade vem a oferecer uma solução para ambiente computacionais que necessitam de serviços que operem 24 horas por dia e 7 dias por semana. São serviços que são considerados essenciais e sua parada é inadmissível.

37

38

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaCluster de Alta Disponibilidade

O Cluster de Alta Disponibilidade tem seu funcionamento baseado em um conceito de servidores backup

Uma implementação de um Cluster de Alta Disponibilidade baseia-se em se ter um servidor principal e um servidor backup interligados por uma rede de computadores de qualquer topologia.

Neste tipo de implementação, o servidor backup é responsável por monitorar o funcionamento do servidor principal, tanto em funcionamento do software e hardware, em uma configuração de Alta Disponibilidade existe uma redundância dos dados armazenados e dos serviços oferecidos pelo cluster .

A redundância de dados é realizada em ambos os computadores, tornando assim os dados do usuário redundantes e disponíveis com um nível de segurança maior.

O cluster deve oferecer transparência para o usuário que o está utilizando, sendo visível para este usuário um único computador, determinando-se assim o mascaramento de falhas.

38

39

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaCluster de Alta Disponibilidade

Um cluster de Alta Disponibilidade pode ter um de seus nós inoperante por um período de tempo, ocasionado por uma falha.

Para realizar o cálculo da disponibilidade de um cluster é necessário entender o conceito de componente em reparo e funcionando . Quando um componente se encontra no estado em reparo, após ele ser substituído ele é considerado como um novo componente, sendo seu novo estado o funcionando.

A definição do cálculo para alta disponibilidade é realizada analisando-se dois fatores fundamentais, o tempo médio até apresentar falha (MTTF – Middle Time To Fail) e o tempo m édio de reparo (MTTR – Middle Time To Repair).

Durante a análise realizada para o cálculo, devem ser observadas as possíveis paradas planejadas para manutenção ou atualização, que não devem ser incluídos como MTTR.

A disponibilidade de computadores pertencentes à classe de alta disponibilidade tem de 99,99% a 99,9996 de estarem disponíveis durante o período de um ano.

39

40

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaCluster de Alta Disponibilidade

Falha: Conceitua-se como sendo o problema ocasionado ao meio físico do cluster, como o hardware(parte física do computador) de comunicação entre os nós, uma placa de rede, um cabo de rede, uma fonte de alimentação de energia dos servidores, etc. Para prevenir o acontecimento de uma falha deve existir equipamento de segurança, como no-break, estabilizadores de energia, fontes redundantes e um ambiente climatizado adequadamente para instalação do hardware utilizado para montar o cluster .

Erro: É ocasionado por uma falha, uma interferência magnética é considerada uma falha e pode ocasionar a troca de alguns bits , o que irá ocasionar uma resposta incorreta do computador, causando uma falha na informação.

Defeito: O defeito é ocasionado pelo não tratamento de uma falha, que por sua vez, acarreta em um erro, que não tratado ocasiona o defeito, que é percebido no usuário do cluster , como mensagens de erro, travamento do sistema, perda de dados, etc.

Um defeito pode ser causado por um componente danificado, que é uma falha, que irá ocasionar um erro e por fim irá ocasionar um defeito, sendo este componente um meio de comunicação entre os computadores, como a rede de computadores que faz a conexão entre os nós do cluster , teremos uma perda de dados, que causará uma inconsistência dos dados armazenados.

40

Printed with FinePrint - purchase at www.fineprint.com

Page 11: Tópicos - Computacao Paralela Introdução

41

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação DistribuídaCluster de Alta Disponibilidade

Failover: é o conceito utilizado para definir o processo de troca dos servidores, ao ser detectado um defeito no servidor principal o servidor secundário assume o lugar do primário, tornando assim a aplicação funcional, a esse processo de troca dá-se o nome de failover.

Failback: pós a manutenção do servidor principal, ele é colocado novamente em funcionamento e sincronizado com o servidor backup, esse processo de volta do servidor principal é denominado failback (volta da falha).

41

s e r v e r : / # l s

Servidor Primário Servidor Backup

HeartBeatIP - 192.168.1.1 IP - 192.168.1.2

IP - 192.168.1.5

Cliente

42

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster de Alta Performance de Computação

A idéia básica do cluster de alto poder de processamento é fazer com que um grande número de computadores individuais atue como se fossem um único computador, assim aumentando o seu poder de processamento.

Esse tipo de Cluster é mais bem aplicado á problemas que requeiram grandes números de instruções que exijam um grande poder computacional.

Os clusters de alto desempenho de processamento podem ser vistos como uma solução alternativa para universidades e empresas de pequeno porte e médio porte, para obterem processamento de alto desempenho na resolução de problemas através de aplicações paralelizáveis, a um custo razoavelmente baixo se comparada com os altos valores que seriam necessários para a aquisição de supercomputador.

42

43

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster de Alta Performance de Computação

Vantagens do Cluster de Computadores:

Ø Alto Desempenho – possibilidade de se resolver problemas muitos complexos através do processamento paralelo, o que diminui o tempo de resolução do problema;

Ø Escalabilidade – possibilidade de que novos componentes sejam adicionados ámedida que cresce a carga do trabalho;

Ø Tolerância e Falhas – o aumento de confiabilidade do sistema como um todo, caso alguma parte falhe;

Ø Baixo Custo – a redução de custo para se obter processamento de alto desempenho utilizando-se simples computadores;

Ø Independência de fornecedores – Utilização de hardware aberto, software de uso livre e independência de fabricante e licença de uso.

43

44

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster de Alta Performance de Computação

Desvantagens do Cluster de computadores

Ø O hardware de rede tipicamente utilizado não foi criado especificamente para processamento paralelo, o que origina latência superior e largura de banda inferior a outras arquiteturas;

Ø Os algoritmos de programação utilizados deverão ser tolerantes a este problema dentre outros e a utilização de hardware mais específico que minimize o problema de saturação da rede origina custos acrescidos;

Ø É necessária experiência na administração de redes de computadores para construir, configurar e gerir um cluster.

44

Printed with FinePrint - purchase at www.fineprint.com

Page 12: Tópicos - Computacao Paralela Introdução

45

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster Beowulf

A computação em cluster originou-se com o projeto SAGE (Semi-Automatic GroundEnvironment), construído para o NORAD (North American Air Defense) pela IBM, entrando em operações em 1962, e consiste em diversos sistemas separados trabalhando de forma cooperativa para monitorar invasões aéreas no continente norte americano.

No inicio dos anos 90, diversos lugares já experimentavam clusters de estações de trabalho.

Em 1993 a NASA já utilizava um pequeno cluster de estações de trabalho da IBM utilizado para simular partidas de naves espaciais.Também nesse período temos que relatar o projeto NOW (Network of Workstations) da UC Berkeley.

O potencial de expandir a força de processamento paralelo com o uso de PCs comuns foi identificado como uma possibilidade importante pela NASA em suas aplicações de missão crítica, e atendia aos objetivos da empresa de “barato e rápido”.

45

46

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster Beowulf

Em 1994 nascia o Cluster Beowulf, ele surgiu quando a agência espacial necessitava de um equipamento que processasse na ordem de um gigaflops, entretanto, um supercomputador com este nível de desempenho custava em torno de um milhão de dólares, o que era considerado um investimento muito alto para ser utilizado somente por um grupo de pesquisadores.

Os pesquisadores Thomas Sterling e Donald J. Becker decidiram então interligar 16 computadores pessoais, cada um contendo um microprocessador 486, usando o sistema operacional Linux e uma rede padrão Ethernet.

Usado para aplicações cientificas, este conjunto atingiu a marca de 70 megaflops.

Naquela época esta velocidade não era nada baixa se comparada aos pequenos supercomputadores comerciais disponíveis, cerca de U$50.000.00 sendo dez pontos percentuais do preço de uma máquina comercial em 1994, com desempenho equivalente.

46

47

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster Beowulf

ØCaracterísticas de um cluster:ØUso de componentes comuns, disponíveis no mercado;ØProcessadores dedicados na execução das tarefas, ao invés de usar o tempo ocioso;ØUma rede de interconexão privada;

Alem dos itens básicos de um cluster o Beowulf deve ter as seguintes características:

üNenhum componente feito sob encomenda;üIndependência de fornecedores de hardware e software;üPeriféricos escaláveis;üSoftware livre de código aberto;üUso de ferramentas de computação distribuída disponível livremente com alterações mínimas;üRetorno à comunidade do projeto e melhorias.

47

48

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster Beowulf

Como vantagens dessa filosofia de trabalho são:

qNenhum fornecedor possui direitos sobre o produto. Sistemas podem ser construídos usando componentes de diversas origens, graças à padronização de interfaces, tais como: IDE, PCI, SCSI;

qRápida atualização do sistema devido às rápidas evoluções tecnológicas, a menores preços, capazes de continuar executando o mesmo software;

qOs sistemas podem ser montados e modificados ao longo do tempo, de acordo com as necessidades e recursos do usuário, sem depender de configurações disponíveis de um vendedor especifico;

qO beowulf usa software disponível livremente, tão sofisticado, robusto e eficiente quando o comercial;

qInvestimento preservado.

48

Printed with FinePrint - purchase at www.fineprint.com

Page 13: Tópicos - Computacao Paralela Introdução

49

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster Beowulf

49

50

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster Beowulf

Sendo assim, uma característica chave de um cluster Beowulf é o uso do sistema operacional Linux, assim como de bibliotecas de troca de mensagens de livre distribuição. Com isso permitiu-se fazer alterações no sistema operacional para dotá-lo de novas características que facilitaram a implementação para aplicações paralelas.

Atualmente o Beowulf pode ser dividido em duas classes:v Cluster Classe I - construído com equipamentos genéricos de fabricantes conhecidos e aprovados mundialmente,v Cluster Classe II – são construídos com equipamentos específicos de diversos fabricantes.

Um cluster Beowulf é constituído de vários nós escravos (back-end ou escravo) controlados por um computador principal (front-end ou mestre), onde este computador principal é responsável pela distribuição das tarefas e os escravos limitam-se a processar os cálculos que lhe são enviados.

50

51

REDES DE COMPUTADORES

e-mail: [email protected]

Introdu ção a Computação Distribuída

Cluster Beowulf

51

Printed with FinePrint - purchase at www.fineprint.com