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

Tamanho: px
Começar a partir da página:

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

Transcrição

1 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

2 3 4 SUMÁRIO 1 INTRODUÇÃO Tema Motivação Objetivos Estrutura do Texto PROCESSAMENTO PARALELO: SUA DIFUSÃO E USO Aspectos Favoráveis à Adoção do Processamento Paralelo Barreiras ao Crescimento da Freqüência de Operação dos Processadores Largura de Banda no Acesso a Memória Paralelismo Intrínseco do Mundo Real A Relação Custo-Benefício dos Processadores de Última Geração Aplicações Extremamente Complexas Suporte a Tolerância a Falhas Crescimento Modular Aspectos Desfavoráveis à Adoção do Processamento Paralelo Disponibilidade de Software Aplicativo Padronização Relação entre a Teoria e a Tecnologia Instabilidade dos Fornecedores Considerações finais ORGANIZAÇÃO DO HARDWARE PARA O PARALELISMO Redes de Interconexão Utilizadas em Arquiteturas Paralelas Alternativas para Interligar o Processador à Rede de Interconexão Topologias da Rede de Interconexão Topologia em Barramento Topologia em Malha Topologia em Hipercubo Topologia em Árvore Características que Definem o Desempenho de uma Rede de Interconexão Características das Arquiteturas Paralelas Mais Utilizadas A Classificação de Flynn para Arquiteturas de Computadores Arquiteturas de Memória Distribuída Principais aspectos positivos Principais aspectos negativos Arquiteturas de Memória Compartilhada Principais aspectos positivos Principal aspecto negativo Arquiteturas Síncronas Matriciais Principais aspectos positivos Principais aspectos negativos Considerações finais RELAÇÕES ENTRE O HARDWARE E O SOFTWARE PARA EXPLORAÇÃO DO PARALELISMO Relação entre Algoritmos e Arquiteturas Paralelas Critérios para Caracterização de Algoritmos Critérios para Caracterização das Arquiteturas Paralelas Propriedades de um Modelo de Programação para o Processamento Paralelo Facilidade para o Desenvolvimento de Software Uma Metodologia para o Desenvolvimento de Software Independência de Arquitetura Facilidade para Ser Entendido Garantia de Desempenho Medidas de Custo Considerações finais A EXPLORAÇÃO DO PARALELISMO: NÍVEIS DE ABSTRAÇÃO E MODELOS Modelos nos quais o Paralelismo é Explorado de Forma Totalmente Implícita Programação Funcional Fonte Implícita de Paralelismo Exemplo de Exploração do Paralelismo Potencialidade de Exploração do Paralelismo... 54

3 Programação em Lógica Fontes Implícitas de Paralelismo Exemplo de Exploração do Paralelismo Potencialidade de Exploração do Paralelismo Modelos com Assinalamento do Paralelismo Explícito Paralelismo de dados - exploração de laços Exemplo de Exploração do Paralelismo Potencialidade de Exploração do Paralelismo Modelos com Assinalamento e Decomposição do Paralelismo Explícitos Exemplo de Exploração do Paralelismo Potencialidade de Exploração do Paralelismo Modelos com Assinalamento, Decomposição e Mapeamento do Paralelismo Explícitos Exemplo de Exploração do Paralelismo Potencialidade de Exploração do Paralelismo Modelos com Assinalamento, Decomposição, Mapeamento e Comunicação Explícitos Exemplo de Exploração do Paralelismo Potencialidade de Exploração do Paralelismo Modelos nos quais o Paralelismo é Explorado de Forma Totalmente Explícita Exemplo de Exploração do Paralelismo Potencialidade de Exploração do Paralelismo Considerações finais CONCLUSÕES Variáveis Tecnológicas e de Mercado Hardware para o Processamento Paralelo Relações entre o Hardware e o Software Abstração na Exploração do Paralelismo LISTA DE FIGURAS FIGURA 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 Blocos básicos dos computadores seqüenciais...31 FIGURA Arquitetura genérica de multiprocessador de memória distribuída...33 FIGURA Arquitetura genérica de multiprocessador de memória compartilhada...35 FIGURA Arquitetura genérica síncrona matricial...38 FIGURA Escalabilidade & Facilidade de Programação de Arquiteturas Paralelas...40 FIGURA 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 Arquiteturas dos 500 mais poderosos hardwares paralelos...70

4 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

5 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.

6 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 , 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.

7 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 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

8 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 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]) 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)] 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

9 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]) 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]) 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]) 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

10 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 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 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

11 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 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]).

12 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.

13 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 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 Alternativas para conectar o processador a rede de interconexão 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]).

14 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 Topologia em Barramento usual em pequenos agrupamentos (clusters) de estações de trabalho interligadas por redes locais 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 Topologia em Hipercubo Toda rede de interconexão hipercúbica esta alicerçada sobre uma estrutura multi-dimensional baseada em endereços binários.

15 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 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 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 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

16 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 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 ARQUITETURAS DE MEMÓRIA DISTRIBUÍDA FIGURA 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

17 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 Principais aspectos negativos P 1 C 1 FIGURA 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 ) 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.

18 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 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 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 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 ). 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.

19 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 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 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 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

20 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 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.

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

Um Estudo das Potencialidades e Limites na Exploração do Paralelismo UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA CURSO DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Um Estudo das Potencialidades e Limites na Exploração do Paralelismo por Adenauer Corrêa

Leia mais

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

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Sistemas Paralelos e Distribuídos Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Conceitos preliminares Paralelismo refere-se a ocorrência simultânea de eventos em um computador Processamento

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

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

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES ALGORÍTMOS PARALELOS (Aula 2) Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Programa do Curso LCAD 1. Introdução 2. Arquitetura de Computadores 3. Arquiteturas

Leia mais

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

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador) Multiprocessamento Multiprocessadores com memória distribuída (multicomputador) Conjunto de processadores, cada qual com sua memória local Processadores se comunicam por troca de mensagens, via rede de

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

Leia mais

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

Introdução às arquiteturas paralelas e taxonomia de Flynn Introdução às arquiteturas paralelas e taxonomia de Flynn OBJETIVO: definir computação paralela; o modelo de computação paralela desempenhada por computadores paralelos; e exemplos de uso da arquitetura

Leia mais

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

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França Arquitetura NUMA 1 Daniel de Angelis Cordeiro INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França 6 de Outubro de 2010 1 Baseado em slides feitos por Christiane Pousa

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 SISTEMA DE INTERCONEXÃO (BARRAMENTOS) Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Componentes estruturais: Memória Principal Unidade de Processamento Central

Leia mais

4 Computação Paralela 4.1. Introdução

4 Computação Paralela 4.1. Introdução 4 Computação Paralela 4.1. Introdução Nos últimos anos observa-se uma tendência cada vez maior do aumento da demanda computacional na resolução de grandes problemas. Exemplos de aplicações que exigem alto

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 6 - ARQUITETURAS AVANÇADAS DE COMPUTADORES 1. INTRODUÇÃO As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com ela o conceito de arquitetura avançada tem se modificado. Nos

Leia mais

Arquitetura de Computadores. Professor: Vilson Heck Junior

Arquitetura de Computadores. Professor: Vilson Heck Junior Arquitetura de Computadores Professor: Vilson Heck Junior Agenda Conceitos Estrutura Funcionamento Arquitetura Tipos Atividades Barramentos Conceitos Como já discutimos, os principais componentes de um

Leia mais

Máquinas Multiníveis

Máquinas Multiníveis Infra-Estrutura de Hardware Máquinas Multiníveis Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Classificação de arquiteturas Tendências da tecnologia Família Pentium

Leia mais

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus

Leia mais

Memória compartilhada (shared memory): - o espaço de endereçamento é único; - comunicação através de load e store nos endereços de memória.

Memória compartilhada (shared memory): - o espaço de endereçamento é único; - comunicação através de load e store nos endereços de memória. 4. Arquiteturas ID áquinas ID (ultiple Instruction ultiple Data) são arquiteturas caracterizadas pela execução simultânea de múltiplos fluxos de instruções. Essa capacidade deve-se ao fato de que são construídas

Leia mais

Sistemas Distribuídos Conceitos HW e SW. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos Conceitos HW e SW. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos Conceitos HW e SW Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Roteiro da Aula Conceitos de Hardware Conceitos de Software Combinações de SW e HW 3 Sistemas Distribuídos

Leia mais

Prof. Manuel A Rendón M

Prof. Manuel A Rendón M Prof. Manuel A Rendón M Tanenbaum Redes de Computadores Cap. 1 e 2 5ª. Edição Pearson Padronização de sistemas abertos à comunicação Modelo de Referência para Interconexão de Sistemas Abertos RM OSI Uma

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Fernando Fonseca Ramos Faculdade de Ciência e Tecnologia de Montes Claros Fundação Educacional Montes Claros 1 Índice 1- Introdução 3- Memórias 4- Dispositivos

Leia mais

Multicomputadores. Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação CECOMP

Multicomputadores. Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação CECOMP Multicomputadores Introdução Vimos que existem dois tipos de processadores paralelos MIMD: Multiprocessadores. Multicomputadores. Nos multiprocessadores, existe uma memória compartilhada que pode ser acessada

Leia mais

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro Sistemas MIMD Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Arquiteturas Paralelas (SISD) Single Instruction Stream, Single Data Stream: Monoprocessador

Leia mais

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

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

7-1. Parte 6 Otimizações da Arquitetura

7-1. Parte 6 Otimizações da Arquitetura 7-1 Parte 6 Otimizações da Arquitetura 7-2 Bibliografia [1] Miles J. Murdocca e Vincent P. Heuring, Introdução à Arquitetura de Computadores [2] Andrew S. Tanenbaum, Modern Operating Systems [3] William

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

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

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas: Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; - pesquisa em fusão de energia; - diagnóstico médico; - simulações

Leia mais

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula Complementar - MODELO DE REFERÊNCIA OSI Este modelo se baseia em uma proposta desenvolvida pela ISO (International Standards Organization) como um primeiro passo em direção a padronização dos protocolos

Leia mais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos Capítulo 8 Sistemas com Múltiplos Processadores 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos 1 Sistemas Multiprocessadores Necessidade contínua de computadores mais rápidos modelo

Leia mais

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo 1 Professores: Aula 10 Lúcia M. A. Drummond Simone de Lima Martins Conteúdo: Arquiteturas Avançadas - Arquiteturas RISC - Processamento Paralelo 2 Arquiteturas RISC Reduced Instruction Set Computer se

Leia mais

CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES

CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES 2.1 Organização de um Computador Típico : Armazena dados e programas. Processador (CPU - Central Processing Unit): Executa programas armazenados na memória, interpretando

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SISTEMAS COM MÚLTIPLOS PROCESSADORES LIVRO TEXTO: CAPÍTULO 13, PÁGINA 243 Prof. Pedro Luís Antonelli Anhanguera Educacional INTRODUÇÃO Arquiteturas que possuem duas ou mais CPUs interligadas

Leia mais

Rede de Computadores II

Rede de Computadores II Slide 1 Técnicas para se alcançar boa qualidade de serviço Reserva de recursos A capacidade de regular a forma do tráfego oferecido é um bom início para garantir a qualidade de serviço. Mas Dispersar os

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William Stallings Arquitetura e Organização de Computadores 8 a Edição William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 7 Entrada/saída Os textos nestas caixas foram adicionados pelo Prof. Joubert slide 1 Problemas de entrada/saída Grande variedade

Leia mais

Arquitetura de Computadores. Arquitetura de Computadores 1

Arquitetura de Computadores. Arquitetura de Computadores 1 Computadores Computadores 1 Introdução Componentes: Processador; UC; Registradores; ALU s, FPU s, etc. Memória (Sistema de armazenamento de informações; Dispositivo de entrada e saída. Computadores 2 Introdução

Leia mais

} 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

} 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 Prof. Samuel Souza } 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 } Aplicações que são funcionalmente

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Hardware Sistema de Entrada/Saída Visão Geral Princípios de Hardware Dispositivos de E/S Estrutura Típica do Barramento de um PC Interrupções

Leia mais

Comparação SDs X Scs

Comparação SDs X Scs Prof. Alexandre Lima Sistemas Distribuídos Cap 9 1/7 Comparação SDs X Scs Distribuição inerente Economia Velocidade Confiabilidade Crescimento incremental Descrição Algumas aplicações envolvem máquinas

Leia mais

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS 1. Introdução a supercomputação 2. Visão geral de Mainframe 3. Cluster de computadores 4. Cluster Beowulf considerações de projeto 5. Cluster x Grid 6.

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 3 ARQUITETURA DE VON NEUMANN E DESEMPENHO DE COMPUTADORES Prof. Luiz Gustavo A. Martins Tipos de Arquitetura Arquitetura de von Neumann: Conceito de programa armazenado; Dados

Leia mais

ATIVIDADE 1. Definição de redes de computadores

ATIVIDADE 1. Definição de redes de computadores ATIVIDADE 1 Definição de redes de computadores As redes de computadores são criadas para permitir a troca de dados entre diversos dispositivos estações de trabalho, impressoras, redes externas etc. dentro

Leia mais

2 Trabalhos Relacionados

2 Trabalhos Relacionados 2 Trabalhos Relacionados Nesse capítulo, apresentamos os trabalhos relacionados ao GridFS, entrando em mais detalhes sobre os sistemas citados durante a introdução e realizando algumas considerações sobre

Leia mais

Arquitetura e Organização de Computadores I

Arquitetura e Organização de Computadores I Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Aula 01 Tecnologias e Perspectiva Histórica Edgar Noda Pré-história Em 1642, Blaise Pascal (1633-1662) construiu uma máquina de calcular mecânica que podia somar

Leia mais

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação Disciplina A Disciplina B Código Disciplina C/H Curso Disciplina C/H Código Curso Ano do Currículo 66303 ESTRUTURA DE DADOS I 68/0 ENG. DE

Leia mais

HARDWARE COMPONENTES BÁSICOS E FUNCIONAMENTO. Wagner de Oliveira

HARDWARE COMPONENTES BÁSICOS E FUNCIONAMENTO. Wagner de Oliveira HARDWARE COMPONENTES BÁSICOS E FUNCIONAMENTO Wagner de Oliveira SUMÁRIO Hardware Definição de Computador Computador Digital Componentes Básicos CPU Processador Memória Barramento Unidades de Entrada e

Leia mais

Introdução às Redes de Computadores. Por José Luís Carneiro

Introdução às Redes de Computadores. Por José Luís Carneiro Introdução às Redes de Computadores Por José Luís Carneiro Portes de computadores Grande Porte Super Computadores e Mainframes Médio Porte Super Minicomputadores e Minicomputadores Pequeno Porte Super

Leia mais

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

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01 Unidade Central de Processamento (CPU) Processador Renan Manola Introdução ao Computador 2010/01 Componentes de um Computador (1) Computador Eletrônico Digital É um sistema composto por: Memória Principal

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Claudivan C. Lopes claudivan@ifpb.edu.br

Claudivan C. Lopes claudivan@ifpb.edu.br Claudivan C. Lopes claudivan@ifpb.edu.br Por que redes de computadores? Tipos de redes Componentes de uma rede IFPB/Patos - Prof. Claudivan 2 Quando o assunto é informática, é impossível não pensar em

Leia mais

FACULDADE PITÁGORAS PRONATEC

FACULDADE PITÁGORAS PRONATEC FACULDADE PITÁGORAS PRONATEC DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br www.oficinadapesquisa.com.br Objetivos Ao final desta apostila,

Leia mais

1 Lista de exercícios 01

1 Lista de exercícios 01 FRANCISCO TESIFOM MUNHOZ 2007 1 Lista de exercícios 01 1) No desenvolvimento e aperfeiçoamento realizado em redes de computadores, quais foram os fatores que conduziram a interconexão de sistemas abertos

Leia mais

Estrutura de um Rede de Comunicações. Redes e Sistemas Distribuídos. Tarefas realizadas pelo sistema de comunicação. Redes de comunicação de dados

Estrutura de um Rede de Comunicações. Redes e Sistemas Distribuídos. Tarefas realizadas pelo sistema de comunicação. Redes de comunicação de dados Estrutura de um Rede de Comunicações Profa.. Cristina Moreira Nunes Tarefas realizadas pelo sistema de comunicação Utilização do sistema de transmissão Geração de sinal Sincronização Formatação das mensagens

Leia mais

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

Teleprocessamento e Redes Universidade Católica do Salvador. Aula 04 - Estrutura de Redes de Comunicação. Objetivo : Roteiro da Aula : Teleprocessamento e Redes Universidade Católica do Salvador Aula 04 - Estrutura de Redes de Comunicação Objetivo : Nesta aula, vamos começar a entender o processo de interligação entre os equipamentos

Leia mais

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

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Prof. André Dutton EMENTA: Conceitos fundamentais e histórico da ciência da computação; Histórico dos computadores, evolução e tendências; Modalidades de computadores

Leia mais

slide 0 Algoritmos Paralelos

slide 0 Algoritmos Paralelos slide 0 Algoritmos Paralelos Slide 2 Demanda por Velocidade Computational Demanda contínua por maior rapidez computational das máquinas que as atualmente disponíveis. As áreas que exigem maior rapidez

Leia mais

Aula 26: Arquiteturas RISC vs. CISC

Aula 26: Arquiteturas RISC vs. CISC Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos

Leia mais

A topologia em estrela é caracterizada por um determinado número de nós, conectados em uma controladora especializada em comunicações.

A topologia em estrela é caracterizada por um determinado número de nós, conectados em uma controladora especializada em comunicações. Topologia em estrela A topologia em estrela é caracterizada por um determinado número de nós, conectados em uma controladora especializada em comunicações. Como esta estação tem a responsabilidade de controlar

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição. retrospectiva. 2010 Pearson Prentice Hall. Todos os direitos reservados.

William Stallings Arquitetura e Organização de Computadores 8 a Edição. retrospectiva. 2010 Pearson Prentice Hall. Todos os direitos reservados. William Stallings Arquitetura e Organização de Computadores 8 a Edição retrospectiva slide 1 Organização e arquitetura Arquitetura são os atributos visíveis ao programador. Conjunto de instruções, número

Leia mais

Placa de Rede. Tipos de Redes LAN (Local Area Network) Rede local. MAN (Metropolitan Area Network) Rede Metropolitana

Placa de Rede. Tipos de Redes LAN (Local Area Network) Rede local. MAN (Metropolitan Area Network) Rede Metropolitana Rede de Computadores Parte 01 Prof. André Cardia Email: andre@andrecardia.pro.br MSN: andre.cardia@gmail.com Placa de Rede Uma placa de rede (NIC), ou adaptador de rede, oferece capacidades de comunicações

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Referências Caracterização de Sistemas Distribuídos Sistemas operacionais modernos Andrew S. TANENBAUM Prentice-Hall, 1995 Capítulo 9 Seções 9.1 a 9.3 Distributed Systems: concept

Leia mais

Exercícios de Redes de Computadores Assuntos abordados: Conceitos gerais Topologias Modelo de referência OSI Modelo TCP/IP Cabeamento 1.

Exercícios de Redes de Computadores Assuntos abordados: Conceitos gerais Topologias Modelo de referência OSI Modelo TCP/IP Cabeamento 1. Exercícios de Redes de Computadores Assuntos abordados: Conceitos gerais Topologias Modelo de referência OSI Modelo TCP/IP Cabeamento 1. (CODATA 2013) Em relação à classificação da forma de utilização

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Evolução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

Placa de Rede. Rede de Computadores. Tipos de Redes LAN (Local Area Network) Rede local. Placa de Rede

Placa de Rede. Rede de Computadores. Tipos de Redes LAN (Local Area Network) Rede local. Placa de Rede Rede de Computadores Prof. André Cardia Email: andre@andrecardia.pro.br MSN: andre.cardia@gmail.com Placa de Rede Uma placa de rede (NIC), ou adaptador de rede, oferece capacidades de comunicações nos

Leia mais

SIS17 - Arquitetura de Computadores

SIS17 - Arquitetura de Computadores SIS17 - Arquitetura de Computadores Organização Básica B de Computadores (Parte I) Organização Básica B de Computadores Composição básica b de um Computador eletrônico digital Processador Memória Memória

Leia mais

Organização e Arquitetura de computadores

Organização e Arquitetura de computadores Conteúdo Organização e Arquitetura de computadores Abstrações e Tecnologias computacionais Prof. Dr. Luciano José Senger Falácias e armadilhas Computadores: produto da tecnologia de informação, 10% do

Leia mais

Características Básicas de Sistemas Distribuídos

Características Básicas de Sistemas Distribuídos Motivação Crescente dependência dos usuários aos sistemas: necessidade de partilhar dados e recursos entre utilizadores; porque os recursos estão naturalmente em máquinas diferentes. Demanda computacional

Leia mais

Organização Básica de Computadores. Memória. Memória. Memória. Memória. Memória Parte I. Computador eletrônico digital. Sistema composto por

Organização Básica de Computadores. Memória. Memória. Memória. Memória. Memória Parte I. Computador eletrônico digital. Sistema composto por Ciência da Computação Arq. e Org. de Computadores Parte I Organização Básica de Computadores Computador eletrônico digital Sistema composto por processador memória dispositivos de entrada e saída interligados.

Leia mais

Organização de Computadores 2005/2006 Processamento Paralelo

Organização de Computadores 2005/2006 Processamento Paralelo Organização de Computadores 2005/2006 Processamento Paralelo Paulo Ferreira paf a dei.isep.ipp.pt Maio de 2006 Introdução 2 Porquê?...........................................................................................

Leia mais

Capítulo 1 Introdução

Capítulo 1 Introdução Capítulo 1 Introdução Programa: Seqüência de instruções descrevendo como executar uma determinada tarefa. Computador: Conjunto do hardware + Software Os circuitos eletrônicos de um determinado computador

Leia mais

Equipamentos de Rede. Prof. Sérgio Furgeri 1

Equipamentos de Rede. Prof. Sérgio Furgeri 1 Equipamentos de Rede Repetidor (Regenerador do sinal transmitido)* Mais usados nas topologias estrela e barramento Permite aumentar a extensão do cabo Atua na camada física da rede (modelo OSI) Não desempenha

Leia mais

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.

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. 3 Tecnologia FPGA 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. 3.1. FPGA: Histórico, linguagens e blocos Muitos dos

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores... 1 Mobilidade... 1 Hardware de Rede... 2 Redes Locais - LANs... 2 Redes metropolitanas - MANs... 3 Redes Geograficamente Distribuídas - WANs... 3 Inter-redes... 5 Software de Rede...

Leia mais

Redes de Dados. Aula 1. Introdução. Eytan Mediano

Redes de Dados. Aula 1. Introdução. Eytan Mediano Redes de Dados Aula 1 Introdução Eytan Mediano 1 6.263: Redes de Dados Aspectos fundamentais do projeto de redes e análise: Arquitetura Camadas Projeto da Topologia Protocolos Pt - a Pt (Pt= Ponto) Acesso

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

Leia mais

A Camada de Rede. A Camada de Rede

A Camada de Rede. A Camada de Rede Revisão Parte 5 2011 Modelo de Referência TCP/IP Camada de Aplicação Camada de Transporte Camada de Rede Camada de Enlace de Dados Camada de Física Funções Principais 1. Prestar serviços à Camada de Transporte.

Leia mais

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos Sistemas Distribuídos Sistemas de Arquivos Distribuídos Roteiro Sistema de arquivos distribuídos Requisitos Arquivos e diretórios Compartilhamento Cache Replicação Estudo de caso: NFS e AFS Sistemas Distribuídos

Leia mais

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO TOPOLOGIAS. Profº Erinaldo Sanches Nascimento

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO TOPOLOGIAS. Profº Erinaldo Sanches Nascimento UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO TOPOLOGIAS Profº Erinaldo Sanches Nascimento Objetivos Examinar as várias maneiras para projetar a infraestrutura de cabo para

Leia mais

Aula 6 Modelo de Divisão em Camadas TCP/IP

Aula 6 Modelo de Divisão em Camadas TCP/IP Aula 6 Modelo de Divisão em Camadas TCP/IP Camada Conceitual APLICATIVO TRANSPORTE INTER-REDE INTERFACE DE REDE FÍSICA Unidade de Dados do Protocolo - PDU Mensagem Segmento Datagrama /Pacote Quadro 01010101010100000011110

Leia mais

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

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet: Comunicação em uma rede Ethernet A comunicação em uma rede local comutada ocorre de três formas: unicast, broadcast e multicast: -Unicast: Comunicação na qual um quadro é enviado de um host e endereçado

Leia mais

1 Redes de comunicação de dados

1 Redes de comunicação de dados 1 Redes de comunicação de dados Nos anos 70 e 80 ocorreu uma fusão dos campos de ciência da computação e comunicação de dados. Isto produziu vários fatos relevantes: Não há diferenças fundamentais entre

Leia mais

Programação Paralela e Distribuída 2009/10. Fundamentos

Programação Paralela e Distribuída 2009/10. Fundamentos Programação Paralela e Distribuída 1 Porquê Programação Paralela? Se um único computador (processador) consegue resolver um problema em N segundos, podem N computadores (processadores) resolver o mesmo

Leia mais

Universidade Federal do Piauí Centro de Tecnologia Curso de Engenharia Elétrica. Prof. Marcos Zurita zurita@ufpi.edu.br www.ufpi.

Universidade Federal do Piauí Centro de Tecnologia Curso de Engenharia Elétrica. Prof. Marcos Zurita zurita@ufpi.edu.br www.ufpi. Universidade Federal do Piauí Centro de Tecnologia Curso de Engenharia Elétrica Arquiteturas de Computadores Prof. Marcos Zurita zurita@ufpi.edu.br www.ufpi.br/zurita Teresina - 2012 1. Arquiteturas de

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 4 - CLUSTER DE COMPUTADORES 1. INTRODUÇÃO Grande parte do tempo, os computadores que utilizamos encontram-se ociosos, ou seja, sem nada para processar. Isso se deve, em grande parte, pelas aplicações

Leia mais

Programação Paralela

Programação Paralela rogramação aralela FEU 2. Arquitecturas de omputadores e rogramação aralela Arquitecturas de omputadores Taxonomia de Flynn (extra livro recomendado) Base da Taxonomia: D: data stream (fluxo de acesso

Leia mais

Introdução a Ciência da Computação Conceitos Básicos de Sistema PROFESSORA CINTIA CAETANO

Introdução a Ciência da Computação Conceitos Básicos de Sistema PROFESSORA CINTIA CAETANO Introdução a Ciência da Computação Conceitos Básicos de Sistema PROFESSORA CINTIA CAETANO Introdução A informática é uma área que atualmente vem evoluindo muito rapidamente. A cada dia se torna mais importante

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS 1. Histórico Primeiros computadores Computadores dos anos 50 e 60 Primeiros computadores com sistemas operacionais Surgimento das redes de computadores Nos anos 70 início das pesquisas

Leia mais

Definindo melhor alguns conceitos

Definindo melhor alguns conceitos Definindo melhor alguns conceitos Processamento Paralelo: processamento de informação concorrente que pertencem a um ou mais processos que resolvem um único problema. Processamento Distribuído: processamento

Leia mais

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

LCAD. ALGORÍTMOS PARALELOS (Aula 6) Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES. ALGORÍTMOS PARALELOS (Aula 6) Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Tópico 20 janeiro 27 janeiro 3 fev 10 fev 17 fev 24 fev 3 março Paradigma de Paralelismo

Leia mais

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 1- MODELO DE CAMADAS 1. INTRODUÇÃO A compreensão da arquitetura de redes de computadores envolve a compreensão do modelo de camadas. O desenvolvimento de uma arquitetura de redes é uma tarefa complexa,

Leia mais

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução;

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução; Em 1993, foi lançada a primeira versão do processador Pentium, que operava a 60 MHz Além do uso otimizado da memória cache (tecnologia já amadurecida) e da multiplicação do clock, o Pentium passou a utilizar

Leia mais

Informática Aplicada à Química. Hardware - armazenamento

Informática Aplicada à Química. Hardware - armazenamento Informática Aplicada à Química Hardware - armazenamento Armazenamento de Dados e a CPU Dois tipos de armazenamento: Armazenamento primário (memória): Armazena dados temporariamente. A CPU referencia-o

Leia mais

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

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Figura 1 - Comparação entre as camadas do Modelo OSI e doieee. A figura seguinte mostra o formato do frame 802.3:

Figura 1 - Comparação entre as camadas do Modelo OSI e doieee. A figura seguinte mostra o formato do frame 802.3: Introdução Os padrões para rede local foram desenvolvidos pelo comitê IEEE 802 e foram adotados por todas as organizações que trabalham com especificações para redes locais. Os padrões para os níveis físico

Leia mais

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa.

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa. CLUSTERS Pode-se pegar uma certa quantidade de servidores e juntá-los para formar um cluster. O serviço então é distribuído entre esses servidores como se eles fossem uma máquina só. Um cluster de servidores

Leia mais

Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e Organização de Memória

Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e Organização de Memória Introdução Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e O Nível de lógica digital é o nível mais baixo da Arquitetura. Responsável pela interpretação de instruções do nível

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 3 - ARQUITETURA DE SISTEMAS DISTRIBUÍDOS 1 INTRODUÇÃO Considerando que os Sistemas Distribuídos são constituídos de vários processadores, existem diversas formas de organizar o hardware de tais

Leia mais

Arquitetura de Computadores Pentium 4 e PCIe

Arquitetura de Computadores Pentium 4 e PCIe Pentium 4 Arquitetura de Computadores Pentium 4 e PCIe O Pentium 4 é um descendente direto da CPU 8088 usada no IBM PC original. O primeiro Pentium 4 foi lançado em novembro de 2000 com uma CPU de 42 milhõcs

Leia mais

Tipos de Sistemas Distribuídos (Cluster e Grid)

Tipos de Sistemas Distribuídos (Cluster e Grid) Tipos de Sistemas Distribuídos (Cluster e Grid) Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100

Leia mais