DE69231237T2 - Datenverarbeitungsvorrichtung - Google Patents
DatenverarbeitungsvorrichtungInfo
- Publication number
- DE69231237T2 DE69231237T2 DE69231237T DE69231237T DE69231237T2 DE 69231237 T2 DE69231237 T2 DE 69231237T2 DE 69231237 T DE69231237 T DE 69231237T DE 69231237 T DE69231237 T DE 69231237T DE 69231237 T2 DE69231237 T2 DE 69231237T2
- Authority
- DE
- Germany
- Prior art keywords
- register
- code
- data
- instruction
- codes
- 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 - Lifetime
Links
- 230000015654 memory Effects 0.000 claims description 14
- 238000000034 method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
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)
Description
- Die vorliegende Erfindung betrifft eine Datenverarbeitungsvorrichtung, die als zentrale Verarbeitungseinheit (CPU), Mikroprozessor oder ähnliches bezeichnet wird.
- Einige herkömmliche Datenverarbeitungsvorrichtungen sind derart aufgebaut, daß Operationsbefehle ausschließlich den Speicher als Operanden für Operationen verwenden. Bei derartigen Vorrichtungen werden vorbestimmte Operationen auf der Basis eines Befehls ausgeführt, der aus einem Operationscode, der den Operationstyp angibt, sowie aus zwei Operandenadressen besteht, welche die Positionen der Daten im Speicher angeben, etwa aus einer Quellenoperandenadresse und einer Zieloperandenadresse.
- Einige herkömmliche Datenverarbeitungsvorrichtungen umfassen ein Register, das als Akkumulator bezeichnet wird, sowie weiterhin andere Register, wobei der Akkumulator implizit als ein Operand verwendet wird. Bei derartigen Vorrichtungen werden die Operationen auf der Basis eines Befehls ausgeführt, der aus einem einzelnen Registerangabecode besteht, der neben dem Akkumulator ein anderes Register für die Operation angibt.
- Andere herkömmliche Datenverarbeitungsvorrichtungen umfassen Allgemeinregister, die miteinander zu Operanden kombiniert werden können, wobei Operationen auf der Basis eines Befehls ausgeführt werden, der aus einem Operationscode, der den Operationstyp angibt, und aus zwei Registerangabecodes besteht, welche die Register für die Operation angeben.
- Bei den zuerst genannten Vorrichtungen, die ausschließlich den Speicher als Operanden verwenden, ist das Befehlswort jedoch relativ lang, weil es ein Operandenfeld mit einer Bitlänge für zwei Operandenadressen erfordert. Das hat zur Folge, daß die mit Hilfe von derartigen Vorrichtungen geschriebenen Programme zu einer großen Größe neigen.
- Bei den als zweites genannten Vorrichtungen mit einem Akkumulator kann das Befehlswort kurz sein, weil der Befehl nur ein Registerfeld für einen einzelnen Registerangabecode benötigt, dessen Bitlänge kürzer ist als diejenige der Operandenadresse. Die Operationen werden jedoch hauptsächlich dem Akkumulator zugewiesen, so daß häufig Verschiebungen von Daten zwischen dem Akkumulator und entweder den anderen Registern oder dem Speicher erforderlich sind. Die erhöhte Anzahl von Befehlen, die in den Programmen geschrieben werden müssen, kann die Verarbeitungsgeschwindigkeit der Programme herabsetzen und die Größe der Programme erhöhen.
- Bei den zuletzt genannten Vorrichtungen mit Allgemeinregistern kann die Anzahl der in den Programmen zu schreibenden Befehle stark reduziert werden, weil jede beliebige Kombination der Register als Operanden verwendet werden kann. Das Befehlswort kann vergleichsweise kurz sein, weil die Bitlänge des zu verwendenden Registerangabecodes kürzer ist als diejenige einer Operandenadresse.
- Trotzdem ist es schwierig, für derartige Vorrichtungen einen Aufbau vorzusehen, mit dem die Größe der Programme minimiert werden kann, indem verschiedenartige Operationen mit einer kurzen Befehlswortlänge ausgeführt werden, weil das folgende Problem auftritt:
- Wenn eine Datenverarbeitungsvorrichtung zum Beispiel 8 Allgemeinregister umfaßt, wobei die Bitlänge des Registerangabecodes zum Angeben eines Registers 3 Bits umfaßt, dann erfordert der Befehl insgesamt ein 6-Bit-Registerfeld. Eine 8-Bit-Befehlswortlänge ist also nicht praktisch, weil die verwendbaren Befehle in diesem Fall höchstens 4 Typen umfassen, während tatsächlich eine 16-Bit-Befehlswortlänge erforderlich ist, um eine ausreichende Anzahl von Befehlstypen zu erhalten. Zum Beispiel gibt die von Intel im April 1989 herausgegebene Veröffentlichung "Intel i486 MICROPROCESSOR" Tabellen an, die das Befehlsformat des Intel i468TM Mikroprozessors angeben. Gemäß dieser Veröffentlichung wird ein Befehlscodeformat für einen Register-zu-Register-Verschiebungsbefehl durch "1000100W _11AAABBB" wiedergegeben und wird ein Befehlscodeformat für einen Hauptspeicher-zu- Register-Verschiebungsbefehl durch "1100011W_11000BBB" wiedergegeben, wobei W ein Bit ist, das angibt, ob die Datengröße durch Bytes wiedergegeben wird, "AAA" ein Quellenregister angibt und "BBB" ein Zielregister angibt. Es ist deutlich, daß diese zwei Befehle verschiedene Operationscodes aufweisen. Dieses Dokument zeigt, daß eine besondere Operation durch einen einzelnen Operationscode unabhängig davon ausgeführt wird, ob die zwei Registerangabecodes (in diesem Fall "AAA" und "BBB") gleich sind oder nicht.
- In Anbetracht des oben genannten Problems ist es eine Aufgabe der vorliegenden Erfindung, eine Datenverarbeitungsvorrichtung anzugeben, welche die Größe von Programmen dadurch minimieren kann, daß verschiedene Typen von Operationen mit einer kurzen Befehlswortlänge ausgeführt werden.
- Die vorstehend genannte Aufgabe kann durch eine Datenverarbeitungsvorrichtung erfüllt werden, welche umfaßt: eine Decodiereinrichtung zum Decodieren eines Befehlscodes einschließlich von einem Operationscode und einem ersten und zweiten Registerangabecode, und eine Befehlsausführungseinrichtung zum Ausführen einer entsprechenden Operation in Übereinstimmung mit den Ergebnissen der Decodierung durch die Dedodiereinrichtung, wobei die Befehlsausführungseinrichtung eine erste Operation auf der Basis des Operationscodes ausführt, wenn sich der zweite Registerangabecode von dem ersten Registerangabecode unterscheidet, und eine zweite Operation auf der Basis des Operationscodes ausführt, wenn der zweite Registerangabecode gleich dem ersten Registerangabecode ist, wobei die erste Operation mit dem durch den ersten und den zweiten Registerangabecode angegebenem ersten und zweiten Register ausgeführt wird, während die zweite Operation mit dem durch den ersten Registerangabecode angegebenen ersten Register und den im Befehlscode enthaltenen Direktdaten ausgeführt wird, und wobei die erste und die zweite Operation derselben Operation in jeweils einem anderen Adressierungsmodus entsprechen.
- Die Befehlsausführungseinrichtung kann eine Untersuchungseinrichtung umfassen, um zu untersuchen, ob sich die zwei Registerangabecodes unterscheiden oder gleich sind, sowie eine Steuereinrichtung, um den ersten und den zweiten Prozeß zu steuern, so daß diese in Übereinstimmung mit den Ergebnissen der Untersuchungseinrichtung ausgewählt werden können.
- Wenn der erste Prozeß einem Registerdatenverschiebungsprozeß zugeordnet ist, in dem das Quellenregister und das Zielregister identisch sind, ist der Wert des Registers mit demjenigen vor der Ausführung identisch, wobei dieser Typ von Prozeß jedoch kaum erforderlich ist. In einem derartigen Fall können also zwei verschiedene Prozesse zu einem einzigen Operationscode zugewiesen werden, indem man erlaubt, daß der Befehlscode den zweiten Prozeß ausführt.
- Ein anderes Beispiel für den ersten Prozeß ist dann gegeben, wenn er einer Operation wie dem Addieren von im Register gespeicherten Daten zugewiesen ist, wobei die Ergebnisse gleich den Ergebnissen sind, die durch eine andere Ausführung wie etwa eine arithmetische Verschiebung nach links erhalten werden. Ein derartiger Prozeß ist jedoch ebenfalls kaum erforderlich, so daß wie in dem zuvor angeführten Beispiel zwei verschiedene Prozesse zu einem einzigen Operationscode zugewiesen werden können.
- In Übereinstimmung mit den oben angegebenen Konstruktionen können also verschiedene Typen von Operationen mit einer kurzen Befehlswortlänge ausgeführt werden, wodurch die Größe der Programme minimiert werden kann.
- Diese und andere Aufgaben, Vorteile und Merkmale der vorliegenden Erfindung werden durch die folgende Beschreibung mit Bezug auf die beigefügten Zeichnungen verdeutlicht, die eine besondere Ausführungsform der vorliegenden Erfindung darstellen:
- Fig. 1 ist ein Blockdiagramm, das den Aufbau des Hauptteils einer Datenverarbeitungsvorrichtung der vorliegenden Erfindung zeigt,
- Fig. 2 ist eine Darstellung des detaillierten Aufbaus einer Registermatrix,
- Fig. 3 ist eine Darstellung des detaillierten Aufbaus eines Statusregisters,
- Fig. 4 zeigt Beispiele für den Aufbau von Befehlscodes, und
- Fig. 5 ist eine Tabelle, die Beispiele für das Zuweisen von verschiedenen Operationen zu unterschiedlichen Befehlscodes zeigt.
- Die Ausführungsform der vorliegenden Erfindung wird im folgenden mit Bezug auf Fig. 1 bis 5 beschrieben.
- Fig. 1 umfaßt die Komponenten 11-17. Der Befehlspuffer 11 speichert temporär Befehle, die aus einem nicht dargestellten Speicher abgerufen werden. Das Befehlsregister 12 speichert die vom Befehlspuffer 11 ausgegebenen Befehle, bis dieselben decodiert oder ausgeführt werden. Wenn zwei Registerangabecodes in einem Befehl enthalten sind, untersucht die Registerangabecode-Identifikationsuntersuchungseinheit 13, ob diese identisch sind oder nicht. Der Befehlsdecodierer 14 decodiert die im Befehlsregister 12 gespeicherten Befehle und gibt ein Steuersignal zum Steuern der Operation jeder Einheit der Datenverarbeitungs vorrichtung aus. Wenn der in einem Befehl enthaltene Operationscode ein vorbestimmter ist, führt der Befehlsdecodierer 14 verschiedene Steuerungen (weiter unten beschrieben) in Abhängigkeit davon durch, daß die Einheit 13 angibt, ob die Registerangabecodes identisch sind oder nicht. Es wird hier auf eine detaillierte Beschreibung des Aufbaus der Schaltung zum Durchführen einer derartigen Steuerung verzichtet, weil die Schaltung ein bekannter Prozessor wie eine Mikroprogrammschaltung oder eine Hardwarelogikschaltung sein kann.
- Die Registermatrix 15 umfaßt wie in Fig. 2 gezeigt eine Datenregistergruppe aus Datenregistern D0-D3 mit jeweils einer Bitlänge von 16-Bit, eine Adreßregistergruppe aus Adreßregistern A0-A3, einen Programmzähler PC, der die Speicheradresse des auszuführenden Befehls speichert, und ein Statusregister PSW (Prozessorstatuswort), das den Status der Datenverarbeitungsvorrichtung angibt.
- Die Datenregister D0-D3 werden hauptsächlich als Arbeitsspeicher zum Speichern von Daten verwendet. Andererseits werden die Adreßregister A0, A1 und A2 zum Speichern von Adressen verwendet, die einen Quellenoperanden, einen Zieloperanden oder einen Rahmenzeiger angeben, während A3 zum Speichern einer Adresse verwendet wird, die einen Stapelzeiger angibt. Obwohl die Adreßregister A0-A2 gewöhnlich in der oben genannten Reihenfolge zugewiesen werden, wenn ein Programm erstellt wird, ist ihre Hardware derart aufgebaut, daß die Zuweisung der Adreßregister A0-A2 flexibel sein kann und daß die Zuweisung des Adreßregisters A3 für die Verwendung für einen Stapelzeiger festgelegt sein kann.
- Alle Datenregister D0-D3 und alle Adreßregister A0-A3 werden durch die Registerangabecodes 00-11 (Binärzeichen) in den Befehlscodes zugewiesen.
- Das Statusregister PSW besteht wie in Fig. 3 gezeigt aus einem Ablaufflag T, das eine Einschritt-Ausführung eines Programms während einer Operation in einem Debuggingmodus angibt, Unterbrechungsmaskenflags IM3-IM0, die 16-stufige Unterbrechungsmasken angeben, ein Überlaufflag V, ein Übertragsflag C, ein Negativflag N und ein Nullflag Z, die alle die Ergebnisse von Operationen angeben.
- Die Ausführungseinheit 16 gibt die aus der Registermatrix 15 ausgegebenen Daten und Adressen, die aus dem Befehlspuffer 11 ausgegebenen Direktdaten und die aus dem nicht dargestellten Speicher über den internen Datenbus 17 abgerufenen Daten ein, führt vorbestimmte Operationen wie etwa arithmetische Operationen und logische Operationen aus und nimmt eine Verschiebung in Übereinstimmung mit einem Steuersignal aus dem Befehlsdecodierer 14 vor. Die durch die Ausführung der Ausführungseinheit 16 erhaltenen Ergebnisse werden über den Bus 17 zu der Registermatrix 15 und dem Speicher verschoben und durch spezifische Register, die den Befehlen entsprechen, oder durch andere Einheiten gespeichert.
- Die Datenverarbeitungsvorrichtung dieser Ausführungsform umfaßt weiterhin eine Datenbusschnittstelle, die mit dem Datenbus des nicht dargestellten externen Teils der Datenverarbeitungsvorrichtung verbunden ist, eine Adreßbusschnittstelle, die mit einem Adreßbus verbunden ist, und andere Einheiten. Diese Einheiten werden hier nicht beschrieben, weil sie nicht in direktem Zusammenhang mit der vorliegenden Erfindung stehen.
- Im folgenden werden der Aufbau des Befehlscodes, der der Datenverarbeitungsvorrichtung zugewiesen ist, und ein Beispiel für das Zuweisen der Operationen zu Operationscodes mit Bezug auf Fig. 4 und 5 beschrieben. Das hier beschriebene Befehlssystem ist ein Speichern/Lesen-Befehlssystem, das den Aufbau der Vorrichtung vereinfachen und die Verarbeitungsgeschwindigkeit erhöhen kann. Ein derartiges Befehlssystem ist dazu in der Lage, hauptsächlich Daten zwischen den Registern und dem Speicher zu verschieben.
- Fig. 4 zeigt Beispiele für den Aufbau der Befehlscodes.
- Der Code (a) besteht aus einem 4-Bit-Operationscode, zwei 2-Bit-Registerangabecodes Dn und Dm oder Dn und Am (wobei sowohl n wie m ganze Zahlen zwischen 0 und 3 sind).
- Der Code (b) umfaßt zusätzlich zu dem Operationscode und den Registerangabecodes des Codes (a) entweder 8-Bit-Direktdaten (imm8), eine 8-Bit-Adreßverschiebung (d8) oder eine 8-Bit-Absolutadresse (abs8).
- Der Code (c) umfaßt einen 6-Bit-Operationscode und einen 2-Bit-Registerangabecode (Dn).
- Der Code (d) umfaßt einen 8-Bit-Operationscode und einen angehängten Teil von entweder 8, 16 oder 24 Bits für etwa einen Erweiterungsbefehl, Direktdaten oder eine Adreßverschiebung.
- Fig. 5 zeigt ein Beispiel für die Zuweisung von Befehlscodes, wobei die Symbole "***" und "**" angeben, daß die in der Operationsspalte gezeigten Operationen jeweils in Übereinstimmung mit dem 3-Bit-Wert oder dem 2-Bit-Wert ausgeführt werden.
- Im folgenden wird jeder Befehlscode in Übereinstimmung mit dem Befehlstyp beschrieben.
- Ein Befehlstyp [R-R] ist ein dyadischer Operationsbefehl zwischen zwei Datenregistern und wird durch einen Befehlscode "0***DnDm" (n≠m) ausgedrückt. Dieser Befehlscode gibt acht verschiedene Typen von Operationsbefehlen wie folgt in Abhängigkeit von den 3-Bit-Werten "***" an.
- (1) Verschieben von Daten von einem durch den Datenregisterangabecode Dn angegebenen Datenregister (im folgenden als Datenregister Dn bezeichnet) zu dem Datenregister Dm.
- (2) Addieren der in den oben genannten Datenregistern gespeicherten Daten ohne Überträge.
- (3) Subtrahieren derselben ohne Überträge
- (4) Vergleichen derselben
- (5) Addieren derselben mit Überträgen
- (6) Subtrahieren derselben mit Überträgen
- (7) Logisches Erzeugen derselben
- (8) Logisches Addieren derselben
- Die Ergebnisse jeder Ausführung werden in dem Datenregister Dm gespeichert.
- Ein Befehlstyp [imm8-R] kann von dem Befehlstyp [R-R] unterschieden werden, weil seine zwei Registerangabecodes gleich sind (n = m). Die Daten des Datenregisters Dn und die 8- Bit-Direktdaten (imm8), die auf einen Befehlscode folgen "0***DnDm" werden durch dieselbe dyadische Operation wie der Befehlstyp [R-R] verarbeitet. Auch wenn 8-Bit-Direktdaten für Operationen verwendet werden, werden 16-Bit-Daten in die Ausführungseinheit 16 eingegeben; dabei werden jedoch die höherwertigen 8 Bits je nach dem Operationstyp mit Nullen (zum Beispiel in logischen Operationen), Vorzeichenbits (zum Beispiel in arithmetischen Operationen) oder ähnlichem aufgefüllt.
- Die Befehlstypen [LD] und [ST] sind jeweils ein Datenverschiebungsbefehl aus dem Speicher zu dem Datenregister Dn (Laden) oder ein umgekehrter Datenverschiebungsbefehl (Spei chern). Die Quellen und Ziele im Speicher werden durch 4 Typen von Adressierungsmodi angegeben.
- Das Symbol "@" in der Operationsspalte in Fig. 5 wird vor dem Wert gesetzt, der die Adresse den Bereichs ist, zu/von dem Daten verschoben werden, und das Symbol "(,)" gibt die Summe der Werte auf beiden Seiten des Kommas an.
- Der Adressierungsmodus jedes Verschiebungsbefehls gibt folgendes an:
- (1) Wenn die Quelle oder das Ziel der Daten "@Am" ist, wird eine indirekte Adreßregister-Adressierung angegeben, die einen im Adreßregister Am gespeicherten Wert als Adresse verwendet.
- (2) Wenn die Quelle oder das Ziel der Daten "@(Am, d8)" ist, wird eine indirekte Adreßregister-Adressierung mit einer 8-Bit-Verschiebung angegeben, die eine auf die Befehlscodes "1001DnAm" oder "1101DnAm" folgende 8-Bit-Verschiebung d8 verwendet und die Summe aus d8 und einem in dem Adreßregister Am gespeicherten Wert als Adresse verwendet.
- (3) Wenn die Quelle oder das Ziel der Daten "@(Am, D0)" ist, wird eine Indexadressierung angegeben, die das Adreßregister Am (m ≠ 3) und das Datenregister D0 (festgelegt) verwendet und die Summe aus einem in dem Adreßregister Am gespeicherten Wert und einem in dem Datenregister D0 gespeicherten Wert als Adresse verwendet.
- (4) Wenn die Adresse oder der Adressat der Daten "@abs8" ist, dann wird eine 8-Bit- Absolutadressierung angegeben, die eine auf den Befehlscode folgende 8-Bit-Absolutadresse abs8 als Adresse verwendet.
- Bei der oben genannten Indexadressierung (3) werden ausschließlich die Adreßregister A0- A2 verwendet, wobei das Adreßregister A3 ausgenommen wird. Der Grund dafür ist, daß dieser Typ von Adressierung gewöhnlich verwendet wird, um Daten wie etwa Ketten oder Matrizen zu verschieben, die selten zum Stapelbereich des Speichers verschoben werden.
- Bei der oben genannten 8-Bit-Absolutadressierung (4), wird der Registerangabecode m = 3, der das in der Indexadressierung ausgenommene Adreßregister A3 angibt, als ein Dummy verwendet und es wird ein Befehlscode zugewiesen, wobei das Datenregister D0 der Quelle oder des Ziels definitiv verwendet wird. Wenn die Datenverschiebung mit einer 8-Bit-Absolutadressierung durchgeführt wird, kann ein vorbestimmter Wert wie etwa "00000000" für die höherwertigen 8 Bits der 16-Bit-Adresse aus der Datenverarbeitungsvorrichtung ausgegeben werden.
- Der Befehlstyp [R] ist ein monadischer Operationsbefehl, der einem einzelnen Datenregister zugewiesen ist und durch den Befehlscode "1011**Dn" oder "1111**Dn" angegeben wird. Dieser Code gibt in Abhängigkeit von den 2-Bit-Werten "**" acht verschiedene Typen von Operationsbefehlen an: arithmetische Verschiebung nach rechts (ASR) und links (ASL), Rotation nach rechts (ROR) und links (ROL), logische Umkehrung (NOT), Inkrementieren/Dekrementieren (INC/DEC) oder Programmunterbrechung (PI).
- Es gibt zwei Gruppen mit drei Befehlscodes, deren höherwertige 4 Bits jeweils "1010" und "1110" sind und keiner Operation in dem oben genannten Beispiel zugewiesen sind. Diese Befehlscodes werden zum Verschieben von deren Adressen zu den Adreßregistern A0-A3, zum Zuweisen von anderen nicht dargestellten Befehlen, zum Erweitern von Befehlscodes auf mehr als 16 Bits sowie für andere Aufgaben verwendet. Auf diese Weise können Befehle mit einer niedrigeren Verwendungshäufigkeit und ohne wesentliche Auswirkung auf die Programmgröße als erweiterte Befehlscodes gesetzt werden. Es wird hier auf eine ausführlichere Beschreibung einer derartigen Erweiterung verzichtet, weil sie nicht in direktem Zusammenhang mit der vorliegenden Erfindung steht.
- Wenn ein Befehlscode, dessen höchstwertiges Bit wie in "01110001" null ist, in die wie oben beschrieben aufgebaute Datenverarbeitungsvorrichtung eingegeben wird, dann vergleicht die Registerangabecode-Identifikationsuntersuchungseinheit 13 die niedrigst- und zweitniedrigstwertigen Bits "01" mit den dritt- und viertniedrigstwertigen Bits "00" und gibt dann ein Signal an den Befehlsdecodierer 14 aus, um anzugeben, daß n von Dn und m von Dm nicht identisch sind.
- Die Einheit 14 gibt dann ein Steuersignal an die Datenregister D0 und D1 aus und veranlaßt, daß die in denselben gespeicherten Daten über den internen Datenbus 17 an die Ausführungseinheit 16 ausgegeben werden.
- Die Einheit 14 gibt weiterhin ein Steuersignal an die Ausführungseinheit 16 aus, damit eine logische Additionsoperation auf der Basis der zweit-, dritt- und viertniedrigstwertigen Bits "111" des Befehlscodes ausgeführt wird. In Reaktion darauf führt die Ausführungseinheit 16 eine logische Additionsoperation auf den aus den Datenregistern D0 und D1 ausgegebenen Daten durch. Die Ergebnisse werden über den internen Datenbus 17 im Datenregister D1 gespeichert.
- Wenn andererseits ein Code "01110000" und die folgenden 8-Bit-Direktdaten in die Datenverarbeitungsvorrichtung eingegeben werden, bestätigt die Registerangabecode-Identifikationsuntersuchungseinheit 13, daß n und m gleich sind.
- Dann werden die in dem Datenregister D0 gespeicherten Daten und die im Befehlspuffer 11 akkumulierten 8-Bit-Direktdaten über den internen Datenbus 17 in die Ausführungseinheit 16 eingegeben, und es wird eine logische Additionsoperation ausgeführt, deren Ergebnisse in dem Datenregister D0 gespeichert werden.
- Wenn mit anderen Worten in Übereinstimmung mit der herkömmlichen Datenverarbeitungsvorrichtung zwei identische Registerangabecodes verwendet werden, um dieselbe Operation wie bei nicht-identischen Registerangabecodes auszuführen, dann ändert sich zum Beispiel der Wert des Datenregisters D0 nicht.
- Im Gegensatz dazu können in Übereinstimmung mit der Datenverarbeitungsvorrichtung der vorliegenden Erfindung 16 Befehlstypen in dem durch das Symbol "***" in Fig. 5 angegebenen 3-Bit-Feld zugewiesen werden, indem in diesem Fall die Ausführung einer anderen Operation veranlaßt wird. Folglich können verschiedene Operationstypen auch dann ausgeführt werden, wenn die zugrundeliegende Befehlswortlänge 8 Bit lang ist. Es können jedoch einige Befehle zum Ausführen derselben Operationen wie bei nicht-identischen Registerangabecodes vorgesehen werden, wobei zum Beispiel die Ausführung einer Subtraktion in den identischen Registerangabecodes als ein Löschbefehl für das Register verwendet wird.
- In dem oben beschriebenen Fall kann ein Register in einem 2-Bit-Feld angegeben werden, indem 8 Register in der Registermatrix 15 in zwei Gruppen mit unterschiedlichen Funktionen geteilt werden: die Datenregister D0-D3 und die Adreßregister A0-A3.
- Der Operationstyp kann also auch dann, wenn in dem 8-Bit-Befehlscode zwei Registerangabecodes, nämlich für ein Quellenregister und für ein Zielregister, vorgesehen sind, durch die verbleibenden 4 Bits angegeben werden; folglich können verschiedene Operationstypen mit einer viel kürzeren zugrundeliegenden Befehlswortlänge ausgeführt werden. Daraus folgt, daß acht häufig verwendete Grundoperationen wie etwa Operationen zwischen Datenregistern, Operationen zwischen den Datenregistern und Direktdaten, Verschiebungen zwischen den Datenregistern und dem Speicher, und Operationen mit einem einzelnen Operanden, die einem Datenregister zugewiesen sind, mit einem Befehl mit einer kurzen Wortlänge ausgeführt werden können.
- In Übereinstimmung mit den Registern und den Operationsbefehlen des oben beschriebenen Aufbaus kann eine Umgebung mit Minimalanforderungen vorgesehen werden, um die Verarbeitung durch eine höhere Sprache wie etwa die C-Sprache effizient auszuführen, wobei die Größe der Programme minimiert und die Verarbeitungsgeschwindigkeit erhöht werden kann.
- Die Direktdaten und die Absolutadresse in den Befehlscodes weisen eine Länge von 8 Bits auf und werden in Übereinstimmung mit dem Befehl in der oben beschriebenen Ausführungsform auf 16 Bits erweitert, wobei jedoch auch 16-Bit-Direktdaten verwendet werden können, wenn dies erforderlich ist.
- Der Befehlscode wird in der oben beschriebenen Ausführungsform zu einem Befehl mit einem angehängten Teil mit Direktdaten decodiert, wenn die zwei Registerangabecodes identisch sind, wobei jedoch auch eine Decodierung zu einem Befehl mit einem angehängten Teil mit einer Direktadresse oder zu einem Befehl ohne angehängten Teil vorgesehen werden kann.
- Weiterhin kann die vorliegende Erfindung in Abhängigkeit von den verschiedenen Verwendungen der Datenverarbeitungsvorrichtung auch auf den Aufbau von Registern und Befehlscodes, die Operationstypen und die Bitzuweisung von Operationscodes angewendet werden, die sich jeweils von der oben beschriebenen Ausführungsform unterscheiden.
- Außerdem kann der Befehlsdecodierer 14 derart aufgebaut sein, daß er die zwei Registerangabecodes in Abhängigkeit davon decodiert, ob sie identisch sind oder nicht, wobei dann keine Registerangabcode-Identifikationsuntersuchungseinheit 13 vorgesehen ist.
- Die vorliegende Erfindung wurde beispielhaft mit Bezug auf die beigefügten Zeichnungen beschrieben, wobei jedoch zu beachten ist, daß verschiedene Änderungen und Modifikationen durch den Fachmann vorgenommen werden können.
Claims (6)
1. Datenverarbeitungsvorrichtung mit:
einer Decodiereinrichtung (14) zum Decodieren eines Befehlscodes einschließlich
von einem Operationscode und einem ersten und zweiten Registerangabecode; und
einer Befehlsausführungseinrichtung (13, 16) zum Ausführen einer entsprechenden
Operation in Übereinstimmung mit den Ergebnissen der Decodierung durch die
Dedodiereinrichtung (14), wobei die Befehlsausführungseinrichtung (13, 16) eine erste Operation auf
der Basis des Operationscodes ausführt, wenn sich der zweite Registerangabecode von
dem ersten Registerangabecode unterscheidet, und eine zweite Operation auf der Basis des
Operationscodes ausführt, wenn der zweite Registerangabecode gleich dem ersten
Registerangabecode ist, dadurch gekennzeichnet, daß die erste Operation mit dem durch den
ersten und den zweiten Registerangabecode angegebenen ersten und zweiten Register (15)
ausgeführt wird, während die zweite Operation mit dem durch den ersten
Registerangabecode angegebenen ersten Register (15) und den im Befehlscode enthaltenen Direktdaten
ausgeführt wird, wobei die erste und die zweite Operation derselben Operation in jeweils
einem anderen Adressierungsmodus entsprechen.
2. Datenverarbeitungsvorrichtung nach Anspruch 1, wobei die
Befehlsausführungseinrichtung (13, 16) umfaßt:
eine Untersuchungseinrichtung (13), um zu untersuchen, ob der zweite
Registerangabecode dem ersten Registerangabecode gleich ist oder sich von demselben unterscheidet,
und
eine Steuereinrichtung (16), um die erste und die zweite Operation zu steuern, so
daß sie in Übereinstimmung mit den durch die Untersuchungseinrichtung (13) erhaltenen
Ergebnissen ausgewählt werden können.
3. Datenverarbeitungsvorrichtung nach Anspruch 1, welche weiterhin umfaßt:
m Datenregister (15) zum Speichern von Daten, und
n Adreßregister (15) zum Speichern von Adressen,
wobei der erste und der zweite Registerangabecode jeweils zu verarbeitende
Register (15) angeben,
der Operationscode Datenverschiebungsoperationen zwischen den Datenregistern
(15) und einem mit der Vorrichtung verbundenen Speicher sowie Operationen zwischen den
Datenregistern (15) angibt, und
der erste und der zweite Registerangabecode jeweils log&sub2; und log&sub2;.n Längen
aufweisen, wobei der Befehlscode eine vorbestimmte Länge aufweist, die der Summe aus
den Längen des Operationscodes und des ersten und zweiten Registerangabecodes
entspricht.
4. Datenverarbeitungsvorrichtung nach Anspruch 3, wobei die vorbestimmte Länge des
Befehlscodes 8 Bit beträgt.
5. Datenverarbeitungsvorrichtung nach Anspruch 3 oder 4, wobei der Befehlscode
weiterhin einen angehängten Code umfaßt, wenn der erste und der zweite
Registerangabecode gleich sind.
6. Datenverarbeitungsvorrichtung nach Anspruch 5, wobei der angehängte Code die
Direktdaten angibt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3209112A JP2970821B2 (ja) | 1991-08-21 | 1991-08-21 | データ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69231237D1 DE69231237D1 (de) | 2000-08-17 |
DE69231237T2 true DE69231237T2 (de) | 2000-11-30 |
Family
ID=16567489
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69233681T Expired - Lifetime DE69233681T2 (de) | 1991-08-21 | 1992-08-20 | Datenverarbeitungsvorrichtung |
DE69233282T Expired - Lifetime DE69233282T2 (de) | 1991-08-21 | 1992-08-20 | Datenverarbeitungsvorrichtung |
DE69231237T Expired - Lifetime DE69231237T2 (de) | 1991-08-21 | 1992-08-20 | Datenverarbeitungsvorrichtung |
DE69233561T Expired - Lifetime DE69233561T2 (de) | 1991-08-21 | 1992-08-20 | Datenverarbeitungsvorrichtung |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69233681T Expired - Lifetime DE69233681T2 (de) | 1991-08-21 | 1992-08-20 | Datenverarbeitungsvorrichtung |
DE69233282T Expired - Lifetime DE69233282T2 (de) | 1991-08-21 | 1992-08-20 | Datenverarbeitungsvorrichtung |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69233561T Expired - Lifetime DE69233561T2 (de) | 1991-08-21 | 1992-08-20 | Datenverarbeitungsvorrichtung |
Country Status (4)
Country | Link |
---|---|
US (1) | US5440701A (de) |
EP (4) | EP0528695B1 (de) |
JP (1) | JP2970821B2 (de) |
DE (4) | DE69233681T2 (de) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1229440B1 (de) * | 1993-05-27 | 2007-05-02 | Matsushita Electric Industrial Co., Ltd. | Programmumsetzungseinheit und verbesserter Prozessor für Adressierung |
GB9412434D0 (en) * | 1994-06-21 | 1994-08-10 | Inmos Ltd | Computer instruction compression |
US5636352A (en) * | 1994-12-16 | 1997-06-03 | International Business Machines Corporation | Method and apparatus for utilizing condensed instructions |
US5966514A (en) * | 1995-05-31 | 1999-10-12 | Matsushita Electric Industrial Co., Ltd. | Microprocessor for supporting reduction of program codes in size |
US6065108A (en) * | 1996-01-24 | 2000-05-16 | Sun Microsystems Inc | Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same |
US5867681A (en) * | 1996-05-23 | 1999-02-02 | Lsi Logic Corporation | Microprocessor having register dependent immediate decompression |
US6012138A (en) * | 1997-12-19 | 2000-01-04 | Lsi Logic Corporation | Dynamically variable length CPU pipeline for efficiently executing two instruction sets |
EP0942357A3 (de) | 1998-03-11 | 2000-03-22 | Matsushita Electric Industrial Co., Ltd. | Mit einer Mehrzahl von Befehlsformaten vereinbarer Datenprozessor |
DE69933323T2 (de) | 1998-04-01 | 2007-01-11 | Matsushita Electric Industrial Co., Ltd., Kadoma | Kompiler |
WO2001025900A1 (en) | 1999-10-06 | 2001-04-12 | Cradle Technologies | Risc processor using register codes for expanded instruction set |
WO2001025941A1 (en) | 1999-10-06 | 2001-04-12 | Cradle Technologies | Multiprocessor computer systems with command fifo buffer at each target device |
KR20010091132A (ko) * | 2000-03-13 | 2001-10-23 | 구자홍 | 마이크로 프로세서의 데이터 연산 처리기 |
US6633969B1 (en) | 2000-08-11 | 2003-10-14 | Lsi Logic Corporation | Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions |
CN101685388B (zh) * | 2008-09-28 | 2013-08-07 | 北京大学深圳研究生院 | 执行比较运算的方法和装置 |
CN102043750B (zh) * | 2010-12-13 | 2013-05-01 | 青岛海信信芯科技有限公司 | 一种微处理器总线结构及微处理器 |
GB2522990B (en) * | 2013-12-20 | 2016-08-03 | Imagination Tech Ltd | Processor with virtualized instruction set architecture and methods |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5317240A (en) * | 1976-07-31 | 1978-02-17 | Toshiba Corp | Controller |
US4236206A (en) * | 1978-10-25 | 1980-11-25 | Digital Equipment Corporation | Central processor unit for executing instructions of variable length |
US4347566A (en) * | 1978-12-11 | 1982-08-31 | Tokyo Shibaura Denki Kabushiki Kaisha | Data processor with register file and arithmetic logic circuit on one chip and register means directly connected to the chip |
US4250545A (en) * | 1978-12-29 | 1981-02-10 | Bell Telephone Laboratories, Incorporated | Data processing apparatus providing autoloading of memory pointer registers |
JPS55162167A (en) * | 1979-06-05 | 1980-12-17 | Canon Inc | Electronic program computer |
CA1174370A (en) * | 1980-05-19 | 1984-09-11 | Hidekazu Matsumoto | Data processing unit with pipelined operands |
US4530050A (en) * | 1981-08-26 | 1985-07-16 | Hitachi, Ltd. | Central processing unit for executing instructions of variable length having end information for operand specifiers |
US4481571A (en) * | 1981-09-11 | 1984-11-06 | Data General Corp. | Digital data processing system with accumulation instructions |
JPS6140650A (ja) * | 1984-08-02 | 1986-02-26 | Nec Corp | マイクロコンピユ−タ |
DE3532481A1 (de) * | 1985-09-12 | 1987-03-19 | Philips Patentverwaltung | Datenverarbeitungsanordnung |
US4890218A (en) * | 1986-07-02 | 1989-12-26 | Raytheon Company | Variable length instruction decoding apparatus having cross coupled first and second microengines |
US5129087A (en) * | 1988-02-03 | 1992-07-07 | International Business Machines, Corp. | Computer system and a method of monitoring transient data structures in a computer system |
US5148528A (en) * | 1989-02-03 | 1992-09-15 | Digital Equipment Corporation | Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length |
-
1991
- 1991-08-21 JP JP3209112A patent/JP2970821B2/ja not_active Expired - Lifetime
-
1992
- 1992-08-20 DE DE69233681T patent/DE69233681T2/de not_active Expired - Lifetime
- 1992-08-20 DE DE69233282T patent/DE69233282T2/de not_active Expired - Lifetime
- 1992-08-20 DE DE69231237T patent/DE69231237T2/de not_active Expired - Lifetime
- 1992-08-20 EP EP92307632A patent/EP0528695B1/de not_active Expired - Lifetime
- 1992-08-20 EP EP99124426A patent/EP0984358B1/de not_active Expired - Lifetime
- 1992-08-20 EP EP02078385A patent/EP1271305B1/de not_active Expired - Lifetime
- 1992-08-20 DE DE69233561T patent/DE69233561T2/de not_active Expired - Lifetime
- 1992-08-20 EP EP99124499A patent/EP0989485B1/de not_active Expired - Lifetime
- 1992-08-20 US US07/932,652 patent/US5440701A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69233561T2 (de) | 2006-07-27 |
EP0528695A2 (de) | 1993-02-24 |
DE69233561D1 (de) | 2005-12-08 |
EP1271305B1 (de) | 2005-11-02 |
EP0528695A3 (en) | 1994-08-24 |
JPH0546383A (ja) | 1993-02-26 |
DE69233681T2 (de) | 2007-10-25 |
EP0984358A2 (de) | 2000-03-08 |
EP1271305A1 (de) | 2003-01-02 |
DE69231237D1 (de) | 2000-08-17 |
DE69233681D1 (de) | 2007-03-29 |
EP0989485A2 (de) | 2000-03-29 |
EP0528695B1 (de) | 2000-07-12 |
EP0989485B1 (de) | 2004-01-02 |
DE69233282D1 (de) | 2004-02-05 |
JP2970821B2 (ja) | 1999-11-02 |
DE69233282T2 (de) | 2004-09-30 |
EP0984358A3 (de) | 2000-12-06 |
EP0984358B1 (de) | 2007-02-14 |
US5440701A (en) | 1995-08-08 |
EP0989485A3 (de) | 2000-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3688824T2 (de) | Datenverarbeitungssystem. | |
DE3687724T2 (de) | Digitalprozessorsteuerung. | |
DE69231237T2 (de) | Datenverarbeitungsvorrichtung | |
DE69621493T2 (de) | Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE69530520T2 (de) | Computerprogrammprodukt zur Verwendung von Mehrfachbefehlssätzen | |
DE2714805C2 (de) | ||
DE3851746T2 (de) | Sprungvorhersage. | |
DE69503046T2 (de) | Mehrfachbefehlssatzabbildung | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE69428303T2 (de) | Verfahren und Vorrichtung zum Datenarbeiten mit mehreren Statusbitgruppen | |
DE3650473T2 (de) | Mikroprogrammsteuereinheit | |
DE3751540T2 (de) | Verfahren und Vorrichtung zur Datenverarbeitung. | |
DE69033131T2 (de) | Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit | |
DE2230102A1 (de) | Rechenwerk fuer variable wortlaengen | |
DE3689389T2 (de) | Datenverarbeitungsprozessor. | |
DE69616718T4 (de) | Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten | |
DE69732793T2 (de) | Acht-bit-mikrokontroller mit risc-architektur | |
DE2718110A1 (de) | Datenverarbeitungseinheit | |
DE3856139T2 (de) | Mikroprozessor | |
EP0010185A1 (de) | Virtuell-Adressiervorrichtung für einen Computer | |
DE2533737C2 (de) | Mikroprozessor mit aufteilbarer Adressenschiene | |
DE2746505A1 (de) | Dv-system mit einer einrichtung zum adressieren in einem festwertspeicher abgelegter mikroprogramme | |
DE3854853T2 (de) | Datenprozessor mit erweiterten Operationsfunktionen | |
DE68927313T2 (de) | Operandenspezifiererverarbeitung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: PANASONIC CORP., KADOMA, OSAKA, JP |
|
R071 | Expiry of right |
Ref document number: 528695 Country of ref document: EP |