DE202012009380U1 - Befehl und Logik zum Durchführen einer dynamischen Binärübersetzung - Google Patents

Befehl und Logik zum Durchführen einer dynamischen Binärübersetzung Download PDF

Info

Publication number
DE202012009380U1
DE202012009380U1 DE202012009380U DE202012009380U DE202012009380U1 DE 202012009380 U1 DE202012009380 U1 DE 202012009380U1 DE 202012009380 U DE202012009380 U DE 202012009380U DE 202012009380 U DE202012009380 U DE 202012009380U DE 202012009380 U1 DE202012009380 U1 DE 202012009380U1
Authority
DE
Germany
Prior art keywords
code
processor
translated
translation
software
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 - Lifetime
Application number
DE202012009380U
Other languages
English (en)
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 DE202012009380U1 publication Critical patent/DE202012009380U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

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

Abstract

Prozessor, welcher Folgendes umfasst: Schaltkreise zum Ausführen eines Originalsoftwarecodes, der derart compiliert ist, dass er auf einen ersten Befehlssatz abzielt; Schaltkreise zum Erkennen eines Hotspots in dem Softwarecode und Übertragen der Steuerung an einen Binärübersetzungsübersetzer; Logik zum Bestimmen einer Hotspot-Region zur Übersetzung; Logik zum Erzeugen des übersetzten Codes unter Verwendung eines zweiten Befehlssatzes; Logik zum Ablegen des übersetzten Codes in einem Übersetzungscache; Schaltkreise zum Ausführen des übersetzten Codes aus dem übersetzten Cache; und Schaltkreise und Logik für den Wechsel zurück zum Originalsoftwarecode, nachdem die Ausführung des übersetzten Codes abgeschlossen ist.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Offenbarung betrifft das Gebiet der Verarbeitungslogik, Mikroprozessoren und der damit verbundenen Befehlssatzarchitektur, die, wenn sie durch den Prozessor oder eine andere Verarbeitungslogik ausgeführt wird, logische, mathematische oder andere funktionale Operationen durchführt.
  • BESCHREIBUNG DES STANDES DER TECHNIK
  • Computerprogramme sind normalerweise in ausführbare Programme mit einem spezifischen Befehlssatz für eine bestimmte Computerprozessorarchitektur kompiliert. Dies verursacht ein Problem für Computerprozessorverkäufer, unabhängige Softwareverkäufer (ISV – independent software vendors) und Computerbetriebssystemverkäufer (OSV – operation system vendors), weil diese jedes Mal, wenn eine neue Generation von Prozessoren eingeführt wird, viele Engineering-Ressourcen sowie finanzielle Mittel aufwenden müssen, um Unterstützung für die alten Computerprogramme bereitzustellen, damit diese auf den neuen Computerprozessoren laufen.
  • Es existieren mehrere Ansätze, die ausführbaren Programme, die für einen Befehlssatz kompiliert sind, auf einem Computerprozessor laufen zu lassen, indem ein unterschiedlicher Befehlssatz oder ein verbesserter Befehlssatz implementiert wird (z. B. unter Ausnutzung neuer Hardwaremerkmale). Bei einem Ansatz übersetzt der zugrundeliegende Computerprozessor alle Codes der ausführbaren Programme in den Befehlssatz, der durch den zugrundeliegenden Computerprozessor bereitgestellt wird. In einem weiteren Ansatz werden, wenn ausführbare Programme, die für eine alte Generation eines Computerprozessors kompiliert sind, auf eine neue Generation des Computerprozessors mit einem verbesserten Befehlssatz portiert werden, nur Hotspots in einem Programm durch die Hardware reoptimiert, oder alternativ dazu muss das Betriebssystem Unterstützung für die neuen Merkmale/Befehle ermöglichen. Der erste Ansatz weist eine schwerwiegende Anfangslatenz auf, weil das gesamte ausführbare Programm in nativen Code übersetzt werden muss, der auf dem zugrundeliegenden Prozessor läuft. Das Hardware-orientierte Schema erfordert jedoch signifikante Hardware (z. B. ein Atomaritätsmodell basierend auf einem die Speicherreihenfolge beibehaltenden Reorder-Buffer (ROB)). Der Ansatz der Betriebssystemunterstützung erfordert viele Engineering-Ressourcen und finanzielle Mittel, wie oben beschrieben.
  • Dementsprechend besteht in der Technik Bedarf an der Bereitstellung eines neuen Verfahrens und einer neuen Vorrichtung für die Binärübersetzung zum Optimieren des Codes, um die neuen Befehle oder Hardwaremerkmale auszunutzen. Diese Optimierung kann selbst dann bereitgestellt werden, wenn das Betriebssystem (BS) die neuen Befehle oder die neuen Hardwaremerkmale nicht unterstützt.
  • BESCHREIBUNG DER FIGUREN
  • In den Figuren der beigefügten Zeichnungen sind Ausführungsformen als Beispiele und nicht als Einschränkung veranschaulicht:
  • 1A ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform;
  • 1B ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform;
  • 1C ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform;
  • 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform;
  • 3A veranschaulicht gepackte Datentypen gemäß einer Ausführungsform;
  • 3B veranschaulicht gepackte Datentypen gemäß einer Ausführungsform;
  • 3C veranschaulicht gepackte Datentypen gemäß einer Ausführungsform;
  • 3D veranschaulicht eine Befehlscodierung gemäß einer Ausführungsform;
  • 3E veranschaulicht eine Befehlscodierung gemäß einer Ausführungsform;
  • 3F veranschaulicht eine Befehlscodierung gemäß einer Ausführungsform;
  • 4A veranschaulicht Elemente einer für Hardware und Software gemeinsam entwickelten dynamischen Binärübersetzung für eine Mikroarchitektur gemäß einer Ausführungsform;
  • 4B veranschaulicht Elemente einer für Hardware und Software gemeinsam entwickelten dynamischen Binärübersetzung für eine Mikroarchitektur gemäß einer Ausführungsform;
  • 4C veranschaulicht einen Beispieldurchlauf, der durch eine für Hardware und Software gemeinsam entwickelte dynamische Übersetzung gemäß einer Ausführungsform identifiziert wird;
  • 5 veranschaulicht ein Flussdiagramm für Operationen, die für einen Prozess gemäß einer Ausführungsform durchzuführen sind.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende Beschreibung beschreibt eine Befehls- und Verarbeitungslogik zum Durchführen einer dynamischen Binärübersetzung innerhalb eines oder im Zusammenhang mit einem Prozessor, Computersystem oder einer anderen Verarbeitungsvorrichtung. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten wie Verarbeitungslogik, Prozessortypen, Mikroarchitekturbedingungen, Ereignisse, freigegebene Mechanismen und dergleichen dargelegt, um ein gründlicheres Verständnis der Ausführungsformen der vorliegenden Erfindung bereitzustellen. Ein Fachmann auf dem Gebiet wird jedoch verstehen, dass die Erfindung auch ohne derartige spezifische Einzelheiten in der Praxis eingesetzt werden kann. Außerdem wurden einige gut bekannte Strukturen, Schaltkreise und dergleichen nicht im Detail gezeigt, um zu vermeiden, dass Ausführungsformen der vorliegenden Erfindung unnötig unklar gemacht werden.
  • Obwohl die folgenden Ausführungsformen mit Bezug auf einen Prozessor beschrieben sind, sind andere Ausführungsformen auch auf andere Arten integrierter Schaltkreise und Logikeinrichtungen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen der vorliegenden Erfindung können auf andere Arten von Schaltkreisen oder Halbleitereinrichtungen angewandt werden, die von einem höheren Pipeline-Durchsatz und verbesserter Leistung profitieren können. Die Lehren der Ausführungsformen der vorliegenden Erfindung sind auf jeden Prozessor oder jede Maschine anwendbar, der/die Datenmanipulation durchführt. Jedoch ist die vorliegende Erfindung nicht auf Prozessoren oder Maschinen begrenzt, die 512-Bit-, 256-Bit-, 128-Bit-, 64-Bit-, 32-Bit- oder 16-Bit-Datenoperationen durchführen, und sie kann auf jeden Prozessor und jede Maschine angewandt werden, in dem/der eine Manipulation oder das Management von Daten durchgeführt wird. Außerdem liefert die folgende Beschreibung Beispiele, und die beigefügten Zeichnungen zeigen verschiedene Beispiele zum Zweck der Veranschaulichung. Jedoch sind diese Beispiele nicht in einem einschränkenden Sinn zu interpretieren, da sie vielmehr lediglich dazu dienen sollen, Beispiele von Ausführungsformen der vorliegenden Erfindung bereitzustellen anstatt eine vollständige Liste aller möglichen Implementierungen von Ausführungsformen der vorliegenden Erfindung bereitzustellen.
  • Obwohl die Beispiele unten die Befehlshandhabung und -verteilung im Kontext von Ausführungseinheiten und logischen Schaltkreisen beschreiben, können andere Ausführungsformen der vorliegenden Erfindung mit Hilfe von Daten oder Befehlen erreicht werden, die auf einem maschinenlesbaren, greifbaren Medium gespeichert sind, die, wenn sie durch eine Maschine durchgeführt werden, die Maschine dazu veranlassen, Funktionen durchzuführen, die konsistent mit mindestens einer Ausführungsform der Erfindung sind. In einer Ausführungsform sind Funktionen im Zusammenhang mit Ausführungsformen der vorliegenden Erfindung in maschinenausführbaren Befehlen enthalten. Die Befehle können verwendet werden, um einen Universal- oder Spezialprozessor, der mit den Befehlen programmiert ist zu veranlassen, die Schritte der vorliegenden Erfindung durchzuführen. Ausführungsformen der vorliegenden Erfindung können als ein Computerprogrammprodukt oder Software bereitgestellt werden, das/die ein maschinen- oder computerlesbares Medium beinhalten kann, auf dem Befehle gespeichert sind, die zum Programmieren eines Computers (oder anderer elektronischer Geräte) verwendet werden können, eine oder mehrere Operationen in Übereinstimmung mit Ausführungsformen der vorliegenden Erfindung durchzuführen. Alternativ dazu können Schritte von Ausführungsformen der vorliegenden Erfindung durch spezifische Hardwarekomponenten durchgeführt werden, die eine Festfunktionslogik zum Durchführen der Schritte enthalten, oder durch jegliche Kombination von programmierten Computerkomponenten und Festfunktionshardwarekomponenten.
  • Befehle, die zum Programmieren von Logik zum Durchführen von Ausführungsformen der Erfindung verwendet werden, können innerhalb eines Speichers im System, wie einem DRAM, Cache, Flash-Speicher oder einem anderen Speicher, gespeichert werden. Ferner können die Befehle über ein Netzwerk oder mit Hilfe anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium jeglichen Mechanismus zum Speichern oder Übermitteln von Informationen in einer Form beinhalten, die durch eine Maschine (z. B. einen Computer) lesbar ist, jedoch nicht beschränkt auf Disketten, Bildplatten, CD-Nur-Lese-Speicher (CD-ROMs) und magneto-optische Platten, Nur-Lese-Speicher (ROM), Zufallszugriffsspeicher (RAM), löschbaren programmierbaren Nur-Lese-Speicher (EPROM), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen greifbaren, maschinenlesbaren Speicher, der bei der Übermittlung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen übertragener Signale (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet wird. Dementsprechend beinhaltet das computerlesbare Medium jegliche Art eines greifbaren maschinenlesbaren Mediums, das zum Speichern oder Übermitteln elektronischer Befehle oder Informationen in einer Form, die durch eine Maschine (z. B. ein Computer) gelesen werden kann, geeignet ist.
  • Ein Design kann verschiedene Stadien durchlaufen, von der Erstellung über die Simulation bis hin zur Herstellung. Daten, die ein Design darstellen, können das Design in einer Reihe von Möglichkeiten darstellen. Als erstes kann, wie es bei Simulationen von Nutzen ist, die Hardware mit Hilfe einer Hardwarebeschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Außerdem kann in einigen Stadien des Designprozesses ein Modell auf Schaltkreisebene mit Logik- und/oder Transistor-Gates hergestellt werden. Ferner erreichen die meisten Designs in einem Stadium eine Datenebene, welche die physische Platzierung verschiedener Geräte in dem Hardwaremodell darstellt. In dem Fall, wo herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, welche das Hardwaremodell darstellen, die Daten sein, welche die Gegenwart oder Abwesenheit verschiedener. Merkmale auf unterschiedlichen Maskenschichten bei Masken spezifizieren, die zum Herstellen des integrierten Schaltkreises verwendet werden. In jeder Darstellung des Designs können die Daten in jeder Form eines maschinenlesbaren Mediums gespeichert sein. Ein Speicher oder ein magnetischer oder optischer Speicher, wie eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über eine optische oder elektrische Welle, moduliert oder anderweitig erzeugt zum Übermitteln derartiger Informationen, übermittelt werden. Wenn eine elektrische Trägerwelle, die den Code oder das Design anzeigt oder trägt, übermittelt wird, wird in dem Maß, wie Kopieren, Puffern oder erneute Übermittlung des elektrischen Signals durchgeführt werden, eine neue Kopie erstellt. So kann ein Kommunikationsanbieter oder ein Netzwerkanbieter einen Artikel, zumindest zeitweise, auf einem greifbaren, maschinenlesbaren Medium speichern, wie Informationen, die in eine Trägerwelle kodiert sind, welche Techniken von Ausführungsformen der vorliegenden Erfindung enthalten.
  • In modernen Prozessoren wird eine Reihe unterschiedlicher Ausführungseinheiten zum Verarbeiten und Ausführen einer Vielzahl von Codes und Befehlen verwendet. Nicht alle Befehle werden gleich erzeugt, da einige schneller abgeschlossen sind, während andere eine Reihe von Taktzyklen zum Abschluss benötigen können. Je schneller der Durchsatz von Befehlen, desto besser ist die Gesamtleistung des Prozessors. Somit wäre es vorteilhaft, wenn so viele Befehle wie möglich so schnell wie möglich ausgeführt werden. Jedoch gibt es bestimmte Befehle, die eine höhere Komplexität aufweisen und im Hinblick auf die Ausführungszeit und Prozessorressourcen mehr erfordern. Zum Beispiel gibt es Gleitkommabefehle, Lade/Speicher-Operationen, Datenbewegungen usw.
  • Da immer mehr Computersysteme in Internet-, Text- und Multimedia-Anwendungen eingesetzt werden, wurde mit der Zeit zusätzliche Prozessorunterstützung eingeführt. In einer Ausführungsform kann ein Befehlssatz mit einer oder mehreren Computerarchitekturen, einschließlich Datentypen, Befehlen, Registerarchitektur, Adressierungsmodi, Speicherarchitektur, Unterbrechungs- und Ausnahmehandhabung und externe Eingabe und Ausgabe (E/A), im Zusammenhang stehen.
  • In einer Ausführungsform kann die Befehlssatzarchitektur (ISA – instruction set architecture) durch eine oder mehrere Mikroarchitekturen implementiert werden, wozu Prozessorlogik und Schaltkreise gehören, die verwendet werden, um einen oder mehrere Befehlssätze zu implementieren.
  • Dementsprechend können sich Prozessoren mit unterschiedlichen Mikroarchitekturen mindestens einen Teil eines gemeinsamen Befehlssatzes teilen. Zum Beispiel implementieren Intel® Pentium 4 Prozessoren, Intel® CoreTM Prozessoren und Prozessoren von Advanced Micro Devices, Inc. aus Sunnyvale, CA nahezu identische Versionen des x86-Befehlssatzes (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden), weisen jedoch unterschiedliche interne Designs auf. Ähnlich können sich Prozessoren, die durch andere Prozessorentwicklungsunternehmen, wie ARM Holdings, Ltd., MIPS oder ihre Lizenznehmer oder Übernehmer entwickelt wurden, mindestens einen Teil eines gemeinsamen Befehlssatzes teilen, können jedoch unterschiedliche Prozessordesigns beinhalten. Zum Beispiel kann die gleiche Registerarchitektur der ISA auf unterschiedliche Art und Weise in unterschiedlichen Mikroarchitekturen implementiert werden, unter Verwendung neuer oder gut bekannter Techniken, einschließlich dedizierter physischer Register, eines oder mehrerer dynamisch zugeordneter physischer Register unter Verwendung eines Register-Umbenennungsmechanismus (z. B. die Verwendung einer Register Alias Table (RAT), eines Reorder Buffers (ROB) und einer Retirement Register File). In einer Ausführungsform können Register ein oder mehrere Register, Registerarchitekturen, Registerdateien oder andere Registersätze beinhalten, die durch einen Softwareprogrammierer adressierbar sein können oder nicht.
  • In einer Ausführungsform kann ein Befehl ein oder mehrere Befehlsformate beinhalten. In einer Ausführungsform kann ein Befehlsformat verschiedene Felder (Bitzahl, Bitposition usw.) anzeigen, um u. a. die durchzuführende Operation und den/die Operanden zu spezifizieren, an dem diese Operation durchgeführt werden soll. Einige Befehlsformate können weiter untergliedert sein, definiert durch Befehlsvorlagen (oder Unterformate). Zum Beispiel können die Befehlsvorlagen eines gegebenen Befehlsformates so definiert sein, dass sie unterschiedliche Untersätze der Felder des Befehlsformates aufweisen und/oder so definiert sein, dass ein gegebenes Feld unterschiedlich interpretiert wird. In einer Ausführungsform wird ein Befehl mit Hilfe eines Befehlsformates ausgedrückt (und, falls definiert, in einer gegebenen der Befehlsvorlagen dieses Befehlsformates) und spezifiziert oder zeigt die Operation und die Operanden an, bei welchen die Operation durchgeführt wird.
  • Wissenschaftliche Anwendungen, Finanzanwendungen, autovektorisierte Universalanwendungen, RMS(Recognition, Mining and Synthesis)-Anwendungen sowie visuelle und Multimedia-Anwendungen (z. B. 2D/3D-Grafiken, Bildverarbeitung, Video-Kompression/Dekompression, Spracherkennungsalgorithmen und Audiomanipulation) können es erforderlich machen, die gleiche Operation an einer großen Anzahl von Datenelementen durchzuführen. In einer Ausführungsform bezieht sich Single Instruction Multiple Data (SIND) auf einen Befehlstyp, der einen Prozessor veranlasst, eine Operation an mehreren Datenelementen durchzuführen. Die SIND-Technologie kann in Prozessoren eingesetzt werden, welche die Bits in einem Register logisch in eine Reihe von Datenelementen mit fester Größe oder variabler Größe einteilen können, von denen jedes einen separaten Wert darstellt. Zum Beispiel können in einer Ausführungsform die Bits in einem 64-Bit-Register als ein Quelloperand organisiert sein, welcher vier separate 16-Bit-Datenelemente enthält, von denen jedes einen separaten 16-Bit-Wert darstellt. Dieser Datentyp kann als ,gepackter' Datentyp oder ,Vektor'-Datentyp bezeichnet werden, und die Operanden dieses Datentyps werden als gepackte Datenoperanden oder Vektoroperanden bezeichnet. In einer Ausführungsform kann ein gepacktes Datenelement oder ein Vektor eine Sequenz gepackter Datenelemente sein, die innerhalb eines einzelnen Registers gespeichert sind, und ein gepackter Datenoperand oder ein Vektoroperand kann ein Quell- oder Zieloperand eines SIMD-Befehls (oder eines ,gepackten Datenbefehls' oder eines ,Vektorbefehls') sein. In einer Ausführungsform spezifiziert ein SIMD-Befehl eine einzelne Vektoroperation, die an zwei Quellvektoroperanden durchzuführen ist, um einen Zielvektoroperanden (auch als Ergebnisvektoroperand bezeichnet) der gleichen oder einer unterschiedlichen Größe, mit der gleichen oder einer unterschiedlichen Anzahl von Datenelementen und in der gleichen oder einer unterschiedlichen Datenelementreihenfolge zu erzeugen.
  • Die SIMD-Technologie, wie die, welche durch die Intel® CoreTM Prozessoren eingesetzt wird, welche einen Befehlssatz aufweisen, der x86-, MMXTM-, Streaming SIMD Extensions (SSE), SSE2-, SSE3-, SSE4.1- und SSE4.2-Befehle beinhaltet, ARM-Prozessoren, wie die ARM Cortex® Prozessorfamilie, welche einen Befehlssatz aufweist, der die Vektor-Gleitkomma-(VFP – vector floating point) und/oder NEON-Befehle beinhaltet, und MIPS-Prozessoren, wie die Loongson-Prozessorfamilie entwickelt durch das Institute of Computing Technology (ICT) der Chinesischen Wissenschaftsakademie, hat eine signifikante Verbesserung in der Anwendungsleistung ermöglicht (CoreTM und MMXTM sind eingetragene Handelsmarken oder Handelsmarken der Intel Corporation in Santa Clara, Kalifornien).
  • In einer Ausführungsform sind Ziel- und Quellregister/daten Oberbegriffe zum Darstellen der Quelle und des Ziels der entsprechenden Daten oder Operation. In einigen Ausführungsformen können sie durch Register, Speicher oder andere Speicherbereiche, welche andere Namen oder Funktionen als die veranschaulichten aufweisen, implementiert sein. Zum Beispiel kann in einer Ausführungsform „DEST1” ein temporäres Speicherregister oder ein anderer Speicherbereich sein, wohingegen „SRC1” und „SRC2” ein erstes und zweites Quellspeicherregister oder ein anderer Speicherbereich und so weiter sein können. In anderen Ausführungsformen können zwei oder mehr der SRC- und DEST-Speicherbereiche unterschiedlichen Datenspeicherelementen innerhalb des gleichen Speicherbereiches entsprechen (z. B. ein SIMD-Register). In einer Ausführungsform kann eines der Quellregister auch als ein Zielregister agieren, zum Beispiel durch Zurückschreiben des Ergebnisses einer Operation, die an den ersten und zweiten Quelldaten durchgeführt wurde, in eines der beiden Quellregister, welches als ein Zielregister dient.
  • 1A ist ein Blockdiagramm eines beispielhaften Computersystems, das mit einem Prozessor gebildet ist, welcher Ausführungseinheiten zum Ausführen eines Befehls in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung beinhaltet. Das System 100 beinhaltet eine Komponente, wie einen Prozessor 102, zum Einsatz von Ausführungseinheiten, welche Logik zum Durchführen von Algorithmen zum Verarbeiten von Daten in Übereinstimmung mit der vorliegenden Erfindung beinhalten, wie in der hierin beschriebenen Ausführungsform. Das System 100 stellt Verarbeitungssysteme dar, die auf den PENTIUM® III, PENTIUM® 4, XeonTM, Itanium®, XScaleTM und/oder StrongARMTM Mikroprozessoren basieren, die von der Intel Corporation in Santa Clara, Kalifornien, verfügbar sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, Engineering-Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. In einer Ausführungsform kann das Mustersystem 100 eine Version des WINDOWSTM Betriebssystems ausführen, das von der Microsoft Corporation in Redmond, Washington verfügbar ist, obwohl auch andere Betriebssysteme (zum Beispiel UNIX und Linux), eingebettete Software und/oder graphische Benutzerschnittstellen verwendet werden können. Somit sind Ausführungsformen der vorliegenden Erfindung nicht auf eine spezifische Kombination von Hardwareschaltkreisen und Software begrenzt.
  • Die Ausführungsformen sind nicht auf Computersysteme begrenzt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Geräten wie Handhelds und eingebetteten Anwendungen verwendet werden. Zu einigen Beispielen von Handhelds gehören Mobiltelefone, Internet-Protocol-Geräte, Digitalkameras, PDAs (Personal Digital Assistants) und Handheld-PCs. Zu eingebetteten Anwendungen können ein Mikrocontroller, ein digitaler Signalprozessor (DSP), System-on-Chip, Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerkknoten, Weitverkehrsnetz(WAN)-Switches oder jedes andere System, das einen oder mehrere Befehle in Übereinstimmung mit mindestens einer Ausführungsform durchführen kann, zählen.
  • 1A ist ein Blockdiagramm eines Computersystems 100, das mit einem Prozessor 102 gebildet ist, der eine oder mehrere Ausführungseinheiten 108 zum Durchführen eines Algorithmus zum Durchführen von mindestens einem Befehl in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung beinhaltet. Eine Ausführungsform kann im Kontext eines Einzelprozessor-Desktop- oder -Serversystems beschrieben werden, jedoch können alternative Ausführungsformen in einem Multiprozessorsystem enthalten sein. Das System 100 ist ein Beispiel einer ,Knoten'-Systemarchitektur. Das Computersystem 100 beinhaltet einen Prozessor 102 zum Verarbeiten von Datensignalen. Der Prozessor 102 kann ein komplexer Befehlssatzcomputer(CISC – complex instruction set computer)-Mikroprozessor, ein reduzierter Befehlssatzberechnungs-(RISC – reduced instruction set computing)Mikroprozessor, ein Very Long Instruction Word(VLIW)-Mikroprozessor, ein Prozessor, der eine Kombination aus Befehlssätzen implementiert, oder jede andere Prozessoreinrichtung, wie zum Beispiel ein digitaler Signalprozessor, sein. Der Prozessor 102 ist an einen Prozessorbus 110 gekoppelt, der Datensignale zwischen dem Prozessor 102 und anderen Komponenten im System 100 übermitteln kann. Die Elemente des Systems 100 führen ihre herkömmlichen Funktionen durch, die den mit der Technik vertrauten gut bekannt sind.
  • In einer Ausführungsform beinhaltet der Prozessor 102 einen internen Level l (L1) Cachespeicher 104. In Abhängigkeit von der Architektur kann der Prozessor 102 einen einzelnen internen Cache oder mehrere Ebenen internen Caches aufweisen. Alternativ dazu kann sich in einer anderen Ausführungsform der Cachespeicher extern vom Prozessor 102 befinden. Andere Ausführungsformen können auch eine Kombination von sowohl internen als auch externen Caches beinhalten, in Abhängigkeit von der/n bestimmten Implementierung und Bedürfnissen. Die Registerdatei 106 kann unterschiedliche Datentypen in verschiedenen Registern, einschließlich Ganzzahlregistern, Gleitkommaregistern, Statusregistern und Befehlszeigerregistern, speichern.
  • Die Ausführungseinheit 108, welche Logik zum Durchführen von Ganzzahl- und Gleitkomma-Operationen beinhaltet, ist auch im Prozessor 102 untergebracht. Der Prozessor 102 beinhaltet auch einen Mikrocode(u-Code)-ROM, der Mikrocode für bestimmte Makrobefehle speichert. Für eine Ausführungsform beinhaltet die Ausführungseinheit 108 Logik zum Handhaben eines gepackten Befehlssatzes 109. Durch das Einschließen des gepackten Befehlssatzes 109 in den Befehlssatz eines Universalprozessors 102, zusammen mit dazugehörigen Schaltkreisen zum Ausführen der Befehle, können die Operationen, die von vielen Multimedia-Anwendungen verwendet werden, mit Hilfe gepackter Daten in einem Universalprozessor 102 durchgeführt werden. So können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die volle Breite des Datenbusses eines Prozessors für die Durchführung von Operationen an gepackten Daten genutzt wird. Dies kann den Bedarf, kleinere Dateneinheiten über den Datenbus des Prozessors hinweg zu übertragen, um eine oder mehrere Operationen mit einem Datenelement nach dem anderen durchzuführen, eliminieren.
  • Alternative Ausführungsformen einer Ausführungseinheit 108 können auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikgeräten, DSPs und anderen Arten von logischen Schaltkreisen eingesetzt werden. Das System 100 beinhaltet einen Speicher 120. Der Speicher 120 kann eine dynamische Zufallszugriffsspeicher(DRAM)-Einrichtung, eine statische Zufallszugriffsspeicher(SRAM)-Einrichtung, eine Flash-Speicher-Einrichtung oder eine andere Speichereinrichtung sein. Der Speicher 102 kann Befehle und/oder Daten speichern, die durch Datensignale dargestellt werden, welche durch den Prozessor 102 ausgeführt werden können.
  • Ein Systemlogikchip 116 ist an den Prozessorbus 110 und den Speicher 120 gekoppelt. Der Systemlogikchip 116 in der veranschaulichten Ausführungsform ist ein Speichercontrollerknoten (MCH – memory controller hub). Der Prozessor 102 kann über einen Prozessorbus 110 mit dem MCH 116 kommunizieren. Der MCH 116 stellt einen Speicherpfad mit hoher Bandbreite 118 an den Speicher 120 bereit, zur Befehls- und Datenspeicherung und zur Speicherung von Grafikbefehlen, Daten und Texturen. Der MCH 116 soll Datensignale zwischen dem Prozessor 102, dem Speicher 120 und anderen Komponenten im System 100 lenken und die Datensignale zwischen dem Prozessorbus 110, dem Speicher 120 und der System-E/A 122 überbrücken. In einigen Ausführungsformen kann der Systemlogikchip 116 einen Grafikport zur Kopplung an einen Grafikcontroller 112 bereitstellen. Der MCH 116 ist durch eine Speicherschnittstelle 118 an den Speicher 120 gekoppelt. Die Grafikkarte 112 ist durch eine Accelerated Graphics Port(AGP)-Verbindung 114 an den MCH 116 gekoppelt.
  • Das System 100 verwendet einen prioritären Knotenschnittstellenbus 122, um den MCH 116 an den E/A-Controllerknoten (ICH – I/O controller hub) 130 zu koppeln. Der ICH 130 stellt über einen lokalen E/A-Bus direkte Verbindungen zu einigen E/A-Geräten bereit. Der lokale E/A-Bus ist ein Hochgeschwindigkeits-E/A-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 120, Chipsatz und Prozessor 102. Einige Beispiele sind der Audiocontroller, der Firmware-Knoten (Flash-BIOS) 128, der drahtlose Sendeempfänger 126, der Datenspeicher 124, der Stamm-E/A-Controller, der Benutzereingabe- und Tastaturschnittstellen enthält, ein serieller Erweiterungsport, wie Universal Serial Bus (USB), und ein Netzwerkcontroller 134. Das Datenspeichergerät 124 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Einrichtung, eine Flash-Speicher-Einrichtung oder eine andere Massenspeichereinrichtung umfassen.
  • Für eine weitere Ausführungsform eines Systems kann ein Befehl in Übereinstimmung mit einer Ausführungsform mit einem System auf einem Chip verwendet werden. Eine Ausführungsform eines Systems auf einem Chip umfasst einen Prozessor und einen Speicher. Der Speicher für ein derartiges System ist ein Flash-Speicher. Der Flash-Speicher kann sich auf dem gleichen Chip befinden wie der Prozessor und andere Systemkomponenten. Außerdem können sich auch andere Logikblöcke, wie ein Speichercontroller oder Grafikcontroller, auf einem System auf einem Chip befinden.
  • 1B veranschaulicht ein Datenverarbeitungssystem 140, welches die Prinzipien einer Ausführungsform der vorliegenden Erfindung implementiert. Ein Fachmann auf dem Gebiet wird leicht verstehen, dass die hierin beschriebenen Ausführungsformen auch mit alternativen Verarbeitungssystemen verwendet werden können, ohne sich vom Umfang der Ausführungsformen der Erfindung zu entfernen.
  • Das Computersystem 140 umfasst einen Verarbeitungskern 159, welcher in der Lage ist, mindestens einen Befehl in Übereinstimmung mit einer Ausführungsform durchzuführen. Für eine Ausführungsform stellt der Verarbeitungskern 159 eine Verarbeitungseinheit von jedem Architekturtyp dar, einschließlich, jedoch nicht darauf beschränkt, eine Architektur vom CISC-, RISC- oder VLIW-Typ. Der Verarbeitungskern 159 kann auch zur Herstellung in einer oder mehreren Prozesstechnologien geeignet sein, und dadurch, dass er ausreichend detailliert auf einem maschinenlesbaren Medium dargestellt ist, kann er zum Vereinfachen der Herstellung geeignet sein.
  • Der Verarbeitungskern 159 umfasst eine Ausführungseinheit 142, einen Satz Registerdatei(en) 145 und einen Decoder 144. Der Verarbeitungskern 159 beinhaltet auch zusätzliche Schaltkreise (nicht gezeigt), die für das Verständnis von Ausführungsformen der vorliegenden Erfindung nicht notwendig sind. Die Ausführungseinheit 142 wird zum Ausführen von Befehlen verwendet, die der Verarbeitungskern 159 empfängt. Zusätzlich zum Durchführen typischer Prozessorbefehle kann die Ausführungseinheit 142 Befehle im gepackten Befehlssatz 143 durchführen, um Operationen an gepackten Datenformaten durchzuführen. Der gepackte Befehlssatz 143 beinhaltet Befehle zum Durchführen von Ausführungsformen der Erfindung und anderer gepackter Befehle. Die Ausführungseinheit 142 ist durch einen internen Bus mit der Registerdatei 145 gekoppelt. Die Registerdatei 145 stellt einen Speicherbereich auf dem Verarbeitungskern 159 zum Speichern von Informationen, einschließlich Daten, dar. Wie zuvor erwähnt, wird verstanden, dass der zum Speichern der gepackten Daten verwendete Speicherbereich nicht kritisch ist. Die Ausführungseinheit 142 ist an den Decoder 144 gekoppelt. Der Decoder 144 wird zum Decodieren von Befehlen, die durch den Verarbeitungskern 159 empfangen werden, in Steuersignale und/oder Mikrocode-Einsprungspunkte verwendet. Als Reaktion auf diese Steuersignale und/oder Mikrocode-Einsprungspunkte, führt die Ausführungseinheit 142 eine angemessene Operation durch. In einer Ausführungsform wird der Decoder verwendet, um den Opcode des Befehls zu interpretieren, welcher anzeigt, welche Operation an den entsprechenden Daten, die innerhalb des Befehls angegeben sind, durchgeführt werden soll.
  • Der Verarbeitungskern 159 ist zum Kommunizieren mit verschiedenen anderen Systemgeräten mit dem Bus 141 gekoppelt, zu denen zum Beispiel eine synchrone dynamische Zufallszugriffsspeicher(SDRAM)-Steuerung 146, eine statische Zufallszugriffsspeicher(SRAM)-Steuerung 147, eine Burst-Flashspeicher-Schnittstelle 148, eine PCMCIA(Personal Computer Memory Card International Association)/CF(Compact Flash)-Kartensteuerung 149, eine Flüssigkristallanzeige(LCD)-Steuerung 150, ein Direktspeicherzugriffs-(DMA)Controller 151 und eine alternative Bus-Master-Schnittstelle 152 zählen können, jedoch nicht darauf beschränkt. In einer Ausführungsform kann das Datenverarbeitungssystem 140 auch eine E/A-Brücke 154 zum Kommunizieren mit verschiedenen E/A-Geräten über einen E/A-Bus 153 umfassen. Zu derartigen E/A-Geräten können zum Beispiel ein universeller asynchroner Empfänger/Sender (UART – universal asynchronous receiver/transmitter) 155, ein Universal Serial Bus (USB) 156, ein drahtloser Bluetooth-UART 157 und eine E/A-Erweiterungsschnittstelle 158 zählen, jedoch nicht darauf beschränkt.
  • Eine Ausführungsform des Datenverarbeitungssystems 140 sorgt für mobile, Netzwerk- und/oder drahtlose Kommunikation und sieht einen Verarbeitungskern 159 vor, der in der Lage ist, SIMD-Operationen durchzuführen, einschließlich einer Textfolgevergleichsoperation. Der Verarbeitungskern 159 kann mit verschiedenen Audio-, Video-, Bildgebungs- und Kommunikationsalgorithmen programmiert sein, einschließlich diskreter Transformationen, wie einer Walsh-Hadamard-Transformation, einer schnellen Fourier-Transformation (FFT – Fast Fourier Transform), einer diskreten Kosinus-Transformation (DCT – Discrete Cosine Transform) und ihren entsprechenden umgekehrten Transformationen; Kompressions-/Dekompressionstechniken, wie Farbraumtransformation, Videocodierungs-Bewegungsabschätzung oder Videodecodierungs-Bewegungsabschätzung; sowie Modulations-/Demodulations-(MODEM)Funktionen, wie Pulscodemodulation (PCM).
  • 1C veranschaulicht noch alternative Ausführungsformen eines Datenverarbeitungssystems, welches in der Lage ist, SIMD-Textfolgevergleichsoperationen durchzuführen. In Übereinstimmung mit einer alternativen Ausführungsform kann das Datenverarbeitungssystem 160 einen Hauptprozessor 166, einen SIMD-Coprozessor 161, einen Cachespeicher 167 und ein Eingabe/Ausgabe-System 168 beinhalten. Das Eingabe/Ausgabe-System 168 kann wahlweise an eine drahtlose Schnittstelle 169 gekoppelt sein. Der SIMD-Coprozessor 161 ist in der Lage, Operationen durchzuführen, einschließlich Befehle in Übereinstimmung mit einer Ausführungsform. Der Verarbeitungskern 170 kann zur Herstellung in einer oder mehreren Prozesstechnologien geeignet sein, und dadurch, dass er ausreichend detailliert auf einem maschinenlesbaren Medium dargestellt ist, kann er zum Vereinfachen der Herstellung des gesamten oder eines Teils des Datenverarbeitungssystems 160, einschließlich des Verarbeitungskernes 170, geeignet sein.
  • Für eine Ausführungsform umfasst der SIMD-Coprozessor 161 eine Erweiterungseinheit 162 und einen Satz Registerdatei(en) 164. Eine Ausführungsform des Hauptprozessors 166 umfasst einen Decoder 165 zum Erkennen von Befehlen des Befehlssatzes 163, einschließlich Befehle in Übereinstimmung mit einer Ausführungsform zum Ausführen durch die Ausführungseinheit 162. Für alternative Ausführungsformen umfasst der SIMD-Coprozessor 161 auch mindestens einen Teil des Decoders 165B zum Decodieren von Befehlen des Befehlssatzes 163. Der Verarbeitungskern 170 beinhaltet auch zusätzliche Schaltkreise (nicht gezeigt), die für das Verständnis von Ausführungsformen der vorliegenden Erfindung nicht notwendig sind.
  • Im Betrieb führt der Hauptprozessor 166 einen Strom von Datenverarbeitungsbefehlen aus, welche Datenverarbeitungsoperationen eines allgemeinen Typs, einschließlich Interaktionen mit dem Cachespeicher 167, und das Eingabe/Ausgabe-System 168 steuern. Eingebettet innerhalb des Stromes von Datenverarbeitungsbefehlen sind SIMD-Coprozessor-Befehle. Der Decoder 165 des Hauptprozessors 166 erkennt diese SIMD-Coprozessor-Befehle als von einem Typ, der durch einen angeschlossenen SIMD-Coprozessor 161 ausgeführt werden sollte. Dementsprechend gibt der Hauptprozessor 166 diese SIMD-Coprozessor-Befehle (oder Steuersignale, welche SIMD-Coprozessor-Befehle darstellen) auf dem Coprozessor-Bus 172 aus, von wo sie durch jegliche angeschlossenen SIMD-Coprozessoren empfangen werden. In diesem Fall akzeptiert und führt der SIMD-Coprozessor 161 sämtliche empfangenen SIMD-Coprozessor-Befehle aus, die für ihn bestimmt sind.
  • Daten können über die drahtlose Schnittstelle 169 für die Verarbeitung durch die SIMD-Coprozessor-Befehle empfangen werden. Als ein Beispiel kann Sprachkommunikation in Form eines digitalen Signals empfangen werden, welches durch die SIMD-Coprozessor-Befehle verarbeitet werden kann, um digitale Audio-Samples wiederherzustellen, welche die Sprachkommunikation darstellen. Als ein weiteres Beispiel können komprimierte Audio- und/oder Video-Daten in Form eines digitalen Bitstroms empfangen werden, der durch die SIMD-Coprozessor-Befehle verarbeitet werden kann, um digitale Audio-Samples und/oder Bewegungsvideo-Frames wiederherzustellen. Für eine Ausführungsform des Verarbeitungskerns 170 sind der Hauptprozessor 166 und ein SIMD-Coprozessor 161 in einen einzelnen Verarbeitungskern 170 integriert, welcher eine Ausführungseinheit 162, einen Satz Registerdatei(en) 164 und einen Decoder 165 zum Erkennen von Befehlen des Befehlssatzes 163, einschließlich Befehlen in Übereinstimmung mit einer Ausführungsform, umfasst.
  • 2 ist ein Blockdiagramm der Mikroarchitektur für einen Prozessor 200, die logische Schaltkreise zum Durchführen von Befehlen in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung beinhaltet. In einigen Ausführungsformen kann ein Befehl in Übereinstimmung mit einer Ausführungsform so implementiert sein, dass er mit Datenelementen, welche die Größe eines Bytes, Wortes, Langwortes, Quadwords usw. aufweisen, sowie Datentypen, wie Ganzzahl- und Gleitkomma-Datentypen mit einfacher und doppelter Genauigkeit, arbeitet. In einer Ausführungsform ist das In-Order-Front-End 201 der Teil des Prozessors 200, der auszuführende Befehle abruft und diese für die spätere Verwendung in der Prozessor-Pipeline vorbereitet. Das Front-End 201 kann mehrere Einheiten beinhalten. In einer Ausführungsform ruft der Befehlsvorabruf 226 Befehle aus dem Speicher ab und führt sie einem Befehlsdecoder 228 zu, der sie wiederum decodiert oder interpretiert. Zum Beispiel decodiert der Decoder in einer Ausführungsform einen empfangenen Befehl in eine oder mehrere Operationen, „Mikrobefehle” oder „Mikrooperationen” genannt (auch Mikro-Ops oder u-Ops genannt), welche die Maschine ausführen kann. In anderen Ausführungsformen parst der Decoder den Befehl in einen Opcode und entsprechende Daten- und Steuerfelder, die durch die Mikroarchitektur verwendet werden, um Operationen in Übereinstimmung mit einer Ausführungsform durchzuführen. In einer Ausführungsform nimmt der Spur-Cache 230 decodierte u-Ops und ordnet sie zur Ausführung in programmgeordneten Sequenzen oder Spuren in der u-Op-Warteschlange 234 an. Trifft der Spur-Cache 230 auf einen komplexen Befehl, liefert der Mikrocode-ROM 232 die benötigten u-Ops zur Fertigstellung der Operation.
  • Einige Befehle werden in eine einzelne Mikro-Op umgewandelt, wohingegen andere mehrere Mikro-Ops benötigen, um die komplette Operation fertigzustellen. In einer Ausführungsform greift, wenn zum Abschließen eines Befehls mehr als vier Mikro-Ops benötigt werden, der Decoder 228 auf den Mikrocode-ROM 232 zu, um den Befehl auszuführen. Für eine Ausführungsform kann ein Befehl für die Verarbeitung an einem Befehlsdecoder 228 in eine kleine Anzahl von Mikro-Ops decodiert werden. In einer weiteren Ausführungsform kann ein Befehl innerhalb des Mikrocode-ROM 232 gespeichert werden, sollte eine Reihe von Mikro-Ops notwendig sein, um die Operation durchzuführen. Der Spur-Cache 230 bezieht sich auf eine Einsprungspunkt-PLA (programmierbare Logikanordnung) zum Bestimmen eines korrekten Mikrobefehlszeigers zum Lesen der Mikrocodesequenzen zum Abschließen eines oder mehrerer Befehle in Übereinstimmung mit einer Ausführungsform aus dem Mikrocode-ROM 232. Nachdem der Mikrocode-ROM 232 das Sequenzieren der Mikro-Ops für einen Befehl abgeschlossen hat, nimmt das Front-End 201 der Maschine das Abrufen von Mikro-Ops aus dem Spur-Cache 230 wieder auf.
  • Das Out-Of-Order-Ausführungsmodul 203 ist das Element, wo die Befehle auf die Ausführung vorbereitet werden. Die Out-Of-Order-Ausführungslogik weist eine Reihe von Puffern zum Ausgleichen und Neuordnen des Befehlsstroms auf, um die Leistung zu optimieren, wenn die Befehle in der Pipeline voranschreiten und zur Ausführung eingeplant werden. Die Verteilerlogik ordnet der Maschine Puffer und Ressourcen zu, die jede u-Op für die Ausführung benötigt. Die Registerumbenennungslogik benennt Logikregister auf Einträge in einer Registerdatei um. Der Verteiler ordnet auch einen Eintrag für jede u-Op in einer der beiden u-Op-Warteschlangen zu, einen für Speicheroperationen und einen für Nicht-Speicheroperationen, und zwar vor den Befehls-Schedulern: Speicher-Scheduler, schneller Scheduler 202, langsamer/allgemeiner Gleitkomma-Scheduler 204 und einfacher Gleitkomma-Scheduler 206. Die u-Op-Scheduler 202, 204, 206 bestimmen basierend auf der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, welche die u-Ops zum Abschluss ihrer Operation benötigen, wenn eine u-Op zur Ausführung bereit ist. Der schnelle Scheduler 202 einer Ausführungsform kann auf jeder Hälfte des Haupttaktzyklus planen, während die anderen Scheduler nur einmal pro Hauptprozessortaktzyklus planen können. Die Scheduler stimmen sich über den Sende-Port ab, um die u-Ops für die Ausführung einzuplanen.
  • Die Registerdateien 208, 210 sitzen zwischen den Schedulern 202, 204, 206 und den Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 im Ausführungsblock 211. Es gibt eine separate Registerdatei 208, 210 für Ganzzahl- bzw. Gleitkomma-Operationen. Jede Registerdatei 208, 210 einer Ausführungsform beinhaltet auch ein Bypass-Netzwerk, das gerade abgeschlossene Ergebnisse umgehen oder vorschieben kann, die noch nicht in die Registerdatei zu neuen abhängigen u-Ops geschrieben wurden. Die Ganzzahl-Registerdatei 208 und die Gleitkomma-Registerdatei 210 sind auch in der Lage, Daten mit der jeweils anderen zu kommunizieren. Für eine Ausführungsform ist die Ganzzahl-Registerdatei 208 in zwei separate Registerdateien aufgeteilt, eine Registerdatei für die 32-Bit-Daten niedriger Ordnung und eine zweite Registerdatei für die 32-Bit-Daten hoher Ordnung. Die Gleitkomma-Registerdatei 210 einer Ausführungsform weist 128-Bit-breite Einträge auf, weil Gleitkommabefehle typischerweise Operanden mit einer Breite zwischen 64 und 128 Bits aufweisen.
  • Der Ausführungsblock 211 enthält die Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224, in denen die Befehle tatsächlich ausgeführt werden. Dieser Abschnitt beinhaltet die Registerdateien 208, 210, welche die Ganzzahl- und Gleitkomma-Datenoperanden-Werte speichern, welche die Mikrobefehle zur Ausführung benötigen. Der Prozessor 200 einer Ausführungsform besteht aus einer Reihe von Ausführungseinheiten: Adresserzeugungseinheit (AGU – address generation unit) 212, AGU 214, schnelle ALU 216, schnelle ALU 218, langsame ALU 220, Gleitkomma-ALU 222, Gleitkomma-Bewegungseinheit 224. Für eine Ausführungsform führen die Gleitkomma-Ausführungsblöcke 222, 224 Gleitkomma-, MMX-, SIMD- und SSE- oder andere Operationen aus. Die Gleitkomma-ALU 222 einer Ausführungsform beinhaltet einen 64-Bit-mal-64-Bit-Gleitkomma-Teiler zum Ausführen von Teilungs-, Wurzel- und Rest-Mikro-Ops. Für Ausführungsformen der vorliegenden Erfindung können Befehle, die einen Gleitkommawert beinhalten, mit der Gleitkomma-Hardware verarbeitet werden. In einer Ausführungsform gehen die ALU-Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 216, 218. Die schnellen ALUs 216, 218 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Für eine Ausführungsform gehen die meisten komplexen Ganzzahloperationen an die langsame ALU 222, da die langsame ALU 222 Ganzzahl-Ausführungshardware für Operationen mit langer Latenz beinhaltet, wie Multiplikator, Verschiebungen, Flag-Logik und Zweigverarbeitung. Speicherlade-/-speicheroperationen werden durch die AGUs 212, 214 ausgeführt. Für eine Ausführungsform sind die Ganzzahl-ALUs 216, 218, 220 im Kontext der Durchführung von Ganzzahloperationen an 64-Bit-Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALUs 216, 218, 220 implementiert sein, um eine Vielzahl von Datenbits zu unterstützen, einschließlich 16, 32, 128, 256 usw. Ähnlich können die Gleitkommaeinheiten 222, 224 implementiert sein, um eine Reihe von Operanden zu unterstützen, die Bits verschiedener Breiten aufweisen. Für eine Ausführungsform können die Gleitkommaeinheiten 222, 224 Operationen an 128-Bit-breiten gepackten Datenoperanden ausführen, in Verbindung mit SIMD- und Multimedia-Befehlen.
  • In einer Ausführungsform versenden die u-Op-Scheduler 202, 204, 206 abhängige Operationen, bevor die Ausführung des übergeordneten Ladens abgeschlossen ist. Da u-Ops im Prozessor 200 spekulativ eingeplant und ausgeführt werden, beinhaltet der Prozessor 200 auch Logik zum Handhaben von Speicherfehlstellen. Falls eine Datenladung im Datencache fehlt, können abhängige Operationen in der Pipeline unterwegs sein, die den Scheduler mit zeitweise inkorrekten Daten verlassen haben. Ein Wiederausführungsmechanismus verfolgt Befehle, die inkorrekte Daten verwenden, zurück und führt sie erneut aus. Nur die abhängigen Operationen müssen erneut ausgeführt werden, und für die unabhängigen wird der Abschluss zugelassen. Die Scheduler und der Wiederausführungsmechanismus einer Ausführungsform eines Prozessors sind auch so ausgelegt, dass sie Befehlssequenzen für Textfolgevergleichsoperationen abfangen.
  • Der Begriff „Register” kann sich auf die integrierten Prozessorspeicherorte beziehen, die als Teil von Befehlen zum Identifizieren von Operanden verwendet werden. Mit anderen Worten können Register diejenigen sein, die von außerhalb des Prozessors nutzbar sind (aus Sicht eines Programmierers). Jedoch sollten die Register einer Ausführungsform in ihrer Bedeutung nicht auf eine bestimmte Art Schaltkreis beschränkt werden. Vielmehr ist ein Register einer Ausführungsform in der Lage, Daten zu speichern und bereitzustellen und die hierin beschriebenen Funktionen durchzuführen. Die hierin beschriebenen Register können durch Schaltkreise innerhalb eines Prozessors implementiert werden, und zwar unter Verwendung einer beliebigen Zahl unterschiedlicher Techniken, wie dedizierte physische Register, dynamisch zugeordnete physische Register mittels Registerumbenennung, Kombinationen dedizierter und dynamisch zugeordneter physischer Register usw. In einer Ausführungsform speichern Ganzzahlregister 32-Bit-Ganzzahldaten. Eine Registerdatei einer Ausführungsform enthält auch acht Multimedia-SIMD-Register für gepackte Daten. Für die Diskussionen unten werden die Register als Datenregister verstanden, die zum Aufnehmen gepackter Daten, wie 64-Bit-breite MMXTM-Register (in einigen Fällen auch als ,mm'-Register bezeichnet), in Mikroprozessoren ausgelegt sind, die mit MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. Diese MMX-Register, die sowohl in Ganzzahl- als auch in Gleitkommaform verfügbar sind, können mit gepackten Datenelementen arbeiten, die SIMD- und SSE-Befehle begleiten. Ähnlich können auch 128-Bit-breite XMM-Register in Bezug auf SSE2-, SSE3-, SSE4-Technologie oder darüber hinaus (allgemein bezeichnet als „SSEx”) zum Aufnehmen derartiger gepackter Datenoperanden verwendet werden. In einer Ausführungsform müssen die Register beim Speichern gepackter und ganzzahliger Daten nicht zwischen den beiden Datentypen unterscheiden. In einer Ausführungsform sind die ganze Zahl und das Gleitkomma entweder in der gleichen Registerdatei oder in unterschiedlichen Registerdateien enthalten. Ferner können in einer Ausführungsform Gleitkomma- und Ganzzahldaten in unterschiedlichen Registern oder den gleichen Registern gespeichert sein.
  • In den Beispielen der folgenden Figuren ist eine Reihe von Datenoperanden beschrieben. 3A veranschaulicht die Darstellungen verschiedener gepackter Datentypen in Multimediaregistern gemäß einer Ausführungsform der vorliegenden Erfindung. 3A veranschaulicht die Datentypen für ein gepacktes Byte 310, ein gepacktes Wort 320 und ein gepacktes Langwort (dword) 330 für 128-Bit-breite Operanden. Das gepackte Byte-Format 310 dieses Beispiels ist 128 Bit lang und enthält 16 gepackte Byte-Datenelemente. Ein Byte ist hier als 8 Datenbits definiert. Informationen für jedes Byte-Datenelement sind in Bit 7 bis einschließlich Bit 0 für Byte 0, Bit 15 bis einschließlich Bit 8 für Byte 1, Bit 23 bis einschließlich Bit 16 für Byte 2, ... und schließlich Bit 120 bis einschließlich Bit 127 für Byte 15 gespeichert. Somit werden alle verfügbaren Bits in dem Register genutzt. Diese Speicheranordnung erhöht die Speichereffizienz des Prozessors. Außerdem kann, mit Zugriff auf 16 Datenelemente, eine Operation nun parallel an 16 Datenelementen durchgeführt werden.
  • Im Allgemeinen ist ein Datenelement ein einzelnes Stück von Daten, die in/an einem einzelnen Register oder Speicherort zusammen mit anderen Datenelementen der gleichen Länge gespeichert sind. In gepackten Datensequenzen in Bezug auf die SSEx-Technologie ist die Anzahl der Datenelemente, die in einem XMM-Register gespeichert ist, 128 Bits geteilt durch die Länge eines einzelnen Datenelementes in Bit. Ähnlich ist in gepackten Datensequenzen in Bezug auf die MMX- und SSE-Technologie die Anzahl der Datenelemente, die in einem MMX-Register gespeichert ist, 64 Bits geteilt durch die Länge eines einzelnen Datenelementes in Bit. Obwohl die in 3A veranschaulichten Datentypen 128 Bit lang sind, können Ausführungsformen der vorliegenden Erfindung auch mit 64-Bit-breiten Operanden oder Operanden anderer Größe arbeiten. Das gepackte Wort-Format 320 dieses Beispiels ist 128 Bit lang und enthält acht gepackte Wort-Datenelemente. Jedes gepackte Wort enthält 16 Bits an Informationen. Das gepackte Langwort-Format 330 von 3A ist 128 Bits lang und enthält vier gepackte Langwort-Datenelemente. Jedes gepackte Langwort-Datenelement enthält 32 Bits an Informationen. Ein gepacktes Quadword ist 128 Bits lang und enthält zwei gepackte Quadword-Datenelemente.
  • 3B veranschaulicht alternative In-Register-Datenspeicherformate. Alle gepackten Daten können mehr als ein unabhängiges Datenelement beinhalten. Drei gepackte Datenformate sind veranschaulicht; gepackt Halb 341, gepackt Einfach 342 und gepackt Doppel 343. Eine Ausführungsform von gepackt Halb 341, gepackt Einfach 342 und gepackt Doppel 343 enthält Festkomma-Datenelemente. Für eine alternative Ausführungsform können eines oder mehrere von gepackt Halb 341, gepackt Einfach 342 und gepackt Doppel 343 Gleitkomma-Datenelemente enthalten. Eine alternative Ausführungsform von gepackt Halb 341 ist 128 Bits lang und enthält acht 16-Bit-Datenelemente. Eine Ausführungsform von gepackt Einfach 342 ist 128 Bits lang und enthält vier 32-Bit-Datenelemente. Eine Ausführungsform von gepackt Doppel 343 ist 128 Bits lang und enthält zwei 64-Bit-Datenelemente. Es wird verstanden werden, dass derartige gepackte Datenformate weiter auf andere Registerlängen erweitert werden können, zum Beispiel auf 96 Bits, 160 Bits, 192 Bits, 224 Bits, 256 Bits oder mehr.
  • 3C veranschaulicht Darstellungen von verschiedenen signierten und unsignierten gepackten Datentypen in Multimediaregistern gemäß einer Ausführungsform der vorliegenden Erfindung. Die Darstellung unsigniertes gepacktes Byte 344 veranschaulicht die Speicherung eines unsignierten gepackten Bytes in einem SIMD-Register. Informationen zu jedem Byte-Datenelement sind in Bit 7 bis einschließlich Bit 0 für Byte 0, Bit 15 bis einschließlich Bit 8 für Byte 1, Bit 23 bis einschließlich Bit 16 für Byte 2 und schließlich Bit 120 bis einschließlich Bit 127 für Byte 15 gespeichert. Somit werden alle verfügbaren Bits in dem Register genutzt. Diese Speicheranordnung kann die Speichereffizienz des Prozessors erhöhen. Außerdem kann durch den Zugriff auf 16 Datenelemente eine Operation nun parallel an 16 Datenelementen durchgeführt werden. Die Darstellung signiertes gepacktes Byte 345 veranschaulicht die Speicherung eines signierten gepackten Bytes. Es sei darauf hingewiesen, dass das 8. Bit jeden Byte-Datenelementes der Zeichenindikator ist. Die Darstellung unsigniertes gepacktes Wort 346 veranschaulicht, wie Wort 7 bis einschließlich Wort 0 in einem SIMD-Register gespeichert werden. Die Darstellung signiertes gepacktes Wort 347 ist ähnlich der In-Register-Darstellung unsigniertes gepacktes Wort 346. Es sei darauf hingewiesen, dass das 16. Bit jeden Wort-Datenelementes der Zeichenindikator ist. Die Darstellung unsigniertes gepacktes Langwort 348 zeigt, wie Langwort-Datenelemente gespeichert werden. Die Darstellung signiertes gepacktes Langwort 349 ist ähnlich der In-Register-Darstellung unsigniertes gepacktes Langwort 348. Es sei darauf hingewiesen, dass das notwendige Zeichen-Bit das 32. Bit jeden Langwort-Datenelementes ist.
  • 3D ist eine Darstellung einer Ausführungsform eines Operationscodierungs-(Opcode)Formates 360, welches 32 oder mehr Bits aufweist, und von Register/Speicheroperanden-Adressierungsmodi, die einem Opcode-Format entsprechen, welches im „IA-32 Intel Architecture Software Developer's Manual Volume 2: Instruction Set Reference” beschrieben wurde, das von der Intel Corporation, Santa Clara, CA im World Wide Web (www) unter intel.com/design/litcentr erhältlich ist. In einer Ausführungsform kann ein Befehl durch eines oder mehrere der Felder 361 und 362 codiert werden. Es können bis zu zwei Operandenpositionen pro Befehl identifiziert werden, einschließlich bis zu zwei Quelloperandenidentifikatoren 364 und 365. Für eine Ausführungsform ist der Zieloperandenidentifikator 366 der gleiche wie der Quelloperandenidentifikator 364, wohingegen sie in anderen Ausführungsformen unterschiedlich sind. Für eine alternative Ausführungsform ist der Zieloperandenidentifikator 366 der gleiche wie der Quelloperandenidentifikator 365, wohingegen sie in anderen Ausführungsformen unterschiedlich sind. In einer Ausführungsform wird einer der Quelloperanden, der durch die Quelloperandenidentifikatoren 364 und 365 identifiziert wird, durch die Ergebnisse der Textfolgevergleichsoperationen überschrieben, wohingegen in anderen Ausführungsformen der Identifikator 364 einem Quellregisterelement entspricht und der Identifikator 365 einem Zielregisterelement entspricht. Für eine Ausführungsform können die Operandenidentifikatoren 364 und 365 verwendet werden, um 32-Bit- oder 64-Bit-Quell- und -Zieloperanden zu identifizieren.
  • 3E ist eine Darstellung eines weiteren alternativen Operationscodierungs-(Opcode)Formates 370, welches 40 oder mehr Bits aufweist. Das Opcode-Format 370 entspricht dem Opcode-Format 360 und umfasst ein optionales Präfix-Byte 378. Ein Befehl gemäß einer Ausführungsform kann durch eines oder mehrere der Felder 378, 371 und 372 codiert werden. Es können bis zu zwei Operandenpositionen pro Befehl durch die Quelloperandenidentifikatoren 374 und 375 und durch das Präfix-Byte 378 identifiziert werden. Für eine Ausführungsform kann das Präfix-Byte 378 verwendet werden, um 32-Bit- oder 64-Bit-Quell- und -Zieloperanden zu identifizieren. Für eine Ausführungsform ist der Zieloperandenidentifikator 376 der gleiche wie der Quelloperandenidentifikator 374, wohingegen sie in anderen Ausführungsformen unterschiedlich sind. Für eine alternative Ausführungsform ist der Zieloperandenidentifikator 376 der gleiche wie der Quelloperandenidentifikator 375, wohingegen sie in anderen Ausführungsformen unterschiedlich sind. In einer Ausführungsform führt ein Befehl Operationen an einem oder mehreren der Operanden, die durch die Operandenidentifikatoren 374 und 375 identifiziert wurden, aus, und ein oder mehrere Operanden, die durch die Operandenidentifikatoren 374 und 375 identifiziert wurden, werden durch die Ergebnisse des Befehls überschrieben, wohingegen in anderen Ausführungsformen Operanden, die durch die Identifikatoren 374 und 375 identifiziert wurden, auf ein anderes Datenelement in einem anderen Register geschrieben werden. Die Opcode-Formate 360 und 370 gestatten die Adressierung von Register zu Register, Speicher zu Register, Register durch Speicher, Register durch Register, Register durch Unmittelbar, Register zu Speicher, die teilweise durch die MOD-Felder 363 und 373 und durch optionale Skalen-Index-Basis- und Verschiebungs-Bytes spezifiziert ist.
  • Als nächstes Bezug nehmend auf 3F können in einigen alternativen Ausführungsformen arithmetische 64-Bit Single Instruction Multiple Date(SMID)-Operationen durch einen Coprozessor-Datenverarbeitungs-(CDP – coprocessor data processing)Befehl durchgeführt werden. Das Operationscodierungs-(Opcode)Format 380 stellt einen derartigen CDP-Befehl dar, der die CDP-Opcode-Felder 382 und 389 aufweist. Die Art der CDP-Opcode-Operationen kann für alternative Ausführungsformen durch eines oder mehrere der Felder 383, 384, 387 und 388 codiert werden. Es können bis zu drei Operandenpositionen pro Befehl identifiziert werden, einschließlich bis zu zwei Quelloperandenidentifikatoren 385 und 390 sowie ein Zieloperandenidentifikator 386. Eine Ausführungsform des Coprozessors kann Operationen an 8-, 16-, 32- und 64-Bit-Werten ausführen. Für eine Ausführungsform wird ein Befehl an Ganzzahl-Datenelementen durchgeführt. In einigen Ausführungsformen kann ein Befehl unter Verwendung des Bedingungsfeldes 381 bedingt ausgeführt werden. Für einige Ausführungsformen können die Quelldatengrößen durch das Feld 383 codiert werden. In einigen Ausführungsformen kann eine Null-(Z), Negativ-(N), Übertrag-(C) und Überlauf-(V)Detektion an SIMD-Feldern erfolgen. Für einige Befehle kann die Art der Sättigung durch das Feld 384 codiert werden.
  • Zusätzlich zu XMM-Registern, die 128 Bits lang sein können, können andere Ausführungsformen der vorliegenden Erfindung breitere Register bereitstellen, wie, jedoch nicht darauf beschränkt, YMM-Register mit 256 Bits oder andere Register mit 512 Bits, 1024 Bits usw. Diese anderen Ausführungsformen der vorliegenden Erfindung können Erweiterungen zum x86-Befehlssatz bereitstellen, wie Advanced Vector Extensions (AVX) und andere Erweiterungen zusätzlich zu AVX (z. B. AVX2 oder AVX3), welche die breiteren Register ausnutzen können. D. h., neue Befehle in AVX, AVX2 oder AVX3 können unter Verwendung dieser breiteren Register mit 256 Bits, 512 Bits, 1024 Bits usw. Operanden verwenden, die mehr gepackte Bytes, Wörter, Langwörter enthalten.
  • Wie oben beschrieben, kann jeder Befehl eines kompilierten Softwareprogramms durch einen Decoder eines Prozessors in einen oder mehrere Mikrocodes (u-Ops) übersetzt werden. Diese Mikrocodeübersetzungen können für die BS- und VMM-Schicht transparent sein. Ausführungsformen der vorliegenden Erfindung können ferner eine für Hardware und Software gemeinsam entwickelte dynamische Binärübersetzung bereitstellen, die einen Teil des Mikrocodes eines Befehlssatzes transparent in Mikrocode für einen unterschiedlichen Befehlssatz übersetzen kann. 4A ist eine Darstellung von Elementen einer für Hardware und Software gemeinsam entwickelten dynamischen Binärübersetzung für eine Mikroarchitektur 400 gemäß einer Ausführungsform. Wie in 4A gezeigt, kann zusätzlich Gastsoftware 402 außerhalb einer Befehlssatzarchitektur(ISA – instruction set architecture)-Grenze der Mikroarchitektur 400 gemäß einer Ausführungsform ausgeführt werden. Die Mikroarchitektur 400 kann Software- und Hardwareelemente zum Durchführen der dynamischen Binärübersetzung umfassen. Die Softwareelemente können eine Binärübersetzungscode-Schicht 404 umfassen. Die Hardwareelemente können einen gemeinsam entwickelten Prozessor 408 umfassen, der die Binärübersetzungshardware-Erweiterungen 418 beinhalten kann.
  • Die Binärübersetzungshardware-Erweiterungen 418 können eine Leistungsüberwachungseinheit (PMU – performance monitoring unit) beinhalten. Die PMU kann einen Hardware-Hotspot-Erkennungsmechanismus implementieren. In einer Ausführungsform kann die PMU pseudozufällig (skalare oder gepackte) SSE-Befehle abfragen und einen relativen Befehlspunkt (RIP – relative instruction point) und Last Branch Record (LBR) in einen Puffer erfassen. Die PMU kann auch nachverfolgen, wenn die gleiche Region bereits zuvor abgefragt und entschieden wurde, dass sie nicht lohnend sei (schwarze Liste). Die Binärübersetzungshardware-Erweiterungen 418 können auch einen Mechanismus (Verfahren und/oder Schaltkreise) beinhalten, um in übersetzten Code einzutreten oder diesen zu verlassen. Zum Beispiel können die Binärübersetzungshardware-Erweiterungen 418 sicherstellen, dass Sprünge vom Originalcode die Steuerung nicht an beliebige Orte übertragen. Für Einzelheiten zur Übertragungssteuerung, siehe US-Patentanmeldung xx (Anwaltsaktenzeichen, 02207-38234), deren Inhalt durch Referenz in seiner Gesamtheit hierin eingeschlossen ist.
  • Die Binärübersetzungshardware-Erweiterungen 418 können ferner einen Mechanismus (Verfahren und/oder Schaltkreise) zum Sicherstellen von Übersetzungskonsistenz beinhalten. D. h. zum Beispiel, die Binärübersetzungshardware-Erweiterungen 418 können eine selbstmodifizierende/quermodifizierende Codeerkennung implementieren, um sicherzustellen, dass übersetzter Code immer konsistent mit dem/r Originalcode/-schleife ist, den/die er darstellt. Selbstmodifizierender Code (SMC) kann auf die Modifikation eines Codes verweisen, der durch einen Binärcodeoptimierer (z. B. Übersetzer 410) übersetzt wurde. Dies kann eine Veränderung in der Seitenzuordnung durch das Betriebssystem beinhalten, und zwar derart, dass virtuelle Adressen unterschiedlichen physischen Adressen zugeordnet werden. Quermodifizierender Code (XMC – cross-modifying code) kann auf die Modifikation eines Codes verweisen, der durch einen Binärcodeoptimierer (z. B. Übersetzer 410) von einem anderen Prozessor übersetzt wurde. Zusammen können diese durch den Begriff der „Übersetzungskonsistenz” abgedeckt werden – d. h. der Code, den ein Optimierer optimiert hat, kann noch immer unmodifiziert sein, und zwar derart, dass der übersetzte Code noch immer das gleiche Verhalten und die gleiche Ausführungssemantik wie der Originalcode aufweist.
  • Die Binärübersetzungshardware-Erweiterungen 418 können auch einen Speicherdisambiguierungsmechanismus (Verfahren und/oder Schaltkreise) implementieren, zum Beispiel Daten-Aliasing-Erkennung (erkennt spezifisches Ladungspaar und speichert Konflikt). Die Binärübersetzungshardware-Erweiterungen 418 können auch eine Atomaritätsunterstützung beinhalten, die es gestatten kann, dass neugeordnete Berechnung und Speicherzugriffe nach der Speicherordnung für IA nicht von der Originalprogrammreihenfolge unterschieden werden können. Die Binärübersetzungshardware-Erweiterungen 418 können auch einen Laufzeitüberwachungs-u-Code beinhalten, der Ausnahmen und Zurücksetzungen aus dem Atomaritätsmechanismus handhabt sowie die Ausführung für Hotspots überwacht und Overheads managt.
  • Nachdem die Leistungsüberwachungshardware Hotspot-Coderegionen identifiziert hat, die (skalare oder gepackte) SSE-Befehle enthalten, kann die Binärübersetzungssoftware aufgerufen werden, durch Analyse von Codeseiten eine Zielschleife zu identifizieren. Die Binärübersetzungscode-Schicht 404 kann einen Übersetzer 410 und eine Laufzeit 412 beinhalten.
  • Autovektorisierung ist eine Programmtransformation, die ein Einzelbefehlsstromprogramm mittels SIMD(Vektor)-Befehlen in ein Single Instruction Multiple Data(SIMD)-Programm umwandelt. Der Übersetzer 410 kann die Codebytes analysieren und den Code automatisch zur Verwendung neuer Befehle übersetzen, um neue Merkmale auszunutzen, die durch den zugrundeliegenden Prozessor 408 bereitgestellt werden. Zum Beispiel kann der Übersetzer 410 ein Vektorverbreiterungs-(VW – vector widening)Optimierer sein. Der VW-Optimierer kann die Codebytes analysieren, eine Schleife identifizieren, eine Schleifenanalyse zum Berechnen von Abhängigkeiten und Vektorisierungsstrategie mit Softwareprüfungen auf Disambiguierung durchführen, und die Schleife automatisch für die Verwendung breiterer Hardwarevektorbefehle vektorisieren, um breitere Register auszunutzen, die durch den Prozessor bereitgestellt werden (z. B. Übersetzen des Codes von der Verwendung des XMM-Registers zur Verwendung des YMM-Registers). Der VW-Optimierer kann sowohl Inter-Iterations- als auch Intra-Iterationsverbreiterung der Berechnungs- und Speicherzugriffe (Laden/Speichern) innerhalb der Schleife unterstützen. Daher ermöglicht in einer Ausführungsform der Prozessor, der die Befehlssatzarchitektur implementiert, transparent, dass Legacy Scalar oder Legacy Vektor(SSE)-Code breitere Vektoren ausnutzt. Dies kann es dem neuen Prozessor mit einem breiteren Vektor gestatten, beim Starten von Anwendungen, die für vorherige Prozessorgenerationen kompiliert wurden, Werte zu liefern, ohne von einer OSV-, ISV-Freigabe abhängig zu sein.
  • Die Laufzeit 412 kann Overheads (Rollbacks, in Übersetzungen verbrachte Zeit) innerhalb einer Designschwelle verwalten, um eine positive Nettoleistung sicherzustellen. In einer Ausführungsform kann die Laufzeit 412 ein ereignisbasiertes System sein (kann als ein Software-Thread oder Mikrocode implementiert sein), das auf eine Vielzahl von Ereignissen auf Systemebene reagiert, welche sich auf die Binärcodeübersetzung auswirken, wie: a) Erkennung und Analyse von Hotspots, b) Management des Übersetzungscaches, wo der übersetzte Code abgelegt ist, c) Überwachung und Verwaltung von Overheads im Zusammenhang mit Übersetzung, Profiling usw. und d) Informationen in Bezug auf SMC/XMC, der durch die Hardware erkannt wird, wiederholte Atomregion-Abbruchinformationen und damit im Zusammenhang stehende Entfernung/Deaktivierung der Übersetzungen. Diese dünne Software/Mikrocode-Schicht kann dem Übersetzer/Optimierer eine Reihe von Diensten bereitstellen und weist eine Schnittstelle zum Hardwaresupport auf.
  • 4B veranschaulicht Elemente einer für Hardware und Software gemeinsam entwickelten dynamischen Binärübersetzung für eine Mikroarchitektur gemäß einer Ausführungsform. Wie in 4B gezeigt, kann die Software einen Systemspeicher 452 beinhalten, der Gastsoftware 454, Binärübersetzungssoftware 456 und Übersetzungscache 458 umfassen kann. Die Binärübersetzungssoftware 456 und der Übersetzungscache 458 können Softwareelemente einer Mikroarchitektur 450 gemäß der vorliegenden Erfindung sein. Die Mikroarchitektur 450 kann ferner einen gemeinsam entwickelten Prozessor 460 beinhalten, der einen Hotspot-Detektor 461 und neue Merkmale 464 umfassen kann. In einer Ausführungsform kann die Gastsoftware 454 identisch mit oder ähnlich der Gastsoftware 402 von 4A sein. Die Gastsoftware 454 kann mittels eines spezifischen Befehlssatzes kompiliert sein und kann ein BS oder jede andere Software, die auf dem BS läuft, sein (einschließlich eines weiteren BS, das auf einer virtuellen Maschine läuft, die durch einen Virtual Machine Manager verwaltet wird).
  • Die Binärübersetzungssoftware 456 der Mikroarchitektur 400 kann Software der Binärübersetzungscodeschicht 404 umfassen, wie den Übersetzer 410 und die Laufzeit 412. Der Hotspot-Detektor 462 kann eine PMU sein, wie oben in Bezug auf die Binärübersetzungshardware-Erweiterungen 418 beschrieben. Die neuen Merkmale 464 können breitere Register (z. B. 256 Bits, 512 Bits oder 1024 Bits) und andere Merkmale beinhalten, die oben in Bezug auf die Binärübersetzungshardware-Erweiterungen 418 beschrieben wurden (Schaltkreise zum Eintreten in und Verlassen von übersetzten/m Code, Schaltkreise zum Sicherstellen der Übersetzungskonsistenz, Schaltkreise zur Speicherdisambiguierung, Schaltkreise für eine Atomaritätsunterstützung, Schaltkreise für den Laufzeitüberwachungs-u-Code).
  • 4C veranschaulicht einen Beispieldurchlauf 480 für einen Single Precision SAXPY (Alpha·X + Y) identifiziert durch eine Mikroarchitektur (z. B. 400 und/oder 450), die eine für Hardware und Software gemeinsam entwickelte dynamische Binärübersetzung gemäß einer Ausführungsform implementiert. SAXPY ist eine Kombination aus Skalarmultiplikation und Vektoraddition, z = α X + Y, wobei α ein Skalar ist und X und Y Vektoren sind und alle α, X und Y einfache Genauigkeit aufweisen. Der Beispieldurchlauf 480 kann ein Datenflussgraph sein, der durch den Übersetzer 410 aus der Analyse der Anwendungscodebytes identifiziert wird. In einer Ausführungsform können die Speicherreferenzen in kanonischer Form dargestellt sein.
  • Folgendes ist eine Tabelle, die den Originalcode zusammen mit dem übersetzten Code zeigt, der durch einen Prozessor erzeugt und ausgeführt werden kann, welcher eine für Hardware und Software gemeinsam entwickelte Binärübersetzung gemäß einer Ausführungsform implementiert.
    Originalschleife Vektorverbreiterte Schleife
    Schleife: xmm1 = MOVUPS ds:(rax + rdi·0x1) Atomregion-Beginn
    xmm1 = MULPS xmm1, xmm0 ... Initialisierungscode ...
    xmm2 = MOVUPS ds:(rbx + rdi·0 + 1) Schleife: Atomregion-Ende
    xmm1 = ADDPS xmm1, xmm2 Atomregion-Beginn
    ds:(rcx + rdi·0x1) = MOVUPS xmm1 ymm1 = VMOVUPS ds: (rax + rdi·0x1)
    xmm1 = MOVUPS ds:0x10(rax + rdi·0x1) ymm1 = VMULPS ymm1, ymm0
    xmm1 = MULPS xmm1, xmm0 ymm2 = VMOVUPS ds: (rbx + rdi·0x1)
    xmm2 = MOVUPS ds:0x10(rbx + rdi·0x1) ymm1 = VADDPS ymm1, ymm2
    xmm1 = ADDPS xmm1, xmm2 ds:(rcx + rdi·0x1) = VMOVUPS ymm1
    ds:0x10(rcx + rdi·0x1) = MOVUPS xmm1 rdi 0, COSPAZ = ADD rdi 0, 0x20
    rdi 0, COSPAZ = ADD rdi 0, 0x20 COSPAZ = CMP rdi 0, rdx 0
    COSPAZ = CMP rdi 0, rdx 0 JL Loop, OFlag, Sflag
    JL Loop, OFlag, Sf lag ... Ausgang-Aufräumcode ...
    Atomregion-Ende
    Tabelle 1 Originalcode und übersetzter Code
  • Wie in der obigen Tabelle gezeigt, kann die linke Spalte den Originalcode beinhalten, der XMM-Register verwendet, sowie Befehle, welche MOVUPS, MULPS, ADDPS usw. beinhalten. Die rechte Spalte kann den durch einen Übersetzer (z. B. Übersetzer 410) übersetzten Code beinhalten, der YMM-Register verwendet, sowie Befehle, die VMOVUPS, VMULPS, VADDPS für die Operation an YMM-Registern beinhalten. Der übersetzte Code kann Atomregionen für den Initialisierungscode beinhalten, sowie die Schleife, die übersetzten Code verwendet. In einer Ausführungsform kann die Übersetzung transparent sein und dynamisch durch die Mikroarchitektur (z. B. 400 und/oder 450) durchgeführt werden. D. h., eine Ausführungsform kann dynamische Optimierungstechnologie zum Transformieren von Hot-Loops innerhalb des Mikroprozessors nutzen, ohne Beteiligung des Betriebssystems/VMM oder einer Anwendung. Diese Ausführungsform kann es der verborgenen Binärübersetzungs-(BT – binary translation)Schicht gestatten, den Code zur Verwendung einer breiteren Vektorhardware zu optimieren, selbst wenn der VMM dem Gastcode die Verfügbarkeit breiterer Vektorregister nicht preisgibt. Diese Optimierung kann stattfinden, selbst wenn das BS den Speicherstatus für breitere Vektorregister nicht unterstützt.
  • 5 veranschaulicht ein Flussdiagramm von Operationen, die für einen Prozess 500 gemäß einer Ausführungsform durchzuführen sind. Der Prozess 500 kann an Block 502 starten, an dem der Anwendungs- und Betriebssystemcode ausgeführt werden kann. Wie oben beschrieben, können zum Beispiel in einem Prozessor Befehle empfangen und durch einen Decoder decodiert und für die Ausführung durch eine Funktionseinheit aufgereiht werden. An Block 504 kann durch den Prozessor ein Hotspot erkannt werden, und die Steuerung kann an einen Binärübersetzungsübersetzer übergeben werden. An Block 506 kann der Übersetzer die Region zur Übersetzung bestimmen. Zum Beispiel kann eine Schleife identifiziert und die Schleifenanalyse durchgeführt werden. Dann kann an Block 508 übersetzter Code erzeugt werden. Zum Beispiel kann, wie in Tabelle 1 oben gezeigt, der übersetzte Code, der dem Originalcode entspricht, erzeugt werden. An Block 510 kann der übersetzte Code in einem Übersetzungscache abgelegt werden. Zum Beispiel kann der übersetzte Code in einem Abschnitt des Systemspeichers abgelegt werden, der als der Übersetzungscache bezeichnet wird. An Block 512 kann der übersetzte Code aus dem Übersetzungscache ausgeführt werden. Der übersetzte Code kann breitere Register ausnutzen, die durch den Prozessor bereitgestellt werden, und kann so eine bessere Leistung als der Originalcode aufweisen. In einer Ausführungsform kann der übersetzte Code mit einem Commit- und Rollback-Mechanismus ausgeführt werden. D. h., der übersetzte Code kann ausgeführt werden, jedoch können sämtliche Ergebnisse temporär in einem Cache (z. B. einem Register oder Speicher) gespeichert werden. Die Ergebnisse können nur voll eingesetzt werden, wenn für das gesamte Stück des übersetzten Codes keine Unterbrechungen oder Ausnahmen stattfinden. Falls jegliche Unterbrechungen oder Ausnahmen stattfinden, bevor die Ausführung des kompletten Stückes des übersetzten Codes abgeschlossen wurde, können jegliche gespeicherten Ergebnisse verworfen werden und jegliche abgeschlossene Ausführung kann auf einen Zustand vor der Ausführung des übersetzten Codes zurückgesetzt werden. An Block 514 kann, wenn eine Unterbrechungs- oder Ausnahmebedingung auftritt, das Ausführen zurück zum Originalcode wechseln. Die Unterbrechungs- oder Ausnahmebedingung kann auch das Zurücksetzen jeglicher Ausführung verursachen.
  • Eine Mikroarchitektur, die eine für Hardware und Software gemeinsam entwickelte dynamische Binärübersetzung gemäß einer Ausführungsform der vorliegenden Erfindung implementiert, kann sich auf signifikante Art und Weise von vorherigen Ansätzen unterscheiden. Zum Beispiel kann die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung eine Technologie mit geringeren Kosten sein, die den begrenzten Transaktionsspeicher(RTM – restricted transactional memory)-Support, der in vorhandenen Prozessortechnologien vorliegt, ausnutzt und inkrementell verbessert. Die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung kann auch PMU-Support, ein neuartiges seitenbasiertes Eintrittsschema und ein neues für Hardware und Software gemeinsam entwickeltes Speicherdisambiguierungsverfahren, das einem Binärübersetzer ausgesetzt wird, wirksam einsetzen. Sie kann auf weniger Hardware-Support beruhen und sich stattdessen auf die Schleifenvektorisierung konzentrieren.
  • In einer Ausführungsform kann die Hotspot-Erkennung einen PMU-basierten Mechanismus mit geringerem Overhead im Vergleich zu voll funktionsfähigen Frame-Prädiktoren in anderen Implementierungen verwenden. Außerdem kann die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung einen fortschrittlichen Schleifenoptimierer aufweisen, mit Unterstützung für die fp-genaue Vollschleifen-Vektorisierungstransformation und einem gut entwickelten Wirtschaftlichkeitsmodell. Darüber hinaus kann die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung eine Laufzeit aufweisen, die in der Lage ist, Overheads (Rollbacks, in Übersetzungen verbrachte Zeit) innerhalb einer Designschwelle zu verwalten, um eine positive Nettoleistung sicherzustellen, und sie kann eine neue, für Hardware und Software gemeinsam entwickelte Speicherdisambiguierungsunterstützung aufweisen, die sich von der Unterstützung in anderen Implementierungen unterscheidet.
  • Die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung kann eine Technologie bereitstellen, die sich von Compiler/Tool-Auto-Vectorizern unterscheidet. Wie oben beschrieben, kann die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung Bit-genaue FP-genaue Optimierungen durchführen, während bestehende Compiler Schleifen nicht vektorisieren, sondern lediglich die FP-Genauigkeit gleich dem Originalcode halten. D. h., die bestehenden Compiler weisen typischerweise einen entspannten FP-Genauigkeitsmodus als Standardmodus auf. Darüber hinaus kann die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung ein dynamisches Optimierungsschema im Vergleich zu den statischen Optimierungen implementieren, die durch bestehende Compiler durchgeführt werden, und sie kann Zugriff zu dynamischen Informationen aufweisen, einschließlich dem Steuerungsflussgraphen (Ausführungsverfolgung).
  • Die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung kann sich ferner von anderen Just-in-Time(JIT)-Compilern, wie JAVA JIT, oder verwalteten Laufzeitoptimierern mit Autovektorisierung unterscheiden. Zum Beispiel kann die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung spekulative Optimierungen verwenden, welche die IA-Programmreihenfolge, fp-Genauigkeit und Transparenz für den Endnutzer beibehalten. Im Gegensatz dazu sind verwaltete Laufzeiten Binäroptimierer für Anwendungen und sind nicht transparent für den Endnutzer. Ferner kann die Mikroarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung mittels Hardwarespekulationsunterstützung Spuren aus x86-Code in vektorisierten Code optimieren. Dies unterscheidet sich von der Vektorisierung von Java-Bytecode in x86-Code im Anwendungsmodus.
  • Ausführungsformen der vorliegenden Erfindung beinhalten einen Mikroprozessor, der dynamische Binärübersetzung mittels einer für Hardware und Software gemeinsam entwickelten Binärübersetzung durchführen kann. Mikroprozessoren gemäß einer Ausführungsform können automatisch laufenden Code zur Verwendung von Vektorbefehlen optimieren, ohne das BS zu aktivieren und ohne eine Anwendung neu zu kompilieren. Ferner können Mikroprozessoren gemäß einer Ausführungsform eine große Zahl von Anwendungen, die für breitere Vektorbefehle optimiert sind, beim Start eines neuen Mikroprozessors unterstützen. Darüber hinaus können Mikroprozessoren gemäß einer Ausführungsform breitere Vektorregister nutzen, selbst wenn die Anwendung aufgrund von CPUID-Defeaturing (zeigt keine Unterstützung für das breitere Vektormerkmal) durch den VMM oder aufgrund von fehlendem Status-Speicher/Wiederherstellungssupport vom BS nicht in der Lage ist, diese zu verwenden.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination aus derartigen Implementierungsansätzen implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode, der auf programmierbaren Systemen ausgeführt wird, welche mindestens einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nichtflüchtiger Speicher und/oder Speicherelemente), mindestens ein Eingabegerät und mindestens ein Ausgabegerät umfassen, implementiert werden.
  • Programmcode kann zum Eingeben von Befehlen zum Durchführen der hierin beschriebenen Funktionen und Erzeugen von Ausgabeinformationen angewandt werden. Die Ausgabeinformationen können in bekannter Art und Weise auf ein oder mehrere Ausgabegeräte angewandt werden. Im Sinne dieser Anmeldung beinhaltet ein Verarbeitungssystem jedes System, das einen Prozessor aufweist, wie zum Beispiel einen digitalen Signalprozessor (DSP – digital signal processor), einen Mikrocontroller, einen anwendungsspezifischen integrierten Schaltkreis (ASIC – application specific integrated circuit) oder einen Mikroprozessor.
  • Zum Kommunizieren mit einem Verarbeitungssystem kann der Programmcode in einer verfahrens- oder objektorientierten Programmiersprache hoher Ebene implementiert sein. Der Programmcode kann, falls gewünscht, auch in Anordnungs- oder Maschinensprache implementiert sein. Tatsächlich sind die hierin beschriebenen Mechanismen im Umfang nicht auf eine bestimmte Programmiersprache beschränkt. Die Sprache kann in jedem Fall eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentative Befehle implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, welches verschiedene Logik innerhalb des Prozessors darstellt, die, wenn sie durch eine Maschine gelesen wird, die Maschine veranlasst, eine Logik zum Durchführen der hierin beschriebenen Techniken zu erzeugen. Derartige Repräsentationen, bekannt als „IP-Kerne”, können auf einem greifbaren, maschinenlesbaren Medium gespeichert sein und verschiedenen Kunden oder Herstellungseinrichtungen zum Laden in die Herstellungsmaschinen, die tatsächlich die Logik oder den Prozessor herstellen, bereitgestellt werden.
  • Zu derartigen maschinenlesbaren Speichermedien können, ohne Einschränkung, nichttransitorische, greifbare Anordnungen von Artikeln hergestellt oder gebildet durch eine Maschine oder ein Gerät, einschließlich Speichermedien, wie Festplatten, jede andere Art von Platten, einschließlich Disketten, optische Platten, CD-ROMs (CD-Nur-Lese-Speicher), CD-RWs (überschreibbare CDs) und magneto-optische Platten, Halbleiterelemente, wie ROMs (Nur-Lese-Speicher), RAMs (Zufallszugriffsspeicher), wie DRAMs (dynamische Zufallszugriffsspeicher), SRAMs (statische Zufallszugriffsspeicher), EPROMs (löschbare programmierbare Nur-Lese-Speicher), Flash-Speicher, EEPROMs (elektrisch löschbare programmierbare Nur-Lese-Speicher), magnetische oder optische Karten oder jede andere Art von Medien, die zum Speichern elektronischer Befehle geeignet ist, zählen.
  • Dementsprechend beinhalten Ausführungsformen der Erfindung auch nichttransitorische, greifbare maschinenlesbare Medien, die Befehle oder Designdaten enthalten, wie HDL (Hardware Description Language), welche hierin beschriebene Strukturen, Schaltkreise, Vorrichtungen, Prozessoren und/oder Systemmerkmale definieren. Derartige Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Somit sind Techniken zum Durchführen von einem oder mehreren Befehlen gemäß mindestens einer Ausführungsform offenbart. Während bestimmte beispielhafte Ausführungsformen beschrieben und in den beigefügten Zeichnungen gezeigt wurden, soll verstanden werden, dass derartige Ausführungsformen die breite Erfindung lediglich veranschaulichen und nicht einschränken, und dass diese Erfindung nicht auf die gezeigten und beschriebenen spezifischen Konstruktionen und Anordnungen beschränkt ist, da dem Fachmann auf dem Gebiet bei genauerer Einsicht in diese Offenbarung verschiedene weitere Modifikationen offensichtlich werden können. In einem Gebiet der Technologie wie diesem, wo das Wachstum schnell ist und sich Weiterentwicklungen nur schwer vorhersagen lassen, können die offenbarten Ausführungsformen in der Anordnung und im Detail leicht modifizierbar sein, wie dies durch entsprechende technologische Fortschritte ermöglicht wird, ohne sich von den Prinzipien der vorliegenden Offenbarung oder dem Umfang der beigefügten Ansprüche zu entfernen.

Claims (16)

  1. Prozessor, welcher Folgendes umfasst: Schaltkreise zum Ausführen eines Originalsoftwarecodes, der derart compiliert ist, dass er auf einen ersten Befehlssatz abzielt; Schaltkreise zum Erkennen eines Hotspots in dem Softwarecode und Übertragen der Steuerung an einen Binärübersetzungsübersetzer; Logik zum Bestimmen einer Hotspot-Region zur Übersetzung; Logik zum Erzeugen des übersetzten Codes unter Verwendung eines zweiten Befehlssatzes; Logik zum Ablegen des übersetzten Codes in einem Übersetzungscache; Schaltkreise zum Ausführen des übersetzten Codes aus dem übersetzten Cache; und Schaltkreise und Logik für den Wechsel zurück zum Originalsoftwarecode, nachdem die Ausführung des übersetzten Codes abgeschlossen ist.
  2. Prozessor nach Anspruch 1, welcher ferner Schaltkreise zur weiteren Unterstützung der Speicherdisambiguierung, Atomarität und der Sicherstellung der Konsistenz der Übersetzung umfasst.
  3. Prozessor nach Anspruch 1, wobei der Originalsoftwarecode eines oder mehrere aus Anwendungssoftware und Betriebssystemsoftware beinhaltet.
  4. Prozessor nach Anspruch 1, wobei der übersetzte Code mit Hilfe eines breiteren Vektors als der Originalsoftwarecode ausgeführt wird.
  5. Prozessor nach Anspruch 1, wobei der übersetzte Code mit einem Commit- und Rollback-Mechanismus ausgeführt wird, und wobei, wenn eine Unterbrechung oder Ausnahme stattfindet, bevor die Ausführung des übersetzten Codes abgeschlossen ist, sämtliche Ergebnisse durch die Ausführung des übersetzten Codes verworfen werden.
  6. Prozessor nach Anspruch 1, welcher ferner Schaltkreise zur Sicherstellung dessen umfasst, dass Sprünge vom Originalsoftwarecode zum übersetzten Code die Steuerung nicht an einen beliebigen Ort übertragen.
  7. Prozessor nach Anspruch 1, wobei die bestimmte Hotspot-Region zur Übersetzung eine Schleife ist.
  8. Prozessor nach Anspruch 7, wobei die Schleife durch Binärübersetzungssoftware identifiziert wird, die Binärübersetzungssoftware Codebytes analysiert, die in der Schleife enthalten sind, und die Schleife automatisch zur Verwendung breiterer Hardwarevektorbefehle vektorisiert.
  9. System, welches Folgendes umfasst: einen Speicher zum Speichern von Befehlen; und einen Prozessor zum Ausführen der Befehle zum Durchführen eines Verfahrens, welches Folgendes umfasst: Ausführen eines Originalsoftwarecodes, der derart compiliert ist, dass er auf einen ersten Befehlssatz abzielt; Erkennen, mit Hilfe von Prozessorhardware, eines Hotspots in dem Softwarecode und Übertragen der Steuerung an einen Binärübersetzungsübersetzer; Bestimmen einer Hotspot-Region zur Übersetzung; Erzeugen des übersetzten Codes mit Hilfe eines zweiten Befehlssatzes; Ablegen des übersetzten Codes in einem Übersetzungscache; Ausführen des übersetzten Codes aus dem übersetzten Cache; und Wechsel zurück zum Originalsoftwarecode nachdem die Ausführung des übersetzten Codes abgeschlossen ist.
  10. System nach Anspruch 9, wobei die Prozessorhardware ferner die Speicherdisambiguierung, Atomarität und die Sicherstellung der Konsistenz der Übersetzung unterstützt.
  11. System nach Anspruch 9, wobei der Originalsoftwarecode eines oder mehrere aus Anwendungssoftware und Betriebssystemsoftware beinhaltet.
  12. System nach Anspruch 9, wobei der übersetzte Code mit Hilfe eines breiteren Vektors als der Originalsoftwarecode ausgeführt wird.
  13. System nach Anspruch 9, wobei der übersetzte Code mit einem Commit- und Rollback-Mechanismus ausgeführt wird, und wobei, wenn eine Unterbrechung oder Ausnahme stattfindet, bevor die Ausführung des übersetzten Codes abgeschlossen ist, sämtliche Ergebnisse durch die Ausführung des übersetzten Codes verworfen werden.
  14. System nach Anspruch 9, wobei die Prozessorhardware sicherstellt, dass Sprünge vom Originalsoftwarecode zum übersetzten Code die Steuerung nicht an einen beliebigen Ort übertragen.
  15. System nach Anspruch 9, wobei die bestimmte Hotspot-Region zur Übersetzung eine Schleife ist.
  16. System nach Anspruch 15, wobei die Schleife durch Binärübersetzungssoftware identifiziert wird, die Binärübersetzungssoftware Codebytes analysiert, die in der Schleife enthalten sind, und die Schleife automatisch zur Verwendung breiterer Hardwarevektorbefehle vektorisiert.
DE202012009380U 2011-09-30 2012-09-28 Befehl und Logik zum Durchführen einer dynamischen Binärübersetzung Expired - Lifetime DE202012009380U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/US2011/054380 WO2013048468A1 (en) 2011-09-30 2011-09-30 Instruction and logic to perform dynamic binary translation
USPCT/US2011/054380 2011-09-30

Publications (1)

Publication Number Publication Date
DE202012009380U1 true DE202012009380U1 (de) 2013-02-26

Family

ID=47991021

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202012009380U Expired - Lifetime DE202012009380U1 (de) 2011-09-30 2012-09-28 Befehl und Logik zum Durchführen einer dynamischen Binärübersetzung

Country Status (4)

Country Link
US (2) US9417855B2 (de)
DE (1) DE202012009380U1 (de)
TW (1) TWI610225B (de)
WO (1) WO2013048468A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110990086A (zh) * 2019-11-26 2020-04-10 华中科技大学 一种用于图像目标检测的协处理器调用方法和系统

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
EP2649523B1 (de) * 2010-12-06 2020-06-17 Google LLC Verfahren zur erstellung eines zwischencodes einer anwendung
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US9032381B2 (en) 2012-06-29 2015-05-12 Intel Corporation State recovery methods and apparatus for computing platforms
US9405551B2 (en) * 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
US9563432B2 (en) * 2013-04-19 2017-02-07 Nvidia Corporation Dynamic configuration of processing pipeline based on determined type of fetched instruction
US9223553B2 (en) * 2013-09-26 2015-12-29 Intel Corporation Methods and apparatus to validate translated guest code in a dynamic binary translator
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9720661B2 (en) 2014-03-31 2017-08-01 International Businesss Machines Corporation Selectively controlling use of extended mode features
US9824021B2 (en) 2014-03-31 2017-11-21 International Business Machines Corporation Address translation structures to provide separate translations for instruction fetches and data accesses
US9715449B2 (en) 2014-03-31 2017-07-25 International Business Machines Corporation Hierarchical translation structures providing separate translations for instruction fetches and data accesses
US9256546B2 (en) 2014-03-31 2016-02-09 International Business Machines Corporation Transparent code patching including updating of address translation structures
US9483295B2 (en) 2014-03-31 2016-11-01 International Business Machines Corporation Transparent dynamic code optimization
US9858058B2 (en) 2014-03-31 2018-01-02 International Business Machines Corporation Partition mobility for partitions with extended code
US9569115B2 (en) 2014-03-31 2017-02-14 International Business Machines Corporation Transparent code patching
US9734083B2 (en) 2014-03-31 2017-08-15 International Business Machines Corporation Separate memory address translations for instruction fetches and data accesses
US9529622B1 (en) * 2014-12-09 2016-12-27 Parallel Machines Ltd. Systems and methods for automatic generation of task-splitting code
US10013351B2 (en) 2014-06-27 2018-07-03 International Business Machines Corporation Transactional execution processor having a co-processor accelerator, both sharing a higher level cache
US9772944B2 (en) * 2014-06-27 2017-09-26 International Business Machines Corporation Transactional execution in a multi-processor environment that monitors memory conflicts in a shared cache
US9594687B2 (en) * 2015-04-14 2017-03-14 Google Inc. Virtualization-aware prefetching
US9335982B1 (en) * 2015-04-28 2016-05-10 Microsoft Technology Licensing, Llc Processor emulation using multiple translations
US11048516B2 (en) * 2015-06-27 2021-06-29 Intel Corporation Systems, methods, and apparatuses for last branch record support compatible with binary translation and speculative execution using an architectural bit array and a write bit array
US10324724B2 (en) 2015-12-16 2019-06-18 Intel Corporation Hardware apparatuses and methods to fuse instructions
US20170192788A1 (en) * 2016-01-05 2017-07-06 Intel Corporation Binary translation support using processor instruction prefixes
US10761849B2 (en) 2016-09-22 2020-09-01 Intel Corporation Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction
US10282182B2 (en) * 2016-09-23 2019-05-07 Intel Corporation Technologies for translation cache management in binary translation systems
US10209962B2 (en) * 2017-02-06 2019-02-19 International Business Machines Corporation Reconstructing a high level compilable program from an instruction trace
US10235178B2 (en) 2017-06-02 2019-03-19 Microsoft Technology Licensing, Llc Performance scaling for binary translation
US10514913B2 (en) * 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
CN108304192B (zh) * 2017-08-10 2021-06-15 北京普莱德新能源电池科技有限公司 一种自动生成can交互层代码的方法及系统
US10324819B1 (en) 2018-01-22 2019-06-18 Oracle International Corporation Runtime performance introspection
US11308214B2 (en) 2018-12-28 2022-04-19 Intel Corporation Binary translation for hardened software security
CN110825367B (zh) * 2019-10-15 2023-06-16 思创数码科技股份有限公司 一种适用于龙芯cpu环境下的表单设计器的设计方法
US11568272B2 (en) * 2020-06-09 2023-01-31 International Business Machines Corporation Generating native code with dynamic reoptimization for ensemble tree model prediction
US20210397425A1 (en) * 2020-06-22 2021-12-23 Apple Inc. Systems and Methods for Performing Binary Translation

Family Cites Families (188)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3601341B2 (ja) 1999-02-09 2004-12-15 株式会社日立製作所 並列プログラム生成方法
JPS63106836A (ja) 1986-10-24 1988-05-11 Hitachi Ltd 異ア−キテクチヤ・エミユレ−シヨン方式
JP2575416B2 (ja) 1987-10-08 1997-01-22 オリンパス光学工業株式会社 形状記憶合金アクチュエータおよび挿入具
CA1325288C (en) 1989-02-03 1993-12-14 Ricky C. Hetherington Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
JPH0581070A (ja) 1990-12-10 1993-04-02 Omron Corp プログラマブルコントローラ、およびプログラマブルコントローラにおけるユーザプログラム実行方法
US5345576A (en) 1991-12-31 1994-09-06 Intel Corporation Microprocessor simultaneously issues an access to an external cache over an external cache bus and to an internal cache, cancels the external cache access on an internal cache hit, and reissues the access over a main memory bus on an external cache miss
WO1994003860A1 (en) 1992-08-07 1994-02-17 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
JP3516963B2 (ja) 1993-03-12 2004-04-05 株式会社東芝 メモリアクセス制御装置
US5524208A (en) 1994-06-09 1996-06-04 Dell Usa, L.P. Method and apparatus for performing cache snoop testing using DMA cycles in a computer system
JPH08123697A (ja) 1994-10-24 1996-05-17 Nec Corp エミュレーション高速化方式
JP2669603B2 (ja) 1994-12-15 1997-10-29 インターナショナル・ビジネス・マシーンズ・コーポレイション コンパイラにおけるコード生成方法及びコンパイラ
US5724565A (en) 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US6077315A (en) 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
US5895503A (en) 1995-06-02 1999-04-20 Belgard; Richard A. Address translation method and mechanism using physical address information including during a segmentation process
JPH09160774A (ja) 1995-12-08 1997-06-20 Hitachi Ltd 命令拡張を容易にした情報処理装置
US5826089A (en) 1996-01-04 1998-10-20 Advanced Micro Devices, Inc. Instruction translation unit configured to translate from a first instruction set to a second instruction set
JP3634379B2 (ja) 1996-01-24 2005-03-30 サン・マイクロシステムズ・インコーポレイテッド スタックキャッシングのための方法及び装置
US6711667B1 (en) 1996-06-28 2004-03-23 Legerity, Inc. Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions
US5933627A (en) 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6031992A (en) 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
JPH1097431A (ja) 1996-07-31 1998-04-14 Fujitsu Ltd シミュレーション装置及びシミュレーション方法並びにコンピュータ読取可能な記録媒体
US5926832A (en) 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US5860107A (en) 1996-10-07 1999-01-12 International Business Machines Corporation Processor and method for store gathering through merged store operations
JP3139392B2 (ja) 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
US6175906B1 (en) 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US5835775A (en) 1996-12-12 1998-11-10 Ncr Corporation Method and apparatus for executing a family generic processor specific application
US5890008A (en) 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US6157988A (en) 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US5999734A (en) 1997-10-21 1999-12-07 Ftl Systems, Inc. Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models
US6000044A (en) * 1997-11-26 1999-12-07 Digital Equipment Corporation Apparatus for randomly sampling instructions in a processor pipeline
DE69737750T2 (de) 1997-12-17 2008-03-06 Hewlett-Packard Development Co., L.P., Houston Erst- und Zweitprozessoren verwendetes Verfahren
US6631514B1 (en) 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
US6480952B2 (en) 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
US6289506B1 (en) 1998-06-30 2001-09-11 Intel Corporation Method for optimizing Java performance using precompiled code
US6327704B1 (en) 1998-08-06 2001-12-04 Hewlett-Packard Company System, method, and product for multi-branch backpatching in a dynamic translator
JP4573189B2 (ja) * 1998-10-10 2010-11-04 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムコード変換方法
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
EP2320318A1 (de) 1999-01-28 2011-05-11 ATI Technologies ULC Ausführung von Programmen für eine erste Rechnerarchitektur auf einem Rechner mit einer zweiten Architektur
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US6314491B1 (en) 1999-03-01 2001-11-06 International Business Machines Corporation Peer-to-peer cache moves in a multiprocessor data processing system
US7089404B1 (en) 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US6438747B1 (en) 1999-08-20 2002-08-20 Hewlett-Packard Company Programmatic iteration scheduling for parallel processors
US6415379B1 (en) 1999-10-13 2002-07-02 Transmeta Corporation Method and apparatus for maintaining context while executing translated instructions
US6990658B1 (en) * 1999-10-13 2006-01-24 Transmeta Corporation Method for translating instructions in a speculative microprocessor featuring committing state
US7590644B2 (en) 1999-12-21 2009-09-15 International Business Machine Corporation Method and apparatus of streaming data transformation using code generator and translator
US6618801B1 (en) 2000-02-02 2003-09-09 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing two architectures in a chip using bundles that contain microinstructions and template information
US6542862B1 (en) 2000-02-18 2003-04-01 Hewlett-Packard Development Company, L.P. Determining register dependency in multiple architecture systems
US6678817B1 (en) 2000-02-22 2004-01-13 Hewlett-Packard Development Company, L.P. Method and apparatus for fetching instructions from the memory subsystem of a mixed architecture processor into a hardware emulation engine
US6615340B1 (en) 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
JP3641997B2 (ja) 2000-03-30 2005-04-27 日本電気株式会社 プログラム変換装置及び方法並びに記録媒体
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
EP1182567B1 (de) 2000-08-21 2012-03-07 Texas Instruments France Softwaregesteuerte Cache-Speicherkonfiguration
US6884171B2 (en) 2000-09-18 2005-04-26 Nintendo Co., Ltd. Video game distribution network
GB0028079D0 (en) 2000-11-17 2001-01-03 Imperial College System and method
US7350200B2 (en) 2001-03-29 2008-03-25 Intel Corporation Method and system of controlling dynamically compiled native code size
US7178137B1 (en) 2001-04-05 2007-02-13 Network Appliance, Inc. Automatic verification of scheduling domain consistency
US20020156977A1 (en) 2001-04-23 2002-10-24 Derrick John E. Virtual caching of regenerable data
WO2004001527A2 (en) 2001-06-26 2003-12-31 Sun Microsystems, Inc. Method and apparatus for facilitating speculative loads in a multiprocessor system
US7752423B2 (en) 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
JP3661614B2 (ja) 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
JP3632635B2 (ja) 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US20030172253A1 (en) 2002-03-06 2003-09-11 Sun Microsystems, Inc. Fast instruction dependency multiplexer
US7065631B2 (en) * 2002-04-09 2006-06-20 Sun Microsystems, Inc. Software controllable register map
US7171546B2 (en) 2002-05-23 2007-01-30 Adams Phillip M CPU life-extension apparatus and method
US7100060B2 (en) 2002-06-26 2006-08-29 Intel Corporation Techniques for utilization of asymmetric secondary processing resources
US6976131B2 (en) 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
GB2393274B (en) 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US7346902B2 (en) 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US7765532B2 (en) 2002-10-22 2010-07-27 Oracle America, Inc. Inducing concurrency in software code
US7603664B2 (en) 2002-10-22 2009-10-13 Sun Microsystems, Inc. System and method for marking software code
US7269825B1 (en) 2002-12-27 2007-09-11 Unisys Corporation Method and system for relative address translation
WO2004064075A1 (de) 2003-01-15 2004-07-29 Continental Teves Ag & Co. Ohg Verfahren zur erkennung und/oder korrektur von speicherzugriffsfehlern und elektronische schaltungsanordnung zur durchführung des verfahrens
US7216202B1 (en) 2003-02-25 2007-05-08 Sun Microsystems, Inc. Method and apparatus for supporting one or more servers on a single semiconductor chip
US7373640B1 (en) 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
JP3901181B2 (ja) 2004-06-30 2007-04-04 日本電気株式会社 プログラム並列化装置及びその方法並びにプログラム
JP3901180B2 (ja) 2004-06-30 2007-04-04 日本電気株式会社 プログラム並列化装置及びその方法並びにプログラム
US7376800B1 (en) 2004-09-14 2008-05-20 Azul Systems, Inc. Speculative multiaddress atomicity
US7458065B2 (en) 2004-09-21 2008-11-25 Intel Corporation Selection of spawning pairs for a speculative multithreaded processor
US20090217020A1 (en) * 2004-11-22 2009-08-27 Yourst Matt T Commit Groups for Strand-Based Computing
US7466316B1 (en) 2004-12-14 2008-12-16 Nvidia Corporation Apparatus, system, and method for distributing work to integrated heterogeneous processors
US7446773B1 (en) 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
US20060136878A1 (en) 2004-12-17 2006-06-22 Arun Raghunath Method and apparatus for enabling compiler and run-time optimizations for data flow applications in multi-core architectures
WO2006069485A1 (en) 2004-12-30 2006-07-06 Intel Corporation Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture
US7810083B2 (en) 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US7818724B2 (en) 2005-02-08 2010-10-19 Sony Computer Entertainment Inc. Methods and apparatus for instruction set emulation
US7673345B2 (en) 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US7607119B2 (en) * 2005-04-26 2009-10-20 Microsoft Corporation Variational path profiling
US7734895B1 (en) 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7363471B2 (en) * 2005-06-27 2008-04-22 Intel Corporation Apparatus, system, and method of dynamic binary translation supporting a denormal input handling mechanism
JP3938387B2 (ja) 2005-08-10 2007-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、制御方法、およびコンパイラ・プログラム
US7774558B2 (en) 2005-08-29 2010-08-10 The Invention Science Fund I, Inc Multiprocessor resource optimization
US7757221B2 (en) * 2005-09-30 2010-07-13 Intel Corporation Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints
US7757222B2 (en) 2005-09-30 2010-07-13 Intel Corporation Generating efficient parallel code using partitioning, coalescing, and degenerative loop and guard removal
EP1783604A3 (de) 2005-11-07 2007-10-03 Slawomir Adam Janczewski Objektorientiertes, parallelsprachiges Verfahren zum Programmieren eines Multiprozessor-Computers
GB0524720D0 (en) 2005-12-05 2006-01-11 Imec Inter Uni Micro Electr Ultra low power ASIP architecture II
US7765536B2 (en) 2005-12-21 2010-07-27 Management Services Group, Inc. System and method for the distribution of a program among cooperating processors
US8387034B2 (en) 2005-12-21 2013-02-26 Management Services Group, Inc. System and method for the distribution of a program among cooperating processing elements
US8108863B2 (en) 2005-12-30 2012-01-31 Intel Corporation Load balancing for multi-threaded applications via asymmetric power throttling
US7506217B2 (en) * 2005-12-30 2009-03-17 Intel Corporation Apparatus and method for software-based control flow checking for soft error detection to improve microprocessor reliability
US9038040B2 (en) 2006-01-25 2015-05-19 International Business Machines Corporation Method for partitioning programs between a general purpose core and one or more accelerators
US20070226696A1 (en) 2006-02-03 2007-09-27 Dell Products L.P. System and method for the execution of multithreaded software applications
US20070234315A1 (en) 2006-02-09 2007-10-04 International Business Machines Corporation Compiling an application by cluster members
US7404041B2 (en) 2006-02-10 2008-07-22 International Business Machines Corporation Low complexity speculative multithreading system based on unmodified microprocessor core
US20090031082A1 (en) 2006-03-06 2009-01-29 Simon Andrew Ford Accessing a Cache in a Data Processing Apparatus
CA2707680A1 (en) 2006-03-14 2007-09-20 Transgaming Inc. General purpose software parallel task engine
US7640399B1 (en) 2006-05-10 2009-12-29 Advanced Micro Devices, Inc. Mostly exclusive shared cache management policies
JP4208895B2 (ja) 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
US8453147B2 (en) 2006-06-05 2013-05-28 Cisco Technology, Inc. Techniques for reducing thread overhead for systems with multiple multi-threaded processors
JP4784827B2 (ja) 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
US7814486B2 (en) 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
US8136102B2 (en) 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for a parallel-processing computer system
US8589666B2 (en) 2006-07-10 2013-11-19 Src Computers, Inc. Elimination of stream consumer loop overshoot effects
US8463589B2 (en) 2006-07-28 2013-06-11 Synopsys, Inc. Modifying a virtual processor model for hardware/software simulation
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US8156480B2 (en) 2006-09-29 2012-04-10 Intel Corporation Methods and apparatus to form a resilient objective instruction construct
US8505002B2 (en) 2006-09-29 2013-08-06 Arm Limited Translation of SIMD instructions in a data processing system
US7937567B1 (en) 2006-11-01 2011-05-03 Nvidia Corporation Methods for scalably exploiting parallelism in a parallel processing system
US7752613B2 (en) * 2006-12-05 2010-07-06 Intel Corporation Disambiguation in dynamic binary translation
US20080141268A1 (en) 2006-12-12 2008-06-12 Tirumalai Partha P Utility function execution using scout threads
US20080163183A1 (en) 2006-12-29 2008-07-03 Zhiyuan Li Methods and apparatus to provide parameterized offloading on multiprocessor architectures
US8250556B1 (en) 2007-02-07 2012-08-21 Tilera Corporation Distributing parallelism for parallel processing architectures
US8010954B2 (en) 2007-02-14 2011-08-30 The Mathworks, Inc. Parallel programming interface to dynamically allocate program portions
BRPI0700691A (pt) 2007-02-15 2008-09-30 Edson Roberto Minatel dispositivo opto-eletrÈnico para auxìlio e controle de processos industriais baseados em montagens manuais através de visão computacional, realidade virtual aumentada, computação gráfica e análise de movimentos
US8141048B2 (en) 2007-02-22 2012-03-20 International Business Machines Corporation Sequential encoding for relational analysis (SERA) of a software model
US20080244538A1 (en) 2007-03-26 2008-10-02 Nair Sreekumar R Multi-core processor virtualization based on dynamic binary translation
CN101295265A (zh) 2007-04-25 2008-10-29 国际商业机器公司 全系统isa仿真系统及其识别进程的方法
US8214808B2 (en) 2007-05-07 2012-07-03 International Business Machines Corporation System and method for speculative thread assist in a heterogeneous processing environment
JP4608011B2 (ja) 2007-06-19 2011-01-05 富士通株式会社 演算処理装置および演算処理方法
US7849290B2 (en) 2007-07-09 2010-12-07 Oracle America, Inc. Store queue architecture for a processor that supports speculative execution
US8010763B2 (en) 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8127283B2 (en) 2007-09-05 2012-02-28 Intel Corporation Enabling graphical notation for parallel programming
US8789031B2 (en) 2007-09-18 2014-07-22 Intel Corporation Software constructed strands for execution on a multi-core architecture
CN101855617A (zh) 2007-09-19 2010-10-06 Kpit库敏思信息系统有限公司 使即插即用硬件用于半自动软件迁移的机制
JP5067425B2 (ja) 2007-09-21 2012-11-07 富士通株式会社 翻訳装置と翻訳方法および翻訳プログラムとプロセッサコアの制御方法およびプロセッサ
US7962724B1 (en) 2007-09-28 2011-06-14 Oracle America, Inc. Branch loop performance enhancement
US20090172353A1 (en) 2007-12-28 2009-07-02 Optillel Solutions System and method for architecture-adaptable automatic parallelization of computing code
US8296749B2 (en) 2007-12-28 2012-10-23 Intel Corporation Program translation and transactional memory formation
US8146106B2 (en) 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
JP5278336B2 (ja) 2008-02-15 2013-09-04 日本電気株式会社 プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
JP4687729B2 (ja) 2008-03-04 2011-05-25 日本電気株式会社 キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法
JP2010039536A (ja) 2008-07-31 2010-02-18 Panasonic Corp プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
CN102165428B (zh) 2008-08-13 2015-05-20 高通股份有限公司 软件应用性能增强
US8806145B2 (en) 2008-11-07 2014-08-12 Oracle America, Inc. Methods and apparatuses for improving speculation success in processors
CN102171650B (zh) 2008-11-24 2014-09-17 英特尔公司 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置
US20100274972A1 (en) 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
US9672019B2 (en) * 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US20100146209A1 (en) 2008-12-05 2010-06-10 Intellectual Ventures Management, Llc Method and apparatus for combining independent data caches
US9940138B2 (en) 2009-04-08 2018-04-10 Intel Corporation Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations
US9766911B2 (en) 2009-04-24 2017-09-19 Oracle America, Inc. Support for a non-native application
US9354944B2 (en) 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8392693B2 (en) 2009-08-28 2013-03-05 Via Technologies, Inc. Fast REP STOS using grabline operations
US8713294B2 (en) 2009-11-13 2014-04-29 International Business Machines Corporation Heap/stack guard pages using a wakeup unit
US8316193B2 (en) * 2009-12-02 2012-11-20 Vmware, Inc. Optimizing segment access in binary translation
US8893280B2 (en) 2009-12-15 2014-11-18 Intel Corporation Sensitive data tracking using dynamic taint analysis
US8464035B2 (en) 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
US8700943B2 (en) 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
US8996845B2 (en) 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US8775153B2 (en) 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
US9501644B2 (en) 2010-03-15 2016-11-22 F-Secure Oyj Malware protection
US8479176B2 (en) 2010-06-14 2013-07-02 Intel Corporation Register mapping techniques for efficient dynamic binary translation
US8521944B2 (en) 2010-08-31 2013-08-27 Intel Corporation Performing memory accesses using memory context information
JP5792577B2 (ja) * 2010-11-10 2015-10-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 動的バイナリ・トランスレータに関するメモリ管理のための装置、方法、およびコンピュータ・プログラム
US8307169B2 (en) 2011-03-10 2012-11-06 Safenet, Inc. Protecting guest virtual machine memory
JP5614348B2 (ja) 2011-03-18 2014-10-29 富士通株式会社 命令処理方法、命令処理装置、及び命令処理プログラム
US9495183B2 (en) * 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9652234B2 (en) * 2011-09-30 2017-05-16 Intel Corporation Instruction and logic to control transfer in a partial binary translation system
US9417855B2 (en) * 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US8984478B2 (en) * 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
WO2013101069A1 (en) 2011-12-29 2013-07-04 Intel Corporation Core switching accelaration in asymmetric multiprocessor system
US8893094B2 (en) * 2011-12-30 2014-11-18 Intel Corporation Hardware compilation and/or translation with fault detection and roll back functionality
US8826257B2 (en) * 2012-03-30 2014-09-02 Intel Corporation Memory disambiguation hardware to support software binary translation
CN104205088B (zh) * 2012-03-30 2018-07-24 英特尔公司 用于实现页级自动二进制转换的方法、装置、系统、和设备
US20130290693A1 (en) * 2012-04-27 2013-10-31 Esencia Technologies Inc. Method and Apparatus for the Automatic Generation of RTL from an Untimed C or C++ Description as a Fine-Grained Specialization of a Micro-processor Soft Core
US9329872B2 (en) * 2012-04-27 2016-05-03 Esencia Technologies Inc. Method and apparatus for the definition and generation of configurable, high performance low-power embedded microprocessor cores
US9141361B2 (en) * 2012-09-30 2015-09-22 Intel Corporation Method and apparatus for performance efficient ISA virtualization using dynamic partial binary translation
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
CN104956322B (zh) * 2013-03-05 2019-03-01 英特尔公司 分析向量化的潜在效益
US9405551B2 (en) * 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
US20170192788A1 (en) * 2016-01-05 2017-07-06 Intel Corporation Binary translation support using processor instruction prefixes
US10761849B2 (en) * 2016-09-22 2020-09-01 Intel Corporation Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction
US10209764B2 (en) * 2016-12-20 2019-02-19 Intel Corporation Apparatus and method for improving power-performance using a software analysis routine

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110990086A (zh) * 2019-11-26 2020-04-10 华中科技大学 一种用于图像目标检测的协处理器调用方法和系统
CN110990086B (zh) * 2019-11-26 2021-07-02 华中科技大学 一种用于图像目标检测的协处理器调用方法和系统

Also Published As

Publication number Publication date
WO2013048468A1 (en) 2013-04-04
US9417855B2 (en) 2016-08-16
TWI610225B (zh) 2018-01-01
US10649746B2 (en) 2020-05-12
US20130283249A1 (en) 2013-10-24
TW201337744A (zh) 2013-09-16
US20160357528A1 (en) 2016-12-08

Similar Documents

Publication Publication Date Title
DE202012009380U1 (de) Befehl und Logik zum Durchführen einer dynamischen Binärübersetzung
DE102018005181B4 (de) Prozessor für einen konfigurierbaren, räumlichen beschleuniger mit leistungs-, richtigkeits- und energiereduktionsmerkmalen
DE102007045496B4 (de) Anweisung und Logik zum Bearbeiten von Textstrings
DE102014003795A1 (de) Verfahren und Vorrichtungen für Fusionsbefehle zur Bereitstellung der OR-Test- und AND-Test-Funktionalität auf mehreren Testquellen
DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
DE112013004867T5 (de) Befehl und Logik zum Bereitstellen von Push-Puffer-Kopier- und Speicher-Funktionalität
DE112013005416T5 (de) Verfahren, Vorrichtungen, Befehle und Logik zum Bereitstellen von Vektoradressenkonflikt-Detektionsfunktionalität
DE102018126650A1 (de) Einrichtung, verfahren und systeme für datenspeicherkonsistenz in einem konfigurierbaren räumlichen beschleuniger
DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
DE102014003563A1 (de) Fusionierbare befehle und logik zum versehen mit or-test- und and-test-funktionalität unter benutzen von mehrfachtestquellen
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE102013018238A1 (de) Anweisung und Logik zum Bereitstellen einer Vektorkompressions- und Rotationsfunktionalität
DE112011105664T5 (de) Instruktion und Logik zum Bereitstellen einer Vektorstreuungs-Op- und -Hol-Op-Funktionalität
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE102015002253A1 (de) Verfahren und Vorrichtung zum Ausführen mehrerer Multiplikationsoperationen
DE112016006028T5 (de) Inhaltsassoziative hardware-datenstruktur zur beschleunigung von mengenoperationen
DE112012006946T5 (de) Verfahren und Vorrichtung zur Planung von Speicherinstruktionen quer über atomare Bereiche bei der binären Übersetzung
DE102014003659A1 (de) Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters

Legal Events

Date Code Title Description
R207 Utility model specification

Effective date: 20130418

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right