PatentDe  


Dokumentenidentifikation DE3886781T2 16.06.1994
EP-Veröffentlichungsnummer 0275170
Titel Befehlsdekoder.
Anmelder Oki Electric Industry Co., Ltd., Tokio/Tokyo, JP
Erfinder Yokouchi, Hiroshi Oki Electric Industry Co., Ltd., Minato-ku Tokyo, JP
Vertreter Betten, J., Dipl.-Ing.; Resch, M., Dipl.-Phys., Pat.-Anwälte, 80469 München
DE-Aktenzeichen 3886781
Vertragsstaaten DE, FR, GB
Sprache des Dokument En
EP-Anmeldetag 12.01.1988
EP-Aktenzeichen 883001968
EP-Offenlegungsdatum 20.07.1988
EP date of grant 05.01.1994
Veröffentlichungstag im Patentblatt 16.06.1994
IPC-Hauptklasse G06F 9/30

Beschreibung[de]

Die vorliegende Erfindung betrifft einen Befehlsdecoder für einen Prozessor, zum wiederholten Ausführen eines Befehls an einer variablen Anzahl von Operandenbytes, insbesondere einen Befehlsdecoder für einen Prozessor, bei dem ein Befehl das erste Byte als einen Operationscode repräsentierend und das zweite und nachfolgende Bytes als Operandenadressen repräsentierend enthält.

In einer herkömmlichen zentralen Verarbeitungseinheit (nachstehend mit "CPU" abgekürzt) wird ein Befehl, dessen erstes Byte einen Operationscode repräsentiert und dessen zweite und nachfolgende Bytes Operandenadressen repräsentieren, in einen Befehlsdecoder eingelesen und von diesem sequentiell decodiert, um eine Programmoperation auszuführen. Intel's CPU 8051 verwendet beispielsweise einen Befehl "ADDC A, data address", in dem "ADDC" (Addition mit Übertrag) ein Operationscode, "A" eine Operandenadresse und "data address" eine andere Operandenadresse sind. In diesem Befehl ist "A" eine feste Operandenadresse, die exklusiv einen Akkumulator spezifiziert, während "data address" variabel ist und interne Direktzugriffsspeicher (RAMs) oder eine Vielzahl von Sonderregistern spezifiziert.

Da eine der Operandenadressen, beispielsweise die Operandenadresse "A" fest ist, wird in so einer herkömmlichen CPU eine Vielzahl von Befehlen in Kombination erzeugt, um in Übereinstimmung mit einer Vielzahl von Bytes zu arbeiten. Dementsprechend ist ein langes Programm mit vielen Schritten erforderlich, was zu einer langen Verarbeitungszeit führt.

Außerdem belegen die vielen Befehle für die Byteverarbeitung viele Adressen im Nur-Lese-Speicher, wodurch die Byte-Ausnutzung verschlechtert wird.

Aus der DE-A-1 449 540 ist es bekannt, einen Befehlsdecoder herzustellen, der aufeinanderfolgende Arithmetikoperationen für einzelne Befehlsworte durchzuführen in der Lage ist, mit einem Befehlsregister zum Lesen von Befehlen, einer Datenauslesezugriffs-Steuerstufe, die einen Befehl aus dem Befehlsregister liest, um den allgemeinen Betrieb des Prozessors zu steuern, und die auf den Empfang eines Sukzessivausführungsbefehls hin, der die Wiederholung des gleichen Befehls für an verschiedenen Operandenadressen gespeicherte Operanden spezifiziert, ein Sukzessivausführungsmodus-Signal erzeugt; einer Endprüfstufe, die auf einen Einstellwert eingestellt ist, der die Anzahl von Sukzessivbefehlsausführungszyklen anzeigt, wenn das Sukzessivausführungsmodus-Signal erzeugt wird, und die die Anzahl von Ausführungszyklen zählt und bei Übereinstimmung der Anzahl der Ausführungszyklen mit dem Einstellwert ein Zählendesignal erzeugt, wobei die Endprüfstufe auf die Beendigung jedes Ausführungszyklus des Befehls antwortet, verschiedene Adressen für Daten zu erzeugen, die jeweils für aufeinanderfolgende Ausführungszyklen verarbeitet werden sollen, und mit einer Adressenmodifikations-Steuerstufe, die sequentiell die Ausgaben der Endprüfstufen-Einrichtung empfängt und Daten an verschiedenen Operandenadressen adressiert. Die Endprüfstufe sperrt weiterhin das Befehlsregister, während eines Zeitintervalls von der Erzeugung des Sukzessivausführungsmodus-Signals bis zur Erzeugung des Zählendesignals einen neuen Befehl zu lesen.

Es ist eine Aufgabe der vorliegenden Erfindung, einen verbesserten Befehlsdecoder zu schaffen, der zu einer effizienteren Datenverarbeitung führt, wobei mehrere Bytes verwendet werden, um die jeweilige sequentielle Adresse zu erzeugen.

Die vorliegende Erfindung ist durch eine Steuereinrichtung gekennzeichnet, die betreibbar ist, die Werte, die in ersten und zweiten Adressenregistern festgehalten sind, sequentiell an eine Operandenzugriffssteuereinheit anzulegen, und die den Wert aus einem der Adressenregister zeitweise festhält, während der Wert aus dem anderen an die Operandenzugriffssteuereinheit angelegt wird.

Die obigen und weiteren Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung ergeben sich noch deutlicher aus der nachfolgenden Beschreibung in Verbindung mit den beiliegenden Zeichnungen, in denen

Fig. 1 ein Blockdiagramm einer CPU ist, in der ein Befehlsdecoder gemäß der vorliegenden Erfindung eingebaut ist;

Fig. 2 ein Blockdiagramm einer in der CPU der Fig. 1 enthaltenen Befehlsdecodierung und -steuerung ist;

Fig. 3 eine Darstellung der Datenanordnung eines internen Datenspeichers (RAM) und eines Sonderregisters, die in der CPU der Fig. 1 enthalten sind, ist; und

Fig. 4 ein Zeitdiagramm ist, das den Betrieb der CPU der Fig. 1 erläutert.

Mit Bezug auf Fig. 1, die einen Mikroprozessor (CPU) zeigt, in dem ein Befehlsdecoder gemäß der vorliegenden Erfindung eingebaut ist, der eine verbesserte PLA aufweist, erzeugt eine Timing-Schnittstellen-Signalerzeugungseinheit 1 Basistimingsignale zum Steuern verschiedener Timingoperationen des Mikroprozessors und Schnittstellensignale zum Steuern der Datenkommunikation zwischen dem Mikroprozessor und den Peripheriegeräten. Ein Invertieroszillator 2 erzeugt Taktsignale für die Einheit 1. Ein Programmzähler 3 spezifiziert einen Programmbefehl und Direktdaten. Ein interner Programmdatenspeicher (ROM) 4 speichert Programmbefehle und Direktdaten. Temporärregister 20 und 21 speichern Daten während der Ausführung eines Befehls vorübergehend. Ein Decoder 22, der zum Ausführen von Befehlen erforderlich ist, erzeugt auf der Basis von Programmdaten Konstanten. Eine Arithmetik- und Logikeinheit (im folgenden mit "ALU" abgekürzt) 23 verarbeitet Additions(ADD)-, Inklusiv-OR(OR)-, Exkluxiv-OR(EOR)und/oder logische Multiplikations(ADD)-Operationen der Inhalte in den Temporärregistern 20 und 21. Ein Register 24 speichert Merker, die von der ALU 23 verarbeitet werden. Ein interner Datenspeicher (RAM) 31 speichert verarbeitete Daten. Ein Register 30 speichert die spezifizierten Adressendaten des internen Datenspeichers 31. Ein Arbeitsregister 32 speichert Daten während der Ausführung eines Befehls zeitweise. Eine Sonderregistergruppe 40 hat viele Funktionen und enthält indirekte Register, Datenspeicher (RAMs) Ein/Ausgabe-Ports, Zeitgeberzähler, Zeitgeberzähler-Steuerregister, Unterbrechungssteuerregister und Unterbrechungsmerker. Ein-/Ausgabe-Ports 50 und 51 dienen zum Aussenden verarbeiteter Daten, Empfangen von Daten von externer Ausrüstung und Aussenden der Ausgabe des Programmzählers zum Spezifizieren externer Programmdaten und Empfangen externer Programmdaten in einem externen ROM-Modus. Ein-/Ausgabe-Ports 52 bis 55 dienen zum Aussenden verarbeiteter Daten und Empfangen externer Daten. In der CPU verarbeitete Daten werden über interne Busse übertragen.

Fig. 2 zeigt eine Befehlsdecodier- und -steuereinheit 70, die Steuersignale zum Steuern des allgemeinen Betriebs der CPU erzeugt. Die Steuersignale umfassen Signale zum Steuern des internen Datenspeichers (RAM) und der Sonderregister 40 (@ARO, I/O, SMOD).

Eine Sukzessivbefehlsausführungszyklus-Überwachungseinheit 100 zählt und steuert die Anzahl von Befehlsausführungszyklen in einem Sukzessivausführungsmodus. Ein Register 101 speichert Sukzessivausführungshäufigkeits-Einstelldaten, die an einem Datenbus 700 anliegen, wenn ein Gitter 102 ein Ausgangssignal 103 erzeugt. Ein Gatter 106 gibt die Sukzessivausführungshäufigkeits-Einstelldaten, die im Register 101 gespeichert sind, zum Datenbus 700, wenn ein Gatter 104 ein Ausgangssignal 105 erzeugt. Ein Flipflop 109 empfängt ein Signal 108 von einem Gatter 107 an der hinteren Flanke eines Taktsignals, um ein Schreibsignal B einem Register/Zähler 110 zuzuführen. Auf den Empfang des Schreibsignals B hin speichert der Register/Zähler 110 die Sukzessivausführungsanzahl-Einstelldaten im Register 101. Der Register/Zähler 110 zählt die Anzahl von Sukzessivausführungszyklen herunter, wenn ein Gatter 112 ein Signal C erzeugt. Ein Gatter 111 zum Nachweis der Beendigung der Sukzessivausführung erzeugt ein Zählendesignal A, wenn der Inhalt des Zählers 110 00H wird. Das Zählendesignal A wird als Auswahlsignal an Gatter 107, 112, 113, 203 und 310 angelegt. Ein Flipflop 116 empfängt, wenn ein Signal MEND S6 daran angelegt wird, ein Signal 114 von einem Gatter 113 und gibt dann ein Schreibsteuersignal D an Register 401 und 404.

Eine Befehlsdecodiereinheit 200 decodiert einen Befehlscode und erzeugt Signale, um den allgemeinen Betrieb der CPU zu steuern. Ein Befehlsregister 201 speichert Programmbefehlsdaten. Wenn ein Gatter 202 ein Ausgangssignal 203 erzeugt, liest das Befehlsregister 201 Befehlsdaten ein, die am Datenbus 700 anliegen, und speichert sie. Eine erste PLA 205 decodiert den Inhalt des Befehlsregisters 201 und erzeugt ein Steuersignal zum Steuern des allgemeinen Betriebs der CPU durch eine AND-Operation unter Verwendung eines Timingsignals 204.

Eine Registereinheit 300 speichert Daten zum Spezifizieren von Operandenadressen, nämlich des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD). Die Registereinheit 300 spezifiziert den internen Datenspeicher und das Sonderregister mittels Befehlssymbolen. Ein Register 301 speichert an den Datenbus 700 angelegte Daten zum Spezifizieren des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD) wenn ein Gatter 302 ein Signal 303 erzeugt. Ein Gatter 307 legt die Daten zum Spezifizieren des internen Datenspeichers (RAM) und der Sonderregister (@ARO, I/O, SMOD) die im Register 301 gespeichert sind, an den Datenbus 700 an, wenn ein Gatter 304 ein Ausgangssignal 305 erzeugt. Ein Register/Zähler 306 speichert die Daten zum Spezifizieren des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD), die im Register 301 gespeichert sind, wenn ein Befehlssymbolmodus ausgewählt wird und ein Gatter 310 ein Ausgangssignal 311 erzeugt. Der Register/Zähler 306 führt jedesmal, wenn ein Signal C erzeugt wird, seine Inkrementiertätigkeit aus. Die Daten im Register/Zähler 306 spezifizieren den internen Datenspeicher (RAM) und das Sonderregister. Die Daten zum Spezifizieren des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD) im Register/Zähler 306 werden über ein Gatter 309 an den Datenbus 700 angelegt, wenn das Gatter 307 ein Signal 308 erzeugt.

Eine Speichereinheit 400 speichert Daten zum Spezifizieren des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD). Die Speichereinheit 400 speichert Daten in den zweiten und dritten Bytes, die einem Befehlscode folgen. Ein Register/Zähler 401 speichert Daten zum Spezifizieren des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD) im zweiten Byte, das einem Befehlscode folgt und am Datenbus 700 anliegt, wenn ein Gatter 402 ein Signal 403 erzeugt. Der Register/Zähler 401 dient außerdem als Vorwärtszähler, der jedesmal, wenn das Signal C erzeugt wird, um Eins vorwärtszählt.

Ein Register/Zähler 404 spezifiziert den internen Datenspeicher (RAM) und das Sonderregister (@ARO, I/O, SMOD). Der Register/Zähler 404 speichert Daten auf dem Datenbus 700, d. h. die Daten im dritten Byte, das einem Befehlscode folgt, wenn ein Gatter 405 ein Signal 406 erzeugt. Der Register/- Zähler 404 dient außerdem als Vorwärtszähler, der jedesmal, wenn das Signal C erzeugt wird, um Eins vorwärtszählt.

Beim Wiederholen eines Befehls (einer Operation zwischen Daten in beliebigen Bereichen), der durch Befehlssymbole repräsentiert wird, die in der Lage sind, zwei Operandenadressen zu adressieren, wie etwa "ADDC data address 1 und data address 2", wird der Register/Zähler 404 für die Datenadresse 2 eingestellt, und er zählt jedesmal, wenn der Befehl ausgeführt wird, um eins vorwärts.

Eine Speichereinheit 500 speichert Daten zum Spezifizieren des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD), die in den Register/Zählern 401 und 404 gespeichert sind, und ausgewählte Daten. Ein Signal WIR3 veranlaßt ein Gitter 502, die in den Register/Zählern 401 und 404 gespeicherten Daten auszuwählen. Wenn ein Gatter 503 ein Signal 504 erzeugt, speichert ein Register 501 Daten, die von einem Gatter 502 unter den Daten zum Spezifizieren des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD), die in den Register/Zählern 401 und 404 gespeichert sind, ausgewählt werden.

Eine Decodiereinheit 600 erzeugt Signale (R/W) zum Steuern des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD). Eine Auswählschaltung 601 wählt den Inhalt des Register/Zählers 306 oder die Daten zum Spezifizieren des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, 1/0, SMOD) in Übereinstimmung mit einem Auswahlsignal 604 aus und überträgt die ausgewählten Daten zu einer zweiten PLA 602.

Die zweite PLA 602 decodiert Daten, die von dem Register 501 und dem Register/Zähler 306 übertragen werden, und erzeugt Steuersignale zum Betreiben des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD). Die zweite PLA 602 decodiert Daten, die in dem Register 501 und dem Register/Zähler 306 gespeichert sind, nämlich Daten, die von der Auswählschaltung 601 unter denen zum Spezifizieren des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD) ausgewählt wurden, bildet das logische Produkt (AND) der decodierten Daten und ein Timingsignal 603 und erzeugt Steuersignale zum Steuern des internen Datenspeichers (RAM) und des Sonderregisters (@ARO, I/O, SMOD).

Der Aufbau des internen Datenspeichers (RAM) bzw. des Sonderregisters 40 (@ARO, I/O, SMOD) wird nachstehend mit Bezug auf Fig. 3 beschrieben.

Der interne Datenspeicher (RAM) 31 der CPU ist in Bänke unterteilt. Jede Bank weist acht Register R0 bis R7 auf, die jeweils durch Datenadressen 00H bis 07H spezifiziert werden. Das RAMDPL-Register 30 (Fig. 1) spezifiziert die Bänke des internen Datenspeichers (RAM). Die Bereiche des Sonderregisters (@ARO, I/O, SMOD) 40 sind Datenadressen 08H bis FFH zugeordnet. Die den Datenadressen 08H bis 0FH zugeordneten Bereiche, nämlich Bereiche @ARO bis @AR7, unter den Bereichen des Sonderregisters 40 sind indirekte Datenadressen spezifizierende Register. Wenn die Bereiche 08H bis 0FH spezifiziert sind, spezifiziert der Inhalt der Bereiche @ARO bis @AR7 den internen Datenspeicher und das Sonderregister 40. Bereiche 10H bis 3FH sind Datenspeicher (RAMs) innerhalb des Sonderregisters. Bereiche 40H bis FFH sind Sonderfunktionsregister wie Ein-/Ausgabe-Ports und Zeitgeberzähler, welche Datenadressen zugeordnet sind.

Die Betriebsweise des solchermaßen aufgebauten Befehlsdecoders wird mit Bezug auf Fig. 4 beschrieben.

In Fig. 4 ist ein Signal OSC1 ein Taktsignal, das von dem internen Oszillator der CPU erzeugt wird, und ein Signal CLOCK ist ein Synchronisiertakt zum Steuern des Timings des Schreibens von Daten in das interne Datenregister und das Sonderregister der CPU. BUS7 bis BUS0 sind an den Datenbus 700 angelegte Signale. Ein Signal 203 (WIR1) entspricht dem Signal 203 (Fig. 2). Eine Anzeige 201 (REGISTER) zeigt den Modus des Befehlsregisters 201 (Fig. 2) an. Eine Anzeige 101 (REGISTER) zeigt den Modus des Registers 101 (Fig. 2) zum Einstellen der Anzahl von Ausführungszyklen eines Befehls an. Eine Anzeige 110 (COUNTER) zeigt den Modus des Zählers 110 zum Zählen der Anzahl von Ausführungszyklen an. Signale A, B, C und D entsprechen den Signalen A, B, C und D in Fig. 2. Eine Anzeige 301 (REGISTER) zeigt den Modus des Registers 301 (Fig. 2) an. Eine Anzeige 306 (COUNTER) zeigt den Modus des Register/Zählers 306 (Fig. 2) an. Ein Signal 403 (WIR2) entspricht dem Signal 403 in Fig. 2. Eine Anzeige 401 (COUNTER) zeigt den Modus des Register/Zählers 401 (Fig. 2) an. Ein Signal 406 (WIR3) entspricht dem Signal 406 in Fig. 2. Eine Anzeige 404 (COUNTER) zeigt den Modus des Register/- Zählers 404 (Fig. 2) an. Signale WIR2 und WIR3 entsprechen den Signalen WIR2 und WIR3 in Fig. 2. Eine Anzeige 501 (REGISTER) zeigt den Modus des Registers 501 (Fig. 2) an. Ein Signal 604 (SEL DAR) entspricht dem Signal 604 in Fig. 2. Eine Anzeige 6010UT zeigt den Ausgabemodus der Auswählschaltung 601 an. Signale ENABLE SFR und ENABLE RAM sind Lesesignale, die von der PLA2 (Fig. 2) erzeugt werden, um das Lesen von Daten von dem internen Datenspeicher und dem Sonderregister anzufordern. Signale WRITE SFR und WRITE RAM sind Schreibsignale, die von der PLA 602 (Fig. 2) erzeugt werden, um das Schreiben von Daten in den internen Datenspeicher und das Sonderregister anzufordern. Ein Signal WTPR1 ist ein Signal, das Schreiben von Daten in das TPR1-Register 20 (Fig. 1) anzufordern. Eine Anzeige TPR1 zeigt den Modus des Temporärregisters 20 an. Ein Signal WTPR2 dient zum Anfordern des Schreibens von Daten in das Temporärregister 21 (Fig. 1). Eine Anzeige TPR2 zeigt den Modus des Temporärregisters 21 an. Eine Anzeige ALU MODE zeigt den Betriebsmodus der ALU 23 (Fig. 1) an. Ein Signal ENABLE ALU ist das Ausgangssignal der ALU 23 (Fig. 1). Ein Signal WPSW ist ein Signal, das Schreiben von Daten in das Register 24 (Merkerzustandsregister) (Fig. 1) anzufordern. Ein Signal CARRY zeigt einen Übertrag an, der erzeugt wird, wenn das achte Bit der ALU 23 mittels eines im Temporärregisters 24 gespeicherten Hauptübertragmerkers spezifiziert wird. Ein Signal AC ist ein im Temporärregister 24 gespeicherter Hilfsmerker, der einen Übertrag im vierten Bit der ALU 23 spezifiziert. Ein Signal ALU CARRY IN zeigt eine Übertragseingabe in die ALU 23 (Fig. 1) an. Ein Signal SELECT ist ein Steuersignal, eine Sukzessivausführung anzufordern, die von der PLA 205 (Fig. 2) erzeugt wird, wenn dem Befehlsregister 201 (Fig. 2) ein Befehl "ADDC A, data address" gegeben wird. Eine Anzeige OP MODE zeigt die Ausführung eines Sukzessivausführungsbefehls an.

Das Zeitdiagramm der Fig. 4 zeigt beispielhaft den Modus einer Operation, die durch ein Befehlssymbol "ADDC A, data address" spezifiziert wird, zum dreimaligen Wiederholen eines Befehls "ADDC A, data address". Vor der Ausführung des Befehls "ADDC A, data address" wird das Sukzessivausführungshäufigkeits-Einstellregister 101 (Fig. 2) auf "03H" eingestellt, um den Befehl dreimal zu wiederholen. Das Register 301 (Fig. 2), das durch ein Befehlssymbol A spezifiziert wird, wird auf 00H eingestellt, um eine Adresse "00H" im internen Datenspeicher (RAM) zu spezifizieren. Die Datenadressen fangen bei einer Adresse "30H" an. Die Tabelle 1 zeigt Datensymbole A und den Zustand von Daten, die Datenadressen zugeordnet sind.

Tabelle 1
DATEN data address

Wenn ein EROM-Signal im ersten Zeitintervall M1-S1 erzeugt wird, wobei ein Befehlscode "35H" an der Adresse "ADDC A, data address" vom Programmdatenspeicher (ROM) 4 (Fig. 1) gelesen wird, werden die Busse 7 bis 0 "00110101". Wenn das Signal WIR1 203 erzeugt wird, wird "35H" im Befehlsregister 201 gespeichert. Gleichzeitig wird der Inhalt des Registers 301 zum Zähler 306 übertragen, wodurch der Zähler 306 "00H" wird. Da das Signal SEL DAR 604, das von der Auswählschaltung 601 erzeugt wird, in M1-S1 bis zur Mitte von M1-S3 "1" bleibt, wird der Inhalt des Zählers 306 zu der PLA 602 gegeben. In M1-S3 werden die Daten "50H" an der Adresse 00H in der PLA 602, die durch den Inhalt des Zählers 306 spezifiziert wird, gelesen, und der Zustand der Busse 7 bis 0 wird "0101000". In diesem Augenblick erzeugt die PLA 205 das Signal WTPR2, die Daten "50H" in der TPR2 zu speichern. Wenn das Gatter 107 das Signal 108 im ersten M1-S3 erzeugt, erzeugt das Flipflop 109 das Signal B, das an der hinteren Flanke von M1-S3 abgerufen worden ist. Anschließend ruft das Register 110 Sukzessivausführungshäufigkeits-Einstelldaten 03H aus dem Register 101 ab. Nachdem die Daten 03H im Register 110 aufgezeichnet worden sind, wird das Ausgangssignal A des Gatters 110 "0", um den Betrieb der Gatter 107, 113, 202 und 310 zu sperren. In M1-S4 wird das EROM-Signal erzeugt, um die Daten "30H" des zweiten Bytes des Befehlscodes aus dem ROM 4 zu lesen, und der Zustand der Busse 7 bis 0 wird dann "00110000". In diesem Augenblick erzeugt die PLA 205 das Signal WIR2, die Daten "30H" in dem Register/Zähler 401 und dem Register 501 zu speichern. Da das an die Auswählschaltung 601 angelegte Signal 604 (SEL DAR) während eines Zeitintervalls M1-S4 bis zur Mitte von M2-S3 "0" bleibt, wird der Inhalt des Registers 501 an die PLA 602 angelegt. Im M1-S5 erzeugt die PLA 602 ein Lesesignal, die Daten "22H" der Adresse "30H" zu lesen, und der Zustand der Busse 7 bis 0 wird "00100010". In diesem Augenblick erzeugt die PLA 205 das Signal WTPR1, die Daten "22H" im Temporärregister 20 (TPR1) zu speichern. Da sich die ALU 23 im ADD- Befehlsausführungsmodus befindet, erzeugt die PLA 205 das ADD-Signal, den Inhalt der Temporärregister 20 und 21 zu addieren. Da das an die Auswählschaltung 601 angelegte Signal 604 (SEL DAR) während M2-S4 bis zur Mitte des nächsten M1-S3 "1" bleibt, wird der Inhalt des Register/Zählers 306 an die PLA 602 gegeben. In M2-S5 erzeugt die PLA 205 das Signal ENABLE ALU, und anschließend liefert die ALU 23 das Ergebnis der Addition, nämlich der Addition der Inhalte der Temporärregister 20 und 21 und eines Übertrags (22H + 50H + 0 = 72H), und der Zustand der Busse wird "01110010". In diesem Augenblick erzeugt die PLA 602 das Schreibsignal WRITE RAM, Daten "72H" an eine vom Register/Zähler 306 spezifizierte Adresse "00H" zu schreiben. Die PLA 205 erzeugt dann ein Schreibsignal WPSW, den Hauptübertrag und den Zweitübertrag in das Register 24 zu schreiben. Da der Hauptübertrag und der Zweitübertrag nicht nach dem ersten Zyklus der ADD- Operation erzeugt werden, ist das Ergebnis des ersten Zyklus der ADD-Operation "0". In M2-S5 werden, wenn das Gatter 112 das Signal C, nämlich einen Zähltakt, erzeugt, die Inhalte der Register/Zähler 110, 306 und 401 an der hinteren Flanke von M2-S5 erneuert, um den Inhalt des Register/Zählers 110 von "03H" nach "02H", den des Register/Zählers 306 von "00H" nach "01H" und den des Register/Zählers 401 von "30H" nach "31H" zu ändern. In M2-S6 ist, da das an das Gatter 113 angelegte Signal A "0" ist, das Ausgangssignal D des Flipflops 116 "0". Infolgedessen wird der Betrieb der Gatter 402 und 405 unterbrochen.

Nachdem M2-S6 beendet worden ist, wird der zweite Ausführungszyklus des Befehls begonnen. Im zweiten M1-S1 wird, da das an das Gatter 202 angelegte Signal A, das ein Schreibsignal erzeugt, das eine Schreiboperation im Befehlsregister 201 spezifiziert, "0" ist, das Schreibsignal 203, das eine Schreiboperation im Befehlsregister 201 spezifiziert, nicht erzeugt, und deshalb bleibt der im Befehlsregister 201 gespeicherte Befehlscode "35H" für das erste M1-S1 im Befehlsregister 201. Dementsprechend wird der im ersten Ausführungszyklus gespeicherte Befehl ausgeführt. In M1-S3 erzeugt die FLA 602 das Signal ENABLE RAM, das das Lesen von Daten von der Adresse "01H" im Register/Zähler 306 spezifiziert, und dadurch wird der Inhalt OAAH der Adresse "01H" auf dem Bus bereitgestellt, und die Busse 7 bis 0 werden "10101010". In diesem Augenblick erzeugt die PLA 205 das Signal WTPR2, und das Temporärregister 21 speichert "0AAH". Obwohl die PLA 205 das Signal WIR2 in M1-S4 erzeugt, wird das Signal 403, das das Schreiben von Daten in den Register/Zähler 401 spezifiziert, nicht erzeugt, da das an das Gatter 402 angelegte Signal D "0" ist. Dementsprechend wird der Inhalt des Register/Zählers 401 nicht geändert. Das Signal WIR2 wird verwendet, um das Schreiben von Daten in das Register 501 zu spezifizieren. Da das an die Auswählschaltung 502 vor dem Register 501 angelegte Signal WIR3 "0" ist, speichert das Register 501 den Inhalt "31H" des Register/Zählers 401.

In M1-S5 erzeugt die PLA 602 das Signal ENABLE SFR, Daten von der durch den Inhalt des Registers 501 spezifizierten Adresse "31H" zu lesen, und dadurch wird der Inhalt "OBCH" der Adresse "31H" auf dem Bus bereitgestellt und werden die Busse 7 bis 0 "10111100". In diesem Augenblick erzeugt die PLA 205 das Signal WTPR1, die Daten "OBCH" im Temporärregister 20 zu speichern. Da sich die ALU im ADD-Befehlsausführungsmodus befindet, erzeugt die PLA 205 ein ADD-Signal. In M2-S5 erzeugt die PLA 205 das Signal ENABLE ALU, und dadurch wird das Ergebnis der Addition der Daten der Temporärregister 20 und 21 und des Hauptübertrags, nämlich (BC + AA + 0 = 66), auf dem Bus bereitstellt, und die Busse 7 bis 0 werden "01100110". In diesem Augenblick erzeugt die PLA 602 das Schreibsignal WRITE RAM, das das Schreiben von Daten "66H" an einer Adresse "01H" spezifiziert, die durch das Register 306 spezifiziert wird. Außerdem erzeugt die PLA 205 das Schreibsignal WPSW, den Hauptübertrag und den Zweitübertrag in das Register 24 zu schreiben. Der Hauptübertrag und der Zweitübertrag, die nach dem zweiten Zyklus des Additionsbefehls erzeugt werden, sind "1". In M2-S5 erzeugt das Gatter 112 das Signal C und werden die Inhalte der Register/Zähler 110, 306 und 401 an der hinteren Flanke von M2-S5 erneuert, um die Inhalte der Register/Zähler 110, 306 und 401 von "02H" nach "01H", von "01H" nach "02H" bzw. von "31H" nach "32H" zu ändern.

In M2-S6 bleibt das Ausgangssignal des Flipflops 116 weiter "0", da das Dateneingangsgatter 113 das Signal A = "0" an das Flipflop 116 anlegt.

Auf das Ende von M2-S6 hin wird der dritte Ausführungszyklus gestartet. Im dritten M1-S1 wird das Schreibsignal 203 nicht erzeugt, da das Signal D = "0" an das Eingangs-AND-Gatter 202 angelegt wird, das ein Schreibsignal erzeugt, das das Schreiben von Daten in das Befehlsregister 201 spezifiziert. Dementsprechend bleibt der im Befehlsregister 201 in M1-S1 des ersten Ausführungszyklus gespeicherte Befehlscode "35H" im Befehlsregister 201, weshalb der im ersten Ausführungszyklus gespeicherte Befehl ausgeführt wird. In M1-S3 erzeugt die PLA 602 das Schreibsignal ENABLE RAM, das das Lesen von Daten von der durch das Register 306 spezifizierten Adresse "02H" spezifiziert, und dadurch werden die Daten "33H" der Adresse "02H" auf dem Bus bereitgestellt und werden die Busse 7 bis 0 "00110011". In diesem Augenblick erzeugt die PLA 205 das Signal WTPR2, und das Temporärregister 21 speichert die Daten "33H".

In M1-S4 wird, obwohl die PLA 205 das Signal WIR2 erzeugt, das das Schreiben von Daten in das Register 401 spezifizierende Signal 403 nicht erzeugt, da das an das Eingangs-AND- Gatter 402 angelegte Signal D "0" ist, und deshalb wird der Inhalt des Registers 401 nicht geändert. Das Signal WIR2 dient als Schreibsignal für das Register 501. Da das an die Auswählschaltung 502 vor dem Register 501 angelegte Signal WIR3 "0" ist, wird der Inhalt "32H" des Registers 401 im Register 501 gespeichert. In M1-S5 erzeugt die PLA 602 das Signal ENABLE SFR, das das Lesen von Daten von der Adresse "32H" spezifiziert, die durch den Inhalt des Registers 501 spezifiziert wird. Anschließend wird der Inhalt "55H" der Adresse "32H" auf dem Bus bereitgestellt, und die Busse 7 bis 0 werden "01010101". In diesem Augenblick erzeugt die PLA 205 das Signal WTPR1, die Daten "55H" im Temporärregister 20 zu speichern. Da sich die ALU im ADD-Befehlsausführungsmodus befindet, fährt die PLA 205 damit fort, das Signal ADD zu erzeugen.

In M2-S5 erzeugt die PLA 205 das Signal ENABLE ALU, wodurch die Summe (33H = 55H + + 1) der Inhalte der Temporärregister 20 und 21 und des Hauptübertrags gebildet wird und die Busse 7 bis 0 "10001001" werden. In diesem Augenblick erzeugt die PLA 602 das Schreibsignal WRITE RAM, das das Schreiben von Daten an die Adresse "02H" spezifiziert, die durch das Register 306 spezifiziert wird, um "89H" an der Adresse "02H" zu speichern. Außerdem erzeugt die PLA 205 das Schreibsignal WPSW, den Hauptübertrag und den Zweitübertrag in das Register 24 zu schreiben. Da der Hauptübertrag und der Zweitübertrag am Ende der Addition nicht erzeugt werden, werden beide Überträge "0". In M2-S5 wird das Signal C, nämlich der Zähltakt für die Register/Zähler 110, 306 und 401, erzeugt, um die Inhalte der Register/Zähler 110, 306 und 401 von "01H" nach "00H", von "02H" nach "03H" bzw. von "32H" nach "33H" zu andern.

In M2-S6 wird der Inhalt des Register/Zählers "00H", und daher ändert sich das Ausgangs-Zählendesignal A des Gatters 111 von "0" nach "1". Das Ausgangs-Zählendesignal A - "1" wird an das Gatter 113 angelegt, wodurch sich das Ausgangssignal D des Flipflops 116 von "0" nach "1" ändert. Der dreizyklige Sukzessivausführungsmodus wird am Ende von M1-S6 beendet.

Im nächsten M1-S1 gibt das Gatter 202 das Signal 203 an das Befehlsregister 201, da das Signal A = "1" am Gatter 202 anliegt, das ein Schreibsignal an das Befehlsregister 201 gibt. Anschließend speichert das Befehlsregister 201 den nächsten Befehl.

Sukzessiv-ADD-Operationen zum Verarbeiten der in Tabelle 2 gezeigten Daten mittels eines herkömmlichen Datenverarbeitungssystems und mittels eines Datenverarbeitungssystems gemäß der vorliegenden Erfindung werden nachstehend verglichen.

Tabelle 2

DAR DATEN data address DATEN Adresse 00H 50H Adresse 30H 22H

Adresse 01H OAAH Adresse 31H OBCH

Adresse 02H 33H Adresse 32H 55H

Herkömmliches Datenverarbeitungssystem

(1) CLR C Lösche den Hauptübertrag

(2) MOV A, 00 Bewege die Daten bei 00H nach A

(3) ADDC A, 30 Addiere A und die Daten bei 30H

(4) MOV 00, A Speichere das Ergebnis der Addition bei 00H

(5) MOV A, 01 Bewege die Daten bei 01H nach A

(6) ADDC A, 31 Addiere A und die Daten bei 31H

(7) MOV 01, A Speichere das Ergebnis der Addition bei 01H

(8) M0V A, 02 Bewege die Daten bei 02H nach A

(9) ADDC A, 32 Addiere A und die Daten bei 32H

(10) MOV 02, A Speichere das Ergebnis der Addition bei 02H

Datenverarbeitungssystem der vorliegenden Erfindung

(1) CLR C Löscbe den Hauptübertrag

(2) MOV DAR, #00 Setze DAR für die Daten bei 00H

(3) MOVMOD, #03 Setze MOD für Sukzessivausführungshäufigkeits-Daten 03H

(4) ADDC A, 30 Führe A und den Befehl bei 30H aus.

Somit führt das herkömmliche Datenverarbeitungssystem zehn Befehle aus, während das Datenverarbeitungssystem der vorliegenden Erfindung zu dem gleichen Zweck nur vier Befehle ausführt. Der Befehlsdecoder der vorliegenden Erfindung hat eine hohe Ausnutzung der ROM-Bytes und arbeitet bei einer hohen Verarbeitungsgeschwindigkeit. Insbesondere wenn ein Datentransferbefehl (MOV data address 1, data address 2) gegeben wird, können Daten leicht in Blöcken zwischen wahlweisen Bereichen transferiert werden, und daher kann leicht ein Unterprogramm ohne Verwendung irgendeines Datenstapels in einem Unterbrechungsprozeß und einem gewöhnlichen Prozeß aufgestellt werden.

Wie sich aus der vorangehenden Beschreibung ergibt, kann gemäß der vorliegenden Erfindung der Betrieb wahlweiser aufeinanderfolgender Bytes ausgeführt werden, indem die Inhalte eines Registers zum Zählen der Anzahl von Zyklen der Befehlsausführung, eines Registers zum Spezifizieren von Datenadressen und eines durch ein Befehlssymbol A spezifizierten Registers jedesmal, wenn ein Zyklus der Befehlsausführung beendet wird, gezählt werden.

Weiterhin werden Register 401 und 404 zum wiederholten Ausführen eines Befehls verwendet, der mittels eines Befehlssymbols "ADDC data address 1, data address 2" für aufeinanderfolgende Operandenadressen bezeichnet ist, und die Inhalte der Register 401 und 404 werden jedesmal, wenn ein Zyklus des Befehls ausgeführt wird, in einer zu der bei den Registern 306 und 401 beschriebenen ähnlichen Weise um "1" hochgezählt, um kontinuierlich Adressen zu bilden.

Deshalb wird gemäß der vorliegenden Erfindung beim Verarbeiten verschiedener Daten (Operanden), die durch Wiederholen der gleichen Operation an verschiedenen Adressen beispielsweise in einem Datenspeicher und einem Sonderregister gespeichert wurden, der Befehl der Operation in einem Befehlsregister festgehalten und werden die verschiedenen Operandenadressen sequentiell spezifiziert, so daß die Daten mit einer hohen Verarbeitungsgeschwindigkeit und unter hoher Byte-Ausnutzung verarbeitet werden.


Anspruch[de]

1. Befehlsdecoder für einen Prozessor, zum wiederholten Ausführen eines Befehls an einer variablen Anzahl von Operandenbytes, welcher aufweist:

ein Befehlsregister (201) zum Lesen von Befehlen, das mit einem Datenbus verbunden ist;

eine Befehlsdecodiereinheit (205), die einen Befehl aus dem Befehlsregister (201) liest, um den allgemeinen Betrieb des Prozessors zu steuern, und die auf den Empfang eines Sukzessivausführungsbefehls hin, der die Wiederholung des gleichen Befehls für an verschiedenen Operandenadressen gespeicherte Operanden spezifiziert, ein Sukzessivausführungsmodus-Signal erzeugt;

eine Sukzessivbefehlsausführungszyklus-Überwachungseinheit (100) die auf einen Einstellwert eingestellt ist, der die Anzahl von Sukzessivbefehlsausführungszyklen anzeigt, wenn das Sukzessivausführungsmodus-Signal erzeugt wird, und die die Anzahl von Ausführungszyklen zählt und bei Übereinstimmung der Anzahl der Ausführungszyklen mit dem Einstellwert ein Zählendesignal erzeugt;

Adressen-Register/Zähler (306, 401) zum zusammenfallenden Empfangen jeweiliger Bytes des Befehls von dem Datenbus, die ihre Zahlung auf die Beendigung jedes Ausführungszyklus des Befehls hin ändern und dadurch jeder verschiedene Adressen für Daten erzeugen die jeweils für aufeinanderfolgende Ausführungszyklen verarbeitet werden sollen;

eine Operandenzugriffssteuereinheit (602), die sequentiell die Ausgaben der Adressen-Register/Zähler (306, 401) empfängt und Daten an verschiedenen Operandenadressen adressiert;

eine Lesesperreinrichtung (202), die das Befehlsregister (201) dagegen sperrt, während eines Zeitintervalls von der Erzeugung des Sukzessivausführungsmodus-Signals bis zur Erzeugung des Zählendesignals einen neuen Befehl von dem Datenbus zu lesen; und

eine Steuereinrichtung (501, 502, 601), die betreibbar ist, sequentiell den Wert aus dem ersten und dem zweiten Adressen-Register/Zähler (306, 401) an die Operandenzugriffssteuereinheit (602) anzulegen, und die den Wert aus einem der Adressenregister zeitweise festhält, während der Wert aus dem anderen an die Operandenzugriffssteuereinheit (602) angelegt wird.

2. Befehlsdecoder nach Anspruch 1, bei dem die Sukzessivbefehlsausführungszyklus-Überwachungseinheit (100) aufweist:

ein Register (101), das den Einstellwert empfängt, der die Anzahl von Ausführungszyklen von dem Datenbus anzeigt, und das den Einstellwert speichert;

einen Register/Zähler (110), der für den im Register (101) gespeicherten Einstellwert eingestellt ist und jedesmal, wenn ein Ausführungszyklus beendet wird, um Eins herunterzählt; und

eine Gattereinrichtung (111), die das Zählendesignal auf die Herabsetzung der Zählung des Register/Zählers (110) auf Null hin erzeugt.

3. Befehlsdecoder nach Anspruch 1 oder 2, der einen dritten Adressen-Register/Zähler (404) enthält, um ein drittes Byte des Befehls von dem Datenbus zusammenfallend mit den ersten und zweiten Bytes zu empfangen und um danach dessen Zählung auf die Beendigung jedes Ausführungszyklus hin zu ändern, um die verschiedenen Adressen für die aufeinanderfolgenden Ausführungszyklen zu erzeugen.







IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com