x86-Programmierung und -Betriebsarten (Teil 1)

Speicherzugriff und Befehlsausführung

Selbstverständlich hat ein Speicherzugriff durch einen aktiven Befehl - beispielsweise als Folge der Anweisung

MOV register, speicher

Vorrang vor dem Nachladen der Prefetch-Queue. Parallel zur Ausführung des gerade aktiven Befehls und dem Nachladen der Prefetch-Queue dekodiert die Befehlseinheit den nächsten Befehl und bereitet ihn für die EU (Execution Unit, Ausführungseinheit) zur Ausführung vor. Die Ausführungseinheit führt den Befehl nun in einer bestimmten Zahl von Taktzyklen aus. Einfache Befehle wie CLC benötigen hierzu zwei Taktzyklen, umfangreichere wie ein Task Switch über ein Gate im Protected Mode dagegen bis über 300 Taktzyklen. Man erhält somit einen gleichmäßigen Befehlsstrom vom Speicher zum Prozessor. Anders ausgedrückt wird ein Programm Schritt für Schritt sequenziell ausgeführt. Ab dem Pentium wird allerdings versucht möglichst viele, aber voneinander unabhängige Schritte parallel auszuführen, um die Leistung des Computers zu steigern. Der Pentium z.B. weist hierfür drei unabhängige Pipelines auf, die parallel arbeiten können.

Der gleichmäßige Befehlsstrom kann durch bedingte und unbedingte Sprünge und Verzweigungen unterbrochen und an einer anderen Stelle fortgesetzt werden. Hierzu muss nur der Wert des Befehlszählers und ggf. des Codesegments verändert werden. Bei einem Near-Aufruf oder -Sprung bleibt das Codesegment unverändert, es wird nur der Wert des EIPs neu geladen. Demgegenüber wird bei einem Far-Aufruf oder Sprung auch der Wert des Codesegments verändert und ein so genannter Intersegmentaufruf oder -sprung ausgeführt. Der Prozessor fährt an einer anderen Stelle des im Speicher befindlichen Programms fort. Durch einen solchen Sprung wird außerdem die Prefetch-Queue vollständig geleert, da die im Vorgriff eingelesenen Bytes nicht dem neu angesprungenen Befehl entsprechen. Sprünge, Aufrufe - allgemeiner auch als Verzweigungen oder Branches bezeichnet - sind für den logischen Aufbau von Programmen sehr wichtig, weil ein Computer häufig in Abhängigkeit von bestimmten Bedingungen verschiedene Dinge ausführen soll.