Hyper-Threading – Wikipedia
![](https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Hyper-threaded_CPU.png/330px-Hyper-threaded_CPU.png)
Hyper-Threading (offiziell genannt Hyper-Threading-Technologie oder HT-Technologie und abgekürzt als HTT oder HT) ist Intels proprietäre SMT-Implementierung (Simultaneous Multithreading), mit der die Parallelisierung von Berechnungen (die mehrere Aufgaben gleichzeitig ausführen) auf x86-Mikroprozessoren verbessert wird. Es wurde im Februar 2002 auf Xeon-Serverprozessoren und im November 2002 auf Pentium 4-Desktopprozessoren eingeführt.[4] Seitdem hat Intel diese Technologie unter anderem in CPUs der Serien Itanium, Atom und Core ‘i’ integriert.[citation needed]
Für jeden physisch vorhandenen Prozessorkern adressiert das Betriebssystem zwei virtuelle (logische) Kerne und teilt die Arbeitslast nach Möglichkeit zwischen ihnen auf. Die Hauptfunktion von Hyper-Threading besteht darin, die Anzahl unabhängiger Anweisungen in der Pipeline zu erhöhen. Es nutzt die superskalare Architektur, bei der mehrere Befehle parallel mit separaten Daten arbeiten. Bei HTT wird ein physischer Kern dem Betriebssystem als zwei Prozessoren angezeigt, sodass zwei Prozesse pro Kern gleichzeitig geplant werden können. Darüber hinaus können zwei oder mehr Prozesse dieselben Ressourcen verwenden: Wenn Ressourcen für einen Prozess nicht verfügbar sind, kann ein anderer Prozess fortgesetzt werden, wenn seine Ressourcen verfügbar sind.
Hyper-Threading erfordert nicht nur gleichzeitige Multithreading-Unterstützung im Betriebssystem, sondern kann auch nur mit einem speziell dafür optimierten Betriebssystem ordnungsgemäß verwendet werden.[5]
Überblick[edit]
![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/KL_Intel_Pentium_4_Northwood.jpg/220px-KL_Intel_Pentium_4_Northwood.jpg)
Die Hyper-Threading-Technologie ist eine von Intel eingeführte Form der simultanen Multithreading-Technologie, während das Konzept hinter der Technologie von Sun Microsystems patentiert wurde. Architektonisch besteht ein Prozessor mit Hyper-Threading-Technologie aus zwei logischen Prozessoren pro Kern, von denen jeder seinen eigenen Prozessorarchitekturstatus hat. Jeder logische Prozessor kann einzeln angehalten, unterbrochen oder angewiesen werden, einen bestimmten Thread auszuführen, unabhängig davon, ob der andere logische Prozessor denselben physischen Kern verwendet.[7]
Im Gegensatz zu einer herkömmlichen Konfiguration mit zwei Prozessoren, bei der zwei separate physische Prozessoren verwendet werden, teilen sich die logischen Prozessoren in einem Hyper-Thread-Kern die Ausführungsressourcen. Diese Ressourcen umfassen die Ausführungsengine, Caches und die Systembusschnittstelle. Durch die gemeinsame Nutzung von Ressourcen können zwei logische Prozessoren effizienter miteinander arbeiten, und ein logischer Prozessor kann Ressourcen von einem blockierten logischen Kern ausleihen (vorausgesetzt, beide logischen Kerne sind demselben physischen Kern zugeordnet). Ein Prozessor bleibt stehen, wenn er auf Daten wartet, nach denen er gesendet hat, damit er die Verarbeitung des aktuellen Threads beenden kann. Der Grad des Nutzens bei Verwendung eines Hyper-Threaded- oder Multi-Core-Prozessors hängt von den Anforderungen der Software ab und davon, wie gut sie und das Betriebssystem geschrieben sind, um den Prozessor effizient zu verwalten.[7]
Beim Hyper-Threading werden bestimmte Abschnitte des Prozessors dupliziert – diejenigen, in denen der Architekturstatus gespeichert ist -, jedoch nicht die Hauptausführungsressourcen. Auf diese Weise kann ein Hyper-Threading-Prozessor als üblicher “physischer” Prozessor und als zusätzlicher “logischer” Prozessor für das Host-Betriebssystem angezeigt werden (HTT-unbewusste Betriebssysteme sehen zwei “physische” Prozessoren), sodass das Betriebssystem zwei Threads planen kann oder gleichzeitig und angemessen verarbeitet. Wenn Ausführungsressourcen von der aktuellen Aufgabe in einem Prozessor ohne Hyper-Threading nicht verwendet werden würden und insbesondere wenn der Prozessor blockiert ist, kann ein mit Hyper-Threading ausgestatteter Prozessor diese Ausführungsressourcen verwenden, um eine andere geplante Aufgabe auszuführen. (Der Prozessor kann aufgrund eines Cache-Fehlers, einer Verzweigungsfehlvorhersage oder einer Datenabhängigkeit stehen bleiben.)[8]
Diese Technologie ist für Betriebssysteme und Programme transparent. Das Minimum, das erforderlich ist, um das Hyper-Threading zu nutzen, ist die Unterstützung für symmetrisches Multiprocessing (SMP) im Betriebssystem, da die logischen Prozessoren als separate Standardprozessoren angezeigt werden.
Es ist möglich, das Betriebssystemverhalten auf Multiprozessor-Hyper-Threading-fähigen Systemen zu optimieren. Stellen Sie sich beispielsweise ein SMP-System mit zwei physischen Prozessoren vor, die beide über einen Hyper-Thread verfügen (für insgesamt vier logische Prozessoren). Wenn der Thread-Scheduler des Betriebssystems kein Hyper-Threading kennt, werden alle vier logischen Prozessoren gleich behandelt. Wenn nur zwei Threads ausgeführt werden können, können diese Threads auf den beiden logischen Prozessoren geplant werden, die zufällig zum selben physischen Prozessor gehören. Dieser Prozessor würde extrem ausgelastet sein, während der andere im Leerlauf wäre, was zu einer schlechteren Leistung führen würde, als dies durch Planen der Threads auf verschiedenen physischen Prozessoren möglich ist. Dieses Problem kann vermieden werden, indem der Scheduler verbessert wird, um logische Prozessoren anders als physische Prozessoren zu behandeln. In gewissem Sinne ist dies eine begrenzte Form der Scheduler-Änderungen, die für NUMA-Systeme erforderlich sind.
Geschichte[edit]
Das erste veröffentlichte Papier, das das beschreibt, was heute als Hyper-Threading in einem Allzweckcomputer bekannt ist, wurde von Edward S. Davidson und Leonard geschrieben. E. Shar im Jahr 1973.[9]
Denelcor, Inc. führte 1982 das Multithreading mit dem Heterogene Element Processor (HEP) ein. Die HEP-Pipeline konnte nicht mehrere Anweisungen aus demselben Prozess enthalten. Zu jedem Zeitpunkt durfte nur eine Anweisung aus einem bestimmten Prozess in der Pipeline vorhanden sein. Sollte eine Anweisung eines bestimmten Prozesses das Rohr blockieren, werden Anweisungen von anderen Prozessen fortgesetzt, nachdem die Rohrleitung entleert wurde.
Das US-Patent für die Technologie hinter Hyper-Threading wurde Kenneth Okin im November 1994 bei Sun Microsystems erteilt. Zu diesem Zeitpunkt war die CMOS-Prozesstechnologie nicht weit genug fortgeschritten, um eine kostengünstige Implementierung zu ermöglichen.[10]
Intel implementierte 2002 Hyper-Threading auf einem Prozessor mit x86-Architektur mit dem auf Foster MP basierenden Xeon. Im selben Jahr war es auch auf dem 3,06-GHz-Pentium 4 in Northwood enthalten und blieb seitdem in allen Pentium 4 HT-, Pentium 4 Extreme Edition- und Pentium Extreme Edition-Prozessoren enthalten. Die Intel Core & Core 2-Prozessorlinien (2006), die die Pentium 4-Modellreihe ablösten, verwendeten kein Hyper-Threading. Die auf der Core-Mikroarchitektur basierenden Prozessoren hatten kein Hyper-Threading, da die Core-Mikroarchitektur ein Nachkomme der älteren P6-Mikroarchitektur war. Die P6-Mikroarchitektur wurde in früheren Iterationen von Pentium-Prozessoren verwendet, nämlich Pentium Pro, Pentium II und Pentium III (plus deren Celeron & Xeon-Derivate zu dieser Zeit).
Intel veröffentlichte im November 2008 die Nehalem-Mikroarchitektur (Core i7), in der Hyper-Threading zurückkehrte. Die Nehalem-Prozessoren der ersten Generation enthielten vier physische Kerne und wurden effektiv auf acht Threads skaliert. Seitdem wurden sowohl Zwei- als auch Sechs-Kern-Modelle veröffentlicht, die vier bzw. zwölf Threads skalieren.[11] Frühere Intel Atom-Kerne waren In-Order-Prozessoren, manchmal mit Hyper-Threading-Fähigkeit, für mobile PCs mit geringem Stromverbrauch und preisgünstige Desktop-PCs.[12] Der Itanium 9300 wurde mit acht Threads pro Prozessor (zwei Threads pro Kern) durch verbesserte Hyper-Threading-Technologie gestartet. Das nächste Modell, das Itanium 9500 (Poulson), verfügt über eine 12-breite Issue-Architektur mit acht CPU-Kernen, die über Hyper-Threading acht weitere virtuelle Kerne unterstützen.[13] Die Intel Xeon 5500-Serverchips verwenden auch bidirektionales Hyper-Threading.[14][15]
Leistungsansprüche[edit]
Laut Intel verwendete die erste Hyper-Threading-Implementierung nur 5% mehr Chipfläche als der vergleichbare Prozessor ohne Hyperthread, aber die Leistung war 15–30% besser.[16][17] Intel behauptet eine Leistungsverbesserung von bis zu 30% im Vergleich zu einem ansonsten identischen, nicht simultanen Multithreading-Pentium 4. In Toms Hardware heißt es: “In einigen Fällen kann ein P4 mit 3,0 GHz und HT sogar einen P4 mit 3,6 GHz und HT schlagen ausgeschaltet.”[18] Intel behauptet auch signifikante Leistungsverbesserungen mit einem Hyper-Threading-fähigen Pentium 4-Prozessor in einigen Algorithmen mit künstlicher Intelligenz.
Insgesamt war die Leistungshistorie des Hyper-Threading am Anfang gemischt. In einem Kommentar zum Hochleistungsrechnen vom November 2002 heißt es:[19]
Hyper-Threading kann die Leistung einiger MPI-Anwendungen verbessern, jedoch nicht aller. Abhängig von der Clusterkonfiguration und vor allem von der Art der auf dem Cluster ausgeführten Anwendung können die Leistungssteigerungen variieren oder sogar negativ sein. Der nächste Schritt besteht darin, mithilfe von Leistungstools zu verstehen, welche Bereiche zu Leistungssteigerungen beitragen und welche Bereiche zur Leistungsverschlechterung beitragen.
Infolgedessen sind Leistungsverbesserungen sehr anwendungsabhängig.[20] Wenn Sie jedoch zwei Programme ausführen, die die volle Aufmerksamkeit des Prozessors erfordern, kann es tatsächlich so aussehen, als ob eines oder beide Programme beim Einschalten der Hyper-Threading-Technologie etwas langsamer werden.[21] Dies ist darauf zurückzuführen, dass das Wiedergabesystem des Pentium 4 wertvolle Ausführungsressourcen bindet und die Prozessorressourcen zwischen den beiden Programmen ausgleicht, wodurch sich die Ausführungszeit unterschiedlich verändert. Die Prozessoren Pentium 4 “Prescott” und Xeon “Nocona” erhielten eine Wiedergabewarteschlange, die die für das Wiedergabesystem erforderliche Ausführungszeit verkürzt und die Leistungseinbußen vollständig überwindet.[22]
Laut einer Analyse von Intel vom November 2009 führen die Auswirkungen von Hyper-Threading auf die Leistung zu einer erhöhten Gesamtlatenz, falls die Ausführung von Threads nicht zu signifikanten Gesamtdurchsatzgewinnen führt, die variieren[20] durch die Anwendung. Mit anderen Worten, die Gesamtverarbeitungslatenz wird aufgrund von Hyper-Threading erheblich erhöht, wobei die negativen Auswirkungen geringer werden, da mehr Threads gleichzeitig die zusätzliche Hardwareressourcennutzung durch Hyper-Threading effektiv nutzen können.[23] Eine ähnliche Leistungsanalyse ist für die Auswirkungen von Hyper-Threading verfügbar, wenn Aufgaben zur Verwaltung des Netzwerkverkehrs ausgeführt werden, z. B. zur Verarbeitung von Interrupt-Anforderungen, die von Netzwerkschnittstellen-Controllern (NICs) generiert werden.[24] Ein anderes Papier behauptet keine Leistungsverbesserungen, wenn Hyper-Threading für die Interrupt-Behandlung verwendet wird.[25]
Nachteile[edit]
Als die ersten HT-Prozessoren veröffentlicht wurden, waren viele Betriebssysteme nicht für die Hyper-Threading-Technologie optimiert (z. B. Windows 2000 und Linux älter als 2.4).[26]
Im Jahr 2006 wurde Hyper-Threading wegen Ineffizienz der Energie kritisiert.[27] Zum Beispiel gab das spezialisierte Low-Power-CPU-Designunternehmen ARM an, dass simultanes Multithreading bis zu 46% mehr Strom verbrauchen kann als gewöhnliche Dual-Core-Designs. Darüber hinaus behaupteten sie, dass SMT das Cache-Thrashing um 42% erhöht, während Dual Core zu einem Rückgang von 37% führt.[28]
Im Jahr 2010 sagte ARM, es könnte simultanes Multithreading in seine zukünftigen Chips aufnehmen.[29] Dies wurde jedoch zugunsten des 64-Bit-Designs von 2012 abgelehnt.[30]
Im Jahr 2013 hat Intel SMT zugunsten einer nicht ordnungsgemäßen Ausführung seiner Silvermont-Prozessorkerne eingestellt, da dies eine bessere Leistung bei besserer Energieeffizienz ergab als eine geringere Anzahl von Kernen mit SMT.[31]
Im Jahr 2017 wurde bekannt, dass die Skylake- und Kaby Lake-Prozessoren von Intel einen Fehler bei der Implementierung von Hyper-Threading hatten, der zu Datenverlust führen konnte.[32]Später wurden Mikrocode-Updates veröffentlicht, um das Problem zu beheben.[33]
Mit Coffee Lake begann Intel 2019, Hyper-Threading nicht mehr in die gängigen Core i7-Desktop-Prozessoren aufzunehmen, mit Ausnahme von Core i9-Teilen der Spitzenklasse oder Pentium Gold-CPUs.[34] Es wurde auch empfohlen, das Deaktivieren von Hyper-Threading zu empfehlen, da neue Angriffe auf CPU-Schwachstellen aufgedeckt wurden, die durch Deaktivieren von HT gemindert werden könnten.[35]
Sicherheit[edit]
Im Mai 2005 hat Colin Percival gezeigt, dass ein böswilliger Thread auf einem Pentium 4 mithilfe eines Timing-Angriffs die Speicherzugriffsmuster eines anderen Threads überwachen kann, mit dem er einen Cache teilt, wodurch der Diebstahl kryptografischer Informationen ermöglicht wird. Mögliche Lösungen hierfür sind, dass der Prozessor seine Cache-Räumungsstrategie ändert oder das Betriebssystem die gleichzeitige Ausführung von Threads mit unterschiedlichen Berechtigungen auf demselben physischen Kern verhindert.[36] Im Jahr 2018 hat das OpenBSD-Betriebssystem das Hyper-Threading deaktiviert, “um zu verhindern, dass Daten aufgrund von Foreshadow / L1TF-Sicherheitslücken möglicherweise aus Anwendungen in andere Software gelangen”.[37][38] Im Jahr 2019 führten eine Reihe von Sicherheitslücken dazu, dass Sicherheitsexperten empfahlen, das Hyper-Threading auf allen Geräten zu deaktivieren.[39]
Siehe auch[edit]
Verweise[edit]
- ^ Stokes, Jon (3. Oktober 2002). “Einführung in Multithreading, Superthreading und Hyperthreading”. Ars Technica. S. 2–3. Abgerufen 30. September 2015.
- ^ Deborah T. Marr; Frank Binns; David L. Hill; Glenn Hinton; David A. Koufaty; J. Alan Miller; Michael Upton (12. Dezember 2006). “Hyper-Threading-Technologie-Architektur und Mikroarchitektur” (PDF). cs.sfu.ca.. Archiviert von das Original (PDF) am 23. September 2015. Abgerufen 30. September 2015.
- ^ Anand Lal Shimpi (5. Oktober 2012). “Das Haswell-Frontend – Intels Haswell-Architektur analysiert”. AnandTech. Abgerufen 30. September 2015.
- ^ “Intel Pentium 4 3.06GHz CPU mit Hyper-Threading-Technologie: Zwei Vögel mit einem Stein töten.” X-Bit-Labore. Archiviert von das Original am 31. Mai 2014. Abgerufen 4. Juni 2014.
- ^ Austauschliste der erforderlichen Intel-Komponenten für den Intel Pentium 4-Prozessor mit HT-Technologie, enthält eine Liste von Betriebssystemen, die Optimierungen für die Hyper-Threading-Technologie enthalten; Dies sind Windows XP Professional 64, Windows XP MCE, Windows XP Home, Windows XP Professional, einige Linux-Versionen wie COSIX Linux 4.0, RedHat Linux 9 (Professional- und Personal-Versionen), RedFlag Linux Desktop 4.0 und SuSe Linux 8.2 (Professional und Persönliche Versionen)
- ^ “Intel Processor Spec Finder: SL6WK”.
- ^ ein b Thomadakis, Michael E. (17. März 2011). “Die Architektur der SMP-Plattformen Nehalem Processor und Nehalem-EP” (PDF). Texas A & M University. p. 23. Archiviert von das Original (PDF) am 11. August 2014. Abgerufen 21. März 2014.
- ^ Hennessy, John L.; Patterson, David A. Computerarchitektur: Ein quantitativer Ansatz. Asanović, Krste, Bakos, Jason D., Colwell, Robert P., Bhattacharjee, Abhishek, 1984-, Conte, Thomas M., 1964- (Sechste Ausgabe). Cambridge, MA. ISBN 0128119055. OCLC 983459758.
- ^ “Ein durch Pipelining implementiertes Multiminiprozessorsystem”, von Leonard Shar und Edward Davidson, IEEE Computer, Februar 1974, S. 42-51, vol. 7 https://www.computer.org/csdl/magazine/co/1974/02/4251/13rRUyoyhIt
- ^ Okin, Kenneth (1. November 1994), US-Patent: 5361337 – Verfahren und Vorrichtung zum schnellen Umschalten von Prozessen in einem Computersystem, archiviert von das Original am 21. September 2015abgerufen 24. Mai 2016
- ^ “Seite nicht verfügbar”. www.intel.com.
- ^ “Intel® Atom ™ Prozessor-Mikroarchitektur”. Intel.com. 18. März 2011. Abgerufen 5. April 2011.
- ^ “Intel stellt neue Itanium Poulson-Funktionen vor”. Tomshardware.com. Abgerufen 2. Juli 2017.
- ^ “Server Processor Index Page”. Intel.com. 18. März 2011. Abgerufen 5. April 2011.
- ^ “Intel Xeon Processor 5500 Series”. Intel.com. Abgerufen 5. April 2011.
- ^ “Wayback Machine” (PDF). 19. Oktober 2012. Archiviert von das Original (PDF) am 19. Oktober 2012.
- ^ 12331095 (28. April 2011). “So bestimmen Sie die Wirksamkeit der Hyper-Threading-Technologie mit einer Anwendung”. software.intel.com.CS1-Wartung: numerische Namen: Autorenliste (Link)
- ^ “Zusammenfassung: In einigen Fällen kann der P4 3.0HT sogar die 3,6-GHz-Version übertreffen: Einzelne CPU im Doppelbetrieb: P4 3,06 GHz mit Hyper-Threading-Technologie”. Tomshardware.com. 14. November 2002. Abgerufen 5. April 2011.
- ^ Tau Leng; Rizwan Ali; Jenwei Hsieh; Christopher Stanton (November 2002). “Eine Studie zum Hyper-Threading in Hochleistungs-Computing-Clustern” (PDF). Dell. p. 4. Abgerufen 12. November 2012.
- ^ ein b Joel Hruska (24. Juli 2012). “Maximierte Leistung: Vergleich der Auswirkungen von Hyper-Threading, Software-Updates”. extremetech.com. Abgerufen 2. März 2015.
- ^ “Bewertung der CPU-Leistung – Benchmark – Pentium 4 2.8 und 3.0”. users.telenet.be.
- ^ “Wiedergabe: Unbekannte Funktionen des NetBurst Core. Seite 15”. Wiederholung: Unbekannte Funktionen des NetBurst Core. Xbitlabs. Archiviert von das Original am 14. Mai 2011. Abgerufen 24. April 2011.
- ^ Valles, Antonio (20. November 2009). “Einblicke in die Leistung der Intel Hyper-Threading-Technologie”. Intel. Archiviert von das Original am 17. Februar 2015. Abgerufen 26. Februar 2015.
- ^ “Netzwerkoptimierung und Leistung”. calomel.org. 12. November 2013. Abgerufen 26. Februar 2015.
- ^ “Dokumentation zum Linux-Kernel: Skalierung im Linux-Netzwerkstapel”. kernel.org. 1. Dezember 2014. Abgerufen 2. März 2015.
Die CPU-Auslastung kann mit dem Dienstprogramm mpstat beobachtet werden. Beachten Sie jedoch, dass auf Prozessoren mit Hyperthreading (HT) jeder Hyperthread als separate CPU dargestellt wird. Für die Interrupt-Behandlung hat HT in ersten Tests keinen Vorteil gezeigt. Begrenzen Sie daher die Anzahl der Warteschlangen auf die Anzahl der CPU-Kerne im System.
- ^ “Hyper-Threading-Technologie – Betriebssysteme, die Optimierungen für die Hyper-Threading-Technologie enthalten”. Intel.com. 19. September 2011. Abgerufen 29. Februar 2012.
- ^ Nachhaltige Praktiken: Konzepte, Methoden, Werkzeuge und Anwendungen. Vereinigung für Informationsressourcenmanagement. Dezember 2013. p. 666. ISBN 9781466648524.
- ^ “ARM ist kein Fan von HyperThreading”. theinquirer.net. 2. August 2006. Abgerufen 29. Februar 2012.
- ^ Jermoluk, Tom (13. Oktober 2010). “Über MIPS und MIPS | TOP500 Supercomputing Sites”. Top500.org. Archiviert von das Original am 13. Juni 2011. Abgerufen 5. April 2011.
- ^ “ARM bringt den ersten 64-Bit-Prozessorkern für Server und Smartphones auf den Markt”. Tech Design Forum. 30. Oktober 2012.
- ^ Rik Myslewski (8. Mai 2013). “Tief in Intels erstem funktionsfähigen mobilen Prozessor: Silvermont”. Das Register. Abgerufen 13. Januar 2014.
- ^ Chirgwin, Richard (25. Juni 2017). “Intels Skylake- und Kaby Lake-CPUs haben einen bösen Hyper-Threading-Fehler.”. Das Register. Abgerufen 4. Juli 2017.
- ^ “Skylake, Kaby Lake Chips haben einen Absturzfehler mit aktiviertem Hyperthreading”. Ars Technica. 26. Juni 2017. Abgerufen 25. November 2017.
- ^ Cutress, Ian (23. April 2019). “Intel Core-Prozessoren der 9. Generation: Alle Desktop- und mobilen 45-W-CPUs angekündigt”. AnandTech.
- ^ Armasu, Lucian (14. Mai 2019). “Intels neuer Specter-ähnlicher Fehler wirkt sich auf Chips aus, die seit 2008 hergestellt wurden”. Toms Hardware.
- ^ Percival, Colin (14. Mai 2005). “Cache fehlt für Spaß und Gewinn” (PDF). Daemonology.net. Abgerufen 14. Juni 2016.
- ^ “OpenBSD deaktiviert Intels Hyper-Threading über Ängste vor CPU-Datenlecks”. Abgerufen 24. August 2018.
- ^ “”‘Deaktivieren Sie SMT / Hyperthreading in allen Intel BIOS ‘- MARC “. marc.info. Abgerufen 24. August 2018.
- ^ Greenberg, Andy (14. Mai 2019). “Meltdown Redux: Intel-Fehler lässt Hacker Geheimnisse von Millionen von PCs abzapfen”. VERDRAHTET. Abgerufen 14. Mai 2019.
Externe Links[edit]
Recent Comments