DE102008059790A1 - Verfahren, Vorrichtung und Befehle zum Verarbeiten von Vektordaten - Google Patents

Verfahren, Vorrichtung und Befehle zum Verarbeiten von Vektordaten Download PDF

Info

Publication number
DE102008059790A1
DE102008059790A1 DE102008059790A DE102008059790A DE102008059790A1 DE 102008059790 A1 DE102008059790 A1 DE 102008059790A1 DE 102008059790 A DE102008059790 A DE 102008059790A DE 102008059790 A DE102008059790 A DE 102008059790A DE 102008059790 A1 DE102008059790 A1 DE 102008059790A1
Authority
DE
Germany
Prior art keywords
vector
processor
command
register
mask
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.)
Withdrawn
Application number
DE102008059790A
Other languages
English (en)
Inventor
Robert D. Palo Alto Cavin
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 DE102008059790A1 publication Critical patent/DE102008059790A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Abstract

Ein Computerprozessor hat eine Steuerlogik zum Ausführen von LoadUnpack- und PackStore-Befehlen. Bei einer Ausführungsform hat der Prozessor ein Vektorregister und ein Maskenregister. In Reaktion auf einen PackStore-Befehl mit einem Argument, das einen Speicherplatz festlegt, kopiert ein Schaltkreis in dem Prozessor unmaskierte Vektorelemente aus dem Vektorregister an fortlaufende Speicherplätze ab dem festgelegten Speicherplatz, ohne maskierte Vektorelemente zu kopieren. In Reaktion auf einen LoadUnpack-Befehl kopiert der Schaltkreis Datenelemente aus fortlaufenden Speicherplätzen ab einem identifizierten Speicherplatz in unmaskierte Vektorelemente des Vektorregisters, ohne Daten in maskierte Vektorelemente zu kopieren. Es werden weitere Ausführungsformen beschrieben und beansprucht.

Description

  • Gebiet der Erfindung
  • Die vorliegende Beschreibung betrifft allgemein das Gebiet der Datenverarbeitung und insbesondere Verfahren und eine zugehörige Vorrichtung zum Verarbeiten von Vektordaten.
  • Hintergrund der Erfindung
  • Ein Datenverarbeitungssystem kann Hardware-Ressourcen aufweisen, wie etwa eine Zentraleinheit (CPU), einen Schreib-Lese-Speicher (RAM), einen Nur-Lese-Speicher (ROM) usw. Das Verarbeitungssystem kann außerdem Software-Ressourcen aufweisen, wie etwa ein Basic Input/Output System (BIOS), einen Virtual Machine Monitor (VMM) und ein oder mehrere Betriebssysteme (OSs).
  • Die CPU kann Hardware-Unterstützung zum Verarbeiten von Vektoren bieten. Ein Vektor ist eine Datenstruktur, die eine Anzahl von fortlaufenden Datenelementen hält. Ein Vektorregister der Größe M kann N Vektorelemente der Größe O enthalten, wobei N = M/O ist. Zum Beispiel kann ein 64-Byte-Vektorregister partitioniert werden in (a) 64 Vektorelemente, wobei jedes Vektorelement ein Datenelement hält, das 1 Byte belegt, (b) 32 Vektorelemente zum Halten von Datenelementen, die jeweils 2 Byte (oder ein „Wort") belegen, (c) 16 Vektorelemente zum Halten von Datenelementen, die jeweils 4 Byte (oder ein „Doppelwort") belegen, oder 8 Vektorelemente zum Halten von Datenelementen, die jeweils 8 Byte (oder ein „Quadwort") belegen.
  • Um eine Parallelität auf der Daten-Ebene herzustellen, kann die CPU SIMD-Operationen (SIMD: Single Instruction Multiple Data) unterstützen. SIMD-Operationen schließen die Verwendung ein und derselben Operation für mehrere Datenelemente ein. Zum Beispiel kann eine CPU in Reaktion auf einen einzigen SIMD-Additionsbefehl jedes Element in einem Vektor zu dem entsprechenden Element in einem anderen Vektor addieren. Die CPU kann mehrere Verarbeitungskerne haben, um parallele Operationen zu ermöglichen.
  • Kurze Beschreibung der Zeichnungen
  • Merkmale und Vorzüge der vorliegenden Erfindung dürften aus den beigefügten Ansprüchen, der nachstehenden detaillierten Beschreibung einer oder mehrerer beispielhafter Ausführungsformen und den entsprechenden Figuren hervorgehen. Hierbei sind:
  • 1 ein Blockdiagramm, das eine geeignete Datenverarbeitungsumgebung zeigt, in der bestimmte Aspekte einer beispielhaften Ausführungsform der vorliegenden Erfindung implementiert werden können;
  • 2 ein Ablaufdiagramm einer beispielhaften Ausführungsform eines Prozesses zum Verarbeiten von Vektoren in dem Verarbeitungssystem von 1 und
  • die 3 und 4 Blockdiagramme, die beispielhafte Speicherkonstrukte zeigen, die in der Ausführungsform von 1 zum Verarbeiten von Vektoren verwendet werden.
  • Detaillierte Beschreibung
  • Ein Programm in einem Verarbeitungssystem kann einen Vektor erzeugen, der Tausende von Elementen enthält. Darüber hinaus kann der Prozessor in dem Verarbeitungssystem ein Vektorregister haben, das nur 16 Elemente auf einmal halten kann. Daher kann das Programm die Tausende von Elementen in dem Vektor in Stapeln von 16 verarbeiten. Der Prozessor kann außerdem mehrere Verarbeitungseinheiten oder Verarbeitungskerne (z. B. 16 Kerne) zum parallelen Verarbeiten mehrerer Vektorelemente haben. Zum Beispiel können die 16 Kerne die 16 Vektorelemente parallel in 16 getrennten Ausführungs-Threads oder -strömen verarbeiten.
  • Bei einigen Anwendungen brauchen jedoch die meisten Elemente eines Vektors normalerweise kaum oder gar nicht verarbeitet zu werden. Zum Beispiel kann ein Strahlenverfolgungsprogramm Vektorelemente zum Darstellen von Strahlen verwenden, und dieses Programm kann mehr als 10.000 Strahlen prüfen und kann feststellen, dass nur 99 von ihnen von einem bestimmten Objekt reflektiert werden. Wenn ein Strahl das gegebene Objekt schneidet, muss das Strahlenverfolgungsprogramm möglicherweise eine Additionsverarbeitung für dieses Strahlenelement durchführen, um zu bewirken, dass der Strahl mit dem Objekt in Wechselwirkung tritt.
  • Für die meisten Strahlen, die das Objekt nicht schneiden, ist jedoch keine Additionsverarbeitung erforderlich. Zum Beispiel kann ein Zweig des Programms die folgenden Operationen ausführen:
    Figure 00030001
  • Das Strahlenverfolgungsprogramm kann eine bedingte Anweisung (z. B. „Vektor vergleichen" oder „vcmp") verwenden, um zu ermitteln, welches der Elemente in dem Vektor verarbeitet werden muss, und kann eine Bitmaske oder „Schreibmaske" zum Aufzeichnen der Ergebnisse verwenden. Die Bitmap kann somit die Elemente „maskieren", die nicht verarbeitet werden müssen.
  • Wenn ein Vektor zahlreiche Elemente enthält, kommt es manchmal vor, dass nach einer oder mehreren bedingten Prüfungen in der Anwendung einige Vektorelemente unmaskiert bleiben. Wenn es in diesem Zweig viel zu verarbeiten gibt und die Elemente, die die Bedingung erfüllen, spärlich angeordnet sind, kann ein beträchtlicher Prozentsatz der Vektorverarbeitungskapazität vergeudet werden. Zum Beispiel kann ein Programmzweig, der eine einfache Wenn-dann-Anweisung unter Verwendung von vcmp und Schreibmasken nutzt, dazu führen, dass nur einige oder sogar gar keine unmaskierten Elemente verarbeitet werden, bis sie diesen Zweig im Steuerungsablauf verlassen.
  • Da viel Zeit benötigt werden könnte, um ein Vektorelement zu verarbeiten (z. B. um einen Strahl zu verarbeiten, der auf ein Objekt auftrifft), kann die Effizienz dadurch verbessert werden, dass die 99 interessierenden Strahlen (von den Zehntausenden) in einen zusammenhängenden Cluster von Vektorelementen gepackt werden, sodass immer 16 der 99 Elemente auf einmal verarbeitet werden können. Ohne dieses Bündeln könnte die Parallelverarbeitung von Daten sehr ineffizient sein, wenn der Problemsatz spärlich ist (d. h., wenn die interessierende Verarbeitung mit Speicherplätzen verbunden ist, die weit voneinander entfernt sind, anstatt dicht gepackt zu sein). Wenn zum Beispiel die 99 interessierenden Strahlen nicht in zusammenhängende Elemente gepackt sind, kann jeder 16-Elemente-Stapel nur wenige oder gar keine Elemente haben, die für diesen Stapel zu verarbeiten sind. Daher können die meisten Kerne unbenutzt bleiben, während dieser Stapel verarbeitet wird.
  • Das Verfahren des Zusammenpackens von interessierenden Vektorelementen für die Parallelverarbeitung ist nicht nur für Strahlenverfolgungsanwendungen zweckmäßig, sondern hat auch Vorteile für andere Anwendungen, insbesondere für Anwendungen mit einem oder mehreren großen Eingangsdatensätzen, die kaum verarbeitet werden müssen.
  • In dieser Beschreibung wird ein Typ eines Maschinenbefehls oder Prozessorbefehls beschrieben, der alle unmaskierten Elemente eines Vektorregisters bündelt und diesen neuen Vektor (eine Untermenge der Registerdateiquelle) ab einer beliebigen Element-orientierten Adresse abspeichert. Im Sinne dieser Beschreibung wird dieser Befehlstyp als PackStore-Befehl bezeichnet.
  • In dieser Beschreibung wird auch ein anderer Typ eines Prozessorbefehls beschrieben, der mehr oder weniger das Gegenteil des PackStore-Befehls ausführt. Dieser andere Typ von Befehl lädt Elemente von einer beliebigen Speicheradresse und „entpackt" die Daten in die unmaskierten Elemente des Ziel-Vektorregisters. Im Sinne dieser Beschreibung wird dieser zweite Typ von Befehl als LoadUnpack-Befehl bezeichnet.
  • Mit dem PackStore-Befehl können Programmierer Programme erzeugen, die Daten aus einem Vektor schnell in Gruppen von Datenelementen sortieren, die zum Beispiel jeweils einen gemeinsamen Steuerweg durch eine zweigreiche Codesequenz nehmen. Die Programme können auch LoadUnpack verwenden, um nach Beendigung des Steuerzweiges die Datenelemente zügig zurück aus einer Gruppe an die ursprünglichen Plätze für diese Elemente in der Datenstruktur (z. B. in die ursprünglichen Elemente in dem Vektorregister) zu expandieren. Somit ermöglichen diese Befehle Funktionen zum Bilden und Eliminieren von Warteschlangen, was zu Programmen führen kann, die in einem Zustand, in dem zahlreiche Vektorelemente maskiert sind, einen kleineren Teil ihrer Ausführungszeit als solche Programme verwenden, die nur herkömmliche Vektorbefehle nutzen.
  • Der folgende Pseudocode zeigt ein beispielhaftes Verfahren zum Verarbeiten eines spärlichen Datensatzes:
    Figure 00050001
  • In diesem Beispiel leisten nur drei der Elemente, und daher ungefähr drei der Kerne, tatsächlich wesentliche Arbeit (da nur 3 Bit der Maske 1 sind).
  • Im Gegensatz dazu führt der folgende Pseudocode den Vergleich über einen großen Satz von Vektorregistern durch und packt dann alle Daten, die mit der gültigen Maske (Maske = 1) assoziiert sind, in zusammenhängende Speichercluster:
    Figure 00050002
  • Wenn die Elemente, die verarbeitet werden müssen, spärlich sind und die Verarbeitung signifikant ist, ist diese zweite Lösung normalerweise effizienter, auch wenn es einen Overhead durch das Packen und Entpacken gibt.
  • Darüber hinaus können bei mindestens einer Ausführungsform PackStore und LoadUnpack auch On-the-Fly-Format-Umwandlungen für Daten, die aus dem Speicher in ein Vektorregister geladen werden, und für Daten durchführen, die aus einem Vektorregister abgespeichert werden. Die unterstützten Format-Umwandlungen können Umwandlungen in einer Richtung oder in jeder Richtung zwischen zahlreichen verschiedenen Formatpaaren sein, wie etwa 8 Bit und 32 Bit (z. B. uint8→float32, uint8→uint32), 16 Bit und 32 Bit (z. B. sint16→float32, sint16→int32) usw. Bei einer Ausführungsform können Operationscodes (Opcodes) ein Format wie das folgende verwenden, um die gewünschte Format-Umwandlung anzugeben:
    • • LoadUnpackMN: legt fest, dass jedes Datenelement M Byte im Speicher belegt, und wird in N Byte zum Laden in ein Vektorelement umgewandelt, das N Byte belegt.
    • • PackLoadOP: legt fest, dass jedes Vektorelement O Byte in dem Vektorregister belegt, und wird in P Byte umgewandelt, die abgespeichert werden sollen.
  • Bei anderen Ausführungsformen können auch andere Arten von Umwandlungsindikatoren (z. B. Befehlsparameter) verwendet werden, um die gewünschte Format-Umwandlung festzulegen.
  • Diese Befehle sind nicht nur zum Bilden und Eliminieren von Warteschlangen zweckmäßig, sondern sie können sich auch als bequemer und effizienter als Vektorbefehle erweisen, die ein Ausrichten des Speichers auf den gesamten Vektor erfordern. Im Gegensatz dazu können PackStore und LoadUnpack mit Speicherplätzen verwendet werden, die nur auf die Größe eines Elements des Vektors ausgerichtet sind. Ein Programm kann zum Beispiel einen LoadUnpack-Befehl mit einer Umwandlung von 8 Bit in 32 Bit ausführen, und in diesem Fall kann die Ladung von einem beliebigen Speicherzeiger stammen. Nachstehend werden weitere Einzelheiten zu beispielhaften Implementierungen von PackStore- und LoadUnpack-Befehlen angegeben.
  • 1 ist ein Blockdiagramm, das eine geeignete Datenverarbeitungsumgebung 12 zeigt, in der bestimmte Aspekte einer beispielhaften Ausführungsform der vorliegenden Erfindung implementiert werden können. Die Datenverarbeitungsumgebung 12 weist ein Verarbeitungssystem 20 auf, das verschiedene Hardware-Komponenten 82, wie etwa einen oder mehrere CPUs oder Prozessoren 22, sowie verschiedene andere Komponenten hat, die über einen oder mehrere Systembusse 14 oder andere Kommunikationswege oder -medien kommunikationsfähig verbunden sein können. In dieser Beschreibung dient der Begriff „Bus" zum Bezeichnen von gemeinsam genutzten Kommunikationswegen (z. B. mit mehreren Stationen) sowie von Punkt-zu-Punkt-Wegen. Jeder Prozessor kann eine oder mehrere Verarbeitungseinheiten oder -kerne haben. Die Kerne können als Hyper-Threading(HT)-Technologie oder als jede andere geeignete Technologie zum simultanen oder im Wesentlichen simultanen Ausführen mehrerer Threads oder Befehle implementiert werden.
  • Der Prozessor 22 kann kommunikationsfähig verbunden werden mit einem oder mehreren flüchtigen oder nichtflüchtigen Datenspeichervorrichtungen, wie etwa einem RAM 26, einem ROM 42, Massenspeichern 36, wie etwa Festplatten, und/oder anderen Vorrichtungen oder Medien, wie etwa Disketten, optischen Speichern, Bändern, Flash-Speichern, Speichersticks, Digital Versatile Disks (DVDs) usw. Im Sinne dieser Beschreibung können die Begriffe „Nur-Lese-Speicher" und „ROM" im Allgemeinen zum Bezeichnen von nichtflüchtigen Speichervorrichtungen verwendet werden, wie etwa einem löschbaren programmierbaren Nur-Lese-Speicher (EPROM), einem elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einem Flash-ROM, einem Flash-Speicher usw. Das Verarbeitungssystem 20 verwendet den RAM 26 als Hauptspeicher. Darüber hinaus kann der Prozessor 22 einen Cache-Speicher haben, der ebenfalls vorübergehend als Hauptspeicher dienen kann.
  • Der Prozessor 22 kann außerdem mit weiteren Komponenten kommunikationsfähig verbunden werden, wie etwa einem Videosteuergerät, IDE-Steuergeräten (IDE: Integrated Drive Electronics; integrierte Steuerelektronik), SCSI-Steuergeräten (SCSI: Small Computer System Interface), USB-Steuergeräten (USB: Universal Serial Bus), Eingangs/Ausgangs(E/A)anschlüssen 28, Eingabevorrichtungen, Ausgabevorrichtungen, wie etwa Anzeigevorrichtungen, usw. Ein Chipsatz 34 in dem Verarbeitungssystem 20 kann verschiedene Hardware-Komponenten miteinander verbinden. Der Chipsatz 34 kann eine oder mehrere Brücken und/oder Hubs sowie weitere Logik- und Speicherkomponenten haben.
  • Das Verarbeitungssystem 20 kann, zumindest teilweise, durch die Eingabe von Eingabevorrichtungen, wie etwa einer Tastatur, einer Maus usw., und/oder durch Befehle gesteuert werden, die von einer anderen Maschine, durch biometrische Rückkopplung oder von anderen Eingabequellen oder -signalen erhalten werden. Das Verarbeitungssystem 20 kann eine oder mehrere Verbindungen zu einem oder mehreren entfernten Datenverarbeitungssystemen 90 nutzen, wie etwa über ein Netzwerk-Schnittstellen-Steuergerät (network interface controller, NIC) 40, ein Modem oder andere Kommunikationskanäle oder -verbindungen. Verarbeitungssysteme können mittels eines physischen und/oder logischen Netzwerks 92 miteinander verbunden werden, wie etwa ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), ein Intranet, das Internet usw. Eine Kommunikation, die das Netzwerk 92 verwendet, kann verschiedene drahtgebundene und/oder drahtlose Nahbereichs- oder Fernbereichsträger und -protokolle nutzen, unter anderem Hochfrequenz(HF)-, Satelliten-, Mikrowellen-, IEEE-802.11, -802.16, -802.20-(IEEE: Institute of Electrical and Electronics Engineers), Bluetooth-, optische, Infrarot-, Kabel-, Laser- u. ä. -Träger und -Protokolle. Protokolle für 802.11 können auch als WiFi-Protokolle (WiFi: wireless fidelity) bezeichnet werden. Protokolle für 802.16 können auch als WiMAX-Protokolle (WiMAX: wireless metropolitan area network) bezeichnet werden, und Informationen zu diesen Protokollen sind aktuell unter grouper.ieee.org/groups/802/16/published.html erhältlich.
  • Einige Komponenten können als Adapterkarten mit Schnittstellen, z. B. einem PCI-Verbinder (PCI: Peripheral Component Interconnect), zum Kommunizieren mit einem Bus implementiert werden. Bei einigen Ausführungsformen können ein oder mehrere Geräte als eingebettete Steuergeräte implementiert werden, wobei Komponenten, wie etwa programmierbare oder nichtprogrammierbare Logikgeräte oder -Arrays, anwendungsspezifische integrierte Schaltungen (ASICs), eingebettete Prozessoren, SmartCards und dergleichen, verwendet werden.
  • Die Erfindung wird hier anhand von Daten beschrieben, wie etwa Befehlen, Funktionen, Prozeduren, Datenstrukturen, Anwendungsprogrammen, Konfigurationseinstellungen usw. Wenn eine Maschine auf die Daten zugreift, kann die Maschine durch Ausführen von Tasks, Definieren von abstrakten Datentypen, Erstellen von Low-Level-Hardware-Kontexten und/oder Ausführen von anderen Operationen reagieren, wie nachstehend näher beschrieben wird. Die Daten können in einem flüchtigen und/oder nichtflüchtigen Datenspeicher gespeichert werden. Im Sinne dieser Beschreibung deckt der Begriff „Programm" einen großen Bereich von Software-Komponenten und -Konstrukten ab, unter anderem Anwendungen, Treiber, Prozesse, Routinen, Verfahren, Module und Unterprogramme. Der Begriff „Programm" kann zum Bezeichnen einer kompletten Kompilationseinheit (d. h., ein Satz von Befehlen, die einzeln kompiliert werden können), einer Auswahl von Kompilationseinheiten oder eines Teils einer Kompilationseinheit verwendet werden. Somit kann der Begriff „Programm" zum Bezeichnen einer Auswahl von Befehlen verwendet werden, die beim Ausführen mit einem Verarbeitungssystem eine oder mehrere gewünschte Operationen ausführen.
  • Bei der Ausführungsform von 1 wird mindestens ein Programm 100 in dem Massenspeicher 36 gespeichert, und das Verarbeitungssystem 20 kann das Programm 100 in den RAM 26 kopieren und kann das Programm 100 auf dem Prozessor 22 abarbeiten. Das Programm 100 enthält einen oder mehrere Vektorbefehle, wie etwa LoadUnpack-Befehle und PackStore-Befehle. Das Programm 100 und/oder alternative Programme können so geschrieben werden, dass sie den Prozessor 22 veranlassen, LoadUnpack-Befehle und PackStore-Befehle für Grafik-Operationen, wie etwa Strahlenverfolgung, und/oder für zahlreiche andere Zwecke zu verwenden, wie etwa Textverarbeitung, Rasterisierung, Physiksimulation usw.
  • Bei der Ausführungsform von 1 ist der Prozessor 22 als Ein-Chip-Paket implementiert, das mehrere Kerne (z. B. einen Verarbeitungskern 31, einen Verarbeitungskern 33, ..., einen Verarbeitungskern 33n) hat. Der Verarbeitungskern 31 kann als Hauptprozessor dienen, und der Verarbeitungskern 33 kann als Hilfskern oder Coprozessor dienen. Der Verarbeitungskern 33 kann zum Beispiel als Grafik-Coprozessor, Grafikprozessor (graphics processing unit, GPU) oder Vektorprozessor (vector processing unit, VPU) dienen, der SIMD-Befehle ausführen kann.
  • Weitere Verarbeitungskerne in dem Verarbeitungssystem 20 (z. B. der Verarbeitungskern 33n) können ebenfalls als Coprozessoren und/oder als Hauptprozessor dienen. Bei einer Ausführungsform kann zum Beispiel ein Verarbeitungssystem eine CPU mit einem Hauptverarbeitungskern und sechzehn Hilfsverarbeitungskernen haben. Einige oder alle Kerne können Befehle parallel zueinander ausführen. Darüber hinaus kann jeder einzelne Kern zwei oder mehr Befehle gleichzeitig ausführen. Zum Beispiel kann jeder Kern als 16er Vektor-Maschine arbeiten, die bis zu 16 Elemente parallel verarbeitet. Für Vektoren mit mehr als 16 Elementen kann die Software den Vektor in Untermengen unterteilen, die jeweils 16 Elemente (oder ein Vielfaches davon) enthalten, wobei zwei oder mehr Untermengen im Wesentlichen gleichzeitig auf zwei oder mehr Kernen laufen. Außerdem können ein oder mehrere der Kerne superskalar sein (z. B. können sie parallele/SIMD-Operationen und skalare Operationen ausführen). Darüber hinaus können bei anderen Ausführungsformen geeignete Abwandlungen der vorgenannten Konfigurationen verwendet werden, wie etwa CPUs mit mehr oder weniger Hilfskernen, usw.
  • Bei der Ausführungsform von 1 hat der Verarbeitungskern 33 eine Ausführungseinheit 130 und eine oder mehrere Registerdateien 150. Die Registerdateien 150 können verschiedene Vektorregister (z. B. ein Vektorregister V1, ein Vektorregister V2, ..., ein Vektorregister Vn) und verschiedene Maskenregister (z. B. ein Maskenregister M1, ein Maskenregister M2, ..., ein Maskenregister Mn) haben. Registerdateien können auch verschiedene andere Register, wie etwa ein oder mehrere IP-Register 211 (IP: instruction pointer; Befehlszeiger) zum Verfolgen des oder der aktuellen oder nächsten Prozessorbefehls/-befehle zum Ausführen in einem oder mehreren Ausführungsströmen oder -threads, und andere Arten von Registern haben.
  • Der Verarbeitungskern 33 hat außerdem einen Decodierer 165 zum Erkennen und Decodieren von Befehlen eines Befehlssatzes, der PackStore- und LoadUnpack-Befehle enthält, zur Ausführung mit der Ausführungseinheit 130. Der Verarbeitungskern 33 kann auch einen Cache-Speicher 160 haben. Der Verarbeitungskern 31 kann auch Komponenten wie einen Decodierer, eine Ausführungseinheit, einen Cache-Speicher, Registerdateien usw. haben. Die Verarbeitungskerne 31, 33 und 33n und der Prozessor 22 haben außerdem weitere Schaltungen, die für das Verständnis der vorliegenden Erfindung nicht erforderlich sind.
  • Bei der Ausführungsform von 1 dient der Decodierer 165 zum Decodieren von Befehlen, die mit dem Verarbeitungskern 33 empfangen werden, und die Ausführungseinheit 130 dient zum Ausführen von Befehlen, die mit dem Verarbeitungskern 33 empfangen werden. Der Decodierer 165 kann zum Beispiel Maschinenbefehle, die mit dem Prozessor 22 empfangen werden, in Steuersignale und/oder Mikrocode-Eingabestellen decodieren. Diese Steuersignale und/oder Mikrocode-Eingabestellen können von dem Decodierer 165 an die Ausführungseinheit 130 gesendet werden.
  • Bei einer alternativen Ausführungsform, die in 1 durch Strichlinien dargestellt ist, kann ein Decodierer 167 in dem Verarbeitungskern 31 die Maschinenbefehle decodieren, die mit dem Prozessor 22 empfangen werden, und der Verarbeitungskern 31 kann einige Befehle (z. B. PackStore und LoadUnpack) als einen Typ erkennen, der von einem Coprozessor, wie etwa dem Kern 33, verarbeitet werden sollte. Die Befehle, die von dem Decodierer 167 zu einem anderen Kern geroutet werden sollen, können als Coprozessorbefehle bezeichnet werden. Wenn der Verarbeitungskern 31 einen Coprozessorbefehl erkennt, kann er diesen Befehl zu dem Verarbeitungskern 33 zur Ausführung routen. Alternativ kann der Hauptkern bestimmte Steuersignale an den Hilfskern senden, wobei diese Steuersignale den auszuführenden Coprozessorbefehlen entsprechen.
  • Bei einer alternativen Ausführungsform können verschiedene Verarbeitungskerne in getrennten Chippaketen residieren. Bei anderen Ausführungsformen können mehr als zwei verschiedene Prozessoren und/oder Verarbeitungskerne verwendet werden. Bei einer weiteren Ausführungsform kann ein Verarbeitungssystem einen einzigen Prozessor mit einem einzigen Verarbeitungskern mit Möglichkeiten zum Ausführen der hier beschriebenen Operationen haben. Auf jeden Fall kann mindestens ein Verarbeitungskern mindestens einen Befehl, der unmaskierte Elemente eines Vektorregisters bündelt und die gebündelten Elemente ab einer festgelegten Adresse abspeichert, und/oder mindestens einen Befehl ausführen, der Elemente von einer festgelegten Speicheradresse lädt und die Daten in die unmaskierten Elemente eines Ziel-Vektorregisters entpackt. Zum Beispiel kann der Decodierer 165 in Reaktion auf den Empfang eines PackStore-Befehls eine Vektorverarbeitungsschaltung 145 in der Ausführungseinheit 130 veranlassen, das erforderliche Packen und Speichern durchzuführen. Und in Reaktion auf den Empfang eines LoadUnpack-Befehls kann der Decodierer 165 die Vektorverarbeitungsschaltung 145 in der Ausführungseinheit 130 veranlassen, das erforderliche Laden und Entpacken durchzuführen.
  • 2 ist ein Ablaufdiagramm einer beispielhaften Ausführungsform eines Prozesses zum Verarbeiten von Vektoren in dem Verarbeitungssystem von 1. Der Prozess beginnt an einem Block 210 damit, dass der Decodierer 165 einen Prozessorbefehl aus einem Programm 100 empfängt. Das Programm 100 kann zum Beispiel ein Programm zum Rendern von Grafik sein. Bei einem Block 220 ermittelt der Decodierer 165, ob der Befehl ein PackStore-Befehl ist. Wenn der Befehl ein PackStore-Befehl ist, sendet der Decodierer 165 den Befehl oder Signale, die dem Befehl entsprechen, an die Ausführungseinheit 130. Wie bei einem Block 222 gezeigt ist, kann die Vektorverarbeitungsschaltung 145 in der Ausführungseinheit 130 in Reaktion auf den Empfang dieses Eingangssignals die unmaskierten Vektorelemente aus dem festgelegten Vektorregister ab einem festgelegten Speicherplatz in den Speicher kopieren. Die Vektorverarbeitungsschaltung 145 kann auch als Vektorprozessor 145 bezeichnet werden. Insbesondere kann der Vektorprozessor 145 die Daten aus den unmaskierten Elementen in einen zusammenhängenden Speicherplatz im Speicher packen, wie nachstehend unter Bezugnahme auf 3 näher erläutert wird.
  • Wenn jedoch der Befehl kein PackStore-Befehl ist, kann der Prozess von dem Block 220 zu einem Block 230 weitergehen, der zeigt, dass der Decodierer 165 ermittelt, ob der Befehl ein LoadUnpack-Befehl ist. Wenn der Befehl ein LoadUnpack-Befehl ist, sendet der Decodierer 165 den Befehl oder Signale, die dem Befehl entsprechen, an die Ausführungseinheit 130. Wie bei einem Block 232 gezeigt ist, kann die Vektorverarbeitungsschaltung 145 in der Ausführungseinheit 130 in Reaktion auf den Empfang dieses Eingangssignals Daten aus zusammenhängenden Plätzen im Speicher ab einem festgelegten Speicherplatz in unmaskierte Vektorelemente eines festgelegten Vektorregisters kopieren, wobei Daten in einem festgelegten Maskenregister angeben, welche Vektorelemente maskiert sind. Wie bei einem Block 240 gezeigt ist, kann der Prozessor 22 in dem Fall, dass der Befehl kein PackStore und kein LoadUnpack ist, dann mit mehr oder weniger herkömmlichen Verfahren den Befehl ausführen.
  • 3 ist ein Blockdiagramm, das beispielhafte Argumente und Speicherkonstrukte zum Ausführen eines PackStore-Befehls zeigt. Insbesondere zeigt 3 ein beispielhaftes Template 50 für einen PackStore-Befehl. Zum Beispiel gibt das PackStore-Template 50 an, dass der PackStore-Befehl einen Opcode 52 und mehrere Argumente oder Parameter haben kann, wie etwa einen Ziel-Parameter 54, einen Quellen-Parameter 56 und einen Masken-Parameter 58. In dem Beispiel von 3 identifiziert der Opcode 52 den Befehl als PackStore-Befehl, der Ziel-Parameter 54 legt einen Speicherplatz fest, der als Bestimmungsort für das Ergebnis zu verwenden ist, der Quellen-Parameter 56 legt ein Quellen-Vektorregister fest, und der Masken-Parameter 58 legt ein Maskenregister mit Bits fest, die Elementen in dem festgelegten Vektorregister entsprechen.
  • Insbesondere zeigt 3, dass der spezielle PackStore-Befehl in dem Template 50 das Maskenregister M1 mit dem Vektorregister V1 assoziiert. Darüber hinaus zeigt die Tabelle in 3 rechts oben, wie verschiedene Gruppen von Bits in dem Vektorregister V1 mit verschiedenen Vektorelementen korrespondieren. Zum Beispiel enthalten Bits 31:0 ein Element a, Bits 63:32 enthalten ein Element b, usw. Darüber hinaus ist das Maskenregister M1 auf das Vektorregister V1 ausgerichtet dargestellt, um zu zeigen, dass Bits in dem Maskenregister M1 mit Elementen in dem Vektorregister V1 korrespondiert. Zum Beispiel enthalten die ersten drei Bits (von rechts) in dem Maskenregister M1 0en, wodurch angegeben wird, dass die Elemente a, b und c maskiert sind. Alle anderen Elemente außer Elementen d, e und n, die 1en in dem Maskenregister M1 entsprechen, sind ebenfalls maskiert. Die Tabelle rechts unten in 3 zeigt die unterschiedlichen Adressen, die mit unterschiedlichen Plätzen in einem Speicherbereich MA1 assoziiert sind. Zum Beispiel referenziert eine lineare Adresse 0b0100 (wobei das Präfix 0b eine Binärdarstellung angibt) ein Element E in dem Speicherbereich MA1, die lineare Adresse 0b0101 referenziert ein Element F in dem Speicherbereich MA1, usw.
  • Wie vorstehend dargelegt worden ist, kann der Prozessor 22 einen Prozessorbefehl mit einem Quellen-Parameter zum Festlegen eines Vektorregisters, einen Masken-Parameter zum Festlegen eines Maskenregisters und einen Ziel-Parameter zum Festlegen eines Speicherplatzes empfangen. Der Prozessor 22 kann in Reaktion auf den Empfang des Prozessorbefehls Vektorelemente, die unmaskierten Bits in dem festgelegten Maskenregister entsprechen, ab dem festgelegten Speicherplatz an fortlaufende Speicherplätze kopieren, ohne Vektorelemente zu kopieren, die maskierten Bits in dem festgelegten Maskenregister entsprechen.
  • Somit kann, wie durch die Pfeile angegeben wird, die von den Elementen d, e und n in dem Vektorregister V1 zu Elementen F, G und H in dem Speicherbereich MA1 führen, der PackStore-Befehl 50 den Prozessor 22 veranlassen, nicht-zusammenhängende Elemente d, e und n aus dem Vektorregister V1 ab dem festgelegten Speicherplatz an zusammenhängende Speicherplätze (z. B. die Speicherplätze F, G und H) zu packen.
  • 4 ist ein Blockdiagramm, das beispielhafte Argumente und Speicherkonstrukte zum Ausführen eines LoadUnpack-Befehls zeigt. Insbesondere zeigt 4 ein beispielhaftes Template 60 für einen LoadUnpack-Befehl. Zum Beispiel gibt das LoadUnpack-Template 60 an, dass der LoadUnpack-Befehl einen Operationscode (Opcode) 62 und mehrere Argumente oder Parameter haben kann, wie etwa einen Ziel-Parameter 64, einen Quellen-Parameter 66 und einen Masken-Parameter 68. In dem Beispiel von 4 identifiziert der Opcode 62 den Befehl als LoadUnpack-Befehl, der Ziel-Parameter 64 legt ein Quellen-Vektorregister fest, das als Bestimmungsort für das Ergebnis zu verwenden ist, der Quellen-Parameter 66 legt einen Quellen-Speicherplatz fest, und der Masken-Parameter 68 legt ein Maskenregister mit Bits fest, die Elementen in dem festgelegten Vektorregister entsprechen.
  • Insbesondere zeigt 4, dass der spezielle LoadUnpack-Befehl in dem Template 60 das Maskenregister M1 mit dem Vektorregister V1 assoziiert. Darüber hinaus zeigt die Tabelle in 4 rechts oben, wie verschiedene Gruppen von Bits in dem Vektorregister V1 mit verschiedenen Vektorelementen korrespondieren. Darüber hinaus ist das Maskenregister M1 auf das Vektorregister V1 ausgerichtet dargestellt, um zu zeigen, dass Bits in dem Maskenregister M1 mit Elementen in dem Vektorregister V1 korrespondieren. Die Tabelle rechts unten in 4 zeigt die unterschiedlichen Adressen, die mit unterschiedlichen Plätzen in dem Speicherbereich MA1 assoziiert sind.
  • Wie vorstehend dargelegt worden ist, kann der Prozessor 22 einen Prozessorbefehl mit einem Quellen-Parameter zum Festlegen eines Speicherplatzes, einen Masken-Parameter zum Festlegen eines Maskenregisters und einen Ziel-Parameter zum Festlegen eines Vektorregisters empfangen. Der Prozessor 22 kann in Reaktion auf den Empfang des Prozessorbefehls Datenelemente aus zusammenhängenden Speicherplätzen ab dem festgelegten Speicherplatz in Elemente des festgelegten Vektorregisters kopieren, die unmaskierten Bits in dem festgelegten Maskenregister entsprechen, ohne Daten in Vektorelemente zu kopieren, die maskierten Bits in dem festgelegten Maskenregister entsprechen.
  • Somit kann, wie durch die Pfeile angegeben wird, die von den Speicherplätzen F, G und H in dem Speicherbereich MA1 zu den Elementen d, e bzw. n in dem Vektorregister V1 führen, der LoadUnpack-Befehl 60 den Prozessor 22 veranlassen, Daten aus zusammenhängenden Speicherplätzen (z. B. den Speicherplätzen F, G und H) ab dem festgelegten Speicherplatz (z. B. dem Speicherplatz F an der linearen Adresse 0b0101) in nicht-zusammenhängende Elemente des Vektorregisters V1 zu kopieren.
  • Wie vorstehend dargelegt worden ist, können also mit dem PackStore-Befehl ausgewählte Elemente von einem Quellenvektor in zusammenhängende Speicherplätze verschoben oder kopiert werden, und mit dem LoadUnpack-Befehl können zusammenhängende Datenelemente im Speicher in ausgewählte Elemente in einem Vektorregister verschoben oder kopiert werden. In beiden Fällen beruhen Mappings zumindest teilweise auf einem Maskenregister, das Maskenwerte enthält, die den Elementen des Vektorregisters entsprechen. Diese Arten von Operationen können oftmals „frei" sein oder sie haben nur einen minimalen Einfluss auf die Durchführung in dem Sinne, dass der Programmierer in der Lage ist, Ladungen und Speicher in ihrem Code durch LoadUnpacks und PackStores mit, wenn überhaupt, minimalen zusätzlichen Setup-Befehlen zu ersetzen.
  • Angesichts der Grundsätze und beispielhaften Ausführungsformen, die hier beschrieben und dargestellt worden sind, ist zu erkennen, dass die dargestellten Ausführungsformen in ihrer Anordnung und ihren Einzelheiten modifiziert werden können, ohne von diesen Grundsätzen abzuweichen. Zum Beispiel werden bei den Ausführungsformen der 3 und 4 Speicherplätze durch eine lineare Adresse (z. B. durch Adressbits, die einen Speicherplatz in einer 64-Byte-Cache-Leitung definieren) referenziert. Bei anderen Ausführungsformen können jedoch andere Verfahren zum Identifizieren von Speicherplätzen verwendet werden.
  • Die vorstehende Diskussion hat sich auf spezielle Ausführungsformen konzentriert, aber es werden auch andere Konfigurationen in Erwägung gezogen. Insbesondere werden hier Ausdrücke wie „bei einer Ausführungsform", „bei einer anderen Ausführungsform" oder dergleichen verwendet, aber diese Wendungen sollen allgemein auf mögliche Ausführungsformen hinweisen und sollen die Erfindung nicht auf bestimmte Konfigurationen von Ausführungsformen beschränken. Diese Begriffe, die hier benutzt werden, können auf dieselben oder andere Ausführungsformen hinweisen, die zu anderen Ausführungsformen kombiniert werden können.
  • Ebenso sind beispielhafte Prozesse in Bezug auf spezielle Operationen beschrieben worden, die in einer speziellen Reihenfolge ausgeführt werden, aber für diese Prozesse könnten zahlreiche Modifikationen verwendet werden, um zahlreiche alternative Ausführungsformen der vorliegenden Erfindung abzuleiten. Zum Beispiel können alternative Ausführungsformen Prozesse beinhalten, die weniger als alle der beschriebenen Operationen verwenden; Prozesse, die zusätzliche Operationen verwenden; Prozesse, die die gleichen Operationen in einer anderen Reihenfolge verwenden; und Prozesse, in denen die einzelnen Operationen, die hier beschrieben sind, kombiniert, unterteilt oder in anderer Weise abgeändert werden.
  • Alternative Ausführungsformen der Erfindung können auch maschinenzugreifbare Medien beinhalten, die Befehle zum Ausführen von Operationen der Erfindung codieren. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden. Solche maschinenzugreifbaren Medien können unter anderem Speichermedien, wie etwa Disketten, Festplatten, CD-ROMs, ROMs und RAMs, und andere identifizierbare Anordnungen von Teilchen sein, die mit einer Maschine oder einer Vorrichtung hergestellt werden. Befehle können auch in einer verteilten Umgebung verwendet werden und können für den Zugriff durch Ein- oder Mehrprozessormaschinen lokal und/oder entfernt gespeichert werden.
  • Es dürfte ebenfalls klar sein, dass die hier dargestellten Hardware- und Software-Komponenten Funktionselemente darstellen, die weitgehend in sich abgeschlossen sind, sodass jede Komponente im Wesentlichen unabhängig von den anderen entworfen, konstruiert oder aktualisiert werden kann. Die Steuerlogik zum Bereitstellen der hier beschriebenen und dargestellten Funktionalität kann bei verschiedenen Ausführungsformen als Hardware, Software oder Kombinationen von Hardware und Software implementiert werden. Zum Beispiel kann die Ausführungslogik in einem Prozessor Schaltkreise und/oder Mikrocodes zum Ausführen der Operationen haben, die zum Abrufen, Decodieren und Ausführen von Maschinenbefehlen erforderlich sind.
  • Die hier benutzten Begriffe „Verarbeitungssystem" und „Datenverarbeitungssystem" sollen allgemein eine einzelne Maschine oder ein System von kommunikationsfähig verbundenen Maschinen oder Vorrichtungen umfassen, die gemeinsam arbeiten. Beispielhafte Verarbeitungssysteme sind unter anderem verteilte Rechensysteme, Supercomputer, Hochleistungs-Rechensysteme, Rechencluster, Großrechner, Minicomputer, Client-Server-Systeme, Personal Computer, Workstations, Server, tragbare Computer, Laptop-Computer, Tabletts, Telefone, Per sonal Digital Assistants (PDAs), Handheld-Geräte, Unterhaltungsgeräte, wie etwa Audio- und/oder Videogeräte, und andere Plattformen oder Geräte zur Verarbeitung oder Übertragung von Informationen.
  • Angesichts der breiten Palette von zweckmäßigen Permutationen, die problemlos von den hier beschriebenen beispielhaften Ausführungsformen abgeleitet werden können, soll diese detaillierte Beschreibung nur erläuternd sein und darf nicht als Beschreibung angesehen werden, die den Schutzumfang der Erfindung beschränkt. Das, was als Erfindung beansprucht wird, umfasst daher alle Implementierungen, die innerhalb des Schutzumfangs und des Grundgedankens der nachstehenden Ansprüche liegen, und alle Äquivalente dieser Implementierungen.

Claims (30)

  1. Prozessor mit: einer Ausführungslogik zum Ausführen eines Prozessorbefehls durch Ausführen von Operationen, die Folgendes umfassen: Kopieren von unmaskierten Vektorelementen aus einem Quellen-Vektorregister in fortlaufende Speicherplätze, beginnend mit einem festgelegten Speicherplatz, ohne maskierte Vektorelemente aus dem Quellen-Vektorregister zu kopieren.
  2. Prozessor nach Anspruch 1, wobei die unmaskierten Vektorelemente Vektorelemente umfassen, die Bits entsprechen, die einen ersten Wert in einem Maskenregister des Prozessors haben, und die maskierten Vektorelemente Vektorelemente umfassen, die Bits entsprechen, die einen zweiten Wert in dem Maskenregister haben.
  3. Prozessor nach Anspruch 1, der weiterhin Folgendes aufweist: ein Vektorregister zum Halten einer Anzahl von Vektorelementen, wobei das Vektorregister so betreibbar ist, dass es als Quellen-Vektorregister dient; und ein Maskenregister zum Halten einer Anzahl von Maskenbits, die mindestens gleich der Anzahl von Vektorelementen ist.
  4. Prozessor nach Anspruch 1, wobei der festgelegte Speicherplatz einen Speicherplatz umfasst, der mittels eines Arguments des Prozessorbefehls festgelegt wird.
  5. Prozessor nach Anspruch 1, wobei der Prozessorbefehl einen ersten Befehl umfasst und die Ausführungslogik so betreibbar ist, dass sie in Reaktion auf einen zweiten Prozessorbefehl mit einem Argument, das einen Speicherplatz identifiziert, Datenelemente aus fortlaufenden Speicherplätzen ab dem identifizierten Speicherplatz in unmaskierte Vektorelemente eines Ziel-Vektorregisters kopiert, ohne maskierte Vektorelemente des Ziel-Vektorregisters zu modifizieren.
  6. Prozessor nach Anspruch 5, wobei der Prozessor mehrere Vektorregister und mehrere Maskenregister aufweist und der erste und der zweite Prozessorbefehl jeweils Argumente zum Identifizieren eines gewünschten Vektorregisters von den mehreren Vektorregistern aufweisen, um ein entsprechendes Maskenregister von den mehreren Maskenregistern zu identifizieren und einen gewünschten Speicherplatz zu identifizieren.
  7. Prozessor nach Anspruch 5, wobei der erste Prozessorbefehl einen PackStore-Befehl umfasst und der zweite Prozessorbefehl einen LoadUnpack-Befehl umfasst.
  8. Prozessor nach Anspruch 1, wobei der Prozessor mehrere Vektorregister aufweist und der Prozessorbefehl ein Quellen-Argument zum Identifizieren eines gewünschten Vektorregisters von den mehreren Vektorregistern aufweist.
  9. Prozessor nach Anspruch 1, wobei der Prozessor mehrere Maskenregister aufweist und der Prozessorbefehl ein Masken-Argument zum Identifizieren eines gewünschten Maskenregisters von den mehreren Maskenregistern aufweist.
  10. Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass der Prozessor mehrere Vektorregister und mehrere Maskenregister aufweist und der Prozessorbefehl ein Quellen-Argument zum Identifizieren eines gewünschten Vektorregisters von den mehreren Vektorregistern und ein Masken-Argument zum Identifizieren eines entsprechenden Maskenregisters von den mehreren Maskenregistern aufweist.
  11. Prozessor nach Anspruch 1, der weiterhin mehrere Verarbeitungskerne aufweist, von denen mindestens zwei Verarbeitungskerne Schaltkreise aufweisen, die so betreibbar sind, dass sie PackStore-Befehle und LoadUnpack-Befehle ausführen.
  12. Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass der Prozessorbefehl einen Umwandlungsindikator aufweist, wobei der Schaltkreis weiterhin so betreibbar ist, dass er eine Format-Umwandlung an einem Vektorelement aufgrund, zumindest teilweise, des Umwandlungsindikators durchführt, bevor er das Vektorelement abspeichert.
  13. Maschinenzugreifbares Medium, in dem ein PackStore-Befehl gespeichert ist, wobei der PackStore-Befehl ein Argument zum Identifizieren eines Speicherplatzes aufweist und der PackStore-Befehl bei seiner Ausführung mit einem Prozessor den Prozessor veranlasst, unmaskierte Vektorelemente aus einem Quellen-Vektorregister in fortlaufende Speicherplätze, beginnend mit dem identifizierten Speicherplatz, zu kopieren, ohne maskierte Vektorelemente zu kopieren.
  14. Maschinenzugreifbares Medium nach Anspruch 13, wobei der PackStore-Befehl weiterhin Folgendes aufweist: ein Quellen-Argument zum Identifizieren des Quellen-Vektorregisters und einen Masken-Argument zum Identifizieren eines entsprechenden Maskenregisters.
  15. Maschinenzugreifbares Medium nach Anspruch 13, wobei der PackStore-Befehl weiterhin Folgendes aufweist: einen Umwandlungsindikator zum Festlegen einer Format-Umwandlung, die an einem Vektorelement durchzuführen ist, bevor der Prozessor dieses Vektorelement abspeichert.
  16. Maschinenzugreifbares Medium, in dem ein LoadUnpack-Befehl gespeichert ist, wobei der LoadUnpack-Befehl ein Argument zum Identifizieren eines Speicherplatzes aufweist und der LoadUnpack-Befehl bei seiner Ausführung mit einem Prozessor den Prozessor veranlasst, Datenelemente aus fortlaufenden Speicherplätzen, beginnend mit dem identifizierten Speicherplatz, in unmaskierte Vektorelemente eines Ziel-Vektorregisters zu kopieren, ohne maskierte Vektorelemente des Ziel-Vektorregisters zu modifizieren.
  17. Maschinenzugreifbares Medium nach Anspruch 16, wobei der LoadUnpack-Befehl weiterhin Folgendes aufweist: ein Ziel-Argument zum Identifizieren des Ziel-Vektorregisters und ein Masken-Argument zum Identifizieren eines entsprechenden Maskenregisters.
  18. Maschinenzugreifbares Medium nach Anspruch 16, wobei der LoadUnpack-Befehl weiterhin Folgendes aufweist: einen Umwandlungsindikator zum Festlegen einer Format-Umwandlung, die an einem Datenelement durchzuführen ist, bevor der Prozessor dieses Datenelement in dem Ziel-Vektorregister speichert.
  19. Verfahren zum Verarbeiten von Vektorbefehlen mit den folgenden Schritten: Empfangen eines Prozessorbefehls mit einem Quellen-Parameter zum Festlegen eines Vektorregisters, einem Masken-Parameter zum Festlegen eines Maskenregisters und einem Ziel-Parameter zum Festlegen eines Speicherplatzes und in Reaktion auf den Empfang des Prozessorbefehls Kopieren von unmaskierten Vektorelementen aus dem festgelegten Vektorregister in fortlaufende Speicherplätze, beginnend mit dem festgelegten Speicherplatz, ohne maskierte Vektorelemente zu kopieren.
  20. Verfahren nach Anspruch 19, wobei jedes Vektorelement eine vorgegebene Anzahl von Bits in dem Vektorregister belegt, der Prozessorbefehl einen Umwandlungsindikator aufweist, in Reaktion auf den Empfang des Prozessorbefehls ein Vektorelement automatisch entsprechend dem Umwandlungsindikator umgewandelt wird, bevor dieses Vektorelement abgespeichert wird, und das Vektorelement als Datenelement gespeichert wird, das eine andere Anzahl von Bits als die vorgegebene Anzahl von Bits belegt.
  21. Verfahren nach Anspruch 19, wobei die unmaskierten Vektorelemente Vektorelemente umfassen, die unmaskierten Bits in dem festgelegten Maskenregister entsprechen, und die maskierten Vektorelemente Vektorelemente umfassen, die maskierten Bits in dem festgelegten Maskenregister entsprechen.
  22. Verfahren zum Verarbeiten von Vektorbefehlen mit den folgenden Schritten: Empfangen eines Prozessorbefehls mit einem Quellen-Parameter zum Festlegen eines Speicherplatzes, einem Masken-Parameter zum Festlegen eines Maskenregisters und einem Ziel-Parameter zum Festlegen eines Vektorregisters und in Reaktion auf den Empfang des Prozessorbefehls Kopieren von Daten aus fortlaufenden Speicherplätzen beginnend mit dem festgelegten Speicherplatz, in unmaskierte Vektorelemente des festgelegten Vektorregisters, ohne Daten in maskierte Vektorelemente des festgelegten Vektorregisters zu kopieren.
  23. Verfahren nach Anspruch 22, wobei jedes Datenelement eine vorgegebene Anzahl von Bits im Speicher belegt, der Prozessorbefehl einen Umwandlungsindikator aufweist, in Reaktion auf den Empfang des Prozessorbefehls ein Datenelement automatisch entsprechend dem Umwandlungsindikator umgewandelt wird, bevor dieses Datenelement in dem Ziel-Vektorregister gespeichert wird, und das Datenelement als Vektorelement gespeichert wird, das eine andere Anzahl von Bits als die vorgegebene Anzahl von Bits belegt.
  24. Verfahren nach Anspruch 22, wobei die unmaskierten Vektorelemente Vektorelemente umfassen, die unmaskierten Bits in dem festgelegten Maskenregister entsprechen, und die maskierten Vektorelemente Vektorelemente umfassen, die maskierten Bits in dem festgelegten Maskenregister entsprechen.
  25. Computersystem mit: einem Speicher zum Speichern eines PackStore-Befehls und einem mit dem Speicher verbundenen Prozessor, der eine Steuerlogik zum Decodieren des PackStore-Befehls aufweist.
  26. Computersystem nach Anspruch 25, wobei der Prozessor mehrere Vektorregister und mehrere Maskenregister aufweist und der PackStore-Befehl ein Quellen-Argument zum Identifizieren eines gewünschten Vektorregisters von den mehreren Vektorregistern und ein Masken-Argument zum Identifizieren eines entsprechenden Maskenregisters von den mehreren Maskenregistern aufweist.
  27. Computersystem nach Anspruch 25, wobei der Prozessor mehrere Verarbeitungskerne aufweist, von denen mindestens zwei Verarbeitungskerne Schaltkreise aufweisen, die so betreibbar sind, dass sie PackStore-Befehle ausführen.
  28. Computersystem mit: einem Speicher zum Speichern eines LoadUnpack-Befehls und einem mit dem Speicher verbundenen Prozessor, der eine Steuerlogik zum Decodieren des LoadUnpack-Befehls aufweist.
  29. Computersystem nach Anspruch 28, wobei der Prozessor mehrere Vektorregister und mehrere Maskenregister aufweist und der LoadUnpack-Befehl ein Ziel-Argument zum Identifizieren eines gewünschten Vektorregisters von den mehreren Vektorregistern und ein Masken-Argument zum Identifizieren eines entsprechenden Maskenregisters von den mehreren Maskenregistern aufweist.
  30. Computersystem nach Anspruch 25, wobei der Prozessor mehrere Verarbeitungskerne aufweist, von denen mindestens zwei Verarbeitungskerne Schaltkreise aufweisen, die so betreibbar sind, dass sie LoadUnpack-Befehle ausführen.
DE102008059790A 2007-12-26 2008-12-01 Verfahren, Vorrichtung und Befehle zum Verarbeiten von Vektordaten Withdrawn DE102008059790A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/964,604 2007-12-26
US11/964,604 US20090172348A1 (en) 2007-12-26 2007-12-26 Methods, apparatus, and instructions for processing vector data

Publications (1)

Publication Number Publication Date
DE102008059790A1 true DE102008059790A1 (de) 2009-07-02

Family

ID=40690955

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008059790A Withdrawn DE102008059790A1 (de) 2007-12-26 2008-12-01 Verfahren, Vorrichtung und Befehle zum Verarbeiten von Vektordaten

Country Status (3)

Country Link
US (3) US20090172348A1 (de)
CN (2) CN103500082B (de)
DE (1) DE102008059790A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2888658A1 (de) * 2012-08-23 2015-07-01 Qualcomm Incorporated Systeme und verfahren zur datenextraktion in einem vektorprozessor

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8909901B2 (en) 2007-12-28 2014-12-09 Intel Corporation Permute operations with flexible zero control
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
US9342304B2 (en) * 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US8209525B2 (en) * 2008-08-15 2012-06-26 Apple Inc. Method and apparatus for executing program code
US8607033B2 (en) * 2010-09-03 2013-12-10 Lsi Corporation Sequentially packing mask selected bits from plural words in circularly coupled register pair for transferring filled register bits to memory
US8904153B2 (en) 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
ES2943248T3 (es) 2011-04-01 2023-06-12 Intel Corp Formato de instrucción compatible con vectores y ejecución del mismo
US20130027416A1 (en) * 2011-07-25 2013-01-31 Karthikeyan Vaithianathan Gather method and apparatus for media processing accelerators
CN106293631B (zh) * 2011-09-26 2020-04-10 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
US9766886B2 (en) * 2011-12-16 2017-09-19 Intel Corporation Instruction and logic to provide vector linear interpolation functionality
CN104011670B (zh) 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
US9760371B2 (en) * 2011-12-22 2017-09-12 Intel Corporation Packed data operation mask register arithmetic combination processors, methods, systems, and instructions
CN104115114B (zh) 2011-12-23 2018-06-12 英特尔公司 经改进的提取指令的装置和方法
US9354877B2 (en) * 2011-12-23 2016-05-31 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression
CN110471699B (zh) 2011-12-23 2023-07-28 英特尔公司 用于指令处理的处理器核、方法和系统
WO2013095620A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved insert instructions
US20140223138A1 (en) * 2011-12-23 2014-08-07 Elmoustapha Ould-Ahmed-Vall Systems, apparatuses, and methods for performing conversion of a mask register into a vector register.
US9632980B2 (en) 2011-12-23 2017-04-25 Intel Corporation Apparatus and method of mask permute instructions
WO2013095637A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved permute instructions
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
EP2798480B1 (de) * 2011-12-30 2018-09-26 Intel Corporation Anweisung für eine vektorkomprimierungsfrequenz
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9575755B2 (en) 2012-08-03 2017-02-21 International Business Machines Corporation Vector processing in an active memory device
US9632777B2 (en) * 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9569211B2 (en) 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
US9606961B2 (en) 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9632781B2 (en) * 2013-02-26 2017-04-25 Qualcomm Incorporated Vector register addressing and functions based on a scalar register data value
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9645820B2 (en) * 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US9513907B2 (en) * 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US9495155B2 (en) 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US9552205B2 (en) * 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
US9880845B2 (en) 2013-11-15 2018-01-30 Qualcomm Incorporated Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
TWI489279B (zh) * 2013-11-27 2015-06-21 Realtek Semiconductor Corp 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法
US8947447B1 (en) 2014-02-13 2015-02-03 Raycast Systems, Inc. Computer hardware architecture and data structures for ray binning to support incoherent ray traversal
US9557995B2 (en) * 2014-02-07 2017-01-31 Arm Limited Data processing apparatus and method for performing segmented operations
US11030105B2 (en) 2014-07-14 2021-06-08 Oracle International Corporation Variable handles
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US20170185413A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Processing devices to perform a conjugate permute instruction
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
DE102017207876A1 (de) * 2017-05-10 2018-11-15 Robert Bosch Gmbh Parallelisierte Verarbeitung
US10331446B2 (en) * 2017-05-23 2019-06-25 International Business Machines Corporation Generating and verifying hardware instruction traces including memory data contents
CN112415932B (zh) * 2020-11-24 2023-04-25 海光信息技术股份有限公司 电路模块及其驱动方法、电子设备
CN117215653A (zh) * 2023-11-07 2023-12-12 英特尔(中国)研究中心有限公司 处理器

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6015771A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd ベクトルプロセッサ
JPS62276668A (ja) * 1985-07-31 1987-12-01 Nec Corp ベクトルマスク演算制御ユニツト
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
US5206822A (en) * 1991-11-15 1993-04-27 Regents Of The University Of California Method and apparatus for optimized processing of sparse matrices
JP2665111B2 (ja) * 1992-06-18 1997-10-22 日本電気株式会社 ベクトル処理装置
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
JP3515337B2 (ja) * 1997-09-22 2004-04-05 三洋電機株式会社 プログラム実行装置
US7133040B1 (en) * 1998-03-31 2006-11-07 Intel Corporation System and method for performing an insert-extract instruction
US7529907B2 (en) * 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6591361B1 (en) * 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
US7093102B1 (en) * 2000-03-29 2006-08-15 Intel Corporation Code sequence for vector gather and scatter
US6701424B1 (en) * 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US6697064B1 (en) * 2001-06-08 2004-02-24 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US8191056B2 (en) * 2006-10-13 2012-05-29 International Business Machines Corporation Sparse vectorization without hardware gather/scatter
US7620797B2 (en) * 2006-11-01 2009-11-17 Apple Inc. Instructions for efficiently accessing unaligned vectors

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2888658A1 (de) * 2012-08-23 2015-07-01 Qualcomm Incorporated Systeme und verfahren zur datenextraktion in einem vektorprozessor

Also Published As

Publication number Publication date
US20090172348A1 (en) 2009-07-02
CN101482810B (zh) 2013-11-06
CN103500082A (zh) 2014-01-08
US20140129802A1 (en) 2014-05-08
CN101482810A (zh) 2009-07-15
US20130124823A1 (en) 2013-05-16
CN103500082B (zh) 2018-11-02

Similar Documents

Publication Publication Date Title
DE102008059790A1 (de) Verfahren, Vorrichtung und Befehle zum Verarbeiten von Vektordaten
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE112010002773T5 (de) Entpacken von gepackten daten auf mehreren spuren
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE112007001466T5 (de) Behandlung von Adressübersetzungen und Ausnahmen einer Heterogenen Ressource
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE102014003798A1 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE112004001652B4 (de) Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112012007088T5 (de) Befehl zum Reduzieren von Elementen in einem Vektorregister mit einem schrittweisen Zugriffsmuster
DE112016005823T5 (de) Überwachen des betriebs eines prozessors
DE102015007422A1 (de) Befehlssatz zum Eliminieren fehlausgerichteter Speicherzugriffe während der Verarbeitung eines Arrays mit fehlausgerichteten Datenzeilen
DE102018126036A1 (de) Systeme und verfahren zum setzen eines kachelregisterpaars auf null
DE202019005683U1 (de) Prozessorkern mit Unterstützung einer Befehlssatzarchitektur für heterogene Systeme
DE102020129549A1 (de) Leistungsüberwachung in heterogenen systemen
DE102007046947A1 (de) System und Verfahren zum Verwalten von Systemmanagement-Interrupts in einem Mehrprozessor-Computersystem
DE112017003347T5 (de) Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge
DE102018125971A1 (de) Systeme und verfahren zum berechnen von skalaprodukten von halbbytes in operanden aus zwei kacheln

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee