Simultaneous Multithreading

Der Begriff Simultaneous Multithreading (englisch) bzw. Simultanes Multithreading (deutsch etwa „simultaner Mehrfadenbetrieb“[1]), kurz SMT, bezeichnet die Fähigkeit eines Mikroprozessors, mittels getrennter Pipelines und/oder zusätzlicher Registersätze mehrere Threads („Bearbeitungsfäden“[1]) gleichzeitig auszuführen. Hiermit stellt SMT eine Form des hardwareseitigen Multithreadings dar.

Die derzeit wohl bekannteste Form des SMT ist Intels Hyper-Threading-Technik (HT) für Pentium 4, Xeon, Atom und Core i und neuer, aber auch Prozessoren anderer Hersteller verfügen über SMT, z. B. Cell, Power ab POWER5 und POWER6 von IBM und die Prozessorserien von AMD ab der Zen-Architektur, Ryzen und EPYC.

SMT wurde in den 1990er Jahren unter anderem von Hank Levy und Susan Eggers entwickelt. Eggers erhielt vor allem dafür 2018 den Eckert-Mauchly Award. In der Würdigung für Eggers der IEEE Computer Society wurde SMT als bedeutendster Beitrag zur Computerarchitektur der letzten 30 Jahre bezeichnet.[2]

Funktionsweise

Ziel von SMT ist es, die bereits aufgrund der Pipeline-Architektur redundant vorhandenen Ressourcen eines Prozessors noch besser auszulasten, als dies bei der Pipeline-Architektur ohnehin möglich ist. Die Pipeline-Architektur arbeitet nur Befehle innerhalb eines Threads ab. Dadurch kann sie nur solche Befehle parallelisieren, die innerhalb eines Threads unabhängig voneinander sind.

Beispiel für Zweifach-SMT

Die folgenden Pipelinestufen und 2 Threads sind gegeben (IF = Instruction Fetch, ID = Instruction Decoding, OF = Operand Fetch, EX = Execution, WB = Write Back):

Pipeline
IF ID OF EX WB
Thread 1
        LD R6,adr4
        ADD R4,R6,1
        BEQ R4,R6,j1
        BR j2
j1:   ADD R4,R4,1
j2:   ST R4,adr6
Thread 2
LD R1,adr0
OR R1,R1,0xF0
LD R2,adr1
ADD R3,R1,R2
ST R3,adr2

Out-of-Order-Issue und Out-of-Order-Completion 2 Befehle je Takt Bei einer Datenabhängigkeit fällt die erste EX-Phase des abhängigen Befehls mit der WB-Phase des vorherigen Befehls zusammen.

2 Integereinheiten EX1, EX2
1 Sprungeinheit EX1, EX2
1 Storeeinheit EX1, EX2
1 Load-Einheit EX1, EX2, EX3 EX4

Bei unbedingten Sprüngen ist das Holen des Zielbefehls (IF) nach der ID-Phase erlaubt. Bedingte Sprünge müssen im Falle eines Sprunges die EX2-Phase abarbeiten, bevor die Zielanweisung geladen werden kann. Wenn der Sprung nicht ausgeführt wurde, kann der Befehl parallel zur EX2-Phase wieder aufgenommen werden.

Takte 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
LD R6,adr4 IF ID OF EX1 EX2 EX3 EX4 EX5 WB
LD R1,adr0 IF ID OF EX1 EX2 EX3 EX4 EX5 WB
LD R2,adr1 IF ID OF EX1 EX2 EX3 EX4 EX5 WB
ADD R4,R6,1 IF ID OF EX1 EX2 WB
OR R1,R1,0xF0 IF ID OF EX1 EX2 WB
BEQ R4,R6,m1 IF ID OF EX1 EX2 WB
ADD R3,R1,R2 IF ID OF EX1 EX2 WB
BR m2 IF ID OF EX1 EX2 WB
ST R3,adr2 IF ID OF EX1 EX2 WB
j1: ADD R4,R4,1 IF ID OF EX1 EX2 WB Kein Sprung zu j1
j2: ST R4,adr6 IF ID OF EX1 EX2 WB

Anwendungsgebiete

Simultaneous Multithreading stellt eine kostengünstige, wenn auch wesentlich leistungsärmere Alternative zu Mehrkernprozessoren (englisch „Multicore“) dar. Die Leistung eines SMT-Prozessors lässt sich allerdings nur dann effektiv nutzen, wenn mehrere parallel zu verarbeitende Aufgaben durchzuführen sind, die durch das Betriebssystem, den Programmierer oder den Compiler auch derart gestaltet wurden, dass sie weitgehend parallel ausführbar sind. Bei vielen modernen Anwendungen ist dies seit einigen Jahren der Fall.

Abgrenzung

Das Simultaneous Multithreading ist also zwischen Pipeline-Architektur und Mehrkern-Architektur anzusiedeln.

Abgrenzung zur Pipeline-Architektur/Superskalarität

Von der Pipeline-Architektur unterscheidet sich SMT dadurch, dass die Ausführung mehrerer Threads gleichzeitig möglich ist. Nicht nur Datenverarbeitungseinheiten des Prozessors wie ALU und FPU werden repliziert, sondern auch der Registersatz und die Befehlsdekodierung. Gegenüber dem System erscheint eine SMT-CPU meist wie mehrere unabhängige Prozessoren.

Die Pipeline-Architektur führt Befehle desselben Programms parallel aus, falls möglich. Ist es aufgrund von Abhängigkeiten nicht möglich, werden sie sequenziell ausgeführt. SMT führt die Befehle zweier oder mehrerer Threads (aus einem oder mehreren Programmen) parallel aus, falls möglich. Wenn nicht, werden sie abwechselnd ausgeführt. (Dies kann als „Superskalarität über mehrere Threads“ bezeichnet werden.)

Beide Konzepte versuchen also, durch Parallelisierung der Befehlsverarbeitung, die verschiedenen Einheiten einer CPU besser auszulasten und so Programme schneller zu verarbeiten, ohne die Taktfrequenz oder die Anzahl der befehlsausführenden Einheiten zu erhöhen, wobei der Parallelisierungsgrad bei SMT höher oder gleich, aber nie geringer als der der Pipeline-Architektur ist.

Abgrenzung zur Mehrkern-Architektur

Von der Mehrkern-Architektur unterscheidet sich SMT dadurch, dass die dem System gemeldeten Prozessoren eines SMT-Prozessors keine unabhängigen Prozessoren sind. Bei SMT teilen sich die virtuellen Prozessoren den Zugriff auf dieselben Datenverarbeitungseinheiten (ALU/FPU), während im Mehrkernprozessor jeder Kern seine eigene Datenverarbeitungseinheit besitzt.

Sowohl ein einzelner SMT-Prozessor mit zwei Threads, als auch ein einzelner Doppelkern-Prozessor (englisch Dual-Core) ohne SMT sowie ein Dual-Prozessor-System (englisch Dual-CPU oder dual processor mit zwei einzelnen Einkernprozessoren ohne SMT) erscheinen gegenüber der Betriebssoftware als zwei Prozessoren. Jedoch handelt es sich bei einem Doppelkern-Prozessor oder einem System mit zwei Single-Core-Prozessoren (Dual-Prozessor-System) um zwei tatsächlich unabhängige und dementsprechend schnelle Hauptprozessoren (CPUs), während es sich bei SMT um einen Prozessor mit zwei oder mehr Hardware-Threads handelt. Viele moderne Prozessoren kombinieren Mehrkern- mit SMT-Technologie, sodass ein einzelner Multicore-Prozessor mit z. B. vier Kernen (englisch Cores) mit SMT dem System gegenüber acht Prozessorkerne meldet. Auch die Kombination von Mehrprozessorsystemen mit Mehrkernprozessoren mit SMT ist möglich und findet sich vor allem im Server- und Workstation-Bereich. Moderne Prozess-Scheduler können meist gut mit SMT-Kernen gesondert umgehen, um die Aufgaben möglichst gut auf die vorhandenen physischen und virtuellen Kerne zu verteilen. Unter Linux werden virtuelle Prozessoren, die sich einen physischen Kern teilen, englisch siblings (Geschwister) genannt.[3]

Prozessoren mit SMT

Siehe auch

Einzelnachweise

  1. a b Klaus Brüderle: Bits und Bytes in Mikrochips: Grundlagen der Technischen Informatik am Beispiel moderner Hardware. 2. Auflage. Springer Vieweg, 2025, ISBN 978-3-658-46570-4, 10.3.4 Simultanes Multithreading (SMT), S. 245 (eingeschränkte Vorschau in der Google-Buchsuche): „SMT bedeutet übersetzt ‚simultaner Mehrfandenbetrieb‘. Dies ist eine Optimierungstechnik für Prozessorkerne, um mehrere Threads (Bearbeitungsfäden) zur gleichen Zeit parallel … auszuführen.“
  2. Susan Eggers First Woman to Receive Highly Prestigious Computer Architecture Award, PR Newswire, 5. Juni 2018
  3. Marta Rybczyńska: Fixing a corner case in asymmetric CPU packing. In: LWN.net. 7. Januar 2022, abgerufen am 3. August 2026 (englisch): „SMT processors using the same hardware in this way are often called ‘siblings’.“

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.