A computação paralela é uma computação em que os trabalhos são divididos em partes discretas que podem ser executadas simultaneamente. Cada parte é subdividida em uma série de instruções. As instruções de cada parte são executadas simultaneamente em CPUs diferentes. Os sistemas paralelos lidam com o uso simultâneo de vários recursos de computador que podem incluir um único computador com vários processadores, vários computadores conectados por uma rede para formar um cluster de
processamento paralelo ou uma combinação de ambos.
Os sistemas paralelos são mais difíceis de programar do que os computadores com um único processador porque a arquitetura dos computadores paralelos varia de acordo e os processos de várias CPUs devem ser coordenados e sincronizados.
O ponto crucial do processamento paralelo são as CPUs. Com base no número de fluxos de instrução e dados que podem ser processados simultaneamente, os sistemas de computação são classificados em quatro categorias principais:
Classificação de Flynn -
- Sistemas de instrução única e dados únicos (SISD) -
Um sistema de computação SISD é uma máquina com um único processador capaz de executar uma única instrução, operando em um único fluxo de dados. No SISD, as instruções de máquina são processadas de maneira sequencial e os computadores que adotam esse modelo são popularmente chamados de computadores sequenciais. A maioria dos computadores convencionais possui arquitetura SISD. Todas as instruções e dados a serem processados devem ser armazenados na memória primária.A velocidade do elemento de processamento no modelo SISD é limitada (dependente) pela taxa na qual o computador pode transferir informações internamente. Os sistemas SISD representativos dominantes são IBM PC, estações de trabalho.
- Sistemas de instrução única e dados múltiplos (SIMD) -
Um sistema SIMD é uma máquina multiprocessada capaz de executar a mesma instrução em todas as CPUs, mas operando em diferentes fluxos de dados. As máquinas baseadas em um modelo SIMD são bem adequadas à computação científica, pois envolvem muitas operações de vetor e array. Para que a informação possa ser passada para todos os elementos de processamento (PEs), os elementos de dados organizados dos vetores podem ser divididos em vários conjuntos (N-conjuntos para sistemas N PE) e cada PE pode processar um conjunto de dados.Os sistemas SIMD representativos dominantes são a máquina de processamento vetorial da Cray.
- Sistemas de instrução múltipla e dados únicos (MISD) -
Um sistema de computação MISD é uma máquina com multiprocessador capaz de executar instruções diferentes em PEs diferentes, mas todos operando no mesmo conjunto de dados.Exemplo Z = sin (x) + cos (x) + tan (x)
O sistema executa diferentes operações no mesmo conjunto de dados. As máquinas construídas usando o modelo MISD não são úteis na maioria das aplicações, algumas máquinas são construídas, mas nenhuma delas está disponível comercialmente. - Sistemas de instrução múltipla e dados
múltiplos (MIMD) -
Um sistema MIMD é uma máquina com multiprocessador que é capaz de executar instruções múltiplas em conjuntos de dados múltiplos. Cada PE no modelo MIMD tem instruções e fluxos de dados separados; portanto, as máquinas construídas com este modelo são capazes de qualquer tipo de aplicação. Ao contrário das máquinas SIMD e MISD, os PEs em máquinas MIMD funcionam de forma assíncrona.Máquinas MIMD são amplamente classificados em memória compartilhada MIMD e MIMD de memória distribuída com base na maneira PEs são acoplados à memória principal.
No modelo MIMD de memória compartilhada (sistemas multiprocessadores fortemente acoplados), todos os PEs são conectados a uma única memória global e todos têm acesso a ela. A comunicação entre os PEs neste modelo ocorre através da memória compartilhada, a modificação dos dados armazenados na memória global por um PE é visível para todos os outros PEs. Os sistemas MIMD representativos dominantes de memória compartilhada são as máquinas Silicon Graphics e o SMP (Symmetric Multi-Processing) da Sun / IBM.
Em memória distribuída MIMDmáquinas (sistemas multiprocessadores fracamente acoplados), todos os PEs têm uma memória local. A comunicação entre PEs neste modelo ocorre através da rede de interconexão (o canal de comunicação entre processos, ou IPC). A rede que conecta os PEs pode ser configurada para árvore, malha ou de acordo com o requisito.
A arquitetura MIMD de memória compartilhada é mais fácil de programar, mas é menos tolerante a falhas e mais difícil de estender em relação ao modelo MIMD de memória distribuída. Falhas em um MIMD de memória compartilhada afetam todo o sistema, ao passo que este não é o caso do modelo distribuído, no qual cada um dos PEs pode ser facilmente isolado. Além disso, as arquiteturas MIMD de memória compartilhada têm menos probabilidade de escalar porque a adição de mais PEs leva à contenção de memória. Esta é uma situação que não ocorre no caso da memória distribuída, em que cada PE possui a sua própria memória. Como resultado de resultados práticos e requisitos do usuário, a arquitetura de memória distribuída MIMD é superior aos outros modelos existentes.
Referência -
Taxonomia de Flynn
Dominando Computação em Nuvem : Fundamentos e Programação de Aplicativos