DE60022206T2 - Registerspeicher zur verarbeitung von 2-d matrix - Google Patents
Registerspeicher zur verarbeitung von 2-d matrix Download PDFInfo
- 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
Links
- 239000011159 matrix material Substances 0.000 title claims description 48
- 238000012545 processing Methods 0.000 title claims description 22
- 230000017105 transposition Effects 0.000 claims description 19
- 238000000034 method Methods 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims 3
- 238000010586 diagram Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation 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 Registergruppe10 aus1 weist acht MMXTM Register mit den Bezeichnungen mm012 bis mm714 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 Einheit16 zu einer hohen Einheit18 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 aus2 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 mm012 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 mm120 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 mm714 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 aus3 zu transponieren. Die Matrixtransposition ist in der Mathematik allgemein bekannt. Nach der Transposition speichert das erste MMXTM Register mm012 die ursprüngliche erste Datenspalte, wobei die erste Zeile der ursprünglichen ersten Spalte in der niedrigen Einheit16 gespeichert wird, während die letzte Zeile der ursprünglichen ersten Spalte in der hohen Einheit18 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 Registergruppe10 der Anzahl der VMX Register, die in der VMX Registergruppe22 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 Registergruppe22 speichert die transponierten Matrixdaten aus der MMXTM Registergruppe und kann automatisch durch die Registeraktualisierungslogik23 aktualisiert werden, wenn eine Einheit eines Registers in der MMXTM Gruppe modifiziert wird. Somit führt eine Last einer Zeile der MMXTM Registergruppe10 automatisch zu einer Last einer Spalte der VMX Registergruppe22 . Zum Beispiel können die Daten aus dem ersten MMXTM Register mm012 automatisch in den niedrigen Einheiten der VMX Register VM0 bis VM7 gespeichert werden, wobei die Daten aus dem zweiten MMXTM Register mm120 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 aus5 dargestellt ist. Zur Bearbeitung der Zeilenelemente der Matrix kann ein Programm einfach auf eines oder mehrere der MMXTM Register mm012 bis mm714 verweisen bzw. Bezug nehmen. Zur Bearbeitung der Spaltenelemente der Matrix nimmt ein Programm stattdessen Bezug auf die VMX Register vm024 bis vm726 . 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 System50 kann einen mit dem Speicher54 gekoppelten Prozessor52 aufweisen. Der Prozessor52 umfasst verschiedene im Fach allgemein bekannte Komponenten, von denen viele zur besseren Veranschaulichung in der Abbildung aus6 weggelassen wurden. Der Befehlsspeicher56 speichert Befehle, die auf eines oder mehrere MMXTM Register10 oder eines oder mehrere VMX Register22 verweisen bzw. Bezug nehmen. Die Registeraktualisierungslogik23 koordiniert die automatische Aktualisierung der VMX Register22 , 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 Datenspeicher52 . - 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)
- 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. - 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.
- 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.
- Prozessor nach Anspruch 3, wobei die erste Anzahl von Registern der zweiten Anzahl von Registern entspricht.
- 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.
- 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.
- 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. - 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.
- 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.
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)
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)
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 |
-
1999
- 1999-07-26 US US09/360,612 patent/US6625721B1/en not_active Expired - Fee Related
-
2000
- 2000-06-26 DE DE60022206T patent/DE60022206T2/de not_active Expired - Fee Related
- 2000-06-26 EP EP00941742A patent/EP1212677B1/de not_active Expired - Lifetime
- 2000-06-26 WO PCT/US2000/017630 patent/WO2001008005A1/en active IP Right Grant
- 2000-06-26 CN CN2004100038202A patent/CN1532686B/zh not_active Expired - Fee Related
- 2000-06-26 AU AU56404/00A patent/AU5640400A/en not_active Abandoned
- 2000-06-26 CN CNB008108838A patent/CN1160621C/zh not_active Expired - Fee Related
- 2000-06-26 JP JP2001513032A patent/JP4979169B2/ja not_active Expired - Fee Related
- 2000-06-30 TW TW089112946A patent/TWI243332B/zh not_active IP Right Cessation
-
2002
- 2002-07-23 HK HK02105426.1A patent/HK1043850B/zh not_active IP Right Cessation
-
2011
- 2011-08-16 JP JP2011177920A patent/JP5466211B2/ja not_active Expired - Fee Related
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 |