Escolar Documentos
Profissional Documentos
Cultura Documentos
Charlan Luís Mocelin, Eduardo Fialho Barcellos da Silva, Geison Igor Tobaldini
{charlan.mocelin,eduardofialho}@gmail.com, geison_igor@hotmail.com
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.
Resumo. Esse artigo descreve os aspectos gerais de GPUs, sua história,
evolução, barramentos que são utilizados para interligação entre a GPU e
CPU, seus modos de funcionamento, programação, desempenho e aplicações
em que é utilizada.
1. Introdução
A Unidade de Processamento Gráfico (Graphic Processing Unit, ou GPU) é um
processador especializado em processamento gráfico ou visual. Ele pode ser encontrado
em videogames, computadores pessoais, estações de trabalho e até em celulares. Apesar
de muitas pessoas pensarem que ele existe apenas para processar os gráficos de jogos de
computadores ou videogames, ele possui muitas outras funções 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 vários outros. As GPUs processam as
informações binárias da imagem e as transformam na imagem que os usuários vêem.
Além da capacidade de processar imagens com facilidade, a GPU também é
utilizada para efetuar complexos cálculos matemáticos e geométricos. 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 usuários comuns não necessitavam de um processador para cálculos
complexos, e as interfaces visuais eram simples, não havia a necessidade de ter uma
GPU.
Sua primeira função, foi de processar cálculos com ponto flutuante, com o
tempo, foi descoberta sua facilidade para processar imagens, visto que imagens são
matrizes de números, onde cada número se transforma em um pixel. Para usuários
comuns, a GPU é responsável pela qualidade gráfica do dispositivo, seja ele um
computador, um videogame ou até mesmo um celular, nesses casos, ela é utilizada na
Placa de Vídeo.
Hoje, as GPUs são usadas para vários tipos de pesquisas, como médicas,
químicas, matemáticas, geográficas, e são até usadas em clusters, devido a seu alto grau
de paralelismo.
2. História e Evolução
Desde a criação das primeiras GPUs, ocorreram muitas mudanças, foram descobertas
novas utilizações, novas funções, 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
3. Barramentos
As placas de vídeo podem ser onboard, ou offboard. Uma placa onboard é integrada na
placa mãe do computador, geralmente não tem um desempenho tão bom quanto uma
placa offboard. As placas offboard, podem usar vários tipos de barramentos, mas os
dois principais são os barramentos PCI-E(do inglês Peripheral Component Interconnect
Express), ou o barramento AGP(do inglês Accelerated Graphics Port).
3.1 AGP
O barramento AGP foi criado para melhorar a comunicação 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
transferências mais rápidas 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 através do GART(do
inglês Graphics Address Remapping Table).
A largura do AGP é de 32 bits, que opera a 66 MHz, e essa velocidade de
operação é multiplicada pela versão AGP, essas versões são 1X, 2X, 4X ou 8X, a versão
1X é capaz de ter um data rate de até 266 MB/s, enquanto a última versão, 8X pode ter
um data rate de até 2133MB/s, e tem a sua velocidade de operação de 533 MHz.
As placas AGPs conseguem usar a memória RAM, caso sua própria memória
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 operação e transferência maior. O PCI-
E 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
são roteadas por um hub na placa mãe, agindo como um crossbar switch. Isso faz com
que cada par possa se comunicar com outros ao mesmo tempo. O número 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.
4. Funcionamento
Existem dois tipos de processamento em uma GPU, o Graphic Pipeline e o método de
Stream Processing.
4.1.4 Rasterização
Os triângulos criados no estágio anterior são preenchidos com pixels. Cada triângulo é
chamado de fragmento.
5. Modelo de Programação
Um dos maiores desafios do programador é transformar conceitos utilizados na
programação tradicional em conceitos que podem ser diretamente processados pela
GPU.
Para aproveitar o potencial do hardware se torna necessário o uso de ferramentas
de desenvolvimento. As primeiras ferramentas surgiram para dar suporte às aplicações
gráficas como jogos. No início a programação 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 emulação de funções que o hardware não suporta,
aumentando assim a portabilidade. Porém a emulação por software não traz resultados
iguais em comparação com a execução em hardware.
5.1.1 DirectX
O DirectX é um padrão proprietário mantido pela Microsoft para o sistema operacional
Windows e o console Xbox. É constituído por um SDK (Software Development Kit),
conjunto de APIs, que são usadas em multimídia. Ela contem APIs como Direct3D,
DirectDraw.
• DirectDraw- desenha gráficos 2D(Raster).
• Direct3D – desenha gráficos 3D.
5.1.2 OpenGL
O OpenGL é um padrão aberto, ou seja, todos os fabricantes de hardware podem adotá-
lo. Ele é mantido por um consórcio de empresas que formam o Khronos Group. As
principais empresas são AMD, Apple, IBM, Intel, NVIDIA, Sun.
É usado para a criação de gráficos 2D e 3D. É usado para simulações de vôo,
visualização cientifica, realidade virtual e CAD (Computer-Aided Design).
5.2.1 Brook
A plataforma Brook foi desenvolvida em Stanford para permitir a utilização da GPU
para cálculo numérico. O sistema é baseado em C e o aplicativo pode ser desenvolvido
para executar com funções 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.
O desempenho da GPU está crescendo duas vezes a cada doze meses, ou seja, a
um ritmo maior que o desempenho da CPU que cresce a aproximadamente 1.4 vezes.
Essa diferença é atribuída ao propósito de cada processador.
A unidade de processamento central deve ser otimizada para realizar tarefas
seqüenciais, com várias estruturas de controle para realizar análises de dependência,
predição de desvios e execução fora de ordem. Mesmo com as novas tecnologias, como
multi-threading e vários núcleos no mesmo encapsulamento, não foi possível alterar
significativamente o desempenho por ainda dependerem de estruturas complexas de
controle.
Já a unidade de processamento gráfico deve realizar uma instrução sobre um
conjunto enorme de dados. A execução de instruções segue um vetor de dados. O
processador executa as operações sobre cada unidade do vetor de entrada e coloca os
resultados na mesma ordem num vetor de saída.
Esse modelo é eficiente, pois cada elemento pode ser executado em paralelo. O
processador pode executar sobre os dados que estão mais próximos na hierarquia de
memória sem afetar o resultado da execução.
Figura 5. Comparação do crescimento da vazão de memória de GPUs e CPUs
nos últimos anos.
7. Aplicações
Além da renderização de imagens e vídeos, as GPUs são usadas para cálculos
científicos intensos que podem ser realizadas em um ambiente de alto grau de
paralelismo. Essa forma de uso é chamada de GPGPU (General-Purpose Computation
on Graphics Processing Units).
Simulações de fenômenos físicos, segmentação de imagens, processamento de
sinal, computação geométrica, ordenação de dados, consultas a banco de dados, data
mining.
8. Conclusão
As GPUs proporcionam processamento de alto grau de paralelismo e desempenho.
Estão presentes em desktops, notebooks e consoles de jogos, o que traz uma grande
oportunidade para os desenvolvedores aproveitarem seu hardware.
Os resultados ao seu uso em relação a CPU são animadores. É preciso incentivar
a migração de programas feitos seqüencialmente e que possam ter ganhos bons se
executados paralelamente.
A evolução da GPU para propósitos gerais pode ser considerada algo
relativamente novo. Os esforços da indústria e comunidade científica são de como
aproveitar melhor a arquitetura dos novos processadores e trazer essa melhora ao
público em geral.
9. Termos
Paleta(do inglês, Palette) – Número total de cores que um sistema é capaz de controlar
ou gerar. O número total de cores pode ser diferente do total que pode ser exibido.
Pixel – É o menor elemento da imagem, pode ser um ponto, um quadrado ou um
retângulo. A união dos pixels forma a imagem digital. Chamado também de Picture
element.
Texel – É um pixel de textura, a união de texels forma a textura de uma imagem
digital. Chamado também de Texture Element.
Voxel – É um pixel de volume, a união dos voxels resulta no volume de uma
imagem digital. Chamado também de Volume Element
Blitter(Block Image Transfer): É um bloco lógico com rápida transferência de
dados. Ele é usado para transferir bitmaps, ao invés de transferir bit a bit, transfere em
blocos, enquanto o blitter trabalha, a CPU fica livre para executar outras tarefas.
Renderização – Processamento de imagens digitais. Converte uma série de
símbolos gráficos em um arquivo visual, geração de uma imagem a partir de um
modelo.
Gráficos Vetoriais – usa primitivas geométricas (pontos, quadrados, curvas,
linhas), que são baseadas em equações matemáticas para representar uma imagem.
Rasterização (Raster) – Representação de uma imagem em uma matriz de pixels
para ser exibida em uma superfície 2D, como monitores. Converte um gráfico vetorial
de formas em uma imagem raster (pixels).
Pixel Shader – É capaz de alterar o tom da cor, criar efeitos de luz, sombra,
pontos de luz, transparência e outros. Ele altera pixel por pixel, e não leva em
consideração a imagem completa, nem os pixels vizinhos.
Vertex Shader – Trabalha na estrutura de vértices 3D, melhorando sua
modelagem.
Framebuffer – Transfere um display de vídeo do memory buffer para a saída,
levando a imagem até o monitor. Ele pega o valor de cor de cada pixel.
Memorybuffer – Segura os dados, geralmente é usado quando as velocidade de
entrada de dados e a de saída são diferentes ou variáveis.
Texture mapping unit – Rotaciona e redimensiona a imagem, depois aplica em
uma superfície ou em um objeto 3D.
Referências
AMD/ATI. http://ati.amd.com/technology/streamcomputing/index.html Acesso em:
09/06/09
DevHardware.com. http://www.devhardware.com/c/a/Video-Cards/The-Graphics-Pipe-
line/ Acesso em: 09/06/09
IEEE Computer Society. How GPUs Work http://www.computer.org/portal/site/com-
puter/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/index.jsp?&pName=com-
puter_level1_article&TheCat=1055&path=computer/homepage/Feb07&file=howth-
ings.xml&xsl=article.xsl&;jsessionid=G10s8pkpkP1K0Lk07bXx5dR0mXLS-
j8hXdnLDN5Kjj5GZTJtTTLZ0!1592783441 Acesso em: 09/06/09
John D. Owens, David Luebke, Naga Govindaraju, Mark Harris, Jens Krüger, Aaron E.
Lefohn, and Tim Purcell. A Survey of General-Purpose Computation on Graphics
Hardware. Computer Graphics Forum, 26(1):80–113, Março 2007. http://www.cse.ii-
tb.ac.in/~prekshu/myddp/DDP/papers/ASurveyofGeneralPurposeComputationon-
GraphicsHardware.pdf Acesso em: 03/06/2009.
John D. Owens, Mike Houston, David Luebke, Simon Green, John E. Stone, and James
C. Phillips. GPU Computing. Proceedings of the IEEE Vol. 96 No. 5, Maio 2008. ht-
tps://www-s.ks.uiuc.edu/Publications/Papers/paper.cgi?tbcode=OWEN2008-JS
Acesso em: 04/06/2009
Kayvon Fatahalian, Mike Houston. A Closer Look at GPUs. Communications of the
ACM, Vol. 51, No 10, Outubro 2008. http://doi.acm.org/10.1145/1400181.1400197
Acesso em: 04/06/2009
Kurt Akeley, Pat Hanrahan. The Graphics Pipeline. 2001
http://graphics.stanford.edu/courses/cs448a-01-fall/lectures/lecture2/ Acesso em:
09/06/09
NVIDIA Corporation. GPU Gems 2. 2005 Game Developers Conference, Março 2005.
http://download.nvidia.com/developer/GPU_Gems_2/GPU_Gems2_ch30.pdf Acesso
em: 04/06/2009.
NVIDIA Corporation. CUDA Programming Guide. Maio 2009. http://developer.down-
load.nvidia.com/compute/cuda/2_2/toolkit/docs/NVIDIA_CUDA_Programming_Gu
ide_2.2.pdf Acesso em: 27/05/2009
NVIDIA Corporation. CUDA Zone. http://www.nvidia.com/object/cuda_home.html
Acesso em: 09/06/09
OpenGL. http://www.opengl.org/ Acesso em: 09/06/09
Vítor Oliveira. Computação genérica de alto desempenho com GPUs. Distributed Com-
puter Graphics. http://paginas.fe.up.pt/~aas/pub/Aulas/DiCG/VitorOliveira.pdf Aces-
so em: 07/06/2009
ZDNet.com. ZDNet Definition for: Graphics Pipeline http://dictionary.zdnet.com/defin-
ition/graphics+pipeline.html
Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/Gpu http://en.wikipedi-
a.org/wiki/Commodore_Amiga http://en.wikipedia.org/wiki/Amiga_Hold-and-Modi-
fy http://en.wikipedia.org/wiki/Amiga_Halfbrite_mode http://en.wikipedia.org/wiki/
ANTIC Acesso em: 09/06/09