-
Die vorliegende Erfindung betrifft eine Datenvarbeitungsvorrichtung
gemäß dem Oberbegriff des Anspruches 1.
-
Eine derartige Vorrichtung ist aus DE-A-1 449 540 bekannt.
-
Diese Verweisung beschreibt im besonderen eine
Datenverarbeitungsmaschine, die ein Befehlsdecodierereinrichtung, die aus einem
Speicher ausgelesene Befehle decodiert, und eine arithmetische
Steuereinrichtung umfaßt, die die arithmetische Operation nach Maßgabe eines
gegebenen Befehls steuert, wobei, wenn der Befehlsdecodierer eine
bestimmte Information in dem Befehls ermittelt, die Operation wiederholt
wird, bis ein Übereinstimmungssignal anzeigt, daß eine vorbestimmte
Anzahl von Malen erreicht ist.
-
Aus 'IBM Technical Disclosure Bulletin' Band 10, Nr. 9, Februar 1968,
Seite 1345, ist ein Befehl bekannt, der zum Ermitteln von Begrenzern
in einem abgetasteten Text hilfreich ist. Der Befehl enthält den
Begrenzer, nach dem in dem Text gesucht wird, und wenn der betreffende
Begrenzer innerhalb des Textes gefunden wird, wird seine Position
registriert.
-
In einer herkömmlichen zentralen Verarbeitungseinheit, die einen
Bürocomputer oder dergleichen bildet, wird die Verarbeitung von z.B.
einer Transferoperation oder einer arithmetischen Operation in einer
Einheit von einem Byte einer festen Länge als Reaktion auf jeden
Befehl durchgeführt.
-
Im allgemeinen werden Daten für jeden Satz als eine minimale Einheit
in eine Datei eingegeben oder von der Datei ausgegeben. Ein Satz
besteht aus einer Mehrzahl von Feldern. Ein Feld besteht aus einer
Mehrzahl von Bytes. Daten in einem Satz werden für jedes Feld als eine
minimale Einheit aktualisiert. Die Verarbeitung einer Datei wird
deshalb oft in Einheiten von einer Mehrzahl von Bytes durchgeführt.
-
Die herkömmliche zentrale Verarbeitungseinheit kann eine Verarbeitung
jedoch nur in einer Einheit von einem Byte einer festen Länge als
Reaktion auf jeden Befehl durchführen. Aus diesem Grund muß beim
Handhaben von Dateien, wenn die Datenverarbeitung in Einheiten von
Feldern
oder Sätzen durchgeführt wird, ein Unterprogramm erstellt
werden, das aus einer Mehrzahl von Befehlen besteht.
-
Folglich ist eine beachtlich lange Zeitdauer erforderlich, um ein
Programm zu erstellen. Außerdem wird die Verarbeitungsgeschwindigkeit
vermindert.
-
Es ist die Aufgabe der vorliegenden Erfindung wie beansprucht, eine
Datenverarbeitungsvorrichtung zur Verfügung zu stellen, die imstande
ist, Daten mit einer willkürlichen Länge als Reaktion auf einen
Befehl zu verarbeiten.
-
Diese Aufgabe wird durch den Gegenstand des Anspruches 1 erfüllt.
-
Diese Erfindung kann aus der folgenden ausführlichen Beschreibung
besser verstanden werden, wenn sie mit den begleitenden Zeichnungen in
Verbindung gebracht wird.
-
Inhalt der Zeichnungen:
-
Fig. 1 ist ein Blockschaltbild, das einen Gesamtaufbau der
Datenverarbeitungsvorrichtung zeigt, die die Operationsvorrichtung 1 umfaßt:
-
Fig. 2 ist ein Blockschaltbild, das einen detaillierten Aufbau des
Begrenzerdetektors 14 zeigt.
-
Fig. 3A bis 3C sind Darstellungen, die im Datenspeicher 2 gespeicherte
und durch einen Befehl verarbietete Daten in einem Fall zeigen, bei
dem durch Bezeichnungsbegrenzer definierte Daten als eine Einheit
verarbeitet werden.
-
Fig. 4 ist ein Blockschaltbild, das einen anderen Aufbau des
Begrenzerdetektors 31 zeigt.
-
Fig. 5A bis 5C sind Darstellungen, die im Datenspeicher 2 gespeicherte
und durch einen Befehl verarbeitete Daten in einem Fall zeigen, bei
dem durch Bezeichnungsbegrenzer definierte Blöcke von Daten als eine
Einheit verarbeitet werden.
-
Fig. 6A und 6B sind Datstellungen, die im Datenspeicher 2 gespeicherte
und durch einen Befehl verarbeitete Daten in einem Fall zeigen, bei
dem durch Bezeichnungsbegrenzer definierte Daten als eine Einheit
verarbeitet werden und der Maximalwert der Datenlänge bezeichnet ist.
-
Fig. 1 zeigt einen Gesamtaufbau der Datenverarbeitungsvorrichtung.
Gemäß Fig.
1 führt die Operationsvorrichtung 1 die Übertragung, den
Vergleich, arithmetische Operationen und dergleichen von Daten variabler
Länge durch. Der Datenspeicher 2 speichert Daten variabler Länge. Die
Daten variabler Länge werden durch Begrenzer geteilt, die Codes sind,
die Grenzen der Daten darstellen. Der Programmspeicher 3 speichert
Befehle, die der Operationsvorrichtung 1 zuzuführen sind. der
Mikroprozessor 4 setzt einen im Programmspeicher 3 gespeicherten Befehl
in die Operationsvorrichtung 1, steuert die Ein/Ausgabe-Einheiten
(nicht gezeigt) und tauscht Daten mit diesen Ein/Ausgabe-Einheiten
aus. Die Operationsvorrichtung 1, der Datenspeicher 2, der
Programmspeicher 3 und der Mikroprozessor 4 sind über gemeinsame
Adressen- und Datenbusse AB und DB miteinander verbunden.
-
In der Operationsvorrichtung 1 ist das Befehlsregister 11 ein
Register, das aus dem Programmspeicher 3 gelesene Befehle speichert, der
über die Adressen- und Datenbusse AB und DB damit verbunden ist. Im
Befehlsregister 11 gespeicherte Operationscodes,
Adressenaktualisierungsrichtungen und Bezeichnungsbegrenzer werden jeweils dem
Befehlsdecodierer 12, dem Adressengenerator 13 und dem Begrenzerdetektor 14
zugeführt.
-
Der Befehlsdecodierer 12 decodiert einen eingegebenen Operationscode
und liefert ein Ausgangssignal basierend auf dem decodierten
Ergebnis an die Steuerschaltung 15 und die ALU 18. Die Steuerschaltung 15
gibt verschiedene Signale aus, die zum Ausführen der durch den
Befehlsdecodierten Befehle erforderlich sind, und liefert
dem Adressengenerator 13 und dem Zähler 22 ein Steuersignal a für
jedem Ausführungszyklus.
-
Als Reaktion auf das von der Steuerschaltung 15 ausgegebene
Steuersignal a inkrementiert oder dekrementiert die Steuerschaltung 15
Lese- und Schreibadressen bei jedem Ausführungszyklus nach Maßgabe einer
Adressenaktualisierungsrichtung vom Befehlsregister 11. Die durch
diese Operation erzeugten Adressen werden dem Datenspeicher 12 über den
Adressenbus AB zugeführt. Wenn durch die Leseadresse vom
Adressengenerator 13 bezeichnete Daten aus dem Datenspeicher 2 gelesen werden,
werden die ausgelesenen Daten über den Datenbus DB im Lesepuffer 16
gespeichert. Wenn durch die Schreibadresse vom Adressengenerator 13
bezeichnete Daten aus dem Datenspeicher 2 gelesen werden, werden die
ausgelessenen Daten über den Datenbus DB im Lesepuffer 17 gespeichert.
-
Wenn ein im Befehlsregister 11 gespeicherter Operationscode ein
Befehl ist, der für eine arithmetische Operation on Operanden- und
Operatordaten, z.B. ein arithmetischer und logischer
Operationsbefehl, benutzt wird, werden die Operanden- und Operatordaten in den
Lesepuffern 16 bzw. 17 gespeichert. In diesem Fall werden die
Operanden- und Operatordaten in den Lesepuffern 16 und 17 an die ALU
(Arithmetische und Logische Einheit) 18 geliefert. Die ALU 18 führt eine
Operation gemäß einem Operationsbefehl vom Befehlsdecodierer 12 aus.
Nachdem das Operationsergebnis im Datenbuspuffer 19 gespeichert ist,
wird es dem Datenspeicher 2 über den Datenbus DB zugeführt und dann
in einen durch die Schreibadresse vom Adressengenerator 13
bezeichneten Adressenbereich geschrieben. Wenn ein durch den Operationscode
im Befehlsregister 11 bezeichneter Befehl ein Übertragungsbefehl ist,
werden die durch die Leseadresse vom Adressengenerator 13
bezeichneten Daten aus dem Datenspeicher 2 gelesen und in den Lesepuffer 16
gesetzt. Wenn die Schreibadresse vom Adressengenerator 13
ausgegeben wird und die in den Lesepuffer 16 gesetzten Daten dem
Datenspeicher 2 über die ALU 18 und den Datenbuspuffer 19 zugeführt werden,
werden die Daten in einen durch die Schreibadresse bezeichneten
Adressenbereich geschrieben.
-
Der Begrenzerdetektor 14 vergleicht einen im Befehlsregister 11
gespeicherten Bezeichnungsbegrenzer oder einen im
Begrenzereinstallregister 20 im voraus gespeicherten Bezeichnungsbegrenzer mit den in
den Lesepuffer 16 gesetzten Daten (Begrenzer). Wenn beide Begrenzer
miteinander übereinstimmen, gibt der Begrenzerdetektor 14 ein
Detektionssignal b an die Steuerschaltung 15 aus. Wenn ein Begrenzer mit
einer höheren Priorität als der Bezeichnungsbegrenzer ermittelt wird,
gibt der Begrenzerdetektor 14 ein Detektionssignal f an die
Steuerschaltung 15 und den Statuspuffer 21 aus. Die Steuerschaltung 15 gibt
ein Steuersignal c an den Zähler 22 über den Selektor 24 jedesmal
aus, wenn das Detektionssignal b vom Begrenzerdetektor 14 geliefert
wird. Der Zähler 22 wird durch einen Subtraktionszähler gebildet. Im
Zähler 22 kann ein beliebiger Wert im voraus eingestellt werden, und
der eingestellte Wert wird jedesmal um eins dekrementiert, wenn das
Steuersignal a oder c von der Steuerschaltung 15 geliefert wird.
Danach wird der Zählwert des Zählers 22 dem Nulldetektor 23 zugeführt.
Der Nulldetektor 23 ermittelt, ob der Wert "0" wird oder nicht. Wenn
der Nulldetektor 23 "0" ermittelt, werden der Steuerschaltung 15 und
dem
Statuspuffer 21 ein Nulldetektionssignal s zugeführt. Wenn die
Steuerschaltung 15 das Nulldetektionssignal s vom Nulldetektor 23
oder das Detektionssignal f vom Begrenzerdetektor 14 empfängt, hält
sie die Ausgabe eines zum Ausführen eines Befehls benutzten
Steuersignals an und gibt eine Endesignal 3 an den Mikroprozessor 4 aus, um
einen nächsten Befehl zu bestimmen, der aus dem Programmspeicher 3
auszulesen ist.
-
Begrenzer, die in der Ausführung zu verarbeiten sind, werden unten
beschrieben. Die Begrenzer stellen Grenzen von Daten im Datenspeicher
2 und ihre gewichteten Prioritäten zum Verarbeiten dar. Die folgenden
vier Typen von Begrenzern werden in dieser Ausführung benutzt:
-
: Spurende
-
( : Satzanfang
-
9N : Wortende (numerischer Wert)
-
9 : Wortende (Zeichen)
-
Jeder Begrenzer wird durch einen Hexadezimalcode bestehend aus einem
Byte dargestellt. Das Spurende, der Satzanfang, das Wortende für
einen numerischen Wert und das Wortende für ein Zeichen entsprechen
"FF", "FE", "FD" bzw. "00". Zusätzlich zu diesen festen Begrenzern
von vier Typen kann in der Ausführung ein beliebiger Begrenzer im
Begrenzereinstellregister 20 eingestellt werden. Daher werden fünf Typen
von Begrenzern einschließlich dieses beliebigen Begrenzers benutzt.
-
Den fünf Begrenzertypen werden die folgenden Prioritäten zugeteilt.
Die Prioritäteneins bis vier werden dem Spurendebegrenzer, dem
Satzanfangsbegrenzer, den zwei Typen von Wortendebegrenzern und dem im
Begrenzereinstellregister 20 eingestellten Begrenzer in der genannten
Reihenfolge als feste Prioritäten zugewiesen. Man beachte, daß der
Wortendebegrenzer für einen numerischen Wert und der
Wortendebegrenzer für ein Zeichen dieselbe Priorität besitzen.
-
Der durch den eingestellten Begrenzer in das Befehlsregister 11
gesetzte Code wird durch einen Zweibit-Binärcode dargestellt. "11",
"10", "01", und "00" stellen ein Spurende, einen Satzanfang, ein
Wortende (für einen numerischen Wert) bzw. ein Wortende (für ein Zeichen)
dar. Diese Codes entsprechen den Begrenzern "FF", "FE", "FD" und "00",
die durch Hexadezimalcodes dargestellt werden, die je aus einem Byte
bestehen, und stellen Grenzen von Daten im Datenspeicher dar.
-
Wie in Fig. 2 gezeigt, umfaßt der Begrenzerdetektor 14 vier
Koinzidenzschaltungen 14-1 bis 14-4, die Bezeichnungsbegrenzer vom
Befehlsregister 11 empfangen, und fünf Koinzidenzschaltungen 14-5 bis 14-9,
die aus dem Lesepuffer 16 gelesene Begrenzer empfangen. Die vier
Koinzidenzschaltungen 14-1 bis 14-4 empfangen die entsprechenden
festen Begrenzer "00" bis "11". Jeder feste Begrenzer wird durch einen
Binärcode bestehend aus zwei Bits dargestellt. Wenn jede der
Koinzidenzschaltungen 14-1 bis 14-4 eine Übereinstimmung zwischen einem der
festen Begrenzer und einem Bezeichnungsbegrenzer (ein bezeichneter
Code der Binärcodes "00", "01", "10" und "11") vom Befehlsregister 11
ermittelt, gibt sie eines der Koinzidenzsignal c1 bis c4 aus und
liefert es dem Komparator 14-10. In diesem Fall sind die
Koinzidenzschaltungen 14-1 und 14-2 ein verdrahtes ODER. Wenn ein beliebiger
Begrenzer im Begrenzereinstellregister 20 eingestellt wird, wird ein
vom Begrenzereinstellregister 20 ausgegebenes Einstellung-Vorhanden-
Signal c0 zusammen mit den Ausgängen der Koinzidenzschaltungen 14-1
bis 14-4 als aus vier Bits gebildete Daten B in den Komparator 14-10
eingegeben. Die Gewichte "1", "2", "4" und "8" werden den jeweiligen
Bitpositionen der Vierbit-Daten B in Übereinstimmung mit ihren
Prioritäten zugewiesen. Das Einstellung-Vorhanden-Signal c0, das Signal c1
oder c2, das Signal c3 und das Signal c4 entsprechen den Gewichten
"1", "2", "4" bzw. "8".
-
Ein durch einen Hexadezimalcode von einem Byte dargestellter
Koinzidenz-Erfassungscode wird dem anderen Anschluß jeder der füng
Koinzidenzschaltungen 14-5 bis 14-0 zugeführt, in die die aus dem
Lesepuffer 16 gelesenen Begrenzer eingegeben werden. Das heißt, ein im
Begrenzereinstellregister 20 eingestellter Begrenzercode wird in die
Koinzidenzschaltung 14-5 eingegeben, der Code "00", der ein Wortende
für ein Zeichen darstellt, wird in die Koinzidenzschaltung 14-16
eingegeben, der Code "FD", der ein Wortende für einen numerischen Wert
darstellt, wird in die Koinzidenzschaltung 14-7 engegeben, der Code
"FE", der einen Satzanfang darstellt, wird in die Koinzidenzschaltung
14-8 eingegeben, und der Code "FF", der ein Spurende darstellt, wird
in die Koinzidenzschaltung 14-9 eingegeben. Wenn die
Koinzidenzschaltungen 14-5 bis 14-9 eine Übereinstimmung zwischen den gelesenen
Begrenzern und den Koinzidenz-Erfassungscodes ermitteln, geben sie die
Koinzidenzsignale d0, d1, ... d4 an den Komparator 14-10 aus. In
diesem Fall sind die Koinzidenzschaltungen 14-6 und 14-7 ein verdrahtetes
ODER. Die Ausgänge der Koinzidenzschaltungen 14-5 bis 14-9 werden
daher dem Komparator 14-10 als Vierbit-Daten A zugeführt. Die Gewichte
"1", "2", "4" und "8" werden den jeweiligen Bitpositionen der
Vierbit-Daten A in Übereinstimmung mit ihren Prioritäten zugewiesen. Die
Koinzidenzsignale d0, d1 oder d2, d3 und d4 entsprechen den Gewichten
"1", "2", "4" bzw. "8".
-
Der Komparator 14-10 vergleicht die Daten A mit den Daten B. Wenn A
- B = 0, gibt der Komparator 14-10 des Detektionssignal b aus. Wenn A
- B > 0, gibt er das Detektionssignal f aus.
Operation I
-
Ein Fall, bei dem Daten variabler Länge, die eine willkürliche
Länge besitzen und im Datenspeicher 2 bei einer vorbestimmten
Adressenposition als ihre Startposition gespeichert sind, durch eine durch
einen Begrenzer definierte Einheit übertragen werden, wird unten
beschrieben. Diese Übertragung kann durch Bezeichnen eines Befehls
ausgeführt werden. Eine Übertragungsoperation durch diesen Befehl wird
im Folgenden beschrieben.
-
Eine große Zahl von Befehlen wird im Programmspeicher 3 gespeichert
und nacheinander durch den Mikroprozessor 4 ausgelesen, um in die
Operationsvorrichtung 1 gesetzt zu werden, um dadurch die
Operationsvorrichtung 1 zu betreiben. Jeder Befehl wird durch einen
Operationscode, eine Adressenaktualisierungsrichtung, einen
Bezeichnungsbegrenzer, den Anfangswert einer Leseadresse, den Anfangswert einer
Schreibadresse und dergleichen gebildet. Der Operationscode, die
Adressenaktualisierungsrichtung und der Bezeichnungsbegrenzer werden in das
Befehlsregister 11 gesetzt, während die Anfangswerte der betreffenden
Adressen in den Adressengenerator 13 gesetzt werden. Da bei dieser
Ausführung kein Zählwert im Zähler 22 eingestellt wird, werden der
Zähler 22 und der Nulldetektor 23 nicht betrieben, und der
Nulldetektor 23 gibt das Nulldetektionssignal s nicht aus.
-
Wie in Fig. 3 gezeigt, werden im Datenspeicher 2 gespeicherte Daten d
(durch je einen Hexadezimalcode von einem Byte dargestellt) durch
verschiedene Begrenzer (für ein Zeichenwortende, einen Satzanfang und
ein Spurende) in vorbestimmte Einheiten geteilt. In der folgenden
Beschreibung ist ein in Das Befehlsregister 11 gesetzter Operationscode
ein Übertragungsbefehl.
-
In diesem Fall werden Daten, die die aus dem Datenspeicher 2 durch
eine Leseadresse vom Adressengenerator 13 gelesen werden, in den
Lesepuffer 16 gesetzt. Dann wird vom Adressengenerator 13 eine
Schreibadresse ausgegeben, und die Daten im Lesespeicher 16 werden
ausgelesen und in einen bezeichneten Bereich des Datenspeichers 2
geschrieben. In diesem Fall werden die Daten im Lesepuffer 16 auch dem
Begrenzerdetektor 14 zugeführt. Wenn die Daten kein Begrenzer sind,
wird das Detektionssignal b oder f vom Begrenzerdetektor 14 nicht
ausgegeben. Die Steuerschaltung 15 gibt folglich ein Steuersignal aus, um
den Übertragungsbefehl bei jedem Ausführungszyklus auszuführen, und
aktualisiert jede Adresse im Adressengenerator 13 durch das
Steuersignal a, wodurch veranlaßt wird, daß die nächsten Daten im
Datenspeicher 2 in den Lesepuffer 16 gesetzt werden. Während ein aus dem
Datenspeicher 2 gelesener Begrenzer während der Ausführung einer solchen
Datenübertragung in den Lesepuffer 16 gesetzt wird, vergleicht der
Begrenzerdetektor 14 einen Bezeichnungsbegrenzer vom Befehlsregister
11 oder einen eingestellten Begrenzer vom Begrenzereinstellregister
20 mit dem in den Lesepuffer 16 gesetzten Begrenzer. Wenn der in den
Lesepuffer 16 gesetzte Begrenzer eine Priorität besitzt, die gleich
oder höher als die des Bezeichnungsbegrenzers oder des eingestellten
Begrenzers ist, wird das Detektionssignal f oder b ausgegeben.
-
Angenommen, das der Bezeichnungsbegrenzer im Befehlsregister der
Begrenzer "00" ist, der dem Zeichenwortendebegrenzer "9" entspricht,
und der gleiche Begrenzer "9" in den Lesepuffer 16 gesetzt ist. In
diesem Fall werden, da die Koinzidenzschaltungen 14-1 und 14-6 die
Koinzidenzsignale c1 bzw. d1 ausgeben, im Begrenzungsdetektor 14
beide Daten A und B "2". Als Folge gibt der Komparator 14-10 das
Detektionssignal b aus. Wenn das Detektionssignal b an die Steuerschaltung
15 geliefert wird, beendet sie die Ausführung des Übertragungsbefehls
und gibt das Endesignal e aus. Mit dieser Operation wird der nächste
Befehl in das Befehlsregister 11 und den Adressengenerator 13 gesetzt.
Wenn, wie oben beschrieben, ein Bezeichnungsbegrenzer ein
Zeichenwortende ist, wird die Ausführung des Übertragungsbefehls beendet, wenn
der Begrenzer zuerst aus dem Datenspeicher 2 gelasen und in den
Lesepuffer 16 gezetzt wird, wie in Fig. 3A gezeigt. Die Datenübertragung
wird daher in einer durch diesen Begrenzer definierten Einheit
durchgeführt. Wenn der Begrenzer "(" oder " " mit einer höheren Priorität
als der Begrenzer "9" in den Lesepuffer 16 gelesen wird, gibt der
Komparator
14-10 das Detektionssignal f aus, und die Aufführung des
Übertragungsbefehls wird beendet.
-
Wenn ein Bezeichnungsbegrenzer im Befehlsregister 11 der Begrenzer
"10" ist, der dem Satzanfangsbegrenzer "(" entspricht, geben die
Koinzidenzschaltungen 14-3 und 14-6 die Koinzidenzsignale c3 und d1 im
Begrenzungsdetektor 14 aus, wenn der Begrenzer " " für ein
Zeichenwortende aus dem Datenspeicher 2 gelesan wird. Als Folge werden
die Daten A und B "2" bzw. "4". Das heißt da der in den Lesepuffer
16 gesetzte Begrenzer eine niedrigere Priorität als der
Bezeichnungsbegrenzer besitzt, gibt der Komparator 14-10 weder das
Detektionssignal b noch f aus. Die Datenübertragungsverarbeitung wird folglich
sich wiederholend ausgeführt. Wenn der Begrenzer "(", der den ersten
Satzanfang darstellt, aus dem Datenspeicher 2 gelesen und in den
Lesepuffer 16 gesetzt wird, geben die Koinzidenzschaltungen 14-3 und
14-8 die Koinzidenzsignale c3 und d3 aus. Als Folge werden beide Daten
A und B "4", und der Komparator 14-10 gibt das Detektionssignal b aus.
Wenn ein Bezeichnungsbegrenzer ein Satzanfang ist, wird daher die
Ausführung des Übertragungsbefehls beendet, wenn ein Begrenzer, der
einen Satzanfang darstellt, zuerst aus dem Datenspeicher 2, wie in
Fig. 3B gezeigt, gelesen wird, so daß die Datenübertragung in einer
Einheit einer Datenlänge durchgeführt wird, die durch diesen
Begrenzer definiert wird. Wenn der Begrenzer " " mit einer höheren
Priorität als der Begrenzer "(" in den Lesepuffer 16 gelesen wird, wird
außerdem der Übertragungsbefehl beendet.
-
Ähnlich geben, wenn ein Bezeichnungsbegrenzer im Befehlsregister 11
der Begrenzer "11" ist, der dem Spurendebegrenzer " " entspricht,
die Konzidenzschaltungen 14-4 und 14-9 die Koinzidenzsignale c4 und
d4 im Begrenzerdetektor 14 aus. Als Folge werden beide Daten A und B
"8", und der Komparator 14 gibt das Detektionssignal b aus. Daher
wird, wie in Fig. 3C gezeigt, die Datenübertragung in einer Einheit
einer Länge durchgeführt, die durch den Spurendebegrenzer definiert
wird.
-
Wenn einer der vier Typen von Datenbegrenzern bezeichnet wird, um
einem Befehl im Befehlsregister 11 zu entsprechen, kann auf diese Weise
die Datenübertragung in einer Einheit einer willkürlichen Datenlänge
unter Verwendung eines Befehls, z.B. eines Übertragungsbefehls,
durchgeführt werden.
-
Wenn ein willkürlicher Begrenzer im Begrenzereinstellregister 20
unter Verwendung eines willkürlichen Codes eingestellt wird, kann die
Anzahl von Begrenzertypen einschließlich der festen Begrenzer auf fünf
erhöht werden. Da der eingestellte Begrenzer die niedrigste
Priorität besitzt, können außerden Daten, die durch einen Wortendebegrenzer
geteilt sind, weiter in eine Mehrzahl von Blöcken geteilt werden. Die
Datenübertragung kann somit in Einheiten von Blöcken durchgeführt
werden.
-
Da die Wortendebegrenzer in einen für einen numerischen Wert und einen
für ein Zeichen klassifiziert sind und ihnen dieselbe Priorität
zugewiesen ist, kann der Datentyp bestimmt werden, indem nur der Typ
eines Begrenzercodes bestimmt wird. Auch wenn Daten, die den
numerischen Wert und Zeichenbegrenzer umfassen, zu verarbeiten sind, können
die Daten, da dieselbe Priorität zugewiesen ist, außerdem als dieselbe
Verarbeitungseinheit verarbeitet werden.
-
Wenn ein Befehl, z.B. ein Operationsbefehl oder ein logischer Befehl,
zu verarbeiten ist, wird eine Operation durchgeführt, die auf
Operator- und Operandendaten, berüht, die bei aneinandergrenzenden
Adressen im Datenspeicher gespeichert sind. In diesem Fall wird die
Verarbeitung ebenfalls in Einheiten von Begrenzern in der gleichen Weise
wie bei der Datenübertragung durchgeführt.
-
Fig. 4 zeigt einen Aufbau eines Begrenzerdetektors 31 gemäß einer
anderen Ausführung. Gemäß diesem Begrenzerdetektor können vier Typen
von Begrenzern unter Verwendung von willkürlichen Codes eingestellt
werden, und Prioritäten können ihnen willkürlich zugewiesen werden.
Das heißt, die vier Typen von Begrenzern werden jeweils in den
Begrenzereinstellregistern 31-1 bis 31-4 eingestellt. Die eingestellten
Begrenzer werden den entsprechenden Koinzidenzschaltungen 31-5 bis
31-8 zugeführt. Wenn die Koinzidenzschaltungen 31-5 bis 31-8 eine
Übereinstimmung zwischen Begrenzern vom Lesepuffer 16 und den
eingestellten Begrenzern ermitteln, geben sie Koinzidenzsignale an den
Komparator 31-13 aus. Die Gewichte "1", "2", "4" und "8" werden den
betreffenden Bitpositionen von Vierbit-Daten A in Übereinstimmung mit
ihrenPrioritäten zugeteilt. Die Ausgänge der Koinzidenzschaltungen
31-5 bis 31-8 entsprechen jeweils "1" ... "8".
-
Die Bezeichnungsbegrenzer "00" bis "11" werden vom Befehlsregister 11
in Fig. 1 an die Koinzidenzschaltungen 31-9 bis 31-12 in der gleichen
Weise wie bei der ersten Ausführung beliefert. In diesem Fall werden
die Gewichte "1", "2", "4" und "8" jedoch den betreffenden
Bitpositionen der Vierbit-Daten B von den Koinzidenzschaltungen 31-9 bis
31-12 zugewiesen. Die Ausgänge der Koinzidenzschaltungen 31-9 bis
31-12 entsprechen jeweils "1" bis "8" und werden dem Komparator 31-13
zugeführt. Ähnliche der oben beschriebenen Ausführung vergleicht der
Komparator 31-13 die Daten A und B und gibt das Detektionssignal b
aus, wenn A - B = 0, und das Detektionssignal f, wenn A - B > 0.
-
Mit dieser Anordnung können vier Typen von Begrenzern unter Verwendung
von willkürlichen Codes eingestellt werden, und ihre Prioritäten
können willkürlich festgelegt werden.
-
Man beachte, daß derselbe Code für einen Bezeichnungsbegrenzer in
einem Befehl und einen Begrenzer in Daten benutzt werden kann oder nicht
benutzt werden kann. Wenn derselbe code nicht benutzt wird, wird der
Code des Bezeichnungsbegrenzers dazu gebracht, dem Code des bei den
Daten benutzten Begrenzers im voraus zu entsprechen, so daß die
Detektion von beiden Begrenzern auf der Basis der Übereinstimmung zwischen
ihnen durchgeführt wird, wenn der Begrenzerdetektor 14 eine Detektion
durchführt.
Operation II
-
Eine Operation, bei der Daten variabler Länge durch eine
willkürliche Anzahl von Einheiten, die je durch einen Begrenzer definiert
werden, unter Verwendung eines Befehls übertragen werden, wird im
Folgenden beschrieben.
-
Der Inhalt eines Befehls umfaßt in diesem Fall die Anzahl von
Einheiten der Daten variabler Länge zusätzlich zum Inhalt des Befehls in
der oben beschriebenen Operation I. Die Anzahl von Einheiten wird im
Zähler 22 eingestellt, wenn der Mikroprozessor 4 einen Befehl setzt.
-
Angenommen, daß ein Operationscode im Befehlsregister 11 ein
Übertragungsbefehl zum Bezeichnen der Anzahl von Einheiten ist, ein
Bezeichnungsbegrenzer ein Begrenzer ist, der das Zeichenwortende "9"
darstellt, und derselbe Begrenzer in den Lesepuffer 16 gelesen wird. In
diesem Fall gibt der Begrenzerdetektor 14 das Detektionssignal b an
die Steuerschaltung 15 aus. Da die Steuerschaltung 15 das
Dekrementiersignal c ausgibt, wird der Zähler 22 um eine dekrementiert und
wird
"2". In diesem Fall gibt daher der Nulldetektor 23 das
Nulldetektionssignal s nicht aus. Man beachte, daß der Selektor 24 das
Dekrementiersignal c ausgibt, wenn der Operationscode ein
Übertragungsbefehl zum Bezeichnen der Anzahl von Einheiten ist. Die
Steuerschaltung 15 gibt ein Steuersignal nochmals aus, um zu bewirken, daß der
Übertragungsbefehl nochmals ausgeführt wird. Wenn ein zweiter
Begrenzer (Zeichenwortendebegrenzer) aus dem Datenspeicher 2 gelesen wird,
gibt der Begrenzerdetektor 14 das Detektionssignalb nochmals aus.
Als Folge wird der Wert des Zählers 22 "1". Da in diesem Fall der
Nulldetektor 23 auch kein Nulldetektionssignal ausgibt, wird der
Übertragungsbefehl nochmals ausgeführt. Wenn ein dritter Begrenzer
(Zeichenwortendebegrenzer) in der gleichen Weise aus dem Datenspeicher 2
gelesen wird, wird der Wert des Zählers 22 "0". Als Folge beendet die
Steuerschaltung 15 den momentan ausgeführten Übertragungsbefehl als
Reaktion auf das Nulldetektionssignal s vom Nulldetektor 23 und gibt
das Endesignal e aus. Mit dieser Operation wird der nächste aus dem
Programmspeicher 3 gelesene Befehl in das Befehlsregister 11, den
Adressengenerator 13 und den Zähler 22 gesetzt. Wie oben beschrieben,
wird, wenn der Bezeichnungsbegrenzer ein Zeichenwortendebegrenzer ist,
wenn der Begrenzer aus dem Datenspeicher 2 dreimal gelesen wird, die
Ausführung des Übertragungsbefehls beendet. Die Datenübertragung wird
daher in einer Einheit einer Datenlänge durchgeführt, die durch den
dritten Begrenzer definiert wird.
-
Wenn der Bezeichnungsbegrenzer im Befehlsregister 11 ein
Satzanfangsbegrenzer ist, wird, auch wenn ein Zeichenwortendebegrenzer aus dem
Datenspeicher 2 gelesen wird, da die Priorität das in den Lesepuffer
16 gesetzten Begrenzers niedriger ist als die des
Bezeichnungsbegrenzers, keines der Detektionssignale b und f vom Begrenzerdetektor 14
ausgebeben, und der Anfangswert "3" des Zählers 22 wird unverändert
gelassen. Danach gibt der Begrenzerdetektor 14 das Detektionssignal b
aus, und der Wert des Zählers 22 wird jedesmal um eins dekrementiert,
wenn der Satzanfangsbegrenzer aus dem Datenspeicher 2 gelesen wird.
Wenn der Satzanfangsbegrenzer dreimal aus dem Datenspeicher 2
gelesen wird, wird der Wert des Zählers 22 "0". Als Folge wird die
Ausführung des Übertragungsbefehls zu dieser Zeit beendet, und die
Datenübertragung wird in einer Einheit einer Datenlänge durchgeführt,
die durch den dritten Begrenzer, wie in Fig. 5B gezeigt, definiert
wird.
-
Im diesem Fall wird, wenn ein Begrenzer, der einen Satzanfang
darstellt und eine höhere Priorität hat als der dritte Begrenzer, der
einen Satzanfang darstellt, aus dem Datenspeicher 2 gelesen wird, wie
in Fig. 5C gezeigt, das Detektionssignal f vom Begrenzerdetektor 14
an die Steuerschaltung 15 und den Statuspuffer 21 ausgegeben. Als
Folge wird zu dieser Zeit die Ausführung des Übertragungsbefehls
ungeachtet des Wertes des Zählers 22 beendet. Die Datenübertragung wird
daher in einer Einheit einer Datenlänge durchgeführt, die durch
diesen Satzanfangsbegrenzer definiert wird.
-
Man beachte, daß der Statuspuffer 21 als Daten einen Zustand
speichert, der darstellt, ob die Ausführung eines Befehls bei Detektion
von "0" durch den Nulldetektor 23 oder durch das Detektionssignal f
vom Begrenzerdetektor 14 bei Detektion eines Begrenzers mit einer
höheren Priorität beendet wird. Diese Daten werden über den Datenbus DB
durch einen Zugriff vom Mikroprozessor 4 ausgelesen.
-
Wenn einer der vier Typen von Begrenzern in Übereinstimmung mit einem
Befehl im Befehlsregister 11 bezeichnet wird und ein willkürlicher
Wert in den Zähler 22 gesetzt wird, kann die Datenübertragung in einer
Einheit einer willkürlichen Datenlänge unter Verwendung eines Befehls
durchgeführt werden.
-
Wenn ein willkürlicher Begrenzer unter Verwendung eines willkürlichen
Codes im Begrenzerregister 20 eingesetellt wird, kann die Anzahl von
Begrenzertypen einschließlich der festen Begrenzer auf fünf Typen
erhöht werden. Da der eingestellte Begrenzer die niedrigste Priorität
besitzt, können außerdem Daten, die durch Wortendebegrenzer geteilt
sind, weiter in eine Mehrzahl von Blöcken geteilt werden, und die
Datenübertragung kann in Einheit von Blöcken durchgeführt werden.
-
Gemäß dieser Ausführung kann, da ein Begrenzer, der das Ende der
Ausführung eines Befehls darstellt, in dem Befehl angeordnet ist und die
Ausführung des Befehls wiederholt wird, bis der Begrenzer in
ausgelesenen Daten ermittelt wird, eine Übertragung oder eine arithmetische
Operation von Daten mit einer durch einen Begrenzer definierten
willkürlichen Länge durch einen Befehl durchgeführt werden. Die
Verarbeitungsgeschwindigkeit von Daten kann daher erhöht werden, und die
Erstellung eines Programms zur Datenverarbeitung kann erleichtert
werden. Da außerdem eine Mehrzahl von Blöcken, die durch identische
Begrenzer definiert werden, verarbeitet werden kann, bis der Wert einer
Zählereinrichtung auf einen spezifischen Wert gesetzt wird, wird die
Verarbeitungsgeschwindigkeit erhöht, und der Blockbereich von Daten
kann willkürlich bestimmt werden.
Operation III
-
Eine Operation, bei der, wenn Daten variabler Länge in einer durch
einer Begrenzer definierten Einheit übertragen werden, der
Maximalwert der Länge von zu übertragenden Daten bezeichnet wird, wird
beschreiben.
-
In diesem Fall umfaßt der Inhalt eines Befehls den Maximalwert der
Länge der Daten variabler Länge zusätzlich zu dem Inhalt des Befehls
in Operation I. Dieser Maximalwert wird durch eine Anzahl von Bytes
dargestellt und wird in den Zähler 22 gesetzt, wenn der
Mikroprozessor 4 einen Befehl setzt.
-
Man beachte, daß der Maximalwert so bestimmt wird, daß nachteilige
Wirkungen infolge eines Programm- oder Hardwarefehlers verhindert
werden, z.B. ein Übertragungsbefehl oder dergleichen unerwünscht
fortgesetzt wird und Daten im Datenspeicher 2 zerstört werden. Beim
Verarbeiten eines Übertragungsbefehls wird der Maximalwert der durch
einen Begrenzer definierten Anzahl von Bytes bezeichnet.
-
Angenommen, daß ein Operationscode im Befehlsregister 11 ein
Übertragungsbefehl ist, der die Maximalwertbezeichnung enthält, und "20" im
Zähler 22 als der Maximalwert gesetzt ist.
-
Die Erstbyte-Daten werden aus dem Datenspeicher 2 durch eine
Leseadresse vom Adressengenerator 13 ausgelesen und in den Lesepuffer 16
gesetzt. Dann wird eine Schreibadresse vom Adressengenerator 13
ausgegeben, und die Daten im Lesepuffer 16 werden ausgelesen und in
einen bezeichneten Adressenbereich im Datenspeicher 2 geschrieben.
Obwohl in diesem Fall der Wert des Zählers 22 auf "19" dekrementiert
wird, gibt der Nulldetektor 23 das Detektionssignal s nicht aus. Man
beachte, daß der Selektor 24 das Steuersignal a ausgibt, wenn der
Operationscode ein Übertragungsbefehl ist, der die
Maximalwertbezeichnung enthält. Da die in den Lesepuffer 16 gesetzten Erstbyte-Daten
kein Begrenzer sind, gibt der Begrenzerdetektor 14 weder das
Koinzidenzsignal b noch f aus. Die Steuerschaltung 15 gibt ein Steuersignal
nochmals aus, um zu veranlassen, daß der Übertragungsbefehl
ausgeführt
wird, vorausgesetzt, daß weder das Detektionssignal s noch das
Koinzidenzsignal b oder f ausgegeben wird. Jede Adresse des
Adressengenerators 13 wird somit durch das Steuersignal a aktualisiert, und
die nächsten Daten im Datenspeicher 2 werden in den Lesepuffer 16
gesetzt.
-
Angenommen, daß, wenn ein Vierbyte-Begrenzer in dieser Weise
ausgelesen und in den Lesepuffer 16 gesetzt wird, ein
Bezeichnungsbegrenzer im Befehlsregister ein Begrenzer ist, der einen Satzanfang
darstellt. In diesem Fall wird, auch wenn ein Wortendebegrenzer in den
Lesepuffer 16 gesetzt wird, keines der Koinzidenzsignale b und f
ausgegeben, und außerdem wird das Nulldetektionssignal s nicht
ausgegeben, weil der Wert des Zählers 22 zu dieser Zeit "16" ist.
-
Wenn Daten des 14-ten Bytes ausgelesen und in den Lesepuffer 16
gesetzt werden, wird da diese Daten ein Begrenzer sind, der einen
Satzanfang darstellt und mit dem Bezeichnungsbegrenzer übereinstimmt, das
Koinzidenzdetektionssignal b ausgegeben. Als Reaktion auf das Signal
b beendet die Steuerschaltung 15 die Ausführung des
Übertragungsbefehls und gibt das Endesignal e aus. Wenn der Bezeichnungsbegrenzer
ein Begrenzer ist, der wie in diesem Fall einen Satzanfang darstellt,
wird, wenn dieser Begrenzer ausgelesen wird, bevor der Zähler 22 "0"
wird, d.h., bevor Daten von 20 Bytes ausgelesen sind, die Ausführung
des Übertragungsbefehls beendet.
-
Man beachte, daß der Statuspuffer 21 als Daten einen Zustand
speichert, der darstellt, ob die Verarbeitung eines Befehls durch das
Nulldetektionssignal s vom Nulldetektor 23 oder das Koinzidenzsignal
f vom Begrenzerdetektor 14 beendet wird. Diese Daten werden über den
Datenbus DB durch einen Zugriff vom Mikroprozessor 4 ausgelesen.
-
Wie in Fig. 6A gezeigt, kann deshalb die Datenübertragung in einer
Einheit einer Datenlänge von 14 Bytes durchgeführt werden, die durch
den Begrenzer definiert wird, der einen Satzanfang darstellt.
-
Im Gegensatz dazu wird, wenn ein Begrenzer, der mit dem
Bezeichnungsbegrenzer übereinstimmt, nicht in der Lesepuffer 16 gesetzt wird,
nachdem Daten von 20 Bytes ausgelesen sind, wie in Fig. 6B gezeigt,
die Datenübertragung in diesem Moment beendet, weil der Wert des
Zählers 22 "0" wird und das Nulldetektionssignal s ausgegeben wird. In
diesem Fall wird daher die Datenübertragung in einer Einheit einer
Datenlänge
von 20 Bytes durchgeführt.
-
Wenn ein Begrenzer im Begrenzereinstellregister 20 unter Verwendung
eines willkürlichen Codes eingestellt wird, gibt der
Begrenzerdetektor 14, wenn er eine Übereinstimmung zwischen dem eingestellten
Begrenzer und einem in den Lesepuffer 16 gesetzten Begrenzer ermittelt,
das Koinzidenzdetektionssignal b oder f aus. Die Datenübertragung
wird daher zu dieser Zeit beendet. Diese Operation ist die gleiche
wie die des oben beschriebenen Bezeichnungsbegrenzers.
-
Außerdem wird, wenn der Operationscode ein Operationsbefehl oder ein
logischer Befehl ist, eine Operation basierend aus Operator- und
Operandendaten durchgeführt, die bei fortlaufenden Adressen im
Datenspeicher 2 gespeichert sind. Auch in diesem Fall wird die
Verarbeitung in Einheiten von Begrenzern in derselben Weise wie bei der
Datenübertragung durchgeführt.
-
Man beachte, daß derselbe Code für einen Bezeichnungsbegrenzer in
einem Befehl und einen Begrenzer in Daten benutzt werden kann oder nicht
benutzt werden kann. Wenn derselbe Code nicht benutzt wird, wird der
Code des Bezeichnungsbegrenzers dazu gebracht, im voraus dem Code des
bei den Daten benutzten Begrenzers zu entsprechen, so daß die
Detektion von beiden Begrenzern auf der Übereinstimmung dazwischen
durchgeführt wird, wenn der Begrenzerdetektor 14 die Detektion durchführt.
-
Gemäß dieser Ausführung kann, da ein Begrenzer, der das Ende der
Ausführung eines Befehls bezeichnet, in dem Befehl angeordnet ist und die
Ausführung des Befehls wiederholt wird, bis der Begrenzer in
ausgelesenen Daten ermittelt wird, eine Übertragung oder eine arithmetische
Operation von Daten mit einer durch einen Begrenzer definierten
willkürlichen Länge durch einen Befehl durchgeführt werden. Die
Verarbeitungsgeschwindigkeit von Daten kann daher erhöht werden, und die
Erstellung eines Programms zur Datenverarbeitung kann erleichtert
werden. Da außerdem die Ausführung einer Operation durch den Befehl
beendet wird, wenn der Wert einer Zählereinrichtung einen bestimmten
Wert erreicht, kann eine fehlerhafte Operation infolge eines
Programm- oder Hardwarefehlers zuverlässig verhindert werden.