Das Thema ist grundsätzlich bereits einige Jahre alt und auch bei uns im Forum hinreichend diskutiert, weshalb wir hier einfach mal auf die entsprechenden Threads und Meldungen verweisen:
Kurz und knapp zusammengefasst: Intel pflegt einen eigenen Compiler und das mit hohem finanziellen Aufwand. Nun kann man darüber streiten, ob es "fair" ist - sofern dieser Begriff in einer Konkurrenz-Situation auf dem freien Markt überhaupt anwendbar ist - dass Intel dafür sorgt, dass die Optimierungen des Intel-Compilers hauptsächlich Intel-Prozessoren zu Gute kommen und AMD-Prozessoren - obwohl sie eventuell von den Optimierungen auch profitieren würden - nicht.
Bereits vor 2 Jahren haben wir ausführlich berichtet, welchen Unterschied es in Sachen Leistung machen kann, wenn Hersteller spezifische Optimierungen genutzt werden oder auch nicht. Damals wurde der VIA Nano Prozessor als Vergleich herangezogen, der es ermöglicht die Vendor CPUID des VIA-Prozessors zu ändern und dem Programm - in diesem Fall dem Futuremark PCMark2005 - eine Intel-CPU vorzugaukeln. Daraufhin stieg der Wert im Memory-Benchmarks von 1845 (CPUID = VIA) auf 2721 (CPUID = Intel) Punkte.
Bei einem AMD-Prozessor dagegen ist es nicht so einfach die sichtbare Vendor ID für die Programme zu manipulieren. Einzige Möglichkeit hier: Virtualisierung. Richtet man über VMWare ein virtualisiertes System ein, ist es sehr wohl möglich, dem Gastsystem eine andere CPUID zu verpassen, als das Hostsystem tatsächlich besitzt. In Agners CPU-Blog wird beschrieben, wie das funktioniert:
By analogy to Andrew's code, I assume that you can make an AMD processor spoof to be "GenuineIntel" with these lines:
Anschließend sieht die Software innerhalb des Gastsystems einen Intel-Prozessor, selbst wenn das Host-System eine AMD-CPU besitzt. Ist die performance-kritische Software, die eingesetzt werden soll, mit einem Intel-Compiler übersetzt, sollte das die Leistung erheblich steigern. Voraussetzung ist allerdings, dass die eingesetzte Software sämtliche Flags korrekt abfragt, denn nicht immer beherrschen aktuelle AMD-Prozessoren auch sämtliche Befehle der vergleichbaren Intel-Prozessoren. Beispiel: SSSE3, das bisher kein AMD-Prozessor beherrscht, oder spezielle SMT SIMD-Befehle älterer Intel-Prozessoren, die auf AMD-Prozessoren in Ermangelung von SMT nicht implementiert waren. Fragt die Software sämtliche relevanten Flags korrekt ab, ist das kein Problem. Ist die Software jedoch schlampig programmiert und "denkt sich", "ah, Intel Prozessor, dann muss dies und jenes ja unterstützt werden", stürzt das Programm bei der Anwendung dieses Virtualisierungstricks kurzerhand ab.
Diesen Artikel bookmarken oder senden an ...
