Artigo GPU

Download Artigo GPU

Post on 30-Jun-2015

202 views

Category:

Documents

5 download

Embed Size (px)

TRANSCRIPT

<p>GPU: Aspectos GeraisCharlan Lus Mocelin, Eduardo Fialho Barcellos da Silva, Geison Igor Tobaldini Universidade Regional Integrada Campus de Erechim Erechim RS Brasil{charlan.mocelin,eduardofialho}@gmail.com, geison_igor@hotmail.com</p> <p>Abstract. This paper describes the general aspects of GPUs, its history, evolution,buses that are used to interconnect between the GPU and CPU, its modes of operation, programming, performance and applications in which it is used.</p> <p>Resumo. Esse artigo descreve os aspectos gerais de GPUs, sua histria, evoluo, barramentos que so utilizados para interligao entre a GPU e CPU, seus modos de funcionamento, programao, desempenho e aplicaes em que utilizada.</p> <p>1. IntroduoA Unidade de Processamento Grfico (Graphic Processing Unit, ou GPU) um processador especializado em processamento grfico ou visual. Ele pode ser encontrado em videogames, computadores pessoais, estaes de trabalho e at em celulares. Apesar de muitas pessoas pensarem que ele existe apenas para processar os grficos de jogos de computadores ou videogames, ele possui muitas outras funes importantes. Na maioria dos casos, utilizado para processar as imagens com maior velocidade e qualidade, podendo suavizar os contornos de objetos, adicionar efeitos de luz complexos e criar imagens, dentre vrios outros. As GPUs processam as informaes binrias da imagem e as transformam na imagem que os usurios vem. Alm da capacidade de processar imagens com facilidade, a GPU tambm utilizada para efetuar complexos clculos matemticos e geomtricos. Ela tem a capacidade de processar vetores e matrizes com facilidade. Elas foram criadas para reduzir a carga de trabalho da Unidade Central de Processamento (Core Processing Unit, ou CPU) que antigamente, realizava todas as tarefas. Como usurios comuns no necessitavam de um processador para clculos complexos, e as interfaces visuais eram simples, no havia a necessidade de ter uma GPU. Sua primeira funo, foi de processar clculos com ponto flutuante, com o tempo, foi descoberta sua facilidade para processar imagens, visto que imagens so matrizes de nmeros, onde cada nmero se transforma em um pixel. Para usurios comuns, a GPU responsvel pela qualidade grfica do dispositivo, seja ele um computador, um videogame ou at mesmo um celular, nesses casos, ela utilizada na Placa de Vdeo.</p> <p>Hoje, as GPUs so usadas para vrios tipos de pesquisas, como mdicas, qumicas, matemticas, geogrficas, e so at usadas em clusters, devido a seu alto grau de paralelismo.</p> <p>2. Histria e EvoluoDesde a criao das primeiras GPUs, ocorreram muitas mudanas, foram descobertas novas utilizaes, novas funes, e principalmente, grande aumento na sua capacidade de processamento. Isso fez com que fosse retirada uma grande carga de trabalho das CPUs, transferindo-as para as GPUs. 2.1. ANTIC O ANTIC (Alpha-Numeric Television Interface Controller), foi um chip criado especialmente para mapping (mapeamento). Este chip era usado em microcomputadores e no videogame Atari 5200. O ANTIC possua 14 modos de apresentao de grficos/textos, e estes modos tambm poderiam ser misturados. A lista de exibio e os dados da exibio eram escritos na RAM (Random Access Memory), o ANTIC acessava essas informaes atravs de DMA (Direct Memory Access), ento, processava tais intrues de alto nvel para instrues simples em tempo real, assim as enviando para CTIA (Colleen Television Interface Adapter), gerando a imagem. Ele possua quatro tipos de instrues: Map Mode exibia pixels coloridos. Character Mode exibia caracteres. Blank Line exibia linhas horizontais. Jump Instruction usada para recarregar o program counter 1. JMP transferia a lista de execuo da exibio para outro endereo. 2. JVB era colocado no final da execuo, ele carregava a lista de execuo, podia ser usado para carregar outra lista de execuo em sincronia com o final da atual, evitando a tela preta. 2.2. Commodore Amiga Commodore Amiga teve seu design projetado para ser um videogame, mas foi reprojetado para ser um computador pessoal. Foi o primeiro computador a ser vendido em massa a conter um blitter no seu hardware de video. Foi considerado o primeiro computador a conter uma GPU completa.</p> <p>O Amiga carregava todas as funes de gerao de vdeo para o hardware, funes como preenchimento, desenho de linhas, e tambm, possua um co-processador grfico, que possua um conjunto de prprias instrues. Ele era capaz de exibir em tela cheia, em 32 ou 64 cores no modo EHB, e at 4096 cores no modo HAM. Um ponto importante do Amiga, era que ele possua uma Genlock (Generator Lock), onde ele sincronizava sua freqncia de atualizao de tela com o modo NTSC ou PAL. Extra Half-Brite (EHB) usava seis bitplanes(6 bits por pixel), onde os cinco primeiros bits referenciavam a cor em uma paleta de cores, e caso o sexto bit estivesse presente, o brilho da cor era cortado pela metade, assim transformando a paleta de 32 cores em 64 cores. Deste modo era possvel usar 64 cores usando apenas 32 registradores de paleta. Hold-And-Modify(HAM) era um modo usado digitalizao de fotos e vdeos, tambm era usado para manipular imagens estticas. No modo HAM, a imagem era dividida em linhas, como em uma matriz, e cada linha possua pixels, usando o modo RGB(Red Green Blue). Sendo assim, o modo HAM sempre grava qual foi a ltima cor usada no pixel a esquerda do atual, e ento procede escolhendo uma nova cor ou alterando a cor gravada. Seu limite de cores era de 4096, ele armazenava as cores por 16 valores de azul, 16 valores de verde e 16 valores de vermelho, resultando nas 4096 cores, sendo assim necessrios 12 bits para armazenar uma cor. 2.3. Placas Aceleradoras Com o interesse por exibio grfica crescendo, com a alta resoluo e o alto desempenho, comearam a ser criadas GPUs com processamento 2D em chip nico. Anos a frente, comearam a ser produzidas Placas Aceleradoras 3D. A NVidia 256 marcou o mercado, pois conseguiu retirar a transformao e a iluminao do software e levou ao hardware. Ento, comeou a ser usado Pixel Shader e Vertex Shader. Tambm foram criadas APIs (Application Programming Interface), melhorando mais ainda o desempenho das GPUs. As GPUs receberam a capacidade de processar clculos de ponto flutuante maiores, e a capacidade de processar figuras geomtricas, tornando-se to flexveis quanto uma CPU. Atualmente as placas de vdeo contem GPUs muito potentes, chegando a conter at vrios GBRAM de memria, com freqncias elevadas.</p> <p>3. BarramentosAs placas de vdeo podem ser onboard, ou offboard. Uma placa onboard integrada na placa me do computador, geralmente no tem um desempenho to bom quanto uma</p> <p>placa offboard. As placas offboard, podem usar vrios tipos de barramentos, mas os dois principais so os barramentos PCI-E(do ingls Peripheral Component Interconnect Express), ou o barramento AGP(do ingls Accelerated Graphics Port). 3.1 AGP O barramento AGP foi criado para melhorar a comunicao do processador com o slot, como na poca o barramento mais usado era o PCI, que compartilhava seu bus com outros slots PCI. Ao ter um caminho dedicado, o barramento AGP conseguia transferncias mais rpidas que o PCI. Outro motivo que o AGP consegue ler as texturas diretamente da RAM, sem precisar copiar para ler, como os PCIs, ele consegue fazer isso atravs do GART(do ingls Graphics Address Remapping Table). A largura do AGP de 32 bits, que opera a 66 MHz, e essa velocidade de operao multiplicada pela verso AGP, essas verses so 1X, 2X, 4X ou 8X, a verso 1X capaz de ter um data rate de at 266 MB/s, enquanto a ltima verso, 8X pode ter um data rate de at 2133MB/s, e tem a sua velocidade de operao de 533 MHz. As placas AGPs conseguem usar a memria RAM, caso sua prpria memria seja 100% usada, esse valor de RAM pode ser alterado na BIOS do computador. 3.2 PCI-E O PCI-E substituiu o AGP, ele tem uma taxa de operao e transferncia maior. O PCIE utiliza links seriais ponto-a-ponto, onde cada para cria uma lane, que seria como uma rua, assim permitindo que cada um receba e envie dados simultaneamente. Essas lanes so roteadas por um hub na placa me, agindo como um crossbar switch. Isso faz com que cada par possa se comunicar com outros ao mesmo tempo. O nmero de lanes pode ser alterado de acordo com o dispositivo acoplado. O data rate de um PCI-E pode chegar at 500 MB/s por lane, tendo at 16 lanes. Seu clock pode chegar at 2,5 GHz.</p> <p>4. FuncionamentoExistem dois tipos de processamento em uma GPU, o Graphic Pipeline e o mtodo de Stream Processing. 4.1 Graphic Pipeline Cada fragmento e vrtice do pipeline independente e pode ser processado simultaneamente, por causa de sua independncia, os processadores grficos podem usar processamento paralelo em vrias partes do pipeline agilizando o processo. Esse mtodo de organizao de dados permite placa de vdeo receber e responder a pacotes mltiplos de dados em uma nica solicitao.</p> <p>Figura 1. Etapas do processamento realizado pela GPU</p> <p>4.1.1 Bus interface Interface para enviar e receber dados ou comandos. 4.1.2 Vertex Processing Converte cada vertex para uma posio em uma tela 2D. Para determinar sua cor, pode ser adicionado efeito de luz. Se o vertex shader for programvel, pode adicionar deformaes e efeitos. 4.1.3 Clipping Remove todos os pixels que no ficaro visveis na tela 2D, um exemplo so pixels que ficam atrs de um objeto. Primitive Assembly, Triangle SetupVertices so convertidos em triangulos. Aqui as informaes necessrias para gerar atributos de cada pixel so criadas. 4.1.4 Rasterizao Os tringulos criados no estgio anterior so preenchidos com pixels. Cada tringulo chamado de fragmento. 4.1.5 Occlusion Culling Remove todos os pixels escondidos, esses pixels geralmente acabam sendo sobrepostos, por isso so removidos. 4.1.6 Parameter Interpolation Neste estgio, os valores de cada pixel so processados, valores como cor, textura, brilho e outros. 4.1.7 Pixel Shader Aqui so adicionadas as texturas e as cores finais para cada fragmento. O pixel shader programvel permite que a aplicao combine os atributos do pixel, como cor, profundidade e posio. 4.1.8 Pixel Engines Combina matematicamente a cor final de cada fragment, o grau de transparncia e os dados armazenados no frame buffer produzem a cor final, e o pixel armazenado para ser exibido. 4.1.9 Frame Buffer Controller O Frame Buffer Controller usado para manter os valores atuais dos pixels que esto sendo exibidos na tela. Tambm usado para armazenar comandos grficos, texturas e qualquer outro atributo associado a um pixel.</p> <p>Figura 2. Diagrama de Blocos da Arquitetura da srie NVIDIA GeForce 6. Destaque para os processadores dedicados em processamento de vrtices (Vertex Processing) e de pixels (Texture and Fragment Processing).</p> <p>4.2 Stream Processing A partir de um Stream(conjunto de dados), uma srie de operaes podem ser aplicadas a cada elemento do Stream. O sistema de Stream Processing pode sacrificar flexibilidade para ganhar uma execuo mais simples, rpida e com maior eficincia. A principal diferena entre o Stream Processing e o Graphic Pipeline que no Stream Processing o Vertex Shader e o Pixel Shader so unificados, e o Stream Processing pode processar uma maior variedade de dados e com maior paralelismo. Este mtodo efetivo quando se tem trs condies. Paralelismo de Dados: Quando uma mesma operao executada em todos elementos e esses elementos no tem dependncias. Intensidade de Computao: Nmero de aplicaes aritmticas por E/S, exemplo 100:1. Localizao de Dados: um tipo especial de localidade temporal, onde o dado produzido uma vez, e lido, uma ou duas vezes depois na mesma aplicao, e nunca mais usado. As Streams podem capturar esses dados diretamente. As placas mais atuais dispem de at 800 Stream Processors, tendo assim uma enorme capacidade de computao.</p> <p>Figura 3. Diagrama de Blocos da Arquitetura da ATI/AMD Radeon HD 2xxx. Destaque para os processadores unificados.</p> <p>5. Modelo de ProgramaoUm dos maiores desafios do programador transformar conceitos utilizados na programao tradicional em conceitos que podem ser diretamente processados pela GPU. Para aproveitar o potencial do hardware se torna necessrio o uso de ferramentas de desenvolvimento. As primeiras ferramentas surgiram para dar suporte s aplicaes grficas como jogos. No incio a programao era feita em linguagem assembly de cada placa de cada fabricante, o que tornava o processo lento, com mais falhas e pouca portabilidade. 5.1 APIs Para facilitar o desenvolvimento, foram elaboradas APIs (Application Programming Interface) como OpenGL e DirectX. As duas APIs realizam a emulao de funes que o hardware no suporta, aumentando assim a portabilidade. Porm a emulao por software no traz resultados iguais em comparao com a execuo em hardware. 5.1.1 DirectX O DirectX um padro proprietrio mantido pela Microsoft para o sistema operacional Windows e o console Xbox. constitudo por um SDK (Software Development Kit),</p> <p>conjunto de APIs, que so usadas em multimdia. Ela contem APIs como Direct3D, DirectDraw. DirectDraw- desenha grficos 2D(Raster). Direct3D desenha grficos 3D. 5.1.2 OpenGL O OpenGL um padro aberto, ou seja, todos os fabricantes de hardware podem adotlo. Ele mantido por um consrcio de empresas que formam o Khronos Group. As principais empresas so AMD, Apple, IBM, Intel, NVIDIA, Sun. usado para a criao de grficos 2D e 3D. usado para simulaes de vo, visualizao cientifica, realidade virtual e CAD (Computer-Aided Design). 5.2 Linguagens de Programao Vrias linguagens foram desenvolvidas para tirar proveito do hardware grfico. C for Graphics (Cg), High Level Shading Language (HLSL), OpenGL Shading Language (GLSL) so algumas. Com a mudana arquitetural ocorrida nas GPUs, em que os processadores de vrtices e de fragmentos e texturas foram unificados, ficou menos difcil usar as unidades de processamento grfico para propsitos gerais. Destacam-se as plataformas Brook, Sh, AMD Stream e a NVIDIA CUDA. 5.2.1 Brook A plataforma Brook foi desenvolvida em Stanford para permitir a utilizao da GPU para clculo numrico. O sistema baseado em C e o aplicativo pode ser desenvolvido para executar com funes do DirectX e OpenGL. 5.2.2 Sh Sh consiste numa biblioteca que funciona com a linguagem C++. Em 2004 foi criada a empresa RapidMind para comercializar a plataforma e portanto deixou de ser de uso livre. 5.2.3 AMD Stream Plataforma para as GPUs da AMD/ATI. Contm vrias bibliotecas e ferramentas incluindo uma modificao do Brook, chamada Brook+, otimizada para as GPUs da marca. 5.2.4 NVIDIA CUDA Plataforma para GPUs da NVIDIA. Contm bibliotecas e ferramentas, incluindo compilador, para desenvolver aplicaes paralelas para executarem em suas GPUs. baseado nas linguagens C/C++.</p> <p>6. DesempenhoO processador grfico tem alto grau de paralelismo e vazo de memria necessrios para o processamento de imagens cada vez mais complexas. Um exemplo o processador NVIDIA GeForce 7900 GTX com uma vazo de 51.2 GB/s, j a ATI Radeon X1900 XTX consegue alcanar 240 GFLOPS em comparao com o processador Intel Pentium Extreme Edition 965 de uma vazo de mem...</p>