Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp
Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp
Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2.4 <strong>Arquitetura</strong> das GPUs programáveis 29<br />
ponto-flutuante e precisão numérica capaz <strong>de</strong> armazenar valores <strong>de</strong> luminância com faixa dinâmica<br />
estendida e maior qualida<strong>de</strong> <strong>de</strong> filtragem <strong>de</strong> textura.<br />
2.4 <strong>Arquitetura</strong> das GPUs programáveis<br />
Nesta seção <strong>de</strong>screvemos os <strong>de</strong>talhes da arquitetura das GPUs programáveis sobre a qual a ar-<br />
quitetura <strong>de</strong> suporte a tarefas <strong>de</strong> interação <strong>3D</strong> é construída. Também mostramos como as atuais<br />
GPUs po<strong>de</strong>m ser utilizadas como processadores <strong>de</strong> fluxo <strong>de</strong> propósito geral, uma vez que esse tipo<br />
<strong>de</strong> processamento também é utilizado nos estágios <strong>de</strong> processamento <strong>de</strong> nossa arquitetura.<br />
Em geral, as atuais GPUs são equipadas com dois processadores programáveis: o processador<br />
<strong>de</strong> vértices, segundo uma arquitetura MIMD (Multiple Instruction Multiple Data), e o processador<br />
<strong>de</strong> fragmentos, segundo uma arquitetura SIMD (Single Instruction Multiple Data). Recentemente<br />
surgiram placas gráficas equipadas com uma arquitetura SIMD unificada <strong>de</strong> multiprocessamento <strong>de</strong><br />
primitivas, vértices e fragmentos, como as placas da série GeForce 8, da NVIDIA [NVIDIA, 2007a],<br />
e Ra<strong>de</strong>on R600 [ATI, 2007b], da ATI. Entretanto, para melhor compreensão da evolução das placas<br />
gráficas programáveis, <strong>de</strong>talharemos neste texto apenas a arquitetura tradicional especificada pelas<br />
APIs gráficas GL, composta <strong>de</strong> um estágio <strong>de</strong> processamento <strong>de</strong> vértices e outro <strong>de</strong> processamento<br />
<strong>de</strong> fragmentos.<br />
Os processadores <strong>de</strong> vértices e fragmentos não substituem completamente as funcionalida<strong>de</strong>s do<br />
chamado fluxo <strong>de</strong> função fixa <strong>de</strong> ren<strong>de</strong>rização, que é o fluxo <strong>de</strong> ren<strong>de</strong>rização <strong>de</strong>scrito pelo OpenGL<br />
para as gerações anteriores <strong>de</strong> hardware gráfico não programável. Em vez disso, o processamento<br />
realizado por esses processadores po<strong>de</strong> substituir apenas as tarefas <strong>de</strong> transformação geométrica,<br />
avaliação do mo<strong>de</strong>lo <strong>de</strong> iluminação para cada vértice, e texturização com <strong>de</strong>finição <strong>de</strong> modos <strong>de</strong><br />
combinação <strong>de</strong> texturas. Essa escolha <strong>de</strong> arquitetura tem sido a<strong>de</strong>quada para manter a compatibili-<br />
da<strong>de</strong> com aplicações gráficas até agora <strong>de</strong>senvolvidas para hardware gráfico <strong>de</strong> gerações anteriores e<br />
que utilizam APIs como OpenGL e Direct<strong>3D</strong>. Se a aplicação optar por não programar nenhum dos<br />
processadores, o hardware gráfico se comportará como um equipamento <strong>de</strong> terceira geração (ainda<br />
que, internamente, sha<strong>de</strong>rs sejam utilizados para simular o fluxo <strong>de</strong> função fixa).<br />
Para propósitos <strong>de</strong> comparação, a figura 2.2 mostra um diagrama <strong>de</strong> blocos <strong>de</strong>screvendo o fluxo<br />
<strong>de</strong> função fixa <strong>de</strong> ren<strong>de</strong>rização utilizado em hardware gráfico a partir da terceira geração. O hardware<br />
recebe como entrada um conjunto <strong>de</strong> atributos <strong>de</strong> vértices e um conjunto <strong>de</strong> informações <strong>de</strong>screvendo<br />
que primitivas <strong>de</strong>vem ser construídas com tais vértices. Esses dados passam inicialmente por um<br />
estágio <strong>de</strong> montagem <strong>de</strong> vértices (estágio 1 na figura 2.2), no qual os atributos <strong>de</strong> cada vértice são<br />
reunidos para processamento. Após esta etapa, cada vértice é processado por um fluxo <strong>de</strong> transfor-<br />
mação geométrica (estágio 2). Em particular, a posição <strong>de</strong> cada vértice é modificada segundo uma