DE69910245T2 - Datenverarbeitungssystem und -verfahren zur arithmetischen behandlung mehrerer zahlen mit vorzeichen - Google Patents

Datenverarbeitungssystem und -verfahren zur arithmetischen behandlung mehrerer zahlen mit vorzeichen Download PDF

Info

Publication number
DE69910245T2
DE69910245T2 DE69910245T DE69910245T DE69910245T2 DE 69910245 T2 DE69910245 T2 DE 69910245T2 DE 69910245 T DE69910245 T DE 69910245T DE 69910245 T DE69910245 T DE 69910245T DE 69910245 T2 DE69910245 T2 DE 69910245T2
Authority
DE
Germany
Prior art keywords
value
bit
signed
bit field
data
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 - Fee Related
Application number
DE69910245T
Other languages
English (en)
Other versions
DE69910245D1 (de
Inventor
Wilco Dijkstra
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines 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
Priority claimed from GB9825537A external-priority patent/GB2343969A/en
Application filed by ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Application granted granted Critical
Publication of DE69910245D1 publication Critical patent/DE69910245D1/de
Publication of DE69910245T2 publication Critical patent/DE69910245T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/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
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01NINVESTIGATING OR ANALYSING MATERIALS BY DETERMINING THEIR CHEMICAL OR PHYSICAL PROPERTIES
    • G01N33/00Investigating or analysing materials by specific methods not covered by groups G01N1/00 - G01N31/00
    • G01N33/48Biological material, e.g. blood, urine; Haemocytometers
    • G01N33/50Chemical analysis of biological material, e.g. blood, urine; Testing involving biospecific ligand binding methods; Immunological testing
    • G01N33/68Chemical analysis of biological material, e.g. blood, urine; Testing involving biospecific ligand binding methods; Immunological testing involving proteins, peptides or amino acids
    • G01N33/6803General methods of protein analysis not limited to specific proteins or families of proteins
    • G01N33/6842Proteomic analysis of subsets of protein mixtures with reduced complexity, e.g. membrane proteins, phosphoproteins, organelle proteins
    • 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/49994Sign extension
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Molecular Biology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Urology & Nephrology (AREA)
  • Chemical & Material Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Hematology (AREA)
  • Immunology (AREA)
  • Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Cell Biology (AREA)
  • Biotechnology (AREA)
  • Biochemistry (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Microbiology (AREA)
  • Analytical Chemistry (AREA)
  • Medicinal Chemistry (AREA)
  • Food Science & Technology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf ein Datenverarbeitungssystem und ein Verfahren, um eine arithmetische Operation auf einer Mehrzahl von vorzeichenbehafteten Datenwerten durchzuführen und genauer gesagt auf Techniken, welche die Notwendigkeit eliminieren, die arithmetische Operation individuell auf jeden vorzeichenbehafteten Datenwerte anzuwenden.
  • Beschreibung des Standes der Technik
  • Um zu ermöglichen, daß arithmetische Operationen gleichzeitig auf eine Anzahl von Datenwerten angewandt werden, wurden Einzelbefehl-Mehrfachdaten-Befehle (Single Instruction Multiple Data, SIMD) entwickelt, bei denen ein einzelner Befehl auf einen zusammengesetzten, aus einer Anzahl von Feldern bestehenden Datenwert angewandt wird, wobei jedes Feld einen separaten Datenwert enthält.
  • Um solche SIMD-Befehle zu unterstützen, ist es notwendig, spezifische SIMD-Hardware bereitzustellen, um sicherzustellen, daß sich die Datenwerte in jedem Feld des zusammengesetzten Datenwertes nicht gegenseitig während der Anwendung der SIMD-Operation auf dem zusammengesetzten Datenwert beeinflussen. Zum Beispiel ermöglichen es SIMD-Erweiterungen wie die MMX-Hardware und der SA-1500-Koprozessor von Intel Corporation generell, ein breites Register in unabhängige Teilfelder fester Größe zu unterteilen. Zum Beispiel können solche Register 64-Bits breit sein und können demnach acht 8-Bit-Werte, vier 16-Bit-Werte oder zwei 32-Bit-Werte enthalten. SIMD-Befehle, die auf diese Register einwirken bzw. operieren, sind üblicherweise 3-Operanden-Befehle von der Art A = B op C, aber sie operieren auf jedem der Teilfelder parallel.
  • Zum Beispiel führt die Addition zweier 64-Bit-SIMD-Register, die vier 16-Bit-Werte enthalten, zu vier Additionen, die auf den vier Teilfeldern jedes Registers durchgeführt werden. Das 64-Bit-Ergebnis enthält vier 16-Bit-Werte, welche die Summe der entsprechenden Felder der Eingabewerte darstellen.
  • Der SIMD-Ansatz ist speziell in den Fällen nützlich, in denen ein Satz bzw. eine Menge von Operationen auf Daten, zum Beispiel 8- oder 16-Bit-Daten, viele Male auf großen Mengen von Daten durchgeführt werden müssen. Betrachten wir das Beispiel, in dem 64-Bit-Register unter Anwendung von SIMD-Befehlen verwendet werden, dann können acht unabhängige 8-Bit-Datensätze parallel verarbeitet werden, was zu einer beträchtlichen Verbesserung der Verarbeitungsgeschwindigkeit führt. Ein bestimmter Bereich, in dem solche SIMD-Befehle nützlich sind, ist der Bereich von JPEG- oder MPEG-Komprimierung und/oder -Dekomprimierung, wobei viele Diskrete Cosinus-Transformations- (Discrete Cosine Transformation, DCT)-Operationen durchgeführt werden müssen. Jede DCT besteht aus einer Reihe von Additionen und Multiplikationen, die auf vorzeichenbehafteten Daten durchgeführt werden, und es wurde herausgefunden, daß die Verwendung von SIMD-Befehlen die Verarbeitungsgeschwindigkeit beträchtlich steigern kann.
  • Es gibt jedoch eine Reihe von Nachteilen, die aus der Verwendung von SIMD-Befehlen resultieren. Zunächst wird, wie zuvor erwähnt, spezielle Hardware benötigt, um das korrekte Arbeiten der SIMD-Befehle zu ermöglichen, um sicherzustellen, daß die Datenwerte in den verschiedenen Teilfeldern des Registers voneinander entkoppelt bleiben, wenn die SIMD-Operation angewandt wird. Ferner müssen neue SIMD-Befehle, die diese Hardware verwenden, definiert werden. Dies führt tendenziell zu einem Anstieg in dem Befehls-Bitraum, der benötigt wird, um die Befehle zu identifizieren, was unerwünscht ist.
  • WO-A-95/17712 beschreibt ein Verfahren zur Verarbeitung eines digitalen Signals, bei dem auf mehreren Signalwerten simultan in einem einzigen Register operiert wird. GB-A-2 321 547 beschreibt einen Mikroprozessor, der eine Standardausführungseinheit umfaßt, um eine Standardoperation auf Operanden in Registern durchzuführen, zusammen mit einem Korrekturschaltkreis, der das Ergebnis aus der Standardoperation abändert, wenn der ausgeführte Befehl ein SIMD-Befehl ist. Der Artikel mit dem Titel "Achieving subword parallelism by software reuse of the floating point data path" von D. F. Zucker et al., Proceedings of the SPIE, XP 000648205, beschreibt einen Algorithmus, der einfache, arithmetische Operationen verwendet, um zwei Operanden in den linken und rechten Teil eines einzelnen Fließkomma-Wortes zu packen, woraufhin dann standardmäßige Fließkomma-Hardware verwendet wird, um auf diesen gepackten Operanden zu operieren. EP-A-0 602 888 beschreibt eine Technik, bei der arithmetische Operationen auf zusammengesetzten Operanden durchgeführt werden, die Datenobjekte enthalten, die aus mehreren Komponenten bestehen.
  • Zusammenfassung der Erfindung
  • Unter einem ersten Aspekt betrachtet stellt die vorliegende Erfindung ein Verfahren zum Betrieb eines Datenverarbeitungssystems bereit, um eine arithmetische Operation auf einer Mehrzahl p von 'n-Bit'-Datenwerten mit Vorzeichen im Zweierkomplement-Format durchzuführen, das die folgenden Schritte beinhaltet: Kodieren der Mehrzahl von n-Bit-Datenwerten mit Vorzeichen als einen zusammengesetzten Wert, der p n-Bit-Felder umfaßt, indem eine Kodieroperation, die äquivalent ist zum Ausrichten jedes Datenwertes mit Vorzeichen auf ein entsprechendes n-Bit-Feld, zum Vorzeichenerweitern jedes Datenwertes mit Vorzeichen bis zum höchstwertigen Bit des zusammengesetzten Wertes und zum Addieren der ausgerichteten und vorzeichenerweiterten Datenwerte, um den zusammengesetzten Wert zu bilden; Anwenden der arithmetischen Operation auf den zusammengesetzten Wert, um ein kodiertes Ergebnis zu erzeugen, das p n-Bit-Felder umfaßt; und Dekodieren des kodierten Wertes, um p abschließende Ergebnisse zu erzeugen, indem eine Dekodieroperation angewandt wird, die äquivalent ist zum Extrahieren der Daten aus jedem n-Bit-Feld des kodierten Ergebnisses und zum Korrigieren irgendwelcher Auswirkungen, die durch die Addition eines angrenzenden, vorzeichenerweiterten Datenwertes durch die Kodieroperation verursacht wurde; dadurch stellt jedes abschließende Ergebnis die Anwendung der arithmetischen Operation auf einen entsprechenden Datenwert mit Vorzeichen dar, vorausgesetzt, keiner der Datenwerte mit Vorzei chen, der in den zusammengesetzten Wert kodiert wird, würde zu einem Überlauf oder Unterlauf führen, würde die arithmetische Operation direkt auf ihn angewandt.
  • Gemäß der vorliegenden Erfindung werden zwei oder mehr Datenwerte mit Vorzeichen in einen zusammengesetzten Wert kodiert und der zusammengesetzte Wert wird dann verarbeitet, indem Standardbefehle verwendet werden, als wenn sie SIMD-Befehle wären. Dies wird durch die Verwendung einer bestimmten Kodierung der Datenwerte mit Vorzeichen möglich gemacht, die das Problem mit Überlauf und Unterlauf zwischen zwei aneinander grenzenden Datenwerten vermeidet. Da es diese Kodierung ermöglicht, Standardbefehle zu verwenden, kann viel von den Vorteilen der Verwendung von SIMD-Erweiterungen ohne die Kosten von besonderer bzw. zusätzlicher Hardware oder neuer Befehle, welche die SIMD-Techniken erforderlich machen, erzielt werden.
  • Gemäß der vorliegenden Erfindung wird eine Mehrzahl p von n-Bit-Datenwerten mit Vorzeichen als ein zusammengesetzter Wert kodiert, der p n-Bit-Felder umfaßt, indem eine Kodieroperation durchgeführt wird, die äquivalent ist zum Ausrichten jedes Datenwertes mit Vorzeichen auf ein entsprechendes n-Bit-Feld, zum Vorzeichenerweitern jedes Datenwertes mit Vorzeichen bis zum höchstwertigen Bit des zusammengesetzten Wertes und zum Addieren der ausgerichteten und vorzeichenerweiterten Datenwerte, um den zusammengesetzten Wert zu bilden. Diese Kodierung erlaubt es, viele Operationen zu verwenden, zum Beispiel Addition, Subtraktion, Multiplikation mit einer Konstanten und Linksschiebe- bzw. Linksshift-Operationen, solange jeder der gepackten Werte innerhalb des Minimum/Maximum-Bereiches bleibt (zum Beispiel muß ein Wert in einem 16-Bit-Feld innerhalb des Bereiches –32768 bis +32767 bleiben).
  • Gemäß der vorliegenden Erfindung wird die Kodierung auf Datenwerte mit Vorzeichen angewandt. Da die Kodierung der vorliegenden Erfindung damit verbunden ist, eine Operation äquivalent zur Vorzeichenerweiterung jedes Datenwertes mit Vorzeichen bis zum höchstwertigen Bit des zusammengesetzten Wertes anzuwenden, ist es klar, daß die Addition der verschiedenen Datenwerte mit Vorzeichen, die auf ihr entsprechendes n-Bit-Feld des zusammengesetzten Datenwertes ausgerichtet sind, möglicherweise zu gewisser gegenseitiger Beeinflussung zwischen den verschiedenen Datenwerten führt. Zum Beispiel gibt es nach bevorzugten Ausführungsformen durch die Vorzeichenerweiterung eines bestimmten Datenwertes mit Vorzeichen keine Auswirkung auf die anderen Datenwerte, wenn dieser vorzeichenerweiterte Wert positiv ist, wenn aber dieser vorzeichenerweiterte Wert negativ ist, dann wird dies die Wirkung haben, daß der Wert eins, der auf denjenigen angrenzenden Datenwert ausgerichtet ist, der die nächsten n höherwertigen Bits des zusammengesetzten Wertes darstellt, von dem zusammengesetzten Wert subtrahiert wird.
  • Dementsprechend ist es infolge dieser möglichen gegenseitigen Beeinflussung gänzlich entgegen der Intuition, diese Kodierung anzuwenden, da man erwarten würde, daß die Anwendung der arithmetischen Operation auf den zusammengesetzten Wert, der aus dieser Kodierung hervorgeht, nicht zu einem Ergebnis führen würde, aus dem die individuellen Ergebnisse abgeleitet werden könnten, die durch die Anwendung der arithmetische Operationen der Reihe nach auf jeden n-Bit-Datenwert mit Vorzeichen entstanden wären. Jedoch wurde entgegen den Erwartungen herausgefunden, daß durch das Verwenden der Kodierungstechnik der vorliegenden Erfindung die Anwen dung der arithmetische Operation tatsächlich zu einem kodierten Ergebnis führt, aus dem die individuellen abschließenden Ergebnisse einfach abgeleitet werden können. Alles, was erforderlich ist, ist, die Daten aus jedem n-Bit-Feld des kodierten Ergebnisses zu extrahieren und jedwede Auswirkung zu korrigieren, die durch die Addition eines angrenzenden, vorzeichenerweiterten Datenwertes während des Kodierschrittes verursacht wurde. Folglich ist nach einer bevorzugten Ausführungsform alles, was erforderlich ist, zu dem kodierten Ergebnis den Wert 1, der auf ein bestimmtes n-Bit-Feld des kodierten Ergebnisses ausgerichtet ist, zu addieren, wenn die Daten in dem angrenzenden n-Bit-Feld, das die angrenzenden n niedrigerwertigen Bits des kodierten Ergebnisses darstellt, negativ sind.
  • Man erkennt, daß es viele verschiedene Arten und Weisen gibt, auf welche die Kodieroperation implementiert werden kann, vorausgesetzt daß die gewählte Implementierung zu einem zusammengesetzten Wert führt, der äquivalent ist zum Ausrichten jedes Datenwertes mit Vorzeichen auf ein entsprechendes n-Bit-Feld, zum Vorzeichenerweitern jedes Datenwertes mit Vorzeichen bis zum höchstwertigen Bit des zusammengesetzten Wertes und zum Addieren der ausgerichteten und vorzeichenerweiterten Datenwerte, um den zusammengesetzten Wert zu bilden. Zum Beispiel ist es nicht nötig, jeden Datenwert mit Vorzeichen auf ein entsprechendes n-Bit-Feld vor der Vorzeichenerweiterung jedes Datenwertes mit Vorzeichen auszurichten, und alternativ kann jeder Datenwert mit Vorzeichen zuerst vorzeichenerweitert werden, bevor irgendein Ausrichtungsprozeß stattfindet.
  • Ferner umfaßt nach einer Ausführungsform der vorliegenden Erfindung die Kodieroperation die folgenden Schritte: Zuordnen der Mehrzahl von n-Bit-Datenwerten zu entsprechenden n-Bit-Feldern eines Zwischenwerte, wobei das erste n-Bit-Feld die n niedrigstwertigen Bits des Zwischenwertes umfaßt und das p-te n-Bit-Feld die n höchstwertigen Bits des Zwischenwertes umfaßt; für das p-1-te bis zum ersten n-Bit-Feld beginnend mit dem p-1-ten n-Bit-Feld Feststellen, ob der Datenwert in diesem n-Bit-Feld negativ ist, und wenn dies der Fall ist, Erzeugen eines neuen Zwischenwerts, indem von dem Zwischenwert eine logische 1 subtrahiert wird, die auf das angrenzende n-Bit-Feld ausgerichtet ist, das n höherwertige Bits darstellt; so daß, wenn das erste n-Bit-Feld verarbeitet wurde, dieser Zwischenwert der besagte zusammengesetzte Wert ist.
  • In ähnlicher Weise erkennt man, daß die Dekodieroperation in einer Reihe von verschiedenen Arten und Weisen implementiert werden kann, vorausgesetzt, dies erzeugt abschließende Ergebnisse, die äquivalent sind zum Extrahieren der Daten aus jedem n-Bit-Feld des kodierten Ergebnisses und zum Korrigieren irgendwelcher Auswirkungen, die durch die Addition eines angrenzenden, vorzeichenerweiterten Datenwertes während des Kodierschrittes verursacht wurde. Zum Beispiel umfaßt nach einer bevorzugten Ausführungsform der vorliegenden Erfindung ein erstes n-Bit-Feld des kodierten Ergebnisses die n niedrigstwertigen Bits des kodierten Ergebnisses und ein p-tes n-Bit-Feld des kodierten Ergebnisses umfaßt die n höchstwertigen Bits des kodierten Ergebnisses, und die Dekodieroperation umfaßt die folgenden Schritte: für das erste n-Bit-Feld bis zum p-1-ten n-Bit-Feld, beginnend mit dem ersten n-Bit-Feld, Feststellen, ob die Daten in diesem n-Bit-Feld negativ sind, und wenn dies der Fall ist, Erzeugen eines neuen kodiertes Ergebnisses, indem zu dem kodierten Ergebnis eine logische 1 addiert wird, die auf das angrenzende n-Bit-Feld ausgerichtet ist, das die n höherwertigen Bits darstellt; so daß, wenn das p-1-te n-Bit-Feld verarbeitet wurde, jedes n-Bit-Feld eines der besagten p abschließenden Ergebnisse enthält.
  • Bei genauer Betrachtung der Kodieroperation und der Dekodieroperation erkennen Fachleute auf diesem Gebiet auch, daß abhängig von der gewählten Implementierung die Kodieroperation und/oder die Dekodieroperation aus einem oder mehreren Befehlen bestehen können.
  • Nach bevorzugten Ausführungsformen ist die arithmetische Operation eine Funktion von einem oder mehreren zusammengesetzten Werten, wobei jeder zusammengesetzte Wert eine Mehrzahl von n-Bit-Datenwerten mit Vorzeichen kodiert, und jeder zusammengesetzte Wert durch die Anwendung des genannten Kodierschrittes auf die entsprechende Mehrzahl von n-Bit-Datenwerten mit Vorzeichen erzeugt wird. Wenn es also gewünscht ist, die Addition A = A1 + A2 und die Addition B = B1 + B2 durchzuführen, dann würden in Übereinstimmung mit bevorzugten Ausführungsformen der Erfindung zwei zusammengesetzte Werte C1 und C2 erzeugt, wobei C1 eine Kodierung von A1 und B1 und C2 eine Kodierung von A2 und B2 ist, und die arthmetische Operation würde dann eine Addition der zwei zusammengesetzten Werte C1 und C2 durchführen, um das Ergebnis C = C1 + C2 zu erzeugen. Die Ergebnisse A und B würden dann durch Dekodieren des Ergebnisses C der arithmetischen Operation abgeleitet. Die vorstehende Operation ist der Einfachheit halber dargestellt, aber Fachleute auf diesem Gebiet erkennen, daß mehr als zwei Datenwerte in die Erzeugung eines zusammengesetzten Wertes einbezogen werden können und die arithmetische Operation auf mehr als zwei zusammengesetzte Werte angewandt werden kann. Ferner erkennt man, daß die arithmetische Operation tatsächlich eine Mehrzahl von Operationen umfassen kann.
  • Man sieht, daß viele verschiedene arithmetische Operationen auf die zusammengesetzten Werte, die aus der Kodierungstechnik der vorliegenden Erfindung resultieren, angewandt werden können. Nach einer Ausführungsform der vorliegenden Erfindung umfaßt die arithmetische Operation jedoch eine oder mehrere Diskrete Cosinus-Transformations- (DCT)-Operationen, wobei jede DCT-Operation eine Funktion von einem oder mehreren zusammengesetzten Werten ist, wobei jeder zusammengesetzte Wert eine Mehrzahl von n-Bit-Datenwerten mit Vorzeichen kodiert und jeder zusammengesetzte Wert durch das Anwenden des genannten Kodierschrittes auf die entsprechende Mehrzahl von n-Bit-Datenwerten mit Vorzeichen erzeugt wird. Ein spezieller Bereich, in dem DCT-Operationen angewandt werden, ist der von JPEG- oder MPEG-Komprimierung oder – Dekomprimierung, und es hat sich herausgestellt, daß die Techniken in Übereinstimmung mit bevorzugten Ausführungsformen der vorliegenden Erfindung besonders vorteilhaft sind, wenn JPEG- oder MPEG-Komprimierung oder-Dekomprimierung durchgeführt wird.
  • Unter einem zweiten Aspekt betrachtet stellt die vorliegende Erfindung ein Datenverarbeitungssystem zur Verfügung, um eine arithmetische Operation auf einer Mehrzahl von p 'n-Bit'-Datenwerten mit Vorzeichen im Zweierkomplement-Format durchzuführen, bestehend aus: einem Prozessor zum Anwenden der arithmetischen Operation; einem Speicher zum Speichern der Mehrzahl von n-Bit-Datenwerten mit Vorzeichen, wobei der Prozessor darauf eingerichtet ist, vor dem Ausführen der arithmetischen Operation die Mehrzahl von n-Bit-Datenwerten mit Vorzeichen aus dem Speicher zu holen und die Mehrzahl von n-Bit-Datenwerten mit Vorzeichen als einen zusam mengesetzten Wert, der p n-Bit-Felder umfaßt, durch das Ausführen einer Kodieroperation zu kodieren, die äquivalent ist zum Ausrichten jedes Datenwertes mit Vorzeichen auf ein entsprechendes n-Bit-Feld, zum Vorzeichenerweitern jedes Datenwertes mit Vorzeichen bis zum höchstwertigen Bit des zusammengesetzten Wertes und zum Addieren der ausgerichteten und vorzeichenerweiterten Datenwerte, um den zusammengesetzten Wert zu bilden, wobei der zusammengesetzte Wert im Speicher gespeichert wird, und der Prozessor darauf eingerichtet ist, die arithmetische Operation auf den zusammengesetzten Wert anzuwenden, um ein kodiertes Ergebnis zu erzeugen, das p n-Bit-Felder umfaßt, und das kodierte Ergebnis im Speicher zu speichern, und der Prozessor ferner darauf eingerichtet ist, im Anschluß an die Anwendung der arithmetischen Operation das kodierte Ergebnis zu dekodieren, um p abschließende Ergebnisse zu erzeugen, indem eine Dekodieroperation ausgeführt wird, die äquivalent ist zum Extrahieren der Daten aus jedem n-Bit-Feld des kodierten Ergebnisses und zum Korrigieren irgendwelcher Auswirkungen, die durch die Addition eines angrenzenden, vorzeichenerweiterten Datenwertes durch die Kodieroperation verursacht wurde; womit jedes abschließende Ergebnis die Anwendung der arithmetischen Operation auf einen entsprechenden n-Bit-Datenwert mit Vorzeichen darstellt, vorausgesetzt, keiner der Datenwerte mit Vorzeichen, der in den zusammengesetzten Wert kodiert wird, würde zu einem Überlauf oder Unterlauf führen, wenn die arithmetische Operation direkt auf ihn angewandt werden würde.
  • Nach bevorzugten Ausführungsformen beinhaltet der Prozessor einen Verschieber bzw. Shifter und eine arithmetisch-logische Einheit (Arithmetic Logic Unit, ALU), die darauf eingerichtet sind, die Kodier- und Dekodieroperationen auszuführen. Diese sind standardmäßige Hardwareelemente innerhalb eines typischen Prozessors, und somit wird keine Spezialhardware innerhalb des Prozessors benötigt, um ihn in die Lage zu versetzen, die Kodier- und Dekodieroperationen zu behandeln. Wenn es jedoch gewünscht wird, könnte spezifische Hardware bereitgestellt werden, um die Kodier- und/oder Dekodieroperationen zu behandeln.
  • Der Speicher, der zum Speichern der n-Bit-Datenwerte mit Vorzeichen, des zusammengesetzten Wertes und des kodierten Ergebnisses verwendet wird, kann eine Vielzahl von Formen annehmen, zum Beispiel die eines Arbeitspeichers oder einer Registerbank, und in der Tat können unterschiedliche physikalische Speicherelemente verwendet werden, um die n-Bit-Datenwerte mit Vorzeichen, den zusammengesetzten Wert und das kodierte Ergebnis zu speichern. Nach bevorzugten Ausführungsformen ist jedoch der Speicher eine Registerbank zum Speichern der Werte, die vom Prozessor verwendet werden. Folglich werden vor der Ausführung der Kodieroperation die relevanten n-Bit-Datenwerte mit Vorzeichen aus dem Arbeitspeicher in die Registerbank eingelesen, und dann finden die Kodieroperation, die arithmetische Operation und die Dekodieroperation durch geeignete Manipulation des Datenwertes in der Registerbank statt.
  • Unter einem dritten Aspekt betrachtet stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, das ein Computerprogramm trägt, das dazu dient, einen Computer zu steuern, um eine arithmetische Operation auf einer Mehrzahl von p 'n-Bit'-Datenwerten mit Vorzeichen in einem Zweierkomplement-Format in Übereinstimmung mit dem Verfahren des ersten Aspektes der vorliegenden Erfindung durchzuführen.
  • Kurzbeschreibung der Zeichnungen
  • Die vorliegende Erfindung wird weitergehend nur beispielhaft unter Bezug auf bevorzugte Ausführungsformen beschrieben, wie sie in den begleitenden Zeichnungen dargestellt sind, von denen:
  • 1 ein Blockdiagramm ist, das Elemente eines Prozessorkerns darstellt, der in einer Ausführungsform der vorliegenden Erfindung verwendet wird, um die Kodier- und Dekodieroperationen durchzuführen;
  • 2 ein Flußdiagramm ist, das die Kodieroperation gemäß einer ersten Ausführungsform der vorliegenden Erfindung darstellt;
  • 3 ein Flußdiagramm ist, das die Kodieroperation gemäß einer zweiten Ausführungsform der vorliegenden Erfindung darstellt; und
  • 4 ein Flußdiagramm ist, das eine Dekodieroperation darstellt, die gemäß bevorzugten Ausführungsformen der vorliegenden Erfindung verwendet wird.
  • Beschreibung der bevorzugten Ausführungsformen
  • 1 ist ein Blockdiagramm, das Komponenten eines standardmäßigen Prozessorkerns 10 darstellt, der gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung eingerichtet ist, um eine arithmetische Operation auf einer Mehrzahl p von n-Bit-Datenwerten mit Vorzeichen durchzuführen. Die Befehle, die durch den Kern 10 ausgeführt werden sollen, werden über einen Pfad 70 in eine Befehlspipeline 80 übergeben. Femer werden die Datenwerte, die von dem Prozessorkern zu verwenden sind, in eine Registerbank 20 geladen, die typischerweise eine Mehrzahl von Registern umfaßt. In 1 werden die Datenwerte in das Register 20 aus einem Cache 30 über den Pfad 35 geladen, aber man erkennt, daß die Datenwerte nicht direkt aus dem Cache 30 geladen zu werden brauchen, sondern alternativ aus einem anderen Speicher geladen werden könnten, der durch das Datenverarbeitungssystem, welches den Prozessorkern 10 enthält, zur Verfügung gestellt wird.
  • In 1 wird das Register 20 mit einer Mehrzahl von Registern dargestellt, wobei jedes Register 32 Bits lang ist und aus vier 8-Bit-Feldern besteht. Jedoch brauchen die Register nicht 32 Bits lang zu sein, und andere typische Registergrößen, die verwendet werden können, sind 64 Bits und 128 Bits.
  • Ein Befehlsdekoder 40 ist darauf eingerichtet, Befehle aus der Pipeline 80 zu lesen und diese Befehle in Operationen zu dekodieren, die durch die Hardware innerhalb des Prozessorkerns anzuwenden sind. Dementsprechend wird der Befehlsdekoder 40 beispielsweise in dem Fall, wenn er einen Befehl dekodiert, der es erfordert, daß eine Schiebe- bzw. Shift-Operation durchgeführt wird, ein Signal an die Schiebelogik 60 übergeben, um die Schiebelogik anzuweisen, die benötigte Shift-Operation durchzuführen. Ferner wird er ein Signal an die Registerbank 20 senden, um zu veranlassen, daß der bzw. die Operanden-Datenwerte) von der Registerbank an die Schiebelogik 60 ausgegeben werden. Typischerweise wird, sobald der Operanden-Datenwert geshiftet worden ist, der geshiftete Wert von der Schiebelogik 60 an die Registerbank 20 zurückgeliefert, wo er in einem der Register gespeichert wird.
  • Ähnlich wird der Befehlsdekoder 40, wenn er eine arithmetische Operation wie eine Multiplikation oder eine Addition dekodiert, ein Signal an die arithmetisch-logische Einheit (Arithmetic Logic Unit, ALU) 50 senden, um die ALU zu veranlassen, die notwendige(n) arithmetische(n) Operation(en) durchzuführen. Ferner wird er die Registerbank 20 kontaktieren, um zu veranlassen, daß die notwendigen Operanden-Datenwerte von der Registerbank 20 an die ALU 50 übergeben werden, und bei Vollendung der arithmetische(n) Operationen) wird die ALU 50 typischerweise den bzw. die Ergebnisdatenwert(e) in die Registerbank 20 zurückspeichern.
  • Die vorstehende Diskussion von 1 soll einen Überblick über den Betrieb der dargestellten Standardelemente eines Prozessorkerns 10 liefern. Gemäß bevorzugten Ausführungsformen der vorliegenden Erfindung ist dieser Standardkern 10 dafür eingerichtet, eine arithmetische Operation auf einer Mehrzahl von n-Bit-Datenwerten mit Vorzeichen durchzuführen, und die verwendeten Techniken, um dies in bevorzugten Ausführungsformen zu erreichen, werden nun unter Bezug auf die 2 bis 4 genauer diskutiert werden.
  • Die Techniken der bevorzugten Ausführungsformen werden auf Datenwerte mit Vorzeichen im Zweierkomplement-Format angewendet, wobei dies Datenwerte mit einem Vorzeichenbit sind, das es ermöglicht, daß der Wert positiv oder negativ ist. Folglich kann dieser beim Betrachten des Beispiels eines 8-Bit-Datenwertes mit Vorzeichen in einem Wertebereich zwischen –128 und +127 liegen. In Übereinstimmung mit einer Kodierungstechnik, die nach einer ersten Ausführungsform der vorliegenden Erfindung verwendet wird, sind die Datenwerte mit Vorzeichen "vorzeichenerweitert". Betrachten wir das Beispiel eines 16-Bit-Datenwertes, dann kann dieser zum Beispiel auf einen 32-Bit-Datenwert vorzeichenerweitert werden, indem 16 Kopien des Vorzeichenbits (z. B. des Bits 15 bei Betrachtung des Beispiels eines 16-Bit-Datenwertes) in die Bits 16 bis 31 gestellt werden. Somit ist zum Beispiel der 16-Bit-Datenwert -32767 gleich 0x8001 in hexadezimaler Schreibweise, wobei das Symbol "0x" angibt, daß die Schreibweise hexadezimal ist. Durch Vorzeichenerweiterung dieser Zahl auf 32 Bits wird dies zu 0xFFFF8001, da der hexadezimale Wert "8" anzeigt, daß die vier höchstwertigen Bits des 16-Bit-Wertes "1000" im Binärformat sind und folglich das Vorzeichenbit gleich "1" ist.
  • In Übereinstimmung mit bevorzugten Ausführungsformen der vorliegenden Erfindung wird die Mehrzahl der n-Bit-Datenwerte mit Vorzeichen vor der Anwendung der arithmetischen Operation kodiert. Die nach einer ersten Ausführungsform der vorliegenden Erfindung verwendete Kodierungstechnik wird unter Bezug auf 2 weiter diskutiert. In Schritt 200 wird die Mehrzahl der n-Bit-Datenwerte aus dem Cache 30 in vorbestimmte Register der Registerbank 20 geladen. Daraufhin wird in Schritt 210 jeder Datenwert mit Vorzeichen auf "m" Bits vorzeichenerweitert, wobei m die Länge des zusammengesetzten Wertes ist, der verwendet wird, um die Mehrzahl der n-Bit-Datenwerte zu kodieren. Der Prozeß der Vorzeichenerweiterung kann von der ALU 50 oder der Shift-Logik 60 durchgeführt werden. Vorzugsweise werden diese vorzeichenerweiterten Datenwerte danach in "m"-Bit-Registern der Registerbank gespeichert.
  • In Schritt 220 wird ein erster n-Bit-Datenwert als die n niedrigstwertigen Bits des zusammengesetzten Wertes zugeordnet. Danach wird in Schritt 230 eine Variable X gleich 1 gesetzt, und in Schritt 240 wird der nächste vorzeichenerweiterte n-Bit-Datenwert von der Shift-Logik 60 aus seinem Register in der Registerbank 20 geholt und um Xn Bits nach links geshiftet. Vorzugsweise wird der geshiftete Datenwerte zu diesem Zeitpunkt in ein ausgewähltes Register der Registerbank 20 zurückgeschrieben.
  • Im Anschluß an diesen Schritt schreitet der Prozeß zu Schritt 250 fort, in dem festgestellt wird, ob der Wert Xn gleich m ist. Diese Berechnung bestimmt letztlich, ob alle n-Bit-Datenwerte, die in den zusammengesetzten Wert kodiert werden sollen, geshiftet wurden, um sie auf ihr entsprechendes n-Bit-Feld des zusammengesetzten Wertes auszurichten. Wenn Xn nicht gleich m ist, dann geht der Prozeß zu Schritt 260 über, in dem X um 1 inkrementiert wird, und der Prozeß kehrt dann zu Schritt 240 zurück. Indem dieser neue, inkrementierte Wert von X genommen wird, wird der nächste n-Bit-Datenwert um Xn Bits nach links geshiftet, und dieser Prozeß wird für jeden n-Bit-Wert der Reihe nach wiederholt, bis festgestellt wird, daß Xn gleich m ist. Zu diesem Zeitpunkt wurden alle n-Bit-Datenwerte auf m Bits vorzeichenerweitert und geshiftet, so daß sie auf ein entsprechendes n-Bit-Feld des zusammengesetzten Wertes ausgerichtet sind. Dementsprechend werden in Schritt 270 diese vorzeichenerweiterten und geshifteten Datenwerte von der ALU 50 aus der Registerbank 20 geholt und zusammenaddiert, um den zusammengesetzten Wert zu bilden. Das Ergebnis wird dann an die Registerbank 20 ausgegeben, um es in einem Register zu speichern, das dafür bestimmt ist, den zusammengesetzten Wert zu halten. An diesem Punkt ist die Kodieroperation abgeschlossen, und daher geht der Prozeß zu Schritt 280 über, in dem die Kodieroperation beendet wird.
  • Fachleute auf diesem Gebiet erkennen, daß die Sequenz der Operationen nicht in genau derselben Reihenfolge durchgeführt zu werden braucht, wie in 2 dargestellt. Zum Beispiel kann der Shift-Prozeß, der durch die Schritte 220 bis 260 verkörpert wird, um jeden n-Bit-Datenwert auf ein entsprechendes n-Bit-Feld des für den zusammengesetzten Wert zugeordneten Registers auszurichten, vor irgendeiner Vorzeichenerweiterung der Datenwerte durchgeführt werden. In diesem Fall wird, sobald alle Datenwerte auf ihre entsprechenden n-Bit-Felder ausgerichtet wurden, jeder Datenwert bis zum höchstwertigen Bit des zusammengesetzten Wertes vorzeichenerweitert (d. h. für einen zusammengesetzten Wert mit Länge m, der aus den Bits 0 bis m-1 besteht, wird jeder Datenwert bis zum Bit m-1 vorzeichenerweitert). Im Anschluß an die Operation zur Vorzeichenerweiterung schreitet der Prozeß dann zu Schritt 270 fort, in dem die Werte zusammenaddiert werden.
  • Darüber hinaus ist es möglich, anstatt den Additionsschritt ans Ende zu stellen, jedes Mal dann eine Addition auszuführen, wenn ein Datenwert vorzeichenerweitert und geshiftet ist. Wenn zum Beispiel der zweite Datenwert um n Bits nach links geshiftet und vorzeichenerweitert ist, dann kann er direkt zum ersten vorzeichenerweiterten Datenwert addiert werden, bevor der dritte Datenwert vorzeichenerweitert und geshiftet wird. Daraufhin kann, wenn der dritte Datenwert vorzeichenerweitert und um 2n Bits nach links geshiftet wurde, dieser Wert zum Ergebnis der vorangegange nen Addition addiert werden und so weiter, bis alle n-Bit-Datenwerte in den zusammengesetzten Wert kodiert wurden.
  • Um die unter Bezug auf 2 beschriebene Kodierungstechnik weiter zu veranschaulichen, wird nun ein Beispiel betrachtet, bei dem zwei 16-Bit-Werte a und b in ein 32-Bit-Wort c kodiert werden sollen. Die Kodierung kann durch die folgende Gleichung dargestellt werden: c = SignExtend (a) + (b << 16)
  • Dementsprechend wird a zuerst auf 32 Bits vorzeichenerweitert und dann wird b in die oberen 16 Bits der vorzeichenerweiterten Version von a addiert. Nach bevorzugten Ausführungsformen wird das Vorzeichenbit (d. h. Bit 15) gleich 0 sein, wenn a eine positive Zahl ist, und demnach führt die Vorzeichenerweiterung zur Addition von Nullen zu den Bits 16 bis 31. Dementsprechend hat dieser Prozeß keine Auswirkungen auf den Wert b, der durch die oberen 16 Bits von c repräsentiert wird. Wenn a jedoch negativ ist, dann ist das Vorzeichenbit gleich 1 und dementsprechend werden Einsen zu den Bits 16 bis 31 addiert. Das bedeutet, daß, wenn a negativ ist, b effektiv um 1 dekrementiert wird, wenn es in c kodiert wird. Wenn zum Beispiel a = –2 und b = 10 ist, dann ist c = –2 + (10 << 16), was gleich 0x0009FFFE ist. Folglich sieht man, daß die unteren 16 Bits immer noch –2 darstellen, jedoch die oberen 16 Bits +9 darstellen anstelle der erwarteten +10.
  • Man erkennt, daß der durchgeführte Kodierprozeß die Vorzeichenerweiterungs- und Shift-Funktionen nicht tatsächlich direkt ausführen muß, solange die Kodierung einen zusammengesetzten Wert erzeugt, der äquivalent zu dem unter Bezug auf 2 dargestellten Prozeß ist. Zum Beispiel wird eine alternative Kodierungstechnik, die zum selben zusammengesetzten Wert führt, in 3 dargestellt. In Übereinstimmung mit dem Prozeß in 3, werden die p n-Bit-Datenwerte, die in den zusammengesetzten Wert zu kodieren sind, zunächst in aufeinanderfolgende n-Bit-Felder eines m-Bit-Registers geladen, das für den zusammengesetzten Wert reserviert ist, wobei m = p × n. Somit ist m = 32, wenn der zusammengesetzte Wert vier 8-Bit-Datenwerte repräsentieren soll, und der zusammengesetzte Wert wird in einem 32-Bit-Register gespeichert. Zu diesem Zeitpunkt werden die Datenwerte gepackt, wie sie gepackt würden, wenn der SIMD-Ansatz nach dem Stand der Technik verwendet wird, bei dem jeder Datenwert in ein entsprechendes n-Bit-Feld des Registers gestellt wird, und keiner der Datenwerte mit einem anderen überlappt.
  • Gemäß der Kodierungstechnik dieser Ausführungsform schreitet der Prozeß jedoch dann zu Schritt 310 voran, in dem eine Variable X gleich p-1 gesetzt wird. Danach wird in Schritt 320 festgestellt, ob der Datenwert in dem X-ten n-Bit-Feld negativ ist. Folglich wird bei Betrachtung des vorstehenden Beispiels, in dem vier 8-Bit-Datenwerte in den zusammengesetzten Wert kodiert werden, dann bei der ersten Iteration in Schritt 320 festgestellt, ob das dritte n-Bit-Feld negativ ist. Wenn das Feld nicht negativ ist, dann hat, wie zuvor diskutiert, dieser Datenwert keinen Einfluß auf die anderen Datenwerte in dem zusammengesetzten Wert, und dementsprechend macht der Prozeß direkt mit Schritt 340 weiter, in dem festgestellt wird, ob die Variable X = 1 ist. Wenn X gleich 1 ist, dann ist der Kodierprozeß abgeschlossen und er geht zu Schritt 360 über, in dem die Kodieroperation beendet wird. Wenn X jedoch nicht gleich 1 ist, dann schreitet der Prozeß zu Schritt 350 weiter, in dem X um 1 dekrementiert wird, und der Prozeß kehrt dann zu Schritt 320 zurück.
  • Wenn in Schritt 320 festgestellt wird, daß der Datenwert in dem X-ten n-Bit-Feld negativ ist, dann fährt der Prozeß bei Schritt 330 fort, in dem 1 auf das X + 1-te n-Bit-Feld ausgerichtet wird und dann vom Inhalt des Registers subtrahiert wird. Folglich wird bei der Betrachtung des vorstehenden Beispiels, wenn bei der zweiten Iteration festgestellt wird, daß der Datenwert in dem zweiten n-Bit-Feld negativ ist, daraufhin in Schritt 330 der logische Wert 1 auf das niedrigstwertige Bit des Datenwertes in dem dritten n-Bit-Feld ausgerichtet und dann vom Inhalt des Registers subtrahiert.
  • Dieser Prozeß wird wiederholt, bis bei Schritt 340 festgestellt wird, daß X = 1 ist, an welchem Punkt das Vorzeichen des Datenwertes, das die n niedrigstwertigen Bits des zusammengesetzten Wertes darstellen, ausgewertet und jedwede notwendige Subtraktion durchgeführt worden ist. Daraufhin fährt der Prozeß mit Schritt 360 fort, in dem der Kodierprozeß zu Ende geht.
  • Sobald der Kodierprozeß durchgeführt wurde, können die zusammengesetzten m-Bit-Werte in Algorithmen verwendet werden, die dafür konzipiert wurden, n-Bit-Datenwerte zu handhaben, und somit kann bei der Betrachtung des Beispiels von vier 8-Bit-Datenwerten, die in einen zusammengesetzten 32-Bit-Wert kodiert sind, ein standardmäßiger 8-Bit-Algorithmus, der 32-Bit-Register verwendet, auf den zusammengesetzten Wert angewandt werden, ohne daß irgendeine spezielle Hardware benötigt wird, um der Tatsache Rechnung zu tragen, daß der zusammengesetzte Wert tatsächlich vier kleinere Datenwerte kodiert. Somit kann man erkennen, daß es die spezielle, vorstehend beschriebene Kodierungstechnik erlaubt, normale Befehle zu verwenden, als ob sie SIMD-Befehle wären, jedoch ohne die Notwendigkeit, spezielle Hardware hinzuzufügen, die zum Behandeln von SIMD-Befehlen benötigt wird. Es hat sich herausgestellt, daß dies unter der Voraussetzung gilt, daß die individuellen n-Bit-Werte, die in den zusammengesetzten Wert kodiert werden, nicht zu einem Überlauf oder Unterlauf geführt hätten, wenn der Algorithmus auf sie direkt anstatt auf den zusammengesetzten Wert angewandt worden wäre.
  • Nach der vorstehenden Diskussion ist es augenscheinlich, daß der Kodierschritt die Werte in jedem außer dem ersten Feld auf Grund der Vorzeichenerweiterung um höchstens eins dekrementieren kann. Obwohl das in Feldern mit dem minimalen negativen Wert zu einem Unterlauf führen kann, ist dies nicht signifikant. Wenn zum Beispiel ein vorangehendes 16-Bit-Feld positiv ist, werden die Werte -32768... 32767 in dem aktuellen Feld unverändert dargestellt, wogegen wenn das vorangehende Feld negativ ist, –32768 durch +32767 in dem aktuellen Feld dargestellt wird, und – 32767...32767 werden in dem aktuellen Feld als –32768...32766 dargestellt. Somit verliert diese Kodierung nicht die Fähigkeit, alle möglichen Werte in jedem Feld darzustellen, und das Durchführen eines Dekodierschrittes nach einem Kodierschritt führt dazu, daß die Originalwerte unverändert zurückgeliefert werden. Das Kodierschema kann so angesehen werden, daß ein Feld eine '1' vom nächsten Feld 'borgt', wenn der Wert negativ ist. Wenn ein Feld das Vorzeichen von einem positiven zu einem negativen Wert ändert, wird eins vom nächsten Feld in der anderen Richtung geborgt (und somit wird das Borgen während der Dekodierung rückgängig gemacht).
  • Um zu beweisen, daß die Kodierungstechnik funktioniert, wird sie in der nachfolgenden Beschreibung dazu verwendet, zwei Werte in einen kodierten Wert zu kodieren und dann eine Addition vorzunehmen. Dies wird veranschaulichen, daß das dekodierte Ergebnis einer einzelnen Addition zu denselben Ergebnissen führt wie die Durchführung zweier separater Additionen auf den ursprünglichen Werten. Der Beweis kann leicht auf mehrere Werte ausgeweitet werden. Aus dem Beweis für die Addition kann ebenso gefolgert werden, daß die Multiplikation mit einer Konstanten und das Linksverschieben (äquivalent zur Multiplikation mit einer positiven Potenz von 2) abgeleitet werden kann. Auch wenn der Beweis nicht notwendig ist, um die Kodier- und Dekodierschritte richtig zu verstehen, wird er geliefert, um zu zeigen, daß die arithmetischen Operationen, die auf die kodierten Werte angewandt werden, nützliche Ergebnisse erzeugen und so die Erfindung für praktische Zwekke brauchbar machen.
  • Zuerst werden Werte A, B als das Ergebnis der Anwendung der Kodieroperation auf A1, A2 bzw. B1, B2 definiert. R ist das Ergebnis einer auf A und B angewandten arithmetischen Additionsoperation und R1, R2 sind die Ergebnisse nach der Dekodierung von R.
  • Das Ziel ist zu beweisen, daß R1 = A1 + B1 und R2 = A2 + B2.
    A = encode(A1, A2)
    B = encode(B1, B2)
    R = A + B
    R1, R2 = decode(R)
  • Das Kodieren zweier vorzeichenerweiterten Werte im Bereich [–N/2...N/2 – 1] ist definiert als:
    encode(X, Y) = X + Y*N
    wobei N eine Potenz von 2 ist (wobei log(N) die Bitbreite der Felder ist).
  • Dekodieren ist die Umkehrfunktion zum Kodieren, die mathematisch definiert ist als:
  • Figure 00120001
  • Der als '/' notierte Divisionsoperator gibt eine Ganzzahl-Division an und rundet in Richtung minus unendlich.
  • Der modulo-Operator liefert den Rest einer Division zurück und ist als 'mod' notiert. Modulo-Ergebnisse haben immer dasselbe Vorzeichen wie der Nenner und liegen im Bereich 0 bis Nenner-1 (somit ist B*(A/B) + A mod B == A unabhängig vom Vorzeichen von A).
  • Der Vorzeichenerweiterungs-Operator, der einen log(N)-Bit-Wert auf einen Wert voller Breite mit Vorzeichen im Bereich [–(N/2)...(N/2) – 1] ausweitet, ist als 'SEXT' notiert. Es wird angenommen, daß SEXT(X mod N) == SEXT(X) – das heißt, wenn X vor der Vorzeichenerweiterung außerhalb des gültigen Bereichs liegt, werden nur log(N) Bits von X verwendet, um einen vorzeichenerweiterten Wert im Bereich zu bilden. Es ist weiterhin festzuhalten, daß SEXT(X) == X, wenn X im Bereich [– (N/2)...(N/2) – 1] liegt.
  • Zuerst wird bewiesen, daß decode(encod()) eine Identität für Werte innerhalb des angegebenen Wertebereiches ist. Wir teilen diesen Beweis in drei Teile auf, einen für den ersten kodierten Wert und zwei für den zweiten kodierten Wert mit einem separaten Beweis für die Fälle, in denen der erste Wert positiv oder negativ ist.
  • Beweis für X = decode1(encode(X, Y)):
  • Figure 00130001
  • Beweis für Y = decode2(encode(X, Y)), falls X positiv:
  • Figure 00130002
  • Beweis für Y = decode2(encode(X, Y), falls X negativ:
  • Figure 00130003
  • Figure 00140001
  • Es kann nun bewiesen werden, daß R1 = A1 + A2 und R2 = B1 + B2, wenn die Additionen zu keinem Überlauf führen:
  • Figure 00140002
  • Algorithmen, welche die oben genannten Randbedingungen einhalten, können ohne Änderung angewandt werden und führen zu einer korrekten Manipulation der Datenwerte, wie sie in den zusammengesetzten Wert kodiert sind, und dementsprechend ist alles, was erforderlich ist, sobald die arithmetische Operation oder die Folge von arithmetischen Operationen angewandt wurden, eine Dekodieroperation anzuwenden, welche jedwede Auswirkung korrigiert, die durch den ursprünglichen Kodierprozeß bewirkt wurde. Die Dekodierungstechnik, die nach bevorzugten Ausführungsformen der vorliegenden Erfindung eingesetzt wird, um diese Auswirkungen zu korrigieren, die während der Kodierung aufgetreten sind, wird unter Bezug auf 4 veranschaulicht.
  • In Schritt 400 wird eine Variable X gleich 1 gesetzt. Danach wird in Schritt 410 festgestellt, ob der Datenwert in dem X-ten n-Bit-Feld negativ ist. Dementsprechend wird bei der ersten Iteration festgestellt, ob das erste n-Bit-Feld, das die n niedrigstwertigen Bits des zusammengesetzten Wertes darstellt, negativ ist. Wenn dieser Wert negativ ist, dann fährt der Prozeß mit Schritt 420 fort, in dem der Wert 1 auf das X + 1-te n-Bit-Feld ausgerichtet wird und dann zum Registerinhalt addiert wird. Dementsprechend wird als ein Beispiel 1 auf das niedrigstwertige Bit des zweiten n-Bit-Feldes ausgerichtet, wenn das erste n-Bit-Feld negativ ist, und zum Registerinhalt addiert. Der Prozeß macht dann bei Schritt 430 weiter, in dem festgestellt wird, ob X = p-1 ist. Wenn bei Schritt 410 festgestellt wurde, daß das X-te n-Bit-Feld nicht negativ war, dann geht der Prozeß direkt zu Schritt 430 über, anstatt über den Schritt 420 zu gehen.
  • Wenn X nicht gleich p-1 ist, dann fährt der Prozeß mit Schritt 450 fort, in dem X um 1 dekrementiert wird, und der Prozeß kehrt danach zu Schritt 410 zurück. Der Prozeß wird dann wiederholt, bis festgestellt wird, daß X gleich p-1 ist, an welchem Punkt der Dekodierprozeß vollständig ist und folglich zu Schritt 440 übergeht, in dem die Dekodieroperation beendet wird.
  • Bei Betrachtung des früheren Beispiels zweier 16-Bit-Werte a und b, die in einen zusammengesetzten 32-Bit-Wert c kodiert sind, kann das folgende C-Code-Fragment verwendet werden, um die Dekodieroperation zu erzeugen, die in 4 dargestellt ist (es wird vorausgesetzt, daß die Regeln des ANSI-Standards angewandt werden):
  • Figure 00150001
  • Der Wert 65535 hat die 16 niedrigstwertigen Bits gleich 1 und die höchstwertigen Bits gleich 0 gesetzt. Folglich wirkt, wenn eine AND-Operation basierend auf der Eingabe von c und 65535 angewandt wird, der Wert 65535 gewissermaßen als Maske, so daß die Ausgabe der Wert a ist. Wie durch die zweite Zeile der vorstehenden Berechnung dargestellt, wird c geändert, um gleich c + (1 um 16 Bits nach links verschoben) zu sein, wenn festgestellt wird, daß a kleiner als 0 (d. h. negativ) ist. Dies addiert somit 1 zu dem niedrigstwertigen Bit des Feldes des zusammengesetzten Wertes, das b enthält. Um b zu extrahieren, ist alles, was dann nötig ist, c um 16 Bits nach rechts zu verschieben und das Ergebnis auszugeben, welches nun der korrigierte Wert von b ist.
  • Nachdem wir die Kodier- und Dekodierungstechniken von bevorzugten Ausführungsformen diskutiert haben, wird nun ein Beispiel unter Bezug auf den folgenden Code diskutiert, der darstellt, wie vier 8-Bit-Ganzzahlen mit Vorzeichen in Übereinstimmung mit bevorzugten Ausführungsformen in und aus 32-Bit-Ganzzahlen gepackt und entpackt werden können. Das Beispiel besteht aus dem Addieren der Werte in vier Arrays, wobei zuerst der Standardansatz verwendet wird, bei dem die Werte in jedem Array separat zusammenaddiert werden, und danach ein Ansatz in Übereinstimmung mit bevorzugten Ausführungsformen der vorliegenden Erfindung verwendet wird.
  • Der folgende C-Code veranschaulicht die Kodieroperation, die in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung eingesetzt wird, bei der ein 32-Bit-Register vier unabhängige 8-Bit-Werte enthält und der Registerinhalt manipuliert wird, um den kodierten zusammengesetzten Wert zu erzeugen:
  • Figure 00150002
  • Figure 00160001
  • Wenn wir die Gleichung x = (x << 1) & ( 1 << 24) betrachten, so führt die AND-Operation (x << 1) and (1 << 24) dazu, daß das höchstwertige Bit (d. h. das Vorzeichenbit) des Datenwertes im dritten n-Bit-Feld durch ein logisches UND mit einer logischen 1 verknüpft wird, was, wie zuvor diskutiert, eine 0 erzeugt, wenn der Wert positiv ist, und eine 1 erzeugt, wenn der Wert negativ ist. Wegen des damit verbundenen Verschiebens wird das Ergebnis tatsächlich mit dem niedrigstwertigen Bit des Datenwertes in dem vierten 8-Bit-Feld zusammenfallen und die Gleichung definiert, daß x zu x minus dem Ergebnis der AND-Operation wird. Dementsprechend kann man erkennen, daß das Ergebnis davon ist, vom Inhalt des 32-Bit-Registers den Wert 1, der auf das vierte 8-Bit-Feld ausgerichtet ist, zu subtrahieren, wenn der Datenwert des dritten Feldes negativ ist. Man kann erkennen, daß die nächsten zwei Gleichungen eine ähnliche Subtraktion durchführen, jedoch mit der 1 auf das dritte bzw. das zweite n-Bit-Feld ausgerichtet.
  • Der folgende Code stellt eine geeignete Dekodieroperation dar, um den Inhalt des 32-Bit-Registers so umzuwandeln, damit es die vier unabhängigen Ergebnis-Datenwerte enthält:
  • Figure 00160002
  • Nach der vorstehenden Diskussion des Kodierprozesses kann man erkennen, daß die vorstehenden Dekodiergleichungen dazu führen, daß 1 wieder zu dem Registerinhalt addiert wird, um jedwede Auswirkung zu korrigieren, die durch die Kodieroperation verursacht wurde.
  • Eine alternative Kodierungstechnik, bei der vier 8-Bit-Werte mit Vorzeichen in ein 32-Bit-Wort gepackt werden, wird durch den folgenden Code repräsentiert:
  • Figure 00160003
  • Figure 00170001
  • Gemäß der vorstehenden Gleichung werden die Werte a, b, c und d zuerst vorzeichenerweitert, um eine Länge von einem Wort (d. h. 32 Bits) zu haben, dann wird der Wert b um 8 Bits nach links verschoben, der Wert c wird um 16 Bits nach links verschoben, und der Wert d wird um 24 Bits nach links verschoben, und danach wird das gepackte Wort durch Addieren der vorzeichenerweiterten und verschobenen Werte zusammenaddiert.
  • Eine geeignete Dekodieroperation, die vier separate Ergebnis-Datenwerte liefert, wird durch den folgenden Code dargestellt:
  • Figure 00170002
  • Gemäß den vorstehenden Gleichungen wird das 32-Bit-Wort zuerst dekodiert, indem eine Dekodieroperation in Übereinstimmung mit bevorzugten Ausführungsformen der vorliegenden Erfindung angewandt wird, und dann das Wort nach rechts verschoben wird, um es auf das i-te 8-Bit-Feld mit den unteren 8 Bits auszurichten, bevor dieser Wert in einer Speicherstelle, auf welche die Zeiger a, b, c bzw. d zeigen, gespeichert wird.
  • Der folgende Code ist ein Beispiel einer Addition von mehreren Werten unter Verwendung sowohl des oben erwähnten Standardansatzes als auch des Ansatzes von bevorzugten Ausführungsformen der vorliegenden Erfindung:
  • Figure 00170003
  • Figure 00180001
  • Figure 00190001
  • Wenn man die vorstehenden zwei Codestücke ablaufen läßt, sind die ausgedruckten Ergebnisse für den Standard-Ansatz und für den Ansatz der bevorzugten Ausführungsform dieselben. Jedoch benötigt der Standard-Ansatz 28 Additionen, während der Ansatz der bevorzugten Ausführungsformen nur 7 Additionen benötigt. Das Packen und Entpacken fügt jedoch ungefähr 100 Operationen hinzu, so daß die besten Ergebnisse erzielt werden, wenn die Verarbeitungsphase ziemlich komplex ist. In einer 8 × 8 DCT werden beträchtliche Vorteile erzielt, da ungefähr 450 Additionen je 64 Datenwerte erforderlich sind.
  • In Anbetracht der vorstehenden Beschreibung ist klar, daß bevorzugte Ausführungsformen der vorliegenden Erfindung es erlauben, daß nicht-SIMD-Befehle (d. h. Standardbefehle) auf zusammengesetzten Werten verwendet werden und das Ergebnis danach dekodiert wird, um einen Satz von Ergebnissen zu erzeugen, die äquivalent zur individuellen Anwendung des Algorithmus auf jeden der konstituierenden Datenwerte sind. Dies führt zu einer beträchtlichen Steigerung der Verarbeitungsgeschwindigkeit. Ein spezielles Gebiet, in dem sich diese Technik als besonders vorteilhaft herausgestellt hat, ist das Gebiet von JPEG- oder MPEG-Komprimierung und – Dekomprimierung, bei dem viele DCT-Operationen durchgeführt werden müssen, wobei jede DCT-Operation aus einer Reihe von Additionen und Multiplikationen, die auf Daten mit Vorzeichen durchgeführt werden, besteht. Zum Beispiel kann eine typische DCT auf 8-Bit-Daten mit Vorzeichen durchgeführt werden, was zu 16-Bit-Ausgaben führt. Indem die Zwischenergebnisse geeignet skaliert werden, ist es möglich, eine DCT genau zu berechnen, wobei 16-Bit-Ganzzahlen mit Vorzeichen verwendet werden. Durch Einsatz der Technik der bevorzugten Ausführungsformen der vorliegenden Erfindung können zwei 16-Bit-DCT-Berechnungen parallel auf einem 32-Bit-Prozessor unter Verwendung eines standardmäßigen 32-Bit-Arithmetikbefehls durchgeführt werden. Ein Vorverarbeitungsschritt wird durchgeführt, um die für die zwei DCTs verwendeten Daten in einen zusammengesetzten Wert zu kodieren, wonach der normale DCT-Algorithmus ohne Änderung angewandt wird. Das Ergebnis wird dann in die zwei DCT-Ergebnisse dekodiert. Da die Kodierung und Dekodierung besonders effiziente Operationen sind (unter Verwendung eines ARM-Prozessorkerns werden ein Befehl für die Kodierung (ADD C,A,.B,LSL#16) und drei Befehle für die Dekodierung (MOVS B,C,ASR#16. ADC B,B,#0. gefolgt von SUB A,C,B,LSL#16) benötigt) und in der Tat bei JPEG das Packen ohne Aufwand erfolgen kann, hat es sich gezeigt, daß DCT-Berechnungen fast doppelt so schnell werden.
  • Auch wenn hier eine bestimmte Ausführungsform beschrieben wurde, erkennt man, daß die Erfindung nicht darauf beschränkt ist und daß viele Modifikationen und Ergänzungen hierzu innerhalb des Schutzbereiches der Erfindung, wie er in den angefügten Ansprüchen definiert wird, vorgenommen werden können. Zum Beispiel können verschiedene Kombinationen der Merkmale der folgenden abhängigen Ansprüche mit Merkmalen der unabhängigen Ansprüche vorgenommen werden, ohne den Schutzbereich der vorliegenden Erfindung zu verlassen.

Claims (16)

  1. Verfahren zum Betreiben eines Datenverarbeitungssystems, um mit einer Mehrzahl von p vorzeichenbehafteten "n-Bit"-Datenwerten im 2-s komplementären Format eine arithmetische Operation durchzuführen, mit den folgenden Schritten: Codieren der Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten als zusammengesetzter Wert, welcher p n-Bit-Felder aufweist, in dem eine Codieroperation (2, 3) ausgeführt wird, welche einer Ausrichtung (220, 240) jedes vorzeichenbehafteten Datenwertes mit einem entsprechenden n-Bit-Feld äquivalent ist, Vorzeichenerweiterung (210) jedes vorzeichenbehafteten Datenwertes an dem höchstwertigen Bit des zusammengesetzten Wertes, und Addieren (270) der ausgerichteten und vorzeichenerweiterten Datenwerte, um einen zusammengesetzten Wert zu bilden, Anwenden der arithmetischen Operation auf den zusammengesetzten Wert, um ein codiertes Ergebnis zu erzeugen, welches p n-Bit-Felder aufweist, und Decodieren des codierten Ergebnisses, um p endgültige Ergebnisse zu erzeugen, indem eine Decodieroperation (4) angewendet wird, welche einer Extraktion der Daten aus jedem n-Bit-Feld des codierten Ergebnisses äquivalent ist, und Korrigieren jeglicher Effekte bzw. Einflüsse, welche durch die Addition eines benachbarten vorzeichenenneiterten Datenwertes durch die Codieroperation bewirkt werden, wobei jedes Endergebnis die Anwendung der arithmetischen Operation auf einen entsprechenden vorzeichenerweiterten n-Bit-Datenwert repräsentiert, vorausgesetzt, daß jeder vorzeichenbehaftete Datenwert, welcher in den zusammengesetzten Wert codiert ist, im Falle einer direkten Anwendung der arithmetischen Operation auf diesen weder einen Überlauf noch einen Unterlauf hätte.
  2. Verfahren nach Anspruch 1, wobei der Codiervorgang die Schritte aufweist: Zuordnen (300) der Mehrzahl von n-Bit-Datenwerten zu entsprechenden n-Bit-Feldern eines Zwischenwertes, wobei ein erstes n-Bit-Feld die n Bits niedrigster Wertigkeit des Zwischenwertes aufweist und ein p-tes n-Bit-Feld die n Bits höchster Wertigkeit des Zwischenwertes aufweist, Bestimmen (320) für ein (p-1)-tes bis zu dem ersten n-Bit-Feld, beginnend mit dem (p-1)-ten n-Bit-Feld, ob der Datenwert in diesem n-Bit-Feld negativ ist, und, falls dies der Fall ist, Erzeugen eines neuen Zwischenwertes durch Subtrahieren (330) eines logischen 1-Wertes von dem Zwischenwert, welcher mit dem benachbarten n-Bit-Feld ausgerichtet ist, welches die n Bits höherer Wertigkeit repräsentiert, so daß dann, wenn das erste n-Bit-Feld verarbeitet worden ist, der Zwischenwert der zusammengesetzte Wert ist.
  3. Verfahren nach Anspruch 1 oder 2, wobei ein erstes n-Bit-Feld des codierten Ergebnisses die n Bits niedrigster Wertigkeit des codierten Ergebnisses aufweist und ein p-tes n-Bit-Feld des codierten Ergebnisses die n Bits höchster Wertigkeit des codierten Ergebnisses aufweist, wobei die Decodieroperation die Schritte aufweist: für das erste n-Bit-Feld bis zum p-1-ten n-Bit-Feld, beginnend mit dem ersten n-Bit-Feld, Bestimmen (410), ob die Daten in diesem n-Bit-Feld negativ sind, und, wenn dies der Fall ist, Erzeugen eines neuen codierten Wertes durch Addieren (420) eines logischen Wertes 1 zu dem codierten Ergebnis, welcher mit dem benachbarten n-Bit-Feld ausgerichtet ist, das die n Bits höherer Wertigkeit repräsentiert, so daß dann, wenn das (p-1)-te n-Bit-Feld verarbeitet worden ist, jedes n-Bit-Feld eines der p endgültigen Ergebnisse enthält.
  4. Verfahren nach einem der vorstehenden Ansprüche, wobei die arithmetische Operation eine Funktion von einem oder mehreren zusammengesetzten Werten ist, wobei jeder zusammengesetzte Wert eine Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten codiert, und wobei jeder zusammengesetzte Wert durch Anwenden des Codierungsschrittes auf die entsprechende Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten erzeugt wird.
  5. Verfahren nach einem der vorstehenden Ansprüche, wobei die arithmetische Operation eine Mehrzahl von Operationen aufweist.
  6. Verfahren nach einem der vorstehenden Ansprüche, wobei die arithmetische Operation eine oder mehrere diskrete Cosinustransformationsvorgänge (DCT) aufweist, wobei jeder DCT-Vorgang eine Funktion eines oder mehrerer zusammengesetzter Werte ist, wobei jeder zusammengesetzte Wert eine Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten codiert und wobei jeder zusammengesetzte Wert erzeugt wird durch Anwenden des Codierungsschrittes auf die entsprechende Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten.
  7. Verfahren nach Anspruch 6, wobei der eine oder die mehreren DCT-Vorgänge angewendet werden, um eine Kompression oder Dekompression nach dem Joint Photographic Expert Group-(JPEG-) Verfahren oder dem Moving Pictures Expert Group- (MPEG-) Verfahren auszuführen.
  8. Datenverarbeitungssystem zum Durchführen einer arithmetischen Operation mit einer Mehrzahl von p vorzeichenbehafteten "n-Bit"-Datenwerten im 2-s komplementären Format, welches aufweist: einen Prozessor (50, 60), um die arithmetische Operation anzuwenden, einen Speicher (20), um die Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten zu speichern, wobei der Prozessor so ausgelegt ist, daß er vor der Ausführung der arithmetischen Operation die Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten aus dem Speicher abruft und die Mehrzahl von vorzeichenbehafteten n-Bit-Daten als einen zusammengesetzten Wert codiert, welcher p n-Bit-Felder aufweist, indem eine Codieroperation (2, 3) ausgeführt wird, die einer Ausrichtung (220, 240) jedes vorzeichenbehafteten Datenwertes mit einem entsprechenden n-Bit-Feld äquivalent ist, Vorzeichenerweiterung (210) jedes vorzeichenbehafteten Datenwertes an dem Bit höchster Wertigkeit des zusammengesetzten Wertes, und Addieren (270) der ausgerichteten und vorzeichenerweiterten Datenwerte, um den zusammengesetzten Wert zu bilden, wobei der zusammengesetzte Wert in dem Speicher gespeichert wird, wobei der Prozessor so ausgelegt ist, daß er die arithmetische Operation auf den zusammengesetzten Wert anwendet, um ein codiertes Ergebnis zu erzeugen, welches p n-Bit-Felder aufweist, und das codierte Ergebnis in dem Speicher zu speichern, und wobei der Prozessor weiterhin dafür ausgelegt ist, daß er im Anschluß an die Anwendung der arithmetischen Operation das codierte Ergebnis decodiert, um p endgültige Ergebnisse zu erzeugen, indem er eine Decodieropenation (4) ausführt, welche der Extrahierung der Daten aus jedem n-Bit-Feld des codierten Ergebnisses äquivalent ist, und Korrigieren von Effekten bzw. Einflüssen, die durch die Addition eines benachbarten vorzeichenerweiterten Datenwertes durch den Codiervorgang bewirkt wurde, wobei jedes Endergebnis die Anwendung der arithmetischen Operation auf einen entsprechenden, vorzeichenbehafteten n-Bit-Datenwert repräsentiert, vorausgesetzt, daß jeder vorzeichenbehaftete Datenwert, welcher in den zusammengesetzten Wert codiert wurde, im Falle einer direkten Anwendung der arithmetischen Operation darauf weder einen Überlauf noch einen Unterlauf gehabt hätte.
  9. Datenverarbeitungssystem nach Anspruch 8, wobei der Prozessor einen Schieber (60) und eine arithmetische Logikeinheit (ALU) (50) aufweist, die so ausgelegt sind, daß sie die Codier- und Decodiervorgänge ausführen.
  10. Datenverarbeitungssystem nach Anspruch 8 oder 9, wobei der Speicher eine Registerbank ist, um von dem Prozessor verwendete Datenwerte zu speichern.
  11. Datenverarbeitungssystem nach einem der Ansprüche 8 bis 10, wobei der Codiervorgang so ausgelegt ist, daß er die Mehrzahl von n-Bit-Datenwerten entsprechenden n-Bit-Feldern eines Zwischenwertes zuordnet, wobei ein erstes n-Bit-Feld die n geringwertigsten Bits des Zwischenwertes aufweist und ein p-tes n-Bit-Feld die n höchstwertigen Bits des Zwischenwertes aufweist und weiterhin so ausgelegt ist, daß für ein (p-1)-tes bis erstes n-Bit-Feld, beginnend mit dem p-1-ten n-Bit-Feld bestimmt wird (320), ob der Datenwert in diesem n-Bit-Feld negativ ist, und, wenn dies der Fall ist, einen neuen Zwischenwert zu erzeugen, indem von dem Zwischenwert der Wert einer logischen 1 subtrahiert wird (330), welcher mit dem benachbarten n-Bit-Feld ausgerichtet ist, das n höherwertige Bits repräsentiert, so daß dann, wenn das erste n-Bit-Feld verarbeitet worden ist, der Zwischenwert der zusammengesetzte Wert ist.
  12. Datenverarbeitungssystem nach einem der Ansprüche 8 bis 11, wobei ein erstes n-Bit-Feld des codierten Ergebnisses die n Bits niedrigster Wertigkeit des codierten Ergebnisses aufweist und ein p-tes n-Bit-Feld des codierten Ergebnisses die n Bits höchster Wertigkeit des codierten Ergebnisses aufweist, und wobei der Decodiervorgang so ausgelegt ist, daß er, für das erste n-Bit-Feld bis zum (p-1)-ten n-Bit-Feld, beginnend mit dem ersten n-Bit-Feld, bestimmt (410), ob die Daten in diesem n-Bit-Feld negativ sind, und daß, wenn dies der Fall ist, ein neues codiertes Resultat erzeugt wird, indem zu dem codierten Ergebnis ein Wert einer logischen 1 addiert wird, welcher mit dem benachbarten n-Bit-Feld ausgerichtet ist, das n höherwertige Bits repräsentiert, so daß dann, wenn das (p-1)-te n-Bit-Feld verarbeitet worden ist, jedes n-Bit-Feld eines der p endgültigen Ergebnisse enthält.
  13. Datenverarbeitungssystem nach einem der Ansprüche 8 bis 12, wobei die arithmetische Operation eine Funktion eines oder mehrerer zusammengesetzter Werte ist, wobei jeder zusammengesetzte Wert eine Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten codiert und jeder zusammengesetzte Wert erzeugt wird durch Anwenden des Codiervorganges bzw. der Codieroperation auf die entsprechende Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten.
  14. Datenverarbeitungssystem nach einem der Ansprüche 8 bis 13, wobei die arithmetische Operation eine Mehrzahl von Operationen aufweist.
  15. Datenverarbeitungssystem nach einem der Ansprüche 8 bis 14, wobei die arithmetische Operation einen oder mehrere Vorgänge einer diskreten Cosinustransformation (DCT) aufweist, wobei jeder DCT-Vorgang eine Funktion von einem oder mehreren zusammengesetzten Werten ist, wobei jeder zusammengesetzte Wert eine Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten codiert und jeder zusammengesetzte Wert erzeugt wird durch Anwenden des Codierungsschrittes auf die entsprechende Mehrzahl von vorzeichenbehafteten n-Bit-Datenwerten.
  16. Computerprogrammprodukt, welches ein Computerprogramm trägt, das derart betreibbar ist, daß es einen Computer steuert, so daß er eine arithmetische Operation mit einer Mehrzahl von p vorzeichenbehafteten "n-Bit"-Datenwerten im 2-s-Komplementärtormat entsprechend dem Verfahren nach einem der Ansprüche 1 bis 7 ausführt.
DE69910245T 1998-11-20 1999-09-30 Datenverarbeitungssystem und -verfahren zur arithmetischen behandlung mehrerer zahlen mit vorzeichen Expired - Fee Related DE69910245T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9825537A GB2343969A (en) 1998-11-20 1998-11-20 A data processing apparatus and method for performing an arithemtic operation on a plurality of signed data values
GB9825537 1998-11-20
PCT/GB1999/003255 WO2000031623A1 (en) 1998-11-20 1999-09-30 A data processing system and method for performing an arithmetic operation on a plurality of signed data values

Publications (2)

Publication Number Publication Date
DE69910245D1 DE69910245D1 (de) 2003-09-11
DE69910245T2 true DE69910245T2 (de) 2004-06-09

Family

ID=10842824

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69910245T Expired - Fee Related DE69910245T2 (de) 1998-11-20 1999-09-30 Datenverarbeitungssystem und -verfahren zur arithmetischen behandlung mehrerer zahlen mit vorzeichen

Country Status (4)

Country Link
JP (1) JP2002530775A (de)
KR (1) KR20020021078A (de)
DE (1) DE69910245T2 (de)
IL (1) IL142151A0 (de)

Also Published As

Publication number Publication date
IL142151A0 (en) 2002-03-10
JP2002530775A (ja) 2002-09-17
KR20020021078A (ko) 2002-03-18
DE69910245D1 (de) 2003-09-11

Similar Documents

Publication Publication Date Title
DE10297000B4 (de) Verfahren und Vorrichtung zur parallelen Datenverschiebung nach rechts mit Datenzusammenfügung
DE60226222T2 (de) Akkumulator mit erweiterter präzision
DE102019109847A1 (de) Beschleunigung der matrixmultplikation dünnbesetzter matrizen unter verwendung einer spaltenfaltung und -verdichtung
DE60318494T2 (de) Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE10085322B4 (de) Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form
DE3486457T2 (de) Integrierter Einchip-Prozessor für die Verarbeitung von digitalen Signalen entweder in einem schnellen oder einem langsamen Betrieb
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE69432659T2 (de) Rotationsregister zur orthogonalen Datentransformation
DE68923262T2 (de) Zweierkomplementmultiplikation mit einem Vorzeichen-/Grössen-Multiplizierer.
DE10393918T5 (de) Effiziente Multiplikation kleiner Matrizen durch Verwendung von SIMD-Registern
DE112004001648T5 (de) Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung
DE3855497T2 (de) Datenverarbeitungsgerät zur Berechnung eines multiplikativ invertierten Elements eines endigen Körpers
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE1549477B1 (de) Einrichtung zur schnellen akkumulation einer anzahl mehr stelliger binaerer operanden
DE60022206T2 (de) Registerspeicher zur verarbeitung von 2-d matrix
DE2814078A1 (de) Addierschaltung mit zeitweiliger zwischenspeicherung des uebertrags
DE3701599C2 (de)
WO2004059463A1 (de) Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden
DE102006025569A1 (de) Vorrichtung und Verfahren zum Berechnen einer Multiplikations-Additions-Operation und zum Berechnen eines Ergebnisses einer modularen Multiplikation
EP1576463B1 (de) Modulare multiplikation mit paralleler berechnung der vorausschau-parameter
EP1499954A2 (de) Berechnung eines ergebnisses einer modularen multiplikation
DE10164416A1 (de) Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens
DE60316342T2 (de) Multiplizierer mit nachschlagetabellen
DE69910245T2 (de) Datenverarbeitungssystem und -verfahren zur arithmetischen behandlung mehrerer zahlen mit vorzeichen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee