1. Introdução ao Processamento Paralelo e de Alto Desempenho 1.1 MOTIVAÇÃO PARA O PROCESSAMENTO DE ALTO DESEMPENHO - Aumento de desempenho de um modo geral: resolução de problemas em menos tempo Análise estrutural Modelagem climática Exploração petrolífera Simulação aerodinâmica Inteligência artificial Sistemas especialistas Outras aplicações científicas e de engenharia - Limitação tecnológica para processadores mais rápidos - Divisão de tarefas entre os diversos elementos do sistema - Tolerância a falhas - Escalabilidade: possibilidade de aumento de desempenho, previsão de expansão do sistema 1.2 A CLASSIFICAÇÃO DE FLYNN PARA ARQUITETURAS PARALELAS DE COMPUTADORES Organização de arquiteturas paralelas Single instruction, single data (SISD) Uniprocessor Single instruction, multiple data (SIMD) Vector Processor Array Processor Multiple instruction, single data (MISD) Multiple instruction, multiple data (MIMD) Shared Memory (tightly coupled) Symmetric Multiprocessor (SMP) Nonuniform Memory Access (NUMA) Distributed Memory (loosely coupled) Clusters Single Instruction Single Data (SISD) stream: nesta classe, um único fluxo de instruções opera sobre um único fluxo de dados. Isto corresponde ao processamento sequencial característico da máquina de von Neumann e que compreende os computadores pessoais e estações de trabalho. Apesar dos programas estarem organizados através de instruções sequenciais, elas podem ser executadas de forma sobreposta em diferentes estágios (pipelining). Arquiteturas SISD caracterizam-se por possuírem uma única unidade de controle podendo possuir mais de uma unidade funcional. Capítulo 1. Introdução ao Processamento Paralelo e de Alto Desempenho Control unit Functional unit 2 Memory Fig. 1 Classe SISD da classificação de Flynn Single Instruction Multiple Data (SIMD) stream: esta classificação corresponde ao processamento de vários dados sob o comando de apenas uma instrução. Em uma arquitetura SIMD o programa ainda segue uma organização sequencial. Para possibilitar o acesso a múltiplos dados é preciso uma organização de memória em diversos módulos. A unidade de controle é única e existem diversas unidades funcionais. Nesta classe estão os processadores vetoriais e matriciais. Control unit Functional unit M1 Functional unit M2 Functional unit Mn Fig. 2 Classe SIMD da classificação de Flynn Multiple Instruction Single Data (MISD) stream: neste caso, múltiplas unidades de controle executando instruções distintas operam sobre o mesmo dado. Esta classe, na realidade, não representa nenhum paradigma de programação existente e é impraticável tecnologicamente. Control unit Functional unit M1 Control unit Functional unit M2 Control unit Functional unit Mn Fig. 3 Classe MISD da classificação de Flynn Capítulo 1. Introdução ao Processamento Paralelo e de Alto Desempenho 3 Multiple Instruction Multiple Data (MIMD) stream: esta classe é bastante genérica envolvendo o processamento de múltiplos dados por parte de múltiplas instruções. Neste caso, várias unidades de controle comandam suas unidades funcionais, as quais tem acesso a vários módulos de memória. Qualquer grupo de máquinas operando como uma unidade (deve haver um certo grau de interação entre as máquinas) enquadra-se como MIMD. Alguns representantes desta categoria são os servidores multiprocessados, as redes de estações e as arquiteturas massivamente paralelas. Control unit Functional unit M1 Control unit Functional unit M2 Control unit Functional unit Mn Fig. 4 Classe MIMD da classificação de Flynn 1.3 NÍVEIS DE EXPLORAÇÃO DO PARALELISMO - Hardware - Microprogramação - Convencional - Sistema operacional - Linguagem de programação 1.4 FORMAS DE DEPENDÊNCIA DE DADOS E DE CONTROLE Dependência de dados: ocorre entre as instruções Dependência de controle: ocorre em desvios na sequência do programa Dependência estrutural: ocorre por falta de recursos 1.5 MEDIDAS DE DESEMPENHO DAS ARQUITETURAS PARALELAS - Técnicas de avaliação - Modelagem - Ferramentas analíticas - Benchmarks