Ich lese Tracy Kidders "Die Seele einer neuen Maschine", in der ein Team von Data General eine neue Maschine entwirft (Codename "Eagle", später MV / 8000 genannt). Es ist eine 32-Bit-Erweiterung einer früheren Architektur (der 16-Bit-Eclipse). Eines der sich drehenden Themen scheint zu sein, dass sie keine Maschine mit einem Modusbit erstellen wollen und dass ihnen dies gelungen ist.
Es wird jedoch nicht berücksichtigt, wie dies technisch erreicht wird, und es wird auch nicht erläutert, warum es so attraktiv war, eine Maschine ohne Modusbit zu erstellen. Das Buch ist kein technisches Buch, daher könnte es sein, dass die Details irgendwie verzerrt waren. Beim Lesen dieses Buches hat man jedoch das Gefühl, dass eine "Mode-Bit" -Lösung zu dieser Zeit üblich (und daher machbar) war, von den Ingenieuren jedoch möglicherweise aus ästhetischen Gründen als unattraktiv angesehen wurde. Das Buch lässt es auch als eine immens schwierige Aufgabe erscheinen, ein Design ohne einen Modus zu erstellen, der von diesem speziellen Team irgendwie überwunden wurde.
Ich fand diese Beschreibung, wie es erreicht wurde:
http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt
Grundsätzlich scheint es darum zu gehen, einen zuvor nicht verwendeten Teil des Opcode-Bereichs für die neuen Anweisungen zu verwenden. Ich muss zugeben, dass ich ein bisschen enttäuscht war, dass es "genau das" war. Ich denke auch, dass dies noch einige Fragen offen lässt:
Wie lebten die 16-Bit-Prozesse im 32-Bit-Adressraum? Weil ich denke, dass dies die zentrale Herausforderung bei der Erstellung einer 32-Bit-Erweiterung "ohne Modusbit" ist. Das Erweitern des Befehlssatzes ist dagegen ein relativ häufiges Unterfangen. Da es keine Beschreibung gibt, wie es passiert ist, könnte man annehmen, dass der 16-Bit-Code einfach wie immer auf den Speicher zugreift, möglicherweise sieht er eine Art virtualisierte / bankierte Ansicht des Speichers (wobei neue CPU-Register steuern, wo sich die erste Adresse befindet) oder so ähnlich. Aber ich weiß nicht, ob mehr dahinter steckt. In diesem Fall könnte man argumentieren, dass es sich irgendwie um eine "Modusbit" -Lösung handelt. Die 16-Bit-Modus-Prozesse könnten aufgrund spezieller Funktionen, die der CPU hinzugefügt wurden, neben den anderen Prozessen ausgeführt werden.
Zweitens, warum war es so attraktiv, eine Maschine ohne Modusbit zu erstellen? Viele der in diesem Buch angepriesenen Vorteile sind, dass Kunden alte Software ausführen wollten. Dies scheint jedoch nicht gegen ein Modusbit zu sprechen, da der gesamte Zweck der Verwendung eines Modusbits in der Abwärtskompatibilität besteht. Als AMD x86 auf 64-Bit erweiterte, war es zumindest nach meinem Verständnis des Wortes "Modusbit" genau das, ein Modusbit hinzuzufügen. Ein spezielles Bit, das die CPU in den 64-Bit-Modus versetzen würde. Und ein weiteres Bit, mit dem ein Prozess in einem "Untermodus" des 64-Bit-Modus ausgeführt wird (um die Kompatibilität mit 32-Bit-Anwendungen zu ermöglichen). Das Wesentliche des Submodus ist, dass die CPU den Befehlsstrom als die alten 32-Bit-Befehle interpretiert, die vorgenommenen 32-Bit-Speicherzugriffe jedoch unter Verwendung des neuen Seitentabellenformats (Einrichtung durch das 64-Bit-fähige Betriebssystem) und schließlich aufgelöst werden dem vollständigen physischen Adressraum zugeordnet. Der 32-Bit-Code kann auch durch 64-Bit-Code vorbelegt werden. Wie bei der Data General-Lösung konnte auch hier ein 32-Bit-Programm unter 64-Bit-Programmen ausgeführt werden (16-Bit gegenüber 32-Bit im DG-Fall). Aus Kundensicht scheint es also überhaupt keinen Unterschied zu geben. Daher hätte der einzige Vorteil in der Implementierung liegen können, die das Design vereinfacht, aber das Buch lässt es nicht so klingen, als wäre es das Problem, da das Modusbit selbst zu dieser Zeit als üblich angesehen wurde (und es scheint, dass spätere Architekturen dies auch getan haben) setzte es ein, wie der x64-Fall zeigt).
Ich bin mir sicher, dass ich etwas verpasst habe. Es wäre also großartig, wenn jemand mehr über die technischen Details und die Vorzüge dieses "No-Mode-Bit" -Designs diskutieren könnte.