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?
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
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:
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.
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.
AMD Modul Multithreading http: //cdn3.wccftech. com / wp-content / uploads / 2013/07 / AMD-Dampfwalze-vs-Bulldozer.jpg Ссылка
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>
Tags und Links multithreading hyperthreading