Was ist ein Kontextwechsel?

In den frühen Tagen des Rechnens waren CPUs rein sequentielle Maschinen. Dies half, die Designs einfach zu halten. Allerdings schränkte es auch die Leistung ein. Viele Prozesse müssen Daten aus dem System-RAM oder der Festplatte anfordern. Obwohl der System-RAM schnell ist, ist er immer noch nicht so schnell wie die CPU, sodass er im Leerlauf sitzt und auf Daten wartet, bis die Antwort vom RAM zurückkommt. Die Situation ist noch schlimmer für Daten, die von der Festplatte angefordert werden, einem Speichergerät, das viel langsamer als RAM ist. Hier kann die CPU längere Zeit im Leerlauf sein und auf eine Antwort warten. Leider ist dieses Problem bei sequentiellen Prozessoren einfach unvermeidlich.

Zum Glück sind moderne CPUs nicht mehr sequentiell. Sie bieten viele erweiterte Funktionen, wie z. B. Out-of-Order-Ausführung und mehrere Threads. Die Ausführung außerhalb der Reihenfolge ermöglicht es der CPU, anstehende Anweisungen zu analysieren und sie neu zu ordnen, um die Effizienz zu maximieren. Multi-Threading ermöglicht es der CPU, zahlreiche verschiedene Threads oder Prozesse auszuführen.

Abgesehen davon, dass mehrere Kerne vorhanden sind, kann die CPU nicht mehr als einen gleichzeitig ausführen. Es kann jedoch so aussehen, indem es regelmäßig zwischen ihnen wechselt, um sicherzustellen, dass sie jeweils eine nennenswerte Menge konstanter CPU-Zeit erhalten. Der Vorgang des Wechselns zwischen Threads wird als Kontextwechsel bezeichnet.

Wie funktioniert ein Kontextwechsel?

Ein Kontextwechsel besteht aus zwei Teilen, dem Wechseln des vorherigen Threads und dem Wechseln des neuen. Um den alten Thread zu ändern, muss die CPU ihren aktuellen Zustand in einem Process Control Block oder Switch Frame speichern. Dieser umfasst die Werte aller relevanten CPU-Register und besteht immer aus dem Wert des Programmzählers. Nachdem der Thread gespeichert wurde, kann einer bereiten Warteschlange ein Handle hinzugefügt werden, damit er bei Bedarf wiederhergestellt werden kann.

Das Umschalten im folgenden Thread ist der gleiche Vorgang in umgekehrter Reihenfolge. Je nach Gewichtung wird ein Thread entweder aus der Ready-Queue ausgewählt. Alternativ kann es durch einen Interrupt ausgewählt werden, der anzeigt, dass ein Ereignis, auf das der Thread gewartet hat, jetzt bereit oder abgeschlossen ist. Die Daten für den Thread werden dann in die richtigen Register kopiert und der Thread wird wiederhergestellt. An diesem Punkt ist der neue Thread bereit, den Betrieb dort fortzusetzen, wo er gestoppt wurde.

Auswirkungen auf die Leistung

Der Prozess des Lesens und Schreibens von Daten beim Ein- oder Ausschalten eines Threads nimmt einige Zeit in Anspruch, wenn auch nicht viel, da der verwendete Speicher typischerweise Hochgeschwindigkeitsspeicher ist. Es fallen jedoch weitere Leistungskosten an. Beim Wechseln von Threads sind die Daten in den CPU-Caches und -Puffer des vorherigen Threads für den neuen Thread möglicherweise nicht relevant. Dies kann zu einem erheblichen Anstieg des TLB ( Translation Lookaside Buffer ) und zu Cache-Fehlschlägen führen.

Dieser Effekt ist nicht signifikant, wenn die beiden Threads von demselben Prozess erzeugt wurden, da sie wahrscheinlich beträchtliche Speicherelemente gemeinsam nutzen. Der TLB muss vollständig geleert werden, wenn zwischen Threads von unterschiedlichen Methoden gewechselt wird. Dies führt zu einer TLB-Miss-Rate von 100 %, während die Trefferquote des CPU-Cache ebenfalls deutlich reduziert wird.

Während CPUs Hardwareunterstützung für Kontextwechsel bieten, verwenden Betriebssysteme dies normalerweise nicht. Dem Hardware-Kontextwechsel fehlt das Bewusstsein für die Relevanz von Daten. Daher müssen alle Register gespeichert und wiederhergestellt werden, was die benötigte Zeit und den erforderlichen Speicherplatz erhöht.

Darüber hinaus speichert die Hardware-Kontextumschaltung nicht die Daten aus Gleitkommaregistern, eine Funktionalität, die möglicherweise erforderlich ist. Daher wird im Allgemeinen ein Software-Kontextwechsel verwendet. Es ermöglicht die Beibehaltung der Daten aus allen Registern, einschließlich Gleitkommaregistern. Software-Kontextwechsel haben ein Verständnis für die Relevanz von Daten. Das bedeutet, dass es nach Bedarf auswählen kann, welche gespeichert werden sollen.

Abschluss

Ein Kontextwechsel ist ein Prozess, durch den eine moderne CPU wechselt, welchen Thread sie ausführt. Der Prozess umfasst das Speichern der relevanten Daten des aktuellen Threads und das Wiederherstellen der relevanten Daten des neuen Threads. Die Kontextumschaltung ist mit Leistungseinbußen verbunden, die sich auf die für die Durchführung der Umschaltung benötigte Zeit und die erhöhte Rate an Cache- und TLB-Fehlschlägen beziehen, da diese nicht gespeichert werden. Kontextwechsel erfolgen entweder, um sicherzustellen, dass alle Threads genügend CPU-Zeit haben, oder weil ein Interrupt anzeigt, dass ein Ereignis, auf das die Leitung gewartet hat, abgeschlossen ist.



Leave a Comment

Was tun, wenn Powerbeats Pro nicht im Ladecase aufgeladen werden?

Was tun, wenn Powerbeats Pro nicht im Ladecase aufgeladen werden?

Wenn Ihre Powerbeats Pro nicht aufgeladen werden, verwenden Sie eine andere Stromquelle und reinigen Sie Ihre Ohrhörer. Lassen Sie das Ladecase geöffnet, während Sie Ihre Ohrhörer aufladen.

3D-Druck Grundlagen: Eine unverzichtbare Wartungscheckliste

3D-Druck Grundlagen: Eine unverzichtbare Wartungscheckliste

Die Wartung Ihrer Geräte ist ein Muss. Hier finden Sie nützliche Tipps, um Ihren 3D-Drucker in Top-Zustand zu halten.

Canon Pixma MG5220: Scannen ohne Tinte

Canon Pixma MG5220: Scannen ohne Tinte

Wie man das Scannen mit dem Canon Pixma MG5220 aktiviert, wenn die Tinte ausgeht.

5 Gründe, warum Ihr Laptop überhitzt

5 Gründe, warum Ihr Laptop überhitzt

Erfahren Sie mehr über einige mögliche Ursachen, warum Ihr Laptop überhitzt, sowie Tipps und Tricks zur Vermeidung dieses Problems und zur Kühlung Ihres Geräts.

So beheben Sie den GeForce Now Fehlercode 0xC272008F

So beheben Sie den GeForce Now Fehlercode 0xC272008F

Sie machen sich bereit für eine große Gaming-Nacht – Sie haben gerade “Star Wars Outlaws” auf dem GeForce Now Streaming-Dienst erworben. Entdecken Sie die einzige bekannte Lösung, die Ihnen zeigt, wie Sie den GeForce Now Fehlercode 0xC272008F beheben können, damit Sie wieder Ubisoft-Spiele spielen können.

3D-Druck Grundlagen: Wartungstipps für Ihren 3D-Drucker

3D-Druck Grundlagen: Wartungstipps für Ihren 3D-Drucker

Die Wartung Ihrer 3D-Drucker ist sehr wichtig, um die besten Ergebnisse zu erzielen. Hier sind einige wichtige Tipps, die Sie beachten sollten.

So finden Sie die IP-Adresse eines Druckers

So finden Sie die IP-Adresse eines Druckers

Haben Sie Schwierigkeiten herauszufinden, welche IP-Adresse Ihr Drucker verwendet? Wir zeigen Ihnen, wie Sie sie finden.

So verwenden Sie AirPods mit Samsung-Handys

So verwenden Sie AirPods mit Samsung-Handys

Wenn Sie sich unsicher sind, ob Sie AirPods für Ihr Samsung-Handy kaufen sollen, kann dieser Leitfaden Ihnen auf jeden Fall helfen. Die offensichtlichste Frage ist, ob die beiden kompatibel sind, und die Antwort lautet: Ja, das sind sie!

Fix: Chromebook „Fehler beim Konfigurieren des Netzwerks“

Fix: Chromebook „Fehler beim Konfigurieren des Netzwerks“

Wenn auf Ihrem Chromebook beim Konfigurieren des Netzwerks ein Fehler aufgetreten ist, aktivieren Sie die Netzwerkfreigabe, starten Sie Ihren Laptop neu und trennen Sie Ihren Router.

Grundlagen des 3D-Drucks: Was ist MSLA 3D-Druck?

Grundlagen des 3D-Drucks: Was ist MSLA 3D-Druck?

Maskiertes Stereolithographiegerät (MSLA) ist eine modifizierte Form des SLA-Drucks und bietet zahlreiche Vorteile, einschließlich schnelleren Druckzeiten.