DE3586603T2 - Datenprozessor fuer interpretierende und kompilierte sprache. - Google Patents

Datenprozessor fuer interpretierende und kompilierte sprache.

Info

Publication number
DE3586603T2
DE3586603T2 DE8585301420T DE3586603T DE3586603T2 DE 3586603 T2 DE3586603 T2 DE 3586603T2 DE 8585301420 T DE8585301420 T DE 8585301420T DE 3586603 T DE3586603 T DE 3586603T DE 3586603 T2 DE3586603 T2 DE 3586603T2
Authority
DE
Germany
Prior art keywords
data
stack
microcode
address
registers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE8585301420T
Other languages
English (en)
Other versions
DE3586603D1 (de
Inventor
Donald W Candy
Granville E Ott
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE3586603D1 publication Critical patent/DE3586603D1/de
Application granted granted Critical
Publication of DE3586603T2 publication Critical patent/DE3586603T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

  • Die Erfindung bezieht sich auf digitale, mit hoher Geschwindigkeit arbeitenden Datenprozessoren.
  • Mit dem Fortschreiten der Technologie wächst der Bedarf für digitale Hochgeschwindigkeitscomputer für die Befriedigung des Bedarfs an Rechen-und Datenverarbeitungsanwendungen. Die Geschwindigkeit, mit der eine gegebene Aufgabe von einer Zentraleinheit (CPU) durchgeführt werden kann, hängt von zahlreichen Faktoren ab, wobei die zwei wichtigsten die Ausführungsgeschwindigkeit der Zentraleinheit sowie die darin verwirklichte Programmsprache sind. Während die Ausführungsgeschwindigkeit von Kostenfaktoren und vom Stand der Technik der Gerätetechnologie, ist die Programmiersprache im allgemeinen ein Faktor, der sowohl im Hinblick auf eine Vergrößerung der Programmiergeschwindigkeit für eine gegebene Aufgabe als auch im Hinblick auf die Ausführungsgeschwindigkeit angepaßt werden kann. Die optimale Programmiersprache ist die Assembliersprache, die Assembliercode in Maschinensprache übersetzt und die wirksamste ist, wenn die bestimmte Anwendung ihre Verwendung zuläßt. Die meisten Programmiersprachen wandeln jedoch mittels der Verwendung eines Compilers eine Quellensprache in eine Zielsprache um. Zur Erzeugung eines wirksamen Codes sind die Compiler gewöhnlich kompliziert und erforden einen großen Speicheranteil, der in kleinen Mikro - oder Minicomputern nur selten zur Verfügung steht. Zu diesem Zweck sind verschiedene Sprachen zur Verbesserung der Programmierwirksamkeit ohne Verwendung großer Compiler entwickelt worden. Ein solcher Sprachtyp wird allgemein unter der Bezeichnung "verbundene interpretierende Sprachen" ("Threaded Interpretive Languages") eingeordnet. Verbundene interpretierende Sprachen werden schneller ausgeführt als andere Hochsprachen und sind nur zwischen 20 % bis 75 % langsamer als entsprechende Programme in Assemblier-Sprache. Außerdem liefern verbundene interpretierende Sprachen einen sehr kompakten kompilierten Code, der weniger Speicher als entsprechende Assembler-Programme benötigt. Diese Sprachen sind in "Threaded Interpretive Languages" von R.G. Loelinger, 1981 und in "Starting Forth", von Leo Brodie, 1981 erörtert.
  • Eine interpretierende, verbundene Sprache macht von einem Interpreter Gebrauch, der die Quellensprache akzeptiert und sie direkt ausführt, ohne zuerst eine Zielsprache zu erzeugen. Ein Interpreter für verbundenen Code (threaded code) übersetzt die Quellensprache zunächst in eine Zwischensprache oder in interne Ausführung und er führt dann diese interne Ausführung aus. Die interne Ausführung besteht aus einer Liste von Adressen zuvor festgelegter interner Formen. Diese Liste wird verbunden oder kompiliert, und jede dieser Adressen oder interner Formen wird nacheinander ausgefuhrt. Zur Unterstützung der Leistungsfähigkeit der Interpretation machen interpretierende verbundene Sprachen von einer Gruppe von Stapeln Gebrauch, die mit umgekehrter polnischer Notation arbeiten. Das bedeutet, daß die Reihenfolge, in der die Ausdrücke ausgewertet werden, spezifiziert ist. Beispielsweise erscheinen die Zahlen, Kennzeichen oder Operanden in der gleichen Reihenfolge, in der sie anzuwenden sind. Eine interpretierende verbundene Sprache macht gewöhnlich von zwei Stapeln Gebrauch, nämlich einem Datenstapel und einem Rücklaufstapel, von denen beide last-in first-out Kellerspeicherstapel sind. Der Datenstapel wird dazu benutzt, Zahlen und Adressen von Operanden zu speichern und der Rücklaufstapel wird dazu benutzt, Programmablauf-Steuerparameter zu speichern. Während der Anwendung einer interpretierenden verbundenen Sprache müssen mehrere Programmschritte für jede durchzuführende task ausgeführt werden. Normalerweise wird auf die Liste der Adressen für die internen Formen als sekundäre Codekörper oder "Sekundärausdrücke" Bezug genommen, und die vom Interpreter auszuführende Form wird als ein "Elementar ausdruck" bezeichnet, bei dem es sich um einen Codekörper aus einem Maschinencode handelt, der die gewünschte Aktion implementiert. Jede Aufgabe (thread) einer verbundenen Liste endet als Elementarausdruck und kehrt dann über den Sekundärausdruck zur Abarbeitung eines weiteren Primitivausdrucks zur Aufgabe zurück. Jedesmal, wenn ein Elementarausdruck abgearbeitet wird, müssen Adressen eines gegebenen Sekundärausdrucks gespeichert, und nach der Abarbeitung des Elementarausdrucks, erneut abgerufen werden, damit die Rückkehr zur richtigen Stelle im Programm erfolgt. Die wirksamste Art der Programmieranwendung ist offensichtlich diejenige, die eine Reihe von Elementarausdrücken abarbeitet, ohne daß durch eine große Anzahl von Sekundärausdrücken hindurchgegangen werden muß. Dieser Programmtyp läuft in wesentlichen mit der Geschwindigkeit eines Programms in Assembliersprache ab.
  • Für eine gegebene Programmieranwendung mit interpretierenden verbundenen Sprachen unter Verwendung herkömmlicher Mikroprozessoren wird eine ähnlich Anzahl von Taktzyklen für die Ausführung des Maschinencodes benötigt, der einen gegebenen Elementarausdruck bildet. Bei einer interpretierenden kompilierten Sprache, die auf einem System auf Mikroprozessorbasis unter Verwendung Z80 Mikroprozessors der Firma Intel Corp. implementiert ist, benötigt beispielsweise ein Elementarausdruck zum Duplizieren des obersten Elements im Datenstapel etwa 32 Zeitsteuerintervalle des Mikroprozessors. Eine Verwirklichung eines weiteren Elementarausdrucks würde ein System auf der Basis des Z80-Mikroprozessors etwa 10 Zeitsteuerintervalle zum Verwerfen des obersten Stapelpostens benötigen. Da der Elementarausdruck das wirksamste Betriebsniveau für interpretierende verbundene Sprache ist, wird die Abarbeitung auf dem Niveau des Elementarausdrucks die Wirksamkeitsgrenze einer Programmiersprache. Es besteht daher kein Bedarf für eine andere Technik zur Erhöhung der Leistungsfähigkeit durch Abarbeiten von Teilen des Programms mit größerer Geschwindigkeit durch Abarbeiten der Elementarausdrücke mit stark erhöhter Geschwindigkeit.
  • In US-A-4,323,963 ist ein Datenprozessor beschrieben, der zwei Programmabarbeitungsniveaus und zwei Programmzähler für die jeweiligen Abarbeitungsniveaus aufweist. Ein Programmzähler verweist auf Hochsprachenbefehle, die Startadressen von Unterprogrammen enthalten. Der andere Programmzähler verweist auf die Niedrigsprachenbefehle, die in den Unterprogrammen enthalten sind. Die Startadresse eines Unterprogramms wird von dem Hochsprachenbefehl, abhängig vom letzten Befehl des vorherigen Unterprogramms, zu dem anderen Programmzähler übertragen.
  • In "Proceedings of the IEEE, Bd. 61, November 1973, S. 1538 -1543, J.F. McDonald et al., "Fast register-transfer-module writable control store for microprogrammed computer design" ist ein Datenprozessor beschrieben, in dem die gleichen Daten zu mehr als einem Verarbeitungsmodul geleitet werden können, indem mehrere solcher Module, die an den gleichen Datenbus angeschlossen sind, dafür freigegeben werden, gleichzeitig als Bestimmungen für Daten von einem einzigen Quellenmodul unter der Steuerung durch das Programm zu wirken.
  • Es ist ein Ziel der Erfindung, einen verbesserten Datenprozessor zu schaffen. Gemäß einem Aspekt der Erfindung ist ein Signalprozessor zum Verarbeiten von Daten, mit: einem Datenstapel ( Fig. 1; 44 - Fig. 2, 3, 7), der mehrere Datenregister zum Speichern von Daten bildet, einem Speichermedium (Fig. 1; 60 - Fig. 2, 7) zum Speichern von Daten, wobei das Speichermedium mehrere vorbestimmte Stellen aufweist, an denen jeweils Mikrocodebefehle abgespeichert sind, mit dem Speichermedium wirkungsmäßig verbundenen Mitteln zum Adressieren einer ausgewählten Stelle in dem Speichermedium zum Abrufen eines ausgewählten Mikrocodebefehls, Mitteln zum Auswählen von Daten aus ausgewählten Datenregistern in dem Datenstapel in Abhängigkeit von einem ausgewählten Mikrocodebefehl, einem Rechenwerk, das wirkungsmäßig mit den Mitteln zum Auswählen von Daten für die Durchführung arithmetischer und logischer Operationen an den ausgewählten Daten in Abhängigkeit von einem ausgewählten Mikrocodebefehl verbunden ist, und mit dem Rechenwerk wirkungsmäßig verbundenen Mitteln zum Übertragen der Ergebnisse der arithmetischen oder logischen Operationen zu einer externen Speicherstelle (14) oder zurück in ein ausgewähltes Datenregister des Datenstapels, dadurch gekennzeichnet, daß die mehreren Datenregister in dem Datenstapel (Fig. 3) gleichzeitig adressierbar sind, damit gleichzeitig Daten in mehr als ein Datenregister eingegeben und gleichzeitig Daten aus mehr als einem Datenregister ausgegeben werden, und daß die Mittel (Fig. 3) zum Auswählen von Daten und das Rechenwerk zur Durchführung arithmetischer und logischer Operationen gleichzeitig arbeiten. Gemäß einem zweiten Aspekt der Erfindung ist ein Verfahren zum Verarbeiten von Daten, enthaltend: Speichern von Daten in mehreren Datenregistern, die in einem Datenstapel (Fig. 1; Fig. 2, 3, 7) angeordnet sind, Speichern von Mikrocodebefehlen an einer vorbestimmten Stelle in einem Speichermedium (Fig. 1; Fig. 2, 7), Adressieren einer ausgewählten Stelle in dem Speichermedium zum Abrufen eines ausgewählten Mikrocodebefehls, Auswählen von Daten aus ausgewählten Datenregistern in dem Datenstapel in Abhängigkeit von dem ausgewählten Mikrocodebefehl (Fig. 3), Durchführen arithmetischer oder logischer Operationen an den ausgewählten Daten entsprechend dem Mikrocodebefehl und Übertragen des Ergebnisses der arithmetischen oder logischen Operationen zu einer externen Speicherstelle oder zurück in ein ausgewähltes Datenregister des Datenstapels, gekennzeichnet durch die Durchführung der Schritte des gleichzeitigen Adressierens ausgewählter Datenregister aus den mehreren Datenregistern in dem Stapel zur gleichzeitigen Eingabe von Daten in mehr als ein Datenregister und zur gleichzeitigen Ausgabe von Daten als mehr als einem Datenregister, und des Auswählens von Daten und des gleichzeitigen Durchführens arithmetischer oder logischer Operationen an ausgewählten Daten, wobei die arithmetischen oder logischen Operationen an zuvor ausgewählten Daten durchgeführt werden.
  • Ein Ausführungsbeispiel eines interpretierenden, kompilierenden Prozessors enthält einen Datenbus zum Übertragen von Steuersignalen, der beträchtlich verbesserte Verarbeitungsgeschwindigkeiten ergibt. Ein last-in first-out Umlaufstapel ist vorgesehen, der mehrere Datenregister zum Speichern von Daten enthält. Die Datenregister können gleichzeitig so adressiert werden, daß eine gleichzeitige Dateneingabe oder Datenausgabe an einem oder mehreren der Datenregister möglich ist. Es ist ein Rechenwerk zur Durchführung arithmetischer und logischer Operationen an den Daten in den Registern vorgesehen. Zur Eingabe der Daten in das Rechenwerk sind erste und zweite Busse vorgesehen, die in ausgewählter Weise mit dem Ausgang ausgewählter Datenregister in dem Datenumlaufstapel in Verbindung stehen. Ein dritter Bus ist vorgesehen, um den Ausgang des Rechenwerks in ausgewählter Weise mit einem ausgewählten Register der Umlaufdatenregister zu verbinden. Ferner ist ein vierter Bus vorgesehen, über den Daten vom ersten oder zweiten Bus zum Eingang eines ausgewählten Registers der Umlaufstapel-Datenregister übertragen werden können. In einem Speichermedium sind Mikrocodebefehle zum Steuern der Verbindungen der ersten, zweiten, dritten und vierten Busse sowie des Typs der vom Rechenwerk durchzuführenden Operationen gespeichert. Die Mikrocodebefehle werden in Abhängigkeit von Programmbefehlen an den Datenbus adressiert, damit ein ausgewählter Mikrocodebefehl, der die entsprechende Information enthält, ausgegeben wird. Ein Steuermechanismus ist zum Steuern des Datenflusses auf dem ersten, dem zweiten, dem dritten und dem vierten Datenbus sowie der vom Rechenwerk in Abhängigkeit von dem ausgewählten Mikrocodebefehl durchgeführten Funktion vorgesehen. Die in Abhängigkeit von dem ausgewählten Mikrocodebefehl auszuführende spezielle Funktion wird dann durch gleichzeitiges Manipulieren der Daten in den Umlaufstapel-Datenregistern durch den Betrieb des Rechenwerks abgearbeitet.
  • Die Mikrocodeadressen können in dem Speichermedium in Gruppen abgespeichert werden, wobei die Adressen in jeder Gruppe in einem vorbestimmten Muster angeordnet sind. Abhängig von Programmbefehlen am Datenbus werden eine ausgewählte Gruppe und die darin enthaltenen Mikrocodeadressen nacheinander an den Datebus angelegt. Es erfolgt ein Zugriff auf jede dieser Mikrocodeadressen, und der entsprechende Mikrocodebefehl wird zum Steuermechanismus zum Abarbeiten der Befehl ausgegeben. Nach der Abarbeitung erfolgt ein Zugriff auf die nächsfolgende Mikrocodeadresse aus dem zweiten Speichermedium und sie wird an den Datenbus angelegt.
  • Es kann ein sekundärer last-in first-out Umlaufdatenstapel vorgesehen werden, der mehrere Datenregister zum Speichern von Daten enthält. Die sekundären Datenstapelregister sind ebenfalls gleichzeitig adressierbar. Die ersten und zweiten Busse können so betrieben werden, daß Daten von ausgewählten sekundären Umlaufdatenregistern zum Eingang des Rechenwerks übertragen werden. Der dritte Bus kann so betrieben werden, daß der Ausgang des Rechenwerks in ausgewählter Weise mit einem Eingang eines ausgewählten sekundären Umlaufdatenregisters verbunden wird. Der vierte Datenbus kann so betätigt werden, daß Daten vom ersten oder zweiten Ausgangsbus zum Eingang eines ausgewählten sekundären Umlaufdatenregisters übertragen wird. Es ist ein Schaltmechanismus vorgesehen, mit der die Schnittstelle zwischen dem Umlaufstapel und dem ersten, dem zweiten, dem dritten und dem vierten Bus so umgeschaltet werden kann, daß die Übertragungsbusse mit dem sekundären Umlaufstapel gekoppelt werden. Es erfolgt dann ein Zugriff auf Mikrocode-Datenbefehle zum Manipulieren der Daten, die in dem sekundären Datenregisterstapel gespeichert sind. Es ist eine Zeitsteuereinheit vorgesehen, mit der der Schaltmechanismus periodisch so aktiviert wird, daß Daten in den sekundären Umlaufdatenregistern vom ersten, zweiten, dritten und vierten Bus und vom Rechenwerk so manipuliert werden können, daß die Datenmanipulation in den sekundären Umlaufstapelregistern unabhängig von der Datenmanipulation in den primären Datenregistern stattfinden kann.
  • Kurzbeschreibung der Zeichnungen
  • Für ein vollständiges Verständnis der Erfindung und ihrer Vorteile wird nun auf die folgende Beschreibung im Zusammenhang mit den beigefügten Zeichnungen Bezug genommen, in denen
  • Fig. 1 ein Blockschaltbild eines interpretierenden verbundenen Prozessors gemäß der Erfindung zeigt;
  • Fig. 2 ein erweitertes Blockschaltbild des interpretierenden verbundenen Prozessors von Fig. 1 zeigt;
  • Fig. 3 ein erweiteretes Blockschaltbild der Umlaufdatenregisterdatei zeigt;
  • Fig. 4 ein schematisches Schaltbild eines Registers in der Umlaufregisterdatendatei zeigt;
  • Fig. 5 ein schematisches Blockschaltbild des Überlaufdatenregisters zeigt;
  • Fig. 6 ein Flußdiagramm für drei Betriebsniveaus des interpretierenden verbundenen Prozessors zeigt;
  • Fig. 7 ein erweitertes Blockschaltbild eines maskierten, interpretierenden verbundenen Prozessors nach der Erfindung zeigt; und
  • Fig. 8 ein erweitertes Blockschaltbild des Umlaufstapels für den maskierten, interpretierenden verbundenen Prozessor zeigt.
  • Genaue Beschreibung der Erfindung
  • In Fig. 1 ist ein Grundblockschaltbild eines Prozessors für interpretierende und verbundene Sprache (TIL) gemäß der Erfindung dargestellt. Der TIL-Prozessor nach der Erfindung kann mehrfache Datenauswahl und Arithmetikoperationen innerhalb eines oder weniger Taktzyklen durchführen. Der TIL-Prozessor enthält einen Haupt-Eingabe/Ausgabe-Datenbus 10 und einen Adreßbus 12, die mit einem I/O-Untersystem und einem externen Speicher 14 gekoppelt sind. Ein Rechenwerk 16 (ALU) ist mit dem Eingabe/Ausgabe-Bus 10 (I/O-Bus) gekoppelt, und es kann arithmetische und logische Funktionen an eingegebenen Daten durchführen.
  • Mit dem Rechenwerk 16 ist ein Parameterstapel 18 gekoppelt, bei dem es sich um einen hardwaremäßig ausgeführten last-in first-out Stapel (LIFO-Stapel) handelt. Ein Rücklaufstapel, der ebenfalls als LIFO-Stapel ausgebildet ist, ist mit dem I/O-Bus 10 gekoppelt und er kann Daten und Adressen speichern. Die Daten im Parameterstapel 18 und im Rücklaufstapel 20 werden von einem Datenmanipulator 22 bearbeitet. Der Datenmanipulator 22 steuert auch den Betrieb des ALU 16, und er enthält Mikrocodebefehle, die an ausgewählten Stellen oder Adressen in ihm gespeichert sind. Der Datenmanipulator 22 arbeitet abhängig von Mikrocodebefehlsadressen, die er vom I/O-Bus 10 empfängt. Diese Mikrocodebefehle bestimmen, wie die Daten in den Stapel 18 und 20 verschoben werden und welche Funktionen das ALU 16 an den eingegebenen Daten ausführt. Alle Operationen des Parameterstabes 18, des Rücklaufstapels 20 und des Datenmanipulators werden von einem Systemtaktgeber 26 gesteuert. Der Systemtaktgeber 26 ist auch mit dem Speicher 14 verbunden, damit er diesem eine Zeitbasis zur Verfügung stellt.
  • In dem schematischen Diagramm von Fig. 1 sind zwei Steuerniveaus enthalten. Das erste Steuerniveau dient der Ausführung von Elementarfunktionen. Eine Elementarfunktion ist der Grundbefehl der von dem TIL-Prozessor abgearbeitet wird, und sie besteht aus Dingen wie der Manipulierung von Daten im Parameterstapel 18, der Durchführung arithmetischer oder logischer Operationen an den darin enthaltenen Daten und auch das Verschieben von Daten in den und aus dem Parameterstapel 18. Diese Operationen werden anschließend noch genauer erläutert. Das zweite Betriebsniveau beinhaltet das tatsächliche "miteinander verbinden" (threading together) von Elementarbefehlen "verbundene Listen" (threaded lists), wobei diese Listen als "Sekundärelemente" bezeichnet werden. Die Sekundärelemente sind im wesentlichen Unterprogramme aus einer Gruppe von Elementarbefehlen und den zur Abarbeitung dieser Elementarbefehle notwendigen Schritten.
  • Ein Speicher 24 des ersten Niveaus ist mit den Eingabe/Ausgabe-Bus 10 und dem Adreßbus 12 gekoppelt; er kann Mikrocodebefehle in Form von Adressen für den Datenmanipulator 22 speichern. Diese Befehle werden von dem Datenmanipulator 22 vom I/O-Bus 10 empfangen, damit der Befehl abgearbeitet wird. Im Betrieb wird der Speicher 24 des ersten Niveaus vom Adreßbus 12 adressiert, damit eine Mikrocodebefehlsadresse zur Steuerung des Datenmanipulators 22 auf den I/O-Bus 10 gegeben wird. Die in den Mikrocodebefehlen codierten Funktionen werden innerhalb eines einzigen Taktzyklus für die meisten Manipulationen des Parameterstapels 18 abgearbeitet. Wie jedoch später noch beschrieben wird, erforden einige Funktionen zusätliche Taktzyklen, beispielsweise eine Multiplikation mittels des ALU 16. Es ist eine Steuereinheit 28 für kompilierte Befehle vorgesehen, die mit einem Speicher 30 des zweiten Niveaus über den I/O-Bus 10 und den Adreßbus 12 verbunden ist, damit das zweite Niveau der Steuerung 28 für den TIL-Prozessor vorgesehen wird. Im Betrieb ruft die Steuereinheit für kompilierte Befehler eine der mehreren im Speicher 30 des zweiten Niveaus gespeicherten kompilierten Listen auf, indem der Speicher 30 über den Adreßbus 12 adressiert wird. Der Speicher 30 gibt dann Daten in Form einer Adresse für den Speicher 24 des ersten Niveaus aus. Die Steuereinheit 28 holt diese Adresse vom I/O-Bus 10 und legt sie an den Adreßbus 12 an. Wenn diese Adresse an den Adreßbus 12 angelegt wird und der Speicher 24 adressiert wird, werden die an dieser Adresse gespeicherten Daten zur Auswahl eines Mikrocodebefehls im Datenmanipulator 22 zur Abarbeitung einer Elementarfunktion abgegeben. Gleichzeitig mit dem Anlegen der Adresse für den Speicher 24 an den Adreßbus 12, womit der Datenmanipulator 22 adressiert wird, wählt die Steuereinheit 28 die nächstfolgende Adresse für die verbundene Liste aus dem Speicher 30 zum Anlegen an den Adreßbus 12 nach der Abarbeitung des vorangehenden Befehls an.
  • Auf diese Weise kann die nächste Mikrocodeadresse in den Eingabe/Ausgabe-Bus 10 eingegeben werden, damit der Datenmanipulator 22 nach der Abarbeitung der Elementarfunktion so adressiert wird, daß der nächstfolgende Befehl in der kompilierten Liste abgearbeitet werden kann. Daher durchläuft die Steuereinheit 28 eine gewünschte kompilierte Liste Schritt für Schritt, damit nacheinander Mikrocodeadressen aus dem Speicher 24 an den I/O-Bus 10 angelegt werden. Sobald diese Mikrocodeadressen an den I/O-Bus angelegt sind, werden sie vom Datenmanipulator 22 abgerufen, und die Befehle, die an den auf diese Adressen reagierenden speziellen Speicherplätzen enthalten sind, werden abgearbeitet. Nachdem eine gewünschte kompilierte Liste abgearbeitet worden ist, wird eine weitere kompilierte Liste aus dem Speicher ausgewählt und abgearbeitet. Zur Ermöglichung einer großen Anzahl von kompilierten Listen ist der Speicher 14 vorgesehen. Der Speicher 14 ist sowohl an den I/O-Bus 10 als auch an den Adreßbus 12 angeschlossen, um den Speicher 30 zu ergänzen. Auf diese Weise können Einschränkungen, die bei der Herstellung des interpretierenden verbundenen Prozessors nach der Erfindung auf einem einzigen Halbleiterchip aufgetreten sind, bezüglich der Speicherkapazität überwunden werden. Es ist nur notwendig, an den Adreßbus 12 eine Adresse anzulegen, um den Platz im Speicher zu bestimmen, von dem Daten abgerufen werden sollen. Dieses Datenabrufen erfolgt unter der Steuerung durch die Steuereinheit 28.
  • Bei der Abarbeitung eines Programms mit TIL-Prozessor nach der Erfindung müssen mehrere Sekundärgruppen vor der Abarbeitung einer Elementarfunktion abgearbeitet werden. Die Elementarfunktion ist das niedrigste Niveau der Ausführung, das nach der Ausführung zum nächst höheren Niveau zurückkehrt, da das von der Sekundärgruppe gebildet ist. Nach dem Durchgang durch eine Liste aus Mikrocodebefehlen wird die nächste verbundene Liste ausgewählt. Die Reihenfolge, in der diese Listen abgearbeitet werden, ist durch ein drittes Ausführungsniveau festgelegt. Die verschiedenen Niveaus werden genauer in "Threaded Interpretive Languages", (1991), von R. G. Loelinger beschrieben. Wenn ein TIL-Prozessor in Form von Software implementiert wird, wie es bei den derzeitigen TIL-Prozessoren der Fall ist, erfordert eine Elementarfunktion eine endliche Anzahl von Schritten oder Taktzyklen für die Abarbeitung. Beispielsweise könnte das Entnehmen eines Datenworts aus dem Parameterstapel und das Verschieben der restlichen Datenwörter im Stapel um eine Position nach oben etwa 10 bis 15 Zyklen des Systemtaktgebers 26 benötigen. Während der Zeitdauer, in der der Systemtaktgeber der Durchführung dieser task gewidmet ist, muß der Rest des Systems warten. Bei der Erfindung ist der Parameterstapel 18 zusätzlich zu den Schaltungen zu der Durchführung arithmetischer und logischer Operationen in Form des ALU 16 in Hardware-Form implementiert. Eine einfache Manipulation oder eine komplexe Manipulation werden in wirksamer Weise innerhalb eines Zyklus des Systemtakts ausgeführt. Die Durchführung einer sehr grundlegenden Elementarfunktion würde daher zu einer Erhöhung der Ausführungsgeschwindigkeit für diese bestimmte Elementarfunktion und einen Faktor 10 bis 15 führen. Bei komplexeren Elementarfunktionen kann diese Erhöhung der Ausführungsgeschwindigkeit Faktoren von 40 bis 50 erreichen. Da in Software-Form implementierte TIL-Prozessoren Elementarfunktionen im wesentlichen mit der Geschwindigkeit der Maschinensprache oder nahe bei dieser Geschwindigkeit ausführen, erhöht die vorliegende Erfindung die Ausführungsgeschwindigkeit für Elementarfunktionen gegenüber den leistungsfähigsten Programmiertechniken.
  • Erstes Niveau der Programmausführung - Elementarfunktionen
  • In Fig. 2 ist ein erweitertes Blockschaltbild des TIL-Prozessors von Fig. 1 dargestellt. Das ALU 16 ist mit einem unidirektionalen Übertragungsgatter 32 über einen Bus 34 gekoppelt, das so gerichtet ist, daß der Datenfluß vom ALU 16 weggerichtet ist. Das ALU 16 ist ein ALU mit einer 16 - Bit Breite und kann aus vier in Kaskade angeordneten 4-Bit ALUs bestehen. Das ALU 16 weist zwei Eingänge und einen Ausgang auf, und es führt mit den eingegebenen Daten verschiedene arithmetische und logische Operation durch. Repräsentative Funktionen des ALU 16 können in den Tabellen I und II auf Seite 7-273 des TTL Data Book, 2. Auflage, Texas Instruments Inc. (1976) entnommen werden.
  • Der Ausgang des Übertragungsgatters 32 ist mit einem Schnittstellenbus 36 verbunden, der mit den I /O-Bus 10 über ein bidirektionales Übertragungsgatter 40 in Verbindung steht. Die Übertragungsgatter 30 und 40 weisen einen Steuereingang (CTL) zur Festlegung der Datenflußwege auf. Das ALU 16 empfängt auch an 4 Steuerleitungen 42 ein Steuersignal, das die arithmetischen und logischen Funktionen des ALU 16 bestimmt. Wie unten noch beschrieben wird, werden die Steuersignale von Mikrocodebefehlen im Datenmanipulator 22 abgeleitet.
  • Ein LIFO-Umlaufstapel 44 dient der Speicherung von 16-Bit- Datenwörtern. Der Umlaufstapel 44 besteht aus einer Gruppe aus acht Datenregistern mit der Breite von 16 Bits, die parallel adressiert werden können, so daß Daten gleichzeitig in alle diese Datenregister eingegeben oder aus allen diesen Datenregistern ausgegeben werden können. Ein Steuersignal steuert, welches der darin enthaltenen Register Daten ausgibt und welches der darin enthaltenen Register Daten empfängt.
  • Ein erster Ausgangsdatenbus 46 ist mit dem Ausgang des Umlaufstapels 44 und mit einem Eingang des ALU 16 gekoppelt. Ein zweiter Ausgangsdatenbus 48 ist mit einem weiteren Eingang des Umlaufstapels 44 und mit dem zweiten Eingang des ALU 16 gekoppelt. Der Schnittstellenbus 36 ist mit einem Eingang des Umlaufstapels 44 gekoppelt. Ein Eingangsdatenbus 50 ist mit einem weiteren Eingang des Umlaufstapels 44 gekoppelt und ein unidirektionales Übertragungsgatter 42 bildet eine Schnittstelle zwischen dem ersten Ausgangsdatenbus 46 und dem Eingangsdatenbus 50, damit in ausgewählter Weise Daten vom Ausgang des Umlaufsstapels 44 zu dessen Eingang in Abhängigkeit von einem Steuersignal zurückübertragen werden. Zwischen dem ersten Eingang des ALU 16 und dem Ausgangsdatenbus 46 ist ein unidirektionales Übertragungsgatter 54 angeschlossen. Ein unidirektionales Übertragungsgatter 46 ist zwischen dem zweiten Eingang des ALU 16 und dem Ausgangsdatenbus 48 vorgesehen, damit in ausgewählter Weise die Übertragung von Daten zum ALU 16 in Abhängigkeit von einem Steuersignal gesteuert wird. Ein unidirektionales Übertragungsgatter 38 ist zwischen dem Schnittstellenbus 36 und dem Ausgangsdatenbus 46 angeschlossen, damit Daten vom I/O-Bus 10 über das Übertragungsgatter 40 zum Eingang des ALU 16 fließen können. Ein bidirektionales Übertragungsgatter 57 ist zwischen dem Ausgangsdatenbus 48 und dem Adreßbus 12 angeschlossen, damit der Datenfluß dazwischen gesteuert wird. Die Übertragungsgatter 32, 38, 40, 52, 54, 56 können so betätigt werden, daß sie den Datenfluß auf den verschiedenen Bussen steuern, die an den Umlaufstapel 44, das ALU 16 und den I/O-Bus 10 angeschlossen sind. Wie unten noch beschrieben wird, ist dieses Steuersignal zu jedem davon gesteuerten Element ein Bit eines Steuerworts. Abhängig von dem bestimmten Steuerwort, das generiert wird, wird die Richtung des Datenf lusses geändert. Wenn beispielsweise Daten aus dem Umlaufstapel 44 entnommen und vom ALU 16 bearbeitet werden sollen, wird das Übertragungsgatter 52 deaktiviert, und die Übertragungsgatter 54 und 56 werden aktiviert, damit der Ausgang des Umlaufstapels 44 mit den Eingängen des ALU 16 in Verbindung gebracht wird. Entsprechende Register innerhalb des Umlaufstapels 44 werden in Übereinstimmung mit dem Steuerwort mit den entsprechenden Ausgangsdatenbussen 46 und 48 gekoppelt. Das ALU 16 empfängt auch Informationen an Steuerleitungen 42 zur Bestimmung der arithmetischen oder logischen Operationen, die an den eingebenen Daten durchzuführen sind. Diese Daten werden vom ALU 16 zum aktivierten Übertragungsgatter 32 und auf den Schnittstellenbus 36 ausgegeben. Wenn die Daten wieder in den Umlaufstapel 44 zurückübertragen werden sollen, werden die Übertragungsgatter 38 und 40 deaktiviert, und dem Umlaufstapel 44 wird das entsprechende Steuersignal zugeführt, damit bestimmt wird, in welches Register im Umlaufstapel 44 die Daten einzugeben sind. Sobald das Steuerwort, in dem alle diese Steuersignale enthalten sind, generiert worden ist, kann die Operation innerhalb eines Zyklus des Taktgebers 26 erzielt werden. Zur Ausführung einer Elementarfunktion im Parameterstapel 18 müssen Steuersignale zum Steuern der verschiedenen Übertragungsgatter, Stapel und des ALU 16 erzeugt werden. Zur Erzeugung dieser Steuersignale muß der Speicher 24 des ersten Niveaus adressiert werden. Der Speicher 24 besteht aus einem Mikrocode-Festspeicher (60 ROM), der mehrere Steuerwörter an ausgewählten Adressenplätzen speichern kann. Es ist ein Adressdecodierer 62 vorgesehen, der die Ausgangssignale des Befehlsregisters 58 über einen Schnittstellenbus 54 empfängt und die in ihn eingegebene Adresse decodiert, um zu bestimmen, ob die Adresse diejenige einer Elementarfunktion oder einer Steuerfunktion ist, wie noch erläutert wird. Das Ausgangssignal des Adressdecodierers wird dann über einen Schnittstellenbus 66 in den Adressenanschluß des Mikrocode ROM 60 eingegeben. Das im Mikrocode-ROM adressierte Steuerwort wird dann zu einer Steuerhalteschaltung 68 ausgegeben, damit es an dessen Ausgang festgehalten wird. Das Steuerwort am Ausgang der Steuerhalteschaltung 68 bewirkt die Generierung mehrerer Steuerbits, die verschiedene Register und Steuerfunktionen betätigen. Beispielsweise werden vier aufeinanderfolgende Bits im Steuerwort den Steuerleitungen 42 am ALU 16 zugeordnet, damit die darin auszuführenden arithmetischen oder logischen Funktionen erhalten werden. Das Steuerwort und die Logikzustände von darin enthaltenen Bits bestimmen den Datenfluß an allen Bussen und die an ausgewählten Daten durch das ALU 16 auszuführenden Operationen.
  • Der Mikrocode-ROM 60 bewirkt zwar die Ausgabe von Steuerwörtern zur Abarbeitung einer Elementarfunktion, jedoch werden "funktionelle" Steuerwörter zur Steuerung anderer Funktionen des interpretierenden verbundenen Prozessors ausgegeben. Im Mikrocode-ROM 60 sind Steuerwörter gespeichert, die sowohl der Abarbeitung von Elementarfunktionen als auch zur Steuerung aller Operationen des interpretierenden verbundenen Prozessors vorgesehen sind. Um in entsprechender Weise entweder ein Elementarfunktions-Steuerwort oder ein funktionelles Steuerwort im Mikrocode-ROM 60 zu adressieren empfängt der Adressdecodierer 62 eine Adresse vom Schnittstellenbus 64 und bestimmt, ob die Adresse eine Mikrocodeadresse ist, die einem Elementarfunktions-Steuerwort entspricht, oder eine Adresse ist, die der Adressierung von Speicherplätzen in einem der Speicher 24 und 30 ist. Beispielsweise können die Adressenspeicherplätze 0 bis 64 im Mikrocode-ROM 60 Elementarfunktions-Steuerwörtern zugeordnet sein; wenn einer dieser Adressenspeicherplätze vom Schnittstellenbus 64 empfangen wird, gibt der Adressdecodierer 60 diese Adressen über den Schnittstellenbus 66 an den Mikrocode-ROM 60 weiter, und es wird ein Elementarfunktios-Steuerwort ausgegeben. Bei Adressen über 64 adressiert der Adressdecodierer 62 einen bestimmten Adressenspeicherplatz im Mikrocode-ROM 64 für eine gegebene Gruppe von Adressen. Beispielsweise veranlassen Adressen von 65 bis 512 , die in den Adressdecodierer 62 eingegeben werden, diesen Adressecodierer 62, eine Adressenspeicherstelle im Mikrocode-ROM 60 zu adressieren und ein funktionelles Steuerwort auszugeben. In ähnlicher Weise können Adressen von 513 aufwärts den Adressdecodierer 62 veranlassen, ein zweites funktionelles Steuerwort zu adressieren. Auf diese Weise adressieren an den I/O-Bus 10 angelegte und durch das Befehlsregister 68 getaktete Adressen entweder ein Elementarfunktions- Steuerwort oder ein funktionelles Steuerwort. Die Arbeitsweise dieser funktionellen Steuerwörter wird unten noch genauer beschrieben.
  • Der Umlaufstapel 44 ist, wie oben beschrieben wurde, ein LIFO- Stapel, der Daten am Eingang jedes der darin enthaltenen Datenregister vom Schnittstellenbus 36 oder vom Eingangsbus 50 empfangen kann und Daten aus jedem der darin enthaltenen Datenregister auf die Ausgangsbusse 46 und 48 abgeben kann. Wenn Daten an den Umlaufstapel 44 angelegt werden, wird dies als push-Operation bezeichnet, und wenn Daten aus dem Umlaufspeicher 44 ausgegeben werden, wird dies als eine pop-Operation bezeichnet. Jedesmal, wenn eine "push-Operation" am Stapel erfolgt, werden die vorangehenden Daten im Stapel nach unten geschoben. Da in der bevorzugten Ausführung der Stapel nur eine Tiefe von acht Datenregistern hat, müssen die Daten in Datenregistern mit der niedrigsten Priorität entweder an anderer Stelle gespeichert oder verworfen werden. Um diese Daten zu sichern, ist ein Überlauf- stapel 76 vorhanden. Der Überlaufstapel 76 ist ein LIFO-Stapel, der Daten empfängt und diese Daten in den Speicher schiebt oder diese Daten vom oberen Ende des Stapels wieder nach außen abgibt. Der Eingang des Überlaufstapels 76 ist mit den Eingabedatenbus 50 verbunden und der Ausgang des Überlaufstapels 76 ist mit dem Schnittstellenbus 76 verbunden. Wenn Daten in den Umlaufstapel 44 eingegeben werden, ist der Schnittstellenbus 36 mit dem Register mit der höchsten Priorität im Umlaufstapel 44 verbunden, und der Eingangsdatenbus 50 ist sowohl mit dem Ausgangsdatenbus 46 über das Übertragungsgatter 52 als auch mit dem Eingang des Überlaufstapels 76 verbunden. Der Ausgangsdatenbus 46 wird dann mit dem Ausgang des Registers mit derniedrigsten Priorität im Umlaufstapel 44 verbunden, damit Daten an den Eingang des Überlaufstapels 76 abgegeben werden. Diese gesamte Operation, also die Abarbeitung einer Elementarfunktion, geschieht innerhalb eines einzigen Taktzyklus, durch den von der Steuerhalteschaltung 68 ausgegebenen Mikrocodebefehl.
  • Zweites Niveau des Betriebs - kompilierte Listen
  • Es wird weiter auf Fig. 2 Bezug genommen. Eine Kombination aus einem Festspeicher und einem Schreib/Lese-Speicher ROM/RAM 80 ist über ein bidirektionales Übertragunggatter 82 mit dem I/O-Bus gekoppelt. Der ROM-Teil sorgt für eine dauerhafte Speicherung von Daten, während der RAM-Teil ein programmierbarer Speicher ist, der die Fähigkeit hat, einen Zugriff auf Daten am I/O-Bus 10 durchzuführen und diese Daten in ausgewählte Adressenplätze zu schreiben und auch Daten von dem ausgewählten Platz zu lesen und an I/O-Bus 10 zurückzugeben. Der RAM-Teil des ROM/RAM 80 ergibt somit eine zusätzliche Vielseitigkeit, da er von außen her programmiert werden kann. Der ROM/80 ist mit dem Adreßbus 12 verbunden, damit er über diesen adressiert werden kann. Adressen am Adreßbus 12, die ausgewählten Speicherplätzen im ROM/80 entsprechen, bewirken die Ausgabe der darin enthaltenen Daten an das Übertragungsgatter 82. Diese Daten können jedoch nicht an den I/O- Bus angelegt werden, wenn nicht das entsprechende funktionelle Steuerwort durch die Steuerhalteschaltung 68 abgegeben wird. Wie oben beschrieben wurde, wird dieses funktionelle Steuerwort als Reaktion auf eine vorangehende Adresse erzeugt, die an den I/O-Bus 10 angelegt wird und durch das Befehlsregister 58 getaktet wird. Zusätzlich zum Anlegen von Daten an den I/O-Bus 10 durch den ROM/RAM 80 können Daten auch vom Speicher 14 an den I/O-Bus angelegt werden. Um dies zu erleichtern, ist zwischen dem I/O-Bus 10 und dem Speicher 14 ein bidirektionales Übertragungsgatter 84 vorgesehen. Das Übertragungsgatter 84 wird von einem entsprechenden Steuersignal gesteuert, das von der Steuerhalteschaltung 68 empfangen wird. Die Übertragungsgatter 82 und 84 können so betätigt werden, daß Daten von nur einem der Speicher 14 oder 80 an einen gegebenen Zeitpunkt mit dem I/O-Bus 10 gekoppelt wird.
  • Zum Anlegen einer Adresse an den Adreßbus 12 vom I/O-Bus 10 wird ein Befehlszeiger 86 vorgesehen, dessen Eingang mit dem I/O-Bus 10 über einen Schnittstellenbus 88 verbunden ist und dessen Ausgang über einen Schnittstellenbus 90 mit dem Adreßbus 12 verbunden ist. Der Befehlszeiger 86 ist ein Datenregister, das eine Adresse vom I/O-Bus 10 zum Adreßbus 12 durchtaktet und ferner die Fähigkeit hat, diese Adresse über eine Fortschaltsteuerleitung (INC) fortzuschalten. Der Ablauf der Fortschaltfunktion wird später noch genauer beschrieben.
  • Zur zum Aufrufen einer kompilierten Liste wird die Anfangsadresse der kompilierten Liste entweder vom ROM/RAM 80 oder vom Speicher 14 an den I/O-Bus 10 angelegt und in das Befehlsregister 58 geladen. Diese Adresse wird durch das Befehlsregister 86 zum Adreßbus 12 getaktet und darin fortgeschaltet. Um zu bestimmen ob die Adresse in den Befehlszeiger 86 geladen oder nur fortgeschaltet werden soll und die vorangehende Adresse ausgegeben werden soll, ist ein Dekodierer 92 vorgesehen, der mit dem I/O-Bus gekoppelt ist. Der Decodierer 92 kann bestimmen, ob die Adresse am I/O-Bus 10 einem Elementarfunktionsbefehl oder einem höherrangigem Befehl wie dem zum Aufrufen einer verbundenen Liste entspricht. Gemäß dem obigen Beispiel, bei dem die Adressenspeicherplätze im Mikrocode-ROM 60 für eine Elementarfunktion zwischen 0 und 64 lagen, tastet der Dekodierer 92 die Anwesenheit höherwertiger Bits in der Adresse ab, um festzustellen, ob der Datenwert am I/O-Bus 10 über oder unter 64 liegt. Wenn er unter 64 liegt, wird der Befehlszeiger 66 fortgeschaltet; liegt er über 64, wird in den Befehlszeiger 86 die Adresse an I/O-Bus 10 geladen, und diese Adresse wird in einem nächsten Taktzyklus hindurchgetaktet.
  • Drittes Niveau des Betriebs - Hauptprogramm
  • Um die im ROM/RAM 80 gespeicherten Listen zu verbinden, muß ein Hauptprogramm oder ein Betrieb auf dem dritten Niveau angewendet werden. Dabei handelt es sich im wesentlichen um eine Gruppe von Adressen, die an einen besonderen Platz im ROM/RAM 80 oder im Speicher 14 gespeichert ist. Diese Adressenliste kann eine Gruppe von Adressen sein, wobei jede darin enthaltene Adresse die Anfangsadresse einer bestimmten ineinandergefügten Liste der obigen Art anzeigt. Wenn nun dieses Hauptprogramm schrittweise abgearbeitet wird, werden die ineinandergefügten Listen ausgeführt, die das zweite Niveau des Betriebs darstellen. Nach der Ausführung einer bestimmten ineinandergefügten Liste muß der nächst folgende Schritt im Hauptprogramm an den I/O-Bus 10 angelegt werden. Um dies zu erreichen, wird die Adresse im Rücklaufstapel 20 gespeichert und um den Wert 1 fortgeschaltet. Zum Fortschalten der Adresse ist ein Fortschaltregister 94 zwischen den Rücklaufstapel 20 und dem I/O-Bus 10 eingefügt. Das Fortschaltregister wird vom Decodierer 92 über eine Steuerleitung 96 gesteuert. Das Fortschaltregister 94 steht unter der Steuerung durch das von der Steuerhalteschaltung 68 abgegebene Steuerwort, und es kann so betätigt werden, daß Daten von I/O-Bus 10 zum Rücklaufstapel 20 übertragen werden und daß es ferner als Fortschalthalteschaltung dient, in die bei einem Taktzyklus Daten geladen werden und mit dem nächsten Taktzyklus hindurchgetaktet und um eins fortgeschaltet werden.
  • Der Decodierer 92 kann zwischen Adressen, die die Anfangsadresse einer ineinandergefügten Liste repräsentieren oder einem Schritt im Hauptprogramm unterscheiden. Wenn der Decodierer 92 feststellt, daß die Daten am I/O-Bus 10 eine Adresse sind, die dem Hauptprogramm und nicht der ineinandergefügten Liste zugeordnet ist, wird das Fortschaltregister 94 um 1 fortgeschaltet und zum Rücklaufstapel 20 weitergetaktet. Nachdem die ineinandergefügte Liste abgearbeitet worden ist, erfolgt eine Entnahme aus dem Rücklaufstapel 20, und die Abgabe der fortgeschalteten Adresse auf den I/O-Bus 10 über ein Übertragungsgatter 98. Dies ist die nächstfolgende Adresse für das Hauptprogramm, die dann durch den Befehlszeiger 96 zum Adreßbus zum Adressieren des ROM/RAM 80 oder des Speichers 14 durchgetaktet wird.
  • Umlaufdatenregisterstapel
  • In Fig. 3 ist ein erweitertes Schaltbild des Umlaufdatenstapels 44 von Fig. 2 dargestellt. Der Umlaufstapel 44 besteht aus acht Datenregistern mit der Breite von 16 Bit, die als REGISTER 1 bis REGISTER 8 bezeichnet sind. Eine Register/Bus- Wähleinheit 102 ist mit dem Eingang der REGISTER 1 bis Register 8 über Eingangsschnittstellenbusse 104 gekoppelt. Eine Register/Bus-Wähleinheit 106 ist mit REGISTER 1 bis REGISTER 8 über Ausgangsschnittstellenbusse gekoppelt. Die Register/Bus-Wähleinheit 102 kann mit dem Schnittstellenbus 36 und dem Eingangsdatenbus 50 so zusammenarbeiten, daß an diesem vorhandene Informationen zu einem ausgewählten der Datenregister, REGISTER 1 bis 8 übertragen werden. Die Register/Bus Wähleinheit 106 ist mit den Datenausgangsbussen 46 und 48 so gekoppelt, daß Daten von einem ausgewählten der Datenregister, REGISTER 1 bis 8 übertragen werden. Es ist zu erkennen, daß beide Datenbusse 36 und 50 gleichzeitig an das gleiche Datenregister oder gleichzeitig an zwei getrennte Register angeschlossen sein können, und daß die Ausgangsdatenbusse 46 und 48 Daten gleichzeitig vom gleichen Datenregister oder von zwei getrennten Datenregistern empfangen können.
  • Mit den beiden Registern/Bus-Wähleinheiten 102 und 106 ist ein Stapelzeiger 110 verbunden, der bestimmt, welches der Datenregister REGISTER 1 - 8 das Register mit der höchsten Priorität im Stapel ist. Anstelle der Zeichnung von REGISTER 1 als das Register mit der höchsten Priorität im Stapel und des Verschiebens der Daten jedesmal dann, wenn Daten in den Stapel eingegeben oder aus dem Stapel ausgegeben werden, wird der Zeiger lediglich zu den entsprechenden Registern fortgeschaltet. Wenn beispielsweise REGISTER 4 als das Register mit höchsten Priorität bezeichnet wird und Daten von dem Register mit der zweiten Priorität ausgegeben werden sollen, wählt die Register/Bus-Wähleinheit 106 REGISTER 3 als Ausgangsregister und legt die darin enthaltenen Daten an den entsprechenden Ausgangsdatenbus 46 oder 48 an. Wenn jedoch Daten in den Stapel eingegeben werden, wird der Stapelzeiger 110 fortgeschaltet und die Daten werden mittels der Auswahl durch die Register/Buswähleinheit 102 in das REGISTER 5 eingegeben. Wenn diese Daten in den Stapel eingegeben werden, müssen im Register mit der niedrigsten Priorität, das das REGISTER 5 ist, enthaltene Daten im Überlaufstapel 76 vor dem Fortschalten des Stapelzeigers 110 gespeichert werden.
  • Zum Übertragen von Daten vom Register mit der niedrigsten Priorität im Stapel 44 in den Überlaufstapel 76 verbindet die Register/Bus-Wähleinheit 106 den Ausgang von REGISTER 5 mit dem Ausgangsdatenbus 46, und das Übertragungsgatter 42 wird aktiviert, damit der Ausgangsdatenbus 46 mit dem Eingangsdatenbus 50 verbunden wird. Wie später noch ausgeführt wird, werden die Ausgangsdaten in einer Operation oder einem Taktzyklus in den Überlaufstapel getaktet, der der Stapelzeiger 110 wird fortgeschaltet und die Daten vom Schnittstellenbus 36 werden in das REGISTER 5 eingegeben, wobei das REGISTER 5 nun das Datenregister mit der höchsten Priorität im Umlaufstapel 44 ist. Der Umlaufstapel 44 und der Überlaufstapel 46 bilden daher einen relativ tiefen Stapel, bei dem obersten acht Datenregister gleichzeitig adressierbar sind.
  • In Fig. 4 ist ein schematisches Schaltbild für REGISTER 1 des Umlaufstapels 44 von Fig. 3 dargestellt. Der Schnittstellenbus 36, der Dateneingangsbus 50 und die Ausgangsdatenbusse 46 und 48 sind Busse mit einer Breite von 16 Bit, von denen der Einfachheit halber nur die Verbindungen dargestellt sind. Das REGISTER 1 besteht aus 16 D-Flip-Flops, von denen nur die ersten zwei entsprechend dem Bit 0 und dem Bit 1 und das letzte entsprechend dem Bit 15 dargestellt sind. Das Bit 0 entspricht dem D-Flip-Flop 12, das Bit 1 entspricht einem D- Flip-Flop 114 und das Bit 15 entspricht einem D-Flip-Flop 116, wobei dazwischen eine gestrichelte Linie angegeben ist, die die übrigen Flip-Flops im REGISTER 1 repräsentiert. Ein UND/ODER Invertiergatter 118 ist mit dem Ausgang am D-Eingang des Flip-Flops angeschlossen; ein UND/ODER-Invertiergatter 120 ist mit dem Ausgang am D-Eingang des Flip-Flops 114 angeschlossen, und ein UND/ODER Invertiergatter 122 ist mit dem Ausgang am D-Eingang des Flip-Flops 116 angeschlossen. Entsprechende UND/ODER Invertiergatter sind an die die Bits 2 bis 14 repräsentierenden (nicht dargestellten) Flip-Flops angeschlossen.
  • Einer der Eingänge der UND/ODER Gatter im Gatter 118 ist an das Bit 1 des Busses 50 angeschlossen und einer der Eingänge der übrigen UND-Gatter ist mit dem Bit 1 des Busses 36 verbunden. In ähnlicher Weise ist ein Eingang eines der UND-Gatter im Gatter 120 mit dem Bit 2 des Busses 50 verbunden und einer der Eingänge der übrigen UND/Gatter ist mit dem Bit 2 des Busses 36 verbunden. Das Gatter 122 ist in ähnlicher Weise auch mit einem Eingang der internen UND/Gatter an das Bit 15 des Busses 50 angeschlossen und einer der Eingänge der übrigen internen UND/Gatter ist mit dem Bit 15 des Busses 36 verbunden. Damit die entsprechenden Bits vom Bus 36 oder vom Bus 50 am Ausgang der Gatter 118 bis 122 erscheinen können, müssen an entsprechende UND/Eingänge der internen UND/Gatter Freigabesignale angelegt werden. Diese Freigabesignale werden von einem 3-8 Decodierer 124 und einem 3-8 Decodierer 126 geliefert. Der Decodierer 124 kann die Gatter 118 bis 122 freigeben, so daß sie Daten vom Schnittstellenbus 36 an die D-Eingänge der Flip-Flops 116 übertragen können und der Decodierer 126 kann die Gatter 118 bis 122 so freigeben, daß Daten vom Eingangsdatenbus 50 zu den D-Eingängen der Flip-Flops 112 bis 116 übertragen werden. Jeder dieser Decodierer 124, 126 weist 8 Ausgänge auf, von denen jeder an gleichartige Gatter an den Datenregistern REGISTER 1 bis 8 angeschlossen ist.
  • Ein 3-Bit-Addierer 128 ist mit seinem Ausgang am Eingang des Decodierers 124 angeschlossen. Ein 3-Bit Addierer 130 ist mit seinem Ausgang an den Eingang des Decodierers 126 angeschlossen. Die Eingänge der Addierer 128 und 130 sind an den Ausgang eines 3-Bit-Aufwärts/Abwärts-Zählers 132 angeschlossen. Der Aufwärts/Abwärts-Zähler 132 wird vom Steuerwortausgang aus der Steuerhalteschaltung 68 gesteuert, um die höchste Priorität eines der Datenregister REGISTER 1 - 8 zu bestimmen. Die Addierer 128 und 130 können abhängig von Mikrocodebefehlen so gesteuert werden, daß der 3-Bit-Ausgang des Aufwärts-Abwärts/Zählers 132 in ausgewählter Weise so verschoben wird, daß ein Register mit einer anderen Priorität als der obersten des Stapels ausgewählt wird. Die Decodierer 124 und 126 decodieren dann die 3-Bit-Wörter aus den Addierern 128 bzw. 130, um das entsprechende Register auszuwählen. Da es nicht notwendig ist, Busse 36 und 50 bei allen Ausführungen von Elementarfunktionen zu benutzen, weisen die Decodierer 124, 126 einen Freigabeeingang auf, der auch an den Ausgang der Steuerhalteschaltung 74 angeschlossen ist. Dieser Freigabeeingang kann so gesteuert werden, daß einer oder beide Busse 36 und 50 in wirksamer Weise vom Eingang der Datenregister im Stapel 44 abgetrennt werden.
  • Der Q-Ausgang des Registers 112 ist mit einem Eingang eines NAND-Gatters 134 und mit einem Eingang eines NAND-Gatters 136 verbunden. Der Ausgang des NAND-Gatters 134 ist mit dem Bit 0 des Ausgangsbusses 46 verbunden und der Ausgang des NAND- Gatters 136 ist mit dem Bit 0 des Ausgangsbusses 48 verbunden. Der Q-Ausgang des Flip-Flops 114 ist mit einem Eingang eines großen NAND-Gatters 138 und mit einem Eingang eines großen NAND-Gatters 140 verbunden. Der Ausgang des NAND-Gatters 138 ist mit dem Bit 1 des Ausgangsbusses 46 verbunden und der Ausgang des NAND-Gatters 140 ist mit dem Bit 0 des Ausgangsbusses 48 verbunden. Der Q-Ausgang des Flip-Flops 116 ist mit einem Eingang eines NAND-Gatters 142 und mit einem Eingang eins NAND-Gatters 144 verbunden. Der Ausgang des NAND-Gatters 142 ist mit dem Bit 15 des Ausgangsbusses 46 verbunden, und der Ausgang des NAND-Gatters 144 ist mit dem Bit 15 des Ausgangsbusses 48 verbunden.
  • Ein 3-8 Decodierer 146 ist mit seinem Bit 0 an die anderen Eingänge der NAND-Gatter 134, 138 und 142 verbunden und ein 3-8 Decodierer 148 8 ist mit seinem Bit 0 an die anderen Eingänge der NAND-Gatter 136, 140 und 144 angeschlossen. Der 3-8 Decodierer 146 hat die Aufgabe, den Ausgangsdatenbus 46 auszuwählen, und 3-8 Decodierer 148 hat die Aufgabe, den Ausgangsdaten 148 auszuwählen. Ein 3-Bit-Addierer 150 ist mit seinem Eingang am Ausgang des Aufwärts/Abwärts Zählers 132 angeschlossen, und sein Ausgang ist mit dem Eingang des Decodierers 146 verbunden. Ein 3-Bit-Addierer 152 ist mit seinem Eingang am Ausgang des Aufwärts/Abwärts-Zählers 132 angeschlossen, und sein Ausgang ist mit dem Eingang des Decodierers 148 verbunden. Die Addierer 150 und 152 arbeiten zusammen mit den Decodierern 146 bzw. 148 in der gleichen Weise wie die Addierer 128 und 130 und die Decodierer 124 und 126.
  • Im Betrieb wird der Aufwärts/Abwärts-Zähler 132 in eine solche Position geschoben, daß der 3-Bit-Ausgang dasjenige Datenregister der Datenregister 1 - 8 REGISTER 1 - 8 repräsentiert, das die höchste Priorität hat. Wenn Daten vom Schnittstellenbus 36 in das Datenregister mit der zweiten Priorität eingegeben werden sollen, wird der Decodierer 124 freigegeben, und an den Addierer 128 werden Befehle angelegt, die den Ausgang des Aufwärts/Abwärts-Zählers 132 um eins verschieben. Dies bewirkt eine Verschiebung der Registerauswahl um eins. Wenn die Ausführung das Eingeben von Daten vom Eingangsdatenbus 50 zusammen mit Daten vom Schnittstellen Bus 36 erfordert, wird auch der Decodierer 126 freigegeben und an den Addierer 130 wird ein entsprechendes Signal angelegt, damit das gewünschte Register bezüglich des oberen Endes des Stabes ausgewählt wird. Die Auswahl des entsprechenden Ausgangsbusses durch die Decodierer 146 und 148 und die Addierer 150 und 152 erfolgt in ähnlicher Weise.
  • In Fig. 5 ist ein schematisches Schaltbild des Überlaufstapels 76 dargestellt. Es ist ein Schreib/Lese-Speicher RAM 154 als Speichermedium mit einer Kapazität von 256K vorgesehen. Der RAM 154 bietet sowohl die Möglichkeit zum Lesen als auch zum Schreiben, und er kann über 8-Bit-Adresseneingang zum Lesen oder Schreiben von Daten von einem 16-Datenanschluß adressiert werden. Ein 8-Bit-Arbeitszähler 156 ist mit seinem Ausgang an den Adresseneingang A0-A7 des RAM 154 angeschlossen, wobei sein Eingang von einem Mikrocodebefehl am Ausgang der Steuerhalteschaltung 68 gesteuert wird. Der Aufwärts/Abwärts-Zähler 156 wird synchron mit dem Aufwärts/Abwärts-Zähler 132 betätigt, der den Stapelzeiger und das Umlaufregister 44 steuert, so daß das Laden von Daten in den Umlaufstapel 44 bewirkt, daß die darin enthaltenen Daten mit der niedrigsten Priorität in den RAM 154 geladen werden. Eine Lese/Schreibfreigabeschaltung 158 ist an den RAM 154 angeschlossen, damit bestimmt wird, ob Daten von dessen Ausgangsanschluß gelesen oder in ihm gespeichert werden sollen. Die Lese/Schreibfreigabeschaltung 158 wird vom Mikrocodebefehl gesteuert, den die Steuerschaltung 68 abgibt.
  • Eine bidirektionale Bus-Sende/Empfangs-Einheit 160 ist mit einem Anschluß an das Bit 0 des Eingangsdatenbusses 50 angeschlossen, während ihr anderer Anschluß mit dem D0-Eingang des RAM 154 verbunden ist. Eine bidirectionale Bus-Sende/Empfangseinheit 164 ist mit einem Anschluß an das Bit 0 des Schnittstellenbusses 36 angeschlossen, und ihr anderer Anschluß ist mit D0 Eingang des RAM 154 verbunden. Eine bidirektionale Bus-Sende/Empfangseinheit 162 ist mit einem Anschluß an das Bit 15 des Eingangsdatenbusses 50 angeschlossen, und ihr anderer Anschluß ist mit D15 des RAM 154 verbunden. Eine bidirektionale Bus-Sende/Empfangs-Einheit 166 ist mit einem Anschluß an das Bit 15 des Schnittstellenbusses 36 angeschlossen und ihr anderer Anschluß ist mit D15 des RAM 154 verbunden. Die Bus-Sende/Empfangs-Einheiten 160 - 166 sind bidirektionale Gatter mit Three State-Ausgängen, damit eine individuelle Auswahl zwischen dem Eingangsdatenbus 50 und dem Schnittstellenbus 36 getroffen und die Richtung des Datenflusses zum RAM 154 gewählt werden können. Die Sende/Empfangs-Einheiten 160 und 162 sind dem Dateneingang D0 zugeordnet und die Sende/Empfangs-Einheiten 164 und 166 sind dem Dateneingang D15 zugeordnet. Entsprechend zugeordnete Sende/Empfangseinheiten sind zwischen dem Eingangsdatenbus 50 und dem Schnittstellenbus 36 sowie die Dateneingänge D1 bis D14 des RAM 154 eingefügt.
  • Eine Bus/Richtungswähleinheit 170 weist vier Steuerausgangsleitungen auf, die an die Sende/Empfangs-Einheit 160 bis 166 angeschlossen sind. Zwei Steuerleitungen 162 der vier Steuerleitungen steuern die Sende/Empfangseinheiten 160 und 164, die den RAM 154 mit dem Eingangsdatenbus 50 verbinden kann. Zwei Steuerleitungen 174 der vier Steuerleitungen sind an die Sende/Empfangseinheiten 162 und 166 angeschlossen die den Dateneingang des RAM mit dem Schnittstellenbus 136 verbinden können. Abhängig vom Logikzustand an den Steuerleitungen 172 und 174 fließen Daten entweder von den Bussen 36 und 50 zum RAM 154, vom RAM 154 zu einem der Busse 36 und 50 oder es erfolgt eine Sperrung des Datenflusses.
  • Systembetrieb
  • Im Betrieb wird das System zunächst auf dem dritten Betriebsniveau oder dem Hauptprogramm aufgerufen und dann zum Niveau der Elementarfunktionen abgearbeitet. Gewöhnlich beinhaltet dies die Adressierung eines Programmschritts im Hauptprogramm, der den Betrieb des Systems auf eine der im ROM/RAM 80 gespeicherten miteinander verbundenen Listen überträgt. Die Liste wird dann abgearbeitet, worauf das Programm zum nächsten Schritt des Hauptprogramms zurückkehrt. Bei der Abarbeitung der verbundenen Liste wird jede darin enthaltene Adresse an den I/O-Bus 10 angelegt und es wird ein dieser Adresse entsprechende Elementarfunktion in sequentieller Weise abgearbeitet. Am Ende der verbundenen Liste stellt ein Rückkehrbefehl alle Übertragungsgatter so ein, daß das System zum Hauptprogramm zurückkehren kann. Es werden zwar nur drei Betriebsniveaus beschrieben, jedoch kann natürlich eine Anzahl von Aufgaben (threads) zwischen das Hauptprogramm und das Elementarfunktionsniveau eingefügt werden.
  • In der bevorzugten Ausführung sind Elementarfunktionen bezüglich des Steuerworts vordefiniert, das von der Steuerhalteschaltung 68 abgegeben wird. Wie oben beschrieben wurden, setzt dieses Steuerwort die Datenflußwege an den verschiedenen Bussen in den interpretierenden verbundenen Prozessor ein. Durch Auswählen der geeigneten Adresse für eine gewünschte Elementarfunktion arbeitet der Prozessor diese Elementarfunktion innerhalb einer vorbestimmten Anzahl von Taktzyklen ab. Größtenteils werden alle Elementarfunktionen innerhalb eines Taktzyklus abgearbeitet. Einige Elementarfunktionen, wie diejenigen, die Multiplikationsoperationen durch das ALU 16 beinhalten, erfordern jedoch zwei bis vier Taktzyklen, damit genügend Zeit für die Operation zur Verfügung gestellt wird. Wenn die gewünschte durchzuführende Operation nicht als Elementarfunktion vordef iniert ist, muß eine Anzahl von Elementarfunktionen als eine verbundene Liste auf einem zweiten Betriebsniveau abgearbeitet werden, damit die gewünschte Operation durchgeführt wird. Da dies eine Anzahl von Taktzyklen erfordert, ist es wünschenswert, so viele Elementarfunktionen wie möglich vorzudefinieren, damit die Abarbeitungsgeschwindigkeit in dem Prozessor vergrößert wird.
  • Die Elementarfunktionsbefehle der bevorzugten Ausführung, die angewendet werden, sind in der Tabelle 1 angegeben. In der Tabelle 1 bezieht sich "p" auf ein in einen der Datenregister REGISTER 1 bis REGISTER 8 im Umlaufstapel 44. Die Priorität der Argumente ist mit "p1, p2, p3, ..." bezeichnet, wobei sich "p1" auf das Argument mit der höchsten Priorität eines der Datenregister REGISTER 1 bis REGISTER 8 bezieht. Der Buchstabe "f" bezieht sich auf ein Kennzeichen, bei dem es sich im wesentlichen um ein Datenwort handelt, bei dem nur ein Bit relevant ist. Eine Erläuterung dieser Ausdrücke kann "Starting Forth" von Leo Brody, 1981 entnommen werden. Tabelle 1 Elementarfunktionsbefehle Negate addiert subtrahiert (p1-p2) multipliziert dividiert (p1/p2) multipliziert mit 2 (Linksverschiebung) dividiert durch 2 (Rechtsverschiebung) 2'er-Komplement wahr, wenn p1 = p2 wahr, wenn negativ wahr, wenn positiv wahr, wenn p1 ohne Vorzeichen < p2 logisch UND ODER Antivalenz überträgt p zum addressierten Speicher überträgt addressierten Speicher nach p überträgt Zeichen zum Speicher lädt Zeichen aus dem Speicher überträgt Parameterstapelwert zum Rücklaufstapel überträgt Rücklaufstapelwert zum Parameterstapel kopiert Oberende des Rücklaufstapels kopiert zweiten Posten im Rücklaufstapel kopiert dritten Posten im Rücklaufstapel vertauscht die zwei obersten Stapelposten dupliziert Oberende des Stapels schiebt Kopie des zweiten Postens auf den Stapel dreht den dritten Posten zum Stapeloberende verwirft den obersten Stapelposten
  • In Fig. 6 ist ein Flußdiagramm für ein Programm dargestellt, das drei Schritte eines Hauptprogramms auf dem dritten Niveau, die zugeordneten verbundenen Listen für den Betrieb auf dem zweiten Niveau und den Betrieb auf dem Niveau der Elementarfunktionen für eine der verbundenen Listen veranschaulicht. Der Teil des Hauptprogramms auf dem dritten Betriebniveau besteht gemäß der Darstellung aus einem mit MASK ADD bezeichneten Programmschritt 180, aus einem mit "1-" bezeichneten Programmschritt 182 und aus einem mit MASK ADD bezeichneten Programmschritt 183. Die Programmschritte 180 bis 183 repräsentieren Adressenspeicherplätze im ROM/RAM 80 oder im Speicher 14. Jeder dieser drei Adressenspeicherplätze des dritten Niveaus für das Hauptprogramm enthält die Adresse des zweiten Niveaus für die bestimmte auszuführende Funktion. Im vorliegenden Beispiel entsprechen alle Adressen der Schritte 180 bis 183 der anfänglichen Zweitniveauadresse der verbundenen Listen auf dem zweiten Betriebsniveau. Der "MASK ADD"-Schritt 180 führt zu einer zugehörigen verbundenen Liste 184, der "1-"-Programmschritt 182 führt zu einer zugehörigen verbundenen Liste 186, und der "MASK ADD" Programmschritt 183 führt zu einer zugehörigen verbundenen Liste 187.
  • Im Hauptprogramm repräsentieren die "MASK ADD" Programmschritte 180 und 183 eine Funktion, die von den verbundenen Listen 184 bzw. 187 ausgeführt wird. Tatsächlich besetzen die beiden verbundenen Listen 184 und 187 den gleichen Speicher, da es sich bei ihnen um die gleiche Funktion oder das gleiche Unterprogramm handelt. Die Adressenspeicherplätze des zweiten Niveaus, die in den Programmschritten 180 und 183 enthalten sind, enthalten somit die gleichen Daten, nämlich die Anfangsadresse der "MASK ADD" Liste. Die von den "MASK ADD" Programmschritt erbrachte Funktion ist das Maskieren eines Teils eines gegebenen Worts, das Addieren dieses maskierten Worts mit einem weiteren Argument und die ODER-Verknüpfung des Ergebnisses mit einem Ornamentwort. Dies wird erzielt, indem ein Argument A mit acht Bits mit dem Logikzustand "1" und mit acht Bits mit dem Logikzustand "0" erzeugt wird. Wenn an dem Argument A eine logische UND-Verknüpfung mit einem weiteren Argument, beispielsweise dem Argument B, durchgeführt wird, wird nur die erste Hälfte des Arguments B ausgegeben, um das maskierte Wort zu bilden. Dieses Ergebnis wird dann zu einem Argument C addiert, und das Ergebnis dieser Addition wird mit dem Ornamentwort durch eine logische ODER- Verknüpfung kombiniert. Zum Zweck der Erkennung an einem späteren Zeitpunkt kann das Ornament aus einer logischen "1" in jedem anderen der maskierten Bits sein.
  • Im wesentlichen gibt es vier Argumente, das Argument A, das Argument B, das Argument C und das Argument D, die in den Umlaufstapel 44 zur Besetzung der vier darin enthaltenen obersten Datenregister eingegeben werden. Nach dem Laden erfolgt die Abarbeitung des Programms vom Programmschritt 180 zur verbundenen Liste 184. Die verbundene Liste 184 enthält einen mit AND bezeichneten Programmschritt 186, einen mit "+" bezeichneten Programmschritt 188, einen mit OR bezeichneten Programmschritt 190 und einen mit RETURN bezeichneten Programmschritt 192. Während der Abarbeitung jedes Programmschritts in der verbundenen Liste 184 geht das Programm zum Elementarfunktionsniveau der Ausführung und dann wieder zum nächsten Programmschritt des zweiten Ausführungsniveaus über. Der AND-Programmschritt 186 geht zu einem mit AND bezeichneten Programm 194 auf dem Elementarfunktionsniveau über, der "+"-Programmschritt 188 geht zu einem mit "+" bezeichneten Programmschritt 196 auf dem Elementarfunktionsniveau über, und der OR-Programmschritt 190 geht zu einem mit OR bezeichneten Programmschritt 198 auf dem Elementarfunktionsniveau über. Aus Gründen der Einfachheit sind die Programme auf dem Niveau der Elementarfunktionen für die verbundenen Listen 186 und 187 nicht dargestellt. Die Programmschritte 194, 196 und 198 auf dem Elementarfunktionsniveau werden jedoch von der verbundenen Liste 197 angewendet, da diese mit der verbundenen Liste 194 identisch ist.
  • Während der Abarbeitung der verbundenen Liste 184 manipuliert die MASK ADD-Operation Daten in den Datenregistern REGISTER 1 bis REGISTER 8, wobei nur eine Einwirkung auf Daten in den Registern mit den vier oberen Prioritäten erfolgt. Die MASK ADD-Operation ist in der Tabelle 2 veranschaulicht, in der DR1 das Register mit der höchsten Priorität ist, während DR2 bis DR4 Datenregister mit abnehmender Priorität sind. Arg A bis Arg D sind die Argumente, auf die eingewirkt wird, wobei Arg A das maskierte Wort ist, während Arg D das Ornament ist. Tabelle 2 Operation Lade Daten
  • Unter Bezugnahme auf die Figuren 2 und 6 wird nun das aus drei Schritten bestehende Programm des dritten Niveaus von Fig. 6 im einzelnen erläutert. Für dieses Beispiel sind die sich auf Elementarfunktionsbefehle beziehenden Adressen Adressen zwischen 0 und 64 zugeordnet, Adressen für Programmschritte in den verbundenen Listen des zweiten Betriebsniveaus us aus sind Adressenspeicherplätzen zwischen 65 und 512 zugeordnet, und Programmschritten im Hauptprogramm oder auf dem dritten Betriebsniveau sind Speicherplätzen von 513 aufwärts zugeordnet.
  • Zum Adressieren des Programmschritts 180 auf dem dritten Betriebsniveau ist es notwendig, die Adresse des dritten Niveaus dieses Programmschritts an den I/O-Bus 10 anzulegen. Außerdem werden die Übertragungsgatter 82 und 84 entsprechend eingestellt, damit der Speicher 14 oder der Speicher 80 ausgewählt wird, der diese Adresse enthält. Der Decodierer 92 bestimmt, daß diese Adresse des dritten Niveaus eine Hochniveauoperation ist, und er lädt deshalb die Adresse in das Fortschaltregister und schaltet diese Adresse um eins fort. Der Decodierer 92 steuert auch den Befehlszeiger 86 so, daß diese Adresse des dritten Niveaus in ihn geladen wird. Mit dem nächsten Taktzyklus wird die fortgeschaltete Adresse des dritten Niveaus, die im Register 94 gespeichert ist, im Rücklaufstapel 20 abgespeichert, und die zuvor in den Befehlszeiger 86 geladene Adresse des dritten Niveaus wird zum Adreßbus 12 durchgetaktet. Wenn die Adresse des dritten Niveaus am Adreßbus 12 erscheint, werden die an dieser Adresse des dritten Niveaus enthaltenen Daten vom angeschlossenen Speicher 14 oder 80 an den I/O-Bus 10 angelegt. Zusätzlich zum Takten des Inhalts des Befehlszeigers 86 auf den Adreßbus 12 wird auch der Inhalt des Befehlsregisters 58 zum Adreßdecodierer 62 durchgetaktet. Wie oben beschrieben wurde, führt dies zur Abgabe eines funktionellen Steuerworts aus der Steuerhalteschaltung 68, da die Adresse diejenige eines Hochniveauschritts mit einer Adresse über 64 ist. Dieses Steuerwort stellt die verschiedenen Übertragungsgatter so ein, daß der nächst Befehl empfangen wird.
  • Die an der Adresse des dritten Niveaus enthaltenen Daten für den Programmschritt 180 sind die anfängliche Adresse des zweiten Niveaus der verbundenen MASK ADD-Liste 184, die den nächsten Befehl darstellt. Diese Adresse des zweiten Niveaus wird an den I/O-Bus 10 angelegt und vom Decodierer 92 als eine Adresse des zweiten Niveaus für eine verbundene Liste decodiert. Wie oben beschrieben wurde, wird diese Anfangsadresse in den Befehlszeiger 86 und auch in das Befehlsregister 58 geladen, ohne daß das Fortschaltregister 94 geladen und die darin enthaltene Adresse fortgeschaltet wird.
  • Beim nächsten Taktzyklus wird die Adresse im Befehlsregister 58 zum Adreßdecodierer 62 durchgetaktet, und die Adresse des zweiten Niveaus im Befehlszeiger 86 wird zum Adreßbus 12 durchgetaktet. Dieser Schritt ist durch eine Flußlinie 200 dargestellt. Da die Adresse des zweiten Niveaus diejenige eines Hochniveaubefehls ist, wird von der Steuerhalteschaltung 68 ein funktionelles Steuerwort ausgegeben. Dieses funktionelle Steuerwort bewirkt das Einstellen der Übertragungsgatter 82 und 84, damit bestimmt wird, aus welchem Speicher die Microcodeadresse für den AND-Befehl empfangen werden soll. Die Adresse des zweiten Niveaus am Adreßbus 12 ruft die AND-Microcodeadresse aus dem ausgewählten Speicher 14 oder 80 ab und legt sie an den I/O-Bus 10 an. Dieser Schritt ist durch eine Flußlinie 202 dargestellt.
  • Die beim Programmschritt 186 an den I/O-Bus 10 angelegte Microcodeadresse ist eine Adresse für den Microcode-RAM 60. Der Decodierer 92 erkennt, daß es sich hierbei um die Adresse einer Elementarfunktion und nicht um die Anfangsadresse einer verbundenen Liste handelt, und er schaltet den Inhalt des Befehlszeigers 86 fort und lädt die Microcodeadresse nicht in diesen. In den Befehlszeiger 86 ist nun die Adresse des zweiten Niveaus für den Programmschritt 188 in der verbundenen Liste 184 geladen. Zusätzlich zur Fortschaltung des Inhalts des Befehlsregisters 86 wird das Befehlsregister 58 mit der Microcodeadresse am I/O-Bus 10 geladen.
  • Beim nächsten Taktzyklus wird der Inhalt des Befehlsregisters 58 zum Adreßdecodierer 62 durchgetaktet, damit der Microcode- ROM 60 adressiert wird. Da es sich hierbei um die Adresse einer Elementarfunktion handelt, wird ein Elementarfunktions- Steuerwort von der Halteschaltung 68 ausgegeben, damit die entsprechenden Übertragungsgatter im Umlaufstapel 44 für die Durchführung der gewünschten Funktion eingestellt werden. Da dies die Adresse einer AND-Funktion ist, werden die Übertragungsgatter 54 und 56 am Eingang des ALU 16 aktiviert, und das erste und das zweite Datenregister im Umlaufstapel 44 werden an die Ausgangsdatenbusse 46 und 48 angelegt. Der Ausgang des ALU 16 wird über das Übertragungsgatter 32 und den Schnittstellenbus 36 mit dem zweiten Datenregister im Umlaufstapel 44 gekoppelt. Auf diese Weise werden DR1 und das Argument B im Datenregister DR2 einer logischen UND-Verknüpfung unterzogen, das Ergebnis dieser Operation wird dem Eingang des Stapels 44 zugeführt.
  • Gleichzeitig mit den Takten der Microcodeadresse durch das Befehlsregister 58 wird die fortgeschaltete Adresse des zweiten Niveaus im Befehlszeiger 86 zum Adreßbus 12 durchgetaktet. Dieses Fortschalten der Adresse des zweiten Niveaus repräsentiert die Adresse für den Programmschritt 188, die die Microcodeadresse für die Elementarfunktion "+" enthält. Zum Anlegen der Microcodeadresse an den I/O-Bus 10 muß das Übertragungsgatter 82 oder das Übertragungsgatter 84 aktiviert werden. Diese Übertragungsgatter werden vom Steuerwortausgang durch die Steuerhalteschaltung 68 gesteuert. Da ausgenommen für den Spezialfall des Rückkehrbefehls, wie noch erläutert wird, auf eine Elementarfunktionsadresse stets eine Adresse aus dem Speicher erfolgt, ist immer eines der Übertragungsgatter 82 oder 84 aktiviert. Die Ausführung eines gegebenen Elementarfunktionsbefehls verläuft somit immer parallel mit dem Abrufen der nächstfolgenden Adresse in einer gegebenen verbundenen Liste. Dieser Schritt ist durch die Flußlinie 204 vom AND-Programm 194 auf dem Elementarfunktionsniveau zum "+"-Programmschritt 188 dargestellt.
  • Beim nächsten Taktzyklus werden die Ausgangsdaten des ALU 16 in das Datenregister mit der zweiten Priorität eingegeben, und der Stapelzeiger wird fortgeschaltet, so daß das Datenregister mit der zweiten Priorität nun zum Datenregister mit der ersten Priorität wird. Dadurch ist im obersten Register des Umlaufstapels 44 das Ergebnis der Durchführung einer logischen UND-Verknüpfung des Arguments A und des Arguments B gespeichert. Zusätzlich wird das oberste Element im Überlaufstapel 76 in das Register mit der niedrigsten Priorität eingegeben.
  • Wenn die Daten aus dem ALU 16 an den Umlaufstapel 44 angelegt werden, schaltet der Decodierer 92 den Befehlszeiger 96 auf die Adresse des zweiten Niveaus für den Programmschritt 190 fort, und die Mikrocodeadresse im Befehlsregister 58 wird zum Adreßdecodierer 62 durchgetaktet, damit der Mikrocode-ROM 60 für die Ausgabe des Elementarfunktions-Steuerworts für den "+"-Programmschritt 196 adressiert wird. Die Mikrocodeadresse veranlaßt die Abgabe eines Steuerworts aus der Steuerhalteschaltung 68, das das Register DR1 mit der ersten Priorität und das Register DR2 mit der zweiten Priorität im Umlaufstapel 44 mit den Ausgangsbussen 46 und 48 verbindet und die Übertragungsgatter 54 und 56 zur Eingabe dieser Daten in das ALU 16 aktiviert. Das ALU 16 wird auch so gesteuert, daß eine Additionsoperation ausgeführt wird und ihr Ausgangssignal über das Übertragungsgatter 32 auf den Schnittstellenbus 36 gegeben wird. Der Schnittstellenbus 36 wird mit dem Datenregister der zweiten Priorität im Umlaufstapel 44 gekoppelt, damit in dieses mit dem nächsten Taktzyklus eine Eingabe erfolgt.
  • Während des gleichen Taktzyklus ist die Adresse des zweiten Niveaus für den OR-Programmschritt 190 an den Adreßbus 12 angelegt worden, und die Mikrocodeadresse, die an dieser Adresse des zweiten Niveaus enthalten ist, wird abgerufen und an den I/O-Bus 10 angelegt. Dies ist durch eine Flußlinie 208 dargestellt. Diese Mikrocodeadresse adressiert den Mikrocode- ROM 60, so daß ein der logischen ODER-Funktion entsprechendes Steuerwort abgegeben wird. Der Decodierer 92 stellt die Anwesenheit einer Mikrocodeadresse am I/O 10 fest und schaltet den Befehlszeiger 86 auf die nächstfolgende Adresse des zweiten Niveaus für den Programmschritt 192 fort. Zusätzlich wird das Befehlsregister 58 mit der Mikrocodeadresse für die logische ODER-Funktion geladen.
  • Beim nächsten Taktzyklus wird die Mikrocodeadresse im Befehlsregister 58 durch den Adressendecodierer 62 getaktet, damit der Mikrocode-ROM 60 zur Ausgabe des der logischen ODER-Funktion entsprechenden Steuerworts adressiert wird. Dies ist durch eine Flußlinie 210 dargestellt. Dieses Steuerwort bewirkt die Verbindung der zwei Register DR1 und DR2 mit der höchsten Priorität im Umlaufstapel 44 mit dem Eingang des ALU 16 zur Durchführung einer logischen ODER-Funktion, und es bewirkt das Anlegen der erzielten Ergebnisse an den Schnittstellenbus 36. Der Schnittstellenbus 36 ist mit dem Datenregister der zweiten Priorität im Umlaufstapel 44 gekoppelt.
  • Während des gleichen Befehlszyklus wird die fortgeschaltete Adresse des zweiten Niveaus im Befehlszeiger 86 an den Adreßbus 12 angelegt, damit das dem Programmschritt 192 entsprechende Datenregister adressiert wird. In diesem Datenregister hat sich die Mikrocodeadresse für den Befehl RETURN befunden. Diese Mikrocodeadresse wird an den I/O-Bus 10 angelegt und in das Befehlsregister 58 geladen. Gleichzeitig stellt der Decodierer 92 fest, daß es sich hierbei um eine Mikrocodeadresse handelt, und er schaltet den Inhalt des Befehlszeigers 86 fort. Dies ist durch eine Flußlinie 212 dargestellt. Da der Programmschritt 192 der letzte Programmschritt in der verbundenen Liste 184 ist, wird die fortgeschaltete Adresse im Befehlszeigre 186 nicht benutzt, wie später noch beschrieben wird.
  • Beim nächsten Taktzyklus wird die Mikrocodeadresse für den Befehl RETURN im Befehlsregister 58 durch den Adreßdecodierer 62 getaktet, damit das Steuerwort für den Befehl RETURN aus der Steuerhalteschaltung 68 abgegeben wird. Zusätzlich wird die fortgeschaltete Adresse des zweiten Niveaus im Befehlszeiger 86 an den Adreßbus 12 angelegt. Der Befehl RETURN deaktiviert jedoch die Übertragungsgatter 82 und 84, damit die Abgabe von Daten aus dem Speicher 14 oder aus dem Speicher 80 an den I/O-Bus 10 verhindert wird. Das Steuerwort RETURN veranlaßt den Rücklaufstapel 20 über das Übertragungsgatter 98 die fortgeschaltete Adresse des dritten Niveaus für das dritte Betriebsniveau abzugeben, was dem Programmschritt 182 entspricht. Diese Adresse des dritten Niveaus wird in das Befehlsregister 58 geladen, und der Decodierer 92 stellt fest, daß diese Adresse diejenige einer Operation auf dem dritten Niveau ist, und er lädt diese Adresse in den Befehlszeiger 86. Dies ist durch eine Flußlinie 214 vom RETURN-Programmschritt 92 zum Programmschritt 82 im Hauptprogramm dargestellt.
  • Wenn der Inhalt des Befehlszeigers 86, der aus der Adresse des dritten Niveaus für den Prograiiiaschritt 182 besteht, zum Adreßbus 12 durchgetaktet wird, wird der der Adresse des dritten Niveaus des Programmschritts 182 entsprechende Inhalt des Datenregisters an den I/O-Bus 10 angelegt. Dies ist die anfängliche Adresse des zweiten Niveaus der verbundenen Liste 186, und dieser Schritt ist durch eine Flußlinie 216 angegeben. Die verbundene Liste 186 besteht aus einem Programmschritt 218, bei dem es sich um eine Elementarfunktion "1-" handelt, sowie aus einem RETURN-Programmschritt 220. Der Decodierer 92 stellt die Anwesenheit der Adresse des zweiten Niveaus am I/O-Bus 10 fest, und er stellt überdies fest, daß es sich hierbei um die Anfangsadresse der verbundenen Liste 186 handelt. Die Adresse des zweiten Niveaus wird daher in das Befehlsregister 58 und auch in den Befehlszeiger 86 geladen.
  • Beim nächsten Taktzyklus wird die Adresse des zweiten Niveaus im Befehlsregister 58 in den Adreßdecodierre 62 geladen, und die Adresse des zweiten Niveaus im Befehlszeiger 82 wird auf den Adreßbus 12 geladen. Der Adreßdecodierer 62 decodiert die Adresse als diejenige eines Hochniveaubefehls, und er gibt das entsprechende funktionelle Steuerwort ab, damit entweder das Übertragungsgatter 82 oder das Übertragungsgatter 84 für die Kopplung eines der Speicher 14 oder 80 mit dem Eingabe/Ausgabe-Bus 10 aktiviert wird. Wenn die Anfangsadresse des Programmschritts 218 an den Adreßbus 12 gelegt wird, wird die Mikrocodeadresse für die Elementarfunktion "1-" aus dem Speicher abgerufen und an den I/O-Bus 10 angelegt. Dies ist durch eine Flußlinie 222 angezeigt.
  • Nachdem die Elementarfunktion abgearbeitet worden ist, kehrt das Programm über eine Flußlinie 224 zurück. Wie oben beschrieben wurde, wird nur ein Taktzyklus benötigt, um die Elementarfunktionsadresse des zweiten Niveaus durchzutakten, den Befehlszeiger 86 fortzuschalten und die Adresse des zweiten Niveaus für den Programmschritt 220 an den Adreßbus 12 anzulegen. Diese Adresse des zweiten Niveaus ist diejenige eines RETURN-Befehls, die das Programm vom zweiten Betriebsniveau zum Programmschritt 183 im dritten Betriebsniveau über eine Flußlinie 226 zurückzuführen. Wie oben beschrieben wurdem ist das Ausgangssteuerwort aus der Halteschaltung 68 dann, wenn die RETURN-Mikrocodeadresse durch das Befehlsregister 58 getaktet wird, ein funktionelles Steuerwort, das aus dem Rücklaufstapel 20 kommt, wobei es sich dabei um die fortgeschaltete Adresse des dritten Niveaus für den Programmschritt 183 im dritten Betriebsniveau handelt. Das Programm läuft dann gemäß einer Flußlinie 228 zur verbundenen Liste 188 weiter und kehrt längs einer Flußlinie 2320 mit der nächstfolgenden Adresse des dritten Niveaus am Eingabe/Ausgabe-Bus 10 zurück.
  • Bei der Abarbeitung der verbundenen Liste 184 ist zu erkennen, daß die Flußlinie 202 und 204 einen Taktzyklus repräsentieren, die Flußlinien 206 und 208 einen zweiten Taktzyklus repräsentieren und die Flußlinien 210 und 212 einen dritten Taktzyklus repräsentieren. Es werden daher nur drei Taktzyklen benötigt, um diese verbundene Liste schrittweise zur Durchführung der gewünschten Funktion abzuarbeiten. Ein weiterer Taktzyklus wird benötigt, um eine Entnahme aus dem Rücklaufstapel 20 vorzunehmen und die nächstfolgende Adresse für das dritte Betriebsniveau an den I/O-Bus 10 anzulegen.
  • Maskiertes Betriebssystem
  • In Fig. 7 ist ein schematisches Blockschaltbild eines maskierten Betriebssystems ähnlich dem System von Fig. 2 mit der Hinzufügung einer maskierten Operation dargestellt, die parallel mit der Hauptsys£emoperation abläuft. Parallel zum Umlaufstapel 44 ist ein Schatten-Umlaufstapel 240 angeordnet. Der Schatten-Umlaufstapel 240 besteht aus acht Datenregistern mit einer Breite von 16-Bit, die gleich den Datenregistern im Umlaufstapel 44 sind. Ein Multiplexer 242 weist zwei Eingänge zum Koppeln mit dem Schnittstellenbus 36 und dem Eingangsdatenbus 50 auf. Der Multiplexer 242 weist zwei Ausgangsschnittstellenbusse 244 zum Koppeln mit dem Umlaufstapel 44 und zwei Ausgangsschnittstellenbusse 246 zum Koppeln mit dem Schatten-Umlaufstapel 240 auf. Der Multiplexer 242 kann die Busse 36 und 50 so verschieben, daß entweder eine Kopplung mit den Schnittstellenbussen 244 oder mit den Schnittstellenbussen 246 stattfindet. Am Ausgang des Umlaufstapels 44 und des Schatten-Umlaufstapels 240 ist ein Multiplexer 248 angeordnet, der zwei Ausgänge zum Koppeln mit den Ausgangsdatenbussen 46 und 48 aufweist. Der Umlaufstapel ist mit dem Multiplexer 248 über zwei Eingangsschnittstellenbusse 250 gekoppelt, und der Schatten-Umlaufstapel 240 ist mit dem Multiplexer 248 über zwei Eingangsschnittstellenbusse 252 gekoppelt. Der Multiplexer 248 kann die Eingangsschnitstellenbusse 250 oder 252 so umschalten, daß sie mit den Ausgangsdatenbussen 46 und 48 gekoppelt sind. Die Multiplexer 242 und 248 werden mit Hilfe eines Multiplexsignals (MUX) gesteuert.
  • Neben dem Überlaufstapel 76 ist ein Schatten-Überlaufstapel 252 angeordnet. Ein Multiplexer 256 ist mit zwei Eingängen an den Schnittstellenbus 36 bzw. an den Eingangsdatenbus 50 angeschlossen. Der Multiplexer 256 weist zwei Ausgangsschnittstellenbusse 258 zum Koppeln mit dem Überlaufstapel 76 und zwei Ausgangsschnittstellenbusse 260 zum Koppeln mit dem Schatten-Überlaufstapel 254 auf. Der Multiplexer 256 kann so betätigt werden, daß er die Busse 36 und 50 mit einem der beiden Ausgangsbusse 258 oder 260 verbindet. Der Multiplexer 256 wird von dem Signal MUX gesteuert.
  • Parallel zum Rücklaufstapel 20 ist ein Schatten-Rücklaufstapel 262 angeordnet. Ein Multiplexer 264 weist zwei Eingänge auf, die mit dem Fortschaltregister 94 und mit dem Übertragungsgatter 98 zum Koppeln mit dem I/O-Bus 10 verbunden sind. Der Multiplexer 264 weist zwei Ausgänge auf, die übre Ausgangsschnittstellenbusse 266 mit dem Rücklaufstapel 20 gekoppelt sind, und er weist zwei weitere Ausgänge auf, die über Ausgangsschnittstellenbusse 268 mit dem Schatten-Rücklaufstapel 262 gekoppelt sind. Der Multiplexer 264 kann so betätigt werden, daß Daten aus dem Fortschaltregister 94 in den Rücklaufstapel 20 oder in den Schatten-Rücklaufstapel 262 eingegeben werden könne oder daß eine Entnahme aus dem Rücklaufstapel 20 oder dem Schatten-Rücklaufstapel 264 auf den I/O- Bus 10 erfolgen kann. Der Multiplexer 264 wird von dem Signal MUX gesteuert.
  • Parallel zum Befehlsregister 58 ist ein Schatten-Befehlsregister 270 angeordnet. Ein Multiplexer 272 ist mit seinem Eingang mit dem I/O-Bus 10 gekoppelt, und er kann den I/O-Bus 10 zwischen seinen zwei Ausgängen umschalten. Der erste Ausgang ist mit dem Befehlsregister 58 über einen Schnittstellenbus 274 gekoppelt, und der andere Ausgang ist mit dem Schatten- Befehlsregister 270 über einen Schnittstellenbus 276 gekoppelt. Ein Multiplexer 278 weist zwei Ausgänge auf, die mit dem Schnittstellenbus 64 gekoppelt sind; er kann so betätigt werden, daß er einen seiner zwei Eingänge mit dem Schnittstellenbus 64 koppelt. Sein erster Eingang ist mit dem Ausgang des Befehlsregisters 58 über einen Schnittstellenbus 280 verbunden, und sein anderer Ausgang ist mit dem Schatten- Befehlsregister 270 über einen Schnittstellenbus 282 verbunden. Die Multiplexer 272 und 278 können so betätigt werden, daß entweder das Befehlsregister 58 oder das Schatten-Befehlsregister 270 zwischen den I/O 10 und den Adreßdecodierer 62 gekoppelt werden kann.
  • Parallel zum Befehlszeiger 90 ist ein Schatten-Befehlszeiger 284 angeordnet. Ein Multiplexer 286 ist mit einem Eingang mit dem I/O-Bus 10 gekoppelt, und er kann so betätigt werden, daß er diesen Eingang zwischen zwei Ausgängen umschaltet. Sein erster Ausgang ist mit dem Befehlszeiger 90 über einen Schnittstellenbus 288 gekoppelt, und sein anderer Ausgang ist mit dem Schatten-Befehlszeiger 284 über einen Schnittstellenbus 290 gekoppelt. Ein Multiplexer 292 ist mit seinem Ausgang mit dem Adreßbus 12 gekoppelt, und er kann so betätigt werden, daß er den Ausgang zu einem seiner zwei Eingänge umschaltet. Sein erster Eingang ist mit dem Ausgang des Befehlszeigers 90 über einen Schnittstellenbus 294 gekoppelt, und sein anderer Eingang ist mit dem Ausgang des Schatten- Befehlszeigers 284 über einen Schnittstellenbus 296 gekoppelt. Die Multiplexer 286 und 292 können so betätigt werden, daß in auswählbarer Weise der Befehlszeiger 90 oder der Schatten-Befehlszeiger 284 zwiwchen den I/O-Bus 10 und den Adreßbus 12 gekoppelt werden kann.
  • Der Schatten-Befehlszeiger 284 gleicht dem Befehlszeiger 90, und sowohl der Schatten-Befehlszeiger 284 als auch der Befehlszeiger 90 können mit Daten geladen werden oder Daten enthalten, die vor der Übertragung zu ihrem Ausgang fortgeschaltet werden. Wie oben beschrieben wurde, liefert der Decodierer 92 die Steuersignale für die Fortschalt- oder Ladefunktionen. Der Ausgang des Decodierers 92 wird durch einen Multiplexer 298 multiplexiert, der zwei Ausgänge aufweist, von denen einer mit dem Fortschalteingang des Befehlszeigers 90 und der andere mit dem Fortschalteingang des Schatten- Befehlszeigers 284 verbunden ist. Der Multiplexer 298 wird vom Signal MUX gesteuert.
  • An dem Systemtaktgeber 26 ist eine Schatten-Zeitgebereinheit 300 angeschlossen, die auf periodischer Basis das Signal MUX erzeugen kann. In der bevorzugten Ausführung ist das Signal MUX für jeden 10,. Zyklus des Taktgebers 26 vorhanden. Wenn das Signal MUX nicht vorhanden ist, sind der Schatten-Rücklaufstapel 62, das Schatten-Befehlsregister 270 und der Schatten-Befehlszeiger 284 (anschließend als "Schattenelemente" bezeichnet) vom System abgetrennt, und das System ist so verbunden, wie in Fig. 2 dargestellt ist. Für diese neuen Zyklen verläuft der Systembetrieb entsprechend er obigen Beschreibung. Wenn während des 10. Taktzyklusses das Signal MUX erzeugt wird, wird der Systembetrieb auf die Schattenelemente übertragen. Für die Dauer des einen Taktzyklus, in dem die Schattenelemente angeschlossen sind, finden alle Operationen für diesen Taktzyklus so statt, wie oben im Zusammenhang mit Diagramm von Fig. 2 beschrieben wurde. Beispielsweise kann die nächste Schattenoperation darin bestehen, schrittweise die Mitte einer verbundenen Liste zu durchlaufen und eine der darin definierten Elementarfunktionen abzuarbeiten. Wie oben beschrieben wurde, werden Elementarfunktionen in sequentieller Weise abgearbeitet, wobei die Mikrocodeadresse für die Elementarfunktion in das Befehlsregister 58 geladen wird, während die vorangehende Elementarfunktion abgearbeitet wird. Wenn das Signal MUX erzeugt wird, wird das Schatten-Befehlsregister 270 mit dem Schnittstellenbus 64 gekoppelt und die darin enthaltene Information wird zum Adressdecodierer 62 übertragen. Da die in das Schattenbefehlsregister 270 geladene Information eine Mikrocodeadresse für eine Elementarfunktion ist, wird am Ausgang der Steuerhalteschaltung 68 ein Steuerwort erzeugt, das die verschiedenen Übertragungsgatter und Steuerfunktionen für die Abarbeitung der Elementarfunktion einstellt.
  • Der Schattenbefehlszeiger 284 hat die fortgeschaltete Adresse des zwieten Niveaus für den nächsten Schritt in der verbundenen Schatten-Liste gespeichert. Wenn das Signal MUX vorhanden ist, wird diese Adresse des zweiten Niveaus durch den Multiplexer 292 zum Adressbus 12 getaktet, damit das nächstfolgende Datenregister in der verbundenen Liste adressiert wird und die darin enthaltene Mikrocodeadresse an den Eingabe/Ausgabe- Bus 10 angelegt wird. Sobald die Mikrocodeadresse der nächsten Elementarfunktion an den I/O-Bus 10 angelegt ist, wird sie in das Schatten-Befehlsregister 270 geladen, und der Decodierer 92 schaltet den Schatten-Befehlszeiger 284 über den Multiplexer 298 fort. Vor dem Ende des Taktzyklus wird daher das Schatten-Befehlsregister 270 mit der Mikrocodeadresse für die nächste auszuführende Elementarfunktion geladen, und der Schatten-Befehlszeiger 284 wird fortgeschaltet, damit die nächste Adresse des zweiten Niveaus in der verbundenen Schattenliste angefordert wird.
  • Wenn das Signal MUX vorhanden ist, koppeln die Multiplexer 242 und 248 den Schatten-Umlaufstapel 240 mit den Eingangsbussen 36 und 50 und den Ausgangsbussen 46 und 48. Der Multiplexer 256 koppelt auch den Schatten-Überlaufstapel 254 mit den Bussen 36 und 50. Der Schatten-Umlaufstapel 240 weist seinen eigenen unabhängigen Stapelzeiger auf, der unten noch beschrieben wird und der unabhängig vom Umlaufstapel 44 arbeitet. Da nur das Umlaufstapel-Datenregister und die Überlauf-Datenregister geschaltet werden, müssen die Übertragungsgatter und ALU 16 für Schattenoperation nicht wiederholt werden. Ein durch das Steuerwort am Ausgang der Steuerhalteschaltung 68 definierter Elementarfunktionsbefehl wird dann mit den Daten im Schatten-Umlaufstapel 240 in ähnlicher Weise abgearbeitet wie oben im Zusammenhang mit Fig. 6 beschrieben.
  • Der Schatten-Rücklaufstapel 262 ist auch mit dem Fortschalt- Datenregister 94 und dem Übertragungsgatter 98 gekoppelt, wenn das Signal MUX vorhanden ist. Wie oben beschrieben, wird der Schattenrücklaufstapel 262 benutzt, um Adressen für das dritte Betriebsniveau zu speichern, so daß diese Adresse aus dem Stapel entnommen werden kann, wenn eine Rückkehr von einem niedrigeren Betriebsniveau erfolgt. Der schatten-Rücklaufstapel enthält seinen eigenen unabhängigen Stapelzeiger, und er stimmt mit dem Rücklaufstapel 20 überein. Durch Vorsehen der Schattenelemente kann ein unabhängiges Schattenprogramm parallel mit dem Hauptprogramm ablaufen. Dieses unabhängige Schattenprogramm läuft mit einer langsameren Geschwindigkeit, da es nur in einem von 10 Zyklen arbeitet, während das Hauptprogramm in neun von zehn Zyklen arbeitet. Da die Schatten-Zeitsteuereinheit 300 ein Hardware-Zeitsteuereinheit besteht keine Möglichkeit für das Hauptprogramm, in eine Betriebsart einzutreten, in der der Betrieb nicht zum Schattenprogramm zurückkehrt. Auf diese Weise arbeitet das Schattenprogramm völlig unabhängig vom Hauptprogramm, was die Möglichkeit eröffnet, den Betrieb des Hauptprogramms oder des Systems zu überwachen oder irgendwelche Eindringversuche festzustellen, die von außerhalb des Systems ausgelöst werden können. Die Schattenelemente eliminieren den Bedarf nach Unterbrechungen, die eine Kopplung mit dem Hauptprogramm für ein richtiges Arbeiten erfordern.
  • In Fig. 8 ist ein erweitertes Blockschaltbild des Umlaufstapels 44 und des Schatten-Umlaufstapels 240 dargestellt. Der Umlaufstapel 44 besteht gemäß der obigen Beschreibung aus 8 Datenregistern, die mit REGISTER bis REGISTER 8 bezeichnet sind. Der Schatten-Umlaufstapel 240 stimmt mit dem Umlaufstapel 44 überein und weist 8 Datenregister, die mit REGISTER bis REGISTER 16 bezeichnet sind. Somit bildet ein Stapel aus 16 Registern sowohl den Umlaufstapel 44 als auch den Schattenumlaufstapel 240.
  • Eine Bus/Register-Wähleinheit 302 steht mit dem Eingangsdatenbus 50 und dem Schnittstellendatenbus 36 in Verbindung und stellt mehrere Ausgänge zur Verfügung, die über mehrere Eingangsschnittstellenbusse 304 mit den Registern REGISTER 1 bis REGISTER 16 gekoppelt sind. Eine Bus/Register-Wähleinheit 306 ist an ihrem Ausgang mit dem Ausgangsdatenbus 46 und dem Ausgangsdatenbus 48 gekoppelt; Sie weist mehrere Eingänge auf, die mit den Ausgängen der REGISTER 1 - 16 über mehrere Schnittstellenbusse 308 gekoppelt sind. Der Stapelzeiger 110 ist über einen Multiplexer 312 multiplexartig mit dem Schatten-Stapelzeiger 310 verbunden, damit Steuersignale für die Bus/Register-Wähleinheiten 302 und 306 geliefert werden. Die Bus/Register-Wähleinheiten 302 und 306 und die Datenregister REGISTER 1 - 16 repräsentieren den Umlaufstapel 44, den Schatten-Umlaufstapel 240 und die Multiplexer 242 und 248.
  • Der Betrieb der Bus/Register-Wähleinheiten 302 und 306 stimmt mit dem Betrieb der Bus/Register-Wähleinheiten 102 und 106 von Fig. 3 überein. Der Stapelzeiger 110 und der Schatten- Stapelzeiger 310 sind verriegelte Aufwärts/Abwärts-Zähler, denen das Steuersignal über einen Multiplexer 312 in Multiplexform zugeführt wird. Sowohl der Stapelzeiger 110 als auch der Schatten-Stapelzeiger 310 sind 3-Bit Aufwärts/Abwärts- Zähler, wobei der Stapelzeiger 310 ein viertes Bit liefert, das stets den hohen logischen Zustand hat. Durch Vorsehen dieses hohen logischen Zustandes für das vierte Bit am Schatten-Stapelzeiger 310 werden stets die REGISTER 9 - 16 adressiert, während der Stapelzeiger 110 auf die REGISTER 1 - 8 beschränkt ist. Abhängig von den Multiplexeranschlüssen 312 und 314 werden der Stapelzeiger 110 oder der Stapelzeiger 310 fortgeschaltet, damit die entsprechenden Register der zugeordneten Datenregister als die mit der höchsten Priorität ausgewählt werden. Wenn der Multiplexer das Steuersignal entfernt, werden die Daten festgehalten, bis ein weiteres Fortschaltsteuersignal angelegt wird. Der Betrieb des Umlaufstapels 44 und des Schatten-Umlaufstapels 240 stimmt mit dem in Fig. 4 beschriebenen Betrieb überein, jedoch mit der Hinzufügung von 4 - 16 Decodieren anstelle von 3 - 8 Decodierern. Der Schatten-Überlaufstapel 254 und der Schatten-Rücklaufstapel 262 arbeiten ähnlich wie der Überlaufstapel 76, der oben im Zusammenhang mit Fig. 5 beschrieben wurde. Ein zusätzlicher Aufwärts/Abwärts-Zähler 156 wird mit einem zusätzlichen Datenbit für die Adressierung eines zweiten 256K-Speicherblocks hinzugefügt, der parallel zum RAM 154 liegt. Auf diese Weise muß die Bus/Richtungswähleinheit 170 mit den zugehörigen Übertragungsgattern nicht wiederholt werden.
  • In der bevorzugten Ausführung sind die verschiedenen Bauelemente, die verwendet werden, wie folgt: Beschreibung Bezugszeichen Teil-Nr. Hersteller Leitungstreiber Sende/Empfangs-Einheit Flip-Flop 3-8 Decodierer 3-Bit-Addierer Texas Instruments 3-Bit-Auf/Ab-Zähler NAND-Gatter Texas Instruments
  • Zusammenfassend läßt sich feststellen, daß ein interpretierender, kompilierender Prozessor beschrieben worden ist, der die Parameter Stapel Operationen hardware-seitig verwirklicht, so daß sie innerhalb eines Taktzyklus des Systemtakts ausgeführt werden können. Außerdem ist eine Anzahl von miteinander verbundenen Befehlen ebenfalls hardware-seitig verwirklicht, so daß sie sequentiell abgearbeitet werden können, ohne daß zahlreiche Abrufbefehle aus dem Speicher benötigt werden. Für den Parameter Stapel wird ein Umlaufstapel benutzt, an dessen Ausgang und an dessen Eingänge mehrere Datenbusse angeschlossen sind. Durch Auswählen eines oder mehrerer Ausgänge aus den Datenregistern im Umlaufstapel und durch Steuern des Flusses der abgegebenen Daten kann der Stapel in effektiver Weise manipuliert werden. Zu Durchführung arithmetischer und logischer Funktionen an diesen Daten ist ein Rechenwerk vorgesehen. Alle Operationen des Umlaufstapels werden von Mikrocodebefehlen gesteuert, die in Abhängigkeit von Adressen ausgegeben werden, die nacheinander an einen Adressbus angelegt werden. Diese Mikrocodebefehle geben ein in jedem Taktzyklus auszuführendes Elementarbefehlsniveau frei. Zum Speichern von Programmadressen für die Mikrocodebefehle sind interne und externe Speicher vorgesehen.

Claims (23)

1. Signalprozessor zum Verarbeiten von Daten, mit:
einem Datenstapel (18 - Fig. 1; 44 - Fig. 2, 3 7), der mehrere Datenregister zum Speichern von Daten bildet,
einem Speichermedium (24 - Fig. 1; 60 - Fig. 2, 7) zum Speichern von Daten, wobei das Speichermedium mehrere vorbestimmte Stellen aufweist, an denen jeweils Mikrocodebefehle abgespeichert sind,
mit dem Speicherrnedium wirkungsmäßig verbundenen Mitteln (62) zum Adressieren einer ausgewählten Stelle in dem Speichermedium zum Abrufen eines ausgewählten Mikrocodebefehls,
Mitteln zum Auswählen von Daten aus ausgewählten Datenregistern in dem Datenstapel in Abhängigkeit von einem ausgewählten Mikrocodebefehl,
einem Rechenwerk (16), das wirkungsmäßig mit den Mitteln zum Auswählen von Daten für die Durchführung arithmetischer und logischer Operatonen an den ausgewählten Daten in Abhängigkeit von einem ausgewählten Mikrocodebefehl verbunden ist, und mit dem Rechenwerk wirkungsmäßig verbundenen Mitteln zum Übertragen der Ergebnisse der arithmetischen oder logischen Operationen zu einer externen Speicherstelle (14) oder zurück in ein ausgewähltes Datenregister des Datenstapels,
dadurch gekennzeichnet, daß die mehreren Datenregister in dem Datenstapel (44 - Fig. 3) gleichzeitig adressierbar sind, damit gleichzeitig Daten in mehr als ein Datenregister eingegeben und gleichzeitig Daten aus mehr als einem Datenregister ausgegeben werden, und
daß die Mittel (102, 106 - Fig. 3) zum Auswählen von Daten und das Rechenwerk zur Durchführung arithmetischer und logischer Operationen gleichzeitig arbeiten.
2. Signalprozessor nach Anspruch 1, dadurch gekennzeichnet, daß jedem der Datenregister in dem Datenstapel eine Priorität in einer abfallenden Prioritätsfolge vom oberen Ende zum unteren Ende des Datenstapels zugeordnet ist, damit diesem eine Last-in-first-out-Konfiguration verliehen wird.
3. Signalprozessor nach Anspruch 1 oder 2, ferner gekennzeichnet durch einen Hauptsignalbus (10 - Fig. 1, 2, 7) zum Übertragen von Daten und von Programmbefehlen in an sich bekannter Weise,
Führungsmittel (32, 36, 38, 40, 46, 48, 50, 52, 54, 56 - Fig. 2, 7) zum selektiven Verbinden der Ausgänge der Datenregister mit deren Eingängen sowie der Eingänge und Ausgänge der Datenregister mit dem Signalbus, so daß jeder der Eingänge oder Ausgänge der Datenregister gleichzeitig mit dem Signalbus kommunizieren kann oder ausgewählte Ausgänge des Datenregisters gleichzeitig mit ausgewählten Eingängen in Verbindung gebracht werden können,
Steuermittel (22 - Fig. 1; 58, 68, 86 - Fig. 2, 7) zum Steuern der Führungsmittel und des Rechenwerks für die Ausführung einer gegebenen Aufgabe an den Daten in den Datenregistern, wobei die in dem Speichermedium gespeicherten Mikrocodebefehle den Steuermitteln zum Steuern der Führungsmittel zur Verfügung gestellt werden,
einen Systemtaktgeber (26 - Fig. 1), der wirkungsmäßig mit dem Datenstapel, dem Speichermedium, in dem die Mikrocodebefehle gespeichert sind, den Führungsmitteln, den Steuermitteln und den Mitteln zum Adressieren verbunden ist, um Zeitsteuerfunktionen als aufeinanderfolgende Taktzyklen zu liefern, und
wobei die Steuermittel die ausgewählten Mikrocodebefehle entsprechend dem Abruf aus dem Speichermedium ausführen, um in ausgewählter Weise die Führungsmittel zum Manipulieren der Daten in den Datenregistern des Datenstapels durch Übertragen von Daten zwischen jeweiligen Datenregistern und/oder zwischen jeweiligen Datenregistern und dem Signalbus entsprechend der Bestimmung durch die ausgewählten Mikrocodebefehle innerhalb einer vorbestimmten Anzahl von Zyklen des Systemtaktgebers zu regeln.
4. Signalprozessor nach Anspruch 3, ferner dadurch gekennzeichnet, daß die Steuermittel enthalten:
mehrere Ausgangsdatenbusse (46, 48),
Ausgangsanschlußmittel (106 - Fig. 3; 248 - Fig. 7) zum Verbinden des Ausgangs ausgewählter Datenregister mit ausgewählten Ausgangsdatenbussen,
mehrere Eingangsdatenbusse (36, 50),
Eingangsanschlußmittel (102 - Fig. 3; 242 - Fig. 7) zum Verbinden ausgewählter Eingangsdatenbusse mit den Eingängen ausgewählter Datenregister,
erste Schaltmittel (40) zum selektiven Verbinden von wenigstens einem der Ausgangsdatenbusse mit dem Signalbus,
zweite Schaltmittel (52) zum selektiven Verbinden von wenigstens einem der Eingangsdatenbusse mit dem Signalbus,
dritte Schaltmittel (38) zum selektiven Verbinden von wenigstens einem der Eingangsdatenbusse mit wenigstens einem der Ausgangsdatenbusse zur Ermöglichung einer Datenübertragung zwischen diesen, und
wobei die Eingangs- und Ausgangsanschlußmittel sowie die ersten, zweiten und dritten Schaltmittel so betätigbar sind, daß Daten entsprechend den aus dem Speichermedium, in dem jeweilige Mikrocodebefehle gespeichert sind, abgerufenen Mikrocodebefehlen übertragen werden.
5. Signalprozessor nach Anspruch 4, ferner dadurch gekennzeichnet, daß das Rechenwerk mit ersten und zweiten Eingängen versehen ist, damit eine selektive Verbindung mit getrennten Ausgangsdatenbussen hergestellt werden kann, um mit den Ausgängen ausgewählter Datenregister zu kommunizieren, wobei das Rechenwerk arithmetische und logische Operationen an den Daten durchführt, die von den Ausgängen der ausgewählten Datenregister an die ersten und zweiten Eingänge des Rechenwerks geliefert werden.
6. Signalprozessor nach einem der Ansprüche 3 bis 5, ferner gekennzeichnet durch einen nach dem Last-in-first-out-Prinzip arbeitenden Rücklaufstapel (20 - Fig. 1, 2, 7) aus Datenregistern und
Rücklaufstapel-Schnittstellenmittel (94, 98) zum selektiven Verbinden des Rücklaufstapels mit dem Signalbus in der Weise, daß in den Datenregistern des Datenstapels gespeicherte Daten in selektiver Weise in den Datenregistern des Rücklaufstapels für einen späteren Abruf aus diesem Stapel gespeichert werden können, wobei die Rücklaufstapel-Schnittstellenmittel von den Steuermitteln gesteuert werden.
7. Signalprozessor nach einem der Ansprüche 3 bis 6, ferner gekennzeichnet durch ein Stapelzeigermittel (110 - Fig. 3), das den mehreren Datenregistern in dem Datenstapel wirkungsmäßig zugeordnet ist, um den höchsten Rang eines Ausgewählten dieser Datenregister bezüglich den übrigen der mehreren Datenregister zu bestimmen, so daß die relative Position der Daten in den Datenregistern bestimmt werden kann.
8. Signalprozessor nach Anspruch 7, ferner dadurch gekennzeichnet, daß das Stapelzeigermittel einen Aufwärts/Abwärts- Zähler enthält, der von den Steuermitteln gesteuert wird, um dasjenige Datenregister zu bestimmen, das den höchsten Rang hat.
9. Signalprozessor nach einem der vorhergehenden Ansprüche, ferner gekennzeichnet durch Mittel (30 - Fig. 1; 80 - Fig. 2, 7) zum Speichern der Adressen von Mikrocodebefehlen in vorbestimmten Gruppen, wobei die Adressen den vorbestimmten Stellen der Mikrocodebefehle entsprechend ihrer Speicherung in dem Speichermedium entsprechen, und
Mittel (28 - Fig. 1; 90, 92 - Fig. 2, 7), die den Mitteln zum Speichern der Adressen wirkungsmäßig zugeordnet ist, um einen Zugriff auf eine ausgewählte Gruppe der Adressen von Mikrocodebefehlen auszuüben und die Adressen der Mikrocodebefehle in der ausgewählten Gruppe nacheinander den Adressierungsmit teln zuzuführen.
10. Signalprozessor nach einem der Ansprüche 3 bis 8, ferner dadurch gekennzeichnet, daß der Datenstapel, der die mehreren Datenregister enthält, eine primäre Last-in-first-out-Datenregisterdatei aufweist, und durch
eine sekundäre Last-in-first-out-Datenregisterdatei (240 - Fig. 7) mit mehreren sekundären Datenregistern zum Speichern von Daten, wobei alle Register der sekundären Datenregisterdatei gleichzeitig adressierbar sind, damit gleichzeitig Daten in mehr als ein Register der sekundären Datenregisterdatei eingegeben und gleichzeitig Daten aus mehr als einem Register der sekundären Datenregisterdatei ausgegeben werden,
Mittel zum periodischen Unterbrechen der Operationen des Auswählens und Übertragens von in den Datenregistern der primären Datenregisterdatei gespeicherten Daten,
Mittel zum Auswählen von Daten aus ausgewählten Registern in der sekundären Datenregisterdatei,
wobei das Rechenwerk arithmetische oder logische Operationen an den ausgewählten Daten aus Registern in der sekundären Datenregisterdatei durchführt, und
Mittel zum Wiederaufnehmen der Operation der Mittel zum Auswählen, des Rechenwerks und der Mittel zum Übertragen bezüglich der Datenregister der primären Datenregisterdatei, so daß die sekundäre Datenregisterdatei eine unabhängige Gruppe von Daten neben den in der primären Datenregisterdatei enthaltenen Daten zur Verfügung stellt, mit denen Mikrocodebefehle auszuführen sind.
11. Signalprozessor nach Anspruch 10, ferner dadurch gekennzeichnet, daß die sekundäre Last-in-first-out-Datenregisterdatei einen Last-in-first-out-Schattendatenstapel (240 - Fig. 7) zum Speichern von Daten aufweist,
daß die mehreren Datenregister in der sekundären Datenregisterdatei mehrere Schattendatenregister umfassen, die parallel zueinander sind,
daß Schattenstapelanzeigermittel (310 - Fig. 8) vorgesehen sind, die den mehreren Schattendatenregistern wirkungsmäßig zugeordnet sind, um die höchste Priorität eines ausgewählten Schattendatenregisters in bezug auf die übrigen der mehreren Schattendatenregister für Datenverarbeitungsoperationen zu bestimmen,
daß Umschaltmittel (242, 248 - Fig. 7) vorgesehen sind, die den Führungsmitteln Wirkungsmäßig zugeordnet sind und die erste und zweite Zustände aufweisen, wobei die Umschaltmittel im ersten Zustand den Betrieb des primären Datenstapels freigeben, während der Schattendatenstapel vom Signalprozessor abgetrennt wird, und wobei die Umschaltmittel in ihrem zweiten Zustand die Führungsmittel daran hindern, die Ausgangsbusse bzw. die Eingangsbusse mit den Datenregistern im primären Datenstapel zu verbinden, während sie die Führungsmittel freigeben, um die Eingangsbusse bzw. die Ausgangsbusse selektiv mit den Schattendatenregistern in dem Schattendatenstapel zu verbinden, und
daß Zeitsteuermittel (300 - Fig. 7) vorgesehen sind, die die Umschaltmittel so aktivieren, daß sie auf periodischer Basis ihren zweiten Zustand annehmen, um den Betrieb des primären Datenstapels in Abhängigkeit von in die Steuermittel eingegebenen Mikrocodebefehlen unterbrechen und den Schattendatenstapel freigeben, damit dieser abhängig von in die Steuermittel eingegebenen Mikrocodebefehlen arbeitet, so daß der Schattendatenstapel bei der Abarbeitung eines völlig anderen Programms parallel zur Abarbeitung des bezüglich des primären Datenstapels benutzten Programms benutzt wird.
12. Signalprozessor nach Anspruch 11, ferner gekennzeichnet durch sekundäre Steuermittel (270, 278, 284, 292 - Fig. 7) zum Betätigen des Schattendatenstapels unabhängig von dem primären Datenstapel durch Steuern des Datenflusses in die Eingangs- und Ausgangsdatenbusse und das Rechenwerk in Relation zu den Eingängen und Ausgängen der Schattendatenregister,
sekundäre Adressiermittel (270 - Fig. 7), die mit dem Signalbus wirkungsmäßig verbunden sind, um einen Zugriff auf Programmbefehle aus den Programmitteln auszuüben und die Mikrocodespeichermittel in Abhängigkeit von den Programmbefehlen zur Ausgabe ausgewählter gespeicherter Mikrocodebefehle zu adressieren, und
wobei die Zeitsteuermittel (300 - Fig. 7) eine periodische Aktivierung der sekundären Steuermittel und eine periodische Deaktivierung der Steuermittel bewirken, damit Daten in den Schattendatenregistern durch die Eingangs- und Ausgangsdatenbusse und durch das Rechenwerk so manipuliert werden können, daß die Datenmanipulation in dem Schattendatenstapel parallel zur Datenmanipulation in dem primären Datenstapel erfolgen kann.
13. Signalprozessor nach einem der Ansprüche 3 bis 8 und 10 bis 12, ferner gekennzeichnet durch Programmbefehlsmittel (28, 30 - Fig. 1; 80, 86, 88, 90 - Fig. 2; 80, 286, 90 - Fig. 7) zum Aufbringen von Programmbefehlen und von Daten auf den Signalbus.
14. Signalprozessor nach Anspruch 13, ferner dadurch gekennzeichnet, daß die Programmbefehlsmittel einen kompilierenden Befehlsprozessor umfassen, der folgendes enthält:
Speichermittel (30 - Fig. 1; 80 - Fig. 2, 7) zum Speichern mehrerer Listen, wobei jede Liste mehrere Programmbefehle für die Mikroprogrammspeichermittel enthält und wobei die Speichermittel wirkungsmäßig mit dem Signallbus verbunden sind,
Mittel (24 - Fig. 1; 60, 62 - Fig. 2, 7) zum Adressieren der Speichermittel am Anfang einer ausgewählten Liste dieser Listen, und
Mittel (28 - Fig. 1; 68 - Fig. 2, 7) zum sequentiellen Anlegen jedes Programmbefehls der ausgewählten Liste dieser Listen an den Signalbus, so daß die Steuermittel auf die Programmbefehle zugreifen können, wobei der nächstfolgende Befehl während der Ausführung des vorangehenden Befehls durch die Steuermittel an den Signalbus angelegt wird.
15. Signalprozessor nach Anspruch 14, ferner dadurch gekennzeichnet, daß das Speichermedium einen Erstniveauspeicher (24 - Fig. 1; 60 - Fig. 2, 7) zum Speichern von Mikrocodebefehlen in Form von Adressen an vorbestimmten Adressenstellen festlegt, wobei die in dem Erstniveauspeicher gespeicherten Mikrocodebefehle die Eingangs- und Ausgangsdatenbusse sowie das Rechenwerk mittels der Steuermittel steuern können,
daß die Adressierungsmittel zum Adressieren des Speichermediums abhängig von Programmbefehlen zum Ausgeben ausgewählter Befehle der gespeicherten Mikrocodebefehle aus dem Speichermedium ein Befehlsregister (58 - Fig. 2, 7) enthalten, das an den Signalbus angeschlossen ist, um eine codierte Adresse als Programmbefehle von dem Signalbus zu empfangen, und einen Adressendecodierer (62 - Fig. 2, 7) enthalten, der zwischen das Befehlsregister und das Speichermedium eingefügt ist und eine von dem Befehlsregister ausgegebene codierte Adresse für die Eingabe in das Speichermedium als eine decodierte Adresse empfangen kann,
daß am Ausgang des Speichermediums ein Steuerhalteschalter (68 - Fig. 2, 7) angeordnet ist, der den adressierten Mikrocodebefehl als Ausgangsgröße aus dem Speichermedium in einem Haltezustand empfängt,
daß ein Adreßbus (12) vorgesehen ist,
daß das Speichermittel einen Zweitniveauspeicher (30 - Fig. 1; 80 - Fig. 2, 7) zum Speichern mehrerer Listen aus Mikrocodeadressen an ausgewählten Stellen festlegt, wobei jede Liste eine Folge von Mikrocodeadressen enthält,
daß das Mittel zum Adressieren der Speichermittel einen Zugriff auf eine ausgewählte Liste mit Mikrocodeadressen in Abhängigkeit von Programmbefehlen durchführt, die an den Signalbus angelegt sind, damit die Mikrocodeadressen der zugegriffenen ausgewählten Liste aufeinanderfolgend an dem Signalbus angelegt werden, wobei die Mittel zum Adressieren der Speichermittel einen Befehlszeiger (86 - Fig. 2; 90 - Fig. 7) enthalten, der an den Signalbus und an den Adressenbus angeschlossen ist und zwischen diese eingefügt ist, wobei der Befehlsanzeiger ein Datenregister zum Hindurchtakten einer Adresse vom Signalbus zum Adressenbus für die Eingabe in die Speichermittel umfaßt,
daß die Mikrocodeadressen der zugegriffenen ausgewählten Liste aus den Speichermitteln an den Signalbus in Abhängigkeit von der Ausgabe eines vorbestimmten funktionellen Mikrocodebefehls durch den Steuerhalteschalter als Ausgangsgröße aus dem Speichermedium angelegt wird, und
daß die Steuermittel den die Liste auswählenden Adressierungsmitteln wirkungsmäßig so zugeordnet sind, daß die Mikrocodeadressen in der Ausgewählten dieser Listen sequentiell an das Speichermedium angelegt wird, damit ausgewählte gespeicherte Mikrocodebefehle entsprechend den in der ausgewählten Liste enthaltenen Mikrocodeadressen ausgegeben werden, so daß der an jeder Mikrocodeadressenstelle in dem Speichermedium befindliche Mikrocodebefehl die Steuermittel veranlaßt, die Daten innerhalb des Datenstapels zu bearbeiten.
16. Signalprozessor nach Anspruch 15, ferner gekennzeichnet durch einen Decodierer (92 - Fig. 2, 7), der mit dem Signalbus und dem Befehlsanzeiger wirkungsmäßig verbunden ist, um zu bestimmen, ob die Adresse am Signalbus entweder einem Elementarbefehl oder einem höherrangigeren Befehl zum Fortschalten des Befehlsanzeigers beim Feststellen eines Elementarbefehls und zum Laden des Befehlsanzeigers mit der Adresse am Signalbus zum Durchtakten zu den Speichermitteln beim Feststellen eines höherrangigen Befehls entspricht.
17. Signalprozessor nach Anspruch 16, ferner gekennzeichnet durch ein Fortschaltregister (94 - Fig. 2, 7), das an den Signalbus und an den Rücklaufstapel angeschlossen und zwischen diese eingefügt ist, eine Steuerleitung (96 - Fig. 2, 7), die das Fortschaltregister mit dem Decodierer (92 - Fig. 2, 7) verbindet,
wobei das Fortschaltregister über den Decodierer durch die Ausgabe eines vorbestimmten Steuermikrocodebefehls aus dem Steuerhalteschalter gesteuert wird und als Fortschalthalteschalter betätigbar ist, in welchem das Fortschaltregister um eins fortgeschaltet wird und Daten vom Signalbus durch den Rücklaufstapel abhängig davon getaktet werden, daß der Decodierer die Adresse am Signalbus als diejenige feststellt, die in einem Hauptprogramm und nicht in einer Liste aus Mikrocodeadressen enthalten ist, und
wobei der Rücklaufstapel so betätigbar ist, daß die fortgeschaltete Adresse als nächstfolgende Adresse für das Hauptprogramm nach Ausführung der ausgewählten Liste von Mikrocodeadressen übertragen wird.
18. Signalprozessor nach einem der Ansprüche 14 bis 17 in Abhängigkeit von Anspruch 12, ferner dadurch gekennzeichnet, daß die sekundären Adressiermittel (270 - Fig. 7) ein sekundäres Befehlsregister (270 - Fig. 7) enthalten, das für den Empfang einer codierten Adresse als Programmbefehle vom Signalbus für die Eingabe in den Adressendecodierer (62) an den Signalbus angeschlossen ist, und
daß zweite Mittel vorgesehen sind zum Adressieren der Speichermittel für einen Zugriff auf eine ausgewählte Liste mit Mikrocodeadressen in Abhängigkeit von Programmbefehlen, die an den Signalbus angelegt sind, damit die Mikrocodeadressen der zugegriffenen ausgewählten Liste in Aufeinanderfolge an den Signalbus angelegt werden, wobei die zweiten Mittel zum Adressieren der Speichermittel einen sekundären Befehlsanzeiger (684 - Fig. 7) enthalten, der an den Signalbus und an den Adressenbus angeschlossen und zwischen diese eingefügt ist, wobei der sekundäre Befehlsanzelger ein sekundäres Datenregister zum Durchtakten einer Adresse vom Signalbus zum Adressenbus für die Eingabe in die Speichermittel aufweist.
19. Verfahren zum Verarbeiten von Daten, enthaltend:
Speichern von Daten in mehreren Datenregistern, die in einem Datenstapel (18 - Fig. 1; 44 - Fig. 2, 3, 7) angeordnet sind,
Speichern von Mikrocodebefehlen an einer vorbestimmten Stelle in einem Speichermedium (24 - Fig. 1; 60 - Fig. 2, 7),
Adressieren einer ausgewählten Stelle in dem Speichermedium zum Abrufen eines ausgewählten Mikrocodebefehls (62),
Auswählen von Daten aus ausgewählten Datenregistern in dem Datenstapel in Abhängigkeit von dem ausgewählten Mikrocodebefehl (102, 106 - Fig. 3),
Durchführen arithmetischer oder logischer Operationen (16) an den ausgewählten Daten entsprechend dem Mikrocodebefehl und
Übertragen des Ergebnisses der arithmetischen oder logischen Operationen zu einer externen Speicherstelle oder zurück in ein ausgewähltes Datenregister des Datenstapels, gekennzeichnet durch die Durchführung der Schritte des gleichzeitigen Adressierens ausgewählter Datenregister aus den mehreren Datenregistern in dem Stapel zur gleichzeitigen Eingabe von Daten in mehr als ein Datenregister und zur gleichzeitigen Ausgabe von Daten als mehr als einem Datenregister, und des Auswählens von Daten und des gleichzeitigen Durchführens arithmetischer oder logischer Operationen an ausgewählten Daten, wobei die arithmetischen oder logischen Operationen an zuvor ausgewählten Daten durchgeführt werden.
20. Verfahren zum Verarbeiten von Daten nach Anspruch 19, ferner gekennzeichnet durch Anordnen mehrerer Datenregister in einem Datenstapel in fallender Prioritätsfolge vom oberen zum unteren Ende des Stapels zur Bildung einer Last-in-first- out-Konfiguration für diesen Stapel.
21. Verfahren zum Verarbeiten von Daten nach Anspruch 20, ferner dadurch gekennzeichnet, daß der Datenstapel, in dem Daten in mehreren Datenregistern gespeichert sind, eine primäre Datenregisterdatei ist, und durch
Speichern von Daten in einer sekundären Last-in-first-out- Datenregisterdatei mit mehreren sekundären Datenregistern, die gleichzeitig adressierbar sind, um gleichzeitig Daten in mehr als eines der sekundären Datenregister einzugeben und gleichzeitig Daten aus mehr als einem sekundären Datenregister auszugeben,
periodisches Unterbrechen der Operationen des Auswählens und Übertragens von Daten, die in den Datenregistern der primären Datenregisterdatei (40, 57, 242, 248 - Fig. 7) gespeichert sind,
Auswählen von Daten aus einem ausgewählten Register in der sekundären Datenregisterdatei,
Durchführen arithmetischer oder logischer Operationen an ausgewählten Daten aus dem ausgewählten Register in der sekundären Datenregisterdatei,
Übertragen der Ergebnisse der arithmetischen oder logischen Operationen an ausgewählten Daten aus dem ausgewählten Register in der sekundären Datenregisterdatei zu der externen Speicherstelle oder zurück zu ausgewählten Datenregistern in der sekundären Datenregisterdatei,
wobei die Schritte des Auswählens von Daten und des Durchführens arithmetischer oder logischer Operationen an den ausgewählten Daten bezüglich der sekundären Datenregisterdatei gleichzeitig stattfinden und die arithmetischen oder logischen Operationen an zuvor ausgewählten Daten durchgeführt werden, und
Wiederaufnehmen der Schritte des Auswählens, des Durchführens und Übertragens bezüglich der Datenregister der primären Datenregisterdatei in der Weise, daß die sekundäre Datenregisterdatei eine unabhängige Gruppe von Daten neben den Daten liefert, die in der primären Datenregisterdatei enthalten sind, an denen Mikrocodebefehle ausführbar sind.
22. Verfahren zum Verarbeiten von Daten nach einem der Ansprüche 19 bis 21, ferner gekennzeichnet durch Speichern der Adressen der Mikrocodebefehle in vorbestimmten Gruppen (30 - Fig. 1; 80 - Fig. 2, 7) und
Zugreifen auf eine ausgewählte Gruppe und sequentielles Liefern der Adressen der Mikrocodebefehle aus dem Schritt der Adressierung (28 - Fig. 1; 86, 90, 92 - Fig. 2, 7).
23. Verfahren zum Verarbeiten von Daten nach Anspruch 22, dadurch gekennzeichnet, daß die Adressen der Mikrocodebefehle in ihrer Anordnung in mehreren vorbestimmten Gruppen in einem zweiten Speichermedium gespeichert werden, wobei jede Gruppe eine vorbestimmte Anordnung von Mikrocodeadressen aufweist,
daß die jeweiligen Mikrocodeadressen der ausgewählten Gruppe von Mikrocodeadressen, auf die zugegriffen worden ist, in sequentieller Weise an einen Signalbus angelegt werden,
daß der an der an den Signalbus angelegten Adresse befindliche Mikrocodebefehl ausgeführt wird, indem
die Mikrocodeadresse von dem Signalbus abgerufen wird,
der Mikrocodebefehl an der abgerufenen Adresse adressiert wird,
ein Zugriff auf Daten aus ausgewählten Datenregistern in dem Datenstapel entsprechend dem adressierten Mikrocodebefehl ausgeführt wird,
an den ausgewählten Daten entsprechend dem adressierten Mikrocodebefehl arithmetische oder logische Operationen ausgeführt werden, und
das Ergebnis der arithmetischen oder logischen Operationen entweder zum Signalbus zur Abspeicherung in einem Speichermedium oder zurück zu einem ausgewählten Datenregister in dem Datenstapel entsprechend dem adressierten Mikrocodebefehl übertragen wird,
wobei die Schritte des Adressierens, des Zugreifens und des Durchführens arithmetischer oder logischer Operationen an ausgewählten Daten gleichzeitig, jedoch bezüglich anderer ausgewählter Daten in einer Datenauswahlfolge, geschehen und
daß die nächstfolgende Adresse in der ausgewählten Gruppe von Mikrocodeadressen gleichzeitig mit der Ausführung des Mikrocodebefehls entsprechend den laufenden ausgewählten Daten, an denen arithmetische oder logische Operationen ausgeführt werden, an den Signalbus angelegt werden.
DE8585301420T 1984-03-02 1985-03-01 Datenprozessor fuer interpretierende und kompilierte sprache. Expired - Fee Related DE3586603T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/585,478 US5179734A (en) 1984-03-02 1984-03-02 Threaded interpretive data processor

Publications (2)

Publication Number Publication Date
DE3586603D1 DE3586603D1 (de) 1992-10-15
DE3586603T2 true DE3586603T2 (de) 1993-01-28

Family

ID=24341626

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8585301420T Expired - Fee Related DE3586603T2 (de) 1984-03-02 1985-03-01 Datenprozessor fuer interpretierende und kompilierte sprache.

Country Status (4)

Country Link
US (1) US5179734A (de)
EP (1) EP0154529B1 (de)
JP (1) JP2571757B2 (de)
DE (1) DE3586603T2 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4868745A (en) * 1986-05-30 1989-09-19 Hewlett-Packard Company Data processing system and method for the direct and indirect execution of uniformly structured object types
JPS6412339A (en) * 1987-07-06 1989-01-17 Oki Electric Ind Co Ltd Forth machine
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
JP2882495B2 (ja) * 1991-02-08 1999-04-12 三菱電機株式会社 通信機
FR2678402A1 (fr) * 1991-06-28 1992-12-31 Philips Electronique Lab Dispositif de traitement d'informations.
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
JP3226055B2 (ja) * 1992-09-16 2001-11-05 松下電器産業株式会社 情報処理装置
US6487626B2 (en) * 1992-09-29 2002-11-26 Intel Corporaiton Method and apparatus of bus interface for a processor
JPH06168116A (ja) * 1992-11-30 1994-06-14 Mitsubishi Electric Corp マイクロコンピュータ
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US6704923B1 (en) 1994-12-20 2004-03-09 Sun Microsystems, Inc. System and method for pre-verification of stack usage in bytecode program loops
AU4469896A (en) * 1994-12-23 1996-07-19 Southwestern Bell Technology Resources, Inc. Flexible network platform and call processing system
US5774726A (en) * 1995-04-24 1998-06-30 Sun Microsystems, Inc. System for controlled generation of assembly language instructions using assembly language data types including instruction types in a computer language as input to compiler
US5734927A (en) * 1995-06-08 1998-03-31 Texas Instruments Incorporated System having registers for receiving data, registers for transmitting data, both at a different clock rate, and control circuitry for shifting the different clock rates
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US6535903B2 (en) * 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
ATE244417T1 (de) * 1996-11-13 2003-07-15 Paran Arik Echtzeitprogramm-sprachbeschleuniger
AU1292799A (en) * 1997-11-03 1999-05-24 Teragen Corporation Direct cache accessing primary operations hierarchically organized to snippets and threads implemented in isa processor
US6216218B1 (en) 1997-11-03 2001-04-10 Donald L. Sollars Processor having a datapath and control logic constituted with basis execution blocks
US6016539A (en) * 1997-11-03 2000-01-18 Teragen Corporation Datapath control logic for processors having instruction set architectures implemented with hierarchically organized primitive operations
JP2002532775A (ja) * 1998-12-08 2002-10-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ インタープリタプログラム実行方法
US7120572B1 (en) 2000-01-06 2006-10-10 Sun Microsystems, Inc. Memory efficient program pre-execution verifier and method
DE10131084A1 (de) * 2001-06-27 2003-01-09 Klaus Schleisiek Vorrichtung zur Datenverarbeitung
US7506322B2 (en) * 2001-12-13 2009-03-17 Synopsys, Inc. System and method of utilizing a hardware component to execute an interpretive language
JP3719509B2 (ja) * 2002-04-01 2005-11-24 株式会社ソニー・コンピュータエンタテインメント シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法
US7185331B2 (en) * 2002-08-27 2007-02-27 Inrange Technologies Corporation Method and apparatus for downloading executable code in a non-disruptive manner
GB2430052A (en) * 2005-09-07 2007-03-14 Tandberg Television Asa CPU with a buffer memory directly available to an arithmetic logic unit
US7962731B2 (en) * 2005-10-20 2011-06-14 Qualcomm Incorporated Backing store buffer for the register save engine of a stacked register file
KR20090019806A (ko) * 2006-05-26 2009-02-25 브이엔에스 포트폴리오 엘엘씨 컴퓨터의 순환 레지스터 어레이

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3675218A (en) * 1970-01-15 1972-07-04 Ibm Independent read-write monolithic memory array
US3881172A (en) * 1971-12-01 1975-04-29 Struthers Dunn Process control computer
US3889243A (en) * 1973-10-18 1975-06-10 Ibm Stack mechanism for a data processor
US3938103A (en) * 1974-03-20 1976-02-10 Welin Andrew M Inherently micro programmable high level language processor
US4001788A (en) * 1975-03-26 1977-01-04 Honeywell Information Systems, Inc. Pathfinder microprogram control system
US4193197A (en) * 1976-07-06 1980-03-18 Aquasonic Products Corp. Fluid supply unit and systems for dental and medical instruments
JPS5833572B2 (ja) * 1977-10-21 1983-07-20 株式会社東芝 情報処理方式
US4245302A (en) * 1978-10-10 1981-01-13 Magnuson Computer Systems, Inc. Computer and method for executing target instructions
JPS5569855A (en) * 1978-11-20 1980-05-26 Panafacom Ltd Data processing system
US4323963A (en) * 1979-07-13 1982-04-06 Rca Corporation Hardware interpretive mode microprocessor
JPS56157541A (en) * 1980-05-06 1981-12-04 Kinki Keisokki Kk Pseudo and multi central processor
US4384324A (en) * 1980-05-06 1983-05-17 Burroughs Corporation Microprogrammed digital data processing system employing tasking at a microinstruction level
JPS575153A (en) * 1980-06-10 1982-01-11 Nippon Telegr & Teleph Corp <Ntt> Information processor
BG33404A1 (en) * 1980-07-22 1983-02-15 Kasabov Registrating arithmetic device
US4375678A (en) * 1980-08-25 1983-03-01 Sperry Corporation Redundant memory arrangement providing simultaneous access
US4402042A (en) * 1980-11-24 1983-08-30 Texas Instruments Incorporated Microprocessor system with instruction pre-fetch
US4405983A (en) * 1980-12-17 1983-09-20 Bell Telephone Laboratories, Incorporated Auxiliary memory for microprocessor stack overflow
US4430708A (en) * 1981-05-22 1984-02-07 Burroughs Corporation Digital computer for executing instructions in three time-multiplexed portions
JPS57197653A (en) * 1981-05-29 1982-12-03 Mitsubishi Electric Corp Control device of microprogram
US4491937A (en) * 1982-02-25 1985-01-01 Trw Inc. Multiport register file
US4737933A (en) * 1983-02-22 1988-04-12 Storage Technology Partners CMOS multiport general purpose register
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4611278A (en) * 1983-04-01 1986-09-09 Honeywell Information Systems Inc. Wraparound buffer for repetitive decimal numeric operations
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system

Also Published As

Publication number Publication date
DE3586603D1 (de) 1992-10-15
EP0154529A2 (de) 1985-09-11
EP0154529B1 (de) 1992-09-09
EP0154529A3 (en) 1988-03-16
JPS60217438A (ja) 1985-10-31
JP2571757B2 (ja) 1997-01-16
US5179734A (en) 1993-01-12

Similar Documents

Publication Publication Date Title
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE2716369C2 (de)
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE69130723T2 (de) Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
DE2819571C2 (de)
DE2230102C2 (de) Mikroprogrammierter Prozessor mit bitparalleler Datenübertragung
DE3685913T2 (de) Vektorenverarbeitung.
DE3424962C2 (de)
DE3638572C2 (de)
DE3650602T2 (de) Datenverarbeitungssystem
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE2714805A1 (de) Datenverarbeitungssystem
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE2322674A1 (de) Mikroprogramm-steuereinrichtung
DE1815078B2 (de) Elektronisches Datenverarbeitungssystem
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
CH650600A5 (de) Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister.
DE4216905C2 (de) Superskalarprozessor
DE2835095A1 (de) Gekoppeltes, mikroprogrammiertes prozessorsystem
DE69327504T2 (de) Datenprozessor mit Operationseinheiten, die gemeinsam Gruppen von Registerspeichern benutzen
DE2556617C2 (de) Schiebe- und Rotierschaltung
DE2533737A1 (de) Datenprozessor
DE69130233T2 (de) Verfahren und gerät um ein sperrungscache einzusetzen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee