AW: The Witcher 3: Zukünftig PS4 und Xbox 720 als Haupt-Entwicklungsplattform?
Trotzdem kommt mit der neuen Generation eine bessere und einfachere Möglichkeit Spiele einigermaßen ähnlich für Xbox, PS4 und aktuelle und kommende PCs auszulegen. Da gibt mir auch praktisch jedes Interview zu diesem Thema (ich selbst entwickle ja keine Spiele, vielleicht macht ihr das ja beruflich) von Leuten die damit Ahnung haben Recht. Xbox 360 war schon (relativ) ähnlich zu PC und PS3 war mit seiner CPU eine komplett andere Geschichte, was sich - so diverse Statements von Entwicklern die ja schon mit der Konsole arbeiten - mit der PS4 EXTREM verbessern wird.
Inwiefern genau, sollen die meilenweit voneinander entfernt sein. Welche Algorithmen, welche Latenzen, wie groß ist der Unterschied tatsächlich. Und das meine ich ernst und nicht als Angriff, ich weiß da einfach viel zu wenig und kann hier nicht nachvollziehen inwiefern die beiden meilenweit (mehr als früher) auseinanderliegen sollen. Bisher hatte ich die PS4 so verstanden, dass nun x86 dort Einzug hält, während mit der PS3 eine völlig andere CPU Architektur zum Einsatz kam. Insofern ist das für mein Verständnis eine Annäherung von PC und Konsole und keine Entfernung.
Das mit dem Lead lasse ich mal außer Acht, da es mich persönlich gerade nicht wirklich interessiert.
Jedenfalls wie gesagt, die Einzelkomponenten (x86 CPU/GPU) sind sich näher gekommen, aber wie das ganze System an sich funktioniert ist noch unterschiedlicher als früher. (Adressierung, Speicherpools)
Das letztere bereitet Kopfzerbrechen bezüglich der Frage, wo der PC denn im Vergleich einzuordnen wäre.
Die Einzelkomponenten mögen stärker sein, dass klassische PC-System arbeitet aber total veraltet im Vergleich zu der PS4.
Die CPU schickt Eingabedaten und nötige Informationen der GPU über den PCIE2/3 Bus zu. (Bis zu 16 GB/s je Richtung)
Dann gibt es wieder Ergebnisse und Daten welche die GPU zurück schicken muss, ist auch je nach Algorithmus und Code unterschiedlich.
Um es mal zu verdeutlichen, es gibt z.B. grob zwei Typen von Interaktion. (Und die Zwischenstufen dazwischen natürlich)
Typ Nr. 1: Die CPU berechnet irgendwelche Grunddaten und schickt es der GPU zu, die GPU erhält das Datenpaket und berechnet selbständig den Rest weiter, dass Bild wird anschließend ausgegeben.
Fertig.
Das wäre z.B. das klassische 3D-Rendering, da schickt die CPU z.B. Dreieckspunkte rüber und letztendlich die Anweisung was gemacht werden soll und die GPU berechnet dann den Rest fertig. Der Austausch an Daten ist sehr gering.
Typ Nr. 2: Die Ping-Pong Interaktion. CPU und GPU berechnen unterschiedliche Szenarien die stark abhängig voneinander sind.
Z.B. die K.I wird von der CPU berechnet, die GPU soll jetzt Nebel, Splitter oder sonst was berechnen.
(Spliter, Nebel etc. haben Auswirkungen auf die Umgebung, dass Materialverhalten von Oberflächen, auf die K.I usw.)
Jetzt was genau wäre das Problem bei interaktiver Physik?
Die Kommunikation. Wenn die GPU z.B. den Nebel berechnet und die CPU die K.I die auf den Nebel reagieren soll, dann braucht die CPU die Daten in ihrem Arbeitsspeicher, um zu verstehen wo der Nebel jetzt eig. ist, um dann den K.I Algorithmus entsprechend dem Nebel zu berechnen.
Und hier hapert es gewaltig an den Latenzen, wie TheBrutus schon eingeworfen hat.
Bis die CPU die Daten per PCIE-Bus bekommt, welche die GPU berechnet hat, kann mehr Zeit vergehen als für die Berechnung an sich.
Das ist auch einer der Gründe wieso GPGPU nicht weitflächig verwendet wird, nicht weil die Programmierer keine Lust oder so haben, nein, weil es Teils einfach keinen Sinn macht.
Z.B. (ganz fiktiv) die CPU berechnet 100.000 Partikel in 40 Minuten, die GPU würde das in 10 Minuten schaffen.
Also wieso nicht die GPU nehmen?
Weil der PCIE zu lahm ist und eine zu hohe Latenzen hat.
Die GPU könnte das in 10 Minuten zwar schaffen, aber das kopieren der Daten würde 50 Minuten dauern.
Somit bräuchte die CPU für ein Ergebnis zwar 4 mal so lange wie die GPU, aber "dank" des Copy-Overheads wäre sie dennoch 20 Minuten schneller fertig.
Diesen Copy-Overhead kann man reduzieren indem GPU und CPU immer näher beieinander sind und man versucht immer mehr Daten für beide zugänglich zu machen, ohne ständig Datensätze zu kopieren.
Das ist der Weg der Zukunft. (AMD arbeitet daraufhin hin, Intel macht das und Nvidia auch.)
Das klassische PC-System hat zwei Speicherpools, VRAM (GDDR) und RAM (DDR) und PCIE dazwischen.
Eine APU oder die Xbox 360 sind da schon prinzipiell im Vorteil.
Es gibt nur einen Speicherpool, es müssen aber Daten dennoch hin und her kopiert werden, weil es keinen gemeinsamen Adressraum gibt.
Die GPU versteht z.B. keine x86 Pointer, die sagen wo welche Adressen zu finden sind, deswegen muss sie immer Anfragen und die CPU muss dann immer Datensätze rüberkopieren und andersherum.
Bei einer APU finden sich deswegen immer noch klassisch "zwei Speicherpools", zwar ist es physikalisch nur noch einer, aber logisch wird immer noch getrennt. (xbox 360, wiiu, Llano, Trinity)
(AMDs jetzige APUs haben aber schon paar Tricks, um paar Kopiervorgänge einzusparen, ebenfalls ist es auch schon möglich kohärente Speicherbereiche zu bilden, wo keine Daten hin und her kopiert werden müssen, allerdings ist so ein coherent request sehr langsam bisher)
Und ab Kaveri oder der PS4 fällt dann der Groschen. Die GPU wird x86 Pointer verstehen und kann direkt anfangen mit den CPU-Datensätzen zu arbeiten.
Das lästige Kopieren wird zum Großteil entfallen.
Heftige Latenzverbesserungen und eingesparte Bandbreite wird sich dadurch ergeben.
GPGPU steht dann in einem völlig neuem Licht.
Statt 50 Minuten irgendein Zeug zu kopieren, wird die GPU sofort damit beginnen zu rechnen und zu schreiben und das wird für die CPU auch völlig transparent sein, sie wird auch erfahren welche Daten sich verändert haben.
Bei gewissen Algorithmen könnte sogar das klassische PC-System limitieren. (Man wird beim PC vielleicht einige Sachen von der CPU und nicht der GPU berechnen, um dem PCIE-Flaschenhals aus dem Weg zu gehen, immerhin sind die Rechenkerne bei den Konsolen nicht so leistungsstark und die GPU ist auch kein Monster, die ist schon mit 3D-Rendering auch gut beschäftigt)
Zieht man Kaveri als Vergleich, dann hat man den ironischen Fall, dass das System genau so fortschrittlich ist, aber die GPU und der Arbeitsspeicher deutlich schwächer und langsamer.
Da wo PCIE kaum limitiert und wo ein Spiel eher klassisch berechnet wird, da wird der PC natürlich keine Probleme haben, aber wird stark auf neue Algorithmen gesetzt und der volle Nutzen aus dem entfallenen Copy-Overhead genutzt, dann wird man da sicherlich in Zukunft beim klassischen PC-System Auswirkungen zu spüren bekommen.
(Jedenfalls je nachdem wie viel in GPGPU investiert wurde, was man absehen wird)