Auf den ersten Blick wissen wir alle, dass die besten Prozessoren diejenigen sind, die mit weniger mehr machen können – also die größtmögliche Geschwindigkeit entwickeln, ohne den Energieverbrauch in die Höhe zu treiben. Doch sobald wir die Grenze der grundlegenden Spezifikationen überschreiten, entdecken wir, dass moderne Prozessoren im Allgemeinen versuchen, alles, was durch sie läuft, vorzuberechnen, vorwegzunehmen und vorherzusagen. Der youtuber Matt Godbolt beschreibt dies anhand von fünf Aspekten, die dem Durchschnittsnutzer kaum bekannt sind und trotz ihrer technischen Komplexität faszinieren.
Eine der ersten Erinnerungen an die ersten Atom-Prozessoren ist, dass sie langsam wie Schnecken waren. Im Wesentlichen hat Intel den niedrigen Verbrauch über die Leistung gestellt, indem es eine neue Architektur auf Basis alter Konzepte anwandte – und eine der Dinge, die dabei auf der Strecke blieben, war die Out-of-order-Ausführung.
Worum geht es? Umgangssprachlich ist es einer der vielen Tricks, die heutige Prozessoren nutzen, um die Ausführung von Befehlen zu beschleunigen. Wer diese Tricks besser verstehen möchte, sollte in die seltsame Welt der Architekturen eintauchen, insbesondere in die von Intel entwickelten. Die Alternative ist, sich dieses Video von Matt Godbolt anzusehen, das fünf davon beschreibt:
Fünf Dinge, die eine CPU tut
- Sie versuchen zu erraten wie auf deine Daten zugegriffen wird und Muster zu erkennen – eine Form des Prefetching, das zu einer deutlichen Geschwindigkeitssteigerung führt. Anders gesagt: Sie laden Cache-Zeilen automatisch, bevor du sie brauchst, und sind dem Prozess damit einen Schritt voraus.
- Sie wandeln CISC (Complex Instruction Set Computing) in RISC (Reduced Instruction Set Computing) um. Die Operationen der ersten Architektur werden in eine Reihe von Mikrocode oder Mikrooperationen umgewandelt, die unabhängig programmiert werden können, was zu Einfachheit und Effizienz führt.
- Sie reorganisieren die Codeausführung. Die Reihenfolge, in der der Code geschrieben wird, ist nicht die Reihenfolge, in der er von den Prozessoren ausgeführt wird. Die Unabhängigkeit zwischen Blöcken ermöglicht die Ausführung von Befehlen, während eine andere Gruppe wartet.
- Sie wandeln den Code in SSA um. SSA einfach zu erklären ist eine enorme Herausforderung, aber Godbolt reduziert es auf eine Reihe von Optimierungen, die prüfen, ob der Code wirklich unabhängig ist (etwas, das für die vorherigen Aktionen wesentlich ist) – und falls nicht, wird er so umgeschrieben, dass er diese Eigenschaft erhält. In seinem Beispiel verwendet er „fiktive“ Register wie EAX1 und EAX2.
- Sie sagen die Zukunft voraus. Hier kommt der sogenannte Sprungvorhersager ins Spiel, der, wie der Name schon sagt, die Aufgabe hat, vorherzusagen, ob ein bedingter Sprung stattfinden wird oder nicht, und die Ergebnisse als spekulativ einstuft. Wenn die Vorhersage fehlschlägt, werden sie verworfen. Wenn sie richtig war, sind sie bereits geladen. Mehr Geschwindigkeit.
Zusammenfassend: Datenvorausladen, Mikrocode-Umwandlung, Out-of-order-Ausführung, Registerumbenennung und Sprungvorhersage. Wenn dich das an die bösen Buben namens Spectre und Meltdown erinnert, dann deshalb, weil sie gewissermaßen aus Schwächen dieser Aufgaben entstehen. Das Verhältnis zwischen Geschwindigkeit und Sicherheit erfordert ein viel feineres Gleichgewicht, als wir uns vorstellen...
https://old.neoteo.com/como-trabaja-un-cpu/