UNIJUI - UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL. DCEEng DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS

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

Download "UNIJUI - UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL. DCEEng DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS"

Transcrição

1 0 UNIJUI - UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL DCEEng DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS PROCESSAMENTO PARALELO COM ACELERADORES GRÁFICOS RODRIGO SCHIECK Santa Rosa, RS - Brasil 2012

2 1 RODRIGO SCHIECK PROCESSAMENTO PARALELO COM ACELERADORES GRÁFICOS Projeto apresentado na disciplina de Trabalho de Conclusão de Curso do curso de Ciência da Computação da Universidade do Noroeste do Estado do RS como requisito básico para apresentação do Trabalho de Conclusão de Curso. Orientador: Edson Luiz Padoin Santa Rosa RS 2012

3 2 PROCESSAMENTO PARALELO COM ACELERADORES GRÁFICOS RODRIGO SCHIECK Projeto apresentado na disciplina de Trabalho de Conclusão de Curso do curso de Ciência da Computação da Universidade do Noroeste do Estado do RS como requisito básico para apresentação do Trabalho de Conclusão de Curso. Orientador: Prof. Me. Edson Luiz Padoin BANCA EXAMINADORA Prof. Me. Rogério Samuel de Moura Martins Santa Rosa RS 2012

4 3 A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original. Albert Einstein

5 4 Dedicatória Aos meus pais Armindo e Alda, e a minha esposa Elenice, pessoas que amo muito e que me apoiaram e incentivaram em toda esta trajetória, tornando mais este sonho uma realidade, mas que não seja o último, e sim apenas mais um dos muitos outros que virão. Na indisponibilidade de tempo, o qual não pude estar com eles, pois tive que mediar entre o trabalho e o estudo, mas que daqui pra frente pretendo compensar.

6 5 AGRADECIMENTOS Agradeço à Unijuí como um todo, pelo ótimo ambiente de ensino e corpo docente disponibilizado. Agradeço em especial aos meus pais, que além do auxílio financeiro me deram todo apoio e compreensão, sem o qual teria sido muito difícil superar algumas etapas desta longa trajetória. Agradeço à minha esposa, companheira compreensiva, que sempre esteve ao meu lado me dando apoio e incentivo amenizando o desgaste físico e mental decorrente das diversas horas consecutivas de estudo. Agradeço ao meu orientador, professor Edson Luiz Padoin que levo comigo não apenas como professor ou orientador, mas como amigo, que mesmo com muito trabalho pode me dar muita atenção, sem contar seus conselhos técnicos e científicos, sempre muito bem elaborados com uma ótima fundamentação. Soube ser muito compreensivo, mas também cobrou quando necessário. Mesmo não estando sempre disponível fisicamente, respondeu sempre quase que instantaneamente meus s. Sua motivação e seu otimismo foram de grande apoio para que eu não abaixasse a cabeça perante as dificuldades. Muito obrigado pela parceria no desenvolvimento deste trabalho. Aos professores Gerson Battisti, Rogério Martins e Marcos Cavalheiro que serviram de base na construção do meu conhecimento, o qual foi de suma importância, pois foi empregado no desenvolvimento deste trabalho. Muito Obrigado a Todos!

7 6 RESUMO As GPUs estão se tornando cada vez mais presentes no cenário da computação de alto desempenho. Elas são processadores massivamente paralelos, inicialmente usados para processamento gráfico e jogos. Desde o surgimento da NVIDIA GeForce série 8, e a introdução do CUDA e outras ferramentas, as GPUs se tornaram programáveis, sendo capazes de executar aplicativos comuns e, com isso, através da modificação de algumas aplicações para algoritmos paralelos, conseguiram uma maior performance e escalabilidade dessas aplicações. As GPUs programáveis com suas arquiteturas massivamente paralelas expandiram o horizonte da computação de alto desempenho, tornando possível executar mais rapidamente algoritmos paralelos e com menor consumo energético. O objetivo deste trabalho é comprovar e demonstrar a melhor eficiência das GPUs quanto as CPUs em aplicações paralelas. Para isto, foram desenvolvidas aplicações utilizando CUDA e APARAPI para mostrar o desempenho da GPU assim como também aplicações que exigissem desempenho da CPU para fazer a comparação. Foi implementado um conjunto de oito algoritmos que utilizam técnicas diferentes de stress de ambas as arquiteturas. Os resultados dos testes foram submetidos a um processo de avaliação quanto à corretude e ao tempo de execução. Gráficos foram elaborados no intuito de analisar melhor e descrever o comportamento do sistema diante de diferentes recursos, como número de threads, números de processos, dimensões das matrizes, etc. A principal conclusão deste projeto foi que a definição da estratégia é decisiva para obtenção do menor custo de tempo, onde aplicações altamente paralelizáveis que executam uma única instrução sobre múltiplos dados, podem obter um ganho exponencial de desempenho utilizando-se de GPUs. Palavras-chave: Processamento Paralelo, Arquitetura Heterogênea, Acelerados Gráficas, Alto Desempenho, CUDA, APARAPI, GPU, GPGPU.

8 7 ABSTRACT GPUs are becoming increasingly present in the scenario of high performance computing. They are massively parallel processors, initially used for graphics processing and games. Since the emergence of the NVIDIA GeForce 8 series and the introduction of CUDA and other tools, GPUs became programmable, being able to run common applications and, thus, by modifying some applications for parallel algorithms, achieved a higher performance and scalability these applications. The programmable GPUs with their massively parallel architectures expanded the horizon of high performance computing by making it possible parallel algorithms run faster and with less energy consumption. The objective of this work is to prove and demonstrate the improved efficiency of GPUs as CPUs in parallel applications. For this, applications have been developed using CUDA and APARAPI to show the performance of the GPU as well as applications that require CPU performance to make the comparison. We have implemented a set of eight algorithms that use different techniques stress of both architectures. The test results were submitted to a review process regarding the correctness and runtime. Charts were developed in order to better analyze and describe the system behavior before different features, such as number of threads, number of processes, dimensions of arrays, etc. The main conclusion of this project was that the definition of the strategy is crucial to obtaining the lowest cost of time, where highly parallelizable applications running on a single instruction multiple data, may obtain a gain exponential performance using GPUs. Keywords: Parallel Processing, Heterogeneous Architecture, Accelerated Graphics, High Performance, CUDA, APARAPI, GPU, GPGPU.

9 8 LISTA DE SIGLAS API APARAPI APU ARM CMP CPU CPD CUDA FLOPS FPS GPU GPGPU ILP IT JVM PC PCI SDK SIMD SM SP TI TLP Application Programming Interface A PARallel API Accelerated Processing Unit Advanced RISC Machine Chip Level Multithreading Central Processing Unit Centro de Processamento de Dados Compute Unified Device Architecture Floating point Operations Per Second Frames Por Segundo Graphics Processing Unit General Purpose on Graphics Processing Units Instruction Level Parallelism Information Technology Java Virtual Machine Personal Computer Peripheral Component Interconnect Software Development Kit Single Instruction Multiple Data Streaming Multiprocessor Streaming Processors Tecnologia da Informação Thread Level Parallelism

10 9 LISTA DE IMAGENS Figura 1: Supercomputador TITAN Figura 2: Novo design SM Figura 3: Diferença de cores entre uma CPU e uma GPU Figura 4: Comparação entre chips CPU e GPU Figura 5: NVIDIA tesla M Figura 6: Desempenho NVIDIA Tesla Figura 7: Evolução Das GPUs Figura 8: NVIDIA gpu Roadmap Figura 9: Tabela De Especificações Figura 10: Arquitetura de uma APU Figura 11: Plataforma Java Figura 12: HelloWord Java Figura 13: Comparação de desempenho Figura 14: Modelo de Navier-Stokes Figura 15: Método de Lattice Boltzman Figura 16: Modelo de Programação CUDA Figura 17: Modelo de Memória CUDA Figura 18: Memórias CUDA Figura 19: Paralelismo Dinamico Figura 20: Mandelbrot Figura 21: OpenCL Figura 22: GTX Figura 23: Conjunto de Mandelbrot Figura 24: Simulação de Corpos

11 10 LISTA DE TABELAS Tabela 1: Unidades de Medida de Desempenho Tabela 2: Hardware Tabela 3: Detalhes da GPU Tabela 4: Software... 61

12 11 SUMÁRIO INTRODUÇÃO JUSTIFICATIVA OBJETIVO GERAL OBJETIVOS ESPECÍFICOS METODOLOGIA E PROCEDIMENTOS ORGANIZAÇÃO DO TRABALHO TRABALHOS RELACIONADOS COMPUTAÇÃO DE ALTO DESEMPENHO PROCESSAMENTO PARALELO ARQUITETURAS DE FLYNN SIMD MEDIDAS DE DESEMPENHO FLOPS STREAM PROCESSORS GREEN IT HARDWARE CPU GPU GPGPU Projeto Denver Evolução das Placas Gráficas NVIDIA APU COMPARAÇÃO SOFTWARE LINGUAGENS DE PROGRAMAÇÃO... 45

13 4.1.1 C/C Java DESENVOLVIMENTO PARA GPU CUDA CUDA APARAPI OpenCL AMBIENTE DE TESTES HARDWARE SOFTWARE Benchmarks O Conjunto de Mandelbrot Simulação de Corpos RESULTADOS CUDA Cálculo de Números Perfeitos Cálculo de Números Primos Multiplicação de Matrizes Conjunto de Mandelbrot Simulação de Corpos APARAPI Cálculo de Números Perfeitos Cálculo de Números Primos Multiplicação de Matrizes Conjunto de Mandelbrot Comparação entre as APIs Cálculo de Números Perfeitos Cálculo de Números Primos Multiplicação de Matrizes CONCLUSÃO REFERÊNCIAS BIBLIOGRAFICAS OBRAS CONSULTADAS ANEXOS

14 13 INTRODUÇÃO Maior velocidade e maior precisão são, e sempre serão proporcionados por cientistas e engenheiros da computação. Para alcançar essas metas, processadores single-core foram montados para chegar à "computação paralela". Este paralelismo recentemente se estendeu ao nível do chip, com o surgimento de arquiteturas multicore, que é, a grosso modo, a adição de mais núcleos em um único chip em ambas as unidades centrais de processamento (CPUs) e unidades de processamento gráfico (GPUs). O último e mais recente é um candidato possivelmente mais forte do que o anterior para resolver os problemas computacionalmente exigentes. Isto é devido ao fato de a capacidade de ponto flutuante computacional das GPUs torna-se geralmente 10 vezes mais elevado do que CPUs. Como resultado, a computação científica está se movendo rapidamente em direção ao paralelismo multi-core. Modelagem e simulação em ciência e engenharia nucleares dependem muito de poder computacional. Engenheiros nucleares se aproveitaram da paralelização para avançar teste e simulações de neutrônica, hidráulica térmica, materiais, física de plasma, fluídos, química quântica, física espacial, etc. Todos os sistemas de computação, de móveis a supercomputadores, estão se tornando computadores paralelos heterogêneos utilizando ambos os CPUs multicore e as GPUs multi-thread para maior eficiência de energia e taxa de computação. Enquanto a comunidade de computação está correndo para construir ferramentas e bibliotecas para facilitar a utilização destes sistemas heterogêneos de computação paralela, eficaz e utilização segura desses sistemas vai sempre exigir conhecimentos sobre as interfaces de programação de baixo nível nestes sistemas. A evolução do hardware tem sua teoria da evolução que é relativa às necessidades humanas e mais ainda as necessidades de softwares. Portanto partindo deste entendimento o hardware deve estar em uma constante transformação para que supra as necessidades dos softwares, onde o inverso também é valido, pois o software também deve atender as necessidades do hardware, sendo assim estas duas tecnologias devem andar paralelamente. Desse modo, para que tenhamos um hardware que atenda um software de alta complexidade computacional, se faz necessário que ele seja escalável e agregue um alto poder de processamento.

15 14 Está ficando cada vez mais difícil fazer com que os computadores funcionem com maior velocidade apenas aumentando a frequência do relógio(clock) por causa de problemas com a maior dissipação de calor e outros fatores, mas também principalmente respeitando a eficiência energética do equipamento, Em vez disso, projetistas estão buscando o paralelismo para conseguir grandes ganhos de velocidade aproveitando os milhares de núcleos de processamento disponíveis nos ambientes de supercomputação atuais. Primeiro foi o paralelismo em nível de instrução(ilp) e como exemplo temos o pipeline, depois o paralelismo em nível de threads(tlp), capaz de executar mais de uma thread (processo) simultaneamente e por fim surge o paralelismo em nível de chip que possibilita a execução simultânea de mais de um fluxo de instruções. O paralelismo é um paradigma que visa extrair o máximo desempenho possível durante a realização de uma tarefa, através da exploração das características de simultaneidade presentes na carga de trabalho e no ambiente em que se está trabalhando (EL-REWINI, 2005; ABD-EL-BARR, 2005). O paralelismo pode ser introduzido em muitos níveis diferentes, desde o muito baixo, onde os elementos de processamento são muito fortemente acoplados, até o muito alto, onde eles são fracamente acoplados, a seguir será abordado os 3 principais níveis de paralelismo conforme define Volpato (2011) em seu projeto de graduação. No nível baixo está o paralelismo no chip, no qual as atividades paralelas ocorrem em um único chip. Uma forma de paralelismo no chip é o paralelismo no nível de instrução, no qual uma instrução, ou uma sequência de instruções, emite múltiplas operações que podem ser executadas em paralelo por diferentes unidades funcionais. Uma segunda forma de paralelismo no chip é o multithreading, no qual uma CPU pode comutar como quiser entre múltiplos threads, instrução por instrução, criando um multiprocessador virtual. Uma terceira forma de paralelismo no chip é o multiprocessador de chip único(cmt), ou seja, dois ou mais núcleos são colocados no mesmo chip o que permite que eles executem operações simultaneamente. Em um nível acima encontramos os co-processadores, ou aceleradores, que normalmente são placas de expansão que agregam capacidade de processamento extra em alguma área especializada tal como processamento gráfico. Este será o

16 15 foco desta pesquisa, avaliando o quão benéfico se torna a utilização deste tipo de co-processamento. Em um próximo nível encontramos os multiprocessadores de memória compartilhada. Estes tipos de sistemas fazem uso de duas ou mais CPUs totalmente desenvolvidas que compartilham uma memória em comum. Nesta breve explanação sobre os tipos de paralelismo, é possível observar a flexibilidade da computação e o quão mutável ela é, onde quem quiser acompanhála não poderá prender-se a nada específico. Pensando nas arquiteturas para computação de alto desempenho, como o próprio nome sugere se entende que o foco é alto desempenho. Para isto, há muito tempo vem-se usando arquiteturas homogêneas, onde a unidade de processamento era exclusivamente o processador(cpu), mas com os avanços da tecnologia e a evolução das aceleradores gráficos, foi se pensando nelas como uma grande auxiliar ao processamento paralelo, o co-processamento, devido a sua escalabilidade e em muitos casos com maior poder de processamento. Assim surgiram as arquiteturas heterogêneas que fazem uso de CPUs, GPUs e as APUs, para realizarem o processamento das tarefas. A GPU (Graphics Processing Unit) é uma placa aceleradora de imagem otimizada para paralelismo e renderização de imagens. Devido a essa otimização, a GPU atinge picos de velocidade que supera qualquer CPU existente. Por exemplo, uma GPU NVIDIA Fermi pode ser cerca 250 vezes mais veloz que um Intel Core i7 utilizada de forma sequencial. Como exemplo, no TOP500, a classificação dos 500 computadores mais rápidos do mundo, onde vários dos computadores mais bem colocados já fazem uso desta arquitetura revolucionária, são 62 na 40ª lista. Em sua classificação, Michael J. Flynn( ), definiu que tais arquiteturas paralelas fazem uso da classe SIMD, onde se trabalha com uma instrução sobre múltiplos conjuntos de dados. Para que possamos usufruir de todo o poder do hardware que temos em mãos precisamos de algoritmos específicos. Estes algoritmos farão a divisão entre as tarefas da CPU e GPU ou da APU conforme a arquitetura utilizada. Utilizando uma GPU NVIDIA dispomos da API CUDA que requer programação em C. Recentemente chegou as mãos do desenvolvedores uma nova API de código aberto

17 16 disponibilizada pela AMD, a APARAPI, ele nada mais é do que uma biblioteca Java para paralelismo com GPUs e APUs. É nesta base que se dará esta pesquisa focando exclusivamente a esta arquitetura heterogênea, mais especificamente de como fazer total uso das aceleradores gráficos. 1.1 JUSTIFICATIVA O desempenho de processamento paralelo de uma GPU é relativamente maior comparado a CPU devido à sua arquitetura massivamente paralela, logo, já está otimizada para atividades que demandem de processamento paralelo. Holz (2010), em seu trabalho de conclusão de curso, realizou testes sobre uma plataforma com uma GPU e mesmo com uma arquitetura relativamente inferior, conseguiu um ganho de performance de 78% nos algoritmos processados pela GPU. Há relatos de testes onde se obteve ganhos muito maiores, claro que não na mesma arquitetura. Jack Dongarra, especialista em supercomputadores e professor da Universidade do Tennessee, em seu relato sobre estas arquiteturas heterogêneas, disse: As GPUs evoluíram ao ponto de permitirem que muitos aplicativos do mundo real sejam facilmente implementados e executados de forma significativamente mais rápida do que em sistemas com vários núcleos. As futuras arquiteturas de computação serão sistemas híbridos, com GPUs de núcleo paralelo operando em conjunto com CPUs de vários núcleos (DONGARRA). Por se tratar de um processador vetorial, onde geralmente existe um número expressivo de núcleos se comparando com as CPUs convencionais, claro que são processadores de arquiteturas diferentes, mas ela pode facilmente substituir uma quantidade significativa de CPUs. Uma arquitetura paralela usando GPU tem um melhor aproveitamento de memória pelo fato de cada GPU possuir sua própria memória, mas o que não a impede de usar a memória principal do sistema. GPUs possuem maior desempenho em operações com ponto flutuante, não apenas com ponto flutuante e sim também nas operações gerais que envolvem

18 17 cálculos numéricos(vetoriais), assim, possibilitando execução em tempo polinomial de algoritmos relativamente custosos desde que tenham pouca dependência de dados. Em 2010 subiu ao primeiro lugar do TOP500 um novo supercomputador, o Tianhe-1A produzido pela empresa NUDT, ele é composto por GPUs NVIDIA e CPUs Xeon, totalizava cores oque gerava um consumo de 4 megawatts. A NVIDIA afirma que se o mesmo número de cores fosse atingido utilizando apenas CPUs, o consumo dele ultrapassaria os 12 megawatts e que com o processamento paralelo fornecido pelas GPUs ele consegue ser três vezes mais eficiente e com um consumo três vezes menor. Segundo a NVIDIA a versão mais recente da CUDA Toolkit (4.1) oferece diversos novos recursos e melhorias que visam ser explorados. A AMD, não querendo ficar atrás, também lançou a APARAPI para o uso de paralelismo em aplicações Java e promete aos desenvolvedores um código mais simplista e fácil de usar. Somente os testes práticos dirão se a mais nova concorrente da CUDA tem capacidade o suficiente para atuar entre as grandes nesta área. Arquiteturas heterogêneas têm maior custo benefício e melhor aproveitamento de espaço interno físico porque podem ser usadas diversas GPUs em uma mesma placa-mãe. Levando em conta o fato de que é possível usar diversas GPUs sobre uma mesma placa-mãe, somamos o número de núcleos de todas elas mais os núcleos da(s) CPU(s) locais, logo, teremos um número 'x' de núcleos locais para os quais são possíveis atribuir tarefas, onde estes estão interligados por barramentos de alta velocidade. Porém não seria o mesmo se usássemos apenas CPUs, já que para atingir este mesmo número de núcleos teríamos que interliga-las através de um barramento de rede o qual não atingiria a mesma velocidade. Além de tudo isso ainda possuímos o fato de que o mercado atual, principalmente o de computadores portáteis, está apostando nas APUs, elas são processadores híbridos que contém em si uma CPU e uma GPU. 1.2 OBJETIVO GERAL Mostrar que arquiteturas heterogêneas podem atingir maior performance comparadas a arquiteturas convencionais ou tradicionais.

19 OBJETIVOS ESPECÍFICOS Usar a arquitetura heterogênea de co-processamento com uma GPU como co-processador. Esta prática deverá reduzir a carga da CPU e transferi-la para a GPU na execução dos algoritmos de testes. Executar algoritmos e benchmarks, que demandam de um alto poder computacional, paralelamente processados, exibindo, através dos resultados, que o co-processamento com GPU é uma ótima alternativa ao processamento paralelo, pois espera-se reduzir o tempo de execução dos mesmos. Realizar os testes sobre a última versão da API de desenvolvimento CUDA da NVIDIA, que apresenta diversas melhorias e novos recursos. Comparar a performance entre a última versão da CUDA e da APARAPI. Mostrar que a arquitetura heterogênea juntamente com o ganho de desempenho também proporciona um melhor aproveitamento de espaço físico estrutural, ou seja, mais performance em um menor espaço. Em segundo plano existem alguns objetivos indiretos que podem ser alcançados com o uso de uma arquitetura heterogênea, como por exemplo algoritmos hoje ainda não solucionáveis em um espaço de tempo relativamente baixo. 1.4 METODOLOGIA E PROCEDIMENTOS Através de pesquisas bibliográficas, foram coletar dados sobre as arquiteturas heterogêneas e homogêneas que serviram de base para a realização do projeto. De base desta pesquisa, o próximo passo foi montar o hardware necessário, sobre o qual foram realizados os testes de performance para a coleta de dados. Com o hardware funcionando devidamente, foi instalado o ambiente de desenvolvimento C, JAVA e CUDA. Implantada a arquitetura, está tudo pronto para começar os testes práticos de desempenho da arquitetura com algoritmos relativamente custosos que

20 19 causaram um stress na CPU e na GPU elevando ao máximo o processamento de ambas. Os dados resultantes dos testes efetuados foram registrados e analisados minuciosamente, pois serviram de base para comparar as duas arquiteturas. Os mesmos testes foram utilizados com a mais nova alternativa ao processamento em GPU, a APARAPI. Os dados dos testes foram coletados de ambas APIs para fazer uma análise comparativa. Por fim, a proposta é apresentar os resultados obtidos nesta pesquisa em eventos específicos da área. 1.5 ORGANIZAÇÃO DO TRABALHO Esta pesquisa está subdividida em 5 capítulos, além do capítulo introdutório, que melhor descrevem a tecnologia e os recursos utilizados. O capítulo 2, Computação de Alto Desempenho, descreve o mundo da supercomputação, as supermáquinas que são utilizadas nos grandes CPDs para pesquisas e simulações, suas demandas e suas limitações. Seguindo para o capítulo 3, o tema tratado passa a ser o HARDWARE, o equipamento físico aqui é abordado como um fator decisivo para se atingir os resultados esperados. São detalhadas as caraterísticas das CPUs e das GPUs, com o intuito de demonstrar o que a GPU oferece de melhor em termos de computação paralela. Em contra partida temos o SOFTWARE, abordado no capítulo 4. Esta seção trata do software como uma ferramenta lógica, pois na verdade ele é uma API em si que provê meios de se programar o hardware. Não ficando apenas na teoria, a pesquisa põe em prática a teoria estudada, almejando comprovar a eficiência da estrutura. Para que isto seja possível, foram implantados os ambientes de hardware e software descritos no capítulo 5, Ambiente de Testes. Por fim, sobre o ambiente implantado realizou-se diversos testes com algoritmos de benchmark, onde os resultados coletados encontram-se reunidos no capítulo 6, Resultados.

21 TRABALHOS RELACIONADOS Diversos trabalhos e pesquisas já foram feitas nesta área, alguns deles mais especializados com maiores resultados e outros mais abrangentes, mas todos com o mesmo intuito de mostrar os benefícios das GPUs. Vale destacar alguns destes trabalhos, como o do Lucas Holz de 2010, aplicado no contexto da irrigação e de absorção da água pelo solo, onde ele conseguiu uma performance 5 vezes maior apesar de ter utilizado uma GPU de notebook. Com a utilização desta tecnologia e do grande poder de processamento paralelo das GPUs conseguiu-se resolver o algoritmo em menores tempos de execução, aumentando assim a precisão dos resultados, utilizando malhas compostas de um maior número de pontos(holz, 2005). Outro trabalho como o de Sérgio Ricardo Dos Santos Moraes também merece uma atenção especial, devido aos ótimos resultados obtidos e ao uso de múltiplas GPUs. Reescrever um código sequencial em paralelo nem sempre é possível e fácil; o problema tem de ser paralelizável. O objeto do presente trabalho problema do transporte de nêutron resolvido por simulação através do método de Monte Carlo teve uma excelente performance em relação à solução sequencial. Tomando-se a água como exemplo, a solução paralela para um número de histórias de nêutrons igual a 1010 foi mais de 300 vezes mais rápida para uma GPU e mais de vezes para oito GPUs, em relação à solução sequencial. As diferenças encontradas nas soluções de uma para duas GPUs se mantiveram também para múltiplas GPUs (MORAES, 2012). Como é possível notar, ambos trabalhos focam em uso de algoritmos de paralelismo, mas também reforçam que o ganho de performance só é possível quando o contexto do problema possibilita a paralelização da tarefa.

22 21 2 COMPUTAÇÃO DE ALTO DESEMPENHO Supercomputação é um serviço de combinação dos recursos computacionais disponíveis para atingir o mais alto nível de desempenho em computação. Os primeiros supercomputadores foram criados na década de 1960 pelo engenheiro Seymour Cray para a extinta Control Data Corporation. Seymour Cray posteriormente fundou uma empresa que leva o seu nome, a Cray Research, e dominou o mercado da supercomputação durante cerca de 25 anos, até o início dos anos de Os Cray ainda são estrelas no mundo da supercomputação, mas hoje a concorrência é grande, com empresas como HP, Oracle, IBM, entre outras. (GEEK.COM.BR, 2011). Figura 1: Supercomputador TITAN Fonte: Um supercomputador, como na figura 1, é um computador cujo desempenho é extremamente alto. A velocidade de processamento destas máquinas supera em milhões de vezes a de um computador doméstico. Ele também precisa ter uma capacidade de memória absurdamente grande para dar conta da enorme quantidade de dados apresentados na entrada e depois produzidos na saída. A maioria dos supercomputadores usa um tipo de processamento de informação chamado de

23 22 processamento paralelo, o que quer dizer que pode calcular várias coisas ao mesmo tempo. Embora essa capacidade de processamento possa parecer fútil, os supercomputadores são bastante úteis. Cálculos e simulações científicas que poderiam levar anos podem ser feitas em questão de dias ou mesmo horas. Por conta disso, os supercomputadores têm lugar cativo em centros de pesquisa, sejam elas aeroespaciais, militares, de física, química e medicina. Titan, o supercomputador que está ilustrado na figura 1, deverá se tornar o mais rápido do mundo, construído pelo Laboratório Nacional de Oak Ridge, localizado nos Estados Unidos, seu desempenho de 20 petaflops sendo aproximadamente 90% oriundos dos aceleradores da Tesla K20. O TITAN é a evolução do antigo JAGUAR que possui 2,3 petaflops, ele é 10 vezes mais rápido e cinco vezes mais eficiente do ponto de vista energético do que seu predecessor. Caso o Oak Ridge tivesse atualizado o JAGUAR através da simples expansão de sua arquitetura baseada em CPU, o sistema teria mais de quatro vezes seu tamanho atual e consumiria mais de 30 megawatts de energia (SUPERCOMPUTADOR Titan...,2012). As previsões de tempo hoje são muito mais precisas do que há trinta ou mesmo vinte anos atrás. Isso ocorre porque os institutos de meteorologia e clima como o INPE do Brasil, não mais tentam adivinhar o que vai acontecer pela configuração prévia da atmosfera. Em vez disso, um supercomputador simula, baseado nas condições atuais e nas tendências anotadas, como o clima realmente estará. A quantidade de cálculos por segundo para essas simulações é muito alta, e deve acontecer em poucas horas, caso contrário, não seria possível anunciar a tempo um alerta de furação ou de maremoto, por exemplo. Da mesma forma, apenas o imenso poder dos supercomputadores tornam práticas e possíveis as pesquisas científicas e simulações de armas nucleares, modelagem química e molecular e projeto de aeronaves e carros de corrida. Com os supercomputadores cada vez mais poderosos, no caso da previsão do tempo, é possível fazê-la com uma maior precisão.

24 PROCESSAMENTO PARALELO O grande segredo dos supercomputadores é o seu alto poder de processamento. Além de muita memória, eles possuem inúmeros processadores que operam juntos. O processamento paralelo possibilita ao computador fazer várias tarefas simultaneamente, mas isto só é possível se a arquitetura possuir mais de um processador que realize as tarefas em paralelo. Para que todos esses processadores trabalhem em cooperação, é necessário que, em primeiro lugar, tenham algum tipo de comunicação entre si. Essa comunicação pode ser direta como se fosse um computador só contendo todos os processadores ou através de uma conexão de rede entre vários computadores. Mas não basta se interligar computadores para ter um supercomputador. É preciso que o sistema operacional em cada um deles seja preparado para isso, e ainda que haja um software central para distribuir as tarefas entre todos eles. Ou seja, é preciso ter um software preparado para operar sobre uma arquitetura de multiprocessadores. (GEEK, 2011). Um processo é definido como um programa em execução. Todo processo possui um fluxo de execução. Por sua vez, uma thread nada mais é do que um fluxo de execução. Na maior parte das vezes, cada processo é formado por um conjunto de recursos mais uma única thread e é justamente este paradigma que deve ser quebrado para que o software usufrua de todo poder computacional da arquitetura, acrescentando mais threads para dividir o processamento em pequenas partes, as quais serão processadas pelos diversos processadores. O paralelismo pode ser implementado em diversos níveis, são eles: Paralelismo em nível de instrução(ilp) - é um conjunto de técnicas de desenvolvimento de processadores e compiladores que aumentam o desempenho das aplicações, fazendo com que operações sejam executadas em paralelo. No nível de instruções o paralelismo é explorado por arquiteturas de processadores capazes de executar instruções ou operar dados em paralelo, como o pipeline de instruções. (YAMASHIRO E CORREA). Paralelismo em nível de thread(tlp) é a utilização de várias linhas de execução simultâneas (multithreading). Com ele é possível ter várias threads compartilhando, de forma intercalada, as mesmas unidades funcionais de um processador, onde o processador duplica o estado independente de cada thread. (MOREIRA et al).

25 24 Paralelismo em nível de chip(cmp) - o processador possibilita a execução simultânea de mais de um fluxo de instruções, que é o caso dos processadores multicore que possuem 2 ou mais núcleos de processamento, lhes atribuindo a capacidade de executarem blocos de código simultaneamente. Logo, em teoria, quanto mais núcleos um processador tiver, mais tarefas em paralelo ele será capaz de executar. Por outro lado, este nível não acelera a execução quando possuímos apenas 1 tarefa a processar. A utilização do paralelismo nos projetos de arquitetura de computadores tem possibilitado um aumento significativo na velocidade de processamento devido à execução simultânea de diversas tarefas. Contudo, os aspectos relacionados ao software paralelo e à paralelização dos programas são essenciais para o desempenho do sistema paralelo. (FERLIN, 2011). 2.2 ARQUITETURAS DE FLYNN Segundo a taxonomia de Michael J. Flynn(Taxonomia de Flynn), introduzida entre 1966 a 197, onde foi definido um dos primeiros sistemas de classificação para computadores e programas paralelos e sequenciais. Em sua classificação ele separou as arquiteturas de computadores em 4 classes, que são elas: SISD (Single Instruction Single Data): Fluxo único de instruções sobre um único conjunto de dados. SIMD (Single Instruction Multiple Data): Fluxo único de instruções em múltiplos conjuntos de dados. MISD (Multiple Instruction Single Data): Fluxo múltiplo de instruções em um único conjunto de dados. MIMD (Multiple Instruction Multiple Data): Fluxo múltiplo de instruções sobre múltiplos conjuntos de dados. (TANENBAUM, 2001) SIMD A sigla SIMD (Single Instruction, Multiple Data), que, em português, quer dizer Uma Instrução, Múltiplos Dados, descreve um método de operação de computadores com várias unidades de processamento em paralelo. Neste método, a

26 25 mesma instrução é aplicada simultaneamente a diversos dados para produzir mais resultados. Computadores SIMD são utilizados para a resolução de problemas computacionalmente intensivos da área científica e de engenharia, em que existem estruturas de dados regulares como vetores e matrizes. Os mesmos também estão em uma categoria importante, devido a fatores como: simplicidade de conceitos e programação, regularidade da estrutura, facilidade de escalabilidade em tamanho e desempenho, aplicação direta em uma série de aplicações que requerem paralelismo para obter o desempenho necessário. 2.3 MEDIDAS DE DESEMPENHO O ponto principal da construção de um computador paralelo é fazer com que ele execute mais rapidamente do que uma máquina com um único processador. Se ele não cumprir esse objetivo, não vale a pena tê-lo. Além disso, ele deve cumprir o objetivo de maneira efetiva em relação ao custo. Uma máquina que é duas vezes mais rápida do que um uniprocessador a 50 vezes o custo muito provavelmente não será um sucesso de vendas. O modo mais direto de adicionar desempenho é adicionar Unidades de Processamento ao sistema. Contudo, essa adição deve ser feita de um modo tal que evite a criação de gargalos. Um sistema no qual se pode adicionar mais Unidades de Processamento e obter mais capacidade de computação correspondente é denominado escalável. Porém o mais conhecido é o aumento da frequência do relógio(clock), esta prática produz resultados consideráveis no ganho de desempenho, porém tem algumas implicações onde se destaca principalmente a grande dissipação de calor gerado pela unidade de processamento, calor o qual pode danificar o hardware se não controlado. Sendo este difícil de controlar, logo, parte-se para outras alternativas. Vale mencionar que, na teoria, quanto mais núcleos tem uma CPU, maior o número de transístores e, por consequência, melhor sua performance. Mas, na prática, isto não acontece pelo principal motivo: o software está anos atrás do hardware. Uma CPU com 4 núcleos pode perder em performance nos games pelo fato do software ser otimizados para 2 núcleos. A programação em paralelo para 4 núcleos significa aumentar o problema, sem contar na otimização dos compiladores para fazer uso do paralelismo (CUDA PROGRAME..., 2009).

27 26 A definição de alto desempenho em computação é característica fundamental de um Supercomputador. Em 2004 foi dada pela IBM a seguinte definição a respeito dos supercomputadores: "Supercomputadores são máquinas construídas sob encomenda, com capacidade de processamento grande o suficiente para resolver complexos problemas referentes às aplicações para as quais foram desenvolvidos". Os supercomputadores são construídos para obter alto desempenho, são máquinas que possuem alto poder de processamento e sua arquitetura totalmente voltada para a obtenção de resultados específicos ao tipo de tarefa a ser realizada. Nesta categoria de computadores encontramos: Processadores vetoriais paralelos (PVP); Multiprocessadores simétricos (SMP); Máquinas massivamente paralelas (MPP); Máquinas com memória compartilhada distribuída (DSM); Redes de estações de trabalho (NOW); E as máquinas agregadas (COW/Cluster). Estas super máquinas, por assim dizer, se fazem cada vez mais necessárias, principalmente pelos constantes avanços tecnológicos e do mundo da pesquisa, onde é indispensável um cenário computacional para que realize as tarefas que demandem de um maior poder computacional. Mas não basta apenas ter um supercomputador, pois o que se espera destas máquinas é um altíssimo poder de processamento, onde são capazes de serem realizados milhares de cálculos de ponto flutuante por segundo, desempenho o qual não costumamos ver em qualquer computador, principalmente naqueles que usamos em casa, os conhecidos PCs. O poder de processamento dos supercomputadores sempre se deu ao grande número de processadores empregados na arquitetura. Tal metodologia já fez muitas pessoas pensarem, e movidos pelo desejo de um desempenho sempre maior, chegaram a uma simples palavra, GPU. Existem alguns supercomputadores com desempenho espantoso, mas costumam ocupar salas inteiras de grandes laboratórios, além de representarem investimentos milionários.

28 27 Em 2009, a equipe do grupo de pesquisa ASTRA, do Vision Lab, na Universidade da Antuérpia, na Bélgica, anunciou a criação do FASTRA II, um supercomputador de mesa, equipado com um processador Intel Core i7 e nada menos que sete placas de vídeo NVIDIA. Como resultado, o equipamento atinge um desempenho de 12 teraflops (UOL, 2009). O hardware foi montado dentro de um gabinete de PC comum e suas especificações incluem um processador Intel Core i7 920, 12 GB de RAM, 1 TB de espaço em disco, uma placa de vídeo GeForce GTX 275 e seis "dual GPU" GeForce GTX 295, totalizando 13 GPUs. Tudo isso ligado a uma placa-mãe ASUS P6T7 WS em um gabinete Lian-Li PC-P80. (UOL, 2009). Para aguentar todo este hardware, os cuidados com a energia não ficaram de fora. O supercomputador conta com quatro fontes de alimentação. Além disso, o sistema ainda precisou de uma BIOS especial, desenvolvida em colaboração com a ASUS. (UOL, 2009). Para quem pensa que o supercomputador custou um valor extraordinário, está enganado, o valor total dele não ultrapassou os R$18 mil e todo design da arquitetura do projeto é aberto, ou seja, quem dispor deste valor pode recriar o projeto em casa, sem contar que a equipe fornece todo o esquema do hardware e a cópia do software FLOPS FLOPS é um acrônimo na computação que significa FLoating-point Operations Per Second, que, em português, quer dizer operações de ponto flutuante por segundo. Esta é uma medida de desempenho que indica o número de operações e cálculos de ponto flutuante que um computador é capaz de executar por segundo, mais especificamente no campo de cálculos científicos, que fazem grande uso de cálculos com ponto flutuante. Por exemplo, um teraflop corresponde a um trilhão de operações por segundo, hoje já estamos ultrapassando esta marca e chegando a escala de petaflops, instruções por segundo. Mais unidades de medidas de FLOPS estão listadas na tabela 1. Tabela 1: Unidades de Medida de Desempenho Computador Desempenho

29 28 Nome FLOPS megaflop 10 5 gigaflop 10 9 teraflop 10¹² petaflop exaflop zettaflop yottaflop STREAM PROCESSORS Stream Processors é o resultado da unificação de duas arquiteturas, o Pixel Shader e o Vertex Shader. Antigamente os processos de Pixel Shader e Vertex Shader eram feito de modo separado. O Pipeline ou processava somente Pixel Shader, ou somente Vertex Shader. As unidades de Vertex só processavam vértices, as de pixel apenas aplicavam shaders em pixels. O problema deste modelo é que as aplicações podem exigir mais operações de Pixel Shader do que de Vertex Shader e/ou vice-versa, logo, ocorre ociosidade do conjunto para o processo das instruções. (Tudo sobre Arquitetura..., 2009). Com o surgimento dos Stream Processors este conceito mudou, pois em vez de fazer o processamento separadamente, ele unificou em paralelo o tratamento dos vértices e pixels, ou seja, um stream processor pode então processar tanto Pixel Shader como também Vertex Shader. Basicamente, cada uma destas unidades age como um pequeno processador de cálculos de ponto flutuante independente, que pode ser programado para executar praticamente qualquer tipo de operação. Isso abriu as portas para o uso da GPU como processador auxiliar. (MORIMOTO, 2010). 2.5 GREEN IT Cada vez mais, empresas de todo o mundo estão se preocupando com o desenvolvimento sustentável da sociedade e não a enxergam como uma boa ação, mas como obrigação que é cobrada pelos consumidores de seus produtos e, na

30 29 computação, isso não é diferente. A área da tecnologia da informação tem uma grande preocupação com a sustentabilidade, o reaproveitamento e economia energética e estas ações são conhecidas como Green Computing, Green IT (ou TI Verde no Brasil). O termo Green IT começou a ser usado em 1992, depois que a Agência de Proteção Ambiental dos Estados Unidos desenvolveu o projeto Energy Star com o objetivo de reconhecer a eficiência energética de diversas tecnologias. Green IT significa trabalhar o que produzimos na computação em questão de dispositivos, hardwares e até mesmo softwares de modo que eles consigam ser reaproveitados, remanejados e reciclados facilmente. Green IT abrange desde se produzir equipamentos com uma melhor eficiência energética ao desenvolvimento de softwares mais eficientes, mas que exijam menos de seu hardware. Se os níveis atuais de consumo forem mantidos, os gastos com eletricidade podem chegar a 50% dos orçamentos de tecnologia de uma grande empresa, segundo estima a consultoria Gartner Group. Não é por acaso que um dos principais motores da inovação no mundo da computação é a revolução verde. A Gartner calcula que o desperdício de energia nessas instalações possa chegar a 60%, e é justamente esse ponto que tem sido alvo da atenção da indústria tecnológica. Desde o início desta década, com a expansão da internet e a crescente digitalização dos negócios, o número de servidores em uso no mundo passou de 6 milhões para 28 milhões. A maioria deles fica em grandes data centers, que podem ocupar áreas de até metros quadrados e consomem até 50 vezes mais energia elétrica do que um escritório tradicional. (Teixeira, 2007). O consumo energético é um dos principais desafios para a TI a nível empresarial. O consumo de energia dos datacenters representa 1,5% de todo o consumo de eletricidade nos EUA. Essas empresas procuram cada vez mais soluções que lhes permitam reduzir os custos energéticos e o consumo, ao mesmo tempo em que mantêm os níveis de serviço e aumentam a capacidade de resposta para que o negócio não pare. As CPUs são os componentes que mais consomem energia em servidores, portanto, os modelos de CPU de energia eficientes com uma gestão eficaz de energia podem ajudar muito na eficiência.

31 30 A nova arquitetura Kepler tem como objetivo não só criar a GPU mais rápida do mundo, mas também a GPU com maior desempenho e eficiência energética. Sua fabricação em 28nm é um dos importantes fatores pelo baixo consumo da nova arquitetura sem deixar de lado a alta performance. A economia de energia é algo que realmente impressiona na Kepler. Comparada à antecessora, a energia ativa foi reduzida em 15%, e o desperdício em 50%, o que resultou em uma melhora global de 35%. (LEPILOV E ZABELIN, 2012). O novo design do SM (Streaming Multiprocessor) que recebeu o nome de "SMX" foi especialmente redesenhado para obter a maior eficiência em performance por Watt, oferecendo 3x mais performance por Watt que sua antecessora, assim como demonstra a figura 2. Figura 2: Novo design SM. Fonte: MORGAN, 2012 Estes novos avanços da tecnologia sobre as GPUs comprovam sua grande eficiência aliada ao baixo consumo de energia, geralmente isto também está associado a menor frequência de clock que elas possuem, porem o grande número de núcleos compensa esta perda e mais, até supera as CPUs no poder de processamento em certas operações. Como prova disso, temos o novo supercomputador da Petrobras que mudou seu paradigma e partiu para uma nova tecnologia. Este novo supercomputador usa nada menos que 180 GPUs e em geral

32 31 ele é muito mais rápido que o anterior e consome 90% menos energia, sem contar a falta de espaço que estavam sofrendo e também o supercomputador TITAN, que possui 10 vezes mais desempenho e 5 vezes mais eficiência energética que seu predecessor JAGUAR.

33 32 3 HARDWARE O hardware é um dos principais temas abordados por este trabalho, por se tratar da peça fundamental e responsável pelo ganho de desempenho proposto. Portanto, este capítulo aborda as caraterísticas e peculiaridades de ambas arquiteturas estudadas. 3.1 CPU A CPU (Unidade Central de Processamento), ou então processador como é mais conhecido pela comunidade em geral, é responsável por fazer a maior parte do processamento dos dados do computador e por isso é peça fundamental dos computadores. Por esses e outros fatores ele é considerado o componente mais complexo e frequentemente o mais caro de um computador. (MORIMOTO, 2007). Em 1965, Gordon Moore, um dos fundadores da Intel, afirmou que o número de transistores em um chip dobraria, sem custo adicional, a cada 18 meses. Tal afirmação ficou conhecida como a Lei de Moore, a qual foi válida durante anos, principalmente no final da década de 90. (ARRUDA, 2011). Conforme a tecnologia dos processadores foi evoluindo, o tamanho de seus transistores foi diminuindo de forma significativa. Porem, após o lançamento do Pentium 4, eles já estavam tão pequenos e numerosos que se tornou muito difícil aumentar o clock por limitações físicas, principalmente pelo superaquecimento gerado. (ARRUDA, 2011). A principal solução para esse problema veio com o uso de mais de um núcleo(core) ao mesmo tempo, através da tecnologia multicore. Assim, cada núcleo não precisa trabalhar numa frequência tão alta. Um processador dual-core de 1,5 GHz, por exemplo, poderia ter um desempenho semelhante a uma CPU de núcleo único de 3 GHz se o sistema de escalonamento fosse mais eficiente. Mas não parou por aí, a tecnologia continuou expandindo e hoje temos processadores com diversos núcleos em um único chip. Muito embora esta não fosse a primeira tecnologia de processamento paralelo em nível de hardware, ela causou uma verdadeira revolução no paralelismo. Devido a este avanço temos hoje supercomputadores com mais de um milhão de

34 33 núcleos de processamento, mas não necessariamente o mesmo número de processadores, oque seria inviável. Lançando-se então para o paralelismo em nível de hardware com núcleos de processamento diversos e em larga escala, temos as GPUs. 3.2 GPU A própria NVIDIA define Unidade de Processamento Gráfico (GPU) como: Processadores massivamente paralelos. Você pode pensar na GPU como blocos de vários pequenos processadores trabalhando em paralelo, como pode ser observado na figura 3. Figura 3: Diferença de cores entre uma CPU e uma GPU. Fonte: CAVERNADATI, 2011 Usadas, normalmente para cálculos gráficos, operações geométricas e operações de ponto flutuante, ou seja, processamento gráfico e jogos, em PCs, estações de trabalho, consoles de jogos. Mas somente a partir das séries 8, Tesla e Quadro da NVIDIA, e com a introdução da CUDA, as GPUs se tornaram programáveis, sendo capazes de executar aplicativos comuns e, com isso, através da modificação de algumas aplicações para algoritmos paralelos, conseguiram uma maior performance e escalabilidade dessas aplicações, resultando então em um alto poder de processamento designado principalmente a computadores de grande porte, ou seja, supercomputadores.

35 A filosofia do design das GPUs são significativamente diferentes, já que as placas de vídeo devem ser capazes de executar um número massivo de operações de ponto flutuante por frames de vídeo. Para isto, esses hardwares executam um número muito grande de threads simultanemante, enquanto um outro grande número de threads aguarda a latência de memória, minimizando assim o controle lógico de execução de tarefas. Ainda nessa arquitetura, pequenos cache de memória são utilizados para auxiliar o controle de memória, evitando que diferentes threads acessem várias vezes a memória DRAM. Consequentemente, mais áreas de chips são utilizadas para operações de ponto flutuante. (SANTOS, 2011). 34 Tudo isso se deu devido ao alto custo e esforço de desenvolvimento envolvidos na programação das GPUs, pois o hardware não era flexível e não se adaptava facilmente a evolução de novos algoritmos. Com o objetivo de atender a esta demanda por flexibilidade, surge a motivação para o uso de Stream Processors programáveis e dos Pixel Shaders. O modelo para computação com GPU é baseado em uma CPU e uma GPU juntas em um modelo de computação heterogêneo co-processamento. A parte sequencial do aplicativo é executado na CPU e na parte de computação intensiva é acelerada pela GPU. Do ponto de vista do usuário, o aplicativo apenas corre mais rápido, porque ele está usando a grande quantidade de SPs da GPU para aumentar o desempenho. Esta forma de uso das GPUs para propósitos gerais é chamada de GPGPU (General Purpose Computation on Graphics Processing Units). Desse modo, como a GPU é um processador vetorial massivamente paralelo onde é executada uma instrução em múltiplos conjuntos de dados, faz ela uso da classificação de Flynn, SIMD. Na figura 4 é possível observar uma comparação entre um chip de CPU e GPU, os núcleos ou cores os quais são tão mencionados, aqui estão ilustrados em quadrados verdes.

36 35 Figura 4: Comparação entre chips CPU e GPU. Fonte: IXBTLABS, 2008 No ano passado a Intel apresentou o seu Knights Corner, um coprocessador que permite alcançar a marca de 1 teraflops - 1 trilhão de operações de ponto flutuante por segundo. O chip não é um processador comum, é um coprocessador, cuja função é tirar do processador a incumbência de realizar os cálculos matemáticos mais intensivos. Em nota a Intel também publicou que este novo chip parece ser o primeiro a fazer frente às GPUs, os processadores gráficos da NVIDIA, que estão dominando o mercado dos chamados supercomputadores de baixo custo. O Knights Corner tem nada menos do que 50 núcleos em um único chip e, segundo a empresa, já incorpora a especificação PCI Express 3.0, que eleva a transferência de dados para 32 gigabytes por segundo. (INTEL, 2011) GPGPU GPGPU significa computação de proposito geral em unidades de processamento gráfico, também conhecida como computação em GPU. Uma vez projetadas especialmente para computação gráfica e difíceis de programar, as GPUs de hoje são processadores paralelos de uso geral com suporte para interfaces de programação e linguagens padrão da indústria. (GPGPU.ORG). Paralelismo dinâmico em GPUs Kepler, dinamicamente gera novas threads, adaptando-se os dados sem voltar para a CPU, simplificando e acelerando programação em GPU e acelerando um conjunto amplo de algoritmos populares. Uma plataforma multi-gpu representada por uma ou mais GPUs é capaz de realizar a computação heterogênea, aproveitando a capacidade de computação paralela dos múltiplos núcleos das GPUs para fornecer um aumento muito grande no desempenho com a complexidade de programação mínima. Enquanto aumenta

37 36 muito a capacidade funcional, a plataforma GPGPU também oferece o desempenho com tamanho muito menor, peso e potência. Isso resulta em economias significativas no custo, risco e tempo de colocação no mercado. (GE-IP.COM). A próxima geração de aceleradores gráficos de proposito geral está prestes a bater o mercado e mostram um novo foco em consumo de energia. Se é medido como GFLOPS / Watt ou picojoules por instrução, e se a tecnologia está sendo aplicada a bateria óculos de visão noturna, grandes problemas exascale, a quantidade de energia consumida e a quantidade de calor a ser rejeitado é cada vez mais importante. A mudança de ênfase dos fornecedores de GPU reflete isso, e permitirá novas aplicações em ambas as extremidades do espectro do tamanho do sistema. (GE-IP.COM). Mike Houston da Universidade de Stanford abordou em seu trabalho o que aplicativos ideais para operarem com GPGPU devem ter: Grandes conjuntos de dados. Alto Paralelismo. Dependências mínimas entre elementos de dados. Intensidade aritmética alta. Muito trabalho para fazer, sem intervenção da CPU. Arnaldo Tavares, executivo responsável pela linha Tesla da NVIDIA na América do Sul, em uma palestra NVIDIA sobre processamento paralelo em GPUs na arquitetura Fermi, fez uma breve explicação sobre a GPU TESLA: Tesla, são unidades de processamento gráfico (GPUs) da NVIDIA criadas especialmente para supercomputadores que rodam em alta performance e que necessitam de precisão extrema em seus resultados. Centros de pesquisas (medicina, biomecânica, astronomia), setor petrolífero e entidades financeiras, são instituições que necessitam da tecnologia para melhorarem o desempenho de seus trabalhos. (TAVARES, 2011).

38 37 Figura 5: NVIDIA TESLA M2090. Fonte: As GPUs são tão potentes por possuírem maior número de transistores para processamento que para caching de dados e controle de fluxo. Basicamente, a diferença fundamental entre as CPUs e as GPUs é o fato de que as CPUs são otimizadas para cálculos sequenciais, executando aplicativos diversos, enquanto as GPUs são otimizadas para cálculos massivamente paralelos, processando gráficos 3D. Os testes desta pesquisa foram realizados sobre uma NVIDIA GTX 465, a qual é otimizada para aplicações 3D. A linha de GPUs Tesla da NVIDIA é uma linha otimizada para GPGPU, estas GPUs são utilizadas principalmente em grandes servidores e supercomputadores. Esta linha possui um desempenho superior aos outros modelos, conforme a figura 6 publicada pela NVIDIA:

39 38 Figura 6: Desempenho NVIDIA Tesla. Fonte: Projeto Denver O Projeto Denver é o codinome de uma iniciativa da NVIDIA que apresenta uma CPU NVIDIA executando um conjunto de instruções ARM, que será totalmente integrada no mesmo chip como a GPU NVIDIA. O Projeto Denver vai inaugurar uma nova era para a computação, alargando a gama de desempenho da arquitetura de instruções ARM, permitindo que a arquitetura ARM cubra uma maior parte do espaço da computação. Acoplada a uma GPU NVIDIA, que irá fornecer a plataforma de computação heterogênea do futuro, combinando uma arquitetura padrão com desempenho impressionante e eficiência energética. ARM já é a arquitetura padrão para dispositivos móveis. O Projeto Denver amplia a gama de sistemas ARM para cima de, PCs, servidores de data centers, e supercomputadores. Um anúncio da Microsoft revela estar trazendo o Windows para processadores de baixo consumo de energia, como CPUs baseadas em ARM, este era o ingrediente final necessário para permitir PCs com arquiteturas ARM. Um processador ARM juntamente com uma GPU NVIDIA representa a plataforma de computação do futuro. Uma CPU de alta performance com um conjunto de instruções padrão irá executar as partes seriais das aplicações e

40 39 fornecer compatibilidade enquanto uma GPU altamente eficiente e paralela irá executar as partes paralelas dos programas. O resultado é que os futuros sistemas vão integrar uma excepcional combinação de desempenho e eficiência de energia. Seus processadores irão fornecer o melhor dos dois mundos, permitindo maior vida útil da bateria para soluções móveis. (DALLY, 2011) Evolução das Placas Gráficas NVIDIA Na figura 7 é possível observar a evolução das GPUs durante os anos, estes chips gráficos começaram como processadores de vídeo com função fixa, mas se tornaram cada vez mais programáveis e poderosos em termos de computação, o que levou a NVIDIA a lançar a primeira GPU. No período entre 1999 e 2000, cientistas de computação e cientistas de campo em diversas áreas começaram a usar GPUs para acelerar uma variedade de aplicativos científicos. Esse foi o início do movimento chamado de GPGPU, ou Computação de Uso Geral na GPU. (NVIDIA). FIGURA 7: Evolução Das GPUs. Fonte: CAVERNADATI, 2011 Jen-Hsun Huang CEO e co-fundador da NVIDIA em uma palestra em 2010, falou sobre o sucesso das GPUs, do CUDA e da importância da computação paralela. Além disso ele também demonstrou, através da figura 8, a evolução da arquitetura das placas gráficas da NVIDIA e o futuro da mesma.

41 40 Figura 8: NVIDIA GPU Roadmap. Fonte: and-gk112/ Atualmente estamos com a arquitetura Kepler, no próximo ano teremos a Maxwell, que conforme Jen-Hsun, vai acrescentar cerca de 16 vezes a performance de precisão dupla da Fermi. O ano de 2012 foi o ano da Kepler, com diversos lançamentos de GPUs, principalmente no segmento desktop (GK112, GK107, GK106, GK104) com chips produzidos a um processo de apenas 28nm e oferecendo mais de 1 TFLOPS de processamento. Em 2013 a nova arquitetura Maxwell promete uma arquitetura ainda menor, com apenas 22nm oque resultará em um ganho de performance de 16 vezes superior à da Kepler, vezes mais veloz em aplicações convencionais e 40 vezes mais potente que a Fermi além de ser a primeira arquitetura a efetivamente usar o Projeto Denver. (HUANG, 2010). A capacidade de computação (Compute Capability) descreve os recursos suportados por uma GPU NVIDIA com suporte a CUDA. O primeiro hardware com suporte a CUDA, como a GeForce 8800 GTX, tem uma capacidade de computação (CC) de 1.0, já as mais recentes como a Tesla K20 tem um CC de 3.5, conforme a figura 9.

42 41 Figura 9: Tabela De Especificações. Fonte: Transistors-15-SMX-Units Impossível falar desta maravilhosa tecnologia sem citar um grande caso de sucesso. Relativamente há pouco tempo atrás a Petrobras abriu uma licitação para compra de equipamentos que serviriam para montar seu novo supercomputador e teve como vencedora a empresa ITAUTEC. (Petrobras monta supercomputador..., 2011). Luiz Rodolpho Rocha Monnerat, analista de sistemas sênior da Petrobras, que encabeçou o projeto, afirma que a nova tecnologia permitirá à Petrobras aumentar em dez vezes a capacidade de processamento de imagens de áreas com potencial de produção de gás e óleo. O upgrade se deu principalmente devido a falta de espaço no atual CPD e ao alto consumo de energia do antigo sistema. O novo supercomputador denominado Grifo4 é constituído por 544 servidores com um total de 1 petaflop de capacidade de processamento e ocupa a 68ª posição no ranking dos 500 melhores supercomputadores do mundo conforme o site Top500.org. Mas oque mais marcou na evolução do CPD da Petrobras foi a mudança do paradigma de processamento, integrando ao sistema nada menos que 180 GPUs NVIDIA Tesla Conforme Monnerat, o parque de computação de alto desempenho tem saltos tecnológicos a cada dez anos. A mudança atual é a substituição de CPUs pelas

43 42 GPUs. "Nossa meta é acompanhar esses saltos tecnológicos", afirma Monnerat. A Petrobras começou a testar GPUs em O primeiro cluster foi feito em 2008, com 180 placas gráficas. Bernardo Fortunato Costa, analista de sistemas júnior da Petrobras, afirma que os maiores problemas se deram devido aos softwares que ainda não eram adaptados para o processamento com as GPUs e que esse foi um dos fatores que levaram a companhia a desenvolver os programas internamente. Além do poder computacional aumentado pelo novo supercomputador, a mudança também se refletiu no consumo energético, o qual reduziu em 90%. 3.4 APU Relativamente recente, o termo APU(Unidade de Processamento Acelerado) foi comentado inicialmente durante a Computex de 2010 e relembrado durante a durante a CES de 2011, onde a AMD demonstrou os novos chips e anunciou seu novo produto revolucionário de processamento paralelo batizado de Fusion. Acreditamos que o Fusion é simplesmente o maior avanço em processamento desde a introdução da arquitetura x86, há mais de quarenta anos, disse Rick Bergman, vice-presidente sênior e gerente geral do Grupo de Produtos da AMD, durante a CES de Segundo a detentora da marca, uma APU é um chip híbrido composto por uma CPU x86 e uma GPU, conforme a figura 10. Tal tecnologia permite um aumento na taxa de transmissão de dados entre ambos os dispositivos e uma expressiva diminuição no consumo de energia, o que é muito importante principalmente quando lembramos que o Fusion foi projetado inicialmente para portáteis, tais como notebooks.

44 43 Figura 10: Arquitetura de uma APU. Fonte: Grande parte da experiência de computação está conectada ao software e, até agora, os desenvolvedores de software têm sido limitados pela natureza independente com a qual as CPUs e GPUs processam a informação. No entanto, as APUs AMD Fusion removem este obstáculo e viabilizam que os desenvolvedores aproveitem totalmente a capacidade de processamento incomparável de uma GPU mais de 500 GFLOPs na A- Series Llano APU(v) proporcionando uma performance do tipo de supercomputador para as tarefas de computação diárias. Mais aplicativos podem ser executados simultânea e mais rapidamente do que os designs anteriores da mesma categoria. (INÍCIO DA ERA DA APU..., 2011). 3.5 COMPARAÇÃO O crescimento da frequência das CPUs é agora limitado por questões físicas e consumo elevado de energia. Seu desempenho é muitas vezes elevado pelo aumento do número de núcleos. Processadores atuais podem contem em torno de quatro núcleos, porem eles são projetados para aplicações comuns, baseados na arquitetura MIMD (múltiplas instruções sobre dados múltiplos). Cada núcleo funciona independentemente dos outros, executando várias instruções diferentes para os vários processos. Estes núcleos são projetados para executar um único segmento de instruções sequenciais, com velocidade máxima. Características especiais de vetor (SSE2 e SSE3) para vetores de ponto flutuante simples e de precisão dupla apareceram em processadores de propósito

45 44 geral por causa do aumento das exigências de aplicações gráficas em primeiro lugar. É por isso que é mais conveniente usar GPUs para determinadas tarefas. Além das centenas de núcleos das GPUs, elas contêm uma memória global rápida, que pode ser acessada por todos os multiprocessadores, memória local em cada multiprocessador e memória especial para constantes. O mais importante é que esses vários núcleos em uma GPU são SIMD (Uma instrução sobre múltiplos dados). E esses núcleos de executam as mesmas instruções simultaneamente, pois foram projetados para a execução rápida de várias threads de instrução paralelas. Este estilo de programação é comum para algoritmos gráficos e muitas tarefas científicas. (IXBTLABS, 2009). Também vale lembra que o crescimento anual da tecnologia da arquitetura das CPUs é de apenas 40% se comparado as GPUs que é de 130%.

46 45 4 SOFTWARE Apenas o hardware por si só não é capaz de nos fornecer o desempenho esperado, portanto, para a arquitetura ser completa ela é dependente de um software que demande destes recursos de hardware, mas acima disso, o software deve tratar deste ambiente de hardware de forma a extrair o máximo de desempenho dele, fazendo uso de todos seu recursos. 4.1 LINGUAGENS DE PROGRAMAÇÃO Esta seção foca única e exclusivamente no nível de linguagens de programação, por se tratarem da base para se criar um software. A linguagem de programação a ser utilizada em uma aplicação de alto desempenho é um fator crucial, pois assim como o hardware, a linguagem também deve proporcionar muito desempenho, como a linguagem C, que fornece uma iteração próxima ao hardware C/C++ A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de pesquisas da Bell Laboratories, é uma das linguagens de programação mais populares e existem poucas arquiteturas para as quais não existem compiladores. Sua primeira utilização importante foi a reescrita do Sistema Operacional UNIX, que até então era escrito em assembly. C é uma linguagem de programação compilada, estruturada, imperativa, procedural, de propósito geral e padronizada pela ISO. C foi útil para muitas aplicações que foram codificadas originalmente em Assembly, fornecendo acesso de baixo nível a memória e ao hardware em geral, mas também foi desenvolvido para ser uma linguagem de alto nível, para maior reaproveitamento do código. A linguagem C++, além das características do próprio C, ela é considerada uma linguagem de nível médio, pois combina características de linguagens de alto e baixo nível. É uma das linguagens comerciais mais populares, sendo bastante usada também na academia por seu grande desempenho e base de utilizadores.

47 46 O C++ foi desenvolvido como um adicional a linguagem C por Bjarne Stroustrup em 1983 no Bell Labs. Novas características foram adicionadas com o tempo, como funções virtuais, sobrecarga de operadores, herança múltipla, gabaritos, tratamento de exceções e também implementou vários elementos chave de programação orientada a objetos Java O Java, além de uma linguagem de programação de alto nível, também é uma plataforma. Linguagem orientada a objeto, com sintaxe parecida ao C, desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems, mas atualmente é mantida pela Oracle. Na linguagem de programação Java, todo código fonte é primeiramente escrito em arquivos de texto simples que terminam com a extensão.java. Estes arquivos por sua vez são compilados em arquivos.class pelo compilador javac. Uma arquivo.class não contém código que é nativo para o processador, ao invés disso ele contém bytecodes que por sua vez é a linguagem de máquina da Java Virtual Machine, como pode ser observado na figura 11. A ferramenta de execução Java então executa sua aplicação com uma instância da máquina virtual Java. (ORACLE). É este arquivo pré-compilado.class com os bytecodes que fornece a portabilidade ao Java. Este mesmo arquivo pode ser executado tanto em um ambiente Windows quanto Linux ou Mac, como demonstra a figura 12. Figura 11: Plataforma Java. Fonte:

48 47 Como um ambiente independente de plataforma, a plataforma Java pode ser um pouco mais lenta do que o código nativo. No entanto, os avanços no compilador e tecnologias de máquinas virtuais estão trazendo mais perto o desempenho do código nativo sem ameaçar a portabilidade. Figura 12: HelloWord Java. Fonte: DESENVOLVIMENTO PARA GPU Desenvolver uma aplicação voltada a utilizar os recursos de uma GPU é uma tarefa árdua, por se tratar de um paradigma diferente que requer muita atenção e trabalho ao utilizar o hardware. Nestes casos geralmente são utilizadas APIs as quais fornecem um desenvolvimento de alto nível ao hardware, como são os casos do CUDA e da APARAPI CUDA

49 48 A NVIDIA, detentora da marca, define CUDA (Compute Unified Device Architecture) como uma arquitetura de computação paralela de propósito geral que tira proveito do mecanismo de computação paralela das unidades de processamento gráfico (GPUs) NVIDIA para resolver muitos problemas computacionais complexos em uma fração do tempo necessário em uma CPU. Ela é uma extensão para a linguagem de programação C, desenvolvida pela NVIDIA, que possibilita o uso de computação paralela. A ideia por trás disso tudo é que programadores possam usar os poderes da unidade de processamento gráfico (GPU) para realizar algumas operações mais rapidamente. Ou seja, a GPU passa a operar como se fosse mais uma CPU dentro máquina, aumentando consideravelmente, com isso, a performance do sistema. A CUDA também é conhecida como a arquitetura de computação paralela da NVIDIA que também já há algum tempo tem sido aclamada como "A Supercomputação para as Massas". Esta API é muito famosa entre os acadêmicos da computação e chegou também a ser usada no programa Exascale, do Departamento de Defesa dos Estados Unidos. Mas não é só o desempenho o responsável por tanta popularidade: o preço dá o golpe final nessa luta. Com todo o seu poder de computação, as placas gráficas são incrivelmente baratas. Como observou Sharon Glotzer, da Universidade de Michigan,: "Hoje você pode ter dois gigaflops por US$500. Isso é ridículo." (PFISTER, 2010). Segundo a NVIDIA, a CUDA permite utilizar recursos dos aceleradores NVIDIA utilizando chamadas em C (C for CUDA, compilador nvcc), o que torna o processo como um todo relativamente fácil para os BONS PROGRAMADORES. Existem também abstrações para a linguagem Java, C# e também Python. O processamento paralelo da GPU permite executar mais ações com menos tráfego de informações em barramentos, usando a área de cache comum e acesso direto a memória. Segundo a NVIDIA, com a utilização da API OpenMM na química computacional que desenvolve cálculos moleculares, é possível desenvolver estes cálculos de uma forma mais simples e, principalmente, integrada com as GPUs. Logo o trabalho que uma CPU processaria em dias, poderá ser processado em horas, ou até mesmo minutos, conforme as figuras 13, 14 e 15.

50 49 Figura 13: Comparação de desempenho. Fonte: A GPU se torna mais apta para o trabalho de processamento paralelo por ter sido desenvolvida para atender à demanda de processos de computação 3D em alta resolução e em tempo real. Assim, com o passar do tempo, as GPUs modernas se tornaram muito eficientes ao manipular grandes blocos de informações (O QUE É A TECNOLOGIA..., 2011). O processamento na GPU é feito dentro dos núcleos CUDA (CUDA Cores), que podem ser comparados, a grosso modo, com os núcleos de um processador comum. Por isso, quanto mais núcleos CUDA tiver a placa de vídeo, mais operações podem ser realizadas em paralelo (O QUE É A TECNOLOGIA..., 2011). Na questão da Dinâmica de Fluídos, a NVIDIA divulga vários projetos em andamento sobre modelos de Navier-Stokes e métodos de Lattice Boltzman, os quais mostraram grandes ganhos de velocidade usando GPUs habilitadas para CUDA.

51 50 Figura 14: Modelo de Navier-Stokes. Fonte: Figura 15: Método de Lattice Boltzman. Fonte: O modelo de programação CUDA implica em agrupar as threads em grupos que são chamados de blocks que comunicam-se entre si através da memória compartilhada, os blocks por sua vez também são agrupados e chamados de grids. Um programa (kernel) é executado através de uma grid de blocks de threads, conforme a figura 16. Uma grid é executada de cada vez. Cada bloco pode ser de uma, duas, ou três dimensões, de forma, que pode consistir de 1024 threads

52 dependendo do equipamento, como demonstra a figura 16. (GRAMMELSBACHER E MEDRADO, 2009). 51 Figura 16: Modelo de Programação CUDA. Fonte: IXBTLABS, 2008 Blocos de threads são executados sob a forma de pequenos grupos chamados warps. É o volume mínimo de dados, que podem ser processados por multiprocessadores. Mas o CUDA também permite trabalhar com blocos contendo outros números de threads. (IXBTLABS, 2008). O modelo de memória CUDA permite endereçamento bytewise com suporte para reunir e dispersar. Cada stream processor possui até 1024 registradores. O acesso a esses registradores é muito rápido, eles podem armazenar 32 bits de números inteiros ou de ponto flutuante. Assim como mostra a figura 17, cada thread tem acesso aos seguintes tipos de memória:

53 52 Figura 17: Modelo de Memória CUDA. Fonte: IXBTLABS, 2008 Memória global - o maior volume de memória disponível para todos os multiprocessadores em uma GPU, com mais de 6 GB em soluções empresariais modernas. Ela oferece alta largura de banda, mais de 170 GB/s de soluções top da NVIDIA. Memória local - volume pequeno de memória, que pode ser acessado apenas por um stream processor. É relativamente lento, assim como a memória global. Memória compartilhada - de até 48 Kb de memória, nos melhores modelos da NVIDIA, compartilhado entre todos os stream processors em um multiprocessador. É rápida, assim como registradores. Esta memória fornece a interação entre as threads, é controlada pelos desenvolvedores diretamente e apresenta baixas latências, ela pode ser usada como uma cache L1 controlável, menos chamadas para memória global. Armazenamento constante pouco maior que a memória compartilhada, ela é somente leitura para todos os multiprocessadores, bastante lenta.

54 53 Memória de textura - está disponível para a leitura de todos os multiprocessadores. Os dados são obtidos por unidades de textura em uma GPU, de modo que os dados podem ser interpolados linearmente, sem custos extras, lenta como a memória global. Figura 18: Memórias CUDA. Fonte: IXBTLABS, 2008 Na figura 18, é possível observar que CUDA implica em uma abordagem especial para o desenvolvimento, um pouco diferente da programação da CPU. É preciso ter a consciência de tipos de memória diferentes, o fato de que a memória local e global não está em cache e que suas latências de acesso são muito mais elevadas do que na memória de registrador, como é fisicamente localizado em chips separados. Vale ressaltar que estes números citados neste tópico são exclusivos da GPU e estão sujeitos a variações conforme o modelo. Segue um modelo típico de programação CUDA, mas não obrigatório: Dividir uma tarefa em subtarefas. Dividir os dados de entrada em pedaços que se encaixam na memória compartilhada. Cada bloco de dados é processado por um thread block.

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

Unidade 13: Paralelismo:

Unidade 13: Paralelismo: Arquitetura e Organização de Computadores 1 Unidade 13: Paralelismo: SMP e Processamento Vetorial Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura SMP e alguns detalhes

Leia mais

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

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

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

A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores

A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores As empresas mais antigas e ainda hoje no mercado que fabricam CPUs é a Intel, AMD e Cyrix.

Leia mais

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores Multi-processamento Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores Arquitecturas MIMD de memória distribuída Massive Parallel Computers Sistemas distribuídos Ainda

Leia mais

Contil Informática. Curso Técnico em Informática Processadores Core

Contil Informática. Curso Técnico em Informática Processadores Core Contil Informática Curso Técnico em Informática Processadores Core Quais as diferenças entre os processadores Intel Core i3, i5 e i7? A tecnologia avançada na área de hardware possibilita um avanço desenfreado

Leia mais

Técnicas de Manutenção de Computadores

Técnicas de Manutenção de Computadores Técnicas de Manutenção de Computadores Professor: Luiz Claudio Ferreira de Souza Processadores É indispensável em qualquer computador, tem a função de gerenciamento, controlando todas as informações de

Leia mais

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P.

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P. INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P. Centro de Emprego e Formação Profissional da Guarda Curso: Técnico de Informática Sistemas (EFA-S4A)-NS Trabalho Realizado Por: Igor_Saraiva nº 7 Com

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

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD. AULA4: PROCESSADORES 1. OBJETIVO Figura 1 Processadores Intel e AMD. Conhecer as funcionalidades dos processadores nos computadores trabalhando suas principais características e aplicações. 2. INTRODUÇÃO

Leia mais

CPU Unidade Central de Processamento. História e progresso

CPU Unidade Central de Processamento. História e progresso CPU Unidade Central de Processamento História e progresso O microprocessador, ou CPU, como é mais conhecido, é o cérebro do computador e é ele que executa todos os cálculos e processamentos necessários,

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

7.Conclusão e Trabalhos Futuros

7.Conclusão e Trabalhos Futuros 7.Conclusão e Trabalhos Futuros 158 7.Conclusão e Trabalhos Futuros 7.1 Conclusões Finais Neste trabalho, foram apresentados novos métodos para aceleração, otimização e gerenciamento do processo de renderização

Leia mais

Placa de vídeo em CUDA

Placa de vídeo em CUDA Placa de vídeo em CUDA Matheus Costa Leone de Souza Krystian Aparacido Resumo Quando você tem um cálculo que possa ser grande demais para você realizar a mão, a primeira solução que lhe vem a cabeça é

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Introdução Um sistema operacional é um programa que atua como intermediário entre o usuário e o hardware de um computador. O propósito

Leia mais

Sistema de Computação

Sistema de Computação Sistema de Computação Máquinas multinível Nível 0 verdadeiro hardware da máquina, executando os programas em linguagem de máquina de nível 1 (portas lógicas); Nível 1 Composto por registrados e pela ALU

Leia mais

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

Tecnologia PCI express. Introdução. Tecnologia PCI Express Tecnologia PCI express Introdução O desenvolvimento de computadores cada vez mais rápidos e eficientes é uma necessidade constante. No que se refere ao segmento de computadores pessoais, essa necessidade

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

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

Comparativo de desempenho do Pervasive PSQL v11

Comparativo de desempenho do Pervasive PSQL v11 Comparativo de desempenho do Pervasive PSQL v11 Um artigo Pervasive PSQL Setembro de 2010 Conteúdo Resumo executivo... 3 O impacto das novas arquiteturas de hardware nos aplicativos... 3 O projeto do Pervasive

Leia mais

Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas

Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas Claudio André claudio.andre@correios.net.br Motivação Seu computador

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

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

CISC RISC Introdução A CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; suporta mais instruções no entanto, com

Leia mais

Curso de Instalação e Gestão de Redes Informáticas

Curso de Instalação e Gestão de Redes Informáticas ESCOLA PROFISSIONAL VASCONCELLOS LEBRE Curso de Instalação e Gestão de Redes Informáticas PROCESSADORES DE 64 BITS X PROCESSADORES DE 32 BITS José Vitor Nogueira Santos FT2-0749 Mealhada, 2009 Introdução

Leia mais

O que é RAID? Tipos de RAID:

O que é RAID? Tipos de RAID: O que é RAID? RAID é a sigla para Redundant Array of Independent Disks. É um conjunto de HD's que funcionam como se fosse um só, isso quer dizer que permite uma tolerância alta contra falhas, pois se um

Leia mais

Introdução Processamento Paralelo

Introdução Processamento Paralelo Introdução Processamento Paralelo 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 23

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

1. NÍVEL CONVENCIONAL DE MÁQUINA

1. NÍVEL CONVENCIONAL DE MÁQUINA 1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0

Leia mais

Imagem retirada de documentações de treinamentos oficiais INTEL

Imagem retirada de documentações de treinamentos oficiais INTEL O que é Hyper-Threading (HT)? Hyper-Threading (HT) é uma tecnologia existe nos processadores que visa explorar com mais eficiência o uso da CPU, o grande foco desta tecnologia é evitar ociosidade de processamento

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

Leia mais

INTRODUÇÃO BARRAMENTO PCI EXPRESS.

INTRODUÇÃO BARRAMENTO PCI EXPRESS. INTRODUÇÃO BARRAMENTO EXPRESS. O processador se comunica com os outros periféricos do micro através de um caminho de dados chamado barramento. Desde o lançamento do primeiro PC em 1981 até os dias de hoje,

Leia mais

Microarquiteturas Avançadas

Microarquiteturas Avançadas Univ ersidade Federal do Rio de Janei ro Info rmátic a DCC/IM Arquitetura de Computadores II Microarquiteturas Avançadas Gabrie l P. Silva Introdução As arquiteturas dos processadores têm evoluído ao longo

Leia mais

A era dos múltiplos núcleos chegou para ficar e com ela surgiram muitas dúvidas. Conheça hoje os detalhes dos novos processadores da Intel.

A era dos múltiplos núcleos chegou para ficar e com ela surgiram muitas dúvidas. Conheça hoje os detalhes dos novos processadores da Intel. Imprimir Quais as diferenças entre os processadores Intel Core i3, i5 e i7? Por Fabio Jordão Fonte: www.baixaki.com.br/info/3904-quais-as-diferencas-entre-os-processadores-intel-core-i3-i5-e-i7-.htm Quinta-Feira

Leia mais

1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade.

1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade. 1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade. Todos nós da AGI Soluções trabalhamos durante anos

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

LICENCIATURA EM COMPUTAÇÃO PROCESSADOR TEGRA 2

LICENCIATURA EM COMPUTAÇÃO PROCESSADOR TEGRA 2 LICENCIATURA EM COMPUTAÇÃO PROCESSADOR TEGRA 2 SANTO AMARO 2011 ANGELO RAMOS JACKELINE BARBOSA JEANDERVAL SANTOS PROCESSADOR TEGRA 2 Trabalho apresentado ao Instituto Federal de Ciências e Tecnologia da

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Professor: João Fábio de Oliveira jfabio@amprnet.org.br (41) 9911-3030 Objetivo: Apresentar o que são os Sistemas Operacionais, seu funcionamento, o que eles fazem,

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Marcelo Lobosco DCC/UFJF Avaliando e Compreendendo o Desempenho Aula 09 Agenda Avaliando e Compreendendo o Desempenho Introdução Definindo Desempenho Medindo o Desempenho Desempenho

Leia mais

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Informática I Aula 5 http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

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

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

Leia mais

CONHEÇA MELHOR SEU COMPUTADOR

CONHEÇA MELHOR SEU COMPUTADOR CONHEÇA MELHOR SEU COMPUTADOR Por: Pedro ( Lan House Viagem Virtual ) Sacie sua fome de conhecimento, veja em ordem alfabética os principais termos sobre hardware. Como muitos devem saber, os computadores

Leia mais

Entenda as vantagens dos chips de quatro núcleos

Entenda as vantagens dos chips de quatro núcleos Entenda as vantagens dos chips de quatro núcleos Novos processadores começam a aparecer em celulares e tablets Nos próximos meses começam a chegar ao Brasil os primeiros smartphones e tablets com processadores

Leia mais

Evolução das CPUs: Dual e Quad Core

Evolução das CPUs: Dual e Quad Core Evolução das CPUs: Dual e Quad Core Cesar Sposito Mário J. Filho Rodrigo Ferrassa... os computadores sequenciais estão se aproximando do limite físico fundamental em sua energia potencial computacional.

Leia mais

SIMCAP Simpósio de Computação Aplicada Cloud Computing

SIMCAP Simpósio de Computação Aplicada Cloud Computing SIMCAP Simpósio de Computação Aplicada Cloud Computing A importância da nuvem na indústria dos games. Fábio Araújo Quintas / 2009027846 Micaely Bernardo Freire/2009036250 Ana Carolina M. Castro / 2008117299

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ópico 33 e 34 Virtualização São Paulo 2009 Virtualização Ao falar em virtualização,

Leia mais

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução. Processadores Atuais Eduardo Amaral Sumário Introdução Conceitos Básicos Microprocessadores Barramentos Bits internos e bits externos Clock interno e clock externo Memória cache Co-processador aritmético

Leia mais

TRABALHO COM GRANDES MONTAGENS

TRABALHO COM GRANDES MONTAGENS Texto Técnico 005/2013 TRABALHO COM GRANDES MONTAGENS Parte 05 0 Vamos finalizar o tema Trabalho com Grandes Montagens apresentando os melhores recursos e configurações de hardware para otimizar a abertura

Leia mais

Aumente sua velocidade e flexibilidade com a implantação da nuvem gerenciada de software da SAP

Aumente sua velocidade e flexibilidade com a implantação da nuvem gerenciada de software da SAP Parceiros de serviços em nuvem gerenciada Aumente sua velocidade e flexibilidade com a implantação da nuvem gerenciada de software da SAP Implemente a versão mais recente do software da SAP de classe mundial,

Leia mais

Sistemas Computacionais II Professor Frederico Sauer

Sistemas Computacionais II Professor Frederico Sauer Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não

Leia mais

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie 1 INTRODUÇÃO 1.1 ORGANIZAÇÃO E PROCESSOS A administração está diretamente ligada às organizações e aos processos existentes nas mesmas. Portanto, para a melhor compreensão da Administração e sua importância

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

Administração de Sistemas de Informação Gerenciais

Administração de Sistemas de Informação Gerenciais Administração de Sistemas de Informação Gerenciais UNIDADE III: Infraestrutura de Tecnologia da Informação Atualmente, a infraestrutura de TI é composta por cinco elementos principais: hardware, software,

Leia mais

Processadores. Guilherme Pontes

Processadores. Guilherme Pontes Processadores Guilherme Pontes Já sabemos o básico! Como já sabemos, o processador exerce uma das mais importantes funções do computador. Vamos agora nos aprofundar em especificações mais técnicas sobre

Leia mais

Núvem Pública, Privada ou Híbrida, qual adotar?

Núvem Pública, Privada ou Híbrida, qual adotar? Instituto de Educação Tecnológica Pós-graduação Gestão e Tecnologia da Informação - Turma 25 03/04/2015 Núvem Pública, Privada ou Híbrida, qual adotar? Paulo Fernando Martins Kreppel Analista de Sistemas

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 Conceito de Computador Um computador digital é

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

LOGÍSTICA MADE DIFFERENT LOGÍSTICA

LOGÍSTICA MADE DIFFERENT LOGÍSTICA LOGÍSTICA MADE DIFFERENT LOGÍSTICA ENTREGA ESPECIAL Na economia globalizada 24/7 de hoje, a logística e a gestão de armazéns eficientes são essenciais para o sucesso operacional. O BEUMER Group possui

Leia mais

A Evolução dos Clusters frente as demais arquiteturas de Alto Desempenho

A Evolução dos Clusters frente as demais arquiteturas de Alto Desempenho A Evolução dos Clusters frente as demais arquiteturas de Alto Desempenho Rodrigo Santos de Souza, Adenauer C. Yamin Universidade Católica de Pelotas - UCPel {rsouza,adenauer}@ucpel.tche.br, 1 Introdução

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

Técnico em Informática - Instalação e Manutenção de Computadores PROCESSADORES

Técnico em Informática - Instalação e Manutenção de Computadores PROCESSADORES Técnico em Informática - Instalação e Manutenção de Computadores PROCESSADORES Processador... 2 Clock... 5 Multiplicador de clock / FSB... 6 Memória Cache... 6 Processador O processador é o cérebro do

Leia mais

Introdução à Computação

Introdução à Computação Aspectos Importantes - Desenvolvimento de Software Motivação A economia de todos países dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os

Leia mais

ROTEIRO PARA ELABORAÇÃO DE PROJETOS

ROTEIRO PARA ELABORAÇÃO DE PROJETOS APRESENTAÇÃO ROTEIRO PARA ELABORAÇÃO DE PROJETOS Breve histórico da instituição seguido de diagnóstico e indicadores sobre a temática abrangida pelo projeto, especialmente dados que permitam análise da

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

Processadores clock, bits, memória cachê e múltiplos núcleos

Processadores clock, bits, memória cachê e múltiplos núcleos Processadores clock, bits, memória cachê e múltiplos núcleos Introdução Os processadores (ou CPUs, de Central Processing Unit) são chips responsáveis pela execução de cálculos, decisões lógicas e instruções

Leia mais

Fundamentos de Hardware

Fundamentos de Hardware Fundamentos de Hardware Curso Técnico em Informática SUMÁRIO PLACAS DE EXPANSÃO... 3 PLACAS DE VÍDEO... 3 Conectores de Vídeo... 4 PLACAS DE SOM... 6 Canais de Áudio... 7 Resolução das Placas de Som...

Leia mais

Introdução. Em se tratando de computador, entendemos que memória são dispositivos que armazenam dados com os quais o processador trabalha.

Introdução. Em se tratando de computador, entendemos que memória são dispositivos que armazenam dados com os quais o processador trabalha. Memorias Introdução Em se tratando de computador, entendemos que memória são dispositivos que armazenam dados com os quais o processador trabalha. Necessariamente existe dois tipos de memórias: -Memória

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Introdução. Uso do disco Vantagens Desvantagens Baixo custo, facilidade de manutenção do software e do hardware, simetria e flexibilidade

Introdução. Uso do disco Vantagens Desvantagens Baixo custo, facilidade de manutenção do software e do hardware, simetria e flexibilidade Introdução É sabido que os processos rodam em processadores. Nos sistemas tradicionais existe somente um único processador, de forma que não há dúvida a respeito de como ele deve ser usado. Em um sistema

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

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

Disciplina: Introdução à Informática Profª Érica Barcelos Disciplina: Introdução à Informática Profª Érica Barcelos CAPÍTULO 4 1. ARQUITETURA DO COMPUTADOR- HARDWARE Todos os componentes físicos constituídos de circuitos eletrônicos interligados são chamados

Leia mais

Prof. Esp. Lucas Cruz

Prof. Esp. Lucas Cruz Prof. Esp. Lucas Cruz O hardware é qualquer tipo de equipamento eletrônico utilizado para processar dados e informações e tem como função principal receber dados de entrada, processar dados de um usuário

Leia mais

Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters

Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters Trabalho elaborado por: 980368 - Sérgio Gonçalves Lima 1010949 - Nisha Sudhirkumar Chaganlal Clusters O que é

Leia mais

Por Antonio Couto. Autor: Antonio Couto Enterprise Architect

Por Antonio Couto. Autor: Antonio Couto Enterprise Architect Cloud Computing e HP Converged Infrastructure Para fazer uso de uma private cloud, é necessário crescer em maturidade na direção de uma infraestrutura convergente. Por Antonio Couto O que é Cloud Computing?

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

Algoritmos. Objetivo principal: explicar que a mesma ação pode ser realizada de várias maneiras, e que às vezes umas são melhores que outras.

Algoritmos. Objetivo principal: explicar que a mesma ação pode ser realizada de várias maneiras, e que às vezes umas são melhores que outras. 6 6 NOME DA AULA: 6 Algoritmos Duração da aula: 45 60 minutos Tempo de preparação: 10-25 minutos (dependendo da disponibilidade de tangrans prontos ou da necessidade de cortá-los à mão) Objetivo principal:

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 Índice 1. A Organização do Computador - Continuação...3 1.1. Memória Primária - II... 3 1.1.1. Memória cache... 3 1.2. Memória Secundária... 3 1.2.1. Hierarquias de

Leia mais

Hardware de Computadores

Hardware de Computadores Placa Mãe Hardware de Computadores Introdução Placa-mãe, também denominada mainboard ou motherboard, é uma placa de circuito impresso eletrônico. É considerado o elemento mais importante de um computador,

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 Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

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

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

Corporativo. Transformar dados em informações claras e objetivas que. Star Soft. www.starsoft.com.br

Corporativo. Transformar dados em informações claras e objetivas que. Star Soft. www.starsoft.com.br Corporativo Transformar dados em informações claras e objetivas que possibilitem às empresas tomarem decisões em direção ao sucesso. Com essa filosofia a Star Soft Indústria de Software e Soluções vem

Leia mais

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de

Leia mais

A Evolução dos Sistemas Operacionais

A Evolução dos Sistemas Operacionais Capítulo 3 A Evolução dos Sistemas Operacionais Neste capítulo, continuaremos a tratar dos conceitos básicos com a intensão de construirmos, agora em um nível mais elevado de abstração, o entendimento

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

ESTUDO DE CASO WINDOWS VISTA

ESTUDO DE CASO WINDOWS VISTA ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado

Leia mais

Cálculo Aproximado do número PI utilizando Programação Paralela

Cálculo Aproximado do número PI utilizando Programação Paralela Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Cálculo Aproximado do número PI utilizando Programação Paralela Grupo 17 Raphael Ferras Renan Pagaiane Yule Vaz SSC-0143 Programação

Leia mais

1. CAPÍTULO COMPUTADORES

1. CAPÍTULO COMPUTADORES 1. CAPÍTULO COMPUTADORES 1.1. Computadores Denomina-se computador uma máquina capaz de executar variados tipos de tratamento automático de informações ou processamento de dados. Os primeiros eram capazes

Leia mais

Introdução A Engenharia Da Computação

Introdução A Engenharia Da Computação Introdução A Engenharia Da Computação AULA I Slide 1 O Que é Engenharia? [De engenho + -aria.] Substantivo feminino 1.Arte de aplicar conhecimentos científicos e empíricos e certas habilitações específicas

Leia mais

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

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

Leia mais

Fundamentos de Hardware

Fundamentos de Hardware Fundamentos de Hardware Curso Técnico em Informática SUMÁRIO PROCESSADOR... 3 CLOCK... 4 PROCESSADORES COM 2 OU MAIS NÚCLEOS... 5 NÚCLEOS FÍSICOS E LÓGICOS... 6 PRINCIPAIS FABRICANTES E MODELOS... 6 PROCESSADORES

Leia mais

INTRODUÇÃO A PORTAIS CORPORATIVOS

INTRODUÇÃO A PORTAIS CORPORATIVOS INTRODUÇÃO A PORTAIS CORPORATIVOS Conectt i3 Portais Corporativos Há cinco anos, as empresas vêm apostando em Intranet. Hoje estão na terceira geração, a mais interativa de todas. Souvenir Zalla Revista

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Arquitetura de processadores: RISC e CISC

Arquitetura de processadores: RISC e CISC Arquitetura de processadores: RISC e CISC A arquitetura de processador descreve o processador que foi usado em um computador. Grande parte dos computadores vêm com identificação e literatura descrevendo

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

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

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