Interview: id-Softwares van Waveren zu Dreikern-CPUs

PCGH_Carsten

Ex-Redakteur
Wir hatten die Gelegenheit mit Jan Paul van Waveren, Programmierer bei id-Software, über AMDs Dreikern-CPU-Pläne zu sprechen.

attachment.php

Unser Interview-Partner: Jan Paul van Waveren

PCGH: Ist zwischen Dual und Quad-Core-CPUs überhaupt genug Platz für spezielle Optimierungen? Sprich, ist es sinnvoll eine Optimierung für Zweikern-CPUs, eine für Dreikern-CPUs usw. zu haben oder ist es besser, gleich auf eine unbestimmte, hohe Zahl an CPU-Kernen zu optimieren?

Jan Paul van Waveren: Bisher haben die meisten Game-Engines Taks-Level-Parallelismus genutzt, um mehrere CPU-Kerne auszulasten. Unterschiedliche Aufgaben werden definiert und auf verschiedenen Kernen ausgeführt. Typischerweise betrachtet man die Game-Engine als eine Art Pipeline und diese wird in verschiedene Arbeitsstufen aufgebrochen, welche dann auf die verschiedenen Kerne verteilt werden.

Die Quake-4-Engine unterteilt dabei zum Beispiel in zwei Schritte:
  • Spiel-Code und das Front-End des Renderers
  • Render-Back-End

Wenn man nun auf drei Kerne optimiert, kann man die Pipeline weiter aufteilen:

  • Spiel-Code
  • Front-End des Renderers
  • Render-Back-End

Geht man noch einen Schritt weiter, könnte man die Pipeline noch feiner unterteilen oder aber andere Teile des Codes können abgetrennt werden und parallel laufen:

1. Künstliche Intelligenz
2. Effektphysik
3. Spiel-Code
4. Streaming von Texturdaten sowie deren De- und Rekomprimierung
5. Sound-Engine
6. Renderer

Diese letztgenannte Aufteilung ist ziemlich dicht an dem dran, was Enemy Territory: Quake Wars macht. Allerdings bedeuten sechs Programmthreads nicht notwendigerweise, dass man auch eine gute Skalierung bis zu sechs CPU-Kernen hinbekommt. Manche Aufgaben können länger brauchen als andere, auch können mehrere Aufgaben und ihre entsprechenden Threads auf einem Kern laufen. Es ist nicht immer so einfach, Aufgaben so aufzusplitten, dass man alle Kerne gleichmäßig auslasten kann. Außerdem kostet es eine Menge Zeit für die Programmierer, die Aufgaben sauber aufzuteilen, sodass sie möglichst parallel laufen können.


PCGH: Welche Aufteilung kannst Du Dir für typische Spiele-Workloads vorstellen, um sie auf drei CPU-Kerne aufzuteilen?

Jan Paul van Waveren: Für eine möglichst gute Skalierung ist es besser, auf das sogenannte Daten-parallele Modell (im Gegensatz zum oben erwähnten Aufgaben-parallelen) auszuweichen. In diesem Modell arbeiten viele Kerne an denselben Aufgaben, aber alle an unterschiedlichen Daten. Zum Beispiel könnte man anstelle eines einzelnen KI-Threads einfach die KI für die verschiedenen Charaktere in jeweils eigenen Threads rechnen lassen. Jeder Thread erledigt dieselbe Aufgabe indem es die KI-Schritte berechnet, aber anhand unterschiedlicher Daten: Den verschiedenen Charakteren. Ein anderes Beispiel wäre Texturdekomprimierung. Da würden dann mehrere Threads genutzt, um Teile eines Bildes zu dekomprimieren anstatt dass ein einziger Thread das ganze Bild bearbeitet.


PCGH: Sind Konsolenspiele, speziell Xbox-360-Ports, prädestiniert um eher von drei, nicht unbedingt aber von vier CPU-Kernen zu profitieren?

Jan Paul van Waveren: Aktuelle Toptitel werden bereits für mehrere Plattformen wie PC, Mac, Xbox 360 und PS3. Daher ist auch die Engine nicht speziell an eine bestimmte Anzahl an Kernen gebunden. Stattdessen wird auf genügend parallele Threads gesetzt, um auf allen Zielplattformen gut zu skalieren. Vom Programmierer-Standpunkt aus ist das Optimum natürlich ein einziger, unglaublich schneller Kern. Da aber aktuelle CPUs über immer mehr Kerne verfügen, werden wir uns dem nicht entziehen können und immer mehr Programmierzeit investieren müssen, um diese Kerne auch auszureizen.


PCGH: Vielen Dank für deine Zeit und das Gespräch!

Das Interview führte Frank Stöwer, die Fragen stellten Frank Stöwer und Carsten Spille zusammen.
 
Zuletzt bearbeitet:
Ich will jetzt nich sagen der typ hat keine ahnung (was er bestimmt hat) aber er hat irgendwie net direkt auf die frage geantwortet ob 3kerne sinvoll sin oder net! Zumindest ein ja/nein sowas is sinnvoll hätte ich mir gewünscht!
 
Zuletzt bearbeitet:
Ich will jetzt nich sagen der typ hat keine ahnung (was er bestimmt hat) aber er hat irgendwie net direkt auf die frage geantwortet ob 3kerne sinvoll sin oder net! Zumindest ein ja/nein sowas is sinnvoll hätte ich mir gewünscht!
Ich denke es macht aus seiner Sicht halt keinen Unterschied, er arbeitet halt mit der Anzahl Threads, die ihm sinnvoll erscheint, und wieviel Kerne derjenige dann hat, spielt für ihn als entwickler keine so große Rolle.
Mit ner Pauschalaussage wie "4 Kerne sind übertrieben, 3 reichen völlig" würde er sich auch zu weit aus dem Fenster lehnen, weil es ja immer auch darauf ankommt, wie man den Rechner einsetzt, welche Programme und Games laufen etc. ;)
 
Cell und Xenon handeln mehr als 3 Threads parallel

... er hat irgendwie net direkt auf die frage geantwortet ob 3kerne sinvoll sin oder net! Zumindest ein ja/nein sowas is sinnvoll hätte ich mir gewünscht!
Es hat schon deswegen keinen Sinn explizit auf 2, 3, 4 Kerne hin zu entwickeln, weil er selbst sagte, dass grosse Spiele sowieso auf mehreren Plattformen hin entwickelt werden.

Die Xbox 360 nutzt einen nativen Tricoren namens Xenon mit zweifachem SMT (6 Threads können zeitgleich berechnet werden).

Die Playstation 3 nutzt sogar einen Multicore, der Cell, welcher genau genommen 9 Kerne hat (8 SPEs* + einer PPE), wobei diese pro Kern ebenso SMT beherrschen.

Siehst du nun, weswegen er gar nicht auf 3 Kerne eingegangen ist? Die Entwickler sind schon längst über 2 Kerne hinaus.

MFG Bobo(2007)


* = Sony nutzt den Cell mit 7 SPEs, wobei 6 SPEs zur Spieleberechnung genutzt werden.
 
Zurück