METODOLOGIA PARA PARALELIZAÇÃO DE PROGRAMAS CIENTÍFICOS

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

Download "METODOLOGIA PARA PARALELIZAÇÃO DE PROGRAMAS CIENTÍFICOS"

Transcrição

1 INPE TDI/1155 METODOLOGIA PARA PARALELIZAÇÃO DE PROGRAMAS CIENTÍFICOS Simone Shizue Tomita Dissertação de Mestrado do Curso de Pós-Graduação em Computação Aplicada, orientada pelos Drs. Haroldo Fraga de Campos Velho e Jairo Panetta, aprovada em 10 de fevereiro de INPE São José dos Campos 2007

2 Publicado por: esta página é responsabilidade do SID Instituto Nacional de Pesquisas Espaciais (INPE) Gabinete do Diretor (GB) Serviço de Informação e Documentação (SID) Caixa Postal 515 CEP São José dos Campos SP Brasil Tel.: (012) Fax: (012) Solicita-se intercâmbio We ask for exchange Publicação Externa É permitida sua reprodução para interessados.

3 INPE TDI/1155 METODOLOGIA PARA PARALELIZAÇÃO DE PROGRAMAS CIENTÍFICOS Simone Shizue Tomita Dissertação de Mestrado do Curso de Pós-Graduação em Computação Aplicada, orientada pelos Drs. Haroldo Fraga de Campos Velho e Jairo Panetta, aprovada em 10 de fevereiro de INPE São José dos Campos 2007

4 Tomita, S. S. Metodologia para paralelização de programas científicos / Simone Shizue Tomita. - São José dos Campos: INPE, p. ; (INPE TDI/1155) 1. Processamento paralelo. 2. Programas científicos. 3. Otimização. 4. Previsão do tempo. 5. Computação. I. Título.

5

6

7 A sabedoria da vida não está em só fazer aquilo que se gosta, mas também de gostar daquilo que se faz. LEONARDO DA VINCI

8

9 a meus filhos, GIOVANNA SHIZUE TOMITA LIMA e GUILHERME MASSAO TOMITA LIMA.

10

11 AGRADECIMENTOS Agradeço a meus pais, Tomita e Irene, pela base de vida que me deram e pela orientação que me fizeram seguir esse caminho. Ao Paulinho, meu esposo, pela paciência, pela força e pelo bom humor ao mostrar que as dificuldades sempre serão vencidas. E a meus filhos pela compreensão pelo tempo que deixei de compartilhar com eles. Ao Dr. José Paulo Bonatti pelo grande incentivo em iniciar e concluir esse trabalho. A sua autorização e compreensão tornaram possível esse trabalho. Aos meus amigos do coração: Luiz Flávio Rodrigues, pelo seu companheirismo e bom humor, pela colaboração no processo inicial do trabalho, e também por compartilhar sua experiência profissional e de vida; Júlio Tota, pelo companheirismo incansável e dedicação, compartilhou experiências de vida e me ensinou conceitos na área de meteorologia, essenciais na complementação desse trabalho; Dr. Álvaro Fazenda pelo auxílio na concepção de idéias e na visão crítica do contexto. Dr. Luciano P. Pezzi pela colaboração e pela amizade; Jonas Tamaoki, pela amizade e paciência no auxílio à utilização de ferramentas e mecanismos do supercomputador. Ao Centro de Previsão de Tempo e Estudos Climáticos - CPTEC / INPE pelo uso das máquinas e ferramentas de trabalho. Aos professores do INPE pelo conhecimento compartilhado, em especial ao orientador Prof. Dr. Haroldo Fraga de Campos Velho pela orientação, estímulo no trabalho e suas idéias inovadoras. Agradeço especialmente ao meu orientador de pesquisa Dr. Jairo Panetta, meu mentor, pela extrema paciência e dedicação na orientação desse trabalho, e pelo conhecimento compartilhado. Esse trabalho só tornou-se possível pela sua grande experiência profissional e grande presença de espírito. A ele meu respeito e admiração.

12

13 RESUMO Este trabalho propõe uma nova metodologia para paralelização de programas científicos e sua aplicação a um problema real. Visa direcionar o trabalho do programador da área de processamento de alto desempenho. Essa metodologia mostra os requisitos básicos e as técnicas necessárias para transformar programas seqüenciais em programas paralelizados. Demonstra as formas de medir desempenho e avaliar os resultados numéricos ao final de cada etapa quando se aplica gradativamente a estratégia de paralelização. A metodologia é dividida em quatro passos que são: preliminares, análise do problema, estratégia geral de paralelização e análise dos resultados. A metodologia foi aplicada ao modelo regional de previsão de tempo Eta usando uma máquina de arquitetura vetorial e paralela de memória compartilhada NEC/SX4 e arquitetura híbrida NEC/SX6 no CPTEC/INPE. O programa original era codificado em Fortran 77 e inicialmente foi transformado em Fortran 90. Em seguida houve a reestruturação do programa para permitir o paralelismo de dois níveis vetorização e paralelismo implementado por diretivas (padrão OpenMP). A implementação foi baseada em paralelismo de dados, e resultou um programa portátil com paralelismo também portátil para máquinas de memória compartilhada. Com o objetivo de facilitar o trabalho do programador na aplicação de paralelismo em programas, a metodologia propõe um caminho menos custoso e que requer menor tempo na fase de inicialização do processo de paralelização.

14

15 SCIENTIFIC PROGRAMS PARALLELIZATION METHODOLOGY ABSTRACT This project is proposing a new methodology on the scientific program parallelism and applications on a real problem. It is a goal, direct the high performance processing programmer s work. This methodology shows the basic techniques and requirements needed to convert sequential onto parallel codes. It does show the skill and evaluate the numerical results at the end of each stage when gradually the parallelism technique is applied. The methodology is divided in four steps: preliminaries, analysis of the problem, global strategy of parallelism and results analysis. The methodology has been applied to the regional weather forecast model Eta using both vectorial and parallel architecture machine with shared memory NEC/SX4 and hybrid architecture NEC/SX6 at CPTEC/INPE. The original code was built in Fortran 77 and re-written in Fortran 90. Afterwards, the code was re-structured to allow the parallelism in two levels vectorization and parallelism based on directives (OpenMP standard). The implementation is based on data parallelism and has resulted in a portable program with portable parallelism to shared memory machines. As an aim to turn the programmer s job easier on the code parallelism, this methodology purposes an economical way where less effort is made in the initialisation stage of the parallelism process.

16

17 SUMÁRIO LISTA DE FIGURAS LISTA DE TABELAS LISTA DE SIGLAS E ABREVIATURAS Pág. CAPÍTULO 1 - INTRODUÇÃO Trabalhos Similares Nomenclatura Estrutura da Dissertação CAPÍTULO 2 - PROCESSAMENTO PARALELO Introdução Arquiteturas de Máquinas Paralelas Arquiteturas de Memória Compartilhada Arquiteturas de Memória Distribuída Arquiteturas Híbridas Modelos de Programação Paralela Fork-join Troca de Mensagens OpenMP MPI CAPÍTULO 3 - ANÁLISE DE DESEMPENHO E TÉCNICAS CLÁSSICAS DE OTIMIZAÇÃO DE PROGRAMAS Introdução Análise de Desempenho Otimização e Arquitetura... 36

18 CAPÍTULO 4 - METODOLOGIA PARA PARALELIZAÇÃO DE PROGRAMAS CIENTÍFICOS Introdução Comparação com as Metodologias Clássicas de Paralelização Organização da Metodologia Pré-requisito Primeiro Passo: Preliminares Segundo Passo: Análise Análise de Fluxo de Dados Análise de Dependências Terceiro Passo: Estratégia Geral de Paralelização Primeiro Nível Vetorização Segundo Nível Paralelização Implementada por Diretivas Quarto Passo: Resultados Análise dos Resultados Numéricos Análise de Desempenho Programa Executável CAPÍTULO 5 - APLICAÇÃO DA METODOLOGIA EM UM PROBLEMA REAL Introdução Características Computacionais do Modelo Eta Primeiro Passo Preliminares Elaboração da Árvore de Chamadas Medidas de Desempenho Segundo Passo Análise Análise de Fluxo de Dados Análise de Dependências Terceiro Passo Estratégia Geral de Paralelização Primeiro Nível Vetorização Segundo Nível Paralelização Implementada por Diretivas Quarto Passo Resultados... 69

19 Análise dos Resultados Numéricos Análise de Desempenho Primeiro Nível Segundo Nível CAPÍTULO 6 - CONCLUSÕES REFERÊNCIAS BIBLIOGRÁFICAS APÊNDICE A - Descrição do Modelo Regional de Previsão de Tempo Eta 89 APÊNDICE B - Descrição da Arquitetura das Máquinas NEC SX-4/SX

20

21 LISTA DE FIGURAS Pág Arquitetura paralela de memória compartilhada Arquitetura paralela de memória distribuída Diagrama de medida de desempenho Explicitar o fluxo de dados Aplicação das técnicas de otimização clássicas Uso das técnicas de otimização e paralelismo implementado por diretivas Paralelismo implementado por diretivas (OpenMP) sobre a vetorização Procedimento puro Reestruturação de laço para paralelismo Estratégia de paralelização da metodologia Diagrama de chamadas do programa principal Estrutura do modelo Eta a - Paralelização do laço L b - Paralelização do laço J Tempo de processamento do código Árvore de chamadas do Módulo da Turbulência Árvore de chamadas do Módulo da Radiação Comparações do código vetorizado e não vetorizado Comparação do código vetorizado e paralelizado (8 processadores) Comparação de versões diferentes do compilador para o mesmo código Comparação de versões diferentes do código para o mesmo compilador Desempenho do modelo versão original versus versão com otimização 73 vetorial Desempenho do código após primeiro passo da paralelização OpenMP 77

22 Desempenho do Código paralelo OpenMP Medida de tempo por módulos 78

23 LISTA DE TABELAS Pág Procedimentos candidatos à vetorização Speedup da dinâmica com 2 processadores Speedup do módulo da Turbulência com 2 processadores Comparação entre as versões do Código Uso de memória 79 A1 - Grade horizontal Ε de Arakawa 89 A2 - Representação do esquema de degraus de montanhas e coordenada Eta (η) 91 B1 - Características da unidade vetorial do SX 93 B2 - Características da unidade superescalar do SX 94 B3 - Características da CPU do SX 95 B4 - Configuração do sistema multi-nó do SX-6 95

24

25 LISTA DE SIGLAS E ABREVIATURAS BLAS - Basic Linear Algebra Subprograms CPTEC - Centro de Previsão de Tempo e Estudos Climáticos CPU - Central Processing Unit INPE - Instituto Nacional de Pesquisas Espaciais LAPACK - Linear Algebra PACKage MIMD - Multiple Instruction stream, Multiple Data stream MISD - Multiple Instruction stream, Single Data stream MPI - Message Passing Interface NAG - The Numerical Algorithms Group ltd. NCEP - National Center for Environment Prediction OSU - Oregon State University PARIX - Parallel Extension to Unix POSIX - Portable Operating System Interface PVM - Parallel Virtual Machine SIMD - Single Instruction stream, Multiple Data stream SISD - Single Instruction stream, Single Data stream TLB - Translation Lookaside Buffer WSCAD - Workshop em Sistemas Computacionais de Alto Desempenho

26

27 CAPÍTULO 1 INTRODUÇÃO Este trabalho propõe nova metodologia para paralelização de programas científicos para máquinas de memória compartilhada. A metodologia permite paralelizar um programa científico sem o conhecimento prévio da sua formulação matemática. Situa-se entre dois métodos clássicos de paralelização - o que advém do conhecimento da formulação matemática e o automático, gerado por compiladores paralelizadores. O primeiro método indica direções do paralelismo através da compreensão da formulação matemática, dos métodos numéricos empregados para solucionar as equações e sua implementação no código. Partindo desse conhecimento, utiliza-se a análise do código fonte para paralelizar o programa. O segundo método simplesmente submete o código a um compilador paralelizador que extrai, automaticamente, as oportunidades de paralelismo. Este segundo método não requer qualquer conhecimento da formulação matemática do problema baseia-se inteiramente na análise de dependências do código fonte. O novo método busca direções do paralelismo sem contemplar a formulação matemática. A metodologia proposta utiliza fundamentalmente a informação de quais direções são independentes nos processos. O estudo profundo da implementação do código valida as direções (quando disponíveis) ou obtém as direções (quando desconhecidas), permitindo a aplicação do paralelismo. Dessa forma, a intervenção humana na análise de dependências ultrapassa os limites das implementações automáticas, mesclando informações pré-existentes das direções possíveis de paralelismo com as que advêm do estudo do código. A metodologia foi aplicada a um modelo numérico de previsão do tempo Modelo Regional Eta utilizando a máquina de arquitetura vetorial e paralela de memória compartilhada NEC/SX4 e a máquina de arquitetura híbrida NEC-SX6, apesar da metodologia não abranger máquinas de memória distribuída. A demonstração da metodologia, suas vantagens e desvantagens, as dificuldades de se paralelizar numa 23

28 máquina que contempla dois níveis de paralelismo vetorização e paralelização e os resultados obtidos serão abrangidos no escopo deste trabalho. 1.1 Trabalhos Similares Há diversos exemplos de aplicação do paralelismo no modelo Regional Eta, dentre eles o National Center for Environment Prediction (NCEP) que paralelizou o modelo Eta utilizando OpenMP e Message Passing Interface (MPI). Resulta desse esforço a versão operacional atual do NCEP, executada em 400 processadores de um IBM RS/6000-SP, com 60 níveis verticais, resolução horizontal de 12 Km em um domínio horizontal de 700 X 1000 pontos [3]. Outro exemplo de paralelização do Eta foi o The Weather Forecasting System SKIRON [4], desenvolvido pelo grupo do Departamento de Informática, seção de Informática Teórica da Universidade de Atenas em Esse paralelismo utilliza o Parallel Virtual Machine (PVM), Message Passing Interface (MPI) e Parallel Extension to UNIX (PARIX). Resultados foram obtidos em uma máquina Parsytec CC-8 usando PVM e PARIX, e em uma máquina Convex Exemplar SPP-1600 com 8 nós usando PVM e MPI. Outro exemplo sobre a paralelização do modelo Eta, foi realizado pela autora e pode ser visto nos anais do WSCAD 2003 (IV Workshop em Sistemas Computacionais de Alto Desempenho) [12]. Este trabalho é a aplicação da metodologia proposta a um problema real, utilizando inicialmente o NEC/SX4 e em seguida o NEC/SX6. Entretanto, não é do conhecimento da autora qualquer outro trabalho que determine as informações efetivamente necessárias para a paralelização, bem como limitar quais dessas informações emanam da formulação matemática e quais emanam do estudo do código. 1.2 Nomenclatura Embora vetorização e paralelização de memória compartilhada constituam dois níveis de paralelismo, utilizaremos o termo paralelismo para indicar o segundo desses níveis, obtido pelo uso de diretivas OpenMP. O primeiro nível será denominado vetorização. 24

29 Do mesmo modo, embora o movimento da atmosfera ocorra por processos físicos como os dinâmicos, turbulentos, convectivos e a radiação, será utilizada a nomenclatura usual da meteorologia, que diferencia os processos da dinâmica dos demais processos, que passam a ser denominados processos físicos. Desta forma, há duas classes de processos no modelo Eta: os físicos (turbulência, convecção e radiação) e os dinâmicos. 1.3 Estrutura da Dissertação O Capítulo 2 apresenta aspectos gerais de paralelismo, arquiteturas de máquinas paralelas e suas peculiaridades. Embora este trabalho utilize apenas conceitos de arquiteturas de memória compartilhada, os demais conceitos estão colocados por completude. O Capítulo 3 apresenta de forma sucinta os conceitos e ferramentas para a análise e otimização de códigos seqüenciais. Dentre as inúmeras técnicas clássicas de otimização de códigos, detalham-se as duas técnicas mais utilizadas na paralelização do ETA. O Capítulo 4 apresenta os passos da metodologia, os requisitos básicos, as reestruturações de software que são passos preliminares da metodologia e a estratégia de paralelização. O Capítulo 5 apresenta a aplicação da metodologia a um problema real, o histórico de desenvolvimento da vetorização e da paralelização e os resultados atingidos. O Capítulo 6 contém as conclusões e trabalhos futuros. 25

30 26

31 CAPÍTULO 2 PROCESSAMENTO PARALELO 2.1 Introdução Neste trabalho, define-se processamento paralelo como o uso simultâneo de múltiplos processadores para reduzir o tempo de execução de um programa. Nota-se que há outras formas de paralelismo que não são tratadas neste trabalho: paralelismo ao nível de bits (na implementação de uma instrução) e paralelismo ao nível de instrução (múltiplas instruções de um mesmo fluxo sendo executadas simultaneamente, como em uma máquina super escalar). O enfoque desse trabalho é apenas em paralelismo ao nível de processos. Essa forma de processamento paralelo requer máquinas com múltiplos processadores, sistemas operacionais capazes de suportar e de gerenciar esses processadores e aplicações que explorem essa forma de paralelismo. Este Capítulo apresenta conceitos básicos dessa forma de processamento paralelo: arquitetura de computadores paralelos, modelos de programação paralela e padrões de programação paralela. 2.2 Arquiteturas de Máquinas Paralelas Segundo a taxonomia de Flynn [5] as arquiteturas paralelas são do tipo SISD (single instruction stream, single data stream) como em uniprocessadores, SIMD (single instruction, multiple data) onde a mesma instrução é executada por múltiplos processadores em dados distintos, MISD (multiple instructrion stream, single data stream) onde múltiplas instruções operam simultaneamente sobre o mesmo fluxo de dados e MIMD (multiple-instruction stream multiple-data stream) onde cada processador executa suas instruções no seu conjunto de dados. 27

32 As máquinas MIMD são classificadas em duas categorias: memória compartilhada e memória distribuída [6], em função da memória endereçável por cada processador. Em máquinas de memória compartilhada, todos os processadores endereçam toda a memória. Em máquinas de memória distribuída, cada processador endereça apenas um trecho da memória total. Uma classificação importante para o entendimento e utilização de arquiteturas paralelas é quanto ao tipo de paralelização homogênea e heterogênea e o conceito de granularidade [7]. Sucintamente, a paralelização homogênea é a execução paralela do mesmo código sobre múltiplos dados. A paralelização heterogênea é a execução de códigos múltiplos sobre dados múltiplos. Geralmente utilizada quando é possível a decomposição de tarefas a serem executadas em paralelo. A granularidade é uma medida da quantidade de processamento envolvido em uma subtarefa, ela pode ser fina ou grossa. Se uma subtarefa faz uma única atribuição ao dado pode ser considerada como granularidade fina. Se envolver execução de múltiplas atribuições ou mesmo chamadas de subrotinas pode ser considerada de granularidade grossa. Considerando os tipos de paralelização citadas e a combinação com o fator granularidade é possível determinar alguns paradigmas de programação paralela [7] Arquiteturas de Memória Compartilhada Máquinas de memória compartilhada possuem uma memória global acessível por todos os processadores. A forma simples de sua configuração é mostrada na Figura 2.1. Cada processador possui alguma memória local tal como registradores e/ou memória cache[8]. Um exemplo dessa arquitetura é o NEC/SX4 do CPTEC/INPE composto por 8 processadores. É uma máquina de processamento vetorial e paralelo, onde cada processador possui unidade vetorial e escalar. O início deste trabalho foi realizado nesta máquina e foram criados dois níveis de paralelismo vetorial e paralelo implementado por diretivas para uma aplicação de modelagem regional de tempo. O mesmo sistema operacional controla todos os processadores. 28

33 CPU CPU CPU CPU Memória principal FIGURA 2.1 Arquitetura paralela de memória compartilhada. Os processadores operam de maneira independente, porém apenas um processador por vez pode acessar cada endereço da memória compartilhada. A principal característica de sistemas de memória compartilhada é que o tempo de acesso à memória é independente do processador solicitando a memória. Isso não elimina a disputa por acessos a memória. Casos como falhas de acesso e conflito em bancos de memória afetam o desempenho tal como em um sistema uniprocessado [9]. A vantagem desta arquitetura é a facilidade no uso e a rapidez na transferência de dados entre processadores. Entretanto o número de processadores é limitado pela complexidade do sistema de acesso simultâneo à memória. Essa é a principal limitação dessa arquitetura: a baixa escalabilidade Arquiteturas de Memória Distribuída Máquinas de memória distribuída não compartilham memória cada processador possui sua própria memória, invisível a todos os outros processadores. Processadores são interconectados por uma rede de comunicação como mostra a Figura 2.2. CPU Memória CPU Memória CPU Memória Rede de interconexão CPU Memória CPU Memória CPU Memória FIGURA 2.2 Arquitetura paralela de memória distribuída. 29

34 Os processos de uma aplicação paralela utilizam troca de mensagens para obter ou alterar os dados nas memórias dos outros processos. A vantagem dessa arquitetura é sua escalabilidade, maior que em máquinas com memória compartilhada, exatamente por não possuir acesso simultâneo à memória. Além disso, cada processador acessa sem interferência sua memória local. A desvantagem é o elevado overhead de comunicação entre os processadores. Em geral, a rede de comunicação possibilita uma alta taxa de comunicação e os processadores podem ser utilizados como computadores individuais. Cada processador possui seu próprio sistema operacional Arquiteturas Híbridas Dentre as diversas formas possíveis de misturar as duas arquiteturas (memória compartilhada e memória distribuída), destacamos a arquitetura conhecida como Cluster. Trata-se de um conjunto de n nós de processamento, cada nó formado por p processadores. Cada nó é uma máquina de memória compartilhada. Os múltiplos nós formam uma máquina de memória distribuída. Em casos extremos, clusters degeneram em arquitetura de memória compartilhada (quando n=1), em arquitetura de memória distribuída (quando p=1) ou em uni-processadores (quando n=p=1). Um exemplo dessa arquitetura é o NEC/SX6 do CPTEC/INPE que possui 4 nós com 8 processadores. É também uma máquina de processamento vetorial e paralelo, onde cada processador possui unidade vetorial e escalar. A conclusão deste trabalho foi realizada nessa máquina; entretanto não foi aplicado o terceiro nível de paralelismo que seria o paralelismo por troca de mensagens. 2.3 Modelos de Programação Paralela Modelos de programação paralela utilizam o conceito de processos. Um processo é um programa em execução, uma abstração que reúne atributos como espaço de endereçamento, estruturas de dados, permissões de acessos, quotas, etc. O paralelismo é obtido pela execução simultânea de um conjunto de processos que resolve um problema 30

35 único. A redução do tempo é efetiva se os processos executarem simultaneamente em processadores distintos. A eficácia do paralelismo depende de como a computação seqüencial é dividida entre os processos que compõe o programa paralelo. Essa divisão é conhecida como partição do problema. As principais formas de particionar problemas são a partição de domínio e a partição de tarefas. Na partição de domínio, os dados do problema são divididos entre os processos. Na partição de tarefas, as tarefas que compõe a solução do problema são divididas entre os processos. Ou seja, na partição de domínio cada processo executa a mesma computação em parte do conjunto de dados, enquanto na partição de tarefas cada processo executa uma tarefa sobre todos os dados. A quantidade de trabalho que cada processo realiza é chamada de carga do processo e distribuir a carga igualmente para todos os processos é denominado balanceamento de carga. É um fator importante para garantir que a carga de trabalho seja bem distribuída entre os processadores. Desta forma, a eficácia do paralelismo depende fundamentalmente da partição do problema e do balanceamento de carga. Os principais modelos de paralelismo são a troca de mensagens entre processos e o modelo fork-join de processos Fork-join Neste modelo, processos usam primitivas do sistema operacional para criar e destruir, dinamicamente, outros processos. Esse modelo, originalmente criado para especificar concorrência, foi introduzido por Connway (1963) e Dennis e Van Horn (1966). O uso da função fork( ) cria dinamicamente cópia do processo que a invoca. Logo, o código do novo processo (processo filho) é o mesmo do processo que o criou (processo pai). Processos pais podem criar diversos processos filhos. A única diferença entre eles é o número identificador do processo (PID); pais e filhos compartilham o mesmo espaço de endereçamento. 31

36 A primitiva inversa de fork (que divide uma única computação em duas independentes), é a primitiva join, que agrupa os processos concorrentes criados por fork. Invocada pelo pai, a primitiva join suspende o processo pai até que o filho termine. Esse modelo de programação requer paralelismo de memória compartilhada, pois pais e filhos dividem o mesmo espaço de endereçamento. O modelo de programação permite flexibilidade pelo fato dos processos serem criados dinamicamente; entretanto, a criação de processos requer grande tempo de execução. Para reduzir o tempo de criação, utilizam-se threads no lugar de processos. Thread é um processo leve. Cada thread tem sua própria pilha, registradores e contador de instruções; os demais elementos (espaço de endereçamento, ambiente, etc) são herdados do processo que cria a thread. O sucesso desse conceito levou-o à padronização POSIX (POSIX Standard c, System Application Program Interface, Amendment 2: Threads Extension ) Troca de Mensagens O modelo de programação por troca de mensagens trata de paralelismo de memória distribuída. Nesse modelo, o compartilhamento dos dados é feito via troca de mensagens entre os processos. São processos independentes e possuem espaço de endereçamento próprio. O compartilhamento dos dados entre os processos é executado por comandos explicitados pelo programador. Se for explicitado que um processo envia dados para outro, o processo que recebe os dados também deve explicitar a recepção. A decomposição de domínio ou de tarefas entre os processadores também é feita de forma explícita. 2.4 OpenMP Para exemplificar o modelo de programação de memória compartilhada fork-join será citado o padrão de fato OpenMP [1] que foi extensamente utilizado neste trabalho. É um padrão de paralelismo explícito que usa diretivas de programação com interface para 32

37 linguagem C e Fortran. Os compiladores traduzem as diretivas para as primitivas do sistema operacional baseadas em threads. Visto que essas diretivas são comentários na linguagem de programação, o programa paralelizado utilizando OpenMP pode também ser executado seqüencialmente se o compilador não for munido com OpenMP. Sua aplicação é incremental e combina código serial e paralelo num mesmo programa. Como se trata de um padrão de programação, a portabilidade de um programa paralelizado por OpenMP é garantida. A região paralela é a estrutura básica do paralelismo OpenMP e define uma seção do programa paralelo. Inicia-se a execução com uma única thread (denominada thread master) e quando uma região paralela é encontrada, automaticamente a thread master cria um conjunto de threads que executarão concorrentemente. Portanto é imprescindível minimizar o número de regiões paralelas abertas para reduzir o overhead de criação e destruição de threads. Dentro de uma região paralela, as variáveis podem ser privadas ou compartilhadas. Todas as threads vêem a mesma cópia das variáveis compartilhadas e vêem a sua cópia das variáveis privadas, que não são visíveis pelas outras threads. Sua utilização é fácil e trata mais freqüentemente de paralelismo de dados em laços. Cada conjunto de dados é processado concorrentemente entre os processadores até o término das execuções de cada conjunto (construção work-sharing). A sincronização das threads é implícita pela existência de uma barreira implícita no término de cada laço. Os processos aguardam o final da execução do último conjunto de dados para continuar. O sincronismo pode se tornar explícito se o programador especificar o local onde haverá ou não essas barreiras. A distribuição do conjunto de dados para cada processador é feita também de forma automática sendo possível modificar o schedule dos laços. Isso afetará somente o modo como a iteração dos laços é mapeada sobre as threads, entretanto o balanceamento de carga é implícito. O uso de OpenMP gera programas paralelos somente para máquinas de memória compartilhada. Entretanto a vantagem desse padrão de programação é que sua aplicação 33

38 é simples, portável e pode ser gradativamente aplicado, evitando extensa recodificação do programa. 2.5 MPI O padrão MPI [10] é uma biblioteca desenvolvida para ser padrão em ambientes de memória distribuída usando troca de mensagens. O objetivo do MPI é simplesmente estabelecer um padrão para programar usando troca de mensagens tornando o programa mais portável, eficiente e flexível. O padrão fornece bibliotecas de rotinas padronizadas para linguagens C e Fortran. Programas implementados com MPI somente podem ser executados usando essas bibliotecas, mesmo utilizando apenas um processador. Todo o paralelismo é explícito, o programador é o responsável em identificar o paralelismo e implementar um algoritmo utilizando construções com o MPI. A decomposição de domínios é explicitada pelo programador e cada processo é responsável pelo seu conjunto de dados. Conseqüentemente o balanceamento de carga também é explícito. O paralelismo não é construído em cima de um código seqüencial original como no OpenMP, ele deve ser alterado para acomodar o paralelismo. Mensagens de envio e recebimento tornam o sincronismo explícito. O uso de MPI gera programas paralelos mais gerais por executarem em máquinas de memória compartilhada e distribuída, e são suportados em diversos sistemas operacionais. Entretanto requer extensa recodificação do programa. Este trabalho não abrange máquinas de memória distribuída, pois a metodologia foi desenvolvida para arquiteturas de memória compartilhada. O capítulo a seguir mostra algumas técnicas de otimização de códigos seqüenciais que foram extensamente utilizadas na aplicação da metodologia para um problema real. 34

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

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

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

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

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

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

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

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

Paralelização Introdução a vetorização, OpenMP e MPI

Paralelização Introdução a vetorização, OpenMP e MPI 1/45 Paralelização Introdução a vetorização, OpenMP e MPI 1 Conceitos Paulo Penteado IAG / USP pp.penteado@gmail.com Esta apresentação: Arquivos do curso: Artigo relacionado: http://www.ppenteado.net/ast/pp_para_on/pp_para_on_1.pdf

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

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

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

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

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

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

Sistemas Operacionais

Sistemas Operacionais UNIVERSIDADE BANDEIRANTE DE SÃO PAULO INSTITUTO POLITÉCNICO CURSO DE SISTEMAS DE INFORMAÇÃO Sistemas Operacionais Notas de Aulas: Tópicos 7 e 8 Estrutura do Sistema Operacional São Paulo 2009 1 Sumário

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

7 Processamento Paralelo

7 Processamento Paralelo 7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas

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

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN SISTEMAS OPERACIONAIS Apostila 03 Estrutura do Sistema Operacional UNIBAN 1.0 O Sistema Operacional como uma Máquina Virtual A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura

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

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

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

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

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.

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

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

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

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

GUILHERME STUTZ TÖWS ANIMAÇÃO DE ALGORITMOS

GUILHERME STUTZ TÖWS ANIMAÇÃO DE ALGORITMOS GUILHERME STUTZ TÖWS ANIMAÇÃO DE ALGORITMOS Trabalho de graduação do Curso de Ciência da Computação do Setor de Ciências Exatas da Universidade Federal do Paraná. Professor: André Luiz Pires Guedes CURITIBA

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

Programação em Memória Compartilhada com OpenMP

Programação em Memória Compartilhada com OpenMP Programação em Memória Compartilhada com OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br

Leia mais

Introdução a Threads Java

Introdução a Threads Java Introdução a Threads Java Prof. Gerson Geraldo Homrich Cavalheiro Universidade Federal de Pelotas Departamento de Informática Instituto de Física e Matemática Pelotas RS Brasil http://gersonc.anahy.org

Leia mais

Computação Heterogênea Programação paralela, clusters e GPUs

Computação Heterogênea Programação paralela, clusters e GPUs Computação Heterogênea Programação paralela, clusters e GPUs Profa. Dra. Denise Stringhini (ICT- Unifesp) Primeiro Encontro do Khronos Chapters Brasil Belo Horizonte, 20/09/2013 Conteúdo Computação heterogênea:

Leia mais

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

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

Padrões e Frameworks de Programação Paralela em Arquiteturas Multi-Core

Padrões e Frameworks de Programação Paralela em Arquiteturas Multi-Core Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Programa de Pós-Graduação em Ciência da Computação Padrões e Frameworks de Programação Paralela em Arquiteturas Multi-Core

Leia mais

Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos e Ferramentas

Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos e Ferramentas 1 Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Programa de Pós-Graduação em Ciência da Computação Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas Arquitetura de Sistemas Operacionais Capítulo 4 Estrutura do Sistema Operacional Cap. 4 Estrutura do Sistema 1 Sistemas Operacionais Pitágoras Fadom Divinópolis Material Utilizado na disciplina Sistemas

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

SO Sistemas Operacionais

SO Sistemas Operacionais GOVERNO DO ESTADO DO RIO DE JANEIRO FUNDAÇÃO DE APOIO A ESCOLA TÉCNICA ESCOLA TÉCNICA ESTADUAL REPÚBLICA SO Sistemas Operacionais Curso de Informática ETE REPÚBLICA - Rua Clarimundo de Melo, 847, Quintino

Leia mais

Nível 3 Sistema Operacional

Nível 3 Sistema Operacional Nível 3 Sistema Operacional Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Nível

Leia mais

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos Módulo 4: Processos Conceito de Processo Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos 4.1 Conceito de Processo Um Sistema Operacional executa uma

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

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com Sistemas Operacionais 2014 Introdução Alexandre Augusto Giron alexandre.a.giron@gmail.com Roteiro Sistemas Operacionais Histórico Estrutura de SO Principais Funções do SO Interrupções Chamadas de Sistema

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Processos e Threads Andreza Leite andreza.leite@univasf.edu.br Plano de Aula 2 Gerenciamento de Processos Threads Aplicações com múltiplas Threads Concorrência e Compartilhamento

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

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Prof. Jó Ueyama Apresentação baseada nos slides da Profa. Dra. Kalinka Castelo Branco, do Prof. Dr. Antônio Carlos Sementille, da Profa. Dra. Luciana A. F. Martimiano e nas transparências

Leia mais

Desenvolvimento de um Cluster de Alto Desempenho com PVM

Desenvolvimento de um Cluster de Alto Desempenho com PVM Desenvolvimento de um Cluster de Alto Desempenho com PVM Daniel Cândido de Oliveira 1, Yzaac Gonçalves da Silva 1, Madianita Bogo 1 1 Centro Universitário Luterano de Palmas Universidade Luterana do Brasil

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

Sistemas de Informação. Sistemas Operacionais 4º Período

Sistemas de Informação. Sistemas Operacionais 4º Período Sistemas de Informação Sistemas Operacionais 4º Período SISTEMA DE ARQUIVOS SUMÁRIO 7. SISTEMA DE ARQUIVOS: 7.1 Introdução; 7.2 s; 7.3 Diretórios; 7.4 Gerência de Espaço Livre em Disco; 7.5 Gerência de

Leia mais

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB 2.3 Dependências de dados (Data Hazards) Ocorre quando uma instrução depende do resultado de outra instrução que ainda está no pipeline. Este tipo de dependência é originado na natureza seqüencial do código

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br ESQUEMA DE UM COMPUTADOR Uma Unidade Central de

Leia mais

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

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

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

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução Arquitetura e Organização de Computadores Capítulo 0 - Introdução POR QUE ESTUDAR ARQUITETURA DE COMPUTADORES? 2 https://www.cis.upenn.edu/~milom/cis501-fall12/ Entender para onde os computadores estão

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

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

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano 2012-1

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano 2012-1 ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES Prof. Dr. Daniel Caetano 2012-1 Lembretes Compreender o funcionamento da Arquitetura Superpipeline Compreender

Leia mais

Sistemas Processadores e Periféricos Aula 9 - Revisão

Sistemas Processadores e Periféricos Aula 9 - Revisão Sistemas Processadores e Periféricos Aula 9 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão

Leia mais

Capítulo 8: Gerenciamento de Memória

Capítulo 8: Gerenciamento de Memória Capítulo 8: Gerenciamento de Memória Sobre a apresentação (About( the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em 2005. Esse apresentação foi modificada

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de: i Sumário 1 Introdução 1 1.1 Linguagens....................................... 1 1.2 O que é um Compilador?................................ 2 1.3 Processadores de Programas: Compiladores, Interpretadores

Leia mais

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA 8 CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA A porta paralela, também conhecida por printer port ou Centronics e a porta serial (RS-232) são interfaces bastante comuns que, apesar de estarem praticamente

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informação Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 4 Estilos Arquitetônicos Estilos Arquiteturais Dataflow

Leia mais

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção Sistemas de Arquivos Funções de um SO Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção 2 Sistemas Operacionais Necessidade de Armazenamento Grandes quantidades

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Projeto de Arquitetura Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 11 Slide 1 Objetivos Apresentar projeto de arquitetura e discutir sua importância Explicar as decisões de projeto

Leia mais

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo Módulo 4: Processos Conceito de Processo Conceito de Processo Escalonamento de Processos Operações com Processos Processos Cooperativos Comunicação entre Processos Um sistema operacional executa uma variedade

Leia mais

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO LABORATÓRIO DE SISTEMAS OPERACIONAIS PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO Gerenciamento de Memória no Linux O Linux é um sistema operacional com memória virtual paginada, isto quer dizer que

Leia mais

Arquitetura e Organização de Computadores 2. Apresentação da Disciplina

Arquitetura e Organização de Computadores 2. Apresentação da Disciplina Arquitetura e Organização de Computadores 2 Apresentação da Disciplina 1 Objetivos Gerais da Disciplina Aprofundar o conhecimento sobre o funcionamento interno dos computadores em detalhes Estudar técnicas

Leia mais

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução Arquitetura e Organização de Computadores Capítulo 0 - Introdução POR QUE ESTUDAR ARQUITETURA DE COMPUTADORES? 2 https://www.cis.upenn.edu/~milom/cis501-fall12/ Entender para onde os computadores estão

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

Visão Geral de Sistemas Operacionais

Visão Geral de Sistemas Operacionais Visão Geral de Sistemas Operacionais Sumário Um sistema operacional é um intermediário entre usuários e o hardware do computador. Desta forma, o usuário pode executar programas de forma conveniente e eficiente.

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

Arquitetura de Computadores. Sistemas Operacionais IV

Arquitetura de Computadores. Sistemas Operacionais IV Arquitetura de Computadores Sistemas Operacionais IV Introdução Multiprogramação implica em manter-se vários processos na memória. Memória necessita ser alocada de forma eficiente para permitir o máximo

Leia mais

3. Arquiteturas SIMD. 3.1 Considerações iniciais

3. Arquiteturas SIMD. 3.1 Considerações iniciais 3. Arquiteturas SIMD Computadores SIMD (Single Instruction Multiple Data) são utilizados para a resolução de problemas computacionalmente intensivos da área científica e de engenharia, em que existem estruturas

Leia mais

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Organização de um Computador Típico Memória: Armazena dados e programas. Processador (CPU - Central Processing

Leia mais

Cap. 10 Gerência de Memória Virtual 1

Cap. 10 Gerência de Memória Virtual 1 Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Capítulo 10 Gerência de Memória Virtual Cap 10 Gerência de Memória Virtual 1 Introdução Espaço de Endereçamento Virtual Mapeamento

Leia mais

PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1

PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1 PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1 DUTRA, Evandro Rogério Fruhling 2 ; VARINI, Andre Luis 2 ; CANAL, Ana Paula 2 1 Trabalho de Iniciação Científica _UNIFRA 2 Ciência

Leia mais

Paralelização de Simuladores de Hardware Descritos em SystemC

Paralelização de Simuladores de Hardware Descritos em SystemC Paralelização de Simuladores de Hardware Descritos em SystemC 18 de maio de 2011 Roteiro Motivação Introdução à SLDL SystemC O Escalonador SystemC Simulação Paralela baseada em Eventos Discretos Suporte

Leia mais

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 03: Estruturas dos SOs Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com OBJETIVOS Descrever os serviços que um sistema operacional oferece aos usuários e outros sistemas

Leia mais

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br Sistemas Operacionais Alexandre Meslin meslin@inf.puc-rio.br Ementa Apresentação do curso Cap1 - Visão Geral Cap2 - Conceitos de Hardware e Software Cap3 - Concorrência Cap4 - Estrutura do Sistema Operacional

Leia mais

Figura 01 Kernel de um Sistema Operacional

Figura 01 Kernel de um Sistema Operacional 01 INTRODUÇÃO 1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS O Sistema Operacional é formado por um Conjunto de rotinas (denominado de núcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas)

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas) ENIAC Introdução aos Computadores e à ção (Noções Básicas) Introdução aos Computadores e à ção (Noções Básicas) 1 Introdução aos Computadores e à ção (Noções Básicas) 2 O transistor foi inventado em 1947

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

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

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 5 PROCESSOS 1. INTRODUÇÃO Em sistemas distribuídos é importante examinar os diferentes tipos de processos e como eles desempenham seu papel. O conceito de um processo é originário do campo de sistemas

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

Sistemas Operacionais

Sistemas Operacionais 7 Sistemas Operacionais 7.1 Fundamentos da ciência da computação Cengage Learning Objetivos 7.2 Compreender o papel do sistema operacional. Compreender o processo de inicialização para carregar o sistema

Leia mais

Infraestrutura de Hardware. Memória Virtual

Infraestrutura de Hardware. Memória Virtual Infraestrutura de Hardware Memória Virtual Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e executado pelo HW? Qual é a interface

Leia mais

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

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais 1º Estudo Dirigido Capítulo 1 Introdução aos Sistemas Operacionais 1. Defina um sistema operacional de uma forma conceitual correta, através de suas palavras. R: Sistemas Operacionais são programas de

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Suporte à Engenharia Reversa para o ambiente SEA

Suporte à Engenharia Reversa para o ambiente SEA Otavio Pereira Suporte à Engenharia Reversa para o ambiente SEA Orientador: Ricardo Pereira e Silva Universidade Federal de Santa Catarina - UFSC Departamento de Informática e Estatística - INE Florianópolis

Leia mais

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

Linguagens de programação

Linguagens de programação Prof. André Backes Linguagens de programação Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve ser descrito em termos de 1 s ou 0 s

Leia mais

Componentes internos de Um SGBD

Componentes internos de Um SGBD Arquitetura SBGD Gerenciamento de Processos joao@uefs.br Departamento de Ciências Exatas Universidade Estadual de Feira de Santana e sistemas paralelos 1 e sistemas paralelos Componentes internos de Um

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

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0 COMPUTAÇÃO PARALELA uma visão geral Guilherme Galante v.2.0 Guilherme Galante Bacharel em Informática Unioeste (2003) Mestre em Ciência da Computação UFRGS (2006) Professor Assistente do curso de Informática/Ciência

Leia mais