DE69126157T2 - Prozessor mit datenformatunabhängigen Befehlen - Google Patents

Prozessor mit datenformatunabhängigen Befehlen

Info

Publication number
DE69126157T2
DE69126157T2 DE69126157T DE69126157T DE69126157T2 DE 69126157 T2 DE69126157 T2 DE 69126157T2 DE 69126157 T DE69126157 T DE 69126157T DE 69126157 T DE69126157 T DE 69126157T DE 69126157 T2 DE69126157 T2 DE 69126157T2
Authority
DE
Germany
Prior art keywords
memory
data format
data
processor
instruction
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
DE69126157T
Other languages
English (en)
Other versions
DE69126157D1 (de
Inventor
Gary T Corcoran
Robert Charles Fairfield
Akkas T Sufi
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.)
AT&T Corp
Original Assignee
AT&T 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 AT&T Corp filed Critical AT&T Corp
Application granted granted Critical
Publication of DE69126157D1 publication Critical patent/DE69126157D1/de
Publication of DE69126157T2 publication Critical patent/DE69126157T2/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)

Description

    Erfindungsgebiet
  • Die Erfindung betrifft allgemein digitale Datenprozessoren und insbesondere als Coprozessoren verwendete Prozessoren.
  • Allgemeiner Stand der Technik Technisches Gebiet
  • Mit dem Preisverfall der Prozessoren sind immer mehr digitale Datenverarbeitungssysteme erschienen, bei denen mehrere Prozessoren als Coprozessoren arbeiten. Ein Coprozessor ist ein Prozessor, der zum Bearbeiten von Daten mit einem anderen Prozessor zusammenarbeitet. Klassische Beispiele für Coprozessoren sind Gleitkomma- Einheiten zum Ausführen von Gleitkomma-Arithmetik und E/A-Prozessoren zum Verarbeiten des Datenflusses zwischen Peripheriegeräten wie zum Beispiel Terminals und dem Systemspeicher. Die Beziehung zwischen zwei Coprozessoren verläuft entlang eines Kontinuums, dessen Enden durch die Vorstellungen enggekoppelt und losegekoppelt beschrieben werden. Ein Coprozessor ist eng an einen anderen angekoppelt, wenn zwischen den Coprozessoren ein hoher Grad von direkter Wechselwirkung vorliegt. Gleitkomma-Einheiten zum Beispiel sind in der Regel enggekoppelt. Der Prozessor, der von der Gleitkomma-Einheit bedient wird, liefert der Gleitkomma-Einheit die Operanden, zeigt die Operation an, die ausgeführt werden muß, und empfängt die Ergebnisse direkt von der Gleitkomma-Einheit. Bei den Ergebnissen handelt es sich in der Regel nicht nur um den Ergebniswert, sondern auch um Signale, die den Status der Gleitkomma-Operation anzeigen. E/A-Prozessoren andererseits sind in der Regel losegekoppelt. Die Kommunikation mit dem Prozessor, den sie bedienen, verläuft üblicherweise über den Systemspeicher. Wenn der Prozessor die Hilfe des E/A-Prozessors benötigt, um Daten auszugeben, legt der Prozessor die Ausgabedaten und eine Beschreibung dessen, was der E/A-Prozessor damit anfangen soll, im Speicher an einer Stelle ab, die dem E/A-Prozessor bekannt ist und zeigt dem E/A-Prozessor damit an, daß sich die Daten im Speicher befinden. Der E/A-Prozessor reagiert daraufhin auf die Anzeige, indem er die Daten aus dem Speicher abruft und sie an das gewünschte Peripheriegerät abgibt. Nach Beendigung legt er ein Protokoll über den Status der Operation im Speicher an eine Stelle, die dem Prozessor bekannt ist, und zeigt dem Prozessor an, daß er die Speicheroperation beendet hat. Der Prozessor reagiert dann auf die Anzeige, indem er die Daten an der Stelle liest, um den Status der Ausgabeoperation zu bestimmen.
  • Beschreibung des Standes der Technik
  • Ein Problem bei der gemeinsamen Nutzung von Speicher liegt darin, daß die Prozessoren, die sich den Speicher teilen, sich auf das Format der Daten, die sie zusammen verarbeiten, einigen müssen. Zwei populäre Architekturen für Hauptprozessoren sind zum Beispiel die Architektur des Motorola 680x0 und die Architektur des Intel 80x86. Diese beiden Architekturen haben für Zeiger und für die Reihenfolge, in der nacheinandergeschriebene Byte im Speicher gespeichert werden, unterschiedliche Formate. Ein Coprozessor, der mit jeder Art von Hauptprozessor verwendet werden soll, muß diese Unterschiede irgendwie bewältigen. Ein Weg, wie sie im Stand der Technik bewältigt werden, besteht in einem Anschluß am Coprozessor, dessen Eingang anzeigt, ob es sich bei dem Hostrechner um eine 680x0-Maschine oder eine Intel 80x86- Maschine handelt. Diese Lösung funktioniert so lange gut, wie der Coprozessor Daten auf genau die gleiche Weise liest, wie der Hauptprozessor sie geschrieben hat, und umgekehrt. Das Problem bei einer derartigen Lösung besteht darin, daß es dem Systemkonstrukteur die Wahl gibt, den Coprozessor langsamer zu machen oder für den Coprozessor Code zu schreiben, der für die verschiedenen Arten von Hauptprozessoren unterschiedlich ist. Wenn der Coprozessor sowohl Worte als auch Byte liest und der Hauptprozessor eine Folge von Byte in den Speicher geschrieben hat, dann liest der Coprozessor die Byte am schnellsten in Form von Worten; in einem solchen Fall muß er aber die Worte je nach der Hauptmaschine unterschiedlich verarbeiten und für verschiedene Hauptmaschinen sind folglicherweise verschiedene Codes notwendig. Geschwindigkeit und die Kosten des Schreibens von Codes sind wichtige Überlegungen für den Systemkonstrukteur, weshalb beide Alternativen ungünstig sind. Eine Aufgabe der hier offenbarten Vorrichtung besteht darin, einen Prozessor bereitzustellen, der sowohl Folgen von Byte als Worte lesen kann als auch den gleichen Code für beide Hauptmaschinen verwenden kann.
  • Kurze Darstellung der Erfindung
  • Bei der hier offenbarten Erfindung handelt es sich um einen Prozessor, der Speicher mit anderen Prozessoren teilen kann, die für in dem Speicher gespeicherte Daten unterschiedliche Formate verwenden. Der Prozessor führt Befehle aus, einschließlich mindestens eines Befehls, der Datenformatabhängigkeit anzeigende Mittel enthält. Die Datenformatabhängigkeit anzeigenden Mittel zeigen an, daß die Operation von einem Datenformat abhängig ist, das von dem anderen Prozessor verwendet wird, mit dem der erfindungsgemäße Prozessor den Speicher teilt. Der erfindungsgemäße Prozessor ist gekennzeichnet durch ein Datenformatsignalempfangsmittel zum Empfangen eines das Datenformat anzeigenden Datenformatsignals und ein auf das Datenformatsignal und auf die die Datenformatabhängigkeit anzeigenden Mittel reagierendes Operationsmittel zum Ausführen der durch den Befehl angegebenen Operation, wie vom Datenformat erfordert.
  • Kurze Beschreibung der Zeichnung
  • Figur 1 ist ein Blockschaltbild eines Systems, in dem der Mikroprozessor der vorliegenden Erfindung eingesetzt wird;
  • Figur 2 ist eine Darstellung, die die Außenanschlüsse einer bevorzugten Ausführungsform des Mikroprozessors zeigt;
  • Figur 3 ist ein Byte- oder Wort-Lese-Zeitdiagramm, das zeigt, wie die Leitungen und und auf H-Pegel gehen, bevor sie abgeschaltet werden;
  • Figur 4 ist ein Blockschaltbild, das die Befehlsarchitektur einer bevorzugten Ausführungsform des Mikroprozessors zeigt;
  • Figur 5 ist ein Blockschaltbild, das die Adressierung von Universalregistern im Mikroprozessor zeigt;
  • Figur 6 ist eine Darstellung, die für den Mikroprozessor das Format und die Ausführungsweise zweier Arten von MOVE-Befehlen zeigt;
  • Figur 7 ist eine Darstellung, die das Format und die Ausführungsweise einer dritten Art von MOVE-Befehl zeigt;
  • Figur 8 ist eine Darstellung, die für den Mikroprozessor das Format der E/A-Befehle des Systemspeichers zeigt;
  • Figur 9 ist ein Diagramm von Datenformaten, die von bestimmten Hauptprozessoren, mit denen zusammen der Mikroprozessor eingesetzt wird, verwendet wird;
  • Figur 10 ist ein Logikdiagramm, das die Steuerlogik in dem E/A-Untersystem einer bevorzugten Ausführungsform zeigt;
  • Figur 11 ist ein Logikdiagramm, das eine Realisierung eines Eingangsspeichers 1149 in einer bevorzugten Ausführungsform zeigt;
  • Figur 12 ist ein Logikdiagramm, das eine Realisierung eines Ausgangsspeichers 1151 und eines Schattenausgangsspeichers 1155 in einer bevorzugten Ausführungsform zeigt;
  • Figur 13 ist eine Wahrheitswertetafel für die E/A-Operationen READ und READ-MODIFY-WRITE in einer bevorzugten Ausführungsform; und
  • Figur 14 ist eine Wahrheitswertetafel für WRITE-E/A-Operationen in einer bevorzugten Ausführungsform.
  • Ausführliche Beschreibung
  • Die folgende ausführliche Beschreibung einer bevorzugten Ausführungsform des Mikroprozessors der vorliegenden Erfindung zeigt als erstes, wie der Mikroprozessor in einem digitalen Datenverarbeitungssystem als Coprozessor verwendet werden könnte, offenbart dann die Anpassung zwischen dem Mikroprozessor und einem derartigen System und fährt dann mit Erörterungen fort.
  • Coprozessorabhängige Ausführung von System-Wortleseoperationen und System-Wortschreiboperationen.
  • Den Mikroprozessor als Coprozessor einsetzendes System: Figur 1
  • Figur 1 zeigt ein System 101, in dem der Mikroprozessor nach der vorliegenden Erfindung als Coprozessor eingesetzt wird. Zu den Bauteilen des Systems gehören ein Speicher 102, ein Systembus 103, ein Hauptprozessor 105, ein Mikroprozessor 107 nach der vorliegenden Erfindung mit seinem privaten Speicher (PMEM) 108 und eine serielle Steuerung (SCTL) 109. Alle Bauteile sind durch den Systembus 103 verbunden, und der Hauptprozessor 105, der Mikroprozessor 107 und die serielle Steuerung 109 haben alle über den Systembus 103 Zugriff zum Speicher 102. Der private Speicher 108 ist über einen privaten Bus (PB) 110 an den Mikroprozessor 107 angeschlossen. Auf den privaten Speicher 108 kann nur der Mikroprozessor 107 Zugriff nehmen. Zum Inhalt des privaten Speichers 108 zählen vom Mikroprozessor 107 ausgeführte Programme und möglicherweise auch bei der Ausführung dieser Programme verwendete Daten. In einer bevorzugten Ausführungsform ist der private Speicher 108 ein Lese-Schreib-Speicher, und die Programme, die von Mikroprozessor 107 ausgeführt werden, werden durch den Mikroprozessor 107 aus dem Speicher 102 in den privaten Speicher 108 hinuntergeladen.
  • In dem System von Figur 1 arbeitet der Mikroprozessor 107 als Coprozessor, um Daten, die gemäß einem seriellen Kommunikationsprotokoll gesendet oder empfangen worden sind, zu verarbeiten. Als solcher vermittelt er zwischen dem Hauptprozessor 105, der für die über das Protokoll gesendeten oder empfangenen Daten die Quelle bzw. das Ziel ist, und der seriellen Steuerung 109, die mit einer seriellen Leitung 111 verbunden ist und über die Leitung 111 serielle Protokolle sendet und empfängt.
  • Das System 101 funktioniert wie folgt: Der Hauptprozessor 105 unterhält im Speicher 102 den Bereich SDATA 115, den er für Daten, die über SL 111 (SL = serial link) gesendet werden sollen, verwendet, und den Bereich RDATA 117 für Daten, die über SL 111 empfangen werden. Wenn der Hauptprozessor 105 Daten senden möchte, plaziert er dahingehend einen Befehl in einer Hauptprozessorbefehlsschlange (HCQ = host command queue) 119. Der Befehl enthält mindestens eine Zieladresse für die Daten und den Ort der Daten in SDATA 115. Die Hauptprozessorbefehlsschlange 119 befindet sich im Speicher 102 an einem Ort, der dem Mikroprozessor 107 bekannt ist, und der Mikroprozessor 107 fragt die Hauptprozessorbefehlsschlange 119 periodisch ab, um zu bestimmen, ob ein neuer Befehl angekommen ist. Falls dies der Fall ist, lokalisiert der Mikroprozessor 107 die zu sendenden Daten in SDATA 115, überführt sie in ihre richtige Form für die serielle Steuerung 109 und plaziert einen Zeiger an die Daten und einen Befehl in die Mikroprozessorbefehlsschlange (MPCQ = microprocessor command queue) 123. Diese Schlange befindet sich an einem Ort im Speicher, der der seriellen Steuerung 109 bekannt ist, und die serielle Steuerung 109 fragt die Mikroprozessorbefehlsschlange 123 regelmäßig ab. Wenn die serielle Steuerung 109 einen Befehl und einen Zeiger in der Schlange 123 findet, gibt sie die Daten an dem durch den Zeiger festgelegten Ort auf eine durch den Befehl festgelegte Weise an die serielle Leitung 111 ab.
  • Wenn die serielle Steuerung 109 Daten auf der seriellen Leitung 111 empfängt, findet das oben beschriebene in umgekehrter Reihenfolge statt. Die serielle Steuerung 109 plaziert die Daten, die sie empfangen hat, in RDATA 117 und plaziert dann einen Zeiger an die Daten in der Mikroprozessorunterbrechungsschlange (MPIQ = microprocessor interrupt queue) 125; der Mikroprozessor 107 fragt die Schlange 125 periodisch ab und wenn sich in der Schlange 125 ein Zeiger befindet, überführt der Mikroprozessor 107 die von dem Zeiger angezeigten Daten in das richtige Format für den Hauptprozessor 105. Danach plaziert der Mikroprozessor 107 eine Unterbrechungsmeldung einschließlich eines Zeigers zu den Daten in eine Hauptprozessorunterbrechungsschlange (HIQ = host interrupt queue) 121 und schickt über eine Unterbrechungsleitung 113 eine Unterbrechung an den Hauptprozessor 105. Der Hauptprozessor 105 reagiert auf die Unterbrechung, indem er die Hauptprozessorunterbrechungsschlange 121 untersucht und aus der Unterbrechungsmeldung feststellt, daß ankommende Daten in RDATA 117 plaziert worden sind.
  • Anpassung zwischen System 101 und Mikroprozessor 107: Figur 2
  • Figur 2 ist eine Darstellung, die die Anschlüsse einer bevorzugten Ausführungsform 201 des Mikroprozessors 107 zeigt, der als einzelne integrierte Schaltung in einem Gehäuse mit 132 Anschlüssen realisiert ist. Bei anderen Ausführungsformen sind einige Anschlüsse möglicherweise multiplexiert und bei weiteren Ausführungsformen kann es sich bei dem Mikroprozessor 107 um ein Bauteil einer größeren integrierten Schaltung handeln; so zum Beispiel könnten der Mikroprozessor 107 und eine oder mehrere serielle Steuerungen 109 kombiniert werden, um eine einzelne integrierte Schaltung zum Verarbeiten serieller Protokolle zu bilden. Bei einer derartigen Ausführungsform hätte der Mikroprozessor 107 zwar keine eigenen Anschlüsse, würde aber dennoch Signale senden und empfangen, die denen, die über die Anschlüsse der bevorzugten Ausführungsform 201 gesendet und empfangen werden, im wesentlichen gleichwertig sind.
  • Bestimmte Anschlüsse der bevorzugten Ausführungsform 201 sind in der folgenden Erörterung von besonderem Interesse. Es handelt sich hierbei um den
  • Anschluß 207, den
  • -Anschluß 203, den
  • -Anschluß 205, den I/ -Anschluß 209, den
  • -Anschluß 211 und den ClOCK-Anschluß 213. Die Funktionen dieser wie auch anderer Anschlüsse werden in der folgenden Tabelle zusammengefaßt:
  • Wie aus obiger Tabelle ersichtlich, ist die bevorzugte Ausführungsform zur Verwendung in einem System 101 gedacht, in dem der Speicher 102 16-Bit-Worte aufweist und byteweise adressierbar ist; der Systembus 103 enthält folglicherweise 23 Adreßleitungen, 16 Datenleitungen und Steuerleitungen. Bei einigen Ausführungsformen können die Steuersignale
  • und AS Teil des Systembusses 103 sein, bei anderen können sie von einer anderen Logik, die außerhalb des Mikroprozessors 107 liegt und zwischen dem System 101 und dem Mikroprozessor 107 vermittelt, geliefert oder empfangen werden.
  • Realisierung der IS der bevorzugten Ausführungsform
  • Die integrierte Schaltung der bevorzugten Ausführungsform wurde unter Verwendung von standardmäßiger CMOS-Zellentechnologie realisiert. Die Steuerlogik für den Mikroprozessor 107 wurde hauptsächlich wie folgt festgelegt: Als erstes wurde ein Automat für einen gegebenen Teil der Steuerlogik definiert. Der Automat bestand aus den Zuständen des Teils des Systems, der von dem gegebenen Teil der Steuerlogik gesteuert wird, und aus den Übergängen zwischen den Zuständen. Als nächstes wurde in "C"-Sprache ein Emulator für den Automat geschrieben. Der Emulator wurde geprüft, um die Richtigkeit des Automats zu bestätigen. Danach wurde der Emulatorcode als Eingabe zu einem sogenannten "Siliziumcompiler" verwendet. Die Ausgabe des Siliziumcompilers war eine Spezifikation von Schaltungen in der integrierten Schaltung der bevorzugten Ausführungsform, die den durch den Emulatorcode beschriebenen Automat realisierte.
  • Die zur Realisierung des Mikroprozessors 107 verwendeten Werkzeuge lagen durchaus innerhalb des gängigen Standes der Technik. Wie aus dieser Tatsache und obiger Offenbarung der Art und Weise, wie die Steuerlogik im Mikroprozessor 107 realisiert wurde, zu erkennen ist, wird von einem Fachmann lediglich eine Beschreibung eines Automats benötigt, um die den Automat realisierenden Schaltungen herzustellen und zu verwenden.
  • Die Befehlsarchitektur des Mikroprozessors 107: Figur 11
  • Die Neuerungen bei dem Mikroprozessor 107, soweit sie bisher beschrieben worden sind, betrafen die Anpassung zwischen dem Mikroprozessor 107 und einem System 101, in dem der Mikroprozessor 107 eingesetzt wird, andere Neuerungen betreffen bestimmte Befehle, die vom Mikroprozessor 107 ausgeführt werden. Die folgende Erörterung liefert als erstes eine Übersicht über die Befehlsarchitektur des Mikroprozessors 107 und erörtert dann ausführlich jene Befehle, die von besonderem Interesse sind.
  • Figur 11 zeigt die Befehlsarchitektur 1101 des Mikroprozessors 107, d.h., die Figur zeigt den Mikroprozessor 107, wie er einem Programmierer erscheint, der aus Befehlen aus dem Befehlssatz des Mikroprozessors 107 bestehenden Code schreibt. Jedes der Register und jede der anderen Komponenten der Befehlsarchitektur 1101 stellt ein logisches Bauteil dar, dessen Verhalten in Befehlen des Befehlssatzes spezifiziert werden kann. Die Beschreibung beginnt mit den Registern.
  • REGISTER
  • In der Befehlsarchitektur 1101 existieren 256 Universalregister 1103 (0 bis 255) und 14 Spezialregister.
  • UNIVERSALREGISTER 1103
  • Die 256 Universalregister 1103 machen den Universalregisterblock 1104 aus. Die Universalregister 1103 werden im allgemeinen zum Speichern von im Mikroprozessor 107 zu verarbeitenden Daten eingesetzt. Jedes Universalregister ist 24 Bit breit, doch können die Register zum Adressieren unterteilt werden. Die Adressierung der Universalregister 1103 wird in Figur 11A gezeigt. Jedes Universalregister kann durch eine Adresse zwischen 0 und 255 direkt oder mittels eines Offset von dem in dem Rahmenzeiger-Register 1117 (FRMTPR = frame pointer) enthaltenen Wert spezifiziert werden. Innerhalb des adressierten Registers können die folgenden Unterteilungen spezifiziert werden:
  • niedriges Byte 1157: Bit 0-7 des adressierten Registers;
  • mittleres Byte 1159: Bit 8-15 des adressierten Registers;
  • hohes Byte 1161: Bit 16-23 des adressierten Registers;
  • niedriges Wort 1163: Bit 0-15 des adressierten Registers;
  • hohes Wort 1165: Bit 08-23 des adressierten Registers; und
  • Gesamtregister 1167: Bit 0-23 des adressierten Registers.
  • Unter Bezugnahme auf den internen Datenbus (IDB internal data bus) 1115 kann es sich bei den Universalregistern entweder um eine Quelle (Leseoperation) oder ein Ziel (Schreiboperation) handeln. Wenn ein Universalregister 1103 eine Quelle ist, wird der spezifizierte Teil des Universalregisters zu den niedrigstwertigen Bit des internen Datenbusses 1115 ausgegeben, die verbleibenden Bit des Busses 1115 werden auf 0 gesetzt. Wenn ein Universalregister 1103 ein Ziel ist, wird die Zahl der Bit des internen Datenbusses 1115, die für den Teil erforderlich sind, in den Teil geschrieben, wobei mit dem niedrigstwertigen Bit des internen Datenbusses 1115 begonnen wird. Wie aus dem oben gesagten ersichtlich, ist es möglich, ein beliebiges Byte oder Wort von einem Universalregister 1103 zu einem beliebigen Byte oder Wort eines anderen Universalregisters 1103 zu schreiben, ohne die verbleibenden Teile entweder der Quellen- oder Zieluniversalregister 1103 zu stören.
  • Fortfahrend mit den Spezialregistern sind die meisten dieser Register 24 Bit breit. Alle diese Spezialregister können in der Regel für die meisten Befehle entweder eine Quelle oder ein Ziel sein. Eine Ausnahme davon ist der Akkumulator (ACC) 1109, der für viele Registerbewegungen kein direktes Ziel sein kann.
  • PSW 1119
  • PSW 1119 ist das Prozessorstatuswortregister. Das Format des PSW 1119 ist wie folgt:
  • Die Bedeutung der Bit ergibt sich aus der folgenden Tabelle:
  • Beim Rücksetzen werden alle Bit in PSW 1119 auf Null gelöscht. Somit sind die Übertrags- und Null-Flags gelöscht und die externen Unterbrechungen und Zeitgeberunterbrechungen sind nicht freigegeben.
  • In das PSW 1119 kann wie in andere Spezialregister eingeschrieben bzw. aus ihm ausgelesen werden, wobei ein Schreibvorgang oft zum Verändern einer der Unterbrechungsfreigabeflags oder des SWB-Bit verwendet wird. Allerdings kann bei den Bit 4-10, den Unterbrechungsstatusflagbit, ein Verschiebungsbefehl nur diese Bit löschen, sie können von einem Verschiebungsbefehl nicht gesetzt werden. Mit anderen Worten wird das Schreiben von Nullen die Unterbrechungsstatusbit löschen und das Schreiben von Einsen wird die Unterbrechungsstatusbit unverändert lassen.
  • Um ein bestimmtes Unterbrechungsstatusbit zu löschen, sollten deshalb diejenigen Unterbrechungsstatusbit, die NICHT gelöscht werden sollen, in dem Wort, das zu seiner Veränderung in das PSW 1119 eingeschrieben wird, auf eine 1 gesetzt werden. Das Unterbrechungsstatusbit, das gelöscht werden soll, sollte in dem in das PSW 1119 eingeschriebenen Wort eine 0 in der entsprechenden Bitposition aufweisen.
  • ACC 1109
  • ACC 1109 ist ein 24-Bit-Register. Es speichert das Ergebnis von Operationen durch ALU 1107 (ALU = arithmetic logic unit). Im Fall von 8- oder 16-Bit-ALU- Operationen sind alle 24 Bit des ACC 1109 betroffen, doch werden lediglich die 8 oder 16 niedrigstwertigen Bit gültige Informationen aufweisen. In Bezug auf den internen Datenbus 1115 ist ACC 1109 lediglich eine Quelle, doch existiert ein Befehl, der es gestattet, den ACC 1109 von einem Universalregister 1103 zu beladen, indem veranlaßt wird, daß die ALU 1107 an seinen Eingangsdaten keine Operation durchführt. ACC 1109 kann auch von dem B-Register 1105 beladen werden, indem wiederum veranlaßt wird, daß ALE 1107 an seinem Eingangswert keine Operation ausführt.
  • B-Register 1105
  • B-Register 1105 ist ein 24-Bit-Register. Es liefert der ALU 1107 einen der Operanden für ALU-Operationsbefehle.
  • ALR 1145
  • ALR 1145 (address latch-read) ist ein 24-Bit-Adreßspeicher. Er wird zum Halten der effektiven Adresse für Leseoperationen des Systemspeichers 102 verwendet.
  • ALW 1146
  • ALW 1146 (address latch-write) ist ein 24-Bit-Adreßspeicher. Er wird zum Halten der effektiven Adresse für Schreiboperationen des Systemspeichers 102 verwendet.
  • IL 1149
  • IL 1149 ist ein 24-Bit-Register, das zum Halten der Eingangsdaten von einer externen Leseoperation des Systemspeichers verwendet wird. Der Befehlssatz definiert einen 8-Bit-Lesebefehl, einen 16-Bit-Lesebefehl und einen 24-Bit-Lesebefehl, der tatsächlich zwei Systemlesebefehle zu aufeinanderfolgenden Adreßorten im Systemspeicher 102 durchführt.
  • OL 1151
  • OL 1151 ist ein 24-Bit-Register, das zum Halten der Ausgangsdaten für eine externe Schreiboperation des Systemspeichers verwendet wird. Der Befehlssatz definiert einen 8-Bit-Schreibbefehl, einen 16-Bit-Schreibbefehl und einen 24-Bit-Schreibbefehl, der tatsächlich zwei Systemschreibbefehle zu aufeinanderfolgenden Adreßorten durchführt.
  • FRMPTR 1117
  • FRMPTR 1117 ist ein 8-Bit-Register. Die Universalregister 1103 können durch Offsets im Bereich von +127 bis -127 von dem in FRMPTR 1117 gespeicherten Wert adressiert werden. Der interne Datenbus 1115 kann den FRMPTR 1117 lesen und in ihn einschreiben, so daß er infolgedessen gesichert und auf einen neuen Wert gesetzt werden kann, wenn in ein Unterprogramm eingestiegen wird, und bei Rücksprung aus dem Unterprogramm auf seinen alten Wert zurückgesetzt werden kann. Dies wiederum ermöglicht die Verwendung der Universalregister 1103 als Stapel von von einem Unterprogramm verwendeten örtlichen Variablen.
  • PC 1127
  • PC 1127 ist ein 16-Bit-Programmzähler (program counter). Er wird zum Steuern des Programmflusses durch Zugriff auf die sowohl in dem internen ROM und/oder im privaten Speicher 108 gespeicherten Befehle verwendet. Bei jedem Taktzyklus wird die Ausgabe des PC vorübergehend in einem 16-Bit-Zwischenspeicher gespeichert. Von diesem Zwischenspeicher aus kann sie in dem LIFO-Stapel (last-in-first-out) gespeichert werden. Dieser Stapel wird zur Realisierung von Unterprogrammrücksprüngen und Unterbrechungsrücksprüngen verwendet. Die Eingabe zu dem PC 1127 geschieht vom LIFO 1125 und dem internen Datenbus 1115. Die Ausgabe erfolgt an den LIFO 1125, den IDB 1115 und den privaten Datenbus 108.
  • Anmerkung: Bei der Ausführung eines Befehls "Verschieb en von PC" enthalten die 6 Bit (21-16) oberhalb der PC-Bit, da der PC nur 16 Bit breit ist, den momentanen Wert des Zeigers des internen Stapels, der tatsächlich einen Zählwert der Anzahl von Adressen auf dem internen Stapel darstellt. Diese Bit werden bereitgestellt, so daß während einer Post-Mortem-Analyse eines Programms mit einem zum Abbruch führenden Fehler es möglich ist, zu sagen, wieviele Adressen vom LIFO 1125 zur Untersuchung abgeworfen werden müssen. Ein Befehl "Verschieben zu PC" wird nur die 16 Bit des PC betreffen.
  • IT 1123
  • IT 1123 ist das interne Register des 24-Bit- Zeitgebers. Es enthält den Wert, der zum Initialisieren und Umladen des Rückwärtszählers, wenn er Null erreicht und möglicherweise eine Unterbrechung erzeugt hat, verwendet wird.
  • STACKREG 1133
  • STACKREG 1133 ist ein 16-Bit-Register, das dazu verwendet wird, die Ausgabe vom LIFO 1125 zu speichern, wenn ein Befehl "Stapelentnahme" ausgeführt wird. Der Stapelentnahme-Befehl und STACKREG 1133 sollen lediglich für das Unterbrechungssteuerungsprogramm für katastrophale Ausnahmen verwendet werden, um zum Beispiel die Ausnahmen FRMPTR- oder LIFO-Über-/Unterlauf oder Busfehler- bzw. Adreßfehlerausnahmen abzuwickeln. STACKREG 1133 gestattet es, den Inhalt von LIFO 1125 während einer Post-Mortem-Analyse zu untersuchen, um zu bestimmen, weshalb der katastrophale Ausfall aufgetreten ist.
  • Befehle im Mikroprozessor 107
  • Bestimmte Aspekte der vom Mikroprozessor 107 ausgeführten Befehle sind von besonderem Interesse. Die Erörterung dieser Aspekte beginnt mit einer Beschreibung der Befehlsausführung allgemein im Mikroprozessor 107 und behandelt dann die Aspekte, wie sie in gewissen der Befehle auftreten.
  • Befehlsausführung im Mikroprozessor 107: Figur 19
  • Ein Verfahren, das häufig verwendet wird, um die Befehlsausführung in Prozessoren zu beschleunigen, ist die Pipelineverarheitung. Die Ausführung eines beliebigen Befehls weist eine Anzahl von Phasen auf. Bei einem VERSCHIEBUNGS-Befehl zum Beispiel, der Daten von einem Register in ein anderes verschiebt, ist es in der Regel erforderlich, den VERSCHIEBUNGS-Befehl abzurufen, ihn zu decodieren, um zu bestimmen, daß es sich um einen VER- SCHIEBUNGS-Befehl handelt, und zu bestimmen, welches Register die Quelle der zu verschiebenden Daten und welches das Ziel ist, und den Befehl tatsächlich auszuführen, indem die Daten von dem Quellregister zum Zielregister verschoben werden. Wenn die Ausführung des Befehls zeitverschachtelt erfolgt, werden die Phasen der Ausführung an verschiedenen Befehlen parallel durchgeführt. Wenn zum Beispiel ein zeitverschachtelt arbeitender Prozessor drei Befehle in der Reihenfolge n1, n2 und n3 ausführt, kann er die Ausführungsphase an n1, die Decodierphase an n2 und die Abrufphase an n3 gleichzeitig durchführen.
  • Der Mikroprozessor 107 weist zwei Pipelines auf. Die erste Pipeline ist die Befehlspipeline. Die Ausführung jedes Befehls ist in drei Phasen unterteilt, nämlich Abrufen, Decodieren und Ausführen, und diese Phasen werden parallel durchgeführt. Im allgemeinen kann der Mikroprozessor 107 infolgedessen einen Befehl pro Zyklus des TAKT-Signals 501 ausführen. Die zweite Pipeline ist eine E/A-Befehlspipeline, die die späteren Phasen der Ausführung von E/A-Befehlen unabhängig von der Befehlspipeline ausführt.
  • Figur 19 zeigt den Betrieb der beiden Pipelines. Der Betrieb jeder Pipeline wird in Form einer Tabelle gezeigt, wobei die Zeilen den Phasen der Befehlsausführung und die Spalten den Zyklen des TAKTS 501 entsprechen. Die Tabelle 1901 stellt die Befehlspipeline und Tabelle 1909 stellt die E/A-Pipeline dar. Wie bereits erwähnt gibt es drei Phasen der Ausführung in der Befehlspipeline 1901. Die Abrufphase (F = fetch) 1903, die Decodierphase (De) 1905 und die Ausführungsphase (E = execute) 1907. In der E/A-Pipeline 1909 sind zwei Phasen: eine Ladephase (L) 1911, in der die für die Operation erforderliche Adresse in ein Register in dem E/A-Untersystem des Mikroprozessors 107, das in Figur 11 durch Kasten 1135 angedeutet ist, geladen wird, und eine E/A-Ausführungsphase (EIO = execute I/O) 1913, in der die Adresse und die Daten über den Bus 103 übertragen werden. Die EIO-Phase 1913 dauert bis zur Beendigung der Übertragung von Daten an, d.h. bis vom Speicher 102 das Signal
  • erhalten wird. Die EIO-Phase 1913 dauert mindestens zwei Taktzyklen bei Lese- und Schreibbefehlen für Byte und Worte und vier Taktzyklen bei Lese-Ändern- Schreib-Befehlen für Byte und Worte und Lese- und Schreibbefehlen für Zeiger. Zusätzliche Zyklen sind erforderlich, falls der Mikroprozessor 107 auf Zugang zum Bus 103 warten muß oder falls der Speicher 102 nicht sofort reagieren kann.
  • Figur 19 zeigt die Ausführung einer Folge von vier Befehlen, SysW1, einem System-Schreibbefehl, der Daten von dem Eingangsspeicher 1149 in den Speicher 102 einschreibt, SysW2, einem zweiten derartigen Befehl, der Daten von dem Ausgangsspeicher 1151 schreibt, NIO1, bei dem es sich um einen beliebigen Befehl handeln kann, der kein E/A-Befehl ist, und NIO2, einen zweiten derartigen Befehl. In Zyklus n führt die Befehlspipeline 1901 die F- Phase 1903 von SysW1 aus, in Zyklus n+1 führt sie die F-Phase 1903 von SysW2 und die De-Phase 1905 von SysW1 aus, in Zyklus n+2 führt sie die F-Phase 1903 von NIO1, die De-Phase 1905 von SysW2 und die E-Phase 1907 von NIO1 aus usw.
  • Im Zyklus n+2 empfängt die E/A-Pipeline 1909 SysW1 und führt darauf im gleichen Zyklus die Ladephase L 1911 aus. Im Zyklus n+3 führt die E/A-Pipeline 1909 die Phase L auf SysW2 und die EIO-Phase 1913 auf SysW1 aus. Diese Phase dauert für SysW1 zwei Zyklen oder bis Zyklus n+4. Folglicherweise kann SysW2 nicht vor Zyklus n+5 in die EIO-Phase 1913 eintreten; die EIO-Phase 1913 dauert länger als drei Zyklen für SysW2 und SysW2 ist in Zyklus n+7, dem letzten in Figur 19 gezeigten Zyklus, immmer noch in dieser Phase.
  • Da die E/A-Pipeline 1909 unabhängig von der Befehlspipeline 1901 arbeitet, braucht die Ausführung von Befehlen in der Befehlspipeline 1901 nicht zu warten, bis die EIO-Phase 1913 für SysW1 oder SysW2 beendet worden ist. Während E/A läuft, führt die Befehlspipeline 1901 NIO1 und NIO2 aus. Gelegentlich kann es natürlich erforderlich sein, die Befehlspipeline 1901 anzuhalten, um auf die E/A-Pipeline 1909 zu warten. Eine derartige Situation würde eintreten, wenn beim Eintritt eines folgenden E/A Befehls in die E-Phase 1907 sich bereits ein E/A-Befehl in der L-Phase 1911 befinden würde. Eine weitere derartige Situation würde eintreten, falls ein NIO-Befehl in seiner E-Phase 1907 Daten erfordern würde, die von einem E/A-Befehl, der gerade von der E/A-Pipeline 1909 ausgeführt würde, bereitgestellt würden.
  • Befehlsformate: Figur 12
  • Figur 12 zeigt die von dem Mikroprozessor 107 ausgeführten VERSCHIEBUNGS-Befehle. Wie aus dieser Figur ersichtlich, bestehen die Befehle des Mikroprozessors 107 aus 24-Bit-Befehlsworten 1201. Die meisten der Befehle bestehen aus einem einzelnen Befehlswort 1201; allerdings erfordern einige VERSCHIEBUNGS-Befehle und LADE-Befehle für 24-Bit-Literalkonstanten zwei Worte. Es sein denn, daß die Befehlspipeline 1901 gestoppt worden ist, holt sich der Mikroprozessor 107 ein Befehlswort 1201 pro Taktzyklus.
  • VERSCHIEBUNGS-Befehle: Figuren 12 und 12A
  • Die VERSCHIEBUNGS-Befehle verschieben Daten zwischen Registern des Mikroprozessors 107. Das Register, von dem aus die Daten verschoben werden, ist die Quelle, und das Register, zu dem sie verschoben werden, ist das Ziel. Es gibt vier Arten von Verschiebungsbefehlen:
  • Typ 0, bei dem sowohl die Quelle als auch das Ziel Universalregister 1103 sind;
  • Typ 1, bei dem ein Universalregister 1103 die Quelle und eines der Spezialregister das Ziel ist;
  • Typ 2, bei dem eines der Spezialregister die Quelle und eines der Universalregister 1103 das Ziel ist; und
  • Typ 3, bei dem ein Spezialregister die Quelle und ein weiteres Spezialregister das Ziel ist.
  • Befehle vom Typ 0 werden in dem mit 1225 gekennzeichneten Teil von Figur 12 gezeigt. Die Befehle haben zwei Worte, das Befehlswort 1 (IW1 = instruction word) 1215 und das Befehlswort 2 (IW2) 1217. Beginnend mit IW1 1215 enthalten die vier höchstwertigen Bit einen Operationscode (OPCODE) 1203; die nächsten vier Bit sind ein beliebiges (DC = don't care) Feld 1205; die folgenden vier Bit, TYP 1207, spezifizieren den Typ von Verschiebungsbefehl. Bei Typ 0 hat TYP 1207 den Wert 0000; das GRÖSSE-Feld 1209 zeigt an, welcher Teil des Inhalts des Universalquellregisters 1103 zu dem Universalzielregister 1103 verschoben werden soll. Die Codes und der Teil des Universalregisters 1103, den sie spezifizieren, sind wie folgt:
  • Die Bezugszahlen beziehen sich auf Figur 11A.
  • Die verbleibenden 9 Bit spezifizieren das Universalregister 1103, bei dem es sich um die Quelle handelt. F-Bit 1211 zeigt an, ob das Universalregister 1103 mittels eines Offset von dem Rahmenzeiger 1117 spezifiziert wird. Wenn dies der Fall ist, enthält das Quellenfeld (source field) 1213 des Universalregisters das Offset. Falls dies nicht der Fall ist, enthält das Universalregisterquellenfeld 1213 die Nummer des Universalregisters 1103. Die 12 höchstwertigen Bit des Befehlsworts 2 1217 sind beliebige Bit 1219, die Bit 9-11 sind das GRÖSSE-Feld 1209, der Code in GRÖSSE 1209 im Befehlswort 2 1217 spezifiziert den Teil des Universalzielregisters 1103, der die Daten empfangen wird. Wenn der durch GRÖSSE im Befehlswort 2 1217 spezifizierte Teil größer ist als der durch GRÖSSE in Befehlswort 1 1215 spezifizierte, sind die höchstwertigen Bit mit 0 angefüllt, falls der Teil kleiner ist, werden die überschüssigen höchstwertigen Bit verworfen. Die verbleibenden 9 Bit enthalten das F-Feld 1211 und das Universalregisterzielfeld 1221, die zusammen das Universalzielregister 1103 auf gleiche Weise spezifizieren wie die entsprechenden Felder das Universalquellregister im Befehlswort 1 1215 spezifizieren.
  • Die Ausführung des Verschiebungsbefehls 1225 vom Typ 0 wird im Pipelinediagramm 1223 gezeigt. Im Zyklus n wird IW1 1215 geholt; im Zyklus n+1 wird IW2 1217 geholt und IW1 1215 decodiert, wobei die Decodierung die Berechnung, welches Universalregister 1103 das Quellenregister ist, und das Einlesen des Teils davon, der von dem GRÖSSE-Feld 1209 spezifiziert ist, in einen mit dem internen Datenbus 1115 verbundenen Zwischenspeicher einbezieht. Im Zyklus n+2 wird IW2 1217 decodiert, um zu bestimmen, welches Universalregister 1103 das Zielregister ist, und im gleichen Zyklus wird der Inhalt des Zwischenspeichers in den durch das Größe-Feld 1209 spezifizierten Teil des Universalzielregisters 1103 eingelesen.
  • Die Verschiebungs-Befehle vom Typ 1 und 2 werden in dem mit 1233 gekennzeichneten Teil der Figur 12 gezeigt. Der Befehl vom Typ 1 hat als Quelle ein Universalregister 1103 und als Ziel ein Spezialregister, der Befehl vom Typ 2 hat als Quelle ein Spezialregister und als Ziel ein Universalregister 1103. Mit Ausnahme des Wertes des Typenfelds 1207 ist das Format der beiden Typen das gleiche. Die höchstwertigen 4 Bit sind der Opcode 1203, die nächsten vier Bit SPR 1227 sind ein Code, der eines der Spezialregister spezifiziert; danach kommt das GRÖSSE-Feld 1209, und schließlich das F-Feld 1211 und das GR-Feld 1229, die ein Universalregister 1103 spezifizieren. Ob es sich bei dem Spezialregistern und dem Universalregister um Quelle und Ziel handelt oder umgekehrt, hängt von dem Wert des TYP-Feldes 1207 ab. Die Wirkung von GRÖSSE ist wie folgt:
  • Falls ein Universalregister 1103 die Quelle ist und der von GRÖSSE 1209 spezifizierte Teil kleiner als 24 Bit ist, wird der spezifizierte Teil auf die niedrigstwertigen Bit des IDB 1115 plaziert und die verbleibenden Bit werden auf 0 gesetzt.
  • Falls ein Universalregister 1103 das Ziel ist und der von GRÖSSE 1209 spezifizierte Teil kleiner als 24 Bit ist, wird der spezifizierte Teil vom niedrigstwertigen Bit des IDB 1115 geschrieben.
  • Die Ausführung eines VERSCHIEBUNGS-Befehls vom Typ 1 oder 2 in der Befehlspipeline 1901 wird im Diagramm 1231 gezeigt. Im Zyklus n wird der Befehl geholt, im Zyklus n+1 werden Quelle und Ziel bestimmt und im Zyklus n+2 werden die Daten über IDB 1115 von der Quelle zum Ziel geschrieben.
  • Der Verschiebungsbefehl vom Typ 3 verschiebt Daten von einem Spezialquellregister zu einem Spezialzielregister. Der Befehl ist an der Bezugsziffer 1241 in Figur 12A gezeigt. Der Befehl hat einen Opcode 1203 in den Bit 20-23, in den Bit 16-19 einen Code, der das Spezialzielregister spezifiziert, TYP 1207 in Bit 12-15 und in Bit 0-3 einen Code, der das Spezialquellregister spezifiziert. Bei den Bit 4-11 handelt es sich um beliebige Bit. Wie die Abwesenheit des GRÖSSE-Feldes 1209 impliziert, verschiebt der Befehl immer 24 Bit. Die Ausführung in der Pipeline ist im wesentlichen die gleiche wie für die Befehle vom Typ 1 und 2.
  • Systemspeicher-E/A im Mikroprozessor 107: Figuren 2 und 9
  • Ein weiteres Gebiet, auf dem der Mikroprozessor 107 für effiziente und flexible Verwendung in vielen Systemen besonders geeignet ist, ist der Systemspeicher- E/A. Im Systemspeicher-E/A werden Daten über den Systembus 103 in den Speicher 102 eingeschrieben und daraus ausgelesen. In einer bevorzugten Ausführungsform 201 des Mikroprozessors 107 ist der Mikroprozessor 107 über 16 Datenleitungen und 23 Adreßleitungen mit dem Systembus 103 verbunden. Jede Adresse spezifiziert im Speicher 102 ein 16-Bit-Wort. Zu den von dem Mikroprozessor 107 durchgeführten System-E/A-Operationen gehören das Lesen und Schreiben für Byte, 16-Bit-Worte und 24-Bit-Zeiger und das Lesen-Verändern-Schreiben für Byte und Worte. Beim Lesen eines Byte spezifizieren die Signale und (siehe Figur 2), ob das gerade oder ungerade Byte des von der Adresse spezifizierten Wortes gelesen wird. Beim Schreiben eines Byte sind die entsprechenden Signale und .
  • Figur 9 zeigt den zeitlichen Verlauf beim Lesen eines Systemspeicherbyte: Nachdem der Mikroprozessor 107 Zugang zum Bus 103 erlangt hat, erfordert das Lesen des Byte mindestens zwei Zyklen des Taktes 501 auf Bus 103: einen zum Plazieren der Adresse, des Adreßübergabe- Strobesignals und entweder oder auf dem Bus und einen zum Empfangen der Daten vom Bus 103. Der zeitliche Verlauf ist im wesentlichen der gleiche, wie er oben für das Schreiben des Byte und das Lesen und Schreiben des Worts gezeigt ist. Die Lese- und Schreiboperationen für den 24-Bit-Zeiger erfordern 4 Zyklen: zwei, wie sie oben für zwei Byte des Zeigers beschrieben sind, und zwei weitere für das dritte Byte. Die Lese- Verändern-Schreib-Befehle erfordern mindestens vier Zyklen: zwei für das Lesen und zwei für das Schreiben. Falls der Speicher 102 nicht in der Lage ist, sofort zu reagieren, ist möglicherweise für irgendeine der E/A- Operationen mehr Zeit erforderlich. Aus diesem Grund liefert der Speicher 102 das
  • -Signal an den Mikroprozessor 107, wenn er die Daten in einer Lese-Operation bereitgestellt oder die Daten in einer Schreib-Operation empfangen hat. Der Mikroprozessor 107 wartet auf das
  • -Signal, bevor er den zweiten Zyklus einer Lese- oder Schreib-Operation abschließt.
  • E/A-Untersegment 1135: Figur 11
  • Die Befehlsarchitektur für die System-E/A-Befehle des Mikroprozessors 107 wird in dem E/A-Untersegment 1135 von Figur 11 gezeigt. Über den internen Datenbus 1115 kann auf die Register im Segment 1135 zugegriffen werden. Zu den durch den Programmierer spezifizierbaren Registern gehören ALR 1145, das bei einer Lese-Operation mit einer 24-Bit-Adresse geladen wird, ALW 1146, das bei einer Schreib-Operation mit einer Adresse geladen wird, Eingangsspeicher 1149, der bei einer Lese-Operation Daten vom Systembus 103 empfängt, und Ausgangsspeicher 1151, der bei einer Schreib-Operation auf den Systembus 103 zu schreibende Daten empfängt. Sowohl Eingangsspeicher 1149 als auch Ausgangsspeicher 1151 sind 24-Bit-Register, Byte-E/A-Operationen Lesen oder Schreiben die 8 niedrigstwertigen Bit, Wort-Operationen die 16 niedrigstwertigen Bit und Zeigeroperationen das gesamte Register.
  • Das Segment 1135 enthält weiterhin Register, die Teil der E/A-Pipeline 1909 sind. Der Schattenadreßspeicher (SAL = shadow address latch) 1141 hält die Adresse für einen E/A-Befehl, der in die Ladephase 1911 eingesprungen ist, ehe der vorhergehende E/A-Befehl die EIO-Phase 1913 verlassen hat. Der Schattenausgangsspeicher (SOL = shadow output latch) 1155 hält die Daten, die durch einen in der EIO-Phase 1913 befindlichen Schreib-Befehl ausgegeben werden sollen, wenn ein nachfolgender E/A-Befehl in die Ladephase 1911 einspringt, wodurch OL 1151 vor Beendigung der Schreiboperation für das Beladen verfügbar gemacht wird. Der Betrieb der E/A-Pipeline 1909 ist wie folgt: Falls bei Einspringen eines E/A-Befehls in die Ladephase 1911 die Pipeline leer ist, wird ALR 1145 geladen, falls es sich bei dem E/A- Befehl um einen Lesebefehl handelt. Falls es sich um einen Schreibbefehl handelt, ist OL 1151 von einem vorausgegangenen VERSCHIEBUNGS-Befehl beladen worden und die Ladephase 1911 belädt ALW 1146. In dem ersten Zyklus der EIO-Phase 1913 für den Schreibbefehl wird der Inhalt von OL 1151 zu SOL 1155 verschoben, wodurch OL 1151 frei wird, um im gleichen Zyklus oder später durch einen VERSCHIEBUNGS-Befehl beladen zu werden. Im ersten Zyklus der EIO-Phase 1913, nachdem der Mikroprozessor 107 Zugang zum Bus 103 erlangt hat, werden die Daten im SOL 1155 und die Adresse in ALW 1146 so lange zum Bus 103 ausgegeben, bis der Speicher 102 mit dem
  • -Signal reagiert. Falls sich in der Pipeline 1909 bereits ein E/A-Befehl befindet, wenn der nächste E/A-Befehl in die Ladephase 1911 einspringt, wird die Adresse in SAL 1141 geladen. Falls SAL 1141 voll ist, wenn ein E/A-Befehl, dessen Ausführungsphase 1907 dieses Register beladen würde, die Decodierphase 1905 erreicht, wird schließlich die Befehlspipeline 1901 so lange angehalten, bis das Register verfügbar wird.
  • In einer bevorzugten Ausführungsform 201 wird die für E/A-Operationen typische Adreß- und Datenverarbeitung in dem E/A-Untersegment 1135 durchgeführt, so daß ALU 1107 andere Operationen zeitlich parallel durchführen kann. Ein Beispiel für eine derartige Verarbeitung ist der Offsetaddierer 1139. Wenn eine Adresse in das ALR 1145 oder ALW 1146 geladen wird, kann ein in dem E/A-Befehl spezifiziertes Offset 1137 zu der Adresse addiert werden, außerdem kann der Befehl entweder ALR 1145 oder ALW 1146 als Quelle der Adresse für eine E/A-Operation spezifizieren und den Offsetaddierer 1139 zum Addieren des Offsets zu dem momentanen Inhalt des spezifizierten Registers verwenden. Wie aus Figur 11 ersichtlich, kann dies durch Busse realisiert werden, die die Ausgänge von ALR 1145 und ALW 1146 mit dem internen Datenbus 1115 verbinden, der wiederum die Adreßeingabe dem Offsetaddierer 1139 liefert.
  • Ein weiteres Beispiel derartiger Verarbeitung ist die Bereitstellung von sowohl MIR 1145 als auch ALW 1146 und die Bereitstellung einer Verbindung zwischen dem Ausgang des Eingangsspeichers 1149 und dem Eingang des Schattenausgangsspeichers 1155. Zusammengenommen gestatten diese Merkmale die effiziente Verschiebung von Daten von einem Ort im Speicher 102 zu einem anderen Ort im Speicher 102. Da im ALR 1145 und im ALW 1146 sowohl die Lese- als auch die Schreib-Adresse zur Verfügung steht und der Eingangsspeicher 1149 als Quelle von Daten für die Schreiboperation zur Verfügung steht, kann die Schreiboperation unmittelbar auf die Leseoperation folgen, und die Übertragung eines Wortes oder Byte von einem Ort zu einem anderen im Speicher 102 erfordert nur vier Zyklen. Schließlich ist zwischen IL 1149 und OL 1151 einerseits und SOL 1155 andererseits eine UND/ODER- Auswahllogik bereitgestellt. Dies gestattet, den Inhalt von OL 1151 (durch einen vorausgegangenen VERSCHIEBUNGS- Befehl beladen) mit dem Inhalt von IL 1149 durch ein logisches UND oder ODER zu verknüpfen, und gestattet somit das Auslesen von Daten aus dem Speicher 102, ihre Veränderung durch eine Maske in OL 1151 und das Rückschreiben der Daten in den Speicher 102 in nur vier Zyklen.
  • E/A-Befehle: Figuren 13, 17 und 18
  • Der Mikroprozessor 107 weist drei E/A-Befehle auf: einen LESE-Befehl, einen SCHREIB-Befehl und einen LESE-VERÄNDERN-SCHREIB-Befehl. Die Formate aller drei Befehle sind in Figur 3 gezeigt. Der LESE-Befehl ist durch die Referenzzahl 1301 identifiziert, der SCHREIB-Befehl durch Referenzzahl 1313 und der LESE- VERÄNDERN-SCHREIB-Befehl durch Referenzzahl 1319. Wie aus dieser Figur hervorgeht, haben alle E/A-Befehle eine Anzahl von Merkmalen gemeinsam. Bei den höchstwertigen Bit anfangend sind die Bit 20-23 der Opcode, der für jeden der drei Befehle unterschiedlich ist; die Bit 12-19 sind ein 8-Bit-OFFSET-Wert, der zum Wert eines Zeigers addiert wird, um die in der E/A-Operation verwendete Adresse zu erhalten. Das E/A-Größe-Feld (IOSI/O Size) 1307 (Bit 11 und 10) zeigt die Größe der zu lesenden oder schreibenden Daten und zusammen mit dem I/ -Anschluß 209 das Format von 16-Bit-Worten und 24-Bit-Zeigern an. Bit 0 bis 8 bilden das Zeigerfeld (PTR pointer) 1311, das ein Register des Mikroprozessors 107, das einen bei der E/A- Operation als Zeiger zu verwendenden Wert enthält, das heißt einen einen Ort im Speicher 102 darstellenden Wert, spezifiziert. Bei dem spezifizierten Register kann es sich entweder um ein Universalregister 1103 oder um eines der Spezialregister handeln, meistens ALR 1145 oder ALW 1146. Im Fall eines Universalregisters 1103 wird das Register entweder direkt durch seine Nummer im GR-Feld 1229 oder indirekt durch ein Offset vom Wert im Rahmenzeiger 1117 spezifiziert. Wie bei den VERSCHIEBUNGS- Befehlen zeigt das F-Bit 1211 an, welcher Modus gerade verwendet wird. Im Fall eines Spezialregisters enthält das SR-Feld 1312 einen Code für das Spezialregister, während es sich bei den Bit 4-8 um ein Feld mit beliebigen Werten handelt, hier DC 1310.
  • Wie aus den oben beschriebenen gemeinsamen Feldern hervorgeht, führt der Mikroprozessor 107 E/A-Befehle allgemein wie folgt aus: In der Decodierphase 1905 wird der durch die Zeigerfelder (PTR) 1311 angezeigte Zeiger zur Quelle für den internen Datenbus 1115 gemacht, in der Ausführungsphase 1907 wird der Zeigerwert über den internen Datenbus 1115 je nach Art des E/A-Befehls entweder an ALR 1145 oder ALW 1146 weitergegeben. Bei der Verschiebung des Zeigers wird das Offset in den Bit 12-19 durch den Offsetaddierer 1139 ihm hinzuaddiert. Die Ausführungsphase 1907 ist somit gleichzeitig für die Befehlspipeline 1909 die Ladephase 1911. Die EIO-Phase 1913 der Befehlspipeline 1901 beginnt in dem auf das Laden des Zeigers in ALR 1145 oder ALW 1146 folgenden Zyklus. Falls die Befehlspipeline 1901 bereits einen E/A-Befehl enthält, wird der Zeiger anstatt in ALR 1145 oder ALW 1146 in SAL 1141 eingeladen.
  • Der SCHREIB-Befehl 1313 weist außerdem noch ein Zwischenspeicherquell-(LS latch source)Feld 1317 auf. Die eine Einstellung des Einzelbitfeldes zeigt an, daß die Quelle der zu schreibenden Daten der Ausgangsspeicher 1151 ist, die andere Einstellung zeigt an, daß es der Eingangsspeicher 1149 ist. Die Nützlichkeit dieser Anordnung zum Durchführen von aufeinanderfolgenden Speicher-Lese- und Schreiboperationen ist bereits beschrieben worden.
  • Der LESE-VERÄNDERN-SCHREIB-Befehl 1319 hat gleichfalls ein zusätzliches Einzelbitfeld: das UND/ODER- Feld 1323. Eine Einstellung des Bits zeigt an, daß die Logik 1153 den Inhalt von IL 1149 mit dem von OL 1151 über UND verknüpfen wird, die andere zeigt an, daß die Logik 1153 den Inhalt der beiden Register durch ODER verknüpfen wird. Wiederum ist die Nützlichkeit dieser Anordnung zum Durchführen von Lese-Verändern-Schreib- Operationen in vier Zyklen bereits beschrieben worden. Wie schon angedeutet, schreibt die LESE-VERÄNDERN- SCHREIB-Operation lediglich Byte oder Worte, weshalb das IOS-Feld 1307 bei diesem Befehl kein 24-Bit-Datenelement spezifizieren kann.
  • Lese- und Schreiboperationen mit unterschiedlichen Datenformaten: Figuren 11 und 17
  • Wie in Figur 1 gezeigt, arbeitet der Mikroprozessor 107 bei vielen Anwendungen mit einem Hauptprozessor 105 zusammen. Bei einigen Anwendungen kann es sich bei dem Hauptprozessor 105 um einen anderen Mikroprozessor 107 handeln, bei anderen allerdings ist es ein anderer Prozessor oder Mikroprozessor. Es ist insbesondere sehr wahrscheinlich, daß der Hauptprozessor 105 entweder die Architektur des Intel 80x86 oder die Architektur des Motorola 680x0 aufweist. Zwei der Arten, in der sich diese Architekturen unterscheiden, sind das Format ihrer Zeiger und die Weise, auf die Byte in 16-Bit-Worten gespeichert werden. Durch drei Merkmale des Mikroprozessors 107, dem I/ -Anschluß 209, einem Code im IOS-Feld 1307 der E/A-Befehle und dem SWB-Bit im Programmstatuswort 1119 kann der Mikroprozessor 107 ohne weiteres entweder mit einem 80x86- oder 680x0-Hauptprozessor eingesetzt werden. Durch den Code in dem IOS-Feld 1307 kann ein Programmierer außerdem ein einzelnes Programm schreiben, das sowohl in der 80x86- als auch der 680x0-Umgebung richtig abläuft.
  • Figur 17 zeigt die unterschiedlichen Arten, wie die 80x86-Architektur und die 680x0-Architektur Byte im Speicher 102 organisieren, und die unterschiedlichen Arten, wie sie Zeiger formatieren. In den Byte- und Wortbeispielen wird in der Figur angenommen, daß eine Folge von vier Byte mit den Werten AA, BB, CC und DD gespeichert werden. Bei 1701 werden die Ergebnisse gezeigt, wenn ein 80x86 eine Folge von Byte-Schreiboperationen in einen in 16-Bit-Worte organisierten Speicher durchführt und die Folge an einer Wortgrenze beginnt: Das erste Byte AA wird in die 8 niedrigstwertigen Bit des ersten Wortes geschrieben, das nächste, BB, in die 8 höchstwertigen Bit des ersten Wortes, das nächste, CC, in die 8 niedrigstwertigen Bit des zweiten Wortes und das nächste, DD, in die 8 höchstwertigen Bit des zweiten Wortes. Bei 1703 werden die Ergebnisse gezeigt, wenn ein 680x0 die gleiche Operation durchführt: Das erste Byte AA wird in die 8 höchstwertigen Bit des ersten Worts geschrieben, das nächste Byte BB wird in die 8 niedrigstwertigen Byte dieses Wortes geschrieben, das dritte Byte CC wird in die 8 höchstwertigen Byte des zweiten Worts geschrieben und das vierte Byte DD wird in die 8 niedrigstwertigen Byte des zweiten Worts geschrieben.
  • Wenn auf der anderen Seite die gleichen vier Byte durch Wort-Schreiboperationen geschrieben werden, wobei das erste Wort-Schreiben die Byte AA und BB schreibt und das zweite Wort-Schreiben die Byte CC und DD schreibt, gibt es zwischen den Organisationen des 80x86 und des 680x0 keinen Unterschied, wie durch 1705 gezeigt. In beiden Fällen ist AA in den 8 höchstwertigen Bit des ersten zu schreibenden Wortes, BB in den 8 niedrigstwertigen Bit, CC in den 8 höchstwertigen Bit des zweiten Worts und DD in den 8 niedrigstwertigen Bit dieses Worts.
  • Es geht weiter mit den Zeigerformaten, wobei beide Architekturen 32-Bit-Zeiger einsetzen, die in zwei benachbarten Worten gespeichert werden. Prozessor 107 verwendet 24-Bit-Adressen und kümmert sich folglicher weise nur um die 24 niedrigstwertigen Bit der 32-Bit-Zeiger. Unter der Annahme, daß die 24 niedrigstwertigen Bit den Wert AABBCC aufweisen, wobei AA das höchstwertige Byte und CC das niedrigstwertige ist, ist das 80x86-Format das bei 1707 gezeigte und das 680x0-Format das bei 1709 gezeigte. In dem 80x86-Format ist das höchstwertige Byte des Zeigers in den 8 niedrigstwertigen Bit des zweiten Worts, das Byte mit der nächstniedrigeren Wertigkeit ist in den 8 höchstwertigen Bit des ersten Wortes, und das niedrigstwertige Byte ist in den niedrigstwertigen Bit des ersten Worts. In dem 680x0-Format ist das höchstwertige Byte des Zeigers in den niedrigstwertigen 8 Bit des ersten Worts, das Byte mit der nächstniedrigeren Wertigkeit ist in den höchstwertigen 8 Bit des zweiten Worts und die niedrigstwertigen 8 Bit sind in den niedrigstwertigen 8 Bit des zweiten Worts.
  • Der Mikroprozessor 107 bewältigt einige der Unterschiede zwischen den 80x86- und 680x0-Architekturen mittels des I/ -Anschlusses 209. Wenn der Mikroprozessor 107 mit einem 80x86-Hauptprozessor 105 arbeitet, wird Vcc an Anschluß 207 gelegt; wenn der Mikroprozessor 107 mit einem Motorola 680x0-Hauptprozessor 105 arbeitet, ist der Anschluß 207 geerdet. Anschluß 207 wird allgemein entweder an Erde oder an Vcc angeschlossen sein, da sich der Typ von Hauptprozessor 105 kaum mit irgendeiner Frequenz verändert. Allerdings könnte der Eingang zu Anschluß 207 schaltbar gemacht werden, um eine Systemumkonfigurierung zu gestatten.
  • Beginnend bei den Byteoperationen werden diese in dem IOS-Feld 1307 des Befehls durch den Code "00" spezifiziert. Bei der Byte-Schreiboperation ist das zu schreibende Byte in den niedrigstwertigen 8 Bit von SOL 1155 enthalten, sowohl beim 80x86- als auch beim 680x0-Modus wird das Byte an beide Bit 0-7 und 8-15 der Datenleitungen 313 des Busses 103 abgegeben. Der Eingang an dem I/ -Anschluß und der Wert des niedrigstwertigen Bit der Adresse bestimmen dann, ob das -Signal oder das -Signal freigegeben wird, so daß das Byte zu dem oberen oder unteren Byte des adressierten Worts geschrieben wird, wie die 80x86- und 680x0-Speicherformate dies erfordern.
  • Bei den Byte-Leseoperationen liegt das ungerade Byte an den Datenleitungen 8-15 und das gerade Byte an den Datenleitungen 0-7, im zweiten Fall gilt das Umgekehrte. Welches Byte als Reaktion auf eine gegebene ungerade oder gerade Byteadresse in die Bit 7-0 des Eingangsspeichers 1149 gelesen wird, hängt von der Eingabe ab, die der Mikroprozessor 107 an dem I/ - Anschluß 209 empfängt und von dem SWB-Bit in PSW 1119. Wenn SWB auf 0 gesetzt ist und der Eingang zu I/ auf L-Pegel liegt, was einen 680x0-Hauptprozessor anzeigt, führt das Lesen eines geraden Byte dazu, daß das Byte auf den Leitungen 8-15 in den Eingangsspeicher 1149 [7-0] gelesen wird, während das Lesen eines ungeraden Byte dazu führt, daß das Byte auf den Leitungen 0-7 in diesen Teil des Eingangsspeichers 1149 gelesen wird. Wenn SWB auf 0 gesetzt ist und der Eingang zu I/ auf H-Pegel liegt, was einen 80x86-Hauptprozessor anzeigt, tritt das umgekehrte dessen ein, was oben beschrieben ist. Wenn SWB schließlich auf 1 gesetzt ist, so ist die Reaktion des Mikroprozessors 107 auf den Eingang zum I/ -Anschluß 209 die Umkehrung dessen, was gerade beschrieben worden ist. SWB gibt somit dem Programmierer eine Möglichkeit, die Auswirkung von I/ auf die Byte-Leseoperationen zu umgehen.
  • Bei dem Lesen-Verändern-Schreiben für Bytedaten funktioniert das Lesen so wie gerade beschrieben und das Schreiben so wie gerade für das Byte-Schreiben beschrieben, mit der Ausnahme, daß die Daten in SOL 1155 der mit der Maske in OL 1151 UND- oder ODER-verknüpfte Inhalt des Eingangsspeichers 1149 ist.
  • Wortoperationen werden in dem E/A-Größenfeld 1307 durch den Code 01 spezifiziert. Für 16-Bit-Speicherworte besteht zwischen den 80x86- und 680x0-Formaten kein Unterschied, weshalb der I/ -Anschluß 209 sich nicht auf die Weise auswirkt, wie diese Operationen durchgeführt werden. Beim Schreiben werden die unteren 16 Bit von SOL 1155 an die Datenleitungen 313 abgegeben, beim Lesen werden die Bit auf den Datenleitungen 313 in den unteren 16 Bit des Eingangsspeichers 1149 zwischengespeichert. Das gleiche gilt für den Leseteil der Lese-Verändern- Schreib-Operation und den Schreibteil dieser Operation.
  • Eine Zeigerleseoperation, die im E/A-Größenfeld 1307 durch Code 10 angedeutet ist, erfordert, daß zwei Worte aus dem Speicher 102 geholt werden. Falls der Hauptprozessor ein 680x0 ist, enthält das untere Byte des ersten Worts das höchstwertige Byte des Zeigers, während das obere und das untere Byte des nächsten Worts das Byte mit der nächstniedrigeren Wertigkeit und das niedrigstwertige Byte enthalten. Wenn somit der I/ -Anschluß 209 anzeigt, daß der Hauptprozessor ein 680x0 ist, bewirkt das Lesen des ersten Wortes aus dem Speicher 102, daß der Inhalt der Datenleitungen 313 [7-0] in den Eingangsspeicher 1149 [23-16] plaziert wird. Wenn das zweite Wort aus dem Speicher 102 ausgelesen wird, geht der Inhalt der Datenleitungen 313 [15-8] in den Eingangsspeicher 1149 [15-8] und der Inhalt der Datenleitungen 313 [7-0] geht simultan in den Zwischenspeicher 1149 [7-0].
  • Falls es sich bei dem Hauptprozessor um einen 80x86 handelt, enthält das erste Wort das niedrigstwertige Byte des Zeigers in seinem unteren Byte und das Byte mit der nächsthöheren Wertigkeit des Zeigers in seinem oberen Byte, das zweite Wort enthält das höchstwertige Byte des Zeigers in seinem unteren Byte. Wenn folglicherweise der I/ -Anschluß 209 anzeigt, daß es sich bei dem Hauptprozessor um einen 80x86 handelt, führt das Lesen des ersten Worts aus dem Speicher 102 dazu, daß der Inhalt der Datenleitungen 313 [15-8] in den Eingangsspeicher 1149 [15-8] plaziert wird und der der Datenleitungen 313 [7-0] in den Eingangsspeicher 1149 [7-0] plaziert wird. Im nächsten Zyklus wird der Inhalt der Datenleitungen 313 [7-0] in den Eingangsspeicher 1149 [23-16] plaziert.
  • Wenn Zeiger geschrieben werden, falls der I/ -Anschluß 209 anzeigt, daß der Hauptprozessor ein 680x0 ist, führt das Schreiben des ersten Worts in den Speicher 102 dazu, daß der Schattenausgangsspeicher 1155 [23-16] auf D 313 [7-0] plaziert wird und Nullen auf z 313 [15-8] plaziert werden, während das Schreiben des zweiten Worts dazu führt, daß der Schattenausgangsspeicher 1155 [15-8] auf D 313 [15-8] plaziert wird und der Schattenausgangsspeicher 1155 [7-0] simultan auf D 313 [7-0] plaziert wird. Falls der I/ -Anschluß 209 anzeigt, daß es sich bei dem Hauptprozessor um einen 80x86 handelt, führt das Schreiben des ersten Worts dazu, daß der Schattenausgangsspeicher 1155 [15-8] auf D 313 [15-8] plaziert wird und der Schattenausgangsspeicher 1155 [7-0] simultan auf D 313 [7-0] plaziert wird. Das Schreiben des zweiten Wortes führt dazu, daß der Schattenausgangsspeicher 1155 [23-16] auf D 313 [7-0] plaziert wird und Nullen auf D 313 [15-8] plaziert werden.
  • Der I/ -Anschluß 209 stellt von alleine sicher, daß, falls der Hauptprozessor 105 ein Byte, Wort oder Zeiger von Daten in den Speicher 102 schreibt und der Mikroprozessor 107 ein Byte, Wort oder Zeiger der gleichen Daten aus dem Speicher 102 ausliest oder umgekehrt, sowohl der Hauptprozessor 105 als auch der Mikroprozessor 107 die Daten in dem erwarteten Format empfangen. Wenn allerdings der Hauptprozessor 105 zwei Byte in den Speicher 102 schreibt und der Mikroprozessor 107 ein Wort der zwei Byte liest, so hängen die Positionen der Byte in dem Wort davon ab, ob es sich bei dem Hauptprozessor 105 um einen 80x86 oder einen 680x0 handelt, und der Code in dem Mikroprozessor 107, der das Wort verarbeitet, hängt von dem Typ von Hauptprozessor ab. Da dies der Fall ist, würde eine Veränderung des Hauptprozessors eine umfassende Revision des Codes erfordern, was wiederum die Kosten, den Mikroprozessor 107 verwendende Systeme zu entwickeln, stark ansteigen lassen würde.
  • Dieses Problem wird in dem Mikroprozessor 107 durch den Code 11 in E/A-Größe 1307 gelöst. Dieser Code zeigt "Wort mit ausgetauschtem Byte" an, d.h., daß Wort-E/A-Operationen verwendet werden sollen, daß aber die Byte des Worts ausgetauscht werden sollen, falls der I/ -Anschluß 209 anzeigt, daß der Hauptprozessor eine 80x86-Maschine ist. Wenn somit in einem E/A-Befehl "Wort mit ausgetauschtem Byte" angezeigt wird, wird der Mikroprozessor 107 Wort-Lese- und Schreiboperationen an Bytedaten unabhängig davon, ob der Hauptprozessor eine 680x0-Maschine oder eine 80x86-Maschine ist, richtig durchführen können, und es wird nicht erforderlich sein, je nach Typ der Hauptmaschine einen anderen Code zu schreiben.
  • Der "Wort mit ausgetauschtem Byte"-Code und der I/ -Anschluß 209 erzeugen in Wechselwirkung das oben beschriebene Ergebnis wie folgt: Bei einer Leseoperation, wenn I/ einen 680x0-Hauptprozessor spezifiziert, wird der Inhalt von D 313 [15-8] in den Eingangsspeicher 1149 [15-8] geschrieben und der von D 313 [7-0] wird in den Eingangsspeicher 1149 [7-0] geschrieben; wenn der I/ -Anschluß 209 einen 80x86-Hauptprozessor spezifiziert, wird der Inhalt von D 313 [15-8] in den Eingangsspeicher 1149 [7-0] geschrieben und der von D 313 [7-0] wird in den Eingangsspeicher 1149 [15-8] geschrieben. Bei einer Schreiboperation, wenn der I/ -Anschluß 209 einen 680x0-Hauptprozessor spezifiziert, wird der Inhalt des Schattenausgangsspeichers 1155 [7-0] in D 313 [7-0] geschrieben und der des Schattenausgangsspeichers 1155 [15-8] wird in D 313 [15-8] geschrieben. Wenn der I/ -Anschluß 209 einen 80x86-Hauptprozessor spezifiziert, wird der Inhalt des Schattenausgangsspeichers 1155 [7-0] in D 313 [15-8] geschrieben und der des Schattenausgangsspeichers 1155 [8-15] wird in D 313 [7-0] geschrieben. Bei der Lese-Verändern-Schreib-Operation mit "Wort mit ausgetauschtem Byten sind die Lese- und die Schreib-Phase der Operation genauso, wie sie gerade für die Leseoperation und die Schreiboperation beschrieben worden sind.
  • Realisierung der Daten-Eingabe und -Ausgabe: Figuren 18, 20, 21-23
  • Figuren 18, 20, 21-23 zeigen die Realisierung in der bevorzugten Ausführungsform 201 des Eingangsspeichers 1149, des Ausgangsspeichers 1151, des Schattenausgangsspeichers 1153, der UND/ODER-Logik 1323 und der Steuerlogik, die diese Bauteile steuert. Beginnend mit Figur 20 zeigt die Figur den Eingangsspeicher 1149 und die Multiplexer, die die gerade beschriebenen Byte-Austauschoperationen gestatten. Der Eingangsspeicher 1149 besteht aus drei 8-Bit-Zwischenspeichern, dem Zwischenspeicher 2007, der das höchstwertige Byte enthält, dem Zwischenspeicher 2009, der das Byte mit der nächstniedrigeren Wertigkeit enthält, und dem Zwischenspeicher 2011, der das niedrigstwertige Byte enthält. Der Ausgang von den Zwischenspeichern geht an den Eingangsspeicher-Ausgang (ILO = input latch output) 2013. Der Eingang zu den Zwischenspeichern kommt von den Multiplexern 2001, 2003 und 2005. Jeder dieser Multiplexer nimmt Eingabe von den Datenleitungen 313 und von ILO 2013 an. Genauer gesagt wählt der Multiplexer 2001 die Eingabe für den Zwischenspeicher 2007 von den Datenleitungen 313 [7-0] oder dem Eingangsspeicher 1149 [23-16] aus, der Multiplexer 2003 wählt die Eingabe für den Zwischenspeicher 2009 von den Datenleitungen 313 [15-8], den Datenleitungen 313 [7-0] oder dem Eingangsspeicher 1149 [15-8] aus und der Multiplexer 2005 wählt die Eingabe für den Zwischenspeicher 2009 von den Datenleitungen 313 [15-8], den Datenleitungen 313 [7-0] oder dem Eingangsspeicher 1149 [7-0] aus. Wenn ein Multiplexer 2001, 2003 oder 2005 nicht ausgewählt ist, so gibt er 0en aus. Die Auswahl wird durch Auswahlleitungen A, C, D, F, G, J, L und M gemäß untenstehender Tabelle durchgeführt. Die Notation Quelle T Ziel in der Tabelle zeigt an, daß die Daten in der Quelle zu dem Ziel übertragen werden, wenn die Auswahlleitung aktiv ist.
  • Nunmehr Bezug nehmend auf Figur 21 zeigt diese Figur die Realisierung des Ausgangsspeichers 1151, der UND/ODER-Logik 1153 und des Schattenausgangsspeichers 1155. Die Eingaben für diese Schaltungen kommen vom internen Datenbus 1115, dem Eingangsspeicher 1149 über ILO 2013 und vom Schattenausgangsspeicher 1155. Die Ausgabe erfolgt an die Datenleitungen 313. Die Auswahl der Eingaben erfolgt durch die Multiplexer 2101, während die Auswahl der Ausgaben durch die Multiplexer 2109 und 2111 erfolgt. Wenn einer dieser Multiplexer nicht ausgewählt ist, gibt er Nullen aus. Beginnend mit dem Ausgangsspeicher 1151 empfängt dieser Zwischenspeicher seine Eingaben von dem internen Datenbus 1115 und liefert Ausgaben zu der UND/ODER-Logik 1153 und zum Multiplexer 2101. Der Multiplexer 2101 empfängt außerdem Eingaben vom ILO 2013, der mit dem Ausgang des Eingangsspeichers 1149 verbunden ist, von SOL 1155 und von der UND/ODER-Logik 1153. Die Ausgabe vom Multiplexer 2101 erfolgt an den Schattenausgangsspeicher 1155, der drei 8-Bit-Zwischenspeicher aufweist, den Zwischenspeicher 2103, der die Bit [23-16] enthä1t, den Zwischenspeicher 2105, der die Bit [15-8] enthält, und den Zwischenspeicher 2107, der die Bit [7-0] enthält. Die Ausgaben erfolgen über die Multiplexer 2109 und 2111 zu D 313 [7-0] und [15-8]. Die Auswahl der Eingaben erfolgt für den Multiplexer 2101 über die Auswahlleitungen U, V, W und X und für die Multiplexer 2109 und 2111 über P, Q, R, S und T. Die Tabelle zeigt die Leitung und das Ergebnis der Auswahl.
  • Die Auswahlleitungen werden durch die Auswahllogik 1801 gesteuert, die in den Figuren 18, 22 und 23 gezeigt ist. Die Auswahlleitungen sind die Ausgänge der E/A-Steuerlogik (I/OCTL) 1819, die Eingänge für die Logik sind wie folgt:
  • Die Signale RW, RMW, IOS und IL/OL sind alle letztendlich aus den E/A-Befehlen abgeleitet, A0 ist je nach der E/A-Operation aus dem Inhalt von ALR 1145 oder ALW 1146 abgeleitet, LONG2 und RMWW sind von der internen Steuerlogik des Mikroprozessors 107 abgeleitet, die die Phase der Ausführung von E/A-Befehlen überwacht, ITL wird von der ITL-Logik 1803 erzeugt. Wenn ITL den Wert 1 hat, funktioniert das E/A-Segment 1135, als ob der Mikroprozessor 107 in einem System mit einem 80x86-Hauptprozessor arbeiten würde; wenn ITL 1817 den Wert 0 hat, funktioniert das E/A-Segment 1135, als ob der Mikroprozessor 107 mit einem 680x0-Hauptprozessor arbeiten würde. Bei Operationen, bei denen es sich nicht um Byte-E/A- Operationen handelt, wird der Wert von ITL 1817 ausschließlich durch den Wert bestimmt, den der Mikroprozessor 107 auf dem I/ -Anschluß 209 empfängt; bei den Byte-Operationen kann die Wirkung des I/ -Anschlusses 209 dadurch umgekehrt werden, daß das SWB-Bit im Programmstatuswort 1119 auf 1 gesetzt wird.
  • Diese Wirkung wird durch die ITL-Logik 1803 wie folgt erzeugt: ITL 1817 ist der negierte Ausgang des Exklusiv-ODER-Gatters 1815; die Eingänge zum Gatter 1815 kommen vom I/ -Anschluß 209 und vom NAND-Gatter 1811, das drei Eingänge aufweist. Die Eingänge der 1805 und 1807 sind die Negierungen von IOS 1307; PSW_SWB 1809 ist von dem PSW-Statusbit abgeleitet. Wenn entweder 1805 oder 1807 auf L-Pegel liegt, was anzeigt, daß IOS 1307 etwas anderes als das Byte E/A spezifiziert, hat das NAND-Gatter 1811 eine Ausgabe 1 bei 1813, und die negierte Ausgabe 1817 des Exklusiv-ODER-Gatters 1815 ist gleich der Eingabe vom I/ -Anschluß 209. Wenn beide Eingänge 1807 und 1805 auf H-Pegel liegen, was den 00-Code für das Byte E/A anzeigt, wird die Ausgabe des Gatters 1811 durch PSW_SWB 1809 bestimmt. Wenn die Eingabe 1809 auf L-Pegel liegt, hat das NAND-Gatter 1811 immer noch eine Ausgabe 1, und die Ausgabe 1817 ist die gleiche wie die Eingabe 209, wie gerade beschrieben. Wenn die Eingabe 1809 auf H-Pegel liegt, d.h., wenn das SWB-Bit in PSW 1809 gesetzt ist, hat das NAND-Gatter 1811 eine Ausgabe 0 und die Ausgabe 1817 ist das Inverse der Eingabe 209, das heißt, die Wirkung des I/ -Anschlusses 209 ist umgekehrt.
  • Der Betrieb von I/OCTL 1819 wird in den Wahrheitswerttabellen von Figuren 22 und 23 gezeigt. Figur 22 zeigt die Wahrheitswerttabelle für die Operationen LESEN und LESEN-VERÄNDERN-SCHREIBEN. Die Tabelle weist Abschnitte auf für die Operationen Bytelesen, Wortlesen, Wortlesen mit dem WSB-Code in IOS 1307, Zeigerlesen, Byte-Lesen-Verändern-Schreiben, Wort-Lesen-Verändern- Schreiben und Wort-Lesen-Verändern-Schreiben mit dem WSB-Code in IOS 1307. Die Spalten im mittleren Teil der Tabelle zeigen Werte für die Eingangssignale zur I/OCTL 1819 an; die Spalten im rechten Teil der Tabelle zeigen Werte an, die aus den Eingaben auf den Wählerleitungen 1833 resultieren. Im mittleren Teil der Tabelle zeigen "X" beliebige Bit an, d.h. Bit, deren Wert auf die durch die Zeile angezeigte Operation keinen Einfluß hat. Im rechten Teil der Tabelle zeigt "." ein beliebiges Bit an. Die erste Zeile der Tabelle wird als Beispiel herangezogen. Die Zeile zeigt, daß bei RW=1, was eine Leseoperation anzeigt, RMW=0 ist, was anzeigt, daß es sich nicht um eine Lese-Verändern-Schreib-Operation handelt, IOS zeigt eine Byteoperation an (d.h., daß es den Code 00 hat), ITL hat den Wert 0, was den 680x0-Modus anzeigt, und A0 hat den Wert 0, was eine gerade Byteadresse anzeigt, woraufhin die Auswahlleitung M auf H-Pegel liegt und der Rest auf L-Pegel liegt. Die Werte auf den Eingangsleitungen zeigen an, daß es sich bei der durch die Zeile spezifizierten Operation um eine Leseoperation eines geraden Byte aus im 680x0-Format gespeicherten Daten handelt. Nunmehr unter Bezugnahme auf Figur 20 wird ersichtlich, daß bei aktiver Auswahlleitung M der Multiplexer 2005 D 313 [15-8] als Quelle für den Eingangsspeicher 1149 [7-0] auswählt. Danach unter Bezugnahme auf Figur 17 ist ersichtlich, daß es sich bei dem ausgewählten Byte tatsächlich um ein gerades Byte im 680x0-Byteformat 1703 handelt. Wenn die Wahrheitswerttabellen von Figuren 22 und 23 und die Logikschaltpläne von Figuren 18, 20 und 21 wie gerade angezeigt gelesen werden, zeigen sie, wie die gerade beschriebenen Lese- und Schreiboperationen in der bevorzugten Ausführungsform 201 realisiert sind.
  • Schlußfolgerung
  • Die vorangegangene "Ausführliche Beschreibung" hat die Herstellung und Verwendung eines Prozessors gezeigt, der Speicher mit anderen Prozessoren teilt und bei dem der gleiche Code verwendet werden kann, selbst wenn der Speicher mit anderen Prozessoren mit unterschiedlichen Datenformaten geteilt wird. In der in der "Ausführlichen Beschreibung" offenbarten Ausführungsform betrafen die Datenformate die Anordnung von Byte; die Erfindung kann allerdings auch mit Datenformaten, die sich auf andere Weise unterscheiden, eingesetzt werden. In der offenbarten Ausführungsform handelt es sich bei den Befehlen, deren Operation von den Datenformaten abhängt, um E/A-Befehle; die Grundlagen der Erfindung können wiederum bei anderen Typen von Befehlen verwendet werden. Befehle, die in den Bereich der Erfindung fallen, können durch andere Mittel als durch den in der offenbarten Ausführungsform verwendeten WSB-Code im IOSIZE-Feld spezifiziert werden, und der tatsächliche Austausch kann durch andere Schaltungen als die in der vorliegenden Anmeldung offenbarten Schaltungen erreicht werden. Aus diesen Gründen ist die in der "Ausführlichen Beschreibung" offenbarte Realisierung in jeglicher Hinsicht als lediglich beispielhaft und exemplarisch zu betrachten, und die hierin beanspruchte Erfindung wird nicht durch die offenbarte Realisierung definiert, sondern stattdessen durch die Ansprüche in ihrer Interpretation im Sinne der Lehre der Gleichwertigkeit.

Claims (8)

1. Prozessor, der Speicher mit anderen Prozessoren teilen kann, die für in dem Speicher gespeicherte Daten unterschiedliche Formate verwenden, wobei der Prozessor Befehle ausführt, einschließlich mindestens eines Befehls, der Datenformatabhängigkeit anzeigende Mittel (1307) enthält, die anzeigen, daß die vom Befehl angegebene Operation von einem Datenformat abhängig ist, das von dem anderen Prozessor verwendet wird, mit dem der Prozessor den Speicher teilt, wobei der Prozessor gekennzeichnet ist durch
ein Datenformatsignalempfangsmittel (209) zum Empfangen eines das Datenformat anzeigenden Datenformatsignals und
ein auf das Datenformatsignal und auf die die Datenformatabhängigkeit anzeigenden Mittel reagierendes Operationsmittel (1801) zum Ausführen der durch den Befehl angegebenen Operation, wie vom Datenformat erfordert.
2. Prozessor nach Anspruch 1, weiterhin dadurch gekennzeichnet,
daß das Datenformat die Reihenfolge von mehreren Byte im Speicher ist;
daß es sich bei der Operation um ein Lesen oder Schreiben von mehreren Byte im Speicher handelt; und
daß das Operationsmittel das Lesen oder Schreiben wie durch die Reihenfolge der mehreren Byte im Speicher gefordert ausführt.
3. Prozessor nach Anspruch 2, weiterhin dadurch gekennzeichnet,
daß die mehreren Byte zwei sind;
daß ein erster der anderen Prozessoren die zwei Byte in einer ersten Reihenfolge im Speicher anordnet;
daß ein zweiter der anderen Prozessoren die zwei Byte in einer zweiten Reihenfolge im Speicher anordnet;
daß das Datenformatsignal entweder die erste oder die zweite Reihenfolge anzeigt; und
daß die Leseoperation zwei beliebige gerade aus dem Speicher gelesene Byte in der ersten Reihenfolge anordnet, wenn das Datenformatsignal die zweite Reihenfolge anzeigt, und die Schreiboperation zwei beliebige gerade in den Speicher geschriebene Byte in der zweiten Reihenfolge anordnet, wenn das Datenformatsignal die zweite Reihenfolge anzeigt.
4. Prozessor nach Anspruch 3, weiterhin dadurch gekennzeichnet,
daß es sich bei der ersten Reihenfolge um die handelt, die von Prozessoren des Typs 680x0 verwendet wird; und
daß es sich bei der zweiten Reihenfolge um die handelt, die von Prozessoren des Typs 80x86 verwendet wird.
5. Datenverarbeitungssystem mit folgendem:
einem Speicher (102) zum Speichern von Daten;
einem ersten Prozessor (105), der an den Speicher angekoppelt ist und die Daten verarbeitet, wobei der erste Prozessor einer von mehreren Prozessortypen ist, wobei jeder Prozessortyp für gewisse der Daten ein unterschiedliches Datenformat verwendet;
einem zweiten Prozessor (107), der an den Speicher angekoppelt ist und die Daten verarbeitet, und Befehle ausführt, einschließlich mindestens eines Befehls, der Datenformatabhängigkeit anzeigende Mittel (1307) enthält, die anzeigen, daß die vom Befehl angegebene Operation von einem Datenformat abhängig ist, das von dem ersten Prozessor verwendet wird, wobei das Datenverarbeitungssystem dadurch gekennzeichnet ist, daß der zweite Prozessor weiterhin folgendes enthält:
ein Datenformatsignalempfangsmittel (209) zum Empfangen eines das Datenformat anzeigenden Datenformatsignals und
ein auf das Datenformatsignal und auf die die Datenformatabhängigkeit anzeigenden Mittel reagierendes Operationsmittel (1801) zum Ausführen der durch den Befehl angegebenen Operation, wie vom Datenformat erfordert.
6. System nach Anspruch 5, weiter dadurch gekennzeichnet,
daß das Datenformat die Reihenfolge von mehreren Byte im Speicher ist;
daß es sich bei der Operation um ein Lesen oder Schreiben von mehreren Byte im Speicher handelt; und
daß das Operationsmittel das Lesen oder Schreiben wie durch die Reihenfolge der mehreren Byte im Speicher gefordert ausführt.
7. System nach Anspruch 6, weiterhin dadurch gekennzeichnet,
daß die mehreren Byte zwei sind;
daß ein erster der Prozessortypen die zwei Byte in einer ersten Reihenfolge im Speicher anordnet;
daß ein zweiter der Prozessortypen die zwei Byte in einer zweiten Reihenfolge im Speicher anordnet;
daß das Datenformatsignal entweder die erste oder die zweite Reihenfolge anzeigt; und
daß die Leseoperation zwei beliebige aus dem Speicher gelesene Byte in der ersten Reihenfolge anordnet, wenn das Datenformatsignal die zweite Reihenfolge anzeigt, und die Schreiboperation zwei beliebige in den Speicher geschriebene Byte in der zweiten Reihenfolge anordnet, wenn das Datenformatsignal die zweite Reihenfolge anzeigt.
8. System nach Anspruch 7, weiterhin dadurch gekennzeichnet,
daß der erste der Typen der Typ 680x0 ist; und
daß der zweite der Typen der Typ 80x86 ist.
DE69126157T 1990-03-13 1991-03-05 Prozessor mit datenformatunabhängigen Befehlen Expired - Fee Related DE69126157T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/493,018 US5446865A (en) 1990-03-13 1990-03-13 Processor adapted for sharing memory with more than one type of processor

Publications (2)

Publication Number Publication Date
DE69126157D1 DE69126157D1 (de) 1997-06-26
DE69126157T2 true DE69126157T2 (de) 1997-09-25

Family

ID=23958558

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69126157T Expired - Fee Related DE69126157T2 (de) 1990-03-13 1991-03-05 Prozessor mit datenformatunabhängigen Befehlen

Country Status (5)

Country Link
US (1) US5446865A (de)
EP (1) EP0447101B1 (de)
JP (1) JP2690406B2 (de)
CA (1) CA2036855C (de)
DE (1) DE69126157T2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574923A (en) * 1993-05-10 1996-11-12 Intel Corporation Method and apparatus for performing bi-endian byte and short accesses in a single-endian microprocessor
US5664156A (en) * 1994-09-16 1997-09-02 Philips Electronics North America Corporation Microcontroller with a reconfigurable program status word
US5893928A (en) * 1997-01-21 1999-04-13 Ford Motor Company Data movement apparatus and method
US6816961B2 (en) * 2000-03-08 2004-11-09 Sun Microsystems, Inc. Processing architecture having field swapping capability
GB2417360B (en) 2003-05-20 2007-03-28 Kagutech Ltd Digital backplane
US7395410B2 (en) * 2004-07-06 2008-07-01 Matsushita Electric Industrial Co., Ltd. Processor system with an improved instruction decode control unit that controls data transfer between processor and coprocessor
US7849362B2 (en) * 2005-12-09 2010-12-07 International Business Machines Corporation Method and system of coherent design verification of inter-cluster interactions
CN116700795B (zh) * 2023-08-01 2023-12-01 广州中基国威电子科技有限公司 一种位操作控制系统及控制方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3631405A (en) * 1969-11-12 1971-12-28 Honeywell Inc Sharing of microprograms between processors
US3930232A (en) * 1973-11-23 1975-12-30 Raytheon Co Format insensitive digital computer
FR2253435A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4117536A (en) * 1976-12-27 1978-09-26 International Business Machines Corporation Instruction processing control apparatus
US4240139A (en) * 1977-09-22 1980-12-16 Tokyo Shibaura Denki Kabushiki Kaisha Address generating system
US4293907A (en) * 1978-12-29 1981-10-06 Bell Telephone Laboratories, Incorporated Data processing apparatus having op-code extension register
JPS58102381A (ja) * 1981-12-15 1983-06-17 Nec Corp バツフアメモリ
US4500933A (en) * 1982-04-02 1985-02-19 Ampex Corporation Universal interface unit
US4485439A (en) * 1982-07-27 1984-11-27 S.A. Analis Standard hardware-software interface for connecting any instrument which provides a digital output stream with any digital host computer
US4559614A (en) * 1983-07-05 1985-12-17 International Business Machines Corporation Interactive code format transform for communicating data between incompatible information processing systems
US4561051A (en) * 1984-02-10 1985-12-24 Prime Computer, Inc. Memory access method and apparatus in multiple processor systems
JPS60263246A (ja) * 1984-06-11 1985-12-26 Ricoh Co Ltd メモリ・システム
US4722048A (en) * 1985-04-03 1988-01-26 Honeywell Bull Inc. Microcomputer system with independent operating systems
US4899306A (en) * 1985-08-26 1990-02-06 American Telephone And Telegraph Company, At&T Bell Laboratories Test interface circuit which generates different interface control signals for different target computers responding to control signals from host computer
JPS641050A (en) * 1987-03-18 1989-01-05 Hitachi Ltd Computer system provided with byte order conversion mechanism
US5027271A (en) * 1987-12-21 1991-06-25 Bull Hn Information Systems Inc. Apparatus and method for alterable resource partitioning enforcement in a data processing system having central processing units using different operating systems
US5101498A (en) * 1987-12-31 1992-03-31 Texas Instruments Incorporated Pin selectable multi-mode processor
US5027272A (en) * 1988-01-28 1991-06-25 Weitek Corporation Method and apparatus for performing double precision vector operations on a coprocessor
US5261077A (en) * 1990-06-29 1993-11-09 Digital Equipment Corporation Configurable data path arrangement for resolving data type incompatibility

Also Published As

Publication number Publication date
EP0447101B1 (de) 1997-05-21
EP0447101A2 (de) 1991-09-18
CA2036855A1 (en) 1991-09-14
JP2690406B2 (ja) 1997-12-10
CA2036855C (en) 1996-08-13
DE69126157D1 (de) 1997-06-26
EP0447101A3 (en) 1993-08-04
US5446865A (en) 1995-08-29
JPH04220737A (ja) 1992-08-11

Similar Documents

Publication Publication Date Title
DE3587277T2 (de) System fuer die umgehungssteuerung beim pipelinebetrieb eines computers.
DE3689394T2 (de) Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor.
DE3689923T2 (de) Dreiphasen-Pipeline-Signalprozessor.
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE3687666T2 (de) Verzweigungssteuerung in einem dreiphasen-pipeline-signalprozessor.
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE3685913T2 (de) Vektorenverarbeitung.
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE68928340T2 (de) Fliessband-Datenprozessor
DE3751356T2 (de) Informationsverarbeitungssystem.
DE68924546T2 (de) Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem.
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE3851746T2 (de) Sprungvorhersage.
DE2030812A1 (de) Modulare Datenrechnersysteme
DE2714805A1 (de) Datenverarbeitungssystem
DE19729618C2 (de) Mikroprozessor und Mehrprozessorsystem
DE1285219B (de) Steuerwerk zur Ausfuehrung von Unterprogrammen
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE69126157T2 (de) Prozessor mit datenformatunabhängigen Befehlen
DE69233282T2 (de) Datenverarbeitungsvorrichtung
DE2533737A1 (de) Datenprozessor
DE68926266T2 (de) Datenprozessor mit der Fähigkeit, Unterbrechungen mit hoher Geschwindigkeit zu verarbeiten
DE3650578T2 (de) Informationsverarbeitungssystem mit einer Steuerschaltung zum Abwarten einer Registererneuerung und einem Aufnahmemittel des zu erneuernden Registers
DE68926701T2 (de) Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge

Legal Events

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