Demirug
2006-05-07, 00:07:55
Das folgenden basiert auf vorläufigen Informationen zu Windows Vista und könnte sich bis zur finalen Version noch ändern.
Immer mehr neue Computer enthalten Multicore Prozessoren und sind damit auf entsprechende Software angewiesen um die zusätzliche Leistung des zweiten Kerns auszunutzen. Bei vielen Spielen im heimischen Regal fehlt eine entsprechende Optimierung und die neue CPU zeigt entsprechend wenig Wirkung. Auch bei neuen Titeln finden sich nicht immer entsprechende Optimierungen. Aber selbst bei den Vorreitern im Bereich der Multicore Optimierung wird der zweite Core oftmals nicht vollständig ausgereizt.
Eine Leistungsreserve die auch Microsoft bemerkt hat. Da aufgrund des neuen Treibermodels eine Überarbeitung der Direct3D Runtimes unausweichlich war wurde auch gleich eine entsprechenden Optimierung vorgenommen. Dabei kann die Verlagerung der Arbeit auf den zweiten Core entweder von der Runtime oder vom im User Mode laufenden Treiber selbst vorgenommen werden.
Überlässt der Treiber der Runtime die Optimierung wird diese einen zusätzlichen Thread erzeugen. Fast alle Aufrufe in den Treiber werden dann von diesem Thread vorgenommen. Der Treiber läuft damit weitgehend nicht mehr auf dem gleichem Core wie der Rest vom Spiel die dadurch frei werdende Leistung kann das Spiel nutzen.
Um dies zu erreichen speichert die Direct3D Runtime alle Aufrufe die keine Ergebnis vom Treiber erwarten in einem Zwischenpuffer der dann vom zusätzlichen Arbeitsthread abgearbeitet wird. Aufrufe die einen Rückgabe Wert erfordern müssen aber weiterhin vom Hauptthread ausgeführt werden. Da der Treiber aber immer nur von einem Thread aus gleichzeitig aufgerufen werden darf muss in solchen Fällen immer synchronisiert werden. Glücklicherweise ist die Anzahl der entsprechenden Funktionen aber begrenzt so das man immer noch mit einer recht guten Ausbeute rechnen kann.
Allerdings nur wenn die Optimierung auch aktiviert ist und es gibt eine Reihe von Fällen in denen das nicht der Fall sein wird.
1.Eine Hyperthreading CPU wird nicht in den Genuss der Multiprozessor Optimierung kommen.
2.Läuft die Anwendung im Fenstermodus bleibt die Optimierung ebenfalls aus.
3.Programme die Software Vertex Processing nutzen sind auch ausgeschlossen.
4.Spiele die Direct3D 8 oder ältere Versionen nutzen sind ebenso ausgenommen.
5.Zu guter Letzt kann eine Anwendung auch selbst die Optimierung deaktivieren.
Diese Begrenzungen gelten auch wenn die Multicore Optimierung vom Treiber selbst vorgenommen wird.
Immer mehr neue Computer enthalten Multicore Prozessoren und sind damit auf entsprechende Software angewiesen um die zusätzliche Leistung des zweiten Kerns auszunutzen. Bei vielen Spielen im heimischen Regal fehlt eine entsprechende Optimierung und die neue CPU zeigt entsprechend wenig Wirkung. Auch bei neuen Titeln finden sich nicht immer entsprechende Optimierungen. Aber selbst bei den Vorreitern im Bereich der Multicore Optimierung wird der zweite Core oftmals nicht vollständig ausgereizt.
Eine Leistungsreserve die auch Microsoft bemerkt hat. Da aufgrund des neuen Treibermodels eine Überarbeitung der Direct3D Runtimes unausweichlich war wurde auch gleich eine entsprechenden Optimierung vorgenommen. Dabei kann die Verlagerung der Arbeit auf den zweiten Core entweder von der Runtime oder vom im User Mode laufenden Treiber selbst vorgenommen werden.
Überlässt der Treiber der Runtime die Optimierung wird diese einen zusätzlichen Thread erzeugen. Fast alle Aufrufe in den Treiber werden dann von diesem Thread vorgenommen. Der Treiber läuft damit weitgehend nicht mehr auf dem gleichem Core wie der Rest vom Spiel die dadurch frei werdende Leistung kann das Spiel nutzen.
Um dies zu erreichen speichert die Direct3D Runtime alle Aufrufe die keine Ergebnis vom Treiber erwarten in einem Zwischenpuffer der dann vom zusätzlichen Arbeitsthread abgearbeitet wird. Aufrufe die einen Rückgabe Wert erfordern müssen aber weiterhin vom Hauptthread ausgeführt werden. Da der Treiber aber immer nur von einem Thread aus gleichzeitig aufgerufen werden darf muss in solchen Fällen immer synchronisiert werden. Glücklicherweise ist die Anzahl der entsprechenden Funktionen aber begrenzt so das man immer noch mit einer recht guten Ausbeute rechnen kann.
Allerdings nur wenn die Optimierung auch aktiviert ist und es gibt eine Reihe von Fällen in denen das nicht der Fall sein wird.
1.Eine Hyperthreading CPU wird nicht in den Genuss der Multiprozessor Optimierung kommen.
2.Läuft die Anwendung im Fenstermodus bleibt die Optimierung ebenfalls aus.
3.Programme die Software Vertex Processing nutzen sind auch ausgeschlossen.
4.Spiele die Direct3D 8 oder ältere Versionen nutzen sind ebenso ausgenommen.
5.Zu guter Letzt kann eine Anwendung auch selbst die Optimierung deaktivieren.
Diese Begrenzungen gelten auch wenn die Multicore Optimierung vom Treiber selbst vorgenommen wird.