Computação genérica de alto desempenho com GPUs

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

Download "Computação genérica de alto desempenho com GPUs"

Transcrição

1 Computação genérica de alto desempenho com GPUs Vítor Oliveira Distributed Computer Graphics 07/08 MAP-i Doctoral Program in Computer Science Resumo Introdução Os GPUs evoluíram significativamente em capacidade de processamento nos últimos seis anos, tornando-se não só mais rápidos que os CPUs em determinado tipo de tarefas, mas também por vezes ordens de magnitude mais rápidos que estes. Naturalmente, esta enorme capacidade de processamento aparece associada à resolução de problemas próprios do processamento gráfico, altamente paralelo e orientado aos dados, em boa parte motivada pela indústria dos jogos de computador. O aproveitamento do potencial dos GPUs para o processamento genérico veio permitir resolver alguns problemas computacionalmente exigentes em postos de trabalho individuais que de outra forma precisariam de um conjunto mais alargado de recursos, vindos de sistemas de clustering HPC, Grid ou outros. No entanto, parece importante enquadrar os GPUs com a computação de alto desempenho, pelo que, no contexto do presente trabalho sobre computação genérica com unidades de processamento gráfico (GPU), se tenta uma abordagem dirigida às questões da computação de alto desempenho onde os GPUs podem desempenhar um papel importante. Apresentam-se, ainda assim, as formas como foram e são utilizados os GPUs para obter esse alto desempenho. Tal opção decorre, por um lado, do facto da proliferação de bibliografia sobre este último tema tornar difícil a apresentação de alguma contribuição interessante e, por outro lado, porque os GPU começam a ser considerados para clusters computacionais e para integração nos processadores genéricos, pelo que certamente haverá uma alteração significativa no papel que GPUs irão desempenhar neste contexto.

2 2. Computação de alto desempenho O motor da investigação em sistemas de computação é frequentemente a obtenção de desempenhos cada vez mais elevados recorrendo a cada vez menos recursos. Tal objectivo pode ser facilmente observado no contexto dos computadores genéricos, mas vai desde o contexto dos dispositivos móveis, passando pelos sistemas empresariais até ao mundo da computação de alto desempenho, entre outros. As tecnologias e mecanismos criados para este fim diferem muito entre si, em particular se a comparação se fizer entre as unidades de processamento autónomas (processadores e unidades auxiliares locais) e as redes de sistemas de sistemas autónomos (com clusters HPC/HTC, Grid e clouds). Neste capítulo apresentar-se-á o enquadramento, onde programaticamente se apresentam características técnicas das diversas tecnologias subjacentes. Pretende-se assim tornar mais claro que quando se compara CPUs com GPUs, ou redes de baixa latência com redes Ethernet, ou barramentos PCI com PCIexpress, não deixa de se estar a comparar grandezas relacionadas e que os problemas, restrições e soluções em determinado nível podem constituir também problemas, restrições e soluções em diversos outros níveis. 2.1 Maximização do desempenho Embora as áreas de investigação em arquitecturas intra-computador e intercomputadores sejam vastas, há um objectivo que se pode considerar transversal a todos, que é o maximizar a capacidade de computação recorrendo a um determinado conjunto de unidades de processamento e de memória interligadas por barramentos de comunicações. O desempenho depende de cada um destes três factores, sendo que estes se apresentam em diversos níveis hierárquicos: no caso de um processador, temos unidades ALU, memórias cache e o barramento interno; no caso de um sistema autónomo temos os diversos processadores, as memórias centrais e os barramentos (FSB, PCI, PCI-Express, USB); no caso de um cluster temos os nós de computação, as memórias distribuídas pelos nós e as redes de interligação. Partindo de um modelo base aproximado, o que distingue realmente o desempenho nos diferentes contextos são as características de cada uma das unidades de processamento, de memória e de comunicações entre estas (e o resto do sistema). No caso dos processadores importa saber quanto tempo demora a executar um determinado conjunto de instruções, no caso da memória interessa se o seu desempenho e capacidade são suficientes para suportar o programa com os seus dados e no caso das comunicações interessa 2

3 saber qual é a largura de banda e a latência e qual o atraso que estas impõe no cálculo e no acesso à memória. O panorama actual nos sistemas de computação de alto desempenho é esclarecedor em termos de modelos subjacentes, conforme se pode ver na lista do Top500 [1] de Novembro de Os processadores utilizados mais frequentemente são processadores genéricos, embora se possa distinguir entre aqueles que favorecem um maior número de processadores menos capazes (o primeiro da lista, o IBM BlueGene/L, tem processadores PowerPC de 2.8GFLOPS/núcleo) e aqueles que favorecem processadores mais capazes mas em menor número (o terceiro da lista possui processadores Xeon Quad-core de 12GFLOPS/núcleo). Relacionado com a escolha do número de nós está a memória RAM disponível em cada nó de processamento, que varia também segundo os modelos que privilegiam trabalhos de pequenas dimensões (256MB/núcleo) ou os que privilegiam os trabalhos grandes dimensões em cada nó de processamento (8GB/núcleo) ou ainda os que privilegiam um número alargado de núcleos e memória por nó de processamento (1024GB em 128 núcleos, como acontece no nó de processamento de maiores dimensões do Finis Terrae[2]). Em termos de interligação os sistemas mais rápidos possuem redes de interligação de baixa latência e alto débito, proprietárias ou genéricas como a Infiniband ou Myrinet, enquanto os sistemas menos capazes apostam na interligação dos nós de processamento com Ethernet. O reflexo das características de memória e das redes na eficiência dos sistemas é bastante marcado, já que uma mesma capacidade bruta se transforma em valores LINPACK [3] muito diferentes. No caso do BlueGene/L a eficiência é de 80%, enquanto um sistema típico sobre Ethernet apresenta uma eficiência entre os 45 a 55%. No caso do Finis Terrae um número de nós reduzido mas com um número elevado de processadores interligados por Infiniband permite uma eficiência de 84%. 2.2 Desenvolvimentos nos microprocessadores A evolução dos microprocessadores passa cada vez mais pelo aumento do número de núcleos e de memória cache em cada um dos processadores, secundarizando o aumento do desempenho dos núcleos individuais. Tal opção parte da premissa que os programadores das aplicações, ou os compiladores em nome destes, serão responsáveis por adaptar os programas para explorar todo o potencial dos recursos computacionais apresentados nas diferentes formas, mesmo para aplicações que se destinam a ser utilizadas num único computador. O fantasma da Lei de Amdahl[4] parece finalmente descansar, o que ajuda a libertar a arquitectura dos CPUs do espartilho da programação sequencial. 3

4 O desenvolvimento de CPUs passa, assim, por sistemas com múltiplos núcleos simétricos, como o Sun UltraSPARC T2[6] com 8 núcleos e 64 fios de execução simultâneos, para um máximo teórico de 11GFLOPS, o Intel Xeon com quatro núcleos e 4 instruções de virgula flutuante por ciclo do relógio e o AMD Phenon[7] com quatro núcleos e comunicações com HyperTransport e tecnologia NUMA, ou assimétricos como o Cell Broadband Engine [8], com 1 processador genérico e 7 ou 8 SPE que lhe permitem atingir um desempenho de pico de 205GFLOPS. O desempenho global do sistema passou também a ser avaliado em relação ao consumo eléctrico, e à consequente capacidade de arrefecimento, necessário para o atingir. Este factor assume particular relevância quando se tinha verificado que as gerações mais recentes de processadores aumentavam o consumo eléctrico para valores impensáveis há poucos anos, em particular devido às frequências elevadas e ao associado leakage nos transístores. Os ganhos recentes têm sido significativos e a título de exemplo refira-se que um processador Xeon de núcleo único, a 3.6Ghz, da geração NetBurst consome 110W para produzir 7.2GFLOPS, enquanto um processador Xeon Quadcore baseado na microarquitectura Core2 e processo de fabrico de 45nm consome menos de 80W para produzir 48GFLOPS, um aumento de eficiência de uma ordem de grandeza em apenas 2 anos [9]. Espera-se que no final deste ano seja lançado o sucessor do processador Itanium II, com mais de milhões de transístores, 30MB de cache, bem como no primeiro processador Intel Xeon com 6 cores por processador, com 16MB de cache e um desempenho superior a 72GFLOPS por processador. Embora exista apenas como um sistema de investigação, a Intel apresentou já o primeiro processador que ultrapassa 1TFLOPS com um consumo de 62W, bem como a sua visão para os futuros processadores TeraScale [5]. Figura 1. Processador Intel Terascale com 80 cores e 1TFLOPS [5]. 4

5 2.3 Processamento com co-processadores O sistema que se prevê venha a ser o primeiro a atingir em HPL um desempenho sustentado superior a 1PFLOPS será o IBM Roadrunner [10], que apresenta a particularidade de assentar numa configuração que junta num único nó de processamento TriBlade quatro núcleos Opteron com 16GB de RAM e quatro processadores PowerXCell 8i também com 16GB de RAM. Os processadores Cell utilizados possuem um núcleo PowerPC e oito SPE, apresentando102gflops sustentados em HPL[11]. A comunicação entre os processadores Opteron e Cell decorre sobre quatro links PCI-Express x8, enquanto a comunicação inter-nó decorre sobre uma rede Infiniband. A utilização de co-processadores para aumentar as capacidades dos processadores genéricos está longe de ser nova, sendo os co-processadores aritméticos (FPU) 8087/287/387 [12] dos mais conhecidos. Estas funcionalidades básicas de vírgula flutuante foram incluídas nos CPUs actuais, mas existem situações em que continua a sentir-se a necessidade de co-processadores, nomeadamente nos campos do processamento de sinal (DSPs), do cálculo avançado em vírgula flutuante (de que exemplo a ClearSpeed[13]), da criptografia (aceleradores TLS/SSL), do processamento gráfico (GPUs), etc. O que distingue um processador de um co-processador será, entre outros, que o primeiro pode funcionar sem o segundo e o inverso não é válido. Com os primeiros co-processadores aritméticos era habitual existirem encaixes dedicados para a sua eventual instalação junto dos CPUs. Actualmente, é mais habitual disponibilizar os co-processadores na forma de placas de expansão, uma vez que é uma forma flexível e económica de integrar os componentes. No entanto, a utilização de um barramento de expansão implica limitações de largura de banda e a arbitragem e comunicação com atrasos significativos e, por vezes, inadequados para os objectivos do co-processador. De forma a contornar o problema houve duas abordagens distintas: na primeira tentou-se adequar os barramentos às características dos processadores, que deu origem a barramentos dedicados a GPUs como o AGP [14] que possuía uma largura de banda acrescida em relação ao barramento PCI; na segunda, e mais recente, criam-se mecanismos que permitem integrar os co-processadores directamente nos barramentos dos processadores. A iniciativa Torrenza [15] da AMD destina-se a permitir que terceiros possam desenvolver co-processadores que podem ser encaixados directamente nos slots destinados a processadores Opteron/Phenom, ou nos sockets HTX, dando acesso directo às ligações HyperTransport [16] e ao barramento PCI- Express (ver figura a seguir). 5

6 Figura 2. Iniciativa AMD Torrenza, com as quatro configurações previstas [17] 3. As unidades de processamento gráfico (GPUs) No capítulo anterior pretendeu-se apresentar uma panorâmica do estado actual dos sistemas de computação para tentar contextualizar devidamente a processamento em GPU. No capítulo que se inicia agora introduz-se o GPU como unidade de processamento auxiliar e apontam-se as suas vantagens e as suas inevitáveis desvantagens. 3.1 Breve história dos GPUs Os GPUs surgiram no contexto de segmentos de mercado específicos onde era imperioso obter capacidades gráficas mais evoluídas na altura, o que veio a acontecer através de equipamentos de empresas como a Silicon Graphics. Os elevados custos destes equipamentos não permitiram a sua generalização, mas abriram caminho para que surgissem entretanto equipamentos mais acessíveis à generalidade dos utilizadores. A generalização veio a acontecer em 1998 com a primeira geração de GPUs que incluía as Nvidia TNT2, a ATI Rage e a 3DFX Voodoo3, que incluíam a rasterização de triângulos e a mistura limitada de múltiplas texturas num único passo de rasterização. 6

7 A segunda geração que incluiu as Nvidia GeForce 256 e GeForce 2, bem como as ATI Radeon 7500 e S3 Savage3D, surgiu em 2000 trazendo a capacidade de transformar os vértices 3D e a iluminação para o GPU. O GPU passa a ser responsável por manter as matrizes de transformação dos vértices e pelos cálculos de iluminação em tempo real, à medida que a cena é apresentada. Embora as operações disponíveis para combinar texturas e colorir pixéis tenham sido expandidas, continuam a ser em número reduzido. A possibilidade de programar os vértices, embora muito limitada, surgiu com a terceira geração de GPUs em 2001 e que incluiu dispositivos como a GeForce3 e GeForce4 da Nvidia e a ATI Radeon Embora a utilização GPUs para processamento genérico tenha surgido com esta geração, as limitações ao nível do acesso às texturas, do formato das texturas e a ausência de estruturas de controlo para saltos limitavam a sua utilização. A quarta geração de GPU inclui as Nvidia GeForceFX, GeForce 6800, GeForce 7800, bem como as ATI Radeon 9700, 9800, X800 e X1800. Nesta geração, que inclui a maior parte dos dispositivos actuais, são introduzidas diversas funcionalidades diferenciadoras. Entre outras, passaram a ter unidades de vírgula flutuante, passaram a existir estruturas de controlo - mesmo que penalizantes em termos de desempenho - e os programas de shading para vértices e fragmentos passara a ter tamanho quase ilimitado. A quinta geração inclui os dispositivos com arquitecturas unificadas, que incluem as Nvidia 8800/8900/9900, Tesla e NV280/260, bem como as ATI Radeon HD e AMD FireStream Esta última inclui, pela primeira vez, suporte para operações de vírgula flutuante com precisão dupla. Adiante descrever-se-á algumas das funcionalidades desta geração. Figura 3. Pipeline tradicional dos GPU (esq.) e a arquitectura da Nvidia 6800 (dir.) [17] 7

8 3.2 O pipeline das arquitecturas GPU actuais A enorme capacidade de processamento dos GPU está associada aos shaders que são aplicados quer aos vértices, quer aos fragmentos, quer (mais recentemente) às geometrias. Com a separação entre shaders no modelo de pipeline tradicional o balanceamento da carga entre as diversas pode ser problemático. Se as aplicações exigirem muito trabalho do GPU só ao nível dos vértices, as unidades associadas aos fragmentos ficam paradas, ou viceversa. A evolução de número de unidades associadas a cada uma das funções acabou por favorecer o processamento de fragmentos, por serem mais habitual existirem mais pixéis do que pontos a processar, mas o desequilíbrio e a existência de gargalos pode ser problemática, como se pode ver nos exemplos que se seguem. Figura 4. Utilização das unidades do GPU num pipeline tradicional [32] As gerações mais recentes dos GPUs contornam este problema ao incluir um único tipo de unidade de processamento, que pode ser utilizado por qualquer tipo de shader. Desta forma, todas as unidades de processamento ficam disponíveis para todos os tipos de tarefas, o que leva a uma utilização plena da capacidade de processamento. Figura 5. Comparação entre um pipeline tradicional e um pipeline unificado (dir.) [31] 8

9 Nvidia GeForce 8800/9800 Figura 6. Arquitectura dos Nvidia G80/G92 (GeForce 8 e 9) [32] O diagrama acima representa a arquitectura interna que foi adoptada pela Nvidia para a geração GeForce 8 e 9 [32]. Esta arquitectura assenta num conjunto de 8 multiprocessadores, cada um dos quais com 16 unidades de processamento, para um total de 128 processadores. A gestão de fios de execução com o GigaThreads permite-lhe gerir em hardware milhares de threads em simultâneo. O relógio do GPU está dividido em várias partes, funcionando os shaders a uma velocidade superior às unidades de controlo. O pipeline foi encurtado significativamente em relação aos níveis da GeForce 7, que chegava a ter 200 níveis só para o processador de fragmentos. As entradas de dados são conduzidas ao topo do núcleo de shader e as saídas são escritas em registos e lançadas para o topo do núcleo de shading que vai tratar do passo seguinte. ATI Radeon HD 3800 O diagrama apresentado representa a arquitectura das ATI Radeon HD 3800 que, tal como no caso anterior, implementa um pipeline unificado. O processamento é baseado numa microarquitectura VLIW, com 64 clusters de shaders, cada um com 5 unidades, para um total de 320 unidades de processamento. Cada uma das primeiras quatro unidades do cluster consegue debitar uma instrução MADD ou MUL ou ADD ou DP por cada ciclo do relógio, enquanto a quinta unidade pode executar também funções transcendentais como o seno e o coseno. 9

10 Figura 7. Arquitectura das ATI Radeon HD 3800 [32] A dependência da microarquitectura VLIW acarreta consigo os desafios inerentes à mesma, nomeadamente no que diz respeito à manutenção de um fluxo optimizado de instruções. Por isso, o desempenho é altamente dependente dos programas implementados e da capacidade do compilador reordenar devidamente as ditas instruções. Tal como na geração anterior e com a Nvidia, o suporte a múltiplos fios de execução é instrumental para a obtenção de elevados desempenhos. Cada conjunto de 80 unidades de processamento tem o seu próprio árbitro e sequenciador, o primeiro destinado a seleccionar os fios de execução que irão executar a seguir e o segundo destinado a reordenar as instruções de forma a obter o maior desempenho possível. 3.3 A capacidade de processamento dos GPU Os GPUs evoluíram formidavelmente em capacidade de processamento nos últimos anos, atingindo valores de pico teóricos em processamento de vírgula flutuante superiores a qualquer processador genérico actualmente disponível. Efectivamente, pela análise das especificações de um processador Xeon da última geração com 48GFLOPS de capacidade de processamento presume-se que este terá dificuldade em rivalizar em capacidades aritméticas com o processador da Nvidia 9800 GTX que apresenta 648 GFLOPS como máximo teórico, mesmo que com um número aproximado de transístores (820 milhões no primeiro vs 750 milhões no segundo). Os valores máximos teóricos apresentados no parágrafo anterior ofrma calculados considerando que cada núcleo do Xeon é capaz de executar quatro 10

11 instruções de vírgula flutuante em cada ciclo de relógio, pelo que com quatro núcleos a funcionar a 3GHz obtemos um total de 48GFLOPS. Para o GPU os cálculos são mais complexos, na medida em que há potencial de cálculo nas diversas unidades, eventualmente diferentes, do processador. No entanto, tomando os shaders da arquitectura unificada do Nvidia 9800GTX, os 16 multiprocessadores a funcionar a 1688GHz com 8 unidades SIMD podem processar uma multiplicação e uma multiplicação+adição em cada ciclo e chegar a um total de 648GFLOPS [35]. A definição de uma métrica como o FLOPS apresenta algumas vantagens importantes, nomeadamente o facto de definir um limite máximo ao processamento. Naturalmente os valores de desempenho efectivo dependem da aplicação e podem ser muito inferiores aos valores de pico mas determina, por exemplo, que o máximo de speedup que um GPU 9800GTX sobre um Xeon Quadcore 3.0 será de apenas 13,5x, bem longe dos speedups superiores a 2 ordens de grandeza que chegam a ser referidos. Perante esta relação entre o potencial dos GPUs e o CPUs passa a ser responsabilidade do programador optimizar as aplicações em ambos os contextos para o utilizar devidamente. Figura 8. Evolução do desempenho dos CPUs da Intel e dos GPUs da AMD e da Nvidia [18] A pergunta mais evidente perante esta constatação será certamente mas porquê?. Será que as capacidades aritméticas dos dispositivos são directamente proporcionais ao talento dos seus projectistas na Intel e na Nvidia? Certamente que não, pelo que de seguida se irão apresentar as diferenças fundamentais entre os CPUs e os GPUs e a forma como estas se manifestam na capacidade de processamento disponibilizado. Estes factos servirão certamente para justificar porque é que um núcleo de computação de um Intel Xeon actual utiliza mais de 200 milhões de transístores, enquanto um núcleo do processador G92 da Nvidia requer pouco mais de 5 milhões de transístores. Tal corresponde a afirmar que em 2,5% do espaço em circuito integrado o G92 consegue 40% do desempenho em vírgula flutuante de um Xeon Penryn (considera-se que os transístores para os restantes componentes, incluindo a memória, são divididos pelo número de núcleos de cálculo). 11

12 3.4 CPU vs GPU Os CPU foram desenhados com o objectivo principal de optimizar um único fio de execução sequencial, sendo essa a sua especialidade. Tecnologias como o multi-threading e a inclusão de múltiplos núcleos de execução num único circuito integrado não alteram significativamente este panorama, uma vez que todos os núcleos são semelhantes, possuem grande complexidade interna e foram desenhados para funcionar autonomamente. Os GPUs, por outro lado, foram desenhados para resolver rapidamente problemas relacionados com a computação gráfica que são, na sua maioria, trivialmente paralelizáveis, ou embaraçosamente paralelos. Mesmo no caso de os algoritmos serem sequenciais, o domínio dos dados é intrinsecamente paralelo, existindo as 3 ou 4 componentes de cores e 3 (ou 4) dimensões. Enquanto a gestão da enorme variabilidade no comportamento das aplicações e dos padrões de acesso à memória levou a que os CPUs incluíssem processadores altamente elaborados com gestão da consistência de múltiplos níveis de memória cache de grandes dimensões, a evolução dos GPUs partiu muito rapidamente para um modelo de funcionamento massivamente paralelo com núcleos individuais simplificados mas de alto desempenho. O facto de os GPUs se concentrarem nas tarefas paralelas destinadas, essencialmente, ao processamento gráfico, permite descartar as responsabilidades de um qualquer processador genérico em termos de gestão do hardware e do software de base. Em simultâneo, a exigência da aplicação primária muito exigente os jogos vem acompanhada de interfaces bem definidas como o OpenGL ou o DirectX, o que permitiu que os fabricantes pudessem implementar alterações radicais ao nível da estrutura interna que seriam inaceitáveis ao nível dos CPUs. Recorde-se que o conjunto de instruções original do 8086, com mais de trinta anos, continua a ser suportado nos CPUs Intel actuais. A liberdade de desenho dos GPUs permitiu, ainda, utilizar tecnologias de acesso à memória com larguras de banda fenomenais e baixas latências que não podem ser utilizadas para a computação genérica. Para além de um número elevado de unidades de processamento, os GPUs possuem a capacidade de gerir em hardware um número muito alargado de fios de execução. Enquanto os CPU suportam algumas dezenas/centenas de fios de execução escalonados pelo sistema operativo, os GPUs conseguem suportar, de forma eficiente, milhares de fios de execução em simultâneo[19][20]. Para obter essa eficiência, esses fios de execução são orientados aos dados, o sistema de memória é que estabelece as prioridades no escalonamento, partilham em alguns casos o apontador para a instrução actual (PC) e não possuem uma stack por thread. 12

13 A forma como são feitos os cálculos em vírgula flutuante acaba também por distinguir os CPUs dos GPUs. Enquanto a adopção da norma IEEE754 está garantida nos CPUs, nos GPUs os cálculos não respeitam esta norma, nem suportam precisão dupla. A generalidade dos GPU possui apenas 32 bits da precisão simples, embora alguns suportam apenas 24 bits ou 16 bits. 4 Modelos de programação dos GPUs Tomando como ponto de partida os modelos de GPU com pipeline de funções fixas, diversos processos internos dos GPUs passaram a ser completamente programáveis e o próprio pipeline deixou de ser fixo. Inicialmente eram apenas os programas existentes nos vertex e nos pixel shaders, mas, actualmente, com o DirectX 10, além de ter surgido o shader de geometrias, estes passaram a ter o conjunto de instruções único e a assentar num modelo de shading unificado. Embora tal não obrigasse necessariamente a um modelo unificado a nível do hardware, tal veio a acontecer tanto com a Nvidia como com a ATI, como se apresentou anteriormente. 4.1 Computação orientada às sequências (streams) Os GPUs podem ser vistos como processadores de sequências de dados que exigem o mesmo tipo de tratamento[21]. O processador executa uma sequência de operações sobre cada unidade nessa sequência de entrada e coloca os resultados numa sequência de saída. Desta forma, os shaders de vértices operam sobre um sequência de vértices enquanto os shaders de fragmentos operam sobre uma sequência de fragmentos. O modelo de sequências é especialmente eficiente devido a que cada elemento independente pode ser executado em paralelo (o grau de paralelismo passa a ser uma opção da arquitectura subjacente) e os dispositivos podem esconder a latência dos acessos à memória executando apenas as tarefas que já possuem os dados disponíveis e fazendo a busca proactiva de dados. Entre as funcionalidades fundamentais presentes nos GPUs[22] estão as seguintes: 1) memória de leitura através de acesso a texturas; 2) memória de acesso aleatório através de acesso indexado às texturas; 3) interpolação de dados; 4) valores temporários que podem ser guardados em registos locais nos processadores; 5) valores constantes guardados em registos constantes durante toda a execução do shader; 6) memória de escrita apenas conseguida através da escrita para texturas ou para o framebuffer; 7) operações aritméticas em virgula flutuante, incluindo a soma, subtracção, multiplicação e divisão; dada a frequência da utilização da multiplicação e da soma algumas arquitecturas possuem uma instrução, MADD, que executa ambas as operações num único 13

14 passo e que é normalmente considerada para definir um limite teórico para a capacidade de processamento. Existem também diversas funcionalidades que foram excluídas[22], nomeadamente: 1) a stack; 2) a heap; 3) operações bit-a-bit sobre inteiros; 4) operações de scatter, uma vez que os fragment shaders apenas podem escrever para a endereço actual do pixel; 5) operações sobre toda a sequência de inputs, como os máximos, mínimos, médias, etc; 6) conjunto limitado de valores de saída por cada ponto. O facto de não existir suporte para stacks elimina também a possibilidade de se utilizarem funções recursivas. As operações habituais dos CPUs como obter um valor de uma tabela, executar um ciclo sobre um conjunto de dados, ou guardar dados passam no GPU por operações como indexar uma textura, executar um shader sobre todos os pixéis de uma textura e guardar para uma textura/framebuffer, respectivamente. O arranque do programa ou rotina passa pelo desenho de um pixel, o que provoca o arranque da execução dos shaders. 4.2 Ferramentas de desenvolvimento de shaders Partindo de uma plataforma em hardware torna-se necessário trazer para o nível do programador as ferramentas necessárias ao desenvolvimento das aplicações que tomam partido dos GPU. As primeiras ferramentas surgiram, naturalmente, para dar suporte às aplicações gráficas como os jogos que, fruto do desejo de desenvolver capacidades cada vez mais apelativas e avançados, rapidamente aproveitaram o potencial dos GPU através da programação dos pixel shaders e dos fragment shaders. Antes de terem sido introduzidas as linguagens que a seguir se irão apresentar, os shaders eram codificados directamente em linguagem assembly de cada placa de cada fabricante, o que era um processo fastidioso, mais sujeito a erros de programação e de portabilidade muito limitada. Figura 9. O pipeline gráfico do Cg [21] 14

15 C for Graphics (Cg) A linguagem Cg foi criada pela Nvidia a partir da linguagem C com alguma inspiração de C++ e java. É independente da plataforma base e é compatível quer com OpenGL quer com Direct3D. Para suportar diferentes tipos de arquitecturas gráficas possui o conceito de perfil, que agrega características que garantidamente são suportadas em equipamentos desse perfil. High Level Shading Language (HLSL) O HLSL foi desenvolvido pela Microsoft e pela Nvidia para ser introduzido com o DirectX 9. É essencialmente a mesma linguagem que o Cg, mas faz parte da API DirectX, pelo que só compila com código Direct3D. OpenGL Shading Language (GLSL) O GLSL é também baseada em ANSI C, tendo sido mantidas as funcionalidades desta que eram compatíveis com o alto desempenho pretendido nos GPUs. Foram ainda aproveitadas algumas funcionalidades presentes no C++ como as funções com o mesmo nome mas tipos de dados de entrada diferentes e a declaração de dados no início dos blocos e não apenas no início da funções. Foram acrescentadas extensões para dar suporte a tipos de dados vectoriais e matriciais para um suporte acrescido às funções tipicamente necessárias nas operações gráficas. O GLSL faz parte da especificação OpenGL 1.4 e posteriores. 4.3 GPGPU Tradicionalmente a utilização dos GPUs para computação genérica (GPGPU)[28] constitui um desafio à capacidade do programador transformar os conceitos utilizados na programação tradicional em conceitos que podem ser directamente processados pelo hardware do GPU. Os programadores podem utilizar as linguagens descritas no ponto anterior para construir os shaders que serão aplicados tal como se o utilizador estivesse a tratar de um ecrã gráfico. A juntar a esta transformação de modelos estão as restrições às funcionalidades implícitas a cada tipo de GPU. Construir aplicações eficientes considerando todos pontos não é certamente fácil, pelo que houve existe actualmente necessidade de formas mais expeditas de construir aplicações que aproveitem as capacidades dos GPUs. Entre os esforços neste sentido estão as plataformas Brook, Sh, o CTM e o CUDA, embora cada uma destas tenha objectivos muito distintos. Recentemente tem havido bastante interesse em 15

16 plataformas comerciais que estendem a optimização de código para além dos GPUs (em direcção às arquitecturas multi-core como o Cell), tais como o RapidMind (baseado no Sh) e o PeakStream (baseado no Brook). No entanto, neste trabalho serão referidos apenas os primeiros. Brook O sistema Brook[33] foi criado em Stanford com o objectivo de permitir aos utilizadores não-gráficos a utilização do GPU para cálculo numérico. Cria os kernels para executar em DirectX e OpenGL, bem como faz a gestão de todos os comandos gráficos em tempo de execução. É baseado na linguagem C com extensões de streaming, o que lhe permite obter um desempenho de 80% a 90% de um programa desenvolvido especificamente para o GPU. O Brook suporta diversos tipos de backend, conforme o tipo de hardware onde as aplicações são executados. Existe um grande número de aplicações que utilizam o Brook, número que deverá aumentar com suporte dado pela ATI e pelo backend CTM. Sh A plataforma Sh[34] consiste numa biblioteca que funciona como uma linguagem embedida da linguagem C++, para programar os GPUs e CPUs para uso genérico e para processamento gráfico. Em 2004 foi criada a empresa RapidMind com o objectivo de comercializar o desenvolvimento do Sh, pelo que as novas versões deixaram de ser do domínio do código livre. Close to Metal (CTM) O CTM é uma biblioteca de baixo nível destinada a expor o conjunto de processadores paralelos subjacentes aos GPUs da ATI. Não está destinada a ser utilizada directamente pelo programador, mas para suportar plataformas de programação de mais alto nível como o Brook. Assim, e embora surja na mesma altura que o CUDA, não concorre directamente com este. 16

17 Figura 10. Comparação do speedup obtido num algoritmo de scan com o CPU vs OpenGL vs CUDA [38]. CUDA A plataforma CUDA[36], de Compute Unified Device Architecture, apresenta o maior distanciamento dos modelos tradicionais de programação dos GPUs. Esta permite que se continue a trabalhar com os conceitos tradicionais enquanto se desenvolvem as aplicações que irão funcionar nos GPUs, sem incorrer na sobrecarga inerente às API gráficas ao permitir compilar directamente para o hardware. Foi desenvolvida pela Nvidia como uma plataforma baseada em C especificamente para dar suporte à computação genérica com equipamentos da geração 8800 e posteriores. Embora seja uma tecnologia relativamente recente, tem gerado um interesse alargado por parte da comunidade, como se pode ver pelo conjunto de bibliotecas e literatura produzidos à sua volta[37]. Este interesse poderá ter origem no facto de trazer um conjunto de bibliotecas e exemplos particularmente interessantes, incluindo as bibliotecas numéricas normalizadas como as FFT e BLAS. 5 Aplicação de GPUs para cálculo genérico Existe na literatura um conjunto muito vasto de aplicações nas mais variadas áreas do conhecimento que utilizam os GPUs para obter a capacidade de processamento necessária ao seu funcionamento. Uma vez que um levantamento exaustivo destas aplicações fica para além do que poderá ser apresentado neste trabalho, além de que existem estudos focados nessa perspectiva[18], apresentar-se-á a seguir algumas das áreas onde a utilização desta ferramenta trás vantagens significativas. 17

18 5.1 Algumas áreas de aplicação As áreas potenciais para a aplicação do potencial de cálculo dos GPU, tal como para os CPUs, são imensas. A dificuldade está em, por uma lado, os problemas se adeqúem à natureza altamente paralela e vertical dos GPUs e, por outro lado, que sejam desenvolvidas aplicações que aproveitem devidamente esse potencial. A seguir apresentar-se-ão apenas uma breve descrição de algumas destas áreas e para mais detalhes ver [18]. A área da simulação de fenómenos físicos tem aproveitado o suporte numérico dos GPUs para acelerar a simulação de fenómenos dinâmicos como com as equações diferenciais parciais, como a convecção, a ebulição e a reacção difusão químicas e para a simulação da dinâmica de fluidos. Na área do processamento de imagem partiu-se para a utilização de GPUs em operações como a segmentação de imagens para a identificação de características em imagens médicas, em especial. O problema subjacente está na identificação de superfícies 3D embebidas nos diversos cortes que constituem uma TAC ou uma ressonância magnética. Embora o processo não possa ainda ser totalmente automatizado, obtêm-se speedups de 10x nos cálculos de apoio aos processos iterativos de construção dos volumes. Na área do processamento de sinal existem muitas iniciativas no sentido de aproveitar as capacidades de processamento numérico dos GPUs, em particular para o cálculo das transformadas de Fourier (FFT) e transformada do coseno discreto utilizada em compressão de imagens. Na área da visão por computador existem iniciativas para utilizar o GPU para acelerar operações de projecção e a composição de imagens, bem como para extração de informação de profundidade a partir de múltiplas imagens. Na área de iluminação global os GPUs existem diversas implementações de algoritmos como o Ray Tracing, Photon Mapping, radiosidade e sub-surface scattering, utilizando o GPU para obter desempenhos mais elevados ou maior qualidade nas imagens finais. Na área da computação geométrica os GPUs têm sido utilizados em diversas aplicações, incluindo o cálculo de trajectórias, realidade virtual, modelação geométrica, cálculo dos caminhos mais curtos, detecção de colisões, computação de transparências e compressão de dados geométricos. Outra área que tem despertado bastante interesse está na utilização de GPUs para optimizar ordenação de dados, inquéritos a bases de dados e para data mining. Os resultados com da execução de alguns scripts SQL chegam a ser uma ordem de magnitude superior ao tempo de execução nos CPUs. 18

19 5.2 Cálculo científico com GPUs A optimização de operações básicas de cálculo científico, como as operações sobre de matrizes, apresenta um potencial de retorno fantástico para a utilização dos GPUs. As bibliotecas matemáticas como o BLAS e LAPACK são a base de muitos programas desenvolvidos para resolver problemas científicos importantes. A hipótese de que a utilização dos GPUs possa permitir ganhos ordens de grandeza superiores aos dos CPUs e que estes benefícios possam transmitidos a todas as aplicações que usam essas bibliotecas é extremamente interessante. O facto do suporte ao formato IEE754 ser limitado e apenas de precisão simples levou a que surgissem algoritmos de correcção de precisão para os casos em que os 32 bits de precisão não são suficientes[23]. Tem-se verificado existir um interesse acentuado pelas bibliotecas científicas para GPUs [37] e espera-se que com a disseminação de tecnologias como o CUDA o número de implementações optimizadas venha a aumentar significativamente. Para além das já referidas bibliotecas numéricas, é de salientar a disponibilização de suporte GPU para as bibliotecas VMD, NAMD, FFT e para bibliotecas de redes neuronais, dinâmica molecular, etc. Há problemas de cálculo científico que tentam consumir todos os recursos de computação disponíveis, simplesmente porque são problemas complexos que estão limitados pela capacidade de processamento. Caso surge alguma capacidade adicional, mais do que terminar as aplicações em menos tempo, poder-se-á incluir mais factores que não puderem ser considerados anteriormente por falta de capacidade. No entanto, as aplicações científicas são muitas vezes executadas em clusters HPC que não possuem os GPUs a que os postos de trabalho individuais têm acesso. No entanto, surgem cada vez mais clusters computacionais que incluem nós com essa capacidade. Através do cluster Search [39], em particular, os investigadores da Universidade do Minho têm acesso a 8 nós de computação dual core com GPU Nvidia 7900GT com 256MB de RAM e a 6 nós de computação quad core com GPU Nvidia 8800GT com 1GB de RAM, que pretendem dar suporte à pesquisa de novas formas de explorar o potencial dos GPUs. As limitações mais sentidas nesta direcção estão na já referida dificuldade de programar aplicações genéricas sobre o paradigma da computação gráfica e nas limitações a nível do comportamento dos GPUs no cálculo em vírgula flutuante. Enquanto a primeira foi significativamente aliviada com a disponibilização da plataforma CUDA, o mesmo não acontece com a segunda que só irá ser resolvida com a próxima geração de GPUs. 19

20 6 Perspectivas de desenvolvimentos futuros A utilização de GPUs enquanto co-processadores aritméticos para computação genérica ainda está longe de estar esgotada enquanto tema de investigação em diversas vertentes. Em primeiro lugar, só agora começam a surgir modelos de programação fáceis de utilizar e adequados à exploração do GPU para trabalhos não orientados a gráficos[27]. Em segundo lugar, a provável inclusão dos GPUs como núcleos de processamento em CPU altera radicalmente os pressupostos de funcionamento dos GPUs, em particular no que concerne aos acessos à memória gráfica. A passagem dos processadores como o Fusion [25] para eventuais variantes de desempenho constituirá certamente um importante marco na evolução dos GPUs, bem como o será a forma de compatibilizar no mesmo pacote processadores exigentes com características internas tão distintas. Em terceiro lugar, para além da referida inclusão dos GPUs nos CPUs, poderá até chegar o momento em que a evolução dos CPUs em termos de processamento paralelo evolua de tal forma que deixe de fazer sentir-se a necessidade dos GPU, podendo as tarefas dos GPUs ser absorvidas pelos processadores genéricos tal como aconteceu anteriormente com os coprocessadores de vírgula flutuante. Figura 11. Arquitectura prevista para um processador Intel com GPU integrado, SMT [24] 20

21 7 Conclusão A computação paralela é fatal. Não é letal, mas é certamente o destino da evolução dos sistemas de computação de alto desempenho. Estranhamente, ainda há poucos anos empresas como a Intel apontavam para um futuro com processadores únicos a funcionar a frequências cada vez mais elevadas[26], atingindo 10GHz em Nessa altura a única medida de desempenho eram os Hz, enquanto agora a proliferação de múltiplos núcleos parece o caminho a seguir. A responsabilidade por este desvio foi atribuído à diminuição do consumo, mas talvez as provas dadas pelos GPUs tenham tido também alguma influência. Figura 12. Arquitectura prevista para o processador Intel Nahelem-EX Octo-core, SMT [24] Os GPUs constituem o primeiro dispositivo de computação massivamente paralela de baixo custo, que surgiu pela libertação dos constrangimentos inerentes às aplicações sequenciais. Torna-se possível constatar na prática, através deles, que as aplicações e os seus programadores se podem adaptar a sistemas altamente paralelos desde que haja motivação para isso. No mesmo caminho surgiram consolas de como a PlayStation2 que com o seu processador Cell também banalizaram os sistemas paralelos Actualmente a utilização dos GPUs para cálculos genéricos parece ser um acto de racionalidade. As dificuldades ao nível da sua programabilidade têm vindo a diminuir com plataformas como o CUDA que veio trazer um ambiente de programação muito mais próximo do que os programadores estão acostumados. A acrescentar a isto temos o facto de serem dispositivos com uma relação custo/desempenho extraordinariamente baixa. 21

22 Bibliografia [1] Top500 Supercomputer Sites, [2] CESGA Centro de Supercomputación de Galicia, [3] A. Petitet, R. C. Whaley, J. Dongarra, A. Cleary, HPL - A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers, [4] Gene Amdahl, "Validity of the Single Processor Approach to Achieving Large-Scale Computing Capabilities", AFIPS Conference Proceedings, (30), pp , [5] Jim Held, Jerry Bautista, Sean Koehl, From a Few Cores to Many: A Tera-scale Computing Research Overview, Intel Corporation White Paper, [6] Sun Microsystems, UltraSPARC T2 Processor, [7] AMD Corporation, Phenon X4 Quad-core, [8] IBM Corporation, The Cell project, [9] Ofri Wechsler, Inside Intel Core Microarchitecture Setting New Standards for Energy-Efficient Performance, Tecnology@Intel, Mar [10] Los Alamos National Laboratory, Roadrunner, Roadrunner breaks the 1pflops barrier, 9 May 2008, [11] Jakub Kurzak, Jack Dongarra, Implementation of mixed precision in solving systems of linear equations on the Cell processor: Research Articles, Concurr. Comput. : Pract. Exper., 19(10), [12] Wikipedia, 5 May 2008, [13] ClearSpeed Advance X620 and e620 Accelerator Boards, [14] Wikipedia, Accelerated Graphics Port, [15] AMD, Torrenza Initiative: Creating a Community of Collaboration, Home/Torrenza.aspx [16] Hypertransport Consortium, [17] PC Watch, [18] John D. Owens, David Luebke, Naga Govindaraju, Mark Harris,Jens Krüger, Aaron E. Lefohn, and Tim Purcell. A Survey of General-Purpose Computationon Graphics Hardware. Computer Graphics Forum, 26(1):80 113, Mar [19] Nvidia Corporation, Nvidia GeForce 8800m Techspecs, [20] AMD Corporation, Radeon X1800 Shader Architecture, White Paper 22

23 [21] Timothy J. Purcell, Ian Buck, William R. Mark, and Pat Hanrahan. Ray tracing on programmable graphics hardware. ACM Transactions on Graphics, 21(3): , Jul [22] Dirk Vanden Boer, General-Purpose Computing on GPUs, Masters thesis, School of Information Technology, Transnationale Universiteit Limburg, Jun [23] Accelerating Double Precision FEM Simulations with GPUs, Dominik Göddeke, In Proceedings of ASIM th Symposium on Simulation Technique, Sept [24] Hiroshige Goto, PC Watch, [25] Wikipedia, AMD Fusion, [26] Geek.com, Intel predicts 10GHz chips by 2011, Jul 2000, [27] William Mark, Future Graphics Architectures, GPUs for Parallel Programming, ACM Queue, Vol. 6, No. 2 March/April 2008 [28] General Purpose Computing using Graphics Hardware, [29] Ian Buck, Tim Foley, Daniel Horn, Jeremy Sugerman, KayvonFatahalian, Mike Houston, Pat Hanrahan, Brook for GPUs: Stream Computing on Graphics Hardware, [30] Emmet Kilgariff, Randima Fernando, The GeForce 6 Series GPU Architecture, GPU Gems 2, 2005 [31] Tomas Akenine-Möller, Jacob Ström, Graphics Processing Units for Handhelds, Proceedings of the IEEE, 96(5), May 2008 [32] Nvidia Corporation, NVIDIA GeForce 8800 GPU Architecture Overview, Nov 2006 [33] BrookGPU, [34] Sh Embeded Metaprogramming Language, [35] Hardware-Infos, Geforce GTX 280 und 260: Finale Taktraten?, [36] Nvidia Corporation, CUDA Zone, [37] Nvidia Corporation, CUDA Showcase, [38] John D. Owens, Mike Houston, David Luebke, Simon Green, John Stone, James Phillips, GPU Computing, Proceedings of the IEEE, 96(5), 2008 [39] Universidade do Minho, Cluster Search, [40] Wikipedia, ATI Radeon HD 3800, 23

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

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

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64 Arquitecturas Alternativas Pipelining Super-escalar VLIW IA-64 Pipeline de execução A execução de uma instrução passa por várias fases: Vimos o ciclo: fetch, decode, execute fetch decode execute instrução

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

1.3. Componentes dum sistema informático HARDWARE SOFTWARE

1.3. Componentes dum sistema informático HARDWARE SOFTWARE 1.3. Componentes dum sistema informático Computador Sistema Informático HARDWARE SOFTWARE + Periféricos Sistema Operativo Aplicações HARDWARE - representa todos os componentes físicos de um sistema informático,

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

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

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

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

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução à gestão de memória Programação de Sistemas Gestão de memória : 1/16 Introdução (1) A memória central de um computador é escassa. [1981] IBM PC lançado com 64KB na motherboard,

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

Figura 1 - O computador

Figura 1 - O computador Organização e arquitectura dum computador Índice Índice... 2 1. Introdução... 3 2. Representação da informação no computador... 4 3. Funcionamento básico dum computador... 5 4. Estrutura do processador...

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

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

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

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. Unidade aritmética e lógica - Executa operações aritméticas (cálculos);

Leia mais

Introdução as Unidades de Processamento Gráfico (GPUs) Giovane Roslindo Kuhn

Introdução as Unidades de Processamento Gráfico (GPUs) Giovane Roslindo Kuhn Introdução as Unidades de Processamento Gráfico (GPUs) Giovane Roslindo Kuhn Computação Gráfica x Realidade Consulta ao BD SELECT nome FROM Pessoa WHERE idade > 25 Sumário Pipeline Gráfico Fixo (Overview)

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

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

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

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

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 aos Sistemas Operativos

Introdução aos Sistemas Operativos Introdução aos Sistemas Operativos Computadores e Redes de Comunicação Mestrado em Gestão de Informação, FEUP 06/07 Sérgio Sobral Nunes mail: sergio.nunes@fe.up.pt web: www.fe.up.pt/~ssn Sumário Definição

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

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho. Computação Paralela Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Desenvolvimento de Aplicações Paralelas Uma Metodologia

Leia mais

Trabalho de: Alexandre / Paulo / Rui

Trabalho de: Alexandre / Paulo / Rui Trabalho de: Alexandre / Paulo / Rui Índice 1 - CPU-Processador 2 - Chipset Intel/AMD 3 - Cache 4 - Núcleo 5 - CISC/RISC 1. CPU / Processador A unidade central de processamento ou CPU (Central Processing

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

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

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

Leia mais

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

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

Leia mais

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

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

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

Organização de Computadores 2005/2006 Processadores Intel

Organização de Computadores 2005/2006 Processadores Intel Organização de Computadores 2005/2006 Processadores Intel Paulo Ferreira paf a dei.isep.ipp.pt Março de 2006 Pré História 2 8080.............................................................................................

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

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

Barramentos - BUS. Professor Especialista: Airton Ribeiro de Sousa

Barramentos - BUS. Professor Especialista: Airton Ribeiro de Sousa Professor Especialista: Airton Ribeiro de Sousa É o percurso principal dos dados entre dois ou mais componentes de um sistema de computação, neste caso são os caminhos arquitetados na PLACA MÃE até o ponto

Leia mais

Algumas características especiais

Algumas características especiais Algumas características especiais Tópicos o Medidas de desempenho o CISC versus RISC o Arquiteturas Superescalares o Arquiteturas VLIW Medidas de desempenho Desempenho é muito dependente da aplicação MIPS:

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

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores Primeiro Teste 21 de Outubro de 2006, 9:00H 10:30H Nome: Número:

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

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

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

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

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

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

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

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

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

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET 2010/2011 1 Protocolo TCP/IP É um padrão de comunicação entre diferentes computadores e diferentes sistemas operativos. Cada computador deve

Leia mais

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy) Capítulo 4 João Lourenço Joao.Lourenco@di.fct.unl.pt Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa 2007-2008 MARIE (Machine Architecture Really Intuitive and Easy) Adaptado dos transparentes

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

Empresariado Nacional e Tecnologias de Informação e Comunicação: Que Soluções Viáveis para o Desenvolvimento dos Distritos?

Empresariado Nacional e Tecnologias de Informação e Comunicação: Que Soluções Viáveis para o Desenvolvimento dos Distritos? Empresariado Nacional e Tecnologias de Informação e Comunicação: Que Soluções Viáveis para o Desenvolvimento dos Distritos? Carlos Nuno Castel-Branco Professor Auxiliar da Faculdade de Economia da UEM

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

Gestão dos Níveis de Serviço

Gestão dos Níveis de Serviço A Gestão dos Níveis de Serviço (SLM) Os sistemas e tecnologias de informação e comunicação têm nas empresas um papel cada vez mais importante evoluindo, hoje em dia, para níveis mais elevados de funcionamento

Leia mais

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

28/9/2010. Paralelismo no nível de instruções Processadores superescalares Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados

Leia mais

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de Computadores. Ivan Saraiva Silva Arquitetura de Computadores Métricas de Desempenho Ivan Saraiva Silva Sumário Como arquiteturas são geralmente avaliadas Como arquiteturas obedecem a restrições de projeto Métricas de desempenho Combinando

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

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

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

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

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

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

Leia mais

Visão Geral de Hardwares de Renderização e Ferramentas de Avaliação. Carlos Eduardo Rodrigues

Visão Geral de Hardwares de Renderização e Ferramentas de Avaliação. Carlos Eduardo Rodrigues Visão Geral de Hardwares de Renderização e Ferramentas de Avaliação Carlos Eduardo Rodrigues Motivação Os chips gráficos monolíticos da década de 80 evoluíram bastante, e hoje são denominados GPUs (Graphics

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC UNIVERSIDADE FEDERAL DE SANTA CATARINA DANIEL CARLOS CASAROTTO JOSE OTÁVIO CARLOMAGNO FILHO MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC Florianópolis, 2004 DANIEL CARLOS

Leia mais

Bruno Pereira Evangelista. www.brunoevangelista.com

Bruno Pereira Evangelista. www.brunoevangelista.com Bruno Pereira Evangelista www.brunoevangelista.com 2 Introdução Shaders Pipeline de Renderização Evolução dos Shaders Como Programar Shaders Programando Shaders com XNA Ferramentas Conclusões 3 Durante

Leia mais

Aula 04 A. Barramentos. Prof. Ricardo Palma

Aula 04 A. Barramentos. Prof. Ricardo Palma Aula 04 A Barramentos Prof. Ricardo Palma Definição Em ciência da computação barramento é um conjunto de linhas de comunicação que permitem a interligação entre dispositivos, como o CPU, a memória e outros

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

Modelo Cascata ou Clássico

Modelo Cascata ou Clássico Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação

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

Utilização. de Shaders de efeitos realistas para jogos. Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais

Utilização. de Shaders de efeitos realistas para jogos. Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais Utilização de Shaders para criação de efeitos realistas para jogos Bruno Pereira Evangelista Pontifícia Universidade Católica de Minas Gerais Sumário 2/48 Apresentação pessoal Introdução Pipeline de renderização

Leia mais

BARRAMENTO DO SISTEMA

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

Leia mais

DEMONSTRAÇÕES FINANCEIRAS COMBINADAS

DEMONSTRAÇÕES FINANCEIRAS COMBINADAS 24 DEMONSTRAÇÕES FINANCEIRAS COMBINADAS Os mercados de capitais na Europa e no mundo exigem informações financeiras significativas, confiáveis, relevantes e comparáveis sobre os emitentes de valores mobiliários.

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

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

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

Open Graphics Library OpenGL

Open Graphics Library OpenGL Open Graphics Library OpenGL Filipe Gonçalves Barreto de Oliveira Castilho Nuno Alexandre Simões Aires da Costa Departamento de Engenharia Informática Universidade de Coimbra 3030 Coimbra, Portugal http://student.dei.uc.pt/~fgonc/opengl/

Leia mais

Software Registado e Certificado pela AT GESTÃO DE LAVANDARIAS. mercado exigente! Certificado. Retail Solutions

Software Registado e Certificado pela AT GESTÃO DE LAVANDARIAS. mercado exigente! Certificado. Retail Solutions Certificado Eficiência Eficiência para para vencer... vencer... Num Num mercado mercado exigente! exigente! Software Registado e Certificado pela AT LAVA i Índice Introdução Apresentação da Empresa Pág.

Leia mais

OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora

OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora OpenGL Uma Abordagem Prática e Objetiva Marcelo Cohen Isabel Harb Manssour Novatec Editora Capítulo 1 Introdução A Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento

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

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 à Arquitetura de Computadores

Introdução à Arquitetura de Computadores 1 Introdução à Arquitetura de Computadores Hardware e software Organização de um computador: Processador: registradores, ALU, unidade de controle Memórias Dispositivos de E/S Barramentos Linguagens de

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

Processadores Tecnologia de Multiprocessamento VS + Núcleos. Claudio Damasceno prof.claudiodamasceno@hotmail.com

Processadores Tecnologia de Multiprocessamento VS + Núcleos. Claudio Damasceno prof.claudiodamasceno@hotmail.com Processadores Tecnologia de Multiprocessamento VS + Núcleos Claudio Damasceno prof.claudiodamasceno@hotmail.com Core Solo O Core Solo é a versão do Core Duo com apenas um núcleo de processamento. Ele mantém

Leia mais

Organização de Computadores 2005/2006 Processamento Paralelo

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

Leia mais

Suporte Técnico de Software HP

Suporte Técnico de Software HP Suporte Técnico de Software HP Serviços Tecnológicos HP - Serviços Contratuais Dados técnicos O Suporte Técnico de Software HP fornece serviços completos de suporte de software remoto para produtos de

Leia mais

Siang Wun Song - IME/USP e Universidade Federal do ABC. MAC 412 - setembro de 2010

Siang Wun Song - IME/USP e Universidade Federal do ABC. MAC 412 - setembro de 2010 Evolução da Computação de Alto Desempenho sob a Ótica da Lista TOP500 ou (Se um processador já é rápido, imaginem um sistema com 224.162 processadores :-) Siang Wun Song - IME/USP e Universidade Federal

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

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

Apresentação do programa e bibliografia; Regras de funcionamento e de avaliação; Organização interna de um computador

Apresentação do programa e bibliografia; Regras de funcionamento e de avaliação; Organização interna de um computador Ano Lectivo: Docente: Disciplina: Turma: SIG4 2003/2004 Semestre: 2 António Nabais Análise e Avaliação de Sistemas de Computação Data de Impressão: 09/06/04 Data Inicio Nº Pres. Sumários Observações 3-Mar-04

Leia mais

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES PROCESSADORES CHIPS TRANSISTORES O que é um chip? - conhecido como circuito integrado; - pequeno e fino pedaço de silício no qual os transistores, que formam o microprocessador, foram encapsulados; - processadores

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

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

Capítulo 8 Arquitetura de Computadores Paralelos

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

Leia mais

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X Índice Traduzindo e iniciando uma aplicação Compiladores Assembladores Linkers Loaders DLLs Iniciando um programa em Java Após toda a matéria abordada nesta

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

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

CPU - Significado CPU. Central Processing Unit. Unidade Central de Processamento

CPU - Significado CPU. Central Processing Unit. Unidade Central de Processamento CPU - Significado CPU Central Processing Unit Unidade Central de Processamento CPU - Função Na CPU são executadas as instruções Instrução: comando que define integralmente uma operação a ser executada

Leia mais

Optimização de um Mundo Virtual

Optimização de um Mundo Virtual secção 3.2 Optimização de um Mundo Virtual Dadas as limitações impostas pela actual tecnologia, um mundo virtual que não seja cuidadosamente optimizado torna-se necessariamente demasiado lento para captar

Leia mais

Oficina de Multimédia B. ESEQ 12º i 2009/2010

Oficina de Multimédia B. ESEQ 12º i 2009/2010 Oficina de Multimédia B ESEQ 12º i 2009/2010 Conceitos gerais Multimédia Hipertexto Hipermédia Texto Tipografia Vídeo Áudio Animação Interface Interacção Multimédia: É uma tecnologia digital de comunicação,

Leia mais

Abordagem de Processo: conceitos e diretrizes para sua implementação

Abordagem de Processo: conceitos e diretrizes para sua implementação QP Informe Reservado Nº 70 Maio/2007 Abordagem de Processo: conceitos e diretrizes para sua implementação Tradução para o português especialmente preparada para os Associados ao QP. Este guindance paper

Leia mais

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

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

Leia mais

Introdução aos Computadores

Introdução aos Computadores Os Computadores revolucionaram as formas de processamento de Informação pela sua capacidade de tratar grandes quantidades de dados em curto espaço de tempo. Nos anos 60-80 os computadores eram máquinas

Leia mais