Daten Allgemein MV / 8000-Tugenden von "No Mode Bit"

10

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.

Morty
quelle
In jenen Tagen - den Tagen, in denen die gemeinsame Wortgröße von 16 Bit auf 32 Bit verschoben wurde - hatten die meisten neuen 32-Bit-Architekturen unterschiedliche Befehlssätze, die vollständig von der 16-Bit-Leitung des gleichen Herstellers stammten - selbst wenn sie auch ausgeführt werden konnten der 16-Bit-Befehlssatz mit einem "Modusbit". Dies führte zu Marketingunsicherheiten, da die Leute, die Projekte auf neue 32-Bit-Maschinen aufrüsteten, keinen Grund sahen, bei derselben Hersteller zu bleiben - solange es sich um eine neue Architektur handelte, warum nicht die beste der neuen Maschinen aus einer beliebigen Hersteller auswählen ? Das Fehlen eines "Modusbits" deutete auf einen einfacheren "inkrementellen" Übergang hin: Bleiben Sie daher bei DG.
Davidbak

Antworten:

8

Die Antwort ist, dass Ed deCastro, Präsident von Data General Management, ein Team von Ingenieuren in North Carolina gegründet hat, um speziell die CPU der nächsten Generation zu entwerfen. Er hat uns, dem Massachusetts-Team, die Aufgabe der Unterstützung und der schrittweisen Verbesserung übertragen. Dreimal haben wir eine wichtige neue Architektur vorgeschlagen, jedes Mal mit einem sehr vernünftigen Modusbit, und sie als bescheidene inkrementelle Verbesserung beschrieben. Jedes Mal durchschaute Ed unsere Verkleidung und lehnte den Vorschlag ab, in der Erwartung, dass das Team aus North Carolina erfolgreich sein würde. Ed glaubte, dass er unabhängig davon, wie wir versuchten, unsere Vorschläge zu verschleiern, wissen würde, dass es sich um eine Architektur der neuen Generation handelt, wenn sie ein Modus-Bit hat. Wir mussten also eine Architektur der neuen Generation ohne Modusbit vorschlagen, auch wenn dies weniger effizient war. So haben wir es an Ed deCastro vorbei geschafft. Siehe Die Seele einer neuen Maschine,

Carl Alsing
quelle
Hallo Carl, danke für die Info, ja, es ist auch mein Eindruck (vom Lesen des Buches), dass die Mode-Bit-Diskussion sehr viel über politische Implikationen war. Gut mit Insider-Informationen - klingt so, als ob der MV / 8000 ein sehr aufregendes Projekt war, an dem man teilnehmen konnte.
Morty
6

Theoretisch würde "kein Modusbit" es Ihnen ermöglichen, das alte 16-Bit-Betriebssystem ohne jegliche Änderungen zu verwenden, und dieses Betriebssystem könnte 32-Bit-Apps starten, obwohl die neuen 32-Bit-Apps nicht funktionieren würden 16-Bit-virtuelle Adresse, könnte also die 32-Bit-Register und neue Anweisungen verwenden, würde sich aber schlecht verhalten, wenn sie auf virtuelle Adressen zugreifen, die größer als .216

Mit einem Modusbit hätte das alte 16-Bit-Betriebssystem geändert werden müssen, um herauszufinden, ob das Programm 16-Bit oder 32-Bit war, und dann das Modusbit vor dem Starten des Programms entsprechend gesetzt.

In der Praxis scheint das MV / 8000 tatsächlich ein Modusbit zu haben. An anderer Stelle auf Mark Smothermans Webseite bei Clemson hat er die Data General, ECLIPSE MV / 8000 Principles of Operation , 1980, veröffentlicht . Wenn Sie in Anhang E (ab Seite 369) nachsehen, werden Sie feststellen, dass der MV / 8000 über zwei völlig unterschiedliche Seitentabellenmechanismen verfügt. Die spezifische Maschine, mit der der MV / 8000 abwärtskompatibel war, war die C / 350, und die C / 350 verfügte über eine spezifische 16-Bit-Speicherzuweisungs- und Schutzeinheit mit spezifischen Möglichkeiten zur Steuerung dieser Einheit. Für einen logisch-physischen 32-Bit-Betrieb schalten Sie stattdessen die Adressübersetzungseinheit ein (beschrieben in Kapitel 3 ab Seite 31).

In der Praxis bedeutet dies, dass beim Ausführen eines 16-Bit-Befehls im 32-Bit-Modus festgelegt wird, dass die hohen 16-Bit-Werte der logischen Adresse auf 0 gesetzt werden. Außerdem muss angegeben werden, was mit dem hohen Wert geschieht 16-Bit-Adresse, wenn Sie einen 32-Bit-Befehl im 16-Bit-Modus ausführen, aber ich konnte ihn während meiner kurzen Durchsicht des Handbuchs nicht finden.

Es geht also weniger darum, ob ein Modusbit eine gute oder eine schlechte Sache ist oder nicht. Es gibt mehr keinen guten Grund, ein Modus-Bit zu verwenden, um zwischen 16-Bit- und 32-Bit-Befehlen zu unterscheiden. Die 16-Bit-Befehle verwenden 16-Bit-Register für logische Adressen (wobei die hohen 16-Bit auf 0 gesetzt sind) und 16-Bit-Register, und die 32-Bit-Befehle verwenden 32-Bit-Register für logische Adressen und 32-Bit-Register. Das alte Betriebssystem "funktioniert nur" auf dem neuen Computer, aber Sie können die neuen Anweisungen auch ausprobieren, indem Sie ein neues Programm unter dem alten Betriebssystem ausführen.

Wanderlogik
quelle
Hallo OK, dies macht das Ziel mit "kein Modusbit" klarer - das Ziel war es also, die ursprünglichen 16-Bit-Betriebssysteme booten zu können, aber dennoch ein 32-Bit-Programm von dort aus zu starten. Wie Sie sagen, ist es jedoch unmöglich, den logischen 32-Bit-Adressraum in 32-Bit-Programmen zu verwenden, die in diesem Modus ausgeführt werden. In gewisser Weise ähnelt es dem, was Intel beim Übergang von 16 Bit zu 32 Bit gemacht hat. Hier war es auch möglich, 32-Bit-Befehle (Zugriff auf den höheren Teil der Register) innerhalb eines 16-Bit-Programms (das beispielsweise unter MS-DOS ausgeführt wird) auszuführen. Zur gleichen Zeit hatten sie jedoch ...
Morty
... Modusbits zum Aufrufen des "wahren" 32-Bit-geschützten Modus (der auch Paging ermöglichte). Ein Unterschied besteht zwar darin, dass sich im 32-Bit-Modus die Codierung der 32-Bit-Befehle von der Codierung der 32-Bit-Befehle im 16-Bit-Modus unterscheidet (da der "Standard" unterschiedlich ist), die Fähigkeit jedoch dieselbe ist. Andererseits wurde beim x86-Übergang zu 64-Bit die Befehlskodierung vollständig geändert, sodass ein 32-Bit-Programm (oder ein 16-Bit-Programm) die 64-Bit-Register usw. nicht verwenden kann. Es ist ein aktualisiertes o erforderlich / s Starten des Prozesses im 64-Bit-Modus ("Long-Modus").
Morty
Man könnte jedoch immer noch die Vorzüge der Betonung dieses "No-Mode-Bit" -Designs in Frage stellen, da es zum einen ein Mode-Bit gibt und es sich anscheinend um einen Eckfall handelt ("Ausführen eines alten Betriebssystems und einer neuen Anwendung"), in dem es eines bietet Nutzen - möchten die meisten Kunden nicht das neue Betriebssystem ausführen, das die Hardware voll ausnutzen kann? Das wichtige Merkmal hierbei ist, dass das neue Betriebssystem die alten Apps ausführen kann! Da der Link, den ich gesendet habe, erwähnt, ist dies nicht einmal möglich. Die Programme müssen erneut verknüpft und sogar neu kompiliert werden (aufgrund von Änderungen in den Betriebssystemen), um die CPU-Kompatibilität zu gewährleisten. Aspekt strittig!
Morty