Sicher kennen Sie das klassische Science- Fiction-Szenario, bei dem ein Held in der Zeit zurückreist, um etwas in der Vergangenheit auszulöschen, um so eine Katastrophe zu verhindern. Leider werden wir so schnell nicht in den Genuss von Zeitmaschinen kommen. Dennoch: Eine kleine Zeitreise findet bereits heute in unseren Computern statt. Und zwar ständig.
Ort dieser Zeitreise ist die Central Processing Unit, genannt CPU oder auf deutsch Prozessoren, die man als Gehirn des Computers bezeichnen könnte. Die Funktionsweise einer CPU ist einfach: Sie liest Anweisungen, etwa die Addition zweier Zahlen, und führt sie aus. Aber die Zahlen und Daten, mit denen die CPU arbeitet, sind nicht alle auf der CPU gespeichert. Stattdessen befinden sie sich im Arbeitsspeicher des Computers (also in separaten Chips). Bevor die CPU also eine mathematische Berechnung durchführen kann, muss sie die Werte vom Arbeitsspeicher abrufen. Diesen Vorgang nennt man Speicherzugriff oder Memory Access.
Ein Speicherzugriff dauert etwa ein Millionstel einer Sekunde
Interessanterweise ähnelt diese Computerarchitektur einem Kaufmann im alten China, der einen Abakus und ein Blatt Papier verwendet, um seine Verkäufe zu verzeichnen. Der Abakus wurde für die Berechnungen verwendet (wie die CPU), das Papier hingegen, um auf die Ergebnisse zuzugreifen und sie festzuhalten (wie der Arbeitsspeicher). Man kann also sagen, dass in den 1940er-Jahren, als der moderne Computer das Licht der Welt erblickte, eine jahrtausendealte Architektur neu interpretiert wurde.
Aber zurück zum Speicherzugriff, einem relativ langsamen Vorgang. Ein Zugriff dauert etwa ein Millionstel einer Sekunde. In diesem Zeitraum kann eine CPU Hunderte oder Tausende andere Operationen durchführen! Was macht die CPU also, während sie darauf wartet, dass die Daten aus dem Arbeitsspeicher abgerufen werden? Natürlich könnte sie einfach warten, aber das wäre eine Zeitverschwendung, oder?
Manchmal schätzen CPUs die Daten falsch
Daher wurden CPUs so entwickelt, dass sie trotzdem versuchen weiterzuarbeiten und sinnvolle Aufgaben zu verrichten, auch wenn der Speicherzugriff noch aussteht. Das tun sie, indem sie versuchen, die Daten, die aus dem Speicher abgerufen werden, vorab zu schätzen, damit sie direkt bereit sind und ihre Aufgabe ausführen können, wenn sie ankommen. Das nennt man Speculative Execution und es ist einer der vielen schlauen Tricks, wegen derer Computer heute so schnell sind.
Aber was, wenn die CPU eine falsche Zukunft vorhersagt? Dann muss sie natürlich ihre Ausführungen rückgängig machen, da sonst die Gegenwart nicht mehr stimmen würde – ein bisschen wie in den Science-Fiction-Filmen, die wir am Anfang erwähnt haben!
Kürzlich hat sich herausgestellt, dass auch nachdem die falschen Schätzungen rückgängig gemacht wurden, Spuren davon auf dem Computer zurückbleiben können, und das kann ausgenützt werden. So haben die Viren Spectre und Meltdown, die Anfang Januar in den Schlagzeilen waren, genau solche Schwachstellen ausgenützt. Aber das heben wir uns für einen künftigen Beitrag auf…