Jedes Spiel im Jahr 2014 dessen Hauptlast auf einem Kern dümpelt oder alte Befehlssätze verwendet, ist meiner Meinung unzeitgemäß und schlecht programmiert. Das Intel durch die 50% höhere IPC glänzt, verwundert nicht. Am Ende hängt die Performance immer vom schwächsten Glied (Thread) ab. Sieht man sich auf Multithreaded optimierte Anwendungen an, sehen die AMD CPUs deutlich besser aus. Der Verbrauch ist durch die schlechtere Fertigung schlecht, aber der Preis ok.
Du stellst dir das zu einfach vor...
Das Problem ist viel eher, das Programmcode grundsätzlich Sequenziell ist. Das heist, es gibt eine Abfolge von Befehlen, die wird in der Reihenfolge des Aufschreibens abgearbeitet. Das ist Grundsatz beim Programmieren. Dazu kommt, das es extremst viele Abhängigkeiten voneinander gibt. Dir nutzt es absolut gar nix mit mehreren Threads zu arbeiten, wenn diese Threads auf Ergebnise der Berechnungen von anderen Threads warten.
Sogut wie jedes Spiel heuzutage setzt grundsätzlich auf Multithreading. Nur ist der am Ende resultierende Performancevorteil eben stark abhängig von dem, was die Anwendung macht. Um so mehr generische Lastszenarien generiert werden, desto mehr kann MT potentiell punkten. Zeitlich gesehen kurze Berechnungsschritte über MT abzufackeln kostet den Programmierer haufenweise Arbeit, aber das Ergebnis wird sich wenn überhaupt nur unwesentlich verschnellern.
Bei Spielen kommt noch erschwerend hinzu, dass das Ganze einfach mal einer eigenen "Zeit" untersteht. Das Spiel läuft idR in einem gewissen Takt, der fix ist. Die Zeiten, wo die Spielegeschwindigkeit an der CPU Geschwindigkeit gekoppelt waren, sind lange schon vorbei. Das heist also, du berechnest grundsätzlich die Daten, die notwendig sind und ist das rum, wartet das ganze bildlich gesehen auf den nächsten Takt. Die Objekte in einem Spiel bewegen sich nicht schneller, wenn die CPU Leistung steigt. Wenn also die Berechnung der Bewegung abgeschlossen ist, dann ist dieser Teilabschnitt des Programmcodes fertig und wartet auf den nächsten Takt.
Von unzeitgemäß und schlecht programmiert kann man da lange nicht sprechen. Weil es einfach Gegebenheiten gibt, die man mit MT nicht ändern kann. Ontop kommt die Tatsache, das Spiele aus vielen verschiedenen Teilen bestehen, die auf der CPU Last erzeugen. Man kann diese Teile in Sachen Komplexität und somit in Sachen benötigter Zeit für die Berechnung idR einzeln skalieren. Das bringt dir aber grundsätzlich auch massive Nachteile, denn du als Programmierer musst dich darum kümmern, die einzelnen Teile wieder einzufangen und am Ende zum Gesamten zusammenfügen. Hast du bspw. vier Teile von sagen wir Sound, KI, Physik und Spielberechnung, die je 5ms brauchen, kannst du das ggf. auf vier Threads verteilen. Heist in Summe 5ms benötigte Zeit. Nun kommt ne aufgeblähte KI Berechnung dazu, die bspw. 20ms pro Durchlauf benötigt bedeutet am Ende eben, das deine FPS niemals nie schneller als diese 20ms sein können. Aus 5ms werden also 20ms. Die restlichen 15ms sind aber leerlauf für die Sound, Physik und Spieleberechnung.
Unterm Strich, heutige Spiele bedienen sich häufiger dem Trick, das man einfach die einzelnen Teile der Berechnungen auf MT auslegt. Wie im Beispiel eben die KI Berechnung. Das heist, man gestaltet die einzelnen Teile zunehmend komplexer um MT auszunutzen. Was dem Spiel mehr Möglichkeiten gibt. Am generellen Vorgehen wird sich dabei aber absolut gar nix ändern... Denn das Spiel läuft nach wie vor in seinem eigenen Takt und die Abhängigkeit zu den FPS ist/bleibt einfach als fixes Limit gegeben.
-> eventuell sehen wir in Zukunft irgendwann mal Titel, die durch steigende Rechenleistung zunehmend intelligenter werden. Aber das wird so schnell definitiv nicht passieren
HTT (HyperThreadingTechnologie) ist allgegenwärtig, daher nutzen die meisten Compiler diese Technik unabhängig von der Zielsystem Hardware.
AMD hat nur HT (Hypertransport)
aber kein HTT.
Das eine hat mit dem anderen aber mal so gar nix gemein...
Das compilieren auf die Zielhardware wird inzwischen beim user gemacht bzw. in Echtzeit übersetzt, dadurch kann man auch mehr parallelisieren.
Auch das halte ich für ein Gerücht...
Zumal man damit ebenso nicht mehr oder weniger "parallelisieren" kann.