-
HINTERGRUND
DER ERFINDUNG
-
1. GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung bezieht
sich auf eine Berechnungsvorrichtung zum Ausführen einer Verarbeitung, die
ermittelt, welches von zwei Datenstücken einen größeren Absolutwert
hat, um Daten zu ermitteln, die unter mehreren Daten den maximalen
Absolutwert haben, auf ein Berechnungsverfahren, das diese Verarbeitung
unter Verwendung der Berechnungsvorrichtung ausführt, und auf einen Prozessor,
der eine solche Berechnungsvorrichtung enthält. Genauer bezieht sich die
vorliegende Erfindung auf eine Berechnungsvorrichtung, die zum Komprimieren
von AV-Daten wie etwa digitalisierten Musikdaten nutzbar ist, deren
Vergleich der Absolutwerte eine große Last darstellt; auf ein
Berechnungsverfahren, das diese Verarbeitung unter Verwendung der Berechnungsvorrichtung
ausführt;
und auf einen Prozessor, der eine solche Berechnungsvorrichtung
enthält.
-
2. BESCHREIBUNG DES VERWANDTEN
GEBIETS:
-
In aktuellen AV-Systemen werden Signale häufig als
digitale Signale verarbeitet. Ein digitales Signal wird weniger
durch Umgebungsrauschen beeinflusst als ein analoges Signal und
kann somit selbst dann, wenn es in einem Aufzeichnungsmedium wie
etwa z. B. einer Compact Disc (CD) gespeichert oder von einem Ort
zu einem anderen übertragen
wird, sehr zufrieden stellend wiedergegeben werden. Um die digitalen
Daten mit diesen ausgezeichneten Eigenschaften in größerer Menge
in einem Aufzeichnungsmedium zu speichern oder zu übertragen,
ist die Komprimierung der digitalen Daten unverzichtbar. Zur Standardisierung
der Komprimierungstechnologie ist die MPEG (Moving Picture Experts
Group) gegründet
worden. Die durch die MPEG standardisierten Komprimierungsformate
umfassen MPEG1 und MPEG2 zum Komprimieren von Bewegtbildsignalen
sowie MPEG-Audio zum Komprimieren von Audiosignalen.
-
In Übereinstimmung mit dem MPEG-Audio-Format
wird ein Audiosignal wie folgt komprimiert.
-
Die Audiodaten in einem Zeitbereich
werden in Daten in 32 entsprechenden Frequenzbändern umgewandelt. Daraufhin
werden die Daten in jedem Frequenzband in eine Signalform und in
ein Verstärkungsverhältnis getrennt.
Die Signalform wird normiert, so dass die maximale Amplitude in
der Nähe von
1,0 liegt, und die normierte Signalform als eine Probe codiert.
Mit anderen Worten, durch die Normierung der Signalform liegt der
einzelne Wert A, der das Signalformsignal repräsentiert, in dem Bereich –1 ≤ A < 1, ohne die Ähnlichkeit
der Form zu beschädigen.
Das Verstärkungsverhältnis zum
Zeitpunkt der Normierung wird als ein Normierungsfaktor ebenfalls codiert.
Anschließend
werden den Daten mit einer höchsten
Quantisierungsgenauigkeit, die angesichts der menschlichen Höreigenschaften
durch das menschliche Ohr unterscheidbar sind, vorzugsweise Bits
zugewiesen. Somit wird die Datenkomprimierung ausgeführt.
-
Die Größe eines Signalformsignals
muss in jedem Frequenzband unter Verwendung einer bestimmten Bitbreite
dargestellt werden. Um die Größen aller
Signalformsignale, die eine minimale Bitbreite verwenden, ohne irgendeine
Verschwendung darzustellen, muss der minimale Absolutwert unter den
Absolutwerten der Signalformsignale ermittelt werden.
-
Diese Verarbeitung wird heute häufig von
einem programmierbaren Prozessor ausgeführt. 16 ist ein Blockschaltplan, der eine
herkömmliche,
für das
Ermitteln des maximalen Absolutwerts verwendete allgemeine Struktur 160 zeigt.
Der Prozessor 160 enthält
einen Steuerabschnitt 1 und einen Datenbusabschnitt 2,
welcher eine ALU 6 enthält,
die die Berechnungen ausführt.
-
Der Steuerabschnitt 1 enthält einen
Programmzähler 3,
einen Ausführungsbefehlsspeicher 4 und
einen Decodierer 5. Der Ausführungsbefehlsspeicher 4 besitzt
einen Ausführungsbefehl,
der als ein Programm gespeichert ist. Der Programmzähler 3 zeigt
eine Adresse in dem Ausführungsbefehlsspeicher 4 an,
der einen nachfolgend auszuführenden Ausführungsbefehl
speichert. Üblicherweise
wird der Programmzähler 3 durch
ein Steuersignal 12 von dem Decodierer 5 inkrementiert.
Wenn ein Verzweigungsbefehl oder dergleichen auszuführen ist,
stellt der Programmzähler 3 die
Adresse des Ziels der Verzweigung ein. Der Decodierer 5 gibt
anhand des Ausführungsbefehls
aus dem Ausführungsbefehlsspeicher 4 und
des Werts eines Merkereinstellabschnitts 9 ein Steuersignal 10 an
den Datenbusabschnitt 2 aus und gibt außerdem das Steuersignal 12 an
den Programmzähler 3 aus.
-
Der Datenbusabschnitt 2 enthält die ALU 6, eine
Registerdatei 7, einen Datenspeicher 8 und den Merkereinstellabschnitt 9.
Die ALU 6 führt
anhand des Steuersignals 10 an einem von der Registerdatei 7 ausgegebenen
Wert eine Berechnung aus und speichert das Berechnungsergebnis in
der Registerdatei 7. Die Registerdatei 7 ist eine
Zusammenstellung mehrerer Register. Durch das Steuersignal 10 wird
unter den mehreren Registern ein Register bestimmt, dessen Inhalt
an die ALU 6 oder an den Datenspeicher 8 ausgegeben
wird. Durch das Steuersignal 10 wird das Register bestimmt,
in das die Ausgabe von der ALU 6 oder von dem Datenspeicher 8 zu
schreiben ist. Der Inhalt des bestimmten Registers wird als ein
Adressensignal 11 an den Datenspeicher 8 ausgegeben.
-
Die Registerdatei 7 enthält fünf Register
A, B, C, D und P. Der Datenspeicher 8 ist dazu vorgesehen,
die für
die Berechnungen verwendeten Daten zu speichern. Durch das Adressensignal 11 wird
eine Adresse in dem Datenspeicher 8 bestimmt, wobei eine
Ausgabe aus der Registerdatei 7 an die bestimmte Adresse
geschrieben wird. Der Inhalt an der durch das Adressensignal 11 bestimmten
Adresse in dem Datenspeicher 8 wird gelesen und in die
Registerdatei 7 geschrieben. Der Merkereinstellabschnitt 9 enthält einen
Merker N, der ein Merkerregister N enthält, sowie einen Merker Z, der
ein Merkerregister Z enthält.
Der Merker N wird auf "1" gesetzt, wenn das von
der ALU 6 ausgegebene Berechnungsergebnis negativ ist,
während
er sonst auf "0" gesetzt wird. Der Merker
Z wird auf "1" gesetzt, wenn das
von der ALU 6 ausgegebene Berechnungsergebnis null ist,
während
er sonst auf "0" gesetzt wird.
-
Die Bitbreiten der Register A, B,
C, D und P, die Bitbreite des Datenspeichers 8, die Bitbreite
der in die ALU 6 eingegebenen und aus ihr ausgegebenen
Daten und die Bitbreite in Bezug auf die Rechengenauigkeit betragen
sämtlich
4 Bits.
-
Der Prozessor besitzt die folgenden
Ausführungsbefehle: "move a, b: Datenübertragung
aus dem Register b in das Register a", "movei
a, imm: der Zwischenwert imm wird im Register a eingestellt", "cmp a, b: Datenvergleich
zwischen dem Register a und dem Register b; in der ALU 6 wird
eine Subtraktion ausgeführt,
das Ergebnis aber nicht in das Register (a-b) geschrieben", "cmpi a, imm: Vergleich
zwischen dem Register i und dem Zwischenwert imm; in der ALU 6 wird
eine Subtraktion ausgeführt,
das Ergebnis aber nicht in das Register (a-imm) geschrieben", "addi a, imm: der
Zwischenwert imm wird zu dem Wert des Registers a addiert und im
Register a eingestellt", "abs a, b: der Absolutwert
des 2er-Kom plements des Registers b wird im Register a eingestellt", "jmp label: springe
unbedingt zur Marke", "jmp(b) label: springe
zur Marke, wenn der Merker N und der Merker Z beide 0 sind" und "jmp(e) label: springe
zur Marke, wenn der Merker Z 1 ist".
-
17 zeigt
ein Programm zum Ausführen der
Verarbeitung zum Ermitteln des maximalen Absolutwerts unter Verwendung
des herkömmlichen
allgemeinen Prozessors.
-
In diesem Beispiel sind die Daten,
deren maximaler Absolutwert zu ermitteln ist, in dem Datenspeicher 8 (16), genauer, in einem
Speicherbereich von der Adresse 0 bis zur Adresse 3, gespeichert.
-
Im Schritt (1) wird im Register
P 0 (Adresse 0) eingestellt. Im Schritt (2) wird im Register
C 0, d. h. der minimale Absolutwert, als Leerdaten eingestellt. Im
Schritt (3) wird der Wert der durch das Register P angezeigten
Adresse im Register A eingestellt. Im Schritt (4) wird
das Ergebnis einer Absolutwertberechnung des Werts des Registers
A im Register B eingestellt. Im Schritt (5) wird das Ergebnis
einer Absolutwertberechnung des Werts des Registers C im Register
D eingestellt. Im Schritt (6) werden die Werte der Register
D und B verglichen. Im Schritt (7) schreitet die Verarbeitung
zu Schritt (9) fort, wenn das Vergleichsergebnis im Schritt
(6) positiv ist (Merker N = 0, Merker Z = 0). Sonst schreitet
die Verarbeitung zu Schritt (8) fort. Im Schritt (8)
wird der Wert des Registers A ins Register C übertragen. Im Schritt (9) wird
bestimmt, ob die durch den Wert des Registers P angezeigte Adresse
eine Adresse des Endzustands der Datengruppe, d. h. gleich der Adresse 3, ist.
Wenn das Bestimmungsergebnis im Schritt (9) ja lautet (Merker
Z = 1), schreitet die Verarbeitung im Schritt (10) zu Schritt
(13) fort. Im Schritt (11) wird der Wert des Registers
P um 1 inkrementiert und wird auf die nächsten Daten gezeigt. Im Schritt
(12) kehrt die Verarbeitung zu Schritt (3) zurück. Im Schritt
(13) wird die Verarbeitung abgeschlossen. Durch diese Verarbeitung
können
im Register C die Daten mit dem maximalen Absolutwert unter den
in Adresse 0 bis Adresse 3 des Datenspeichers 8 gespeicherten
Daten ermittelt werden.
-
In den Schritten (4) bis
(6) werden die Absolutwerte der zwei Werte verglichen;
während
in den Schritten (7) und (8) derjenige der zwei
Werte ermittelt wird, der den größeren Absolutwert
hat.
-
Im Folgenden wird beschrieben, wie
durch das in 17 gezeigte
Programm diejenigen Daten unter vier Stücken praktischer Daten, die
in 18 gezeigt sind,
ermittelt werden, die den maximalen Absolutwert haben.
-
Im Schritt (1) wird im Register
P 0 eingestellt. Im Schritt (2) wird im Register C 0 eingestellt.
-
Die Verarbeitung in einem ersten
Zyklus wird die folgt ausgeführt.
-
Im Schritt (3) wird im Register
A der Wert der an der Adresse {0} gespeicherten Daten, d. h. der Wert "3", eingestellt. Im Schritt (4)
wird im Register B das Ergebnis der Absolutwertberechnung des Werts "3" im Register A, d. h. der Wert "3", eingestellt. Im Schritt (5)
wird im Register D das Ergebnis der Absolutwertberechnung des Werts "0" im Register C, d. h. der Wert "0", eingestellt. Im Schritt (6)
werden der Wert "0" des Registers D
und der Wert "3" des Registers B
miteinander verglichen. Das Ergebnis des Vergleichs (der Subtraktion)
ist "0 – 3 = –3", d. h. negativ, so
dass der Merker N = 1 und der Merker Z = 0 gesetzt werden. Da der
Merker N = 1 und der Merker Z = 0 ist, schreitet die Verarbeitung
im Schritt (7) zu Schritt (8) fort. Im Schritt
(8) wird im Register C der Wert "3" des
Registers A eingestellt. Im Schritt (9) werden der Wert "0" des Registers P und die Adresse {3}
der Enddaten miteinander verglichen. Das Ergebnis des Vergleichs
(der Subtraktion) ist "0 – 3 = –3", d. h. negativ,
so dass der Merker N = 1 und der Merker Z = 0 gesetzt werden. Im
Schritt (10) ist der Merker Z = 0, so dass die Verarbeitung
zu Schritt (11) fortschreitet. Im Schritt (11)
wird der Wert des Registers P um 1 auf "1" inkrementiert.
Im Schritt (12) kehrt die Verarbeitung zu Schritt (3)
zurück.
-
Die Verarbeitung in einem zweiten
Zyklus wird wie folgt ausgeführt.
-
Im Schritt (3) wird im Register
A der Wert der an der Adresse {1} gespeicherten Daten, d. h. Wert "–5", eingestellt. Im Schritt (4)
wird im Register B das Ergebnis der Absolutwertberechnung des Werts "–5" im Register A, d. h. der Wert "5", eingestellt. Im Schritt (5)
wird im Register D das Ergebnis der Absolutwertberechnung des Werts "3" im Register C, d. h. der Wert "3", eingestellt. Im Schritt (6)
werden der Wert "3" des Registers D
und der Wert "5" des Registers B
miteinander verglichen. Das Ergebnis des Vergleichs (der Subtraktion)
ist "3 – 5 = –2", d. h. negativ, so
dass der Merker N = 1 und der Merker Z = 0 gesetzt werden. Da der
Merker N = 1 und der Merker Z = 0 ist, schreitet die Verarbeitung
im Schritt (7) zu Schritt (8) fort. Im Schritt
(8) wird im Register C der Wert "–5" des Registers A
eingestellt. Im Schritt (9) werden der Wert "1" des Registers P und die Adresse {3}
der Enddaten miteinander verglichen. Das Ergebnis des Vergleichs
(der Subtraktion) ist "1 – 3 = –2", d. h. negativ,
so dass der Merker N = 1 und der Merker Z = 0 gesetzt werden. Im
Schritt (10) ist der Merker Z = 0, so dass die Verarbeitung
zu Schritt (11) fortschreitet. Im Schritt (11)
wird der Wert des Registers P um 1 auf "2" inkrementiert.
Im Schritt (12) kehrt die Verarbeitung zu Schritt (3)
zurück.
-
Die Verarbeitung in einem dritten
Zyklus wird wie folgt ausgeführt.
-
Im Schritt (3) wird im Register
A der Wert der an der Adresse {2} gespeicherten Daten, d. h. der Wert "–2", eingestellt. Im Schritt (4)
wird im Register B das Ergebnis der Absolutwertberechnung des Werts "–2" im Register A, d. h. der Wert "2", eingestellt. Im Schritt (5)
wird im Register D das Ergebnis der Absolutwertberechnung des Werts "–5" im Register C, d. h. der Wert "5", eingestellt. Im Schritt (6)
werden der Wert "5" des Registers D
und der Wert "2" des Registers B
miteinander verglichen. Das Ergebnis des Vergleichs (der Subtraktion)
ist "5 – 2 = 3", d. h. positiv,
so dass der Merker N = 0 und der Merker Z = 0 gesetzt werden. Da
der Merker N = 0 und der Merker Z = 0 ist, schreitet die Verarbeitung
im Schritt (7) zu Schritt (9) fort. Im Schritt
(9) werden der Wert "2" des Registers P
und die Adresse {3} der Enddaten miteinander verglichen. Das Ergebnis
des Vergleichs (der Subtraktion) ist "2 – 3
= –1", d. h. negativ, so
dass der Merker N = 1 und der Merker Z = 0 gesetzt werden. Im Schritt
(10) ist der Merker Z = 0, so dass die Verarbeitung zu
Schritt (11) fortschreitet. Im Schritt (11) wird
der Wert des Registers P um 1 auf "3" inkrementiert.
Im Schritt (12) kehrt die Verarbeitung zu Schritt (3)
zurück.
-
Die Verarbeitung in einem vierten
Zyklus wird wie folgt ausgeführt.
-
Im Schritt (3) wird im Register
A der Wert der an der Adresse {3} gespeicherten Daten, d. h. der Wert "6", eingestellt. Im Schritt (4)
wird im Register B das Ergebnis der Absolutwertberechnung des Werts "6" im Register A, d. h. der Wert "6", eingestellt. Im Schritt (5)
wird im Register D das Ergebnis der Absolutwertberechnung des Werts "–5" im Register C, d. h. der Wert "5", eingestellt. Im Schritt (6)
werden der Wert "5" des Registers D
und der Wert "6" des Registers B
miteinander verglichen. Das Ergebnis des Vergleichs (der Subtraktion)
ist "5 – 6 = –1", d. h. negativ, so
dass der Merker N = 1 und der Merker Z = 0 gesetzt werden. Da der
Merker N = 1 und der Merker Z = 0 ist, schreitet die Verarbeitung
im Schritt (7) zu Schritt (8) fort. Im Schritt
(8) wird im Register C der Wert "6" des
Registers A eingestellt. Im Schritt (9) werden der Wert "4" des Registers P und die Adresse {3}
der Enddaten miteinander verglichen. Das Ergebnis des Vergleichs
(der Subtraktion) ist "3 – 3 = 0", so dass der Merker
N = 0 und der Merker Z = 1 gesetzt werden. Im Schritt (10)
ist der Merker Z = 1, so dass die Verarbeitung zu Schritt (13)
fortschreitet. Im Schritt (13) wird die Verarbeitung abgeschlossen Durch
diese Verarbeitung kann im Register C der maximale Absolutwert "6" ermittelt werden.
-
Die oben beschriebene Verarbeitung
erfordert viele Berechnungen und wird in einem herkömmlichen
Prozessor somit durch eine Spezialberechnungsvorrichtung ausgeführt, um
die Geschwindigkeit zu erhöhen.
-
19 ist
ein Blockschaltplan, der einen herkömmlichen Prozessor 190 zeigt,
der eine Spezialberechnungsvorrichtung enthält. Wie der Prozessor 160 enthält der Prozessor 190 einen
Datenbusabschnitt 2 und einen Steuerabschnitt 1 zum
Steuern des Datenbusabschnitts 2. Der Steuerabschnitt 1 wirkt
auf die gleiche Weise wie der Steuerabschnitt 1 in dem
Prozessor 160 in 16.
Außer
den Elementen, die in dem Datenbusabschnitt 2 in dem in 16 gezeigten Prozessor 160 enthalten
sind, enthält
der Datenbusabschnitt 2 eine 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14,
d. h. eine Spezialberechnungsvorrichtung. Die 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 führt an dem aus
der Registerdatei 7 ausgegebenen Wert die 2er-Komplement-Absolutwert-Subtraktionsverarbeitung
aus.
-
Die ALU 6, die Registerdatei 7 und
der Datenspeicher 8 wirken auf die gleiche Weise wie jene in
dem Prozessor 160 (16).
Der Merkereinstellabschnitt 9 führt die Merkereinstellung auf
die gleiche Weise wie in dem Prozessor 160 aus und widerspiegelt
außerdem
die Ausgabe von der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14.
-
20 zeigt
eine Struktur der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14.
Die 2er-Komplement-Absolutwert-Subtraktionsvorrichtung enthält eine
erste 2er-Komplement-Absolutwert-Berechnungsvorrichtung 50,
eine zweite 2er-Komplement-Absolutwertberechnungsvorrichtung 51 und
eine Subtraktionsvorrichtung 22. Die erste 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 50 enthält einen
Inverter 52, einen +1-Addierer 53 und eine Auswahleinrichtung 54.
Der Inverter 52 invertiert alle Bits der Eingangsdaten
(wobei die Eingabe A durch das Bezugszeichen 69 dargestellt
ist), während
der +1-Addierer 53 zu dem vom Inverter 52 ausgegeben
Wert "1" addiert. Das heißt, das 2er-Komplement
der Eingabe A (69) wird dadurch erhalten, dass die Bits
der Eingabe A (69) invertiert werden und zu den invertierten
Bits 1 addiert wird. Somit wird das 2er-Komplement der Eingabe A
(69) als ein invertierter Wert 60 ausgegeben.
Wenn das Vorzeichen der Eingabe A (69) negativ ist, wählt die Auswahleinrichtung 54 den
invertierten Wert 60 aus, während
sie sonst die Eingabe A (69) auswählt. Durch diese Verarbeitung
wird von der ersten 2er-Komplement-Absolutwert-Berechnungsvorrichtung 50 (Auswahleinrichtung 54)
ein positiver Wert mit einem gleichen Absolutwert wie die Eingabe
A (69) ausgegeben (62), wenn die Eingabe A (69)
einen negativen Wert besitzt. Wenn die Eingabe A (69) einen
positiven Wert hat, wird von der ersten 2er-Komplement-Absolutwert-Berechnungsvorrichtung 50 (von
der Auswahleinrichtung 54) die Eingabe A (69)
wie sie ist ausgegeben (62). Diese Verarbeitung wird als
Absolutwert-Berechnungsverarbeitung bezeichnet.
-
Ähnlich
enthält
die zweite 2er-Komplement-Absolutwert-Berechnungsvorrichtung 51 einen Inverter 55,
einen +1-Addierer 56 und eine Auswahleinrichtung 57.
Der Inverter 55 invertiert alle Bits der Eingangsdaten
(wobei die Eingabe B durch das Bezugszeichen 70 dargestellt
ist), während
der +1-Addierer 56 zu dem vom Inverter 55 ausgegebenen Wert "1" addiert. Das heißt, das 2er-Komplement der Eingabe
B (70) wird dadurch erhalten, dass die Bits der Eingabe
B (70) invertiert werden und zu den invertierten Bits 1 addiert
wird. Somit wird das 2er-Komplement der Eingabe B (70)
als ein invertierter Wert 61 ausgegeben. Wenn das Vorzeichen der Eingabe
B (70) negativ ist, wählt
die Auswahleinrichtung 57 den invertierten Wert 61 aus,
während
sie sonst die Eingabe B (70) auswählt. Durch diese Verarbeitung
wird von der zweiten 2er-Komplement-Absolutwert-Berechnungsvorrichtung 51 (Auswahleinrichtung 57)
ein positiver Wert mit einem gleichen Absolutwert wie die Eingabe
B (70) ausgegeben (63), wenn die Eingabe B (70)
einen negativen Wert besitzt. Wenn die Eingabe B (70) einen
positiven Wert hat, wird von der zweiten 2er-Komplement-Absolutwert-Berechnungsvorrichtung 51 (von
der Auswahleinrichtung 57) die Eingabe B (70)
wie sie ist ausgegeben (63).
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts (den im Ergebnis der
Absolutwertberechnung erhaltenen Wert) von dem Wert 62 nach der
Berechnung des Absolutwerts und gibt ein Subtraktionsergebnis 65 (Ergebnis 65 der
Berechnung des Absolutwertvergleichs) aus.
-
Die Bitbreiten der Register A, B,
C, D und P, die Bitbreite des Datenspeichers 8 und die
Bitbreite der in die ALU 6 eingegebenen und der aus ihr
ausgegebenen Daten sind sämtlich
4 Bits. Die Bitbreite der in die 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 eingegebenen
und aus ihr ausgegebenen Daten und die Bitbreite in Bezug auf die
Rechengenauigkeit sind sämtlich
4 Bits.
-
Außer den Ausführungsbefehlen
des Prozessors 160 (16)
besitzt der Prozessor 190 (19)
den folgenden Ausführungsbefehl: "abcmp a, b: Vergleich
zwischen den Absolutwerten des Registers a und des Registers b;
das Ergebnis wird nicht in das Register (|a| – |b|) geschrieben.
-
Im Folgenden wird hauptsächlich hinsichtlich des
Befehls "abcmp", der die in dem
Prozessor 190 enthaltene 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 (20) verwendet, beschrieben, wie
unter Verwendung des Prozessors 190 (19) die Daten mit dem maximalen Absolutwert
unter den vier Stücken
praktischer Daten ermittelt werden.
-
21 zeigt
ein Programm zum Ausführen der
Verarbeitung zum Ermitteln des maximalen Absolutwerts unter Verwendung
des herkömmlichen
allgemeinen Prozessors 190, der die 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 enthält. Die
Schritte (1) bis (3) und (7) bis (13)
sind völlig gleich
denen, die unter Verwendung des herkömmlichen allgemeinen Prozessors 160 ausgeführt werden.
Im Schritt (14) werden unter Verwendung des Befehls "abcmp" die Absolutwerte
des Registers C und des Registers A miteinander verglichen. Im Schritt
(14) wird die Verarbeitung ausgeführt, die unter Verwendung des
herkömmlichen
allgemeinen Prozessors 160 in den Schritten (4)
bis (7) ausgeführt wird.
Der Wert des Registers C wird als die Eingabe A (69) der
2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 eingegeben,
während
der Wert des Registers A als die Eingabe B (70) der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 eingegeben
wird.
-
Die in dem Datenspeicher 8 gespeicherten Daten
werden durch ein 2er-Komplement mit einem Vorzeichenbit in dem MSB
(höchstwertigen
Bit unter den 4 Bits) dargestellt. Das Vorzeichen des Werts der Daten
ist negativ, wenn der Wert des MSB 1 ist, während er positiv ist, wenn
der Wert des MSB 0 ist. Wenn der Wert der Daten auf binäre Art dargestellt wird,
wird dem Datenstrom "0b" vorangestellt. Wenn der
Bitstrom einen Wert darstellt, wird der Wert "0b" vorangestellt.
-
Da die Eingaben A (69) und
B (70) beide 4 Bits haben, ist der Bereich der Zahlenwerte,
die durch jede der Eingaben A (69) und B (70) dargestellt werden
können, –8 bis 7(0b1000
bis 0b0111).
-
Das Programm wird nun genauer beschrieben.
Die Verarbeitung in den Schritten (1) und (2)
ist völlig
gleich zum Fall des herkömmlichen
allgemeinen Prozessors 160.
-
Die Verarbeitung in einem ersten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
allgemeinen Prozessors 160.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 ausgeführt. Diese
wird anhand von 22A beschrieben.
-
Der Wert des Registers C, "0(0b0000)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "3(0b0011)", als die Eingabe
B (70) eingegeben wird.
-
Der Wert der Eingabe A (69), "0(0b0000)", wird in die erste
2er-Komplement-Absolutwert-Berechnungsvorrichtung 50 eingegeben.
Der Wert wird durch die Inverter 52 invertiert und durch
den +1-Addierer 53 zu dem invertierten Wert "1" addiert. Somit ist der invertierte
Wert 60 "0(0b0000)". Die Auswahleinrichtung 54 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "0(0b0000)", null ist, wählt somit
die Eingabe A (69) aus und gibt "0(0b0000)" als den Wert 62 nach der Berechnung
des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "3(0b0011)", wird in die zweite
2er-Komplement-Absolutwert-Berechnungsvorrichtung 51 eingegeben.
Der Wert wird durch den Inverter 55 invertiert und durch
den +1-Addierer 56 zu dem invertierten Wert "1" addiert. Somit ist der invertierte
Wert 61 "-3(0b1101)". Die Auswahleinrichtung 57 bestimmt,
dass das Vorzeichen des Werts der Eingabe B (70), "3(0b0011)" positiv ist, wählt somit
die Eingabe B (70) aus und gibt "3(0b0011)" als den Wert 63 nach der Berechnung des
Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "–3(0b1101)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
eine Bestimmung an dem Eingabewert "–3(0b1101)" vor und setzt das
Merkerregister N = 1 und das Merkerregister Z = 0.
-
Die Verarbeitung in den Schritten
(9) bis (11) ist völlig gleich zum Fall des herkömmlichen
allgemeinen Prozessors 160.
-
Die Verarbeitung in einem zweiten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
allgemeinen Prozessors 160.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 ausgeführt. Diese
wird anhand von 22B beschrieben.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "–5(0b1011)", als die Eingabe B
(70) eingegeben wird.
-
Der Wert der Eingabe A (69), "3(0b0011)", wird in die erste
2er-Komplement-Absolutwert-Berechnungsvorrichtung 50 eingegeben.
Der Wert wird durch den Inverter 52 invertiert und durch
den +1-Addierer 53 zu dem Wert "1" addiert.
Somit ist der invertierte Wert 60 "–3(0b1101)". Die Auswahleinrichtung 54 nimmt
eine Bestimmung an dem Vorzeichen des Werts der Eingabe A (69), "3(0b0011)", vor, wählt somit
die Eingabe A (69) aus und gibt "3(0b0011)" als den Wert 62 nach der Berechnung
des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "–5(0b1011)", wird in die zweite 2er-Komplement-Absolutwert-Berechnungsvorrichtung 51 eingegeben.
Der Wert wird durch den Inverter 55 invertiert und durch
den +1-Addierer 56 zu dem invertierten Wert "1" addiert. Somit ist der invertierte
Wert 61 "5(0b0101)". Die Auswahleinrichtung 57 nimmt
eine Bestimmung an dem Vorzeichen des Werts der Eingabe B (70), "–5(0b1011)", vor, wählt somit den invertierten
Wert 61 aus und gibt "5(0b0101)" als den Wert 63
nach der Berechnung des Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "–2(0b1110)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
eine Bestimmung an dem Eingabewert "–2(0b1110)" vor und setzt das
Merkerregister N = 1 und das Merkerregister Z = 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
allgemeinen Prozessors 160.
-
Die Verarbeitung in einem dritten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
allgemeinen Prozessors 160.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 ausgeführt. Diese
wird anhand von 22C beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "–2(0b1110)", als die Eingabe B
(70) eingegeben wird.
-
Der Wert der Eingabe A (69), "–5(0b1011)", wird in die erste 2er-Komplement-Absolutwert-Berechnungsvorrichtung 50 eingegeben.
Der Wert wird durch den Inverter 52 invertiert und durch
den +1-Addierer 53 zu dem invertierten Wert "1" addiert. Somit ist der invertierte
Wert 60 "5(0b0101)". Die Auswahleinrichtung 54 nimmt
eine Bestimmung an dem Vorzeichen des Werts der Eingabe A (69), "–5(0b1011)", vor, wählt somit die Eingabe A (69)
aus und gibt "5(0b0101)" als den Wert 62
nach der Berechnung des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "–2(0b1110)", wird in die zweite 2er-Komplement-Absolutwert-Berechnungsvorrichtung 51 eingegeben.
Der Wert wird durch den Inverter 55 invertiert und durch
den +1-Addierer 56 zu dem invertierten Wert "1" addiert. Somit ist der invertierte
Wert 61 "2(0b0010)". Die Auswahleinrichtung 57 nimmt
eine Bestimmung an dem Vorzeichen des Werts der Eingabe B (70), "–2(0b1110)", vor, wählt somit den invertierten
Wert 61 aus und gibt "2(0b0010)" als den Wert 63
nach der Berechnung des Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "3(0b0011)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
eine Bestimmung an dem Eingabewert "3(0b0011)" vor und setzt das Merkerregister N
= 0 und das Merkerregister Z = 0: Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
allgemeinen Prozessors 160.
-
Die Verarbeitung in einem vierten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
allgemeinen Prozessors 160.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 ausgeführt. Diese
wird anhand von 22D beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "6(0b0110)", als die Eingabe
B (70) eingegeben wird.
-
Der Wert der Eingabe A (69), "–5(0b1011)", wird in die erste 2er-Komplement-Absolutwert-Berechnungsvorrichtung 50 eingegeben.
Der Wert wird durch den Inverter 52 invertiert und durch
den +1-Addierer 53 zu dem invertierten Wert "1" addiert. Somit ist der invertierte
Wert 60 "5(0b0101)". Die Auswahleinrichtung 54 nimmt
eine Bestimmung an dem Vorzeichen des Werts der Eingabe A (69), "-5(0b1011)", vor, wählt somit
den invertierten Wert 60 aus und gibt "5(0b0101)" als den Wert 62 nach der Berechnung des
Absolutwerts aus.
-
Der Wert der Eingabe B (70), "6(0b0110)", wird in die zweite
2er-Komplement-Absolutwert-Berechnungsvorrichtung 51 eingegeben.
Der Wert wird durch den Inverter 55 invertiert und durch
den +1-Addierer 56 zu dem invertierten Wert "1" addiert.
Somit ist der invertierte Wert 61 "–6(0b1010)". Die Auswahleinrichtung 57 nimmt
eine Bestimmung an dem Vorzeichen des Werts der Eingabe B (70), "6(0b0110)", vor, wählt somit
die Eingabe B (70) aus und gibt "6(0b0110)" als den Wert 63 nach der Berechnung des
Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "–1(0b1111)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
eine Bestimmung an dem Eingabewert "–1(0b1111)" vor und setzt das
Merkerregister N = 1 und das Merkerregister Z = 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
allgemeinen Prozessors 160.
-
Durch diese Verarbeitung kann im
Register C der maximale Absolutwert "6" ermittelt
werden.
-
Durch den herkömmlichen Prozessor 190 (19) wird die Geschwindigkeit
der Berechnung unter Verwendung der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 (20) erhöht.
-
Allerdings besitzt die 2er-Komplement-Absolutwert-Berechnungsvorrichtung 14 das
folgende Problem. Wenn ein negativer Wert den maximalen Absolutwert
besitzt, der durch die vorgeschriebene Bitbreite dargestellt werden
kann ("–8", falls die Zahlenwerte –8 bis 7
durch die Breite von 4 Bits dargestellt werden können), kann eine Unannehmlichkeit auftreten.
Anhand von 22E wird
im Folgenden ein Beispiel beschrieben. In diesem Beispiel ist im Register
A "0"(0b0000)" eingestellt und
ist im Register C "–8(0b1000)" eingestellt. Im
Schritt (14) wird der Befehl "abcmp C, A" ausgeführt.
-
Der Wert des Registers C, "–8(b1000)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "0(0b0000)", als die Eingabe
B (70) eingegeben wird.
-
Der Wert der Eingabe A (69), "–8(0b1000)", wird in die erste 2er-Komplement-Absolutwert-Berechnungsvorrichtung 50 eingegeben.
Der Wert wird durch den Inverter 52 zu "(0b0111)" invertiert. Wenn durch den +1-Addierer 53 zu
dem invertierten Wert "1" addiert wird, tritt
ein Überlauf
auf. Somit gibt der +1-Addierer 53 als den invertierten
Wert 60 "–8(0b1000)" aus. Das heißt, es sollte
ein durch Invertieren von "–8(0b1000)" erhaltener positiver
Wert (Absolutwert) ermittelt werden, während der invertierte Wert
60 wegen des Überlaufs
negativ bleibt. Die Auswahleinrichtung 54 nimmt eine Bestimmung
an dem Vorzeichen des Werts der Eingabe A (69), "–8(0b1000)", vor, wählt somit den invertierten
Wert 60 (der ein positives Vorzeichen haben sollte) aus und gibt "–8(0b1000)" als den Wert 62 nach der Berechnung
des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "0(0b0000)", wird in die zweite
2er-Komplement-Absolutwert-Berechnungsvorrichtung 51 eingegeben.
Der Wert wird durch den Inverter 55 invertiert und durch
den +1-Addierer 56 zu dem invertierten Wert "1" addiert. Somit ist der invertierte
Wert 61 "(0b0000)". Die Auswahleinrichtung 57 nimmt
eine Bestimmung an dem Vorzeichen des Werts der Eingabe B (70), "0(0b0000)", vor, wählt somit
die Eingabe B (70) aus und gibt "0(0b0000)" als den Wert 63 nach der Berechnung des
Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "–8(0b1000)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus. Das heißt, das Ergebnis von |–8|–|0| ist
ein negativer Wert.
-
Der Merkereinstellabschnitt 9 nimmt
an der Eingabe "–8(0b1000)" eine Bestimmung
vor und setzt das Merkerregister N = 1 und das Merkerregister Z
= 0.
-
Da das Merkerregister N = 1 und das
Merkerregister Z = 0 ist, schreitet die Verarbeitung im Schritt (7)
zu Schritt (8) fort. Im Schritt (8) wird der Wert
des Registers A, "0(0b0000)", im Register C eingestellt.
-
Beim Vergleich von "–8(0b1000)" und "0(0b0000)" ist der Absolutwert von "–8(0b1000)" viel größer. Somit sollte "–8(0b1000)" im Register C eingestellt werden. Bei
dem herkömmlichen
Prozessor 190 (19)
wird wegen des Überlaufs
ein falscher Wert erhalten.
-
Um dies zu vermeiden, muss verhindert
werden, dass als die Eingabe der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 ein
negativer Wert mit dem maximalen Absolutwert eingegeben wird, der
durch die vorgeschriebene Bitbreite dargestellt werden kann. Die
Realisierung dieser Einstellung mit Hardware erfordert eine zusätzliche
Schaltung, die die Anzahl der Schaltungen und außerdem die Größe des Schaltungssubstrats
erhöht.
Die Realisierung dieser Einstellung mit Software erhöht die Anzahl
der Schritte und verringert somit die Rechengeschwindigkeit.
-
Außerdem besitzt der herkömmliche
Prozessor 190, der die 2er-Komplement-Absolutwert-Berechnungsvorrichtung 14 enthält, das
folgende Problem.
-
Wenn zwei Werte, die verglichen werden, den
gleichen Absolutwert haben, verbleibt derjenige der beiden Werte,
der zuerst erscheint, unabhängig vom
Vorzeichen als der Wert mit dem maximalen Absolutwert im Register
C. Wenn ein negativer Wert (z. B. –4) als der Wert mit dem maximalen
Absolutwert erhalten wird, kann er dementsprechend unabhängig davon,
ob die Daten einen positiven Wert mit dem gleichen Absolutwert wie
der erhaltene Wert (z. B. 4) enthalten, nicht ermittelt werden.
-
Hier werden mehrere durch 2er-Komplemente
dargestellte Datenstücke
(mehrere numerische Zahlen) erzeugt, die den Werten mit einer bestimmten
Bitbreite entsprechen. Die mehreren numerischen Zahlen werden vorzugsweise
mit einer kleinstmöglichen
Bitbreite ohne Verschwendung dargestellt. Um dies zu erreichen,
werden aus der Datengruppe die Daten A mit dem maximalen Absolutwert erhalten,
während
die minimale Bitbreite vorbereitet wird, die erforderlich ist, um
die 2A + 1 Werte darzustellen, die in dem Bereich von –A bis A
einschließlich 0
enthalten sind.
-
Es wird angenommen, dass unter Verwendung
des herkömmlichen
Prozessors im Register C "–4(0b1100)" als die Daten mit
dem maximalen Absolutwert erhalten wird. Es kann nicht ermittelt
werden, ob die untersuchten Daten "4(0b0100)" enthalten. Somit ist zu betrachten,
dass die Daten in dem Bereich von "–4" bis "4" dargestellt werden müssen. Um die
Zahlenwerte von "–4" bis "4" darzustellen, sind 9 Werte einschließlich 0
erforderlich, wobei die erforderliche Bitbreite 4 (0000 bis 1000)
ist. Es ist klar, dass die Datengruppe "4" mit
dem gleichen Absolutwert wie "–4" nicht enthält, wobei
der Bereich der darzustellenden Zahlenwerte "–4" bis "3" ist. Um den Zahlenwert von "–4" bis "3" darzustellen,
sind 8 Werte einschließlich
0 erforderlich, wobei die erforderliche Bitbreite 3 (000 bis 111)
ist. Somit ist es möglich,
dass der herkömmliche
Prozessor unnötig
Bits zuweist.
-
Die 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 hat
das folgende Problem.
-
Die 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 enthält zwei
+1-Addierer 53 und 56.
Somit ist die Rechengeschwindigkeit der gesamten 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14 um
die Zeitdauer niedriger, die für
die von den zwei +1-Addierern 53 und 56 ausgeführte Addition
erforderlich ist. Außerdem
erhöht
die Verwendung der zwei +1-Addierer 53 und 56 die
Größe der 2er-Komplement-Absolutwert-Subtraktionsvorrichtung 14.
-
JP 10-161850 A offenbart einen digitalen
Datenkomparator mit einer ersten selektiven Dateninversionsschaltung,
die erste Eingangsdaten invertiert, wenn das Vorzeichen der ersten
Eingangsdaten negativ ist, oder die ersten Eingangsdaten ausgibt, wenn
das Vorzeichen positiv ist, mit einer ersten Additionsschaltung,
die mit einem Ausgang der ersten selektiven Dateninversionsschaltung
gekoppelt ist, und die zu dem niedrigstwertigen Bit eins addiert, wenn
das Vorzeichen der ersten Eingangsdaten negativ ist, oder die ersten
Eingangsdaten ausgibt, wenn das Vorzeichen positiv ist, mit einer
zweiten selektiven Dateninversionsschaltung, die die zweiten Eingangsdaten
invertiert, wenn das Vorzeichen der zweiten Eingangsdaten positiv
ist, oder die zweiten Eingangsdaten ausgibt, wenn das Vorzeichen
negativ ist, und mit einer zweiten Additionsschaltung, die eine
Ausgabe der ersten Additionsschaltung und eine Ausgabe der zweiten
selektiven Dateninversionsschaltung addiert.
-
US 3.829.671 offenbart
eine Arithmetik-Logik-Schaltung, die einen Algorithmus ausführt, der die
Quadratwurzel der Summe von zwei Quadraten annähert. Eine Hardware-Anordnung
und ein Verfahren verwenden EXKLUSIV-ODER-Schaltungen anstelle einer
durch herkömmliche
Addierer-Subtrahierer-Schaltungen bereitgestellten herkömmlichen 2er-Komplementanordnung.
Die zu quadrierenden Werte werden in positivwertige digitale Signale
umgewandelt, verglichen, und das Steuersignal von der Vergleichsschaltung
verwendet, um den vollen Wert des größeren digitalen Signals und
den halben Wert des kleineren digitalen Signals in einer Addiererschaltung
zu befehlen, die ein Korrektursignal empfängt, falls einer der digitalen
Eingabewerte negativ ist. Je nachdem, ob das größere oder das kleinere der
digitalen Signale negativ ist, kann das Korrektursignal zu der niedrigstwertigen
Ordnung des Addiererausgangssignals oder zu der zweitniedrigstwertigen
Ordnung addiert werden.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Gemäß einem Aspekt der Erfindung
wird eine Rechenvorrichtung zum Empfangen einer 2er Komplement Darstellung
eines ersten Werts und einer 2er Komplement Darstellung eines zweiten
Werts und zum Ausgeben einer Information, welche angibt, welcher
eines absoluten Werts des ersten Werts oder eines absoluten Werts
des zweiten Werts größer ist, geschaffen.
-
Die wie in dem unabhängigen Anspruch
1 definierte Rechenvorrichtung enthält eine erste 1er Komplement
Absolutwert-Berechnungsvorrichtung zum Umwandeln des ersten Werts
in eine 1er Komplement Darstellung und zum Ausgeben der erhaltenen
1er Komplement Darstellung, wenn ein Vorzeichen des ersten Werts
negativ ist, und zum Ausgeben des ersten Werts wie er ist, wenn
das Vorzeichen des ersten Werts nicht negativ ist; eine zweite 1er Komplement
Absolutwert-Berechnungsvorrichtung zum Umwandeln des zweiten Werts
in eine 1er Komplement Darstellung und zum Ausgeben der erhaltenen
1er Komplement Darstellung, wenn ein Vorzeichen des zweiten Werts
negativ ist, und zum Ausgeben des zweiten Werts wie er ist, wenn
das Vorzeichen des zweiten Werts nicht negativ ist; und eine Anzeigeinformations-Ausgabevorrichtung
zum Ausgeben einer Anzeigeinformation, welche anzeigt, welcher des
Absolutwerts des ersten Werts oder des Absolutwerts des zweiten
Werts größer ist,
basierend auf der Ausgabe der ersten 1er Komplement Absolutwert-Berechnungsvorrichtung
und der Ausgabe der zweiten 1er Komplement Absolutwert-Berechnungsvorrichtung,
wobei die Berechnungsvorrichtung weiter eine Auswahlvorrichtung
zum Ausgeben entweder des ersten Werts oder des zweiten Werts, welcher
den größeren Absolutwert
hat, aufweist.
-
In einer Ausführungsform der Erfindung wählt die
Auswahlvorrichtung aus und gibt entweder den ersten Wert oder den
zweiten Wert aus, welcher ein positives Vorzeichen hat, wenn der
Absolutwert des ersten Werts und der Absolutwert des zweiten Werts
gleich zueinander sind und das Vorzeichen des ersten Werts und das
Vorzeichen des zweiten Werts voneinander verschieden sind.
-
In einer Ausführungsform der Erfindung subtrahiert
die Anzeigeinformations-Ausgabevorrichtung die
Ausgabe der zweiten 1er Komplement Absolutwert-Berechnungsvorrichtung von der Ausgabe
der ersten 1er Komplement Absolutwert-Berechnungsvorrichtung und
gibt das Subtraktionsergebnis aus.
-
In einer Ausführungsform der Erfindung umfasst
die zweite 1er Komplement Absolutwert-Berechnungsvorrichtung eine
Inversionsvorrichtung zum Invertieren von jedem der Bits der 1er-Komplement
Darstellung des zweiten Werts, wenn das Vorzeichen des zweiten Werts
negativ ist, und zum Invertieren von jedem der Bits des zweiten
Werts, wenn das Vorzeichen des zweiten Werts positiv ist. Die Anzeigeinformations-Ausgabevorrichtung
erhält eine
Summe der Ausgabe der ersten 1er Komplement Absolutwert-Berechnungsvorrichtung
und der Ausgabe der zweiten 1er Komplement Absolutwert-Berechnungsvorrichtung,
addiert 1 zu der Summe, und gibt das Additionsergebnis aus.
-
In einer Ausführungsform der Erfindung weist
die Berechnungsvorrichtung weiter eine Nullwert-Bestimmungsvorrichtung
zum Bestimmen auf, ob die Ausgabe der Anzeigeinformations-Ausgabevorrichtung
0 ist oder nicht, wobei die Auswahlvorrichtung den zweiten Wert
auswählt
und ausgibt, wenn die Ausgabe der Anzeigeinformations-Ausgabevorrichtung
negativ ist oder wenn die Ausgabe der Anzeigeinformations-Ausgabevorrichtung
0 ist und das Vorzeichen des zweiten Werts negativ ist, und wählt sonst
den ersten Wert aus und gibt ihn aus.
-
Gemäß einem weiteren Aspekt der
Erfindung, wie er im unabhängigen
Anspruch 6 definiert ist, wird ein Berechnungsverfahren zum Herausfinden,
welcher eines Absolutwerts einer 2er-Komplement Darstellung eines
ersten Werts oder eines Absolutwerts einer 2er-Komplement Darstellung
eines zweiten Werts größer ist,
geschaffen. Das Berechnungsverfahren weist einen ersten 1er Komplement Absolutwert-Berechnungsschritt
zum Umwandeln des ersten Werts in eine 1er Komplement Darstellung,
wenn ein Vorzeichen des ersten Werts negativ ist, und zum Beibehalten
des ersten Werts wie er ist, wenn das Vorzeichen des ersten Werts
nicht negativ ist; einen zweiten 1er Komplement Absolutwert-Berechnungsschritt
zum Umwandeln des zweiten Werts in eine 1er Komple ment Darstellung,
wenn ein Vorzeichen des zweiten Werts negativ ist und zum Beibehalten
des zweiten Werts wie er ist, wenn das Vorzeichen des zweiten Werts
nicht negativ ist; und einen Anzeigeinformationsschritt zum Auffinden
einer Anzeigeinformation, welche anzeigt, welcher, der Absolutwert
des ersten Werts oder der Absolutwert des zweiten Werts größer ist,
basierend auf dem Wert, welcher erhalten wurde durch den ersten
1er Komplement Absolutwert-Berechnungsschritt und dem Wert, welcher
erhalten wurde durch den zweiten 1er Komplement Absolutwert-Berechnungsschritt,
wobei das Berechnungsverfahren weiter einen Auswahlschritt zum Auswählen entweder
des ersten Werts oder des zweiten Werts, welcher den größeren Absolutwert
hat, aufweist.
-
In einer Ausführungsform der Endung umfasst
das Berechnungsverfahren den Schritt des Auswählens entweder des ersten Werts
oder des zweiten Werts, welcher ein positives Vorzeichen hat, als
einen Wert, welcher einen größeren Absolutwert hat,
wenn der Absolutwert des ersten Wertes und der Absolutwertes des
zweiten Wertes gleich zueinander sind und das Vorzeichen des ersten
Werts und das Vorzeichen des zweiten Werts verschieden voneinander
sind In einer Ausführungsform
der Erfindung umfasst das Berechnungsverfahren den Schritt des Subtrahierens
der Ausgabe der zweiten 1er Komplement Absolutwert-Berechnungsvorrichtung
von der Ausgabe der ersten 1er Komplement Absolutwert-Berechnungsvorrichtung
und das Ausgeben des Subtraktionsergebnisses.
-
In einer Ausführungsform der Erfindung umfasst
der zweite 1er Komplement Absolutwert-Berechnungsschritt den Schritt
des Invertierens von jedem der Bits der 1er Komplement Darstellung
des zweiten Werts, wenn das Vorzeichen des zweiten Werts negativ
ist, und das Invertieren von jedem der Bits des zweiten Werts, wenn
das Vorzeichen des zweiten Werts nicht negativ ist. Der Anzeigeinformations-Ausgabeschritt
enthält
den Schritt des Erhaltens einer Summe der Ausgabe erhalten durch
den ersten 1er Komplement Absolutwert-Berechnungsschritt und der
Ausgabe erhalten durch den zweiten 1er Komplement Absolutwert-Berechnungsschritt, des
Addierens von 1 zu der Summe, und des Ausgebens des Additionsergebnisses.
-
In einer Ausführungsform der Erfindung weist
das Berechnungsverfahren weiter einen Nullwertbestimmungsschritt
zum Bestimmen, ob die Ausgabe, welche erhalten wurde durch den Anzeigeinformationsschritt,
0 ist oder nicht, auf, wobei der Auswahlschritt den Schritt des
Auswählens
und Ausgebens des zweiten Werts als einen Wert umfasst, welcher
einen größeren Absolutwert
hat, wenn der Wert, welcher erhalten wurde durch den Anzeigeinformationsschritt,
negativ ist oder wenn der Wert, welcher erhalten wurde durch den
Anzeigeinformationsschritt, 0 ist, und das Vorzeichen des zweiten
Werts negativ ist, und Auswählen
und Ausgeben des ersten Werts sonst.
-
Gemäß einem nochmals weiteren Aspekt der
Erfindung enthält
ein Prozessor einen Datenbusabschnitt; und einen Steuerabschnitt
zum Steuern des Datenbusabschnitts. Der Steuerabschnitt enthält eine
Ausführungsbefehl-Speichervorrichtung
zum Speichern eines Ausführungsbefehls
und eine Decodiervorrichtung zum Ausgeben eines Steuersignals, das
durch Decodieren des aus der Ausführungsbefehl-Speichervorrichtung
gelesenen Ausführungsbefehls
erhalten wird. Der Datenbusabschnitt enthält eine Berechnungsvorrichtung
zum Empfangen einer 2er Komplement Darstellung eines ersten Werts
und einer 2er Komplement Darstellung eines zweiten Werts und zum
Ausgeben einer Information, welche anzeigt, welcher eines Absolutwerts
des ersten Werts oder eines Absolutwerts des zweiten Werts größer ist.
Die Berechnungsvorrichtung enthält
eine erste 1er Komplement Absolutwert-Berechnungsvorrichtung zum
Umwandeln des ersten Werts in eine 1er Komplement Darstellung und
zum Ausgeben der erhaltenen 1er Komplement Darstellung, wenn ein Vorzeichen
des ersten Werts negativ ist, und zum Ausgeben des ersten Werts
wie er ist, wenn das Vorzeichen des ersten Werts nicht negativ ist;
eine zweite 1er Komplement Absolutwert-Berechnungsvorrichtung zum
Umwandeln des zweiten Werts in eine 1er Komplement Darstellung und
zum Ausgeben der erhaltenen 1er Komplement Darstellung, wenn ein Vorzeichen
des zweiten Werts negativ ist, und zum Ausgeben des zweiten Werts
wie er ist, wenn das Vorzeichen des zweiten Werts nicht negativ
ist; und eine Anzeigeinformations-Ausgabevorrichtung zum Ausgeben
einer Anzeigeinformation, welche anzeigt, welcher des Absolutwerts
des ersten Werts oder des Absolutwerts des zweiten Werts größer ist,
basierend auf der Ausgabe der ersten 1er Komplement Absolutwert-Berechnungsvorrichtung
und der Ausgabe der zweiten 1er Komplement Absolutwert-Berechnungsvorrichtung.
-
In einer Ausführungsform der Erfindung enthält die Berechnungsvorrichtung
ferner eine Auswahlvorrichtung zum Ausgeben entweder des ersten Werts
oder des zweiten Werts, welcher den größeren Absolutwert hat, wobei
die Auswahlvorrichtung entweder den ersten Wert oder den zweiten
Wert auswählt
und ausgibt, welcher ein positives Vorzeichen hat, wenn der Absolutwert
des ersten Werts und der Absolutwert des zweiten Werts gleich sind
und das Vorzeichen des ersten Werts und das Vorzeichen des zweiten
Werts verschieden voneinander sind.
-
Somit ermöglicht die hier beschriebene
Erfindung die Vorteile, eine Berechnungsvorrichtung die einen negativen
Wert mit dem maximalen Absolutwert in dem Bereich der Zahlenwerte,
die mit einer vorgeschriebenen Bitbreite dargestellt werden können, genau
verarbeitet und die minimal mögliche
Bitbreite zur Darstellung der gegebenen Daten bestimmt, ein Berechnungsverfahren,
das diese Verarbeitung unter Verwendung der Berechnungsvorrichtung
ausführt,
und einen Prozessor, der eine solche Berechnungsvorrichtung enthält, zu schaffen.
-
Diese und weitere Vorteile der vorliegenden Erfindung
werden für
den Fachmann auf dem Gebiet beim Lesen und Verständnis der folgenden ausführlichen
Beschreibung anhand der beigefügten
Figuren offensichtlich.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
1 ist
ein Blockschaltplan eines Prozessors in einem ersten Beispiel gemäß der vorliegenden
Erfindung;
-
2A ist
ein Blockschaltplan einer in 1 gezeigten
1er-Komplement-Absolutwert-Subtraktionsvorrichtung;
-
2B zeigt
ein Programm zum Ausführen einer
Berechnung gemäß der vorliegenden
Erfindung;
-
2C zeigt
verschiedene Zahlenwerte in einem ersten Zyklus eines ersten Operationsbeispiels
des in 1 gezeigten Prozessors;
-
2D zeigt
verschiedene Zahlenwerte in einem zweiten Zyklus des ersten Operationsbeispiels des
in 1 gezeigten Prozessors;
-
2E zeigt
verschiedene Zahlenwerte in einem dritten Zyklus des ersten Operationsbeispiels des
in 1 gezeigten Prozessors;
-
2F zeigt
verschiedene Zahlenwerte in einem vierten Zyklus des ersten Operationsbeispiels des
in 1 gezeigten Prozessors;
-
2G zeigt
verschiedene Zahlenwerte in einem zweiten Operationsbeispiel des
in 1 gezeigten Prozessors;
-
2H zeigt
verschiedene Zahlenwerte in einem dritten Operationsbeispiel des
in 1 gezeigten Prozessors;
-
3A ist
ein Blockschaltplan eines Prozessors in einem zweiten Beispiel gemäß der vorliegenden
Erfindung;
-
3B ist
ein Blockschaltplan einer in 3A gezeigten
1er-Komplement-Absolutwert-Subtraktionsvorrichtung;
-
3C zeigt
verschiedene Zahlenwerte in einem ersten Zyklus eines ersten Operationsbeispiels
des in 3A gezeigten
Prozessors;
-
3D zeigt
verschiedene Zahlenwerte in einem zweiten Zyklus des ersten Operationsbeispiels des
in 3A gezeigten Prozessors;
-
3E zeigt
verschiedene Zahlenwerte in einem dritten Zyklus des ersten Operationsbeispiels des
in 3A gezeigten Prozessors;
-
3F zeigt
verschiedene Zahlenwerte in einem vierten Zyklus des ersten Operationsbeispiels des
in 3A gezeigten Prozessors;
-
3G zeigt
verschiedene Zahlenwerte in einem zweiten Operationsbeispiel des
in 3A gezeigten Prozessors;
-
3H zeigt
verschiedene Zahlenwerte in einem dritten Operationsbeispiel des
in 3A gezeigten Prozessors;
-
4 ist
ein Blockschaltplan eines Prozessors in einem dritten Beispiel gemäß der vorliegenden
Erfindung;
-
5A ist
ein Blockschaltplan einer in 4 gezeigten
Vorrichtung zur Berechnung des maximalen Absolutwerts;
-
5B zeigt
ein Programm zum Ausführen einer
durch den in 4 gezeigten
Prozessor ausgeführten
Berechnung;
-
5C zeigt
verschiedene Zahlenwerte in einem ersten Zyklus eines ersten Operationsbeispiels
des in 4 gezeigten Prozessors;
-
5D zeigt
verschiedene Zahlenwerte in einem zweiten Zyklus des ersten Operationsbeispiels des
in 4 gezeigten Prozessors;
-
5E zeigt
verschiedene Zahlenwerte in einem dritten Zyklus des ersten Operationsbeispiels des
in 4 gezeigten Prozessors;
-
5F zeigt
verschiedene Zahlenwerte in einem vierten Zyklus des ersten Operationsbeispiels des
in 4 gezeigten Prozessors;
-
5G zeigt
verschiedene Zahlenwerte in einem zweiten Operationsbeispiel des
in 4 gezeigten Prozessors;
-
5H zeigt
verschiedene Zahlenwerte in einem dritten Operationsbeispiel des
in 4 gezeigten Prozessors;
-
6A ist
ein Blockschaltplan eines Prozessors in einem vierten Beispiel gemäß der vorliegenden
Erfindung;
-
6B ist
ein Blockschaltplan einer in 6A gezeigten
Vorrichtung zur Berechnung des maximalen Absolutwerts;
-
6C zeigt
verschiedene Zahlenwerte in einem ersten Zyklus eines ersten Operationsbeispiels
des in 6A gezeigten
Prozessors;
-
6D zeigt
verschiedene Zahlenwerte in einem zweiten Zyklus des ersten Operationsbeispiels des
in 6A gezeigten Prozessors;
-
6E zeigt
verschiedene Zahlenwerte in einem dritten Zyklus des ersten Operationsbeispiels des
in 6A gezeigten Prozessors;
-
6F zeigt
verschiedene Zahlenwerte in einem vierten Zyklus des ersten Operationsbeispiels des
in 6A gezeigten Prozessors;
-
6G zeigt
verschiedene Zahlenwerte in einem zweiten Operationsbeispiel des
in 6A gezeigten Prozessors;
-
6H zeigt
verschiedene Zahlenwerte in einem dritten Operationsbeispiel des
in 6A gezeigten Prozessors;
-
6I zeigt
verschiedene Zahlenwerte in einem vierten Operationsbeispiel des
in 6A gezeigten Prozessors;
-
6J zeigt
eine weitere Menge verschiedener Zahlenwerte in einem vierten Operationsbeispiel des
in 6A gezeigten Prozessors;
-
6K zeigt
ein Programm zum Ausführen einer
durch den in 6A gezeigten
Prozessor ausgeführten
Berechnung;
-
7 ist
ein Blockschaltplan einer weiteren 1er-Komplement-Absolutwert-Berechnungsvorrichtung,
die in dem in 6A gezeigten
Prozessor verwendet werden kann;
-
8 ist
ein Diagramm, das eine Struktur einer Exklusiv-ODER-Berechnungsvorrichtung
veranschaulicht, die in der in 7 gezeigten
1er-Komplement-Absolutwert-Berechnungsvorrichtung enthalten ist;
-
9 ist
ein Diagramm, das eine Struktur einer Exklusiv-ODER-Berechnungsvorrichtung
veranschaulicht, die in einer weiteren 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung
enthalten ist, die in dem in 6A gezeigten
Prozessor verwendet werden kann;
-
10 ist
ein Blockschaltplan einer nochmals weiteren 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung,
die in dem in 6A gezeigten
Prozessor verwendet werden kann;
-
11 zeigt
eine Datengruppe, aus der die Daten mit dem maximalen Absolutwert
erhalten werden;
-
12 zeigt
die Änderung
der durch die Prozessoren gemäß der vorliegenden
Erfindung und durch den herkömmlichen
Prozessor ausgewählten Daten,
bis die Daten mit dem maximalen Absolutwert bestimmt sind, sowie
die erhaltenen Daten mit dem maximalen Absolutwert;
-
13 ist
ein Blockschaltplan eines Prozessors in einem fünften Beispiel gemäß der vorliegenden
Erfindung;
-
14 ist
ein Blockschaltplan einer in dem in 13 gezeigten
Prozessor enthaltenen ALU;
-
15 zeigt
verschiedene Typen von durch den in 13 gezeigten
Prozessor ausgeführten
Berechnungen sowie die erhaltenen Berechnungsergebnisse;
-
16 ist
ein Blockschaltplan eines herkömmlichen
Prozessors;
-
17 zeigt
ein Programm zum Ausführen einer
Berechnung unter Verwendung des herkömmlichen Prozessors;
-
18 zeigt
eine Datengruppe, aus der der Wert mit dem maximalen Absolutwert
ermittelt wird;
-
19 ist
ein Blockschaltplan eines weiteren herkömmlichen Prozessors;
-
20 ist
ein Blockschaltplan einer in dem in 19 gezeigten
Prozessor enthaltenen 2er-Komplement-Absolutwert-Berechnungsvorrichtung;
-
21 zeigt
ein Programm zum Ausführen einer
Berechnung, die durch die Prozessoren gemäß der vorliegenden Erfindung
und durch den herkömmlichen
Prozessor ausgeführt
wird;
-
22A zeigt
verschiedene Zahlenwerte in einem ersten Zyklus einer Operation
des in 19 gezeigten
Prozessors;
-
22B zeigt
verschiedene Zahlenwerte in einem zweiten Zyklus einer Operation
des in 19 gezeigten
Prozessors;
-
22C zeigt
verschiedene Zahlenwerte in einem dritten Zyklus einer Operation
des in 19 gezeigten
Prozessors;
-
22D zeigt
verschiedene Zahlenwerte in einem vierten Zyklus einer Operation
des in 19 gezeigten
Prozessors; und
-
22E zeigt
verschiedene Zahlenwerte, wenn durch den in 19 gezeigten Prozessor ein negativer
Wert mit dem maximalen Absolutwert verarbeitet wird.
-
BESCHREIBUNG
DER AUSFÜHRUNGSFORMEN
-
Im Folgenden wird die vorliegende
Erfindung anhand der beigefügten
Zeichnung über
veranschaulichende Beispiele beschrieben.
-
In dieser Beschreibung ist der Ausdruck "Umwandeln in eine
1er-Komplement-Darstellung" als Ausführung einer
1er-Komplement-Darstellungsprozedur, d. h. als Invertieren aller
Bits der Eingangsdaten, definiert.
-
Außerdem wird dem Bitstrom in
dieser Beschreibung "0b" vorangestellt, wenn
Daten auf binäre Weise
dargestellt werden. Wenn der Bitstrom einen Wert darstellt, wird
der Wert "0b" vorangestellt. Das Vorzeichen
des Werts der Daten ist negativ, wenn der Wert des MSB (höchstwertigen
Bit) 1 ist, während
er positiv ist, wenn der Wert des MSB 0 ist. Beispielsweise ist
der Wert "5" im Dezimalsystem "5(0b0101)", wenn er in dem
Binärsystem
mit dem 2er-Komplement dargestellt wird, und außerdem "5(0b0101)", wenn er im Binärsystem mit dem 1er-Komplement dargestellt
wird. Der Wert "–5" im Dezimalsystem
ist "–5(0b1011)", wenn er in dem
Binärsystem
mit dem 2er-Komplement dargestellt wird, und außerdem "–5(0b1010)", wenn er im Binärsystem
mit dem 1er-Komplement dargestellt wird.
-
In den folgenden Beispielen tragen
Elemente, die jenen entsprechen, die hinsichtlich des herkömmlichen
Gebiets oder in irgendeinem zuvor beschriebenen Beispiel beschrieben
worden sind, gleiche Bezugszeichen.
-
(Beispiel 1)
-
Anhand von 1 wird ein erstes Beispiel gemäß der vorliegenden
Erfindung beschrieben. 1 ist
ein Blockschaltplan eines Prozessors 100 in dem ersten
Beispiel. Der Prozessor 100 enthält einen Datenbusabschnitt 2 zum
Ausführen
von Berechnungen und einen Steuerabschnitt 1 zum Steuern
des Datenbusabschnitts 2.
-
Der Steuerabschnitt 1 enthält einen
Programmzähler 3,
einen Ausführungsbefehlsspeicher 4 und
einen Decodierer 5. Der Programmzähler 3, der Ausführungsbefehlsspeicher 4 und
der Decodierer 5 sind völlig
gleich zu jenen in dem Prozessor 190 (19), so dass ihre ausführlichen
Beschreibungen weggelassen werden.
-
Der Datenbusabschnitt 2 enthält eine
ALU 6, eine 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 als
eine Berechnungsvorrichtung, eine Registerdatei 7, einen
Datenspeicher 8 und einen Merkereinstellabschnitt 9.
Die ALU 6, die Registerdatei 7 und der Datenspeicher 8 sind
völlig
gleich zu jenen in dem Prozessor 190 (19), so dass ihre ausführlichen
Beschreibungen weggelassen werden. Der Merkereinstellabschnitt 9 enthält ein Merkerregister
N und ein Merkerregister Z wie die, die in 19 gezeigt sind. Die Bedingungen zum
Einstellen der Merker widerspiegeln das Berechnungsergebnis der
ALU 6 und außerdem
das Subtraktionsergebnis der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13.
-
Die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 vergleicht
unter Verwendung des 1er-Komplements die Absolutwerte der zwei Werte, die
jeweils in den zwei durch das Steuersignal 10 bestimmten
Registern in der Registerdatei 7 enthalten sind. Das Vergleichsergebnis
wird als Anzeigeinformationen ausgegeben, die anzeigen, welcher
der zwei Werte den größeren Absolutwert
hat.
-
2A zeigt
eine Struktur der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13.
Die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 enthält eine
erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20,
eine zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 und
eine Subtraktionsvorrichtung 22 (als eine Anzeigeinformations-Ausgabevorrichtung).
-
Die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 führt unter
Verwendung einer 1er-Komplement-Darstellungsprozedur an der Eingabe
A (69) eine Absolutwertberechnung aus und gibt den Wert
62 nach der Berechnung des Absolutwerts aus. Die zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 führt unter
Verwendung der 1er-Komplement-Darstellungsprozedur an der Eingabe
B (70) eine Absolutwertberechnung aus und gibt das Ergebnis 63 nach
der Berechnung des Absolutwerts aus. Das heißt, wenn das Vorzeichen des
Eingabewerts negativ ist, verwenden die erste und die zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 und 21 anstelle
der 2er-Komplement-Darstellungsprozedur
die 1er-Komplement-Darstellungsprozedur, um den Eingabewert zu invertieren
und den invertierten Wert auszugeben. Die Subtraktionsvorrichtung 22 subtrahiert
den Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62
nach der Berechnung des Absolutwerts und gibt das Ergebnis 65 der
Berechnung des Absolutwertvergleichs (die Anzeigeinformationen 65)
aus.
-
Die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 enthält einen
Inverter 23 mit einer Auswahleinrichtung 24. Der
Inverter 23 invertiert alle Bits der Eingangsdaten (Eingabe
A (69)) (1er-Komplement-Darstellungsprozedur) und gibt den
invertierten Wert 60 aus. Die Auswahleinrichtung 24 wählt den
invertierten Wert 60 aus, wenn das Vorzeichen der Eingabe A (69)
negativ ist, während
sie sonst die Eingabe A (69) auswählt. Der ausgewählte Wert
wird als der Wert 62 nach der Berechnung des Absolutwerts ausgegeben.
-
Die zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 enthält einen
Inverter 25 und eine Auswahleinrichtung 26. Der
Inverter 25 invertiert alle Bits der Eingangsdaten (Eingabe
B (70)) (1er-Komplement-Darstellungsprozedur) und gibt den
invertierten Wert 61 aus. Die Auswahleinrichtung 26 wählt den
invertierten Wert 61 aus, wenn das Vorzeichen der Eingabe B (70)
negativ ist, während
sie sonst die Eingabe B (70) auswählt. Der ausgewählte Wert
wird als der Wert 63 nach der Berechnung des Absolutwerts ausgegeben.
-
Die Bitbreiten der 5 Register A,
B, C, D und P, die Bitbreite des Datenspeichers 8 und die
Bitbreite der in die ALU 6 eingegebenen und der aus ihr ausgegebenen
Daten sind sämtlich
4 Bits. Die Bitbreite der in die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 eingegebenen
und aus ihr ausgegebenen Daten sowie die Bitbreite in Bezug auf
die Rechengenauigkeit betragen alle 4 Bits.
-
Der Prozessor 100 (1) besitzt die gleichen
Ausführungsbefehle
wie der Prozessor 190 (19).
Der Befehl "abcmp" wird durch die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 (1 und 2A) ausgeführt. Das heißt, durch den
Befehl "abcmp" werden die Absolutwerte
der durch Ausführen
der 1er-Komplement-Darstellungsprozedur
erhaltenen Zahlenwerte miteinander verglichen. 2B zeigt ein Programm, das ausführlich die
in 21 gezeigte Verarbeitung
unter Verwendung mehrerer Schritte darstellt. In diesem Programm
ist "absl a, b" ein Befehl zum Erhalten
des Absolutwerts der 1er-Komplement-Darstellung des Werts im Register
b und zum Einstellen des erhaltenen Absolutwerts im Register a,
während "jmp(be) label" ein Befehl zum Springen
zur Marke ist, wenn das Merkerregister N = 0 ist. Die Schritte (16),
(17) und (6) entsprechen dem Befehl "abcmp".
-
Im Folgenden wird eine Operation
des Prozessors 100 in dem ersten Beispiel beschrieben.
-
<Operationsbeispiel 1>
-
Hauptsächlich hinsichtlich des Befehls "abcmp", der die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 (2A) verwendet, wird beschreiben,
wie die Daten mit dem maximalen Absolutwert unter vier Stücken praktischer
Daten, die in 18 gezeigt
sind, ermittelt werden.
-
Außerdem verwendet der Prozessor 100 wie der
herkömmliche
Prozessor 190 (19)
das in 21 gezeigte
Programm, um die Verarbeitung zum Ermitteln des maximalen Absolutwerts
auszuführen.
Die Verarbeitung in den Schritten (1) und (2) ist
völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem ersten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 ausgeführt. Diese
wird anhand von 2C beschrieben.
-
Der Wert des Registers C, "0(0b0000)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "3(0b0011)", als die Eingabe
B (70) eingegeben wird.
-
Der Wert der Eingabe A (69), "0(0b0000)", wird in die erste
1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b1111)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "0(0b0000)", null ist, wählt somit
die Eingabe A (69) aus und gibt "(0b0000)" als den Wert 62 nach der Berechnung
des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "3(0b0011)", wird in die zweite
1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 eingegeben.
Da alle Bits des Werts durch den Inverter 25 invertiert
werden, ist der invertierte Wert 61 "(0b1100)". Die Auswahleinrichtung 26 bestimmt,
dass das Vorzeichen des Werts der Eingabe B (70), "3(0b0011)", positiv ist, wählt somit
die Eingabe B (70) aus und gibt "(0b0011)" als den Wert 63 nach der Berechnung
des Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "(0b1101)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b1101)" eine Bestimmung
vor und setzt das Merkerregister N = 1 und das Merkerregister Z
= 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem zweiten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 ausgeführt. Diese
wird anhand von 2D beschrieben.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "–5(0b1011)", als die Eingabe B
(70) eingegeben wird.
-
Der Wert der Eingabe A (69), "3(0b0011)", wird in die erste
1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b1100)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "3(0b0011)", positiv ist, wählt somit
die Eingabe A (69) aus und gibt "(0b0011)" als den Wert 62 nach der Berechnung
des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "–5(0b1011)", wird in die zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 eingegeben.
Da alle Bits des Werts durch den Inverter 25 invertiert
werden, ist der invertierte Wert 61 "(0b0100)". Die Auswahleinrichtung 26 bestimmt,
dass das Vorzeichen des Werts der Eingabe B (70), "–5(0b1011)", negativ ist, wählt somit den invertierten
Wert 61 aus und gibt "(0b0100)" als den Wert 63
nach der Berechnung des Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "(0b1111)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b1111)" eine Bestimmung
vor und setzt das Merkerregister N = 1 und das Merkerregister Z
= 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem dritten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 ausgeführt. Diese
wird anhand von 2E beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69) eingegeben,
während
der Wert des Registers A, "–2(0b1110)", als die Eingabe B
(70) eingegeben wird.
-
Der Wert der Eingabe A (69), "–5(0b1011)", wird in die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b0100)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "–5(0b1011)", negativ ist, wählt somit den invertierten
Wert 60 aus und gibt "(0b0100)" als den Wert 62
nach der Berechnung des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "–2(0b1110)", wird in die zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 eingegeben.
Da alle Bits des Werts durch den Inverter 25 invertiert
werden, ist der invertierte Wert 61 "(0b0001)". Die Auswahleinrichtung 26 bestimmt,
dass das Vorzeichen des Werts der Eingabe B (70), "–2(0b1110)", positiv ist, wählt somit den invertierten
Wert 61 aus und gibt "(0b0001)" als den Wert 63
nach der Berechnung des Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "(0b0011)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b0011)" eine Bestimmung
vor und setzt das Merkerregister N = 0 und das Merkerregister Z
= 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem vierten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 ausgeführt. Diese
wird anhand von 2F beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "6(0b0110)", als die Eingabe
B (70) eingegeben wird.
-
Der Wert der Eingabe A (69), "–5(0b1011)", wird in die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b0100)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "–5(0b1011)", negativ ist, wählt somit den invertierten
Wert 60 aus und gibt "(0b0100)" als den Wert 62
nach der Berechnung des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "6(0b0110)", wird in die zweite
1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 eingegeben.
Da alle Bits des Werts durch den Inverter 25 invertiert
werden, ist der invertierte Wert 61 "(0b1001)". Die Auswahleinrichtung 26 bestimmt,
dass das Vorzeichen des Werts der Eingabe B (70), "6(0b0110)", positiv ist, wählt somit
die Eingabe B (70) aus und gibt "(0b0110)" als den Wert 63 nach der Berechnung
des Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "(0b1110)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b1110)" eine Bestimmung
vor und setzt das Merkerregister N = 1 und das Merkerregister Z
= 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Durch diese Verarbeitung kann unter
Verwendung der 1er-Komplement-Darstellungsprozedur anstelle der
2er-Komplement-Darstellungsprozedur in dem Register C der maximale
Absolutwert "6" ermittelt werden.
-
<Operationsbeispiel 2>
-
Anhand von 2G wird die Verarbeitung im Schritt (14)
beschrieben, wenn im Register A "0(0b0000)" eingestellt ist
und wenn im Register C "–8(0b1000)" eingestellt ist.
Wie oben beschrieben wurde, ist "–8(0b1000)" ein negativer Wert
mit dem maximalen Absolutwert im Bereich der Zahlenwerte, die durch
die 2er-Komplemente
mit einer vorgeschriebenen Bitbreite dargestellt werden können. Bei dem
herkömmlichen
Prozessor 190 findet der Überlauf statt, wobei eine genaue Berechnung
unmöglich ist.
Es wird der Befehl "abcmp
C, A" verwendet.
-
Der Wert des Registers C, "–8(0b1000)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "0(0b0000)", als die Eingabe
B (70) eingegeben wird.
-
Der Wert der Eingabe A (69), "–8(0b1000)", wird in die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b0111)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "–8(0b1000)", negativ ist, wählt somit den invertierten
Wert 60 aus und gibt "0(0b0111)" als den Wert 62
nach der Berechnung des Absolutwerts aus. Somit wird das Vorzeichen normalerweise
invertiert, ohne dass dies wie bei dem Prozessor 190 (19) einen Überlauf
verursacht.
-
Der Wert der Eingabe B (70), "0(0b0000)", wird in die zweite
1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 eingegeben.
Da alle Bits des Werts durch den Inverter 25 invertiert
werden, ist der invertierte Wert 61 "(0b1111)". Die Auswahleinrichtung 26 bestimmt,
dass der Wert der Eingabe B (70), "0(0b0000)", null ist, wählt somit die Eingabe B (70)
aus und gibt "(0b0000)" als den Wert 63
nach der Berechnung des Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "(0b0111)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus. Das heißt, das Subtraktionsergebnis
von |–8|–|0| ist
positiv; d. h., der Vergleich zwischen |–8| und |0| erfolgt richtig.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b0111)" eine Bestimmung
vor und setzt das Merkerregister N = 0 und das Merkerregister Z
= 0.
-
Da im Schritt (7) das Merkerregister
N = 0 und das Merkerregister Z = 0 ist, schreitet die Verarbeitung
zu Schritt (9) fort. Der Wert des Registers A wird nicht
im Register C eingestellt.
-
Auf diese Weise verursacht der Prozessor 100 selbst
dann keinen Überlauf,
wenn der negative Wert mit dem maximalen Absolutwert eingegeben wird,
während
er die zwei Zahlenwerte richtig vergleicht.
-
<Operationsbeispiel 3>
-
Anhand von 2H wird die Verarbeitung im Schritt (14)
beschrieben, wenn im Register A "–4(0b1100)" eingestellt ist
und wenn im Register C "3(0b0011)" eingestellt ist.
Es wird der Befehl "abcmp C,
A" verwendet.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "–4(0b1100)", als die Eingabe B
(70) eingegeben wird.
-
Der Wert der Eingabe A (69), "3(0b0011)", wird in die erste
1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b1100)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "3(0b0011)", positiv ist, wählt somit
die Eingabe A (69) aus und gibt "(0b0011)" als den Wert 62 nach der Berechnung
des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "–4(0b1100)", wird in die zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 eingegeben.
Da alle Bits des Werts durch den Inverter 25 invertiert
werden, ist der invertierte Wert 61 "(0b0011)". Die Auswahleinrichtung 26 bestimmt,
dass der Wert der Eingabe B (70), "–4(0b1100)", negativ ist, wählt somit
den invertierten Wert 61 aus und gibt "(0b0011)" als den Wert 63 nach der Berechnung
des Absolutwerts aus.
-
Die Subtraktionsvorrichtung 22 subtrahiert den
Wert 63 nach der Berechnung des Absolutwerts von dem Wert 62 nach
der Berechnung des Absolutwerts und gibt "(0b0000)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b0000)" eine Bestimmung
vor und setzt das Merkerregister N = 0 und das Merkerregister Z
= 1.
-
Da im Schritt (7) das Merkerregister
N = 0 und das Merkerregister Z = 1 ist, schreitet die Verarbeitung
zu Schritt (9) fort. Der Wert des Registers A, "–4(0b1100)", wird nicht im Register C eingestellt. Der
Wert des Registers C bleibt "3(0b0011)", was den kleineren
Absolutwert hat.
-
Wenn im Schritt (14) der
Befehl "abcmp C,
A" ausgeführt wird
und wo der Wert des Registers A ein negativer Wert (z. B. –4) ist,
während
der Wert des Registers C ein positiver Wert, der einen um 1 kleineren
Absolutwert als der Wert des Registers A (z. B. 3) hat, wird ermittelt,
dass das Ergebnis der Berechnung des Absolutwertvergleichs 0 ist.
Somit erfolgt der Vergleich der Absolutwerte nicht richtig. Dementsprechend
wird ein Wert mit einem Absolutwert, der um 1 kleiner ist als der
Absolutwert, der als der maximale Absolutwert zu ermitteln ist,
falsch als der maximale Absolutwert ermittelt. Allerdings werden
Audiodaten mit der Bitbreite von 16 verarbeitet, wobei der Bereich
der Zahlenwerte, die durch 16 Bits dargestellt werden können, –32768 bis
32767 ist. Selbst dann, wenn der erhaltene Absolutwert von dem richtigen
Absolutwert um 1 verschieden ist, ist der Fehler etwa 0,003% in
Bezug auf den vollen Bereich der 16-Bit-Daten und vernachlässigbar.
-
Wie oben beschrieben wurde, kann
der Prozessor 100 in dem ersten Beispiel gemäß der vorliegenden
Erfindung den maximalen Absolutwert mit einem vernachlässigbaren
Fehler ermitteln. Selbst dann, wenn ein negativer Wert mit dem maximalen Absolutwert
unter den Zahlenwerten, die mit 2er-Komplementen mit einer vorgeschriebenen
Bitbreite dargestellt werden können,
eingegeben wird, können
die Berechnungen richtig ausgeführt
werden. Da die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 in
dem Prozessor 100 keinen +1-Addierer enthält, kann
die Größe der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 und ebenfalls
die Größe des Prozessors 100 verringert werden.
Da die Addition von +1, die herkömmlich zweimal
ausgeführt
wird, in der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 nicht
ausgeführt
wird, kann die Rechenzeit, die erforderlich ist, um den maximalen
Absolutwert unter mehreren Datenstücken zu ermitteln, verkürzt werden.
-
(Beispiel 2)
-
Anhand von 3A wird ein zweites Beispiel gemäß der vorliegenden
Erfindung beschrieben. 3A ist
ein Blockschaltplan eines Prozessors 200 in dem zweiten
Beispiel. Der Prozessor 200 enthält einen Datenbusabschnitt 2A zum
Ausführen
von Berechnungen und einen Steuerabschnitt 1 zum Steuern
des Datenbusabschnitts 2A. Der Datenbusabschnitt 2A enthält anstelle
der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 (2A) die 1er-Komplement-Absolut wert-Subtraktionsvorrichtung 213.
Abgesehen davon ist die Struktur des Prozessors 200 im
Wesentlichen gleich der des Prozessors 100 (1).
-
3B zeigt
eine Struktur der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213.
Die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 enthält eine
erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20,
eine 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27 (die
als eine zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung
und als eine Inversionsvorrichtung wirkt) und eine Additionsvorrichtung 28 (als
eine Anzeigeinformations-Ausgabevorrichtung).
-
Die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 vergleicht
unter Verwendung des 1er-Komplements die Absolutwerte der zwei Werte, die
jeweils in den zwei durch das Steuersignal 10 bestimmten
Registern in der Registerdatei 7 gespeichert sind. Das
Vergleichsergebnis wird als Anzeigeinformationen ausgegeben, die
anzeigen, welcher der zwei Werte den größeren Absolutwert besitzt.
-
Die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 besitzt
die gleiche Struktur und wirkt auf die gleiche Weise wie die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 in
dem ersten Beispiel. Die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27 führt an der
Eingabe B (70) eine Absolutwertberechnung aus, wenn das
Vorzeichen der Eingabe B (70) negativ ist. Daraufhin invertiert
die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27 alle
Bits der Eingabe B (70) und gibt das Ergebnis als einen
Wert 64 nach der Berechnung der Absolutwertinversion aus.
-
Die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27 enthält einen
Inverter 29, einen Inverter 31 und eine Auswahleinrichtung 30.
Der Inverter 29 invertiert alle Bits der Eingangsdaten
(Eingabe B (70)) und gibt den invertierten Wert 61 aus.
Die Auswahleinrichtung 30 wählt den invertierten Wert 61
aus, wenn das Vorzeichen der Eingabe B (70) negativ ist,
während
sie sonst die Eingabe B (70) auswählt. Der ausgewählte Wert
wird als der Wert 63 nach der Berechnung des Absolutwerts ausgegeben.
Der Inverter 31 invertiert alle Bits des Werts 63 nach
der Berechnung des Absolutwerts und gibt einen invertierten Wert
64 aus.
-
Die Additionsvorrichtung 28 addiert
den Wert 62 nach der Berechnung des Absolutwerts, den invertierten
Wert 64 und "1" und gibt das Additionsergebnis 65 (das
Ergebnis 65 der Berechnung des Absolutwertvergleichs, das
die Anzeigeinformationen anzeigt) aus.
-
Anders als bei der an den zwei Absolutwerten
in dem ersten Beispiel ausgeführten
Subtraktion, werden die Absolutwerte in dem Prozessor 200 durch Invertieren
aller Bits des Subtraktionsergebnisses, Addieren des invertierten
Subtraktionsergebnisses zu dem Wert vor der Subtraktion und Addieren
von "1" zu dem Additionsergebnis
verglichen.
-
Der Prozessor 200 besitzt
die gleichen Ausführungsbefehle
wie der Prozessor 100 (1).
Der Befehl "abcmp" wird durch die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 (3A und 3B) ausgeführt.
-
Im Folgenden wird eine Operation
des Prozessors 200 in dem zweiten Beispiel beschrieben.
-
<Operationsbeispiel 1>
-
Hauptsächlich hinsichtlich des Befehls "abcmp", der die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 (3B) verwendet, wird beschrieben,
wie die Daten mit dem maximalen Absolutwert unter vier Stücken praktischer
Daten, die in 18 gezeigt
sind, ermittelt werden.
-
Außerdem verwendet der Prozessor 200 wie der
herkömmliche
Prozessor 100 (1)
und der herkömmliche
Prozessor 190 (19)
das in 21 gezeigte
Programm, um die Verarbeitung zum Ermitteln des maximalen Absolutwerts
auszuführen.
Die Verarbeitung in den Schritten (1) und (2)
ist völlig gleich
zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem ersten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 ausgeführt. Diese
wird anhand von 3C beschrieben.
-
Der Wert des Registers C, "0(0b0000)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "3(0b0011)", als die Eingabe
B (70) eingegeben wird.
-
Der Wert der Eingabe A (69), "0(0b0000)", wird in die erste
1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b1111)". Die Auswahleinrichtung 24 bestimmt,
dass der Wert der Eingabe A (69) "0(0b0000)" null ist, wählt somit die Eingabe A (69)
aus und gibt "(0b0000)" als den Wert 62
nach der Berechnung des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "3(0b0011)", wird in die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27 eingegeben.
Da alle Bits des Werts durch den Inverter 29 invertiert
werden, ist der invertierte Wert 61 "(0b1100)". Die Auswahleinrichtung 30 bestimmt,
dass das Vorzeichen des Werts der Eingabe B (70), "3(0b0011)", positiv ist, wählt somit
die Eingabe B (70) aus und gibt "(0b0011)" als den Wert 63 nach der Berechnung
des Absolutwerts aus. Der Inverter 31 invertiert die Bits des
Werts 63 nach der Berechnung des Absolutwerts und gibt "(0b1100)" als den Wert 64
nach der Berechnung der Absolutwertinversion aus.
-
Die Additionsvorrichtung 28 addiert
den Wert 62 nach der Berechnung des Absolutwerts, den Wert 64 nach
der Berechnung des Absolutwerts und "1" und
gibt "(0b1101)" als das Ergebnis 65 der
Berechnung des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b1101)" eine Bestimmung
vor und setzt das Merkerregister N = 1 und das Merkerregister Z
= 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem zweiten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 ausgeführt. Diese
wird anhand von 3D beschrieben.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "–5(0b1011)", als die Eingabe B
(70) eingegeben wird.
-
Der Wert der Eingabe A (69), "3(0b0011)", wird in die erste
1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b1100)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "3(0b0011)", positiv ist, wählt somit
die Eingabe A (69) aus und gibt "(0b0011)" als den Wert 62 nach der Berechnung
des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "–5(0b1011)", wird in die 1er-Komplement-Absolutwert-Berechnungsvorrichtung 27 eingegeben.
Da alle Bits des Werts durch den Inverter 29 invertiert
werden, ist der invertierte Wert 61 "(0b0100)". Die Auswahleinrichtung 30 bestimmt,
dass das Vorzeichen des Werts der Eingabe B (70), "–5(0b1011)", negativ ist, wählt somit den invertierten
Wert 61 aus und gibt "(0b0100)" als den Wert 63
nach der Berechnung des Absolutwerts aus. Der Inverter 31 invertiert
die Bits des Werts 63 nach der Berechnung des Absolutwerts und gibt "(0b1011)" als den Wert 64
nach der Berechnung der Absolutwertinversion aus.
-
Die Additionsvorrichtung 28 addiert
den Wert 62 nach der Berechnung des Absolutwerts, den Wert 64 nach
der Berechnung der Absolutwertinversion und "1" und
gibt "(0b1111)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b1111)" eine Bestimmung
vor und setzt das Merkerregister N = 1 und das Merkerregister Z
= 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem dritten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 ausgeführt. Diese
wird anhand von 3E beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69) eingegeben,
während
der Wert des Registers A, "–2(0b1110)", als die Eingabe B
(70) eingegeben wird.
-
Der Wert der Eingabe A (69), "–5(0b1011)", wird in die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b0100)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "–5(0b1011)", negativ ist, wählt somit den invertierten
Wert 60 aus und gibt "(0b0100)" als den Wert 62
nach der Berechnung des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "–2(0b1110)", wird in die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27 eingegeben.
Da alle Bits des Werts durch den Inverter 29 invertiert
werden, ist der invertierte Wert 61 "(0b0001)". Die Auswahleinrichtung 30 bestimmt,
dass das Vorzeichen des Werts der Eingabe B (70), "–2(0b1110)", positiv ist, wählt somit den invertierten
Wert 61 aus und gibt "(0b0001)" als den Wert 63
nach der Berechnung des Absolutwerts aus. Der Inverter 31 invertiert
die Bits des Werts 63 nach der Berechnung des Absolutwerts und gibt "(0b1110)" als den Wert 64
nach der Berechnung der Absolutwertinversion aus.
-
Die Additionsvorrichtung 28 addiert
den Wert 62 nach der Berechnung des Absolutwerts, den Wert 64 nach
der Berechnung der Absolutwertinversion und "1" und
gibt "(0b0011)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b0011)" eine Bestimmung
vor und setzt das Merkerregister N = 0 und das Merkerregister Z
= 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem vierten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (14) wird eine
Berechnung unter Verwendung der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 ausgeführt. Diese
wird anhand von 3F beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "6(0b0110)", als die Eingabe
B (70) eingegeben wird.
-
Der Wert der Eingabe A (69), "–5(0b1011)", wird in die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b0100)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "–5(0b1011)", negativ ist, wählt somit den invertierten
Wert 60 aus und gibt "(0b0100)" als den Wert 62
nach der Berechnung des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "6(0b0110)", wird in die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27 eingegeben.
Da alle Bits des Werts durch den Inverter 29 invertiert
werden, ist der invertierte Wert 61 "(0b1001)". Die Auswahleinrichtung 30 bestimmt,
dass das Vorzeichen des Werts der Eingabe B (70), "6(0b0110)", positiv ist, wählt somit
die Eingabe B 70 aus und gibt "(0b0110)" als den Wert 63 nach der Berechnung
des Absolutwerts aus. Der Inverter 31 invertiert die Bits des
Werts 63 nach der Berechnung des Absolutwerts und gibt "(0b1001)" als den Wert 64
nach der Berechnung der Absolutwertinversion aus.
-
Die Additionsvorrichtung 28 addiert
den Wert 62 nach der Berechnung des Absolutwerts, den Wert 64 nach
der Berechnung der Absolutwertinversion und "1" und
gibt "(0b1110)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b1110)" eine Bestimmung
vor und setzt das Merkerregister N = 1 und das Merkerregister Z
= 0.
-
Die Verarbeitung in den Schritten
(7) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Durch diese Verarbeitung kann unter
Verwendung der Addition anstelle der in dem ersten Beispiel verwendeten
Subtraktion in dem Register C der maximale Absolutwert "6" ermittelt werden.
-
<Operationsbeispiel 2>
-
Anhand von 3G wird die Verarbeitung im Schritt (14)
beschrieben, wenn im Register A "0(0b0000)" eingestellt ist
und wenn im Register C "–8(0b1000)" eingestellt ist.
Wie oben beschrieben wurde, ist "–8(0b1000)" ein negativer Wert
mit dem maximalen Absolutwert im Bereich der Zahlenwerte, die durch
die 2er-Komplemente
mit einer vorgeschriebenen Bitbreite dargestellt werden können. Bei dem
herkömmlichen
Prozessor 190 findet der Überlauf statt, wobei eine genaue
Berechnung unmöglich ist.
Es wird der Befehl "abcmp
C, A" verwendet.
-
Der Wert des Registers C, "–8(0b1000)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "0(0b0000)", als die Eingabe
B (70) eingegeben wird.
-
Der Wert der Eingabe A (69), "–8(0b1000)", wird in die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b0111)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "–8(0b1000)", negativ ist, wählt somit den invertierten
Wert 60 aus und gibt "0(0b0111)" als den Wert 62
nach der Berechnung des Absolutwerts aus. Somit wird das Vorzeichen normalerweise
invertiert, ohne dass dies wie bei dem Prozessor 190 (19) einen Überlauf
verursacht.
-
Der Wert der Eingabe B (70), "0(0b0000)", wird in die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung
27 eingegeben. Da alle Bits des Werts durch den Inverter 29 invertiert
werden, ist der invertierte Wert 61 "(0b1111)". Die Auswahleinrichtung 30 bestimmt,
dass der Wert der Eingabe B (70), "0(0b0000)", null ist, wählt somit die Eingabe B (70)
aus und gibt "(0b0000)" als den Wert 63 nach
der Berechnung des Absolutwerts aus. Der Inverter 31 invertiert
die Bits des Werts 63 nach der Berechnung des Absolutwerts und gibt "(0b1111)" als den Wert 64
nach der Berechnung der Absolutwertinversion aus.
-
Die Additionsvorrichtung 28 addiert
den Wert 62 nach der Berechnung des Absolutwerts, den Wert 64 nach
der Berechnung der Absolutwertinversion und "1" und
gibt "(0b0111)" als das Ergebnis 65 der Berechnung
des Absolutwertvergleichs aus. Das heißt, das Subtraktionsergebnis
von |–8|–|0| ist
positiv; d. h., der Vergleich zwischen |–8| und |0| erfolgt richtig.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b0111)" eine Bestimmung
vor und setzt das Merkerregister N = 0 und das Merkerregister Z
= 0.
-
Da im Schritt (7) das Merkerregister
N = 0 und das Merkerregister Z = 0 ist, schreitet die Verarbeitung
zu Schritt (9) fort. Der Wert des Registers A wird nicht
im Register C eingestellt.
-
Auf diese Weise bewirkt der Prozessor 200 selbst
dann keinen Überlauf,
wenn der negative Wert mit dem maximalen Absolutwert eingegeben
wird, während
er die zwei Zahlenwerte richtig vergleicht.
-
<Operationsbeispiel 3>
-
Anhand von 3H wird die Verarbeitung im Schritt (14)
beschrieben, wenn im Register A "–4(0b1100)" eingestellt ist
und wenn im Register C "3(0b0011)" eingestellt ist.
Es wird der Befehl "abcmp C,
A" verwendet.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "–4(0b1100)", als die Eingabe B
(70) eingegeben wird.
-
Der Wert der Eingabe A (69), "3(0b0011)", wird in die erste
1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 eingegeben.
Da alle Bits des Werts durch den Inverter 23 invertiert
werden, ist der invertierte Wert 60 "(0b1100)". Die Auswahleinrichtung 24 bestimmt,
dass das Vorzeichen des Werts der Eingabe A (69), "3(0b0011)", positiv ist, wählt somit
die Eingabe A (69) aus und gibt "(0b0011)" als den Wert 62
nach der Berechnung des Absolutwerts aus.
-
Der Wert der Eingabe B (70), "–4(0b1100)", wird in die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27 eingegeben.
Da alle Bits des Werts durch den Inverter 29 invertiert
werden, ist der invertierte Wert 61 "(0b0011)". Die Auswahleinrichtung 30 bestimmt,
dass der Wert der Eingabe B (70), "–4(0b1100)", negativ ist, wählt somit den
invertierten Wert 61 aus und gibt "(0b0011)" als den Wert 63 nach der Berechnung
des Absolutwerts aus. Der Inverter 31 invertiert die Bits
des Werts 63 nach der Berechnung des Absolutwerts und gibt "(0b1100)" als den Wert 64
nach der Berechnung der Absolutwertinversion aus.
-
Die Additionsvorrichtung 28 addiert
den Wert 62 nach der Berechnung des Absolutwerts, den Wert 64 nach
der Berechnung der Absolutwertinversion und "1" und
gibt "(0b0000)" als das Ergebnis
65 der Berechnung des Absolutwertvergleichs aus.
-
Der Merkereinstellabschnitt 9 nimmt
an dem Eingabewert "(0b0000)" eine Bestimmung
vor und setzt das Merkerregister N = 0 und das Merkerregister Z
= 1.
-
Da im Schritt (7) das Merkerregister
N = 0 und das Merkerregister Z = 1 ist, schreitet die Verarbeitung
zu Schritt (9) fort. Der Wert des Registers A, "–4(0b1100)", wird nicht im Register C eingestellt. Der
Wert des Registers C bleibt "3(0b0011)", was den kleineren
Absolutwert hat.
-
Wenn im Schritt (14) der
Befehl "abcmp C,
A" ausgeführt wird
und wo der Wert des Registers A ein negativer Wert (z. B. –4) ist,
während
der Wert des Registers C ein positiver Wert, der einen um 1 kleineren
Absolutwert als der Wert des Registers A (z. B. 3) hat, wird ermittelt,
dass das Ergebnis der Berechnung des Absolutwertvergleichs 0 ist.
Somit erfolgt der Vergleich der Absolutwerte nicht richtig. Dementsprechend
wird ein Wert mit einem Absolutwert, der um 1 kleiner ist als der
Absolutwert, der als der maximale Absolutwert zu ermitteln ist,
falsch als der maximale Absolutwert ermittelt. Allerdings werden
Audiodaten mit der Bitbreite von 16 verarbeitet, wobei der Bereich
der Zahlenwerte, die durch 16 Bits dargestellt werden können, –32768 bis
32767 ist. Selbst dann, wenn der erhaltene Absolutwert von dem richtigen
Absolutwert um 1 verschieden ist, ist der Fehler etwa 0,003 % in
Bezug auf den vollen Bereich der 16-Bit-Daten und vernachläs sigbar.
-
Wie oben beschrieben wurde, kann
der Prozessor 200 in dem zweiten Beispiel gemäß der vorliegenden
Erfindung den maximalen Absolutwert mit einem vernachlässigbaren
Fehler ermitteln. Selbst dann, wenn ein negativer Wert mit dem maximalen Absolutwert
unter den Zahlenwerten, die mit 2er-Komplementen mit einer vorgeschriebenen
Bitbreite dargestellt werden können,
eingegeben wird, können
die Berechnungen richtig ausgeführt
werden. Da die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 in
dem Prozessor 200 nur einen +1-Addierer (die Additionsvorrichtung 28)
enthält, kann
die Größe der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 und
ebenfalls die Größe des Prozessors 200 verhältnismäßig klein
gehalten werden. Da die Addition von +1, die herkömmlich zweimal
ausgeführt
wird, in der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 213 nur einmal
ausgeführt
wird, kann die Rechenzeit, die erforderlich ist, um den maximalen
Absolutwert unter mehreren Datenstücken zu ermitteln, verkürzt werden.
-
(Beispiel 3)
-
Anhand von 4 wird ein drittes Beispiel gemäß der vorliegenden
Erfindung beschrieben. 4 ist
ein Blockschaltplan eines Prozessors 300 in dem dritten
Beispiel. Der Prozessor 300 enthält einen Datenbusabschnitt 2B zum
Ausführen
von Berechnungen und einen Steuerabschnitt 1 zum Steuern des
Datenbusabschnitts 2B. Anders als in dem ersten und in
dem zweiten Beispiel werden der Vergleich der Absolutwerte und die
Auswahl eines der Absolutwerte anhand des Vergleichsergebnisses
in dem Prozessor 300 durch Hardware ausgeführt.
-
Der Steuerabschnitt 1 enthält einen
Programmzähler 3,
einen Ausführungsbefehlsspeicher 4 und
einen Decodierer 5. Der Programmzähler 3, der Ausführungsbefehlsspeicher 4 und
der Decodierer 5 sind völlig
gleich denen in dem Prozessor 190 (19), wobei ihre ausführlichen Beschreibungen weggelassen
werden.
-
Der Datenbusabschnitt 2B enthält eine
ALU 6, eine Vorrichtung 15 zur Berechnung des
maximalen Absolutwerts, eine Registerdatei 7, einen Datenspeicher 8 und
den Merkereinstellabschnitt 9. Die ALU 6, die
Registerdatei 7 und der Datenspeicher 8 sind völlig gleich
denen in dem Prozessor 190 (19),
wobei ihre ausführlichen
Beschreibungen weggelassen werden. Der Merkereinstellabschnitt
9 ist
völlig
gleich dem in dem Prozessor 190 (19), wobei seine ausführlichen
Beschreibungen weggelassen werden.
-
5A zeigt
eine Struktur der Vorrichtung 15 zur Berechnung des maximalen
Absolutwerts. Die Vorrichtung 15 zur Berechnung des maximalen
Absolutwerts vergleicht unter Verwendung des 1er-Komplements die
Absolutwerte der zwei Werte, die jeweils in den zwei durch das Steuersignal 10 bestimmten
Registern in der Registerdatei 7 gespeichert sind. Das
Vergleichsergebnis wird als Anzeigeinformationen ausgegeben, die
anzeigen, welcher der zwei Werte den größeren Absolutwert besitzt.
Die Vorrichtung 15 zur Berechnung des maximalen Absolutwerts
gibt anhand der Anzeigeinformationen den Wert mit dem größeren Absolutwert
aus. Der Ausgangswert wird in das durch das Steuersignal 10 bestimmte
Register in der Registerdatei geschrieben.
-
Wie in 5A gezeigt
ist, enthält
die Vorrichtung 15 zur Berechnung des maximalen Absolutwerts
eine 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 (die
als eine erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung,
als eine zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung
und als eine Anzeigeinformations-Ausgabevorrichtung wirkt) und eine
Auswahleinrichtung 33 (als eine Auswahlvorrichtung).
-
Die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 subtrahiert
den Wert der Eingabe B (70) oder den Absolutwert der 1er-Komplement-Darstellung
der Eingabe B (70) von dem Wert der Eingabe A (69)
oder von dem Absolutwert der 1er-Komplement-Darstellung der Eingabe
A (69) und gibt das Subtraktionsergebnis als das Ergebnis 65 einer
Berechnung des Absolutwertvergleichs (als die Anzeigeinformationen 65)
aus. Die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 besitzt die
gleiche Struktur wie die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 in
dem ersten und in dem zweiten Beispiel, wobei ihre ausführliche
Beschreibung weggelassen wird. Die Auswahleinrichtung 33 wählt die
Eingabe B (70) aus, wenn das Absolutwert-Berechnungsergebnis 65 negativ
ist, während
sie sonst die Eingabe A (69) auswählt, und gibt den ausgewählten Wert
als das Ergebnis 68 einer Berechnung der Auswahl des maximalen
Absolutwerts aus.
-
Die Bitbreiten der 5 Register A,
B, C, D und P in dem Prozessor 300 (4), die Bitbreite des Datenspeichers 8,
die Bitbreite der in die ALU 6 eingegebenen und aus ihr
ausgegebenen Daten betragen alle 4 Bits. Die Bitbreite der in die
Vorrichtung 15 zur Berechnung des maximalen Absolutwerts
eingegebenen und aus ihr ausgegebenen Daten und die Bitbreite in
Bezug auf die Rechengenauigkeit betragen alle 4 Bits.
-
Der Prozessor 300 besitzt
die gleichen Ausführungsbefehle
wie der herkömmliche
Prozessor 190 (19)
sowie die folgenden Ausführungsbefehle,
die durch die Vorrichtung 15 zur Berechnung des maximalen
Absolutwerts ausgeführt
werden: "abmax a,
b: die Absolutwerte der im Register a bzw. b gespeicherten Werte
werden miteinander verglichen, und der Wert mit dem größeren Absolutwert wird
im Register a eingestellt".
-
Im Folgenden wird eine Operation
des Prozessors 300 in dem dritten Beispiel beschrieben.
-
<Operationsbeispiel 1>
-
Hauptsächlich hinsichtlich des Befehls "abmax", der die Vorrichtung 15 zur
Berechnung des maximalen Absolutwerts verwendet, wird beschrieben, wie
die Daten mit dem maximalen Absolutwert unter den vier Stücken praktischer
Daten, die in 18 gezeigt
sind, ermittelt werden (5A).
-
5B zeigt
ein Programm zum Ermitteln des Werts mit dem maximalen Absolutwert
durch den Prozessor 300, der die Vorrichtung 15 zur
Berechnung des maximalen Absolutwerts enthält. Die Schritte (1)
bis (3) und (9) bis (13) sind völlig gleich
zu denen im Fall des herkömmlichen
Prozessors 190 (19).
Im Schritt (15) werden die Absolutwerte des Werts des Registers
C und des Werts des Registers A unter Verwendung des Befehls "abmax" miteinander verglichen.
Der Wert mit dem größeren Absolutwert
wird im Register C eingestellt. Die Verarbeitung im Schritt (15)
ist gleichwertig der Verarbeitung in den Schritten (4)
bis (8), die durch den herkömmlichen Prozessor 190 ausgeführt wird.
Der Wert des Registers C wird als die Eingabe A (69) eingegeben, während der
Wert des Registers A als die Eingabe B (70) eingegeben
wird.
-
Die Verarbeitung in den Schritten
(1) und (2) ist völlig gleich zu der im Fall
des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem ersten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (15) wird eine
Berechnung unter Verwendung der Vorrichtung 15 zur Berechnung
des maximalen Absolutwerts ausgeführt. Diese wird anhand von 5C beschrieben.
-
Der Wert des Registers C, "0(0b0000)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "3(0b0011)", als die Eingabe
B (70) eingegeben wird.
-
Wie in dem anhand von 2C beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b1101)". Da das Vorzeichen
des Ergebnisses 65 der Berechnung des Absolutwertvergleichs
negativ ist, wählt
die Auswahleinrichtung 33 die Eingabe B (70) aus
und gibt sie "3(0b0011)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie
im Register C "3(0b0011)" einstellt.
-
Die Verarbeitung in den Schritten
(9) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem zweiten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (15) wird eine
Verarbeitung unter Verwendung der Vorrichtung 15 zur Berechnung
des maximalen Absolutwerts ausgeführt. Diese wird anhand von 5D beschrieben.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "–5(0b1011)", als die Eingabe B
(70) eingegeben wird.
-
Wie in dem anhand von 2D beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b1111)". Da das Vorzeichen
des Ergebnisses 65 der Berechnung des Absolutwertvergleichs
negativ ist, wählt
die Auswahleinrichtung 33 das Eingangssignal B (70)
aus und gibt sie "–5(0b1011)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie
im Register C "–5(0b1011)" einstellt.
-
Die Verarbeitung in den Schritten
(9) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem dritten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (15) wird eine
Berechnung unter Verwendung der Vorrichtung 15 zur Berechnung
des maximalen Absolutwerts ausgeführt. Diese wird anhand von 5E beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "–2(0b1110)", als die Eingabe B
(70) eingegeben wird.
-
Wie in dem anhand von 2E beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b0011)". Da das Vorzeichen
des Ergebnisses 65 der Berechnung des Absolutwertvergleichs
nicht negativ ist, wählt
die Auswahleinrichtung 33 die Eingabe A (69) aus
und gibt sie "–5(0b1011)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie
im Register C "–5(0b1011)" einstellt.
-
Die Verarbeitung in den Schritten
(9) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem vierten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (15) wird eine
Berechnung unter Verwendung der Vorrichtung 15 zur Berechnung
des maximalen Absolutwerts ausgeführt. Diese wird anhand von 5F beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "6(0b0110)", als die Eingabe
B (70) eingegeben wird.
-
Wie in dem anhand von 2F beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. das Ausgangssignal von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b1110)". Da das Vorzeichen
des Ergebnisses 65 der Berechnung des Absolutwertvergleichs
negativ ist, wählt
die Auswahleinrichtung 33 die Eingabe B (70) aus
und gibt sie "6(0b0110)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie im
Register C "6(0b0110)" einstellt.
-
Die Verarbeitung in den Schritten
(9) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190: Durch diese Verarbeitung kann im Register C
der maximale Absolutwert "6" ermittelt werden.
-
<Operationsbeispiel 2>
-
Anhand von 5G wird die Verarbeitung im Schritt (14)
beschrieben, wenn im Register A "0(0b0000)" eingestellt ist
und wenn im Register C "–8(0b1000)" eingestellt ist.
Wie oben beschrieben wurde, ist "–8(0b1000)" ein negativer Wert
mit dem maximalen Absolutwert in dem Bereich der Zahlenwerte, die
durch 2er-Komplemente
mit einer vorgeschriebenen Bandbreite dargestellt werden können. Bei
dem herkömmlichen
Prozessor 190 tritt der Überlauf auf, wobei eine genaue
Berechnung unmöglich ist.
Es wird der Befehl "abmax
C, A" verwendet.
-
Der Wert des Registers C, "–8(0b1000)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "0(0b0000)", als die Eingabe
B (70) eingege ben wird.
-
Wie in dem anhand von 2G beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b0111)". Da das Vorzeichen
des Ergebnisses 65 der Berechnung des Absolutwertvergleichs
nicht negativ ist, wählt
die Auswahleinrichtung 33 die Eingabe A (69) aus
und gibt sie "–8(0b1000)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie
im Register C "–8(0b1000)" einstellt.
-
Auf diese Weise verursacht der Prozessor 300 keinen Überlauf,
selbst wenn der negative Wert mit dem maximalen Absolutwert eingegeben
wird, wobei er die zwei Zahlenwerte richtig vergleicht.
-
<Operationsbeispiel 3>
-
Anhand von 5H wird die Verarbeitung im Schritt (14)
beschrieben, wenn im Register A "–4(0b1100)" eingestellt ist
und wenn im Register C "3(0b0011)" eingestellt ist.
Es wird der Befehl "abmax C,
A" verwendet.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "–4(0b1100)", als die Eingabe B
(70) eingegeben wird.
-
Wie in dem anhand von 2H beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b0000)". Da das Vorzeichen
des Ergebnisses 65 der Berechnung des Absolutwertvergleichs
nicht negativ ist, wählt
die Auswahleinrichtung 33 die Eingabe A (69) aus
und gibt sie "3(0b0011)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie im
Register C "3(0b0011)" einstellt.
-
Wenn im Schritt (15) der
Befehl "abmax C,
A" ausgeführt wird
und der Wert des Registers A ein negativer Wert (z. B. –4) ist,
während
der Wert des Registers C ein positiver Wert ist, dessen Absolutwert um
1 kleiner als der des Werts des Registers A (z. B. 3) ist, wird
ermittelt, dass das Ergebnis der Vergleichsberechnung 0 ist. Somit
wird der Vergleich der Absolutwerte nicht richtig ausgeführt. Dement sprechend
wird ein Wert mit einem Absolutwert, der um 1 kleiner ist als der
Absolutwert, der als der maximale Absolutwert zu ermitteln ist,
falsch als der maximale Absolutwert ermittelt. Allerdings werden
Audiodaten mit der Bitbreite von 16 verarbeitet, wobei der Bereich
der Zahlenwerte, die durch 16 Bits dargestellt werden können, –32768 bis
32767 ist. Selbst wenn der erhaltene Absolutwert um 1 von dem richtigen Absolutwert
verschieden ist, beträgt
der Fehler etwa 0,003 % in Bezug auf den vollen Bereich der 16-Bit-Daten
und ist vernachlässigbar.
-
Wie oben beschrieben wurde, kann
der Prozessor 300 in dem dritten Beispiel gemäß der vorliegenden
Erfindung den maximalen Absolutwert mit vernachlässigbarem Fehler ermitteln.
Selbst wenn ein negativer Wert mit dem maximalen Absolutwert unter
den Zahlenwerten, die mit 2er-Komplementen mit einer vorgeschriebenen
Bitbreite dargestellt werden können,
eingegeben wird, könnten
die Berechnungen richtig ausgeführt
werden. Außerdem
können
die Berechnungen mit einer höheren
Geschwindigkeit als in den vorangehenden zwei Beispielen ausgeführt werden,
da die in 21 gezeigten Schritte
(14), (7) und (8) durch Hardware anstatt,
wie in dem ersten und in dem zweiten Beispiel, durch Software ausgeführt werden.
-
(Beispiel 4)
-
Anhand von 6A wird ein viertes Beispiel gemäß der vorliegenden
Erfindung beschrieben. 6A ist
ein Blockschaltplan eines Prozessors 400 in dem vierten
Beispiel. Der Prozessor 400 enthält einen Datenbusabschnitt 2D zum
Ausführen
von Berechnungen und einen Steuerabschnitt 1 zum Steuern
des Datenbusabschnitts 2D. Der Datenbusabschnitt 2D enthält anstelle
der Absolutwert-Berechnungsvorrichtung 15 (5A) in dem dritten Beispiel eine Absolutwert-Berechnungsvorrichtung 415.
Abgesehen davon besitzt der Prozessor 400 die gleiche Struktur
wie der Prozessor 300 (4).
-
6B zeigt
eine Struktur der Vorrichtung 415 zur Berechnung des maximalen
Absolutwerts. Die Vorrichtung 415 zur Berechnung des maximalen Absolutwerts
vergleicht unter Verwendung des 1er-Komplements die Absolutwerte
der zwei Werte, die jeweils in den zwei durch das Steuersignal 10 bestimmten
Registern in der Registerdatei 7 gespeichert sind. Das
Vergleichsergebnis wird als Anzeigeinformationen ausgegeben, die
anzeigen, welcher der zwei Werte den größeren Absolutwert besitzt.
Die Vorrichtung 415 zur Berechnung des maximalen Absolutwerts
gibt anhand der Anzeigeinformationen den Wert mit dem größeren Absolutwert
aus. Der Ausgangswert wird in das durch das Steuersignal 10 bestimmte
Register in der Registerdatei geschrieben.
-
Wie in 6B gezeigt
ist, enthält
die Vorrichtung 415 zur Berechnung des maximalen Absolutwerts
eine 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 (die
als eine erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung,
als eine zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung
und als eine Anzeigeinformations-Ausgabevorrichtung wirkt), eine
Nullerfassungsvorrichtung 34 und eine Ausgangswert-Auswahlvorrichtung 35 (als
eine Ausgangswert-Auswahlvorrichtung).
-
Die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 subtrahiert
den Wert der Eingabe B (70) oder den Absolutwert der 1er-Komplement-Darstellung
der Eingabe B (70) von dem Wert der Eingabe A (69)
oder von dem Absolutwert der 1er-Komplement-Darstellung der Eingabe
A (69) und gibt das Subtraktionsergebnis als ein Ergebnis 65 der Berechnung
des Absolutwertvergleichs (als die Anzeigeinformationen 65)
aus. Die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 besitzt die
gleiche Struktur wie die 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13 in
dem ersten und in dem zweiten Beispiel, wobei ihre ausführliche
Beschreibung weggelassen wird.
-
Die Nullerfassungsvorrichtung 34 (als
eine Nullwertbestimmungsvorrichtung) gibt "1" als
ein Nullwertbestimmungsergebnis 66 aus, wenn der Wert des
Ergebnisses der Berechnung des Absolutwertvergleichs null ist (alle
4 Bits 0 sind, d. h. "0b0000"), während sie
andernfalls "0" ausgibt Die Ausgangswert-Auswahlvorrichtung 35 enthält eine Auswahlsignal-Erzeugungsvorrichtung 36 und
eine Auswahleinrichtung 37. Die Auswahlsignal-Erzeugungsvorrichtung 36 gibt
als ein Auswahlsignal 67 "1" aus, wenn das Vorzeichen
des Ergebnisses 65 der Berechnung des Absolutwertvergleichs
negativ ist oder wenn das Nullwert-Bestimmungsergebnis 66 "1" ist und das Vorzeichen der Eingabe
B (70) negativ ist, während
sie sonst "0" ausgibt. Die Auswahleinrichtung 37 wählt die
Eingabe A (69) aus, wenn das Auswahlsignal 67 "0" ist, während sie
die Eingabe B (70) auswählt,
wenn das Auswahlsignal 67 "1" ist, wobei sie die
ausgewählte
Eingabe als das Ergebnis 68 der Berechnung der Auswahl
des ma ximalen Absolutwerts ausgibt.
-
Der Prozessor 400 besitzt
die gleichen Ausführungsbefehle
wie der herkömmliche
Prozessor 300 (4).
Durch die Vorrichtung 415 zur Berechnung des maximalen
Absolutwerts (6B) wird
der Befehl "abmax" ausgeführt.
-
Im Folgenden wird eine Operation
des Prozessors 400 in dem vierten Beispiel beschrieben.
-
<Operationsbeispiel 1>
-
Hauptsächlich hinsichtlich des Befehls "abmax", der die Vorrichtung 415 zur
Berechnung des maximalen Absolutwerts verwendet, wird beschrieben,
wie die Daten mit dem maximalen Absolutwert unter den vier Stücken praktischer
Daten, die in 18 gezeigt
sind, ermittelt werden (6B).
Das in dem dritten Beispiel verwendete Programm wird ebenfalls in
dem vierten Beispiel verwendet.
-
Die Verarbeitung in den Schritten
(1) und (2) ist völlig gleich zu der im Fall
des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem ersten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (15) wird eine
Berechnung unter Verwendung der Vorrichtung 415 zur Berechnung des
maximalen Absolutwerts ausgeführt.
Diese wird anhand von 6C beschrieben.
-
Der Wert des Registers C, "0(0b0000)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "3(0b0011)", als die Eingabe
B (70) eingegeben wird.
-
Wie in dem anhand von 2C beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b1101)". Da das Ergebnis
65 der Berechnung des Absolutwertvergleichs nicht "0b0000" ist (nicht alle
4 Bits null sind), ist das Nullwert-Bestimmungsergebnis 66 "0". Da das Vorzeichen
des Ergebnisses 65 der Berechnung des Absolutwertvergleichs
negativ ist, gibt die Auswahlsignal-Erzeugungsvorrichtung 36 als
das Auswahlsignal 67 "1" aus. Da das Auswahlsignal 67 "1" ist, wählt die Auswahleinrichtung 37 die
Eingabe B (70) aus und gibt sie "3(0b0011)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie
im Register C "3(0b0011)" einstellt.
-
Die Verarbeitung in den Schritten
(9) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem zweiten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (15) wird eine
Verarbeitung unter Verwendung der Vorrichtung 415 zur Berechnung des
maximalen Absolutwerts ausgeführt.
Diese wird anhand von 6D beschrieben.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "–5(0b1011)", als die Eingabe B
(70) eingegeben wird.
-
Wie in dem anhand von 2D beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b1111)". Da das Ergebnis 65 der Berechnung
des Absolutwertvergleichs nicht "0b0000" ist (nicht alle
4 Bits null sind), ist das Nullwert-Bestimmungsergebnis 66 "0". Da das Vorzeichen des Ergebnisses 65 der
Berechnung des Absolutwertvergleichs negativ ist, gibt die Auswahlsignal-Erzeugungsvorrichtung 36 als
das Auswahlsignal 67 "1" aus. Da das Auswahlsignal 67 "1" ist, wählt die Auswahleinrichtung 37 die
Eingabe B (70) aus und gibt sie "–5(0b1011)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie
im Register C "–5(0b1011)" einstellt.
-
Die Verarbeitung in den Schritten
(9) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem dritten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (15) wird eine
Berechnung unter Verwendung der Vorrichtung 415 zur Berechnung des
maximalen Absolutwerts ausgeführt.
Diese wird anhand von 6E beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "–2(0b1110)", als die Eingabe B
(70) eingegeben wird.
-
Wie in dem anhand von 2E beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b0011)". Da das Ergebnis 65 der Berechnung
des Absolutwertvergleichs nicht "0b0000" ist (nicht alle
4 Bits null sind), ist das Nullwert-Bestimmungsergebnis 66 "0". Da das Vorzeichen des Ergebnisses 65 der
Berechnung des Absolutwertvergleichs nicht negativ ist und das Nullwert-Bestimmungsergebnis 66 "0" ist, gibt die Auswahlsignal-Erzeugungsvorrichtung 36 als
das Auswahlsignal 67 "0" aus. Da das Auswahlsignal 67 "0" ist, wählt die
Auswahleinrichtung 37 die Eingabe A (69) aus und
gibt sie "–5(0b1011)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie
im Register C "–5(0b1011)" einstellt.
-
Die Verarbeitung in den Schritten
(9) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Die Verarbeitung in einem vierten
Zyklus wird wie folgt ausgeführt.
-
Die Verarbeitung im Schritt (3)
ist völlig
gleich zum Fall des herkömmlichen
Prozessors 190.
-
Im Schritt (15) wird eine
Berechnung unter Verwendung der Vorrichtung 415 zur Berechnung des
maximalen Absolutwerts ausgeführt.
Diese wird anhand von 6F beschrieben.
-
Der Wert des Registers C, "–5(0b1011)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "6(0b0110)", als die Eingabe
B (70) eingegeben wird.
-
Wie in dem anhand von 2F beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. das Ausgangssignal von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b1110)". Da das Ergebnis 65 der
Berechnung des Absolutwertvergleichs nicht "(0b0000)" ist (nicht alle 4 Bits null sind),
ist das Nullwert-Bestimmungsergebnis 66 "0". Da das Vorzeichen des Ergebnisses 65 der
Berechnung des Absolutwertvergleichs negativ ist, gibt die Auswahlsignal-Erzeugungsvorrichtung 36 als
das Auswahlsignal 67 "1" aus. Da das Auswahlsignal 67 "1" ist, wählt die Auswahleinrichtung 37 die
Eingabe B (70) aus und gibt sie "6(0b0110)" als das Ergebnis 68 der Berechnung
der Auswahl des maximalen Absolutwerts aus, wobei sie im Register
C "6(0b0110)" einstellt.
-
Die Verarbeitung in den Schritten
(9) bis (12) ist völlig gleich zum Fall des herkömmlichen
Prozessors 190.
-
Durch diese Verarbeitung kann im
Register C der maximale Absolutwert "6" ermittelt
werden.
-
<Operationsbeispiel 2>
-
Anhand von 6G wird die Verarbeitung im Schritt (15)
dargestellt, wenn im Register A "0(0b0000)" eingestellt ist
und wenn im Register C "–8(0b1000)" eingestellt ist.
Wie oben beschrieben wurde, ist "–8(0b1000)" ein negativer Wert
mit dem maximalen Absolutwert in dem Bereich der Zahlenwerte, die
durch 2er-Komplemente
einer vorgeschriebenen Bandbreite dargestellt werden können. Bei
dem herkömmlichen
Prozessor 190 tritt der Überlauf auf, wobei eine genaue
Berechnung unmöglich ist.
Es wird der Befehl "abmax
C, A" verwendet.
-
Der Wert des Registers C, "–8(0b1000)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "0(0b0000)", als die Eingabe
B (70) eingegeben wird.
-
Wie in dem anhand von 2G beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b0111)". Da das Ergebnis 65 der Berechnung
des Absolutwertvergleichs nicht "(0b0000)" ist (nicht alle
4 Bits null sind), ist das Nullwert-Bestimmungsergebnis 66 "0". Da das Vorzeichen des Ergebnisses 65 der
Berechnung des Absolutwertvergleichs negativ ist und das Nullwert-Bestimmungsergebnis 66 "0" ist, gibt die Auswahlsignal-Erzeugungsvorrichtung 36 als
das Auswahlsignal 67 "0" aus. Da das Auswahlsignal 67 "0" ist, wählt die Auswahleinrichtung 37 die
Eingabe A (69) aus und gibt sie "–8(0b1000)" als das Ergebnis 68 der
Berechnung der Auswahl des maximalen Absolutwerts aus, wobei sie
im Register C "–8(0b1000)" einstellt.
-
Auf diese Weise verursacht der Prozessor 400 keinen Überlauf,
selbst wenn der negative Wert mit dem maximalen Absolutwert eingegeben
wird, wobei er die zwei Zahlenwerte richtig vergleicht.
-
<Operationsbeispiel 3>
-
Anhand von 6H wird die Verarbeitung im Schritt (15)
beschrieben, wenn im Register A "–4(0b1100)" eingestellt ist
und wenn im Register C "3(0b0011)" eingestellt ist.
Es wird der Befehl "abmax C,
A" verwendet. In
den oben beschriebenen Prozessoren 100, 200 und 300 können die
Absolutwerte bei diesen Eingaben nicht richtig vergleichen werden.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingegeben, während
der Wert des Registers A, "–4(0b1100)", als die Eingabe B
(70) eingegeben wird.
-
Wie in dem anhand von 2H beschriebenen ersten
Beispiel ist das Ergebnis 65 der Berechnung des Absolutwertvergleichs,
d. h. die Ausgabe von der 1er-Komplement-Absolutwert-Subtraktionsvorrichtung 13, "(0b0000)". Da das Ergebnis 65 der Berechnung
des Absolutwertvergleichs "(0b0000)" ist (alle 4 Bits
null sind), ist das Nullwert-Bestimmungsergebnis 66 "1 ". Da das Vorzeichen
des Ergebnisses 65 der Berechnung des Absolutwertvergleichs
nicht negativ ist, sondern das Nullwert-Bestimmungsergebnis 66 "1" ist und das Vorzeichen der Eingabe
B (70) negativ ist, gibt die Auswahlsignal-Erzeugungsvorrichtung 36 als
das Auswahlsignal 67 "1" aus. Da das Auswahlsignal 67 "1" ist, wählt die Auswahleinrichtung 37 die
Eingabe B (70) aus und gibt sie "–4(0b1100)" als das Ergebnis 68 der
Berech nung der Auswahl des maximalen Absolutwerts aus, wobei sie
im Register C "–4(0b1100)" einstellt.
-
Auf diese Weise kann der Prozessor 400 die Absolutwerte
selbst dann richtig vergleichen, wenn der Wert des Registers A ein
negativer Wert (z. B. –4) ist
und der Wert des Registers C ein positiver Wert ist, dessen Absolutwert
um 1 kleiner als der des Werts des Registers A (z. B. 3) ist.
-
<Operationsbeispiel 4>
-
In diesem Operationsbeispiel werden
zwei Eingabewerte mit einem gleichen Absolutwert und entgegengesetzten
Vorzeichen miteinander verglichen.
-
Anhand von 6I wird die Verarbeitung im Schritt (15)
beschrieben, wenn im Register A "–3(0b1101)" eingestellt ist
und wenn im Register C "3(0b0011)" eingestellt ist.
Es wird der Befehl "abmax C,
A" verwendet.
-
Der Wert des Registers C, "3(0b0011)", wird als die Eingabe
A (69) eingeben, während
der Wert des Registers A, "–3(0b1101)", als die Eingabe
B (70) eingegeben wird.
-
Das Ergebnis 65 der Berechnung
des Absolutwertvergleichs, das durch Subtraktion von "(0b0010)" (Absolutwert der
1er-Komplement-Darstellung der Eingabe B (70)) von "(0b0011)" (Eingabe A (69))
erhalten wird, ist "(0b0001)". Da das Ergebnis 65 der
Berechnung des Absolutwertvergleichs nicht "(0b0000)" ist (nicht alle 4 Bits null sind),
ist das Nullwert-Bestimmungsergebnis 66 "0". Da das Vorzeichen des Ergebnisses 65 der
Berechnung des Absolutwertvergleichs nicht negativ ist und das Nullwert-Bestimmungsergebnis 66 "0" ist, gibt die Auswahlsignal-Erzeugungsvorrichtung 66 als
das Auswahlsignal 67 "0" aus. Da das Auswahlsignal 67 "0" ist, wählt die Auswahleinrichtung 37 die
Eingabe A (69) aus, gibt sie "3(0b0011)" als das Ergebnis 68 der Berechnung
der Auswahl des maximalen Absolutwerts aus und stellt sie in dem
Register C "3(0b0011)" ein.
-
Anhand von 6J wird die Verarbeitung im Schritt (15)
beschrieben, wenn im Register A "3(0b1101)" eingestellt ist
und wenn im Register C "–3(0b0011)" eingestellt ist.
Es wird der Befehl "abmax
C, A" verwendet.
-
Der Wert des Registers C, "–3(0b1101)", wird als die Eingabe A (69)
eingegeben, während
der Wert des Registers A, "3(0b1101)", als die Eingabe
B (70) eingegeben wird.
-
Das Ergebnis 65 der Berechnung des
Absolutwertvergleichs, das durch Subtrahieren von "(0b0011)" (Eingabe B (70))
von "(0b0010)" (Absolutwert der
1er-Komplement-Darstellung der Eingabe A (69)) erhalten
wird, ist "(0b1111)". Da das Ergebnis
65 der Berechnung des Absolutwertvergleichs nicht "(0b0000)" ist (nicht alle
4 Bits null sind) ist, ist das Nullwert-Bestimmungsergebnis 66 "0". Da das Vorzeichen des Ergebnisses 65 der
Berechnung des Absolutwertvergleichs negativ ist, gibt die Auswahlsignal-Erzeugungsvorrichtung 36 als
das Auswahlsignal 67 "1" aus. Da das Auswahlsignal 67 "1" ist, wählt die Auswahleinrichtung 37 die
Eingabe B (70) aus, gibt sie "3(0b0011)" als das Ergebnis 68 der Berechnung der
Auswahl des maximalen Absolutwerts aus und stellt sie im Register
C "3(0b0011)" ein.
-
Wie aus dem Operationsbeispiel 4
klar ist, gibt der Prozessor 400 konsistent den positiven
Wert aus, wenn zwei Werte mit einem gleichen Absolutwert und entgegengesetzten
Vorzeichen eingegeben werden.
-
Wie oben beschrieben wurde, kann
der Prozessor 400 in dem vierten Beispiel gemäß der vorliegenden
Endung den maximalen Absolutwert ohne Fehler ermitteln. Selbst wenn
ein negativer Wert mit dem maximalen Absolutwert unter den Zahlenwerten,
die mit 2er-Komplementen mit einer vorgeschriebenen Bitbreite dargestellt
werden können,
eingegeben wird, können
die Berechnungen richtig ausgeführt
werden. Außerdem
können
die Berechnungen mit höherer
Geschwindigkeit als in den vorangehenden zwei Beispielen ausgeführt werden,
da die in 21 gezeigten
Schritte (14), (7) und (8) durch Hardware
anstatt wie in dem ersten und zweiten Beispiel durch Software ausgeführt werden.
-
Wenn zwei Werte mit einem gleichen
Absolutwert und entgegengesetzten Vorzeichen eingegeben werden,
gibt der Prozessor 400 konsistent den positiven Wert aus.
Dementsprechend ist, wenn die Berechnung zum Ermitteln des Werts
mit dem maximalen Absolutwert unter der Datengruppe unter Verwendung
des Prozessors 400, der die Absolutwert-Berechnungsvorrichtung 415 enthält, ausgeführt wird
und im Ergebnis ein negativer Wert (z. B. –4) ermittelt wird, sichergestellt,
dass die Datengruppe keinen positiven Wert enthält, dessen Absolutwert gleich
dem des erhaltenen Werts (z. B. 4) ist. Dies ist im folgenden Fall
vorteilhaft.
-
Es wird angenommen, dass unter Verwendung
des Prozessors 400 "–4(0b1100)" als der Wert mit
dem maximalen Absolutwert unter der Datengruppe ermittelt wird.
Es ist sichergestellt, dass die Datengruppe "4(0b0100)" nicht enthält. Dementsprechend ist selbstverständlich eine
Breite von 3 Bits, die die 8 Werte –4 bis 3 darstellen kann, ausreichend, um
jedes Datenstück,
das in dem Bereich enthalten ist, aus dem der Wert mit dem maximalen
Absolutwert erhalten worden ist, mit einer kleinstmöglichen Bitbreite
ohne Verschwendung darzustellen. Falls nicht sichergestellt werden
könnte,
dass die Datengruppe "4(0b0100)" nicht enthält, wäre eine
Breite von 4 Bits erforderlich, um die 9 Werte von –4 bis 4 darzustellen.
Auf diese Weise kann der Prozessor 400 die Bitbreite für die Darstellung
jedes Datenstücks
in der Datengruppe ohne Verschwendung mit höherer Geschwindigkeit als in
dem herkömmlichen Prozessor 190 (19) ermitteln.
-
6K zeigt
ein Programm zum Ermitteln des Werts mit dem maximalen Absolutwert
unter Verwendung des Prozessors 400, jedoch ohne Verwendung
der Absolutwert-Berechnungsvorrichtung 415. Der Befehl "abmax" ist durch mehrere
Schritte ausführlich
gezeigt. In dem in 6K gezeigten
Programm ist "absl
a, b" ein Befehl,
um den Absolutwert der 1er-Komplement-Darstellung des Werts im Register
b zu erhalten und den Absolutwert im Register a einzustellen; ist
jmp(be) label" ein
Befehl, um zur Marke zu springen, wenn das Merkerregister N = 0 ist;
und ist "jmp(ne)
label" ein Befehl,
um zur Marke zu springen, wenn das Merkerregister Z = 0 ist. Im Schritt
(20) verwendet der Befehl "jmp(be)" das Berechnungsergebnis im Schritt
(19) für
die Zustandsbestimmung, wenn das Berechnungsergebnis im Schritt
(6) "0" ist, während er
das Berechnungsergebnis im Schritt (6) für die Zustandsbestimmung
verwendet, wenn das Berechnungsergebnis im Schritt (6)
nicht "0" ist. Die Schritte
(16), (17) und (6) entsprechen dem Befehl "abmax".
-
In dem ersten und in dem zweiten
Beispiel sind die erste 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20 (2A und 3B) und die zweite 1er-Komplement-Absolutwert-Berechnungsvorrichtung 21 (2A) als eine Vorrichtung
zum Ausführen von
1er-Komplement-Absolutwert-Berechnungen vorgesehen, wobei aber irgendeine
andere Vorrichtung verwendbar ist, die die gleiche Funktion ausführen kann.
-
7 zeigt
eine weitere 1er-Komplement-Absolutwert-Berechnungsvorrichtung
20A,
die in dem Prozessor gemäß der vorliegenden
Erfindung verwendet werden kann. Die 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20A enthält eine
Exklusiv-ODER-Berechnungsvorrichtung 94, die eine Exklusiv-ODER-Berechnung
eines Vorzeichenbits der Eingangsdaten und jedes Bits der Eingangsdaten ausführt. Das
Vorzeichenbit der Eingangsdaten wird als ein Steuersignal für die Exklusiv-ODER-Berechnungsvorrichtung 94 eingegeben.
-
8 zeigt
eine beispielhafte Struktur der Exklusiv-ODER-Berechnungsvorrichtung 94.
Die Eingabe in die Exklusiv-ODER-Berechnungsvorrichtung 94 sind
4-Bit-Daten. Wie
in 8 gezeigt ist, enthält die Exklusiv-ODER-Berechnungsvorrichtung 94 mehrere
Exklusiv-ODER-Berechnungselemente 38, die die Exklusiv-ODER-Berechnung eines
Vorzeichenbits der Eingangsdaten und des Steuersignals ausführen.
-
Im Folgenden wird eine beispielhafte
Operation der 1er-Komplement-Absolutwert-Berechnungsvorrichtung 20A (7) beschrieben. Es wird
angenommen, dass beispielsweise "3(0b0011)" eingegeben wird.
An dem Wert des Vorzeichenbits "0b0" und jedem Bit der
Eingangsdaten, d. h. "3(0b0011)", wird eine Exklusiv-ODER-Berechnung ausgeführt. Im
Ergebnis wird "(0b0011)" ausgegeben. In diesem
Fall werden die Bits der Eingangsdaten nach der Exklusiv-ODER-Berechnung
nicht invertiert. Wenn "–5(0b1011)" eingegeben wird,
wird an dem Wert des Vorzeichenbits "0b1" und
jedem Bit der Eingangsdaten, d. h. an "–5(0b1011)", eine Exklusiv-ODER-Berechnung
ausgeführt.
Im Ergebnis wird "(0b0100)" ausgegeben. In diesem
Fall werden die Bits der Eingangsdaten nach der Exklusiv-ODER-Berechnung invertiert.
Es ist klar, dass die in 7 gezeigte Struktur
als eine 1er-Komplement-Absolutwert-Berechnungsvorrichtung
wirken kann.
-
In dem zweiten Beispiel ist eine
1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27 (3B) als eine Vorrichtung
vorgesehen, die 1er-Komplement-Absolutwert-Inversionsberechnungen
ausführt,
wobei aber irgendeine andere Vorrichtung verwendet werden kann,
die die gleiche Funktion ausführen
kann.
-
9 zeigt
eine weitere 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27A,
die in dem Prozessor gemäß der vorliegenden
Erfindung verwendet werden kann. Die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27A enthält mehrere
Exklusiv-ODER- und Inversionsberechnungselemente
39, die
eine Exklusiv-ODER-Berechnung eines Vorzeichenbits der Eingangsdaten
und jedes Bit der Eingangsdaten ausführen, das Ergebnis daraufhin
invertieren und das invertierte Ergebnis ausgeben.
-
Beispielsweise wird angenommen, dass "3(0b0011)" eingegeben wird.
An dem Wert des Vorzeichenbits "0b0" und jedem Bit der
Eingangsdaten, d. h. "3(0b0011)", wird eine Exklusiv-ODER-Berechnung
ausgeführt.
Nach der Exklusiv-ODER-
und Inversionsberechnung des Ergebnisses wird "0b0011)" ausgegeben. Wenn "–5(0b1011)" eingegeben wird, wird
an dem Wert des Vorzeichenbits "0b1" und jedem Bit der
Eingangsdaten, d. h. "–5(0b1011)", eine Exklusiv-ODER-Berechnung ausgeführt. Nach
der Exklusiv-ODER- und Inversionsberechnung des Ergebnisses wird "(0b1011)" ausgegeben. Es ist
klar, dass die in 9 gezeigte
Struktur als 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung
wirken kann.
-
10 zeigt
eine nochmals weitere 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27B,
die in dem Prozessor gemäß der vorliegenden
Erfindung verwendet werden kann. Die 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27B enthält einen
Inverter 40, der das Vorzeichenbit der Eingangsdaten invertiert,
und eine Exklusiv-ODER-Berechnungsvorrichtung 94, die eine
Exklusiv-ODER-Berechnung des invertierten Vorzeichenbits der Eingangsdaten
und jedes Bits der Eingangsdaten ausführt. Die Exklusiv-ODER-Berechnungsvorrichtung 94 besitzt
die gleiche Struktur wie die in 8 gezeigte
Exklusiv-ODER-Berechnungsvorrichtung 94, und ihre ausführliche
Beschreibung wird weggelassen.
-
Im Folgenden wird eine beispielhafte
Operation der 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung 27B (10) beschrieben. Es wird
angenommen, dass beispielsweise "3(0b0011)" eingegeben wird.
An "0b1" (dem invertierten
Wert des Vorzeichenbits, "0b0") und jedem Bit der
Eingangsdaten, d. h. "3(0b0011)", wird eine Exklusiv-ODER-Berechnung
ausgeführt.
Als Ergebnis wird "(0b1100)" ausgegeben. Wenn "–5(0b1011)" eingegeben wird, wird an "0b0" (dem invertierten
Wert des Vorzeichenbits "0b1") und jedem Bit der
Eingangsdaten, d. h. "–5(0b1011)", eine Exklusiv-ODER-Berechnung
ausgeführt.
Im Ergebnis wird "(0b1011)" ausgegeben. Es ist
klar, dass die in 10 gezeigte
Struktur als 1er-Komplement-Absolutwertinversions-Berechnungsvorrichtung
wirken kann.
-
12 zeigt
die Änderung
der durch den Prozessor ausgewählten
Daten, bis die Daten mit dem maximalen Absolutwert bestimmt sind,
sowie die erhaltenen Daten mit dem maximalen Absolutwert. Die Daten
mit dem maximalen Absolutwert werden aus den in 11 gezeigten Daten unter Verwendung
der Prozessoren 100 (Beispiel 1), 200 (Beispiel
2), 300 (Beispiel 3) und 400 (Beispiel 4) gemäß der vorliegenden
Erfindung und unter Verwendung des herkömmlichen Prozessors 190 (Stand
der Technik) erhalten.
-
Wie in 12 gezeigt ist, erhält der herkömmliche Prozessor 190 "2" anstelle von "–8", das als der Wert
mit dem maximalen Absolutwert erhalten werden sollte. Die Differenz
des Absolutwerts zwischen dem erhaltenen Wert und dem zu erhaltenden richtigen
Wert ist bezeichnenderweise groß.
Dies ergibt sich, da eine richtige Berechnung hinsichtlich "–8", d. h. des Werts mit dem maximalen
Absolutwert im Bereich der Zahlenwerte, die durch 2er-Komplemente
mit der Breite von 4 Bits dargestellt werden können, nicht ausgeführt werden
kann. Die Prozessoren 100, 200 und 300 erhalten "7", was wesentlich näher in Bezug auf den Absolutwert
zu dem zu erhaltenden richtigen Wert als im Fall des herkömmlichen Prozessors 190 ist.
Der Prozessor 400 erhält
richtig "–8". Wie daraus klar
ist, erhalten die Prozessoren gemäß der vorliegenden Erfindung
den Wert mit dem maximalen Absolutwert mit einer wesentlich verbesserten
Genauigkeit im Vergleich zu dem herkömmlichen Prozessor.
-
(Beispiel 5)
-
Anhand von 13 wird ein Prozessor 500 in
einem fünften
Beispiel gemäß der vorliegenden
Erfindung beschrieben. Der Prozessor 500 enthält einen
Datenbusabschnitt 2E und einen Steuerabschnitt 1 zum
Steuern des Datenbusabschnitts 2E. Der Datenbusabschnitt 2E enthält eine
in 14 gezeigt ALU 506.
Abgesehen davon besitzt der Prozessor 500 im Wesentlichen
die gleiche Struktur wie der herkömmliche allgemeine Prozessor 160 (16). Die ALU 506 ist
gegenüber
der in dem herkömmlichen
allgemeinen Prozessor 160 enthaltenen ALU 6 geändert, so
dass sie die Funktion der 1er-Komplement-Absolutwert-Subtraktion
besitzt.
-
Wie in 14 gezeigt ist, enthält die ALU 506 eine
Exklusiv-ODER-Berechnungsvorrichtung 71, einen Inverter 72,
eine Auswahleinrichtung 73, eine Exklusiv-ODER-Berechnungsvorrichtung 74,
einen Inverter 75, eine Auswahleinrichtung 76,
einen Addierer 78 und eine Auswahleinrichtung 77.
Außer der
Ausführung
der üblichen
Addition und Subtraktion vergleicht die ALU 506 unter Verwendung
des 1er-Komplements die Absolutwerte der zwei Werte, die jeweils
in den zwei durch das Steuersignal 10 bestimmten Registern
in der Registerdatei 7 gespeichert sind. Das Vergleichsergebnis
wird als Anzeigeinformationen ausgegeben, die anzeigen, welcher der
zwei Werte den größeren Absolutwert
besitzt.
-
Die Exklusiv-ODER-Berechnungsvorrichtung 71 besitzt
die gleiche Struktur wie die Exklusiv-ODER-Berechnungsvorrichtung 94 (8, die mehrere Exklusiv-ODER-Berechnungselemente 38 enthält). Die
Exklusiv-ODER-Berechnungsvorrichtung 71 führt eine
Exklusiv-ODER-Berechnung der als eine Eingabe empfangenen Eingabe
A (69) und eines von der Auswahleinrichtung 73 empfangenen 1-Bit-Steuersignals
aus. Der Inverter 72 invertiert die Eingabe A (69)
und gibt den invertierten Wert als invertiertes Vorzeichensignal 84 aus.
Die Auswahleinrichtung 73 wählt anhand des Steuersignals
A (79) ein Vorzeichensignal 83 der Eingabe A (69)
oder das invertierte Vorzeichensignal 84 oder das Signal 85 mit
einem festen Wert 0 oder das Signal 86 mit einem festen
Wert 1 oder das ausgewählte
1-Bit-Signal aus. Dementsprechend
gibt die Exklusiv-ODER-Berechnungsvorrichtung 71 den Absolutwert
des Eingangssignals A (69) aus, wenn sie das Vorzeichensignal 83 der
Eingabe A (69) empfängt.
Genauer wird eine Exklusiv-ODER-Berechnung der Eingabe A (69)
und von "1111" ausgeführt, wenn
das Vorzeichenbit "1 ", d. h. negativ,
ist. Somit wird jedes Bit der Eingangsdaten A (69) invertiert
und von der Exklusiv-ODER-Berechnungsvorrichtung 71 der
Absolutwert der 1er-Komplement-Darstellung ausgegeben. Wenn das
Vorzeichenbit "0", d. h. positiv,
ist, wird eine Exklusiv-ODER-Berechnung der Eingabe A (69) und
von "0000" ausgeführt. Somit
wird die Eingabe A (69) von der Exklusiv-ODER-Berechnungsvorrichtung 71 wie
sie ist ausgegeben. Wenn die Exklusiv-ODER-Berechnungsvorrichtung 71 von
der Auswahleinrichtung 73 das invertierte Vorzeichensignal 84 als
das Steuersignal empfängt,
wird der Absolutwert der 1er-Komplement-Darstellung der Eingabe
A (69) ausgegeben.
-
Die Exklusiv-ODER-Berechnungsvorrichtung 74 besitzt
die gleiche Struktur wie die Exklusiv-ODER-Berechnungsvorrichtung 94 (8, die mehrere Exklusiv-ODER-Berechnungselemente 38 enthält). Die
Exklusiv-ODER-Berechnungsvorrichtung 74 führt eine
Exklusiv-ODER-Berechnung der als eine Eingabe empfangenen Eingabe
B (70) und eines von der Auswahleinrichtung 76 empfangenen 1-Bit-Steuersignals
aus. Der Inverter 75 invertiert die Eingabe B (70)
und gibt den invertierten Wert als ein invertiertes Vorzeichensignal 88 aus.
Die Auswahlein richtung 76 wählt anhand eines Steuersignals
B (80) ein Vorzeichensignal 87 der Eingabe B (70)
oder das invertierte Vorzeichensignal 88 oder ein Signal 89 mit
dem festen Wert 0 oder ein Signal 90 mit dem festen Wert
1 oder das ausgewählte
1-Bit-Signal aus.
-
Die Auswahleinrichtung 77 wählt anhand
eines Steuersignals C (81) entweder das Signal 91 mit einem
festen Wert 0 oder das Signal 92 mit einem festen Wert
1 aus und gibt das ausgewählte
1-Bit-Signal aus.
-
Der Addierer 78 addiert
das Ausgangssignal von der Exklusiv-ODER-Berechnungsvorrichtung 71, das
Ausgangssignal von der Exklusiv-ODER-Berechnungsvorrichtung 74 und
das Ausgangssignal von der Auswahleinrichtung 77 und gibt
das Ergebnis als eine Ausgabe 82 aus.
-
Die Steuersignale A (79),
B (80) und C (81) werden von dem Decodierer 5 (13) zusammen als das Steuersignal 10 gesendet.
-
Im Folgenden wird eine Operation
der ALU 506 in dem Prozessor 500 beschrieben.
-
<Operationsbeispiel 1>
-
In diesem Beispiel wird anhand des
Steuersignals A (79) von der Auswahleinrichtung 73 das
Vorzeichensignal 83 ausgegeben, wird anhand des Steuersignals
B (80) von der Auswahleinrichtung 76 das invertierte
Vorzeichensignal 88 ausgegeben und wird anhand des Steuersignals
C (81) von der Auswahleinrichtung 77 das Signal 92 mit
dem festen Wert 1 ausgegeben. In diesem Fall subtrahiert die ALU 506 die
Eingabe B (70) von der Eingabe A (69).
-
Wenn anhand des Steuersignals A (79)
von der Auswahleinrichtung 73 das Vorzeichensignal 83 in
die Exklusiv-ODER-Berechnungsvorrichtung 71 eingegeben
wird, führt
die Exklusiv-ODER-Berechnungsvorrichtung 71 eine Exklusiv-ODER-Berechnung jedes
Bits der Eingabe A (69) und des Vorzeichenbits der Eingabe
A (69) aus.
-
Wenn anhand des Steuersignals B (80)
von der Auswahleinrichtung 76 das invertierte Vorzeichensignal 88 in
die Exklusiv-ODER-Berechnungsvorrichtung 74 eingegeben
wird, führt
die Exklusiv-ODER-Berechnungsvorrichtung 74 eine Exklusiv-ODER-Berechnung
jedes Bits der Eingabe B (70) und des Vorzeichenbits der
Eingabe B (70) aus und invertiert das Ergebnis.
-
Der Addierer 78 addiert
den Absolutwert der 1er-Komplement-Darstellung der Eingabe A (69), des
invertierten Werts des Absolutwerts der 1er-Komplement-Darstellung der Eingabe
B (70) und der Ausgabe "1" von der Auswahleinrichtung 77.
In diesem Fall subtrahiert die ALU 506 den invertierten Wert
des Absolutwerts der 1er-Komplement-Darstellung der Eingabe B (70)
von dem Absolutwert der 1er-Komplement-Darstellung
der Eingabe A (69) und gibt das Ergebnis als die Ausgabe 82 aus.
-
<Operationsbeispiel 2>
-
In diesem Beispiel wird anhand des
Steuersignals A (79) von der Auswahleinrichtung 73 das
Signal 85 mit dem festen Wert 0 ausgegeben, wird anhand
des Steuersignals B (80) von der Auswahleinrichtung 76 das
Signal 89 mit dem festen Wert 0 ausgegeben und wird anhand
des Steuersignals C (81) von der Auswahleinrichtung 77 das
Signal 91 mit dem festen Wert 0 ausgegeben. In diesem Fall
addiert die ALU 506 die Eingabe A (69) und die
Eingabe B (70).
-
Wenn anhand des Steuersignals A (79)
von der Auswahleinrichtung 73 das Signal 85 mit
dem festen Wert 0 in die Exklusiv-ODER-Berechnungsvorrichtung 71 eingegeben
wird, führt
die Exklusiv-ODER-Berechnungsvorrichtung 71 eine Exklusiv-ODER-Berechnung
jedes Bits der Eingabe A (69) und von "0" aus.
Im Ergebnis gibt die Exklusiv-ODER-Berechnungsvorrichtung 71 die
Ausgabe A (69) wie sie ist aus.
-
Wenn anhand des Steuersignals B (80)
von der Auswahleinrichtung 76 das Signal 89 mit
dem festen Wert 0 in die Exklusiv-ODER-Berechnungsvorrichtung 74 eingegeben
wird, führt
die Exklusiv-ODER-Berechnungsvorrichtung 74 eine Exklusiv-ODER-Berechnung
jedes Bits der Eingabe B (70) und von "0" aus.
Im Ergebnis gibt die Exklusiv-ODER-Berechnungsvorrichtung 74 die
Eingabe B (70) wie sie ist aus.
-
Der Addierer 78 addiert
den Wert der Eingabe A (69) von der Exklusiv-ODER-Berechnungsvorrichtung 71,
den Wert der Eingabe B (70) von der Exklusiv- ODER-Berechnungsvorrichtung 74 und
die Ausgabe "0" von der Auswahleinrichtung 77.
In diesem Fall addiert die ALU 506 die Eingabe A (69)
und die Eingabe B (70).
-
<Operationsbeispiel 3>
-
In diesem Beispiel wird anhand des
Steuersignals A (79) von der Auswahleinrichtung 73 das
Signal 85 mit dem festen Wert 0 ausgegeben, wird anhand
des Steuersignals B (80) von der Auswahleinrichtung 76 das
Signal 90 mit dem festen Wert 1 ausgegeben und wird anhand
des Steuersignals C (81) von der Auswahleinrichtung 77 das
Signal 92 mit dem festen Wert 1 ausgegeben.
-
Wenn anhand des Steuersignals A (79)
von der Auswahleinrichtung 73 das Signal 85 mit
dem festen Wert 0 in die Exklusiv-ODER-Berechnungsvorrichtung 71 eingegeben
wird, führt
die Exklusiv-ODER-Berechnungsvorrichtung 71 eine Exklusiv-ODER-Berechnung
jedes Bits der Eingabe A (69) und von "0" aus.
Im Ergebnis gibt die Exklusiv-ODER-Berechnungsvorrichtung 71 die
Eingabe A (69) wie sie ist aus.
-
Wenn anhand des Steuersignals B (80)
von der Auswahleinrichtung 76 das Signal 90 mit
dem festen Wert 1 in die Exklusiv-ODER-Berechnungsvorrichtung 74 eingegeben
wird, führt
die Exklusiv-ODER-Berechnungsvorrichtung 74 eine Exklusiv-ODER-Berechnung
jedes Bits der Eingabe B (70) und von "1" aus.
Im Ergebnis gibt die Exklusiv-ODER-Berechnungsvorrichtung 74 die
invertierte Eingabe B (70) aus.
-
Der Addierer 78 addiert
den Wert der Eingabe A (69) von der Exklusiv-ODER-Berechnungsvorrichtung 71,
die invertierte Eingabe B (70) von der Exklusiv-ODER-Berechnungsvorrichtung 74 und
die Ausgabe "1" von der Auswahleinrichtung 77.
In diesem Fall subtrahiert die ALU 506 die Eingabe B (70) von
der Eingabe A (69).
-
Wie oben beschrieben wurde, kann
die ALU 506 des Prozessors 500 in dem fünften Beispiel durch
Kombinieren verschiedener Ausgaben durch, die Steuersignale A (79),
B (80) und C (81) unter Verwendung der Eingabe
A (69) und der Eingabe B (70) mehrere verschiedene
Typen von Berechnungen ausführen. 15 zeigt verschiedene Ausgaben durch
die Steuersignale A (79), B (80) und C (81)
sowie die erhaltenen Berechnungsergebnisse einschließlich der
oben in den Operationsbeispielen 1 bis 3 beschriebenen Ergebnisse.
-
Der Prozessor 500 führt unter
Verwendung der Berechnungsvorrichtung gemäß der vorliegenden Erfindung
die Addition und Subtraktion der Absolutwerte der 1er-Komplemente sowie
wie üblich
die Addition und die Subtraktion aus.
-
Der Prozessor 500 kann verschiedene
Strukturen besitzen, um zusätzlich
zur Addition und Subtraktion der Absolutwerte der 1er-Komplemente
die übliche
Addition und Subtraktion auszuführen.
-
In dem ersten bis vierten Beispiel
wird die Breite von 4 Bits verwendet, wobei aber andere Bitbreiten
verwendet werden können.
-
In dem dritten und vierten Beispiel
kann durch Austausch der Auswahlbedingungen, die von den Auswahleinrichtungen 33 und 37 verwendet
werden, anstelle des Werts mit dem maximalen Absolutwert der Wert
mit dem minimalen Absolutwert ermittelt werden.
-
Das Berechnungsverfahren gemäß der vorliegenden
Erfindung kann durch ein Computerprogramm dargestellt und auf einem
computerlesbaren Aufzeichnungsmedium aufgezeichnet sein. Das Computerprogramm
kann in dem Zustand, in dem es von dem Computer gelesen wird, ausgeführt werden.
-
Alternativ kann das Berechnungsverfahren gemäß der vorliegenden
Erfindung durch einen Mikrocode eines Prozessors dargestellt sein
und als der Ausführungsbefehl
des Prozessors ausgeführt
werden.
-
Die Prozessoren in dem ersten bis
fünften Beispiel
verwenden Absolutwerte der 1er-Komplement-Darstellungen. Dementsprechend
kann die Vergleichsberechnung selbst dann richtig ausgeführt werden,
wenn ein negativer Wert mit dem maximalen Absolutwert in dem Bereich
der Zahlenwerte eingegeben wird, die mit einer vorgeschriebenen
Bitbreite dargestellt werden können.
-
Der Prozessor in dem vierten Beispiel
gibt konsistent den positiven Wert als den Wert mit dem größeren Absolutwert
aus, wenn zwei Werte mit einem gleichen Absolutwert und entgegengesetzten Vorzeichen
eingegeben werden. Dement sprechend ist sichergestellt, dass die
geprüfte
Datengruppe keinen positiven Wert mit einem gleichen Absolutwert wie
der negative Wert A enthält,
wenn mit diesem Prozessor ein negativer Wert A ermittelt wird. Dementsprechend
kann ohne Verschwendung die kleinstmögliche Bitbreite eingestellt
werden, die erforderlich ist, um jedes Datenstück in der Datengruppe darzustellen.
-
Falls ein positiver Wert von einem
negativen Wert subtrahiert wird und der positive Wert einen Absolutwert
besitzt, der um 1 kleiner als der Absolutwert des negativen Werts
ist, gibt der Prozessor in dem vierten Beispiel richtig den positiven
Wert als den Wert mit einem größeren Absolutwert
aus. Dementsprechend kann die Vergleichsberechnung unter Verwendung
der 1er-Komplement-Darstellungsprozedur fehlerfrei ausgeführt werden.
-
Das Verfahren gemäß dem ersten bis fünften Beispiel
erleichtert die durch einen Prozessor gemäß der vorliegenden Erfindung
ausgeführte
Berechnung und ist auf ein Computerprogramm oder dergleichen anwendbar.
-
Wie oben beschrieben wurde, schafft
die vorliegende Erfindung eine Berechnungsvorrichtung, die einen
negativen Wert mit dem maximalen Absolutwert in dem Bereich der
Zahlenwerte, die mit einer vorgeschriebenen Bitbreite dargestellt
werden können,
genau verarbeitet und die minimal mögliche Bitbreite zur Darstellung
der gegebenen Daten bestimmt, ein Berechnungsverfahren, das diese
Verarbeitung unter Verwendung der Berechnungsvorrichtung ausführt, und
einen Prozessor, der eine solche Berechnungsvorrichtung enthält.