DE69836408T2 - Verfahren zum Ausführen von arithmetischen und logischen Operationen in Feldern eines Wort-Operanden - Google Patents

Verfahren zum Ausführen von arithmetischen und logischen Operationen in Feldern eines Wort-Operanden Download PDF

Info

Publication number
DE69836408T2
DE69836408T2 DE69836408T DE69836408T DE69836408T2 DE 69836408 T2 DE69836408 T2 DE 69836408T2 DE 69836408 T DE69836408 T DE 69836408T DE 69836408 T DE69836408 T DE 69836408T DE 69836408 T2 DE69836408 T2 DE 69836408T2
Authority
DE
Germany
Prior art keywords
register
stored
data
bits
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69836408T
Other languages
English (en)
Other versions
DE69836408D1 (de
Inventor
Masaaki Sony Computer Entertainment OKA
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Application granted granted Critical
Publication of DE69836408D1 publication Critical patent/DE69836408D1/de
Publication of DE69836408T2 publication Critical patent/DE69836408T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Description

  • Technisches Gebiet
  • Die Erfindung betrifft ein arithmetisches Verfahren zum Ausführen einer arithmetischen und logischen Operation.
  • Bei CPUs (Zentralverarbeitungseinheiten), die arithmetische Einheiten (arithmetische und logische Einheiten) sind, die für Computer usw. verwendet werden, gibt es einige mit einer Gruppe von Befehlen, die Multimediabefehl genannt werden (hier als MM-Befehl oder einfach als Befehl bezeichnet). Dieser MM-Befehl dient dazu, den Bereich des arithmetischen (Berechnungs-) Elements, in dem die CPU mehrere Befehle gleichzeitig ausführen muss, zu unterteilen.
  • Ein Beispiel des Aufbaus einer herkömmlichen CPU ist in 1 gezeigt. Diese herkömmliche CPU umfasst eine arithmetische und logische Einheit (ALU) 130, die als arithmetische und logische Einrichtung zum Ausführen einer Datenverarbeitung dient, einer Shift-Verarbeitungseinheit (SHT) 140, die als eine Shift-Verarbeitungseinrichtung zum Verschieben von Daten nach links und nach rechts dient, und eine Registereinheit (REG) 150, wobei diese Einheiten über Busse 160, 170, 180 von 64 Bits verbunden sind, um gegenseitig Daten zu übertragen.
  • 2 zeigt eine Multiplikation mit einem Multiplizierer von 64 Bits mal 64 Bits in der oben beschriebenen herkömmlichen CPU. Dabei wird ein Wort s·t von 128 Bits, das dem Produkt von Wort s von 64 Bits des Registers A und Wort t von 64 Bits des Registers B entspricht, erzeugt und im Register C gespeichert.
  • 3 zeigt den Zustand, bei dem die oben beschriebenen 64-Bit-Worte s und t jeweils in vier Felder unterteilt werden, um jeweils 4-Bit-Felder zu bilden, um die Multiplikation von Bits der entsprechenden Felder, d. h. 16 Bits mal 16 Bits auszuführen. Es werden nämlich s0·t0, s1·t1, s2·t2 und s3·t3, die jeweils aus 32 Bits bestehen, die den Produkten von jeweils 16 Bits s0, s1, s2, s3 des Registers A und den jeweiligen 16 Bits t0, t1, t2 und t3 des Registers B entsprechen, erzeugt und in dem Register C gespeichert.
  • Solche vier parallelen Multiplikationen können realisiert werden, indem der Multiplizierer geviertelt wird, so dass die CPU vier parallele Multiplizierer umfassen muss. Zusätzlich kann ein Addierer, den die CPU umfasst, auch geviertelt sein, um vier parallele Addierer vorzusehen.
  • 4 zeigt die Addition durch den Addierer von 128 Bits und 128 Bits in der oben beschriebenen herkömmlichen CPU. Dabei werden 128 Bits s + t, die die Summe der entsprechenden 182 Bits s des Registers A und der entsprechenden 128 Bits t des Registers B entsprechen, erzeugt und in dem Register C gespeichert.
  • 5 zeigt den Zustand, bei dem die oben beschriebenen entsprechenden Worte geviertelt werden, um die Additionen der jeweiligen 32 Bits + den jeweiligen 32 Bits durchzuführen. Dabei werden s0 + t0, s1 + t1, s2 + t2 und s3 + t3, die jeweils aus 32 Bits bestehen, die die Summe aus den entsprechenden 32 Bits s0, s1, s2, s3 des Registers A und der entsprechenden 32 Bits t0, t1, t2 und t3 des Registers B sind, erzeugt und in dem Register C gespeichert.
  • Wenn die der Verarbeitung zugeführte Datenbreite, wie oben beschrieben, bei 16 Bits oder bei 32 Bits liegt, ist es möglich, die arithmetische Verarbeitung mit einer hohen Geschwindigkeit auszuführen, falls parallele arithmetische (Berechnungs-) Elemente, die durch Teilen von einfachen arithmetischen (Berechnungs-) Elementen gebildet sind, verwendet werden. Befehle zum Ausführen einer parallelen Operation, die in den 3 und 5 gezeigt sind, sind ein Teil der dafür verwendeten Multimedia (MM) Befehle.
  • Ein praktischeres Beispiel einer herkömmlichen parallelen Operation mit MM-Befehlen ist unten angegeben.
  • Zunächst wird der Fall erläutert, bei dem n + 1 gleichzeitig bestehende lineare Gleichungen, wie durch die folgende Formel (1) angegeben ist, durch die Cramer-Formel gelöst werden. a00X0 + a01X1 + ... + a0nXn = b0 a10X0 + a11X1 + ... + a1nXn = b1 ... an0X0 + an1X1 + ... + annXn = bn (1)
    Figure 00030001
  • Die j-te Spalte wird ersetzt durch
  • Figure 00030002
  • Wenn diese Kramer-Formel verwendet wird, werden j Spalten von (n + 1) × (n + 1) Determinanten der Reihe nach ersetzt, wie durch die oben angegebene Formel (2) angegeben ist, wodurch es möglich wird, Lösungen der gleichzeitig bestehenden linearen Gleichungen der Formel (1) zu erhalten. Dadurch ist es möglich, die gleichzeitig bestehenden linearen Gleichungen zu lösen, wenn die Determinante berechnet werden kann.
  • Im Allgemeinen wird die (n + 1) × (n + 1) Determinante, wie durch die Formel (3) angegeben ist, erweitert, indem kleine Determinanten mit einem geringeren Grad als n + 1 verwendet werden. In diesem Fall entspricht Δij einem Ausdruck, in dem das Vorzeichen, das durch (–1)i+j bestimmt ist, der Darstellung hinzugefügt wird, die man durch Entfernen der (n + 1) × (n + 1) Determinanten, der i-ten Reihe und der j-ten Spalte, erhält.
    Figure 00040001
    Entfernen der j-ten Spalte
    Figure 00040002
    Entfernen der i-ten Reihe
  • Dadurch können die ursprünglichen Determinanten berechnet werden, wenn kleine Determinanten mit einem geringeren Grad nacheinander berechnet werden. Wenn demgemäß die 2 × 2 Determinante, die der Determinante des geringsten Grades entspricht, berechnet werden kann, kann eine Determinante eines beliebigen Grades gleichzeitig berechnet werden. Um eine 2 × 2 Determinante zu berechnen, ist es ausreichend, die durch die Formel (4) angegebene ausführliche Schreibweise zu verwenden.
  • Figure 00040003
  • Weiterhin wird im Fall des Berechnens der Determinante einer 3 × 3 Matrix, die durch die Formel (3) angegebene ausführliche Schreibweise in die Formel (5) umgeschrieben.
  • Figure 00050001
  • 6 zeigt den Zustand, bei der entsprechende Zeilenvektoren (a00, a01, a02), (a10, a11, A12), (a20, a21, a22I) der 3 × 3 Matrix jeweils in Register A0, A1 bzw. A2 als 64 Bits gespeichert sind. Das Verfahren zum Berechnen der kleinen Determinanten von 2 × 2 durch Verwenden von herkömmlichen MM-Befehlen mit Bezug auf die Zeilenvektoren, die auf diese Weise gespeichert sind, wird nachfolgend beschrieben.
  • 7 zeigt das Verfahren zum Berechnen einer kleinen Determinante von 2 × 2 durch Verwenden eines herkömmlichen MM-Befehls mit Bezug auf Zeilenvektoren der 3 × 3 Matrix der 6.
  • Zunächst wird der Zeilenvektor, der in Register A1 gespeichert ist, um 16 Bits nach rechts verschoben durch den Befehl „SRL B, A1, 16" und Register B gespeichert.
  • Dann wird das Produkt (AND) des oben beschriebenen Zeilenvektors, der in Register B gespeichert ist, und 000000000000ffff durch den Befehl „ANDI B, 0 × 000000000000ffff" erzeugt und in dem Register B zum zweiten Mal gespeichert. Somit ist nur a11 in den 16 niederwertigen Bits des Bit 0 bis Bit 15 des Registers B gespeichert.
  • Dann wird der Zeilenvektor, der in dem Register A1 gespeichert ist, um 16 Bits nach links durch den Befehl „SLL C, A1, 16" verschoben und in dem Register C gespeichert.
  • Anschließend wird das Produkt (AND) des oben beschriebenen Zeilenvektors, der in Register C gespeichert ist, mit 00000000ffff0000 durch den Befehl „ANDI C, 0 × 00000000ffff0000" erzeugt und in dem Register C zum zweiten Mal gespeichert. Somit wird nur a12 in den 16 Bits des Bits 16 bis 31 des Registers C gespeichert.
  • Dann wird die Summe (OR) der Daten, die in dem Register B gespeichert sind und der Daten, die in dem Register C gespeichert sind, durch den Befehl „OR D, B, C" berechnet und in dem Register D gespeichert. Somit sind a12, a11 in den 32 niederwertigen Bits des Registers D gespeichert.
  • Dann werden der Zeilenvektor, der in Register A0 gespeichert ist, und die Daten, die in dem Register B gespeichert sind, parallel durch den Befehl „PMUL E, A0, D" multipliziert und das Ergebnis in das Register E gespeichert. Dadurch werden a01·a12 in die 32 höherwertigen Bits des Registers E und a02·a11 in dessen 32 niederwertigen Bits gespeichert.
  • Anschließend werden Daten, die in dem Register E gespeichert sind, um 32 Bits nach rechts durch den Befehl „SRL F, E, 32" verschoben und in Register F gespeichert. Dadurch wird nur a01·a12 in 32 niederwertigen Bits des Registers F gespeichert.
  • Anschließend wird das Produkt (AND) der oben beschriebenen Daten, die in Register E gespeichert sind, und 00000000ffffffff durch den Befehl „ANDI E, 0 × 00000000ffffffff" erzeugt und in dem Register E zum zweiten Mal gespeichert. Somit werden nur A02·a11 in den 32 niederwertigen Bits des Registers E gespeichert.
  • Anschließend werden durch den Befehl „SUB G, F, E" die in dem Register E gespeicherten Daten von den im Register F gespeicherten Daten subtrahiert, so dass ihre Differenz erzeugt wird. Die so erhaltene Differenz wird im Register G gespeichert. Dadurch wird die Determinante a01·a12 – a02·a11 der 2 × 2 Matrix in 32 niederwertigen Bits des Registers G gespeichert.
  • Wie oben angegeben, sind in dem Fall, dass herkömmliche MM-Befehle verwendet werden, um die Determinante einer 2 × 2 Matrix zu berechnen, die oben beschriebenen neune Schritte erforderlich.
  • Nachfolgend wird als ein zweites praktischeres Beispiel ein Fall erläutert, bei dem eine Normale (Vektor) eines Dreiecks bestimmt wird, bei dem die herkömmliche MM-Befehl verwendet wird, um eine parallele Operation auszuführen.
  • Drei Punkte des dreidimensionalen Raums legen ein Dreieck fest. Weiterhin sind die Fläche des Dreiecks und der Normalenvektor durch den absoluten Wert des äußeren Produktvektors und des Normalisierungsvektors angegeben. Das äußere Produkt solcher zwei dreidimensionalen Vektoren ist ein dreidimensionaler Vektor, der durch die Formel (6) bestimmt ist.
  • Figure 00070001
  • 8 zeigt den Zustand, bei dem zwei dreidimensionale Vektoren (a00, a01, a02), (a10, a11, a12) in Registern A0, A1 als zwei Worte gespeichert sind, die jeweils aus 64 Bits bestehen. Dies wird nachfolgend in Verbindung mit dem Verfahren zum Berechnen des äußeren Produkts unter Verwendung der herkömmlichen MM-Befehle mit Bezug auf zwei dreidimensionale Vektoren, die auf diese Weise gespeichert sind, näher beschrieben.
  • 9 zeigt das Verfahren zum Berechnen des äußeren Produkts unter Verwendung der herkömmlichen MM-Befehle mit Bezug auf zwei dreidimensionale Vektoren der 8.
  • Zunächst wird ein in dem Register A0 gespeicherter Zeilenvektor durch den Befehl „SRL B, A0, 16" um 16 Bits nach rechts verschoben und in Register B gespeichert.
  • Anschließend wird der Zeilenvektor, der im Register A0 gespeichert ist, um 32 Bits nach links durch den Befehl „SLL C, A0, 32" verschoben und in Register C gespeichert.
  • Anschließend wird die Summe ((OR) der in Register B gespeicherten Daten und der in Register C gespeicherten Daten durch den Befehl „OR D, B, C" gebildet und in Register D gespeichert. Somit werden a01, a02, a00, a01, die jeweils aus 16 Bits bestehen, in Register D gespeichert.
  • Dann wird der Zeilenvektor, der in Register A1 gespeichert ist, um 16 Bits nach links durch den Befehl „SLL E, A1, 16" verschoben und in Register E gespeichert.
  • Anschließend wird der Zeilenvektor, der in dem Register A1 gespeichert ist, um 32 Bits nach rechts durch den Befehl „SRL F, A1, 32" gespeichert und in Register F gespeichert.
  • Anschließend wird die Summe (OR) der in Register E gespeicherten Daten und der in Register F gespeicherten Daten durch den Befehl „OR G, E, F" gebildet und in Register G gespeichert. Somit werden a10, a11, a12, a10, die jeweils aus 16 Bits bestehen, in dem Register G gespeichert.
  • Anschließend werden die in dem Register D gespeicherten Daten und die in dem Register G gespeicherten Daten parallel durch den Befehl „PMUL H, D, G" multipliziert und das Ergebnis in dem Register H gespeichert. Dadurch werden a01·a10, a02·a11, a00·a12, a01·a10, die jeweils aus 32 Bits bestehen, in dem Register H gespeichert.
  • Anschließend wird der in Register A0 gespeicherte Zeilenvektor um 16 Bits nach links durch den Befehl „SLL B, A0, 16" verschoben und in Register B gespeichert.
  • Anschließend wird der Zeilenvektor, der in Register A0 gespeichert ist, um 32 Bits nach rechts durch den Befehl „SRL C, A0, 32" verschoben und in Register C gespeichert.
  • Dann wird die Summe (OR) der Daten, die in Register B gespeichert sind, und der Daten, die in Register C gespeichert sind, durch den Befehl „OR D, B, C" gebildet und in Register D gespeichert. Dadurch werden a00, a01, a02, a00, die jeweils aus 16 Bits bestehen, in dem Register D gespeichert.
  • Anschließend wird der in Register A1 gespeicherte Zeilenvektor um 16 Bits nach rechts durch den Befehl „SRL E, A1, 16" verschoben und in Register E gespeichert.
  • Anschließend wird der in Register A1 gespeicherte Zeilenvektor um 32 Bits nach links durch den Befehl „SLL F, A1, 32" verschoben und in Register F gespeichert.
  • Anschließend wird die Summe (OR) der in Register E gespeicherten Daten und der in Register F gespeicherten Daten durch den Befehl „OR G, E, F" gebildet und in Register G gespeichert. Somit werden a11, a12, a10, die jeweils aus 16 Bits bestehen, in dem Register G gespeichert.
  • Anschließend werden in dem Register D gespeicherte Daten und in dem Register G gespeicherte Daten parallel durch den Befehl „PMUL J, D, G" multipliziert und das Ergebnis in das Register J gespeichert. Dadurch werden a00·a11, a01·a12, a02·a10, a00·a11, die jeweils aus 32 Bits bestehen, in dem Register J gespeichert.
  • Anschließend werden die in dem Register H gespeicherten Daten parallel von den in dem Register J gespeicherten Daten durch den Befehl „PSUP K, J, H" parallel subtrahiert und das Ergebnis in dem Register k gespeichert. Dadurch werden a00·a11 – a01·a10, a01·a12 – a02·a11, a02·a10 – a00·a12, a00·a11 – a10·a10, die jeweils aus 32 Bits bestehen, in dem Register K gespeichert.
  • Wie oben angegeben, werden in dem Fall, bei dem die herkömmlichen MM-Befehle verwendet werden, und das äußere Produkt von zwei dreidimensionalen Vektoren zu berechnen, die oben beschriebenen 15 Schritte benötigt.
  • Nachfolgend wird die Berechnung des inneren Produkts von zwei Vektoren als ein drittes praktischeres Beispiel erläutert, bei dem die herkömmlichen MM-Befehle verwendet werden, um eine parallele Operation auszuführen.
  • Das innere Produkt von zwei Vektoren stellt den Grad der Korrelation zwischen ihnen dar. Ein solches inneres Produkt von zwei Vektoren wird z. B. durch die zwei vierdimensionalen Vektoren durch die Formel (7) angegeben. (a0a1a2a3)·(b0b1b2b3) = a0·b0 + a1·b1 + a2·b2 + a3·b3 (7)
  • 10 zeigt den Zustand, bei dem zwei vierdimensionale Vektoren (a0, a1, a2, a3), (b0, b1, b2, b3) von 64-Bit-Worten jeweils in Register A, B als zwei Worte gespeichert sind. Nachfolgend wird die Berechnung des inneren Produkts mit Hilfe von herkömmlichen MM-Befehlen mit Bezug auf zwei vierdimensionale Vektoren, die auf diese Weise gespeichert sind, erläutert.
  • 11 zeigt das Verfahren zum Berechnen des inneren Produkts mit Hilfe von herkömmlichen MM-Befehlen mit Bezug auf zwei vierdimensionale Vektoren der 10. In diesem Bespiel kennzeichnen die Abschnitte, die mit der Markierung x markiert sind, dass dort für diese Operation irrelevante Werte gespeichert sind.
  • Anfänglich werden in dem Register A gespeicherte Daten und in dem Register B gespeicherte Daten parallel durch den Befehl „PMUL C, A, B" multipliziert und das Ergebnis wird in dem Register C gespeichert. Dadurch werden a0·b0, a1·b1, a2·b2, a3·b3, die jeweils aus 16 Bits bestehen, in dem Register C gespeichert.
  • Anschließend werden in dem Register C gespeicherte Daten um 16 Bits nach links durch den Befehl „SLL D, C, 16" verschoben und in dem Register D gespeichert.
  • Anschließend werden die in dem Register C gespeicherten Daten und die in dem Register D gespeicherten Daten parallel durch den Befehl „PADD E, C, D" addiert und das Ergebnis in dem Register E gespeichert. Anschließend werden in dem Register E a2·b2 + a3·b3 aus 16 Bits in Bit 16 bis Bit 31 gespeichert und a0·b0 +a1·b1 von 16 Bits in dem Bit 48 bis Bit 63 gespeichert.
  • Anschließend werden die in dem Register E gespeicherten Daten um 32 Bits nach links durch den Befehl „SLL F, E, 32" verschoben und in Register F gespeichert. Somit sind nur a2·b2 + a3·b3 in den höchstwertigen 16 Bits gespeichert, und zwei Datenwerte von 16 niederwertigen Bits werden beide gleich Null.
  • Anschließend werden die in dem Register E gespeicherten Daten und die in dem Register F gespeicherten Daten parallel durch den Befehl „PADTG, E, F" addiert und das Ergebnis in Register G gespeichert. Somit werden in dem Register G a0·b0 + a1·b1 + a2·b2 + a3·b3 in den höchstwertigen 16 Bits und a2·b2 + a3·b3 in den Bits 16 bis 31 gespeichert.
  • Wie oben angegeben werden in dem Fall, bei dem herkömmliche MM-Befehle verwendet werden, um das innere Produkt von zwei vierdimensionalen Vektoren zu berechnen, die oben beschriebenen fünf Schritte benötigt.
  • Weiterhin wird, während bei der arithmetischen Einrichtung und bei dem arithmetischen Verfahren, die herkömmliche MM-Befehle verwenden, Daten von mehreren Feldern von n Bits in dem Register gespeichert werden, eine Operation nur zwischen den gleichen (sich entsprechenden) Bitfeldern dieser Felder ausgeführt. Da nämlich die arithmetische Operation nicht direkt zwischen den Feldern in dem Wort, auf das die Operation ausgeführt wird, das mehrere Felder umfasst, implementiert werden kann, ist es notwendig, eine zusätzliche Feldoperation zum Ausführen einer Operation zwischen den gewünschten Feldern auszuführen, indem eine parallele Operation, wie oben beschrieben, ausgeführt wird, wodurch eine ausreichend hohe Operationsgeschwindigkeit nicht erreicht wird.
  • Diese Erfindung wurde hinsichtlich der oben beschriebenen Probleme vorgenommen und ihre Aufgabe besteht darin, ein arithmetisches Verfahren zur Verfügung zu stellen, das parallele Operationen mit einer hohen Geschwindigkeit bei einer Anzahl von Schritten durchführen kann, die kleiner ist als die der herkömmlichen arithmetischen Einrichtung.
  • Die europäische Offenlegungsschrift Nr. EP-A-0 744 686 offenbart ein arithmetisches Verfahren, das allgemein dem Oberbegriff des Anspruch 1 entspricht. Die vorliegende Erfindung stellt ein arithmetisches Verfahren nach Anspruch 1 zur Verfügung.
  • Gemäß dem arithmetischen Verfahren der Erfindung ist es möglich, parallele Operationen mit hoher Geschwindigkeit durch eine geringere Anzahl von Schritten als beim Stand der Technik auszuführen, da keine zusätzliche Feldoperation ausgeführt werden muss.
  • Die Erfindung wird nun weiter mit Hilfe von darstellenden Beispielen mit Bezug auf die beigefügten Zeichnungen weiter beschrieben, in denen:
  • 1 eine Ansicht zeigt, die ein Beispiel des Aufbaus einer herkömmlichen CPU zeigt.
  • 2 eine Ansicht darstellt, um eine Multiplikation von 64 Bits × 64 Bits durch den Multiplizierer zu erläutern.
  • 3 eine Ansicht darstellt, um die parallele Multiplikation von 64 Bits × 64 Bits durch einen geviertelten Multiplizierer zu erläutern.
  • 4 eine Ansicht darstellt, um die Addition von 64 Bits × 64 Bits durch einen Addierer zu erläutern.
  • 5 eine Ansicht darstellt, um eine parallele Addition von 64 Bits × 64 Bits durch einen geviertelten Addierer zu erläutern.
  • 6 eine Ansicht darstellt, die den Zustand zeigt, bei dem Zeilenvektoren einer 3 × 3 Matrix jeweils in Registern zu Worten zu 64 Bits gespeichert werden.
  • 7 eine Ansicht darstellt, die den Ablauf zum Berechnen einer kleinen Determinanten von zwei x zwei mit Hilfe von herkömmlichen MM-Befehlen mit Bezug auf Zeilenvektoren einer 3 × 3 Matrix zeigt.
  • 8 eine Ansicht darstellt, die den Zustand zeigt, bei dem zwei dreidimensionale Vektoren jeweils in Worten zu 64 Bits in Registern gespeichert werden.
  • 9 eine Ansicht darstellt, die den Ablauf zum Berechnen des äußeren Produkts mit Hilfe von herkömmlichen MM-Befehlen mit Bezug auf zwei dreidimensionale Vektoren zeigt.
  • 10 eine Ansicht darstellt, die den Zustand zeigt, bei dem zwei vierdimensionale Vektoren jeweils als zwei Worte im Register gespeichert werden.
  • 11 eine Ansicht darstellt, die den Ablauf zum Berechnen des inneren Produkts mit Hilfe von herkömmlichen MM-Befehlen mit Bezug auf zwei vierdimensionale Vektoren darstellt.
  • 12 eine Ansicht zeigt, die ein Beispiel des Ausbaus einer CPU zeigt, die einer Form einer arithmetischen Einrichtung zum Ausführen eines Verfahrens gemäß dieser Erfindung entspricht.
  • 13 eine Ansicht darstellt, die ein Beispiel eines grundlegenden Aufbaus einer CPU mit MM-Befehlen zeigt.
  • Die 14A, B, C Ansichten darstellen, um die Befehle „PMUL" und „PADD" darstellen.
  • Die 15A–E Ansichten darstellen, um MM-Befehle der arithmetischen Einrichtung dieser Erfindung zu erläutern.
  • 16 eine Ansicht darstellt, die ein Beispiel des Aufbaus der Daten-Vertauschungs-Einheit (EXC-Schaltung) zeigt.
  • 17 eine Ansicht darstellt, um einen Multiplexer (MUX) der EXC-Schaltung zu erläutern.
  • 18 eine Ansicht darstellt, die zwei Befehle zeigt, die an den MUX gesendet werden und dessen Operation zeigt.
  • 19 eine Ansicht darstellt, die die entsprechende Beziehung zwischen dem EXC-Befehl, der an die EXC-Schaltung gesendet wird, und dem zu realisierenden MM-Befehl zeigt.
  • 20 eine Ansicht darstellt, die eine Schaltung zum Realisieren des Befehl „PEXC" zeigt.
  • 21 eine Ansicht darstellt, die eine Schaltung zum Realisieren des Befehls „PEXH" zeigt.
  • 22 eine Ansicht darstellt, die eine Schaltung zum Realisieren des Befehls „PROT3" zeigt.
  • 23 eine Ansicht darstellt, die eine Schaltung zum Realisieren des Befehls „PHADD" zeigt.
  • 24 eine Ansicht darstellt, die eine Schaltung zum Realisieren des Befehls „PHSUB" zeigt.
  • 25 eine Ansicht zeigt, die den Ablauf zum Berechnen einer kleinen Determinante von zwei x zwei durch die arithmetische Einrichtung dieser Erfindung mit Bezug auf die Zeilenvektoren einer 3 × 3 Matrix, entsprechend gespeichert sind, zeigt.
  • 26 eine Ansicht darstellt, die den Ablauf zum Berechnen des äußeren Produkts mit Bezug auf zwei dreidimensionale Vektoren durch die arithmetische Einrichtung zum Ausführen eines Verfahrens gemäß dieser Erfindung darstellt.
  • 27 eine Ansicht darstellt, die den Ablauf zum Berechnen des inneren Produkts mit Bezug auf zwei vierdimensionale Vektoren durch die arithmetische Einrichtung zum Ausführen eines Verfahrens gemäß dieser Erfindung zeigt.
  • 28 ein Blockdiagramm zeigt, das ein Beispiel des Aufbaus eines Bildvorbereitungsgeräts zeigt, auf das die arithmetische Einheit (Gerät) zum Ausführen eines Verfahrens gemäß dieser Erfindung angewendet wird.
  • Bevorzugte Ausführungsformen eines arithmetischen Verfahrens dieser Erfindung wird nach nachfolgend mit Bezug auf die beigefügten Zeichnungen beschrieben. In der nachfolgenden Beschreibung wird der Aufbau der Ausführungsform der arithmetischen Einrichtung zum Ausführen eines Verfahrens gemäß dieser Erfindung zunächst beschrieben und die Ausführungsform des arithmetischen Verfahrens dieser Erfindung wird mit Bezug auf diesen Aufbau beschrieben.
  • 12 zeigt ein Beispiel des Aufbaus eines Hauptteils einer CPU als eine Ausführungsform der arithmetischen Einrichtung zum Ausführen eines Verfahrens gemäß dieser Erfindung. Die CPU ist mit einer arithmetischen und logischen Einheit (ALU) 330, die als eine arithmetische und logische Einrichtung dient, eine Shift-Verarbeitungseinheit (SHT) 340 und einer Registereinheit (REG) 350 aufgebaut, wobei diese Einheiten gegenseitig Daten über Busse (BUS) 360, 370, 380 mit 64 Bits und parallele Busse von 16 Bits übertragen können. Die oben beschriebene ALU 330, die SHT 340 und das REG 350 weisen einen Aufbau auf, bei dem sie entsprechend in vier Abschnitte unterteilt sind.
  • Während die oben beschriebenen entsprechenden Komponenten ähnlich zu den entsprechenden Abschnitten der in 13 gezeigten CPU aufgebaut sind, unterscheidet sich die zuvor genannte von der letztgenannten darin, dass die zuvor genannte Daten-Vertauschungs-Einheiten (EXC) 310, 320 aufweist, die als Bitfeld-Vertauschungs-Einrichtung innerhalb eines Wortes dienen. Es wird nämlich durch die EXCs 310, 320, die als Bitfeld-Vertauschungs-Einrichtung innerhalb dieses Wortes dienen, eine arithmetische (Berechnungs-) Funktion realisiert, um eine Operation zwischen mehreren Feldern innerhalb des gleichen Wortes, auf das eine Operation in der ALU 330 ausgeführt wird, durchzuführen. Bei diesem Beispiel besteht ein Feld aus M Bits (M >= 1). In der unten beschriebenen Ausführungsform wird ein Feld auf z. B. 16 Bits festgelegt.
  • Vor der Beschreibung mit Bezug auf die neuen MM-Befehle, die die oben beschriebene arithmetische Einrichtung dieser Erfindung aufweist, werden „PMUL" und „PADD", die den zuvor beschriebenen MM-Befehlen entsprechen, zum zweiten Mal mit Bezug eines Beispiels des Aufbaus der Zentralverarbeitungseinheit (CPU) beschrieben, die einem wesentlichen Aspekt der arithmetischen Einheit zum Ausführen des Verfahrens gemäß der vorliegenden Erfindung entspricht.
  • 13 zeigt ein Beispiel des grundlegenden Aufbaus der CPU mit MM-Befehlen. Dieses Beispiel des Aufbaus der CPU mit MM-Befehlen basiert auf dem Beispiel des Aufbaus der herkömmlichen CPU, die keine neuen MM-Befehle aufweist, wie diejenige, die in 1 gezeigt ist, jedoch unterscheidet sie sich von der Letztgenannten dadurch, dass eine ALU 230, eine SHT 240 und eine REG 250 jeweils in vier Abschnitte unterteilt sind.
  • Weiterhin sind ein Datenübertragungspfad zwischen einem Bus 260 und der ALU 230, vier 16 Bit parallele Übertragungspfade 265 anstelle eines parallelen Übertragungspfades von 64 Bits vorgesehen.
  • Die 14A bis C zeigen MM-Befehle „PMUL" und „PADD", die in der arithmetischen Einheit der 13 ausgeführt werden.
  • 14A zeigt den Zustand, bei dem Daten von jeweils 16 Bits jeweils in entsprechenden Viertel-Feldern von 16 Bits eines 64 Bit Register A, B des REG 250 gespeichert werden.
  • 14B zeigt den Zustand, bei dem vier Daten individuell in vier Feldern des Registers A gespeichert sind, und vier Daten, die in Register B gespeichert sind, werden parallel in der ALU 230 durch den Befehl „PMUL C, A, B" multipliziert und die entsprechenden Produkte, die aus 32 Bits bestehen, in dem Register C des REG 250 gespeichert.
  • Weiterhin zeigt 14C den Zustand, bei dem vier in Register A gespeicherte Daten und vier in Register B gespeicherte Daten parallel durch den Befehl „PADD C, A, B" addiert werden und die Summen, die jeweils aus 16 Bits bestehen, werden in Register C gespeichert.
  • Jedoch werden durch MM-Befehle bewirkte Operationen, wie oben in der arithmetischen Einheit der 13 beschrieben wurde, in Worteinheiten ausgeführt, und die Anzahl von Schritten war zusätzlich zum Zwecke des Ausführens der Operation in Feldeinheiten erforderlich. Angesichts des oben Beschriebenen wird die arithmetische Einheit zum Ausführen des Verfahrens gemäß dieser Erfindung mit einer Konfiguration versehen, die weiterhin einen „Bitfeld-Vertauschungs-Befehl innerhalb des Worts" und „einen Operationsbefehl zwischen Daten innerhalb des Worts", die neue MM-Befehle darstellen und zum Ausführen der Operation mit einer geringeren Anzahl von Schritten ausgebildet sind.
  • Die Gruppe von MM-Befehlen der arithmetischen Einheit (Einrichtung) zum Ausführen des Verfahrens gemäß dieser Erfindung wird nun mit Bezug auf die 15A bis E beschrieben.
  • 15A zeigt den Befehl „PEXC". Der Befehl „PEXC B, A" dient nämlich zum Vertauschen von entsprechenden Daten von zwei Feldern in der Mitte des geviertelten Registers A, um sie in Register B zu speichern, wobei die Daten des höchstwertigen Feldes und die Daten des niederwertigsten Feldes beibehalten werden.
  • 15B zeigt den Befehl „PEXH". Der Befehl „PEXH B, A" dient nämlich zum Vertauschen von entsprechenden Daten von zwei Feldern höherer Ordnung des geviertelten Registers A und zum Vertauschen von entsprechenden Daten von zwei Feldern niedriger Ordnung, um sie in Register B zu speichern.
  • 15C zeigt den Befehl „PROT3". Der Befehl „PROT3 B, A, 16" dient nämlich zum Beibehalten der Daten in dem höchstwertigen Feld des geviertelten Registers A und zum Verschieben der entsprechenden Daten der drei Felder niedrigerer Ordnung um 16 Bits, so dass diese rotiert werden, um diese in dem Register B zu speichern.
  • 15D zeigt den Befehl „PHADD". Der Befehl „PHADD B, A" dient nämlich dazu, entsprechende Daten von zwei Feldern einer hohen Ordnung des geviertelten Registers A und die entsprechenden Daten von zwei Feldern niedriger Ordnung zu addieren, um diese in dem Register B zu speichern.
  • 15E zeigt den Befehl „PHSUB". Der Befehl „PHSUB B, A" dient nämlich dazu, die entsprechenden Daten von zwei Feldern einer hohen Ordnung des geviertelten Registers A in einer Subtraktionsverarbeitung benutzt zu werden und den entsprechenden Daten der zwei Felder einer niedrigen Ordnung zu ermöglichen, einer Subtraktionsverarbeitung benutzt zu werden, um diese in das Register B zu speichern.
  • Wie oben beschrieben weist die arithmetische Einheit (Einrichtung) zum Ausführen des Verfahrens gemäß dieser Erfindung weiterhin zusätzlich zu den herkömmlichen MM-Befehlen einen Befehl zum Ausführen eines Vertauschens zwischen den unterteilten Bitfeldern und einen Befehl zum Ausführen einer Operation zwischen verschiedenen Bitfeldern in demselben Register auf, um dadurch die Operationsleistungsfähigkeit zu verbessern.
  • Dieser Aufbau der arithmetischen Einheit (Einrichtung) zum Ausführen des Verfahrens dieser Erfindung, die weiterhin neue MM-Befehle aufweist, wie diejenigen, die oben zusätzlich zu den herkömmlichen MM-Befehlen beschrieben worden sind, wird nun in einem praktischeren Kontext beschrieben.
  • 16 zeigt ein Beispiel des Aufbaus einer Daten-Vertauschungs-Einheit (EXC-Schaltung) 310 der 12. Jeweilige Eingänge A0 bis A3 zu dieser EXC-Schaltung 310 werden entsprechenden Multiplexern (MUXs) 311 bis 314 zugeführt. Weiterhin wählen die entsprechenden MUXs auszugebende Daten anhand zwei entsprechender zugeführter Befehle aus. Somit wird die Operation des EXC 310 durch die Befehle C0 bis C7 gesteuert.
  • Es wird angemerkt, dass während lediglich der EXC 310 hierin beschrieben worden ist, die Operation bei der EXC-Schaltung 320 ähnlich abläuft.
  • Die MUXs 311 bis 314 der oben beschriebenen EXC-Schaltungen 310, 320 werden nun beschrieben. Diese MUXs weisen jeweils einen Aufbau mit vier Eingängen und einem Ausgang auf, und ihre Operationen werden durch die entsprechenden zwei Befehle gesteuert.
  • 17 zeigt den MUX 311 aus den oben beschriebenen MUXs 311 bis 314. Dieser MUX 311 weist einen Aufbau mit vier Eingängen und einem Ausgang auf, und seine Operation wird durch zwei Befehle C0, C1 gesteuert.
  • 18 zeigt eine Beziehung zwischen zwei Befehlen, die an den MUX 311 gesendet werden und dessen Operation. Wenn nämlich die Befehle C0, C1 beide Null entsprechen, wird der Eingang A0 an den Ausgang B0 angelegt. Weiterhin, wenn C0 0 und C1 1 entspricht, wird der Eingang A1 an B0 angelegt. Auf ähnliche Weise wird der Eingang A2 an den Ausgang B0 angelegt, wenn C0 1 und C1 0 entspricht. Zusätzlich wird der Eingang A3 an den Ausgang B0 angelegt, wenn C0, C1 beide 1 entsprechen.
  • Es wird angemerkt, dass während der MUX 311 hierin beschrieben worden ist, die Operation zu derjenigen der MUXs 312 bis 314 vergleichbar ist. Die Operation des MUX 312 wird durch die Befehle C2, C3, die Operation des MUX 313 wird durch die Befehle C4, C5 und die Operation des MUX 314 wird durch die Befehle C6, C7 gesteuert.
  • 19 zeigt die Beziehung zwischen den EXC-Befehlen C0 bis C7, die an die EXC-Schaltung, die in 16 gezeigt ist, gesendet wird, und die MM-Befehle, die durch diese Befehle realisiert werden. Wenn nämlich C0, C1, C3 und C4 0 entsprechen, und C2, C5, C6 und C7 1 entsprechen, wird der Befehl „PEXC" realisiert.
  • Wenn C0, C2, C3 und C7 0 entsprechen, und C1, C4, C5 und C6 1 entsprechen, wird der Befehl „PEXH" realisiert.
  • Wenn C0, C1, C4 und C7 0 entsprechen, und C2, C3, C5 und C6 1 entsprechen, wird der Befehl „PROT3" realisiert.
  • Wenn C0, C2, C3 und C7 0 entsprechen, und C1, C4, C5 und C6 1 Eins entsprechen, wird der Befehl „PHADD" realisiert.
  • Wenn C0, C2, C3 und C7 0 entsprechen, und C1, C4, C5 und C6 1 entsprechen, wird der Befehl „PHSUB" realisiert.
  • Es wird angemerkt, dass die oben beschriebenen Befehle „PHADD" und „PHSUB" dieselben mit Bezug auf die EXC-Befehle sind, jedoch für die ALU verschiedene Befehle sind.
  • Nun wird in einem praktischeren Sinne eine Schaltung zum Realisieren neuer MM-Befehle beschrieben, die die oben beschriebene arithmetische Einheit zur Ausführung des Verfahrens gemäß dieser Erfindung aufweist. In der nachfolgenden Beschreibung entsprechen a0 bis a3 Eingangsdaten, die jeweils eine Datenbreite von 16 Bits oder 32 Bits aufweisen und insgesamt ein Wort bilden. Zusätzlich entsprechen b0 bis b3 Ausgangsdaten, die jeweils eine Datenbreite von 16 Bits bis 32 Bits aufweisen und insgesamt ein Wort bilden.
  • 20 zeigt eine Schaltung zum Realisieren des Befehls „PEXC". Diese Schaltung entspricht der Konfiguration, die die Vertauschungsschaltung „Vertauschen" umfasst. Hinsichtlich der vier Daten a0, a1, a2, a3, die dieser Schaltung zugeführt werden, werden die höchstwertige Daten a0 und die niederwertigsten Daten a3 jeweils als b0 und b3 unverändert ausgegeben. Zusätzlich werden die zwei Daten zwischen den höchstwertigen Daten und den niederwertigsten Daten miteinander vertauscht, und sie werden in einem Zustand ausgegeben, bei dem a1 b2 und a2 b1 ist.
  • 21 zeigt eine Schaltung zum Realisieren des Befehls „PEXH". Diese Schaltung weist einen Aufbau auf, der zwei Vertauschungs-Schaltungen „Vertauschen" umfasst. Die zwei Daten a0, a1 der höheren Ordnung der vier Daten a0, a1, a2, a3, die dieser Schaltung zugeführt werden, werden miteinander vertauscht und in einem Zustand ausgegeben, bei dem a0 b1 und a1 b0 ist. Zusätzlich werden die zwei Daten a2, a3 der niedrigen Ordnung der oben beschriebenen zugeführten vier Daten miteinander vertauscht, und sie werden in einem Zustand ausgegeben, bei dem a2 b3 und a3 b2 ist.
  • 22 zeigt eine Schaltung zum Realisieren des Befehls „PROT3". Bei diesem Beispiel entspricht „SELECT" einer Auswahlschaltung. Die höchstwertigen Daten a0 der vier Daten a0, a1, a2, a3, die dieser Schaltung zugeführt werden, werden als b0 ausgegeben. Zusätzlich werden die anderen drei Daten a1, durch die Auswahlschaltung (SELECT) mit drei Eingängen und einem Ausgang ausgegeben, wobei z. B. a1 b3, a2 b1 und a3 b2 entsprechen. Dadurch werden die oben beschriebenen drei Daten, ausgenommen der höchstwertigen Daten a0, nach dem Durchführen einer Rotation ausgegeben.
  • 23 zeigt eine Schaltung zum Realisieren des Befehls „PHADD". Diese Schaltung entspricht dem Aufbau, der zwei Addierschaltungen „ADD" umfasst. Zwei Daten a0, a1 der höheren Ordnung der vier Daten a0, a1, a2, a3, die dieser Schaltung zugeführt werden, werden miteinander addiert und als b0 ausgegeben. Zusätzlich werden die zwei Daten a2, a3 der niedrigen Ordnung der oben beschriebenen zugeführten vier Daten miteinander vertauscht und als b2 ausgegeben.
  • 24 zeigt eine Schaltung zum Realisieren des Befehls „PHSUB". Diese Schaltung weist einen Aufbau auf, der zwei Subtrahierschaltungen „SUB" umfasst. Zwei Daten a0 und a1 einer hohen Ordnung der vier Daten a0, a1, a2, a3, die diesem Schaltkreis zugeführt werden, werden als Daten ausgegeben, bei dem die Daten a1 von den Daten a0 subtrahiert werden, so dass ihre Differenz b0 entspricht. Zusätzlich werden zwei Daten a2 und a3 niedriger Ordnung der zugeführten vier Daten als Daten ausgegeben, wobei a3 von den Daten a2 subtrahiert werden, so dass ihre Differenz b2 entspricht.
  • Nun wird der Fall erläutert, bei dem eine Operation durch die arithmetische Einheit zum Ausführen des Verfahrens gemäß dieser Erfindung mit einer Funktion zum Ausführen eines Vertauschens und/oder einer Operation (Berechnung) von verschiedenen Bitfeldern innerhalb desselben Wortes, wie zuvor beschrieben, durchgeführt wird.
  • 25 zeigt das Verfahren zum Berechnen einer kleinen Determinante von 2 × 2 hinsichtlich der Zeilenvektoren einer 3 × 3 Matrix mit Hilfe der arithmetischen Einheit (Einrichtung) dieser Erfindung.
  • Zunächst werden durch den zuvor beschriebenen Befehl „PEXH D, A1" zwei Daten einer hohen Ordnung des geviertelten Registers A1 miteinander vertauscht und zwei Daten einer niedrigen Ordnung miteinander vertauscht und diese in Register D gespeichert.
  • Anschließend wird eine parallele Multiplikation der Zeilenvektoren, die in Register A0 gespeichert sind, und Daten, die in dem Register D gespeichert sind, in 16 Biteinheiten durch den Befehl „PMULH E, A0, D" ausgeführt und das Ergebnis in dem Register E gespeichert. Dieser Befehl „PMULH" ist ein Befehl zum Ausführen einer Operation, die ähnlich ist zu der zuvor beschriebenen Befehl „PMUL" mit lediglich der halben Wortlänge als Einheit. Somit wird a01·a12 in 32 Bits einer hohen Ordnung des Registers E und a02·a11 in 32 Bits einer niedrigen Ordnung gespeichert.
  • Anschließend wird eine parallele Subtraktion ausgeführt, um von den Daten einer hohen Ordnung, die in Register E gespeichert sind, Daten einer niedrigen Ordnung, die in Register E gespeichert sind, in 32 Biteinheiten durch den Befehl „PSUBW G, E" durchzuführen, und das Ergebnis wird in Register G gespeichert. Dieser Befehl „PSUBW" ist ein Befehl zum Ausführen einer Operation, die ähnlich der Operation „PSUB" mit einer Wortlänge als Einheit entspricht. Somit wird 0 den 32 Bits einer hohen Ordnung des Registers G und a0·a12 – a02·a11 in 32 Bits einer niedrigen Ordnung gespeichert.
  • Wie oben erwähnt, werden neun Schritte wie in 7 gezeigt benötigt, um die 2 × 2 Determinante mit der herkömmlichen arithmetischen Einheit (Einrichtung) zu berechnen. Im Gegensatz dazu kann gemäß der arithmetischen Einheit (Einrichtung) zum Ausführen des Verfahrens gemäß dieser Erfindung eine solche Berechnung nur durch die oben beschriebenen drei Schritte durchführen.
  • 26 zeigt das Verfahren zum Berechnen des äußeren Produkts von zwei dreidimensionalen Vektoren durch die arithmetische Einheit (Einrichtung) zum Durchführen des Verfahrens gemäß dieser Erfindung.
  • Zunächst wird durch den Befehl „PROT3 B, A0, 16" bewirkt, dass die höchstwertigen Daten des Registers A0 unverändert bleiben und drei Daten der niedrigen Ordnung um 16 Bits verschoben werden, so dass diese Daten rotiert werden, wobei diese in das Register B gespeichert werden.
  • Dann bewirkt der Befehl „PROT3 C, A1, 32", dass die höchstwertigen Daten des Registers A1 unverändert bleiben, und dass die drei Daten einer niedrigen Ordnung nur um 32 Bits verschoben werden, so dass diese Daten rotiert werden, und sie in das Register C gespeichert werden.
  • Anschließend wird durch den Befehl „PMUL D, B, C" eine parallele Multiplikation des Zeilenvektors, der in Register B gespeichert ist, und den Daten, die in Register C gespeichert sind, und das so erhaltene Ergebnis wird in Register D gespeichert.
  • Dadurch wird eine Null in dem höchstwertigen 32 Bits des Registers D gespeichert und a02·a11, a00·a12 und a01·a10 in dieser Reihenfolge in die nachfolgenden entsprechenden 32 Bits gespeichert.
  • Anschließend wird durch den Befehl „PROT3 B, A0, 32" bewirkt, dass die höchstwertigen Daten des Registers A0 unverändert bleiben und die drei Daten einer niedrigen Ordnung um nur 32 Bits verschoben werden, so dass diese Daten rotiert werden, um diese in das Register B zu speichern.
  • Anschließend wird durch den Befehl „PROT3 C, A1, 16" bewirkt, dass die höchstwertigen Daten des Registers A1 unverändert bleiben und drei Daten einer niedrigen Ordnung um nur 16 Bits verschoben werden, so dass diese rotiert werden, und wobei diese in das Register C gespeichert werden.
  • Dann wird durch den Befehl „PMUL E, B, C" bewirkt, dass eine parallele Multiplikation der in Register B gespeicherten Daten und der in Register C gespeicherten Daten ausgeführt wird. Das so erhaltene Ergebnis wird in das Register E gespeichert. Dadurch werden Nullen in die höchstwertigen 32 Bits des Registers E gespeichert und a01·a12, a02·a10 und a00·a11 in dieser Reihenfolge in die nachfolgenden entsprechenden 32 Bits gespeichert.
  • Dann wird durch den Befehl „PSUB F, E, D" bewirkt, dass eine parallele Subtraktion durchgeführt wird, um von den in Register E gespeicherten Daten die in Register D gespeicherten Daten zu subtrahieren. Das so erhaltene Ergebnis wird in Register F gespeichert. Dadurch wird 0 in die höchstwertigen 32 Bits des Registers F gespeichert und a01·a12 – a02·a11, a02·a10 – a00·a12, a00·a11 – a01·a10 in die nachfolgenden jeweiligen 32 Bits gespeichert.
  • Wie oben angegeben, werden wie in 9 gezeigt ist, bei der herkömmlichen arithmetischen Einrichtung 15 Schritte benötigt, um das äußere Produkt von zwei dreidimensionalen Vektoren zu berechnen. Im Gegensatz dazu kann eine solche Berechnung gemäß der arithmetischen Einheit (Einrichtung) zum Durchführen des Verfahrens dieser Erfindung nur mit sieben Schritten durchgeführt werden.
  • 27 zeigt das Verfahren zum Berechnen des inneren Produkts von zwei vierdimensionalen Vektoren durch die arithmetische Einheit (Einrichtung) zum Durchführen des Verfahrens gemäß dieser Erfindung.
  • Anfänglich wird durch den Befehl „PMUL C, A, B" bewirkt, dass eine parallele Multiplikation der in Register A gespeicherten Daten und der in Register B gespeicherten Daten ausgeführt wird. Das so erhaltene Ergebnis wird in Register C gespeichert. Dadurch werden a0·b0, a1·b1, a2·b2, a3·b3, die jeweils aus 32 Bits bestehen, in Register C gespeichert.
  • Anschließend wird durch den Befehl „PHADD D, C" bewirkt, dass zwei Daten einer höheren Ordnung des Registers C miteinander addiert werden und zwei Daten einer niedrigen Ordnung miteinander addiert werden, und diese in das Register D gespeichert werden.
  • Anschließend wird durch den Befehl „PEXC E, D" bewirkt, dass die höchstwertigen Daten und die niederwertigsten Daten des Registers D unverändert bleiben, und zwei Daten in der Mitte des Registers D werden vertauscht werden, um diese in das Register E zu speichern.
  • Anschließend wird durch den Befehl „PHADD G, E" bewirkt, dass zwei Daten einer hohen Ordnung des Registers E miteinander addiert werden und die zwei Daten einer niedrigen Ordnung miteinander addiert werden und diese in das Register G gespeichert werden. Somit werden a0·b0 + a1·b1 + a2·b2 + a3·b3 in die höchstwertigen 32 Bits des Registers G gespeichert.
  • In diesem Beispiel geben die Abschnitte, die mit der Markierung x der 27 bezeichnet sind an, dass für diese Operation unrelevante Werte gespeichert werden.
  • Wie oben angegeben, wurden, wie in 11 gezeigt, bei der herkömmlichen arithmetischen Einheit (Einrichtung) fünf Schritte benötigt, um das innere Produkt von zwei vierdimensionalen Vektoren zu berechnen. Im Gegensatz dazu kann eine solche Berechnung gemäß der arithmetischen Einheit (Einrichtung) zur Durchführung des Verfahrens gemäß dieser Erfindung lediglich mit vier Schritten durchgeführt werden.
  • 28 zeigt ein Beispiel des Aufbaus eines Bildverarbeitungsgerätes, das mit der arithmetischen Einheit (Einrichtung) zur Durchführung des Verfahrens gemäß dieser Erfindung mit den oben beschriebenen MM-Befehlen aufgebaut ist.
  • In 28 dient eine CPU 1, die eine Zentralverarbeitungseinheit ist, die einen Mikroprozessor usw. umfasst, dazu, eine Operationsinformation von einem Eingabegerät 4, wie z. B. ein Eingangsanschluss oder einen Joystick usw., über eine Schnittstelle 3 und einen Hauptbus 9 zu entnehmen, und die arithmetische Einheit dieser Erfindung wird für diese CPU 1 verwendet. Weiterhin sendet die CPU 1 auf Basis der so entnommenen Operationsinformation die Information eines dreidimensionalen Bildes, das in dem Hauptspeicher 2 gespeichert ist, der dem ersten Speicher entspricht, an einen Grafikprozessor 6 über den Hauptbus 9.
  • Der Grafikprozessor 6 dient dazu, die gesendete Information des dreidimensionalen Bildes zu konvertieren, um Bilddaten zu erzeugen, und das dreidimensionale Bild, das durch die so erzeugten Bilddaten erzeugt wurde, wird auf einen Videospeicher 5, der einem zweiten Speicher entspricht, abgebildet. Die dreidimensionalen Bilddaten, die auf diesem Videospeicher 5 abgebildet werden, werden beim Scannen des Videosignals ausgelesen. Somit wird das dreidimensionale Bild auf der Anzeigeeinheit (nicht gezeigt) angezeigt.
  • Weiterhin wird gleichzeitig mit dem Anzeigen des dreidimensionalen Bildes, wie oben beschrieben, eine Sprach-(Klang-)Information, die dem angezeigten dreidimensionalen Bild entspricht, in der Operationsinformation, die durch die CPU 1 entnommen worden ist, an einen Audioprozessor 7 gesendet. Der Audioprozessor 7 gibt auf Basis dieser gesendeten Sprachinformation die in einem Audiospeicher 8 gespeicherten Sprachdaten aus.
  • Ein solches Bildverarbeitungsgerät wird verwendet, z. B. in Spielgeräten für zu Hause, bei denen es notwendig ist, ein dreidimensionales Bild mit relativ hoher Genauigkeit und hoher Geschwindigkeit auszugeben.
  • In den Spielgeräten für zu Hause sind als ein Verfahren zum Anzeigen eines dreidimensionalen Bildes mit Hilfe des oben beschriebenen Bildverarbeitungsgerätes das Shading-Verfahren zum Hinzufügen eines Schattens für ein anzuzeigendes Objekt und des Textur-Mapping zum Verformen eines weiteren zweidimensionalen Bildes, um dieses hinzuzufügen, repräsentativ.
  • Weiterhin gibt es viele Vorgänge, bei denen, da das Koordinatensystem drei Dimensionen darstellt, als Objektkoordinatensystem zum Darstellen einer Form oder Dimension, die sich auf das dreidimensionale Objekt bezieht, ein globales Koordinatensystem, das die Position des Objektes angibt, wenn das dreidimensionale Objekt im Raum angeordnet wird, und ein Bildschirmkoordinatensystem zum Darstellen des dreidimensionalen Objektes, das auf dem Bildschirm ausgegeben wird, verwendet wird. Es gibt viele Vorgänge, wobei insbesondere ein polygonaler Bereich, der als eine Einheit dient, die ein dreidimensionales Bild eines dreidimensionalen Objekts auf dem Bildschirmkoordinatensystem darstellt, das einem so genannten Polygon entspricht, mit vereinfachten Dreiecksbereichen behandelt wird.
  • Die arithmetische Einheit (Einrichtung) zum Durchführen des Verfahrens gemäß dieser Erfindung ist mit Bezug auf einen solchen Dreiecksbereich (Polygon) geeignet, um Vertex-Koordinaten zu berechnen oder eine Berechnung des inneren Produkts usw., eines Normalenvektors und eines Lichtquellenvektors aus den Attributen des Objekts und Lichtquellendaten durchzuführen.
  • Gemäß der oben beschriebenen arithmetischen Einrichtung weist diese Einrichtung einen Aufbau auf, der weiterhin zusätzlich zu den herkömmlichen MM-Befehlen MM-Befehle mit einer Funktion, einer Operation zwischen mehreren Feldern innerhalb desselben Wortes des zu bearbeitenden Objektes (zu berechnenden Objektes) durchzuführen, auf. Aus diesem Grund ist es möglich, parallele Operationen mit einer hohen Geschwindigkeit mit einer geringeren Anzahl von Schritten durchzuführen als beim Stand der Technik.
  • Es wird angemerkt, dass diese Erfindung nicht auf die oben beschriebenen Ausführungsformen beschränkt ist, sondern dass es selbstverständlich ist, dass z. B. die Anzahl von Bits des Registers und/oder die Anzahl von Bits eines Feldes nicht auf die gezeigten Anzahlen beschränkt sind.

Claims (2)

  1. Arithmetisches Verfahren zum Durchführen einer arithmetischen und logischen Operation in Feldeinheiten mit Bezug auf ein Wort, auf das eine Operation ausgeführt wird, wobei das Wort durch mehrere Felder gebildet ist, die jeweils aus M Bits bestehen, wobei M ≥ 1 ist, wobei das Verfahren einen Schritt des Austauschens von zwei oder mehr als zwei Feldern innerhalb des selben Wortes, auf das eine Operation ausgeführt wird, umfasst, wobei das Verfahren dadurch gekennzeichnet ist, dass eine arithmetische und logische Operation zwischen denjenigen Feldern des Wortes, auf das die Operation durchgeführt wird, durchgeführt wird, in denen das Austauschen von Feldern ausgeführt worden ist, so dass ein Ergebnis der Operation in einem der Felder, auf das die Operation ausgeführt wird, gespeichert wird.
  2. Arithmetisches Verfahren nach Anspruch 1, wobei eine Addition und/oder eine Subtraktion von Daten in der arithmetischen und logischen Operation zwischen denjenigen Feldern des Wortes, auf das eine Operation ausgeführt wird, durchgeführt wird, in denen das Austauschen von Feldern durchgeführt worden ist.
DE69836408T 1997-04-08 1998-04-08 Verfahren zum Ausführen von arithmetischen und logischen Operationen in Feldern eines Wort-Operanden Expired - Lifetime DE69836408T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP8975197 1997-04-08
JP8975197 1997-04-08
PCT/JP1998/001626 WO1998045774A1 (en) 1997-04-08 1998-04-08 Arithmetic unit and arithmetic method

Publications (2)

Publication Number Publication Date
DE69836408D1 DE69836408D1 (de) 2006-12-28
DE69836408T2 true DE69836408T2 (de) 2007-09-27

Family

ID=13979457

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69836408T Expired - Lifetime DE69836408T2 (de) 1997-04-08 1998-04-08 Verfahren zum Ausführen von arithmetischen und logischen Operationen in Feldern eines Wort-Operanden

Country Status (6)

Country Link
EP (1) EP0930564B1 (de)
JP (1) JP3583443B2 (de)
KR (1) KR20000016448A (de)
CN (1) CN1231038A (de)
DE (1) DE69836408T2 (de)
WO (1) WO1998045774A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2820523B1 (fr) * 2001-02-08 2003-05-16 St Microelectronics Sa Microprocesseur comportant une instruction d'inversion des bits d'un mot binaire
JP3753991B2 (ja) 2002-02-15 2006-03-08 株式会社ルネサステクノロジ プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4839845A (en) * 1986-03-31 1989-06-13 Unisys Corporation Method and apparatus for performing a vector reduction
JP3154542B2 (ja) * 1992-02-27 2001-04-09 株式会社日立製作所 データ処理装置
JPH07262010A (ja) * 1994-03-25 1995-10-13 Hitachi Ltd 演算処理装置および演算処理方法
GB9509989D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
US5673321A (en) * 1995-06-29 1997-09-30 Hewlett-Packard Company Efficient selection and mixing of multiple sub-word items packed into two or more computer words
GB9514695D0 (en) * 1995-07-18 1995-09-13 Sgs Thomson Microelectronics Combining data values
GB9514684D0 (en) * 1995-07-18 1995-09-13 Sgs Thomson Microelectronics An arithmetic unit

Also Published As

Publication number Publication date
EP0930564A1 (de) 1999-07-21
WO1998045774A1 (en) 1998-10-15
WO1998045774A9 (fr) 1999-05-06
EP0930564A4 (de) 2002-11-06
DE69836408D1 (de) 2006-12-28
EP0930564B1 (de) 2006-11-15
CN1231038A (zh) 1999-10-06
JP3583443B2 (ja) 2004-11-04
KR20000016448A (ko) 2000-03-25

Similar Documents

Publication Publication Date Title
EP0875031B1 (de) Prozessor zur bildverarbeitung
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE19782086B4 (de) Multiplizierer zur Durchführung von 3D-Graphik-Interpolationen
DE112008002158B4 (de) Verfahren und System zur Multiplikation großer Zahlen
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE19839627B4 (de) Digitaler Signalprozessor
DE2724125C2 (de)
DE19835216B4 (de) Prozessor und Verfahren zur parallelen Datenverarbeitung
DE69821408T2 (de) Multiplikationsverfahren und -vorrichtung
DE69722859T2 (de) Formatumwandlung von Datenwörtern graphischer Bilder
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE102019120838A1 (de) Dynamische Gleitkommabereichserweiterung
DE1302494B (de)
DE102017113867A1 (de) Kernprozesse für Blockoperationen an einem Bildprozessor mit einer zweidimensionalen Ausführungsbahnmatrix und einem zweidimensionalen Schieberegister
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE112005003130B4 (de) Verfahren und Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten-Ausführungsmaschine
CH644461A5 (de) Digitale multipliziereinrichtung.
DE4345029C2 (de) Schaltkreis für diskrete Kosinustransformation
EP0625762A1 (de) Verfahren zum Entzerren von Röntgenaufnahmen und Anordnung zur Durchführung des Verfahrens
DE69836408T2 (de) Verfahren zum Ausführen von arithmetischen und logischen Operationen in Feldern eines Wort-Operanden
DE19528760A1 (de) Bildverarbeitende Schaltung eines hohen Integrationsgrads
EP0620519B1 (de) Vorrichtung zur Inferenzbildung und Defuzzifikation und ihre Verwendung in einem hochauflösenden Fuzzy-Logik-Coprozessor
DE19746054A1 (de) Verfahren und Vorrichtung zum Ausführen einer Einzelbefehlsoperation mit doppelter Genauigkeit
DE102007034684A1 (de) Verfahren zum Betrieb eines Multiprozessorsystems, insbesondere im Zusammenhang mit einem medizinischen bildgebenden System

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 930564

Country of ref document: EP

Representative=s name: MITSCHERLICH & PARTNER PATENT- UND RECHTSANWAELTE,

R081 Change of applicant/patentee

Ref document number: 930564

Country of ref document: EP

Owner name: SONY COMPUTER ENTERTAINMENT INC., JP

Free format text: FORMER OWNER: SONY COMPUTER ENTERTAINMENT INC., TOKIO/TOKYO, JP

Effective date: 20120514

Ref document number: 930564

Country of ref document: EP

Owner name: SONY COMPUTER ENTERTAINMENT INC., JP

Free format text: FORMER OWNER: SNE PLATFORM INC., TOKIO/TOKYO, JP

Effective date: 20120530

R082 Change of representative

Ref document number: 930564

Country of ref document: EP

Representative=s name: MITSCHERLICH & PARTNER PATENT- UND RECHTSANWAE, DE

Effective date: 20120514

Ref document number: 930564

Country of ref document: EP

Representative=s name: MITSCHERLICH & PARTNER PATENT- UND RECHTSANWAE, DE

Effective date: 20120530