-
ALLGEMEINER STAND DER TECHNIK
-
Eine Zentralprozessoreinheit (CPU) eines Computersystems kann mehrere funktionelle Ausführungseinheiten zur parallelen Verarbeitung von Befehlen beinhalten. Bei den Befehlen kann es sich z. B. um Single-Instruction-Multiple-Data(SIMD)-Befehle handeln. Durch einen SIMD-Befehl kann eine gemeinsame Operation an mehreren Daten parallel ausgeführt werden. Somit kann ein SIMD-Befehl der CPU ermöglichen, gleichzeitig mehrere iterative Berechnungen durchzuführen, um die Gesamt-Ausführungszeit zu verringern. Die Verwendung von SIMD-Operationen kann in Multimedia-Anwendungen, wie z. B. der Bild- und Tonverarbeitung, außerordentlich produktiv sein.
-
US 2003/0023960 A1 offenbart ein Befehlsformat für einen Mikroprozessor, welches die Kombination von OP-Code und Ziel-Präfix umfasst. Eine Umsetzung von Programmoptimierungen innerhalb eines Prozessors während der Laufzeit ist beschrieben.
-
Osman, S.; Williams, R.: „Towards Optimal Instruction Vectorization”, 2003, offebart Prozessoren, welche eine Arithmetik oder logische Operationen (z. B. eine Addition) auf mehreren Werten unter Verwendung eines Befehls und eines breiten Registers ausführen. Das Zusammenlegen mehrerer Befehle mit demselben Operationscode ist vorgesehen.
-
Hogan, E.; Judd, G.; Sinnamohideen, S.: „Automatically Identifying Opportunities for Using Special Purpose Instructions”, 1999, offenbart die Verwendung von Single-Instruction-Multiple-Data(SIMD)-Befehlen zur Verwendung in Multimediaanwendungen. Dabei werden spurabhängige Graphen ausgewertet, um Abschnitte des Programmcodes aufzufinden, die den größten Einfluss auf die Performance des Programms haben.
-
KURZBESCHREIBUNG DER ERFINDUNG
-
Die Erfindung betrifft einen Prozessor nach Anspruch 1, eine Vorrichtung nach Anspruch 7 und ein System nach Anspruch 13.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die Erfindung, sowohl als Organisation als auch als Arbeitsverfahren, zusammen mit ihren Aufgaben, Merkmalen und Vorteilen, versteht man am besten unter Bezugnahme auf die folgende detaillierte Beschreibung im Zusammenhang mit den begleitenden Zeichnungen, in welchen:
-
1 ein Blockdiagramm eines Computersystems gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ist; und
-
2 ein Blockdiagramm einer Optimierungseinheit gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ist;
-
3 eine Darstellung eines beispielhaften Abhängigkeitsbaums ist, welche hilfreich ist, um ein Verfahren zur Umwandlung von Befehlen in einen SIMD-Befehl gemäß Ausführungsbeispielen der Erfindung zu beschreiben;
-
4 eine Darstellung einer Tabelle ist, welche bei der Beschreibung einer Vektorisierungsoperation gemäß einem Ausführungsbeispiel der Erfindung hilfreich ist;
-
5 eine Darstellung einer Tabelle ist, welche bei der Beschreibung einer Vektorisierungsoperation gemäß einem anderen Ausführungsbeispiel der Erfindung hilfreich ist.
-
Man wird erkennen, daß die in den Figuren dargestellten Elemente aus Gründen der Einfachheit und Deutlichkeit der Darstellung nicht notwendigerweise maßstabsgetreu gezeichnet worden sind. Zum Beispiel können die Abmessungen einiger Elemente im Verhältnis zu anderen Elementen zur Verdeutlichung übertrieben groß dargestellt sein. Ferner können Bezugsziffern unter den Figuren wiederholt werden, wo es als geeignet erachtet wird, um entsprechende oder analoge Elemente zu kennzeichnen.
-
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
-
In der folgenden detaillierten Beschreibung werden zahlreiche spezielle Einzelheiten ausgeführt, um ein gründliches Verständnis der Erfindung zu ermöglichen. Der Durchschnittsfachmann wird jedoch verstehen, daß die vorliegende Erfindung ohne diese speziellen Einzelheiten ausgeführt werden kann. In anderen Fällen sind wohlbekannte Verfahren, Prozesse, Komponenten und Schaltungen nicht detailliert beschrieben worden, um die vorliegende Erfindung nicht zu verschleiern.
-
Einige Abschnitte der detaillierten Beschreibung, welche noch folgen, sind als Algorithmen und symbolische Darstellungen von Operationen an Datenbits oder binären digitalen Signalen innerhalb eines Computerspeichers ausgestaltet. Bei diesen algorithmischen Beschreibungen und Darstellungen kann es sich um die Techniken handeln, die vom Fachmann auf dem Fachgebiet der Datenverarbeitung benutzt werden, um anderen Fachleuten den Gegenstand ihrer Arbeit zu vermitteln.
-
Sofern nicht anders angegeben, wie aus den folgenden Erörterungen ersichtlich, versteht es sich, daß über die Beschreibung hinweg Erörterungen, bei welchen Begriffe wie „Verarbeiten”, „Rechnen”, „Berechnen”, „Ermitteln” oder ähnliche verwendet werden, sich auf die Aktionen und/oder Verfahren eines Computers oder Rechnersystems oder einer ähnlichen elektronischen Rechnereinheit beziehen, welche Daten, die als physikalische, z. B. elektronische, Größen innerhalb der Register oder Speicher des Rechnersystems dargestellt sind, beeinflussen und/oder in andere Daten umwandeln, welche in ähnlicher Weise als physikalische Größen innerhalb der Speicher, der Register oder anderer solcher Datenspeicher, Übertragungs- oder Wiedergabeeinheiten des Rechnersystems dargestellt sind. Außerdem kann der Begriff „mehrere” über die Beschreibung hinweg verwendet werden, um zwei oder mehr Komponenten, Einheiten, Elemente, Parameter und ähnliches zu beschreiben. Zum Beispiel werden durch „mehrere Befehle” zwei oder mehr Befehle beschrieben.
-
Es versteht sich, daß die Begriffe „SIMDifizierung” oder „Vektorisierung” äquivalente Begriffe sind, welche sich auf das Verfahren des Zusammenlegens von Operationen, welche zusammen zur Ausführung vorgesehen sind und ähnliche Ausführungsressourcen erfordern, wie zum Beispiel Register und funktionelle Einheiten, zu einem einzigen SIMD-Befehl beziehen können. Obwohl der Umfang der vorliegenden Erfindung nicht in dieser Hinsicht beschränkt ist, wird zur Einfachheit und Deutlichkeit der Beschreibung der Begriff „Vektorisierung” benutzt, um das Verfahren des Zusammenlegens von Operationen, welche zusammen zur Ausführung vorgesehen sind und ähnliche Ausführungsressourcen erfordern, zu beschreiben.
-
Es versteht sich, daß die vorliegende Erfindung in einer Vielfalt von Anwendungen benutzt werden kann. Obwohl die vorliegende Erfindung in dieser Hinsicht nicht beschränkt ist, können die hier offenbarten Schaltungen und Techniken in vielen Vorrichtungen, z. B. Computersystemen, Prozessoren, CPUs oder ähnlichem verwendet werden. Prozessoren, welche im Umfang der vorliegenden Erfindung enthalten sein sollen, sind, nur beispielhaft, ein Computer mit eingeschränktem Befehlsvorrat (RISC), ein Prozessor mit einer Pipeline, ein Computer mit komplexem Befehlsvorrat (CISC) und ähnliche.
-
Einige Ausführungsformen der Erfindung können zum Beispiel unter Verwendung eines maschinenlesbaren Mediums oder Gegenstandes realisiert werden, welcher einen Befehl oder eine Gruppe von Befehlen speichern kann, welche, wenn sie von einer Maschine (zum Beispiel von einem Prozessor und/oder von anderen geeigneten Maschinen) ausgeführt werden, bewirken, daß die Maschine ein Verfahren und/oder Operationen gemäß Ausführungsformen der Erfindung durchführt. Eine solche Maschine kann zum Beispiel irgendeine geeignete Verarbeitungsplattform, Rechnerplattform, Rechnervorrichtung, Verarbeitungsvorrichtung, ein Rechnersystem, Verarbeitungssystem, Computer, Prozessor oder ähnliches sein und kann unter Verwendung irgendeiner geeigneten Kombination aus Hardware und/oder Software realisiert werden. Das maschinenlesbare Medium oder der Gegenstand kann zum Beispiel irgendeine geeignete Art von Speichereinheit, Speichervorrichtung, Speichergegenstand, Speichermedium und/oder Speichereinheit sein, zum Beispiel ein Speicher, bewegliche oder unbewegliche Medien, löschbare oder unlöschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, eine Hartplatte, eine Diskette, eine Compact Disk Read Only Memory (CD-ROM), eine Compact Disk Recordable (CD-R), eine Compact Disk Rewriteable (CD-RW), eine optische Speicherplatte, magnetische Medien, verschiedene Arten von Digital Versatile Disks (DVDs), ein Band, eine Kassette oder ähnliches. Bei den Befehlen kann es sich z. B. um irgendeine geeignete Art von Code handeln, zum Beispiel Quellcode, Kompilercode, Interpretercode, ausführbarer Code, statischer Code, dynamischer Code oder ähnliches, und sie können unter Verwendung irgendeiner geeigneten höheren, niederen, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache realisiert werden, z. B. C, C++, Java, BASIC, Pascal, Fortran, Cobol, Assemblersprache, Maschinencode oder ähnliches.
-
In 1 ist ein Blockdiagramm eines Computersystems 100 gemäß einem Ausführungsbeispiel der Erfindung dargestellt. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann es sich bei dem Computersystem 100 um einen Personalcomputer (PC), einen persönlichen digitalen Assistenten (PDA), eine Internetvorrichtung, ein Mobiltelefon oder irgendeine andere Rechnervorrichtung handeln. In einem Beispiel kann das Computersystem 100 eine Hauptprozessoreinheit 110 beinhalten, welche von einer Spannungsquelle 120 versorgt wird. In Ausführungsformen der Erfindung kann die Hauptprozessoreinheit 110 eine Mehrprozessoreinheit 130 beinhalten, welche durch eine Systemverbindung 135 elektrisch mit einer Speichervorrichtung 140 und einer oder mehreren Schnittstellenschaltungen 150 verbunden ist. Bei der Systemverbindung 135 kann es sich zum Beispiel um einen Adreß-/Datenbus handeln, wenn erwünscht. Es versteht sich, daß auch andere Verbindungen als Busse benutzt werden können, um die Mehrprozessoreinheit 130 mit der Speichervorrichtung 140 zu verbinden. Es können zum Beispiel eine oder mehrere zweckgebundene Leitungen und/oder eine Crossbar benutzt werden, um die Mehrprozessoreinheit 130 mit der Speichervorrichtung 140 zu verbinden.
-
Gemäß einiger Ausführungsformen der Erfindung kann der Mehrprozessorbetrieb 130 irgendeine Art von Prozessoreinheit beinhalten, wie zum Beispiel einen Prozessor aus der Intel®-PentiumTM-Mikroprozessorfamilie, der Intel®-ItaniumTM-Mikroprozessorfamilie und/oder der Intel®-XScaleTM-Mikroprozessorfamilie. Außerdem kann der Mehrprozessorbetrieb 130 irgendeine Art von Cache-Speicher beinhalten, wie zum Beispiel einen statischen Direktzugriffsspeicher (SRAM) und ähnliches. Die Speichervorrichtung 140 kann einen dynamischen Direktzugriffsspeicher, einen Permanentspeicher oder ähnliches beinhalten. In einem Beispiel kann die Speichervorrichtung 140 ein Softwareprogramm speichern, welches von dem Mehrprozessorbetrieb 130 ausgeführt werden kann, wenn erwünscht.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann/können die Schnittstellenschaltung(en) 110 eine Ethernet-Schnittstelle und/oder eine Universal-Serial-Bus(USB)-Schnittstelle und/oder ähnliches beinhalten. In einigen Ausführungsbeispielen der Erfindung können eine oder mehrere Eingabevorrichtungen 160 zur Eingabe von Daten und Befehlen in die Hauptprozessoreinheit 110 mit den Schnittstellenschaltungen 150 verbunden sein. Zum Beispiel können die Eingabevorrichtungen 160 eine Tastatur, eine Maus, einen Berührungsbildschirm, ein Berührungsfeld, eine Rollkugel, einen Isopoint, ein Spracherkennungssystem und/oder ähnliches beinhalten.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, können die Ausgabevorrichtungen 170 über eine oder mehrere der Schnittstellenschaltungen 160 bedienbar mit der Hauptprozessoreinheit 110 verbunden sein und können eine oder mehrere Anzeigevorrichtungen, Drucker, Lautsprecher und/oder andere Ausgabevorrichtungen beinhalten, wenn erwünscht. Zum Beispiel kann eine der Ausgabevorrichtungen eine Anzeigevorrichtung sein. Bei der Anzeigevorrichtung kann es sich um eine Kathodenstrahlröhre (CRTs), um Flüssigkristall-Anzeigevorrichtungen (LCDs) oder irgendeine andere Art von Anzeigevorrichtung handeln.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann das Computersystem 100 eine oder mehrere Speichervorrichtungen 180 beinhalten. Zum Beispiel kann das Computersystem 100 ein oder mehrere Hartplattenlaufwerke, ein oder mehrere CompactDisk(CD)-Laufwerke beinhalten, ein oder mehrere DigitalVersatileDisk(DVD)-Laufwerke und/oder andere Eingabe/Ausgabe(I/O)-Vorrichtungen für Computermedien beinhalten, wenn erwünscht.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann das Computersystem 100 mit anderen Vorrichtungen Daten über eine Verbindung mit einem Netzwerk 190 austauschen. Bei der Netzwerkverbindung kann es sich um irgendeine Art von Netzwerkverbindung handeln, wie z. B. eine Ethernet-Verbindung, eine digitale Teilnehmerleitung (DSL), eine Telefonleitung, ein Koaxialkabel usw. Bei dem Netzwerk 190 kann es sich um irgendeine Art von Netzwerk handeln, wie z. B. das Internet, ein Telefonnetz, ein Kabelnetzwerk, ein drahtloses Netzwerk und/oder ähnliches.
-
Obwohl der Umfang der vorliegenden Erfindung nicht auf diese Ausführungsform beschränkt ist, kann in diesem Ausführungsbeispiel der Erfindung die Mehrprozessoreinheit 130 eine Optimierungseinheit 200 beinhalten. Gemäß Ausführungsformen der Erfindung kann die Optimierungseinheit 200 das Verfahren des Suchens nach zwei oder mehr in Frage kommenden Befehlen in einer Ablaufverfolgung durchführen. Ferner kann die Optimierungseinheit 200 die zwei oder mehr in Frage kommenden Befehle gemäß einer Tiefe eines Abhängigkeitsbaums einer Ablaufverfolgung zu einem SIMD-Befehl zusammenlegen. In einigen Ausführungsformen der Erfindung können die in Frage kommenden Befehle eine ähnliche und/oder die gleiche Art von Operationscode aufweisen, welcher in den SIMD-Befehl aufgenommen werden kann. Zum Beispiel kann die Optimierungseinheit 200 nach in Frage kommenden Befehlen suchen, welche ähnliche Operationen durchführen, basierend auf der Abhängigkeitstiefe der in Frage kommenden Befehle. Gemäß Ausführungsformen der Erfindung kann die Optimierungseinheit 200 mindestens einige der in Frage kommenden Befehle zu einem SIMD-Befehl zusammenlegen, wenn erwünscht. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, versteht es sich, daß die Optimierungseinheit 200 in Software, in Hardware oder in irgendeiner geeigneten Kombination aus Software und Hardware realisiert werden kann.
-
In 2 ist ein Blockdiagramm der Optimierungseinheit 200 der 1 gemäß einem Ausführungsbeispiel der Erfindung dargestellt. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann die Optimierungseinheit 200 einen Eingangs-Ablaufverfolgungspuffer 210, eine Ablaufsteuerung 220, eine Vektorisierungseinheit 230 und einen Ausgangs-Ablaufverfolgungspuffer 240 beinhalten. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann die Vektorisierungseinheit 230 in einigen Ausführungsbeispielen der vorliegenden Erfindung eine erste (1.) Stufe 232, eine zweite (2.) Stufe 234 und einen Speicher 236, zum Beispiel einen Cache-Speicher, beinhalten.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann der Eingangs-Ablaufverfolgungspuffer 210 eine Ablaufverfolgung von Befehlen empfangen, welche Operations(op)-Codes beinhalten kann. In einigen Ausführungsformen der Erfindung kann die Ablaufsteuerung 220 aus einem Eingangs-Ablaufverfolgungspuffer 210 Befehle herausnehmen und eine Ablaufverfolgung (z. B. eine Folge) von Operationscodes und/oder Befehlen für die Vektorisierungseinheit 230 bereitstellen. Zum Beispiel kann ein Befehl mindestens zwei Arten von Operationen beinhalten, Speicheroperationen, wie zum Beispiel LOAD, STORE usw., und arithmetische Operationen, wie zum Beispiel ADD, SUBTRACT, MULT, SHIFT, AND usw. Außerdem kann der Befehl Eingabewerte und Ausgabewerte beinhalten, wie zum Beispiel Register und/oder Konstanten.
-
Gemäß einer Ausführungseinheit der Erfindung kann die Vektorisierungseinheit 230 die Ablaufverfolgung von der Ablaufsteuerung 220 empfangen und kann gemäß Abhängigkeiten der Ablaufverfolgung nach in Frage kommenden Befehlen suchen. In einigen Ausführungsformen der Erfindung können in der 1. Stufe 232 op-Code-Befehle verarbeitet werden, welche von der Ablaufsteuerung 220 empfangen werden. Zum Beispiel können Befehle und/oder op-Codes der Ablaufverfolgung in eine Single-Static-Assignment(SSA)-Form umgewandelt werden. In SSA-Form kann ein Register nur einmal in der Ablaufverfolgung beschrieben werden, und durch ein Umbenennungsverfahren kann ein „virtueller” Registername eingeführt werden, um den SSA-Bedingungen zu genügen. Ein Programmcode, wie zum Beispiel ein Programmcode, welcher in einer herkömmlichen Instruction Set Architecture (ISA) geschrieben ist, kann zwei Quellregister mit denselben Namen als identische Register aufweisen, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann in der 1. Stufe 232 nach einem Kandidaten für die Vektorisierung gesucht werden, indem die Befehle in einem Abhängigkeitsbaum angeordnet werden.
-
In 3 ist ein beispielhafter Abhängigkeitsbaum 300 dargestellt, welcher bei der Beschreibung eines Verfahrens zur Erzeugung von SIMD-Befehlen gemäß Ausführungsformen der Erfindung hilfreich ist. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann der Abhängigkeitsbaum 300 Befehle in verschiedenen Höhen beinhalten. Eine Ebene des Abhängigkeitsbaums 300 kann Befehle in derselben Höhe beinhalten. Eine erste Ebene 310 kann die Befehle 312 und 314 beinhalten, eine zweite Ebene 320 kann einen Befehl 322 beinhalten, eine dritte Ebene 330 kann die Befehle 332 und 334 beinhalten, und eine vierte Ebene 340 kann einen Befehl 342 beinhalten, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise beschränkt ist. Außerdem kann die Tiefe des Abhängigkeitsbaums 300 gemäß dem Abstand von der ersten Höhe 310 zu der letzten Höhe 340 des Abhängigkeitsbaums 300 berechnet werden (der Abstand kann z. B. durch die Pfeile von Ebene zu Ebene dargestellt sein).
-
Zurück in 2 können, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, in der 1. Stufe 232 die in Frage kommenden Befehle für die Vektorisierung im Speicher 236 gespeichert werden. Gemäß Ausführungsformen der Erfindung kann in der 2. Stufe 234 ein Speicher 236 für ähnliche op-Codes gesucht werden, welche dieselbe oder eine ähnliche Ebene aufweisen, und es kann ein SIMD-Befehl erzeugt werden. Ferner können in der 2. Stufe 232 die ursprünglichen Ablaufverfolgungsbefehle durch einen SIMD-Befehl ersetzt werden, und die SIMD-Befehle können im Ausgangs-Ablaufverfolgungspuffer 240 gespeichert werden.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann die Operation der 1. Stufe 232 und 2. Stufe 234 der Optimierungseinheit 200 durch einen beispielhaften C-ähnlichen Pseudocode-Algorithmus beschrieben werden.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann der erste Teil des beispielhaften C-ähnlichen Pseudocode-Algorithmus die Konstanten, Variablenstrukturen und ähnliches definieren.
-
Zum Beispiel kann die maximale Zahl der Befehle in der Ablaufverfolgung definiert sein als:
-
Die maximale Zahl der Quellen eines Befehls kann definiert sein als:
-
Die maximale Zahl der Quellen von Zielbestimmungen von Befehlen kann definiert sein als:
-
Der Ablaufverfolgungsbereich und die innere Puffergröße können definiert sein als:
rangedef [0..MAX_TRACE_SIZE-1] | inst_index_range |
inst_index_range | M, N |
-
Gemäß dem beispielhaften C-ähnlichen Pseudocode-Algorithmus kann eine Befehlsstruktur Quellregister, op-Code, Zielbestimmungsregister und eine Bool'sche Variable beinhalten, welche anzeigen kann, ob der Befehl für die Vektorisierung geeignet ist. Die Befehlsstruktur kann definiert sein als: Structure instruction_type
-
Gemäß dem beispielhaften C-ähnlichen Pseudocode-Algorithmus kann eine Ablaufverfolgung als eine Folge von höchstens MAX_TRACE_SIZE Befehlen definiert sein, dargestellt durch einen Vektor von MAX_TRACE_SIZE Eingaben. Außerdem kann eine Bitmap von Zwei-Verkleinerungs(2D)-Ablaufverfolgungs-Abhängigkeiten verwendet werden, um die Zulässigkeit eines Befehls der Ablaufverfolgung anzuzeigen. Wenn die tatsächliche Zahl der Befehle in der Ablaufverfolgung INITIAL_TRACE_SIZE sei, dann können nur die ersten INITIAL_TRACE_SIZE Eingaben zulässig sein.
Inst_index_range | INITIAL_TRACE_SIZE |
Instruction_type | trace [MAX_TRACE_SIZE] |
Boolean | dependent [MAX_TRACE_SIZE, MAX_TRACE_SIZE] |
-
Gemäß dem beispielhaften C-ähnlichen Pseudocode-Algorithmus kann eine SIMD-Matrix, welche im Speicher
236 gespeichert sein kann, die Operationscodes beinhalten und kann N Reihen von M op-Code-Speicherstellen enthalten (z. B. insgesamt N
xM
xlog(MAX_TRACE_SIZE) Bits). Structure entry_type
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann in der 1. Stufe 232 der Optimierungseinheit 200 in der Ablaufverfolgung nach in Frage kommenden Befehlen gesucht werden, indem die Befehle in der Ablaufverfolgung in aufsteigender Reihenfolge wiederholt werden. In der 1. Stufe 232 kann die Gruppe aller Vorgänger von trace[i] verglichen werden, welche während des Umbenennungsverfahrens erzeugt werden kann. Ferner kann in der 1. Stufe 232 die Höhe (z. B. Ebene) der Befehle im Abhängigkeitsbaum (z. B. Abhängigkeitsbaum 300) markiert werden, indem die Abhängigkeitshöhe (z. B. -ebene) von trace[i] und dessen frühestmögliche Ablaufstelle berechnet wird.
-
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann in diesem beispielhaften C-ähnlichen Pseudocode-Algorithmus in der 2. Stufe
234 der Speicher
236 (z. B. die Matrix SIMD) nach für die Vektorisierung geeigneten Befehlen durchsucht werden. Ein geeigneter Befehl kann zum Beispiel ein älterer Befehl trace[j] in derselben Höhe (z. B. Ebene) des Abhängigkeitsbaums sein. Außerdem können in der 2. Stufe
236 SIMD-Befehle erzeugt werden und die ursprünglichen Befehle durch die SIMD-Befehle ersetzt werden, wie im folgenden dargestellt ist:
-
Gemäß einigen Ausführungsformen der Erfindung kann die Optimierungseinheit 200 SIMD-Befehle nach der Regel erzeugen, daß zwei Befehle, die auf einen Speicher zugreifen, zu einem einzelnen SIMD-Befehl kombiniert werden können, wenn sie auf kontinuierliche Speicheradressen zugreifen. Das heißt, es kann aus ihren Speicheradressen und der entsprechenden Datenbreite berechnet werden, daß die Daten, auf welche die beiden Befehle zugreifen, benachbart sind (zumindest im virtuellen Speicherraum). Zum Beispiel können einer Ablaufverfolgung, welche die folgenden Befehle beinhaltet:
- 1. LADE 4 Bytes aus ESP +4
- 2. LADE 4 Bytes aus ESP + 12
- 3. LADE 4 Bytes aus ESP + 8,
die Befehle zu einem einzelnen SIMD-Befehl
LADE 12 Bytes aus ESP + 4
kombiniert werden, wenn gewünscht.
-
In 4 ist die Tabelle 400 dargestellt. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann Tabelle 400 eine Ebenenspalte enthalten, welche die Ebene der Befehle im Abhängigkeitsbaum (z. B. dem Abhängigkeitsbaum 300) zeigt, eine Spalte ursprünglicher Ablaufverfolgungen, welche die ursprünglichen Befehle zeigt, die vom Eingangs-Ablaufverfolgungspuffer 210 und der Ablaufsteuerung 220 bereitgestellt werden, und eine Spalte der Ablaufverfolgungen nach der Vektorisierung, welche die Befehle am Ausgangs-Ablaufverfolgungspuffer 240 zeigen kann. Die Reihen der Tabelle 400 können die Ebene eines Befehls, den ursprünglichen Befehl und den Befehl nach der Vektorisierung zeigen.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann die Optimierungseinheit 200 die Tiefe des Ablaufverfolgungs-Abhängigkeitsdiagramms (z. B. die Höhe der Befehle der Ablaufverfolgung) markieren. Außerdem kann zum Beispiel gemäß der Tabelle 400 die Optimierungseinheit 200 Befehle FAX ← LOAD(ESP, 4) und EBX ← LOAD(ESP, 8), welche sich auf derselben Ebene (z. B. Ebene 2) befinden, als für die Vektorisierung in Frage kommend identifizieren und kann die in Frage kommenden Befehle zu einem SIMD-Befehl EAX, EBX ← SIMD_LOAD(ESP, 4) kombinieren, wenn erwünscht. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann die Optimierungseinheit 200 einen SIMD-Befehl erzeugen, indem sie der Regel folgt, daß zwei Befehle mit einer gleichen Operation (z. B. LOAD) und in derselben Tiefe des Ablaufverfolgungs-Abhängigkeitsdiagramms (z. B. der Höhe) zu einem einzelnen SIMD-Befehl (z. B. SIMD_LOAD) kombiniert werden können, wenn alle ihre nichtkonstanten Quellen (also Register) ähnlich sind, und/oder die konstanten oder unmittelbaren Quellen können sich unterscheiden.
-
In 5 ist eine Tabelle 500 gemäß einem anderen Ausführungsbeispiel der Erfindung dargestellt. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann die Tabelle 500 eine Ebenenspalte enthalten, welche die Ebene der ursprünglichen Befehle im Abhängigkeitsbaum (z. B. dem Abhängigkeitsbaum 300) zeigt, eine Spalte ursprünglicher Ablaufverfolgungen, welche die ursprünglichen Befehle zeigt, die vom Eingangs-Ablaufverfolgungspuffer 210 und der Ablaufsteuerung 220 bereitgestellt werden, eine Ebenenspalte, welche die Ebene der Befehle nach einer Grundumwandlung, zum Beispiel SSA, zeigt, eine Spalte, welche die Befehle nach der Umwandlung zeigt, und eine Spalte, welche die Befehle in einer Ablaufverfolgung nach der Vektorisierung am Ausgangs-Ablaufverfolgungspuffer 240 zeigt. Die Reihen der Tabelle 500 können die Ebene eines Befehls, den ursprünglichen Befehl, die Ebene des Befehls nach der Grundumwandlung, den Befehl nach der Grundumwandlung und den Befehl nach der Vektorisierung zeigen.
-
Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann gemäß der beispielhaften Tabelle
500 die Optimierungseinheit
200 die Höhe der ursprünglichen Befehle in der Ablaufverfolgung markieren. Die Optimierungseinheit
200 kann die Befehle der Ablaufverfolgung zum Beispiel in die SSA-Form umwandeln. Die Optimierungseinheit
200 kann die Befehle der Ablaufverfolgung zum Beispiel unter Verwendung der Ablaufverfolgung umwandeln, welche in SSA-Form umgewandelt sein kann. Die Optimierungseinheit
200 kann die umgewandelten Befehle mit derselben Ebene als für die Vektorisierung in Frage kommende Befehle markieren, zum Beispiel EAX_1 ← LOAD(ESI + 4,0), EAX ← LOAD(ESI + 8,0) und ASSERT EAX_1
1, ASSERT EAX
1, und kann sie zu den SIMD-Befehlen EAX, EAX_1 ← SIMD_LOAD(ESI + 4,0) bzw. SIMD_ASSERT(EAX_1
1, EAX
1) kombinieren.
-
Während bestimmte Merkmale der Erfindung hierin dargestellt und beschrieben worden sind, sind für den Fachmann nun viele Modifikationen, Substitutionen, Veränderungen und Äquivalente ersichtlich. Es versteht sich deswegen, daß die beigefügten Patentansprüche all solche Modifikationen und Veränderungen abdecken sollen, da sie unter den wahren Gedanken der Erfindung fallen.