SMT bringt immer dann was, wenn die Bearbeitung eines Threads auf Kern ins Stocken gerät, etwa weil er auf I/O wie Speicherzugriffe warten muss, weil z.B. die Vorhersage sich geirrt hat und die Daten nicht vorab in den Cache geladen wurden (bei massiven Speicherzugriffen geht das sowieso irgendwann nicht mehr) oder Sprungvorhersage falsch war und die Befehlspipeline daher neu geladen werden muss. Bei den alten Pentium4 und Atom 330er CPUs die nicht einmal eine Out-of-Order Architektur hatten, hat HT daher extrem viel gebraucht 60% waren da bei vielen Anwendungen durchaus drin. Je optimierter eine Architektur ist, umso besser die Vorhersagen dort klappen und umso höher daher auch deren IPC ist, umso weniger bringt dann eben SMT weil solche Unterbrechungen in der Abarbeitung bei einer optimalen Architektur eben gar nicht mehr vorkommen sollten.Begu schrieb:Von mir mal noch gefährliches Halbwissen zu dem Thema. Ich meine, dass SMT bei AMD besser/schneller whatever umgesetzt ist als bei Intel und auch bei Intel hier unterschiede zwischen den Generationen liegen (bei AMD gibt's ja erst eine Gen).
Wenn AMD bei ZEN+ oder ZEN2 die Architektur auf mehr IPC optimiert, dann wird auch dort der Nutzen von SMT geringer werden. Bei RYZEN hat AMD SMT nämlich nicht besser umgesetzt als Intel bei Kaby Lake, sondern bei andere Dinge schlechter und daher erfolgen dort mehr Unterbrechungen im Ablauf eines Threads die dann der andere Thread des gleichen Kerns nutzt um die Rechenwerke weiterhin auszulasten. Es ist nämlich der Sinn von SMT die Auslastung der Rechenwerke der Kerne möglichst hoch zu halten. Genau das ist aber auch das Ziel der Optimierungen der Architektur, nur da will man dies eben so hinbekommen, dass man es mit einem Thread schafft um eine gute IPC und damit bei kleinem Takt eine hohe Singlethreadperformance zu bekommen indem eben Unterbrechungen der Abarbeitung einer Befehlsfolge möglichst nicht auftreten.