# Unidade de processamento de física

Uma Unidade de Processamento de Física, do inglês Physics Processing Unit (PPU), é um Microprocessador dedicado, projetado para manipular cálculos físicos especialmente em motores de física de jogos eletrônicos que usam cenários em 3 dimensões. 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 física complexa dos jogos, permitindo que os jogos sejam muito mais realistas. O PPU foi focado nas seguintes áreas: dinâmica de corpo rígido, dinâmica de corpo macio, detecção de colisões, simulação de cabelos e roupas, análise de elementos finitos e fraturamento de objetos.
A ideia é a de que processadores especializados aliviam o uso de tarefas de uso intenso da CPU, assim como a Unidade de Processamento Gráfico, do inglês Graphics Processing Unit (GPU), executa operações gráficas no lugar da CPU. O termo foi criado pela empresa Ageia a fim de descrever o a unidade de processamento de física PhysX. Várias outras tecnologias no espectro CPU-GPU possuem características em comum com a PPU, apesar da solução criada pela empresa Ageia foi a única projetada, comercializada e colocada em um sistema exclusivamente como uma PPU.

## História

Um dos primeiros projetos acadêmicos relacionados à pesquisa de PPUs foi nomeado SPARTA (do inglês 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 dimensões. Este projeto foi estendido em um sistema mais avançado, baseado em um circuito integrado de aplicação específica nomeado HELLAS.
Em fevereiro de 2006, foi lançada a primeira PPU PhysX pela empresa Ageia (mais tarde fundida com a NVIDIA. Esta unidade é especificamente efetiva no aceleramento de sistemas de partículas, com apenas um pequeno melhoramento de performance sobre física de corpos rígidos. A PPU Ageia é extensamente documentada pela patente americana de número #20050075849. Nvidia/Ageia não produzem mais PPU, e atualmente, hardware de aceleração para processamento físico é suportado em algumas de suas unidades de processamento gráfico.
* Proetos Académicos de Investigação PPU
* Animação de exemplo SPARTA

## AGEIA PhysX

O primeiro processador a ser comercializado como uma PPU foi o microchip PhysX, introduzido pela empresa Ageia. Jogos eletrônicos que utilizassem da vantagem da PPU PhysX devem utilizar a SDK PhysX (também conhecida como NovodeX SDK), disponibilizada pela empresa Ageia.
O microchip consiste de um núcleo RISC de uso geral, gerenciando um array de processadores VLIW de ponto flutuante SIMD que trabalham em uma memória local, com um switch-fabric fazendo a gestão entre os dois pontos. Não há uma hierarquia de cache, como visto em uma CPU ou uma GPU.
A PhysX foi disponibilizada através de três empresas do mesmo modo como placas de vídeo eram produzidas. ASUS, BFG Technologies e ELSA Technologies foram as primeiras fabricantes. Computadores com PPUs já instaladas eram vendidos por empresas como Alienware, DELL e Falcon Northwest.
Em fevereiro de 2008, após 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% à Nvidia. No entanto, em Março de 2008, foi anunciado pela Nvidia que os processadores PhysX seriam transformados em um padrão aberto para todos, para que produtores de processadores gráficos pudessem ter suporte ao padrão PhysX na próxima geração de placas gráficas. A Nvidia anunciou que o PhysX também estaria disnpoível para suas placas gráficas através do download de drivers específicos.

## PhysX P1 (PPU) Especificações de Hardware

As empresas ASUS e BFG Technologies compraram licenças para produzir versões alternativas à PhysX P1 com 128 MB de memória GDDR3, da Ageia.
* Um dispositivo multi-core baseado em um conjunto de instruções MIPS com hardware de aceleração física e um subsistema de memória com "vários cores"
* 125 milhões de Transistores
* Um circuito integrado com tamanho de 128 mm
* Processamento de fabricação: 130 nm
* Pico máximo de consumo de energia: 30 Watts
* 128 MB de memória RAM GDDR3 com uma interface de 128 bits
* Um PCI 3.0 de 32 bits (a ASUS também fez uma versão PCI Express)
* Testes de colisão de esferas: 530 milhões por segundo (máximo)
* Testes de colisão convexas: 530 milhões por segundo (máximo)
* Pico de bandwidth de instruções: 20 bilhões por segundo

## Havok FX

A SDK Havok é a maior competidora à PhysX SDK. Usada em mais de 150 jogos eletrônicos, incluindo grandes títulos como Half-Life 2, Halo 3 e Dead Rising.
Para competir a PPU PhysX, uma edição conhecida como Havok FX foi otimizada para o uso de tecnologia multi-GPU criada pela ATI (CrossFire) e pela Nvidia (SLI), usando placas já existentes para acelerar o processamento de alguns cálculos físicos.
A solução da Havok divide-se na simulação da física entre o efeito e o gameplay, como física de efeito sendo enviadas, se possível, para a GPU como instruções baseadas no Shader Model 3.0 e físicas de gameplay sendo processadas na CPU. A distinção importante entre estes dois é que a física de efeito não afeta o gameplay (como poeira ou detritos de uma explosão, por exemplo); a grande maioria de operações físicas ainda são feitas por software. Esta abordagem diferencia-se significantemente da SDK PhysX, que move todos os cálculos para a placa PhysX, se presente.
Desde que a Havok foi adquirida pela Intel, o projeto Havok FX parece ter sido cancelado.

## GPUs vs PPUs

O uso ampliado de GPGPUS está 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 estágio de shader de geometria que permite uma maior variedade de algoritmos ser implementada; CUDA, da NVidia, provê um pouco mais no quesito de comunicação de threads internas.
No entanto, GPUs são construídas tendo em mente um tempo maior de latência, threads mais lentas e têm seus tipos de dados otimizados para processamento de texturas e framebuffers. Isto diferencia-as de PPUs por não serem tão bem otimizadas para tarefas de simulação de mundo virtual.
O compilador Codeplay Sieve suporta PPUs, indicando que a physX, da Ageia, poderia efetuar tarefas designadas para GPGPU. No entanto, é muito improvável que a Ageia persiga este mercado.

## Fusão Intel Larrabee & AMD

É especulado que a Larrabee (uma implementação da arquitetura x86 com alta taxa de transferência (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 propósito geral contra processamento especializado back-end de alta performance. A Intel confirmou que a arquitetura de memória da Larrabee não irá usar scratchpads, como o Cell ou a PPU Ageia, e irá se parecer mais com uma memória cache hierárquica, como em CPUs convencionais. No entanto, haverá extensões que permitirão computação com alta taixa de transferência (como um componente completo de instruções de controle de cache).
A AMD declarou que tem a intenção de permitir que suas APUs poderão usar Radeon como um co-processador de vetores, dividindo recursos como a hierarquia de cache. Esta característica de configuração começou a aparecer na forma de arquiteturas de sistemas heterogêneos.

## PS2 - VU0

Apesar de muito diferente da Phys X, pode-se argumentar que a VUO, do PlayStation 2, é uma limitada e prematura implementação de PPU. Reciprocamente, pode-se descrever uma PPU para um programador de PlayStation 2 como uma forma evoluída de VUO. As suas características e localização dentro do sistema são voltadas ao aceleramento de tarefas do jogo, como física e inteligência artificial; ela pode descarregar tais cálculos em sua stream de instruções enquanto a CPU está operando em algo diferente. Sendo uma DSP, no entanto, ela é muito mais dependente da CPU para fazer tarefas realmente úteis em uma game engine e não seria capaz de implementar uma API de física completa, não podendo assim ser classificada como uma PPU. A VUO, também, é capaz de prover um poder de processamento de vertex adicional, apesar de isto ser mais uma característica do sistema do que da unidade em si.
Este uso é similar ao da Havok FX ou cálculos físicos feitos pela GPU do modo que o uma unidade auxiliar de processamento de pontos flutuantes é usada para complementar a CPU, seja em cálculos gráficos ou físicos.
* Portal da física