Bei den modernen Out-Of-Order Architekturen mit ihren internen Optimierungen die dafür sorgen, dass andere Befehle vorgezogen werden wenn diese nicht vom Ergebnis der Befehle abhängen die auf Daten warten und en Vorhersagen die auch versuchen Daten vorab zu laden die gebraucht werden dürften, bringt SMT eben oft wenig bis nichts, denn je besser diese Mechanismen funktionieren, umso seltener muss ein Thread auf Daten warten und lässt den anderen dann die Recheneinheiten nutzen und natürlich wird dann die IPC auch umso besser.
Du denkst viel zu kurz dabei... SMT ist bei weitem nicht nur/ausschließlich für irgendwelche Sortierung von Befehlen gut. Sondern sorgt für höhere Auslastung der Einheiten. Eine CPU bzw. besser, ein Kern besteht nunmal nicht nur aus einer ALU und gut. Sondern im aktuellen Fall sind das 4x ALUs beim Zen, zumindest soweit die Daten bisher richtig und bei Intel ab Haswell, Skylake kann dabei sogar 5-6 "Befehle" decodieren, wärend das bei Haswell noch 4 waren, bei Zen? Keine Ahnung, ob da schon was bekannt ist. Dazu gesellt sich noch die FPU. All das will mit Arbeit gefüttert werden. Kommt nun ein eher mau skalierender Code zum Einsatz, sorgt SMT im meist praxisfremden best case dafür, dass da annähernd doppelte Performance bei rum kommt. Einfach weil schlicht und ergreifend alles im Prozessor mehr kann, die Ausführung dieses (idR sequenziellen) Codes aber mehr (gleichzeitig) nicht zulässt. Hier springt der/ein zweiter Thread auf dem selben physischen Core ein -> und es lüppt.
Und nein, auf einem AMD Prozessor wird höchstwarscheinlich SMT nicht besser skalieren. Aber das bleibt abzuwarten. Maßgeblich dafür dürfte wohl sein, wie viel Durchsatz der Prozessor schafft. Mit "mehr Optimierungspotential bei der Architektur zur Steigerung der IPC" hat das irgendwie nicht viel zu tun... Wenn du da 16 ALUs drauf knallst, kannste mit 4-way oder gar 8-way SMT noch eine gute bis sehr gute Skalierung raus holen. Die pro Takt-Performance (IPC) wird damit aber bestenfalls unwesentlich steigen -> wohl eben, weil der Code gar nicht in der Lage wäre, über derart viele ALUs zu skalieren.
Auch kannst du, im linken Thread INT-Load und im rechten Thread FPU-Load drauf hauen und hast dank/mit SMT eine fast perfekte Skalierung -> also ähnlich/fast gleich zwei physisch unabhängigen Cores, wo eben jeweils nur die ALUs und nur die FPU belastet sind/waren. Darf dann blos nix anderes anfangen zu deckeln. Bspw. der Decoder... -> auch das wird wohl ziemlich sicher bei AMD mit Zen nicht anders ausfallen als bei Intel.
In Programmen, die keine gut vorhersagbare Last erzeugen, kann es sogar Leistung kosten, weil die Threads ständig umverteilt werden müssen, je nach Auslastung des zweiten Threads auf dem Kern. Ist beispielsweise bei vielen 8- Kern- Spielen der Fall, die noch nicht im CPU- Limit sind... Der Leistungsverlust ist gegenüber reinen 4 Kernen dann zwar gering, aber vorhanden. Auch mit ein Grund, warum so viele Hardwarekerne wie unterstützte Threads vorhanden sind, ohne SMT, bei Spielen Sinn ergeben.
Das eine hat mit dem anderen aber nix zu tun... Leistung kostet SMT dort, wo das OS unnötigerweise die Last ungünstig verteilt... Und das tut es hin und wieder bzw. sogar recht häufig... Warum? Weil es VORHER nicht weis, was da für Last erzeugt wird. Woher soll es das auch wissen? Seit Win7 klappt das aber dahingehend ganz brauchbar (unter Win zumindest), dass das OS möglicherst erst den SMT Part belastet, wenn nicht mehr freie Threads anderer Cores frei sind.
Mal davon ab, Ressourcensharing kostet in 99,99% IMMER Leistung. Und genau das tut SMT... Das ist/wäre/wird aber ohne SMT exakt identisch sein, nämlich in dem Fall, wenn sich zwei Softwarethreads unter Last einen physischen Core teilen müssen. Das kommt genau dann vor, wenn eben (wie ab Win7 schon) keine freien Threads mehr vorhanden sind.
Das ist übrigens auch ein Grund, warum die Bulldozer FX8er dort nicht wirklich wegbrechen... Da ist in der Breite einfach mehr da. Ob und wie man sich das dann schön redet, bleibt jedem selbst überlassen... Wenn vier Cores samt SMT unter zu hoher Last einknicken, bei halber Last aber deutlich schneller sind, ist das aus meiner Sicht dennoch ein Vorteil -> und wenn das Einknicken alle Nase lang zu sehen ist, hat man sein Prozessor nicht breit genug gewählt.
Auch hier wird Zen ziemlich sicher keine Ausnahme machen. Kurzum, der Quadcore + SMT wird ziemlich sicher ein ähnliches Verhalten an den Tag legen. Ob er dann vor- oder nach dem Bulldozer FX8 oder FX9 raus kommt, sehen wir dann demnächst...