Startseite » centron Ratgeber » CPU-Wissen: Was ist Multithreading?


CPU-Wissen: Was ist Multithreading?


Größer, schneller, besser: Moderne Hardware wie Desktop-PCS, Laptops und Server werden immer leistungsstärker. Eine entscheidende Komponente für die Gesamtperformance eines Systems ist die Geschwindigkeit des Prozessors, englisch CPU (Central Processing Unit). Um diese weiter zu erhöhen, entwickeln führende Chiphersteller wie Intel und AMD regelmäßig neue Technologien. Zu einer dieser Technologien zählt das Multithreading. Was sich genau dahinter verbirgt, verraten wir Ihnen in diesem Artikel.

 

Was ist Multithreading?

Der einfachste Weg, um die Geschwindigkeit eines Prozessorkerns zu erhöhen, ist es, seine Taktfrequenz nach oben zu schrauben. Da diese Methode die Hardware schnell teuer macht und ein Hochskalieren bis ins Unendliche nicht möglich ist, greift man auf Multithreading zurück. Beim Multithreading handelt es sich um ein Verfahren, mit dem sich mehrere Threads eines Prozesses parallel oder nahezu gleichzeitig bearbeiten lassen. Ein Thread ist dabei ein einzelner Strang eines Prozesses. Ein Prozess besteht immer aus mindestens einem Thread.

Klassisch werden einzelne Prozesse sequenziell, also Codezeile für Codezeile, abgearbeitet. Wenn aber ein komplexer Prozess des Programms, einer Software oder eines Dienstes die Hardware blockiert, wirkt sich dies negativ auf die Performance aus. Benötigen Anwendungen beispielsweise spontan einen Prozess, muss dieser warten, bis alle anderen vor ihm eingereihten Threads abgearbeitet sind. Multithreading bearbeitet mehrere Threads parallel. Oft findet die Bearbeitung jedoch nicht wirklich gleichzeitig statt. Dies ist zwar technisch möglich, ist aber nur schwer zu realisieren. Daher kommt in der Praxis meist eine Pseudo-Gleichzeitigkeit zum Tragen.

Doch auch eine pseudo-gleichzeitige Verarbeitung von Threads wirkt sich extrem positiv auf die Leistung aus. Die Hardware berechnet dabei die einzelnen Threads so intelligent, dass der Eindruck einer parallelen Prozessverarbeitung entsteht. Um die Vorteile des Multithreading zu nutzen, muss die Software allerdings dafür ausgelegt sein. Sprich: Entwickler müssen das Programm so konzipiert haben, dass es sich in mehrere Threads aufteilen lässt.


Was ist das Ziel von Multithreading?

Beim Multithreading steht ein Performance Boost an vorderster Stelle. Die Ausführungsgeschwindigkeit einer Anwendung soll erhöht oder ganz allgemein die Rechengeschwindigkeit verbessert werden. Erreicht wird dies durch eine optimierte CPU-Auslastung. Moderne Multithreading-Systeme springen direkt zur nächsten Aufgabe, auch wenn der aktuelle Thread noch auf Daten wartet. Dies eliminiert überflüssige Wartezeiten. Gleichzeitig erlaubt dieser Prozess dem System, schneller auf die Änderung von Prioritäten zu reagieren - beispielsweise, wenn der Nutzer plötzlich eine andere Anwendung benötigt.


Was ist der Unterschied zwischen Multithreading und Multitasking?

Multithreading und Multitasking werden oft synonym verwendet. Die beiden Begriffe meinen jedoch zwei grundverschiedene Sachverhalte. Beim Multitasking werden nicht mehrere Threads, sondern mehrere Prozesse (=Tasks) quasi-gleichzeitig ausgeführt. Dabei sind die einzelnen Prozesse voneinander abgeschottet. Das Multitasking priorisiert die Prozesse und teilt ihnen auf dieser Basis Rechenleistung, Arbeitsspeicher und Storage zu. Läuft dieses Verfahren über einen längeren Zeitraum, entsteht der Eindruck, dass die Tasks und Prozesse gleichzeitig ablaufen.

 
Multithreading vs Multitasking im Vergleich
 

Welche Arten von Multithreading gibt es?

Effizientes Multithreading entsteht durch das nahtlose Zusammenspiel von Hardware und Software. Die Tasks werden in kleinere Threads aufgeteilt, damit die CPU diese besser bearbeiten kann. Generell unterscheidet man hardwareseitiges und softwareseitiges Multithreading.


Wie funktioniert softwareseitiges Multithreading?

Bei softwareseitigen Multithreading ist lediglich das Programm für die Aufteilung in mehrere Threads zuständig. Aus Sicht der Hardware und des Betriebssystems liegt immer nur ein Thread vor. Die scheinbare Gleichzeitigkeit der Prozessausführung wird durch smarte Sequenzierung bzw. durch Thread-Priorisierung realisiert. Jeder Thread verfügt also über eine bestimmte Priorität, die entscheidet, wann er in den Hauptspeicher geladen und abgearbeitet wird. Auf diese Weise kann das System besser auf zeitkritische Events reagieren. Eine langwierige und zeitintensive Berechnung läuft beispielsweise nur im Hintergrund ab und wird dann fortgesetzt, wenn die CPU gerade nicht mit höher priorisierten Tasks beschäftigt ist. Beim softwareseitigen Multithreading ist die Performance des Systems maßgeblich davon abhängig, wie ähnlich sich die einzelnen Threads sind. Bei voneinander unabhängigen Abläufen und Prozessen ist der Wechsel zwischen den Threads deutlich aufwendiger und zieht Performanceeinbußen mit sich.


Wie funktioniert hardwareseitiges Multithreading?

Beim hardwareseitigen Multithreading übernimmt, wie der Name schon sagt, die Hardware das gleichzeitige oder quasi-gleichzeitige Abarbeiten einzelner Threads. Die Software muss hier lediglich in der Lage sein, mehrere Threads zu verwenden. Im Gegensatz zum softwareseitigem Multithreading sind hier auch von außen mehrere Threads sichtbar. Das Betriebssystem kann diese dann priorisieren und koordinieren. So gut wie alle modernen Betriebssysteme unterstützen heutzutage Multithreading-Technologien. In der Praxis finden wir folgende Varianten:

Time Slicing: Bei dieser Variante teilt ein Algorithmus jedem Prozess eine gewisse Zeit zu, in der er abgearbeitet wird. Ist die Zeit vorüber, springt das System zum nächsten Thread, ohne den aktuellen Task fertig zu verarbeiten. Die Reihenfolge der Threads wird per Prioritätenliste festgelegt. Durch den schnellen Wechsel zwischen den einzelnen Tasks entsteht der Eindruck, dass mehrere Threads parallel ausgeführt werden. Dies ist jedoch nicht der Fall. Beim Time Slicing handelt es sich um eine Pseudo-Gleichzeitigkeit.

Switch on Event Multithreading (SoEMT): Diese Methode wechselt den Thread nicht nach einer definierten Zeiteinheit, sondern ereignisbasiert. Dies ist beispielsweise dann der Fall, wenn der Nutzer bestimmte Eingaben wie den Zugriff auf das I/O-Register oder einen speicherintensiven Task auslöst. Beim SoEMT werden die Prozesse nicht ganz so häufig gewechselt.

Simultanes Multithreading (SMT): Dies ist die Königsdisziplin des Multithreading. Durch getrennte Pipelines oder zusätzliche Registersätze ist der Prozessor in der Lage, mehrere Threads parallel auszuführen. Hier handelt es sich also um echte Gleichzeitigkeit. Die gängigste Form von SMT ist Hyperthreading. Hierbei gaukelt der physische Prozessor dem Betriebssystem vor, es handle sich um zwei logisch getrennte CPUs. Das Betriebssystem wiederum behandelt den einen physischen Prozessor wie zwei CPUs und teilt die Threads entsprechend auf. Durch eine Logik mit zwei parallelen Befehls- und Datenströmen steigert die CPU die Ausführungsgeschwindigkeit.

 
centron Multithreading Server Solutions

Performante Server von centron

Wir setzen bei all unseren Lösungen auf marktführende Multithreading CPUs von Intel und AMD. Profitieren Sie von bester Performance!
Unsere Lösungen
 

Anwendungsbeispiele für Multithreading

In der jüngeren Vergangenheit hat Multithreading immer mehr an Bedeutung gewonnen. Heute ist diese Technologie fester Bestandteil der aktuellen Prozessorengeneration. Bestimmt haben auch Sie schon einmal auf ein Programm zugegriffen, das Multithreading verwendet. Typische Praxisbeispiele lassen sich in so gut wie jedem Bereich finden:

  • Das Bearbeiten und Erstellen von Texten bei gleichzeitig aktiver Rechtschreibhilfe im Hintergrund.
  • Das Ausdrucken von Dokumenten, während der User noch in der Datei arbeitet.
  • Das Rendern einer Szene im Schnittprogramm, während der User bereits an der nächsten arbeitet.
  • Ein Webserver, der mehrere Threads verwendet, um gleichzeitige Anfragen parallel zu verarbeiten.
  • Ein Bildanalysealgorithmus, der Sequenzen eines Bildes in mehrere Threads aufteilt, um das Bild besser analysieren zu können.

Fazit

Die stetig wachsenden Datenmengen verlangen auch der Hardware immer mehr an Leistung ab. Multithreading ist die Antwort auf diese Entwicklung. Diese Technologie ermöglicht es heute, Hochleistungsprozessoren zu einem erschwinglichen Preis anzubieten. Auch wir von centron verbauen führende CPUs von AMD und Intel in all unseren Produkten – sei es ein Webhosting-Paket, ein dedizierter Managed Server, Managed vServer oder unser Cloud Hosting. So profitieren unsere Kunden bei Ihren Webprojekten immer und überall von bester Performance.