DE3587591T2 - Mikroprozessor für Forth-ähnliche Sprache. - Google Patents

Mikroprozessor für Forth-ähnliche Sprache.

Info

Publication number
DE3587591T2
DE3587591T2 DE85114795T DE3587591T DE3587591T2 DE 3587591 T2 DE3587591 T2 DE 3587591T2 DE 85114795 T DE85114795 T DE 85114795T DE 3587591 T DE3587591 T DE 3587591T DE 3587591 T2 DE3587591 T2 DE 3587591T2
Authority
DE
Germany
Prior art keywords
register
input
coupled
instruction
data
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
DE85114795T
Other languages
English (en)
Other versions
DE3587591D1 (de
Inventor
Charles H Moore
Robert W Murphy
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.)
Harris Corp
Original Assignee
Harris Corp
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 Harris Corp filed Critical Harris Corp
Application granted granted Critical
Publication of DE3587591D1 publication Critical patent/DE3587591D1/de
Publication of DE3587591T2 publication Critical patent/DE3587591T2/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/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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30101Special purpose 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Generation (AREA)
  • Microcomputers (AREA)
  • Devices For Executing Special Programs (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • Diese Erfindung bezieht sich auf einen Mikroprozessor und insbesondere auf eine Mikroprozessorarchitektur, die entworfen ist, um auf asynchrone Weise Assembleranweisungen auszuführen, eine Anweisung pro Taktzyklus. Die Mikroprozessorarchitektur und die Assembleranweisungen sind auf spezifische Weise entworfen, um die Benutzung der als FORTH bekannten Sprache zu vereinfachen.
  • Insbesondere bezieht sich die vorliegende Erfindung auf einen Prozessor nach dem Oberbegriff des Anspruchs 1. Ein Prozessor und ein Mikroprozessor dieser Art sind aus der Schrift Wada et al "System and Design and Hardware Structure of a FORTH Machine System", Systems - Computers - Controls, Bd. 13, No. 2 (1982), Seiten 11-18, Silver Spring, Maryland, USA, bekannt.
  • ZUSAMMENFASSUNG DER BEKANNTEN TECHNIK
  • Die Computerarchitektur, einschließlich integrierter Schaltkreis-Mikroprozessoren, ist bis jetzt mit wenig Bezug auf die programmierenden Sprachen, die abschließend benutzt werden, um sie zu betätigen und zu steuern, entworfen worden. Im Gegensatz waren es vorhergehende Mikroprozessor- Entwurfsziele, die Architektur des Mikroprozessors dazu fähig zu machen, praktisch jede Art von Programmiersprache laufen zu lassen.
  • Der Übergang zwischen dem, was als eine Hochniveau-Programmiersprache bezeichnet werden kann, wie COBOL, BASIC, PASCAL, und FORTH, um einige zu nennen, und dem Maschinencode (den "Einsen" und "Nullen", welche tatsächlich an den Mikroprozessor angelegt werden), ist oft die Assembler-Sprache. Die Programme) die in der Assembler-Sprache geschrieben sind, haben den Vorteil, oft sehr schnell, effizient und kompakt zu sein (d. h., die Anzahl der Maschinensprachenanweisungen, die benützt werden, um eine spezifische Operation auszuführen, ist viel kleiner als andere Arten der Programmierung). Jedoch ist die Programmierung in der Assembler-Sprache eine langwierige, anstrengende, anspruchsvolle und unangenehme Aufgabe - selbst für die Fachleute in dieser Sprache. Der Programmierer muß oft genaue Kenntnis der Architektur des Gerätes, das programmiert wird, haben - sei es ein Computer oder ein Mikroprozessor.
  • Weiter ist, wie vorher angedeutet, die Architektur vorhergehender Mikroprozessoren mit einem Auge auf die Durchführung so vieler verschiedener Aufgaben oder Operationen wie möglich entwickelt worden; d. h. es ist oft ein Entwurfsziel, den Mikroprozessor so "Vielzweck" wie möglich zu machen. Dieses Entwurfsziel wird üblicherweise implementiert, indem in dem Entwurf eine Vielfalt von Registern, Halteglieder und anderen Speicherelementen eingegliedert werden, deren Inhalt oft verwendet wird, um gegenwärtige oder nachfolgende Mikroprozessoroperationen zu bezeichnen, anzuweisen oder zu verursachen.
  • Eine derartige Entwurfs-Annäherung neigt dazu, den synchronen Betrieb zu erzwingen, was multiple (getaktete) Schritte pro Befehls-Ausführung und irgendeine Form von internem Mikrocode erfordert. Wenn der Mikrocodeentwurf einmal zu der Mikroprozessor-Architektur festgehalten ist, kann er üblicherweise nicht ohne ein großes Maß an Schwierigkeit geändert werden. Zusätzlich legt diese Komplexizität des Entwurfs dem Programmierer eine Bürde auf: Die Assembler-Sprachenprogrammierung, die durch den Entwurf erzwungen wird, erfordert nun, zusätzlich zu der Kenntnis der Architektur selbst, ein durchgehendes Bewußtsein über die Inhalte derartiger Register usw., wenn bestimmte Anweisungen ausgeführt werden sollen. Dies, zusätzlich dazu, was bestimmte Register, Halteglieder usw. enthalten, bevor andere Anweisungen ausgeführt werden sollen, um die gewünschten Resultate zu erhalten.
  • Darüber hinaus kann die Assembler-Sprache, die mit derartigen integrierten Mikroprozessoren verwendet wird, extrem willkürlich sein und als solche stellt sie keine relativ einfach zu erlernende logische Verbindung zur Verfügung, wie Programmiersprachen höheren Niveaus Programmierern dies üblicherweise zur Verfügung stellen. Weiter sind, wo Fehler in einem Assembler-Sprachenprogramm vorhanden sind, sie extrem schwierig aufzufinden und zu korrigieren. Die Schwierigkeit rührt von dem Mangel jedweder logischen Beziehung der Assembler-Sprache zu irgendeiner Computersprache her. Die logischen Verbindungen zwischen aufeinanderfolgenden Assembler-Sprachenschritten sind nicht offensichtlich.
  • Die FORTH-Implementierungen auf den meisten Computern haben eine zusätzliche Schwierigkeit. Der Speicher der Computer muß in drei diskreten Abschnitten verwendet werden. Diese diskreten Abschnitte sind zumindest der Rückkehrstapel, der Parameterstapel und der Hauptspeicher. Während Anstrengungen unternommen werden, um die spezifischen Speicherbereiche einzuschränken, ist es in der FORTH-Sprache üblich, Schleifen und andere Überläufe für jeden der drei diskreten Abschnitte zu verursachen. Der Überlauf von jedem einzelnen Abschnitt schreibt üblicherweise über die verbleibenden Abschnitte des Computerspeichers. Derartiges Überschreiben veranlaßt den Speicher, ausgelöscht zu werden, und die Gesamtheit des Computers, abzustürzen. Das letztere Phänomen veranlaßt die Information im Computer, weitgehend unnütz zu sein und erfordert üblicherweise das Neuladen des ganzen Betriebssystems. Weiter ist es nur mit Schwierigkeit, daß die Ursachen derartiger "Abstürze" präzise lokalisiert werden können. Der Überlauf zum Hauptspeicher löscht den Programmierfehler, welcher den Überlauf an erster Stelle verursacht hat, üblicherweise aus oder macht ihn unzugänglich.
  • Eine zur Hochgeschwindigkeitsverarbeitung eines durch die FORTH-Sprache beschriebenen Programmes fähige FORTH-Maschine ist in dem Artikel von Wada et al offenbart, der "System Design and Hardware Structure of a FORTH Machine System", Systems-Computers-Controls, Bd. 13, Nr. 2 (1982) betitelt ist. Der in Wada et al offenbarte Entwurf hat zwei getrennte Stapel-Speichereinheiten, um einen Parameterstapel (auch ein Daten-Stapel genannt) zu implementieren, und so Zugang zu den zwei obersten Stapelelementen zu schaffen (siehe Fig. 4). Dies erfordert, zwei Zeiger, adressierende Multiplexer, einen Oberteil-des-Stapels-Anzeiger und Multiplexer zu den Oberteil-des-Stapels-Registern zu verwenden, um auszuwählen, welches Register aus welchem Speicher und welcher Stapelzeiger zu laden ist. So schafft diese Schrift den irgendwie ineffizienten Zugang zu den zwei Stapelelementen.
  • Ein Mechanismus, der einen effizienten Austausch von Information zwischen einer adressierbaren lokalen Ablage und einem Hardwareregister der Akkumulatorart ist durch Metz und Tung in "Operand Interchange Mechanism", IBM Technical Disclosure Bulletin, Vol. 17, Nr. 1, Juni 1974, Seiten 80-81 offenbart.
  • Eine relativ schnelle, aber einfache Computer-Architektur, in welcher die Maschinensprache eng auf die Hochniveau-Sprache von FORTH bezogen ist, ist durch Vaughan und Smith offenbart, in einem "The Design of A FORTH Computer", Journal of FORTH Application and Research, Band 2, Nr. 1, 1984, Seiten 49-64 betitelten Artikel.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Demgemäß ist ein Hauptziel der vorliegenden Erfindung, eine Mikroprozessor-Architektur zu offenbaren, die spezifisch entworfen und konstruiert ist, um in Abhängigkeit von einer Assembler-Sprache zu wirken, die im wesentlichen identisch mit der FORTH-Programmiersprache von höherem Niveau ist.
  • Um diesem Ziel zu genügen, schafft die vorliegende Erfindung einen Prozessor der anfänglich benannten Art mit den kennzeichnenden Merkmalen des Anspruchs 1.
  • Im allgemeinen ist die Mikroprozessor-Architektur der vorliegenden Erfindung mit mindestens drei getrennten, unabhängigen Eingangs/Ausgangs-Toren vorgesehen, um Datenwörter zwischen dem Mikroprozessor und externen Datenelementen zu übertragen, von denen einer ein Speicherelement sein kann, um Anweisungsworte genauso wie Daten abzulegen. Ein erstes der drei Eingangs/Ausgangs-Tore ist dazu angeordnet, daß es verschaltet wird, um Anweisungen zu empfangen. Die anderen zwei Eingangs/Ausgangs-Tore sind miteinander durch einen Zweiweg-Datenpfad verkoppelt, der eine arithmetische Logikeinheit (ALE) umfaßt, um eine Vielzahl arithmetischer und logischer Operationen an Daten auszuführen, die dort durchtreten. Der Zweiweg-Datenpfad ermöglicht einem der Eingangs/Ausgangstore, unverarbeitete Daten synchron mit dem Eingang von Anweisungen (die an dem ersten Tor empfangen werden) zu empfangen und diese Daten durch die ALE durchtreten zu lassen, um sie als verarbeitete Daten an dem anderen Eingangs/Ausgangs-Tor, das an die ALE gekoppelt ist, zu präsentieren.
  • In dem bevorzugten Ausführungsbeispiel der Erfindung koppelt ein Paar von Datenregistern, die jedes jeweils einen der Eingangs/Ausgangstore an die ALE in einer Weise koppeln, die die zuvor genannte Zweiwegkommunikation herbeiführt, und jeden der Eingangs/Ausgangstore, an ein unabhängiges, externes Speicherelement, was ein Paar von Zuletzt-rein, Zuerst-raus (LIFO= Last-in, First out)-Datenstapeln bildet, um eine Anzahl von sequentiell geordneten Datenworten abzulegen. Ein Programmzähler erzeugt die Adressinformation, die an einen dritten (Haupt-) Speicher geliefert wird, in welchem die Mikroprozessoranweisungen und die Daten abgelegt sind; ein Adreßmultiplexer teilt auf selektive Weise den Inhalt des Programmzählers oder den Inhalt von bestimmten internen Registern des Mikroprozessors an einen Adreßbus mit, der den Adreßbus und den Hauptspeicher verbindet. Eine Anweisungs-Decodiereinheit empfängt und dekodiert Anweisungen, die aus dem Hauptspeicher zugegriffen werden, um daraus die notwendigen Steuersignale zur Verfügung zu stellen, die über eine Vielzahl von Multiplex-Schemata, die Information an die gewünschten Register und Halteglieder "rohrartig leiten" und die Ladung dieser Register und Halteglieder bewirken, wie durch die decodierte Anweisung erzwungen.
  • Die bevorzugte Ausführung der vorliegenden Erfindung umfaßt weiter die Logik, die die Register und die ALE in einer Weise verschalten, die Ein-Zyklus-Informations-"Austausche" zwischen jedem der Register und einem internen Register der ALE erlauben. Dieses Merkmal zusammen mit dem Zweiwegdatenpfad durch die ALE zwischen einem Paar von Eingangs/Ausgangs-Datentoren schafft eine Mikroprozessorarchitektur, die auf einzigartige Weise an den Entwurf einer Assemblersprache angepaßt ist, die den Aufbau und die Betriebscharakteristiken der FORTH-Programmiersprache enthält.
  • Schließlich umfaßt die bevorzugte Ausführung der Erfindung adressierende Schaltkreisanordnungen, die an die externen Speicherelemente gekoppelt sind, was die LIFO-Stapel des Systems bildet, in welchem der Mikroprozessor verwendet wird. Diese adressierenden Schaltkreisanordnungen erhalten die Adressen ("Zeiger") von (1) den Speicherplätzen, an welchen das letzte Datenelement, das zu dem Speicherelement geschrieben wurde, und (2) dem nächsten verfügbaren Speicherplatz, an welchen das nächste Speicherelement geschrieben wird, aufrecht. Diese Zeiger werden automatisch inkrementiert oder dekrementiert, wenn Daten zu den Stapeln geschrieben (d. h. "draufgelegt") oder aus den Stapeln gelesen ("abgehoben") werden, wodurch der Stapelaufbau ohne den direkten Eingriff des Mikroprozessors selbst erhalten wird.
  • Der Stapelaufbau, ein Konzept, grundlegend für den Aufbau und die Wirkung von FORTH, wird extensiv durch die FORTH-Programmierung verwendet, um die "Rückkehr" von Unterroutinen- Adressen abzulegen. Auf FORTH wird oft als eine "Bauklötzchen"-Sprache Bezug genommen. Indem Standard-FORTH-Vokabelworte ("Primitive") verwendet werden, können Metaworte, Meta-metaworte usw. gebaut werden. Die Implementierung dieses Konzepts (genauso wie die anderer) erfordert die Bildung von extensiven Unter-Routinenprogrammen, von welchen viele oft tief innerhalb anderer Unter-Routinen ineinandergepackt sind, welche wiederum in noch andere Unter-Routinen ineinandergepackt sind. Weiter können einige dieser Unter- Routinen selbst rekursiv sein. Um in der Lage zu sein, zu einem Initiationspunkt einer Unter-Routine oder Unter-Routinen zurückzukehren, muß eine Rückkehradresse, üblicherweise die Adresse des Speicherplatzes, der die nächste Anweisung enthält, die in der Abfolge jener folgt, welche die Unter-Routine aufgerufen hat, abgelegt werden. Oft und insbesondere in dem Fall von tief ineinandergepackten Unter-Routinen muß daher eine aufeinanderfolgende Liste von Rückkehradressen erhalten werden, um einen Rückkehrweg zu schaffen.
  • Diese Liste ist eindeutig an die Ablage in einem der LIFO-Stapel des Systems angepaßt, das fähig ist, durch den Mikroprozessor der vorliegenden Erfindung und ein externes Speicherelement implementiert zu werden. Die Unter-Routinen-Aufrufe bewirken ein automatisches Drauflegen auf einen Rückkehrstapel der notwendigen Rücksprungadresse.
  • Um die oben genannten Merkmale der Erhaltung einer Liste von Rücksprungadressen in einem "Rückkehr-Stapel" auf automatische Weise zu komplementieren, wird die Reservierung einer spezifischen Bitposition der Maschinensprachenanweisung für die vorliegende Erfindung für den Gebrauch dazu entworfen, eine Rückkehr-Operation ohne spezifische Speicher- (oder anderer) Manipulation zu bewirken. Gemäß diesem Aspekt der Erfindung verursacht das Setzen dieses spezifischen Bits der Mikroprozessoranweisung auf einen vorbestimmten Zustand automatisch die letzte abgespeicherte Rückkehradresse dazu, verwendet zu werden, um den Hauptspeicher (in welchem die Anweisungen abgelegt sind) zu adressieren und den Stapel für die nächste sequentielle Anweisung abzuheben. Dieses Merkmal schafft einen zusätzlichen Vorteil: die letzten Anweisungen jeder Unter-Routine können eine Operation (z. B. eine arithmetisch-logische Operation, eine Datenübertragung o. dgl.) verbunden mit einer Unter-Routinenrückkehr sein, nur indem das "Rückkehrbit" von jeder derartigen letzten Anweisung auf den Rückkehr- oder vorbestimmten Zustand gesetzt wird.
  • Eine Anzahl von Vorteilen werden aus der vorliegenden Erfindung erhalten. Zuerst und an erster Stelle steht die Tatsache, daß die offenbarte Architektur so aufgebaut ist, daß die dafür entwickelte Assemblersprache viele der "Primitiven" (Standardworte) der FORTH-Programmiersprache implementieren. Die Ausführung jeder Primitiven (in einigen Fällen multipler Primitiven) erfordert nur einen Maschinenzyklus; eine Ausnahme sind bestimmte Datenübertragungsanweisungen (Holen und Ablegen), welche in zwei Maschinenzyklen wirken. Dies ermöglicht einen kompakten Objektcode für eine gegebene Anwendung und schafft auch eine extrem schnelle Ausführung dieses Codes. Diese Vorteile werden zum Teil verwirklicht aus den Stapelzusammenbauten und deren Verbindung mit der ALE. Die FORTH-Programmiersprache wirkt üblicherweise aus zwei Stapeln: ein erster Stapel legt Parameter ab, welche auf arithmetische und/oder logische Weise zu kombinieren oder auf andere Weise zu manipulieren sind, und ein zweiter Stapel wird üblicherweise verwendet, um die Rückkehradressen abzulegen, oben beschrieben. Die Mikroprozessorarchitektur erlaubt die Benutzung der Stapel durch die ALE, was eine größere Flexibilität zuläßt, indem zugelassen wird, daß Datenmanipulationen mit einer unglaublichen Geschwindigkeit durchgeführt und abgespeichert werden. Die Anforderung des Zugreifens auf den Hauptspeicher für die Datenablage wird automatisch reduziert.
  • Die ALE umfaßt ein Register, das als ein Ausgangspuffer verwendet wird (und in einigen Fällen als ein Akkumulator fungiert). Der Mikroprozessor der vorliegenden Erfindung verwendet dieses Register als das oberste von einem der zuvor genannten LIFO-Stapel (den Parameter-Stapel). Die nächste Stelle des Stapels wird auch über ein Register implementiert und die folgenden Stellen des Stapels werden in einem der externen Speicher gefunden. Die zwei Register sind zusammengeschaltet, so daß "Austausche" ("SWAPS") zwischen ihnen ausgeführt werden können; d. h., der Inhalt von jedem Register wird zu dem anderen Register simultan mit einer entgegengesetzten Übertragung übertragen, wodurch das FORTH "SWAP"- (d. h. "AUSTAUSCH"-) Primitive implementiert wird. Der andere Stapel hat auch ein internes Register des Mikroprozessors an den Akkumulator der ALE in einer Weise gekoppelt, die diese gleiche Austauschfähigkeit zur Verfügung stellt.
  • Zusätzlich dazu, daß sie einen korrespondierenden der zwei zuvor genannten Stapel empfangen, sind die ALE-Operandeneingänge auch gegliedert,um selektiv viele der verschiedenen internen Register des Mikroprozessors zu empfangen und dadurch arithmetisch-logische Operationen auf dem Inhalt auszuführen.
  • Andere Ziele, Merkmale und Vorteile
  • Ein Ziel dieser Erfindung, wie beansprucht, ist, eine Mikroprozessorarchitektur zu offenbaren, die auf spezifische Weise entworfen ist, um sich an die FORTH-Computersprache anzupassen. Demgemäß wird ein Mikroprozessor mit vier Hauptregistern, drei adressierenden Hauptmultiplexern und vier Eingangs/Ausgangstoren offenbart. Die Register sind jedes entworfen, um einen Parameter zu halten, und umfassen ein Decodierregister L, um den Mikroprozessor zu betreiben, und ein Zentralregister T mit einer angehängten arithmetischen Logikeinheit. Die arithmetische Logikeinheit (ALE) ist mit einem Parameterstapel durch einen nächsten Parameterregisterschaltkreis N verbunden und ist mit einem Rückkehrstapel durch einen Indexregisterschaltkreis I verbunden. Diese Verbindungen werden entlang von Pfaden gemacht, die die simultanen Austausche von Parametern zwischen dem T-Register- und den I- und N-Registerschaltkreisen erlauben, und zwar für Stapel-Drauflagen und -Abhebungen zu den respektiven LIFO-Rückkehr-Speicherstapeln und den LIFO-nächster-Parameter-Speicherstapeln. Diese letzteren Stapel haben vereinfacht Zähler, die die automatische Dekrementierung und datenschreibende Inkrementierung mit angemessener Datenentladung aus den Stapeln erlauben. Die Adressierung des Hauptspeichers wird durch einen Multiplexer erlaubt, welcher Daten aus dem Anweisungs-Halteglied L (für absolute Sprünge) akzeptiert; sowie Daten aus der arithmetischen Logikeinheit in dem Register T (für die Herausholungen und Ablegungen von Daten im Speicher), Daten aus dem Indexregister I (für Rückkehren aus Unter-Routinen); und Daten aus einem Programmzähler. Daraus resultiert ein Mikroprozessor, dessen Assemblersprachenanweisung in einem Maschinenzyklus mit der Ausnahme von bestimmten Herausholungen und Ablegungen durchgeführt werden, welche zwei Zyklen für die Ausführung benötigen.
  • Ein weiteres Ziel der offenbarten Mikroprozessorarchitektur ist, die Unterstützung von zumindest drei isolierten, separaten und diskreten Speicherinseln zu schaffen: Ein Hauptprogrammspeicher (typischerweise 32K Daten und Programmanweisungen und 32K zusätzliche Daten) und die Rückkehr- und Parameterstapel (von denen jeder üblicherweise 256 adressierbare Speicherplätze umfaßt). Diese diskreten Speicherinseln sind schnell, werden bedient und können benützt werden, und zwar simultan ohne sequentielle Zyklen.
  • Ein weiterer Vorteil der diskreten Speicherplätze ist, daß Probleme aufgrund von Überlauf zumindest auf den diskreten Teil des Speichers isoliert werden können, wo der Fehler dazu gebracht wurde, aufzutreten. Der Stapelüberlauf wird nicht in den Hauptspeicher eindringen und diesen überlaufen. Darüber hinaus verbleiben dort, wo irgendein Stapel tatsächlich überläuft, die letzten Überläufe, um einen Programmierhinweis für die Fehlerbeseitigung zu schaffen. Infolgedessen kann der Programmierer den Hauptspeicher auflisten und die Fehler bzw. Bugs identifizieren, die den Stapel und/oder Speicherüberlauf verursachen, einer Hauptursache von FORTH-Abstürzen.
  • Noch ein anderer Vorteil dieser Erfindung ist, daß sowohl der Parameterstapel als auch der Rückkehrstapel für Abheben und Drauflegen verfügbar sind und der Hauptspeicher auf einer gleichzeitigen Grundlage zugänglich ist. Üblicherweise ist nur die Geschwindigkeit des Hauptspeichers begrenzend -die Parameterstapel und die Rückkehrstapel sind schnell und begrenzen üblicherweise nicht den Speicherzugriff.
  • Noch ein zusätzlicher Vorteil des diskreten Speichers bei diesem Mikroprozessor ist, daß ein 48-Bit breiter Pfad zu dem auf gemeinsame Weise zugänglichen Speicher vorgesehen ist, wobei der Pfad zu dem Speicher drei separate 16-Bit breite Pfade sein kann, die alle gleichzeitig mit dem Mikroprozessorbetrieb zugänglich sind.
  • Noch ein anderer Vorteil dieser Erfindung ist, daß die innerhalb des T-Registers enthaltene ALE auf effektive Weise von dem Hauptspeicher entkoppelt ist. Diese arithmetische Logikeinheit läuft von Parametern auf den nahegelegenen I- und N-Registern, wodurch ein Hochgeschwindigkeitsasynchronbetrieb sichergestellt wird.
  • Noch ein anderer Vorteil der Mikroprozessorarchitektur ist, daß die Speicherpfade zum Hauptspeicher und die Stapel immer aktiv sind. Verschiebungen in sequentiellen Zyklen zu verschiedenen Teilen des Hauptspeichers, des Rückkehrstapels und des Parameterstapels in Abfolge werden nicht erfordert.
  • Ein weiteres Ziel dieser Erfindung ist es, einen Mikroprozessor zu offenbaren, in welchem sog. "Austausch"-Pfade die Auswechslung von Datenzwischenregistern erlauben. Das Indexregister I, das ALE-Register T und das nächste-Parameter-Register N werden zusammengeschaltet, um den Austausch von Daten aus dem T-Register zu entweder dem I- oder dem N-Register zu erlauben. Die Ausführung der FORTH-Primitiven wird gefördert und in den meisten Fällen auf einen einzelnen Zyklus beschränkt.
  • Ein Vorteil der Register und ihrer Austauschpfade ist, daß die Ausführung der Anweisungen auf dem Mikroprozessor im wesentlichen asynchron ist. Operationen können zwischen diskreten Registern auf dem Mikroprozessor gleichzeitig weitergehen und werden nicht erfordert, in diskreten Zyklen sequentiell zykliert zu werden.
  • Der weitere Vorteil ist, daß die Architektur- Anordnung des Mikroprozessors einen Einzelzykluseintritt in Unter-Routinen hinein erlaubt, wobei ein einzelnes Bit (das signifikanteste Bit oder MSB der Anweisung) verwendet wird, um die Sprunganweisung festzusetzen. Zusätzlich umfassen alle Sprunganweisungen die Adresse, zu welchem der Sprung gemacht wird, innerhalb der Anweisung selbst. Weiter erlaubt die Mikroprozessorarchitektur, daß der Sprung simultan mit dem Sichern einer Rückkehradresse durchgeführt wird. Eine Ende-des- Zyklus-Anweisung ist alles, was erforderlich wird, um eine Rückkehr aus der Unter-Routine durchzuführen. Ein diskreter Zyklus des Mikroprozessors wird nicht für eine Unter-Routinen-Rückkehr erfordert.
  • Ein weiterer Vorteil dieser Erfindung ist, einen adressierenden Multiplexer zu einem Hauptspeicher zu offenbaren, welcher ohne weiteres des Eingangs aus einer Anzahl interner Register des Mikroprozessors fähig ist. Gemäß diesem Aspekt umfaßt der adressierende Multiplexer A einen direkten Pfad von dem Anweisungs-Halteglied L für einen absoluten Sprung, einen Lese- und Schreibpfad zu einem Programm-Zähler P, um den nächsten Programm- oder Unter-Routinenschritt, der ausgeführt werden soll, abzulegen oder zu lesen, einen direkten Pfad aus dem Indexregister I, um die nächste Rückkehr zu dem adressierenden Multiplexer unterzubringen, und einen direkten Pfad aus dem T-Register zu dem adressierenden Multiplexer für Zweizyklus-Herausholungen und -Ablegungen von Daten aus dem Hauptspeicher. Daraus resultiert ein Mikroprozessor, welcher in einem einzelnen Zyklus den Speicherort für einen zukünftigen Schritt festsetzen, eine Speicheranweisung aus dem Hauptspeicher für den nächsten Schritt halten kann, während er Anweisungen eines aktuellen Schrittes auf einer asynchronen Grundlage ausführt. Infolgedessen wird ein Überlapp in der Ausführung des Mikroprozessorbetriebs zur Verfügung gestellt, um die Geschwindigkeit zu erhöhen.
  • Ein weiteres Ziel dieser Erfindung ist, einen Einzel-Zyklus-Sprung zu der Unter-Routine mit einem begleitendem Drauflegen des Rückkehrstapels vorzusehen. Demgemäß schreibt der Programmzähler P seinen inkrementierten Zählwert direkt an den Rückkehrstapel in einem Drauflegen. Gleichzeitig empfängt der Adressenmultiplexer die nächste angewiesene Routine direkt aus dem Anweisungs-Halteglied L. Der Einzelzyklus-Unter-Routineneintritt wird erreicht.
  • Noch ein anderer Vorteil der offenbarten I- oder indexierenden Register mit dem T-Register ist, daß die Schleifenbildung, eine extrem verbreitete Technik in den FORTH- und anderen Sprachen unter der Steuerung dieses Registers bis ungefähr 65 536 mal auftreten kann. Anweisungen können wiederholt werden. Weiter können Herausholungen aus und Ablegungen in dem Speicher geströmt werden, indem ein Zählwert in dem I-Register und Sequenzen von Daten, z. B. ein Strom von Daten, die in dem nächsten-Parameter-LIFO-Speicherstapel abgelegt sind, verwendet werden; die diskrete Adressierung von jedem Dateneintrag wird nicht erfordert.
  • Noch ein anderes Ziel dieser Erfindung ist, einen Mikroprozessor zu umfassen, dessen Assemblersprache direkt analog zu und in Abhängigkeit von FORTH verständlich ist.
  • Ein Vorteil eines FORTH auf direkte Weise analogen Assemblers ist, daß mehr als 1000 Mannjahre von Programmen von FORTH für den Public Domain-Bereich ohne weiteres für die Anpassung auf diesen Mikroprozessor verfügbar sind. In kurzem kann der Mikroprozessor ohne weiteres mit existierenden Programmen programmiert werden können.
  • Ein weiterer Vorteil dieser Erfindung ist, daß viele andere existierende Programmiersprachen im Ausdruck der FORTH-Programmiersprache implementiert werden können.
  • Noch ein weiterer Vorteil der Architektur ist, daß die Computersprache FORTH zuerst entworfen worden ist und die Architektur des offenbarten Mikroprozessors als zweites entworfen worden ist und an die als FORTH bekannte Sprache angepaßt wurde. Infolgedessen hat die Architektur, die aus dem Softwareentwurf fließt, einen in hohem Maße vereinfachten, rapide zyklierenden Mikroprozessor zur Folge.
  • Noch ein anderer Vorteil davon, daß der Assembler der FORTH-Sprache analog ist, ist, daß die Programmierung in Assembler in hohem Maße vereinfacht wird. Diese Vereinfachung tritt auf mit Bezug auf das Niveau der Programmierfähigkeit, die erforderlich ist, der Zeit, die für die Programmierung erforderlich ist, und der Größe der Komplexizität des Programms selbst. Infolgedessen kann das Versehen des Mikroprozessors mit einem "Betriebssystem" mit ungefähr 1/10 der Zeit und der Anstrengung durchgeführt werden, die bei traditionellen Assemblern erfordert wird. Darüber hinaus kann, da die Assemblersprache die Wörter von FORTH mit sich trägt, ein Programmierer durch das Lesen der Auflistungen der Logik der FORTH-Sprache folgen, um Fehler in dem Betriebssystem zu entfernen oder zu lokalisieren. Infolgedessen wird die Zeit und die Anstrengung für die Fehlerbeseitigung in hohem Maße reduziert.
  • Ein weiterer Vorteil dieses Mikroprozessors ist ein Betriebscode, welcher ein 5-Bit kurzes Literal am Ende der FORTH-Primitiv-Anweisung umfaßt. Derartige Kurz-Literale können für die einstellbare Inkrementierung und Dekrementierung der Register verwendet werden, insbesondere die T-Register innerhalb des Mikroprozessors. Zum Beispiel ist die Inkrementierung und Dekrementierung mit jedem Zyklus in einem Bereich von Q bis 31 einstellbar. Darüber hinaus können die unteren 32 Positionen des Speichers schnellere Herausholungen und Ablegungen von häufig benützten Daten zur Verfügung stellen.
  • Noch ein anderes Ziel dieses Mikroprozessors ist, eine Mikroprozessorarchitektur in Zusammenwirkung mit dem Rückkehrstapel zu offenbaren, die einem FORTH-Diktionär erlaubt, mit einem verästeltem Unter-Routinencode aufgenommen zu sein. Insbesondere wird ein Diktionärentwurf mit dem Wort, einer Verbindung zu dem nächsten Wort und danach der Reihe der Unter-Routinen, die laufen gelassen werden sollen, um das Wort auszuführen, dargelegt. Die indirekte Adressenverästelung wird nicht länger erfordert, wo die indirekte Adresse der Adresse eines Wortes oder einer Unter-Routine verwendet wird. Diese Funktion wirkt direkt mit dem Rückkehrstapel zusammen und schafft eine erhöhte Geschwindigkeit der Ausführung.
  • Ein Vorteil des Diktionäraufbaus ist, daß er um zumindest einen vollen Zyklus in der Ausführung jedes Worts schneller ist, das innerhalb einer FORTH-Wortfestlegung enthalten ist.
  • Noch ein anderer Vorteil dieser Erfindung ist, Schleifen und Sprünge zu offenbaren, die ganzheitlich innerhalb einer einzelnen Anweisung enthalten sind. Gemäß diesem Aspekt dieser Erfindung umfassen Sprünge eine 12-Bit Adresse, die fähig ist, innerhalb einer 4K Speicher-"Seite" zu springen. Ein einziger Maschinenzyklus ist alles, was für derartige Schleifen- und Sprungadressierungen erfordert ist.
  • Andere Ziele, Merkmale und Vorteile dieser Erfindung werden ersichtlicher werden, nachdem zu der folgenden Beschreibung und den beigefügten Zeichnungen Bezug genommen wurde, in welcher:
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ein vereinfachtes Blockdiagramm des Mikroprozessors der vorliegenden Erfindung ist, das den Gesamtinformationsfluß dieser Erfindung im allgemeinen veranschaulicht;
  • Fig. 2 ein Plan des Hauptspeichers ist, der innerhalb dieser Erfindung benutzt wird;
  • Fig. 3 ein Blockdiagramm der Anweisungs-Decodiereinheit von Fig. 1 ist, die diese Einheit in größerem Detail veranschaulicht;
  • Fig. 4 ein Blockdiagramm des Adressenmultiplexers und des Programmzählers des Mikroprozessors von Fig. 1 ist;
  • Fig. 5 ein Blockdiagramm des I (Rücksprung/Index)-Registerschaltkreises des Mikroprozessors von Fig. 1 ist;
  • Fig. 6 ein Blockdiagramm des N (nächster Parameter)-Registers des Mikroprozessors von Fig. 1 ist;
  • Fig. 7 in Blockdiagrammform das Hauptspeichertor des Mikroprozessors Fig. 1 veranschaulicht;
  • Fig. 8 ein Blockdiagramm von einem (J) der Stapelzeiger (J/K) ist, der die Adressierung für die externen Speichereinheiten zur Verfügung stellt, die verwendet werden, um die Rücksprung (R) und Parameter (S) Stapel zu bilden, die durch den Mikroprozessor von Fig. 1 verwendet werden;
  • Fig. 9 im Blockdiagramm die arithmetische Logikeinheit (ALE) des Mikroprozessors von Fig. 1 veranschaulicht;
  • Fig. 10A und 10B in größerer Ausführlichkeit und in Blockdiagrammform die Multiplexerausgangsteile der ALE veranschaulichen, die in den Fig. 1 und 9 gezeigt ist;
  • Fig. 11A und 11B Zeitsteuerungsdiagramme der TAKTpulse sind, die verwendet werden, um den Mikroprozessor von Fig. 1 zu betreiben; und
  • Fig. 12 eine Veranschaulichung der zusätzlichen internen Register des Mikroprozessors von Fig. 1 ist.
  • BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS Allgemeine Beschreibung
  • Nun zu den Figuren und insbesondere zu Fig. 1 wendend, ist dort in Blockdiagrammform und mit der Bezugszahl 10 bezeichnet der Mikroprozessor der vorliegenden Erfindung veranschaulicht. Wie gezeigt, umfaßt der Mikroprozessor einen Programmzähler P, um Adressen zu erzeugen, die über einen Adressenmultiplexer A, Ausgangsanschlüsse 15 und einen Adreßbus A-BUS, an einen Hauptspeicher 12 übertragen werden. Wenn Adressen erzeugt und an Hauptspeicher 12 angelegt werden, wird auf Anweisungen und Datenworte, wie es der Fall sein mag, zugegriffen und an ein Hauptspeichertor M des Mikroprozessors 10 durch einen DATEN BUS gekoppelt, der den Mikroprozessor 10 mit dem Hauptspeicher 12 bei den E/A-Anschlüssen 13 zusammenschaltet. Anweisungen werden durch das Hauptspeichertor M an ein Instruktionshalteglied L (Fig. 3) übergeben, das in einer Anweisungsdecodiereinheit 14 des Mikroprozessors 10 enthalten ist, und für die Decodierung gehalten.
  • Die Anweisungen, die durch die Anweisungsdecodiereinheit 14 decodiert werden, verursachen die Aktivierung von einem oder mehr einer Anzahl interner Torsteuerungs- und Befehlssignalen, die überall in der internen Schaltkreisanordnung des Mikroprozessors 10 verteilt werden, um den Informationsfluß und die Informationsmanipulation innerhalb und durch den Mikroprozessor zu leiten.
  • Der Mikroprozessor 10 empfängt auch ein extern erzeugtes Taktsignal, veranschaulicht in den Fig. 12A und 12B. Aus diesem TAKTsignal wird ein internes Takt (TKT)Signal erzeugt, das verwendet wird, um verschiedene Codierungs- und Halteoperationen auszuführen, die weiter unten vollständiger erklärt werden. Es ist an diesem Punkt wichtig, bestimmte Überlappoperationen zu erkennen, die durch die Anweisungsdecodiereinheit ausgeführt werden. Anweisungen werden in der Anweisungsdecodiereinheit 14 auf jeder ansteigenden Flanke 18 (Fig. 12A) des TAKTsignals eingerastet und die gehaltenen Anweisungen werden während jedem HOCH-Zustand dieses Signals decodiert; die Anweisungsdecodierung wird vorzugsweise durch jede abfallende Flanke 20 des TAKTsignals beendet. Demgemäß ist vor jeder nachfolgenden ansteigenden Flanke 18 des TAKT- signals eine Bestimmung in Bezug auf den Speicherplatz in dem Hauptspeicher 12 der nächsten sequentiellen Anweisung oder des nächsten sequentiellen Datenwortes durchgeführt worden (welche oder welches, wie gesehen werden wird, aus verschiedenen Quellen erhalten werden kann). Nachdem die Anweisungsdecodierzeit abgeschlossen ist, wird die Anweisung vor der nächsten nachfolgenden ansteigenden Flanke 18 des TAKTsignals ausgeführt. Dies ermöglicht einen Überlapp der zwei grundlegenden Mikroprozessoroperationen: die Adressenbildung und die Anweisungsausführung.
  • Diese zwei unabhängigen Operationen finden während jeder der Perioden des TAKTsignals statt: Die Adresse für die nächste sequentielle Anweisung (oder in dem Fall von Datenherholungen, die Daten) wird gebildet und die Operation, die durch die Anweisung diktiert wird, wird ausgeführt. So wird bei der Haltegliedzeit T0 (Fig. 12A) eine Anweisung in der Anweisungsdecodiereinheit eingerastet, deren Ort durch eine vorhergehende Anweisungsbestimmung bestimmt wurde, die gleichzeitig mit der Ausführung einer anderen Anweisung durchgeführt wurde. Auf ähnliche Weise wird, während der Zeit zwischen der Haltegliedzeit T0 und Halteglied T1 eine andere Adresse gebildet und an den A-BUS angelegt, während die Anweisung, die zu der Haltegliedzeit T0 empfangen wurde, ausgeführt wird.
  • Zusätzlich dazu, daß es Anweisungsworte (und in einigen Fällen Adresse) empfängt und an die Anweisungsdecodiereinheit 14 weitergibt, überträgt das Hauptspeichertor M auf selektive Weise Datenworte an das Nächster-Parameter-Register N auf einem Zweiwegdatenpfad 37, der aufgebaut ist, um eine simultane Zweiwegübertragung von Daten zwischen dem Hauptspeichertor M und dem N-Registerschaltkreis zu erlauben. Die durch das Hauptspeichertor M aus dem N-Registerschaltkreis empfangenen Daten können, genauso wie die aus der arithmetischen Logikeinheit ALE, selektiv an den Hauptspeicher 12 für die Ablage übertragen werden.
  • Der N-Registerschaltkreis ist, zusätzlich dazu, daß er mit dem Hauptspeichertor M verbunden ist, auch mit der ALE durch einen Zweiwegdatenpfad 36 und mit einem Eingangs/Ausgangs- (E/A)-Tor 22 verbunden. Der Reihe nach wird das Tor 22 vorzugsweise mit einem externen Parameterspeicher 24 durch einen 16-Bit 5-BUS verbunden. Der N-Registerschaltkreis zusammen mit dem Parameterspeicher 24 bilden einen ZU- LETZT-REIN-ZUERST-RAUS (LIFO, last- in- first- out) Parameterstapel S, um ein eindimensionales Feld von sequentiell geordneten Datenworten abzuspeichern. Ein ähnlicher LIFO-Stapel, der als der Rückkehrstapel R bezeichnet wird, wird durch einen Rückkehr/Index (I)-Register in Verbindung mit einem externen Rückkehrspeicher 26 gebildet. Der Rückkehrspeicher 26 ist verbunden mit (16) Eingangs-Ausgangs-Anschlüssen (E/A) 28 des Mikroprozessors 10 (mit welchen das I-Register auch verbunden ist), und zwar durch einen Sechzehn-Leitungs-R-Bus. Der Rückkehrspeicher 26 wie der Parameterspeicher 24 wird mit dem I-Register betrieben, um Datenworte in einem sequentiell geordneten eindimensionalen Feld oder Stapel abzulegen. Der Eintrag in den Rückkehrstapel R erfolgt durch das 1-Register. Der Eintrag in den Parameterstapel S kann durch ein "oberster Parameter" -Register T (Fig. 9) durch den N-Register-Schaltkreis erfolgen, oder durch den N-Register-Schaltkreis selbst, wie unten spezieller beschrieben werden wird. Der Stapelbetrieb ist durch die Stapelzeiger, J/K, aufrechterhalten, die jeder (der J Zeiger und der K Zeiger) jeweils Adressensignale an den Parameterspeicher 24 und den Rückkehrspeicher 26 erzeugen. Der Betrieb der Parameter- und Rückkehrstapel S und R wird vollständiger beschrieben, wenn der Betrieb der Stapelzeiger mit Bezug auf Fig. 8 diskutiert werden wird.
  • Schließlich umfaßt der Mikroprozessor 10 ein Eingangs-Ausgangs-TOR 30, das einundzwanzig individuelle Eingangs/Ausgangs (E/A) Anschlüsse umfaßt. Fünf dieser Anschlüsse sind mit einem X-BUS verbunden und die verbleibenden sechzehn sind mit einem B-BUS verbunden. Diese einundzwanzig E/A-Anschlüsse gehören zu einem zugehörigen 5-Bit und 16-Bit Registern und sind damit verbunden, um eine zusätzliche Eingangs/Ausgangsfähigkeit zur Verfügung zu stellen.
  • Bevor zu einer detaillierteren Beschreibung der einzelnen Elemente, die den Mikroprozessor 10 ausmachen, fortgesetzt wird, kann eine Anzahl von wichtigen Merkmalen der Erfindung bemerkt werden. Das erste ist die Tatsache, daß der Mikroprozessor 10 fähig ist, mit vier unterschiedlichen, unabhängigen Datenpfaden zu den entsprechenden E/A-Anschlüssen 13, 22, 28 und dem E/A-TOR 30 zu kommunizieren und diese zu benützen. Während in der vorliegenden Erfindung der Hauptspeicher 12, der Parameterspeicher 24 und der Rückkehrspeicher 26 mit dem Mikroprozessor 10 verbunden sind, um eine Architektur zu implementieren, die auf einzigartige Weise an eine spezifische Programmiersprache, z. B. FORTH angepaßt ist, können andere Verbindungen mit diesen Anschlüsse gemacht werden, um den Mikroprozessor 10 in verschiedenen Implementierungen auf vorteilhafte Weise zu verwenden. Zum Beispiel kann der Mikroprozessor 10 für die Digitalsignalverarbeitung unter der Führung eines FORTH-Sprach-Programmes verwendet werden, worin die E/A-Anschlüsse 22 und 28 angepaßt sind, um auf die zu verarbeitenden Signale indikative Datenströme zu empfangen.
  • Ein anderes wichtiges Merkmal der vorliegenden Erfindung, insbesondere, falls aus der FORTH-Programmiersprache betrachtet wird, ist die Tatsache, daß die Kommunikationspfade 36, 37, 38 und der G-BUS, die jeweils die ALE an die N- und I-Registerschaltkreise verbinden, das Hauptspeichertor M und das E/A-Tor 30 alle den simultanen Zweiwegdatentransfer vorsehen, der gebräuchlicher als "Austausche" bezeichnet wird.
  • Anweisungsdecodiereinheit
  • Sich nun den Schaltkreisimplementierungen der verschiedenen Elemente des Mikroprozessors 10, der in Fig. 1 gezeigt ist, zuwendend, zeigt Fig. 3 die Anweisungsdecodiereinheit 14 in größerer Genauigkeit. Wie veranschaulicht, umfaßt die Anweisungsdecodiereinheit 14 ein 16-Bit Halteglied 50, einen Anweisungsdecodierschaltkreis 52 und zwei Eingangs-UND-Gatter 54, 56 und 58. Das 16-Bit Halteglied 50 empfängt an seinem Dateneingang ein Datenwort (M) aus dem Hauptspeichertor M. Das empfangene Datenwort (M) wird längs der ansteigenden Flanke eines TKT-Signals (welche aus dem TAKT-Signal, das an den Eingangsanschlüssen 16 des Mikroprozessors 10 empfangen wird, hergeleitet und diesem im wesentlichen identischen ist), wenn das Ermöglichter-Takt-EN-TKT-Signal aus dem Anweisungsdecodierschaltkreis 52 HOCH ist. Das EN-TKT-Signal ist üblicherweise in seinem HOCH-Zustand, außer wenn eine Anweisung ausgeführt wird, die den iterativen Betrieb erzwingt. In diesem Fall kann, abhängig von der Anweisung (welche vollständiger unten diskutiert werden wird), das EN-TKT-Signal für eine Anzahl von TAKT-Signalen (und daher, TKT-Signalen) NIEDRIG sein, um es dem Mikroprozessor 10 erscheinen zu lassen, als sei eine gleiche Zahl (plus 2, wie beschrieben werden wird) identischer Anweisungen nacheinanderfolgend empfangen, eingerastet und decodiert worden.
  • Die Anweisungen, die durch das 16-Bit-Halteglied 50 empfangen und eingerastet werden, werden an den Anweisungsdecodierschaltkreis 52 angelegt, wo sie decodiert werden. Die Decodierung, die durch den Anweisungsdecodierschaltkreis 52 durchgeführt wird, erzeugt die notwendigen internen Gatter- und Befehlssignale, wie z. B. jene in Fig. 3 aufgelisteten, und zwar u. a. direkter Betrieb des Mikroprozessors 10.
  • Die Anweisungsdecodiereinheit 14 empfängt auch ein UNT-Signal, das aus dem UNTERBRECHUNG-Signal hergeleitet wird, das an dem Eingangsanschluß 18 des Mikroprozessors 10 empfangen wird, und ein RST-Signal, das aus dem RÜCK- SETZ-Signal hergeleitet wird, das an dem Eingangsanschluß 20 empfangen wird. Das UNT-Signal veranlaßt, wenn HOCH, das 16-Bit-Halteglied 50, auf eine vorbestimmte 16-Bit-Anweisung gesetzt zu sein, die wiederum und nach der Decodierung einen unmittelbaren Sprung zu einem Speicherplatz des Hauptspeichers 12 veranlaßt, worin die Codierung für die Behandlung von Unterbrechungssequenzen abgelegt ist. Das RST-Signal zwingt den Inhalt des 16-Bit-Haltegliedes 50 dazu, wenn er decodiert ist, einen anderen Sprung zu einem Speicherplatz im Hauptspeicher 12 zu verursachen, worin die Codierung für eine Rücksetzroutine abgelegt ist.
  • Zusätzlich zu der 16-Bit-Anweisung aus dem Halteglied 50 empfängt der Anweisungsdecodierschaltkreis 52 auch ein I = 0-Signal aus dem I-Register. Wie gesehen werden wird, wird das I-Register zu bestimmten Zeiten ein Indexregister betreiben, um laufend die Anzahl der Iterationen zu verfolgen, die in Folge von bestimmten Anweisungen ausgeführt werden. Das I = 0-Signal benachrichtigt den Anweisungsdecodierschaltkreis 52, wenn die geeignete Anzahl von Iterationen erreicht worden ist, so daß auf die nächste Anweisung aus dem Hauptspeicher 12 zugegriffen werden kann.
  • Die Führe-Aus-(Co)-T=0-Signale werden durch die ALE entwickelt. Das Co-Signal weist auf die Überlaufzustände oder ein negatives Resultat hin, während das T = 0-Signal nützlich ist, um den Abschluß bestimmter arithmetischer Operationen zu testen, wie unten beschrieben werden wird.
  • Adressenmultiplexer und Programmzähler
  • Sich nun zu Fig. 4 wendend, ist dort in größerer Ausführlichkeit der Adressenmultiplexer A und der Programmzähler P veranschaulicht, die in verknüpfter Form gezeigt sind, um ihre Zwischenbeziehung zu veranschaulichen. Wie gezeigt, umfaßt der Adressenmultiplexer A einen Multiplexerschaltkreis 60. Der Programmzähler P von Fig. 1 umfaßt ein Programmregister 62, einen 16-Bit Addiererschaltkreis 64 und ein Zwei-Eingangs-UND-Gatter 66.
  • Der Multiplexschaltkreis 60 hat vier 16-Bit Eingänge, von denen drei, 1, 2 bzw. 3, den Halteglied- 50- Ausgang [L] und den Ausgang [T] eines T-Registers empfangen, das in der ALE (Fig. 9) bei dem Ausgang [I] des I-Registers (Fig. 5) enthalten ist. Zusätzlich empfängt der 16-Bit Eingang (vier) des Multiplexers 16 den Ausgang [P] des Programmregisters 62. Die Auswahl dazwischen, welcher der 16-Bit Eingänge an den Ausgang des Multiplexers 60 gemultiplext wird, wird durch ein A-CTL-Signal festgelegt, das durch den Anweisungsdecodierschaltkreis 52 (Fig. 3) erzeugt wird und bei dem Auswahleingang SEL des Multiplexers 60 empfangen wird.
  • Der ausgewählte Eingang wird durch den Multiplexer 60 zu einem von zwei Operandeneingänge 66, 68 eines 16-Bit Addierers 64 durchgeführt, genauso wie er an den A-BUS übertragen wird, der den Mikroprozessor 10 an die geeignete adressierende Schaltung des Hauptspeichers 12 (Fig. 1) verbindet. Der zweite Operandeneingang 70 empfängt eine fest verdrahtete "+1". Diese Anordnung erlaubt dem Programmregister, immer mit einem Wert geladen zu werden, inkrementiert um 1. So wird für den sequentiellen Betrieb der Multiplexer 60 den Ausgang [P] des Programmregisters 62 auswählen, was das Programmregister 62 mit seinem vorherigen Inhalt +1 wieder lädt.
  • Das Programmregister 62 empfängt den Ausgang von UND und GAT- TER 66 auf die Koinzidenz zwischen den TKT und P-EN-Signalen. Das letztere Signal wird durch den Anweisungsdecodierschaltkreis 52 erzeugt.
  • I Register
  • Zusätzlich zu dem Multiplexerschaltkreis 60 wird der Ausgang [P] des Programmregisters 62 auch an das I-Register angelegt, welches in größerer Ausführlichkeit in Fig. 5 veranschaulicht ist. Wie gezeigt, umfaßt das I-Register einen Vier- Eingang (jeder 16 bit) Multiplexschaltkreis 78, dessen Ausgang an die Dateneingänge eines Registers 80 angelegt wird. Die Auswahl, welcher der Eingänge 1 bis 4 des Multiplexschaltkreises 68 an das Register 80 gekoppelt wird, wird durch das I-CTL-Signal durchgeführt, das an dem Auswahleingang (SEL) des Multiplexers empfangen wird.
  • Der 16-Bit Ausgang [I) des Registers 80 wird an einen (16-Bit) Operandeneingang eines 16-Bit Addierers 84 über einen Nulltestschaltkreis 82 gekoppelt. Der andere Operandeneingang des Addierers 84 empfängt eine "-1". Die Kombination des Registers 80, des Nulltestschaltkreises 82 und des Addierers 84 zusammen mit dem Rückkopplungspfad, der durch den Multiplexerschaltkreis 78 zur Verfügung gestellt wird, schafft eine Technik, wodurch der Inhalt des Registers 80 auf inkrementelle Weise verringert (dekrementiert) werden kann, wobei jedes Dekrement gegen Null getestet wird. Dies ermöglicht dem I-Registerschaltkreis (d. h. Register 80), als ein Indexregister verwendet zu werden, um eine Anzahl iterativer Schritte des Mikroprozessorbetriebs (wie z. B. während der Ausführung von Multiplizieranweisungen) zu zählen, und schafft ein Mittel, um auf ein Ende von diesen iterativen Schritten zu testen.
  • Der Ausgang [I] des Registers 80 wird an ein Drei-Zustands-Puffer gekoppelt, und von dort an die E/A-Anschlüsse 28, die den Mikroprozessor 10 mit dem R-BUS verbinden. Ein R-ERMÖGLICHEN-Signal überträgt wahlweise den Register 80 Ausgang [I] an die E/A-Anschlüsse 28, wenn es in einem Zustand ist, d. h. HOCH; und trennt das Register von den E/A-Anschlüssen 28, indem der Ausgang des Drei-Zustands-Puffers 86 in einem Hochimpedanzzustand ist, falls NIEDRIG.
  • Die E/A-Anschlüsse 28 werden auch mit einem Empfängerschaltkreis 88 verbunden, der die E/A-Anschlüsse 28 an einen Eingang des Multiplexerschaltkreises 78 koppelt. Die Kombination des Drei-Zustands-Puffers 86 und des Empfängerschaltkreises 88 schafft eine Zweiweg-Verbindung zwischen dem I-Registerschaltkreis und dem Rückkehrspeicher 26 (Fig. 1) über den R-BUS.
  • Der Inhalt des Registers 80 wird durch verschiedene Anweisungen festgelegt. Demgemäß ist es das I-CTL und das I-LD, das festlegt, was in dem Register 80 angeordnet wird und wann.
  • N-Registerschaltkreis
  • Die Einzelheiten des N-(Nächster Parameter)-Registerschaltkreises werden in Fig. 6 veranschaulicht. Wie gezeigt, umfaßt der N-Registerschaltkreis einen fünf (16-Bit) Eingangsmultiplexschaltkreis 96, ein Register 98 und ein UND-Gatter 100. Der Multiplexschaltkreis 96 empfängt an seinen (16-Bit) Eingängen 1 und 2 den Ausgang [T] aus dem T-Register der ALE (Fig. 9), den Ausgang [M] aus dem Hauptspeichertor M (Fig. 7) an den (16-Bit) Eingängen 3, und von dem Multiplexer 96 und empfängt den Ausgang des Registers 98
  • - aber auf eine besondere Weise. Wie gesehen werden wird, kann das Register 98 durch bestimmte der arithmetischen Anweisungen als die unteren 16 Bits eines 32-Bit Register konfiguriert werden, das durch das Register 98 und das T-Register der ALE gebildet wird. Wenn sie so konfiguriert ist, wird die Registerkombination fähig sein, entweder links oder rechts verschoben zu werden. Wenn sie links verschoben wird, werden die unteren 16 Bits das ÜBERTRAG-Signal bei der LSB-Position empfangen, das durch die ALE (Fig. 9) erzeugt wurde; wenn sie rechts verschoben werden, empfangen die MSB des Registers 98 die LSB des T-Registers (T&sub0;). Der Rückkopplungspfad durch den Multiplexer 98 führt diese Verschiebeoperation durch. Der Eingang 4 des Multiplexers 96 multiplext, falls ausgewählt, die 15 Bits niederer Ordnung (d. h. LSB&sub0;-MSB&submin;&sub1;) des Registers 98 an den Eingang des Registers, so daß, falls geladen, der Effekt eine 1-Bit-Linksverschiebung ist. Zur selben Zeit wird das ÜBERTRAG-Signal mit den fünfzehn Ausgangsleitungen aus dem Register 98 bei dem Eingang 4 des Multiplexers 96 kombiniert, so daß das LSB das ÜBERTRAG-Signal empfängt. In ähnlicher Weise werden die 15 Bits hoher Ordnung (MSB-LSB&sbplus;&sub1;) mit dem LSB (T&sub0;) des Ausgangs [T) bei dem Eingang 3 des Multiplexers 96 kombiniert, um eine 1-Bit-Rechtsverschiebung des Inhaltes des Registers 98 zu bewirken, und zwar mit dem LSB des Ausgangs [T], das in die MSB-Position hineingeschoben wird.
  • Die Ladung wird durch die Koinzidenz an den zwei Eingängen des UND-Gatters 100 zwischen dem TKT-Signal und dem Steuer-Original N-LD-Signal erzeugt, das von dem Anweisungsdecodierschaltkreis 52 (Fig. 3) erzeugt wird. Die Auswahl dazwischen, welcher der Multiplexereingänge 1 bis 5 an das Register 98 angelegt werden wird, wird durch das Steuersignal N-CTL, das auch durch den Anweisungsdecodierschaltkreis 52 erzeugt wird, bewirkt.
  • Der 16-Bit Ausgang [N] des N-Registerschaltkreises aus dem Register 98 wird an den 5-BUS durch ein Drei-Zustands-Gerät 99 gekoppelt, wenn das Kontrollsignal S-BEFÄHIGE aktiv ist.
  • Die Daten können an das Register 98 aus dem S-BUS über den Empfänger 101 und den Multiplexer 96 gekoppelt werden.
  • Hauptspeicherteil M
  • Wie während der Diskussion von Fig. 1 angedeutet wurde, werden die Anweisungen und die Daten durch den Mikroprozessor 10 empfangen oder übertragen, und zwar über das Hauptspeichertor M. In Fig. 7 ist in größerer Ausführlichkeit das Hauptspeichertor M veranschaulicht, welches gezeigt ist als einen Zwei-(16-Bit)Eingangsmultiplexer 110, ein (16-Bit) Drei-Zustands-Gerät 112 und einen Empfängerpuffer 114 zu umfassen. Der Multiplexerschaltkreis 110 empfängt zwei (16-Bit) Ausgänge: [N] aus dem N-Registerschaltkreis (Fig. 6) und [T] aus dem T-Register der ALE (Fig. 9). Die gemultiplexte Größe (d. h. [N] oder [T]), die durch das Steuersignal M-CTL ausgewählt wird, wird durch den Multiplexer 110 an das Drei-Zustands-Gerät 112 weitergeleitet und von dort an die E/A-Anschlüsse 13, und zwar für die Übertragung über den DATA BUS an den Hauptspeicher 12. Zusätzlich wird der Ausgang des Drei-Zustands 112 (genauso wie die E/A-Anschlüsse 13) den internen Schaltkreisanordnungen des Mikroprozessors 10 als die Ausgabe [M] des Hauptspeichertores M durch die Pufferschaltung 114 verfügbar gemacht. So stellt der Ausgang [M] des Hauptspeichertores M entweder (1) den ausgewählten einen aus dem N-Registerschaltungsausgang [N] oder dem T-Register [T] oder (2) Daten aus dem Hauptspeicher 12 dar, jeweils abhängig davon, ob das Drei-Zustands-Gerät jeweils in seinem übertragenden oder Hochimpedanzzustand ist oder nicht. Die Steuerung des Drei-Zustands-Gerätes 112 wird durch ein Auswahlsignal M-SEL bewirkt, das durch die Anweisungsdecodiereinheit 14 erzeugt wird.
  • Stapelzeiger J und K
  • Wie vorhergehend angedeutet, wird die Wartung der Parameter- und Rückkehrstapel S und R zum Teil durch die Stapelzeiger J und K geleitet, unter zumindest partieller Steuerung der Steuersignale aus der Anweisungsdecodiereinheit 14. Die Stapelzeiger J und K wirken, um die Adressignale zu erzeugen, die an den Parameterspeicher 24 und den Rückkehrspeicher 26 angelegt werden, um aus dem Stapel zu lesen oder in diesen zu schreiben wie notwendig. Sie verfolgen laufend den letzten geschriebenen Speicherplatz (und ist daher der Ort der Daten, auf den zugegriffen wird, wenn der Stapel gelesen oder "abgehoben" wird) und sie haben die Adresse des nächsten leeren Speicherplatzes zur Verfügung, an welchen Daten geschrieben werden, wenn ein "Drauflegen" implementiert wird. Jeder Stapelzeiger J und K erzeugt zwei 8-Bit Adressen und der Aufbau von jedem ist im wesentlichen identisch. Demgemäß wird nur der Stapelzeiger J detailliert beschrieben werden, wobei es zu verstehen ist, daß die Diskussion mit gleicher Kraft auf den Stapelzeiger K gilt, sofern es nicht anders bemerkt wird.
  • Daher Bezug nehmend auf Fig. 8, ist dort in größerer Ausführlichkeit der Stapelzeiger J veranschaulicht, der benützt wird, um den Rückkehrspeicher 26 zu adressieren. Wie gezeigt, umfaßt der Stapelzeiger J drei Zwei-Eingangs-8-Bit-Multiplexer 120, 122 und 124, zwei 8-Bit-Halteglieder 126 und 128 und einen Ausgangsmultiplexer 130. Die Halteglieder 126 und 128 werden jedes jeweils dazu veranlaßt, geladen zu werden, und zwar durch die Signale, die durch die UND-Gatter 132 und 134 erzeugt werden. Die Ladung des 8-Bit-Haltegliedes 126 wird durch das J1-EN-Signal in Kraft gesetzt, das durch die Anweisungsdecodiereinheit 14 erzeugt wird, zusammen mit dem TKT-Signal, während das 8-Bit-Halteglied 128 durch die Gegenwart des J2-EN-Ermögliche-Signals und des TKT-Signals geladen wird.
  • Ein Rückkopplungspfad für das Ausgangs 8-Bit Halteglied 126 zu dem Eingang 2 des Multiplexers 120 wird durch einen Dekrementschaltkreis 136 zur Verfügung gestellt, welcher den Ausgang des 8-Bit Haltegliedes 126 empfängt, "1" von diesem Ausgang subtrahiert und den dekrementierten Wert an dem Eingang 2 des Multiplexers 120 zur Verfügung stellt. In ähnlicher Weise empfängt ein Inkrementierschaltkreis 138 den Ausgang des 8-Bit Haltegliedes 128, erhöht ihn um 1 und stellt den erhöhten Wert am Eingang 1 des Multiplexers 122 zur Verfügung. Die Ausgänge der 8-Bit Halteglieder 126 und 128 werden auch an den JA-Bus, (welcher den Stapelzeiger J mit dem Rückkehrspeicher 26 verbindet) durch einen Multiplexer 130 übertragen.
  • Wie vorhergehend angezeigt, ist der Stapelzeiger J verantwortlich für die Erzeugung zweier Adressen: Die erste "zeigt" auf den Speicherplatz des Rückkehrspeichers 26, bei welchem die letzte Größe gespeichert wurde, die zweite zeigt zu dem Speicherplatz, bei welchem der nächste Wert geschrieben werden wird. Es ist die Funktion der 8-Bit Halteglieder 126 und 128, diese jeweiligen Zeiger immer zu erhalten. Wie aufgebaut, wird der Inhalt der 8-Bit Halteglieder immer eine Adresse auseinander sein; d. h., der Inhalt des 8-Bit Haltegliedes 128 wird eins größer als der des 8-Bit Haltegliedes 126; der Inhalt des 8-Bit Haltegliedes 126 zeigt auf den "zuletzt geschriebenen" Speicherplatz und das 8-Bit Halteglied 128 zeigt auf den nächsten verfügbaren Platz.
  • Das 8-Bit Halteglied 126 ist mit den 8 Bits niedriger Ordnung aus dem Ausgang [T] des T-Registers vorsetzbar (Fig. 9). Die acht Bits hoher Ordnung von [T] setzen das 8-Bit Halteglied (nicht gezeigt) des Stapelzeigers K entsprechend dem Halteglied 126 vor. Das 8-Bit Halteglied 128 (und sein Gegenstück in dem Stapelzeiger K) wird nicht vorgesetzt und sind daher bis zu einem Datenlesen indeterminiert. Wenn eine derartige Lese-Operation auftritt, wird der Inhalt des Haltegliedes 128 mit der Leseadresse geladen und das Halteglied 126 wird mit der Leseadresse minus eins geladen.
  • Die Parameter- und Rückkehrstapel S bzw. R werden in herkömmlicher Weise betrieben; d. h. Daten werden entweder auf den Stapel "draufgelegt" (geschrieben) oder aus den Stapeln "abgehoben" (gelesen). Ein Drauflegen wird implementiert, indem in den nächsten verfügbaren Speicherplatz die gewünschten Daten geschrieben werden und die 8-Bit Halteglieder 126, 128 inkrementiert werden; ein Abheben wird bewirkt, indem der letzte geschriebene Wert gelesen wird und die 8-Bit Halteglieder 126, 128 dekrementiert werden. Im tatsächlichen Betrieb der Parameter- und Rückkehrstapel S und R verwenden die Abhebe- und Drauflegeoperationen den N-Registerschaltkreis oder den I-Registerschaltkreis, welche jeweils das Oberteil der Stapel bilden. Die folgende Diskussion betrifft den Betrieb des Rückkehrspeichers 26 durch den Stapelzeiger J.
  • Betrachte zuerst eine "Drauflege"-Operation, in welcher der Ausgang des I-Register-Schaltkreises [I] zu dem verbleibenden Teil des Rückkehrstapels R addiert werden soll, (d. h. jener Teil des Rückkehrstapels, der durch den Rückkehrspeicher 26 implementiert ist). Der Speicherplatz, an welchem der Inhalt des 1-Registers anzuordnen ist, kann durch den Inhalt des 8-Bit Haltegliedes 128 gefunden werden. Demgemäß bringt die Anweisungsdecodiereinheit 14 ein SCHREI- BE-Signal HOCH, was den Multiplexer 130 dazu veranlaßt, den Ausgang des 8-Bit Haltegliedes 128 auszuwählen, welcher Ausgang an die Adressenschaltkreisanordnung des Rückkehrspeichers 26 über den JA Bus angelegt wird. Zur selben Zeit veranlaßt das SCHREIBE-Signal den Multiplexer 122, seinen Eingang 1 für die Anlegung an den Dateneingang des 8-Bit Haltegliedes 128 auszuwählen und veranlaßt den Multiplexer 120, seinen Eingang 1 für die Anlegung an den Eingang 2 des Multiplexers 124 auszuwählen. Während dieser Zeit ist das LESE-Signal niedrig, was den Multiplexer 124 veranlaßt, seinen Eingang 2 an das 8-Bit Halteglied 126 für die Anlegung des Dateneingangs des 8-Bit-Haltegliedes mit zu teilen. So kann es aus der Fig. 8 gesehen werden, daß, wenn das SCHREIBE-Signal hoch ist, die Multiplexer 120, 122 und 124 veranlassen, (1) der Inhalt des 8-Bit Haltegliedes 128 plus 1 an die Dateneingänge des Haltegliedes angelegt wird; (2) der Inhalt des 8-Bit Haltegliedes 128 an die Dateneingänge des 8-Bit Haltegliedes 126 angelegt wird; und (3) der Inhalt des 8-Bit Haltegliedes 128 an die Speicherschaltkreise des Rückkehrspeichers 26 angelegt wird. Die J1-EN und das J2-EN-Signale werden durch die Anweisungsdecodiereinheit 14 HOCH gebracht, so daß die durch die 8-Bit Halteglieder 126, 128 enthaltenen Zeiger um 1 inkrementiert werden, während der gewünschte Wert zu der TKT-Zeit zu dem Speicher geschrieben wird.
  • Die Daten werden aus dem Rückkehrspeicher in das I-Register in der folgenden Weise hinein "abgehoben": das LESE-Signal wird HOCH gebracht und das SCHREIBE-Signal wird NIEDRIG gehalten, und zwar durch die Anweisungsdecodiereinheit 14. Mit SCHREIBE HOCH und LESE NIEDRIG haben auch die Multiplexer 120 und 124 jeder ihre Eingänge ausgewählt, wodurch der Inhalt des 8-Bit Haltegliedes 126, -1, zu ihren Dateneingängen zurückgegeben wird; und der Multiplexer 122 wählt seinen Eingang, um den Inhalt des 8-Bit Haltegliedes, 126 an das 8-Bit Halteglied 128 zu übertragen. Der Multiplexer 130 wählt seinen Eingang aus und legt den Inhalt des 8-Bit Haltegliedes 126 an den Speicherschaltkreis (nicht gezeigt) des Rückkehrspeichers 26. Auf das Auftreten des nächsten nachfolgenden TKT-Taktes (wobei geeignete Befehlssignale aus der Anweisungsdecodiereinheit, d. h. J1-EN, J2-EN HOCH angenommen werden), werden die Adressenzeiger, die von den 8-Bit Haltegliedern 126 und 128 enthalten werden, dekrementiert. Beachte, daß diese Schiebeoperation durch die notwendigen Steuersignale begleitet sein wird, die durch die Anweisungsdecodiereinheit 14 erzeugt werden, um das Register 80 (Fig. 5) dazu zu veranlassen, die Daten, die auf dem R-BUS aus dem Rückkehrspeicher 26 sitzen, zu empfangen und zurückzuhalten; d. h., das I-CTL-Signal wählt den Eingang 3 des Multiplexers 78 aus, das I-LD-Signal ist HOCH und das R-BEFÄHIGE-Signal setzt das Drei-Zustands-Gerät 86 in seinen hohen Impedanzzustand, so daß auf die Ankunft des TKT-Signals, das den J-Stapelzeiger dekrementiert, das Register 80 auch mit der abgehobenen Größe geladen wird.
  • ALE und T-Register
  • In Fig. 9 ist in größerer Ausführlichkeit die ALE des Mikroprozessors 10 gezeigt. Die Fig. 10A und 10B zeigen in größerer Ausführlichkeit Teile des Herzens der ALE, den arithmetischen Logikschaltkreis 140. Zuerst Bezug nehmend auf Fig. 9, ist die ALE gezeigt, als einen Vier-Eingangs-Multiplexer 142, sowie den arithmetischen Logikschaltkreis 144, das vorhergenannten T (Oberster der Parameter) Register, einen Nullnachweisschaltkreis 146, ein UND-Gatter 148, welches (aus einem T-EN-Signal aus der Anweisungsdecodiereinheit 14 und dem TKT-Signal) ein Ladesignal für das T-Register erzeugt, und einen Übertrag-Flipflop 150 zu umfassen. Der arithmetische Logikschaltkreis 144 ist im wesentlichen ein 16-Bit Entwurf, der mit zwei Operandeneingängen 144a und 144b versehen ist, die jeweils die Ausgänge [T] und [U] aus dem T-Register (über den Nullnachweisschaltkreis 146) und dem Multiplexer 142 empfangen, wobei sie die Summe von [T] und [U], die Differenz von [T] und [U], die Differenz von [U] und [T], [T] selbst, [U] selbst, das logische [T] ODER [U], das logische [T] UND [U] oder das logische [T] EXKLUSIV-ODER [U] zur Verfügung stellen.
  • Der Ausgang des arithmetischen Logikschaltkreises ist an die Eingänge des T-Registers durch eine Busleitung 154 gekoppelt, welche das Resultat aus der arithmetischen oder logischen Operation überträgt, die auf den Werten ausgeführt wird, die bei den Operanden-Eingängen 144a, 144b des arithmetischen Logikschaltkreises 144 empfangen werden.
  • Der arithmetische Logikschaltkreis 144 empfängt auch OP-SELECT, welches (oben identifizierte) Ergebnis an den Bus 154 zu übertragen ist, und L-VERSCHIEBEN und R-VERSCHIEBEN, welche wirken, um die Links- und Rechts-1-Bit-Verschiebungen des Resultates für Gründe durchzuführen, die unten klarer gemacht werden.
  • Im allgemeinen empfängt die ALE daher vier Größen [SL] aus der Anweisungsdecodiereinheit 14 (Fig. 3), den Ausgang [MD] aus dem Register Multipliziere/Dividiere 202 (Fig. 12), den Ausgang [N] aus dem N-Registerschaltkreis (Fig. 6) und den Ausgang [G] aus einer Vielzahl von internen Registern (Fig. 13), welche weiter unten vollständiger beschrieben werden. Beachte, daß es der Multiplexer 142 ist, der über den arithmetischen Logikschaltkreis 144 einen 16-Bit breiten Kommunikationspfad von entweder dem I-Register oder dem N-Registerschaltkreis zu dem T-Register festsetzt. Beachte auch, daß der Ausgang [T] des T-Registers sowohl zu dem I-Register als auch dem N-Register übertragen wird. Auf geeignete Signale aus der Anweisungsdecodiereinheit 14, kann Information aus dem Parameterstapel S, einschließlich des N-Registerschaltkreises, auf sequentielle Weise an das T-Register geliefert werden, oder alternativ dazu kann Information aus dem Rückkehrstapel R über das I-Register an das T-Register übertragen werden. Beachte insbesondere die Tatsache, daß dieser Datenpfad S Information, die in dem Parameterspeicher 24 abgelegt ist, erlaubt, zu dem Rückkehrspeicher 26 übertragen zu werden und umgekehrt, wie benötigt. Beachte noch weiter, daß die Austauschpfade, die als 36 und 38 in Fig. 1 bezeichnet werden, durch die Multiplexer 142 und den Multiplexer 96 (für den Austauschpfad 36) und den Multiplexer 78 (für den Austauschpfad 38) festgesetzt werden.
  • Wie gesehen werden wird, testen bestimmte der Anweisungen den Inhalt des T-Registers auf "Null", um zu bestimmen, ob die Operation fortzusetzen oder eine andere Anweisungsoption auszuwählen ist. Demgemäß umfaßt der (16-Bit) Datenpfad aus dem T-Register zu der arithmetischen Logikschaltung 144 der ALE einen Nullnachweisschaltkreis 146, der ein "T=0" ausgibt, wenn der Ausgang [T] eine 0 ist. Wie in der Fig. 3 veranschaulicht ist, ist der T=0 ein Eingang an den Anweisungsdecodierschaltkreis 52 der Anweisungsdecodiereinheit 14.
  • Der arithmetische Logikschaltkreis 144 ist in größerer Ausführlichkeit in Fig. 10A veranschaulicht. Wie veranschaulicht, umfaßt die arithmetische Logikeinheit 16 zusammengeschaltete Stufen, wobei jede Stufe in einer dem Fachmann wohlbekannten Art strukturiert ist, um die notwendigen arithmetischen und/oder logischen Signale zu erzeugen, die auf eine arithmetische Logikschaltung indikativ sind. So erzeugt z. B., wie in Fig. 10B veranschaulicht, die individuelle arithmetische Logikstufe Yn aus ihren Operandeneingängen [Un] und [Tn] (zusammen mit jedem Übertrag aus der unmittelbar niedrigeren Stufe Yn-1), die Terme Un, Tn, (Tn + Un), (Tn-Un), (Un-Tn), (Tn ODER Un), (Tn UND Un) und (Tn EKLU- SIV-ODER Un) Diese Ausgänge von jedem der Stufen Y&sub0; . . . Y&sub1;&sub5; werden jeweils an entsprechende Multiplexer 160(Y&sub0;) . . . 160(Y&sub1;&sub5;) angelegt. Jeder der Ausgangs-Multiplexer 160(Y&sub0;) . . . 160(Y&sub1;&sub5;) empfängt einen 3-Bit Bus, der ein Auswahlsignal OP-SELECT trägt. Das OP-SELECT-Signal wird durch die Anweisungsdecodiereinheit 14 in Abhängigkeit von einer decodierten Anweisung erzeugt, die diktiert, welcher der Terme ausgewählt werden wird.
  • Nun wieder auf Fig 10A Bezug nehmend, wird der Ausgang von jedem der Multiplexer 160(Y&sub0;)-160(Y&sub1;&sub5;) jeder an noch einen anderen entsprechenden Multiplexer 162 (Y&sub0;)-162(Y&sub1;&sub5;) angelegt. Zusätzlich werden die Ausgangsleitungen von jedem der Multiplexer 160(Y&sub1;)-160(Y&sub1;&sub4;) an die Multiplexer der Bitpositionen unmittelbar darüber und darunter angelegt. So wird z. B. die Ausgangsleitung aus dem Multiplexer 160(Yn) zusätzlich dazu, daß sie an den Eingang 2 ihres assoziierten Multiplexers 162(Yn) angelegt wird, auch an den Eingang 1 des Multiplexers 162(Yn-1) und den Eingang 3 des Multiplexers 162(Yn+1) angelegt. Die Multiplexer für die arithmetischen Logikstufen Y&sub0; und Y&sub1;&sub5; sind nur dadurch verschieden, daß die Multiplexer 162(Y&sub0;) am Eingang 3 das Übertragehinein (Ci) empfängt und der Multiplexer 162(Y&sub1;&sub5;) an Eingang 1 den Ausgang eines Multiplexers 164 empfängt, welcher einen von vier verfügbaren Signalen auswählt: den Ausgang des Multiplexers 160(Y&sub1;&sub5;), ÜBERTRAG, LSB aus dem N-Register, N&sub0;, oder ein "Nullzeichen". Die Auswahl, welches der Signale an den Eingang 1 des Multiplexers 162(Y&sub1;&sub5;) gekoppelt wird, wird durch das CTL-ONE Signal durchgeführt, das durch die Anweisungsdecodiereinheit 14 (Fig. 3) erzeugt wird.
  • Die Multiplexer 162(Y&sub0;)-162(Y&sub1;&sub5;) wirken, um 1-Bit Linksverschiebungen, 1-Bit Rechtsverschiebungen oder keine Verschiebung auf das Ergebnis aus den arithmetischen Logikstufen Y&sub0; bis Y&sub1;&sub5; hin zu bewirken. Zusätzlich wirken die Multiplexer, um das Zeichenbit (d. h. das MSB) über das ganze T-Register fortzupflanzen. Eine 1-Bit LinksVERSCHIEBEN- operation wird ausgeführt, wenn das Signal L-VERSCHIEBEN, das durch die Anweisungsdecodiereinheit 14 erzeugt wird, HOCH ist (das R-VERSCHIEBENsignal wird NIEDRIG gehalten), und zwar mit einem Übertrag (Ci), der in die LSB-Position hinein verschoben wird; eine RechtsVERSCHIEBENoperation wird ausgeführt, wenn die R-VERSCHIEBEN HOCH ist (und das L-VER- SCHIEBEN-Signal NIEDRIG ist), wobei entweder der Ausgang des Multiplexers 160(Y&sub1;&sub5;), das ÜBERTRAGE-Signal aus dem Flipflop 150 (Fig. 9), das LSB aus dem N-Register, N&sub0;, oder eine "Null" der mutmaßliche Ausgang der Stufe Y&sub1;&sub5; ist; oder, wenn sowohl das L-VERSCHIEBEN- als auch das R-VERSCHIEBEN-Signal NIEDRIG sind, werden die Ausgänge der Multiplexer 160(Y&sub0;)-160(Y&sub1;&sub5;) durch die entsprechenden Multiplexer 162(Y&sub0;)-162(Y&sub1;&sub5;) weitergegeben. Die ausgewählten Resultate werden durch die Busleitung 154 empfangen und an das T-Register (Fig. 9) übertragen.
  • Die Zeichenbitfortpflanzung wird bewirkt, indem HOCH das 0< Signal ist. Dies veranlaßt die Multiplexer 162(Y&sub0;)- 162(Y&sub1;&sub5;), ihren Eingang 2 der Busleitung 154 mitzuteilen. Der Eingang 2 von jedem Multiplexer 162(Y&sub0;)-162(Y&sub1;&sub5;) empfängt das MSB-Bit, das durch den Multiplexer 160 (Y&sub1;&sub5;) weitergereicht wird.
  • Andere interne Register
  • Der Mikroprozessor 10 gliedert andere Register ein, zusammen mit einem Zweiweg-Übertragungs-"Austausch"-Pfad (über den Multiplexer 142) an die ALE. Diese Register sind in Fig. 12 gezeigt und umfassen das Multipliziere/Dividiere (MD) -Register 214, das Quadratwurzel- (SR) -Register 204, das B Register 206 und das X Register 208 - alle vorsetzbar aus dem Ausgang [T] des T-Registers. Die Ausgänge dieser Register werden selektiv an die ALE über den G-Multiplexer 210 übertragen.
  • Fig. 12 offenbart auch einen Quadratwurzellogikschaltkreis 220, welcher die Ausgänge der MD und des SR-Registers empfängt, um (als das 16-Bit Signal [M/S]) das logische ODER des Inhalts des SR-Registers 204 Inhaltes um 2 verschoben mit dem Inhalt des MD-Registers 202 zur Verfügung zu stellen.
  • Befehlssatz
  • Nachdem nun die Schaltungsanordnung des Mikroprozessors 10 beschrieben worden ist, wird der Befehlssatz mit Bezug auf die Tabellen I-XIV erklärt und diskutiert werden.
  • Die Befehle können im allgemeinen in vier Kategorien gruppiert werden: (1) die arithmetische Gruppe umfaßt jene Befehle der Gruppen I und II, welche die Befehle enthalten, die arithmetische Operationen ausführten; (2) die Sprunggruppe umfaßt die Anweisungen, welche bedingte oder absolute Programmsprünge vorsehen; (3) die Indizierungsbefehle sind im wesentlichen "Einstell"-Befehle oder Befehle, die iterative Operationen bewirken; und (4) die Datenholen-/ablegen-Anweisungen, welche Information zwischen verschiedenen Speicherplätzen, Registern und dergleichen übertragen.
  • Wie gesehen werden wird, verwenden die Mnemoniken, die für jeden Befehl genauso wie für seinen Betrieb verwendet werden, die FORTH-Programmiersprache und -konzepte so viel wie möglich.
  • Arithmetische Befehle
  • Die Tabellen I und II führen die Anweisungen bzw. Befehle aus, die verwendet werden, um den Mikroprozessor 10 (Fig. 1) und insbesondere seine ALE (Fig. 9, 10A und 10B) dazu zu veranlassen, arithmetische Operationen auszuführen. TABELLE - I ARITHMETISCHE BEFEHLE
  • OP-CODE (OKTAL) BEFEHLS-MNEMONIC WIRKUNG
  • 100000 NO OP Keine Operation
  • 107020 DROP Hebe N nach T hinein ab
  • 107000 DROP DUP Kopiere N nach T
  • 107120 DUP Drauflegen T nach N hinein
  • 107120 OVER Kopiere N nach T während T auf N draufgelegt wird
  • 107100 SWAP Vertausche N und T
  • 104020 + Addiere N zu T und hole N heraus
  • 102420 +c Addiere N zu T mit Übertrag und hebe N ab
  • 106020 - Subtrahiere T von N und hebe N ab
  • 106420 -c Subtrahiere T von N mit Übertrag und hebe N ab
  • 102020 SWAP - Subtrahiere N von T und hebe N ab
  • 102420 SWAP -c Subtrahiere N von T mit Übertrag und hebe N ab
  • 103020 OR Verknüpfe N logisch ODER zu T und hebe N ab
  • 105020 XOR Verknüpfe N logisch EXKLUSIV/ODER zu T und hebe N ab
  • 101020 AND Verknüpfe N logisch UND zu T und hebe N ab
  • 100001 2/ Verschiebe T ein Bit nach rechts mit N&sub0; zu T&sub1;&sub5;
  • 100002 2* Verschiebe T ein Bit nach links mit N&sub1;&sub5; zu T&sub0;
  • 100003 0< Pflanze das Zeichen von T durch T fort
  • 100011 D2/ Verschiebe die Kombination von N und T ein Bit nach links
  • 100012 D2* Verschiebe die Kombination von N und T ein Bit nach rechts
  • 104211 *' Multiplikationsschritt
  • 102211 *- Vorzeichenbehafteter Multiplikationsschritt
  • 102212 *F Fraktioneller Multiplikationsschritt
  • 102216 /' Divisionsschritt
  • 102214 /'' Letzter Divisionsschritt
  • 102616 S' Quadratwurzelschritt
  • Nun auf Tabelle I Bezug nehmend, sind dort veranschaulicht der Befehls- bzw. OP-Code, das Mnemonic und eine kurze Beschreibung der Operation oder Wirkung von jedem der grundlegenden arithmetischen Befehle; die komplexeren arithmetischen Anweisungen; d. h., die Anweisungen, die multiple Operationen in einem Maschinenzyklus ausführen können.
  • Die ersten wenigen Anweisungen werden in Abhängigkeit von der Schaltungsanordnung beschrieben, die in den Fig. 1 bis 13 veranschaulicht ist, um ein klares Verständnis von nicht nur der Ausführung einer Anweisung, sondern auch dem Betrieb der Schaltungsanordnungen selbst und, in der Auswirkung der notwendigen Codierung zu schaffen, die in-die Anweisungsdecodierschaltung 52 (Fig. 3) eingesetzt werden muß, um die notwendigen Steuersignale (wie jene, die in Verbindung mit Fig. 3 gezeigt sind) in Abhängigkeit von der Op-Code-Bitstruktur der Anweisung zu aktivieren.
  • So tut, nun Bezug nehmend auf Fig. 1, die NO OP- Anweisung- (d. h. KEINE ANWEISUNG -Anweisung) genau das: sie führt keine Operation wie auch immer aus; es ist eine "Null"-Anweisung. Die DROP-Anweisung, d. h. der DROP-Befehl, veranlaßt den Inhalt des N-Registers, d. h. das Registers 98 (Fig. 6), über den Multiplexer 142, die arithmetische Logikschaltung 144 (und über die Multiplexer 160 und 162) übertragen zu werden.
  • Die Anweisungsdecodierschaltung 52 baut daher den geeigneten Datenpfad über die Steuersignale ALE-CTL, OP-SELECT, L-VERSCHIEBEN, R-VERSCHIEBEN und T-BEFÄHIGE auf. Als eine Veranschaulichung der Zeitsteuerung dieser (und jeder anderen) Anweisung, nimm an, daß die Anweisung in dem Anweisungshalteglied 50 zu dem Zeit T&sub0; (Fig. 12) gehalten wurde. Während der DECODIER- Zeit, die in Fig. 12 angedeutet ist, nimmt der Anweisungsdecodierer 52 die Anweisung aus dem Anweisungshalteglied 50 wahr, decodiert diese Anweisung und baut den geeigneten Datenpfad zu dem T-Register auf, indem die notwendige vorgenannte Torsteuerung und die Befehlssignale aktiviert werden. Zur Zeit T&sub1;, wenn die nächste Anweisung in das Anweisungshalteglied 50 eingerastet werden soll, veranlaßt das TKT-Signal (zusammen mit T-EN über das UND-Gatter 48), die übertragene Information, in dem T-Register eingestellt zu werden.
  • Die DROP-Anweisung "hebt" auch den Parameterstapel S "ab". Demgemäß veranlassen die internen Torsteuerungs- und Befehlssignale, die aus der Anweisungsdecodierschaltung 52 ausgegeben werden, den Speicherplatz, der (zu der Zeit der Ausführung der DROP-Anweisung) durch das Torbit-Halteglied des Stapelzeigers K (nicht gezeigt) bezeichnet wird, der dem 8-Bit Halteglied 128 des Stapelzeigers J (Fig. 8) entspricht, über den Multiplexer 196 zu dem Register 98 geleitet und dort hinein bei der nächsten ansteigenden Flanke des TKT-Signals, d. h. zu der Zeit T&sub1; des oben beschriebenen Beispiels, hineingeladen zu werden.
  • Die DROP DUP Anweisung ist im wesentlichen die gleiche wie die DROP Anweisung, außer daß der Parameterstapel nicht abgehoben wird. So ist beim Abschluß der DROP DUP Anweisung der Inhalt des N-Registers identisch mit dem des T-Registers.
  • Die DUP Anweisung "legt" den Inhalt des T-Registers auf den Parameterstapel S "auf". So erfordert die Ausführung dieser Anweisung den Eingang 1 des Multiplexers 96 (Fig. 6), um den Ausgang [T] des T-Registers für die Kommunikation mit dem Register 98 auszuwählen. Der Ausgang [N] wird, da auf den E/A-Anschlüssen 22 und, daher zu dem Parameterspeicher 24 (Fig. 1) des S-Busses übertragen. Bei dem nächsten TAKT-Signal (und dem TKT-Signal, das daraus abgeleitet wird), wird der Inhalt des T-Registers in das N-Register hineingeladen, zur selben Zeit, zu der der (vorhergehende) Inhalt des N-Registers in den Parameterspeicher 24 in den Speicherplatz hineingeladen wird, der durch das K-Stapelzeigergegenstück des 8-Bit Haltegliedes 128 bezeichnet ist, und die (nicht gezeigten) 8-Bit Halteglieder des Stapelzeigers K um 1 inkrementiert werden.
  • Die OVER (ÜBER) Anweisung verwendet die in Fig. 1 veranschaulichte Verbindung 36 zwischen dem T-Register der ALE und dem N-Register. Nimm für den Zweck der Veranschaulichung dieser Anweisung an, daß gerade nach der Zeit T&sub0; (Fig. 12) der Inhalt des T-Registers T(0) ist und der Inhalt des N-Registers N(0) ist. Gerade nach der Zeit T&sub1; (Fig. 12) wird der Inhalt des T-Registers N(0) sein, der Inhalt des N-Registers wird T(&sub0;) sein und der Speicherplatz des Oberteils dieses Teils des Parameterstapels S, der in den Parameterspeicher 24 enthalten ist, wird N(0) enthalten. Diese Anweisung erfordert von den notwendigen internen Torsteuerungs- und Befehlssignalen, durch die Anweisungsdecodierschaltung 52 ausgegeben zu werden, um den Multiplexer 96 (Fig. 6) dazu zu veranlassen, den Ausgang [T] aus dem T-Register auszuwählen, den Multiplexer 142 (und die arithmetische Logikschaltung 144) den Ausgang [N] des N-Registers, das zu dem T-Register übertragen werden soll, auszuwählen und zu übertragen, und ein (nicht gezeigtes) geeignetes Lesekommando dazu zu veranlassen, zu dem Parameterstapelspeicher 24 übertragen zu werden, um die notwendigen Register und Speicher zu laden.
  • Der SWAP Befehl, d. h. die AUSTAUSCH-Anweisung, verwendet auch den simultanen Zweiweg-Datenpfad 36 und veranlaßt den Multiplexer 142 und die arithmetische Logikschaltung 144 dazu, den Ausgang [N] des N-Registers zu dem T-Register zu derselben Zeit zu übertragen, zu der der Ausgang [T] des T-Registers über den Multiplexer 96 zu dem Register 98 des N-Registers übertragen wird. Die Wirkung ist, die jeweiligen Inhalte der N- und T-Register auszutauschen oder zu "SWAP"pen.
  • Die + Anweisung addiert den Inhalt der N- und T-Register, beläßt das Resultat im T-Register und "hebt" den Parameterstapel S in das N-Register "ab"; die (nicht gezeigten) 8-Bit Register des Stapelzeigers K, die denen des Stapelzeigers J (Fig. 8) entsprechen, werden jedes um 1 dekrementiert.
  • Die +c -Anweisung verwendet das ÜBERTRAG-Signal aus dem Flipflop 150 der ALE (Fig. 9). Das ÜBERTRAG-Signal wird zu dem Ci Eingang der ALE torgesteuert, so daß die Operation, den Inhalt des N-Registers zu dem Inhalt des T-Registers zusammen mit irgendeinem Übertrag aus einer vorhergehenden Anweisung zu addieren, ausgeführt wird und der Parameterstapel S abgehoben wird.
  • Die - Anweisung ist die gleiche wie die + Anweisung, außer daß es eine Subtraktionsanweisung ist, die ausgeführt wird, und der Inhalt des T-Registers wird von dem N-Register subtrahiert. Es kann zur Zeit die geeignete Zeit sein, wieder herauszustellen, daß jede individuelle Stufe Y&sub0;-Y&sub1;&sub5; alle notwendigen arithmetischen (d. h. Additions- und Subtraktions-)Operationen ausführt, so daß an dem Ausgang von jeder Stufe die Operationen sind, wie vorhergehend und in Fig. 10B angedeutet. Eine spezielle Operation wird durch das OP-SELECT-Signal ausgewählt, das durch die Anweisungsdecodierschaltung 52 der Anweisungsdecodiereinheit 14 erzeugt wird. So würde, für die Arithmetische-Logik-Stufe Yn-Ausgänge, die in Fig. 10B veranschaulicht sind, die + Anweisung das OP-SELECT-Signal dazu veranlassen, von einem vorbestimmten Zustand zu sein, um den Multiplexer 160 (Yn) dazu zu veranlassen, den (Tn + Un) für den Durchtritt zu dem zweiten Multiplexer 162 (Yn) (Fig. 10A) auszuwählen. Selbstverständlich ist der Operand U in der Tat der Ausgang [N] aus der N-Registerschaltung über den Multiplexer 142 (Fig. 9). In ähnlicher Art würde die - Anweisung über die Erzeugung des OP-SELECT-Signals den (Un-Tn) auswählen.
  • Die -c ist, wie in Tabelle I angedeutet, eine Operation, die den Inhalt des T-Registers von der N-Registerschaltung (d. h. Register 98) und jeden Übertrag abzieht, wobei das Ergebnis in dem T-Register gelassen wird. Der Parameterstapel S wird abgehoben.
  • Die SWAP- und SWAP-c sind in der Wirkung die gleichen, wie die - und -c Anweisungen, die oben beschrieben sind, außer daß das Resultat erhalten wird, indem der [U]-Operand von dem Inhalt des T-Registers subtrahiert wird. Bezug nehmend auf Fig. 10B, wird das OP-SELECT-Signal den Multiplexer 160(Yn) genauso wie die anderen Multiplexer 160 veranlassen.
  • Die OR, XOR und AND (d. h. die ODER, ENTWEDER/ODER und UND) führen die angezeigten logischen Operationen aus, und zwar veranlassen sie die notwendigen Multiplexerauswahlen, durch die internen Torsteuerungs- und Befehlssignale durchgeführt zu werden, die durch die Anweisungsdecodiereinheit 14 erzeugt werden.
  • Die 2/ und 2* führt Rechts- und Linksverschiebeoperationen aus, und zwar verwenden sie die Multiplexer 162 (Fig. 10A). Die 2/ Anweisung aktiviert die R-VERSCHIEBE- und CTL1-Signale, so daß jeder der Multiplexer 162 (?14) -162 (?0) um seinen entsprechenden Eingang 1 auszuwählen. Der MSB-Multiplexer 162 (Y&sub1;&sub5;) empfängt an seinem Eingang 1 das N&sub0; aus dem Multiplexer 163. Die 2* Anweisung aktiviert die L-VER- SCHIEBE- und C-CTL-Signale, um die Multiplexer 162 (Y&sub0;)-162(Y&sub1;&sub5;) und 165 dazu zu betätigen, effektiv den Inhalt des T-Registers ein Bit nach links zu verschieben, wobei das MSB, N&sub1;&sub5; des N-Registers, in die LSB-Position des N-Registers, hineingeschoben wird.
  • Die 0< Anweisung wirkt, um das Vorzeichen (d. h. das MSB) durch das T-Register fortzupflanzen.
  • Die D2/ und D2* Anweisungen führen Links- und Rechts-1-Bit-Verschiebungen von sowohl dem N- als auch dem T-Register aus, als ob sie ein verknüpftes 32-Bit Register wären, und zwar bildet das T-Register die oberen signifikantesten 16-Bit. Die Links- und Rechtsverschiebungen des T-Registers werden wie oben mit Bezug auf die 2/ und 2* Anweisungen beschrieben ausgeführt. Die Verschiebung des N-Registers wird ausgeführt, indem die Multiplexer 96 und der Rückkopplungspfad aus dem Register 98 verwendet werden. Wenn eine Links-Verschiebung ausgeführt wird, wird der Eingang 4 des Multiplexers 96 durch das N-CTL-Signal ausgewählt, was eine 1-Bit-Linksverschiebung des Inhaltes des Registers 98 bewirkt, wobei der ÜBERTRAG in die LSB-Position hineingeschoben wird. Wenn eine Rechts-Verschiebung bewirkt wird, wirkt das N-CTL-Signal auf die Auswahl von Eingang 3 (bei welchem die 15-Bit Positionen mit niedriger Ordnung des N-Registers 98 zu dem Register 98 übertragen werden, wie die Hochordnungs-15-Bit-Positionen, die mit dem T&sub0; als dem LSB kombiniert werden).
  • Die *!, *- und *F-Multiplizieranweisungen verwenden die T- und N-Register (Fig. 6 und 9) zusammen mit dem Multiplizier-/Dividier(MD)-Register 202 (Fig. 13). Bevor diese Anweisungen verwendet werden, setzen Datenübertragungsanweisungen (unten diskutiert) den Multiplizierer in das MD-Register 202, den Multiplikanden in das N-Register und das T-Register wird gelöscht. Die Ausführung der Multiplizieranweisung, *!, veranlaßt das MD-Register 202, über den Multiplexer 142 der ALE 14 (wo es als der Eingang [MD] erscheint) übertragen zu werden, und wird angelegt an die arithmetische logische Schaltung 144 wie der Operandeneingang [U] und zu dem Inhalt des T addiert, wenn das LSB, N&sub0;, des N-Registers eine "1" ist. Gleichzeitig mit der vorhergehend beschriebenen Einstellung werden die T- und N-Register geladen und zwar mit ihren 1-Bit linksverschobenen Inhalt.
  • Die Operation für den vorzeichenbehafteten Multiplikationsschritt, *-, ist identisch, außer daß der Inhalt des MD-Registers 202 von dem des T-Registers subtrahiert wird, wenn N&sub0; eine "1" ist. Der fraktionelle Multiplizierschritt *F ist identisch mit dem vorzeichenbehafteten Multiplizierschritt, außer daß eine Linksverschiebung ausgeführt wird.
  • Der Dividierschritt, /', subtrahiert den Inhalt des MD-Registers von dem des T-Registers. Wenn das Resultat dieser Subtraktion negativ ist, (was durch einen Übertrag aus der arithmetischen Logikschaltung angedeutet würde,) würde das Resultat verworfen und die 32-Bit Kombination, die durch die T- und N-Register gebildet wird, wird ein Bit nach links verschoben, wobei das ÜBERTRAG-Signal in die LSB-Position des N-Registers hineingeschoben wird. Wenn das Resultat nicht negativ ist, wird es in das T-Register, ein Bit nach links verschoben, hineingeladen (zusammen mit der Verschiebung des N-Registers).
  • Die Multiplizier- und Dividierschritte werden nur einmal ausgeführt, wenn sie angetroffen werden. Iterative Operationen verwenden die MAL-Indizierungsanweisung (Tabelle IV), in einer Weise, die unten beschrieben werden wird, und zwar in Verbindung mit dem I-Register. Die Dividieroperation erfordert jedoch eine spezielle Behandlung für den letzten Schritt des Prozesses und daher ist die Letzter-Dividier- Schritt-Anweisung, /'', vorgesehen. Diese Anweisung ist im wesentlichen identisch mit der Dividierschrittanweisung, /', außer daß die Ausführung nicht mit irgendeiner Verschiebung des T-Registers aufhört; nur das N-Register wird ein Bit verschoben. TABELLE II ARITHMETISCHE ANWEISUNG (KOMBINIERT)
  • OP-CODE (OKTAL) ANWEISUNGS-MNEMONIC WIRKUNG 104000 OVER + N + T; Resultat in T; keine Stapeloperation
  • 104400 OVER +c N + T + Übertrag; Resultat in T; keine Stapeloperation;
  • 102000 OVER - N - T; Resultat in T
  • 102400 OVER -c N - T - Übertrag; Resultat in T
  • 106000 OVER SWAP - T - N
  • 106400 OVER SWAP -c T - N - Übertrag
  • 103000 OVER OR T ODER N
  • 105000 OVER XOR T EXKLUSIV-ODER N
  • 101000 OVER AND T UND N
  • Die kombinierten arithmetischen Anweisungen von Tabelle II, oben, sind im wesentlichen identisch mit jenen, die mit Bezug auf Tabelle I diskutiert wurden, außer daß aufgrund des Entwurfs bestimmte Anweisungen dazu kombiniert werden können, in einem Blockzyklus ausgeführt zu werden. So kombiniert z. B. das OVER + ( d. h. ÜBER + ) die OVER (d. h. ÜBER) und + Anweisungen von Tabelle I, um den Inhalt der Register N und T dazu zu veranlassen, addiert und in T hineingeladen zu werden. Der Inhalt des N-Registers und der Rest des Parameterstapels S bleibt unverändert. In ähnlicher Weise addiert das OVER und +c den Inhalt des N-Registers zu dem des T-Registers mit irgendeinem Übertrag, wobei das Resultat durch das T-Register zurückgehalten wird. Wieder werden der Parameterstapel S, einschließlich des Inhalts des N-Registers ungestört gelassen.
  • Sprunganweisungen
  • Sprünge von einem Speicherplatz zu einem anderen, primär aus Unterroutinen-Aufrufen und -rückkehren, welche oft tief vernestet sein können, sind der FORTH-Sprache engstens verbunden. Der Mikroprozessor 10 der vorliegenden Erfindung zusammen mit dem Rückkehrstapel R schafft ein optimiertes Gerät für die Ausführung derartiger Speichersprünge. Die Tabelle 111, unten, listet die Operationscodes, Mnemoniken und Wirkungen auf, die für jeden der fünf Sprunganweisungen genommen werden. TABELLE - III SPRÜNGE
  • OP-CODE (OKTAL) BEFEHLS-MNEMONIC WIRKUNG 0aaaaa :word Absoluter Sprung zur Unter-Routine
  • 11aaaa IF Sprung wenn T = 0
  • 13aaaa ELSE Unbedingter Sprung
  • 12aaaa - LOOP Sprung wenn I < > 0; dekrementiere
  • 0xxx4x Rückkehr
  • In allen der ersten vier Anweisungen, dem :word, IF, ELSE, und -LOOP, sind die Adressen des Speicherplatzes des Hauptspeichers 12, zu welchem der Sprung auftreten wird, in der Anweisung selbst eingebettet (im op-Code als aa . . a angedeutet).
  • Zuerst auf die :word-Anweisung, d. h. die :wort-Anweisung, Bezug nehmend, werden zwei Operationen erfordert, ausgeführt zu werden, da dies ein Sprung zu einer Unter-Routine ist. Zuerst muß der Rückkehrpfad festgesetzt werden; und zweitens muß die Sprungadresse auf dem A-BUS zu der Adresse des Hauptspeichers 12 (Fig. 1) angeordnet werden. So enthält, während des Decodierungs- und Einstellprozesses des Taktzyklus der Programmzähler P (oder spezifischer, das Programmregister 62, das darin enthalten ist) die Adresse der nächsten sequentiellen Anweisung, die ausgeführt würde, wenn kein Sprung durchgeführt würde. Diese Adresse muß abgelegt werden. Demgemäß wird der Ausgang [P] des Programmregisters 62 durch den Multiplexer 78 (Fig. 5) für die Anlegung an das Register 80 der I-Registerschaltungausgewählt. Der Reihe nach wird der Ausgang [L] des Haltegliedes 50 (Fig. 3) durch den Multiplexer 60 (Fig. 4) für die Anlegung an den A-BUS und an das Programmregister 62 ausgewählt, erhöht um 1 durch den Addierer 64. Dadurch wird ein Sprung zu der Adresse der Unter-Routine gemacht, die nächste sequentielle Adresse der Unter-Routine in das Programmregister 62 gesetzt und die Rückkehradresse auf den Rückkehrstapel R bei dem I-Registerschaltkreis abgelegt, wobei die 8-Bit Halteglieder 126, 128 um 1 inkrementieren, um auf automatische Weise die Ablegeoperation des Stapels auszuführen.
  • Die Rückkehr wird durch die Verwendung der Anweisung ausgeführt, welche das Bit 6 des Anweisungswortes ist (wobei das LSB das erste Bit ist, das LSB+1 das zweite Bit ist, usw.) und kann in jede andere Anweisung "eingebettet" werden, um die Rückkehr zu bewirken. So kann jede Unter-Routine in irgendeiner Anweisung enden, zusammen mit ihren sechstem Bit, (welches normalerweise eine "0" wäre,) das gesetzt ist, eine "1" zu sein, um simultan die letzte Anweisung auszuführen und die notwendige Rückkehr auszuführen.
  • Die Rückkehr wird bewirkt, indem der Ausgang [I] des Registers 80 des I-Registerschaltkreises (welcher die Rückkehradresse enthalten sollte) zu dem A-BUS über den Multiplexer 60 übertragen wird, so daß am Ende der Decodier-/Einstellzeit der Parameterstapel R "abgehoben" wird und der Inhalt des Speicherplatzes, der durch den Ausgang [I] angedeutet wird, wird durch das Hauptspeichertor M an die Anweisungsdecodiereinheit 14 gegeben und in das Halteglied 50 geladen.
  • Die IF-Anweisung führt einen Sprung (zu einer Adresse, die aus den zwölf unteren Bits von [L] und den oberen vier Bits des Programmregisters 62 gebildet wird,) aus, nachdem das T-Register gegen eine 0 getestet wird. Demgemäß wird die Ausgabe T = 0 aus der Nulldetektierschaltung 146 der ALE (Fig. 9) an die Anweisungsdecodierschaltung 52 (Fig. 3) gekoppelt und verwendet, in Verbindung mit dem Inhalt des Haltegliedes 50, um zu bestimmen, ob ein Sprung zu bewirken ist oder nicht. Wenn der Inhalt des T-Registers in der Tat 0 ist, wird der Sprung in der gleichen Weise wie mit Bezug auf die :word -Anweisung beschrieben ausgeführt. Wenn nicht, wird der Inhalt des Programmregisters 62 mit dem A-BUS gekoppelt.
  • Die LOOP-Anweisung (d.h die Schleife-Anweisung) verwendet das I = 0, das durch die Nulltestschaltung 82 des I-Registerschaltkreises (Fig. 5) erzeugt wird, in ziemlich gleicher Weise, wie die IF-Anweisung das T = 0-Signal verwendet. Wenn das I = 0 nicht wahr ist, wird der Sprung genommen und das Register 80 mit seinem vorherigen Inhalt -1 geladen; das heißt, der Inhalt des Registers 80 wird um 1 über den Addierer 84 und den Eingang 4 des Multiplexers 78 dekrementiert.
  • Die ELSE-Anweisung ist ein unbedingter Sprung. Diese Anweisung veranlaßt den Multiplexer 60 (4) immer dazu, den Ausgang [L] von der Anweisungsdecodiereinheit 14 dazu auszuwählen, zum A-BUS übertragen zu werden.
  • Indizierende Anweisungen
  • Bestimmte iterative Operationen, die fähig sind, durch den Mikroprozessor ausgeführt zu werden, und durch die vier indizierenden Anweisungen eingestellt werden, welche unten in Tabelle IV aufgelistet sind. Diese Anweisungen setzen einen Index in das Register 80 der I-Registerschaltung hinein, welcher schließlich verwendet wird, um die Anzahl der Iterationen zu verfolgen, die durch die wiederholte (jeder Taktzyklus) Dekrementierung des Registers 80 ausgeführt wird, bis sein Inhalt 0 wird. TABELLE - IV INDIZIERUNG
  • OP-CODE (OKTAL) ANWEISUNGS-MNEMONIC WIRKUNG 147302 I I in T angeordnet, T auf dem Parameterstapel abgelegt
  • 147321 R> Hebe Rückkehrstapel ab, lege I auf den Parameterstapel
  • 157201 > R Hebe Parameterstapel ab, lege T auf den Rückkehrstapel 157221 TIMES Wiederhole
  • Die I-Anweisung legt den Inhalt des I-Registers (d. h. des Registers 80 - Fig. 5) auf den Parameterstapel S. Während der Decodier- und Einstellzeit dieser Anweisung wird die Ausgabe [I] an das T-Register über den Multiplexer 142 und die arithmetischen logische Schaltung 144 gekoppelt. Es sollte ersichtlich sein, daß, um den Ausgang [I] zum T-Register zu geben, die Multiplexer 160 (Y&sub0;)-160 (Y&sub1;&sub5;) durch das OP-SELECT-Signal gesetzt werden, nur den U-Operanden für die Verbindung mit der Busleitung 154 auszuwählen. Zusätzlich wird der Ausgang [N] des N-Registers auf den Parameterstapel S draufgelegt, während das Register 98 des N-Registers den Ausgang [T] des T-Registers empfängt.
  • Die R> und > R Anweisungen wirken, um Daten durch die ALE zwischen den Rückkehr- und Parameterstapeln R und S zu bewegen. Die R> Anweisung bewegt Daten aus dem Rückkehrspeicher 26 durch den I-Registerschaltkreis, die ALE und den N-Registerschaltkreis zu dem Parameterspeicher 24. Ihre Ausführung sieht die folgenden simultanen Operationen: Der Inhalt des obersten Speicherplatzes des Rückkehrspeichers 26 wird, wie durch den Inhalt des 8-Bit Haltegliedes 128 des Stapelzeigers J (Fig. 8) angedeutet, in das Register 80 des I-Register-Schaltkreises (Fig. 5) gelesen; der Ausgang [I] des I-Registerschaltkreises wird über den Multiplexer 142 und den arithmetischen Logikschaltkreis 144 zu dem T-Register durchgelassen und in dieses hineingeladen; der Ausgang von [T] des T-Registers wird über den Multiplexer 96 (Fig. 6) zu dem Register 98 des N-Registers durchgelassen, und darin hineingeladen; und der Ausgang [N] des N-Registers wird in den nächsten verfügbaren Speicherplatz des Parameterspeichers 24 geladen, wie durch das 8-Bit Halteglied (nicht gezeigt) des Stapelzeigers K angedeutet, das dem 8-Bit Halteglied 126 des Stapelzeigers J entspricht.
  • Die Anweisung > R verrichtet im wesentlichen das selbe Parameterbewegen, außer daß Daten aus dem Parameterstapel S durch die ALE zum Rückkehrspeicher 26 bewegt werden.
  • Die TIMES Anweisung (d. h. die MAL-Anweisungen) veranlaßt den Mikroprozessor 10, die iterative Operation zu beginnen. Zumindest eine Vorbedingung muß erfüllt werden, bevor die TIMES Anweisung verwendet werden kann: die I-Registerschaltung muß den Index enthalten, d. h. die Anzahl (-2) die für die Anzahl der erwünschten iterativen Schritte indikativ ist. Der TIMES Anweisung muß die Anweisung folgen, die wiederholt durchgeführt werden soll, wie z. B. eine der Multiplizier/Dividier- oder Quadratwurzel-Anweisungen, die mit Bezug auf Tabelle I oben beschrieben sind (Erinnere, daß dies nur Einzelschrittanweisungen sind, bis sie mit der TIMES-Anweisung verwendet werden oder einer der Datenholen- oder -ablegen-Anweisungen, die unten beschrieben sind.
  • Der Index, der in dem I-Registerschaltkreis enthalten sein soll, ist zwei weniger als die tatsächlich gewünschte Anzahl der iterativen Schritte. Der Grund dafür wird in der folgenden Diskussion der iterativen Operation gesehen werden.
  • Wenn die TIMES-Anweisung durch die Anweisungsdecodiereinheit 14 empfangen und decodiert wird, wird eine (nicht gezeigte) Wiederholmarke oder ein Wiederholflipflop gesetzt, die oder das in dem Anweisungsdecodierschaltkreis 52 enthalten ist, und ein weiterer Zugriff des Hauptspeichers 12 wird durchgeführt, um die nächste sequentielle Anweisung herauszuholen, welche diejenige sein wird, die wiederholt ausgeführt wird. So wird die Anweisung, die der TIMES-Anweisung folgt, in das Halteglied 50 der Anweisungsdecodiereinheit 14 geladen und decodiert; und die Ausführung beginnt. Jede Ausführung der Anweisung endet in einem Test des I = 0-Signals durch den Anweisungsdecodierschaltkreis 52. Wenn dieses Signal nicht wahr ist, wird das Register 80 des I-Registerschaltkreises in der Weise dekrementiert, die oben beschrieben ist, und die Anweisung, die in dem Halteglied 50 gehalten wird, wird wieder ausgeführt. Wenn das I = 0 aus dem Nulltestschaltkreis 82 des I-Registerschaltkreises schließlich wahr ist, ist die Anweisung die Anzahl von Malen ausgeführt worden, die durch den Inhalt des Registers 80 angezeigt wurde, als der iterative Prozeß begann, plus 1 (diese letztere Ausführung resultiert aus der Tatsache, daß der Test von I = 0 nach der Anweisungsausführung ausgeführt wird.) Wenn der nächste TAKT (und das hieraus abgeleitete TKT-Signal) empfangen wird, wird die (nicht gezeigte) Wiederholmarke, die in dem Anweisungsdecodierschaltkreis 52 der Anweisungsdecodiereinheit 14 enthalten ist, zurückgesetzt, aber die Anweisung wird ein zusätzliches Mal ausgeführt.
  • Datenübertragungsanweisung
  • Die Datenübertragungsanweisungen betreffen Datenübertragungen zwischen dem Mikroprozessor 10 und dem Hauptspeicher 12, dem E/A-Tor 30 und allen externen Elementen, die daran angeschlossen sind, und zwischen verschiedenen internen Registern des Mikroprozessors. Bis zu einem gewissen Grad können die Indizierungsanweisungen als Datenübertragunganweisungen betrachtet werden, da sie auch die Übertragung Transfer zwischen den Parameter- und Rückkehrstapeln betreffen. Ihr Hauptfokus ist jedoch der Inhalt des I-Registerschaltkreises (für nachfolgende iterative Anweisungsausführung, die die TIMES-Anweisung verwendet) und zu einem geringeren Grad das T-Register der ALE.
  • Die Kategorie der Datenübertragungsanweisungen umfaßt Anweisungen, die die Daten enthalten, die übertragen werden sollen; Anweisungen, die die Adresse des Hauptspeicherplatzes 12 enthalten, an welchem die Daten, die übertragen oder übertragen werden sollen, sitzen; Anweisungen, die eine Speicherplatzadresse erkennen lassen; und Anweisungen, die fähig sind, den 5-Bit X-BUS in einer erweiterten Adressenoperation zu verwenden. TABELLE V KURZBUCHSTABEN-HOLEN
  • OP-CODE (OKTAL) ANWEISUNGS-MNEMONIC WIRKUNG 1575nn nn nn in T angeordnet; T auf den Parameterstapel draufgelegt
  • 1544nn nn + nn + T in T geladen
  • 1546nn nn +c nn + T + Übertrag in T geladen
  • 1524nn nn - T - nn in T geladen
  • 1526nn nn -c T - nn + Übertrag in T geladen
  • 1564nn nn SWAP - N - nn in T geladen
  • 1566nn nn SWAP N - nn + Übertrag in T geladen
  • 1534 nn nn OR T ODER nn in T geladen
  • 1554nn NN XOR T EXKLUSIV-ODER nn in T geladen
  • 1514nn nn AND T UND nn in T geladen TABELLE - VI VOLLBUCHSTABEN-HOLEN
  • OP-CODE (OKTAL) ANWEISUNGS-MNEMONIC WIRKUNG 147500 n Daten aus Speicher in T geladen; T auf Parameterstapel draufgelegt
  • 144400 n+ Daten aus Speicher + T in T geladen
  • 144600 n+c Daten aus Speicher + T + Übertrag in T geladen
  • 142400 n- T - Daten aus Speicher in T angeordnet
  • 142600 n-c T - Daten aus Speicher + Übertrag in T geladen
  • 146400 n SWAP - N - Daten aus Speicher in T geladen
  • 146600 n SWAP -c N - Daten aus Speicher + Übertrag in T geladen
  • 143400 n OR T ODER Daten aus Speicher in T geladen
  • 145400 n XOR T EXKLUSIV-ODER Daten aus Speicher in T geladen
  • 141400 n AND T UND Daten aus Speicher in T geladen
  • Oben dargelegt sind in den Tabellen V und VI jene Anweisungen, die Datenübertragungen zu einem Ort innerhalb des Mikroprozessors 10 miteinbeziehen. Die Kurzbuchstaben-Holen-Anweisungen laden ein Resultat in das T-Register oder belassen es dort und legen entweder den vorhergehenden Inhalt des Registers auf den Parameterstapel oder heben den Stapel ab. So veranlaßt die nn-Anweisung den Anweisungsdecodierschaltkreis 52, die fünf Bits auszugeben, die in der Ausweisung als [SL] eingebettet sind, welche an den Eingang 1 des Multiplexers 142 der ALE angelegt werden. Das ALE-CTL-Signal überträgt das [SL] an den Operandeneingang 144b des arithmetischen Logikschaltkreises 144 als ein 16-Bit Datenwort: die unteren fünf Bits sind nn (d. h. [SL]), und elf Bits höherer Ordnung von Nullen. Zur selben Zeit wird der Inhalt des T-Registers auf den Parameterstapel draufgelegt (d. h., der Inhalt des T-Registers wird in das Register 80 des I-Registerschaltkreises geladen, und der Inhalt des Registers 80 wird in dem nächsten verfügbaren Speicherplatz abgelegt, wie durch das 8-Bit Halteglied des K-Stapelzeigers angezeigt, das dem 8-Bit Halteglied 128 des J-Stapelzeigers entspricht, und der K-Stapelzeiger wird um 1 inkrementiert).
  • Die nn+ Anweisung veranlaßt die Summe von [SL] (d. h. die fünf Bits von nn) und der Inhalt des T-Registers werden in das T-Register geladen.
  • Die nn+c, nn-, und nn-c sind ähnlich zu der nn-Anweisung, außer daß, wo das c gezeigt ist, es mit entweder der Summe oder der Differenz des Inhaltes des T-Registers und des 5-Bit [SL] summiert wird.
  • Die nn OR, nn XOR und nn AND Anweisungen (d.h die nn ODER, nn EXKLUSIV-ODER und nn UND-Anweisungen) führen die logischen Operationen aus, die zwischen [SL] und T angedeutet sind, wobei das Resultat in das T-Register geladen wird.
  • Die Vollbuchstaben-Holen-Anweisungen (Tabelle VI, oben) bezieht eine Datenübertragung direkt aus dem Hauptspeicher 12 zum Mikroprozessor 10 mit ein. So wird z. B. die n Anweisung den Inhalt des zugegriffenen Speicherplatzes dazu veranlassen, auf den Parameterstapel S bei dem N-Registerschaltkreis draufgelegt zu werden (d. h. das Register 80 (Fig. 5)). Der zweite Zyklus der Ausführung dieser Anweisung "swappt" (d. h. tauscht) den Inhalt des T-Registers und des Registers 98, so daß das Ende der Anweisung dieser zwei Zyklusoperationen das T-Register mit den zugegriffenen Daten und das Register 98 findet, das den vorherigen 98 Inhalt des T-Registers enthält, und der vorherige Inhalt des Registers 98 ist auf den Parameterstapel S draufgelegt worden.
  • Um die Ausführung dieser Anweisung ausführlicher darzustellen: Bezug nehmend auf die Fig. 12A nimm an, daß die Anweisung in dem Halteglied 50 zu der Zeit gehalten wird, die als T&sub3; des TAKT-(d. h. TKT-)Signals angedeutet ist. Während der Decodierzeit T&sub4; wird die Anweisung decodiert, der Programmzähler P (Fig. 1) inkrementiert, und die Adresse des nächsten sequentiellen Speicherplatzes, welcher die gewünschten Daten enthält, über den Multiplexer A und den A-Bus zum Hauptspeicher 12 übertragen. In Abhängigkeit davon werden die Daten, die in dem Speicherplatz 12, der durch die angelegte Adresse bezeichnet wird, auf den Datenbus 13 gestellt, durch das Hauptspeichertor M durchgeführt und als [M] an das N-Register angelegt, und über den Multiplexer 96 zu dem Register 98 übertragen. Bei dem nächsten Taktpuls, d. h. zur Zeit T&sub5; (Fig. 12A), wird der gewünschte Parameter in das Register 98 geladen. Auch wird zur Zeit T&sub5; das TKT-Signal zu dem Halteglied 50 durch das EN-TKT-Signal zurückgehalten. Das Halteglied 50 hält daher die n -Anweisung zurück. Der Anweisungsdecodierschaltkreis 52 setzt den Decodierzyklus fort, wobei jene internen Torsteuerungs- und Befehlssignale ausgegeben werden, die notwendig sind, um die Ausgabe [N] des N-Registers dazu zu veranlassen, zu dem Operandeneingang 144b des arithmetischen Logikschaltkreises 144 über den Multiplexer 142 geleitet zu werden, und dann mit dem Inhalt des T-Registers addiert zu werden. Zu der Zeit, die als T&sub6; angedeutet ist, wird die Ausgabe [N] des N-Registerschaltkreises in T hineingeladen.
  • Die verbleibenden Anweisungen sind ähnlich und zu einem bestimmten Grad selbsterklärend, außer daß sie in der Wirkung ein Drauflegen des Parameterstapels S nicht miteinbeziehen. Zum Beispiel addiert die n+c -Anweisung, die Daten, die aus dem Speicher geholt werden, zu dem T-Register mit dem Übertrag. Die n- -Anweisung subtrahiert die Daten, die aus dem Speicher geholt werden, von dem Inhalt des T-Registers und lädt den Inhalt in das T-Register; und die n-c Anweisung ist die gleiche mit der Addition eines Übertrags. Die SWAP- (d. h. Tausche) -Vollbuchstaben-Holen-Anweisung "swappen" (tauschen . . . aus ) logischerweise den Inhalt der N- und T-Register, bevor der Speicherzugriff ausgeführt wird, so daß der Parameter dann von dem T-Register subtrahiert wird. Die logischen Funktionen OR, XOR und AND (d. h. ODER, EXKLUSIV-ODER und UND) verknüpfen logischerweise die Daten, die aus dem Speicher geholt werden, mit dem Inhalt des T-Registers und legen das Resultat in dem T-Register ab.
  • Unten aufgelistet sind die Datenholen (Tabelle VII) und zwar hole Daten aus dem Hauptspeicher 12, wobei als eine Speicherplatzadresse der Inhalt des T-Registers verwendet wird. So veranlaßt z. B. die Anweisung den Ausgang T des T-Registers zum A-BUS über den Multiplexer 60 (Fig. 4) während des ersten Taktzyklus von dieser Zwei-Zyklus-Anweisung übertragen zu werden. Der adressierte Speicherplatz des Hauptspeichers 12 wird übertragen über den DATENBUS 13, das Hauptspeichertor M, angelegt an den Multiplexer 96 des N-Registers (Fig. 6) als der Ausgang [M] des Hauptspeichertors M und am Ende des ersten Zyklus in das Register 98 geladen - gleichzeitig mit einem Drauflegen des vorhergehenden Inhalts des Registers 98 auf den Parameterstapel S. T und N werden während des zweiten Zyklus getauscht. TABELLE - VII DATEN HOLEN
  • OP-CODE (OKTAL) ANWEISUNGS-MNEMONIC WIRKUNG
  • 167100 @ Daten aus Speicher geholt und in N abgelegt
  • 164000 @ + Daten geholt, in N abgelegt, Daten + T in T abgelegt
  • 164200 @ +c Daten geholt, in N abgelegt, Daten
  • + T + Übertrag in T abgelegt
  • 162000 @ - Daten geholt, in N abgelegt, T - Daten in T abgelegt
  • 162200 @ -c Daten geholt, in N abgelegt, T - Daten + Übertrag in T abgelegt
  • 166000 @ SWAP - Daten geholt, in N abgelegt, Daten - T in T abgelegt
  • 166200 @ SWAP -c Daten geholt, in N abgelegt, Daten - T + Übertrag in T abgelegt
  • 163000 @ OR Daten ODER T in T abgelegt
  • 165000 @ XOR Daten EXKLUSIV-ODER T in T abgelegt
  • 161000 @ AND Daten UND T in T abgelegt
  • 1647nn DUP @ SWAP nn +
  • 1627nn DUP @ SWAP nn-
  • Die @+, @+c, @-, @-c, @ SWAP- (dh. @ Tausche -), @ SWAPwc (d. h. @Tausche-c), @ OR (d. h. @ ODER), @ XOR (d. h. @ EXKLUSIV-ODER) und @ AND (d. h. @ UND) -Anweisungen wirken im wesentlichen gleich wie die Anweisung, insofern wie Datenholungen betroffen sind (d. h. die Adressen werden aus dem Inhalt des T-Registers hergeleitet) und ihre Ausführung ist wie in der Tabelle VII oben angedeutet. Die DUP @ SWAP nn+ und DUP @ SWAP nn- (d. h. DUP @ Tausche nn+ und DUP @ Tausche nn-) erfordern weitere Diskussion.
  • Die DUP @ SWAP nn+ (d. h. die DUP @ Tausch nn+) -Anweisung: das Endresultat dieser Anweisung ist es, den Inhalt des Speicherplatzes, der durch den Inhalt des T-Registers adressiert wird, auf den Parameterstapel S bei dem N-Registerschaltkreis draufzulegen, und den Inhalt des T-Registers um nn zu inkrementieren. Die DUP @ SWAP nn- hat die identische Operation zur Folge, außer daß der Inhalt des T-Registers um nn dekrementiert wird. Diese zwei Anweisungen erlauben, wenn sie in Kombination mit der TIMES-Anweisung verwendet werden, ein Blockmoment von Daten aus einem Speicherplatz zu einem anderen. TABELLE - VIII ERWEITERTES ADRESSDATENHOLEN
  • OP-CODE ANWEISUNGS- WIRKUNG (OKTAL) MNEMONIC
  • Daten holen aus Speicher und ab gelegt in N
  • Daten geholt, abgelegt in N,
  • Daten + T in T abgelegt
  • Daten geholt, in N abgelegt,
  • Daten + T + Übertrag in T abgelegt
  • Daten geholt, abgelegt in N, T - Daten in T abgelegt
  • Daten geholt, abgelegt in N, T - Daten + Übertrag in T abgelegt
  • Daten geholt, in N abgelegt,
  • Daten - T in T abgelegt
  • Daten geholt, in N abgelegt,
  • Daten - T + Übertrag in T abgelegt
  • Daten ODER T in T abgelegt
  • Daten EXKLUSIV-ODER T in T abgelegt
  • Daten EXKLUSIV-ODER T in T abgelegt
  • Die erweiterten Adreßdatenholanweisungen (Tabelle VIII, oben) führen das gleiche wie ihre Gegenstücke in dem Datenhol-Befehlssatz (bzw. Datenhol-Anweisungssatz) aus, außer daß es eine erweiterte Adressierungsfähigkeit gibt. In die Anweisung ist der Parameter nn eingebettet. Dieser (5-Bit) Parameter geht, wenn die Anweisung decodiert wird, aus dem Anweisungsdecodierschaltkreis 52 als der Ausgang [SL] aus, und zwar zu dem X-BUS des E/A-Tors 30 (Fig. 1) geleitet, über das ODER-Gatter 230. Zur gleichen Zeit stellt der Anweisungsdecodierschaltkreis 52 sicher, daß das X-EN Signal unwirksam gemacht ist (d. h. ein logisches NIEDRIG, um das UND-Gatter 238 unwirksam zu machen). So fungieren die erweiterten Adreßdatenholungen, um sich über den Inhalt des X-RE- GISTERS 208 hinwegzusetzen. Obwohl nicht spezifisch gezeigt, ist der X-BUS fähig, mit dem Hauptspeicher 12 verbunden zu werden, und wird verwendet, um auf einen eines möglichen zweiunddreißig, 64 Kilobyte-Wortspeichers zuzugreifen. Die zugegriffenen Daten werden, in dem Fall der nn X@ Anweisung, in das T-Register geladen oder das Resultat wird, in dem Fall der Anweisungen, die arithmetische/logische Operationen verknüpfen, in das T-Register geladen. TABELLE - IX LOKALES DATENHOLEN
  • OP-CODE ANWEISUNGS- WIRKUNG (OKTAL) MNEMONIC
  • Daten geholt aus Speicherplatz nn, abgelegt in N
  • Daten in N, Daten + T in T abgelegt
  • Daten in N abgelegt, Daten + T + Übertrag in T abgelegt
  • Daten in N abgelegt, T - Daten in T abgelegt
  • Daten in N abgelegt, T - Daten + Übertrag in T abgelegt
  • Daten in N abgelegt, Daten - T in T abgelegt
  • Daten in N abgelegt, Daten - T + Übertrag in T abgelegt
  • Daten ODER T in T abgelegt
  • Daten EXKLUSIV-ODER T in T abgelegt
  • Daten UND T in T abgelegt
  • Lokale Datenholanweisungen sind identisch mit ihren Gegenstücken der Datenhol- und erweiterten adressierten Datenholanweisungen, insofern als das Holen und die Operationen betroffen sind. Der Unterschied liegt darin, daß die lokale Datenholanweisung jeweils eine 5-Bit Adresse mit sich trägt, die den Speicherplatz, aus welchem die Daten erhalten werden, bezeichnet. So wird die Ausführung von jeder lokalen Datenholanweisung den Anweisungsdecodierschaltkreis 52 dazu veranlassen, den nn-Teil der Anweisung als den [SL]-Ausgang auszugeben und an den Eingang _____des Multiplexers 60 (Fig. 4) anzulegen. Das A-CTL-Signal wird aktiviert, um den Eingang 1 des Multiplexers 60 auszuwählen, was [SL] zu dem A-BUS überträgt. Der Rest der Operation der Anweisung ist der gleiche wie die @ und nn X@ -Anweisung. TABELLE - X INTERNES DATENHOLEN
  • OP-CODE ANWEISUNGS- WIRKUNG (OKTAL) MNEMONIC
  • Inhalt des internen Registers nn [nn], auf den Stapel bei T draufgelegt
  • [nn] + T in T geladen
  • 1447nn nn 1@ - T - [nn] in T geladen
  • 1467nn nn 1@ SWAP - [nn] - T in T geladen
  • 1437nn nn 1@ OR [nn] ODER T in T geladen
  • 1457nn nn 1@ XOR [nn] EXKLUSIV-ODER T in T geladen
  • 1477nn nn 1@ AND [nn] UND T in T geladen
  • 1423nn DUP nn 1@ + [nn] auf Parameterstapel draufgelegt; [nn] + T in T geladen
  • 1443nn DUP nn 1@ -
  • 1463nn DUP nn 1@ SWAP -
  • 1433nn DUP nn 1@ OR
  • 1453nn DUP nn 1@ XOR
  • 1473nn DUP nn 1@ AND
  • Speicheranweisungen
  • Die Anweisungen, die Daten zu dem Hauptspeicher 12 übertragen, sind in Tabelle XI und XII aufgelistet. Diese Anweisungen bilden eine Speicheradresse aus dem Inhalt des T-Registers (Tabelle XI) oder aus der Anweisung selbst (Tabelle IX). In dem letzteren Fall sind die 32 Seiten der 64K Wörter des Speichers verfügbar. TABELLE - XI DATEN ABLEGEN
  • OP-CODE ANWEISUNGS- WIRKUNG (OKTAL) MNEMONIC
  • N bei Adresse von T abgelegt; S zweimal abgehoben
  • N bei der Adresse von T abgelegt; S einmal abgehoben
  • N bei der Adresse von T abgelegt; nn + T in T abgelegt; S herunter draufgelegt
  • N bei Adresse von T abgelegt; T - nn in T abgelegt; S abgehoben TABELLE - XII ERWEITERTE ADRESSDATENABLAGE
  • OP-CODE ANWEISUNGS- WIRKUNG (OKTAL) MNEMONIC
  • 1714nn nn X! N bei Adresse von T abgelegt; nn an X-BUS angelegt; S zweimal abgehoben
  • 1715nn DUP nn X! N bei Adresse von T abgelegt; nn an X-BUS angelegt; S einmal abgehoben
  • Die Tabelle XIII, unten, listet jene Anweisungen auf, die die Daten zu den unteren 32 Speicherplätzen des aktuellen Tors des Speichers (der Seite, die durch den Inhalt des X-Registers angedeutet wird) übertragen. Tabelle XIV listet die Anweisungen auf, die Daten aus dem T-Register zu den anderen internen Registern des Mikroprozessors 10 übertragen. In Tabelle X bezieht sich nn (in Oktalen) auf:
  • nn (Oktal) Bestimmung
  • 00 J/K Stapelzeiger
  • 01 I-Registerschaltkreis
  • 02 Programmzähler P
  • 04 MD-Register
  • 10 B-Register
  • 14 X-Register TABELLE - XIII LOKALES DATENABLEGEN
  • OP-CODE ANWEISUNGS- WIRKUNG (OKTAL) MNEMONIC
  • Lege T bei Speicherplatz nn ab
  • Nichtzerstörendes Ablegen zum Speicherplatz nn
  • Lege T bei nn ab; lege T + N in T ab und hebe S ab
  • Lege T bei nn ab; lege N - T in T ab; hebe S ab
  • Lege T bei nn ab; lege T - N in T ab; hebe S ab
  • Lege T bei nn ab; lege T ODER N in T ab; hebe S ab
  • Lege T bei nn ab; lege T EXKLU- SIV/ODER N in T ab; hebe S ab
  • Lege T bei nn ab; lege T UND N in T ab; hebe S ab TABELLE XIV INTERNES DATENABLEGEN
  • OP-CODE ANWEISUNGS- WIRKUNG (OKTAL) MNEMONIC
  • 1512nn nn I! T bei Register nn abgelegt; Stapel S in T hinein abgehoben
  • T bei Register nn abgelegt
  • T bei Register nn abgelegt; N + T in T abgelegt; Stapel S in N hinein abgehoben
  • T bei Register nn abgelegt; N - T in T abgelegt; Stapel S in N hinein abgehoben
  • T bei Register nn abgelegt; T - N in T abgelegt; Stapel S in N hinein abgehoben
  • T bei Register nn abgelegt; N ODER T in T abgelegt; Stapel S in N hinein abgehoben
  • T bei Register nn abgelegt; N EXKLUSIV-ODER T in T abgelegt; Stapel S in N hinein abgehoben
  • T bei Register nn abgelegt; N UND T in T abgelegt; Stapel S in N hinein abgehoben
  • Tausche Inhalt von T und Inhalt des Registers nn miteinander

Claims (12)

1. Ein zum Empfangen von Befehlen und parallelem Ausführen multipler Operationen eines einzelnen Befehls angeordneter Prozessor mit einem Befehlshalteglied (50); einem Hauptspeicher-Datentor (M), das an das Befehls-Halteglied (50) gekoppelt ist; einem Befehlsdecodierschaltkreis (52), um einen Befehl in dem Befehlshalteglied (50) zu decodieren, der an das Befehlshalteglied (50) gekoppelt ist und eine Vielzahl von Steuersignalausgängen aufweist; einem Hauptspeicher-Adress-Tor (A), das an einen ersten der Steuersignalausgänge (SL) gekoppelt ist; einer Arithmetik-Logik-Einheit (ALU) mit einem Steuereingang, der an einen zweiten der Steuersignalausgänge (OP-SELECT) gekoppelt ist, und einem ersten Operanden-Eingang (144b); einem ALU-Multiplexer (142) mit einem an den ersten Operanden-Eingang (144b) der Arithmetik-Logik-Einheit (ALU) gekoppelten Ausgang, einem ersten Eingang, der an das Hauptspeicher-Daten-Tor (M) über einen ersten Datenweg (37, 36) gekoppelt ist, und einem Auswahleingang, der an einen Dritten der Steuersignalausgänge (ALU-CTL) gekoppelt ist; einem Top-Register (T-Register), das an einen Ausgang der Arithmetik-Logik-Einheit (ALU) gekoppelt ist; einem Nächster-Parameter-Register (98), das an einen zweiten Eingang (N) des ALU-Multiplexers (142) über einen zweiten Datenpfad (36) gekoppelt ist; einem Index/Rückkehr-Register (80), das an einen dritten Eingang des ALU-Multiplexers (142) über einen dritten Datenpfad (38) gekoppelt ist; einem Index-/Rückkehr-Speicher (26) mit einem Daten-E/A, der an das Index-/Rückkehr-Register (80) gekoppelt ist, um einen Index-Rückkehr-Stapel abzulegen; einem J-Stapelzeiger-Schaltkreis, um eine Zeigeradresse für den Index-/Rückkehr-Speicher (26) zu erzeugen, mit einem Ausgang, der an einen Adresseingang des Index-/Rückkehr-Speichers (26) gekoppelt ist, und einem Eingang, der an einen Fünften der Steuersignalausgänge (J1-EN) gekoppelt ist; und gekennzeichnet ist durch:
einen Nächster-Parameter-Speicher (24), dessen einer Daten-E/A an das Nächster-Parameter-Register (98) gekoppelt ist, wobei der Nächster-Parameter-Speicher (24), das Nächster-Parameter-Register (98) und das Top- Register (T-Register) einen einzelnen Parameterstapel bilden; und
ein K-Stapelzeigermittel, das nur ein einzelnes Zeiger-Register hat, das zwei Halteglieder aufweist, eines, das einen Zeiger zu dem zuletzt geschriebenen Platz des Nächster-Parameter-Speichers (24) enthält, und das Andere, das einen Zeiger zu dem nächsten verfügbaren Platz des Parameterspeichers (24) enthält, um eine Zeigeradresse für den Nächster-Parameter-Speicher (24) zu erzeugen, und das einen Ausgang, der an einen Adresseingang des Nächster-Parameter-Speichers (24) gekoppelt ist, und einen Eingang hat, der an einen Vierten der Steuersignalausgänge gekoppelt ist.
2. Der Prozessor von Anspruch 1, weiter gekennzeichnet durch einen Adressmultiplexer (60) mit einem Ausgang, der an das Hauptspeicher-Adresstor gekoppelt ist, einem ersten Eingang, der an den ersten der Steuersignalausgänge (SL) gekoppelt ist, einem zweiten Eingang (T), der an das Top-Register (T-Register) gekoppelt ist, einem dritten Eingang (I), der an das Index-/Rückkehr-Register (80) gekoppelt ist und einem Auswahleingang, der an ein Sechstes der Steuersignale (A-CTL) gekoppelt ist.
3. Der Prozessor von Anspruch 2, weiter gekennzeichnet durch einen Hauptspeichermultiplexer (110) mit einem Ausgang, der an das Hauptspeicher-Datentor (M) gekoppelt ist, einem ersten Eingang (T), der an das Top-Register (T-Register) gekoppelt ist, einem zweiten Eingang (N), der an das Nächster-Parameter-Register (98) gekoppelt ist, und einem Auswahleingang (SEL), der an ein Sechstes der Steuersignale (M-CTL) gekoppelt ist.
4. Der Prozessor von Anspruch 1, worin der ALU-Multiplexer (142) einen vierten Eingang umfaßt, der an einen Ersten der Steuersignalausgänge (SL) gekoppelt ist.
5. Der Prozessor von Anspruch 1, weiter gekennzeichnet durch einen Nächster-Parameter-Multiplexer (96) mit einem Ausgang, der an das Nächster-Parameter-Register (98) gekoppelt ist, einem ersten Eingang (T), der an das Top-Register (T-Register) gekoppelt ist, einem zweiten Eingang (M), der an das Hauptspeicher-Datentor gekoppelt ist, und einem Auswahleingang, der an einen Sechsten der Steuersignalausgänge (N-CTL) gekoppelt ist.
6. Der Prozessor von Anspruch 1, weiter gekennzeichnet durch einen Programmzähler (62); und einen Index-/Rückkehr-Multiplexer (78) mit einem Ausgang, der an das Index-/Rückkehr-Register (80) gekoppelt ist, einem ersten Eingang (T), der an das Top-Register (T-Register) gekoppelt ist, einem zweiten Eingang, der an einen Ausgang (P) des Programmzählers (62) gekoppelt ist, und einem Auswahleingang (SEL), der an einen Sechsten der Steuersignalausgänge (I-CTL) gekoppelt ist.
7. Der Prozessor von Anspruch 1, weiter gekennzeichnet durch einen vierten Datenpfad (36), der einen Ausgang des Top-Registers (T-Register) an einen Eingang des Nächster-Parameter-Registers (98) koppelt;
einen fünften Datenpfad (38), der den Ausgang des Top-Registers (T-Registers) an einen Eingang des Index-/Rückkehr-Registers (80) koppelt;
wodurch die Arithmetik-Logik-Einheit (ALU) zeitweilig einen Ausgangswert (N) des Nächster-Parameter-Registers (98) aufrecht erhält, während ein Ausgangswert (T) des Top-Registers (T-Register) an einen Eingang des Nächster-Parameter-Register (98) angelegt wird, damit ein simultaner Eintakt-Zyklus-Austausch der Inhalte des Top-Registers (T-Registers) und des Nächster-Parameter-Registers (98) durch die zweiten und vierten Datenpfade bewirkt werden kann; und
wodurch die Arithmetik-Logik-Einheit (ALU) zeitweilig einen Ausgangswert des Index-/Rückkehr-Registers (80) aufrecht erhält, während ein Ausgang (T) des Top-Registers (T-Register) an einen Eingang des Index-/Rückkehr-Registers (80) angelegt wird, damit ein simultaner Eintakt-Zyklus-Austausch der Inhalte des Top-Registers (T-Register) und des Index-/Rückkehr- Registers (80) durch die dritten und fünften Datenpfade bewirkt werden kann.
8. Der Prozessor von Anspruch 1, weiter gekennzeichnet durch ein Mittel (80, A-Bus, 60, M, 14, 50), das auf ein vorbestimmtes Bit der Befehle anspricht, um eine Unterroutinen-Rückkehr-Operation gleichlaufend mit anderen Operationen durchzuführen, die durch die Befehle spezifiziert werden.
9. Der Prozessor von Anspruch 1, weiter gekennzeichnet durch ein Mittel (62, 78, 80, 60, A-Bus), das auf ein vorbestimmtes Bit der Befehle anspricht, um einen Unterroutinen-Aufruf gleichzeitig mit anderen Operationen durchzuführen, die durch die Befehle spezifiziert werden.
10. Der Prozessor von Anspruch 9, worin das Mittel für die Durchführung eines Unterroutinenaufrufs ein Mittel umfaßt, um eine Programm-Zählgröße (P) in dem Index/Rückkehr-Register (80) abzulegen und einen Ausgang des Befehlshaltegliedes (50) an dem Speicher-Adresstor (A) zur Verfügung zu stellen.
11. Der Prozessor von Anspruch 1, gekennzeichnet durch ein Mittel, um einen Wert in einem der Register (T, 98) durch einen Multibit-Buchstaben-Wert aus dem Befehlshalteglied (50) zu modifizieren.
12. Der Prozessor von Anspruch 1, weiter gekennzeichnet durch ein Mittel (96; 142, 144), um das Top- und Nächster-Parameter-Register (T, 98) zu koppeln, um weiter einen einzelnen Doppelpräzisionswert abzulegen und um den Doppelpräzisionswert durch das Top- und Nächster-Parameter-Register (T, 98) zu verschieben.
DE85114795T 1984-11-21 1985-11-21 Mikroprozessor für Forth-ähnliche Sprache. Expired - Fee Related DE3587591T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US67369484A 1984-11-21 1984-11-21

Publications (2)

Publication Number Publication Date
DE3587591D1 DE3587591D1 (de) 1993-10-28
DE3587591T2 true DE3587591T2 (de) 1994-04-28

Family

ID=24703738

Family Applications (1)

Application Number Title Priority Date Filing Date
DE85114795T Expired - Fee Related DE3587591T2 (de) 1984-11-21 1985-11-21 Mikroprozessor für Forth-ähnliche Sprache.

Country Status (5)

Country Link
US (2) US5070451A (de)
EP (1) EP0185215B1 (de)
JP (2) JPH0731603B2 (de)
AT (1) ATE94999T1 (de)
DE (1) DE3587591T2 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5034882A (en) * 1987-11-10 1991-07-23 Echelon Corporation Multiprocessor intelligent cell for a network which provides sensing, bidirectional communications and control
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5752070A (en) * 1990-03-19 1998-05-12 California Institute Of Technology Asynchronous processors
US6138273A (en) * 1991-03-01 2000-10-24 Intel Corporation Programmable interpretive virtual machine
US7356809B1 (en) * 1991-03-01 2008-04-08 Intel Corporation Programmable interpretive virtual machine
US5404555A (en) * 1991-05-17 1995-04-04 Duosi Software Co., Ltd. Macro instruction set computer architecture
US5452423A (en) * 1991-06-13 1995-09-19 Chips And Technologies, Inc. Two-ROM multibyte microcode address selection method and apparatus
FR2678402A1 (fr) * 1991-06-28 1992-12-31 Philips Electronique Lab Dispositif de traitement d'informations.
FR2678401A1 (fr) * 1991-06-28 1992-12-31 Philips Electronique Lab Dispositif de traitement de l'information plus particulierement adapte a un langage chaine, du type forth notamment.
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
CA2122182A1 (en) * 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
US5634118A (en) * 1995-04-10 1997-05-27 Exponential Technology, Inc. Splitting a floating-point stack-exchange instruction for merging into surrounding instructions by operand translation
WO1997015001A2 (en) * 1995-10-06 1997-04-24 Patriot Scientific Corporation Risc microprocessor architecture
JP2001504969A (ja) * 1997-08-18 2001-04-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ スタック向きデータ処理装置
US5974531A (en) * 1998-02-17 1999-10-26 Industrial Technology Research Institute Methods and systems of stack renaming for superscalar stack-based data processors
US6151671A (en) * 1998-02-20 2000-11-21 Intel Corporation System and method of maintaining and utilizing multiple return stack buffers
US6988188B2 (en) * 2000-03-01 2006-01-17 Realtek Semiconductor Corp. Data object architecture and method for xDSL ASIC processor
DE10131084A1 (de) * 2001-06-27 2003-01-09 Klaus Schleisiek Vorrichtung zur Datenverarbeitung
US20030212878A1 (en) * 2002-05-07 2003-11-13 Chen-Hanson Ting Scaleable microprocessor architecture
US7493607B2 (en) 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
WO2005096136A1 (en) * 2004-03-31 2005-10-13 Intel Corporation Stack caching using code sharing
US7904695B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US20060282821A1 (en) * 2005-06-10 2006-12-14 Renno Erik K Efficient subprogram return in microprocessors
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7904615B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
JP5326314B2 (ja) * 2008-03-21 2013-10-30 富士通株式会社 プロセサおよび情報処理装置
US8195118B2 (en) * 2008-07-15 2012-06-05 Linear Signal, Inc. Apparatus, system, and method for integrated phase shifting and amplitude control of phased array signals
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
US8275978B1 (en) 2008-07-29 2012-09-25 Marvell International Ltd. Execution of conditional branch instruction specifying branch point operand to be stored in jump stack with branch destination for jumping to upon matching program counter value
US8872719B2 (en) * 2009-11-09 2014-10-28 Linear Signal, Inc. Apparatus, system, and method for integrated modular phased array tile configuration
JP2013242700A (ja) * 2012-05-21 2013-12-05 Internatl Business Mach Corp <Ibm> コード最適化方法、プログラム及びシステム
WO2019008531A1 (en) 2017-07-07 2019-01-10 nChain Holdings Limited METHOD FOR CONTROLLING STREAM EXECUTION OF A GENERATED SCRIPT OF A BLOCK CHAIN TRANSACTION

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3601809A (en) * 1968-11-04 1971-08-24 Univ Pennsylvania Addressable list memory systems
US3965335A (en) * 1974-09-27 1976-06-22 Sperry Rand Corporation Programable data entry system
US4458325A (en) * 1976-02-04 1984-07-03 Canon Kabushiki Kaisha Calculator capable of calculating with additional externally instructed units
US4041462A (en) * 1976-04-30 1977-08-09 International Business Machines Corporation Data processing system featuring subroutine linkage operations using hardware controlled stacks
JPS5311547A (en) * 1976-07-20 1978-02-02 Oki Electric Ind Co Ltd Program call order system
US4200930A (en) * 1977-05-23 1980-04-29 Burroughs Corporation Adapter cluster module for data communications subsystem
US4156796A (en) * 1977-11-29 1979-05-29 International Business Machines Corporation Programmable data processing communications multiplexer
BG29106A1 (en) * 1978-11-08 1980-09-15 Dakovski Method and magistral registered device for realising of automats- sequence type
US4390946A (en) * 1980-10-20 1983-06-28 Control Data Corporation Lookahead addressing in a pipeline computer control store with separate memory segments for single and multiple microcode instruction sequences
US4393468A (en) * 1981-03-26 1983-07-12 Advanced Micro Devices, Inc. Bit slice microprogrammable processor for signal processing applications
JPS57182852A (en) * 1981-05-07 1982-11-10 Nec Corp Stack device
JPS58197548A (ja) * 1982-05-14 1983-11-17 Hitachi Ltd スタツク制御方式
US4800491A (en) * 1986-11-17 1989-01-24 General Electric Company Register-stack apparatus
US5187799A (en) * 1988-05-17 1993-02-16 Calif. Institute Of Technology Arithmetic-stack processor which precalculates external stack address before needed by CPU for building high level language executing computers
US5442289A (en) * 1989-07-31 1995-08-15 Biomagnetic Technologies, Inc. Biomagnetometer having flexible sensor

Also Published As

Publication number Publication date
ATE94999T1 (de) 1993-10-15
JPS61182138A (ja) 1986-08-14
EP0185215B1 (de) 1993-09-22
JPH07210398A (ja) 1995-08-11
US5319757A (en) 1994-06-07
DE3587591D1 (de) 1993-10-28
EP0185215A2 (de) 1986-06-25
US5070451A (en) 1991-12-03
EP0185215A3 (en) 1988-08-31
JPH0731603B2 (ja) 1995-04-10

Similar Documents

Publication Publication Date Title
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE69129565T2 (de) Hochleistungsfähiger Emulator mit Pipelining
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE3789345T2 (de) Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen.
DE69033444T2 (de) Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können
DE69124437T2 (de) Verfahren und Vorrichtung zum Umkehren von Byteordnung in einem Rechner
DE68924380T2 (de) Vernichtung von Pipelineblasen in einem Rechnersystem.
DE69033339T2 (de) Mechanismus und Verfahren zur Vorhersage von Unterprogrammrücksprüngen
DE69620499T2 (de) Matrizen Tranzposition
DE2755273C2 (de)
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE3485929T2 (de) Bedingungsregisterarchitektur fuer eine maschine mit primitivem befehlssatz.
DE2357003C2 (de) Prozessor für eine Mehrprogramm-Datenverarbeitungsanlage
DE3685913T2 (de) Vektorenverarbeitung.
DE69228360T2 (de) Registerlesekontrolle
DE3424962C2 (de)
DE69033131T2 (de) Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE2714805A1 (de) Datenverarbeitungssystem
DE19983870B4 (de) Berechnung impliziter Datentypbits für Simd-Operationen
EP0325677B1 (de) Schaltungsanordnung und Steuerverfahren eines Befehlspufferspeichers in einer Datenverarbeitungsanlage
DE69130233T2 (de) Verfahren und gerät um ein sperrungscache einzusetzen
DE2702722C2 (de) Einrichtung zur Verarbeitung nicht direkt ausführbarer Instruktionen
DE3107568A1 (de) Datenverarbeitungseinrichtung

Legal Events

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