Rekursiv - Rekursiv

Rekursiv war ein Computerprozessor, der Mitte der 1980er Jahre von David M. Harland in einer Abteilung des HiFi- Herstellers Linn Products entwickelt wurde . Es war eine der wenigen Computerarchitekturen , die objektorientierte Konzepte direkt in Hardware implementieren sollten, eine Form der Hochsprachen-Computerarchitektur . Das Rekursiv operierte direkt auf Objekten und nicht auf Bits, Nibbles, Bytes und Wörtern. Virtueller Speicher wurde als persistenter Objektspeicher verwendet, und ungewöhnlicherweise unterstützte der Befehlssatz des Prozessors Rekursion (daher der Name).

Als das Projekt seine erste Implementierung lieferte, hatten neue Prozessoren wie der Sun SPARC und Intel 486 seine Leistung übertroffen, und die Entwicklung wurde 1988 eingestellt.

Geschichte

Das Rekursiv-Projekt begann mit dem Ziel, die Fließbandsteuerungen in Linns Fabriken in Glasgow , Schottland, zu verbessern . Ihre Linien wurden mit einer Reihe von VAX-11- Systemen automatisiert , aber diese waren langsam und sehr schwierig mit der Flexibilität zu programmieren, die sich Linns Gründer Ivor Tiefenbrun wünschte. Anfang der 1980er Jahre war Tiefenbrun davon überzeugt, dass objektorientierte Programmierung Lösungen für diese Probleme bieten würde.

1981 heuerte Tiefenbrun eine Reihe von Programmierern an, um eine Version der bahnbrechenden Smalltalk- Sprache für die VAX-Systeme zu schreiben , wobei er sich etwas Syntax von ALGOL borgte . Das als LINGO bekannte System funktionierte, lief aber auf der VAX-Plattform sehr langsam. Tiefenbrun kam zu dem Schluss, dass die Lösung des Leistungsproblems nicht darin bestand, die Sprache des VAX zu verbessern, sondern stattdessen eine völlig neue CPU speziell für die Ausführung von Objektprogrammen zu entwickeln.

1984 gründete Tiefenbrun die hundertprozentige Tochtergesellschaft Linn Smart Computing unter der Leitung von Professor David Harland von der University of Strathclyde und das Projekt Rekursiv war geboren. Die erste Version des Systems erschien 1988. Eine kleine Anzahl von Prototypen von VMEbus- Boards namens Hades , die aus diesen vier Chips plus 80 MB RAM bestanden, wurden hergestellt. Diese waren für die Installation in einem Host-System wie einer Sun-3 Workstation vorgesehen . Obwohl das Rekursiv nie vollständig entwickelt wurde und kein kommerzieller Erfolg war, wurden mehrere Hades-Boards in akademischen Forschungsprojekten in Großbritannien verwendet . Die letzte bekannte Kopie eines Rekursiv-Computers landete auf dem Grund des Forth and Clyde-Kanals in Glasgow.

Laut einem Beitrag eines Forschers der Universität Strathclyde wurde während der Entwicklung des Rekursiv-Systems eine neue Version der LINGO-Sprache für das etwa zu dieser Zeit entstandene Sun SPARC- System geschrieben . Sie lief doppelt so schnell wie die Rekursiv-Hardware, was den Aufwand sinnlos machte. Irgendwann wurde die Firma geschlossen.

Beschreibung

Grundlegendes Konzept

Das zugrundeliegende Konzept der Rekursiv-Plattform bestand darin, einen hardwareunterstützten persistenten Objektspeicher bereitzustellen, der den Speicherzustand ständig und unsichtbar auf die Platte schreibt, ohne dass das Betriebssystem oder das Benutzerprogramm eingreifen müssen . Ein Rezensent beschrieb es als "eine Objektdatenbank-Engine zum Erstellen und Verwalten von persistenten Objekten".

Damit ein solches System bei der Ausführung komplexer Programme mit angemessener Leistung funktioniert, wurde Rekursiv so konzipiert, dass der Programmierer seine eigene Befehlssatzarchitektur (ISA) schreiben kann , die der verwendeten Sprache gewidmet ist. Der Mikrocode- Befehlssatz wurde im statischen RAM gespeichert . Es gab keine Standard-ISA, obwohl Linn eine zum Ausführen von Programmen in der Programmiersprache C bereitstellte .

Speicherhandling

Das System stellte den darauf laufenden Programmen nicht das Analogon einer Speicheradresse zur Verfügung, stattdessen erhielten Objekte eine 40-Bit-Kennung, die der Objekt-Chip gehasht und als Zeiger auf den physischen Speicher verwendet wurde. Objekt übernahm auch die Abbildung des Objektspeichers auf die Festplatte zur dauerhaften Speicherung und implementierte ein virtuelles Speichersystem . Um die Garbage Collection zu handhaben , hat Objekt den bereitgestellten dynamischen RAM (Hauptspeicher) in zwei Hälften geteilt, wobei eine für die neue Objekterstellung verwendet und die andere ungenutzt gelassen wird. Wenn ein neues Objekt mehr Speicher benötigt, als im verwendeten Teil frei war, pausierte Objekt das System, kopierte jedes Objekt mit einem gültigen Zeiger darauf in die ungenutzte Hälfte des Speichers und schaltete dann um, um die zuvor ungenutzte Hälfte zum aktiven Teil zu machen. In Fällen mit extrem begrenztem Speicher würde Objekt zuerst versuchen, einige Objekte auf die Festplatte zu spoolen, und wenn dies nicht genügend Speicherplatz freigab, würde es beide Hälften des Speichers verwenden.

Objekte sind zusammengesetzte Strukturen mit mehreren Werten darin, die in den meisten Systemen als eine Reihe von Zeigern auf die Speicherorte implementiert sind, die die Werte enthalten. In Rekursiv werden die Adressen durch 40-Bit-Objekt-IDs ersetzt, die auf einen von Objekt zugewiesenen Speicherabschnitt zeigen. Das höchstwertige Bit (MSB) des 40-Bit-Zeigers wurde auf 1 gesetzt, wenn der Wert eine Objektkennung war, oder auf 0, wenn es sich um einen nicht typisierten Binärwert handelte. Letzteres wurde verwendet, um große unformatierte Daten zu speichern, wie die Daten für ein digitales Bild, und konnte nur innerhalb von Objekten verwendet werden.

Im Fall eines vollständigen Objekts gab es eine weitere Vereinfachung, um kurze Felder als Werte innerhalb des Zeigers selbst zu speichern. Dies wurde dadurch angezeigt, dass auch das zweite MSB auf 0 gesetzt wurde. In diesem Fall zeigten die folgenden fünf Bits einen Typ an, der durch die ISA des Programms definiert wurde und der "Ganzzahl" oder "String-Fragment" sein könnte. Der aktuelle Wert dieses "Kompaktobjekts" wurde in die unteren 32 Bit des Zeigers gelegt. Dadurch konnten dem Prozessor solche einfachen Werte sofort angezeigt werden, ohne dass einem Zeiger auf den physischen Standort gefolgt werden musste, was Speicher sparte und die Leistung verbesserte.

Da die oberen beiden Bits des 40-Bit-Zeigers für Status-Flags verwendet wurden, konnte Objekt insgesamt nur 2 38 Objekte identifizieren . Da die Objekte ständig durch Garbage Collection erfasst wurden, könnten viele dieser Werte auf nicht vorhandene Objekte verweisen, was bedeutet, dass dem System im praktischen Gebrauch die Bezeichner ausgehen könnten. Um dies zu beheben, wurde das gesamte Systemabbild periodisch auf die Platte geschrieben, währenddessen alle Zeiger neu nummeriert wurden, um fortlaufend zu sein.

Mikrocode

Der Befehlssatz des Prozessors wurde in einem dedizierten Bereich des statischen RAM gespeichert, der als "Steuerspeicher" bekannt ist. Der Zugriff erfolgte über einen dedizierten 16-Bit-Bus, der als 16.384 Wörter mit jeweils 128 Bit organisiert war. Ein separater "Steuerspeicherabbildungs"-Abschnitt des SRAM enthält eine nummerierte Tabelle von Eintrittspunkten in die mikrocodierten Routinen, die einen 10-Bit- Opcode auf eine von 2.048 Einheiten abbilden . Bei einem herkömmlichen Prozessor würde die Abbildung normalerweise in festverdrahteter Logik im Opcode-Decoder implementiert.

Opcodes könnten Teile von Objekten sein und auf dieselbe Weise gespeichert werden, wie alle anderen Daten Objekt verwenden würden. Aus Leistungsgründen reservierte eine separate Speicherbank, bekannt als NAM (und NAMARG), 524.288 40-Bit-Wörter, die 10-Bit-Opcodes und 30-Bit-Argumente speichern. NAM ist über einen eigenen Bus direkt mit dem Prozessor verbunden, wodurch es in modernen Architekturen eher wie ein Cache agiert.

In der Praxis würde der Entwickler einer Programmiersprache zunächst die gewünschte Assemblersprache skizzieren, die der Sprache zugrunde liegende Syntax mit bis zu 2.048 Anweisungen wäre. Häufig verwendete Routinen, wie sie in stdlib in C zu finden sind, würden dann mit dieser Assemblersprache codiert und in das NAM geschrieben. Simulationen ergaben, dass Lisp- Routinen, die mit diesem Stil geschrieben wurden, etwa 20-mal schneller arbeiteten als eine Symbolics-Lisp-Maschine . Das Unternehmen produzierte auch ähnliche Mikrocode-Systeme für Smalltalk und Prolog, die später die komplexe Vereinigungsoperation von Prolog auf einen einzigen Opcode reduzierten.

Physische Verpackung

Der Rekursiv-Prozessor bestand aus vier Gate-Array- Chips namens Numerik ( 32-Bit- ALU ), Logik (Befehlssequenzer), Objekt (objektorientierte Speicherverwaltungseinheit ) und Klock (Prozessortakt und Support-Logik). Die Originalversionen waren mit 10 MHz getaktet.

Linn beabsichtigte, den Rekursiv-Chipsatz an Händler zu verkaufen und ihre eigene Workstation damit herzustellen . Das einzige Produkt war zunächst "HADES", der "Hardware Accelerator for Dynamic Expert Systems", der aus einer VMEbus- Karte bestand, die in eine Sun-3- oder Sun-4- Workstation eingesteckt werden konnte. HADES enthielt die vier Hauptchips, 2 MB 45 Nanosekunden (22 MHz) SRAM und 5 MB 100 ns (10 MHz) DRAM. Der Festplattenzugriff wurde von einem Programm abgewickelt, das auf dem zugrunde liegenden Sun-System lief, was die Leistung erheblich beeinträchtigte.

Anmerkungen

Verweise

Zitate

Literaturverzeichnis

Weiterlesen