Simultaneous Multithreading
Simultanes Multithreading, abgekürzt SMT, ist eine Technik zur Verbesserung der Gesamteffizienz von superskalaren CPUs mit Hardware-Multithreading. SMT ermöglicht mehrere unabhängige Ausführungsthreads, um die von modernen Computerarchitekturen bereitgestellten Ressourcen besser auszunutzen.
Multithreading ähnelt im Konzept dem Multitasking, wird aber in modernen superskalaren Prozessoren auf der Thread-Ausführungsebene implementiert.
Beim Prozessordesign gibt es zwei Möglichkeiten, die On-Chip-Parallelität bei geringerem Ressourcenbedarf zu erhöhen:
- Superskalare Technik: mit der versucht wird, die Parallelität auf der Instruktionsebene (ILP) zu erhöhen, indem mehrere Instruktionen gleichzeitig ausgeführt werden (als "gleichzeitig" bezeichnet); durch "gleichzeitiges" Dispatching von Instruktionen (als "Instruction Dispatching" bezeichnet) an mehrere redundante Ausführungseinheiten, die im Prozessor eingebaut sind.
- Chip-Level-Multithreading (CMT)-Technik: Verwendung von Thread-Level-Parallelität (TLP), um Anweisungen von mehreren Threads innerhalb eines Prozessorchips gleichzeitig auszuführen.
Es gibt viele Möglichkeiten, mehr als einen Thread innerhalb eines Chips zu unterstützen, nämlich
- Interleaved Multithreading (IMT) : Verschachtelte Ausgabe mehrerer Anweisungen von verschiedenen Threads, auch als temporäres Multithreading bezeichnet. Es kann weiter unterteilt werden in feinkörniges Multithreading oder grobkörniges Multithreading, je nach der Häufigkeit der verschachtelten Ausgaben. Feinkörniges Multithreading gibt nach jedem Zyklus Anweisungen für verschiedene Threads aus, während grobkörniges Multithreading nur dann auf die Ausgabe von Anweisungen von einem anderen Thread umschaltet, wenn der aktuell ausführende Thread einige Ereignisse mit langer Latenzzeit verursacht (wie Seitenfehler usw.). Grobkörniges Multithreading ist gebräuchlicher für weniger Kontextwechsel zwischen Threads. Für Prozessoren mit einer Pipeline pro Kern ist verschachteltes Multithreading der einzig mögliche Weg, da es nur bis zu einer Anweisung pro Zyklus ausgeben kann.
- Gleichzeitiges Multithreading (SMT): Geben Sie mehrere Anweisungen von mehreren Threads in einem Zyklus aus. Der Prozessor muss dazu superskalar sein.
- Multiprocessing auf Chip-Ebene (CMP- oder Multi-Core-Prozessor): integriert zwei oder mehr superskalare Prozessoren in einem Chip, wobei jeder Thread unabhängig voneinander ausgeführt wird.
- Beliebige Kombination von IMT/SMT/CMP
Der Schlüsselfaktor, um sie zu unterscheiden, ist die Frage, wie viele Instruktionen der Prozessor in einem Zyklus ausgeben kann und wie viele Threads, von denen die Instruktionen kommen.
Beispiele für moderne SMT-CPUs
- Der Intel Pentium 4 war der erste moderne Desktop-Prozessor, der simultanes Multithreading implementierte, beginnend mit dem 3,06 GHz-Modell, das 2002 veröffentlicht und seitdem in einer Reihe ihrer Prozessoren eingeführt wurde. Intel bezeichnet die Funktionalität als Hyper-Threading-Technik (HTT) und stellt eine grundlegende Zwei-Thread-SMT-Engine zur Verfügung. Intel beansprucht eine Geschwindigkeitsverbesserung von bis zu 30% im Vergleich zu einem ansonsten identischen, nicht SMT-fähigen Pentium 4.
- Die neuesten MIPS-Architekturentwürfe umfassen ein SMT-System, das als "MIPS MT" bekannt ist.
- Der IBM POWER5, der im Mai 2004 angekündigt wurde, ist entweder als Dual-Core-DCM oder als Quad-Core- oder 8-Core-MCM erhältlich, wobei jeder Kern einen Zweifaden-SMT-Motor enthält. Die IBM-Implementierung ist ausgefeilter als die vorherigen, da sie den verschiedenen Threads eine andere Priorität zuweisen kann, feinkörniger ist und die SMT-Engine dynamisch ein- und ausgeschaltet werden kann, um jene Arbeitslasten besser auszuführen, bei denen ein SMT-Prozessor die Leistung nicht erhöhen würde. Dies ist die zweite IBM-Implementierung von allgemein verfügbarem Hardware-Multithreading.
- Der Intel Atom, der 2008 veröffentlicht wurde, ist das erste Intel-Produkt, das SMT (vermarktet als Hyper-Threading) ohne unterstützende Befehlsneubestellung, spekulative Ausführung oder Registerumbenennung bietet.
Verwandte Seiten
- Thema (Informatik)
- Parallele Datenverarbeitung
- Parallelität auf Anweisungsebene
- Mehrkernprozessoren
Fragen und Antworten
F: Was ist simultanes Multithreading?
A: Simultanes Multithreading (SMT) ist eine Technik zur Verbesserung der Gesamteffizienz von superskalaren CPUs mit Hardware-Multithreading. Sie ermöglicht mehrere unabhängige Ausführungsstränge, um die von modernen Computerarchitekturen bereitgestellten Ressourcen besser zu nutzen.
F: Was ist der Unterschied zwischen SMT und Multitasking?
A: Multithreading ist vom Konzept her mit Multitasking vergleichbar, wird aber auf der Thread-Ebene der Ausführung in modernen superskalaren Prozessoren implementiert, während Multitasking auf der Prozessebene implementiert wird.
F: Welche zwei Möglichkeiten gibt es, die On-Chip-Parallelität zu erhöhen?
A: Die beiden Möglichkeiten zur Steigerung der On-Chip-Parallelität sind die superskalare Technik und das Multithreading auf Chipebene (CMT).
F: Welche verschiedenen Arten von Multithreading auf Chipebene gibt es?
A: Zu den verschiedenen Arten von Multithreading auf Chipebene gehören Interleaved Multithreading (IMT), Fine-Grain Multithreading, Coarse Grain Multithreading und Simultanes Multithreading (SMT).
F: Wie können Sie zwischen IMT/SMT/CMP unterscheiden?
A: Der Schlüsselfaktor für die Unterscheidung zwischen IMT/SMT/CMP ist die Frage, wie viele Anweisungen der Prozessor in einem Zyklus erteilen kann und aus wie vielen Threads die Anweisungen stammen.
F: Welcher Prozessortyp muss für SMT verwendet werden?
A: Für SMT muss ein superskalarer Prozessor verwendet werden.
F: Welche Art von Prozessor wird bei Chip Level MultiProcessing verwendet?
A: Chip Level MultiProcessing verwendet Multi-Core-Prozessoren, die zwei oder mehr superskalare Prozessoren in einem Chip integrieren, wobei jeder Prozessor unabhängig voneinander Threads ausführt.