Simultanes Multithreading

Simultanes Multithreading (SMT) ist eine Technik zur Verbesserung der Gesamteffizienz von Superscalar CPUs mit Hardware -Multithreading. SMT ermöglicht mehrere unabhängige Themen Ausführung, um die von Modern bereitgestellten Ressourcen besser zu nutzen Prozessorarchitekturen.

Einzelheiten

Der Begriff Multithreading ist mehrdeutig, da nicht nur mehrere Threads gleichzeitig auf einem CPU -Kern ausgeführt werden können, sondern auch mehrere Aufgaben (mit unterschiedlichen Aufgaben Seitentabellen, anders Aufgabenstaatsegmente, anders Schutzringe, anders E/A -Berechtigungen, etc.). Obwohl sie im selben Kern laufen, sind sie vollständig voneinander getrennt. Multithreading ist im Konzept ähnlich wie Präventiver Multitasking wird jedoch auf der Ausführung der Thread -Ausführung in modernen Supercalar -Prozessoren implementiert.

Simultaneous Multithreading (SMT) ist eine der beiden Hauptimplementierungen von Multithreading, die andere Form ist Temporales Multithreading (auch als Super-Threading bekannt). Beim zeitlichen Multithreading kann jeweils nur ein Anweisungsfaden in einer bestimmten Pipeline -Phase ausgeführt werden. Beim gleichzeitigen Multithreading können Anweisungen von mehr als einem Thread gleichzeitig in einer bestimmten Pipeline -Stufe ausgeführt werden. Dies geschieht ohne große Änderungen an der grundlegenden Prozessorarchitektur: Die wichtigsten Ergänzungen sind die Möglichkeit, Anweisungen aus mehreren Threads in einem Zyklus zu holen, und eine größere Registerdatei, um Daten von mehreren Threads zu halten. Die Anzahl der gleichzeitigen Fäden wird von den Chip -Designern entschieden. Zwei gleichzeitige Fäden pro CPU -Kern sind häufig, aber einige Prozessoren unterstützen bis zu acht gleichzeitige Fäden pro Kern.

Da es unweigerlich den Konflikt zu gemeinsamen Ressourcen erhöht, kann es schwierig sein, seine Wirksamkeit zu messen oder zuzustimmen. Die gemessene Energieeffizienz von SMT mit parallelen nativen und verwalteten Arbeitsbelastungen bei historischen 130 nm bis 32 nm Intel SMT (Hyper-Threading) Implementierungen ergaben, dass SMT in 45 nm und 32 nm-Implementierungen selbst bei Atomprozessoren in Ordnung äußerst energieeffizient ist.[1] In modernen Systemen nutzt SMT die Parallelität effektiv mit sehr wenig zusätzlicher dynamischer Leistung aus. Das heißt, selbst wenn die Leistungsgewinne minimal sind, können die Einsparungen des Stromverbrauchs beträchtlich sein.[2]

Einige Forscher[wer?] haben gezeigt, dass die zusätzlichen Fäden proaktiv verwendet werden können, um a zu säen gemeinsame Ressource Wie ein Cache, um die Leistung eines anderen einzelnen Threads zu verbessern und zu behaupten, dass SMT nicht nur die Effizienz erhöht. Andere[wer?] Verwenden Sie SMT, um eine redundante Berechnung für eine gewisse Fehlererkennung und Wiederherstellung bereitzustellen.

In den meisten aktuellen Fällen geht es bei SMT jedoch um Versteck Speicherlatenz, Steigerung der Effizienz und Erhöhung des Durchsatzes von Berechnungen pro Menge der verwendeten Hardware.

Taxonomie

Im Prozessordesign gibt es zwei Möglichkeiten, die Parallelität auf dem Chip mit weniger Ressourcenanforderungen zu erhöhen: Eine ist die Superscalar-Technik, die versucht zu nutzen Parallelität auf Befehlsebene (ILP); Der andere ist ein Multithreading -Ansatz, der ausnutzt Parallelität auf Fadenebene (TLP).

Superscalar bedeutet, mehrere Anweisungen gleichzeitig auszuführen, während die Parallelität auf Thread-Ebene (TLP) Anweisungen aus mehreren Threads innerhalb eines Prozessorchips gleichzeitig ausführt. Es gibt viele Möglichkeiten, mehr als einen Thread innerhalb eines Chips zu unterstützen, nämlich:

  • Intervolved Multithreading: Verschachtelte Ausgabe mehrerer Anweisungen aus verschiedenen Threads, auch als als bezeichnet als als Temporales Multithreading. Es kann in Abhängigkeit von der Häufigkeit von verschachtelten Problemen weiter in feinkörniges Multithreading oder grobkörniges Multithreading unterteilt werden. Feinkörnig Multithreading - wie in a Fassprozessor- Ausgaben Anweisungen für verschiedene Themen nach jedem Zyklus während grobkörnig Multithreading wechselt nur, um Anweisungen aus einem anderen Thread auszugeben, wenn der aktuelle ausführende Thread einige Latenzereignisse verursacht (wie Seitenfehler usw.). Grobkörnige Multithreading ist häufiger für weniger Kontextschalter zwischen Threads. Zum Beispiel Intel's Montecito Der Prozessor verwendet grobkörniges Multithreading, während die Sonne's Ultrassparc T1 Verwendet feinkörniges Multithreading. Für diejenigen Prozessoren, die nur eine Pipeline pro Kern haben, ist ein verschachteltes Multithreading der einzig mögliche Weg, da es höchstens einen Anweisungen pro Zyklus ausstellen kann.
  • Simultaneous Multithreading (SMT): Ausgeben mehrerer Anweisungen aus mehreren Threads in einem Zyklus. Der Prozessor muss dazu superscalar sein.
  • Multiprozessierung auf Chip-Ebene (CMP oder Multicore): Integriert zwei oder mehr Prozessoren in einen Chip, wobei jeder Threads unabhängig ausführt.
  • Jede Kombination aus Multithread/SMT/CMP.

Der Schlüsselfaktor, um sie zu unterscheiden, besteht darin, zu untersuchen, wie viele Anweisungen der Prozessor in einem Zyklus ausstellen kann und wie viele Themen, aus denen die Anweisungen stammen,. Zum Beispiel ist Sun Microsystems 'Ultrassparc T1 ein Multicore-Prozessor, kombiniert mit feinkörniger Multithreading-Technik anstelle gleichzeitig mit Multithreading, da jeder Kern nur eine Anweisung gleichzeitig ausstellen kann.

Historische Implementierungen

Während Multithreading CPUs seit den 1950er Jahren gibt ACS-360 Projekt.[3] Der erste mit SMT entwickelte große kommerzielle Mikroprozessor war der Alpha 21464 (EV8). Dieser Mikroprozessor wurde von entwickelt von Dez in Abstimmung mit Dean Tullsen von der University of California, San Diego und Susan Eggers und Henry Levy von der University of Washington. Der Mikroprozessor wurde nie freigesetzt, da die Alpha -Linie von Mikroprozessoren kurz zuvor abgebrochen wurde HP erworben Compaq das hatte wiederum erworben Dez. Dean Tullsens Arbeit wurde auch verwendet, um die zu entwickeln hyper-thread Versionen der Intel Pentium 4 Mikroprozessoren wie "Northwood" und "Prescott".

Moderne kommerzielle Implementierungen

Das Intel Pentium 4 war der erste moderne Desktop -Prozessor, der gleichzeitige Multithreading implementiert, ab dem 2002 veröffentlichten 3,06 -GHz -Modell und seitdem in eine Reihe ihrer Prozessoren eingeführt. Intel ruft die Funktionalität auf Hyper-Threading-Technologieund bietet einen grundlegenden SMT-Motor mit zwei Threads. Intel behauptet bis zu einer Geschwindigkeitsverbesserung von 30%[4] verglichen mit einem ansonsten identischen, nicht-smt-Pentium 4. Die beobachtete Leistungsverbesserung ist sehr anwendungsabhängig; Wenn jedoch zwei Programme ausgeführt werden, die den Prozessor volle Aufmerksamkeit erfordern, kann es tatsächlich so erscheinen, als würde eines oder beide Programme leicht sinken, wenn das Hyper-Threading eingeschaltet wird.[5] Dies liegt an der Wiederholungssystem des Pentiums 4, das wertvolle Ausführungsressourcen zusammenbindet, erhöht die Auseinandersetzung mit Ressourcen wie Bandbreite, Caches, Tlbs, Nachbestellpuffer Einträge und Ausgleich der Prozessorressourcen zwischen den beiden Programmen, die eine unterschiedliche Ausführungszeit hinzufügen. Der Pentium 4 Prescott -Kern erhielt eine Wiederholungswarteschlange, die die Ausführungszeit verkürzt, die für das Wiederholungssystem benötigt wird. Dies war genug, um diesen Leistungshit vollständig zu überwinden.[6]

Das Neueste Imaginationstechnologien MIPS -Architektur Zu den Designs gehören ein SMT -System namens "MIPS MT".[7] MIPS MT bietet sowohl virtuelle Verarbeitungselemente mit schwerem Gewicht als auch Hardware-Microtheads mit leichterem Gewicht. RMI, ein Cupertino-basierter Startup, ist der erste MIPS-Anbieter, der einen Prozessor zur Verfügung stellt SOC Basierend auf acht Kernen, von denen jeder vier Fäden ausführt. Die Threads können im Feinkornmodus ausgeführt werden, in dem ein anderer Thread in jedem Zyklus ausgeführt werden kann. Den Themen können auch Prioritäten zugewiesen werden. Imaginationstechnologien MIPS -CPUs haben zwei SMT -Threads pro Kern.

IBM Blaues Gen/Q hat 4-Wege SMT.

Das IBM Power5, angekündigt im Mai 2004, wird entweder als Dual Core Dual-Chip-Modul (DCM) oder Quad-Core- oder OCT-Core-Multi-Chip-Modul (MCM) mit jedem Kern einschließlich eines SMT-Motors mit zwei Threads erhältlich. IBMDie Implementierung ist anspruchsvoller als die vorherigen, da sie den verschiedenen Threads eine andere Priorität zuweisen kann, feinkörniger und die SMT-Engine dynamisch ein- und ausgeschaltet werden kann, um diese Workloads bei einem SMT-Prozessor besser auszuführen würde die Leistung nicht erhöhen. Dies ist die zweite Implementierung von IBM von allgemein verfügbaren Hardware -Multithreading. Im Jahr 2010 veröffentlichte IBM Systeme basierend auf dem Power7 -Prozessor mit acht Kernen, wobei jeweils vier gleichzeitige intelligente Threads miteinander waren. Dadurch wechselt der Threading -Modus zwischen einem Thread, zwei Threads oder vier Threads, abhängig von der Anzahl der zu diesem Zeitpunkt geplanten Prozess -Threads. Dies optimiert die Verwendung des Kerns für die minimale Reaktionszeit oder den maximalen Durchsatz. IBM Power8 hat 8 intelligente gleichzeitige Fäden pro Kern (SMT8).

Ibm z Beginnend mit dem Z13 Der Prozessor im Jahr 2013 verfügt über zwei Fäden pro Kern (SMT-2).

Obwohl viele Menschen das berichteten Sun Microsystems'Ultrasparc T1 (bekannt als "Niagara" bis zum 14. November 2005) und der inzwischen nicht mehr existierende Prozessor Codenamen "Felsen"(ursprünglich im Jahr 2005 angekündigt, aber nach vielen Verzögerungen im Jahr 2010) sind Implementierungen von Sparc Niagara konzentriert sich fast ausschließlich auf die Ausnutzung von SMT- und CMP -Techniken und verwendet SMT nicht. Sun bezieht sich auf diese kombinierten Ansätze als "CMT" und das Gesamtkonzept als "Durchsatz Computing". Die Niagara hat acht Kerne, aber jeder Kern hat nur eine Pipeline, so dass sie tatsächlich ein feinkörniges Multithreading verwendet. Im Gegensatz zu SMT, bei dem Anweisungen aus mehreren Threads das Problemfenster in jedem Zyklus teilen, verwendet der Prozessor eine Round -Robin -Richtlinie, um Anweisungen aus dem nächsten aktiven Thread in jedem Zyklus auszugeben. Dies macht es einem ähnlicher Fassprozessor. Der Rockprozessor von Sun Microsystems ist anders: Es hat komplexere Kerne mit mehr als eine Pipeline.

Das Oracle Corporation SPARC T3 hat acht feinkörnige Fäden pro Kern; SPARC T4, SPARC T5, SPARC M5, M6 und M7 haben acht feinkörnige Fäden pro Kern, von denen zwei gleichzeitig ausgeführt werden können.

Fujitsu SPARC64 VI hat grobkörnige vertikale Multithreading (VMT) SPARC VII und neuer haben 2-Wege SMT.

Intel Itanium Montecito verwendet grobkörnige Multithreading und Tukwila und neuere und mit zwei Domänen-Multithreading).

Intel Xeon Phi Hat 4-Wege SMT (mit zeit-multiplexed Multithreading) mit hardwarebasierten Threads, die im Gegensatz zu normalem Hyper-Threading nicht deaktiviert werden können.[8] Das Intel Atom, erstmals im Jahr 2008 veröffentlicht, ist das erste Intel-Produkt mit 2-Wege-SMT (vermarktet als Hyper-Threading), ohne die Anweisung neu zu ordnen, spekulative Ausführung oder Registerumbenannten zu registrieren. Intel führte das Hyper-Threading mit dem wieder ein Nehalem -Mikroarchitekturnach seiner Abwesenheit am Kernmikroarchitektur.

AMD Bulldozer -Mikroarchitektur FlexFPU und gemeinsamer L2 -Cache sind multitHead, aber ganzzahlige Kerne im Modul sind ein einzelner Gewinde, daher ist es nur eine partielle SMT -Implementierung.[9][10]

AMD Zen Microarchitektur hat 2-Wege SMT.

VISC Architektur[11][12][13][14] verwendet die Virtuelle Softwareschicht (Übersetzungsschicht), um einen einzelnen Anweisungsfaden in die zu versenden Globales Frontend welche Anweisungen in die Aufteilung Virtuelle Hardware -Threadets die dann zu getrennten virtuellen Kernen entsandt werden. Diese virtuellen Kerne können sie dann an die verfügbaren Ressourcen auf einer der physischen Kerne senden. Mehrere virtuelle Kerne können Threadets in den Neubestellpuffer eines einzelnen physischen Kerns drücken, der gleichzeitig teilweise Anweisungen und Daten von mehreren Threadlets über die Ausführungsports teilen kann. Jeder virtuelle Kern verfolgt die Position der relativen Ausgabe. Diese Form des Multithreading kann die Leistung der einzelnen Gewinde erhöhen, indem ein einzelner Thread alle Ressourcen der CPU verwenden kann. Die Allokation von Ressourcen ist auf einem Latenzniveau der Nahvereinbarungszyklus dynamisch (1–4 Zyklen, abhängig von der Änderung der Allokation abhängig von den individuellen Anwendungsbedürfnissen. Wenn zwei virtuelle Kerne um Ressourcen konkurrieren, gibt es geeignete Algorithmen, um zu bestimmen Welche Ressourcen sollen dort zugeteilt werden.

Nachteile

Abhängig vom Design und der Architektur des Prozessors kann das gleichzeitige Multithreading die Leistung verringern, wenn eine der gemeinsamen Ressourcen Engpässe für die Leistung sind.[15] Kritiker argumentieren, dass es eine beträchtliche Belastung ist, Softwareentwickler zu testen, ob das gleichzeitige Multithreading in verschiedenen Situationen gut oder schlecht für ihre Anwendung ist, und zusätzliche Logik einfügen, um sie auszuschalten, wenn sie die Leistung verringert. Aktuelle Betriebssysteme fehlen bequem API Forderungen nach diesem Zweck und zur Verhinderung von Prozessen mit unterschiedlichem Priorität, Ressourcen voneinander zu nehmen.[16]

Es besteht auch ein Sicherheitsbedenken bei bestimmten gleichzeitigen Multithreading -Implementierungen. Intels Hyperthreading in NetBurst-basierte Prozessoren haben eine Sicherheitsanfälligkeit, durch die es einer Anwendung möglich ist, a zu stehlen kryptografischer Schlüssel von einer anderen Anwendung, die im selben Prozessor ausgeführt wird, indem der Cache -Nutzung überwacht wird.[17] Die HT -Implementierung gibt es auch anspruchsvolles maschinelles Lernen, die bei der HT -Implementierung erklärt wurden Black Hat 2018.[18]

Siehe auch

Verweise

  1. ^ ASPLOS'11
  2. ^ ASPLOS'11
  3. ^ Smootherman, Mark (25. Mai 2011). "Ende des IBM ACS -Projekts". School of Computing, Clemson University. Abgerufen 19. Januar, 2013.
  4. ^ Marr, Deborah (14. Februar 2002). "Hyper-Threading-Technologiearchitektur und Mikroarchitektur" (PDF). Intel Technology Journal. 6 (1): 4. doi:10.1535/itj. Abgerufen 25. September 2015.
  5. ^ "CPU -Leistungsbewertung Pentium 4 2,8 und 3.0".
  6. ^ "Wiederholung: Unbekannte Funktionen des NetBurst Core. Seite 15". Wiederholung: Unbekannte Funktionen des NetBurst -Kerns. xbitlabs.com. Archiviert von das Original am 14. Mai 2011. Abgerufen 24. April 2011.
  7. ^ "MIPS MT ASE Beschreibung".
  8. ^ Barth, Michaela; Bykling, Mikko; Ilieva, Nevena; Saarinen, Sami; Schliephake, Michael (18. Februar 2014). Weinberg, Volker (Hrsg.). "Best Practice Guide Intel Xeon Phi v1.1". Partnerschaft für Advanced Computing in Europa.
  9. ^ "Amd Bulldozer Family Modul Multithreading". wccftech. Juli 2013.
  10. ^ Halfacree, Gareth (28. Oktober 2010). "AMD enthüllt Flex FP". Bit-Tech.
  11. ^ "Soft Machines enthüllt Visc Virtual Chip Architecture | bit-tech.net".
  12. ^ Cutress, Ian (12. Februar 2016). "Architektur der Soft -Maschinen untersuchen: Ein Element von VISC zur Verbesserung der IPC". Anandtech.
  13. ^ "Die Prozessorleistung der nächsten Gen enthüllt". VR Welt. 4. Februar 2016. archiviert von das Original Am 2017-01-13.
  14. ^ "Architekturwellen". Weiche Maschinen. 2017. archiviert von das Original Am 2017-03-29.
  15. ^ "Wiederholung: Unbekannte Funktionen des NetBurst Core. Seite 15". Wiederholung: Unbekannte Funktionen des NetBurst -Kerns. xbitlabs.com. Archiviert von das Original am 14. Mai 2011. Abgerufen 24. April 2011.
  16. ^ Wie gut ist Hyperthreading?
  17. ^ Hyper-Threading als schädlich angesehen
  18. ^ Tlbleed: Wenn Sie Ihre CPU -Caches schützen, reicht es nicht aus
Allgemein

Externe Links