Simultanes Multithreading

Der Intel Pentium 4 war der erste moderne Desktop-Prozessor, der simultanes Multithreading implementierte, beginnend mit dem 3,06-GHz-Modell, das 2002 auf den Markt kam und seitdem in eine Reihe von Prozessoren eingeführt wurde. Intel nennt diese Funktionalität Hyper-Threading Technology und bietet eine grundlegende SMT-Engine mit zwei Threads. Intel behauptet eine Geschwindigkeitssteigerung von bis zu 30 % im Vergleich zu einem ansonsten identischen Pentium 4 ohne SMT. Die Leistungsverbesserung ist stark anwendungsabhängig; wenn jedoch zwei Programme laufen, die die volle Aufmerksamkeit des Prozessors erfordern, kann es tatsächlich den Anschein haben, dass eines oder beide Programme etwas langsamer werden, wenn Hyper-Threading aktiviert ist. Dies ist darauf zurückzuführen, dass das Wiedergabesystem des Pentium 4 wertvolle Ausführungsressourcen bindet, den Wettbewerb um Ressourcen wie Bandbreite, Caches, TLBs und Puffereinträge erhöht und die Prozessorressourcen zwischen den beiden Programmen ausgleicht, was zu einer unterschiedlichen Ausführungszeit führt. Der Pentium 4 Prescott-Kern verfügt über eine Wiedergabewarteschlange, die die für das Wiedergabesystem benötigte Ausführungszeit reduziert. Dies reicht aus, um die Leistungseinbußen vollständig auszugleichen.

Die neuesten Designs der MIPS-Architektur von Imagination Technologies enthalten ein SMT-System, das als „MIPS MT“ bekannt ist. MIPS MT sieht sowohl schwergewichtige virtuelle Verarbeitungselemente als auch leichtere Hardware-Microthreads vor. RMI, ein Startup-Unternehmen aus Cupertino, ist der erste MIPS-Anbieter, der einen Prozessor-SOC mit acht Kernen anbietet, von denen jeder vier Threads ausführt. Die Threads können im Fine-Grain-Modus ausgeführt werden, wobei in jedem Zyklus ein anderer Thread ausgeführt werden kann. Den Threads können auch Prioritäten zugewiesen werden. Die MIPS-CPUs von Imagination Technologies verfügen über zwei SMT-Threads pro Kern.

IBMs Blue Gene/Q verfügt über 4-Wege-SMT.

Der im Mai 2004 angekündigte IBM POWER5 ist entweder als Dual-Core-Dual-Chip-Modul (DCM) oder als Quad-Core- bzw. Oct-Core-Multi-Chip-Modul (MCM) erhältlich, wobei jeder Kern eine SMT-Engine mit zwei Threads enthält. Die IBM-Implementierung ist ausgefeilter als die vorherigen, da sie den verschiedenen Threads unterschiedliche Prioritäten zuweisen kann, feinkörniger ist und die SMT-Engine dynamisch ein- und ausgeschaltet werden kann, um diejenigen Arbeitslasten besser ausführen zu können, bei denen ein SMT-Prozessor die Leistung nicht steigern würde. Dies ist die zweite Implementierung von allgemein verfügbarem Hardware-Multithreading durch IBM. Im Jahr 2010 brachte IBM Systeme auf der Basis des POWER7-Prozessors mit acht Kernen auf den Markt, von denen jeder über vier Simultaneous Intelligent Threads verfügt. Dadurch wird der Threading-Modus zwischen einem Thread, zwei Threads oder vier Threads umgeschaltet, je nachdem, wie viele Prozess-Threads gerade eingeplant sind. Dadurch wird die Nutzung des Kerns für minimale Antwortzeiten oder maximalen Durchsatz optimiert. IBM POWER8 hat 8 intelligente gleichzeitige Threads pro Kern (SMT8).

IBM z13 hat zwei Threads pro Kern (SMT-2).

Obwohl viele Menschen berichteten, dass der UltraSPARC T1 von Sun Microsystems (bis zu seiner Veröffentlichung am 14. November 2005 unter dem Namen „Niagara“ bekannt) und der inzwischen eingestellte Prozessor mit dem Codenamen „Rock“ (ursprünglich 2005 angekündigt, aber nach vielen Verzögerungen 2010 wieder eingestellt) Implementierungen von SPARC sind, die sich fast vollständig auf die Nutzung von SMT- und CMP-Techniken konzentrieren, verwendet Niagara eigentlich kein SMT. Sun bezeichnet diese kombinierten Ansätze als „CMT“ und das Gesamtkonzept als „Throughput Computing“. Der Niagara hat acht Kerne, aber jeder Kern hat nur eine Pipeline, so dass er tatsächlich feinkörniges Multithreading verwendet. Im Gegensatz zum SMT, bei dem sich die Befehle mehrerer Threads das Ausgabefenster in jedem Zyklus teilen, verwendet der Prozessor eine Round-Robin-Strategie, um in jedem Zyklus Befehle vom nächsten aktiven Thread auszugeben. Damit ähnelt er eher einem Barrel-Prozessor. Der Rock-Prozessor von Sun Microsystems ist anders, er hat komplexere Kerne, die mehr als eine Pipeline haben.

Der SPARC T3 der Oracle Corporation hat acht feinkörnige Threads pro Kern, SPARC T4, SPARC T5, SPARC M5, M6 und M7 haben acht feinkörnige Threads pro Kern, von denen zwei gleichzeitig ausgeführt werden können.

Fujitsu SPARC64 VI hat grobkörniges vertikales Multithreading (VMT), SPARC VII und neuere haben 2-Wege-SMT.

Intel Itanium Montecito verwendet grobkörniges Multithreading und Tukwila und neuere verwenden 2-Wege-SMT (mit Dual-Domain-Multithreading).

Intel Xeon Phi verfügt über 4-Wege-SMT (mit Time-Multiplexed-Multithreading) mit hardwarebasierten Threads, die im Gegensatz zum regulären Hyperthreading nicht deaktiviert werden können. Der Intel Atom, der 2008 auf den Markt kam, ist das erste Intel-Produkt mit 2-Wege-SMT (vermarktet als Hyper-Threading) ohne Unterstützung für Befehlsumordnung, spekulative Ausführung oder Registerumbenennung. Intel führte Hyper-Threading mit der Nehalem-Mikroarchitektur wieder ein, nachdem es bei der Core-Mikroarchitektur nicht vorhanden war.

AMD Bulldozer-Mikroarchitektur FlexFPU und Shared L2 Cache sind multithreaded, aber die Integer-Kerne im Modul sind single threaded, so dass es sich nur um eine teilweise SMT-Implementierung handelt.

Die Zen-Mikroarchitektur von AMD verfügt über 2-Wege-SMT.

DieVISC-Architektur verwendet die virtuelle Softwareschicht (Übersetzungsschicht), um einen einzelnen Thread von Anweisungen an das Global Front End zu senden, das die Anweisungen in virtuelle Hardware-Threadlets aufteilt, die dann an separate virtuelle Kerne gesendet werden. Diese virtuellen Kerne können sie dann an die verfügbaren Ressourcen auf einem der physischen Kerne senden. Mehrere virtuelle Kerne können Threadlets in den Neuordnungspuffer eines einzigen physischen Kerns schieben, der Teilbefehle und Daten von mehreren Threadlets gleichzeitig über die Ausführungsports aufteilen kann. Jeder virtuelle Kern behält die Position der relativen Ausgabe im Auge. Die Ressourcenzuweisung erfolgt dynamisch mit einer Latenzzeit von nahezu einem Zyklus (1-4 Zyklen je nach Änderung der Zuweisung in Abhängigkeit von den individuellen Anwendungsanforderungen). Wenn also zwei virtuelle Kerne um Ressourcen konkurrieren, gibt es geeignete Algorithmen, um zu bestimmen, welche Ressourcen wo zugewiesen werden sollen.