Wird der SMT Wegfall im Multicore Benchmark nicht auch Nachteile mit sich bringen ?
Ich meine mich zu erinnern dass SMT quasi einen Kern mit 75% seiner Leistung imitiert hat, ohne dabei den Physikalischen Verbrauch eines Extra Kerns zu haben.
(...)
Nein.
Kleiner quick and dirty Kurs SMT:
CPUs arbeiten prinzipiell, also immer, seriell. Das bedeutet, eine Aufgabe nach der anderen. So war es immer. Irgendwann wurden CPUs so schnell, dass man den Eindruck hatte vieles würde gleichzeitig passieren. Hat aber nie gestimmt.
Dann kamen CPUs mit SMT (damals HT genannt). Bei Einkernern bedeutet das ganz einfach, dass die CPU in der Lage ist nach aussen hin, also Richtung Software, anzugeben sie sei zwei CPUs.
Wenn also 2 Aufgaben zu vergeben waren, konnte er beide "annehmen" und musste der Software mit der zweiten Aufgabe nicht sagen, sie müsse warten.
Jetzt ein entscheidender Punkt:
Wenn die beiden Aufgaben jeweils nur wenig Rechenleistung benötigen, kann die CPU tatsächlich beide gleichzeitig, also parallel statt seriell, bearbeiten. Dabei teilt sie im einfachsten Fall Aufgabe 1 50% Rechenleistung zu und Aufgabe 2 ebenfalls.
Vielleicht würde eine der Aufgaben schneller gehen, wenn mehr Rechenleistung zugewiesen wäre, bspw. 80%. Aber der grosse Vorteil war die Reaktionsfreudigkeit. Aufgabe 1 kann bspw. die Umwandlung eines Videos sein, Aufgabe zwei das Öffnen des Startmenüs. Ohne SMT kann ein Einkerner das nur nacheinander, benötigt Aufgabe 1 also eine Weile, hängt der PC aus Sicht des Benutzers, weil das Startmenü sich erst nach Aufgabe 1 öffnet.
Mit SMT läuft Aufgabe 1 minimal langsamer, dafür kann nebenbei das Startmenü geöffnet werden.
Entscheidend ist, wenn eine Aufgabe 100% der Rechenkapazität
braucht, also eine Echtzeitanwendung wie zum Beispiel ein Spiel, ist auch nichts für einen virtuellen zweiten Thread übrig. SMT kann also etwa beschleunigen, wenn 2 Aufgaben vorhanden sind aber keine von beiden 100% der Leistung braucht.
Bei Mehrkernern läuft es prinzipiell genauso, nur dass durch echte CPU Kerne tatsächlich eine parallele Bearbeitung möglich ist. Ein Kern kümmert sich um Aufgabe 1 und einer auf Aufgabe 2. Da man die Leistung des zweiten Kerns sowieso nicht zur Beschleunigung des ersten Kerns nutzen kann (Wenn Aufgabe 1 auf Kern 1 läuft, kann Kern 2 nicht helfen, die Aufgabe lässt sich nicht weiter teilen). Kern 2 kann aber andere Aufgaben gleichzeitig übernehmen. Das sind im Normalfall eben so kleine Aufgaben wie das Startmenü zu öffnen. Dazu noch SMT und eine intelligente Lastverteilung und es können mit zwei Kernen quasi 4 Aufgaben gleichzeitig (parallel) erledigt werden.
Mit mehr Kernen setzt sich das natürlich fort.
Jetzt das Fazit: Wenn eine CPU zu 100% ausgelastet ist, also jeder Kern 100% seiner Rechenlast auf eine nicht weiter teilbare Aufgabe konzentriert, bringt SMT nichts mehr. 100% sind halt 100%, mehr Leistung ist nicht rauszuholen.
Moderne CPUs haben inzwischen so viele Kerne, dass Anwendungen es aber immer seltener schaffen jedem Kern eine Aufgabe zuzuweisen. Viele Aufgaben lassen sich nämlich nicht einfach parallelisieren. Man stelle sich einen Menschen vor, der eine Banane schält. Hilft es, wenn zwei Leute helfen? Kaum, es gibt einfach keine Aufgabe für sie. 20 Menschen würden die Banane nicht zwanzig mal schneller schälen*.
Also stehen eh Leute, oder um zurück zu CPUs zu kommen, Kerne, unbeschäftigt rum. Wenn aber eh immer öfter ein echter Kern übrig ist um anfallende kleine Aufgaben zu erledigen, braucht man immer seltener virtuelle Kerne. Insofern wird SMT immer unwichtiger.
Nochmal "etwas" kürzer:
SMT sorgt nur für eine bessere Verteilung der Aufgaben, kann aber kein Quäntchen mehr Leistung aus einer CPU holen. Die Leistung ist fix, nur die Effizienz in der Abarbeitung der Aufgaben kann erhöht werden.
*Tatsächlich kann man sich Gedanken machen und findet sicher eine Arbeitsabfolge, in der 2 oder 3 zusätzliche Menschen die Aufgabe, Banane schälen, schneller lösen. Aber irgendwann ist auch dieses Potential erschöpft, spätestens bei 50 Menschen oder so findet man auch bei schlauestem Überlegen keine Methode mehr die zusätzlichen Hände in mehr Effizienz umzusetzen. Genau das wird mit Aufgaben in Programmen auch gemacht, man überlegt sich was man irgendwie von einem anderen Kern erledigen lassen kann. Aber ebenso wie bei der Banane ist auch hier irgendwann Schluss, irgendwann helfen mehr Hände/Kerne nicht mehr.
Ein anderer, damit zusammenhängender Fall ist schlechte Mehrkernoptimierung. Da macht man sich genau diese Gedanken nicht sondern lässt jede Banane von einem Menschen schälen. Statt wenigstens jedem einen "Kern" beiseitezustellen der die Schale wegwirft, damit schneller wieder mit dem Schälen der nächsten Banane begonnen werden kann. Das wäre das Paradebeispiel für eine Aufgabe die man parallelisieren kann, wo es aber nicht getan wurde.
Ich hoffe das war jetzt alles nicht zuviel und völlig Banane

.