Uma
Unidade de Processamento de Fisica
, do ingles Physics Processing Unit (PPU), e um
Microprocessador
dedicado, projetado para manipular calculos fisicos especialmente em
motores de fisica
de jogos eletronicos que usam cenarios em 3 dimensoes. Foi criado pela
Ageia
e apresentado pela primeira vez em 2005.
A
Ageia
criou o PPU para tirar do
CPU
o trabalho de calcular a fisica complexa dos jogos, permitindo que os jogos sejam muito mais realistas. O PPU foi focado nas seguintes areas:
dinamica de corpo rigido
,
dinamica de corpo macio
,
deteccao de colisoes
,
simulacao de cabelos e roupas, analise de elementos finitos
e fraturamento de objetos.
A ideia e a de que processadores especializados aliviam o uso de tarefas de uso intenso da
CPU
, assim como a
Unidade de Processamento Grafico
, do ingles Graphics Processing Unit (GPU), executa operacoes graficas no lugar da CPU. O termo foi criado pela empresa
Ageia
a fim de descrever o a unidade de processamento de fisica
PhysX
. Varias outras tecnologias no espectro CPU-GPU possuem caracteristicas em comum com a PPU, apesar da solucao criada pela empresa Ageia foi a unica projetada, comercializada e colocada em um sistema exclusivamente como uma PPU.
Um dos primeiros projetos academicos relacionados a pesquisa de PPUs foi nomeado SPARTA (do ingles Simulation of Physics on A Real-Time Architecture), e foi realizado pela Universidade de Georgia. Este era simples, baseado em um
Field-programmable gate array
, e era limitado em duas dimensoes. Este projeto foi estendido em um sistema mais avancado, baseado em um
circuito integrado de aplicacao especifica
nomeado HELLAS.
Em fevereiro de 2006, foi lancada a primeira PPU PhysX pela empresa Ageia (mais tarde fundida com a
NVIDIA
. Esta unidade e especificamente efetiva no aceleramento de sistemas de particulas, com apenas um pequeno melhoramento de performance sobre fisica de corpos rigidos. A PPU Ageia e extensamente documentada pela patente americana de numero #20050075849. Nvidia/Ageia nao produzem mais PPU, e atualmente, hardware de aceleracao para processamento fisico e suportado em algumas de suas unidades de processamento grafico.
O primeiro processador a ser comercializado como uma PPU foi o microchip
PhysX
, introduzido pela empresa Ageia. Jogos eletronicos que utilizassem da vantagem da PPU PhysX devem utilizar a
SDK PhysX
(tambem conhecida como NovodeX SDK), disponibilizada pela empresa Ageia.
O microchip consiste de um nucleo RISC de uso geral, gerenciando um array de processadores
VLIW
de ponto flutuante
SIMD
que trabalham em uma memoria local, com um
switch-fabric
fazendo a gestao entre os dois pontos. Nao ha uma hierarquia de cache, como visto em uma CPU ou uma GPU.
A PhysX foi disponibilizada atraves de tres empresas do mesmo modo como placas de video eram produzidas.
ASUS
,
BFG Technologies
e ELSA Technologies foram as primeiras fabricantes. Computadores com PPUs ja instaladas eram vendidos por empresas como
Alienware
,
DELL
e Falcon Northwest.
Em fevereiro de 2008, apos a Nvidia comprar a empresa Ageia e eventualmente cortar a acessibilidade de processadores PhysX em sistemas com GPUs actice ATi/AMD, o microchip PhysX parecia pertencer 100% a Nvidia. No entanto, em Marco de 2008, foi anunciado pela Nvidia que os processadores PhysX seriam transformados em um padrao aberto para todos, para que produtores de processadores graficos pudessem ter suporte ao padrao PhysX na proxima geracao de placas graficas. A Nvidia anunciou que o PhysX tambem estaria disnpoivel para suas placas graficas atraves do download de drivers especificos.
As empresas ASUS e BFG Technologies compraram licencas para produzir versoes alternativas a PhysX P1 com 128 MB de memoria GDDR3, da Ageia.
- Um dispositivo multi-core baseado em um conjunto de instrucoes MIPS com hardware de aceleracao fisica e um subsistema de memoria com "varios cores"
- 125 milhoes de Transistores
- Um circuito integrado com tamanho de 128 mm
- Processamento de fabricacao:
130 nm
- Pico maximo de consumo de energia: 30 Watts
- 128 MB de memoria RAM GDDR3 com uma interface de 128 bits
- Um
PCI
3.0 de 32 bits (a ASUS tambem fez uma versao
PCI Express
)
- Testes de colisao de esferas: 530 milhoes por segundo (maximo)
- Testes de colisao convexas: 530 milhoes por segundo (maximo)
- Pico de bandwidth de instrucoes: 20 bilhoes por segundo
A SDK
Havok
e a maior competidora a PhysX SDK. Usada em mais de 150 jogos eletronicos, incluindo grandes titulos como Half-Life 2, Halo 3 e Dead Rising.
Para competir a PPU PhysX, uma edicao conhecida como Havok FX foi otimizada para o uso de tecnologia multi-GPU criada pela ATI (
CrossFire
) e pela Nvidia (
SLI
), usando placas ja existentes para acelerar o processamento de alguns calculos fisicos.
A solucao da Havok divide-se na simulacao da fisica entre o efeito e o gameplay, como fisica de efeito sendo enviadas, se possivel, para a GPU como instrucoes baseadas no
Shader Model
3.0 e fisicas de gameplay sendo processadas na CPU. A distincao importante entre estes dois e que a fisica de efeito nao afeta o gameplay (como poeira ou detritos de uma explosao, por exemplo); a grande maioria de operacoes fisicas ainda sao feitas por software. Esta abordagem diferencia-se significantemente da SDK PhysX, que move todos os calculos para a placa PhysX, se presente.
Desde que a Havok foi adquirida pela Intel, o projeto Havok FX parece ter sido cancelado.
O uso ampliado de
GPGPUS
esta fazendo com que GPUs fiquem cada vez mais apropriadas para o trabalho de PPUs;
DX10
adiciona o tipo de dado inteiro, uma arquitetura unificada de shaders, e um estagio de shader de geometria que permite uma maior variedade de algoritmos ser implementada; CUDA, da NVidia, prove um pouco mais no quesito de comunicacao de threads internas.
No entanto, GPUs sao construidas tendo em mente um tempo maior de latencia, threads mais lentas e tem seus tipos de dados otimizados para processamento de texturas e framebuffers. Isto diferencia-as de PPUs por nao serem tao bem otimizadas para tarefas de simulacao de mundo virtual.
O compilador Codeplay Sieve suporta PPUs, indicando que a physX, da Ageia, poderia efetuar tarefas designadas para GPGPU. No entanto, e muito improvavel que a Ageia persiga este mercado.
E especulado que a Larrabee (uma implementacao da arquitetura x86 com alta taxa de transferencia (throughput) otimizado para muitos cores) seja adequada para assumir o papel de uma PPU; como o Cell, ela se encontra entre uma CPU e uma GPU no espectro de processamento de proposito geral contra processamento especializado back-end de alta performance. A Intel confirmou que a arquitetura de memoria da Larrabee nao ira usar scratchpads, como o Cell ou a PPU Ageia, e ira se parecer mais com uma memoria cache hierarquica, como em CPUs convencionais. No entanto, havera extensoes que permitirao computacao com alta taixa de transferencia (como um componente completo de instrucoes de controle de cache).
A AMD declarou que tem a intencao de permitir que suas
APUs
poderao usar Radeon como um co-processador de vetores, dividindo recursos como a hierarquia de cache. Esta caracteristica de configuracao comecou a aparecer na forma de arquiteturas de sistemas heterogeneos.
Apesar de muito diferente da Phys X, pode-se argumentar que a VUO, do PlayStation 2, e uma limitada e prematura implementacao de PPU. Reciprocamente, pode-se descrever uma PPU para um programador de PlayStation 2 como uma forma evoluida de VUO. As suas caracteristicas e localizacao dentro do sistema sao voltadas ao aceleramento de tarefas do jogo, como fisica e inteligencia artificial; ela pode descarregar tais calculos em sua stream de instrucoes enquanto a CPU esta operando em algo diferente. Sendo uma DSP, no entanto, ela e muito mais dependente da CPU para fazer tarefas realmente uteis em uma game engine e nao seria capaz de implementar uma API de fisica completa, nao podendo assim ser classificada como uma PPU. A VUO, tambem, e capaz de prover um poder de processamento de vertex adicional, apesar de isto ser mais uma caracteristica do sistema do que da unidade em si.
Este uso e similar ao da Havok FX ou calculos fisicos feitos pela GPU do modo que o uma unidade auxiliar de processamento de pontos flutuantes e usada para complementar a CPU, seja em calculos graficos ou fisicos.