-
Gebiet der Erfindung
-
Die Erfindung betrifft eine Betriebsschaltung (Prozessor
zur Signalverarbeitung) für
eine ADPCM-Vorrichtung (ADPCM = adaptive differentielle Pulscodemodulation),
insbesondere eine Betriebsschaltung in einem Adresseneinheitsbereich,
der Adresseneinstellungen in einigen Taktzyklen zum Auslesen von
Befehlen aus einem Befehls-ROM (Festwertspeicher) ausführt, in
dem Befehle gespeichert sind.
-
Beschreibung des Stands
der Technik
-
Bei der Digitalkommunikation werden
Tondaten usw. vor der Übertragung
komprimiert, und komprimierte Daten werden empfangsseitig gedehnt,
um den Kommunikationswirkungsgrad zu verbessern. Ein ADPCM-System
gemäß der Definition
in G. 726 der UIT-Empfehlung ist ein Beispiel der Komprimierung
von Tondaten. Die vorliegende Erfindung betrifft eine Betriebsschaltung
für die
Signalverarbeitung in einem ADPCM-System.
-
Diese Betriebsschaltung weist eine
ausschließlich
für einen
Adresseneinheitsbereich ausgebildete Hardware auf, die Adresseneinstellungen zum
Auslesen von Befehlen aus einem Befehls-ROM ausführt, in dem Befehle gespeichert
sind. Aufgrund der oben genannten Ausbildung ist die Betriebsschaltung
imstande, eine Operation zum Lesen von Befehlen in einigen Taktzyklen
mit Hochgeschwindigkeit und geringem Energieverbrauch auszuführen.
-
12 zeigt
eine übliche
Konstruktion einen Betriebsschaltung, die für eine ADPCM-Vorrichtung verwendet
wird. In 12 sind verschiedene
Arten von Befehlscodes in einem Befehls-ROM 28 gespeichert.
Wenn ein Wert eines Programmzählers 16,
der eine Ausgangsinformation von einer Adresseneinheit 29 ist,
in den Befehls-ROM 28 als Adressdaten eingegeben wird,
gibt dieser Befehls-ROM 28 Befehlscodes, die in der entsprechenden
Adresse des Befehls-ROM 28 gespeichert sind, an eine Signalleitung 30 ab.
-
Ein Befehls-Decodieren 31 decodiert
die aus dem Befehl-ROM 28 ausgelesenen Befehlscodes und
gibt sie an eine Signalleitung 11 ab, um die Adresseneinheit 29,
eine Registerdatei 32 oder eine ALU (arithmetisch-logische
Einheit) 33 in Abhängigkeit
von der Art von Befehlscodes zu steuern.
-
Gemäß einem Ausgangssignal von
dem Befehls-Decodieren 31 weist die Registerdatei 32 eine Vielzahl
von Registern auf (beispielsweise X-Register, Y-Register, Z-Register),
um ein verarbeitetes Ergebnis auf einer Ausgangssignalleitung 3 der
ALU 33 zu speichern. Die Registerdatei 32 gibt
zwei entsprechende Daten an eine Signalleitung 34 und 35 ab.
-
Die ALU 33 hat zwei Eingangsdaten 34 und 35 und
führt die
Verarbeitung in Abhängigkeit
von decodierten Befehlscodes auf der Signalleitung 11 aus, die
von dem Befehls-Decodieren 31 abgegeben werden, und gibt
dann die Ergebnisse an die Signalleitung 3 ab. Die Adresseneinheit 29 gibt
einen Wert des Programmzählers
ab, der sowohl auf einem Ausgangssignal der ALU 33, das
auf der Signalleitung 3 abgegeben wird, als auch auf einem
Wert von Befehlscodes auf der Signalleitung 11 basiert.
-
13 zeigt
eine übliche,
herkömmliche Konstruktion
der Adresseneinheit 29, die in 12 gezeigt ist. 14 zeigt ein Format von herkömmlichen
Befehlscodes. In 14 ist
jedes Befehlsformat von Befehlscodes gezeigt, die einen bedingten Abzweig
bzw. unmittelbares Laden ausführen.
-
In 14 repräsentieren
Bits 23, 22 Arten von Befehlen (Typ). Wenn Bits 23, 22 "00" sind, repräsentieren
sie einen bedingten Abzweigbefehl, während sie im Fall von "01" einen unmittelbaren
Ladebefehl repräsentieren.
Wenn Bits 23, 22 "00" sind, d. h. bei einem
bedingten Abzweigbefehl, repräsentieren
Bits 21, 20 einen bedingten Abzweigcode (br_code)
wie etwa "call" (Ruf), "jmp" (Sprung) und "return" (zurück), und
Bits 19-16 repräsentieren
eine Bedingung (condition), wie etwa "zro" (null), "one" (eins), "neg", "pos" und "uncondition" (unbedingt).
-
Bits 10~0 repräsentieren
die Sprungzieladresse (jmp address), wenn Bits 19-16 "01" sind, d. h. bei
einem bedingten Sprungbefehl oder bei einem unbedingten Befehl.
Wenn Bits 23, 22 "01" sind, d. h. bei
einem unmittelbaren Ladebefehl, repräsentieren Bits 21-6 unmittelbare
Daten (imm-data), und Bits 5-0 repräsentieren eine Zieladresse
(dst), zu der unmittelbare Daten übertragen werden.
-
In 13 speichert
ein Ergebnisregister 1 Eingangsdaten auf der Signalleitung 3,
die von der ALU 33 eingegeben werden, in Abhängigkeit
von dem Taktsignal CLKB auf einer Signalleitung 2, und gibt
gleichzeitig einen gespeicherten Wert an eine Signalleitung 4 zur
FLAG-Beurteilung ab. Eine FLAG-Beurteilungsschaltung 20 führt die
FLAG-Beurteilung aus, und zwar in Abhängigkeit von Befehlsarten (Typen),
die in Ergebnisdaten auf der Signalleitung 4 enthalten
sind, und von Befehlscodes auf der Signalleitung 11 und
von dem bedingten Abzweigcode (br_code) und der Bedingung (condition),
und gibt dann ein Beurteilungsergebnis an eine Signalleitung 22 ab.
-
Wenn beispielsweise eine Befehlsart
(Typ) "00 (conditional
branch)" (00 bedingter
Abzweig)) ist und ein Ergebnis der ALU mit einer Bedingung der Bedingung
(condition) übereinstimmt,
gibt diese Schaltung 20 ein Befehlssignal an die Signalleitung 22 ab,
so daß eine
Auswähleinrichtung 23 die jmp-Adresse
ihrer Ausgangsleitung 25 zur Ausführung des von dem bedingten
Abzweigcode (br_code) angegebenen bedingten Abzweigs anzeigt.
-
Ein Zwischenspeicher 15 speichert
einen aktuellen Wert des Programmzählers (PC) in Abhängigkeit
von dem Taktsignal CLKB auf der Signalleitung 2 und gibt
gleichzeitig den gespeicherten Wert an eine Signalleitung 17 ab.
Ein Addieren 18 addiert Daten auf einer Signalleitung 10 und
Daten auf der Signalleitung 17 und gibt ein Ergebnis an
eine Signalleitung 19 ab. Der Auswähleinrichtung 23 gibt
entweder Daten auf der Signalleitung 19 oder die Sprungzieladresse
(jmp-address), die in einem Befehlscode auf der Signalleitung 11 enthalten
ist, an die Signalleitung 25 ab, und zwar in Abhängigkeit
von dem FLAG-Beurteilungsergebnis eines Ausgangssignals der FLAG-Beurteilungsschaltung 20.
-
Der Programmzähler 26 speichert
Daten auf der Signalleitung 25 und gibt gleichzeitig in
Abhängigkeit
von dem Taktsignal CLKC auf einer Signalleitung 27 einen
gespeicherten Wert an eine Signalleitung 16 ab.
-
Nachstehend wird eine Operation der
in 12 gezeigten Adresseneinheit 29 unter
Bezugnahme auf 13 im
einzelnen erläutert. 6 zeigt eine zeitliche Beziehung
zwischen einem Maschinenzyklus und Taktsignalen (CKLB und CKLC). Wenn
das Taktsignal CLKB auf der Signalleitung 2 zu "H" wird, speichert das Ergebnisregister 1 ein
verarbeitetes Ergebnis auf der Signalleitung 3, das von
der ALU abgegeben wird, und gibt gleichzeitig den gespeicherten
Wert an die Signalleitung 4 ab.
-
Die FLAG-Beurteilungsschaltung 20 beurteilt,
ob eine von Bits 19~16 repräsentierte
Bedingung (condition) mit den Ergebnisdaten auf der Signalleitung 4 übereinstimmt,
wenn der bedingte Abzweigcode (br_code) in einem bedingten Abzweigbefehl,
der in 14 gezeigt ist, "01" in dem Befehlscode
auf der Signalleitung 11 ist, d. h. bei dem bedingten Sprungbefehl.
Ein Programmzähler 26 speichert
einen aktuellen Programmzählerwert
und gibt gleichzeitig den gespeicherten Wert an die Signalleitung 16 ab.
-
Der Addieren 18 addiert
ein Ausgangssignal von dem Zwischenspeicher 15, der einen
Wert des Programmzählers
(PC) in jedem Maschinenzyklus speichert, und einen feststehenden
Wert "1" und gibt das Ergebnis
an die Signalleitung 19 ab. Die Auswähleinrichtung 23 wählt entweder
eines von Daten auf der Signalleitung 19, nämlich einen
Wert des Programmzählers
(PC) des Maschinenzyklus plus 1, oder eine Sprungzieladresse (jmp
address) auf der Signalleitung 11 in Abhängigkeit
von dem FLAG-Beurteilungsergebnis auf der Signalleitung 22 aus.
-
Eine Sprungzieladresse (jmp address)
wird nur dann gewählt,
wenn Ergebnisdaten auf der Signalleitung 4 mit einer Bedingung
(condition) übereinstimmen.
Anderenfalls werden immer die Daten auf der Signalleitung 19,
d. h. der Programmzählerwert plus
1, ausgewählt
und an die Signalleitung 25 abgegeben.
-
Wie 6 zeigt,
gibt der Programmzähler 26,
der den Programmzählerwert
speichert dann, wenn das Taktsignal CLKB auf der Signalleitung 2 zu "H" wird, einen in Abhängigkeit von dem Taktsignal CLKC
auf der Signalleitung 27 gespeicherten Wert, nämlich einen
revidierten Programmzählerwert,
an die Signalleitung 16 ab.
-
Bei einer herkömmlichen Schaltung sind drei Vorgänge erforderlich,
um eine Zahlenwertbeurteilung auszuführen, nämlich das Laden eines Schwellenwerts,
die Subtraktion des Schwellenwerts von einem eingegebenen Zahlenwert,
und der bedingte Abzweig auf der Basis des Subtraktionsergebnisses. Da
jeder Vorgang einen Maschinenzyklus benötigt, sind drei Maschinenzyklen
erforderlich, um gerade eine Zahlenwertbeurteilung auszuführen.
-
15 zeigt
Schritte zur Beurteilung, in welche Wertstufe ein eingegebener Zahlenwert
X fällt. 4 zeigt die Beziehung zwischen
dem eingegebenen Zahlenwert X (Ausgang des Ergebnisregisters) und
dem Beurteilungsergebnis n. Die 16A und 16B zeigen Befehlscodes,
die in dem Befehls-ROM 28 gespeichert sind. Auf diese Befehlscodes
wird ordnungsgemäß Bezug
genommen, um verschiedene Vorgänge
auszuführen,
um eine Wertstufe zu beurteilen, in die ein eingegebener Zahlenwert
fällt.
-
In den 16A und 16B bezieht sich der Begriff "Adresse" auf eine Adresse
des Befehls-ROM 28, die einem Programmzählerwert entspricht. Jeder Großbuchstabe
X, Y und Z repräsentiert
ein Register, oder genauer, X bezeichnet ein Register zum Speichern
eines eingegebenen Zahlenwerts, und Y und Z bezeichnen Register
für Berechnungen.
Ein aus dem Befehls-ROM 28 ausgelesener Befehlscode wird
an die Signalleitung 11 abgegeben.
-
Unter Bezugnahme auf 15 wird nachstehend ein herkömmlicher
Vorgang zur Wertstufenbeurteilung kurz erläutert. Zunächst wird beurteilt, ob ein
eingegebener Zahlenwert X gleich oder größer als 128 (X ≥ 128) ist.
Wenn X gleich oder größer als 128
ist, wird beurteilt, ob X gleich oder größer als 2048 (X ≥ 2048) ist.
Wenn X gleich oder größer als 2048
ist, wird weiter beurteilt, ob X gleich oder größer als 8192 (X ≥ 8192) ist.
Wenn X gleich oder größer als
8192 ist, wird weiter beurteilt, ob X gleich oder größer als
16384 (X ≥ 16384)
ist.
-
Wenn X gleich oder größer als
16384 ist, wird schließlich
beurteilt, daß X
zu einer Wertstufe gehört,
in der X gleich oder größer als
16384 ist. Auf diese Weise werden die obigen Vorgänge viele
Male in Abhängigkeit
davon wiederholt, wie groß X
ist, und dann wird die endgültige
Wertstufe bestimmt.
-
Beispielsweise wird, wenn dieser
Zahlenwert X gleich 2048 ist, eine Vielzahl von Schritten ausgeführt, die
nachstehend erläutert
werden, um zu beurteilen, in welche Wertstufe ein eingegebener Zahlenwert
X fällt.
Dieser Vorgang wird durch sequentielles Ausführen von Befehlscodes in dem
Befehls-ROM 28 ausgeführt,
die Adressen entsprechen, die von der Adresseneinheit 29 abgegeben
wurden.
-
- Adresse : Befehlscode
0000000H : Y durch 128 ersetzen
0000001N
: Berechnen von 2048-128 und anschließendes Ersetzen von Z durch
das Ergebnis 1920
0000010H : Sprung zu 0101000H, weil Z>0
0101000H : Y
durch 2048 ersetzen
0101001H : Berechnen von 2048-2048 und
anschließendes
Ersetzen von Z durch das Ergebnis 0
0101010H : Sprung zu 0111100H,
weil Z>0
0111100H
: Y durch 8192 ersetzen
0111101H : Berechnen von 2048-8192
und anschließendes
Ersetzen von Z durch -6146
0111110N : kein Sprung, weil Z kleiner
als Null ist
0111111N : Y durch 4096 ersetzen
1000000N
: Berechnen von 2048-4096 und anschließendes Ersetzen von Z durch
-2048
1000001N : kein Sprung, weil Z kleiner als Null ist
1000010N
: Ausführen
des Vorgangs im Fall von 4095>X>2048
0000011N
: unbedingter Sprung zur nächsten
Befehlsadresse 1001100H
-
Im Fall der herkömmlichen Wertstufenbeurteilung,
die ohne Rücksicht
auf einen eingegebenen Zahlenwert X die in den 16A und 16B gezeigten Befehlscodes
verwendet, sind insgesamt zwölf
Maschinenzyklen erforderlich, d. h. 4malige Berechungen für das Laden
eines Schwellenwerts, 4malige Berechungen für die Subtraktion eines Schwellenwerts
von einem eingegebenen Zahlenwert und 4malige Berechnungen für die Berechnung
des bedingten Abzweigs durch Beurteilung des Subtraktionsergebnisses.
-
Ferner benötigt ein Vorgang nach dem bedingten
Abzweig bzw. ein Sprungschritt zu dem nächsten Befehl einen Maschinenzyklus,
und deshalb wird die Gesamtzahl der erforderlichen Maschinenzyklen 14.
-
Unter Bezugnahme auf die 12 und 13 wird eine Operation für den Fall
erläutert,
daß der
eingegebene Zahlenwert 2048 ist, wobei jeweils eine verschiedene
Verarbeitung in Abhängigkeit
von Wertstufen ausgeführt
wird, die als Ergebnis des Wertstufenbeurteilungsvorgangs nach den 16A und 16B bestimmt wurden. Es wird angenommen,
daß der eingegebene
Zahlenwert 2048 bereits in das X-Register der Registerdatei 32 geladen
worden ist.
-
In dem ersten Maschinenzyklus wird
ein unmittelbarer Wert-Befehlscode "Y durch 128 ersetzen", der in der Startadresse "0000000" des Befehls-ROM 28 gespeichert
ist, an die Signalleitung 30 abgegeben. Der Befehls-Decodieren 31 decodiert den
Befehlscode und gibt ihn an die Signalleitung 11 ab. Ein
Schwellenwertpegel 128, der in Bits 21~6 in dem unmittelbaren
Wert-Befehlcode auf der Signalleitung 11 gespeichert ist,
wird in das Y-Register der Registerdatei 32 heruntergeladen,
was durch Bits 5~0 repräsentiert
ist. Die Registerdatei 32 gibt den eingegebenen Zahlenwert
X (=2048) an die Signalleitung 34 und den Schwellenwert
Y (=128) an eine andere Signalleitung 35 ab.
-
In einem zweiten Maschinenzyklus
gibt die Adresseneinheit 29 einen Programmzählwert,
der nur um eins inkrementiert ist, nämlich "0000001", an den Befehls-ROM 28 ab.
Der Befehls-ROM 28 erkennt diesen Wert als Adresse und
führt den
Befehlscode zur Subtraktion aus, der in 16A gezeigt ist, um 2048-128 zu berechnen.
Der Befehls-ROM 28 gibt dann das Subtraktionsergebnis 1920 an
die Signalleitung 11 ab, und gleichzeitig wird das Z-Register in
der Registerdatei 32 durch dieses gleiche Subtraktionsergebnis 1920 ersetzt.
-
In einem dritten Maschinenzyklus
springt, da Z größer als
Null ist, ein Zeiger zu der Adresse "0101000N" in der Adresseneinheit 29,
wie in 16B gezeigt ist.
In einem vierten Maschinenzyklus wird der Befehlscode "Y durch 2048" ersetzen, der in
der Adresse "0101001N" des Befehls-ROM 28 gespeichert
ist, ausgeführt.
-
In einem fünften Maschinenzyklus wird
der Befehlscode "Z
durch X-Y ersetzen",
der in "0101001N" des Befehls-ROM 28 gespeichert
ist, ausgeführt,
wobei 2048-2048 berechnet und Z durch das Ergebnis "0" ersetzt wird.
-
In einem sechsten Maschinenzyklus
wird der Befehlscode in der Adresse "0101010N" des Befehls-ROM 28 ausgeführt. Da
Z größer als
Null ist, springt in diesem Fall der Zeiger zu der Adresse "0111100N" in der Adresseneinheit 29.
-
In einem siebten Maschinenzyklus
wird durch den Befehlscode in der Adresse "0111100N" des Befehls-ROM 28Y durch
8192 ersetzt. In einem achten Maschinenzyklus wird durch den Befehlscode in
der Adresse "0111101N" des Befehls-ROM 28 der wert
2048-8192 berechnet, und Z wird durch das Subtraktionsergebnis (-6144)
ersetzt.
-
In einem neunten Maschinenzyklus
wird der Befehlscode in der Adresse "0111110H" des Befehls-ROM 28 ausgeführt, wobei,
weil Z kleiner als Null ist, der Zeiger keinen weiteren Sprung ausführt und
zu einem Befehlscode in der nächsten
Adresse "0111111N" geht.
-
In einem zehnten Maschinenzyklus
wird durch den Befehlscode in der Adresse "0111111H" des Befehls-ROM 28Y durch
4096 ersetzt. In einem elften Maschinen zyklus wird durch den Befehlscode der
Adresse "1000000H" des Befehls-ROM 28 der Wert
2048-4096 berechnet und Z wird durch das Ergebnis (-2048) ersetzt.
-
In einem zwölften Maschinenzyklus wird
der Befehlscode in der Adresse "1000001N" des Befehls-ROM 28 ausgeführt und,
weil Z kleiner als Null ist, führt
der Zeiger keinen weiteren Sprung aus und geht zu einem Befehlscode
in der nächsten
Adresse "1000010N".
-
In einem dreizehnten Maschinenzyklus
wird durch den Befehlscode in der Adresse "1000010H" des Befehls-ROM 28 eine Wertstufe
von X als 4095>X>2048 bestimmt. In einem
vierzehnten Maschinenzyklus wird durch den Befehlscode der Adresse "1000011N" des Befehls-ROM 28 ein
unbedingter Sprung zu der nächsten
Befehlsadresse "1001100H" ausgeführt.
-
Wie oben erläutert, ergibt sich der Schluß, daß bei dieser
herkömmlichen
Wertstufenbeurteilung eine Wertstufe, die einem eingegebenen Zahlenwert entspricht,
im vierzehnten Maschinenzyklen bestimmt wird.
-
17 zeigt
eine Vielzahl von Verarbeitungsschritten zum Detektieren, in welchen
Wert der Wertbeurteilung gemäß 9 ein eingegebener Zahlenwert
fällt.
Ihre konkreten Befehlscodes sind in den 18A und 188 gezeigt.
-
Unter Bezugnahme auf 17 wird eine herkömmliche Verarbeitung der Wertbeurteilung
nachstehend kurz erläutert.
Zunächst
wird beurteilt, ob ein eingegebener Zahlenwert X gleich oder größer als
8 ist. Wenn X>8, wird
weiter beurteilt, ob X gleich oder größer als 12 ist. Wenn X>12, wird weiter beurteilt,
ob X gleich oder größer als
14 ist.
-
Wenn X>14, wird weiter beurteilt, ob X gleich oder
größer als
15 ist. Wenn X>15,
wird schließlich bestimmt,
daß X
einen Wert von "15" hat, d. h. (X=15).
Auf diese Weise werden die obigen Vorgänge viele Male in Abhängigkeit
davon wiederholt, wie groß X
ist, und dann wird die endgültige
Wertstufe bestimmt.
-
Wenn ein oben erwähnter eingegebener Zahlenwert
größer als
10 ist, wird die Wertbeurteilung gemäß den 18A und 18B ausgeführt. Befehlscodes
werden in diesem Fall durch die nächste Sequenz ausgeführt.
-
- Adresse : Befehlscode
0000000H : Y durch 8 ersetzen
0000001H
: Z durch X-Y ersetzen
0101010H : Sprung zu 0101000H, wenn
Z>0
0101000H
: Y durch 12 ersetzen
0101001N : Z durch X-Y ersetzen
0101010N
: Sprung zu 0111100N, wenn Z>0
0101011H
: Y durch 10 ersetzen
0101100N : Z durch X-Y ersetzen
0101101H
: Sprung zu 0110101N, wenn Z>0
0110101H
: Y durch 11 ersetzen
0110110H : Z durch X-Y ersetzen
0110111N
: Sprung zu 0111010N, wenn Z>0
0111000N
: verarbeiten, wenn X=10 ist
0111001N : unbedingter Sprung
zu 1001100H
-
Unter Bezugnahme auf in den 12 und 13 gezeigte Schaltungen wird nachstehend
eine Operation bei einem eingegebenen Zahlenwert von 10 konkret
erläutert.
Es wird angenommen, daß ein
eingegebener Zahlenwert 10 bereits in das X-Register in der
Registerdatei 32 geladen worden ist.
-
In einem ersten Maschinenzyklus wird
ein unmittelbarer Wert-Befehlscode "Y durch 8 ersetzen", der in der Startadresse "0000000" des Befehls-ROM 28 gespeichert
ist, an die Signalleitung 30 abgegeben. Der Befehls-Decodieren 31 decodiert den
Befehlscode zur Abgabe an die Signalleitung 11. Ein Schwellenwert 8,
der in Bits 21~6 des unmittelbaren Wert-Befehlscodes auf
der Signalleitung 11 gespeichert ist, wird in das Y-Register
der Registerdatei 32 heruntergeladen, was durch Bits 5~0 repräsentiert ist.
-
In einem zweiten Maschinenzyklus
gibt die Adresseneinheit 29 einen Programmzählerwert,
der nur um Eins inkrementiert ist, nämlich "0000001", an den Befehls-ROM 28 ab.
Der Befehls-ROM 28 erkennt diesen Wert als Adresse und
gibt einen Befehlscode zur Subtraktion gemäß 18A an den Befehls-Decodieren 31 ab.
-
Der Befehls-Decodieren 31 decodiert
den Befehlscode zur Abgabe an die Signalleitung 11. Durch
den Befehlscode auf der Signalleitung 11 wird der Befehlscode "Z durch X-Y ersetzen" in der Adresse "0000001H" des Befehls-ROM 28 in
der Alu 33 ausgeführt,
wobei das Ergebnis "10-8=2" in dem Z-Register
gespeichert wird.
-
In einem dritten Maschinenzyklus
wird der Befehlscode "Sprung
zu 0101000H, wenn Z gleich oder größer als Null ist" in der Adresse 0101010N des
Befehls-ROM 28 ausgeführt.
Da Z=2, ist in diesem Fall diese Bedingung erfüllt, um den Sprung zu der Adresse "0101010H" zu bewirken. In
einem vierten Maschinenzyklus wird der Befehlscode "Y durch 12 ersetzen" in der Adresse 0101000N
des Befehls-ROM 28 ausgeführt, und das Ergebnis "12" wird in dem Y-Register
gespeichert.
-
In einem fünften Maschinenzyklus wird
der Befehlscode "Z
durch X-Y ersetzen" in
der Adresse 0101001N des Befehls-ROM 28 ausgeführt, und
das Subtraktionsergebnis Z=10-12 = 2 wird in dem Z-Register gespeichert.
In einem sechsten Maschinenzyklus wird der Befehlscode "Sprung zu 0111100N, wenn
Z gleich oder größer als
Null ist" in der
Adresse 0101010H des Befehls-ROM 28 ausgeführt. In
diesem Fall ist die Bedingung nicht erfüllt, weil Z = 2. Der Vorgang
geht also zur nächsten
Adresse "0101011H".
-
In einem siebten Maschinenzyklus
wird der Befehlscode "Y
durch 10 ersetzen" in
der Adresse 0101011N des Befehls-ROM 28 ausgeführt, um
10 in das Y-Register zu setzen. In einem achten Maschinenzyklus
wird der Befehlscode "Z
durch X-Y ersetzen" in
der Adresse "0101100H" des Befehls-ROM 28 ausgeführt, um
Z=10-10=0 in dem Z-Register
zu speichern.
-
In einem neunten Maschinenzyklus
wird der Befehlscode "Sprung
zu Adresse 0110101N, wenn Z gleich oder größer als Null ist" in der Adresse "0101101N" des Befehls-ROM 28 ausgeführt. In
diesem Fall wird die Bedingung erfüllt, weil Z=O, und die Adresse "0110101N" des Befehls-ROM 28 wird
zu dem Befehls-ROM 28 übertragen.
-
In einem zehnten Maschinenzyklus
wird der Befehlscode "Y
durch 11 ersetzen" in
der Adresse "0110101H" des Befehls-ROM 28 ausgeführt, um
11 in dem Y-Register zu speichern. In einem elften Maschinenzyklus
wird der Befehlscode "Z
durch X-Y ersetzen" in
der Adresse "0110110N" des Befehls-ROM 28 ausgeführt, um
Z=10-11=1 in dem Z-Register zu speichern.
-
In einem elften Maschinenzyklus wird
der Befehlscode "Sprung
zu 0111010H, wenn Z gleich oder größer als Null ist" in der Adresse 0110111H
des Befehls-ROM 28 ausgeführt. Da Z=-1 die Bedingung nicht
erfüllt,
geht in diesem Fall der Zeiger zu der nächsten Adresse "0111000N".
-
In einem dreizehnten Maschinenzyklus
werden in diesem Stadium der Befehlscode "Verarbeiten, wenn X=10 " in der Adresse "0111000N" des Befehls-ROM 28 und
ein Wert endgültig
bestimmt. In einem vierzehnten Maschinenzyklus wird der Befehlscode "unbedingter Sprung
zu 1001100H" in
der Adresse 0111001N des Befehls-ROM 28 ausgeführt, wobei
ein ganzer Vorgang abgeschlossen wird.
-
Wie oben beschrieben, ergibt sich
der Schluß,
daß bei
dieser herkömmlichen
Wertbeurteilungsschaltung 14 Maschinenzyklen erforderlich sind,
um einen Wert eines eingegebenen Zahlenwerts zu bestimmen.
-
Bei einer herkömmlichen Technologie erfolgt die
Bestimmung bei der Beurteilung der Wertstufe oder des Werts durch
Subtraktion eines Schwellenwerts von einem eingegebenen Zahlenwert.
Deshalb werden viele Subtraktions- und Beurteilungsschritte benötigt, und
somit ist die Verarbeitungszeit unvermeidlich lang.
-
Ein weiteres Problem ist, daß viele
Verarbeitungszyklen den Energieverbrauch erhöhen usw. Das ADPCM-System gemäß der Definition
durch die UIT-Empfehlung G.726 erfordert viele Verarbeitungsschritte
für die
Wertstufenbeurteilung oder die Wertbeurteilung.
-
Die US-A-S 161 247 beschreibt
eine Betriebsschaltung, die folgendes aufweist: einen Befehls-ROM
zum Speichern des Inhalts eines Programms; einen Programmzähler zum
Benennen einer Adresse für
den Befehls-ROM; einen Befehls-Decodieren zum Decodieren des Inhalts
des von dem Programmzähler
benannten Befehls-ROM; eine arithmetisch-logische Einheit zum Berechnen
des Inhalts einer Registerdatei in Abhängigkeit von einem decodierten
Ergebnis von dem Befehls-Decodieren; eine Adresseneinheit zum Berechnen
eines nächsten
Adressenwerts in dem Befehls-ROM in Abhängigkeit von den berechneten
Ergebnissen von der arithmetischlogischen Einheit; ein Ergebnisregister zum
Speichern und Abgeben eines Ausgangsergebnisses der arithmetisch-logischen
Einheit; eine Wertstufenbeurteilungseinrichtung zum Beurteilen,
in welcher Wertstufe ein Ausgangswert des Ergebnisregisters enthalten
ist; eine Zwischenspeichereinrichtung zum Speichern eines Werts
des Programmzählers; eine
Addiereinrichtung zum Berechnen eines nächsten Werts des Programmzählers durch
Inkrementieren eines aktuellen Werts des Programmzählers; und eine
Einrichtung zum Bestimmen einer nächsten Befehlsadresse in dem
Befehls-ROM, wobei ein bedingter Abzweig zu einer Befehlsadresse
vorgenommen wird, die einer Wertstufe entspricht, die man durch das
berechnete Ergebnis von der arithmetischlogischen Einheit erhält.
-
Deshalb ist es eine Aufgabe der vorliegenden
Erfindung, eine Betriebsschaltung und ein Betriebsverfahren zum
Ausführen
der Verarbeitung in weniger Schritten mit Hochgeschwindigkeit und
geringem Energieverbrauch anzugeben.
-
Die Aufgabe wird durch eine Betriebsschaltung
gemäß Anspruch
1 und ein Betriebsverfahren gemäß Anspruch
5 gelöst.
Bevorzugte Ausführungsformen
sind in den Unteransprüchen
angegeben.
-
Gemäß einem Aspekt der Erfindung
weist eine Betriebsschaltung, die folgendes aufweist: einen Befehls-ROM
(Festwertspeicher) zum Speichern des Inhalts eines Programms, einen
Programmzähler zum
Benennen einer Adresse für
den Befehls-ROM, einen Befehls-Decodieren zum Decodieren des Inhalts
des von dem Programmzähler
benannten Befehls-ROM, eine arithmetisch-logische Einheit (ALU) zum
Berechnen des Inhalts einer Registerdatei in Abhängigkeit von einem decodierten
Ergebnis von dem Befehls-Decodieren, und eine Adresseneinheit zum Berechnen
eines nächsten
Adressenwerts in dem Befehls-ROM in Abhängigkeit von den berechneten Ergebnissen
von der ALU, wobei die Betriebsschaltung in Abhängigkeit von den Befehlscodes
in dem Befehls-ROM nacheinander Berechnungen ausführt, folgendes
auf: ein Ergebnisregister zum Speichern und Abgeben eines Ausgangsergebnisses
der ALU; eine Wertstufenbeurteilungseinrichtung zum Beurteilen,
in welcher Wertstufe ein Ausgangswert des Ergebnisregisters enthalten
ist; eine Zwischenspeichereinrichtung zum Speichern eines aktuellen
Werts des Programmzählers;
eine Addiereinrichtung zum Berechnen eines nächsten Werts des Programmzählers durch
Addieren eines Wertstufenbeurteilungsergebnisses von der Wertstufenbeurteilungseinrichtung
sowie eines in der Zwischenspeichereinrichtung gespeicherten aktuellen
Werts des Programmzählers;
und eine erste Auswähleinrichtung
zum Auswählen
eines addierten Ergebnisses und zum Bestimmen einer nächsten Befehlsadresse
in dem Befehls-ROM, wobei ein bedingter Abzweig zu einer Befehlsadresse
vorgenommen wird, die einer Wertstufe entspricht, die man durch
das berechnete Ergebnis der ALU erhält.
-
Gemäß einem anderen Aspekt der
Erfindung weist eine Betriebsschaltung, die folgendes aufweist: einen
Befehls-ROM (Festwertspeicher) zum Speichern des Inhalts eines Programms,
einen Programmzähler
zum Benennen einer Adresse für
den Befehls-ROM, einen Befehls-Decodieren zum Decodieren des Inhalts
des von dem Programmzähler
benannten Befehls-ROM, eine arithmetisch-logische Einheit (ALU)
zum Berechnen des Inhalts einer Registerdatei in Abhängigkeit
von einem decodierten Ergebnis von dem Befehls-Decodieren, und eine Adresseneinheit
zum Berechnen eines nächsten Adressenwerts
in dem Befehls-ROM in Abhängigkeit von
den berechneten Ergebnissen von der ALU, wobei die Betriebsschaltung
in Abhängigkeit
von den Befehlscodes in einem Befehls-ROM nacheinander Berechnungen
ausführt,
folgendes auf: ein Ergebnisregister zum Speichern und Abgeben eines
Ausgangsergebnisses der ALU; eine Wertbeurteilungseinrichtung zum
Inkrementieren eines Ausgangswerts des Ergebnisregisters um Eins;
eine Zwischenspeichereinrichtung zum Speichern eines aktuellen Werts
des Programmzählers;
eine Addiereinrichtung zum Berechnen eines nächsten Werts des Programmzählers durch
Addieren eines Wertbeurteilungsergebnisses von der Wertbeurteilungseinrichtung
sowie eines in der Zwischenspeichereinrichtung gespeicherten aktuellen
Werts des Programmzählers;
und eine erste Auswähleinrichtung
zum Auswählen
eines addierten Ergebnisses und zum Bestimmen einer nächsten Befehlsadresse
in dem Befehls-ROM, wobei ein bedingter Abzweig zu einer Befehlsadresse
vorgenommen wird, die einem Wert entspricht, den man durch das berechnete
Ergebnis der ALU erhält.
-
Gemäß einem weiteren Aspekt der
Erfindung weist eine Betriebsschaltung ferner folgendes auf: eine
FLAG-Beurteilungsschaltung zum Decodieren von Befehlsarten (Typen)
von einem Befehls-Decodieren, einem bedingten Abzweigcode (br code) und
einer Bedingung (condition) in Abhängigkeit von einem Ausgangssignal
von dem Ergebnisregister und zum Abgeben eines Ergebnisses an die
ersten Auswähleinrichtung.
-
Gemäß einem weiteren Aspekt der
Erfindung weist eine Betriebsschaltung ferner folgendes auf: eine
zweite Auswähleinrichtung
zum Auswählen eines
feststehenden Werts "1", eines Ausgangssignals
von dem Decodieren oder eines Werts einer Adressenverschiebung (disp)
in dem Befehls-Decodieren in Abhängigkeit
von in dem Ausgangssignal von dem Befehls-Decodieren enthaltenen
Befehlsarten (Typen), einem bedingten Abzweigcode (br_code) und
einer Bedingung (condition).
-
Gemäß einem weiteren Aspekt der
Erfindung weist eine Betriebsschaltung ferner folgendes auf: eine
Einrichtung zum Benennen einer Verschiebung von dem aktuellen Programmzählwert zu
einem nächsten
Programmzählwert
und zum anschließenden
Zulassen, daß sich
der Programmzählerwert gleichzeitig
mit dem Ausführen
der Berechnung um einen Verschiebungswert verschiebt, zusätzlich zu normalen
Operationsbefehlen als Befehlscode an einer Zieladresse, wobei der
bedingte Abzweig in Abhängigkeit
von der Wertstufenbeurteilung oder Wertbeurteilung vorgenommen wird
und wobei die Betriebsschaltung einen Abzweigvorgang vornimmt, nachdem
die ALU die Wertstufenbeurteilung oder die Wertbeurteilung ausgeführt hat.
-
Gemäß einem weiteren Aspekt der
Erfindung weist ein Betriebsverfahren zum sequentiellen Ausführen von
Berechnungen in Abhängigkeit
von Befehlscodes in einem Befehls-ROM unter Verwendung einer Betriebsschaltung,
die folgendes aufweist: einen Befehls-ROM (Festwertspeicher) zum Speichern
des Inhalts eines Programms, einen Programmzähler zum Benennen der Adresse
für den
Befehls-ROM, einen Befehls-Decodieren zum Decodieren des Inhalts
des von dem Programmzähler
benannten Befehls-ROM, eine arithmetisch-logische Einheit (ALU)
zum Berechnen des Inhalts einer Registerdatei in Abhängigkeit
von einem decodierten Ergebnis von dem Befehls-Decodieren, und eine Adresseneinheit
zum Berechnen eines nächsten Adressenwerts
in dem Befehls-ROM in Abhängigkeit von
den berechneten Ergebnissen von der ALU, die folgenden Schritte
auf: Speichern und Abgeben eines Ausgangsergebnisses der ALU; Beurteilen,
in welcher Wertstufe der Ausgangswert enthalten ist; Speichern eines
aktuellen Werts des Programmzählers;
Berechnen eines nächsten
Werts des Programmzählers
durch Addieren eines Wertstufenbeurteilungsergebnisses sowie eines
aktuellen Werts des Programmzählers;
und Auswählen
eines addierten Ergebnisses zum Bestimmen einer nächsten Befehlsadresse
in dem Befehls-ROM, wobei ein bedingter Abzweig zu einer Befehlsadresse
vorgenommen wird, die einem Wert entspricht, den man aus dem berechneten
Ergebnis von der ALU erhält.
-
Gemäß einem weiteren Aspekt der
Erfindung weist ein Betriebsverfahren zum sequentiellen Ausführen von
Berechnungen in Abhängigkeit
von Befehlscodes in einem Befehls-ROM unter Verwendung einer Betriebsschaltung,
die folgendes aufweist: einen Befehls-ROM (Festwertspeicher) zum Speichern
des Inhalts eines Programms, einen Programmzähler zum Benennen einer Adresse
für den Befehls-ROM,
einen Befehls-Decodieren zum Decodieren des Inhalts des von dem
Programmzähler
benannten Befehls-ROM, eine arithmetisch-logische Einheit (ALU)
zum Berechnen des Inhalts einer Registerdatei in Abhängigkeit
von einem decodierten Ergebnis von dem Befehls-Decodieren, und eine Adresseneinheit
zum Berechnen eines nächsten Adressenwerts
in dem Befehls-ROM in Abhängigkeit von
den berechneten Ergebnissen von der ALU die folgenden Schritte auf:
Speichern und Abgeben eines Ausgangs ergebnisses der ALU; Inkrementieren eines
Ausgangswerts des Ergebnisregisters um Eins; Speichern eines aktuellen
Werts des Programmzählers;
Berechnen eines nächsten
Werts des Programmzählers
durch Addieren des inkrementierten Ergebnisses sowie des aktuellen
Werts des Programmzählers;
und Auswählen
eines addierten Ergebnisses zum Bestimmen einer nächsten Befehlsadresse
in dem Befehls-ROM, wobei ein bedingter Abzweig zu einer Befehlsadresse
vorgenommen wird, die einem Wert entspricht, den man aus dem berechneten
Ergebnis von der ALU erhält.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 zeigt
einen Aufbau einer Adresseneinheit.
-
2 zeigt
einen Aufbau einer Adresseneinheit einer Ausführungsform der vorliegenden
Erfindung.
-
3 zeigt
ein Format eines Befehlscodes, der bei der vorliegenden Erfindung
verwendet wird.
-
4 zeigt
einen Beurteilungsbereich im Fall einer Wertstufenbeurteilung.
-
5 zeigt
eine Wertstufenbeurteilungsschaltung, die bei einer Ausführungsform
der vorliegenden Erfindung verwendet wird.
-
6 zeigt
einen Maschinenzyklus und eine Taktsteuerung.
-
7 zeigt
eine Übereinstimmung
zwischen dem Wertstufenbeurteilungsbereich und einem Ergebnis der
Wertstufenbeurteilung.
-
8 zeigt
kurz eine Operation einer Wertstufenbeurteilungsschaltung.
-
9 zeigt
eine Übereinstimmung
zwischen einem Wertbeurteilungswert gemäß der vorliegenden Erfindung
und einem Ergebnis der Wertbeurteilung.
-
10 zeigt
kurz eine Operation der vorliegenden Erfindung.
-
11 zeigt
kurz eine Operation der vorliegenden Erfindung.
-
12 zeigt
kurz eine Operation eines Hauptbereichs einer ADPCM-Vorrichtung,
in der die vorliegende Erfindung verwendet wird.
-
13 zeigt
einen Aufbau einer herkömmlichen
Adresseneinheit.
-
14 zeigt
ein herkömmliches
Befehlsformat.
-
15 zeigt
Schritte einer herkömmlichen Wertstufenbeurteilung.
-
16A zeigt
Schritte zum Ausführen
einer herkömmlichen
Wertstufenbeurteilung, die in dem Befehls-ROM 28 gespeichert
sind (Teil 1).
-
16B zeigt
Schritte zum Ausführen
einer herkömmlichen
Wertstufenbeurteilung, die in dem Befehls-ROM 28 gespeichert
sind (Teil 2).
-
17 zeigt
Schritte einer herkömmliche Wertstufenbeurteilung.
-
18A zeigt
Schritte zum Ausführen
einer herkömmlichen
Wertbeurteilung, die in dem Befehls-ROM 28 gespeichert
sind (Teil 1).
-
18B zeigt
Schritte zum Ausführen
einer herkömmlichen
Wertbeurteilung, die in dem Befehls-ROM 28 gespeichert
sind (Teil 2).
-
1 ist
ein Blockschaltbild, das die Ausführung einer Wertstufenbeurteilung
zeigt. Dieses Diagramm zeigt eine Adresseneinheit 29 in 12 der vorliegenden Erfindung.
Die Systemkonfiguration selbst gemäß 12 ist gleich wie beim Stand der Technik.
Die vorliegende Erfindung hat ein spezielles Merkmal in der Hardwarekonstruktion
der Adresseneinheit 29, die dafür einen bedingten Abzweig in
weniger Maschinenzyklen in der Adresseneinheit 29 vornimmt.
-
Zunächst wird erläutert, wie
ein bedingter Abzweig in Abhängigkeit
von der Wertstufenbeurteilung vorgenommen wird. Ein Format von Befehlscodes
auf der Signalleitung 11 von 1 und 12 wird unter Bezugnahme
auf 3 erläutert. In 3 repräsentieren Bits 28 und 27 Befehlsarten.
Wenn Bits 28 und 27 "00" sind, bezeichnen sie einen bedingten
Abzweigbefehl, während
sie im Fall von "01" einen unmittelbaren
Ladebefehl bezeichnen, Bits 26 und 25 repräsentieren
bedingte Abzweigcodes (br_code). Der Wert "00" entspricht "call" (Ruf), "01" entspricht "jmp" (Sprung), "10" entspricht "return" (zurück) und "11" entspricht "sw", was "Schalten" bedeutet. Bits 24~21
repräsentieren
Bedingungen.
-
Der Wert "0000" entspricht "zro" (null), "0001" entspricht "one" (eins), "0010" entspricht "neg", "0011" entspricht "pos", "0100" entspricht "mag", "0101" entspricht "result" (Ergebnis) und "0110" entspricht "uncondition" (unbedingt). Bits 10~0 repräsentieren
Sprungzieladressen (jmp address), wenn ein Sprungbefehl ausgeführt wird. Bits
20~11 können
einen beliebigen Wert haben.
-
Wenn beispielsweise Bits 28, 27 (Typ) "00" und Bits 26, 25 (bedingter
Abzweigcode (br_code)) "11" (sw) und Bits 24~21 "0100" sind, repräsentiert dies
einen bedingten Abzweig "mag" entsprechend einer
Wertstufenbeurteilung. Wenn Bits 28, 27 "00", Bits 26, 25"11" und Bits 24~21 "0101" sind, repräsentiert
dies einen bedingten Abzweig entsprechend der Wertstufenbeurteilung,
nämlich 'result'.
-
Im Fall eines bedingten Abzweigs
entsprechend der Wertstufenbeurteilung, nämlich des "SW-Befehls", wird die nächste Adresse durch "present address" + "condition" (aktuelle Adresse
+ Bedingung) bestimmt. Es ist also nicht erforderlich, eine absolute
Adresse eines Sprungziels zu benennen. Deshalb kann eine Sprungzieladresse
für Bits 10~0 irgendwelche
beliebigen Werte sein.
-
In 1 speichert
ein Ergebnisregister 1 ein von der ALU 33 empfangenes
verarbeitetes Ergebnis in Abhängigkeit
von einem Taktsignal CLKB auf der Signalleitung 2 und gibt
dann einen gespeicherten Wert t an die Signalleitung 4 zur
FLAG-Beurteilung ab. Dieses Register 1 gibt ferner von
Werten, die zur Wertstufenbeurteilung gespeichert sind, nur einen unmittelbaren
Wert an die Signalleitung 5 ab.
-
Eine Wertstufenbeurteilungsschaltung 7 beurteilt,
wo in der Wertstufe von Beurteilungsbereichen gemäß 4 Eingangsdaten X enthalten
sind und gibt ein Beurteilungsergebnis an den Decodieren 40 ab.
Der Decodieren 40 gemäß 5 gibt das Beurteilungsergebnis über eine
Signalleitung 8 an eine Auswähleinrichtung 9 ab.
-
Die Auswähleinrichtung 9 wählt entweder
eines von Eingangsdaten 8 (Wertstufenbeurteilungsergebnis),
einem feststehenden Wert "1" auf einer Signalleitung
10 zum Inkrementieren eines Werts des Programmzählers um "1" oder
einer Adressenverschiebung (disp) auf einer Signalleitung 12 in
Abhängigkeit
von Befehlsarten (Typ), dem bedingten Abzweigcode (br_code) und
Bedingungen (condition) auf einer Signalleitung 11 aus
und gibt dann ein Ergebnis an eine Signalleitung 14 ab.
-
Der Addieren 18 addiert
einen Programmzähler
PC, der ein Ausgangssignal von dem Zwischenspeicher 15 ist,
und ein Ausgangsergebnis von der Auswähleinrichtung 9. Erläuterungen
der Bezugszeichen 15~27 entfallen hier, da sie denen von 13 entsprechen. Ein Beispiel
dieser Wertstufenbeurteilungsschaltung ist in 5 gezeigt.
-
Unter Bezugnahme auf 1 wird eine Operation erläutert, und
zwar, wie der bedingte Abzweig in Abhängigkeit von einer Wertstufenbeurteilung
effektiv und mit Hochgeschwindigkeit vorgenommen wird. In 3 wird angenommen, daß die Befehlscodes
auf der Signalleitung 11 Bits 28, 27 (Typ),
Bits 26, 25 (br_code) und Bits 24~21 (condition)
in einem bedingten Abzweigbefehl in Abhängigkeit von der Wertstufenbeurteilung
aufweisen, und diese Bits sind "00
(conditional branch)" (00
(bedingter Abzweig)), "11
(sw)" bzw. "0100(mag)".
-
Wenn, wie 6 zeigt, das Taktsignal CLKB auf der
Signalleitung 2 zu "N" wird, speichert
das Ergebnisregister 1 ein Verarbeitungsergebnis X der ALU 33 in 12 und gibt dann von gespeicherten Werten
nur ein berechnetes Ergebnis (mit Ausnahme eines Übertragbits
von der ALU 33 und eines Übertragbits usw.) an eine Signalleitung 5 für die Wertstufenbeurteilung
ab.
-
Eine Wertstufenbeurteilungsschaltung 7 gibt das
Wertstufenbeurteilungsergebnis an den Decodieren 40 in
Abhängigkeit
von Eingangsdaten (X) auf der Signalleitung 5 auf eine
in 7 gezeigte Weise ab.
Dieser Decodieren 40 gibt ein decodiertes Ergebnis an die
Signalleitung 8 ab.
-
Die Auswähleinrichtung 9 wählt Eingangsdaten
auf der Signalleitung 8 aus, die ein Ergebnis der Wertstufenbeurteilung
sind, und gibt sie an eine Signalleitung 14 nur dann ab,
wenn Bits 28, 27 "00", Bits 26, 25 "11" und Bits 24~21 "0100" in einem Befehlscode
auf der Signalleitung 11 sind, d. h. wenn der bedingte
Abzweigbefehl in Abhängigkeit
von der Wertstufenbeurteilung ausgeführt wird.
-
Dagegen speichert der Zwischenspeicher 15 einen
aktuellen Wert des Programmzählers
auf der Signalleitung 16 und gibt den gespeicherten Wert
an die Signalleitung 17 ab. Der Addieren 18 addiert
einen Ausgangswert von dem Zwischenspeicher 15 (Programmzählerwert)
und ein Wertstufenbeurteilungsergebnis auf der Signalleitung 14 für jeden
Maschinenzyklus und gibt das Ergebnis an die Signalleitung 19 ab.
-
Die Auswähleinrichtung 23 wählt Daten
auf der Signalleitung 19 und einen Befehlscode (jmp address)
auf der Signalleitung 11 aus, um sie an die Signalleitung 25 abzugeben.
In anderen Worten, die Auswähleinrichtung 23 gibt
an die Signalleitung 25 ab: "Programmzählerwert" + "ein
Wertstufenbeurteilungsergebnis".
-
Wenn das Taktsignal CLKB auf der
Signalleitung 2 in 6 zu "L" wird, ist die Operation gleich derjenigen
des Stands der Technik. Das heißt,
der Programmzähler 26,
der den Programmzählerwert speichert,
gibt den gespeicherten Wert, d. h. einen aktualisierten Programmzählerwert,
in Abhängigkeit von
dem Taktsignal CLKC auf der Signalleitung 27 an die Signalleitung 16 ab.
-
Wie oben beschrieben, führt die
Wertstufenbeurteilungsschaltung 7 die Wertstufenbeurteilung für eingegebene
Zahlenwerte aus und addiert einen Programmzählerwert und ein Wertstufenbeurteilungsergebnis,
wie in 8 gezeigt ist,
und nimmt einen bedingten Abzweig in dem Befehls-ROM 28 in Abhängigkeit
von einem Zählwert
des addierten Ergebnisses vor. Dieser Vorgang wird nachstehend im einzelnen
erläutert.
Da ein Programmzähler
PC an einer Position X=X ist, wird zunächst ein Ausgang von der ALU 33 zu
X.
-
Dann wird der Programmzähler PC
um Eins für
einen üblichen
Rechenvorgang der ALU inkrementiert, um SW(mag) zu zeigen. Da dabei
der SW-Befehl unter Verwendung des vorhergehenden ALU-Rechenergebnisses
ausgeführt
wird, wird dann, wenn ein Wertstufenbeurteilungsergebnis von X gleich
n ist, der nächste
Wert des Programmzählers PC
zu dem aktuellen "PC-Wert" + "n". 8 zeigt eine
Operation im Fall von n=7, und ein Programmzähler geht weiter zum Ablauf 7.
-
Diese Konfiguration nimmt also einen
bedingten Abzweig unter Nutzung der Wertstufenbeurteilung in einem
Maschinenzyklus vor, ohne daß wie bei
dem Stand der Technik drei Vorgänge
erforderlich sind, nämlich
das Laden des Schwellenwerts, die Subtraktion des Schwellenwerts
von eingegebenen Zahlenwerten, und der bedingte Abzweig in Abhängigkeit
von der Beurteilung des Subtraktionsergebnisses.
-
Dabei bedeutet ein Befehl "X=X", daß der ALU-Befehl
im Durchgangszustand abgegeben wird, d. h., die ALU liest X aus
der Registerdatei aus und gibt X so ab, wie es ist, und die Registerdatei
hält X erneut.
Anders ausgedrückt,
ein Ergebnis des X-Registers wird wieder zu X. Der Befehl "SW(mag)" ist ein bedingter
Abzweigbefehl, der eine Abweichung des aktuellen Programmzählwerts
des Programmzählers
um das "vorhergehende
berechnete Ergebnis der ALU" + "1" bewirkt.
-
2 ist
ein Blockschaltbild, das eine Ausführungsform eines bedingten
Abzweigs entsprechend der Wertbeurteilung der Erfindung zeigt. Ein Format
von Befehlscodes auf der Signalleitung 11 von 2 und 12 gleicht demjenigen der oben beschriebenen
Konfiguration, wie in 3 für den Fall
gezeigt ist, daß der
bedingte Abzweig in Abhängigkeit
von der Wertbeurteilung vorgenommen wird.
-
Unter Bezugnahme auf 2 wird eine Operation erläutert, und
zwar wie der bedingte Abzweig in Abhängigkeit von der Wertbeurteilung
effektiv und mit Hochgeschwindigkeit vorgenommen wird. Dabei wird
angenommen, daß Bits 28, 27 (Typ) "00 (conditional branch)", Bits 26, 25 (br_code) "11 (SW)" und Bits 24~21 "0101 (result)" sind. Da eine Sprungzieladresse
bei einem bedingten Abzweigbefehl in Abhängigkeit von der Wertbeurteilung
nicht erforderlich ist, kann die Sprungzieladresse von Bis 10~0 irgendwelche
beliebigen Werte sein.
-
Wenn, wie 6 zeigt, das Taktsignal CLKB auf der
Signalleitung 2 zu "H" wird, speichert
das Ergebnisregister 1 ein Verarbeitungsergebnis (X) der ALU 33 in 12 und gibt dann von gespeicherten Werten
nur niedrigere 4 Bits des unmittelbaren Werts an eine Signalleitung 6 für die Wertbeurteilung
ab. Eine Wertbeurteilungsschaltung 36 addiert "1" zu Eingangsdaten auf der Signalleitung 6 und
gibt ein Ergebnis als Wertbeurteilungsergebnis an eine Signalleitung 37 ab.
-
Wie 9 zeigt,
wird ein Wertbeurteilungsergebnis zu "niedrigeren 4 Bits der Eingangsdaten des
unmittelbaren Werts auf der Signalleitung 6" + "1".
Die Auswähleinrichtung 9 wählt ein
Wertbeurteilungsergebnis 37 aus und gibt es an die Signalleitung 14 nur
dann ab, wenn Bits 28, 27 eines Befehlscodes auf
der Signalleitung 11" 00", Bits 26, 25"11" und Bits 24-21"0101" sind, d. h. nur
dann, wenn der bedingte Abzweigbefehl in Abhängigkeit von der Wertbeurteilung
ausgeführt
wird.
-
Der Zwischenspeicher 15 speichert
einen aktuellen Programmzählerwert
auf der Signalleitung 16 und gibt dann einen gespeicherten
Wert an die Signalleitung 17 ab. Der Addieren 18 addiert
einen Ausgangswert auf der Signalleitung 17 von dem Zwischenspeicher 15 (Programmzählerwert)
und ein Wertstufenbeurteilungsergebnis auf der Signalleitung 14 von
der Auswähleinrichtung 19 in
jedem Maschinenzyklus und gibt ein Ergebnis an die Signalleitung 19 ab.
-
Die Auswähleinrichtung 23 wählt Daten
auf der Signalleitung 19 zur Abgabe an die Signalleitung 25 aus.
Anders ausgedrückt,
die Auswähleinrichtung 23 gibt
an die Signalleitung 25 folgendes ab: "Programmzählerwert" + "Wertstufenbeurteilungsergebnis".
-
Wenn das Taktsignal CLKB auf der
Signalleitung 2 in 6 zu "L" wird, ist die Operation gleich derjenigen
gemäß dem Stand
der Technik. Das heißt, der
Programmzähler 26,
der den Programmzählerwert
speichert, gibt den gespeicherten Wert, d. h. einen aktualisierten
Programmzählerwert,
in Abhängigkeit
von dem Taktsignal CLKC auf der Signalleitung 27 an die
Signalleitung 16 ab.
-
Anders ausgedrückt, es nimmt diese Ausführungsform,
wie 10 zeigt, den bedingten
Abzweig in Abhängigkeit
von der Wertbeurteilung vor, indem einfach das Wertbeurteilungsergebnis
zu einem Programmzählerwert
hinzu addiert wird. Diese Ausführungsform
kann also den bedingte Abzweig durch Wertbeurteilung in einem Maschinenzyklus
vornehmen, ohne daß wie
beim Stand der Technik drei Vorgänge
erforderlich sind, nämlich
ein Laden eines Schwellenwerts, eine Subtraktion eines Schwellenwerts
von einem eingegebenen Zahlenwert, und ein bedingter Abzweig durch
eine Beurteilung des Subtraktionsergebnisses. Dieser Vorgang wird
nachstehend im einzelnen erläutert.
-
Da ein Programmzähler PC an der Position X=X
ist, wird ein zunächst
ein Ausgang von der ALU 33 zu X. Dann wird der Programmzähler PC
um Eins für
einen gewöhnlichen
Rechenvorgang der ALU inkrementiert, um SW(mag) zu bezeichnen. Da
der SW-Befehl unter Verwendung des vorhergehenden ALU-Rechenergebnisses
ausgeführt
wird, wird danach, wenn ein Wertstufenbeurteilungsergebnis von X
gleich n ist, der nächste
Wert des Programmzählers
PC zu "aktueller
PC-Wert" + "n". 19 zeigt den
Rechenvorgang im Fall von N=7, und ein Programmzähler geht weiter zu dem Ablauf 7.
-
11 ist
ein Blockbild, das die Ausführung eines
unmittelbaren Ladens einer Ausführungsform der
vorliegenden Erfindung zeigt. In 11 ist
der Ablauf bis zu PC+n der gleiche wie unter Bezugnahme auf 10 erläutert wurde. Der Unterschied
besteht darin, daß im
Fall von 11 der Inhalt
von PC+n unmittelbare Ladebefehle sind. Der unmittelbare Ladebefehl
führt einen
unmittelbaren Wert aus und benennt dann eine Verschiebung.
-
Dabei bedeutet ein Befehl "X=X", daß der ALU-Befehl
im Durchgangszustand abgegeben wird, d. h., die ALU liest X aus
der Registerdatei aus und gibt X so ab, wie es ist, und die Registerdatei
hält X erneut.
Anders ausgedrückt,
ein Ergebnis des X-Registers wird wieder zu X. Der Befehl "SW(result)" ist ein bedingter
Abzweigbefehl, der eine Abweichung des aktuellen Programmzählerwerts
um das "vorhergehende
berechnete Ergebnis der ALU" + "1" bewirkt.
-
Gemäß 11 wird, da die Verschiebung (disp) 10
ist, der nächste
Programmzählerwert
gleich dem "aktuellen
Programmzählerwert" + "10". Selbst wenn n eine
von 10 verschiedene Zahl ist, wird ein sequentieller Ablauf des
unmittelbaren Ladens und des Abzweigs in 2 Schritten ausgeführt, indem
Verschiebungswerte (disp) im voraus in einer ROM-Adresse benannt
werden und der Befehl an der Adresse "PC+n" ausgeführt wird.
-
Ein Format der Befehlscodes auf der
Signalleitung 11 von 1 und 12 wird für den Fall
erläutert,
in dem das unmittelbare Laden unter Verwendung von 3 ausgeführt wird. Bits 28, 27 in 3 repräsentieren Befehlsarten (Typen),
und wenn Bits 28, 27 "01" sind, repräsentieren sie einen unmittelbaren
Ladebefehl.
-
Wenn Bits 28, 27 "01" sind, d. h. im Fall
eines unmittelbaren Ladebefehls, repräsentieren Bits 26~11 unmittelbare
Daten (imm-data), während
Bits 10~6 sowohl ein unmittelbare Laden als auch eine Adressenverschiebung
(disp) für
die Adressenverschiebung repräsentieren
und Bits 5~0 eine Datenübertragungszieladresse
(dst) repräsentieren.
-
Unter Bezugnahme auf 1 und andere Figuren wird nachstehend
erläutert,
wie das unmittelbare Laden und der unbedingte Sprung nach dem bedingten
Abzweig in Abhängigkeit
von der Wertstufenbeurteilung oder Wertbeurteilung effizient und
mit Hochgeschwindigkeit ausgeführt
werden.
-
Wie 6 zeigt,
wählt dann,
wenn das Taktsignal CLKB auf der Signalleitung 2 zu "N" wird, die Auswähleinrichtung 9 Daten
der Adressenverschiebung (disp) für Bits 10~6 in einem
Befehlscode auf der Signalleitung 11 von der Signalleitung 12 aus
und gibt sie an die Signalleitung 14 ab, wenn Bits 28, 27 des
Befehlscodes auf der Signalleitung 11 "01" sind, d. h. nur bei einem unmittelbaren
Ladebefehl. Der Zwischen- Speicher 15 speichert
einen aktuellen Programmzählerwert
und gibt dann einen gespeicherten Wert an die Signalleitung 17 ab.
-
Der Addieren 18 addiert
eine Adressenverschiebung (disp) und einen Programmzählerausgangswert
auf der Signalleitung 17 von dem Zwischenspeicher 15,
wo ein Programmzählerwert
für jeden
Maschinenzyklus gespeichert ist, und gibt ein Ergebnis an die Signalleitung 19 ab.
Die Auswähleinrichtung 23 wählt Daten
auf der Signalleitung 19 aus und gibt sie an die Signalleitung 25 ab.
In diesem Fall gibt also die Auswähleinrichtung 23 an
die Signalleitung 25 ab: "Programmzählerwert" + "Wert
einer Adressenverschiebung".
-
Wenn das Taktsignal CLKB auf der
Signalleitung 2 in 6 zu "L" wird, ist die Operation gleich derjenigen
gemäß dem Stand
der Technik. Das heißt, der
Programmzähler 26,
der den Programmzählerwert
speichert, gibt den gespeicherten Wert, d. h. einen aktualisierten
Programmzählerwert,
in Abhängigkeit
von dem Taktsignal CLKC auf der Signalleitung 27 an die
Signalleitung 16 ab.
-
Anders ausgedrückt, es wird bei dieser Ausführungsform,
wie 12 zeigt, ein Programmzählerwert
aktualisiert, indem ein Adressenverschiebungswert zu dem Programmzählerwert
hinzu addiert wird, wenn ein unmittelbares Laden abgegeben wird.
Deshalb kann diese Ausführungsform
die Verarbeitung in einem Maschinenzyklus ausführen, während die herkömmliche
Verarbeitung in 2 Maschinenzyklen ausgeführt wurde.
-
Durch Kombination dieser dritten
Ausführungsform
mit der ersten oder zweiten Ausführungsform
kann die herkömmliche
Verarbeitung, die in 14 Maschinenzyklen erfolgte, durch eine Verarbeitung ersetzt
werden, die in 2 Maschinenzyklen ausgeführt wird.