quinta-feira, 11 de julho de 2013

Windows 8.1 trás importantes funcionalidades para a indústria dos jogos e da computação

windows-81

Microsoft no Windows 8.1 introduziu uma nova versão do DirectX 11.2,  que trás o  WDDM 1.3, isso  irá permitir um incremental aumento das funcionalidades no uso dos recursos da GPU para computação paralela.  Uma das mais importantes é a habilidade “map default buffer” ou MDB que permite que códigos computacionais rodando numa APU ou SoCs possam acessar dados de CPU e GPU muito mais rapidamente.  E porque isso é bom?  Vamos começar do início.
Hoje  os desenvolvedores precisam realizar vários passos em sua programação para fazer que uma GPU processe dados enviados por uma CPU, normalmente a aplicação aloca um buffer de memória e o código shader lê e escreve informações neste espaço, depois disso, num estágio seguinte é feita a transferência das informações entre CPU e GPU, copiando os dados deste buffer concentrador para outro buffer presente nos dispositivos.  Esta forma de funcionamento era a padrão até o DirectX 11.1, o que inseria um grande gargalo nestas transferência de dados entre dispositivos processantes.  Com o advento das APUs, este processo ficou mais complicado, pois estes processadores se utilizam de uma GPU e uma CPU no mesmo chip, dispensando longos caminhos de troca de informações pelo hardware do sistema, os dados poderiam ser gravados e lidos de uma forma instantânea bastando que se criasse um novo tipo de acesso preferencial e direto para as memórias de cada dispositivo.
small_hsa-slide-3A tecnologia aberta HSA propagada pela AMD é justamente isso, forçar a indústria a adotar um padrão de acesso direto à memória dos dispositivos sem os buffers de transferências convencionais,  se uma GPU precisasse de alguma informação já processada pela CPU, bastaria ela requisitar e receber, sem nenhum outro tipo de procedimento complexo e demorado, o contrário também é possível, a CPU requisita ou grava informações na memória da GPU sem nenhum tipo de limitação.        O HSA está presente na APU AMD do PlayStation 4 e do Xbox One, o que permitiu ganhos de performances expressivos,  livres de gargalos nas transferência de dados entre os dispositivos, como ocorre nos PCs de hoje, desde a linha mais fraca até a de mais alta performance.      No caso do Xbox One, isso explica do porque a Microsoft referencia DirectX 11.2  como exclusivos do PC e Xbox One .   O PC também tem previsão de receber o HSA,  AMD está prometendo a ativação do recurso nas APUs Trinity , Zacate e Kabini, Intel também diz que vai se compatibilizar no Haswell e no Ivy Bridge.
Abrir um canal de comunicação exclusivo entre CPU e GPU é o próximo passo para  a revolução da performance no PC, eliminando múltiplos passos de transferência, a indústria poderá dar um salto de performance sem necessariamente precisar aumentar significativamente o investimento em litografias mais avançadas, já que trocando dados mais rapidamente entre estes chips, você terá aplicações muito mais rápidas, sendo que tudo que é gráfico já obtêm um benefício quase imediato com MDB implantando corretamente.  Obviamente todo este processo é incremental, não veremos do dia para a noite as melhorias aparecerem, pois isso na prática é uma mudança de paradigma na computação convencional, que só durante alguns anos à frente poderemos colher todos os benefícios.
Junto com o MDB no Windows 8.1, Microsoft também agora suporte linkedição de código shader em tempo de execução, ou seja, o desenvolver poderá pré-compilar códigos de execução e embuti-los diretamente na sua aplicação, dispensando este passo.  CUDA 5 e OpenCL 1.2 já contam com este recurso também.