Multithreading (hardwareseitig)

Multithreading (hardwareseitig)
Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Bitte entferne erst danach diese Warnmarkierung.

Durch hardwareseitiges Multithreading (auch: Mehrfädigkeit) können bestimmte Prozessoren mit nur einem vollständigen Prozessor-Kern mehrere Programme quasi gleichzeitig bearbeiten. Ein solcher Prozessor wird multithreaded genannt.
Der Wechsel zwischen den Programmen erfolgt im Gegensatz zum Programm- bzw. Threadwechsel eines Betriebssystems hier durch die Hardware in sehr schneller Folge und ohne zusätzliche Prozessorzyklen. Hierzu besitzt jeder „Faden“ (Thread) einen eigenen Registersatz, einschließlich Stackpointer und Programcounter. Ein mehrfädiger Prozessor ist somit logisch und in der Hardware-Komplexität zwischen einem einfachen Prozessor und einem Multicore-Prozessor anzusiedeln.

Inhaltsverzeichnis

Nutzen von Multithreading

Der Nutzen von Multithreading (Mehrfädigkeit) ist eine bessere Auslastung der Ressourcen der CPU.

Zwar wird in modernen Prozessoren, welche alle eine Pipeline haben, beispielsweise durch Out-of-order execution schon versucht die Auslastung zu steigern, dennoch haben Untersuchungen ergeben, dass viele Teilwerke der Pipeline durch bspw. simultanes Multithreading zusätzlich noch besser ausgelastet werden können. Ein Grund dafür sind Pipeline-Hazards, die die Pipeline kurz anhalten können (engl. to stall).

Mehrfädige Prozessoren bearbeiten deshalb mehrere Threads quasi-gleichzeitig. Dies kann in verschiedenen Varianten erfolgen:

  1. time-slices: Ein Algorithmus legt fest, wie viel Zeit jeder Thread bekommt, sodass immer nur ein einzelner Thread ausgeführt werden kann.
  2. switch-by-event: Bestimmte Ereignisse können einen Threadwechsel auslösen.
  3. simultanes Multithreading (SMT): Hierbei werden Bereiche der Registerfile für einen kleinen Prozessorkontext reserviert, auf den ein Thread ausgeführt wird. Wenn nun mehrere solche Threads parallel ausgeführt werden, so bedienen sie sich alle an ein und demselben Rechenwerk. Da heutzutage viele Rechner superskalar sind, ergibt das auch Sinn, und somit wird eine bessere Auslastung erzielt.

Mehrfädige PC-Prozessoren

Im PC-Bereich werden momentan (2005) zweifädige Prozessoren verwendet, die mit zwei parallelen Pipelines arbeiten (siehe Simultaneous Multithreading und Hyper-Threading). Diese werden vom Betriebssystem ähnlich wie zwei separate Prozessor-Kerne eines symmetrischen Multiprozessorsystems behandelt.

Mehrfädige Prozessoren für eingebettete Anwendungen

In Anwendungen im Bereich eingebetteter Systeme bieten mehrfädige Prozessoren neben dem reinen Leistungsgewinn zusätzliche Möglichkeiten durch explizite Verwendung der Mehrfädigkeit. Solche Prozessoren bieten programmierbare Algorithmen zur Steuerung der einzelnen Programm-Fäden (hier „Context“ genannt). So kann beispielsweise ein Context deterministisch einen gewissen Anteil der Takte und damit der Prozessor-Leistung belegen. Die Contexts können auch durch eine Prioritätensteuerung um die Rechenzeit konkurrieren.

Die einzelnen Contexts können durch entsprechende Befehle in einen Wartezustand versetzt und durch Hardware-Ereignisse aufgeweckt werden. Hierdurch sind sehr schnelle Reaktionen des Systems möglich, da (im Gegensatz zum klassischen Hardware-Interrupt) keinerlei Overhead beim Context-Wechsel notwendig ist.

Contexts, die nur einen geringen Teil der Clock-Zyklen belegen, können dauerhaft zyklisch laufen, ohne die Leistung des Systems merklich zu beeinflussen und z.B. zum Erzeugen oder Entschlüsseln schneller Signale eingesetzt werden.

Somit kann durch den Einsatz von mehrfädigen Prozessoren durch nur geringen Aufwand im Prozessor-Chip auf dedizierte Hardware oder zusätzliche Prozessoren bzw. digitale Signalprozessoren verzichtet werden.

Da in diesen Anwendungen deutlich mehr als zwei Fäden sinnvoll sind, werden in mehrfädigen eingebetteten Prozessoren nicht mehrere Pipelines implementiert, sondern die erste Stufe der Pipeline entscheidet über den als nächsten auszuführenden Context.

Beispiele für mehrfädige Prozessoren für eingebettete Anwendung:

  • Ubicom 3K (8 Threads)
  • Ubicom 5K Familie (10 Threads)
  • MIPS 34K Familie (5 Threads)
  • Innovasic fido 1100 (ein Hauptprozessor mit 5 Threads, 4 zusätzliche I/O-Prozessoren)

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Hyperthreading — Hyper Threading Technology (kurz: HTT, üblicherweise nur Hyper Threading genannt) ist die Implementierung von hardwareseitigem Multithreading in Intel Prozessoren. Durch mehrere vollständige Registersätze und ein komplexes Steuerwerk werden… …   Deutsch Wikipedia

  • Mehrfädigkeit — Der Begriff Multithreading (auch Mehrfädigkeit) bezeichnet das gleichzeitige Abarbeiten mehrerer Threads (das sind Ausführungsstränge innerhalb eines einzelnen Prozesses oder eines Tasks). Software Meist ist mit dem Begriff das softwareseitige… …   Deutsch Wikipedia

  • Außer-der-Reihe-Ausführung — Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und… …   Deutsch Wikipedia

  • Befehls-Pipeline — Die Pipeline (auch Befehls Pipeline oder Prozessor Pipeline) bezeichnet bei Mikroprozessoren eine Art „Fließband“, mit dem die Abarbeitung der Maschinenbefehle in Teilaufgaben zerlegt wird, die für mehrere Befehle parallel durchgeführt werden.… …   Deutsch Wikipedia

  • Befehlspipeline — Die Pipeline (auch Befehls Pipeline oder Prozessor Pipeline) bezeichnet bei Mikroprozessoren eine Art „Fließband“, mit dem die Abarbeitung der Maschinenbefehle in Teilaufgaben zerlegt wird, die für mehrere Befehle parallel durchgeführt werden.… …   Deutsch Wikipedia

  • Fließbandverarbeitung — Die Pipeline (auch Befehls Pipeline oder Prozessor Pipeline) bezeichnet bei Mikroprozessoren eine Art „Fließband“, mit dem die Abarbeitung der Maschinenbefehle in Teilaufgaben zerlegt wird, die für mehrere Befehle parallel durchgeführt werden.… …   Deutsch Wikipedia

  • Out-of-Order-Execution — Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und… …   Deutsch Wikipedia

  • Out-of-order — Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und… …   Deutsch Wikipedia

  • Pipeline-Architektur — Die Pipeline (auch Befehls Pipeline oder Prozessor Pipeline) bezeichnet bei Mikroprozessoren eine Art „Fließband“, mit dem die Abarbeitung der Maschinenbefehle in Teilaufgaben zerlegt wird, die für mehrere Befehle parallel durchgeführt werden.… …   Deutsch Wikipedia

  • Prozessor-Pipeline — Die Pipeline (auch Befehls Pipeline oder Prozessor Pipeline) bezeichnet bei Mikroprozessoren eine Art „Fließband“, mit dem die Abarbeitung der Maschinenbefehle in Teilaufgaben zerlegt wird, die für mehrere Befehle parallel durchgeführt werden.… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”