Physics Processing Unit
# Physics Processing Unit

La Physics Processing Unit o PPU, è un microprocessore dedicato per la gestione del calcolo della fisica degli oggetti virtuali, specialmente per quanto riguarda i calcoli di fisica presenti nel motore grafico di un videogioco.

È quindi un'enorme rivoluzione, soprattutto nel campo della grafica tridimensionale, in quanto tutti i movimenti degli oggetti, la dinamica dei fluidi, la simulazione del movimento di capelli e abiti, la distruzione di oggetti e tutto quello che riguarda il tridimensionale non viene più elaborato dalla CPU del computer, ma dal processore della scheda, ottimizzato per quel tipo di calcoli.

Alla CPU viene quindi tolta una determinata mole di lavoro, rendendo disponibile tale potenza risparmiata per l'impiego in altre operazioni, tra cui la gestione del sistema operativo, del motore di gioco, dell'intelligenza artificiale ecc.

## Implementazioni

### Ageia PhysX

Il primo microprocessore ad essere pubblicizzato come PPU prendeva il nome di PhysX e fu introdotto sul mercato dall'azienda chiamata Ageia. Ciò avveniva tra la fine del 2005 e l'inizio del 2006, periodo in cui fu messa in commercio la prima scheda discreta con il microprocessore PPU al posto del GPU. Tale scheda, nella sua prima generazione, aveva le seguenti caratteristiche:

* N° di transistors: 125 milioni
* Dimensioni del die: 182 mm²
* Memoria: 128 MB GDDR3 RAM su interfaccia a 128-bit
* Interfaccia di connessione: PCI
* Test collisione di sfere: 530 milioni/s
* Test collisione di poligoni convessi: 530.000 al sec
* Bandwidth di istruzioni massimo: 20 bilioni/sec
* Consumo: 30 W
* Processo produttivo: 130 nm

I videogiochi che intendevano avvantaggiarsi dell'accelerazione offerta dalla PPU PhysX dovevano usare il kit NovodeX SDK fornito da Ageia stessa. A supportare i prodotti PhysX furono 2 aziende già note per la produzione di schede video: ASUS e BFG Technologies. Oltre alla vendita di schede nel canale retail vennero messi in vendita (in particolare da Dell e Alienware) anche dei PC con la scheda PhysX già installata.

Ageia è stata acquistata da nVidia il 4 febbraio 2008, la quale ha l'intenzione di sfruttare il motore PhysX tramite CUDA e la sua tecnologia per l'utilizzo della GPU per la gestione dei calcoli fisici presenti nei videogiochi.

**nVidia**

Qualunque scheda grafica GeForce con supporto CUDA 2.0 (ovvero tutte le schede della serie 8/9/100/200/400 dotate almeno di 32 Cuda Cores e di 256MB di memoria video) può utilizzare PhysX con i prodotti supportati senza il bisogno di installare una scheda aggiuntiva. nVidia ha comunque continuato a supportare le soluzioni su scheda grafica esterna precedentemente elaborate da Ageia fino alla release 8.xx.xxxx dell'nVidia PhysX System Software.

A partire dai driver ForceWare 186.xx nVidia ha deciso di disattivare il supporto a PhysX quando nel sistema è presente una GPU di un produttore diverso (ad esempio AMD). Fonti interne a nVidia hanno reso noto che la decisione è stata resa necessaria a causa dei costi di sviluppo, per poter garantire uno standard qualitativo maggiore oltre che per motivi di business. Questa decisione ha visto la community di appassionati giungere alla creazione di una patch per Windows 7, che disabilita il controllo del produttore della GPU presente nei driver ForceWare. nVidia ha inoltre aggiunto una bomba ad orologeria nelle versioni 196.xx e 197.xx che rallenta le prestazioni con PhysX attivo e inverte le leggi di gravità nelle applicazioni, causando effetti di fisica sballati; anche questi, rimossi dalla community di appassionati con una successiva patch.

Con l'avvento dei driver ForceWare 257.15, si era inizialmente constatato che nVidia avesse rimosso queste restrizioni; ma in seguito l'azienda ha comunicato su un suo blog che si trattava di un bug dei driver e che la possibilità di utilizzare PhysX con una scheda ATI sarà nuovamente eliminata nella versione WHQL dei prossimi driver ForceWare.

Le modalità di funzionamento di nVidia PhysX sono 3:

* Standard: la singola scheda grafica installata nel sistema si occupa del rendering della scena 3D e del calcolo della fisica del videogioco.
* SLI: le due schede grafiche installate nel sistema lavorano in parallelo tramite la tecnologia SLI e si occupano insieme del rendering della scena 3D e del calcolo della fisica del videogioco.
* Multi-GPU: delle due schede grafiche installate nel sistema, una si occupa del rendering della scena 3D e l'altra del calcolo della fisica del videogioco

I seguenti giochi supportano nVidia PhysX:

* Adrenalin 2: Rush Hour
* Age of Empires III (solo in versione Mac)
* Alpha Prime
* APB
* Army of Two
* Auto Assault
* Alliance of Valiant Arms
* Batman: Arkham Asylum
* Backbreaker
* B.A.S.E. Jumping
* Bet on Soldier: Blackout Saigon
* Bet on Soldier: Blood of Sahara
* Bet on Soldier: Blood Sport
* Beowulf: The Game
* Bladestorm: The Hundred Years' War
* Borderlands
* Brothers in Arms: Hell's Highway
* Captain Blood
* CellFactor: Combat Training
* CellFactor: Revolution
* City of Villains
* Crazy Machines 2
* Cryostasis: Sleep of Reason
* Dark Physics
* Dark Void
* Darkest of Days
* Desert Diner
* Dragon Age: Origins
* Dragonshard
* Dusk 12
* Empire Above All
* Empire Earth III
* Entropia Universe
* Fallen Earth
* Fat Princess
* Frontlines: Fuel of War
* Fury
* Garshasp
* Gears of War
* Race Driver: Grid
* Global Agenda
* Gluk'Oza: Action
* GooBall
* Gothic 3
* Gunship Apocalypse
* Heavy Rain
* Helldorado: Conspiracy
* Hero's Journey
* Hour of Victory
* Huxley
* H.A.V.E. Online
* iFluid
* Infernal
* Inhabited island: Prisoner of Power
* Joint Task Force
* Kran Simulator 2009
* Kuma\War
* Aura of Wisdom
* Mafia 2
* Magic Ball 3
* Mass Effect
* Mass Effect 2
* Medal of Honor: Airborne
* Metro 2033
* Mirror's Edge
* Mobile Suit Gundam: Crossfire
* Monster Madness: Battle for Suburbia
* Monster Truck Maniax
* Myst Online: Uru Live
* Need for Speed: Shift
* Nights: Journey of Dreams
* Nurien
* Odd Blox
* Open Fire Archiviato il 10 aprile 2010 in Internet Archive. (ed il seguito, Open Fire Gold)
* Overlord 2
* Parabellum
* Paragraph 78
* Pirates of the Burning Sea
* Prince of Persia
* Point Blank
* PT Boats: Knights of the Sea
* Rail Simulator
* Red Steel
* Rise of Nations: Rise of Legends
* Risen
* Robert Ludlum's The Bourne Conspiracy
* Roboblitz
* Sacred 2
* Shadowgrounds (solo in versione Linux)
* Shadowgrounds: Survivor
* Sherlock Holmes: The Awakened
* Showdown: Scorpion
* Silverfall
* Sovereign Symphony
* Sonic e il Cavaliere Nero
* Sonic e gli Anelli Segreti
* Speedball 2
* Stoked
* Stoked Rider: Alaska Alien
* Switchball
* Trine
* The Hunt
* The Stalin Subway
* The Void
* Tom Clancy's Ghost Recon Advanced Warfighter
* Tom Clancy's Ghost Recon Advanced Warfighter 2
* Tom Clancy's Rainbow Six: Vegas
* Tom Clancy's Splinter Cell: Double Agent
* Tortuga: Two Treasures
* Turok
* Two Worlds
* Ultra Tubes
* Unreal Tournament 3
* Unreal Tournament 3: Extreme Physics Mod
* Valkyria Chronicles
* Velvet Assassin
* Warfare
* Warmonger: Operation Downtown Destruction
* W.E.L.L. Online
* Winterheart's Guild
* X-Men le origini - Wolverine
* WorldShift
* Zombie Driver

**AMD**

AMD ha invece siglato il 12 giugno 2008 una partnership con Havok, sussidiaria di Intel, che produce il middleware Havok.

**Havok FX**

L'SDK Havok è il maggior contendente del PhysX SDK. Usato in più di 150 giochi, inclusi titoli di grande successo quali Half-Life 2, Alan Wake, BioShock 2 e Fallout 3.

Per competere con PhysX PPU, venne commercializzata una versione del middleware nota come Havok FX che si avvantaggiava del supporto alle tecnologie Multi-GPU quali CrossFire (per ATI) e SLI (per nVidia usando le scheda video già installate nel sistema per accelerare l'esecuzione dei calcoli di fisica).

Le soluzioni offerte da Havok dividono la simulazione della fisica in effetti di fisica e in fisica che influisce sul gameplay, con gli effetti di fisica che sono inviati (ove possibile) alla GPU tramite istruzioni per lo Shader Model 3.0 mentre la fisica che influisce sul gameplay viene normalmente processata dalla CPU. L'importante differenza tra i due è che gli effetti di fisica non influiscono sul gameplay (polvere o piccoli detriti generati da un'esplosione, ad esempio). La maggior parte dei calcoli di fisica, ad ogni modo, è effettuata via software; questo approccio è totalmente differente da quello utilizzato nell'SDK PhysX, il quale invia tutti i calcoli di fisica alla scheda grafica esterna (se presente).

A partire dall'acquisizione di Havok operata da Intel, Havok FX sembra essere stato accantonato e in seguito cancellato.

### Intel Larrabee

Si è molto speculato riguardo alle possibilità che la futura architettura grafica di Intel, chiamata Larrabee possa ben prestarsi al ruolo di PPU; essa è come il processore Cell, situata a metà tra la CPU e la GPU nel campo del general purpose. Intel ha confermato che l'architettura di Larrabee non utilizzerà memoria con funzionalità scratchpad, e sarà pertanto più vicina alle convenzionali gerarchie di cache presenti sulle CPU. Essa, ad ogni modo, avrà delle estensioni che renderanno possibile l'abilitazione all'esecuzione di tante istruzioni con un output di dati piuttosto basso (come avviene, in pratica sulle CPU).

