Die Spieleentwicklung hinkt der CPU-Entwicklung hinterher
Optimierung für verschiedene Architekturen wird immer wichtiger
Intel warnt PC-Spieleentwickler davor, die rasante Entwicklung der Prozessorarchitekturen zu unterschätzen. Wenn Spiele davon profitieren sollen, müssen sie die verschiedenen CPU-Topologien berücksichtigen - aktuelle und in naher Zukunft erscheinende.
Intels Softwareingenieur Leigh Davies hat anlässlich der GDC Europe 2009 in Köln einen Vortrag vor Spieleentwicklern gehalten. Er betonte, dass größere PC-Spiele teils über drei Jahren entwickelt werden, während Intel jedes Jahr neue CPUs vorstelle - in den geraden Jahren neue Architekturen, in den ungeraden Jahren die Die-Shrinks.
Schon seit 2005 wird Code nicht mehr einfach schneller, wenn eine neue Hardware kommt, so dass sich Designentscheidungen schnell negativ auswirken können. Deswegen sei es wichtig, bei der Entwicklung nicht nur die aktuelle Hardware zu berücksichtigen, sondern auch die der nahen Zukunft. Kommende Technik früh einbeziehen, das ist Davies Forderung.
Spiele sollten CPU-Aufbau berücksichtigen
Multicore-Optimierungen werden immer relevanter, erfordern es aber auch, den Aufbau der verschiedenen CPUs zu berücksichtigen und beispielsweise Cache-Größen im Auge zu behalten, insbesondere wenn sich mehrere Kerne einen Cache teilen. Davies hält es deshalb für wichtig, dass Anwendungen erkennen, auf was für einer CPU sie laufen und wie sie diese optimal ausnutzen können.
Wünschenswert seien verschiedene Code-Pfade, die dann optimal auf die Architekturen angepasst sind. Die Zeit der Optimierung nur auf Dual-Core-CPUs ist für Davies längst vorbei - mit dem Core i7 wurden vier Kerne (Quad Core) zum Standard, für die Zukunft sind Desktop-CPUs mit weiteren Kernen und ebenfalls zusätzlichem Hyperthreading zu erwarten. Damit spielt Davies auf den Gulftown an, der Mitte 2010 mit 6 Kernen kommt und 12 Threads zeitgleich verarbeiten kann.
Als Beispiel für eine fehlgeschlagene Optimierung nannte Davies ein Spiel, das auf Core 2 Duo optimiert war - wobei die Entwickler versucht haben vorherzusagen, in welchen der beiden Kerne die Threads laufen, eventuell Hintergrundtasks auf bestimmte Kerne zu schieben und damit etwas mehr Leistung herauszukitzeln.
Thread Assumptions können jedoch "grausam grausam schiefgehen", so Davies. Für den zeitweiligen Zugewinn an Leistung müsse mit jahrelangen Kopfschmerzen gerechnet werden. In diesem Fall wurde das Spiel auf späteren CPUs nahezu unspielbar - die Ladezeit wuchs von ein paar Sekunden auf über 40 Minuten. Es sei ein Fehler, eine bestimmte CPU vorauszusetzen und nur für diese zu optimieren. Ebenso sollte CPUID richtig genutzt werden, damit die Ermittlung der Kerne, Cachegröße und weiterer Angaben nicht schiefgeht.
Unterstützung für Entwickler
Die nötigen Compiler und Entwicklertools zur Optimierung für verschiedene Architekturen sowie die zu berücksichtigenden Prozessorspezifikationen und Infos zur korrekten Ermittlung von CPUs bietet Intel auf seiner Website an.
Um den eigenen Code ständig zu überprüfen, empfiehlt Davies reguläre, wiederhol- und damit vergleichbare Tests auf verschiedenen PCs, entweder mit eigenen Demonstrations- oder Benchmark-Modi.
opencl läuft nicht auf spielekonsolen und kann auch nicht laufen da die gpus es nicht...
Wieso sollte man "parallelisieren" müssen wenn man sequentiell programmiert und n bis m...
Erst scheiterte das Versprechen und der Vorteil der "10 GHz" Singelcore an der Physik und...
Es würde doch schon damit anfangen, dass unter 32 Bit Systemen moderne Spiele nicht mehr...