Fragen? Antworten! Siehe auch: Alternativlos
Und zwar hat Intel seit Jahren in ihrem Prozessoren "Hyperthreading", deren Markennamen für eine Technik namens Simultaneous Multithreading (SMT). Bei Intel bringt das so 20% Mehrleistung, wenn man einen zweiten Thread startet und der auf dem virtuellen Core läuft. Kommt natürlich immer auf den Code an, klar.
AMD hat seit Ryzen auch SMT, aber bei denen bringt das 40%. Ich habe mich die ganze Zeit gefragt, wieso. Jetzt glaube ich, die Erklärung zu haben.
Und zwar hat Intel ja, wie wir jetzt wissen, bei ihrer spekulativen Ausführung von Instruktionen beschissen, und hat den Load vor den Zugriffscheck vorgezogen. Der Load wird schon gemacht, wenn die CPU sich noch nicht sicher ist, ob der Load erlaubt sein wird (die Prüfung davon kostet auch Zeit). Wenn Intel dann feststellt, dass der Load nicht erlaubt war, ist es nicht schlimm, wenn die Daten in den Cache geladen wurden, denkt sich Intel. Und das lief auch jahrelang prima, bis jemandem auffiel, dass das ein Sicherheitsproblem ist.
So, nehmen wir mal an, Intel hätte nicht auf diese Art für Benchmarks beschissen. Was wäre der Effekt gewesen? Die Latenz für die Load-Instruktionen wäre hoch gegangen. Und was macht die CPU, wenn gerade irgendwas hängt (weil die Latenz zu hoch ist)? Sie führt per SMT einen anderen Thread aus. Das ist die Idee von SMT.
Was, so frage ich mich gerade, wenn die 20% mehr SMT-Performance bei AMD genau die 20% sind, die Intel hier durch Senken der Sicherheit rausgeschummelt hat? AMD hat einfach ehrlich gestallt in den Fällen. Und das geht jetzt dank SMT nicht mehr verloren.
Ich fühlte mich spontan an Dieselgate erinnert. :-)