DE112005001277B4 - Verfahren und Vorrichtung zum Vektorisieren mehrerer Eingabebefehle - Google Patents

Verfahren und Vorrichtung zum Vektorisieren mehrerer Eingabebefehle Download PDF

Info

Publication number
DE112005001277B4
DE112005001277B4 DE112005001277T DE112005001277T DE112005001277B4 DE 112005001277 B4 DE112005001277 B4 DE 112005001277B4 DE 112005001277 T DE112005001277 T DE 112005001277T DE 112005001277 T DE112005001277 T DE 112005001277T DE 112005001277 B4 DE112005001277 B4 DE 112005001277B4
Authority
DE
Germany
Prior art keywords
instructions
trace
unit
optimization unit
commands
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE112005001277T
Other languages
English (en)
Other versions
DE112005001277T5 (de
Inventor
Yoav Almog
Roni Rosner
Ronny Ronen
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 DE112005001277T5 publication Critical patent/DE112005001277T5/de
Application granted granted Critical
Publication of DE112005001277B4 publication Critical patent/DE112005001277B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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
    • 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
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

Eine Optimierungseinheit zum Suchen nach zwei oder mehreren in Frage kommenden Befehlen in einer Befehls-Ablaufverfolgung und zum Zusammenlegen der zwei oder mehreren Befehle gemäß einer Tiefe einer Ablaufverfolgungs-Abhängigkeit und einem gemeinsamen Operationscode der zwei oder mehreren in Frage kommenden Befehle zu einem einzelnen Befehl mit mehreren Daten (SIMD).

Description

  • 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.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Der Gegenstand der Erfindung wird im Schlußteil der Beschreibung besonders hervorgehoben und fest umrissen beansprucht. Die Erfindung jedoch, 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 LORD, STORE usw., und arithmetische Operationen, wie zum Beispiel ADD, SUBTRACT, MULI, 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:
    Figure 00080001
  • Die maximale Zahl der Quellen eines Befehls kann definiert sein als:
    Figure 00080002
  • Die maximale Zahl der Quellen von Zielbestimmungen von Befehlen kann definiert sein als:
    Figure 00090001
  • Der Ablaufverfolgungsbereich und die innere Puffergröße können definiert sein als:
    Figure 00090002
  • 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:
    Figure 00090003
  • 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.
  • Figure 00090004
  • 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 IxMxlog(MAX_TRACE_SIZE) Bits).
  • Figure 00100001
  • 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.
  • Figure 00100002
  • 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:
    Figure 00110001
  • 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 EAX <-- 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.

Claims (20)

  1. Verfahren zur Optimierung der Ausführung von Befehlen in einem Prozessor, welches umfaßt: Suchen nach zwei oder mehreren Befehlen in einer Ablaufverfolgung; und Zusammenlegen der zwei oder mehreren Befehle gemäß einer Tiefe eines Ablaufverfolgungs-Abhängigkeits-Baums und einem gemeinsamen Operationscode der zwei oder mehreren Befehle zu einem einzelnen Befehl mit mehreren Daten (Single Instruction Multiple Data, SIMD) nach folgenden Verfahrensschritten: – Ermitteln einer Bitmap der Ablaufvervfolgungs-Abhängigkeiten, und für jeden Befehl (i) der Ablaufverfolgung folgende iterativen Schritte: – Ermitteln eines Subgraphen von Predecessors (j) zur Bestimmung der Abhängigkeitshöhe und der frühest möglichen Ablaufstelle; und – Zusammenlegen des Befehls (i) mit einem weiteren Befehl, wenn diese die selbe Abhängigkeitshöhe und eine größere frühest mögliche Ablaufstelle aufweist.
  2. Verfahren nach Anspruch 1, welches das folgende umfaßt: Auswählen des gemeinsamen Operationscodes aus einer Gruppe, bestehend aus Speicheroperationscodes und Arithmetikoperationscodes.
  3. Verfahren nach Anspruch 1, welches das folgende umfaßt: Kombinieren der zwei oder mehreren Befehle, welche auf fortlaufende Speicheradressen zugreifen.
  4. Verfahren nach Anspruch 1, wobei das Zusammenlegen das Umwandeln von Befehlen der Ablaufverfolgung in eine gewünschte Form umfaßt.
  5. Vorrichtung zur Optimierung der Ausführung von Befehlen in einem Prozessor, die umfaßt: eine Optimierungseinheit (200), die einen Eingangs-Ablaufverfolgungspuffer (210), eine Ablaufsteuerung (220), die mit dem Eingangs-Ablaufverfolgungspuffer verbunden ist, eine Vektorisierungseinheit (230), die mit der Ablaufsteuerung verbunden ist, und einen Ausgangs-Ablaufverfolgungspuffer (240) enthält, der mit der Vektorisierungseinheit verbunden ist, wobei die Optimierungseinheit eingerichtet ist, das Verfahren nach Anspruch 1 durchzuführen.
  6. Vorrichtung nach Anspruch 5, wobei der gemeinsame Operationscode ausgewählt ist aus einer Gruppe, bestehend aus Speicheroperationscodes und Arithmetikoperationscodes.
  7. Vorrichtung nach Anspruch 5, wobei die Vektorisierungseinheit (230) folgendes umfaßt: eine erste Stufe (232), um gemäß der Tiefe der Ablaufverfolgungs-Abhängigkeit und dem gemeinsamen Operationscode nach den zwei oder mehreren Befehlen zu suchen; einen Cache-Speicher (236), um die Befehle zu speichern; und eine zweite Stufe (234), um die zwei oder mehreren Befehle zu dem einzelnen Befehl mit mehreren Daten zu kombinieren.
  8. Vorrichtung nach Anspruch 5, wobei die Optimierungseinheit (200) die zwei oder mehreren Befehle kombinieren kann, welche auf fortlaufende Speicheradressen zugreifen.
  9. Vorrichtung nach Anspruch 5, wobei die Optimierungseinheit (200) den Befehl der Ablaufverfolgung in eine gewünschte Form umwandeln kann.
  10. Vorrichtung nach Anspruch 9, wobei es sich bei der gewünschten Form um eine Single-Static-Assignment-Form handelt.
  11. System zur Optimierung der Ausführung von Befehlen in einem Prozessor, welches umfaßt: einen Bus; eine Speichereinheit, welche an einen Bus gekoppelt ist; und einen Prozessor, der eine Optimierungseinheit (200) enthält, die einen Eingangs-Ablaufverfolgungspuffer (210), eine Ablaufsteuerung (220), die mit dem Eingangs-Ablaufverfolgungspuffer verbunden ist, eine Vektorisierungseinheit (230), die mit der Ablaufsteuerung verbunden ist, und einen Ausgangs-Ablaufverfolgungspuffer (240) enthält, der mit der Vektorisierungseinheit verbunden ist, wobei die Optimierungseinheit dazu eingerichtet ist, das Verfahren nach Anspruch 1 durchzuführen.
  12. System nach Anspruch 11, wobei der gemeinsame Operationscode ausgewählt ist aus einer Gruppe, bestehend aus Speicheroperationscodes und Arithmetikoperationscodes.
  13. System nach Anspruch 11, wobei die Vektorisierungseinheit (230) folgendes umfaßt: eine erste Stufe (232), um gemäß der Tiefe der Ablaufverfolgungs-Abhängigkeit und dem gemeinsamen Operationscode nach den zwei oder mehreren Befehlen zu suchen; einen Cache-Speicher (236), um die Befehle zu speichern; und eine zweite Stufe (234), um die zwei oder mehreren Befehle zu dem einzelnen Befehl mit mehreren Daten zu kombinieren.
  14. System nach Anspruch 11, wobei die Optimierungseinheit (200) die zwei oder mehreren Befehle kombinieren kann, welche auf fortlaufende Speicheradressen zugreifen.
  15. Vorrichtung nach Anspruch 1, wobei die Optimierungseinheit (200) den Befehl der Ablaufverfolgung in eine gewünschte Form umwandeln kann.
  16. Vorrichtung nach Anspruch 15, wobei es sich bei der gewünschten Form um eine Single-Static-Assignment-Form handelt.
  17. Computer-lesbares Medium mit gespeicherten Befehlen zur Optimierung der Ausführung von Befehlen in einem Prozessor, wobei die Befehle, wenn sie ausgeführt werden, zur Durchführung des Verfahrens nach Anspruch 1 führen-.
  18. Computer-lesbares Medium nach Anspruch 17, wobei die Befehle, wenn sie ausgeführt werden, zu folgendem führen: Auswählen des gemeinsamen Operationscodes aus einer Gruppe, bestehend aus Speicheroperationscodes und Arithmetikoperationscodes.
  19. Computer-lesbares Medium nach Anspruch 17, wobei die Befehle, wenn sie ausgeführt werden, zu folgendem führen: Kombinieren der zwei oder mehreren Befehle, welche auf fortlaufende Speicheradressen zugreifen.
  20. Computer-lesbares Medium nach Anspruch 17, wobei die Befehle, wenn sie ausgeführt werden, zu folgendem führen: Umwandeln von Befehlen der Ablaufverfolgung in eine gewünschte Form.
DE112005001277T 2004-06-24 2005-05-25 Verfahren und Vorrichtung zum Vektorisieren mehrerer Eingabebefehle Expired - Fee Related DE112005001277B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/874,744 2004-06-24
US10/874,744 US7802076B2 (en) 2004-06-24 2004-06-24 Method and apparatus to vectorize multiple input instructions
PCT/US2005/018444 WO2006007193A1 (en) 2004-06-24 2005-05-25 Method and apparatus to vectorize multiple input instructions

Publications (2)

Publication Number Publication Date
DE112005001277T5 DE112005001277T5 (de) 2007-05-16
DE112005001277B4 true DE112005001277B4 (de) 2012-10-31

Family

ID=35033618

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112005001277T Expired - Fee Related DE112005001277B4 (de) 2004-06-24 2005-05-25 Verfahren und Vorrichtung zum Vektorisieren mehrerer Eingabebefehle
DE112005003852.1T Expired - Fee Related DE112005003852B4 (de) 2004-06-24 2005-05-25 Verfahren und Vorrichtung zum Vektorisieren mehrerer Eingabebefehle

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE112005003852.1T Expired - Fee Related DE112005003852B4 (de) 2004-06-24 2005-05-25 Verfahren und Vorrichtung zum Vektorisieren mehrerer Eingabebefehle

Country Status (6)

Country Link
US (1) US7802076B2 (de)
JP (2) JP2008503836A (de)
CN (1) CN1977241B (de)
DE (2) DE112005001277B4 (de)
GB (1) GB2429554B (de)
WO (1) WO2006007193A1 (de)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7367026B2 (en) * 2004-06-07 2008-04-29 International Business Machines Corporation Framework for integrated intra- and inter-loop aggregation of contiguous memory accesses for SIMD vectorization
US7395531B2 (en) * 2004-06-07 2008-07-01 International Business Machines Corporation Framework for efficient code generation using loop peeling for SIMD loop code with multiple misaligned statements
US7386842B2 (en) * 2004-06-07 2008-06-10 International Business Machines Corporation Efficient data reorganization to satisfy data alignment constraints
US7475392B2 (en) * 2004-06-07 2009-01-06 International Business Machines Corporation SIMD code generation for loops with mixed data lengths
US7478377B2 (en) 2004-06-07 2009-01-13 International Business Machines Corporation SIMD code generation in the presence of optimized misaligned data reorganization
US8549501B2 (en) * 2004-06-07 2013-10-01 International Business Machines Corporation Framework for generating mixed-mode operations in loop-level simdization
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US7783863B1 (en) 2005-09-28 2010-08-24 Oracle America, Inc. Graceful degradation in a trace-based processor
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US7849292B1 (en) 2005-09-28 2010-12-07 Oracle America, Inc. Flag optimization of a trace
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7953933B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US7676634B1 (en) 2005-09-28 2010-03-09 Sun Microsystems, Inc. Selective trace cache invalidation for self-modifying code via memory aging
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US7814298B1 (en) 2005-09-28 2010-10-12 Oracle America, Inc. Promoting and appending traces in an instruction processing circuit based upon a bias value
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US7797517B1 (en) * 2005-11-18 2010-09-14 Oracle America, Inc. Trace optimization via fusing operations of a target architecture operation set
US7681019B1 (en) 2005-11-18 2010-03-16 Sun Microsystems, Inc. Executing functions determined via a collection of operations from translated instructions
US8904151B2 (en) * 2006-05-02 2014-12-02 International Business Machines Corporation Method and apparatus for the dynamic identification and merging of instructions for execution on a wide datapath
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8056067B2 (en) * 2006-09-29 2011-11-08 International Business Machines Corporation Method, computer program product, and device for reducing delays in data processing
US8640112B2 (en) * 2011-03-30 2014-01-28 National Instruments Corporation Vectorizing combinations of program operations
JP5887811B2 (ja) * 2011-10-05 2016-03-16 富士通株式会社 コンパイル装置、コンパイル方法、コンパイルプログラム、記録媒体
US20130113809A1 (en) * 2011-11-07 2013-05-09 Nvidia Corporation Technique for inter-procedural memory address space optimization in gpu computing compiler
TWI447646B (zh) 2011-11-18 2014-08-01 Asmedia Technology Inc 資料傳輸裝置及多個指令的整合方法
WO2013089750A1 (en) 2011-12-15 2013-06-20 Intel Corporation Methods to optimize a program loop via vector instructions using a shuffle table and a blend table
JP5413473B2 (ja) * 2012-03-01 2014-02-12 日本電気株式会社 ベクトル処理装置およびベクトル処理方法
US9513915B2 (en) 2012-03-28 2016-12-06 International Business Machines Corporation Instruction merging optimization
US9292291B2 (en) * 2012-03-28 2016-03-22 International Business Machines Corporation Instruction merging optimization
JP5846005B2 (ja) 2012-03-29 2016-01-20 富士通株式会社 プログラム、コード生成方法および情報処理装置
JP5966509B2 (ja) * 2012-03-29 2016-08-10 富士通株式会社 プログラム、コード生成方法および情報処理装置
JP5846006B2 (ja) * 2012-03-29 2016-01-20 富士通株式会社 プログラム、コード生成方法および情報処理装置
WO2014137327A1 (en) 2013-03-05 2014-09-12 Intel Corporation Analyzing potential benefits of vectorization
US9348596B2 (en) * 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
CN103440229B (zh) * 2013-08-12 2017-11-10 浪潮电子信息产业股份有限公司 一种基于mic架构处理器的向量化优化方法
GB2520571B (en) 2013-11-26 2020-12-16 Advanced Risc Mach Ltd A data processing apparatus and method for performing vector processing
JP6237278B2 (ja) 2014-01-31 2017-11-29 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
US11042929B2 (en) 2014-09-09 2021-06-22 Oracle Financial Services Software Limited Generating instruction sets implementing business rules designed to update business objects of financial applications
DE102015013627A1 (de) * 2015-10-20 2017-04-20 Fresenius Medical Care Deutschland Gmbh Blutbehandlungsgerät und Verfahren zur Erstellung einer Verschreibung
US10061580B2 (en) 2016-02-25 2018-08-28 International Business Machines Corporation Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence
KR102593320B1 (ko) 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법
US10606595B2 (en) 2018-03-23 2020-03-31 Arm Limited Data processing systems
CN110858150A (zh) * 2018-08-22 2020-03-03 上海寒武纪信息科技有限公司 一种具有局部实时可重构流水级的运算装置
JP7468650B2 (ja) * 2020-06-25 2024-04-16 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023960A1 (en) * 2001-07-25 2003-01-30 Shoab Khan Microprocessor instruction format using combination opcodes and destination prefixes

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4710872A (en) * 1985-08-07 1987-12-01 International Business Machines Corporation Method for vectorizing and executing on an SIMD machine outer loops in the presence of recurrent inner loops
US4792894A (en) * 1987-03-17 1988-12-20 Unisys Corporation Arithmetic computation modifier based upon data dependent operations for SIMD architectures
JPH10133885A (ja) * 1996-10-28 1998-05-22 Hitachi Ltd 一括命令生成コンパイル方法
US5920716A (en) * 1996-11-26 1999-07-06 Hewlett-Packard Company Compiling a predicated code with direct analysis of the predicated code
US5956503A (en) * 1997-04-14 1999-09-21 International Business Machines Corporation Method and system for front-end and back-end gathering of store instructions within a data-processing system
JP4125847B2 (ja) 1998-11-27 2008-07-30 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
JP2001306332A (ja) * 2000-04-20 2001-11-02 Nec Corp 局所変数以外の記憶位置を用いるように拡張されたssa形式を使用して、過度のオーバーヘッドを避ける方法
JP2003131887A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd 変数ロードおよび処理の一括化コンパイル方法
JP4045802B2 (ja) 2002-01-08 2008-02-13 ソニー株式会社 プログラム処理装置及びプログラム処理方法、記憶媒体、並びにコンピュータ・プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023960A1 (en) * 2001-07-25 2003-01-30 Shoab Khan Microprocessor instruction format using combination opcodes and destination prefixes

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Bulic P. et al.: Fast Dependence Analysis in Multimedia Vectorizing Compiler. In: Proceedings of the 12th Euromicro Conference on Parallel, Distributed and Network-Based Processing, 11-13 Februar 2004, Piscataway, NJ, USA, IEEE 2004, S. 176-183, XP010685161 ISBN: 0-7695-2083-9 *
Bulić P. et al.: Fast Dependence Analysis in Multimedia Vectorizing Compiler. In: Proceedings of the 12th Euromicro Conference on Parallel, Distributed and Network-Based Processing, 11-13 Februar 2004, Piscataway, NJ, USA, IEEE 2004, S. 176-183, XP010685161 ISBN: 0-7695-2083-9
HOGAN, E.; JUDD, G.; SINNAMOHIDEEN, S.: Automatically Identifying Opportunities for Using Special Purpose Instructions. 1999. URL: http://www.cs.cmu.edu/afs/cs/usr/glennj/www/740ProjectWriteup.htm [abgerufen am 18.01.2012]. Datumsnachweis auf Projektseite: http://www.cs.cmu.edu/afs/cs/academic/class/15740-f99/www/project_info/actual_projects.html *
OSMAN, S.; WILLIAMS, R.: Towards Optimal Instruction Vectorization. 2003. URL: http://www.cs.cmu.edu/~sosman/classes/compilers/project/project.pdf [abgerufen am 18.01.2012] *
Static single assignment form. In: Wikipedia, the free encyclopedia. Bearbei-tungsstand: 16. Januar 2004, 02:50 UTC. URL: http://en.wikipedia.org/wiki/Static_single_assignment_form [abgerufen am 19.01.2012] bzw. http://en.wikipedia.org/w/index.php?title=Static_single_assignment_form&oldid=3964142 [abgerufen am 19.01.2012] *

Also Published As

Publication number Publication date
JP2008503836A (ja) 2008-02-07
CN1977241B (zh) 2011-08-03
JP5646390B2 (ja) 2014-12-24
DE112005001277T5 (de) 2007-05-16
US20050289529A1 (en) 2005-12-29
CN1977241A (zh) 2007-06-06
JP2011165216A (ja) 2011-08-25
US7802076B2 (en) 2010-09-21
GB2429554A (en) 2007-02-28
DE112005003852B4 (de) 2016-05-04
DE112005003852A5 (de) 2012-10-25
GB0619968D0 (en) 2006-11-29
GB2429554B (en) 2009-04-22
WO2006007193A1 (en) 2006-01-19

Similar Documents

Publication Publication Date Title
DE112005001277B4 (de) Verfahren und Vorrichtung zum Vektorisieren mehrerer Eingabebefehle
DE69724322T2 (de) Verfahren und Anordnung zum frühzeitigen Einfügen von Assemblercode zwecks Optimierung
DE112012000212T5 (de) Technik für live Analyse-basierte Rematerialisation zur Reduktion von Registerdruck und zur Verbesserung von Parallelität
DE112020003128T5 (de) Dilatierte faltung mit systolischem array
DE102013017982A1 (de) COMPILER gesteuerte Gebietsdisponierung für SIMD-Ausführung von Strängen
DE112019005586T5 (de) Skalarproduktrechner und verfahren zu deren betrieb
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE102009051288A1 (de) Befehl und Logik zur Ausführung von Bereichserkennung
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
DE102013013137A1 (de) Mehrstufige registerumbenennung durch entfernen von abhängigkeiten
DE102009046876A1 (de) Verfahren und System für die Datenvorabholung für Schleifen auf der Basis linearer Induktionsausdrücke
DE102020119519A1 (de) Verfahren und einrichtungen zum ermöglichen einer &#34;out-of-order&#34;-pipeline-ausführung der statischen abbildung einer arbeitslast
DE102018104188A1 (de) Kombiniertes Rendering- und Berechnungs-Ressourcenzuweisungsverwaltungssystem
DE102016110195A1 (de) Erzeugen von Code in statisch typisierten Programmiersprachen für eine dynamisch typisierte array-basierte Sprache
DE102013020966A1 (de) Leistungseffiziente Attribut-Handhabung für Parkettierungs- und Geometrie-Schattierungseinheiten
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE112020005789T5 (de) Hierarchische partitionierung von operatoren
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE102013022258A1 (de) Kontextumschaltung für Granulatität eines kooperativen Strang-Arrays während einer Haftstellenbehandlung
US5278954A (en) System for and method of storing image data processed in multiple stages
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE202016009145U1 (de) Deep-Learning-basierte funktionale Korrelation von volumetrischen Designs
DE102019134388A1 (de) Filteroptimierung zur verbesserung der rechnerischen effizienz von faltungsoperationen
DE112019000382T5 (de) GANZZAHLIGER MULTIPLIKATOR MIT MEHRFACHER GENAUIGKEIT DURCH MATRIX-MATRIX-MULTIPLIKATIONEN UNTER VERWENDUNG EINES 16-BIT-FLIEßKOMMA-MULTIPLIKATORS
DE112020004266T5 (de) Kompressionsunterstützungsanweisungen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 112005003852

Country of ref document: DE

Effective date: 20120718

R020 Patent grant now final

Effective date: 20130201

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee