DE60022206T2 - Registerspeicher zur verarbeitung von 2-d matrix - Google Patents

Registerspeicher zur verarbeitung von 2-d matrix Download PDF

Info

Publication number
DE60022206T2
DE60022206T2 DE60022206T DE60022206T DE60022206T2 DE 60022206 T2 DE60022206 T2 DE 60022206T2 DE 60022206 T DE60022206 T DE 60022206T DE 60022206 T DE60022206 T DE 60022206T DE 60022206 T2 DE60022206 T2 DE 60022206T2
Authority
DE
Germany
Prior art keywords
registers
group
matrix
data matrix
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 - Fee Related
Application number
DE60022206T
Other languages
English (en)
Other versions
DE60022206D1 (de
Inventor
K. George CHEN
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE60022206D1 publication Critical patent/DE60022206D1/de
Application granted granted Critical
Publication of DE60022206T2 publication Critical patent/DE60022206T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein Computersysteme und im Besonderen Prozessorarchitekturen.
  • 2. Beschreibung des Stands der Technik
  • Bestimmte Prozessoren sind so gestaltet, dass sie Erweiterungen ihrer Befehlssatzarchitektur (ISA als englische Abkürzung von Instruction Set Architecture) für Multimedia-Operationen vorsehen. Zum Beispiel implementieren die von den Prozessoren Pentium® II, Pentium® III und CeleronTM, die von der Intel Corporation, Santa Clara, Kalifornien, USA, im Handel erhältlich sind, unterstützten MMXTM Befehle verschiedene Funktionen, die für Multimedia-Anwendungen nützlich sind, wie etwa die digitale Signalverarbeitung sowie die Audio- und Videoverarbeitung. Diese Befehle unterstützen SIMD-Operationen (SIMD als englische Abkürzung von „Single Instruction Multiple Data") an Multimedia- und Kommunikations-Datenarten. Der Einsatz dieser Befehle sieht zwar eine Verbesserung gegenüber Kombinationen bereits bestehender Befehle zur Ausführung einer bestimmten Funktion vor, und einzelne MMXTM Befehle sind für bestimmte Verarbeitungsarten eine effiziente Lösung, allerdings verbleiben weiterhin verschiedene Hindernisse bzw. Behinderungen für eine schnellere Multimedia-Verarbeitung. Zum Beispiel führen zahlreiche Implementierungen Block-basierter Bild- und Videoverarbeitungsalgorithmen (wie etwa die Formate Joint Photographic Experts Group (JPEG) und Moving Picture Expert Group (MPEG)) dazu, dass Daten, die in einer Gruppe von Registern gespeichert sind, auf die als Operanden für die MMXTM Befehle zugegriffen werden kann, während mathematischen Matrixoperationen transponiert werden.
  • EP-A-0743594 offenbart ein Verfahren zur Umsetzung einer Matrixtranspositionsoperation in einem Computer. Das Verfahren verwendet Computerbefehle, welche einen Datenstring restrukturieren, indem die ersten und letzten Teilstrings des Datenstrings an unveränderten Positionen gehalten werden, und wobei die Positionen von mindestens zwei intermediären Teilstrings gewechselt werden. Der Datenstring wird aus Teilstrings gebildet, die jeweils einen oder mehrere Datenwerte in einer Matrix darstellen. Der Computerbefehl kann in einem einzigen Registerspeicher mit einer vorbestimmten Bitkapazität bewirkt werden, die durch eine einzige Adresse adressiert werden kann, oder in einem Paar derartiger Registerspeicher.
  • Die Transposition von Daten unter Registern erzeugt einen signifikanten Overhead, wodurch jedoch der Durchsatz des Prozessors insgesamt für die multimediale Verarbeitung verlangsamt wird. Somit wäre jede Technik, die diese Verzögerungen verhindert oder so gering wie möglich hält, ein wichtiger Fortschritt auf dem Gebiet der Prozessoren.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Vorgesehen ist gemäß einem ersten Aspekt der vorliegenden Erfindung ein Prozessor gemäß dem gegenständlichen Anspruch 1.
  • Vorgesehen ist gemäß einem zweiten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen Anspruch 7.
  • Vorgesehen ist gemäß einem dritten Aspekt der vorliegenden Erfindung ein System gemäß dem gegenständlichen Anspruch 9.
  • Die Merkmale der Erfindung sind in den Unteransprüchen definiert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden genauen Beschreibung der vorliegenden Erfindung deutlich. In den Zeichnungen zeigen:
  • 1 ein Diagramm einer Gruppe von MMXTM Registern gemäß dem Stand der Technik;
  • 2 ein Diagramm der Gruppe von MMXTM Registern, die einen Bilddatenblock von 8 Pixeln mal 8 Pixeln speichern;
  • 3 ein Diagramm der Gruppe von MMXTM Registern, welche den transponierten Bilddatenblock von 8 Pixeln mal 8 Pixeln speichern;
  • 4 ein Diagramm einer virtuellen MMXTM Registergruppe, die mit der MMXTM Registergruppe gemäß einem Ausführungsbeispiel der vorliegenden Erfindung verknüpft ist;
  • 5 ein Diagramm der der Gruppe virtueller MMXTM Register, welche den transponierten Bilddatenblock mit 8 Pixeln mal 8 Pixeln speichert; und
  • 6 ein Diagramm eines Systems mit einem Prozessor mit einer MMXTM Registergruppe und einer virtuellen MMXTM Registergruppe gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Ein Ausführungsbeispiel der vorliegenden Erfindung umfasst ein Verfahren und eine Vorrichtung zur Erweiterung von MMXTM Registern, so dass diese für zweidimensionale (2D) Matrixoperationen effizienter sind.
  • Verweise in der Patentschrift auf „ein Ausführungsbeispiel" der vorliegenden Erfindung beziehen sich auf ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, das bzw. die in Verbindung mit dem Ausführungsbeispiel beschrieben worden ist und in mindestens einem Ausführungsbeispiel der vorliegenden Erfindung enthalten ist. Das Vorkommen der Phrase „in einem Ausführungsbeispiel" an verschiedenen Stellen in der Patentschrift bezieht sich nicht unbedingt stets auf das gleiche Ausführungsbeispiel.
  • Bei der Ausführung eines Befehls nimmt ein Prozessor für gewöhnlich Bezug auf einen oder mehrere Registeroperanden. Für MMXTM Befehle kann es sich bei den Registeroperanden um ein Register oder mehrere Register einer besonderen Gruppe von Registern handeln, die als MMXTM Register bezeichnet sind. Die Abbildung aus 1 zeigt ein Diagramm einer Gruppe von MMXTM Registern gemäß dem Stand der Technik. Die Registergruppe 10 aus 1 weist acht MMXTM Register mit den Bezeichnungen mm0 12 bis mm7 14 auf. In anderen Ausführungsbeispielen kann die Anzahl der Register größer oder kleiner als acht sein. Jedes Register weist eine Mehrzahl von Dateneinheiten auf, die gemäß der Abbildung von einer niedrigen Einheit 16 zu einer hohen Einheit 18 angeordnet sind. In einem Ausführungsbeispiel umfasst eine Einheit ein Byte. In anderen Ausführungsbeispielen kann eine Einheit ein Wort, ein Doppelwort oder eine andere Speichereinheit umfassen. Bei mindestens einem bekannten System ist die Anzahl der Einheiten (z.B. Bytes) pro MMXTM Register gleiche acht, wobei in anderen Systemen natürlich auch eine andere Anzahl von Einheiten eingesetzt werden kann. Zur effizienten Implementierung der SIMD-Multimedia-Verarbeitung unter Verwendung der MMXTM Register sollten die zu verarbeitenden Daten so ausgerichtet bzw. angeordnet werden, dass mehrere verwandte Datenobjekte in einem einzigen MMXTM Register angeordnet sind. Zum Beispiel kann angenommen werden, dass ein Bilddatenblock mit 8 Pixeln mal 8 Pixeln in den MMXTM Registern gemäß der Abbildung aus 2 angeordnet ist, wobei jeder Pixelwert P(i, j) in einer Einheit dargestellt ist, und wobei die Gruppe der Register insgesamt eine Matrix darstellt. Der Block mit 8 Pixeln mal 8 Pixeln kann einen Abschnitt eines größeren Bilds darstellen. In dem vorliegenden Beispiel wird die erste Zeile der Bilddaten des Blocks in dem ersten MMXTM Register mm0 12 gespeichert, wobei die erste Spalte der ersten Zeile in der niedrigen Einheit von mm0 und die letzte Spalte der ersten Zeile in der hohen Einheit von mm0 gespeichert sind, wobei die zweite Zeile der Bilddaten in dem zweiten MMXTM Register mm1 20 gespeichert ist, wobei die erste Spalte der zweiten Zeile in der niedrigen Einheit von mm1 gespeichert ist, und wobei die letzte Spalte der zweiten Zeile in der hohen Einheit von mm1 gespeichert ist und so weiter.
  • Sobald die Daten gemäß der Abbildung in den MMXTM Registern gespeichert sind, kann der Prozessor Befehle ausführen, um die 8 × 8 Matrix Zeile für Zeile nacheinander zu bearbeiten. Diese Art der Verarbeitung wird für gewöhnlich zum Beispiel in Block-basierten Bilddarstellungsanwendungen eingesetzt sowie auch in anderen Anwendungen. Alle Daten der Zeile 0 können zum Beispiel den Daten der Zeile 3 unter Verwendung eines einzigen MMXTM Befehls hinzugefügt werden, wie dies nachstehend dargestellt ist.
  • PADDB MM0, MM3; Zeile 0 zu Zeile 3 addieren und Ergebnisse in Zeile 0 speichern.
  • Die Bearbeitung der 8 × 8 Matrix Spalte für Spalte nacheinander stellt jedoch Probleme dar, da die Daten jeder Spalte auf die acht MMXTM Register verteilt sind. Zum Beispiel sind die Daten der ersten Spalte auf die niedrigen Einheiten von mm0 12 bis mm7 14 verteilt, und die Daten der letzten Spalte sind entsprechend auf die hohen Einheiten von mm0 bis mm7 verteilt. Um weiter die Vorzüge der Verwendung der MMXTM SIMD-Verarbeitung zu nutzen, ist es erforderlich, die 8 × 8 Matrix gemäß der Abbildung aus 3 zu transponieren. Die Matrixtransposition ist in der Mathematik allgemein bekannt. Nach der Transposition speichert das erste MMXTM Register mm0 12 die ursprüngliche erste Datenspalte, wobei die erste Zeile der ursprünglichen ersten Spalte in der niedrigen Einheit 16 gespeichert wird, während die letzte Zeile der ursprünglichen ersten Spalte in der hohen Einheit 18 gespeichert wird, wie dies abgebildet ist. In ähnlicher Weise speichern die anderen MMXTM Register Spalten der 8 × 8 Matrix, wie dies abgebildet ist.
  • Zwar kann die Transposition der 8 × 8 Matrix unter Verwendung bekannter Pack- und Entpackbefehle ausgeführt werden, allerdings ist diese Verarbeitung sehr ineffizient und verursacht erheblichen Overhead bezüglich der Verarbeitung. Allgemein kann die Transpositionsverarbeitung für eine 8 × 8 Matrix durch die Ausführung von vier 4 × 4 Matrixtranspositionen implementiert werden, wobei jede Transposition mindestens 12 Verarbeitungszyklen in einem Pentium® III Prozessor erfordert. Somit werden mindestens 64 Zyklen lediglich für die Verschiebung der Daten verwendet, so dass ein MMXTM Befehl verwendet werden kann, um die acht Elemente einer bestimmten Spalte zu bearbeiten.
  • Die Ausführungsbeispiele der vorliegenden Erfindung machen es nicht mehr erforderlich, die Daten in den MMXTM Registern über eine Reihe von Pack- und Entpackbefehlen zu transponieren, indem eine zusätzliche Gruppe von Registern in dem Prozessor zur Unterstützung der Multimedia-Verarbeitung bereitgestellt wird. In Ausführungsbeispielen der vorliegenden Erfindung ist eine äquivalente „spiegelbildliche" Gruppe der MMXTM Register in die Prozessorarchitektur eingebaut. Diese Registergruppe kann als die virtuelle MMX Registergruppe oder als VMX Gruppe bezeichnet werden. Die Abbildung aus 4 zeigt ein Diagramm der virtuellen MMX Registergruppe, die gemäß einem Ausführungsbeispiel mit der MMXTM Registergruppe verknüpft ist. In einem Ausführungsbeispiel entspricht die Anzahl der MMXTM Register in der MMXTM Registergruppe 10 der Anzahl der VMX Register, die in der VMX Registergruppe 22 vorgesehen sind. In einem Ausführungsbeispiel ist ferner die Anzahl der VMX Register größer oder gleich der Anzahl der Einheiten in jedem MMXTM Register (wobei eine Einheit abhängig von der Implementierung ein Byte, ein Wort, ein Doppelwort oder eine Speichereinheit darstellt). Die VMX Registergruppe 22 speichert die transponierten Matrixdaten aus der MMXTM Registergruppe und kann automatisch durch die Registeraktualisierungslogik 23 aktualisiert werden, wenn eine Einheit eines Registers in der MMXTM Gruppe modifiziert wird. Somit führt eine Last einer Zeile der MMXTM Registergruppe 10 automatisch zu einer Last einer Spalte der VMX Registergruppe 22. Zum Beispiel können die Daten aus dem ersten MMXTM Register mm0 12 automatisch in den niedrigen Einheiten der VMX Register VM0 bis VM7 gespeichert werden, wobei die Daten aus dem zweiten MMXTM Register mm1 20 automatisch in den zweit niedrigsten Einheiten der VMX Register gespeichert werden können und so weiter.
  • Wenn die MMXTM Register in erneutem Bezug auf die Abbildung aus 2 mit einer gemäß der Abbildung mit P0,0 bis P7,7 bezeichneten 8 × 8 Matrix geladen sind, so können die VMX Register automatisch durch die Registeraktualisierungslogik mit der transponierten Matrix geladen werden, wie dies in der Abbildung aus 5 dargestellt ist. Zur Bearbeitung der Zeilenelemente der Matrix kann ein Programm einfach auf eines oder mehrere der MMXTM Register mm0 12 bis mm7 14 verweisen bzw. Bezug nehmen. Zur Bearbeitung der Spaltenelemente der Matrix nimmt ein Programm stattdessen Bezug auf die VMX Register vm0 24 bis vm7 26. Da die MMXTM Register in der Prozessorhardware mit den VMX Registern gespiegelt werden, gibt es keine Kohärenzprobleme. Alle MMXTM Befehle können unter Verwendung von Verweisen auf die entsprechend erforderlichen Register mit jeder der Registergruppen bearbeitet werden. Änderungen des Befehlssatzes des Prozessors sind nicht erforderlich, wobei in einem Programm lediglich die Operandenbezüge bzw. die Operandenverweise geändert werden können.
  • Ein Vorteil der Ausführungsbeispiele gemäß der vorliegenden Erfindung gegenüber existierenden Prozessorarchitekturen ist es, dass die Erfindung eine höhere Parallelität für Matrixoperationen vorsieht. Erreicht wird dies durch die Vermeidung aufwändiger bzw. kostspieliger Transpositionen für Spaltenoperationen durch die Ausführung der Mehrzahl von Pack- und Entpackbefehlen.
  • Ein Beispiel für den möglichen Einsatz der vorliegenden Erfindung ist in dem DCT-Algorithmus (DCT als englische Abkürzung von Discrete Cosine Transform), der zur Verarbeitung von Blöcken von 8 Pixeln mal 8 Pixeln in zahlreichen Videoverarbeitungssystemen zum Einsatz kommt. Zur Durchführung einer 8 × 8 DCT umfasst die Verarbeitung gegenwärtig zuerst die Durchführung einer 1 × 8 Spaltentransformation, die Transposition der 8 × 8 Matrix, die Durchführung einer weiteren 1 × 8 Spaltentransformation und die folgende erneute Transposition der Ergebnisse zur Bestimmung der DCT-Koeffizienten. Die am meisten optimierte, aktuell auf Prozessoren der Pentium® Klasse laufende DCT benötigt etwa 300 Verarbeitungszyklen. Davon werden etwa 100 Zyklen zur Durchführung von Transpositionsoperationen für eine 8 × 8 Matrix verwendet. Die Implementierung der vorliegenden Erfindung führt somit zu einer Verbesserung von ungefähr 30% in Bezug auf die DCT-Verarbeitung. Ähnliche Leistungsverbesserungen können für inverse DCTs erreicht werden. Zar ist hierin ein Beispiel für eine DCT erörtert, wobei die Ausführungsbeispiele der vorliegenden Erfindung jedoch für alle Matrixoperationen nützlich sein können, einschließlich der Operationen, die in verschiedenen Bild- und Videokomprimierungsalgorithmen zum Einsatz kommen.
  • Die vorliegende Erfindung wurde vorstehend zwar in Bezug auf eine zweidimensionale (2D) Matrix beschrieben, wobei das Prinzip aber auch für drei oder mehr Dimensionen geeignet ist. Zum Beispiel kann eine dritte Registergruppe in das Design des Prozessors integriert werden, um andere Transpositionen der Matrixdaten zu speichern.
  • Die Abbildung aus 6 zeigt ein Diagramm eines Systems mit einem Prozessor mit einer MMXTM Registergruppe und einer virtuellen MMXTM Registergruppe gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Das System 50 kann einen mit dem Speicher 54 gekoppelten Prozessor 52 aufweisen. Der Prozessor 52 umfasst verschiedene im Fach allgemein bekannte Komponenten, von denen viele zur besseren Veranschaulichung in der Abbildung aus 6 weggelassen wurden. Der Befehlsspeicher 56 speichert Befehle, die auf eines oder mehrere MMXTM Register 10 oder eines oder mehrere VMX Register 22 verweisen bzw. Bezug nehmen. Die Registeraktualisierungslogik 23 koordiniert die automatische Aktualisierung der VMX Register 22, wenn sich die MMXTM Register ändern. Der Multiplexer (MUX) 58 wählt Daten aus den MMXTM Registern oder den VMX Registern zur Eingabe in die Arithmetik-Logik-Einheit (ALU als englische Abkürzung von Arithmetic Logic Unit) aus. Die ALU erzeugt Daten für den Datenspeicher 52.
  • Die vorliegende Erfindung ermöglicht die Manipulation von MMXTM Registern auf intuitivere Art und Weise. Durch das Hinzufügen einer Spiegelregistergruppe kann die Implementierung aller Block-basierten Algorithmen vereinfacht und deren Leistungsfähigkeit erhöht werden. Zu einigen Beispielen für Anwendungen, die von der vorliegenden Erfindung profitieren, zählen unter anderem DCTs (diskrete Kosinustransformationen), die in Videokomprimierungsalgorithmen zum Einsatz kommen, Matrixtransformationen in dreidimensionalen (3D) Grafikalgorithmen und sonstige.
  • Die vorliegende Erfindung wurde vorstehend zwar in Bezug auf veranschaulichende Ausführungsbeispiele beschrieben, wobei die Beschreibung jedoch nicht einschränkend auszulegen ist. Gemäß dem Umfang der vorliegenden Erfindung sind verschiedene Modifikationen der veranschaulichenden Ausführungsbeispiele sowie anderer Ausführungsbeispiele der Erfindung möglich, die für den Fachmann auf dem Gebiet, das die vorliegende Erfindung betrifft, offensichtlich sind.

Claims (9)

  1. Prozessor, der folgendes umfasst: eine erste Gruppe von Registern (10), welche eine Datenmatrix speichern; eine zweite Gruppe von Registern (22), die eine Transposition der Datenmatrix speichern; gekennzeichnet durch eine Logik (23), die automatisch die zweite Gruppe von Registern modifiziert, so dass das Transpositionsverhältnis zwischen der in der ersten Gruppe von Registern gespeicherten Datenmatrix und der in der zweiten Gruppe von Registern gespeicherten Transposition der Datenmatrix aufrechterhalten wird, als Reaktion auf eine Modifikation der ersten Gruppe von Registern.
  2. Prozessor nach Anspruch 1, wobei eine Modifikation einer Zeile der Matrix in der ersten Gruppe von Registern automatisch zu einer entsprechenden Modifikation einer Spalte der transponierten Kopie der Matrix in der zweiten Gruppe von Registern führt.
  3. Prozessor nach Anspruch 1, wobei die erste Gruppe von Registern eine erste Anzahl von Registern umfasst, wobei jedes. Register eine erste Anzahl von Speichereinheiten umfasst, wobei die zweite Gruppe von Registern eine zweite Anzahl von Registern umfasst, wobei jedes Register eine zweite Anzahl von Speichereinheiten umfasst, und wobei die zweite Anzahl von Speichereinheiten größer oder gleich der ersten Anzahl von Registern ist.
  4. Prozessor nach Anspruch 3, wobei die erste Anzahl von Registern der zweiten Anzahl von Registern entspricht.
  5. Prozessor nach Anspruch 4, wobei die erste Gruppe von Registern MMXTM Register umfasst, wobei die erste Anzahl von Registern gleich acht ist, und wobei die Datenmatrix Bilddaten umfasst.
  6. Prozessor nach Anspruch 1, wobei der Prozessor einen Befehl ausführt, der sich auf ein Register der ersten Gruppe von Registern bezieht, so dass eine Zeile der Datematrix bearbeitet wird, und wobei ein Befehl ausgeführt wird, der sich auf ein Register der zweiten Gruppe von Registern bezieht, so dass eine Spalte der Datenmatrix bearbeitet wird.
  7. Verfahren der Verwendung von zwei Gruppen von Registern zur Matrixverarbeitung durch einen Prozessor, wobei das Verfahren die folgenden Schritte umfasst: das Speichern einer Datenmatrix in einer ersten Gruppe von Registern (10), wobei die erste Gruppe von Registern eine erste Anzahl von Registern umfasst, wobei jedes Register eine erste Anzahl von Speichereinheiten umfasst, wobei jede Speichereinheit ein Element der Matrix speichert; das Transponieren der Datenmatrix in eine zweite Gruppe von Registern (22), wobei die zweite Gruppe von Registern eine zweite Anzahl von Registern umfasst, wobei jedes Register eine zweite Anzahl von Speichereinheiten umfasst; das automatische Modifizieren (23) der zweiten Gruppe von Registern, so dass das Transpositionsverhältnis zwischen der in der ersten Gruppe von Registern gespeicherten Datenmatrix und der Transposition der in der zweiten Gruppe von Registern gespeicherten Datenmatrix aufrechterhalten wird, als Reaktion auf eine Modifikation der ersten Gruppe von Registern; und die Bezugnahme auf eines der Register der ersten Gruppe von Registern, so dass eine Zeile der Datenmatrix bearbeitet wird; und die Bezugnahme auf eines der Register der zweiten Gruppe von Registern, so dass eine Spalte der Datenmatrix bearbeitet wird.
  8. Verfahren nach Anspruch 7, wobei dieses ferner den Einsatz der beiden Gruppen von Registern für eine DCT-Verarbeitung (Discrete Cosine Transform) einer Matrix von Bilddaten durch einen Prozessor zumindest teilweise durch Bezugnahme auf eines der Register der zweiten Gruppe von Registern umfasst, so dass eine Spalte der Matrix bearbeitet wird.
  9. System (50), das folgendes umfasst: einen Speicher (54); einen mit dem Speicher gekoppelten Prozessor (52), wobei der Prozessor folgendes umfasst: eine erste Gruppe von Registern (10), welche eine Datenmatrix speichern; eine zweite Gruppe von Registern (22), welche eine Transposition der Datenmatrix speichern; gekennzeichnet durch eine Logik (23), die automatisch die zweite Gruppe von Registern modifiziert, so dass das Transpositionsverhältnis zwischen der in der ersten Gruppe von Registern gespeicherten Datenmatrix und der in der zweiten Gruppe von Registern gespeicherten Transposition der Datenmatrix aufrechterhalten wird, als Reaktion auf eine Modifikation der ersten Gruppe von Registern.
DE60022206T 1999-07-26 2000-06-26 Registerspeicher zur verarbeitung von 2-d matrix Expired - Fee Related DE60022206T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/360,612 US6625721B1 (en) 1999-07-26 1999-07-26 Registers for 2-D matrix processing
US360612 1999-07-26
PCT/US2000/017630 WO2001008005A1 (en) 1999-07-26 2000-06-26 Registers for 2-d matrix processing

Publications (2)

Publication Number Publication Date
DE60022206D1 DE60022206D1 (de) 2005-09-29
DE60022206T2 true DE60022206T2 (de) 2006-03-30

Family

ID=23418740

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60022206T Expired - Fee Related DE60022206T2 (de) 1999-07-26 2000-06-26 Registerspeicher zur verarbeitung von 2-d matrix

Country Status (9)

Country Link
US (1) US6625721B1 (de)
EP (1) EP1212677B1 (de)
JP (2) JP4979169B2 (de)
CN (2) CN1532686B (de)
AU (1) AU5640400A (de)
DE (1) DE60022206T2 (de)
HK (1) HK1043850B (de)
TW (1) TWI243332B (de)
WO (1) WO2001008005A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020032710A1 (en) * 2000-03-08 2002-03-14 Ashley Saulsbury Processing architecture having a matrix-transpose capability
US6823087B1 (en) * 2001-05-15 2004-11-23 Advanced Micro Devices, Inc. Parallel edge filters in video codec
US7031994B2 (en) * 2001-08-13 2006-04-18 Sun Microsystems, Inc. Matrix transposition in a computer system
US7386703B2 (en) * 2003-11-18 2008-06-10 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array
US20060190517A1 (en) * 2005-02-02 2006-08-24 Guerrero Miguel A Techniques for transposition of a matrix arranged in a memory as multiple items per word
TWI342501B (en) 2006-10-25 2011-05-21 Ind Tech Res Inst Integrated transformation method and device
US8661394B1 (en) 2008-09-24 2014-02-25 Iowa State University Research Foundation, Inc. Depth-optimal mapping of logic chains in reconfigurable fabrics
US8438522B1 (en) 2008-09-24 2013-05-07 Iowa State University Research Foundation, Inc. Logic element architecture for generic logic chains in programmable devices
US8484276B2 (en) * 2009-03-18 2013-07-09 International Business Machines Corporation Processing array data on SIMD multi-core processor architectures
JP5633122B2 (ja) * 2009-06-16 2014-12-03 富士通セミコンダクター株式会社 プロセッサ及び情報処理システム
CN101706760B (zh) * 2009-10-20 2013-07-31 龙芯中科技术有限公司 矩阵转置自动控制电路系统及矩阵转置方法
US8539201B2 (en) * 2009-11-04 2013-09-17 International Business Machines Corporation Transposing array data on SIMD multi-core processor architectures
WO2013048369A1 (en) * 2011-09-26 2013-04-04 Intel Corporation Instruction and logic to provide vector load-op/store-op with stride functionality
KR101714133B1 (ko) 2011-09-26 2017-03-08 인텔 코포레이션 벡터 로드 및 저장에 스트라이드 및 마스킹 기능을 제공하는 명령어 및 로직
WO2013048420A1 (en) * 2011-09-29 2013-04-04 Intel Corporation Bi-directional copying of register content into shadow registers
US9946541B2 (en) * 2015-12-18 2018-04-17 Intel Corporation Systems, apparatuses, and method for strided access
KR102586173B1 (ko) * 2017-10-31 2023-10-10 삼성전자주식회사 프로세서 및 그 제어 방법
CN111429346A (zh) * 2020-03-16 2020-07-17 广州兴森快捷电路科技有限公司 一种基于fpga的实时视频图像放大方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3763365A (en) * 1972-01-21 1973-10-02 Evans & Sutherland Computer Co Computer graphics matrix multiplier
US4370732A (en) * 1980-09-15 1983-01-25 Ibm Corporation Skewed matrix address generator
JPS6167367A (ja) * 1984-09-10 1986-04-07 Nec Corp 画像制御装置
JPS6238075A (ja) * 1985-08-13 1987-02-19 Fuji Xerox Co Ltd 行列デ−タの転置処理装置
CA1252902A (en) * 1985-10-31 1989-04-18 David R. Pruett Method for rotating a binary image
JPH03160537A (ja) * 1989-11-20 1991-07-10 Fuji Xerox Co Ltd メモリ制御装置
JP2646778B2 (ja) * 1990-01-17 1997-08-27 日本電気株式会社 ディジタル信号処理装置
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
JP2964172B2 (ja) * 1991-03-08 1999-10-18 富士通株式会社 Dctマトリクス演算回路
JPH0540776A (ja) * 1991-08-02 1993-02-19 Fujitsu Ltd 二次元dctマトリクス演算回路
JP3697717B2 (ja) * 1993-09-24 2005-09-21 ソニー株式会社 2次元離散コサイン変換装置および2次元逆離散コサイン変換装置
JPH07175444A (ja) * 1993-12-20 1995-07-14 Hitachi Ltd 液晶ディスプレイ表示システム
US5481487A (en) 1994-01-28 1996-01-02 Industrial Technology Research Institute Transpose memory for DCT/IDCT circuit
JP2662501B2 (ja) * 1994-02-18 1997-10-15 ホアバンティエンツーグーフウンユーシェンコンシー 離散的コサイン変換及び逆変換のための集積回路プロセッサ
US5668748A (en) * 1995-04-15 1997-09-16 United Microelectronics Corporation Apparatus for two-dimensional discrete cosine transform
JPH08307868A (ja) * 1995-04-28 1996-11-22 Nec Corp 動画像復号装置
GB9509988D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
KR0175733B1 (ko) * 1995-11-01 1999-04-15 이준 비트-시리얼 메트릭스 전치를 위한 초대규모 집적회로
JPH09214746A (ja) * 1996-02-02 1997-08-15 Ricoh Co Ltd 画像出力システム及び画像形成装置
US5764553A (en) * 1996-02-28 1998-06-09 Lsi Logic Corporation Generalized data processing path for performing transformation and quantization functions for video encoder systems
JPH09312064A (ja) * 1996-05-23 1997-12-02 Victor Co Of Japan Ltd データ変換方式
WO1998018074A1 (en) 1996-10-22 1998-04-30 Philips Electronics North America Corporation System for providing custom operations of a processor for multimedia functions
JP3845920B2 (ja) * 1996-11-26 2006-11-15 ソニー株式会社 行列転置装置
JPH10207868A (ja) * 1997-01-21 1998-08-07 Sharp Corp 2次元配列転置回路
US6292433B1 (en) * 1997-02-03 2001-09-18 Teratech Corporation Multi-dimensional beamforming device
US5938763A (en) * 1997-08-06 1999-08-17 Zenith Electronics Corporation System for transposing data from column order to row order
WO1999048025A2 (en) 1998-03-18 1999-09-23 Koninklijke Philips Electronics N.V. Data processing device and method of computing the cosine transform of a matrix
US6175892B1 (en) 1998-06-19 2001-01-16 Hitachi America. Ltd. Registers and methods for accessing registers for use in a single instruction multiple data system

Also Published As

Publication number Publication date
CN1532686B (zh) 2012-11-28
HK1043850A1 (en) 2002-09-27
DE60022206D1 (de) 2005-09-29
EP1212677B1 (de) 2005-08-24
CN1532686A (zh) 2004-09-29
CN1160621C (zh) 2004-08-04
HK1043850B (zh) 2006-02-24
WO2001008005A1 (en) 2001-02-01
JP2003505786A (ja) 2003-02-12
TWI243332B (en) 2005-11-11
US6625721B1 (en) 2003-09-23
JP2012009055A (ja) 2012-01-12
EP1212677A1 (de) 2002-06-12
AU5640400A (en) 2001-02-13
CN1365463A (zh) 2002-08-21
JP4979169B2 (ja) 2012-07-18
JP5466211B2 (ja) 2014-04-09

Similar Documents

Publication Publication Date Title
DE60022206T2 (de) Registerspeicher zur verarbeitung von 2-d matrix
DE19835216B4 (de) Prozessor und Verfahren zur parallelen Datenverarbeitung
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE69913500T2 (de) Mehrprozessor-Anordnung mit geteiltem Speicherzugriff unter Vorrang-Kontrolle
DE60215835T2 (de) Reduzierung von komponenten in einer montgomery multiplikations-recheneinheit
DE202017103694U1 (de) Faltendes neuronales Netzwerk auf programmierbarem zweidimensionalem Bildprozessor
DE102010048485A1 (de) Textureinheit zur Universalberechnung
DE10393918T5 (de) Effiziente Multiplikation kleiner Matrizen durch Verwendung von SIMD-Registern
DE602004006516T2 (de) Parallel-verarbeitungs-array
DE112005003265T5 (de) Registerdateibereiche für ein Verarbeitungssystem
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE3632639A1 (de) Einrichtung zum verarbeiten von bilddaten durch faltung
DE102013020608A1 (de) System und verfahren zur Re-Faktorisierung einer quadratischen Matrix in untere und obere Dreiecksmatrizen in einem parallelen Prozessor
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE102010053969A1 (de) Gruppieren von zu texturierenden Pixeln
DE102004012516A1 (de) Computersystem zur elektronischen Datenverarbeitung
DE112016005521T5 (de) Multifunktionale Ausführungsbahn für Bildprozessor
DE69629265T2 (de) Bildskalierungsverfahren und -gerät
DE19543544C2 (de) Einrichtung zur zweidimensionalen diskreten Echtzeit-Cosinustransformation
DE3545106C2 (de)
DE102020102273A1 (de) Effizientes Matrixdatenformat anwendbar für künstliches neuronales Netzwerk
DE102019112186A1 (de) Doppelladebefehl
DE10303053A1 (de) Registerumbenennung zum Reduzieren einer Umgehung und Erhöhen einer scheinbaren physischen Registergröße
DE102022212269A1 (de) Halbleitervorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806

8339 Ceased/non-payment of the annual fee