Ist HyperThreading / SMT ein fehlerhaftes Konzept?

8

Der Grundgedanke hinter HT / SMT war, dass wenn ein Thread abstürzt, ein anderer Thread auf demselben Core die restliche Leerlaufzeit des Kerns übernehmen und damit transparent laufen kann.

  

Im Jahr 2013 fiel Intel SMT zugunsten der Out-of-Order-Ausführung für seine   Silvermont-Prozessorkerne, wie sie fanden, gaben das besser   Leistung.

ARM unterstützt SMT nicht mehr (aus Energiegründen). AMD hat es nie unterstützt. In der Wildnis haben wir immer noch verschiedene Prozessoren, die es unterstützen.

Aus meiner Sicht, wenn Daten und Algorithmen so aufgebaut sind, dass Cache-Misses und darauffolgende Verarbeitungsstopps um jeden Preis vermieden werden, ist HT sicherlich ein überflüssiger Faktor in Multicore-Systemen? Während ich anerkenne, dass der Aufwand für den Kontextwechsel gering ist, da die diskrete Hardware der beiden HyperThreads innerhalb des gleichen physischen Kerns existiert, kann ich nicht sehen, dass dies besser ist als überhaupt kein Kontextwechsel.

Ich schlage vor, dass brauchen für HyperThreading Punkte auf fehlerhafte Software-Design. Gibt es etwas, was mir hier fehlt?

    
Arcane Engineer 15.04.2014, 08:48
quelle

4 Antworten

6

Ob Hyper-Threading hilft und um wie viel sehr viel davon abhängt, was die Threads tun. Es geht nicht nur darum, Arbeit in einem Thread zu erledigen, während der andere Thread auf I / O oder einen Cache-Fehler wartet - obwohl das ein großer Teil der Begründung ist. Es geht darum, die CPU-Ressourcen effizient zu nutzen, um den Gesamtsystemdurchsatz zu erhöhen. Angenommen, Sie haben zwei Threads

  1. Man hat viele Datencache-Misses (schlechte räumliche Lokalität) und verwendet keine Gleitkommazahl, die schlechte räumliche Lokalität ist nicht notwendigerweise, weil der Programmierer keine gute Arbeit geleistet hat, einige Workloads sind von Natur aus so.
  2. Ein anderer Thread streamt Daten aus dem Speicher und führt Gleitkommaberechnungen durch

Mit Hyper-Threading können sich diese beiden Threads die gleiche CPU teilen, man macht Integer-Operationen und Cache-Misses und blockiert, die andere verwendet die Gleitkommaeinheit und der Data Prefetcher ist weit voraus und erwartet die sequentiellen Daten aus dem Speicher. Der Systemdurchsatz ist besser, als wenn das O / S beide Threads abwechselnd auf demselben CPU-Kern plant.

Intel entschied sich dafür, Hyper-Threading nicht in Silvermont zu integrieren, aber das bedeutet nicht, dass es in High-End-Xeon-Server-Prozessoren oder sogar in Prozessoren, die auf Laptops ausgerichtet sind, aufhört. Die Auswahl der Mikroarchitektur für einen Prozessor beinhaltet Kompromisse, es gibt viele Überlegungen:

  1. Was ist der Zielmarkt (welche Art von Anwendungen wird laufen)?
  2. Was ist die Zieltransistor-Technologie?
  3. Was ist das Leistungsziel?
  4. Was ist das Leistungsbudget?
  5. Was ist die Zielformgröße (beeinflusst die Ausbeute)?
  6. Wo passt es in das Preis-Leistungs-Spektrum für die zukünftigen Produkte des Unternehmens?
  7. Was ist das Zielstartdatum?
  8. Wie viele Ressourcen sind verfügbar, um das Design zu implementieren und zu verifizieren? Das Hinzufügen von mikroarchitektonischen Merkmalen fügt eine Komplexität hinzu, die nicht linear ist, es gibt subtile Interaktionen mit anderen Merkmalen und das Ziel ist, so viele Fehler wie möglich vor dem ersten "Tapeout" zu identifizieren, um zu minimieren, wie viele "Schritte" getan werden müssen ein funktionierender Chip.

Das Chip-Budget von Silvermont pro Kern und Leistungsbudget schließt sowohl Out-of-Order-Ausführung als auch Hyperthreading aus, und Out-of-Order-Ausführung bietet bessere Single-Thread-Performance. Hier ist Anandtechs Einschätzung :

  

Wenn ich Intels Design-Philosophie mit Silvermont beschreiben müsste, wäre das eine vernünftige Skalierung. Wir haben das von Apple mit Swift und von Qualcomm mit dem Übergang von Krait 200 zu Krait 300 gesehen. Erinnern Sie sich an die Designregel, die mit dem ursprünglichen Atom eingeführt wurde: Bei jeder Leistungssteigerung von 2% konnten die Atom-Architekten die Leistung höchstens um 1% erhöhen. Mit anderen Worten, die Leistung kann steigen, aber die Leistung pro Watt kann nicht sinken. Silvermont pflegt diese Designphilosophie, und ich denke, ich habe eine Vorstellung davon, wie.

     

Frühere Versionen von Atom verwendeten Hyper Threading, um eine gute Auslastung der Ausführungsressourcen zu erhalten. Hyperthreading hatte eine damit verbundene Leistungseinbuße, aber die Leistungssteigerung reichte aus, um dies zu rechtfertigen. Bei 22nm hatte Intel genug Chipfläche (dank Transistor-Skalierung), um nur mehr Kerne hinzuzufügen, anstatt sich auf HT zu verlassen, um eine bessere Threading-Leistung zu erzielen, so dass Hyper Threading fehlte. Die Energieeinsparungen, die Intel durch die Beseitigung von Hyper Threading erzielt hatte, wurden dann dazu verwendet, um Silvermont zu einem Out-of-Order-Design zu machen, was wiederum zu einer effizienteren Nutzung der Ausführungsressourcen ohne HT führte. Es stellt sich heraus, dass bei 22nm der Würfelbereich, den Intel für die Aktivierung von HT aufgewendet hat, in etwa der gleiche wie der Umordnungspuffer und die OoO-Logik von Silvermont ist, so dass es für den Umzug nicht einmal einen Flächenstrafpunkt gab.

    
amdn 15.04.2014, 09:23
quelle
4

Unabhängig davon, wie gut Ihr Code auf dem Computer geschrieben und ausgeführt wird, gibt es relativ lange CPU-Leerlaufzeiten, in denen die CPU nur darauf wartet, dass etwas passiert. Cache-Misses sind eine Teilmenge des Problems, das Warten auf E / A, Benutzereingaben usw. können alle zu langen Staus in der CPU führen, wo der Fortschritt noch bei dem zweiten Satz von Registern gemacht werden kann. Außerdem gibt es mehrere Ursachen für Cache-Misses, die Sie nicht planen können (ein Beispiel ist das Drücken neuer Anweisungen in einem Zweig, da Ihre ausführbare Datei wahrscheinlich nicht alle in Level 3-Cache passt).

Einer der Hauptgründe dafür, dass Silvermont von HT weggegangen ist, ist die Tatsache, dass man bei 22 nm (relativ) relativ viel mitspielen muss. Infolgedessen können Sie mit mehr physischen Kernen für erhöhte Parallelität durchkommen.

ARM und AMD haben kein Hyper-Threading implementiert, da es sich um die proprietäre Technologie von Intel handelt.

    
It'sPete 15.04.2014 09:00
quelle
4
  1. Nicht alle Programmierer haben genug Wissen, Zeit und viele andere Dinge, um effiziente, Cache-freundliche Programme zu schreiben. Meistens werden nur die kritischen Teile bei Bedarf optimiert. Die anderen Teile haben möglicherweise eine Menge Cache-Fehler
  2. Selbst wenn das Programm mit Cache-Effizienz geschrieben wurde, kann es Cache-Miss nicht vollständig vermeiden, außer für sehr kleine Programme. Und jedes Mal, wenn der Cache versagt, werden Hunderte von Zyklen verschwendet
  3. Nicht nur Intel verwendet jetzt SMT. AMD Bulldozer hat Modul Multithreading was eine partielle SMT ist. Es gibt noch viele andere Architekturen, die SMT verwenden, wie MIPS, PowerPC ... Es gibt sogar CPUs mit 8 oder 16 Threads pro Kern

AMD Modul Multithreading http: //cdn3.wccftech. com / wp-content / uploads / 2013/07 / AMD-Dampfwalze-vs-Bulldozer.jpg Ссылка

    
Lưu Vĩnh Phúc 15.04.2014 10:02
quelle
0

Nachdem ich die 8-Kern-Atome mit Virtualisierung benutzt habe, spreche ich über die Aussicht auf einen solchen Chip mit HT. Ich werde für die meisten Workloads vielleicht nicht zustimmen, aber mit ESXi? Sie werden HT wirklich beeindruckend einsetzen. Der geringe Stromverbrauch sorgt dafür, dass sie für mich erledigt sind. Wenn Sie 16 logische Kerne auf ESXi erhalten, wäre das Preis-Leistungs-Verhältnis wirklich überragend. Ich meine, keine Möglichkeit, die aktuellen Intel-Chips mit 8 Kernen und HT zu bezahlen, und wegen der Art und Weise, wie Vsphere und Produkte für Vsphere pro Proc lizenziert werden, machen doppelte Proc-Hosts für echte kleine Unternehmen keinen Sinn mehr. p>     

John S 19.06.2015 16:38
quelle