DE69720922T2 - Prozessor mit verbessertem Rundungsprozess - Google Patents

Prozessor mit verbessertem Rundungsprozess

Info

Publication number
DE69720922T2
DE69720922T2 DE69720922T DE69720922T DE69720922T2 DE 69720922 T2 DE69720922 T2 DE 69720922T2 DE 69720922 T DE69720922 T DE 69720922T DE 69720922 T DE69720922 T DE 69720922T DE 69720922 T2 DE69720922 T2 DE 69720922T2
Authority
DE
Germany
Prior art keywords
instruction
value
calculation
bit
processor
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
DE69720922T
Other languages
English (en)
Other versions
DE69720922D1 (de
Inventor
Nobuo Higaki
Akira Miyoshi
Toru Morikawa
Keizo Sumida
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.)
Panasonic Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=18121299&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69720922(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Application granted granted Critical
Publication of DE69720922D1 publication Critical patent/DE69720922D1/de
Publication of DE69720922T2 publication Critical patent/DE69720922T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

    HINTERGRUND DER ERFINDUNG 1. Feld der Erfindung
  • Die vorliegende Erfindung bezieht sich auf einen Prozessor, der gemäß Befehlssequenzen, die in einem ROM oder ähnlichem gespeichert sind, eine Verarbeitung durchführt.
  • 2. Hintergrund der Erfindung
  • In den letzten Jahren gab es eine sichtbare Zunahme in der Verwendung von Anwendungssoftware, die interaktiv verschiedene Arten von Daten, wie Videodaten, Standbilddaten, und Audiodaten, reproduzieren kann, die gemäß Techniken wie Bildkodierung, Feldkodierung, oder Bewegungskompensation komprimiert wurden. Da eine solche Software entwickelt wurde, gab es eine ansteigende Nachfrage für Multimedia-orientierte Prozessoren, die effizient die Software ausführen können. Diese Multimedia-orientierten Prozessoren sind Prozessoren, die mit einer speziellen Architektur ausgestaltet sind, um eine Programmierung, wie die Komprimierung und Dekomprimierung von Video- und Audiodaten, zu vereinfachen. Die für ein Abwickeln von Videodaten benötigte Hochgeschwindigkeitsverarbeitung ist die Matrixmultiplikation komprimierter Daten, die N·N Matrixelemente aufweisen, mit Koeffizientendaten, die ebenfalls N·N Matrixelemente aufweisen. Repräsentative Beispiele komprimierter Daten, die N·N Matrixelemente aufweisen, sind der Lumineszenzblock, der aus 16·16 Lumineszenzelementen zusammengesetzt ist, der Differenzblock für blaue Farbe (Cb Block), der aus 8·8 Farbdifferenzelementen zusammengesetzt ist, und der Differenzblock für rote Farbe (Cr Block), der aus 8·8 Farbdifferenzelementen zusammengesetzt ist, die in MPEG (Moving Pictures Experts Group) Techniken verwendet werden. Die Matrixmultiplikation für komprimierte Daten, auf die hier verwiesen wird, wird sehr häufig durchgeführt, wenn die Annäherungsberechnungen für eine inverse DCT (diskrete Kosinustransformation) in Bildkomprimierungsverfahren, wie MPEG und JPEG (Joint Photographic Experts Group), ausgeführt werden.
  • Das Folgende ist eine Beschreibung konventioneller Multimedia-orientierter Prozessoren, die eine Hochgeschwindigkeits-Matrixmultiplikation durchführen können. Die Basis- Architektur konventioneller Multimedia-orientierter Prozessoren wird mit einem Summenprodukt-Ergebnisregister (hier nach einfach bezeichnet als ein MCR-Register) als Hardware bereitgestellt, und wird mit einer Befehlsgruppe bereitgestellt, die einen "MOV MCR**", Transferbefehl zum Transferieren eines Summenproduktwertes umfasst.
  • Ein Beispiel des Hardwareaufbaus eines konventionellen Multimedia-orientierten Prozessors ist in Fig. 1 gezeigt. Wie in Fig. 1 gezeigt ist, führt die arithmetisch-logische Einheit (hiernach, "ALU") 61 die Multiplikation eines Elements Fij, das einen Teil der komprimierten Daten bildet, und eines Elements Gji, das einen Teil der Koeffizientenmatrix bildet, in Übereinstimmung mit einem Multiplikationsbefehl durch. Das ALU 61 liest ebenso den in dem Summenprodukt-Ergebnisregister 62 gespeicherten Summenproduktwert, addiert das Multiplikationsergebnis von Gji·Fij zu dem gelesenen Summenproduktwert, und lässt das Ergebnis dieser Addition in dem Summenprodukt-Ergebnisregister 62 speichern. Durch Wiederholen der obigen Berechnung wird ein Summenproduktwert in dem Summenprodukt- Ergebnisregister 62 akkumuliert. Wenn die Multiplikation eine vorgegebene Anzahl von Malen durchgeführt wurde, gibt der Programmierer einen Summenproduktwert- Transferbefehl aus. Durch Ausgeben eines Transferbefehls wird der akkumulierte Wert in dem Summenprodukt-Ergebnisregister 62 zu den allgemeinen Registern transferiert, und wird als das Ergebnis der Matrixmultiplikation für eine Zeile und eine Spalte verwendet. Durch Durchführen von N·N Iterationen der obigen Verarbeitung können die Matrixmultiplikation von N·N komprimierten Daten und eine N·N Koeffizientenmatrix komplettiert werden.
  • Wenn jedoch ein konventioneller Multimedia-orientierter Prozessor verwendet wird, stellen positive Korrektursättigungsvorgänge zum Berichtigen des Summenproduktwerts viele Schwierigkeiten für Programmierer dar.
  • Positive Umwandlungsverarbeitung bezieht sich auf die Umwandlung eines Summenproduktwerts, der ein negativer Wert ist, entweder in Null oder in einen positiven Wert. Normalerweise werden komprimierte Daten als ein codierter relativer Wert ausgedrückt, der die Beziehung des vorliegenden Wertes zu dem vorhergehenden und nachfolgenden Werten widerspiegelt. Als ein Ergebnis gibt es viele Fälle, in denen die Summe von Produkten für jedes Element in den komprimierten Daten und die entsprechenden Koeffizienten ein negativer Wert sind. Die überwiegende Reproduktions-bezogene Hardware, wie Anzeigeeinrichtungen und Lautsprecher, sind jedoch nur in der Lage, uncodierte Daten zu verarbeiten, sodass, wenn die Summenproduktwerte reproduziert werden sollen, es zuerst notwendig ist, eine positive Umwandlungsverarbeitung durchzuführen.
  • Sättigungsberechnungsverarbeitung bezieht sich auf eine Verarbeitung, die alle Werte, die eine vorgegebene Spanne übersteigen (oder, in anderen Worten, die "gesättigt" sind) auf einen vorgegebenen Wert setzt. Damit soll ausgedrückt werden, dass, wenn ein Element, das ein fehlerhaftes Bit umfasst, das während eines Transfers erzeugt wurde, in einer Summenprodukt-Berechnung als Teil der Summenprodukt-Verarbeitung für komprimierte Daten verwendet wird, es einen Anstieg in der Wahrscheinlichkeit gibt, dass der Summenproduktwert einen Wert übersteigt, der durch die angegebene Anzahl von Bits ausgedrückt werden kann. Da die überwiegende Reproduktions-bezogene Hardware nur physikalisch geeignet ist, uncodierte Daten mit einer festgelegten gültigen Anzahl von Bits zu reproduzieren, wie 8 Bit, wird Sättigungsverarbeitung benötigt, um den Summenproduktwert in einen Wert umzuwandeln, der unter Verwendung der gültigen Anzahl von Bits ausgedrückt werden kann.
  • Es war konventionelle Praxis, diese Art von positiver Wertumwandlungsverarbeitung und Sättigungsberechnungsverarbeitung durch Umwandlung des Summenproduktwerts unter Verwendung einer Unterroutine durchzuführen, die den Summenproduktwert korrigiert. Ein Beispiel einer Unterroutine, die den Summenproduktwert korrigiert, wird untenstehend beschrieben. In diesem Beispiel sind die Registerbreite und die Berechnungsbreite der Berechnungseinheit 32 Bit, mit der Breite des MCR von 32 Bit, und der Summenproduktwert wird als eine codierte 16-Bit-Ganzzahl ausgedrückt. Die Daten, die von der Reproduktionsbezogenen Hardware abgewickelt werden können, müssen unter Verwendung uncodierter 8-Bit-Ganzzahlen ausgedrückt werden. Diese Unterroutine wird dazu gesetzt, das Datenregister D0 zum Speichern des Berechnungsergebnisses zu verwenden. Jeder Befehl wird unter Verwendung von zwei Operanden ausgedrückt, wobei der linke und rechte Operand jeweils als der erste und der zweite Operand bezeichnet werden. Der zweite Operand wird verwendet, um sowohl die Transferadresse eines Transferbefehls, als auch die Speicheradresse eines arithmetischen Befehls zu kennzeichnen.
  • Befehl 1: MOV MCR, D0
  • Befehl 2: CMP 0xFFFF_8000, D0
  • Befehl 3: BCC CARRY
  • Befehl 4: MOV 0x0000_0000, D0
  • Befehl 5: BRA END
  • CARRY:
  • Befehl 6: CMP 0x0000_00FF, D0
  • Befehl 7: BCS END
  • Befehl 8: MOV 0x0000_00FF, D0
  • END: (Ende der Verarbeitung für eine positive Umwandlungssättigungsberechnung)
  • Die obigen Befehle in Reihenfolge beschreibend, transferiert Befehl 1, "MOV MCR, D0", den gespeicherten Wert des MCR-Registers in das Datenregister D0. Befehl 2, "CMP 0xFFFF_8000, D0", vergleicht den Wert in dem Datenregister mit dem unmittelbar übergebenen (the immediate) "0xFFFF_8000", wobei "0x" zeigt, dass der Wert in hexadezimal gegeben ist. Dieser Vergleich wird durchgeführt durch Subtrahieren des unmittelbar übergebenen "0xFFFF_8000", der in dem ersten Operanden gegeben ist, von dem gespeicherten Wert des Datenregisters D0, der in dem zweiten Operanden gegeben ist.
  • Das 16. Bit des unmittelbar übergebenen "0xFFFF_8000" in Befehl 2 ist das Code-Bit, dass für eine 16-Bit codierte Ganzzahl verwendet wird, sodass, wenn der gespeicherte Wert des Datenregisters D0 größer als der unmittelbar übergebene "0xFFFF_8000" ist, dieses zeigt, dass der in dem MCR gespeichert Wert eine negative Zahl ist.
  • Andererseits, wenn der gespeicherte Wert des D0-Registers kleiner als "0xFFFF_8000" ist, zeigt dies, dass der durch das MCR gespeicherte Wert eine positive Zahl ist. Falls diese Zahl eine positive Zahl ist, wird ein Übertrag (carry) durchgeführt und das Übertragsflag in dem Flag-Register wird gesetzt.
  • Der Buchstabe "B" in dem "BCC" in Befehl 3 steht für "Zweig" (Branch), während die Buchstaben "CC" für "Übertrag löschen" (Carry Clear) stehen.
  • Wenn der Vergleich in Befehl 2 feststellt, dass der gespeicherte Wert des Registers D0 kleiner als der unmittelbar übergebene "0xFFFF_8000" ist, wird eine Verzweigung zu Befehl 6 durchgeführt, der das Kennzeichen "CARRY" aufweist. Umgekehrt, wenn der Vergleich in Befehl 2 feststellt, dass der gespeicherte Wert des Registers D0 größer als der unmittelbar übergebene "0xFFFF_8000" ist, transferiert Befehl 4, "MOV 0x0000_0000, D0", den Wert Null in das Register D0, wobei der Summenproduktwert zu Null berichtigt wird. Nach dieser Berichtigung wird die unbedingte Verzweigung "BRA END" in Befehl 5 durchgeführt, um die Verarbeitung zu dem Kennzeichen "END" zu transferieren, wodurch die positive Umwandlungsverarbeitung abgeschlossen wird.
  • Die oben beschriebene Verarbeitung wird durchgeführt, wenn der gespeicherte Wert des Registers D0 negativ ist. Das Folgende ist eine Beschreibung der Verarbeitung, die durchgeführt wird, wenn der gespeicherte Wert des Registers D0 größer als der unmittelbar übergebene "0xFFFF_8000" ist. In solch einem Fall vergleicht Befehl 6, "CMP 0x0000_00FF, D0", den gespeicherten Wert des Registers D0 mit dem unmittelbar übergebenen "0x0000_00FF". Dieser Vergleich wird durchgeführt durch Subtrahieren des unmittelbar übergebenen "0x0000_00FF", der in dem ersten Operanden gegeben ist, von dem gespeicherten Wert des Datenregisters D0, der in dem zweiten Operanden gegeben ist. Wenn der gespeicherte Wert des D0-Registers kleiner als der unmittelbar übergebene "0x0000_00FF" ist, wird ein Übertrag durchgeführt und das Übertragsflag in dem Flag- Register wird gesetzt.
  • Die Buchstaben "CS" in Befehl 7, "BCS END", stehen für "Übertrag setzen" (Carry set), sodass, wenn das Übertragsflag gesetzt ist, eine Verzweigung zu dem Kennzeichen "END" von Befehl 7 durchgeführt wird.
  • Wenn das Übertragsflag nicht gesetzt ist, wird in Befehl 7 keine Verzweigung durchgeführt und die Verarbeitung schreitet weiter zu Befehl 8, "MOV 0x0000_00FF, D0", wo der unmittelbar übergebene "0x0000_00FF" in das Register D0 transferiert wird, um das Berechnungsergebnis zu "0x0000_00FF" zu berichtigen, wodurch die Sättigungsberechnungsverarbeitung abgeschlossen wird.
  • Das Problem des oben beschriebenen Summenproduktwert-Berichtigungsvorgangs liegt in dem beträchtlichen Anstieg in Code-Größe, der durch die Einfügung der obigen acht Befehle für eine Berichtigung eines Summenproduktwerts bewirkt wird. Wenn das Programm in einen Festwertspeicher (ROM) geschrieben wird, um die Software in die Informationsverarbeitungsvorrichtung einzubetten, wird benötigt, dass die benötigte Größe des installierten ROMs um eine Größe vergrößert wird, die diesem Anstieg in Code-Größe entspricht, was zu einem Anstieg der Herstellungskosten führt. Eine große Anzahl von Herstellern von Haushaltsgeräten, wie digitalen Videowiedergabegeräten, elektronischen Notizbüchern und Wortprozessoren, versucht, bessere Produkte als Konkurrenten herzustellen, unter Verwendung ihrer eigenen Dekomprimierungs-Verarbeitungsprogramme, obwohl die Installation von solchen Dekomprimierungs-Verarbeitungsprogrammen derzeit den Nachteil einer Erhöhung von Kosten aufweist, durch ein Ansteigen der benötigten ROM-Größe, was eine derartige Installation problematisch macht.
  • Es gibt ebenso das Problem, dass, da acht Befehle ausgeführt werden müssen, um einen Summenproduktwert zu korrigieren, ein großer Anstieg in der Verarbeitungszeit entsteht. Wenn, wie in Fig. 2 gezeigt ist, eine Näherungsberechnung für eine inverse DCT durch Multiplizieren komprimierter Daten Fij (wobei i, j = 1, 2, 3, 4, 5, ... 8 sind), die aus 8·8 Elementen zusammengesetzt sind, mit einer Koeffizientenmatrix Gji (wobei i, j = 1, 2, 3, 4, 5, ... 8 sind), die ebenfalls aus 8·8 Elementen zusammengesetzt ist, durchgeführt wird, um die Multiplikationsergebnismatrix Hij (wobei i, j = 1, 2, 3, 4, 5, ... 8 sind) zu erzeugen, benötigt die Berechnung des Matrixmultiplikationsergebniselements H21 die Summenprodukt-Verarbeitung der Multiplikationsergebnisse einer Spalte komprimierter Datenelemente F11, F21, F31, F41, F51, F61, F71, F81 mit einer Zeile von Koeffizientendatenelementen G11, G12, G13, G14, G15, G16, G17, G18. Das Ergebnis wird dann einer Verarbeitung zur positiven Umwandlungssättigungsberechnung unterworfen. Darauf folgend benötigt die Berechnung des Matrixmultiplikationsergebniselements H12 die Summenprodukt-Verarbeitung der Multiplikationsergebnisse der Spalte komprimierter Datenelemente F12, F22, F32, F42, F52, F62, F72, F82 mit einer Zeile von Koeffizientendatenelementen G11, G12, G13, G14, G15, G16, G17, G18, wobei das Summenproduktergebnis dann einer Verarbeitung zur positiven Umwandlungssättigungsberechnung unterworfen wird.
  • Die selbe Summenprodukt-Verarbeitung und Verarbeitung zur positiven Umwandlungssättigungsberechnung wird benötigt, um die anderen Matrixmultiplikationsergebniselemente H21, H31, H41, H51, H61, H71, H81, ..., zu erzielen, und da sich 64 Elemente in der Koeffizientenmatrix Gij (wobei i, j = 1, 2, 3, 4, 5, ... 8 sind) befinden, muss die Summenproduktwert-Berichtigungsunterroutine für eine Verarbeitung zur positiven Umwandlungssättigungsberechnung 64 mal ausgeführt werden. Diese Summenproduktwert- Berichtigungsunterroutine umfasst Verzweigungsbefehle (wie Befehle 3, 5 und 7), sodass, wenn diese Summenproduktwert-Berichtigungsunterroutine ausgeführt wird, Verzweigungen auftreten werden, ungeachtet, ob negative Werte oder Sättigung auftreten, sodass die 64 Iterationen der Unterroutine nicht reibungslos durchgeführt werden. Wenn Versuche unternommen werden, die Verarbeitungsgeschwindigkeit der Summenprodukt-Operation durch Einführen einer Pipeline-Verarbeitung zu dem Prozessor zu verbessern, wird die Ausführung der angegebenen drei Verzweigungsbefehle in einem deutlichen Rückgang der Verarbeitungseffizienz resultieren.
  • Um die Geschwindigkeit der Matrixmultiplikation zu vergrößern, ist es möglich, einen spezialisierten Schaltkreis zum Durchführen von Matrixmultiplikationen zu installieren. Falls alle Matrixmultiplikationen durch einen spezialisierten Schaltkreis durchgeführt werden, würde jedoch ein ausgedehnter Anstieg von Hardware auftreten, und die Prozessoreigenschaft, die als Vielseitigkeit (versatility) bekannt ist, wobei der Prozessor eine Vielzahl von Vorgängen in Übereinstimmung mit dem von dem Programmierer geschriebenen Programm ausführt, geht verloren. Falls die Vielseitigkeit des Prozessors verloren geht, entsteht ein Risiko, dass der Prozessor nicht in der Lage sein wird, auf Wünsche von Programmierern zu antworten und somit z. B. nicht in der Lage sein wird, ein Original-Dekomprimierungs- Verarbeitungsprogramm auszuführen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine primäre Aufgabe der vorliegenden Erfindung, einen Prozessor bereitzustellen, der mit großer Geschwindigkeit einen Rundungsprozess durchführen kann, der aus einem positiven Umwandlungsprozess und einem Sättigungsberechnungsprozess besteht, wobei der Anstieg in Code-Größe, der durch den Rundungsprozess bewirkt wird, minimiert wird.
  • Die genannte Aufgabe kann durch einen Prozessor gelöst werden, der Befehle in einer Befehlssequenz decodiert und ausführt, wie in Anspruch 1 beansprucht ist.
  • Mit der angegebenen Konstruktion wird die Verarbeitung zum Runden von Werten jedes Mal einmal durchgeführt, wenn ein vorgegebener Befehl aus der Befehlssequenz erkannt wird, sodass der Rundungsprozess durch den Programmierer durch Schreiben von nur einem Befehl ausgeführt werden kann.
  • Da der Rundungsprozess gemäß einem Befehl durchgeführt wird, ist die Ausführungszeit für eine Ausführung des Rundungsprozesses extrem kurz. Wenn das Runden von berechneten Werten sehr oft benötigt wird, wie beim Dekomprimieren von Daten, wird es keinen signifikanten Anstieg in der Zeit geben, die von der Dekomprimierungsverarbeitung benötigt wird.
  • Da der Rundungsprozess durchgeführt werden kann durch ein einfaches Ausführen eines vorgegebenen Befehls, wenn der Prozessor versucht, eine Summenprodukt-Operation durch Pipeline-Verarbeitung mit hoher Geschwindigkeit durchzuführen, wird es keine Konfusion in der Pipeline geben. Dementsprechend kann die Code-Größe der Befehlssequenz reduziert werden und die Ausführung der Befehlssequenz kann schneller gemacht werden, durch Hinzufügen einer kleinen Menge von Hardware zu dem Prozessor.
  • Die genannte Aufgabe kann ebenso gelöst werden durch einen Prozessor, wie in Anspruch 8 beansprucht ist.
  • Mit der angegebenen Konstruktion werden vorgegebene Befehle zum Durchführen eines Rundungsprozesses eines codierten Berechnungsergebnisses bereitgestellt, sodass die zwei Prozesse, die aus einem Berechnungsprozess und einem Rundungsprozess zusammengesetzt sind, in einem einzelnen Schritt durchgeführt werden können. Als ein Ergebnis wird eine Verarbeitung zur positiven Umwandlungssättigungsberechnung in demselben Schritt durchgeführt wie die Berechnungsverarbeitung, sodass die effektive Anzahl von Schritten, die zur Verarbeitung zur positiven Umwandlungssättigungsberechnung benötigt werden, Null ist.
  • Ein anderer Aspekt der Erfindung stellt ein maschinenlesbares Medium bereit, das ein Programm speichert, das einen Prozessor in die Lage versetzt, einen Rundungsprozess auszuführen, wie in Anspruch 14 beansprucht ist.
  • Ein weiterer Aspekt der Erfindung stellt ein Programmaufzeichnungsmedium bereit, das einen Prozessor in die Lage versetzt, Befehle in einer Befehlssequenz zu dekodieren und auszuführen, wie in Anspruch 15 beansprucht ist.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Diese und andere Aufgaben, Vorteile und Merkmale der Erfindung werden aus der folgenden Beschreibung hiervon ersichtlich, in Verbindung mit den beiliegenden Zeichnungen, die eine spezifische Ausführungform der Erfindung illustrieren. In den Zeichnungen:
  • Fig. 1 zeigt eine konventionelle Konstruktion, die aus einem ALU 61 und einem Summenprodukt-Ergebnisregister 62 zusammengesetzt ist;
  • Fig. 2 stellt eine Repräsentation einer Multiplikation von Matrizen, die aus N·N Elementen zusammengesetzt sind, dar;
  • Fig. 3 zeigt die Konstruktion des Prozessors der ersten Ausführungsform der vorliegenden Erfindung;
  • Fig. 4 zeigt die Konstruktion der Operationsausführungsvorrichtung 14 in der vorliegenden Ausführungsform;
  • Fig. 5 zeigt eine Befehlssequenz, die die Matrixmultiplikationsunterroutine in der vorliegenden Ausführungsform bildet;
  • Fig. 6 zeigt das Befehlsformat eines Summenproduktfunktions-Multiplikationsbefehls "MACCB D0, D1" in der vorliegenden Ausführungsform;
  • Fig. 7 zeigt das Befehlsformat eines Befehls zur positiven Umwandlungssättigungsberechnung "MCSST" in der vorliegenden Ausführungsform;
  • Fig. 8A zeigt die 32-Bit Ausdrücke, die der Multiplikator, der Multiplikand, der Summenproduktwert und das Matrixmultiplikationsergebniselement sind;
  • Fig. 8B zeigt, wie der Summenproduktwert von der Schaltung 3 zur positiven Umwandlungssättigungsberechnung umgewandelt wird;
  • Fig. 9 ist eine Wahrheitswerttabelle, die die Beziehung der Kombination der Ausgangswerte des Konstant-Generators 21 und des Null-Generators 25 mit der Ausgabe des Multiplexers 24 zeigt;
  • Fig. 10 zeigt den Datenfluss, wenn eine 8·8-Bit Multiplikation unter Verwendung einer 32·32 Bit Multiplikations-/Summenprodukt-Einheit durchgeführt wird;
  • Fig. 11 zeigt den Datenfluss, wenn eine 8·8-Bit Multiplikation unter Verwendung einer 32·32 Bit Multiplikations-/Summenprodukt-Einheit durchgeführt wird;
  • Fig. 12A zeigt ein Beispiel der von dem, in Fig. 3 gezeigten, Prozessor durchgeführten Pipeline-Verarbeitung;
  • Fig. 12B zeigt die Ausführung gemäß Pipeline-Verarbeitung, einer Matrixmultiplikationsunterroutine innerhalb des in Fig. 3 gezeigten Prozessors;
  • Fig. 13 zeigt das Befehlsformat eines Befehls zur positiven Umwandlungssättigungsberechnung "MCSST" in dem Anwendungsbeispiel in der ersten Ausführungsform;
  • Fig. 14 zeigt die interne Konstruktion der Operationsausführungsvorrichtung 14 in der ersten Ausführungsform;
  • Fig. 15 zeigt die interne Konstruktion der Operationsausführungsvorrichtung 14 in der zweiten Ausführungsform; und
  • Fig. 16 zeigt das Befehlsformat eines Multiplikationsbefehls zur positiven Umwandlungssättigungsberechnung "MuIBSST Dm, Dn".
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN Erste Ausführungsform
  • Das Folgende ist eine Erläuterung der ersten Ausführungsform der vorliegenden Erfindung in Bezug auf die Zeichnungen. Fig. 3 zeigt die interne Konstruktion des Prozessors in der ersten Ausführungsform der vorliegenden Erfindung, die, wie gesehen werden kann, aus einem ROM 11, einer Befehlsabrufschaltung 12, einem Decoder 13, einer Operationsausführungsvorrichtung 14, einem Adressbus 17 und einem Datenbus 18 aufgebaut ist, wobei der Adressbus 17 und der Datenbus 18 mit dem Direktzugriffsspeicher (RAM) 10 verbunden sind.
  • Das RAM 10 speichert die komprimierten Daten Fij (i, j = 1, 2, 3, 4, 5, ... 8), die aus 8·8 Matrixelementen zusammengesetzt sind, und Koeffizientendaten Gji (i, j = 1, 2, 3, 4, 5, ... 8), die aus 8·8 Matrixelementen zusammengesetzt sind. Wenn eine Abrufadresse für die i-te Zeile und j-te Spalte zudem Adressbus 17 ausgegeben wird, werden die von der ausgegebenen Adresse gekennzeichneten Daten zu dem Datenbus 18 ausgegeben. Wenn die Operationsausführungsvorrichtung 14 das i-te Zeilen- und j-te Spaltenelement der Multiplikationsergebnismatrix Hij (i, j = 1, 2, 3, 4, 5, ... 8) für die Multiplikation der komprimierten Daten Fij, die aus 8·8 Matrixelementen zusammengesetzt sind, und der 8·8 Matrixkoeffizienten Gij berechnet, und die i-te Zeilen- und j-te Spaltenadresse zu dem Adressbus 17 als die Schreibadresse ausgegeben wird, wird das zu dem Datenbus 18 transferierte i-te Zeilen- und j-te Spaltenelement in den Speicherbereich geschrieben, der durch die ausgegebene Adresse gekennzeichnet wird. Die Multiplikationsergebnismatrix Hij wird in einer Näherungsberechnung unter Verwendung einer inversen DCT verwendet, wird der vorgegebenen Verarbeitung unterworfen, und wird von der Reproduktions-bezogenen Hardware (nicht illustriert) verwendet. Es sollte hier fest gehalten werden, das Fij und Gji als 8-Bit codierte Ganzzahlen ausgedrückt sind, deren 8. Bit von der LSB (Bit mit dem niedrigsten Stellenwert) Seite her als das Code-Bit verwendet wird.
  • Das ROM 11 speichert ein Dekomprimierungs-Verarbeitungsprogramm für die in dem RAM 10 gespeicherten komprimierten Daten, sodass, wenn eine Leseadresse von der Befehlsabrufschaltung 12 ausgegeben wird, der durch die Leseadresse gekennzeichnete Befehl in dem gespeicherten Dekomprimierungs-Verarbeitungsprogramm zu dem Datenbus 18 ausgegeben wird. Das von dem ROM 11 gespeicherte Dekomprimierungs- Verarbeitungsprogramm ist aus einer Vielfalt von Befehlen, wie Transferbefehlen, arithmetischen Befehlen und Verzweigungsbefehlen zusammengesetzt. Von diesen können die arithmetischen Befehle grob klassifiziert werden in arithmetische Berechnungsbefehle, Summenproduktfunktions-Multiplikationsbefehle und Befehle für logische Operationen. Arithmetische Berechnungsbefehle, wie Additionsbefehle, Subtraktionsbefehle und Multiplikationsbefehle haben jeweils einen ersten Operanden und zweiten Operanden. Der erste Operand weist zwei Adressiermodi auf, die eine Angabe eines unmittelbaren und eine indirekte Angabe eines Registers sind. Auf der anderen Seite ist eine indirekte Angabe eines Registers der einzige mögliche Adressiermodus für den zweiten Operanden, obwohl der zweite Operand sich ebenso dupliziert als eine Angabe der Speicheradresse für das Berechnungsergebnis. Für das Beispiel des Additionsbefehls "ADD imm, D1" ist der erste Operand der unmittelbaren Wert imm, während der zweite Operand das Register D1 ist. Da der zweite Operand die Speicheradresse für das Berechnungsergebnis kennzeichnet, speichert das Berechnungsergebnis des Additionsbefehls "ADD D0, D1" das Ergebnis der Addition der Werte in Register D0 und D1 in Register D1.
  • In der vorliegenden Ausführungsform umfasst das Dekomprimierungs- Verarbeitungsprogramm eine Matrixmultiplikationsunterroutine, die das Matrixmultiplikationsergebnis Hij mit 8·8 Elementen erzeugt, durch Multiplizieren der komprimierten Daten Fij, die aus 8·8 Matrixelementen zusammengesetzt sind, mit den Koeffizientendaten Gij, die aus 8·8 Matrixelementen zusammengesetzt sind. Es sollte insbesondere fest gehalten werden, dass diese Matrixmultiplikationsunterroutine hauptsächlich aus Summenproduktfunktions-Multiplikationsbefehlen "MACCB Dm, Dn" und Befehlen zur positiven Umwandlungssättigungsberechnung "MCSST Dm" zusammengesetzt ist.
  • Das Folgende ist eine Beschreibung der Erzeugung der Matrix Hij mit 8·8 Elementen durch Multiplizieren der komprimierten Daten Fij (i, j = 1, 2, 3, 4, 5, ... 8), die aus 8·8 Matrixelementen zusammengesetzt sind, mit den Koeffizientendaten Gji (i, j = 1, 2, 3, 4, 5, ... 8), die ebenfalls aus 8·8 Matrixelementen zusammengesetzt sind. Wenn dies getan wird, ist die in Gleichung 1 untenstehend gezeigte Berechnung notwendig, um das 1. Zeilen-, 1. Spaltenelement H11 der Matrix Hij zu berechnen.
  • Gleichung 1
  • H11 = G11·F11 + G12·F21 + G13·F31 + G14·F41 + G15·F51 + G16·F61 + G17·F71 + G18·F81
  • Diese Gleichung 1 hat Gji·Fij (i, j = 1, 2, 3, 4, 5, ... 8) als ihre elementaren Operationen und ist eine Verbundoperation, die eine algebraische Summe der elementaren Operationen darstellt. Die Berechnung der jeweiligen elementaren Operationen und die Berechnung der algebraischen Summe werden in der vorliegenden Matrixmultiplikationsunterroutine durch eine Schleifenanweisung (diese Schleifenanweisung wird eine "Summenproduktschleife" genannt) ausgedrückt, die wiederholt einen Summenproduktfunktions-Multiplikationsbefehl "MACCB Dm, Dn" durchführen lässt.
  • Fig. 5 zeigt ein Beispiel der Matrixmultiplikationsunterroutine. Es sollte hier fest gehalten werden, dass die Zusammenfassungen der Befehle in Fig. 5 in den Kommentaren gegeben sind, die auf der rechten Seite jedes Befehls (beginnend mit dem Symbol "#") gegeben sind. In Fig. 5 ist F_ENTRY ein Kennzeichen, das an den Beginn des Bereichs in dem RAM 10 angehängt ist, der die komprimierten Daten speichert, während G_ENTRY ein Kennzeichen ist, das an den Beginn des Bereichs in dem RAM 10 angehängt ist, der die Koeffizientendaten speichert. Auf dieselbe Art ist H_ENTRY ein Kennzeichen, das an den Beginn des Bereichs in dem RAM 10 angehängt ist, der das Ergebnis der Matrixmultiplikation speichert. Befehl 1, "MOV F_ENTRY, A0", Befehl 2, "MOV G_ENTRY, A1" und Befehl 3, "MOV H_ENTRY, A2", sind Transferbefehle, die jeweils die Adressen F_ENTRY, G_ENTRY und H_ENTRY in das Adressregister A0, das Adressregister A1 und das Adressregister A2 transferieren.
  • Als ein Ergebnis der oben erwähnten Transferbefehle werden die Adressregister A0, A1 und A2 verwendet, um die Leseadressen für die komprimierten Daten, die Koeffizientendaten und die Matrixmultiplikations-Ergebnisdaten zu kennzeichnen, die jeweils aus 8·8 Elementen zusammengesetzt sind.
  • Befehl 4, "MOV INIT, D2", setzt den Initialwert INIT für die Anzahl von Iterationen in das Datenregister D2, während Befehl 5, "MOV (A0), D0", die Koeffizientendaten Fji, die von der Adresse gelesen werden, die durch das Adressregister A0 gekennzeichnet wird, zu dem Datenregister D0 transferiert. Befehl 6, "MOV (A1), D1", transferiert die komprimierten Daten Gij, die von der Adresse gelesen werden, die durch das Adressregister A1 gekennzeichnet wird, zu dem Datenregister D1. Befehl 7, "MACCB D0, D1", ist ein Multiplikationsbefehl mit einer Summenproduktfunktion, der das Datenregister D0, das Datenregister D1 und das Summenprodukt-Ergebnisregister 6 verwendet. Befehl 8, "CMP NUMBER, D2", ist ein Befehl, der einer Obergrenzenprüfung an der Anzahl von Iterationen durchführt, durch Subtrahieren der Gesamtanzahl von Iterationen NUMBER von der in dem Datenregister D2 gespeicherten Anzahl von Iterationen.
  • Befehl 9, "BCS LP1_NEXT", ist ein unbedingter Verzweigungsbefehl, der zu Befehl 13 "ADD 1, D2" mit dem Kennzeichnen LP1_NEXT verzweigt, wenn das Übertragsflag als ein Ergebnis aus der in Befehl 8 "CMP NUMBER, D2" durchgeführten Subtraktion AN ist.
  • Befehl 10, "MCSST D1", ist ein Befehl, der eine Umwandlung in einen positiven Wert und Sättigungsberechnungsverarbeitung (hiernach als "Verarbeitung zur positiven Umwandlungssättigungsberechnung" bezeichnet) durchführt, wenn das Übertragsflag AUS ist.
  • Befehl 13, "INC D2", ist ein Additionsbefehl, der die in dem Datenregister D2 gespeicherte Anzahl von Iterationen um 1 inkrementiert, während Befehl 14, "INC A0", ein Additionsbefehl ist, der die in dem Adressregister A0 gespeicherte Leseadresse für Koeffizientendaten um 1 inkrementiert. Befehl 15, "ADD ROW1, A1", ist ein Additionsbefehl, der eine Zeilennummer ROW1 zu der Leseadresse der in dem Adressregister A1 gespeicherten Koeffizientendaten hinzufügt. Befehl 16, "BRA LP1_START", ist ein unbedingter Verzweigungsbefehl, der zu dem Kennzeichen LP1_START verzweigt.
  • Das Kennzeichen LP1_START ist an Befehl 5, "MOV (A0), D0", angehängt, mit der Befehlssequenz von Befehl 5 bis Befehl 12, "BRA LP1_END", die eine elementare Operation berechnet, mit der algebraischen Summe der Berechnungsergebnisse aller Iterationen dieser Befehlssequenz, die gefunden werden.
  • Das Kennzeichen LP1_NEXT ist an Befehl 13, "ADD 1, D2", angehängt, mit der Befehlssequenz von Befehl 13 bis Befehl 16, "BRA LP1_START", die die Leseadresse der komprimierten Daten zu einer nächsten Zeile und die Leseadresse der Koeffizientendaten zu der nächsten Spalte bewegt, wenn die Matrixmultiplikation einer Zeile von Elementen mit einer Spalte von Elementen beendet wurde. Zur gleichen Zeit wird die in dem Datenregister D2 gespeicherte Anzahl von Iterationen um 1 inkrementiert.
  • Fig. 6 zeigt das Format des Summenproduktfunktions-Multiplikationsbefehls "MACCB Dm, Dn". Wie in Fig. 6 gezeigt ist, umfasst der Summenproduktfunktions-Multiplikationsbefehl "MACCB Dm, Dn" ein 1-Bit Feld zum Anzeigen der Speicheradresse eines Summenproduktwerts, ein 1-Bit Feld zum Anzeigen des berechneten Inhalts der algebraischen Summe, ein 1-Bit Feld zum Anzeigen des elementaren Berechnungsinhalts der elementaren Operation, ein 2-Bit Feld zum Anzeigen einer Leseadresse des Multiplikators und ein 2-Bit Feld zum Anzeigen einer Leseadresse des Multiplikanden.
  • Das Feld, das die Leseadresse des Multiplikators anzeigt, und das Feld, das die Leseadresse des Multiplikanden anzeigt, können jeweils zu einem von "00", "01", "10" und "11" gesetzt werden und dabei eines von Datenregister D0, Datenregister D1, Datenregister D2 und dem Summenprodukt-Ergebnisregister 6 als eine Leseadresse für den Multiplikator Gji oder den Multiplikanden Fij kennzeichnen.
  • Das 1-Bit Feld zum Anzeigen des berechneten Inhalts der elementaren Operation zeigt den Inhalt der Berechnung der elementaren Operation, die für den Multiplikator Gji und den Multiplikanden Fij durchgeführt wird. Wenn "1" in dieses Feld geschrieben ist, wird die Multiplikation "Gji·Fij" des Multiplikators Gji und des Multiplikanden Fij als der Inhalt der elementaren Operation an dem Multiplikator Gji und dem Multiplikanden Fij gekennzeichnet.
  • Wenn das 1-Bit Feld, das die Speicheradresse eines Summenproduktwerts kennzeichnet, zu "1" gesetzt ist, zeigt dieses an, dass das MCR (das Summenprodukt-Ergebnisregister 6, dass später beschrieben wird) als die Speicheradresse des Summenproduktwerts gesetzt ist. Wenn das 1-Bit Feld, das den berechneten Inhalt der algebraischen Summe kennzeichnet, zu "1" gesetzt ist, zeigt dieses, dass die algebraische Summe gesetzt ist, so dass das Multiplikationsergebnis "Gji·Fij" zu dem in dem Summenprodukt-Ergebnisregister 6 gespeicherten Summenproduktwert hinzugefügt wird.
  • Wenn die Summenprodukt-Operation "G11·F11 + G12·F21 + G13·F31 ..." durchgeführt wird, sollte fest gehalten werden, dass ein Bitfehler, wenn das Element Fij der komprimierten Daten transferiert wird, in einem Summenproduktwert "G11·F11 + G12·F21 + G13·F31 resultieren kann, der außerhalb eines reproduzierbaren Bereichs für die Reproduktionsbezogene Hardware liegt. Da dieses Risiko existiert, führt die Matrixmultiplikationsunterroutine den Befehl zur positiven Umwandlungssättigungsberechnung "MCSST Dm" durch, nachdem die Schleifenverarbeitung, die den Summenproduktfunktions-Multiplikationsbefehl "MACCB D0, D1" wiederholt, komplettiert wurde, so dass eine Verarbeitung zur positiven Umwandlungssättigungsberechnung für den Summenproduktwert durchgeführt wird.
  • Das Format des Operations-Codes für den Befehl zur positiven Umwandlungssättigungsberechnung "MCSST Dm" ist in Fig. 7 gezeigt. Wie in Fig. 7 gezeigt ist, umfasst der Befehl zur positiven Umwandlungssättigungsberechnung "MCSST Dm" ein Feld ("Rundungsfeld"), das die positive Umwandlungs-/Sättigungsberechnungsbreite kennzeichnet, und ein Feld, das die Speicheradresse des Ergebnisses einer positiven Umwandlungssättigungsberechnung kennzeichnet. Durch Schreiben eines von "01", "10" und "11" in das Rundungsfeld kann die Rundungsbreite der Verarbeitung zur positiven Umwandlungssättigungsberechnung zu 24 Bit, 16 Bit oder 8 Bit gesetzt werden. Umgekehrt kann durch Schreiben eines von "00", "01", "10" und "11" in das die Speicheradresse kennzeichnende Feld eines des Datenregisters D0, des Datenregisters D1, des Datenregisters D2 und des Datenregisters D3 als das Speicherregister für die Verarbeitung zur positiven Umwandlungssättigungsberechnung gekennzeichnet werden.
  • Wie oben beschrieben, ist das in dem ROM 11 gespeicherte Dekomprimierungs- Verarbeitungsprogramm derart, dass die elementaren Operationen und die Berechnung der algebraischen Summe, die die Verbundoperation bilden, die von der Matrixmultiplikationsunterroutine benötigt wird, von einem Summenproduktfunktions-Multiplikationsbefehl "MACCB Dm, Dn" durchgeführt werden, sodass der Algorithmus sehr kompakt ist. Da nur diese Operation von dem Prozessor durchgeführt werden muss, ist der Speicherbereich des ROMs 11, der von dem Dekomprimierungs-Verarbeitungsprogramm verwendet wird, extrem gering.
  • Dies vervollständigt die Beschreibung der in dem ROM 11 gespeicherten Befehlssequenzen, sodass die folgende Erläuterung stattdessen auf die baulichen Elemente des in Fig. 3 gezeigten Prozessors fokussieren wird.
  • Die in Fig. 3 gezeigte Befehlsabrufschaltung 12 umfasst einen Programmzähler, der sukzessive Leseadressen erzeugt und diese zu dem Adressbus ausgibt. Diese Befehlsabrufschaltung 12 transferiert dann die durch den ROM 11 zu dem Datenbus 18 ausgegebenen Befehle zu dem Decoder 13.
  • Der Decoder 13 weist einen Befehlspuffer zum Akkumulieren der Vielzahl von Befehlen auf, die von dem Datenbus 18 gelesen werden, und ein Befehlsregister zum Bereithalten eines zu dekodierenden Befehls aus der Vielzahl von in dem Befehlspuffer akkumulierten Befehlen. Der Decoder 13 decodiert den in dem Befehlspuffer gespeicherten Befehl und lässt die Operationsausführungsvorrichtung 14 die notwendige Steuerung durchführen, damit der decodierte Befehl ausgeführt wird. Von den hier erwähnten Steueroperationen, sollte eine spezielle Aufmerksamkeit (1) Registerausgangssteuerung, (2) Berechnungsausführungssteuerung und (3) konstanter Erzeugungssteuerung zukommen. Diese werden untenstehend in weiteren Einzelheiten beschrieben.
  • (1) Registerausgangssteuerung bezieht sich auf eine Steuerung der Operationsausführungsvorrichtung 14, um einen gespeicherten Wert eines Registers auszugeben, der entweder durch den ersten oder zweiten Operanden in einem arithmetischen Berechnungsbefehl, einem logischen Operationsbefehl, oder einem Summenproduktfunktions- Multiplikationsbefehl gekennzeichnet wird. (2) Berechnungsausführungssteuerung bezieht sich auf eine Steuerung der Operationsausführungsvorrichtung 14, um die Berechnung auszuführen, die durch einen arithmetischen Berechnungsbefehl, einen logischen Operationsbefehl oder einen Summenproduktfunktions-Multiplikationsbefehl gekennzeichnet wird. (3) Konstante Erzeugungssteuerung bezieht sich auf eine Steuerung der Operationsausführungsvorrichtung 14, um einen Maximalwert oder 0 zu erzeugen, zum Durchführen eines Befehls zur positiven Umwandlungssättigungsberechnung. Die (1) Registerausgangssteuerung und die (2) Berechnungsausführungssteuerung werden durchgeführt, wenn ein arithmetischer Berechnungsbefehl, ein logischer Operationsbefehl, oder ein Summenproduktfunktions-Multiplikationsbefehl von dem Decoder 13 decodiert wird, während die (1) Registerausgangssteuerung und die (3) konstante Erzeugungssteuerung durchgeführt werden, wenn ein Befehl zur positiven Umwandlungssättigungsberechnung von dem Decoder 13 decodiert wird. Ein Auftreten von (2) Berechnungsausführungssteuerung ereignet sich nur, wenn eine Summenproduktfunktions-Multiplikationsfunktion decodiert wird, während ein Auftreten von (3) konstanter Erzeugungssteuerung nur auftritt, wenn ein Befehl zur positiven Umwandlungssättigungsberechnung decodiert wird, sodass die (2) Berechnungsausführungssteuerung und die (3) konstante Erzeugungssteuerung sich gegenseitig ausschließen.
  • Der Adressbus 17 hat eine Bitweite von 32 Bit und wird verwendet, um die komprimierten Daten Fji, die Koeffizientendaten Gij und die Matrixmultiplikationsdaten Hij zu transferieren, wenn Daten von dem RAM 10 ausgegeben werden.
  • Die Operationsausführungsvorrichtung 14 umfasst eine Registerdatei und eine ALU- Schaltung und führt eine Berechnung gemäß der Steuerung durch den Decoder 13 durch.
  • Es sollte hier insbesondere zur Kenntnis genommen werden, dass die Konstruktion derart ist, dass die Befehlsabrufschaltung 12 die Abrufstufe durchführt, der Decoder 13 die Decodierstufe und die Operationsausführungsvorrichtung 14 die Operationsausführungsstufe, die Speicherschreibstufe und die Registerschreibstufe. Diese fünf Stufen werden durch einen 5-stufigen Pipeline-Prozess realisiert. Die Befehlsabrufschaltung 12 beginnt damit, einen anderen Befehl abzurufen, wenn ein Befehl in die Decodierstufe, die durch den Decoder 13 durchgeführt wird, eingetreten ist, und wartet somit nicht auf eine Vervollständigung der Ausführung des gegenwärtigen und vorangegangener Befehle. Auf dieselbe Art wartet der Decoder 13 nicht auf eine Vervollständigung der Ausführung des gegenwärtigen und vorangegangener Befehle, und startet somit damit, einen neuen Befehl zu dekodieren, wenn ein decodierter Befehl in die Operationsausführungsstufe eingetreten ist, die durch die Operationsausführungsvorrichtung 14 durchgeführt wird. Durch Durchführen solch einer Verarbeitung verarbeitet der Prozessor die Befehlssequenz, die in dem ROM 11 gespeichert ist, gemäß einem 5-stufigen Pipeline-Prozess, der zusammengesetzt ist aus einer Befehlsabrufstufe, einer Decodierstufe, einer Ausführungsstufe, einer Speicherzugriffsstufe und einer Registerschreibstufe, wie in Fig. 12A gezeigt ist.
  • Dies vervollständigt die Beschreibung der baulichen Elemente des Prozessors. Die folgende Beschreibung wird auf die interne Konstruktion der Operationsausführungsvorrichtung 14 fokussieren. Wie in Fig. 4 gezeigt ist, setzt sich die Operationsausführungsvorrichtung 14 aus einer Registerdatei 1, einer ALU-Schaltung 2, einer Schaltung 3 zur positiven Umwandlungssättigungsberechnung, einer Codeerweiterungsschaltung 4, einer Codeerweiterungsschaltung 5, einem Summenprodukt-Ergebnisregister 6, einem ersten internen Bus 15 und einem zweiten internen Bus 16 zusammen. Eine Anzahl von Steuersignalleitungen werden verwendet, um diese Komponenten mit dem Decoder 13 zu verbinden, sodass die Steueroperationen (1), (2) und (3), die zuvor beschrieben wurden, durchgeführt werden können, obwohl zur Einfachheit des Verständnisses diese Steuersignalleitungen in Fig. 4 weggelassen wurden.
  • Die Registerdatei 1 ist aus vier 32-Bit Datenregistern D0-D3 zusammengesetzt und aus drei 32-Bit Adressregistern A0-A2. Während (1) Registerausgangssteuerung, wenn ein oder zwei Registernamen durch den Decoder 13 gekennzeichnet werden, hat die Registerdatei 1 die gespeicherten Werte des Registers mit den gekennzeichneten Registernamen über Pfade C2, C3 zu dem ersten internen Bus 15 und dem zweiten internen Bus 16 ausgegeben. Die Registerdatei 1 hält ebenso den auf dem Datenbus 18 transferierten Wert bereit, den sie über den Pfad C1 empfängt.
  • Der erste interne Bus 15 ist 32 Bit breit und transferiert einen 32-Bit gespeicherten Wert, der von der Registerdatei ausgegeben wird, zu der ALU-Schaltung 2.
  • Der zweite interne Bus 16 ist ebenso 32 Bit breit und transferiert einen 32-Bit gespeicherten Wert, der von der Registerdatei ausgegeben wird, zu der ALU-Schaltung 2.
  • Die Codeerweiterungsschaltung 4 führt eine Codeerweiterung durch, wenn der gespeicherten Wert eines Datenregisters, der von der Registerdatei 1 über den ersten internen Bus 15 transferiert wird, eine negative Zahl ist. In der vorliegenden Ausführungsform sind Multiplikatoren und Multiplikanden als codierte 8-Bit Zahlen definiert, sodass die Codeerweiterungsschaltung 4 eine Codeerweiterung von 8-Bit negativen Zahlen durchführt. Als ein Beispiel, wenn der über den ersten internen Bus 15 transferierte gespeicherte Wert der 8- Bit negative Wert "0x0000_0080" ist, wird der Code in dem 8. Bit auf das 9. bis 32. Bit erweitert, sodass der Wert "0xFFFF_FF80" zu der ALU-Schaltung 2 ausgegeben wird.
  • Die Codeerweiterungsschaltung 5 führt Codeerweiterung durch, wenn der gespeicherte Wert eines Datenregisters, der von der Registerdatei 1 über den zweiten internen Bus 16 transferiert wird, eine negative Zahl ist. In der vorliegenden Ausführungsform sind Multiplikatoren und Multiplikanden als codierte 8-Bit Zahlen definiert, sodass die Codeerweiterungsschaltung 5 Codeerweiterung von 8-Bit negativen Zahlen durchführt. Das zur Codeerweiterung verwendete Verfahren ist dasselbe, wie für die Codeerweiterungsschaltung 4.
  • Die ALU-Schaltung 2 ist aus einer Additionseinheit, einer Multiplikationseinheit und einem Bitstellenverschieber zusammengesetzt, die alle 32 Bit breit sind, und führt Berechnungen gemäß der (2) Berechnungsausführungssteuerung durch, die durch den Decoder 13 gekennzeichnet wird. Da die Eingangsanschlüsse der ALU-Schaltung 2 mit den Ausgangsanschlüssen der Codeerweiterungsschaltung 4 und dem Summenprodukt-Ergebnisregister 6 verbunden sind, wird die gemäß der (2) Berechnungsausführungssteuerung durchgeführte Berechnung unter Verwendung des 32-Bit gespeicherten Werts eines Registers, der durch die Codeerweiterungsschaltung 4 ausgegeben wird, und den 32-Bit gespeicherten Wert eines Registers, der von dem Summenprodukt-Ergebnisregister 6 ausgegeben wird, durchgeführt.
  • Wenn ein Summenproduktfunktions-Multiplikationsbefehl "MACCB Dm, Dn" decodiert wird, führt die ALU-Schaltung 2 eine Multiplikation des 32-Bit gespeicherten Werts eines Registers, der durch die Codeerweiterungsschaltung 4 ausgegeben wird, und des 32-Bit gespeicherten Werts eines Registers, der durch die Codeerweiterungsschaltung 5 ausgegeben wird, durch, und gibt ein 64-Bit-Multiplikationsergebnis aus. Die ALU-Schaltung 2 fügt ebenso den 32-Bit Wert, der auf dem Pfad 1 transferiert wird, zu den 32 Bit niedrigerer Ordnung des 64-Bit-Multiplikationsergebnisses hinzu und gibt ein 32-Bit Additionsergebnis auf dem Pfad P2 aus.
  • Es sollte hier zur Kenntnis genommen werden, dass, wenn der Summenproduktfunktions- Multiplikationsbefehl "MACCB, D0, D1" decodiert wird, die gespeicherten Werte der Leseadressregister, die durch die ersten und zweiten Operanden des Summenproduktfunktions- Multiplikationsbefehls "MACCB D0, D1" gekennzeichnet werden, auf dem ersten internen Bus 15 und dem zweiten internen Bus 16 transferiert werden, sodass die ALU-Schaltung 2 die Multiplikation des gespeicherten Werts des Registers D0 und des gespeicherten Werts des Registers D1 durchführen wird. Ebenso, wenn der Summenproduktfunktions- Multiplikationsbefehl "MACCB D0, D1" decodiert wird, wird der gespeicherte Wert des Summenprodukt-Ergebnisregisters 6 auf dem Pfad P1 transferiert werden, sodass das Multiplikationsergebnis des Datenregisters D0 und des Datenregisters D1 zu dem gespeicherten Wert des Summenprodukt-Ergebnisregisters 6 hinzu gefügt werden wird, der auf dem Pfad P1 ausgegeben wurde. Das Ergebnis dieser Addition wird dann auf dem Pfad P2 ausgegeben.
  • Das Summenprodukt-Ergebnisregister 6 speichert die Summenproduktwerte, die bisher akkumuliert wurden, und gibt seine gespeicherten Werte auf dem Pfad P1 jedes Mal dann aus, wenn ein Summenproduktfunktions-Multiplikationsbefehl decodiert wird. Wenn der gespeicherte Wert auf dem Pfad P1 und das Multiplikationsergebnis durch die ALU- Schaltung 2 addiert wurden, wird das Additionsergebnis auf dem Pfad P2 ausgegeben, wobei dieser Wert von dem Summenprodukt-Ergebnisregister 6 aufgefangen und als der aktualisierte Summenproduktwert gespeichert wird. Es sollte hier zur Kenntnis genommen werden, dass das Summenprodukt-Ergebnisregister 6 das Ergebnis der Multiplikation durch die ALU-Schaltung 2 des Multiplikators Gji und des Multiplikanden Fij als einen codierten 16-Bit Wert speichert.
  • Die Schaltung 3 zur positiven Umwandlungssättigungsberechnung rundet den gespeicherten Wert des Summenprodukt-Ergebnisregisters 6, der als ein codierter 16-Bit Wert ausgedrückt ist, zu einer positiven 8-Bit-Ganzzahl. Die Fig. 8A und 8B zeigen den durch die Schaltung 3 zur positiven Umwandlungssättigungsberechnung durchgeführten Rundungsprozess. Der obere Teil von Fig. 8A zeigt den Multiplikator und Multiplikanden, die als 32- Bit Daten ausgedrückt sind. Hier ist das schwarz-schattierte 8. Bit als das Code-Bit zugeordnet, sodass unter Verwendung der schräg-schattierten sieben Bits, der Multiplikator Gji und der Multiplikand Fij als Werte in dem Bereich von -127 bis +127 ausgedrückt weiden können.
  • Der mittlere Teil von Fig. 8A zeigt das als 32-Bit Daten ausgedrückte Summenproduktergebnis. Hier ist das schwarz-schattierte 16. Bit als das Code-Bit zugeordnet, sodass unter Verwendung der schräg-schattierten fünfzehn Bits, der Summenproduktwert als ein Wert in dem Bereich von -32767 bis +32767 ausgedrückt werden kann.
  • Der untere Teil von Fig. 8A zeigt das Multiplikationsmatrixelement Hij, das in 32 Bit ausgedrückt ist. Hier wird das schräg-schattierte 1. bis 8. Bit ohne ein Code-Bit verwendet, sodass das Multiplikationsmatrixelement Hij als irgendein Wert in dem Bereich von 0 bis +255 ausgedrückt werden kann.
  • Im Fig. 8B zeigt der Balken auf der linken Seite den Bereich gespeicherter Werte von Registern, die als Multiplikator und Multiplikand verwendet werden können, der ein 7-Bit- Bereich von positiven und negativen Werten ist. Der Balken im Zentrum zeigt den Bereich von Werten, die in dem Summenprodukt-Ergebnisregister 6 als der Summenproduktwert gespeichert werden können, der ein 15-Bit-Bereich von positiven und negativen Werten ist. Der Balken auf der rechten Seite zeigt den Bereich von Werten, die für die Multiplikationsmatrix Hij verwendet werden können, der der Bereich von 8-Bit positiven Werten ist, die von der Reproduktions-bezogenen Hardware abgewickelt werden können.
  • Es sollte hier fest gehalten werden, dass der Bereich von Werten, die als der Summenproduktwert verwendet werden können, ein Bereich von 15-Bit positiven und negativen Werten ist, um das Summieren von Rundungsfehlern zu vermeiden. Mehr im Einzelnen, wenn der Summenproduktwert von dem Multiplikationsergebnis des Multiplikators Gji und des Multiplikanten Fij, die beide codierte 8-Bit Werte sind, ermittelt wird, falls das Multiplikationsergebnis jedes Mal auf 8 Bit gerundet werden soll, da der Bereich des Multiplikationsmatrixelements Hij 8 Bit ist, würde der Rundungsfehler jedes Mal vergrößert, wenn eine Multiplikation durchgeführt wird. Um solche Vergrößerungen im Rundungsfehler zu vermeiden, setzt das Summenprodukt-Ergebnisregister 6 das Summenproduktergebnis zu 16 Bit und die positive Umwandlungssättigungsberechnung wird nur durchgeführt, wenn die Multiplikation einer Zeile mit einer Spalte abgeschlossen wurde.
  • Der gespeicherte Wert des Summenprodukt-Ergebnisregisters 6, der durch den Balken im Zentrum der Fig. 8B gezeigt wird, wird zu dem 8-Bit positiven Wert gerundet, der durch den rechten Balken gezeigt wird, sodass der Bereich von Werten, die durch das Symbol y1 gekennzeichnet sind (der Bereich von positiven Werten, die "0x0000_00FF" übersteigen) alle zu "0x0000_00FF" gerundet werden.
  • Die Schaltung 3 zur positiven Umwandlungssättigungsberechnung rundet den Bereich von Werten, der durch das Symbol y2 gezeigt wird (negative Werte), zu dem Wert "0x0000_0000".
  • Die interne Konstruktion der Schaltung 3 zur positiven Umwandlungssättigungsberechnung ist innerhalb der gestrichelten Linie y8 in Fig. 4 gezeigt. Wie in Fig. 4 gezeigt ist, ist die Schaltung 3 zur positiven Umwandlungssättigungsberechnung aus einem Konstant- Generator 21, einem Komparator 22, einer Polaritätsentscheidungseinheit 23, einem Multiplexer 24 und einem Null-Generator 25 zusammengesetzt. Diese Komponenten sind durch Steuerleitungen mit dem Decoder 13 verbunden, obwohl diese für die Einfachheit des Verständnisses aus Fig. 4 weggelassen wurden.
  • Wenn der von der Befehlsabrufschaltung 12 gelesene und von dem Decoder 13 decodierte Befehl ein Befehl zur positiven Umwandlungssättigungsberechnung "MCSST" ist, erzeugt der Konstant-Generator 21 einen maximalen positiven Wert, der, in Übereinstimmung mit dem Inhalt des positiven Umwandlungs-Sättigungsberechnungsbreitenfeldes, ein 8-Bit uncodierter Wert, ein 16-Bit uncodierter Wert oder ein 24-Bit uncodierter Wert ist. Wenn die Erzeugung eines 8-Bit uncodierten Werts von dem positiven Umwandlungs- Sättigungsberechnungsbreitenfeld angezeigt wird, erzeugt der Konstant-Generator 21 den 32-Bit codierten Wert "0x0000_00FF", der der Maximalwert für einen uncodierten 8-Bit Wert ist, und gibt diesen zu dem Multiplexer 24 aus. Wenn die Erzeugung eines 16-Bit uncodierten Werts von dem positiven Umwandlungs-Sättigungsberechnungsbreitenfeld angezeigt wird, erzeugt der Konstant-Generator 21 den 32-Bit codierten Wert "0x0000_FFFF", der der Maximalwert für einen uncodierten 16-Bit Wert ist, und gibt diesen zu dem Multiplexer 24 aus. Auf die gleiche Weise erzeugt der Konstant-Generator 21, wenn die Erzeugung eines 24-Bit uncodierten Werts von dem positiven Umwandlungs- Sättigungsberechnungsbreitenfeld angezeigt wird, den 32-Bit codierten Wert "0x00FF_FFFF", der der Maximalwert für einen uncodierten 24-Bit Wert ist, und gibt diesen zu dem Multiplexer 24 aus.
  • Der Komparator 22 vergleicht die Größe des von dem Summenprodukt-Ergebnisregister 6 gehaltenen Wertes mit der Größe des von dem Konstant-Generator 21 ausgegebenen Maximalwerts. Dieser Vergleich wird durchgeführt durch Subtrahieren des von dem Konstant- Generator 21 gehaltenen Wertes von dem von dem Konstant-Generator 21 ausgegebenen Maximalwert, und Erkennen, ob ein Übertrag als ein Ergebnis der Subtraktion aufgetreten ist. Wenn ein 8-Bit Wert von dem positiven Umwandlungs- Sättigungsberechnungsbreitenfeld angezeigt wird, wird der gespeicherte Wert des Summenprodukt-Ergebnisregisters 6 von der 32-Bit codierten Ganzzahl "0x0000_00FF" subtrahiert, die der Maximalwert für einen uncodierten 8-Bit Wert ist. Wenn ein 16-Bit Wert von dem positiven Umwandlungs-Sättigungsberechnungsbreitenfeld angezeigt wird, wird der gespeicherte Wert des Summenprodukt-Ergebnisregisters 6 von der 32-Bit codierten Ganzzahl "0x0000_FFFF" subtrahiert, die der Maximalwert für einen uncodierten 16-Bit Wert ist. Auf die gleiche Weise wird, wenn ein 24-Bit Wert von dem positiven Umwandlungs- Sättigungsberechnungsbreitenfeld angezeigt wird, der gespeicherte Wert des Summenprodukt-Ergebnisregisters 6 von der 32-Bit codierten Ganzzahl "0x00FF_FFFF" subtrahiert, die der Maximalwert für einen uncodierten 24-Bit Wert ist.
  • Wenn ein Übertrag als das Ergebnis der oben beschriebenen Subtraktion erkannt wird und entschieden wird, dass der aufgefangene Wert den Maximalwert übersteigt, gibt der Komparator 22 den logischen Wert "1" an den Multiplexer 24 aus. Umgekehrt, wenn entschieden wird, dass der von dem Summenprodukt-Ergebnisregister 6 gehaltene Wert gleich oder kleiner als der Maximalwert ist, gibt der Komparator 22 den logischen Wert "0" an den Multiplexer 24 aus.
  • Die Polaritätsentscheidungseinheit 23 entscheidet, ob das Code-Bit des Werts, der in dem Summenprodukt-Ergebnisregister 6 gespeichert ist, "AN" ist. Hier wird in Abhängigkeit von dem Inhalt des positiven Umwandlungs-Sättigungungsberechnungsbreitenfeldes des Befehls zur positiven Umwandlungssättigungsberechnung "MCSST" ein 8-Bit uncodierter Wert, ein 16-Bit uncodierter Wert oder ein 24-Bit uncodierter Wert angezeigt, sodass die Position des Code-Bits sich ändern wird. Als ein Ergebnis ändert die Polaritätsentscheidungseinheit 23 das Bit, das in Übereinstimmung mit dem Kennzeichen in dem positiven Umwandlungs- Sättigungsberechnungsbreitenfeld des Befehls zur positiven Umwandlungssättigungsberechnung "MCSST" beurteilt werden soll.
  • Wenn das Kennzeichen in dem positiven Umwandlungs-Sättigungsberechnungsbreitenfeld des Befehls zur positiven Umwandlungssättigungsberechnung "MCSST" für einen 24-Bit uncodierten Wert ist, entscheidet die Polaritätsentscheidungseinheit 23, ob das 24. Bit von der Seite des Bits mit dem niedrigsten Stellenwert (LSB) her "AN" ist, während, wenn das Kennzeichen in dem positiven Umwandlungs-Sättigungsberechnungsbreitenfeld des Befehls zur positiven Umwandlungs-Sättigungsberechnung "MCSST" für einen 16-Bit uncodierten Wert ist, die Polaritätsentscheidungseinheit 23 entscheidet, ob das 16. Bit von der Seite des Bits mit dem niedrigsten Stellenwert her "AN" ist. Auf die gleiche Weise, wenn das Kennzeichen in dem positiven Umwandlungs-Sättigungsberechnungsbreitenfeld des Befehls zur positiven Umwandlungs-Sättigungsberechnung "MCSST" für einen 8-Bit uncodierten Wert ist, entscheidet die Polaritätsentscheidungseinheit 23, ob das 8. Bit von der Seite des Bits mit dem niedrigsten Stellenwert her "AN" ist. Diese Entscheidung bezieht sich auf eine Entscheidung, ob der von dem Summenprodukt-Ergebnisregister 6 gehaltene Summenproduktwert als eine negative Zahl ausgedrückt ist, wenn Werte in Übereinstimmung mit dem Kennzeichen ausgedrückt werden, das in dem positiven Umwandlungs- Sättigungsberechnungsbreitenfeld des Befehls zur positiven Umwandlungs-Sättigungsberechnung "MCSST" gegeben ist. Wenn der Wert ein negativer Wert ist, gibt die Polaritätsentscheidungseinheit 23 den logischen Wert "1" an den Multiplexer 24 aus. Umgekehrt, wenn der Wert null ist oder ein positiver Wert, gibt die Polaritätsentscheidungseinheit 23 den logischen Wert "0" an den Multiplexer 24 aus.
  • Der Null = Generator 25 erzeugt die Ganzzahl "0x0000_0000", wenn der decodierte Befehl ein Befehl zur positiven Umwandlungssättigungsberechnung "MCSST" ist.
  • Der Multiplexer 24 wählt einen aus dem von dem Konstant-Generator 21 erzeugten Maximalwert, dem von dem Null-Generator 25 erzeugten Null-Wert "0x0000_0000" und dem von dem Summenprodukt-Ergebnisregister 6 gehaltenen Summenproduktwert aus und gibt diesen aus in Übereinstimmung mit der Kombination der logischen Werte, die von dem Komparator 22 und der Polaritätsentscheidungseinheit 23 ausgegeben werden.
  • Falls der von dem Komparator 22 ausgegebene logische Wert als der logische Wert x gesetzt wird und der von der Polaritätsentscheidungseinheit 23 ausgegebene logische Wert als der logische Wert y gesetzt wird, können die Übereinstimmungen zwischen den Kombinationen dieser logischen Werte und dem Ausgangswert des Multiplexers 24 durch die in Fig. 9 gezeigte Wahrheitstabelle ausgedrückt werden. Es sollte hier fest gehalten werden, dass die Beispiel-Wahrheitstabelle, die in Fig. 9 gezeigt ist, den Fall zeigt, wenn der von dem Konstant-Generator 21 ausgegebene Maximalwert "0x0000_00FF" ist.
  • Wie in Fig. 9 gezeigt ist, wenn der Ausgangswert des Komparators 22 "0" ist und der Ausgangswert der Polaritätsentscheidungseinheit 23 "0" ist, gibt der Multiplexer 24 den gehaltenen Wert des Summenprodukt-Ergebnisregisters 6 aus.
  • Wenn der Ausgangswert des Komparators 22 "1" ist und der Ausgangswert der Polaritätsentscheidungseinheit 23 "0" ist, gibt der Multiplexer 24 den von dem Konstant-Generator 21 erzeugten Maximalwert "0x0000_00FF" aus.
  • Wenn der Ausgangswert des Komparators 22 "0" ist und der Ausgangswert der Polaritätsentscheidungseinheit 23 "1" ist, gibt der Multiplexer 24 den von dem Null-Generator 25 erzeugten Null-Wert "0x0000_0000" aus. Wenn der Ausgangswert des Komparators 22 "1" ist und der Ausgangswert der Polaritätsentscheidungseinheit 23 "1" ist, gibt der Multiplexer 24 den von dem Null-Generator 25 erzeugten Null-Wert "0x0000_0000" aus.
  • Die Fig. 10 und 11 zeigen die Datenflüsse in der Operationsausführungsvorrichtung 14. Fig. 10 zeigt den Fall, wenn der Summenproduktfunktions-Multiplikationsbefehl "MACCB D0, D1" von dem Decoder 13 decodiert wird, der das Datenregister D0 als den Multiplikator und das Datenregister D1 als den Multiplikanden kennzeichnet. In diesem Fall werden der gespeicherte Wert "0x0000_007F" des Datenregisters D0 und der gespeicherte Wert "0x0000_0070" des Datenregisters D1, die in der Registerdatei 1 gespeichert sind, zu dem ersten internen Bus 15 und zu dem zweiten internen Bus 16 ausgegeben, um die Werte zu der Codeerweiterungsschaltung 4 und der Codeerweiterungsschaltung 5 zu transferieren. Die Multiplikation der von der Codeerweiterungsschaltung 4 und der Codeerweiterungsschaltung 5 ausgegebenen 32-Bit Werte wird dann von der ALU-Schaltung 2 durchgeführt (da die hiervon der ALU-Schaltung 2 durchgeführte Operation eine Multiplikation ist, wird in Fig. 10 der Term "Multiplikator" gegeben), und die niedrigeren 32 Bits "0x0000_3790" des 64-Bit Werts "0x0000_0000_0000_3790", der das Multiplikationsergebnis ist, werden an das Summenprodukt-Ergebnisregister 6 ausgegeben. Da der Befehl zur positiven Umwandlungssättigungsberechnung "MCSST D1" als Nächstes decodiert wird, wird der von dem Summenprodukt-Ergebnisregister 6 gehaltene Wert zu der Schaltung 3 zur positiven Umwandlungssättigungsberechnung ausgegeben, wo entschieden wird, dass der ausgegebene Wert "0x0000_3790" den Maximalwert "0x0000_00FF" für einen uncodierten 8-Bit Wert übersteigt, sodass der Maximalwert "0x0000_00FF" für einen uncodierten 8-Bit Wert zu dem Datenbus 18 ausgegeben wird und in dem Datenregister D1 in der Registerdatei 1 gespeichert wird.
  • In Fig. 11 wird der Summenproduktfunktions-Multiplikationsbefehl "MACCB D0, D1", der das Datenregister D0 und das Datenregister D1 als die Leseadressen für den Multiplikator und den Multiplikanden kennzeichnet, von dem Decoder 13 decodiert. Als ein Ergebnis werden der gehaltene Wert "0x0000_007F" des Datenregisters D0 und der gehaltene Wert "0x0000_0080" des Datenregisters D1, die in der Registerdatei 1 gespeichert sind, zu der Codeerweiterungsschaltung 4 und der Codeerweiterungsschaltung 5 über den ersten internen Bus 15 und den zweiten internen Bus 16 transferiert. Der gehaltene Wert "0x0000_0080" des Datenregisters D1 ist eine 8-Bit negative Zahl, sodass die Codeerweiterungsschaltung 5 das 8. Bit des gehaltenen Werts "0x0000_0080" des Datenregisters D1 zu den 9. bis 36. Bits ausdehnt und so den Wert "0xFFFF_FF80" zu der ALU-Schaltung 2 ausgibt.
  • Die Multiplikation des 32-Bit gehaltenen Wertes "0x0000_007F" des Datenregisters D0, der von der Codeerweiterungsschaltung 4 ausgegeben wird, und des 32-Bit Wertes "0xFFFF_FF80", der von der Codeerweiterungsschaltung 5 erweitert wird, wird von der Codeermreiterungsschaltung 5 durchgeführt, und die niedrigeren 32 Bits "0xFFFF_C080" des 64-Bit Multiplikationsergebnisses "0xFFFF_FFFF_FFFF_C080" werden an das Summenprodukt-Ergebnisregister 6 ausgegeben. Wenn der Befehl zur positiven Umwandlungssättigungsberechnung "MCSST" decodiert wurde, gibt das Summenprodukt-Ergebnisregister 6 seinen gehaltenen Wert zu der Schaltung 3 zur positiven Umwandlungssättigungsberechnung aus, die entschiedet, dass der 32-Bit Wert "0xFFFF_C080" eine codierte 16-Bit negative Zahl ist. Als ein Ergebnis gibt die Schaltung 3 zur positiven Umwandlungssättigungsberechnung den 8-Bit Nell-Wert 0x0000_0000" zu dem Datenbus 18 aus, sodass dieser Null-Wert von dem Datenregister D1 in der Registerdatei 1 gehalten wird.
  • Das Folgende ist eine Beschreibung der Operation des wie oben stehend beschrieben konstruierten Prozessors. Ein Transferbefehl, der in der Matrixmultiplikationsunterroutine enthalten ist, wird zuerst in den Befehlspuffer des Decoders 13 von der Befehlsabrufschaltung 12 geschrieben und der Befehl 5 "MOV (A0), D0" wird von dem Decoder 13 decodiert. Dieser Befehl 5: "MOV (A0), D0" ist ein Transferbefehl, der ein Datenlesen für das RAM 10 kennzeichnet, unter Verwendung indirekter Registerreferenzzierung, die die Leseadresse kennzeichnet unter Verwendung des Adressregisters A0. Als ein Ergebnis wird ein Element aus der ersten Zeile und ersten Spalte (F11) der komprimierten Datenmatrix Fij, die aus 8·8 Matrixelementen zusammengesetzt ist, die in dem RAM 10 gespeichert sind, zu dem Datenregister D0 transferiert. Der folgende Befehl, Befehl 6: "MOV (A1), D0" schreibt auf ähnliche Art und Weise ein Element aus der ersten Zeile und ersten Spalte (G11) der Koeffizientendatenmatrix Gji, die aus 8·8 Matrixelementen zusammengesetzt ist, in das Datenregister D1 in der Registerdatei 1 über den Datenbus 18.
  • Der nächste Befehl in der Matrixmultiplikationsunterroutine ist Befehl 7, der der Summenproduktfunktions-Multiplikationsbefehl "MACCB D0, D1" ist. Dieser wird von der Befehlsabrufschaltung 12 abgerufen und in den Befehlspuffer des Decoders 13 geschrieben, vor einer Dekodierung durch den Decoder 13. Wenn der Decoder 13 den Summenproduktfunktions-Multiplikationsbefehl "MACCB D0, D1" decodiert, werden die gehaltenen Werte F11 und G11 des Datenregisters D0 und des Datenregisters D1 zu dem ersten internen Bus 15 und dem zweiten internen Bus 16 transferiert.
  • Wenn der Summenproduktfunktions-Multiplikationsbefehl "MACCB D0, D1" decodiert wird, transferieren der erste interne Bus 15 und der zweite interne Bus 16 die gehaltenen Werte F11 und G11 der Leseadressregister, die durch den ersten und zweiten Operanden des Summenproduktfunktions-Multiplikationsbefehls "MACCB D0, D1" gekennzeichnet werden. Diese Werte werden dann von der Codeerweiterungsschaltung 4 und der Codeerweiterungsschaltung 5 in die ALU-Schaltung 2 ausgegeben, wo die Multiplikation des gehaltenen Werts des Datenregisters D0 und des gehaltenen Werts des Datenregisters D1 durchgeführt wird. Das Multiplikationsergebnis "F11·G11" wird dann zu dem Summenprodukt- Ergebnisregister 6 transferiert und von dem Summenprodukt-Ergebnisregister 6 gehalten.
  • Wenn das Summenprodukt-Ergebnisregister 6 das Multiplikationsergebnis "F11·G11" gespeichert hat, wird eine Verzweigung zu dem Kennzeichen "LP1_NEXT" durchgeführt auf Grund der Ausführung von Befehl 8: "CMP NUMBER, D2" und Befehl 9: "BCS LP1_NEXT", sodass der Befehl 13: "ADD 1, D2" decodiert wird. Dieser Befehl 13: "ADD 1, D2" inkrementiert die Anzahl von Iterationen. Nach Befehl 13: "ADD 1, D2" werden Befehl 14: "ADD 1, A0" und Befehl 15: "ADD ROW, A1" ausgeführt, sodass Leseadressen von ROM 11 zu der nächsten Spalte und Zeile vorgerückt werden. Als ein Ergebnis der Inkrementierung in diesen Befehlen wird die Leseadresse der komprimierten Daten zu dem zweiten Zeilen-, ersten Spaltenelement vorgerückt und die Leseadresse der Koeffizientendaten wird zu dem ersten Spalten-, zweiten Zeilenelement vorgerückt.
  • Nachdem die Leseadressen inkrementiert wurden, wird der folgende Befehl, Befehl 16 "BRA LP1_START" decodiert. Die Verzweigungsadresse von Befehl 16: "BRA LP1_START" ist Befehl 5: "MOV (A0), D0", an den das Kennzeichen "LP1_START" angehängt ist, sodass die Verzweigung in Befehl 16 Befehl 5: "MOV (A0), D0" und Befehl 6: "MOV (A1), D1" wieder ausführen lässt.
  • Als ein Ergebnis dieser Transferbefehle wird das zweite Zeilen-, erste Spaltenelement F21 in den komprimierten Daten in dem RAM 10 in das Datenregister D0 transferiert, während das erste Zeilen-, zweite Spaltenelement G12 in den komprimierten Daten in das Datenregister D1 in der Registerdatei 1 über den Datenbus 18 transferiert wird.
  • In der Matrixmultiplikationsunterroutine folgt auf diese Transferbefehle der Summenproduktfunktions-Multiplikationsbefehl "MACCB D0, D1", sodass dieser Summenproduktfunktions- Multiplikationsbefehl "MACCB D0, D1" von der Befehlsabrufschaltung 12 in den internen Puffer des Decoders 13 geschrieben wird und von Decoder 13 decodiert wird. Als ein Ergebnis der Dekodierung werden die gehaltenen Werte des Datenregisters D0 und des Datenregisters D1 zu dem ersten internen Bus 15 und dem zweiten internen Bus 16 transferiert.
  • Wenn der Summenproduktfunktions-Multiplikationsbefehl "MACCB D0, D1" decodiert wird, transferieren der erste interne Bus 15 und der zweite interne Bus 16 die gehaltenen Werte F11 und G11 der Leseadressregister, die durch den ersten und zweiten Operanden des Summenproduktfunktions-Multiplikationsbefehls "MACCB D0, D1" gekennzeichnet werden. Diese Werte sind die Matrixelemente G12 und F21, sodass die Multiplikation des gehaltenen Werts G12 des Datenregisters D0 und des gehaltenen Werts F21 des Datenregisters D1 von der ALU-Schaltung 2 durchgeführt wird. An diesem Punkt hält das Summenprodukt-Ergebnisregister 6 den Wert "G11·F11", der die Gesamtheit der elementaren Operationen ist, die bislang in der Summenprodukt-Berechnung durchgeführt wurden. Wenn der Summenproduktfunktions-Multiplikationsbefehl "MACCB D0, D1" decodiert wird, gibt das Summenprodukt-Ergebnisregister 6 diesen gehaltenen Wert auf den Pfad P1 aus.
  • Da der gehaltene Wert des Summenprodukt-Ergebnisregisters 6 auf den Pfad P1 ausgegeben wird, wird das Multiplikationsergebnis "G12·F21" des Datenregisters D0 und des Datenregisters D1 zu dem gehaltenen Wert des Summenprodukt-Ergebnisregisters 6 auf dem Pfad P1 hinzu addiert. Das Ergebnis der Addition wird dann auf den Pfad P2 ausgegeben.
  • Wenn die Addition des gehaltenen Werts "G11·F11" und des Multiplikationsergebnisses "G12·F21" von der ALU-Schaltung 2 durchgeführt wurde, wird das Additionsergebnis "G11·F11 + G12·F21" auf den Pfad P2 ausgegeben, sodass das Summenprodukt- Ergebnisregister 6 dieses Additionsergebnis als den Summenproduktwert "G11·F11 + G12·F21" hält.
  • Die oben beschriebene Verarbeitung wird für alle die Elemente in der ersten Zeile der Koeffizientendaten Gji und alle die Elemente in der ersten Spalte der komprimierten Daten Fij wiederholt, sodass der Summenproduktwert für "G11·F11 + G12·F21 + G13·F31 + G14·F41 + G15·F51 + G16·F61 + G17·F71 + G18·F81" berechnet wird und in dem Summenprodukt-Ergebnisregister 6 gespeichert wird. Sollte hier ein Bitfehler während des Transfers des Elements 31 von dem RAM 10 sein, gibt es das Risiko, dass der von dem Summenprodukt-Ergebnisregister 6 gehaltene Summenproduktwert ein Wert sein wird (wie "0x000_78FF"), der klar den Bereich von Werten übersteigt, der von der Reproduktionsbezogenen Hardware reproduziert werden kann.
  • Nach diesem wird die nächste Schleifenanweisung in dem ROM 11, der Befehl zur positiven Umwandlungssättigungsberechnung "MCSST D1", in den internen Puffer des Decoders 13 geschrieben, dieser Befehl zur positiven Umwandlungssättigungsberechnung "MCSST D1" wird von dem Decoder 13 decodiert.
  • Wenn der Befehl zur positiven Umwandlungssättigungsberechnung "MCSST D1" von dem Decoder 13 decodiert wird, wird der gehaltene Wert "0x000_78FF" des Summenprodukt- Ergebnisregisters 6 auf den Pfad P1 ausgegeben. Nach dem dieser Wert auf den P1 ausgegeben wurde, wird der Komparator 22 von dem Decoder 13 aktiviert. Der Komparator 22 vergleicht den gehaltenen Wert des Summenprodukt-Ergebnisregisters 6 mit der 32-Bit codierten Ganzzahl "0x0000_00FF", um zu sehen, was größer ist. Da der gehaltene Wert des Summenprodukt-Ergebnisregisters 6 "0x000_78FF" hier die 32-Bit codierte Ganzzahl "0x0000_00FF" übersteigt, gibt der Komparator 22 den logischen Wert "1" an den Multiplexer 24 aus.
  • Die Polaritätsentscheidungseinheit 23 entscheidet, ob das 16. Bit von der Seite des Bits mit dem niedrigsten Stellenwert her in dem Wert, der von dem Summenprodukt- Ergebnisregister 6 gehalten wird, "AN" ist. Diese Entscheidung gleicht einer Entscheidung, ob der gehaltene Summenproduktwert des Summenprodukt-Ergebnisregisters 6 eine negative Zahl ist. Der gehaltene Wert "0x000_78FF" ist, ausgedrückt in binär, "0000_0000 0000_0000 0111_1000 1111_1111", sodass das 16. Bit von der Seite des Bits mit dem niedrigsten Stellenwert her als "0" gesehen werden kann. Als ein Ergebnis wird der logischen Wert "0" zu dem Multiplexer 24 ausgegeben.
  • In dem vorliegenden Fall werden der Maximalwert "0x0000_00FF" und der Null-Wert "0x0000_0000" von dem Konstant-Generator 21 und dem Null-Generator 25 erzeugt und der Multiplexer 24 gibt selektiv einen von dem Maximalwert, dem Null-Wert und dem gehaltenen Wert des Summenprodukt-Ergebnisregisters 6 in Übereinstimmung mit der Kombination der logischen Werte, die von dem Komparator 22 und der Polaritätsentscheidungseinheit 23 ausgegeben werden, aus. In dem vorliegenden Beispiel ist die Ausgabe des Komparators 22 "1" und die Ausgabe der Polaritätsentscheidungseinheit 23 ist "0", sodass der Multiplexer 24 den Maximalwert "0x0000_00FF" zu dem Datenbus 18 ausgibt.
  • Gemäß der Steuerung durch den Decoder 13 wird der an den Datenbus 18 ausgegebene, ausgewählte Maximalwert zu dem Datenregister D1 transferiert, das durch den Operanden des Befehls zur positiven Umwandlungssättigungsberechnung "MCSST D1" gekennzeichnet wird, und wird von dem Datenregister D1 gehalten. Dieser gehaltene Wert wird dann in das RAM 10 als das Element H11 für die erste Zeile, erste Spalte der Multiplikationsergebnismatrix Hij geschrieben.
  • Wenn das Summenprodukt für alle die Elemente in der ersten Spalte der komprimierten Datenmatrix Fij und die Elemente in der ersten Zeile der Koeffizientenmatrix Gji vervollständigt wurde, wird die Summenprodukt-Verarbeitung für die Elemente in der zweiten Spalte der komprimierten Datenmatrix Fij und die Elemente in der ersten Zeile der Koeffizientenmatrix Gji durchgeführt. Wenn die Berechnung von "G11·F12 + G12·F22 + G13·F32 + G14·F42 + G15·F52 + G16·F62 + G17·F72 + G18·F82" vervollständigt wurde, wird der Summenproduktwert in dem Summenprodukt-Ergebnisregister 6 gehalten.
  • Hier endet, falls es einen Bitfehler während des Transfers des Elements F32 von dem RAM 10 gibt, der von dem Summenprodukt-Ergebnisregister 6 gehaltene Summenproduktwert als ein negativer Wert "0x0000_86FF", der nicht von der Reproduktions-bezogenen Hardware reproduziert werden kann.
  • Nach diesem wird die nächste Schleifenanweisung in dem ROM 11, der Befehl zur positiven Umwandlungssättigungsberechnung "MCSST D1", in den internen Puffer des Decoders 13 geschrieben, dieser Befehl zur positiven Umwandlungssättigungsberechnung "MCSST D1" wird von dem Decoder 13 decodiert.
  • Wenn der Befehl zur positiven Umwandlungssättigungsberechnung "MCSST D1" von dem Decoder 13 decodiert wird, wird der gehaltene Wert "0x000_86FF" des Summenprodukt- Ergebnisregisters 6 auf den Pfad P1 ausgegeben. Nach dem dieser Wert auf den P1 ausgegeben wurde, wird der Komparator 22 von dem Decoder 13 aktiviert. Der Komparator 22 vergleicht den gehaltenen Wert des Summenprodukt-Ergebnisregisters 6 mit der 32-Bit codierten Ganzzahl "0x0000_00FF", um zu sehen, was größer ist. Da der gehaltene Wert des Summenprodukt-Ergebnisregisters 6 "0x000_86FF" die 32-Bit codierte Ganzzahl "0x0000_00FF" übersteigt, gibt der Komparator 22 den logischen Wert "1" an den Multiplexer 24 aus.
  • Die Polaritätsentscheidungseinheit 23 entscheidet, ob das 16. Bit von der Seite des Bits mit dem niedrigsten Stellenwert her in dem Wert, der von dem Summenprodukt- Ergebnisregister 6 gehalten wird, "AN" ist. Diese Entscheidung gleicht einer Entscheidung, ob der gehaltene Summenproduktwert des Summenprodukt-Ergebnisregisters 6 eine negative Zahl ist. Der gehaltene Wert "0x000_86FF" ist, ausgedrückt in binär, "0000_0000 0000_0000 1000_0110 1111_1111", sodass das 16. Bit von der Seite des Bits mit dem niedrigsten Stellenwert her als "1" gesehen werden kann. Als ein Ergebnis wird der logischen Wert "1" zudem Multiplexer 24 ausgegeben.
  • In dem vorliegenden Fall werden der Maximalwert "0x0000_00FF" und der Null-Wert "0x0000_0000" von dem Konstant-Generator 21 und dem Null-Generator 25 erzeugt und der Multiplexer 24 gibt selektiv einen von dem Maximalwert, dem Null-Wert und dem gehaltenen Wert des Summenprodukt-Ergebnisregisters 6 in Übereinstimmung mit der Kombination der logischen Werte, die von dem Komparator 22 und der Polaritätsentscheidungseinheit 23 ausgegeben werden, aus. In dem vorliegenden Beispiel ist die Ausgabe des Komparators 22 "1" und die Ausgabe der Polaritätsentscheidungseinheit 23 ist "1", sodass der Multiplexer 24 den Null-Wert "0x0000_0000" zu dem Datenbus 18 ausgibt.
  • Gemäß der Steuerung durch den Decoder 13 wird der an den Datenbus 18 ausgegebene, ausgewählte Null-Wert zu dem Datenregister D1 transferiert, dass durch den Operanden des Befehls zur positiven Umwandlungssättigungsberechnung "MCSST D1" gekennzeichnet wird, und wird von dem Datenregister D1 gehalten. Dieser gehaltene Wert wird dann in das RAM 10 als das Element H12 für die erste Zeile, zweite Spalte der Multiplikationsergebnismatrix Hij geschrieben.
  • Durch Wiederholen der obigen Verarbeitung und Schreiben in die übrigen Elemente in der Matrixmultiplikationstabelle wird die Matrixmultiplikationstabelle in das RAM 10 geschrieben und unter Verwendung des Ergebnisses dieser Matrixmultiplikation als das Ergebnis einer Näherungsberechnung einer inversen DCT kann dann die Dekomprimierungsverarbeitung von komprimierten Daten durchgeführt werden.
  • Fig. 12B zeigt die Ausführung der Matrixmultiplikationsunterroutine gemäß einem Pipeline- Prozess, der aus fünf Stufen besteht, die nämlich eine Befehlsabrufstufe, eine Befehlsdecodierstufe, eine Erweiterungsstufe, eine Speicherzugriffsstufe und eine Registerschreibstufe sind. Wenn Befehl 10: "MCSST D1" von dem Decoder 13 abgerufen wird, wird der voran gehende Befehl 9: "BCS LP1_NEXT" in der Decodierstufe sein. Da in Befehl 8 "CMP NUMBER, D2" eine Berechnung durchgeführt wird, um die Gesamtiterationsanzahl "NUMBER" von der von dem Datenregister D2 gehaltenen Anzahl von Iterationen zu subtrahieren, wird, falls das Übertragsflag zu "AN" gesetzt ist als ein Ergebnis der Subtraktion eine Verzweigung zu Befehl 13: "ADD 1, D2" durchgeführt, sodass die Ausführungsstufe von Befehl 10: "MCSST D1" gestoppt wird.
  • Auf der anderen Seite, wenn das Übertragsflag zu "AUS" gesetzt ist, wird die Decodierstufe von Befehl 10: "MCSST D1" zur selben Zeit durchgeführt, wie die Ausführungsstufe von Befehl 9: "BCS LP1_NEXT". Nach diesem wird die Ausführungsstufe von Befehl 10: "MCSST D1" durchgeführt, zu derselben Zeit, wie die Speicherzugriffsstufe von Befehl 9: "BCS LP1_NEXT". Die Verarbeitung zur positiven Umwandlungssättigungsberechnung für das Matrixmultiplikationsergebnis einer Zeile von Elementen mit einer Spalte von Elementen wird durchgeführt, wenn der vor ihr lokalisierte Befehl in der Speicherzugriffsstufe ist, sodass die Verarbeitung so betrachtet werden kann, als wenn sie ohne Konfusion in der Pipeline durchgeführt wird.
  • Auf diese Art wird, auch falls der in der Schaltung 3 zur positiven Umwandlungssättigungsberechnung bereitgestellte Prozessor die Matrixmultiplikation einer Zeile von Elementen mit einer Spalte von Elementen mit einer sehr hohen Frequenz durchführen muss, die Verarbeitung zur positiven Umwandlungssättigungsberechnung in dem Maschinensprachenprogramm als ein einfacher Befehl ausgedrückt, sodass es keine Konfusion in der Pipeline gibt. Als ein Ergebnis kann der Prozessor mit hoher Geschwindigkeit operieren.
  • Mit der oben beschriebenen vorliegenden Ausführungsform wird die Verarbeitung zur positiven Umwandlungssättigungsberechnung von Summenproduktwerten dadurch durchgeführt, dass der Summenproduktwert, der in dem Summenprodukt-Ergebnisregister 6 akkumuliert wird, einer Verarbeitung zur positiven Umwandlungssättigungsberechnung unterworfen wird, sodass Anwendungsprogramme für Matrixnäherungsberechnungen, die bei einer Dekomprimierungsverarbeitung von Videodaten und Audiodaten benötigt werden, einfach unter Verwendung einer bemerkenswert kleinen Code-Größe codiert werden können. Da hier eine große Reduzierung in der Code-Größe ist, kann eine große Reduzierung in der Größe des ROM gemacht werden, die installiert werden muss, um das Programm zu speichern.
  • Die Verarbeitung zur positiven Umwandlungssättigungsberechnung für den Summenproduktwert ist derart, dass die positive Berichtigungsverarbeitung und die Sättigungsberechnungsverarbeitung zur selben Zeit für den gehaltenen Wert des Summenprodukt- Ergebnisregisters 6 durchgeführt wird, sodass die Verarbeitung mit hoher Geschwindigkeit durchgeführt wird. Die Verarbeitung zur positiven Umwandlungssättigungsberechnung muss jedes Mal durchgeführt werden, wenn eine Zeile von Elementen mit einer Spalte von Elementen multipliziert wird, sodass, wenn acht Zeilen mit acht Zeilen multipliziert werden, 64 Ausführungen der Verarbeitung zur positiven Umwandlungssättigungsberechnung notwendig sind. Jedoch wird, da die positive Berichtigungsverarbeitung und die Sättigungsberechnungsverarbeitung reibungslos durchgeführt werden, jede Ausführung der Verarbeitung zur positiven Umwandlungssättigungsberechnung in einer sehr kurzen Zeit vervollständigt. Falls die Verarbeitung zur positiven Umwandlungssättigungsberechnung in einer kurzen Zeit abgeschlossen wird, kann die Dekomprimierungsverarbeitung für Bilddaten und Audiodaten, die die Matrixmultiplikation einer großen Anzahl von Daten benötigt, mit hoher Geschwindigkeit durchgeführt werden.
  • Da die von der Schaltung 3 zur positiven Umwandlungssättigungsberechnung durchgeführte Verarbeitung zur positiven Umwandlungssättigungsberechnung keine Verzweigungsbefehle umfasst, kann der Prozessor eine Hoch-Geschwindigkeits-Pipeline-Verarbeitung ohne das Risiko von Konfusion in der Pipeline durchführen. Durch ein Ausführen solch einer Hoch-Leistungs-Pipeline kann eine Matrixmultiplikation mit einer verbesserten Geschwindigkeit durchgeführt werden.
  • Da eine Verarbeitung zur positiven Umwandlungssättigungsberechnung ohne ein Installieren einer spezialisierten Schaltung für Matrixmultiplikation durchgeführt wird, gibt es keinen Verlust bei der Vielseitigkeit des Prozessors. Dementsprechend, sollte ein Anwender wünschen, den Prozessor gemäß eines Original-Dekomprimierungs-Verarbeitungsprogramms zu steuern, ist dies nach wie vor möglich.
  • Anwendungsbeispiel für die erste Ausführungsform
  • In diesem Beispiel wird eines der Datenregister D0 bis D2 als die Leseadresse für die Verarbeitung zur positiven Umwandlungssättigungsberechnung gekennzeichnet, gemäß dem Befehl zur positiven Umwandlungssättigungsberechnung "MCSST", und das Summenprodukt-Ergebnisregister 6 wird als die Speicheradresse für die Berechnung gekennzeichnet. In diesem Beispiel wird das Befehlsformat für den Befehl zur positiven Umwandlungssättigungsberechnung "MCSST" in Fig. 13 gezeigt. Wie in Fig. 13 gezeigt ist, hat der Befehl zur positiven Umwandlungssättigungsberechnung "MCSST" ein Anzeigefeld für eine Leseadresse, das zu einem Wert gesetzt werden kann, der einer von "11", "00", "10" und "01" ist, und dabei das Summenprodukt-Ergebnisregister 6, das Datenregister D0, das Datenregister D1 oder das Datenregister D2 kennzeichnen.
  • Durch Schreiben eines von "11", "00", "10" und "01" in das Anzeigefeld für eine Speicheradresse wird eines von dem Summenprodukt-Ergebnisregister 6, dem Datenregister D0, dem Datenregister D1 und dem Datenregister D2 als die Speicheradresse gekennzeichnet.
  • Das Befehlsformat dieses Befehls zur positiven Umwandlungssättigungsberechnung "MCSST" wurde berichtigt, sodass die interne Konstruktion der Operationsausführungsvorrichtung 14, die in Fig. 4 gezeigt ist, ebenso leicht geändert ist, wie in Fig. 14 gezeigt ist. Die Änderungen in der Operationsausführungsvorrichtung 14, die in Fig. 14 gezeigt sind, sind die Hinzufügung der Pfade C6 bis C8 und des Selektors 30.
  • Der Pfad C6 ist ein Pfad zum Transferieren des gehaltenen Werts des Datenregisters D0, des Datenregisters D1 oder des Datenregisters D2 auf dem zweiten internen Bus 16 zu der Schaltung 3 zur positiven Umwandlungssättigungsberechnung.
  • Auf dieselbe Art und Weise ist der Pfad C7 ein Pfad zum Transferieren des gehaltenen Werts des Datenregisters D0, des Datenregisters D1 oder des Datenregisters D2 auf dem ersten internen Bus 15 zu der Schaltung 3 zur positiven Umwandlungssättigungsberechnung.
  • Der Selektor 30 gibt einen der gehaltenen Werte des Datenregisters D0, des Datenregisters D1 oder des Datenregisters D2, der auf dem Pfad C6 oder C7 transferiert wird, oder den gehaltenen Wert des Summenprodukt-Ergebnisregisters 6 an den Komparator 22 in der Schaltung 3 zur positiven Umwandlungssättigungsberechnung, beruhend auf einer Anzeige des Speicheradressfelds in dem Befehl zur positiven Umwandlungssättigungsberechnung "MCSST", aus.
  • Der Pfad C8 ist ein Pfad zum Transferieren des Verarbeitungsergebnisses der Schaltung 3 zur positiven Umwandlungssättigungsberechnung von dem Datenbus 18, zu dem es von der Schaltung 3 zur positiven Umwandlungssättigungsberechnung über den Pfad C4 transferiert wurde, zu dem Summenprodukt-Ergebnisregister 6.
  • Durch Ausführen der oben beschriebenen, einfachen Addition kann die Arbeitsweise des Befehls zur positiven Umwandlungssättigungsberechnung "MCSST" in der vorliegenden Ausführungsform erweitert werden.
  • Zweite Ausführungsform
  • Die zweite Ausführungsform der vorliegenden Erfindung führt eine Verarbeitung zur positiven Umwandlungssättigungsberechnung für ein Multiplikationsergebnis aus, wenn eine Multiplikation von der ALU-Schaltung 2 durchgeführt wird. Um eine Verarbeitung zur positiven Umwandlungssättigungsberechnung für ein Multiplikationsergebnis durchzuführen, ist die zweite Ausführungsform wie in Fig. 15 gezeigt aufgebaut, sodass die Schaltung 3 zur positiven Umwandlungssättigungsberechnung über den Pfad P3 mit der Ausgangsstufe der ALU-Schaltung 2 verbunden ist, um die Schaltung 3 zur positiven Umwandlungssättigungsberechnung in die Lage zu versetzen, eine Verarbeitung zur positiven Umwandlungssättigungsberechnung an den Multiplikationsergebnissen, die von der ALU-Schaltung 2 ausgegeben werden, durchzuführen. Um die Schaltung 3 zur positiven Umwandlungssättigungsberechnung zu aktivieren, umfasst das in dem ROM 11 der vorliegenden Ausführungsform gespeicherte Dekomprimierungs-Verarbeitungsprogramm ebenso den "MULBSST Dm, Dn"-Befehl, der unten beschrieben ist.
  • Ein "MULBSST Dm, Dn"-Befehl ist ein Multiplikationsbefehl, der anzeigt, dass das Multiplikationsergebnis weiterhin einer Verarbeitung zur positiven Umwandlungssättigungsberechnung unterworfen werden soll. In anderen Worten, eine Multiplikation wird durchgeführt unter Verwendung der niedrigeren 8 Bit des Dm-Registers und des Dn-Registers und die Schaltung 3 zur positiven Umwandlungssättigungsberechnung wird dann angewiesen, eine Verarbeitung zur positiven Umwandlungssättigungsberechnung an dem codierten 16-Bit Multiplikationsergebnis durchzuführen.
  • Fig. 16 zeigt das Befehlsformat des Multiplikationsbefehls mit einer Funktion zur positiven Umwandlungssättigungsberechnung (positive conversion saturation calculation function multiplication instruction) "MULBSST Dm, Dn". Wie in Fig. 16 gezeigt ist, umfasst dieser Multiplikationsbefehl mit einer Funktion zur positiven Umwandlungssättigungsberechnung "MULBSST Dm, Dn" ein 1-Bit Feld zum Anzeigen des Berechnungsinhalts einer elementaren Operation, ein 2-Bit Feld zum Anzeigen der Leseadresse des Multiplikators, ein 2-Bit Feld zum Anzeigen der Leseadresse des Multiplikanden und ein 2-Bit Feld zum Anzeigen der Speicheradresse für das Ergebnis der Verarbeitung zur positiven Umwandlungssättigungsberechnung.
  • Durch Schreiben eines von "01", "10" und "11" in das Verarbeitungsfeld zur positiven Umwandlungssättigungsberechnung ist es möglich, zu spezifizieren, dass die Verarbeitung zur positiven Umwandlungssättigungsberechnung mit einer Rundungsbreite einer 24-Bit positiven Zahl, einer 16-Bit positiven Zahl oder einer 8-Bit positiven Zahl erfolgt.
  • Durch Schreiben eines von "00", "01", "10" und "11" in das Anzeigefeld für eine Multiplikatorleseadresse und das Anzeigefeld für eine Multiplikandenleseadresse kann irgend eines von dem Datenregister D0, dem Datenregister D1, dem Datenregister D2 und dem Summenprodukt-Ergebnisregister 6 als das Leseadressregister für den Multiplikator Fij und den Multiplikanden Gji gekennzeichnet werden.
  • Beim Ausführen des Multiplikationsbefehls mit einer Funktion zur positiven Umwandlungssättigungsberechnung "MULBSST Dm, Dn" gibt die Registerdatei 1 die gehaltenen Werte der Register, mit den von dem ersten und zweiten Operanden gekennzeichneten Registernamen, aus. Die ALU-Schaltung 2 multipliziert dann die Werte der Register Dm und Dn und gibt das Multiplikationsergebnis aus. Dieselbe Verarbeitung zur positiven Umwandlungssättigungsberechnung wie in der ersten Ausführungsform wird dann durchgeführt an dem Multiplikationsergebnis, durch die Schaltung 3 zur positiven Umwandlungssättigungsberechnung, und das Ergebnis der Verarbeitung zur positiven Umwandlungssättigungsberechnung wird in dem Register gespeichert, das von dem zweiten Operanden des Multiplikationsbefehls mit einer Funktion zur positiven Umwandlungssättigungsberechnung gekennzeichnet wird.
  • Das Folgende ist eine Erläuterung der Operation des obigen Prozessors, beruhend auf einer Matrixmultiplikationsunterroutine. Zuerst wird ein Transferbefehl, der in der Matrixmultiplikationsunterroutine enthalten ist, in den Befehlspuffer des Decoders 13 von der Befehlsabrufschaltung 12 geschrieben und der abgerufene Transferbefehl wird von dem Decoder 13 decodiert. Als ein Ergebnis wird das erste Zeilen-, erste Spaltenelement (F11) der komprimierten Daten Fij, die aus 8·8 Matrixelementen zusammengesetzt sind, die in dem RAM 10 gespeichert sind, in das Datenregister D0 transferiert und das erste Zeilen-, erste Spaltenelement (G11) der Koeffizientendaten Gji, die ebenfalls aus 8·8 Matrixelementen zusammengesetzt sind, wird in das Datenregister D1 transferiert.
  • In der Matrixmultiplikationsunterroutine folgt der Multiplikationsbefehl mit einer Funktion zur positiven Umwandlungssättigungsberechnung "MULBSST D0, D1" dem Transferbefehl, sodass dieser Befehl als Nächstes von der Befehlsabrufschaltung 12 abgerufen wird und in den Befehlspuffer des Decoders 13 geschrieben wird, vor einer Dekodierung durch den Decoder 13. Wenn der Decoder 13 den Multiplikationsbefehl mit einer Funktion zur positiven Umwandlungssättigungsberechnung "MULBSST D0, D1" decodiert, werden die Werte F11 und G11, die von dem Datenregister D0 und dem Datenregister D1 gehalten werden, zu dem ersten internen Bus 15 und dem zweiten internen Bus 16 transferiert.
  • Wenn der Multiplikationsbefehl mit einer Funktion zur positiven Umwandlungssättigungsberechnung "MULBSST D0, D1" decodiert wird, werden die gehaltenen Werte F11, G11 der Leseadressbefehle, die von dem ersten und zweiten Operanden des Multiplikationsbefehls mit einer Funktion zur positiven Umwandlungssättigungsberechnung "MULBSST D0, D1" gekennzeichnet werden, auf den ersten internen Bus 15 und den zweiten internen Bus 16 transferiert, sodass der gehaltene Wert des Datenregisters D0 und der gehaltene Wert des Datenregisters D1 von der ALU-Schaltung 2 multipliziert werden, wobei das Multiplikationsergebnis auf den Pfad P1 ausgegeben wird. Hier tritt jedoch ein Bitfehler für F11 auf, sodass das Multiplikationsergebnis zu "0x0000_78FF" wird, was ein Wert ist, der nicht unter Verwendung eines Bytes ausgedrückt werden kann.
  • Wenn der Decoder 13 den Multiplikationsbefehl mit einer Funktion zur positiven Umwandlungssättigungsberechnung "MULBSST D0, D1" decodiert hat, aktiviert der Decoder 13 ebenso die Schaltung 3 zur positiven Umwandlungssättigungsberechnung. Als ein Ergebnis vergleicht der Komparator 22 die Größe des gehaltenen Werts des Summenprodukt- Ergebnisregisters 6 mit der 32-Bit codierten Ganzzahl "0x0000_00FF". Da hier der gehaltene Wert des Summenprodukt-Ergebnisregisters 6 den Maximalwert "0x0000_00FF" für den gehaltenen Wert des Summenprodukt-Ergebnisregisters 6 übersteigt, gibt der Komparator 22 den logischen Wert "1" an den Multiplexer 24 aus.
  • Die Polaritätsentscheidungseinheit 23 entscheidet, ob das 16. Bit des Wertes, der von dem Summenprodukt-Ergebnisregister 6 gehalten wird, "AN" ist. Dies bezieht sich auf eine Entscheidung, ob der Wert, der von dem Summenprodukt-Ergebnisregister 6 gehalten wird, eine negative Zahl ist. Wenn in binär ausgedrückt, ist der gehaltene Wert "0x0000_78FF" "0000_0000 0000_0000 0111_1000 1111_1111", sodass gesehen werden kann, dass das 16. Bit eine "1" ist. Als ein Ergebnis gibt die Polaritätsentscheidungseinheit 23 den logischen Wert "0" zu dem Multiplexer 24 aus.
  • In dem vorliegenden Fall erzeugt der Konstant-Generator 21 den Maximalwert "0x0000_00FF" und der Null-Generator 25 erzeugt den Null-Wert "0x0000_0000". Der Multiplexer 24 wählt einen von dem Maximalwert, dem Null-Wert und dem gehaltenen Wert des Summenprodukt-Ergebnisregisters 6 aus und gibt diesen aus, in Übereinstimmung mit der Kombination der logischen Werte, die von dem Komparator 22 und der Polaritätsentscheidungseinheit 23 ausgegeben werden. In dem vorliegenden Beispiel ist die Ausgabe des Komparators 22 "1" und die Ausgabe der Polaritätsentscheidungseinheit 23 ist "0", sodass der Multiplexer 24 den Maximalwert "0x0000_00FF", der von dem Konstant-Generator 21 erzeugt wird, zu dem Datenbus 18 ausgibt.
  • Gemäß der Steuerung durch den Decoder 13 wird der an den Datenbus 18 ausgegebene Wert zu dem Datenregister D0 transferiert, das durch den Operanden des Befehls zur positiven Umwandlungssättigungsberechnung "MULBSST. D0" gekennzeichnet wird, und wird von dem Datenregister D0 gehalten.
  • Mittels der zweiten Ausführungsform, die oben beschrieben wurde, wird ein Berechnungsbefehl bereitgestellt, der Sättigungsberechnungsverarbeitung und positive Umwandlungsverarbeitung an dem codierten Berechnungsergebnis durchführt, sodass drei Typen von Verarbeitung, zusammengesetzt aus Berechnungsverarbeitung, positiver Umwandlungsverarbeitung und Sättigungsberechnungsverarbeitung, in einem Schritt durchgeführt werden können, was bedeutet, dass eine Verarbeitung zur positiven Umwandlungssättigungsberechnung in demselben Schritt durchgeführt wird, wie die Berechnungsverarbeitung. Als ein Ergebnis wird die effektive Anzahl der Ausführungsschritte, die von der Verarbeitung zur positiven Umwandlungssättigungsberechnung benötigt werden, auf Null reduziert.
  • Es sollte hier fest gehalten werden, dass diese zweite Ausführungsform beschrieben wurde als einen Rundungsprozess für eine uncodierte 8-Bit-Breite durchführend, obwohl die maximale Zahl frei zu irgend einer positiven Ganzzahl gesetzt werden kann.
  • Obwohl die vorliegende Erfindung vollständig anhand von Beispielen beschrieben wurde in Bezug auf die beiliegenden Zeichnungen, ist fest zu halten, dass verschiedene Änderungen und Modifizierungen dem Fachmann ersichtlich sein werden. Somit sollten solche Änderungen und Modifizierungen, solange sie nicht den Schutzbereich der vorliegenden Erfindung verlassen, als darin enthalten verstanden werden.

Claims (20)

1. Prozessor, der Befehle in einer Befehlssequenz decodiert und ausführt, wobei der Prozessor umfasst:
eine Erkennungseinrichtung, die erkennt, ob ein zu decodierender Befehl ein vorgegebener Befehl ist; und
eine Rundungsseinrichtung (3), die, wenn die Erkennungseinrichtung erkennt, dass der Befehl der vorgegebene Befehl ist, eine vorzeichenbehaftete m-Bit- Ganzzahl, die bei einem Operanden gespeichert ist, der durch den vorgegebenen Befehl festgelegt wird, auf einen Ausgangswert rundet, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, wobei s kleiner ist als m,
wobei der Wert von s durch den Inhalt eines Feldes des vorgegebenen Befehls angezeigt wird, und wobei die Rundungseinrichtung den Ausgangswert auf der Basis des Wertes von s erzeugt.
2. Prozessor nach Anspruch 1, wobei der vorgegebene Befehl eine Transferadresse eines von der Rundungseinrichtung (3) gerundeten Wertes enthält und die Rundseinrichtung enthält:
eine erste Entscheidungsschaltung, die, wenn die Erkennungseinrichtung erkennt, dass der Befehl der vorgegebene Befehl ist, entscheidet, ob eine vorzeichenbehaftete m-Bit-Ganzzahl, die bei dem Operanden gespeichert ist, eine negative Zahl ist; und
eine zweite Entscheidungsschaltung, die, wenn die Erkennungseinrichtung erkennt, dass der Befehl der vorgegebene Befehl ist, entscheidet, ob eine vorzeichenbehaftete m-Bit-Ganzzahl, die bei dem Operanden gespeichert ist, einen Maximalwert übersteigt, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, und
wobei der Prozessor des Weiteren umfasst:
eine Transfereinrichtung (24), die, auf der Kombination entsprechender Entscheidungsergebnisse der ersten Entscheidungsschaltung und der zweiten Entscheidungsschaltung basierend, einen ersten vorgegebenen Wert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, einen zweiten vorgegebenen Wert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, oder einen Wert, der bei dem Operanden gespeichert ist, zu der Transferadresse für das Rundungsergebnis transferiert.
3. Prozessor nach Anspruch 2,
wobei die Transfereinrichtung (24) einen Wert Null, der als eine s-Bit-Ganzzahl ausgedrückt wird, als den ersten vorgegebenen Wert zu der Transferadresse für das Rundungsergebnis transferiert, wenn die erste Entscheidungsschaltung entscheidet, dass die vorzeichenbehaftete m-Bit-Ganzzahl, die bei dem Operanden gespeichert ist, eine negative Zahl ist;
wobei die Transfereinrichtung (24) den Maximalwert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, als einen zweiten vorgegebenen Wert zu der Transferadresse für das Rundungsergebnis transferiert, wenn die zweite Entscheidungsschaltung entscheidet, dass die vorzeichenbehaftete m-Bit-Ganzzahl, die bei dem Operanden gespeichert ist, den Maximalwert übersteigt, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, und
wobei die Transfereinrichtung (24) den Wert, der bei dem Operanden gespeichert ist, zu der Transferadresse für das Rundungsergebnis transferiert, wenn die erste Entscheidungsschaltung entscheidet, dass die vorzeichenbehaftete m-Bit-Ganzzahl, die bei dem Operanden gespeichert ist, keine negative Zahl ist, und die zweite Entscheidungsschaltung entscheidet, dass die vorzeichenbehaftete m-Bit- Ganzzahl, die bei dem Operanden gespeichert ist, den Maximalwert nicht übersteigt.
4. Prozessor nach Anspruch 3,
wobei die erste Entscheidungsschaltung eine Entscheidungseinheit (23) enthält, die entscheidet, ob ein Vorzeichenbit einer s-Bit-Ganzzahl in der vorzeichenbehafteten n-Bit-Ganzzahl, die bei dem Operanden gespeichert ist, an oder aus ist, und
wobei die zweite Entscheidungsschaltung einen Rechner (22) enthält, der einen maximalen positiven Wert für eine s-Bit-Ganzzahl von der vorzeichenbehafteten m-Bit-Ganzzahl subtrahiert, die bei dem Operanden gespeichert ist.
5. Prozessor nach Anspruch 4, wobei m-Bit 32 Bit groß ist und der vorgegebene Befehl ein Anzeigefeld enthält, das 8 Bit, 16 Bit oder 24 Bit als s-Bit anzeigt,
wobei die Entscheidungseinheit (23) der ersten Entscheidungsschaltung entsprechend einem Inhalt des Anzeigefeldes, das in dem vorgegebenen Befehl enthalten ist, das ächte, sechzehnte oder vierundzwanzigste Bit von der Seite eines niedrigstwertigen Bits her als das Vorzeichenbit prüft; und
wobei der Rechner (22) entsprechend einem Inhalt des Anzeigefeldes, das in dem vorgegebenen Befehl enthalten ist, 18, 16 oder 24 als einen Wert von s bestimmt.
6. Prozessor nach Anspruch 2, der des Weiteren ein spezialisiertes Register (6) umfasst,
wobei der vorgegebene Befehl das spezialisierte Register (6) als den Operanden festlegt, und
die Transfereinrichtung (24) den Wert, der in dem spezialisierten Register (6) gespeichert ist, zu der Transferadresse für das Rundungsergebnis transferiert,
wenn die erste Entscheidungsschaltung entscheidet, dass eine vorzeichenbehaftete m-Bit-Ganzzahl, die in dem spezialisierten Register gespeichert ist, keine negative Zahl ist, und die zweite Entscheidungsschaltung entscheidet, dass die vorzeichenbehaftete m-Bit-Ganzzahl, die in dem spezialisierten Register gespeichert ist, den Maximalwert nicht übersteigt.
7. Prozessor nach Anspruch 6, der des Weiteren eine Registerdatei (1) umfasst, die aus einer Vielzahl allgemeiner Register besteht,
wobei der vorgegebene Befehl eines der allgemeinen Register in der Registerdatei (1) als eine Transferadresse für ein Rundungsergebnis festlegt, und
wobei die Transfereinrichtung (24) einen ersten vorgegebenen Wert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, oder einen Wert, der in dem spezialisierten Register (6) gespeichert ist, zu dem allgemeinen Register transferiert, das durch den vorgegebenen Befehl festgelegt wird.
8. Prozessor, der Befehle in einer Befehlssequenz decodiert und ausfuhrt, wobei der Prozessor umfasst:
eine erste Erkennungseinrichtung, die erkennt, ob ein zu decodierender Befehl ein Befehl ist, der eine Berechnung durchführt;
eine zweite Erkennungseinrichtung, die erkennt, ob ein zu decodierender Befehl ein Befehl ist, der sowohl eine Berechnung als auch eine Rundung des Berechnungsergebnisses durchführt;
eine Recheneinrichtung (2), die, wenn die erste Erkennungseinrichtung erkennt, dass der Befehl eine Berechnung durchführt, eine Berechnung unter Verwendung einer vorzeichenbehafteten m-Bit-Ganzzahl durchführt; und
eine Rundungseinrichtung (3), die, wenn die zweite Erkennungseinrichtung den Befehl erkennt, der sowohl eine Berechnung als auch eine Rundung ausführt, ein Ergebnis der Berechnung, die mit einer vorzeichenbehafteten m-Bit-Ganzzahl durchgeführt wird, auf einen Ausgangswert rundet, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, wobei s kleiner ist als m,
wobei der Wert von s durch den Inhalt eines Feldes des Befehls angezeigt wird, der sowohl eine Berechnung als auch eine Rundung durchführt, und wobei die Rundungseinrichtung den Ausgangswert auf der Basis des Wertes von s erzeugt.
9. Prozessor nach Anspruch 8, wobei der Befehl, der sowohl eine Berechnung als auch eine Rundung ausführt, des Weiteren eine Anzeige einer Transferadresse für das Rundungsergebnis enthält,
und wobei die Rundungseinrichtung (3) enthält:
eine erste Entscheidungsschaltung, die, wenn die zweite Erkennungseinrichtung den Befehl erkennt, der sowohl eine Berechnung als auch eine Rundung durchführt, entscheidet, ob das Berechnungsergebnis der Recheneinrichtung (2) eine negative Zahl ist; und
eine zweite Entscheidungsschaltung, die wenn die zweite Erkennungseinrichtung den Befehl erkennt, der sowohl eine Berechnung als auch eine Rundung durchführt, entscheidet, ob das Berechnungsergebnis der Recheneinrichtung (2) einen Maximalwert übersteigt, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, und
wobei der Prozessor des Weiteren umfasst:
eine Transfereinrichtung (24), die, auf der Kombination entsprechender Entscheidungsergebnisse der ersten Entscheidungsschaltung und der zweiten Entscheidungsschaltung basierend, einen ersten vorgegebenen Wert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, einen zweiten vorgegebenen Wert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, oder das Berechnungsergebnis der Recheneinrichtung (2) zu der Transferadresse transferiert.
10. Prozessor nach Anspruch 9,
wobei die Transfereinrichtung (24) einen Wert Null, der als eine s-Bit-Ganzzahl ausgedrückt wird, als den ersten vorgegebenen Wert zu der Transferadresse transferiert, wenn die erste Entscheidungsschaltung entscheidet, dass das Berechnungsergebnis der Recheneinrichtung (2) eine negative Zahl ist,
wobei die Transfereinrichtung (24) den Maximalwert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, als den zweiten vorgegebenen Wert zu der Transferadresse transferiert, wenn die zweite Entscheidungsschaltung entscheidet, dass das Berechnungsergebnis der Recheneinrichtung (2) den Maximalwert übersteigt, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird; und
wobei die Transfereinrichtung (24) das Berechnungsergebnis der Recheneinrichtung (2) zu der Transferadresse für das Rundungsergebnis transferiert, wenn die erste Entscheidungsschaltung entscheidet, dass das Berechnungsergebnis der Recheneinrichtung (2) keine negative Zahl ist, und die zweite Entscheidungsschaltung entscheidet, dass das Berechnungsergebnis der Recheneinrichtung (2) den Maximalwert nicht übersteigt.
11. Prozessor nach Anspruch 10,
wobei die erste Entscheidungsschaltung eine Entscheidungseinheit (23) enthält, die entscheidet, ob ein Vorzeichenbit des Berechnungsergebnisses der Recheneinrichtung (2) an oder aus ist, und
wobei die zweite Entscheidungsschaltung einen Rechner (22) enthält, der einen maximalen positiven Wert für eine vorzeichenlose s-Bit-Ganzzahl von dem Berechnungsergebnis der Recheneinrichtung (2) subtrahiert.
12. Prozessor nach Anspruch 11, wobei m-Bit 32 Bit groß ist und jeder Berechnungsbefehl ein Anzeigefeld enthält, das 8 Bit, 16 Bit oder 24 Bit als s-Bit anzeigt,
wobei die Entscheidungseinheit (23) der ersten Entscheidungsschaltung entsprechend einem Inhalt des Anzeigefeldes, das in dem Berechnungsbefehl enthalten ist, ein achtes, sechzehntes und vierundzwanzigstes Bit von einem niedrigstwertigen Bit her als das Vorzeichenbit prüft, und
wobei der Rechner (22) entsprechend einem Inhalt des Anzeigefeldes, das in dem Berechnungsbefehl enthalten ist, 8, 16 oder 24 als einen Wert von s bestimmt.
13. Prozessor nach Anspruch 12, der des Weiteren eine Registerdatei (1) umfasst, die aus einer Vielzahl allgemeiner Register besteht,
wobei jeder Befehl, der sowohl eine Berechnung als auch eine Rundung durchführt, eines der allgemeinen Register in der Registerdatei (1) als eine Transferadresse für das Rundungsergebnis festlegt.
14. Maschinenlesbares Medium, das ein Programm speichert, das einen Prozessor in die Lage versetzt, einen Rundungsprozess auszuführen, der umfasst:
einen Erkennungsschritt, in dem der Prozessor angewiesen wird, zu erkennen, ob ein von dem Prozessor zu decodierender Befehl in einer Befehlssequenz ein vorgegebener Befehl ist; und
einen Rundungsschritt, in dem der Prozessor, wenn der Prozessor erkennt, dass der Befehl der vorgegebene Befehl ist, angewiesen wird, eine vorzeichenbehaftete m-Bit-Ganzzahl, die bei einem Operanden gespeichert ist, der von dem vorgegebenen Befehl festgelegt wird, auf einen Ausgangswert zu runden, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, wobei s kleiner ist als m,
wobei der Wert von s durch den Inhalt eines Feldes des vorgegebenen Befehls angezeigt wird und wobei der Rundungsschritt den Ausgangswert auf der Basis des Wertes von s erzeugt.
15. Programmaufzeichnungsmedium, das einen Prozessor in die Lage versetzt, Befehle in einer Befehlssequenz zu decodieren und auszuführen, und das umfasst:
eine erste Anweisung, mit der der Prozessor angewiesen wird, zu erkennen, ob ein zu decodierender Befehl ein Befehl zum Durchführen einer Berechnung ist;
eine zweite Anweisung, mit der der Prozessor angewiesen wird, festzustellen, ob ein zu decodierender Befehl ein Befehl ist, der sowohl eine Berechnung als auch eine Rundung des Berechnungsergebnisses durchführt;
eine dritte Anweisung, mit der der Prozessor, wenn der Prozessor erkennt, dass der Befehl eine Berechnung durchführt, angewiesen wird, eine Berechnung unter Verwendung einer vorzeichenbehafteten m-Bit-Ganzzahl durchzuführen, und
eine vierte Anweisung, mit der der Prozessor, wenn der Prozessor einen Befehl erkennt, der sowohl eine Berechnung als auch eine Rundung durchführt, angewiesen wird, ein Ergebnis der Berechnung, die mit einer vorzeichenbehafteten m-Bit-Ganzzahl durchgeführt wird, auf einen Ausgangswert zu runden, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, wobei s kleiner ist als m,
wobei der Wert von s durch den Inhalt eines Feldes des Befehls angezeigt wird, der sowohl eine Berechnung als auch eine Rundung durchführt, und wobei die vierte Anweisung den Ausgangswert auf der Basis des Wertes von s erzeugt.
16. Programmaufzeichnungsmedium nach Anspruch 15, das des Weiteren eine fünfte Anweisung enthält, mit der der Prozessor angewiesen wird, ein Register als eine Transferadresse für ein Rundungsergebnis festzulegen.
17. Programmaufzeichnungsmedium nach Anspruch 16, wobei die vierte Anweisung enthält:
einen ersten Entscheidungsschritt, in dem, wenn der Prozessor den Befehl erkennt, der sowohl eine Berechnung als auch ein Rundung durchführt, entschieden wird, ob das Berechnungsergebnis eine negative Zahl ist; und
einen zweiten Entscheidungsschritt, in dem, wenn der Prozessor den Befehl erkennt, der sowohl eine Berechnung als auch eine Rundung durchführt, entschieden wird, ob das Berechnungsergebnis einen Maximalwert übersteigt, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, und
einen Transferschritt, in dem der Prozessor angewiesen wird, auf der Kombination entsprechender Entscheidungsergebnisse des ersten Entscheidungsschrittes und des zweiten Entscheidungsschrittes basierend, einen ersten vorgegebenen Wert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, einen zweiten vorgegebenen Wert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, oder das Berechnungsergebnis zu der Transferadresse zu transferieren.
18. Programmaufzeichnungsmedium nach Anspruch 17, wobei der Prozessor mit dem Transferschritt angewiesen wird, einen Wert Null, der als eine s-Bit- Ganzzahl ausgedrückt wird, als den ersten vorgegebenen Wert zu der Transferadresse zu transferieren, wenn in dem ersten Entscheidungsschritt entschieden wird, dass das Berechnungsergebnis eine negative Zahl ist;
wobei der Prozessor in dem Transferschritt angewiesen wird, den Maximalwert, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird, als den zweiten vorgegebenen Wert zu der Transferadresse zu transferieren, wenn in dem zweiten Entscheidungsschritt entschieden wird, dass das Berechnungsergebnis den Maximalwert übersteigt, der als eine vorzeichenlose s-Bit-Ganzzahl ausgedrückt wird; und
wobei der Prozessor in dem Transferschritt angewiesen wird, das Berechnungsergebnis zu der Transferadresse für das Rundungsergebnis zu transferieren, wenn in dem ersten Entscheidungsschritt entschieden wird, dass das Berechnungsergebnis keine negative Zahl ist und in dem zweiten Entscheidungsschritt entschieden wird, dass das Berechnungsergebnis den Maximalwert nicht übersteigt.
19. Programmaufzeichnungsmedium nach Anspruch 18, wobei der Prozessor in dem ersten Entscheidungsschritt angewiesen wird, zu bestimmen, ob ein Vorzeichenbit des Berechnungsergebnisses ein oder aus ist, und
wobei der Prozessor in dem zweiten Entscheidungsschritt angewiesen wird, einen maximalen positiven Wert für eine vorzeichenlose s-Bit-Ganzzahl von dem Berechnungsergebnis zu subtrahieren.
20. Programmaufzeichnungsmedium nach Anspruch 19, wobei m-Bit 32 Bit groß ist und die vierte Anweisung ein Anzeigefeld enthält, das 8 Bit, 16 Bit oder 24 Bit als s-Bit anzeigt,
wobei der Prozessor in dem ersten Entscheidungsschritt angewiesen wird, entsprechend einem Inhalt des Anzeigefeldes ein achtes, sechzehntes oder vierundzwanzigstes Bit von einem niedrigstwertigen Bit her als das Vorzeichenbit zu prüfen,
wobei der Prozessor in dem zweiten Entscheidungsschritt angewiesen wird, entsprechend einem Inhalt des Anzeigefeldes 8, 16 oder 24 als einen Wert von s zu bestimmen.
DE69720922T 1996-11-29 1997-11-28 Prozessor mit verbessertem Rundungsprozess Expired - Lifetime DE69720922T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP32042396 1996-11-29

Publications (2)

Publication Number Publication Date
DE69720922D1 DE69720922D1 (de) 2003-05-22
DE69720922T2 true DE69720922T2 (de) 2003-11-13

Family

ID=18121299

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69720922T Expired - Lifetime DE69720922T2 (de) 1996-11-29 1997-11-28 Prozessor mit verbessertem Rundungsprozess

Country Status (7)

Country Link
US (5) US5974540A (de)
EP (2) EP1306752A1 (de)
JP (1) JP3790619B2 (de)
KR (1) KR100455011B1 (de)
CN (2) CN1210647C (de)
DE (1) DE69720922T2 (de)
TW (1) TW448400B (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1306752A1 (de) 1996-11-29 2003-05-02 Matsushita Electric Industrial Co., Ltd. Prozessor mit verbessertem Rundungsprozess
JP3412462B2 (ja) * 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
GB2330226B (en) * 1997-08-30 2000-12-27 Lg Electronics Inc Digital signal processor
US6182105B1 (en) * 1998-08-27 2001-01-30 Lucent Technologies Inc. Multiple-operand addition with intermediate saturation
US6535900B1 (en) * 1998-09-07 2003-03-18 Dsp Group Ltd. Accumulation saturation by means of feedback
US6529930B1 (en) * 1998-11-16 2003-03-04 Hitachi America, Ltd. Methods and apparatus for performing a signed saturation operation
GB2343970A (en) * 1998-11-20 2000-05-24 Advanced Risc Mach Ltd Arithmetic operations in a data processing system
US6532486B1 (en) * 1998-12-16 2003-03-11 Texas Instruments Incorporated Apparatus and method for saturating data in register
US7035892B2 (en) * 1999-12-10 2006-04-25 Broadcom Corporation Apparatus and method for reducing precision of data
US6704820B1 (en) * 2000-02-18 2004-03-09 Hewlett-Packard Development Company, L.P. Unified cache port consolidation
US6748521B1 (en) * 2000-02-18 2004-06-08 Texas Instruments Incorporated Microprocessor with instruction for saturating and packing data
US6888897B1 (en) 2000-04-27 2005-05-03 Marvell International Ltd. Multi-mode iterative detector
US7184486B1 (en) 2000-04-27 2007-02-27 Marvell International Ltd. LDPC encoder and decoder and method thereof
US7072417B1 (en) 2000-06-28 2006-07-04 Marvell International Ltd. LDPC encoder and method thereof
US6965652B1 (en) 2000-06-28 2005-11-15 Marvell International Ltd. Address generator for LDPC encoder and decoder and method thereof
US7000177B1 (en) 2000-06-28 2006-02-14 Marvell International Ltd. Parity check matrix and method of forming thereof
US7099411B1 (en) 2000-10-12 2006-08-29 Marvell International Ltd. Soft-output decoding method and apparatus for controlled intersymbol interference channels
JP2003186567A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd マイクロプロセッサ
KR100517971B1 (ko) * 2002-09-07 2005-09-30 엘지전자 주식회사 이동통신 시스템의 고정점 결정장치 및 방법
US7149766B1 (en) * 2002-11-12 2006-12-12 Unisys Corporation Methods for detecting overflow and/or underflow in a fixed length binary field
US7577892B1 (en) 2005-08-25 2009-08-18 Marvell International Ltd High speed iterative decoder
US7861131B1 (en) 2005-09-01 2010-12-28 Marvell International Ltd. Tensor product codes containing an iterative code
JP4832572B2 (ja) * 2007-11-07 2011-12-07 三菱電機株式会社 安全制御装置
JP2010020625A (ja) * 2008-07-11 2010-01-28 Seiko Epson Corp 信号処理プロセッサ及び半導体装置
US8321769B1 (en) 2008-11-06 2012-11-27 Marvell International Ltd. Multi-parity tensor-product code for data channel
CN107861756B (zh) * 2011-12-22 2022-04-15 英特尔公司 具有独立进位链的加法指令
US10474463B2 (en) * 2011-12-23 2019-11-12 Intel Corporation Apparatus and method for down conversion of data types
CN104133806A (zh) * 2014-07-31 2014-11-05 杭州康芯电子有限公司 一种十六位嵌入式芯片软核
CN107315574B (zh) * 2016-04-26 2021-01-01 安徽寒武纪信息科技有限公司 一种用于执行矩阵乘运算的装置和方法
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5856032A (ja) * 1981-09-29 1983-04-02 Toshiba Corp パイプライン演算装置
JPH0774989B2 (ja) * 1988-01-18 1995-08-09 株式会社東芝 符号変換回路
JP2600293B2 (ja) * 1988-06-10 1997-04-16 日本電気株式会社 オーバーフロー補正回路
JPH04309123A (ja) * 1991-04-08 1992-10-30 Nec Corp 冗長2進演算回路
US5235533A (en) * 1992-05-11 1993-08-10 Intel Corporation Store rounding in a floating point unit
JPH06175821A (ja) * 1992-12-10 1994-06-24 Fujitsu Ltd 演算装置
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
KR0179969B1 (ko) 1993-09-01 1999-05-01 김광호 안테나 입력신호의 게인 조정방법
JP3487903B2 (ja) * 1993-11-12 2004-01-19 松下電器産業株式会社 演算装置及び演算方法
US5448509A (en) * 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
JP2591463B2 (ja) * 1993-12-27 1997-03-19 日本電気株式会社 リミッタ装置
US5642301A (en) * 1994-01-25 1997-06-24 Rosemount Inc. Transmitter with improved compensation
JP3105738B2 (ja) 1994-06-10 2000-11-06 日本電気株式会社 情報処理装置
JP3651698B2 (ja) 1995-04-28 2005-05-25 株式会社アサヒオプティカル プラスチックレンズの製造方法
IL116210A0 (en) * 1994-12-02 1996-01-31 Intel Corp Microprocessor having a compare operation and a method of comparing packed data in a processor
US5801977A (en) * 1995-01-17 1998-09-01 Hewlett-Packard Company System and method for clipping integers
GB2300054A (en) 1995-01-17 1996-10-23 Hewlett Packard Co Clipping integers
US5687359A (en) * 1995-03-31 1997-11-11 International Business Machines Corporation Floating point processor supporting hexadecimal and binary modes using common instructions with memory storing a pair of representations for each value
US5696709A (en) * 1995-03-31 1997-12-09 International Business Machines Corporation Program controlled rounding modes
JPH0997178A (ja) 1995-09-29 1997-04-08 Matsushita Electric Ind Co Ltd 飽和演算処理装置および方法
US5812439A (en) * 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
JP3701401B2 (ja) 1996-08-12 2005-09-28 株式会社ルネサステクノロジ 飽和演算命令を有するマイクロプロセッサ
EP1306752A1 (de) * 1996-11-29 2003-05-02 Matsushita Electric Industrial Co., Ltd. Prozessor mit verbessertem Rundungsprozess
US6058410A (en) * 1996-12-02 2000-05-02 Intel Corporation Method and apparatus for selecting a rounding mode for a numeric operation
US6029184A (en) * 1997-06-17 2000-02-22 Sun Microsystems, Inc. Method of performing unsigned operations with signed instructions in a microprocessor
US5870320A (en) * 1997-06-23 1999-02-09 Sun Microsystems, Inc. Method for reducing a computational result to the range boundaries of a signed 16-bit integer in case of overflow

Also Published As

Publication number Publication date
USRE39121E1 (en) 2006-06-06
TW448400B (en) 2001-08-01
USRE43145E1 (en) 2012-01-24
CN1210647C (zh) 2005-07-13
US5974540A (en) 1999-10-26
KR19980042913A (ko) 1998-08-17
EP0845741B1 (de) 2003-04-16
KR100455011B1 (ko) 2004-12-17
CN1193771A (zh) 1998-09-23
CN1512317A (zh) 2004-07-14
US6237084B1 (en) 2001-05-22
JP3790619B2 (ja) 2006-06-28
DE69720922D1 (de) 2003-05-22
USRE43729E1 (en) 2012-10-09
EP1306752A1 (de) 2003-05-02
EP0845741A2 (de) 1998-06-03
CN100356316C (zh) 2007-12-19
EP0845741A3 (de) 2000-11-29
JPH10214186A (ja) 1998-08-11

Similar Documents

Publication Publication Date Title
DE69720922T2 (de) Prozessor mit verbessertem Rundungsprozess
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE69428499T2 (de) Bedingtes Speicherladen von einem Registerpaar
DE69430516T2 (de) Arithmetisch-logische Einheit mit drei Eingängen, die die Summe einer ersten und einer zweiten booleschen Kombination berechnet
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69430510T2 (de) Arithmetik-Logikschaltung mit drei Eingängen
DE69519449T2 (de) Raumzeigersdatenpfad
DE69032891T2 (de) Verfahren und Gerät zur Ausführung mathematischer Funktionen mit Hilfe polynomialer Annäherung und eines Multiplizierers rechteckigen Seitenverhältnisses
DE69622676T2 (de) Datenverarbeitungsanordnung mit Erweiterung des Befehlssatzes
DE60222163T2 (de) Akkumulations-(mac-)einheit für einzelanweisungs-/ mehrfachdaten-(simd-) anweisungen
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE3424962C2 (de)
DE69628325T2 (de) Signalverarbeitungssystem mit multiplizierung- addierungsoperationen
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE69229324T2 (de) Arithmetik-Logik-Einheit
DE602004004101T2 (de) Bearbeitung von message-digest-befehlen
DE3882487T2 (de) Vektorprozessor zur schnellen verarbeitung von rekursiven gleichungen.
DE60032794T2 (de) Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug
DE69324730T2 (de) Multiplizier-Akkumulator
DE112004001648T5 (de) Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
US5625374A (en) Method for parallel interpolation of images
DE69616718T4 (de) Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten
DE69901338T2 (de) Mikroprozessor mit mehreren registersätzen, die den gleichen logischen raum besitzen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: PANASONIC CORP., KADOMA, OSAKA, JP