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

So klonen Sie eine Festplatte

So klonen Sie eine Festplatte

Im modernen digitalen Zeitalter, in dem Daten ein wertvolles Gut sind, kann das Klonen einer Festplatte unter Windows für viele ein entscheidender Prozess sein. Dieser umfassende Leitfaden

Wie behebt man, dass der Treiber WUDFRd unter Windows 10 nicht geladen werden konnte?

Wie behebt man, dass der Treiber WUDFRd unter Windows 10 nicht geladen werden konnte?

Wird beim Booten Ihres Computers die Fehlermeldung angezeigt, dass der Treiber WUDFRd nicht auf Ihren Computer geladen werden konnte?

So beheben Sie den NVIDIA GeForce Experience-Fehlercode 0x0003

So beheben Sie den NVIDIA GeForce Experience-Fehlercode 0x0003

Tritt auf Ihrem Desktop der NVIDIA GeForce-Fehlercode 0x0003 auf? Wenn ja, lesen Sie den Blog, um herauszufinden, wie Sie diesen Fehler schnell und einfach beheben können.

Warum lässt sich mein Chromebook nicht einschalten?

Warum lässt sich mein Chromebook nicht einschalten?

Erhalten Sie Antworten auf die Frage: Warum lässt sich mein Chromebook nicht einschalten? In diesem hilfreichen Leitfaden für Chromebook-Benutzer.

So ändern Sie das Zifferblatt einer Fitbit Versa 4

So ändern Sie das Zifferblatt einer Fitbit Versa 4

Ändere das Zifferblatt deiner Fitbit Versa 4, um deiner Uhr jeden Tag kostenlos ein anderes Aussehen zu verleihen. Sehen Sie, wie schnell und einfach es geht.

Roomba stoppt, bleibt hängen und dreht sich um – Reparieren

Roomba stoppt, bleibt hängen und dreht sich um – Reparieren

Beheben Sie ein Problem, bei dem Ihr Roomba-Roboterstaubsauger anhält, hängenbleibt und sich ständig umdreht.

So ändern Sie die Grafikeinstellungen auf Steam Deck

So ändern Sie die Grafikeinstellungen auf Steam Deck

Das Steam Deck bietet ein robustes und vielseitiges Spielerlebnis direkt auf Knopfdruck. Allerdings, um Ihr Spiel zu optimieren und das bestmögliche zu gewährleisten

Was ist isolationsbasierte Sicherheit?

Was ist isolationsbasierte Sicherheit?

Wir werden uns mit einem Thema befassen, das in der Welt der Cybersicherheit immer wichtiger wird: Isolationsbasierte Sicherheit. Dieser Ansatz zu

How to Use Auto Clicker for Chromebook

How to Use Auto Clicker for Chromebook

Today, were going to delve into a tool that can automate repetitive clicking tasks on your Chromebook: the Auto Clicker. This tool can save you time and

Was ist SMPS?

Was ist SMPS?

Erfahren Sie, was SMPS ist und welche Bedeutung die verschiedenen Effizienzbewertungen haben, bevor Sie sich für ein SMPS für Ihren Computer entscheiden.