Multithreading: Mehr Leistung für Prozessoren
Moderne Anwendungen und Spiele stellen immer größere Herausforderungen an die Hardware. Neben besonders ausgefeilter Grafik und enormen Anforderungen an den Speicherplatz ist vor allem die Geschwindigkeit des Prozessorkerns wichtig für die reibungslose Arbeit mit PC oder Laptop. Um diesen Herausforderungen gerecht zu werden, entwickeln Hardware-Hersteller regelmäßig neue Techniken und Architekturen für ihre CPUs. Eine solche Technik ist das Multithreading. Der Prozessor schafft es hierbei, mehrere Threads (eine kleine Berechnungseinheit) mehr oder weniger gleichzeitig zu bearbeiten. Wie kann das funktionieren?
- Inklusive Wildcard-SSL-Zertifikat
- Inklusive Domain Lock
- Inklusive 2 GB E-Mail-Postfach
Was ist Multithreading?
Um die Geschwindigkeit von Prozessorkernen zu erhöhen, ohne dabei die Taktfrequenz ändern zu müssen, lässt man mit Multithreading die CPU mehrere Aufgaben gleichzeitig bearbeiten. Genauer gesagt: Man lässt mehrere Threads gleichzeitig bearbeiten. Als Thread kann man einen Strang eines Prozesses auffassen. Programme lassen sich in Prozesse aufteilen und diese Prozesse dann wiederum in einzelne Threads. Jeder Prozess besteht aus mindestens einem Thread.
Prozesse werden in der Regel sequenziell abgearbeitet, also ein Prozess nach dem anderen. Das ist nicht optimal, denn auf diese Weise blockieren langwierige Aufgaben die Hardware. Wird ein anderer Prozess spontan benötigt, muss dieser dennoch warten, bis er an der Reihe ist. Beim Multithreading werden mehrere Threads gleichzeitig bearbeitet. Wobei auch diese Aussage nur bedingt korrekt ist: Wirkliche Gleichzeitigkeit kann nur selten gewährleistet werden, lässt sich aber inzwischen auch erreichen.
Doch auch die sogenannte Pseudo-Gleichzeitigkeit sorgt für einen Leistungsschub: Dabei organisiert und berechnet das System Threads so intelligent, dass man als Nutzer den Anschein von einer gleichzeitigen Bearbeitung bekommt. Nicht zu verwechseln ist diese Form der Gleichzeitigkeit mit den Möglichkeiten von Multicore-CPU. Besitzt das System mehrere Mikroprozessoren, werden auch mehrere Prozesse gleichzeitig bearbeitet.
Damit Multithreading wirkungsvoll eingesetzt werden kann, muss die Software dafür aufbereitet sein. Wenn Entwickler ihre Programme nicht in mehrere Threads aufteilen (können), funktioniert die Technologie nicht. Vielfach haben beispielsweise Gamer festgestellt, dass sie bei eingeschaltetem Multithreading eher einen Leistungsabfall bemerken. Die Computerspiele sind in diesem Fall nicht auf die Technik ausgelegt. Der Versuch des Systems, mehrere Threads gleichzeitig zu bearbeiten, wirkt sich dann nachteilig aus.
Ziele von Multithreading
Das ultimative Ziel von Multithreading ist es, die Rechengeschwindigkeit eines Computers und damit dessen Leistungsfähigkeit zu erhöhen. Dafür versucht man, die CPU-Auslastung zu optimieren. Statt einen Prozess lange vorzuhalten, auch wenn dieser noch auf Daten wartet, wechselt das System beim Multithreading schnell zur nächsten Aufgabe. So entstehen kaum noch Wartezeiten.
Gleichzeitig reagiert das System schneller auf Änderungen der Prioritäten. Nutzer oder Anwendungen brauchen plötzlich und ungeplant eine andere Aufgabe: Mit der Hilfe von Prioritätsstufen und kurzen Threads kann sich der Prozessor auch schnell einer anderen Aufgabe widmen.
Ausgelegt ist die Technologie vor allem darauf, einzelne Anwendungen, die aus mehreren Prozessen und Threads bestehen, zu beschleunigen. So können mehrere Aufgaben der gleichen Software mehr oder weniger parallel abgearbeitet werden. Sinnvoll ist das beispielsweise bei der Videobearbeitung: Hier kann zum Beispiel eine Szene im Hintergrund gerendert werden, während der Nutzer die nächste Szene editiert.
Mit Multithreading haben Chip-Hersteller die Möglichkeit, ihre CPUs zu beschleunigen, ohne dabei sehr viel höheren Energieverbrauch zu generieren. Während bei höherer Taktfrequenz auch mehr Wärme entsteht, die dann wieder kostspielig abgeführt werden muss, ist dies bei Multithreading nicht der Fall.
Wie funktioniert Multithreading?
Multithreading entsteht durch ein Zusammenspiel von Hardware und Software. Programme und Prozesse werden in einzelne Threads zerlegt und in diesen kleineren Einheiten von der CPU bearbeitet. Man unterscheidet das hardwareseitige vom softwareseitigen Multithreading.
Hardwareseitig
Für hardwareseitiges Multithreading stellen die einzelnen Programme ihre Prozesse aufgeteilt in Threads zur Verfügung. Das Betriebssystem übernimmt die Verwaltung der Threads und entscheidet, wann welcher Faden zuerst an die CPU weitergeleitet wird. Der Prozessor bearbeitet die Threads dann entweder gleichzeitig oder pseudo-gleichzeitig.
In der Praxis finden sich unterschiedliche Realisierungen von hardwareseitigem Multithreading.
Switch on Event Multithreading (SoEMT)
SoEMT arbeitet mit zwei Threads: Einer befindet sich im Vorder- und einer im Hintergrund. Der Wechsel der Ebenen (man spricht von einem Kontextwechsel) findet durch Ereignisse statt. Ein solcher Event kann beispielsweise die Nutzereingabe sein, aber auch die Meldung, dass ein Thread noch auf Daten wartet und deshalb nicht weiterverarbeitet werden kann. Das System wechselt dann schnell zum zweiten Thread und schiebt den anderen in den Hintergrund. Dieser wird erst dann weiterverarbeitet, wenn die benötigten Informationen eingetroffen sind. So reagiert das System schnell und erzeugt eine Pseudo-Gleichzeitigkeit zwischen den Threads im Vorder- und Hintergrund.
„Switch on Event Multithreading“ wird auch als „Coarse-grained multithreading“ bezeichnet. Man spricht von einer Grobkörnigkeit, da sich die Technik eher für längere Wartezeiten eignet. Während andere Techniken noch schneller reagieren, spielt SoEMT bei größeren Threadblöcken seine Stärken aus.
Time-Slice-Multithreading
Während SoEMT den Wechsel zwischen den Threads durch ein Ereignis auslöst, passiert dies beim Time-Slicing in festen Zeitintervallen. Auch wenn der Thread noch nicht abgeschlossen ist, berechnet der Prozessor einen anderen und wechselt erst im nächsten Intervall wieder zurück, um die Arbeit an dem Thread fortzuführen. Jeglicher Fortschritt bei der Bearbeitung eines Threads wird im Arbeitsspeicher gesichert.
Die Herausforderung besteht darin, die passende Länge des Intervalls zu wählen. Ist die Zeitspanne zu kurz, können die Prozesse kaum nennenswerte Fortschritte vornehmen. Bei zu langen Intervallen hingegen verliert man die Pseudo-Gleichzeitigkeit. Als Nutzer würde man dann merken, dass Prozesse nacheinander und nicht parallel bearbeitet werden.
Simultaneous Multithreading (SMT)
Die Multithreading-Technik SMT sorgt für echte Gleichzeitigkeit. In sogenannten Pipelines warten Threads auf ihre Berechnung. Der Prozessor bearbeitet dabei mehrere Pipelines parallel. Statt also immer wieder zwischen zwei Threads hin und her zu wechseln, werden die Teile der Prozesse tatsächlich gleichzeitig bearbeitet. Ein einzelner Prozessor tritt dabei wie mehrere (logische) Prozessoren auf. In der Praxis wird SMT mit der Multicore-Technologie verknüpft: So kann ein System mit zwei Prozessorkernen nach außen hin auftreten, als hätte es acht Kerne.
Der CPU-Hersteller Intel ist sehr erfolgreich mit der sogenannten Hyper-Threading Technology (HTT). Der Konkurrent AMD stellt inzwischen ebenfalls vergleichbare Technologien her. In beiden Fällen handelt es sich um SMT.
Softwareseitig
Beim softwareseitigen Multithreading ist ausschließlich die Anwendung dafür verantwortlich, die Prozesse in Threads aufzuteilen. Beim Betriebssystem und dem Prozessor kommen nur die einzelnen Fäden an. Die Hardware ist sich also in diesem Szenario gar nicht über die Zusammenhänge bewusst und behandelt jeden Thread individuell. Das System legt für jeden Thread eine Prioritätsstufe fest. Höhere Stufen werden schneller bearbeitet. Neue Prozesse, die schnell fertig werden müssen, können mit dieser Technik zwischengeschoben werden. Beim längerfristigen Prozess wird nur ein Thread fertiggestellt und die nächsten Threads landen in der Warteschlange weiter hinten.
Softwareseitiges Multithreading ist vor allem bei Systemen mit Einkernprozessoren sinnvoll. Da moderne Computer inzwischen mindestens mit Dual-Core-CPU ausgestattet sind, verliert diese Form des Multithreadings also an Bedeutung.
Multithreading vs. Multitasking
Zwar mögen sich die beiden Technologien auf den ersten Blick ähneln, doch Multitasking und Multithreading basieren auf zwei unterschiedlichen Ideen. Multitasking bedeutet prinzipiell nur, dass mehrere Programme zur gleichen Zeit laufen. Die CPU wechselt dabei zwischen den einzelnen Tasks. Die Anwendungen werden aber nicht simultan (weder gleichzeitig noch pseudo-gleichzeitig) berechnet. In der Regel übernimmt das Betriebssystem die Organisation der verschiedenen Tasks und weist der CPU die anstehenden Prozesse zu. Für den Nutzer wirkt es so, als würden mehrere Programme gleichzeitig bearbeitet, tatsächlich wird aber immer gewechselt.
Wenn Sie den Task-Manager aufrufen, können Sie sehen, welche Prozesse das System nebeneinander laufen hat. Auch wenn Sie den Mac-Taskmanager öffnen, können Sie Einblicke in die Organisation der verschiedenen Tasks nehmen.
Beim Multithreading wird ein höheres Maß an Gleichzeitigkeit angestrebt. Allerdings versucht die Technik in erster Linie einzelne Programme zu beschleunigen. Während beim Multitasking ermöglicht wird, dass verschiedene Programme nebeneinander laufen, entstammen die einzelnen Threads für das Multithreading dem gleichen Programm. Die gleichzeitige Bearbeitung dieser Prozessabschnitte sorgt dann dafür, dass die Software schneller läuft.
Multithreading ist eine intelligente und kostensparende Möglichkeit, die Prozessorleistung zu erhöhen. Dies funktioniert allerdings nur, wenn die Software auch darauf eingestellt ist. Wer seinem Computer mehr Leistung verschaffen möchte, ohne dafür Multithreading einzusetzen, findet auch dafür Möglichkeiten. Wenn Sie die CPU übertakten, müssen Sie allerdings sehr auf die CPU-Temperatur achten, denn sonst können Sie unter Umständen Ihr komplettes System lahmlegen.
- Automatisch: Backups und Recovery
- Intuitiv: Planung und Management
- Intelligent: KI-basierter Bedrohungsschutz
- Inkl. 300,- € Startguthaben im 1. Monat