Was ist eine Gedächtnisbarriere?

Historisch gesehen waren CPUs perfekt sequentielle Maschinen. Dies ist sehr logisch und leicht zu verstehen, kann jedoch ein Leistungsproblem darstellen. Im Laufe der Jahre wurden viele geniale Anpassungen an CPU-Designs vorgenommen, um so viel Leistung wie möglich aus Siliziumwafern herauszuholen. Eine der interessanteren ist jedoch die Ausführung außerhalb der Reihenfolge. In Out-of-Order-Ausführungs-CPUs müssen Befehle nicht unbedingt in der Reihenfolge ausgeführt werden, in der sie ausgegeben werden.

Abwürgen in Ordnung

Das Hauptleistungsproblem, auf das eine In-Order-CPU stößt, wird als Pipeline-Stall bezeichnet. Dies geschieht, wenn ein Befehl von einem gewissen Speicher abhängig ist, dieser Speicher jedoch nicht direkt in einem Register verfügbar ist. In diesem Fall muss die CPU diesen Wert im Speicher finden. Der CPU-Cache wird zuerst überprüft, da dies die schnellste Speicherschicht ist. Wenn der Wert nicht vorhanden ist, wird das System-RAM überprüft. Während dieser Zeit muss sich die CPU im Leerlauf befinden, da die speicherabhängige Anweisung vor den folgenden Anweisungen der Reihe nach abgeschlossen werden muss.

Die Auswirkung eines Pipeline-Stalls auf die Leistung ist möglicherweise nicht so schlimm, kann aber auch relativ schwerwiegend sein. Beispielsweise kann der L1-Cache typischerweise ein Ergebnis in der Größenordnung von 5 CPU-Zyklen zurückgeben. Der L2-Cache kann 20 Zyklen benötigen, L3 etwa 200 Zyklen und der System-RAM etwa 400 Zyklen. Angesichts der Tatsache, dass eine CPU mit etwa 5 GHz arbeiten kann, das sind 5 Milliarden Taktzyklen pro Sekunde, sind selbst 400 Zyklen nicht so schlimm (0,000008 %). Wenn Sie jedoch viele Anweisungen haben, die auf Daten weiter unten in den Cache-Ebenen verweisen müssen, kann der kumulative Effekt eine spürbare Verlangsamung verursachen.

Out-of-Order-Ausführung und Registerumbenennung

Die Ausführung außerhalb der Reihenfolge ist eine Technik, die es dem Planer ermöglicht, die Anweisungen in seiner Warteschlange neu zu ordnen. Durch diese Neuordnung kann es bestimmte Threads gegenüber anderen priorisieren. Es kann auch Anweisungen zurück in die Warteschlange verschieben, wenn sie eine Datenabhängigkeit haben, die noch nicht erfüllt wurde. Dies verhindert so weit wie möglich Pipeline-Stalls und minimiert Leerlaufzyklen.

Die Ausführung außerhalb der Reihenfolge erfordert eine Funktion namens Registerumbenennung. Die CPU kann innerhalb eines einzigen Zyklus auf Daten zugreifen, die in Registern gehalten werden. Register werden verwendet, um gelesene und geschriebene Daten zu speichern. Es ist jedoch wichtig sicherzustellen, dass der Computer insgesamt alles in der logischen Reihenfolge sieht, nicht in der falschen, CPU-Zyklus-optimierten Reihenfolge. Um dies zu ermöglichen, haben CPUs viel mehr logische Register, als die CPU-Architektur erfordert.

Daten, die ausgeschrieben werden müssen, aber einen „früheren“ Befehl haben, der noch nicht abgeschlossen ist, werden in einem Halteregister abgelegt. Diese Daten werden nicht in eine andere Kasse übertragen, wenn sich die Bestellung erledigt hat. Stattdessen wird der Name des Bestandsregisters in das des Registers geändert, in dem es sich befinden sollte. Dies ähnelt in etwa der Zubereitung eines Desserts vor dem Hauptgericht, das dann bis zum Servieren im Kühlschrank aufbewahrt wird.

Diese logischen Register sind vollständig unadressiert. Die CPU kann nur die logischen Register wirklich adressieren, die derzeit den Namen der architektonischen Register teilen. Allerdings ist sich die CPU ihrer auch genug bewusst, dass sie, wenn andere neu geordnete Befehle auf die Daten im logischen Halteregister angewiesen sind, diese anstelle der „veralteten“ Daten im Architekturregister zu diesem bestimmten empirischen Zeitpunkt verwenden kann.

Erinnerungsbarrieren

Eine Speicherbarriere – auch als Membar, Memory Fence oder Fence Instruction bezeichnet – ist eine Anweisung im Computercode. Es ermöglicht einem Programmierer, eine Ordnungsbeschränkung für Speicheroperationen durchzusetzen, die vor und nach der Speicherbarriere ausgegeben werden. Die Speicherbarriere weist den CPU-Scheduler an, sicherzustellen, dass alle Anweisungen vor allen Anweisungen nach der Barriere verarbeitet werden. Dies geschieht, um sicherzustellen, dass wichtige Vorgänge in der richtigen Reihenfolge ausgeführt werden.

Im Allgemeinen sollte dies auf modernen Computern nicht erforderlich sein. Out-of-Order-Execution und Registry-Umbenennung sind etablierte und ausgereifte Bereiche. Nichtsdestotrotz kann eine Speicherbarriere für ältere, weniger ausgeklügelte Prozessoren außerhalb der Reihenfolge hilfreich sein oder bei kritischen Speicheroperationen verwendet werden.

Speicherbarrieren können mit einigen Leistungseinbußen einhergehen. Dies liegt daran, dass sie den CPU-Scheduler aktiv daran hindern, bestimmte Teile des Befehlsflusses zu optimieren. Dies erhöht die Wahrscheinlichkeit eines Pipeline-Stalls.

Abschluss

Eine Speicherbarriere ist eine Anweisung, die eine Ordnungseinschränkung für Speicheroperationen sicherstellt. Dies ist wichtig, weil Verarbeitungsprozessoren außerhalb der Reihenfolge bestimmte Anweisungen neu anordnen können. Obwohl die Registrierungsumbenennung als Methode zur Gewährleistung der Speicherintegrität in dieser Umgebung gut etabliert ist, kann es hilfreich sein, sie manuell sicherzustellen.

Die Speicherbarriere zwingt den CPU-Scheduler sicherzustellen, dass Anweisungen vor allen Anweisungen nach der Barriere abgeschlossen werden. Dies verhindert, dass Speicheroperationen neu geordnet werden. Es verhindert auch, dass die CPU den Befehlsfluss optimiert, was sich auf die Leistung auswirken kann.



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.