Como defini na parte 1 desta série de publicações, irei descrever, resumidamente, alguns tipos de conceitos e terminologias associados à Programação Paralela e a organização dos computadores que suportam este paradigma.
Supercomputador Janus na Universidade do Colorado. |
Nesta publicação iremos conhecer a classificação de computadores paralelos de acordo com a famosa Taxonomia de Flynn.
A Taxonomia de Flynn
Uma das classificações mais amplamente utilizadas, em uso desde 1966, é nomeada Flynn's Taxonomy. O nome é por causa do carinha da foto ao lado.Michael J. Flynn, propôs a taxonomia dos computadores paralelos em 1966. |
A taxonomia de Flynn distingue arquiteturas de computadores multi-processadores de acordo com a maneira que eles podem ser classificados dentre duas dimensões independentes de Instruction Stream e Data Stream. Cada uma destas dimensões pode ter apenas um de dois possíveis estados: Single ou Multiple.
A matriz abaixo define os quatro possíveis estados de classificação de acordo com Flynn:
S I S D Single Instruction Stream Single Data Stream |
M I S D Multiple Instruction Stream Single Data Stream |
S I M D Single Instruction Stream Multiple Data Stream |
M I M D Multiple Instruction Stream Multiple Data Stream |
Lembra da calculadora que você fez depois do seu primeiro Hello World? |
Single Instruction, Single Data (SISD):
- Um computador serial;
- Single Instruction: Somente um fluxo de instrução é acionado pela CPU durante qualquer ciclo de clock;
- Single Data: Some um fluxo de dado é utilizado como entrada durante qualquer ciclo de clock;
- Execução determinística;
- Este é o modelo mais antigo de computador;
- Exemplos: geração antiga de mainframes, minicomputadores, estações de trabalho e PCs de processador único.
Single Instruction, Multiple Data (SIMD):
- Um tipo de computador paralelo;
- Single Instruction: Todas unidades de processamento executam a mesma instrução em qualquer instante do ciclo de clock;
- Multiple Data: Cada unidade de processamento pode operar em um elemento de dado diferente;
- Mais adequado para problemas especializados caracterizados por um alto grau de regularidade, tais como processamento de gráficos ou imagens;
- Sincronização (bloqueante) e execução determinística;Exemplo de execução de aplicação emcomputador SIMD com pipeline de vetores.
- Duas variedades: Matriz de Processadores e Pipelines de Vetores;
- Exemplos:
- Matriz de Processadores: Thinking Machines CM-2, MasPar MP-1 & MP-2, ILLIAC IV;
- Pipelines de Vetores: IBM 9000, Cray X-MP, Y-MP & C90, Fujitsu VP, NEC SX-2, Hitachi S820, ETA10.
- Computadores mais modernos, particularmente aqueles com unidades de processadores gráficos (GPUs) que empregam instruções SIMD e unidades de execução.
Multiple Instruction, Single Data (MISD):
- Um tipo de computador paralelo;
Exemplo de execução MISD. - Multiple Instruction: Toda unidade de processamento opera em um dado independentemente através de fluxos de instrução separados;
- Single Data: Um único fluxo de dados alimenta várias unidades de processamento;
- Alguns (caso exista) exemplos atuais desta classe de computador paralelo nunca existiram;
- Alguns usos possíveis podem ser:
- filtros de frequência múltipla operando em um único sinal de fluxo;
- múltiplos algoritmos de criptografia tentando quebrar uma única mensagem codificada.
Multiple Instruction, Multiple Data (MIMD):
- Um tipo de computador paralelo;
- Multiple Instruction: Todo processador deve estar executando um fluxo de instrução diferente;
- Multiple Data: Todo processador deve estar trabalhando com um fluxo de dado diferente;
- Execução pode ser síncrona ou assíncrona, determinística ou não-determinística;
- Atualmente, o tipo mais comum de computador paralelo - os mais modernos supercomputadores se encaixam nessa categoria;
- Exemplos: supercomputadores mais atuais, clusters de computadores paralelos em rede e gris, computadores SMP multi-processador, PCs multi-core;
- Várias arquiteturas MIMD também incluem execução SIMD em sub-componentes.
Em resumo, a classificação MIMD é a que abrange os computadores que iremos executar as aplicações paralelas e os conceitos de paralelismo a serem vistos nesta série aqui no blog.
A próxima parte desta série fala sobre como avaliar a indicação do uso ou não da programação paralela em sistemas.
A próxima parte desta série fala sobre como avaliar a indicação do uso ou não da programação paralela em sistemas.
0 Comentários