Citat:
Ursprungligen inskrivet av
lang666
Det vet du inget om. har du fått ett devkit från båda eller?
Varför inte bara läsa den här länken?
http://www.neogaf.com/forum/showthread.php?t=184843 eller kanske se vad DICE gjorde för jobb för att utveckla BF3 till PS3?
http://www.slideshare.net/DICEStudio...-playstation-3 eller kanske lyssna på vad Carmack tyckte när han utvecklade Rage?
http://www.gamersmint.com/ps3-has-ti...e-john-carmack
Men man behöver inte lyssna på andra utvecklare eller ha ett devkit för att inse att det är komplicerat. Lite slutledningsförmåga räcker långt.
Låt oss gå igenom hårdvaran lite snabbt:
CPU
Till PC och 360 har du flera generiska CPU-kärnor. PS3 har en generisk CPU-kärna och 6st SPUer, som närmast påminner om beräkningsenheterna i ett grafikkort. Som många redan känner till är topprestandan man kan få ur GPGPU hög, men den passar långt i från alla arbetslaster. Det är därför vi exekverar spelen på våra processorer och grafiken på grafikkortet i PC-världen.
Grafikkort
Till PC och Xbox 360 har grafikkorten programmerbara shaders, det har inte PS3. Vill man ha motsvarande funktionalitet får man lösa det genom att koda för SPUerna.
Vill man köra med AA på 360 är detta billigt prestandamässigt eftersom 360n har 10MB edram som dedikerad framebuffer. Microsoft designade 360n specifikt för att kunna köra med AA sina titlar. På PS3 är AA en dyrare operation, därför löser man gärna detta på SPU-nivå, med lösningar liknande FXAA/MLAA.
Ett exempel på bra användning av detta är LA Noire:
http://www.lensoftruth.com/head2head...oire-analysis/
RAM
På 360 har man en pool av ram på 512MB. Denna pool kan man fördela mellan cpu och grafik som man vill.
Till PS3 har man inte samma lyx, minnet är uppdelat i 256MB ram och 256MB vram. För att göra situationen bättre så kan faktiskt grafikkort mappa in ramminne, tyvärr till en bandbreddsförlust på 30-40%. Vill du mappa vram till ram är situationen ännu värre, läshastigheten är 16
MB/s när CPUn ska läsa från vram. Därför kan man i praktiken bara utnyttja VRAM som en snabb mellanlagring åt ram, där man låter GPUn flytta minne mellan ram och vram åt CPUn.
http://www.theinquirer.net/inquirer/...re-slow-broken
OS
Sen ska vi inte glömma det inbyggda operativsystemet, det drar resurser med. PS3ans XMB använder 1 SPU och från början totalt 120MB minne ur ram/vram. På senare tid har minneskraven på XMB sjunkit, det senaste jag läste var 43MB ram och 7MB vram.
Dashboard till 360 drar 32MB ur minnespoolen.
http://research.scee.net/files/prese...ew_ACGI_09.pdf
Usecase
Så tillbaka till tanken att vi ska utveckla ett häftigt multiplattformsspel. Tänk BF3 eller GTA4. Spelet nyttjar många CPU-kärnor och vill så klart ha massor av ram och grafikminne.
På PS3 har vi bara en traditionell CPU-kärna, så redan här får vi problem. Vi måste lista ut hur vi ska kunna lyfta loss bitar av koden för att köra på SPU istället. Har vi tur finns det bitar av koden där detta går, har vi otur blir vi fast på huvud-cpun med för lite prestanda.
Vad gäller minnesmängden så har vi mindre minne att tillgå och detta är dessutom låst. Behöver vi extra VRAM är detta ganska lättlöst mot en prestandaförlust, mer RAM är däremot värre, eftersom vi endast kan låna VRAM som cache, inte utnyttja som ytterligare en minnesbank.
Grafikkortet har inte unified shaders, så vi måste hålla shaderanvändandet jämnt fördelat för att inte tappa prestanda. Behöver vi göra egna shaders måste vi utnyttja SPUs till detta. Ska vi köra med AA, bör vi utnyttja SPUs till det.
Även om PS3ans devkit löser många av dessa problem åt mig, så är det fortfarande så att hårdvaran är väldigt annorlunda och sätter en del begränsningar.
BF3 är ett utmärkt exempel på komplexiteten med att utveckla för PS3. Dice har papers (länkat längst upp) på allt häftigt de har gjort för att hämta prestanda ur Cell, men trots allt jobb blev slutresultatet hög input lag.
Citat:
Ursprungligen inskrivet av
Simcon
PS3 hårdvaran ska teoretiskt sett vara bättre, men svårare att optimera för (komplicerad arkitektur).
Citat:
Ursprungligen inskrivet av
SoilBleed
Vad är då skillnaden mellan 0,25 (360) och 1,8 (PS3) tflops? o.0
Citat:
Ursprungligen inskrivet av
jOnÄTÄn
Vad jag läst är la PS3 även den snabbare än 360 fast det inte märks i multiplattforms spel eftersom de optimeras till den klenare hårdvaran. (kan säkert vara ps3 fanboys som lurat mig dock

)
Citat:
Ursprungligen inskrivet av
virtual void
Tittar man på CPU delen på varje konsol så har PS3 ca dubbla flyttalsprestanda jämfört med Xbox, PS3 har ~200 GFLOPS/s vs 100 GFLOPS/s för Xbox360.
Citat:
Ursprungligen inskrivet av
lang666
Nej ps3an har några flera flops än 360n.
Beräkningsprestanda
Eftersom vi alla älskar siffror, låt oss hämta lite specifikationer från wikipedia och göra ett hypotetiskt benchmark. PS3an får utnyttja Cell och 360n får utnyttja CPU och GPGPU-funktionalitet (som PS3 saknar). Jag vet att PS3 har 7st SPUer, men under Linux eller spel är endast 6st tillgängliga eftersom 1 SPU är dedikerad till XMB och Hypervisor. 1 SPU är dock inte tillräcklig för att förändra "vinnaren" i prestanda.
Vi börjar med best case som är single precision.
360: 3x25.6CPU + 240GPU = 316.8GFLOPS
PS3: 25.6CPU + 6*25.6 SPU = 179.2GFLOPS (den sjunde SPUn är upptagen med XMB och hypervisor)
360 endast CPU = 76.8GFLOPS
Okej, så vi prövar i double precision, mig veterligen har Xenos inte stöd för detta eftersom R600, som bygger på Xenos, saknar det.
360: 3*6.4CPU = 19.2 GFLOPS
PS3: 6.4CPU + 6*1.8SPU = 17.2 GFLOPS
Något annat som ibland dyker upp i dessa diskussioner är antalet trådar som kan exekveras.
PS3 kör 2st trådar på PPE och 1 tråd per SPU, totalt 8st
360 kör 2st trådar per kärna (3st) och kan köra 3 trådar på gpgpu, totalt 9st
Jag hoppas detta slog hål på den långlivna myten om Cells överlägsna prestanda. Det är en riktigt häftig och annorlunda CPU, men det är ingen magi om man ser till vad den gör jämfört mot ett grafikkort. Man kan se den som en tight APU där GPU-delen delar minneskontroller med CPUn.
Citat:
Ursprungligen inskrivet av
virtual void
200GFLOPS/s är faktiskt rätt OK även i dag
Om man ser Cell som en GPGPU märks det snabbt att den är åldrad. 200GFLOPs är lågt och blir omkört av Xbox 360, Radeon 2900 och Geforce 8800. I moderna kort mätt, Geforce GT 620 och Radeon 7450.
Blandade källor och länkar:
http://en.wikipedia.org/wiki/Cell_%28microprocessor
http://en.wikipedia.org/wiki/Xenos_%28graphics_chip%29
http://en.wikipedia.org/wiki/Xbox_360_hardware
http://en.wikipedia.org/wiki/PlayStation_3_hardware
http://www.ps3devwiki.com/wiki/CELL_BE
http://news.bbc.co.uk/2/hi/technology/8254159.stm
http://research.scee.net/files/prese...ew_ACGI_09.pdf