DE112005003265T5 - Registerdateibereiche für ein Verarbeitungssystem - Google Patents

Registerdateibereiche für ein Verarbeitungssystem Download PDF

Info

Publication number
DE112005003265T5
DE112005003265T5 DE112005003265T DE112005003265T DE112005003265T5 DE 112005003265 T5 DE112005003265 T5 DE 112005003265T5 DE 112005003265 T DE112005003265 T DE 112005003265T DE 112005003265 T DE112005003265 T DE 112005003265T DE 112005003265 T5 DE112005003265 T5 DE 112005003265T5
Authority
DE
Germany
Prior art keywords
register file
data
register
area
execution
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.)
Ceased
Application number
DE112005003265T
Other languages
English (en)
Inventor
Hong San Jose Jiang
Val Shingle Springs Cook
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 DE112005003265T5 publication Critical patent/DE112005003265T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

Verfahren, das aufweist:
Beschreiben, für einen Operanden, eines dynamischen Bereiches in einer Registerdatei, wobei der beschriebene Bereich dazu dient, mehrere Datenelemente zu speichern, wobei jedes Datenelement einem Ausführungskanal einer Ausführungsmaschine zugewiesen ist; und
Anordnen von Information, die in der Registerdatei gespeichert oder aus ihr wiedergewonnen werden soll, gemäß dem beschriebenen Bereich.

Description

  • HINTERGRUND
  • Um die Leistung eines Verarbeitungssystem zu verbessern, wird ein Einzelbefehl-Mehrdaten (SIMD – Single Instruction, Multiple Data)-Befehl gleichzeitig für mehrere Operanden auf Daten in einer einzigen Befehlsperiode ausgeführt. Zum Beispiel könnte eine SIMD-Ausführungsmaschine mit acht Kanälen gleichzeitig einen Befehl für acht Operanden mit Daten mit 32 Bit ausführen, wobei jeder Operand auf einen eindeutigen Rechenkanal der SIMD-Ausführungsmaschine abgebildet wird. Darüberhinaus können ein oder mehrere Register in einer Registerdatei von den SIMD-Befehlen benutzt werden, und jedes Register kann feste Orte haben, die mit den Ausführungskanälen verknüpft sind (z.B. könnte eine Anzahl von Registern mit acht Wörtern für eine SIMD-Ausführungsmaschine mit acht Kanälen vorgesehen sein, wobei jedes Wort in einem Register einem unterschiedlichen Ausführungskanal zugewiesen ist). Eine Möglichkeit, in effizienter Weise und flexibel auf Registerinformation auf unterschiedlichen Wegen zuzugreifen, kann die Leistung einer SIMD-Ausführungsmaschine weiter verbessern.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 und 2 sind Blockschaubilder von Verarbeitungssystemen.
  • 3 veranschaulicht einen Befehl und eine Registerdatei für ein Verarbeitungssystem.
  • 4 ist ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen.
  • 5 veranschaulicht einen Befehl und eine Registerdatei für ein Verarbeitungssystem gemäß einigen Ausführungsformen.
  • 6 veranschaulicht die Abbildung eines Ausführungskanals in eine Registerdatei gemäß einigen Ausführungsformen.
  • 7 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen einschließlich eines horizontalen Schrittes.
  • 8 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen einschließlich eines horizontalen Schrittes Null.
  • 9 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen für Datenelemente vom Typ Wort.
  • 10 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen einschließlich eines vertikalen Schrittes.
  • 11 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen einschließlich eines vertikalen Schrittes Null.
  • 12 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen.
  • 13 veranschaulicht eine Bereichsbeschreibung, bei der sowohl der horizontale als auch der vertikale Schritt Null sind, gemäß einigen Ausführungsformen.
  • 14 veranschaulicht Bereichsbeschreibungen gemäß einigen Ausführungsformen.
  • 15 ist ein Blockschaubild eines System gemäß einigen Ausführungsformen.
  • GENAUE BESCHREIBUNG
  • Einige hierin beschriebene Ausführungsformen sind mit einem „Verarbeitungssystem" verknüpft. Wie hierin verwendet, kann sich der Ausdruck „Verarbeitungssystem" auf irgendeine Vorrichtung beziehen, welche Daten verarbeitet. Ein Verarbeitungssystem kann zum Beispiel mit einer Graphikmaschine verbunden sein, die Graphikdaten und/oder andere Arten der Me dieninformation verarbeitet. In manchen Fällen kann die Leistung eines Verarbeitungssystems mit der Verwendung einer SIMD-Ausführungsmaschine verbessert werden. Zum Beispiel kann eine SIMD-Ausführungsmaschine gleichzeitig einen einzelnen Fließpunkt-SIMD-Befehl für mehrere Datenkanäle ausführen (z.B. um die Transformation zu beschleunigen und/oder um dreidimensionale geometrische Formen zu liefern). Andere Beispiele von Verarbeitungssystemen umfassen eine zentrale Verarbeitungseinheit (CPU – Central Processing Unit) und einen Digitalsignalprozessor (DSP – Digital Signal Processor).
  • 1 veranschaulicht einen Typ eines Verarbeitungssystems 100, welches eine SIMD-Ausführungsmaschine 110 umfaßt. In diesem Fall empfängt die Ausführungsmaschine 110 einen Befehl (z.B. von einer Befehlsspeichereinheit) zusammen mit einem Datenvektor mit vier Komponenten (z.B. Vektorkomponenten X, Y, Z und W, jede mit Bits, ausgelegt für die Verarbeitung auf entsprechenden Kanälen 0 bis 3 der SIMD-Ausführungsmaschine 100). Die Maschine 110 kann dann gleichzeitig den Befehl für alle die Komponenten in dem Vektor ausführen. Ein solcher Ansatz wird eine „horizontale", „kanalparallele" oder „Anordnung von Strukturen (AOS – Array of Structures)"-Implementierung genannt.
  • 2 veranschaulicht einen weiteren Typ eines Verarbeitungssystems 200, welches eine SIMD-Ausführungsmaschine 210 umfaßt. In diesem Fall empfängt die Ausführungsmaschine 210 einen Befehl zusammen mit vier Operanden für Daten, wobei jeder Operand einem unterschiedlichen Vektor zugewiesen ist (z.B. den vier X-Komponenten der Vektoren V0 bis V3). Jeder Vektor kann zum Beispiel drei Ortswerte (z.B. X, Y und Z) umfassen, die einem dreidimensionalen Graphikort zugewiesen sind. Die Maschine 210 kann dann gleichzeitig den Befehl für alle die Operanden in einer einzigen Befehlsperiode durchführen. Ein solcher Ansatz wird eine „vertikale", „kanalserielle" oder „Struktur aus Anordnungen (SOA – Structure of Arrays)"-Implementierung genannt. Obwohl manche hierin beschriebenen Ausführungsformen mit einer SIMD-Ausführungsmaschine mit vier und acht Kanälen verknüpft ist, sei bemerkt, daß eine SIMD-Ausführungsmaschine irgendeine Anzahl von Kanälen größer als Eins haben könnte (z.B. könnten Ausführungsformen mit einer Ausführungsmaschine mit 32 Kanälen verknüpft sein).
  • 3 veranschaulicht ein Verarbeitungssystem 300 mit einer SIMD-Ausführungsmaschine 310 mit acht Kanälen. Die Ausführungsmaschine 310 kann eine 8 Byte-Registerdatei 320 umfassen, so wie eine allgemeine Registerdatei (GRF – General Register File) auf einem Chip, auf die zugegriffen werden kann, indem die Assembly-Sprache und/oder Maschinencodebefehle verwendet werden. Insbesondere umfaßt die Registerdatei 320 in 3 fünf Register (R0 bis R4), und die Ausführungsmaschine 310 führt den folgenden Hardwarebefehl aus:
    add(8) R1 R3 R4
  • Die „(8)" gibt an, daß der Befehl auf Operanden für alle acht Ausführungskanäle ausgeführt werden wird. Das „R1" ist ein Zieloperand (ZIEL), und „R3" und „R4" sind Quellenoperanden (QUELLE0 bzw. QUELLE1). Somit wird jedes der acht Einzelbyte-Datenelemente in R4 zu den entsprechenden Datenelementen in R3 addiert. Die acht Ergebnisse werden dann in R1 gespeichert. Insbesondere wird das erste Byte von R4 zu dem ersten Byte von R3 addiert, und das Ergebnis wird in dem ersten Byte von R1 gespeichert. Ähnlich wird das zweite Byte von R4 zu dem zweiten Byte von R3 addiert, und das Ergebnis wird in dem zweiten Byte von R1 gespeichert usw.
  • Bei manchen Anwendungen kann es hilfreich sein, auf verschiedenen Wegen auf Information in einer Registerdatei zuzugreifen. Zum Beispiel kann es bei einer Graphikanwendung manchmal hilfreich sein, Teile der Registerdatei als einen Vektor, einen Skalar und/oder eine Anordnung aus Werten zu behandeln. Ein solcher Ansatz kann dabei helfen, die Befehlsmenge und/oder die Datenbewegung, das Packen, Entpacken und/oder Shuffling zu verringern und die Leistung des Systems zu verbessern.
  • 4 ist ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen. Die hierin beschriebenen Ablaufdiagramme implizieren nicht notwendigerweise eine feste Reihenfolge für die Aktionen, und Ausführungsformen können in irgendeiner Reihenfolge ausgeführt werden, die praktikabel ist. Es sei bemerkt, daß jedes der hierin beschriebenen Verfahren mit Hardware, Software (einschließlich Mikrocode), Firmware oder irgendeiner Kombination dieser Ansätze durchgeführt werden kann. Zum Beispiel könnte eine Befehle abbildende Harware-Maschine benutzt werden, um den Betrieb gemäß einigen hierin beschriebenen Ausführungsformen zu vereinfachen.
  • Bei 402 wird ein Bereich in einer Registerdatei für einen Operanden beschrieben. Der Operand kann zum Beispiel ein Ziel- oder Quellenoperand eines Maschinencodebefehls sein, der von einer SIMD-Ausführungsmaschine ausgeführt werden soll. Gemäß einigen Ausführungsformen ist der beschriebene Bereich „dynamisch" dahingehend, daß unterschiedliche Bereiche in der Registerdatei zu unterschiedlichen Zeiten definiert werden können. Die Beschreibung des Bereiches könnte zum Beispiel in den Maschinencodebefehl codiert sein. Man bemerke, daß mehr als ein Bereich in der Registerdatei jeweils beschrieben werden könnte.
  • Bei 404 wird Information, die in der Registerdatei gespeichert (oder daraus wiedergewonnen) werden soll, entsprechend dem beschriebenen Bereich angeordnet. Zum Beispiel könnten Daten aus einem ersten Bereich mit Daten in einem zweiten Bereich verglichen werden, und ein Ergebnis könnte in einem dritten Bereich auf einer Basis pro Kanal gespeichert werden.
  • 5 veranschaulicht ein Verarbeitungssystem 500 gemäß einigen Ausführungsformen mit einer SIMD-Ausführungsmaschine 510 mit acht Kanälen. Bei diesem Beispiel sind drei Bereiche für eine Registerdatei 520 mit fünf Registern (R0 bis R4) mit acht Byte beschrieben: ein Zielbereich (ZIEL) und zwei Quellenbereichen (QUELLE0 und QUELLE1). Diese Bereiche könnten zum Beispiel durch einen Addierbefehl im Maschinencode definiert worden sein. Darüberhinaus werden bei diesem Beispiel alle Ausführungskanäle verwendet, und es wird angenommen, daß die Datenelemente Bytes der Daten sind (z.B. jedes der acht QUELLE1-Bytes wird zu einem entsprechenden QUELLE0-Byte addiert, und die Ergebnisse werden in den acht ZIEL-Bytes in der Registerdatei 520 gespeichert).
  • Jede Bereichbeschreibung umfaßt einen Registeridentifizierer und einen „Teilregisteridentifizierer", die einen Ort eines ersten Datenelementes in der Registerdatei 520 angeben (in 5 veranschaulicht als ein „Ursprung" von RegNum.TeilRegNum). Der Teilregisteridentifizierer kann zum Beispiel eine Verlagerung von dem Beginn eines Registers angeben (z.B. und kann ausgedrückt werden, indem eine physikalische Anzahl von Bits oder Bytes oder eine Anzahl Datenelemente verwendet wird). Zum Beispiel hat der ZIEL-Bereich in 5 einen Ursprung bei R0.2, was angibt, daß ein erstes Datenelement in dem ZIEL-Bereich sich beim Byte 2 des ersten Registers (R0) befindet. Ähnlich beginnt der QUELLE0-Bereich beim Byte 3 von R2 (R2.3), und der QUELLE1-Bereich beginnt beim ersten Byte von R4 (R4.0). Es sei angemerkt, daß die beschriebenen Bereiche nicht zur Registerdatei 502 ausgerichtet zu sein brauchen (z.B. ein Bereich braucht bei einem einzelnen Registern nicht beim Byte 0 zu beginnen und beim Byte 7 zu enden).
  • Es sei angemerkt, daß ein Ursprung auf andere Weise definiert werden könnte. Zum Beispiel kann die Registerdatei 520 als ein Speichergebiet mit aneinandergrenzenden 40 Byte betrachtet werden. Darüberhinaus könnte ein einzelner Ursprung mit einer 6 Bit-Adresse auf ein Byte innerhalb der Registerdatei 520 zeigen. Es sei angemerkt, daß ein einzelner Ursprung mit einer 6 Bit-Adresse in der Lage ist, auf irgendein Byte innerhalb einer Registerdatei bis hinauf zu einer Speicherfläche mit 64 Byte zu zeigen. Als ein weiteres Beispiel könnte die Registerdatei 520 als ein Speichergebiet mit aneinandergrenzenden 320 Bit betrachtet werden. In diesem Fall könnte ein einzelner Ursprung mit 9 Bit-Adresse auf ein Bit innerhalb der Registerdatei 520 zeigen.
  • Jede Bereichsbeschreibung kann weiter eine „Breite" des Bereichs umfassen. Die Breite kann zum Beispiel eine Anzahl Datenelemente angeben, die innerhalb einer Registerzeile mit dem beschriebenen Bereich verknüpft sind. Zum Beispiel hat der ZIEL-Bereich, der in 5 veranschaulicht ist, eine Bereite von vier Datenelementen (z.B. vier Byte). Da acht Ausführungskanäle verwendet werden (und daher acht Ergebnisse mit einem Byte gespeichert werden müssen), ist die „Höhe" des Bereiches zwei Datenelemente (z.B. wird der Bereich zwei unterschiedliche Register überspannen). Das heißt, die Gesamtanzahl der Datenelemente in dem vier Elemente breiten, zwei Elemente hohen ZIEL-Bereich wird acht sein. Der ZIEL-Bereich kann als eine zweidimensionale Anordnung aus Datenelementen betrachtet werden, die Registerzeilen und Registerspalten umfaßt.
  • In ähnlicher Weise wird der QUELLE0-Bereich so beschrieben, daß er vier Byte breit ist (und daher zwei Zeilen oder Register hoch), und der QUELLE1-Bereich wird beschrieben, daß der acht Byte breit ist (und daher eine vertikale Höhe von einem Datenelement hat). Es sei angemerkt, daß ein einzelner Bereich unterschiedliche Register in der Registerdatei 520 überspannen kann (z.B. kann sich Teil des ZIEL-Bereiches, der in 5 veranschaulicht ist, in einem Teil von R0 befinden, und der Rest befindet sich in einem Teil von R1).
  • Obwohl manche hierin diskutierten Ausführungsformen eine Breite eines Bereiches beschreiben, wird gemäß anderen Ausführungsformen statt dessen eine vertikale Höhe des Bereiches beschrieben (wobei in diesem Fall die Breite des Bereiches basierend auf der Gesamtanzahl der Datenelemente abgeleitet werden kann). Darüberhinaus sei angemerkt, daß überlappende Registerbereiche in der Registerdatei 520 definiert sein können (z.B. könnte der Bereich, der durch QUELLE0 definiert ist, teilweise oder vollständig den Bereich überlappen, der durch QUELLE1 definiert ist). Zusätzlich, obwohl manche hierin diskutierten Beispiele zwei Quellenoperanden und einen Zieloperanden haben, können andere Befehlstypen verwendet werden. Zum Beispiel kann ein Befehl einen Quellenoperanden und einen Zieloperanden haben, drei Quellenoperanden und zwei Zieloperanden usw.
  • Gemäß einigen Ausführungsformen könnten ein beschriebener Bereichsursprung und eine Breite dazu führen, daß ein Bereich in das nächste Register in der Registerdatei 520 „umbricht". Zum Beispiel würde ein Bereich von Bytegroßen Datenelementen mit einem Ursprung R2.6 und einer Breite acht die letzten Bytes von R2 zusammen mit den ersten sechs Bytes von R3 umfassen. In ähnlicher Weise könnte sich ein Bereich von unten in der Registerdatei 520 nach oben umbrechen (z.B. von R4 zu R0).
  • Die SIMD-Ausführungsmaschine 510 kann jedes Byte in dem beschriebenen QUELLE1-Bereich zu einem entsprechenden Byte in dem beschriebenen QUELLE0-Bereich addieren und die Ergebnisse in dem beschriebenen ZIEL-Bereich in der Registerdatei 520 speichern. Zum Beispiel veranschaulicht 6 das Abbilden des Ausführungskanals in die Registerdatei 520 gemäß einigen Ausführungsformen. In diesem Fall sind Datenelemente innerhalb eines beschriebenen Bereiches in einer zeilendominierten Reihenfolge (row-major Order) beschrieben. Man betrachte zum Beispiel den Kanal 6 der Ausführungsmaschine 510. Dieser Kanal wird den Wert, der in Byte sechs von R4 gespeichert ist, zu dem Wert, der in Byte fünf von R3 gespeichert ist, addieren und das Ergebnis in Byte vier von R1 speichern. Gemäß anderen Ausführungsformen können Datenelemente innerhalb eines beschriebenen Bereiches in einer spaltendominierten Reihenfolge (column-major Order) oder unter Verwendung irgendwelcher anderer Abbildungstechniken angeordnet werden.
  • 7 veranschaulicht eine Bereichsbeschreibung, welche einen „horizontalen Schritt" gemäß einigen Ausführungsformen umfaßt. Der horizontale Schritt kann zum Beispiel eine Spaltenversetzung der Datenelemente in einer Registerdatei 720 angeben. Insbesondere ist der Bereich, der in 7 beschrieben ist, für acht Datenelemente mit einzelnem Byte (z.B. der Bereich könnte zweckmäßig sein, wenn nur acht Kanäle einer SIMD-Ausführungsmaschine mit 16 Kanälen von einem Maschinencodebefehl benutzt werden). Der Bereich ist vier Byte breit und daher zwei Datenelement hoch (so daß der Bereich acht Datenelemente umfassen wird) und beginnt bei R1.1 (Byte 1 von R1).
  • In diesem Fall ist ein horizontaler Schritt von Zwei beschrieben worden. Als ein Ergebnis ist jedes Datenelemente in einer Zeile von seinem benachbarten Datenelement in der Zeile um zwei Byte versetzt. Zum Beispiel befindet sich das Datenelement, das dem Kanal 5 der Ausführungsmaschine zugewiesen ist, bei Byte 3 von R2, und das Datenelement, das dem Kanal 6 zugewiesen ist, befindet sich bei Byte 5 von R2. Auf diese Weise kann ein beschriebener Bereich in der Registerdatei 720 diskontinuierlich sein. Es sei angemerkt, daß, wenn ein horizontaler Schritt von Eins beschrieben wird, das Ergebnis eine aneinandergrenzende 4 × 2 Anordnung aus Bytes, beginnend bei R1.1, in der zweidimensionalen Abbildung der Registerdatei 720 sein würde.
  • Der Bereich, der in 7 beschrieben ist, könnte mit einem Quellenoperanden verknüpft sein, wobei in diesem Fall Daten aus den nicht aneinandergrenzenden Gebieten gesammelt werden können, wenn ein Befehl ausgeführt wird. Der Bereich, der in 7 beschrieben ist, könnte auch mit einem Zieloperanden verknüpft sein, wobei in diesem Fall Ergebnisse über die nicht aneinandergrenzenden Gebiete verstreut werden können, wenn ein Befehl ausgeführt wird.
  • 8 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen, welche einen horizontalen Schritt von „Null" umfaßt. Wie bei 7 ist der Bereich für acht Datenelemente mit einem Byte und ist vier Byte breit (und daher zwei Datenelemente hoch). Da jedoch der horizontale Schritt Null ist, bildet sich jedes der vier Elemente in der ersten Zeile auf demselben physikalischen Ort in der Registerdatei 820 ab (z.B. sind sie von ihrem benachbarten Datenelement um Null versetzt). Als ein Ergebnis wird der Wert in R1.1 für die ersten vier Ausführungskanäle repliziert. Wenn der Bereich zum Beispiel mit einem Quellenoperanden eines „Addier"-Befehls verknüpft ist, würde derselbe Wert von allen den ersten vier Ausführungskanälen verwendet werden. In ähnlicher Weise wird der Wert in R2.1 für die letzten vier Ausführungskanäle repliziert.
  • Gemäß manchen Ausführungsformen kann der Wert eines horizontalen Schrittes in einem Befehl codiert werden. Zum Beispiel könnte ein Feld mit drei Bit verwendet werden, um die folgenden acht potentiellen Werte für den horizontalen Schritt zu beschreiben: 0, 1, 2, 4, 8, 16, 32 und 64. Darüberhinaus kann gemäß einigen Ausführungsformen ein negativer horizontaler Schritt beschrieben werden.
  • Es sei angemerkt, daß ein Bereich für Datenelemente unterschiedlicher Größen beschrieben werden kann. Zum Beispiel veranschaulicht 9 eine Bereichsbeschreibung gemäß einigen Ausführungsformen für Datenelemente vom Typ Wort. In diesem Fall hat die Registerdatei 920 acht Register zu sechzehn Byte (R0 bis R7, wobei jedes 128 Bit hat), und der Bereich beginnt bei R2.3. Die Ausführungsgröße ist acht Kanäle, und die Breite des Bereiches beträgt vier Datenelemente. Darüberhinaus wird jedes Datenelement als ein Wort (zwei Byte) beschrieben, und daher belegt das Datenelement, das mit dem ersten Ausführungskanal (CH0) verknüpft ist, sowohl das Byte 3 als auch 4r von R2. Es sei angemerkt, daß der horizontale Schritt dieses Bereiches Eins ist. Zusätzlich zu Datenelementen vom Typ Byte und Wort können Ausführungsformen mit anderen Typen für die Datenelemente (z.B. Bit oder Elemente vom Fließtyp) verknüpft werden.
  • 10 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen, welche einen „vertikalen Schritt" umfaßt. Der vertikale Schritt könnte zum Beispiel eine Zeilenversetzung zwischen allen Zeilen der von Datenelemente in einer Registerdatei 1020 anzeigen. Wie in 9 hat die Registerdatei 1020 acht Register (R0 bis R7) mit sechzehn Byte, und der Bereich beginnt bei R2.3. Die Ausführungsgröße ist acht Kanäle, und die Breite des Bereichs ist vier Einzelwort-Datenelemente (was eine Zeilenhöhe von Zwei für den Bereich mit sich führt). In diesem Fall jedoch ist ein vertikaler Schritt von Zwei beschrieben worden. Als ein Ergebnis wird jedes Datenelement in einer Spalte von seinen benachbarten Datenelementen in der Spalte um zwei Register versetzt. Zum Beispiel befindet sich das Datenelement, das mit Kanal 3 der Ausführungsmaschine verknüpft ist, in den Bytes 9 und 10 von R2, und das Datenelement, das mit dem Kanal 7 verknüpft ist, befindet sich in den Bytes 9 und 10 von R4. Wie bei dem horizontalen Schritt ist der beschriebene Bereich in der Registerdatei 1020 diskontinuierlich. Man bemerke, daß wenn ein vertikaler Schritt von Eins beschrieben ist, das Ergebnis eine aneinandergrenzende 4 × 2-Anordnung von Wörtern sein würde, beginnend bei R2.3 in der zweidimensionalen Karte der Registerdatei 1020.
  • Der Bereich, der in 10 beschrieben ist, könnte mit einem Quellenoperanden verbunden sein, wobei in diesem Fall Daten aus den nicht aneinandergrenzenden Bereichen gesammelt werden können, wenn ein Befehl ausgeführt wird. Der Bereich, der in 10 beschrieben ist, kann auch mit einem Zieloperanden verbunden sein, wobei in diesem Fall die Ergebnisse über die nicht aneinandergrenzenden Gebiete gestreut werden können, wenn ein Befehl ausgeführt wird. Gemäß einigen Ausführungsformen könnte ein vertikaler Schritt als eine Spaltenversetzung der Datenelemente zwischen Zeilen von Datenelementen beschrieben werden (z.B. wie es in bezug auf 14 beschrieben ist). Man bemerke auch, daß ein vertikaler Schritt kleiner als, größer als oder gleich einem horizontalen Schritt sein könnte.
  • 11 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen, die einen vertikalen Schritt „Null" umfaßt. Wie bei den 9 und 10 ist der Bereich für acht Einzelwort-Datenelemente und ist vier Wörter breit (und daher zwei Datenelemente hoch). Da jedoch der vertikale Schritt Null ist, bilden sich beide Elemente in der ersten Spalte auf denselben Ort in der Registerdatei 1130 ab (z.B. sind sie voneinander um Null versetzt). Als ein Ergebnis wird das Wort in den Bytes 3–4 von R2 für diese beiden Ausführungskanäle (z.B. Kanäle 0 und 4) repliziert. Wenn der Bereich mit einem Quellenoperanden eines „Vergleiche"-Befehls verbunden ist, würde zum Beispiel bei beiden Ausführungskanälen derselbe Wert verwendet werden. In ähnlicher Weise wird das Wort in den Bytes 5–6 von R2 für die Kanäle 1 und 5 der SIMD-Ausführungsmaschine repliziert usw. Zusätzlich kann der Wert eines vertikalen Schritts in einem Befehl codiert sein, und gemäß einigen Ausführungsformen kann ein negativer vertikaler Schritt beschrieben werden.
  • Gemäß einigen Ausführungsformen könnte ein vertikaler Schritt als eine Anzahl von Datenelementen in einer Registerdatei (anstatt einer Anzahl von Registerzeilen) definiert werden. Zum Beispiel veranschaulicht 12 eine Bereichsbeschreibung gemäß einigen Ausführungsformen mit einem vertikalen Schritt von einem Datenelement (einem Wort). Somit weist die erste „Zeile" der Anordnung, die durch den Bereich definiert ist, vier Wörter von R2.3 bis R2.10 auf. Die zweite Zeile ist um ein einziges Wort versetzt und überspannt R2.5 bis R2.12. Eine solche Implementierung könnte zum Beispiel mit einem gleitenden Fenster für eine Filteroperation verbunden sein.
  • 13 veranschaulicht eine Bereichsbeschreibung gemäß einigen Ausführungsformen, bei der sowohl der horizontale als auch der vertikale Schritt Null sind. Als ein Ergebnis werden alle acht Ausführungskanäle auf einen einzigen Ort in der Registerdatei 1320 (z.B. die Bytes 3–4 von R2) abgebildet. Wenn der Bereich einem Maschinencodebefehl zugewiesen wird, kann daher der einzelne Wert in den Bytes 3–4 von R2 von allen acht Ausführungskanälen verwendet werden.
  • Es sei angemerkt, daß unterschiedliche Typen der Beschreibungen für unterschiedliche Befehle zur Verfügung gestellt werden können. Zum Beispiel kann ein erster Befehl einen Zielbereich als eine 4 × 4-Anordnung definieren, während der nächste Befehl einen Bereich als eine 1 × 16-Anordnung definiert. Darüberhinaus können unterschiedliche Typen von Bereichen für einen einzelnen Befehl geschrieben werden.
  • Man betrachte zum Beispiel die Registerdatei 1420, die in 14 veranschaulicht ist, welche acht Register mit zweiunddreißig Byte hat (R0 bis R7, jeweils mit 256 Bit). Man bemerke, daß bei dieser Veranschaulichung jedes Register so gezeigt ist, daß es zwei „Zeilen" hat, und Beispielwerte sind an jedem Ort eines Bereiches gezeigt.
  • In diesem Beispiel werden Bereiche für einen Operanden innerhalb eines Befehls wie folgt beschrieben:
    RegDatei RegNum.TeilRegNum<VertSchritt; Breite, HorzSchritt>:Typ
    wobei RegDatei den Namensraum für die Registerdatei 1420 identifiziert, RegNum auf eine Register in der Registerdatei 1420 zeigt (z.B. R0 bis R7), TeilRegNum eine Byte-Versetzung vom Beginn des Registers 1, VertSchritt einen vertikalen Schritt beschreibt, Breite die Breite des Bereichs beschreibt, HorzSchritt einen horizontalen Schritt beschreibt und Typ die Größe jedes Datenelementes angibt (z.B. „b" für ein Byte große und „w" für ein Wort große Datenelemente). Gemäß einigen Ausführungsformen kann TeilRegNum als eine Anzahl von Datenelementen (anstelle einer Anzahl von Bytes) beschrieben werden. In ähnlicher Weise könnten VertSchritt, Breite und HorzSchritt als eine Anzahl von Bytes (anstatt eine Anzahl von Datenelementen) beschrieben werden.
  • 14 veranschaulicht einen Addierbefehl im Maschinencode, der von acht Kanälen einer SIMD-Ausführungsmaschine ausgeführt wird. Insbesondere wird jedes der acht Bytes, die durch R2.17 < 16; 2, 1 > b (QUELLE1) beschrieben werden, zu jedem der acht Bytes addiert, die durch R1.14 < 16; 4, 0>: b (QUELLE0) beschrieben werden. Die acht Ergebnisse werden in jedem der acht Wörter gespeichert, die durch R5.3 < 18; 4, 3 >: w (ZIEL) beschrieben werden.
  • QUELLE1 ist zwei Byte breit und daher vier Datenelemente hoch und beginnt beim Byte 17 von R2 (veranschaulicht in 14 als das zweite Byte der zweiten Zeile von R2). Der horizontale Schritt ist Eins. Wird der vertikale Schritt als eine Anzahl von Spalten aus Datenelementen beschrieben, die eine Zeile des Bereiches von einer benachbarten Zeile trennen (im Gegensatz zu einer Zeilenversetzung zwischen Zeilen, wie es in bezug auf 2 diskutiert worden ist). Das heißt, der Beginn einer Zeile ist von dem Beginn der nächsten Zeile des Be reichs um sechzehn Byte versetzt. Insbesondere beginnt die erste Zeile bei R2.17 und die zweite Zeile des Bereichs beginnt bei R3.1 (wobei von links nach rechts gezählt wird, beginnend bei R2.17, und überlaufend zu dem nächsten Register, wenn das Ende von R2 erreicht ist). In ähnlicher Weise beginnt die dritte Zeile bei R3.17.
  • QUELLE0 ist vier Byte breit und daher zwei Datenelemente hoch und beginnt bei R1.14. Da der horizontale Schritt Null ist, bildet sich der Wert am Ort R1.14 (z.B. „2", wie in 14 veranschaulicht) auf die ersten vier Ausführungskanäle ab, und der Wert am Ort R1.30 (basierend auf dem vertikalen Schritt 16) bildet sich auf die nächsten vier Ausführungskanäle ab.
  • ZIEL ist vier Wörter breit und daher zwei Datenelemente hoch und beginnt bei R5.3. Der Ausführungskanal wird den Wert „1" (das erste Datenelement des Bereichs QUELLE0) zu dem Wert „2" (das Datenelemente des Bereichs QUELLE1, das von den ersten vier Ausführungskanälen verwendet wird) abbilden, und das Ergebnis „3" wird in die Bytes 3 und 4 von R5 gespeichert (das erste wortgroße Datenelement des ZIEL-Bereichs).
  • Der horizontale Schritt von ZIEL ist drei Datenelemente, so daß das nächste Datenelement das Wort ist, das beim Byte 9 von R5 beginnt (z.B. vom Byte 3 drei Wörter versetzt), das Element danach beginnt beim Byte 15 von R5 (zerschnitten über zwei Zeilen in 14 gezeigt), und das letzte Element in der ersten Zeile des ZIEL-Bereichs beginnt beim Byte 21 von R5.
  • Der vertikale Schritt von ZIEL beträgt achtzehn Datenelemente, so daß das erste Datenelement der zweiten „Zeile" der ZIEL-Anordnung beim Byte 7 von R6 beginnt. Das Ergebnis, das an diesem ZIEL-Ort gespeichert ist, ist „6", was die „3" aus dem fünften Datenelement des Bereichs QUELLE0 darstellt, die zu der „3" aus dem Bereich QUELLE1 addiert ist, was für die Ausführungskanäle 4 bis 7 gilt.
  • Da auf Information in den Registerdateien in effizienter Weise und flexibel auf unterschiedlichen Wegen zugegriffen werden kann, kann die Leistung eines Systems verbessert werden. Zum Beispiel können Maschinencodebefehle in effektiver Weise in Verbindung mit einem replizierten Skalar, einem Vektor aus einem replizierten Skalar, einem replizierten Vektor, einer zweidimensionalen Anordnung, einem gleitenden Fenster und/oder einer verwandten Liste eindimensionaler Anordnungen verwendet werden. Als ein Ergebnis können die Menge der Datenbewegungen, das Packen, Entpacken und/oder Shuffling-Befehle verringert werden – was die Leistung einer Anwendung oder eines Algorithmus verbessern kann, so wie eines, der mit einem Medienkern verbunden ist.
  • Es sei angemerkt, daß den Bereichsbeschreibungen in manchen Fällen Einschränkungen auferlegt werden können. Zum Beispiel kann der Ursprung eines Teilregisters und/oder ein vertikaler Schritt für Quellenoperanden erlaubt sein, jedoch nicht für Zieloperanden. Darüberhinaus könnten physikalische Eigenschaften einer Registerdatei Bereichsbeschreibungen beschränken. Zum Beispiel könnte eine relativ große Registerdatei implementiert werden, indem eingebettete Speicher mit wahlfreiem Zugriff (RAM – Random Access Memory) verwendet werden, und die Kosten und die Leistung, die mit dem eingebetteten RAM verknüpft sind, könnten von der Anzahl von Lese- und Schreib-Ports abhängen, die zur Verfügung gestellt werden. Somit könnte die Anzahl der Lese- und Schreibpunkte (und die Anordnung der Register in dem RAM) die Bereichsbeschreibungen beschränken.
  • 15 ist ein Blockschaubild eines Systems 1500 gemäß einigen Ausführungsformen. Das System 1500 könnte zum Beispiel mit einem Mediumprozessor verknüpft sein, der dazu ausgelegt ist, digitale Fernsehsignale aufzuzeichnen und/oder abzuspielen. Das System 1500 umfaßt einen Prozessor 1510, der eine SIMD-Ausführungsmaschine 1520 für n Operanden gemäß irgendeiner der hierin beschriebenen Ausführungsformen hat. Zum Beispiel könnte die SIMD-Ausführungsmaschine 1520 eine Registerdatei und eine Befehlsabbildemaschine umfassen, um Operanden auf einen dynamischen Bereich der Registerdatei, der durch einen Be fehl definiert ist, abzubilden. Der Prozessor 1500 kann zum Beispiel mit einem Universalprozessor, einem Digitalsignalprozessor, einem Medienprozessor, einem Graphikprozessor oder einem Kommunikationsprozessor verknüpft sein.
  • Das System 1500 kann auch eine Befehlsspeichereinheit 1530 umfassen, um SIMD-Befehle zu speichern, und eine Datenspeichereinheit 1540, um Daten zu speichern (z.B. Skalare und Vektoren, die mit einem zweidimensionalen Bild, einem dreidimensionalen Bild und/oder einem sich bewegenden Bild verknüpft sind). Die Befehlsspeichereinheit 1530 und die Datenspeichereinheit 1540 können zum Beispiel RAM-Einheiten aufweisen. Es sei angemerkt, daß die Befehlsspeichereinheit 1530 und/oder die Datenspeichereinheit 1540 mit getrennten Befehls- und Daten-Cache-Speichern verknüpft sein könnten, einem gemeinsam genutzten Befehls- und Daten-Cache-Speicher, getrennten Befehls- und Daten-Speichern, hinterlegt durch einen gemeinsam genutzten Cache-Speicher hinterlegt sind, oder irgendeiner anderen Cache-Hierarchie. Gemäß einigen Ausführungsformen umfaßt das System 1500 ein Festplattenlaufwerk (z.B. um Medieninformation zu speichern und zur Verfügung zu stellen) und/oder einen nicht flüchtigen Speicher, so wie einen Flash-Speicher (z.B. um Befehle und Daten zu speichern und zur Verfügung zu stellen).
  • Das Folgende veranschaulicht verschiedene zusätzliche Ausführungsformen. Diese bilden keine Definition aller möglichen Ausführungsformen, und die Fachleute werden verstehen, daß viele weitere Ausführungsformen möglich sind. Weiter, obwohl die folgenden Ausführungsformen aus Gründen der Klarheit kurz beschrieben sind, werden die Fachleute verstehen, wie irgendwelche Änderungen, falls nötig, an der obigen Beschreibung vorgenommen werden, um diese und andere Ausführungsformen und Anwendungen abzudecken.
  • Obwohl verschiedene Wege des Beschreibens von Quellen- und/oder Zieloperanden diskutiert worden sind, sei angemerkt, daß Ausführungsformen irgendeine Untermenge oder Kombination solcher Beschreibungen verwenden können. Zum Beispiel dürfte ein Quellenoperand einen vertikalen Schritt haben, während ein vertikaler Schritt für einen Zieloperanden nicht erlaubt wäre.
  • Es sei angemerkt, daß Ausführungsformen in irgendeiner einer Anzahl unterschiedlicher Wege implementiert werden können. Zum Beispiel könnte der folgende Code die Adressen von Datenelementen berechnen, die Ausführungskanälen zugewiesen werden, wenn das Zielregister mit einer Registergrenze mit 256 Bit ausgerichtet ist:
    Figure 00180001
  • Gemäß einigen Ausführungsformen wird ein Registerbereich in einem Befehlswort für jeden der Operanden des Befehls codiert. Zum Beispiel können die Registerzahl und die Teilregisterzahl des Ursprungs codiert werden. In manchen Fällen kann der Wert in dem Befehlswort bezüglich der tatsächlichen Beschreibung einen unterschiedlichen Wert darstellen. Zum Beispiel könnten drei Bit verwendet werden, um die Breite eines Bereiches zu codieren, und „011" könnte eine Breite von acht Elementen darstellen, während „100" eine Breite von sech zehn Elementen darstellt. Auf diese Weise könnte ein breiterer Bereich von Beschreibungen verfügbar sein, verglichen mit dem, daß einfach der tatsächliche Wert der Beschreibung in dem Befehlswort codiert würde.
  • Darüberhinaus sind einige Ausführungsformen in bezug auf eine SIMD-Ausführungsmaschine beschrieben worden. Es sei jedoch angemerkt, daß diese Ausführungsformen anderen Typen von Ausführungsmaschinen zugewiesen sein können, so wie Mehrfachbefehl-Mehrfachdaten (MIMD – Multiple Instruction, Multiple Data)-Ausführungsmaschinen.
  • Die hierin beschriebenen mehreren Ausführungsformen dienen lediglich dem Zwecke der Veranschaulichung. Fachleute werden aus dieser Beschreibung erkennen, daß weitere Ausführungsformen in die Praxis umgesetzt werden können, mit Modifikationen und Änderungen, die nur durch die Ansprüche beschränkt sind.
  • Zusammenfassung
  • Gemäß einigen Ausführungsformen kann ein dynamischer Bereich in einer Registerdatei für einen Operanden beschrieben werden. Der beschriebene Bereich kann zum Beispiel mehrere Datenelemente speichern, wobei jedes Datenelement mit einem Ausführungskanal einer Ausführungsmaschine verknüpft ist. Information kann dann in der Registerdatei gemäß dem beschriebenen Bereich gespeichert und/oder aus dieser wiedergewonnen werden.

Claims (25)

  1. Verfahren, das aufweist: Beschreiben, für einen Operanden, eines dynamischen Bereiches in einer Registerdatei, wobei der beschriebene Bereich dazu dient, mehrere Datenelemente zu speichern, wobei jedes Datenelement einem Ausführungskanal einer Ausführungsmaschine zugewiesen ist; und Anordnen von Information, die in der Registerdatei gespeichert oder aus ihr wiedergewonnen werden soll, gemäß dem beschriebenen Bereich.
  2. Verfahren nach Anspruch 1, bei dem die Beschreibung in einem Einzelbefehl-Mehrdaten-Maschinencodebefehl eingeschlossen ist.
  3. Verfahren nach Anspruch 1, bei dem der Operand ein Quellenoperand oder ein Zieloperand ist.
  4. Verfahren nach Anspruch 1, das weiter aufweist: Beschreiben mehrerer Bereiche für mehrere Operanden.
  5. Verfahren nach Anspruch 1, bei dem der beschriebene Bereich unterschiedliche Register in der Registerdatei überspannt.
  6. Verfahren nach Anspruch 1, bei dem der beschriebene Bereich in der Registerdatei nicht kontinuierlich ist.
  7. Verfahren nach Anspruch 1, bei dem der beschriebene Bereich nicht mit Registern in der Registerdatei ausgerichtet ist.
  8. Verfahren nach Anspruch 1, bei dem das Beschreiben einen Registeridentifizierer und einen Teilregisteridentifizierer umfaßt, welche einen Ort eines ersten Datenelementes in der Registerdatei angeben.
  9. Verfahren nach Anspruch 1, bei dem die Registerdatei Registerzeilen und Registerspalten umfaßt.
  10. Verfahren nach Anspruch 9, bei dem die Datenelemente innerhalb des beschriebenen Bereiches entweder (i) zeilendominiert oder (ii) spaltendominiert angeordnet werden.
  11. Verfahren nach Anspruch 9, bei dem das Beschreiben eine Breite umfaßt, welche eine Anzahl von Datenelementen angibt, die dem beschriebenen Bereich innerhalb einer Registerzeile zugewiesen sind.
  12. Verfahren nach Anspruch 9, bei dem das Beschreiben einen horizontalen Schritt umfaßt, welcher eine Versetzung zwischen Spalten von Datenelementen in der Registerdatei anzeigt.
  13. Verfahren nach Anspruch 9, bei dem das Beschreiben einen vertikalen Schritt umfaßt, der wenigstens eines angibt: (i) eine Zeilenversetzung zwischen Zeilen von Datenelementen in der Registerdatei oder (ii) eine Versetzung von Datenelementen zwischen Zeilen von Datenelementen in der Registerdatei.
  14. Verfahren nach Anspruch 1, bei dem das Beschreiben eines Datentyp umfaßt, der eine Größe jedes Datenelementes angibt.
  15. Verfahren nach Anspruch 1, bei dem das Beschreiben eine Ausführungsgröße umfaßt, welche eine Anzahl von Datenelementen angibt, die mit dem beschriebenen Bereich verknüpft sind.
  16. Verfahren nach Anspruch 1, bei dem der beschriebene Bereich mit wenigstens einem aus: (i) replizierten Skalar, (ii) einem Vektor eines replizierten Skalars, (iii) einem replizierten Vektor, (iv) einer zweidimensionalen Anordnung, (v) eines gleitenden Fensters oder (vi) einer verwandten Liste eindimensionaler Anordnungen verknüpft ist.
  17. Vorrichtung, die aufweist: eine Einzelbefehl-Mehrdaten-Ausführungsmaschine; eine Registerdatei auf demselben Rohchip wie der Ausführungsmaschine; und eine Befehlsabbildemaschine, um (i) für einen Operanden eines Maschinencodebefehls einen Teil der Registerdatei zu bestimmen, wobei der bestimmte Teil dazu dient, Information für mehrere Ausführungskanäle in der Ausführungsmaschine zu speichern, und (ii) die Information, die in der Registerdatei gespeichert oder aus ihr wiedergewonnen werden soll, gemäß dem bestimmten Bereich anzuordnen.
  18. Vorrichtung nach Anspruch 17, bei der der bestimmte Bereich unterschiedliche Register in der Registerdatei überspannt.
  19. Vorrichtung nach Anspruch 17, bei der der bestimmte Bereich in der Registerdatei nicht kontinuierlich ist.
  20. Vorrichtung nach Anspruch 17, bei der die Registerdatei Registerzeilen und Registerspalten umfaßt und die Befehlsabbildemaschine den Teil basierend auf einer Beschreibung, welche (i) eine Breite und (ii) einen horizontalen Schritt umfaßt, bestimmt.
  21. System, das aufweist: eine Einzelbefehl-Mehrfachdatenausführungsmaschine mit n Kanälen, wobei n eine ganze Zahl größer als 1 ist; eine Registerdatei; und eine Befehlsabbildemaschine, um Operanden auf einen dynamischen Bereich der Registerdatei abzubilden, der durch einen Befehl definiert ist; und eine Speichereinheit für Graphikdaten.
  22. System nach Anspruch 20, bei dem die Befehlsabbildemaschine Daten über Gebiete der Registerdatei streut.
  23. System nach Anspruch 22, bei dem die Gebiete in der Registerdatei nicht aneinandergrenzend sind.
  24. System nach Anspruch 20, bei dem die Befehlsabbildemaschine Daten aus Gebieten der Registerdatei sammelt.
  25. System nach Anspruch 24, bei dem die Gebiete in der Registerdatei nicht aneinandergrenzend sind.
DE112005003265T 2004-12-28 2005-12-28 Registerdateibereiche für ein Verarbeitungssystem Ceased DE112005003265T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/024,298 US7257695B2 (en) 2004-12-28 2004-12-28 Register file regions for a processing system
US11/024,298 2004-12-28
PCT/US2005/047279 WO2006071947A1 (en) 2004-12-28 2005-12-28 Register file regions for a processing system

Publications (1)

Publication Number Publication Date
DE112005003265T5 true DE112005003265T5 (de) 2007-11-15

Family

ID=36498848

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005003265T Ceased DE112005003265T5 (de) 2004-12-28 2005-12-28 Registerdateibereiche für ein Verarbeitungssystem

Country Status (7)

Country Link
US (2) US7257695B2 (de)
KR (1) KR100935308B1 (de)
CN (1) CN100492280C (de)
DE (1) DE112005003265T5 (de)
GB (1) GB2436506B (de)
TW (1) TWI300187B (de)
WO (1) WO2006071947A1 (de)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103646009B (zh) 2006-04-12 2016-08-17 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
US7441099B2 (en) * 2006-10-03 2008-10-21 Hong Kong Applied Science and Technology Research Institute Company Limited Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
US20080162522A1 (en) * 2006-12-29 2008-07-03 Guei-Yuan Lueh Methods and apparatuses for compaction and/or decompaction
US7877582B2 (en) * 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
US7849294B2 (en) * 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion
CN103250131B (zh) 2010-09-17 2015-12-16 索夫特机械公司 包括用于早期远分支预测的影子缓存的单周期多分支预测
US8453127B2 (en) 2010-09-20 2013-05-28 Sap Ag Systems and methods providing a token synchronization gateway for a graph-based business process model
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
TWI518504B (zh) 2011-03-25 2016-01-21 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段
WO2012135050A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
EP2783281B1 (de) 2011-11-22 2020-05-13 Intel Corporation Durch einen mikroprozessor beschleunigter code-optimierer
WO2013077875A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. An accelerated code optimizer for a multiengine microprocessor
US10255228B2 (en) 2011-12-06 2019-04-09 Nvidia Corporation System and method for performing shaped memory access operations
WO2013095605A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for sliding window data gather
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
EP2972836B1 (de) 2013-03-15 2022-11-09 Intel Corporation Verfahren zur emulierung einer zentralisierten gast-flag-architektur mithilfe einer nativen verteilten flag-architektur
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9632801B2 (en) 2014-04-09 2017-04-25 Intel Corporation Banked memory access efficiency by a graphics processor
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
CN104898991B (zh) * 2015-06-10 2018-07-27 烽火通信科技股份有限公司 一种基于自动化ral的寄存器访问方法及***
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US10289416B2 (en) 2015-12-30 2019-05-14 Intel Corporation Systems, apparatuses, and methods for lane-based strided gather
US11188332B2 (en) 2019-05-10 2021-11-30 International Business Machines Corporation System and handling of register data in processors

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513366A (en) * 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
US5812147A (en) * 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
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
JP3779540B2 (ja) * 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US7386703B2 (en) * 2003-11-18 2008-06-10 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array

Also Published As

Publication number Publication date
WO2006071947A1 (en) 2006-07-06
US7257695B2 (en) 2007-08-14
GB2436506B (en) 2009-01-28
GB0714452D0 (en) 2007-09-05
TWI300187B (en) 2008-08-21
CN100492280C (zh) 2009-05-27
GB2436506A (en) 2007-09-26
KR100935308B1 (ko) 2010-01-06
TW200634622A (en) 2006-10-01
US20080022069A1 (en) 2008-01-24
US20060149937A1 (en) 2006-07-06
KR20070097049A (ko) 2007-10-02
CN1821952A (zh) 2006-08-23

Similar Documents

Publication Publication Date Title
DE112005003265T5 (de) Registerdateibereiche für ein Verarbeitungssystem
DE102008034519B4 (de) Aufgeteilte Datenstruktur, und Verfahren zum Laden einer Partikel-basierten Simulation unter Verwendung der aufgeteilten Datenstruktur in GPU, usw.
DE102017113859A1 (de) Blockoperationen für einen Bildprozessort mit einer zweidimensionalen Ausführungsbahnmatrix und einem zweidimensionalen Schieberegister
DE102017113735B4 (de) Statistische Operationen auf einem zweidimensionalen Bildprozessor
DE202017103727U1 (de) Kernprozesse für Blockoperationen an einem Bildprozessor mit einer zweidimensionalen Ausführungsbahnmatrix und einem zweidimensionalen Schieberegister
DE19806985B4 (de) Organisationsverfahren für volumetrische Daten, das effiziente Cache-Aufbereitungsbeschleunigungen und einen effizienten Graphik-Hardwareentwurf ermöglicht
DE112005003130B4 (de) Verfahren und Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten-Ausführungsmaschine
DE112020000748B4 (de) Adresserzeugung zur hochleistungsverarbeitung von vektoren
DE112010004972T5 (de) Domänenbasiertes Cache-Kohärenzprotokoll
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE2758829A1 (de) Multiprozessor-datenverarbeitungssystem
DE102020133878A1 (de) Technologien für spaltenbasierte datenlayouts für geclusterte datensysteme
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE1524898C3 (de) Datenspeicher mit direktem mehrdimensionalen Zugriff zur gleichzeitigen Entnahme mehrerer Wörter
EP1864233A1 (de) Verfahren zum anordnen von objektdaten in elektronischen karten
DE69629265T2 (de) Bildskalierungsverfahren und -gerät
DE69627391T2 (de) Verfahren und system zum durchführen einer booleschen operation auf bitketten unter benutzung einer maximalen bitscheibe
DE19817583B4 (de) Verfahren und System zur Datenverarbeitung für dreidimensionale Objekte
DE102020102273A1 (de) Effizientes Matrixdatenformat anwendbar für künstliches neuronales Netzwerk
DE102019106724A1 (de) Effiziente Datenverarbeitung
DE102013105772A1 (de) Effizientes Cache-Vorladen
EP0912952B1 (de) Datenbanksystem und verfahren zum verwalten eines n-dimensionalen datenbestands
EP2660741A1 (de) Verfahren zur computergestützen Simulation technischer Prozesse
DE69531287T2 (de) Verbesserte speicheranordnungen
DE2442014A1 (de) Verfahren und vorrichtung zur organisation eines steuerspeichers

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection