-
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.