Esta lição apresenta a Taxonomia de Flynn, uma classificação das arquiteturas de computadores com base no paralelismo de instruções e dados, proposta por Michael J. Flynn em 1966. Esta taxonomia ajuda a “organizar” e entender o paralelismo nos sistemas de computação.
Taxonomia de Flynn
- SISD (Single Instruction, Single Data): Um fluxo de instrução único opera sobre um fluxo de dados único.
- SIMD (Single Instruction, Multiple Data): Uma única instrução opera simultaneamente em múltiplos dados. É eficaz para operações repetitivas e é uma característica comum em CPUs modernas (via extensões como SSE ou AVX) e GPUs.
- MISD (Multiple Instruction streams, Single Data stream): Múltiplos fluxos de instruções operam sobre um único fluxo de dados. Este modelo é menos comum na prática.
- MIMD (Multiple Instruction, Multiple Data): Diferentes processadores executam diferentes instruções em diferentes conjuntos de dados. Este é o modelo mais flexível e geral de paralelismo.
Modelos de Programação para Paralelismo
- SPMD (Single Program, Multiple Data): Múltiplos processadores executam o mesmo programa de forma independente em diferentes conjuntos de dados. Este modelo é escalável e amplamente utilizado em sistemas de computação de alto desempenho.
- MPMD (Multiple Program, Multiple Data): Múltiplos processos executam programas diferentes em diferentes conjuntos de dados. É uma generalização do SPMD e útil em aplicações complexas.
Exemplos Práticos
- SIMD: O processamento de gráficos, onde a mesma operação é aplicada simultaneamente a muitos pixels.
- MIMD: Permite que diferentes tarefas sejam executadas simultaneamente de maneira independente.
- SPMD: Utilizado em simulações de dinâmica de fluidos computacional (CFD), onde o mesmo código é executado em diferentes núcleos para calcular o fluxo de fluidos em seções distintas do espaço físico.
- MPMD: Aplicado em sistemas de análise de dados financeiros, onde diferentes nós de um cluster executam diferentes análises em diversos tipos de dados.
Esta MasterClass destaca a importância de entender as diferentes arquiteturas e modelos de programação para aproveitar ao máximo o potencial do paralelismo na resolução de problemas computacionais, melhorando a eficiência e o desempenho de aplicações.
Classificação
MasterClass