Um Estudo das Potencialidades e Limites na Exploração do Paralelismo



Documentos relacionados
Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador)

Um Estudo das Potencialidades e Limites na Exploração do Paralelismo

Máquinas Multiníveis

1

Organização de Computadores 1

Arquiteturas RISC. (Reduced Instructions Set Computers)

Capítulo 8 Arquitetura de Computadores Paralelos

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Unidade 13: Paralelismo:

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES

Aula 26: Arquiteturas RISC vs. CISC

Organização e Arquitetura de Computadores I. de Computadores

Arquitetura e Organização de Computadores I

Introdução às arquiteturas paralelas e taxonomia de Flynn

Introdução à Computação

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Sistemas Operacionais

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede

Introdução a Informática. Prof.: Roberto Franciscatto

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Arquitetura de Rede de Computadores

Arquitetura dos Sistemas de Informação Distribuídos

3. Arquitetura Básica do Computador

BARRAMENTO DO SISTEMA

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

ARQUITETURA DE COMPUTADORES

Disciplina: Introdução à Informática Profª Érica Barcelos

Teleprocessamento e Redes Universidade Católica do Salvador. Aula 04 - Estrutura de Redes de Comunicação. Objetivo : Roteiro da Aula :

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

IW10. Rev.: 02. Especificações Técnicas

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

REDES DE COMPUTADORES

Capítulo 4 - Roteamento e Roteadores

Rede de Computadores

Sistema de Computação

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA

Centro Tecnológico de Eletroeletrônica César Rodrigues. Atividade Avaliativa

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Comparação SDs X Scs

Sistemas Distribuídos

Roteamento e Comutação

Evolução na Comunicação de

Figura 1 Taxas de transmissão entre as redes

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Interconexão de redes locais. Repetidores. Pontes (Bridges) Hubs. Pontes (Bridges) Pontes (Bridges) Existência de diferentes padrões de rede

3 SCS: Sistema de Componentes de Software

ORGANIZAÇÃO CURRICULAR

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton

Sistemas Computacionais II Professor Frederico Sauer

Projetos I Resumo de TCC. Luiz Rogério Batista De Pieri Mat:

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Fundamentos de Redes de Computadores. Elementos de Redes Locais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

Governança de TI. ITIL v.2&3. parte 1

Figura 1 - O computador

5 Entrada e Saída de Dados:

Sistemas de Informação I

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Tecnologia PCI express. Introdução. Tecnologia PCI Express

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

REDE DE COMPUTADORES

Redes de Computadores. Prof. Dr. Rogério Galante Negri

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

INTRODUÇÃO BARRAMENTO PCI EXPRESS.

Um Driver NDIS Para Interceptação de Datagramas IP

Arquitetura de Computadores. Sistemas Operacionais IV

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

5 Estudo de caso: utilizando o sistema para requisição de material

Sistemas Operacionais

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Prof. Wilton O. Ferreira Universidade Federal Rural de Pernambuco UFRPE 1º Semestre / 2012

Visão Geral de Sistemas Operacionais

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

PROJETO DE REDES

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Márcio Leandro Moraes Rodrigues. Frame Relay

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

1. NÍVEL CONVENCIONAL DE MÁQUINA

PROJETO DE REDES

Módulo 8 Ethernet Switching

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2

Considerações no Projeto de Sistemas Cliente/Servidor

1. CAPÍTULO COMPUTADORES

Introdução ao Modelos de Duas Camadas Cliente Servidor

Engenharia de Sistemas Computacionais

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Transcrição:

2 UNIVERSIDADE CATÓLICA DE PELOTAS ESCOLA DE INFORMÁTICA Um Estudo das Potencialidades e Limites na Exploração do Paralelismo Adenauer Corrêa Yamin O que for a profundeza do teu ser, assim será teu desejo. O que for o teu desejo, assim será a tua vontade. O que for a tua vontade, assim serão teus atos. O que forem teus atos, assim será teu destino. Brihadaranyaka Upanishad IV, 4.5 Disciplina: Processamento Paralelo e de Alto Desempenho

3 4 SUMÁRIO 1 INTRODUÇÃO... 11 1.1 Tema... 11 1.2 Motivação... 11 1.3 Objetivos... 12 1.4 Estrutura do Texto... 13 2 PROCESSAMENTO PARALELO: SUA DIFUSÃO E USO... 14 2.1 Aspectos Favoráveis à Adoção do Processamento Paralelo... 14 2.1.1 Barreiras ao Crescimento da Freqüência de Operação dos Processadores...14 2.1.2 Largura de Banda no Acesso a Memória...15 2.1.3 Paralelismo Intrínseco do Mundo Real...16 2.1.4 A Relação Custo-Benefício dos Processadores de Última Geração...16 2.1.5 Aplicações Extremamente Complexas...17 2.1.6 Suporte a Tolerância a Falhas...18 2.1.7 Crescimento Modular...18 2.2 Aspectos Desfavoráveis à Adoção do Processamento Paralelo 18 2.2.1 Disponibilidade de Software Aplicativo...19 2.2.2 Padronização...21 2.2.3 Relação entre a Teoria e a Tecnologia...22 2.2.4 Instabilidade dos Fornecedores...23 2.3 Considerações finais... 23 3 ORGANIZAÇÃO DO HARDWARE PARA O PARALELISMO... 25 3.1 Redes de Interconexão Utilizadas em Arquiteturas Paralelas 25 3.1.1 Alternativas para Interligar o Processador à Rede de Interconexão.25 3.1.2 Topologias da Rede de Interconexão...26 3.1.2.1 Topologia em Barramento... 27 3.1.2.2 Topologia em Malha... 28 3.1.2.3 Topologia em Hipercubo... 28 3.1.3 Topologia em Árvore...29 3.1.4 Características que Definem o Desempenho de uma Rede de Interconexão...30 3.2 Características das Arquiteturas Paralelas Mais Utilizadas... 31 3.2.1 A Classificação de Flynn para Arquiteturas de Computadores...32 3.2.2 Arquiteturas de Memória Distribuída...32 3.2.2.1 Principais aspectos positivos... 33 3.2.2.2 Principais aspectos negativos... 34 3.2.3 Arquiteturas de Memória Compartilhada...35 3.2.3.1 Principais aspectos positivos... 36 3.2.3.2 Principal aspecto negativo... 36 3.2.4 Arquiteturas Síncronas Matriciais...37 3.2.4.1 Principais aspectos positivos... 37 3.2.4.2 Principais aspectos negativos... 38 3.3 Considerações finais... 39 4 RELAÇÕES ENTRE O HARDWARE E O SOFTWARE PARA EXPLORAÇÃO DO PARALELISMO... 41 4.1 Relação entre Algoritmos e Arquiteturas Paralelas... 41 4.1.1 Critérios para Caracterização de Algoritmos...41 4.1.2 Critérios para Caracterização das Arquiteturas Paralelas...43 4.2 Propriedades de um Modelo de Programação para o Processamento Paralelo... 45 4.2.1 Facilidade para o Desenvolvimento de Software...46 4.2.2 Uma Metodologia para o Desenvolvimento de Software...47 4.2.3 Independência de Arquitetura...48 4.2.4 Facilidade para Ser Entendido...48 4.2.5 Garantia de Desempenho...49 4.2.6 Medidas de Custo...49 4.3 Considerações finais... 50 5 A EXPLORAÇÃO DO PARALELISMO: NÍVEIS DE ABSTRAÇÃO E MODELOS52 5.1 Modelos nos quais o Paralelismo é Explorado de Forma Totalmente Implícita... 52 5.1.1 Programação Funcional...52 5.1.1.1 Fonte Implícita de Paralelismo... 53 5.1.1.2 Exemplo de Exploração do Paralelismo... 53 5.1.1.3 Potencialidade de Exploração do Paralelismo... 54

5 6 5.1.2 Programação em Lógica...54 5.1.2.1 Fontes Implícitas de Paralelismo... 55 5.1.2.2 Exemplo de Exploração do Paralelismo... 55 5.1.2.3 Potencialidade de Exploração do Paralelismo... 57 5.2 Modelos com Assinalamento do Paralelismo Explícito... 57 5.2.1 Paralelismo de dados - exploração de laços...58 5.2.1.1 Exemplo de Exploração do Paralelismo... 59 5.2.1.2 Potencialidade de Exploração do Paralelismo... 59 5.3 Modelos com Assinalamento e Decomposição do Paralelismo Explícitos... 60 5.3.1 Exemplo de Exploração do Paralelismo...60 5.3.2 Potencialidade de Exploração do Paralelismo...62 5.4 Modelos com Assinalamento, Decomposição e Mapeamento do Paralelismo Explícitos... 62 5.4.1 Exemplo de Exploração do Paralelismo...63 5.4.2 Potencialidade de Exploração do Paralelismo...63 5.5 Modelos com Assinalamento, Decomposição, Mapeamento e Comunicação Explícitos... 64 5.5.1 Exemplo de Exploração do Paralelismo...64 5.5.2 Potencialidade de Exploração do Paralelismo...65 5.6 Modelos nos quais o Paralelismo é Explorado de Forma Totalmente Explícita... 65 5.6.1 Exemplo de Exploração do Paralelismo...65 5.6.2 Potencialidade de Exploração do Paralelismo...66 5.7 Considerações finais... 67 6 CONCLUSÕES... 68 6.1 Variáveis Tecnológicas e de Mercado... 68 6.2 Hardware para o Processamento Paralelo... 69 6.3 Relações entre o Hardware e o Software... 70 6.4 Abstração na Exploração do Paralelismo... 71 LISTA DE FIGURAS FIGURA 3.1 - Alternativas para conectar o processador a rede de interconexão...26 FIGURA 3.2 Topologia em barramento...27 FIGURA 3.3 Topologia em malha...28 FIGURA 3.4 Topologia em hipercubo...29 FIGURA 3.5 Topologia em árvore...30 FIGURA 3.6 - Blocos básicos dos computadores seqüenciais...31 FIGURA 3.7 - Arquitetura genérica de multiprocessador de memória distribuída...33 FIGURA 3.8 - Arquitetura genérica de multiprocessador de memória compartilhada...35 FIGURA 3.9 - Arquitetura genérica síncrona matricial...38 FIGURA 3.10 - Escalabilidade & Facilidade de Programação de Arquiteturas Paralelas...40 FIGURA 4.1 - Modelo Para Computação Paralela...46 FIGURA 5.1 Números de Fibonacci em Programação Funcional...53 FIGURA 5.2 Fontes de Paralelismo na Programação em Lógica...56 FIGURA 6.1 - Arquiteturas dos 500 mais poderosos hardwares paralelos...70

7 8 LISTA DE TABELAS LISTA DE ABREVIATURAS TABELA 1 - Diversidade das arquiteturas paralelas...22 TABELA 2 - Relação entre as características do hardware e do software paralelo...43 ATM BSP CMOS DRAM DSM ECL FDDI FFT HIPPI HPF Mbps MFLOPS MIMD MIPS MISD NFS NUMA OLTP PVM SIMD SISD SONET SPMD SR SRAM TCP/IP Assynchronous Transfer Mode Bulk Synchronous Parallelism Complementary Metal Oxide Semiconductor Dynamic Random Access Memory Distributed Shared Memory Emmiter Coupled Logic Fiber Distributed Data Interface Fast Fourier Transformation High-Performance Parallel Interface High Performance Fortran Milhões de bits por segundo Milhões de Instruções de Ponto Flutuante Por Segundo Múltiplas seqüências de Instruções, Múltiplas seqüências de Dados Milhões de Instruções Por Segundo Múltiplas Seqüências de Instruções, uma Seqüência de Dados Network File System NonUniform Memory Access On Line Transaction Processing Parallel Virtual Machine Uma Seqüência de Instruções, Múltiplas Seqüências de Dados Uma Seqüência de Instruções, uma Seqüência de Dados Synchronous Optical NETwork Simple Program Multiple Data Synchronizing Resources Static Random Access Memory Transmition Control Protocol/Internet Protocol

9 10 RESUMO ABSTRACT O processamento paralelo, apesar de vir sendo utilizado com sucesso em diversas áreas da atividade humana, particularmente em pesquisa e desenvolvimento, onde historicamente tem tido destaque em aplicações numericamente intensivas, ainda representa um percentual pequeno do mercado de hardware e software. Há aproximadamente duas décadas, o processamento paralelo já está disponível comercialmente. Neste período, seu emprego atravessou fases de extremo otimismo, bem como atravessou outras em que foi encarado como um nicho de mercado em declínio. Com o objetivo de delinear tanto os aspectos favoráveis como os contrários à difusão do paralelismo, este trabalho pondera: as tendências do mercado, as características das arquiteturas paralelas, as relações entre estas e o software paralelo e as características desejáveis a um modelo de programação paralela. O trabalho culmina com a análise das potencialidades e limites para exploração do paralelismo, em função dos níveis de abstração dos diferentes modelos de programação. The parallel processing, in spite of being used with success in several areas of the human activity, particularly in research and development, where historically it has been having prominence in numerically intensives applications, it still represents a small percentage of the hardware and software market. As long two decades, the parallel processing has been commercially available. In this period its employment crossed phases of extreme optimism, also it crossed others were it was seen as a market niche in decline. With the objective of delineating so much the favorable aspects as the obstacles to the diffusion of the parallelism, this work considers: the tendencies of the market, the characteristics of the parallel architectures, the relationships between these and the parallel software and the desirable characteristics of a model of parallel programming. It culminates with the analysis of the potentialities and limits of the parallelism exploitation, in function of the levels of abstraction of the different programming models. Palavras-chave: processamento paralelo, arquiteturas paralelas, modelos de programação paralela. Keywords: parallel processing, parallel architectures, models of parallel programming.

11 12 1 INTRODUÇÃO 1.1 Tema O tema deste trabalho é o estudo das potencialidades e limites na exploração do paralelismo. A abordagem proposta contempla tanto aspectos do hardware como do software. 1.2 Motivação A perspectiva de utilizar paralelismo nos sistemas de computação é tão antiga quanto os primeiros computadores. Trabalhos desenvolvidos por Von Neumann, na década de 40, já ponderavam a possibilidade de utilizar algoritmos paralelos para a solução de equações diferenciais. Entre os primeiros trabalhos envolvendo o paralelismo, com implementação de hardware, os registros apontam para o período 1944-1947, quando Stibitz e Williams, nos laboratórios da Bell Telephone, desenvolveram o sistema MODEL V. Formado por dois processadores e três canais de entrada e saída, esse multiprocessador primitivo já constituía um exemplo típico de arquitetura paralela. Nele poderiam ser executados dois programas distintos, bem como seus dois processadores poderiam ser alocados para uma única execução. Disponível comercialmente há aproximadamente duas décadas, o paralelismo vem sendo utilizado com sucesso em diversos ramos da atividade humana. Vem prestando relevantes serviços à área de pesquisa e desenvolvimento, onde historicamente tem se destacado as soluções que oferece para o processamento numericamente intensivo. Neste período, a perspectiva do seu emprego tem oscilado de um extremo otimismo, no qual o processamento paralelo é visto como a única solução para a complexidade crescente das aplicações computacionais, a um pessimismo intenso, a partir do qual o paralelismo é entendido como um nicho de mercado em declínio. Diversos trabalhos tem sido desenvolvidos buscando potencializar a exploração do paralelismo nos diversos paradigmas de programação. Surgiram, dentre outras, propostas para explorar paralelismo na programação em lógica ([KER 94]), na programação funcional ([JON 93]), na orientação a objetos ([BRI 98]) e no paradigma imperativo ([AND 92]), cada qual com suas características de abstração, facilidade de desenvolvimento de software e potencialidade para o desempenho. Apesar de todos estes esforços da comunidade científica e de seu sucesso em diversas áreas de aplicação, o paralelismo ainda não é uma metodologia central em ciência da computação, e os negócios envolvendo o mesmo constituem um percentual pequeno do montante de hardware e software anualmente negociado. A motivação central deste trabalho é estudar as razões para este comportamento na área do paralelismo. A organização para este estudo está feita de forma que sejam contemplados os objetivos previstos na seção seguinte. 1.3 Objetivos O objetivo geral deste trabalho consiste na organização do conhecimento relacionado com as potencialidades e limites na exploração do paralelismo. Com a perspectiva de uma abordagem o mais ampla possível, foram contemplados os seguintes objetivos específicos: caracterizar os aspectos tecnológicos e de mercado favoráveis à disseminação do paralelismo; identificar os principais obstáculos para uma adoção mais generalizada do paralelismo, pelos usuários de recursos de computação; compor, para os principais hardwares atualmente empregados para exploração do paralelismo, a relação dos pontos positivos e negativos de suas características; relacionar as características do software paralelo, com aquelas necessárias na arquitetura, para sua execução com o máximo desempenho; discutir as características necessárias a um modelo de programação para o desenvolvimento de software paralelo; caracterizar a potencialidade de exploração do paralelismo nos diferentes níveis possíveis para abstração da sua gerência.

13 14 A estrutura definida para o texto contempla individualmente estes objetivos, porém os mesmos estão interrelacionados sempre que necessário para caracterizar fatos e tendências na área do paralelismo. 1.4 Estrutura do Texto O texto está formado por seis capítulos, a saber: O capítulo um é a corrente introdução, aonde está registrada a motivação bem como os objetivos do trabalho. O capítulo dois trata dos aspectos favoráveis e desfavoráveis para uma ampla adoção do paralelismo. São trazidos à consideração os limites tecnológicos para o hardware, as tendências de mercado e particularidades do desenvolvimento de software paralelo, dentre outros pontos. O capítulo três, por sua vez, discorre sobre a organização do hardware para o paralelismo. Neste capítulo também é mantida a ótica de prós e contras, agora aplicada às diferentes alternativas para construção de arquiteturas paralelas. O capítulo quatro está dividido em duas partes: uma primeira está dedicada a caracterizar as relações entre a natureza do software e a arquitetura paralela mais adequada à mesma, e uma segunda parte que discute as alternativas necessárias a um modelo de programação paralela, para que este possa minimizar os aspectos negativos que esta forte sintonia entre o hardware e o software traz para o desenvolvimento de software paralelo. O capítulo cinco, levando em consideração o discutido nos anteriores, discorre sobre a possibilidade de exploração do paralelismo em diferentes níveis de abstração, partindo de modelos cuja exploração do paralelismo é feita de forma totalmente automática, até aqueles nos quais o programador precisa explicitar todos os aspectos de sua exploração e gerência. Finalizando, o capítulo seis apresenta as conclusões gerais. 2 PROCESSAMENTO PARALELO: SUA DIFUSÃO E USO O objetivo central deste capítulo é levantar os aspectos gerais que tem estimulado o uso do processamento paralelo, bem como aqueles que tem restringido seu emprego. O foco são as implicações da tecnologia nos mercados produtor e consumidor. Um problema central em computação paralela, segundo [SKI 94], é o desencontro entre as necessidades do software paralelo e as propriedades das arquiteturas paralelas sobre as quais eles serão executados. Este distanciamento entre o hardware e o software paralelo oscila com rapidez, isto porque o tempo de vida de uma arquitetura paralela é, via de regra, medido em anos, enquanto que o tempo de vida desejável para qualquer software de grande porte é medido em décadas. Dentro de uma visão tradicional, o procedimento é, no espaço de alguns anos, rescrever o software à medida que uma nova tecnologia de arquitetura paralela é disponibilizada no mercado. A rescrita de código, dentre outros problemas, introduz custos. 2.1 Aspectos Favoráveis à Adoção do Processamento Paralelo Nesta seção serão tratados aspectos que podem ser vistos como estímulos para adoção do processamento paralelo, seja a partir do ponto de vista da exaustão das arquiteturas seqüenciais em função dos limites impostos pela tecnologia atual, seja considerando as necessidades dos diferentes segmentos usuários. 2.1.1 BARREIRAS AO CRESCIMENTO DA FREQÜÊNCIA DE OPERAÇÃO DOS PROCESSADORES Como regra geral, quando maior a freqüência de operação do processador (clock), maior desempenho terá o computador. Porém é importante ter presente que, uma vez mantidos aspectos como conjunto de instruções, arquitetura, etc., o desempenho efetivo (registrado pelos benchmarks tradicionais, tais como MIPS, MFLOPS, SPECmarks) não irá crescer na mesma razão do clock. Outros aspectos precisariam acompanhar o crescimento do clock, como por exemplo a eficiência (largura de banda) de acesso à memória. Independente desta posição não otimista para a relação

15 16 desempenho/clock, considerando o nível em que se encontra atualmente a velocidade de operação dos processadores, a mesma já enfrenta entraves tecnológicos para seu aumento. Destacam-se os seguintes aspectos como limitadores para o crescimento do clock ([HWA 93]): O consumo de energia e a conseqüente dissipação térmica: os componentes projetados para clocks elevados (tais como SRAM ou ECL) apresentam índices de consumo e dissipação térmica bem mais elevados que os similares (DRAM, CMOS) para clocks mais modestos. A dimensão do processador e seus componentes acessórios: limitados pela velocidade da luz, os elétrons podem percorrer distâncias menores à medida que a duração do pulso de clock diminui. Um clock de 1 GHz (1000 MHz) limita a distância máxima de deslocamento dos elétrons à grandeza de centímetros (o valor exato depende das características do substrato semicondutor). Deste modo, para operar nesta velocidade se fazem necessários componentes eletrônicos altamente densos, bem como cuidados extremos com o comprimento dos condutores que os interligam. Esta elevada densidade de integração e a restrição nas dimensões globais dificulta o fluxo do elemento resfriador (ar, água, etc.), o que, por sua vez, introduz severas dificuldades no processo de dissipação térmica. Além disto, é preciso considerar o fato que em freqüências elevadas ficam potencializados os fenômenos de capacitâncias e indutâncias parasitas, os quais dificultam sobremaneira os níveis de integração dos semicondutores. Estes dois aspectos independentes se interrelacionam no equilíbrio entre desempenho e possibilidade de operação estável e confiável. As arquiteturas de alto desempenho são utilizadas, quase sempre, em missões críticas e pelo seu custo não é usual mais do que uma unidade em cada instalação. 2.1.2 LARGURA DE BANDA NO ACESSO A MEMÓRIA O aproveitamento do crescente poder computacional dos modernos processadores esbarra no de fato que o fluxo de dados possível entre os mesmos e a memória não cresce na mesma proporção. Este comportamento foi denominado Gargalo de Von Neumann, e caracteriza que o poder de processamento disponibilizado para computação de um problema é limitado em função da taxa de transferência de dados e instruções entre a memória e o processador. O uso de vários processadores na solução do problema faculta, com a soma de suas taxas de transferência individuais, a superação do Gargalo de Von Neumann. Existem diferentes formas de interligar diversas memórias a vários processadores na definição uma máquina paralela. Cada estratégia de interconexão (vide item 3.1) tem implicações diretas em aspectos operacionais, tais como: emprego genérico (possibilidade de uso com desempenho desta máquina paralela a um número maior de naturezas de problemas), na sua escalabilidade e no seu custo, dentre outros ([CUL 99]). 2.1.3 PARALELISMO INTRÍNSECO DO MUNDO REAL Os fenômenos naturais são inerentemente paralelos. Deste modo, seria natural e direto expressar as computações pertinentes ao mundo real de forma paralela, ou ao menos de uma forma que não impeça o paralelismo. Escrever programas seqüenciais, via de regra, implica impor uma ordem as ações que são independentes e que poderiam ser executadas concorrentemente. Na programação seqüencial, é inevitável arbitrar uma particular ordem na qual as ações são colocadas. Isto pode tornar o computador um impecilho para a percepção de novos conceitos. Some-se a isto o fato que situações nas quais a ordem de execução das ações é importante para o melhor entendimento do problema real, são difíceis de diferençar daquelas nas quais a ordem de execução praticamente não importa ([SKI 98)]. 2.1.4 A RELAÇÃO CUSTO-BENEFÍCIO DOS PROCESSADORES DE ÚLTIMA GERAÇÃO Mesmo que a recente tendência histórica de crescimento da velocidade dos processadores se mantenha, a computação paralela possibilita para muitas aplicações, uma relação custo/benefício melhor do que a conseguida ao utilizar equipamentos com um só processador de última geração. Isto ocorre, em grande parte, devido aos custos de projeto e fabricação de cada nova geração de processadores. A cada novo processador mais poderoso, o preço da geração anterior cai consideravelmente; desde modo, agrupar em um equipamento paralelo processadores mais antigos provê um alternativa computacional de custo competitivo. Tendo em vista que cada nova geração introduz um acréscimo de desempenho com magnitude da ordem de décimos, mesmo modestos agrupamentos de processadores não tão atuais, são viáveis no que diz respeito ao desempenho global. Este aspecto se potencializa ainda mais se a escolha tecnológica do

17 18 hardware para interligação não apresentar custo elevado. Esta tendência é, em parte, responsável pela popularidade das estações de trabalho em rede de alta velocidade (10 Mbps no mínimo) como alternativa de equipamento para processamento paralelo ([CUL 99]). 2.1.5 APLICAÇÕES EXTREMAMENTE COMPLEXAS Existem aplicações que demandam elevadíssimo poder computacional. Por mais poderoso que possa ser determinado processador, dentro do atual estado tecnológico, a combinação de vários destes em uma arquitetura para processamento paralelo, torna disponível maior capacidade de processamento que a possível com um único. Como exemplo de aplicações que atualmente demandam grandes recursos computacionais destacam-se: inteligência artificial, incluindo redes neurais, robótica e reconhecimento de padrões; análise de elementos finitos, onde aparecem diversos tipos de equações diferenciais aplicadas a mecânica estática, eletromagnetismo, e dinâmica dos fluidos; simulação, onde se sobressaem as técnicas de Monte Carlo; processamento de sinais, envolvendo FFT (Fast Fourier Transformation) sobre grandes volumes de dados, processamento de imagens e processamento sísmico; algoritmos básicos em ciência da computação: classificação, busca e processamento de árvores e grafos; grandes bancos de dados com resposta em tempo real (OLTP On Line Transaction Processing); Freqüentemente é sugerido que os equipamentos paralelos, sobretudo os de grande porte, são comprometidos com propósitos especiais. A idéia inerente a esta afirmação é que somente um pequeno conjunto de aplicações poderia ser executado eficientemente em um hardware paralelo. A lista de aplicações acima indica exatamente o contrário; a ineficiência do processamento paralelo tem muito mais relação com as dimensões do problema do que com as particularidades de um domínio específico do conhecimento humano. Nos últimos dez anos os computadores paralelos tem sido programados com eficiência tanto para aplicações do mundo comercial como para o da pesquisa e desenvolvimento ([MOR 94]). 2.1.6 SUPORTE A TOLERÂNCIA A FALHAS Muitas aplicações críticas (controle de tráfego aéreo, sistemas de controle industriais, automações bancárias, etc.) exigem um regime de operação sem interrupções. A existência de redundância de hardware, inerente às arquiteturas paralelas, oferece um suporte natural às técnicas de tolerância a falhas. Alguns processadores podem monitorar e registrar a operação do sistema, no momento que for detectado alguma disfunção, as partes envolvidas podem ter suas funções continuadas por outras. Deste modo, no caso de falhas, o equipamento paralelo pode manter a computação corrente, possivelmente ocorrendo tão somente uma diminuição no desempenho na prestação dos serviços ([HWA 93]). 2.1.7 CRESCIMENTO MODULAR Esta característica diferencia fortemente as arquiteturas paralelas e distribuídas dos equipamentos mainframes tradicionais. Nas arquiteturas com um único processador, o usuário no momento do crescimento da plataforma, precisa prever sua demanda no mínimo a médio prazo. Isto leva a um crescimento feito aos saltos. Logo após a expansão, é comum a instalação como um todo apresentar uma relação custo/benefício ruim. Tanto para o fornecedor quanto para o usuário, é muito oportuno que a arquitetura possa ser expandida gradualmente através da adição de módulos. Esta possibilidade permite uma melhor adequação da curva investimentos & produtividade, uma vez que o equipamento poderá crescer dentro de uma determinada faixa, tendo como regulador a demanda de serviço real ([MOR94]). 2.2 Aspectos Desfavoráveis à Adoção do Processamento Paralelo O processamento paralelo está comercialmente presente há aproximadamente 20 anos, com a fabricação dos equipamentos CDC6600 e IBM360/91. Tem sido utilizado com sucesso em ciência e engenharia, ou até mesmo em áreas novas como inteligência artificial e simulação financeira. A computação paralela, porém está longe de ser uma metodologia central em ciência da computação e a venda de hardware/software paralelo representa

19 20 uma pequena parcela dos negócios de equipamentos para computação. Esta seção objetiva identificar os principais aspectos que contribuem para esta situação. 2.2.1 DISPONIBILIDADE DE SOFTWARE APLICATIVO É exatamente a disponibilidade de software de terceiros com qualidade (um número típico para as diferentes marcas seria 1500 aplicações) que tem potencializado o mercado das estações de trabalho de elevado desempenho. Por sua vez, a ausência de aplicações disponíveis no mercado tem sido um dos fatores a restringir a adoção de equipamentos paralelos por parte das empresas em geral. Poucas empresas, à exceção das instituições de pesquisa e ensino, não se intimidam ante os esforços para portar e/ou desenvolver software para exploração do paralelismo. Este aspecto acaba sendo significativo no momento de decidir pela não adoção de um equipamento paralelo. Tentando traçar um perfil, é possível dizer que no binômio fazer & comprar, o software paralelo que uma empresa poderia necessitar, ainda está muito polarizado no fazer. Do ponto de vista de uma empresa que desenvolve e comercializa software, a decisão de investir no mercado de processamento paralelo ou em outras frentes (por exemplo, melhoramentos em produtos já amplamente utilizados) é influenciada por no mínimo cinco fatores ([MOR 94]): pequena base instalada: o mercado de equipamentos paralelos é pequeno, independente do referencial que for utilizado. Os equipamentos maiores estão nos laboratórios governamentais, os quais, via de regra, tem sua própria equipe de desenvolvimento. Outro grupo de equipamentos está em universidades, utilizados principalmente para pesquisa e ensino. Por sua vez, as empresas que fazem desenvolvimento tecnológico de seus produtos com o suporte de computadores paralelos (empresas químicas, automóveis, aviões), por questões de propriedade intelectual, também tem seu próprio grupo de programação. elevado custo de conversão: atualmente, para uma empresa migrar seu produto de software de uma arquitetura tradicional para uma plataforma paralela, terá de ter uma equipe de desenvolvimento conhecedora do hardware paralelo utilizado. Em função deste hardware, poderão ser necessárias modificações no layout de dados, no fluxo de controle, e até mesmo nos algoritmos básicos utilizados. O ganho de desempenho, principal razão de ser da adoção do hardware paralelo, poderá ser prejudicado com a não observância criteriosa destas modificações quase sempre indispensáveis. ausência de padrões: as linguagens para desenvolvimento de aplicações, bem como o hardware paralelo, variam de fornecedor para fornecedor, e na maioria das vezes mesmo mantido o fornecedor, de equipamento para equipamento. Além disso, mesmo que uma linguagem seja adotada como padrão, a necessidade de otimizar os algoritmos empregados ao novo hardware paralelo em questão, normalmente irá exigir um esforço de recodificação significativo. validação: testar o quão correto está o porte de um software para uma máquina paralela pode se mostrar uma tarefa bastante complexa, até mesmo porque os resultados das implementações seqüencial e paralela podem apresentar diferenças. Isto se potencializa para códigos numéricos, nos quais a convergência, a precisão e o erro acumulado, são fortemente influenciados pelo tamanho do problema. A decisão por uma arquitetura paralela, normalmente contempla problemas com dimensões bem maiores que aquelas possíveis de serem computadas em equipamentos com um só processador. Apesar dos matemáticos garantirem que o resultado de uma soma de números não depende da ordem de sua realização (propriedade associativa da soma), o hardware de ponto flutuante pode apenas se aproximar desta abstração. Considerações similares a esta fazem da validação do software paralelo uma atividade complexa e tratada com muita cautela pelos desenvolvedores de software, até mesmo porque incorreções na versão paralela podem lançar dúvidas sobre a qualidade da versão seqüencial já disponível. instabilidade no fornecimento: a perspectiva de portar software para um equipamento paralelo, com toda complexidade que lhe é inerente, que breve poderá desaparecer é fortemente desistimulante. No item 2.2.4 são apresentadas algumas razões para a mortalidade precoce de fornecedores de hardware paralelo. Por outro lado, mesmo que a empresa permaneça no mercado, a busca pelo maior desempenho possível faz com que, em alguns casos, nem mesmo o conjunto de instruções se mantenha de uma geração do equipamento para outra. Como conseqüência, os códigos aplicativos

21 22 2.2.2 PADRONIZAÇÃO desenvolvidos para uma geração precisam ser descartados, ou substancialmente modificados, quando a próxima geração do hardware é introduzida no mercado. Alguns aspectos na oferta dos equipamentos paralelos se mostram razoavelmente padronizados. O uso de estações de trabalho Unix de elevado desempenho como interface para o usuário é bastante usual. Por sua vez, quase todos os fornecedores estão se propondo a suportar padrões de rede NFS, Ethernet, TCP/IP, HIPPI, FDDI, e em breve ATM/SONET. Estes dois aspectos são positivos para inserção do hardware paralelo como servidores em uma rede de sistemas abertos. Por outro lado, a padronização é fraca ou inexistente nas áreas de linguagem e de arquitetura do hardware ([MOR 94]). No que diz respeito a linguagens de programação ou paradigmas para processamento de alto desempenho, cada vendedor fornece sua versão proprietária de C e/ou FORTRAN com extensões paralelas, bibliotecas, diretivas de compilação e modificações especificamente adaptadas para o seu hardware. Nenhuma destas versões proprietárias é suportada pelos outros fornecedores. Um porte de software de um equipamento paralelo para outro pode ser, em certas situações, mais complexo que aquele que tem por base o software de uma arquitetura tradicional. Alguns fornecedores de software disponibilizam bibliotecas e ambientes que processam em várias plataformas paralelas. Destacam-se o Express da ParaSoft, Linda da SCA e PVM do Oak Ridge Labs. A proposta é que uma aplicação escrita utilizando um destes pacotes, poderá ser processada em qualquer um dos equipamentos que os suportarem. Inclusive neste caso se enquadram as redes de estações de trabalho. Esta compatibilidade é porém muitas vezes severamente inviabilizada pelas diferenças operacionais, existentes mesmo entre os hardwares semelhantes, as quais influenciam fortemente em aspectos inerentes as tarefas paralelas (mapeamento, avaliação de granulosidade razoável, dentre outros). A tabela 1 apresenta a diversidade entre as arquiteturas, tendo por base três aspectos importantes das mesmas: o nodo processador, a topologia da rede de interconexão e o paradigma de controle. Equipamento Thinking Machine CM-2 TABELA 1 - Diversidade das arquiteturas paralelas Nodo Processador Bit Serial e Ponto Flutuante Interconexão Controle Hipercubo Multiplexado SIMD Intel Paragon i860 Malha 2-D MIMD (Troca de Mensagens) Kendall Square KS-1 Configurável Hierarquia de Anéis MIMD (Memória Compartilhada com Cache Local) Ncube 2 Configurável Hipercubo MIMD (Troca de Mensagens) Thinking Machine CM-5 Mas Par MP-1 SPARC e Unidades Vetoriais 4 bits configurável e Ponto Flutuante Árvore Malha 2-D e Roteador MIMD sincronizado SIMD Cray T-3D DEC Alpha Malha 3-D MIMD (Troca de Mensagens) Considerando que, para efeito de máximo desempenho, o software precisa estar fortemente sintonizado com a arquitetura, surgem inevitáveis particularizações nos algoritmos utilizados, na organização dos dados, etc. Isto dificulta sobremaneira o desenvolvimento e o porte de software para as diversas arquiteturas existentes. 2.2.3 RELAÇÃO ENTRE A TEORIA E A TECNOLOGIA A teoria para o processamento paralelo foi desenvolvida após a tecnologia e ainda se encontra imatura em muitos aspectos. Deste modo, a teoria historicamente não vem sugerindo caminhos ou até mesmo limites para exploração tecnológica. Como resultado, ainda não estão disponíveis na abrangência necessária, representações abstratas da computação paralela, lógicas para avaliação da mesma, ou até mesmo algoritmos paralelos que sejam comprovadamente eficientes nas diversas arquiteturas reais ([SKI 98]).

23 24 2.2.4 INSTABILIDADE DOS FORNECEDORES A indústria de equipamentos paralelos tem apresentado uma taxa de mortalidade bastante elevada. Nos últimos anos empresas como Alliant, BBNTC2000, Multiflow, WaveTracer, Ametek, BiiN e Myrias, todas atuantes no ramo do processamento paralelo encerraram atividades. Precisar todas as razões para esta situação de fracasso é uma tarefa bastante complexa. Alguns aspectos se destacam ([MOR 94]): historicamente, os fornecedores de hardware paralelo assumiram a área científica de alto desempenho e a computação numérica intensiva como seus mercados, ao invés do muito mais amplo mercado comercial de processamento de alta eficiência; Os aspectos desfavoráveis tem como eixo a pouca disponibilidade de software paralelo no mercado, a falta de padronização no hardware e no software básico e a instabilidade no fornecimento. Estes aspectos, apesar de independentes, tem forte interrelacionamento. No próximo capítulo serão tratados os aspectos que caracterizam a funcionalidade das principais arquiteturas paralelas, detalhando sua heterogeneidade intrínseca e a natureza das aplicações que lhe são mais usuais. o mercado de alto desempenho tem se mantido reduzido e voltado para uso militar e de pesquisa. A tendência internacional de criação de centros de excelência em pesquisa e desenvolvimento, imprime a este mercado uma taxa de crescimento reduzida, com conseqüências diretas na possibilidade de rendimento de seus fornecedores; o pequeno mercado para a computação paralela faz com que os computadores paralelos tenham custo elevado, uma vez que poucos equipamentos são comercializados. Este pequeno mercado traz, tanto para os atuais usuários de processamento seqüencial como para fornecedores em geral, pouco entusiasmo quanto a um uso intenso da computação paralela em um futuro próximo. 2.3 Considerações finais Foram examinados os aspectos favoráveis ao paralelismo e aqueles que o tem impedido de se tornar uma tecnologia de amplo uso. Os aspectos favoráveis tiveram por base considerações de hardware e necessidades do usuário. Nas considerações sobre o hardware foram analisados os limites para o crescimento do clock, o encapsulamento dos semicondutores, a dissipação térmica e a largura de banda no acesso à memória. Sob o ponto de vista da necessidade do usuário, aspectos de ordem econômica, de garantia de operação ininterrupta e de desempenho necessário foram ponderados. Todos estes aspectos caracterizam uma tendência bastante favorável à adoção do hardware paralelo.

25 26 3 ORGANIZAÇÃO DO HARDWARE PARA O PARALELISMO Os três objetivos centrais deste capítulo são: introduzir a terminologia que será utilizada no restante do texto, caracterizar as arquiteturas paralelas mais utilizadas e discutir seus principais aspectos positivos e negativos. Os conceitos apresentados neste capítulo tem por base as publicações [CUL 99], [HWA 93] e [EL 98]. Contribuições colhidas de outros autores estão inseridas ao longo do mesmo. 3.1 Redes de Interconexão Utilizadas em Arquiteturas Paralelas chave independente do processador: nesta implementação, o processador tem um único canal com a sua chave de interconexão. A principal vantagem deste caso é a maior flexibilidade para criação de nodos heterogêneos na arquitetura. Nodos responsáveis pela entrada/saída poderiam utilizar a mesma chave de interconexão que os nodos processadores. Embora não seja uma prática comum, esta segunda estratégia também faculta que possam ser trocados os processadores e mantida a rede de interconexão. As arquiteturas SIMD não utilizam esta segunda opção de chave. Alguns exemplos de arquiteturas MIMD que a empregam seriam o Intel Paragon, a CM-5 e o Cray T-3D. Uma desvantagem decorrente do dissociação entre o processador e a chave de interconexão é o prejuízo do nível de integração (mais circuitos integrados, mais conexões, etc.). Não importando o tipo da arquitetura, todo computador paralelo necessita de uma rede de interconexão para criar canais de comunicação entre os seus diversos recursos de processamento, armazenamento e entrada/saída. Considerando a diversidade das alternativas tecnológicas, esta seção vai explorar aspectos centrais pertinentes ao tema, a partir dos quais, podem ser entendidas as várias alternativas possíveis para as redes de interconexão. P Memória Chave a) Chave associada ao processador Mem P Chave b) Chave independente do processador 3.1.1 ALTERNATIVAS PARA INTERLIGAR O PROCESSADOR À REDE DE INTERCONEXÃO Do ponto de vista da organização hardware existem duas possibilidades para o posicionamento das chaves de interconexão (vide figura 3.1) ([MOR 94]): chave associada ao processador: neste caso, a maioria das vezes a chave está localizada no mesmo circuito integrado (chip) do processador. Nesta implementação é possível para o processador enviar e/ou receber múltiplas mensagens concorrentes, o que em determinadas situações pode ser oportuno para exploração do paralelismo. Como exemplo, temos o emprego desta tecnologia nas arquiteturas SIMD (vide item 3.2.4) CM-1, CM-2 e AMT DAP, e também nas arquiteturas MIMD (vide item 3.2.2) ncube, Transputer, iwarp e KS-1. FIGURA 3.1 - Alternativas para conectar o processador a rede de interconexão 3.1.2 TOPOLOGIAS DA REDE DE INTERCONEXÃO Uma vez que a interconexão direta de todos os processadores entre si não é viável quando o número dos mesmos aumenta, como regra geral é utilizado um padrão para definir as ligações. Este padrão é denominado de topologia da rede de interconexões. Três parâmetros podem ser utilizados para caracterizar o possível desempenho de uma topologia. Os mesmos são: a largura da bisseção, o diâmetro e o grau ([BAK 96]).

27 28 A largura da bisseção indica quantas mensagens simultâneas podem ser trocadas entre duas metades da rede de interconexão. É um indicador da largura de banda possível para as comunicações através da rede. O diâmetro indica qual o menor número de nodos intermediários que precisam ser envolvidos, para que dois processadores, o mais distantes possível, se comuniquem. O grau indica o número máximo de mensagens que podem ser manipuladas (enviadas ou recebidas) simultaneamente por cada um dos processadores. 3.1.2.1 Topologia em Barramento usual em pequenos agrupamentos (clusters) de estações de trabalho interligadas por redes locais. 3.1.2.2 Topologia em Malha Os processadores nesta topologia tem um canal de comunicação direto com o seu vizinho (a). Uma variação utilizada consiste em interligar as extremidades da grade, criando uma configuração denominada malha toroidal (b), a qual reduz o diâmetro da malha por um fator de 2 (vide figura 3.3). A largura da bisseção de uma malha é N onde N é o número de processadores. A largura da bisseção dobra para a malha toroidal. O diâmetro da topologia em malha é 2( N - 1), e o seu grau é fixo e de valor 4. Nesta topologia, todos os processadores estão conectados em um único barramento compartilhado. Quando um processador necessita comunicar-se com outro, ele aguarda que o barramento esteja livre e propaga no mesmo a mensagem; o destinatário, por sua vez, identifica que a mensagem é para si e a recebe (vide figura 3.2). No caso de duas transmissões simultâneas, o software detetor de colisões interrompe as transmissões e os processadores voltam a tentar novamente após um período de tempo determinado aleatoriamente. Assim sendo, a sua largura da bisseção é 1. Isto significa que esta topologia não permite mais do que um par de processadores em comunicação simultaneamente. a) Malha b) Toróide FIGURA 3.3 Topologia em malha Barramento O hardware para este tipo de tecnologia é de simples construção e expansão. A malha se adapta bem a algoritmos utilizados em cálculos científicos, onde se destaca a manipulação de matrizes. Uma arquitetura que utiliza esta topologia é o Intel Paragon. FIGURA 3.2 Topologia em barramento Do ponto de vista do desempenho, esta topologia somente é viável para um pequeno número de processadores e/ou classes de problemas cujos algoritmos implementem pouca comunicação. Esta topologia é bastante 3.1.2.3 Topologia em Hipercubo Toda rede de interconexão hipercúbica esta alicerçada sobre uma estrutura multi-dimensional baseada em endereços binários.

29 30 Os tamanhos do hipercubo são definidos por potências de 2; N=2 D onde D é a dimensão do hipercubo e N o número de processadores. Em função disto, todos os nodos podem ser identificados por um número binário. Cada nodo é conectado a todos os seus vizinhos; isto faz com que o hipercubo tenha grau variável e de valor D (vide figura 3.4). A solução para pequeníssima largura da bisseção da árvore é utilizar uma variante denominada árvore larga. Em uma árvore larga (vide figura 3.5), a largura dos ramos (canal) cresce a medida que se sobe das folhas em direção à raiz. 001 011 000 010 101 111 100 110 Hipercubo 3D a) Árvore b) Árvore larga FIGURA 3.4 Topologia em hipercubo A topologia hipercúbica confere boas propriedades à rede de interconexão; a largura da bisseção é N/2, e o diâmetro é log2 N. Apesar de apresentar bom desempenho para muitos padrões de comunicação, sua eficiência se mostra bastante dependente do algoritmo de roteamento a ser empregado. Um aspecto inconveniente do hipercubo é sua escalabilidade; o número de processadores sempre cresce em potência de 2. Além disso, como o grau de cada nodo é função do tamanho do cubo, toda expansão no número de processadores implica em adicionar mais um canal de comunicação a todos os nodos. Para cubos maiores, estas características podem trazer inconvenientes para a administração do custo/benefício quando da expansão da arquitetura. Um equipamento que emprega esta topologia é o Ncube 2. 3.1.3 TOPOLOGIA EM ÁRVORE A clássica árvore binária, com processadores nas suas folhas, tem se mostrado uma boa opção de topologia para arquiteturas paralelas. O diâmetro de uma árvore completa é 2log2((N+1)/2), bastante similar ao do hipercubo (N é o número de processadores). A largura da bisseção, por sua vez, é somente 1, o que pode introduzir um severo gargalo quando processadores de uma metade da árvore precisarem se comunicar com os da outra. FIGURA 3.5 Topologia em árvore A largura da bisseção da árvore larga plena é N e o seu diâmetro proporcional a 2(log N). A arquitetura da CM-5 da Thinking Machines utiliza uma versão modificada da árvore larga. 3.1.4 CARACTERÍSTICAS QUE DEFINEM O DESEMPENHO DE UMA REDE DE INTERCONEXÃO Além da topologia da rede de interconexão, as outras características que se destacam na definição do seu desempenho são: largura de banda do canal: número de bytes por segundo que pode fluir entre dois nodos com conexão direta. Via de regra, a largura de banda é dependente do número de pulsos por segundo da arquitetura (clock) e do número de bits possíveis de serem enviados por pulso. latência de comutação: tempo inerente à operação da chave de comutação. Se dois processadores precisam trocar dados, e não existe um canal interligando os dois diretamente, as chaves de comutação intermediárias precisam propagar a mensagem através da rede de interconexão. Latências

31 32 elevadas trazem prejuízo ao desempenho da arquitetura paralela, sobretudo quando a mensagem necessita passar por diversas chaves. independência de processador: caracteriza se o processador precisa ou não ser interrompido, para auxiliar na atividade de comunicação. Muitas das atuais implementações de redes de interconexão permitem que o processador continue sua computação enquanto uma mensagem está sendo transmitida, recebida ou roteada. Isto minimiza o custo introduzido pela necessidade de comunicação entre processadores. contenção: pode ocorrer a recepção praticamente simultânea de duas mensagens por uma determinada chave, e ambas podem necessitar usar o mesmo canal de saída. Uma obrigatoriamente terá de aguardar. O atraso na computação do processador que aguarda a mensagem retida pode resultar em perda de desempenho. Uma possibilidade é o hardware de comutação prever uma política de tempo compartilhado para as portas das chaves; isto dividiria o custo de espera entre os dois processadores destinatários, porém introduziria custos de comutação (vide latência de comutação). 3.2 Características das Arquiteturas Paralelas Mais Utilizadas As arquiteturas serão caracterizadas a partir de componentes cuja nomenclatura é apresentada na figura 3.6. Estes também são os três principais blocos básicos das arquitetura seqüenciais. 3.2.1 A CLASSIFICAÇÃO DE FLYNN PARA ARQUITETURAS DE COMPUTADORES A inclusão da proposta feita por Flynn em 1966, é antes de mais nada um compromisso com a classificação mais difundida para arquiteturas de computadores. A nomenclatura definida por esta proposta será utilizada no decorrer do texto. A proposta se baseia nas combinações possíveis entre uma ou mais seqüências de instruções, atuando sobre uma ou mais seqüências de dados. Decorrem daí, quatro classes de computadores: uma Seqüência de Instruções, uma Seqüência de Dados (SISD Single Instruction stream over a Single Data stream): corresponde aos computadores seqüenciais convencionais, nos quais só existe uma única unidade de controle que decodifica seqüencialmente as instruções, que operam sobre um único conjunto de dados. uma Seqüência de Instruções, Múltiplas Seqüências de Dados (SIMD-Single Instruction stream over a Multiple Data stream): corresponde aos processadores matriciais. Nestas arquiteturas, diversos elementos processadores são ativados por uma só unidade de controle. A unidade de controle esta submetida a um único programa, cujas instruções repassa aos elementos processadores. Os processadores executam concorrentemente uma mesma instrução sobre os dados que tem na sua memória local. Múltiplas Seqüências de Instruções, uma Seqüência de Dados (MISD-Multiple Instruction stream over a Single Data stream): não existem computadores reais enquadrados nesta categoria. M C Memória Unidade de Controle Múltiplas Seqüências de Instruções, Múltiplas Seqüências de Dados (MIMD-Multiple Instruction stream over a Multiple Data stream): nesta classe se enquadram os multiprocessadores. P Processador 3.2.2 ARQUITETURAS DE MEMÓRIA DISTRIBUÍDA FIGURA 3.6 - Blocos básicos dos computadores seqüenciais Neste tipo de arquitetura, cada nodo tem seu processador, sua unidade de controle e sua memória local (MIMD). Assim, cada nodo pode executar, de forma assíncrona, um processo independente sobre seus

33 34 próprios dados (vide figura 3.7). Os equipamentos que implementam este tipo de arquitetura também são conhecidos como multicomputadores ([CUL 99], [MOR 94]). A rede de interconexão (vide item 3.1) é crítica para o desempenho deste tipo de equipamento. As diversas possibilidades de implementação da rede de interconexão (topologia, latência, contenção, etc.) neste tipo de arquitetura constituem um dos aspectos responsáveis pela falta de padrão no mercado de arquiteturas paralelas. Possibilidade de emular outras arquiteturas: resguardadas as restrições inerentes ao desempenho, é possível à arquitetura de memória distribuída, emular outros paradigmas de controle e de organização de memória. Uma possibilidade usual é o emprego de DSM (Distributed Shared Memory [MIL 99], [PRO 98]), através da qual o software aplicativo tem a visão de uma memória comum a todos os nodos processadores. Compartilhamento de uso: este tipo de arquitetura permite, de forma bastante flexível, o particionamento e a alocação de subgrupos de processadores a tarefas/usuários. 3.2.2.2 Principais aspectos negativos P 1 C 1 FIGURA 3.7 - Arquitetura genérica de multiprocessador de memória distribuída A configuração deste tipo de arquitetura pode variar muito. O número de processadores, por exemplo, pode oscilar da casa das dezenas a alguns milhares. Em alguns casos, o crescimento ocorre em potências de 2 (16, 32, 64, 128, etc.) (vide item 3.1.2.3). 3.2.2.1 Principais aspectos positivos M 1 P 2 C 2 Tecnologia de compilação: uma vez que cada nodo da arquitetura é uma unidade de processamento autônoma, é possível aproveitar toda tecnologia de compilação disponível para programação seqüencial, agregando à mesma os recursos de uma biblioteca para troca de mensagens entre os nodos processadores. São usuais propostas que, utilizando esta premissa, exploram conhecidas linguagens seqüenciais como C ou FORTRAN para programação paralela. M Rede de Interconexão 2 P n C n E/S M n Custo das comunicações: em função das características da rede de interconexão utilizada (vide item 3.1.4), alguns algoritmos podem ter seu desempenho diminuído. Deste modo, o processo de planejamento, codificação e geração de código (com a contribuição explícita ou não do programador), precisa considerar aspectos de localidade das comunicações e granulosidade das tarefas, para otimizar a possibilidade de seu particionamento e distribuição aos processadores. Custo de sincronização: apesar de poderem trabalhar de forma assíncrona quase sempre, determinados momentos da execução paralela podem exigir um estado conhecido comum para um grupo de processadores. Para minimizar o possível tempo de espera nos momentos de sincronização, o desenvolvimento de software deve contemplar uma distribuição de carga o mais equânime possível (o que nem sempre é viável), e com isso potencializar a utilização dos processadores e aumentar o desempenho global do processamento. Uso ineficiente da memória: três aspectos concorrem para a sobreocupação da memória em arquiteturas de memória distribuída. O primeiro decorre da necessidade de armazenamento temporário das mensagens recebidas até que o processo responsável pela computação possa fazer o devido tratamento. Dependendo do tamanho e da freqüência destas mensagens, um considerável volume de memória terá de ser destinado para isto. O segundo é conseqüência da necessidade de cópia local do código executável e o terceiro decorre da necessidade, em função da busca de desempenho, de fazer, em alguns casos, cópia local também das estruturas de dados globais que o algoritmo possa necessitar.

35 36 3.2.3 ARQUITETURAS DE MEMÓRIA COMPARTILHADA Neste tipo de arquitetura todos os nodos tem acesso uniforme a uma única memória comum (vide figura 3.8). São também denominadas de multiprocessadores simétricos ([CUL 99], [MOR 94]). Uma das razões sucesso comercial deste tipo de arquitetura MIMD, decorre da sua flexibilidade de uso. Cada processador da arquitetura pode ser visto como uma máquina seqüencial tradicional; a existência de outros processadores, bem como da memória comum pode ser abstraída. Uma conseqüência desta característica é a possibilidade de utilizar o software seqüencial já existente, praticamente sem nenhuma modificação. Deste modo, o paralelismo ao invés de ser utilizado para melhorar o desempenho de um determinado programa, também pode ser empregado para executar simultaneamente diversos programas seqüenciais do usuário. Como a memória é um recurso compartilhado, para que a mesma não se transforme em um ponto de estrangulamento da operação da arquitetura, o número de processadores tipicamente varia entre 4 e 20. coerência de memória neste tipo de arquitetura é um tema complexo e deu origem a diversos trabalhos de pesquisa. 3.2.3.1 Principais aspectos positivos Abstração da localidade do processador: neste tipo de arquitetura o programador pode abstrair a localidade do processador. Deste modo, a troca de mensagens é sincronizada por um mecanismo elegante de escrita em variáveis comuns. Como a memória é fisicamente compartilhada, isto pode ser feito com elevado desempenho (via de regra maior que os obtidos com as políticas de DSM - Distributed Shared Memory). Semelhante às arquiteturas convencionais: os multiprocessadores de memória compartilhada usualmente oferecem ambiente de programação e sistema operacional bastante semelhantes aos das máquinas seqüenciais, o que facilita a adoção da arquitetura enquanto o software está sendo adequado para uma execução efetivamente paralela. Facilidade de uso múltiplo: os processadores podem ser alocados individualmente ou em grupos para diferentes programas/usuários. P 1 C 1 P 2 P 3 C 2 C 3 Maior compartilhamento dos recursos: a memória comum facilita o compartilhamento de estruturas de dados globais. Por sua vez também, os recursos de entrada/saída e de memória virtual podem ser aproveitados por todos os nodos processadores. 3.2.3.2 Principal aspecto negativo Rede de Interconexão Memória Comum E/S Pouca escalabilidade: a política de acesso uniforme à memória faz com que este tipo de arquitetura tenha como limite um número de processadores ao redor de 20. O constante aumento do poder computacional do processadores, e a conseqüente necessidade destes de maior bandapassante com a memória, contribui para potencializar este aspecto. FIGURA 3.8 - Arquitetura genérica de multiprocessador de memória compartilhada Uma estratégia para aumentar o desempenho do sistema de memória compartilhada é o uso de uma memória cache entre o processador e a memória comum. A busca de um sistema eficiente para manutenção da Esta arquitetura também está sujeita ao custo de sincronização, que afeta as arquiteturas de memória distribuída (vide item 3.2.2.2). Porém, como o número típico de processadores não é grande, e as comunicações tem um desempenho elevado, a sincronização como um todo pode ser melhor administrada.

37 38 3.2.4 ARQUITETURAS SÍNCRONAS MATRICIAIS Neste tipo de arquitetura, todos os processadores obedecem a uma única unidade de controle. A unidade de controle busca e decodifica as instruções do programa e as transmite aos diversos processadores que as executam, utilizando sua própria memória local (SIMD). Assim, a cada ciclo, todos os processadores (menos os que estão intencionalmente inibidos) executam sincronamente uma mesma instrução sobre sua parte dos dados. O paralelismo se dá, portanto, pela manipulação simultânea de diferentes partes do conjunto de dados. Daí sua denominação estar associada aos termos; arquiteturas síncronas e paralelismo de dados ([CUL 99], [MOR 94]). Este tipo de arquitetura exige uma estrutura densa para a rede de interconexão, a fim desta suportar a difusão das instruções a partir do controlador para a matriz de processadores. Esta rede de interconexão também é utilizada para distribuir dados e recolher resultados. O ambiente para geração de código neste tipo de arquitetura, usualmente fica localizado em uma estação de trabalho que atua como intermediária (front-end) para a arquitetura. Esta estação acumula as funções de gerenciamento de contas de usuário, o escalonamento das diversas requisições de processamento e o acesso através de rede local de computadores. As arquiteturas síncronas se mostram vocacionadas para algumas áreas de aplicação, nas quais oferecem excelente relação entre desempenho/custo. Destacam-se as áreas de processamento de sinais e imagens, nas quais a aglutinação de chips, cada um contendo dezenas de processadores simples e as respectivas memórias (de pequeno tamanho), podem trazer excelentes resultados. 3.2.4.1 Principais aspectos positivos Sincronização inerente entre processadores: a natureza do modelo de controle (único e centralizado) garante uma operação passo-a-passo, e os processadores estão consequentemente sempre sincronizados. Fato diferente ocorre com as arquiteturas que têm controle distribuído (sejam de memória compartilhada ou não); estas ficam sujeitas a necessidades eventuais de sincronização, as quais costumam introduzir períodos de ociosidade na operação dos processadores. Front End Redução FIGURA 3.9 - Arquitetura genérica síncrona matricial Uso eficiente da memória: a única memória que precisa acomodar programas é a memória associada ao controlador central; as memórias dos processadores podem ser dedicadas totalmente para dados. 3.2.4.2 Principais aspectos negativos Memória P 1 M 1 P 2 M 2 P n M n Rede de Interconexão Escalabilidade: quando o tamanho da matriz de processadores cresce, podem surgir dificuldades de garantir através de uma rede de interconexão de grandes dimensões a operação totalmente síncrona dos processadores (este aspecto se potencializa com o crescimento constante do clock dos processadores). Ineficiência ante desvios condicionais: os desvios condicionais dependentes de dados, precisam ser processados independentemente, um após o outro. Esta situação é vista como um dos principais pontos de perda de desempenho desta arquitetura. Dificuldade de compartilhamento: uma vez que existe somente uma unidade de controle, a arquitetura somente pode ser utilizada por um programa/usuário de cada vez. Alguns fornecedores facultam a existência de mais de um controlador central (com o decorrente acréscimo de custo), o que permitiria compartilhamento. C Difusão E/S

39 40 3.3 Considerações finais Neste capítulo foram analizadas as principais arquiteturas paralelas. Para efeito de discussão, foram tratados os tipos primitivos de cada uma. Via de regra, todos os tipos de arquitetura se desdobram em variantes que buscam superar suas lacunas de desempenho. Um exemplo de variante das arquiteturas básicas é a proposta NUMA (NonUniform Memory Access). No caso mais genérico, esta arquitetura oferece três níveis de acesso a memória: o mais rápido, correspondente ao acesso a uma memória local ao processador; o intermediário, quando o acesso é feito a uma memória global a todos os processadores, e; o mais lento, ocorre quando um processador acessa a memória local de outro; Um exemplo da implementação da proposta NUMA é o multiprocessador Cedar, desenvolvido na universidade de Illinois ([HWA 93]). Duas outras propostas representam importantes desenvolvimentos conceituais: as arquiteturas baseadas em fluxo de dados (dataflow) e as sistólicas (systolic). Foram objeto de muitos estudos e pesquisas nos anos 80, porém, seu caráter de uso mais específico, fez com que não lograssem sucesso comercial ([CUL 99]). E s c a l a b i l i d a d e Multiprocessador de Memória Distribuída Intel Paragon ncube Multiprocessador de Memória Compartilhada Computador Paralelo Ideal Cray Y/MP Sequent Symmetry Facilidade de Programação FIGURA 3.10 - Escalabilidade & Facilidade de Programação de Arquiteturas Paralelas Com a tendência de utilização de processadores comercialmente disponíveis, usualmente microprocessadores, para construção de arquiteturas paralelas, o centro de um projeto de hardware paralelo é a definição de sua rede de interconexão, a qual, dentro do menor custo possível, deve potencializar as comunicações e simplificar os mecanismos de controle e sincronização. A figura 3.10 extraída de [HWA 93] resume a visão deste autor sobre a relação entre facilidade de programação e a escalabilidade nas arquiteturas multiprocessadoras. Esta visão é senso comum na comunidade científica. É importante ter presente que as estratégias de comunicação que o software aplicativo emprega, não necessitam corresponder aos disponíveis na arquitetura. É bastante direto simular trocas de mensagens em arquiteturas de memória compartilhada, bem como é usual simular a existência de memória compartilhada em arquiteturas que somente dispõem de trocas de mensagens ([MIL 99], [PRO 98]). Naturalmente, podem ocorrer comprometimentos ao desempenho, quando não são utilizados os mecanismos nativos de comunicação da arquitetura.