DE102014003540A1 - Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor - Google Patents

Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor Download PDF

Info

Publication number
DE102014003540A1
DE102014003540A1 DE102014003540.9A DE102014003540A DE102014003540A1 DE 102014003540 A1 DE102014003540 A1 DE 102014003540A1 DE 102014003540 A DE102014003540 A DE 102014003540A DE 102014003540 A1 DE102014003540 A1 DE 102014003540A1
Authority
DE
Germany
Prior art keywords
processor
code segment
binary translation
container
translation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102014003540.9A
Other languages
English (en)
Inventor
Koichi Yamada
Palanivel Rajan Shanmugavelayutham
Scott D. Rodgers
Barry E. Huntley
James D. Beaney
Boaz Tamir
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 DE102014003540A1 publication Critical patent/DE102014003540A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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
    • 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/44Arrangements for executing specific programs
    • 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/45533Hypervisors; Virtual machine monitors
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

In einer Ausführungsform umfasst ein Prozessor einen Binärübersetzungs(BT)-Container, welcher Code zum Erzeugen einer Binärübersetzung eines ersten Code-Segments und zum Speichern der Binärübersetzung in einem Übersetzungs-Cache-Speicher aufweist, eine Host-Einheits-Logik zum Verwalten des BT-Containers und zum Identifizieren des ersten Code-Segments und eine Schutzlogik zum Isolieren des BT-Containers von einem Software-Stapel. Auf diese Weise ist der BT-Container dafür konfiguriert, für den Software-Stapel transparent zu sein. Es werden andere Ausführungsformen beschrieben und beansprucht.

Description

  • Hintergrund
  • Moderne Mikroprozessoren sind das Herz der meisten Computersysteme. Im Allgemeinen arbeiten diese Prozessoren so, dass sie Befehle empfangen und in Reaktion auf die Befehle Operationen durchführen. Für Anwendungsprogramme und von Betriebssystem(OS)-Aktivitäten können Befehle in einem Prozessor empfangen werden, welcher dann diese Befehle in eine oder mehrere kleinere Operationen decodiert, die oft als Mikrobefehle (uops) bezeichnet werden und zur Ausführung auf der Prozessor-Hardware geeignet sind. Einigen Prozessoren fehlen Hardware-Merkmale zum Ausführen bestimmter Befehlssatzarchitektur(Instruction Set Architecture, ISA)-Befehle. Aus diesem Grund werden Befehle in uops decodiert, welche direkt auf der Hardware ausgeführt werden können. Ein Decodieren zu uops ermöglicht dem Prozessor, parallel und außerhalb der Reihenfolge zu planen, was dazu beiträgt, die Leistungsfähigkeit zu verbessern. Jedoch kann dieser Mechanismus in vielen Fällen unzureichend sein.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockschaubild eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 ist ein Blockschaubild eines co-designten Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
  • 3 ist ein Ablaufplan eines Verfahrens zum Durchführen von Binärübersetzungen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4 ist ein Ablaufplan eines Verfahrens zum Durchführen eines Transfers mit geringem Overhead auf übersetzten Code gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5 ist ein Blockschaubild einer Co-Design-Umgebung, welche einen Prozessor und einen Speicher umfasst, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 6 ist ein Blockschaubild eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Detaillierte Beschreibung
  • In verschiedenen Ausführungsformen wird ein Architekturrahmen eines co-designten Prozessors bereitgestellt, um Binärübersetzungs-Software vor einem Software-Stapel oberhalb der Firmware-Schicht versteckt zu halten. Dieser Software-Stapel umfasst einen Virtual-Machine-Monitor (VMM), ein Betriebssystem (OS) und Anwendungen, welche auf einem oder mehreren Kernen des Prozessors ablaufen. Auf diese Weise kann in Ausführungsformen eine Modifikation einer Schicht des Software-Stapels oberhalb der Firmware vermieden werden. So kann dieser Stapel von dynamischen Binäroptimierungs- und Befehlssatzarchitektur(ISA)-Emulationssystemen profitieren. Obwohl dieser Architekturrahmen bereitgestellt wird, um BT-Software transparent für VMM, OS und Anwendungen transparent auszuführen, kann es auch verwendet werden, um eine andere Art einer Software-Komponente eines co-designten Prozessors ablaufen zu lassen und einen anderen Verwendungstyp zu ermöglichen. Zum Beispiel kann dieser Rahmen verwendet werden, um eine beliebige Software (z. B. eine Virus-Scanner-Software) auszuführen, die in einer versteckten Umgebung (z. B. vor VMM/OS-Schichten versteckt) ablaufen muss. Diese versteckte Umgebung ist eine isolierte unabhängige und geschützte Ausführungsumgebung in Bezug auf VMM, OS und Anwendungen.
  • Ein Hardware/Software-co-designter Prozessor ermöglicht über eine Binärübersetzung dynamische Binäroptimierungen und übersetzungen durch versteckte Binärübersetzungs(Binary Translation, BT)-Software. Er kann in energieeffizienter Weise für eine verbesserte Leistungsfähigkeit sorgen und durch Binärübersetzung auch neue ISA-Erweiterungen ermöglichen. In einem co-designten Prozessor ist eine Standard-ISA zum Beispiel die x86-ISA, vorhanden, welche als eine Quellen-ISA bezeichnet wird. Herkömmliche Software, umfassend sowohl die OS- als auch die Anwendungsprogramme, wird auf die Quellen-ISA kompiliert. Im Gegenzug realisiert die Hardware eines co-designten Prozessors eine Ziel-ISA, welche speziell für eine gegebene Hardware-Realisierung designt ist, mit speziellen Leistungsfähigkeits- und/oder Energieeffizienzmerkmalen. Die Ziel-ISA befindet sich auf derselben Ebene wie uops und kann mit dem uops-Satz identisch sein.
  • Die Emulations-Software, welche zu dem co-designten Prozessor gehört, leitet die Ausführung von Anwendungs/OS-Quellen-ISA-Software entweder durch Interpretieren dieser oder durch direktes Übersetzen dieser in optimierte Sequenzen von Zielbefehlen. Eine solche Übersetzung verspricht Leistungsgewinne und/oder eine verbesserte Energieeffizienz.
  • Das Emulationsverfahren lauft typischerweise wie folgt ab. Für einen Code (Quellen-ISA-Befehle) wird eine Interpretation verwendet, wenn er zum ersten Mal angetroffen wird. Anschließend, wenn durch dynamisches Profiling oder irgendwelche anderen Mittel häufig ausgeführte Code-Bereiche (Hotspots) entdeckt werden, werden sie in die Ziel-ISA übersetzt. Eine Optimierung erfolgt oft als Teil des Übersetzungsverfahrens; Code, der sehr stark verwendet wird, kann später noch weiter optimiert werden. Die übersetzten Code-Bereiche werden in einem Übersetzungs-Cache-Speicher aufbewahrt, so dass sie wiederverwendet werden können. Der Übersetzungs-Cache-Speicher wird durch Emulations-Software verwaltet und wird in einem Speicherabschnitt aufbewahrt, der vor der gesamten Anwendungs/OS-Software versteckt ist. Die Anwendungs/OS-Software wird in einem herkömmlichen (sichtbaren) Speicher aufbewahrt.
  • In früheren Prozessor-Realisierungen, in welchen co-designte VMs verwendet werden, wird eine vollständige Emulation angewendet, wobei die Emulations-Software die gesamte Anwendungs/OS-Software emuliert. Ein Nachteil der vollständigen Emulation ist, dass der gesamte Code zuerst interpretiert und/oder übersetzt werden muss, bevor er ausgeführt werden kann, und dies kann zu einer niedrigen Leistungsfähigkeit führen, wenn ein Software-Bereich zum ersten Mal angetroffen wird.
  • In Ausführungsformen können sowohl Hardware- als auch Prozessor-Firmware-basierte Mechanismen angewendet werden, um eine isolierte und versteckte Virtual-Machine-Ausführungsumgebung zu erzeugen, die hierin als Binärübersetzungs(BT)-Container bezeichnet wird. Dieser Container kann verwendet werden, um BT-Software auszuführen, um eine Teilübersetzung oder ein vollständiges ISA-Emulationsmodell zu realisieren. In einer Ausführungsform ist der BT-Container im Wesentlichen eine spezielle (und in einigen Ausführungsformen eine vereinfachte) Version einer Virtual-Machine-Umgebung, die direkt von Prozessor-Firmware gesteuert wird. In verschiedenen Ausführungsformen ist der Container so ausgestaltet, dass er vor dem Software-Stapel, umfassend VMM, Betriebssystem und Anwendungen, versteckt und für diesen transparent ist.
  • Während des Betriebs interagiert der BT-Container mit einer Vielfalt von Komponenten und Mechanismen. Erstens umfasst ein Prozessor eine Host-Einheit, um den BT-Container zu verwalten. In anderen Ausführungsformen kann diese Einheit durch eine Kombination aus Prozessor-Hardware-Erweiterungen und Firmware (z. B. einer Mikrocode-Schicht oder einer Prozessor-Abstraktionsschicht) realisiert werden. Wie hierin beschrieben wird, steuert die Host-Einheit den Eingang in den BT-Container und die ISA, die auf die Software angewendet wird, die innerhalb des BT-Containers abläuft, und den Ausgang aus diesen heraus.
  • Die BT-Container-Umgebung umfasst den Prozessorzustand für BT-Software und besonderen Speicherraum, welcher Code und Daten für BT-Software enthält. Die BT-Software läuft innerhalb dieses BT-Containers ab und realisiert einen oder mehrere Binärübersetzungs-Algorithmen zum Durchführen von Optimierungen und ISA-Kompatibilitäts-Operationen.
  • In verschiedenen Ausführungsformen können Hardware-basierte Schutzmechanismen bereitgestellt werden, welche verwendet werden, um den BT-Container-Speicher vor Software(VMM, OS und Anwendungen)- und Hardware-Angreifern zu schützen. In einer Ausführungsform kann dieser Schutzmechanismus mit Speicherbereichsregister-basiertem Schutz, Speicherverschlüsselungs-Hardware usw. realisiert werden. In verschiedenen Realisierungen kann das Schutzniveau auf den verwendeten Merkmalen und den gewünschten Sicherheitszielen basieren.
  • Eine BT-Hardware-Einheit wird bereitgestellt, um eine Hardware-Unterstützung für den co-designten Prozessor zu realisieren. In einer Ausführungsform umfasst diese Einheit eine Hardware-Unterstützung zum Erfassen von Ereignissen zum Aufrufen des BT-Containers, z. B. Hotspot-Erfassen, Erfassen von selbstmodifizierendem Code, neben anderen Ereignissen, z. B. Inter-Prozessor-Unterbrechungs(Inter-Processor Interrupt, IPI)-Ereignissen, Energieverwaltungsereignissen, Zuverlässigkeits-Verfügbarkeits-Benutzerfreundlichkeits(Reliability, Availability, Serviceability, RAS)-Ereignissen, neben anderen. Allgemeiner können diese Ereignisse unmittelbare Beachtung durch BT-Software erfahren. Zum Beispiel kann ein Ereignis ein besonderer IPI-Mechanismus sein, der dafür definiert ist, BT-Software zu synchronisieren, die auf mehreren Prozessoren abläuft.
  • Um Steuerungstransfers in den/aus dem BT-Container und verschiedene Operationen innerhalb des Containers zu ermöglichen, können BT-ISA-Erweiterungen bereitgestellt werden. In einer Ausführungsform können diese ISA-Erweiterungen exklusiv für BT-Software verfügbar sein, die innerhalb des BT-Containers abläuft. Beispielsweise ermöglichen diese ISA-Erweiterungen, dass BT-Software auf die BT-Hardware-Einheit zugreift und diese programmiert, mit der Host-Einheit kommuniziert, um die Container-Richtlinien zu konfigurieren und auf den Original-Code-Speicherraum für eine Binärübersetzung zuzugreifen.
  • In einer Ausführungsform kann ein Übersetzungs-Cache-Speicher bereitgestellt werden, um übersetzten Code zu speichern. Der Übergang zu der Ausführung des übersetzten Codes wird in einer Ausführungsform durch den Übersetzungseingangsmechanismus gesteuert, der von der BT-Hardware-Einheit bereitgestellt wird. Die BT-Container-Umgebung, umfassend ihren besonderen Prozessorzustand und besonderen Speicherraum, kann isoliert und vor anderer Software (VMM, Betriebssystem und Anwendungen) versteckt sein.
  • Die BT-Container-Ressourcen können während des Systemstarts von der Host-Einheit zugeordnet und erzeugt werden. An diesem Punkt können die Hardware-Schutzmechanismen programmiert und von der Host-Einheit verwaltet werden.
  • Um für OS und VMM transparent zu sein, werden der Aufruf und der Programmausstieg der BT-Software im BT-Container direkt von der Host-Einheit gesteuert. In einer Ausführungsform werden die Aufruf- und Programmausstiegs-Operationen mit einer Kombination aus Hardware und Mikrocode realisiert. In einer anderen Ausführungsform kann Prozessor-Firmware verwendet werden, um diese Operationen durchzuführen.
  • Als eine Steuerungstransferoperation stoppt der Prozessor, wenn die BT-Hardware-Einheit ein BT-Aufrufereignis, z. B. einen Hotspot, erfasst, die Ausführung des Gast-Software-Stapels und benachrichtigt die Host-Einheit über das Ereignis. Dann speichert die Host-Einheit den aktuellen Zustand des Prozessor-Kontexts in einem temporären Zustandsspeicherbereich, schaltet auf den BT-Container-Kontext um (welcher in einem BT-Zustandsspeicher innerhalb des BT-Containers gespeichert sein kann) und beginnt die Ausführung der BT-Software von einem definierten Einstiegs-Befehlszeiger (Instruction Pointer, IP). Sobald die BT-Software die Kontrolle erlangt, wird sie ausgeführt, bis mit einem speziellen Programmausstiegsbefehl (welcher eine BT-ISA-Erweiterung sein kann, die auf den BT-Container angewendet wird) ein freiwilliger Programmausstieg erfolgt oder nach bestimmten Hardware-Ereignissen, z. B. externen Unterbrechungen, internen Unterbrechungen durch die zeitliche Ablaufsteuerung usw., von der Host-Einheit ein unfreiwilliger Programmausstieg erzwungen wird. Solche internen Unterbrechungen durch die zeitliche Ablaufsteuerung sind im Wesentlichen Zeitablaufereignisse, welche vor der VMM und dem OS versteckt sind, um der BT-Software zu ermöglichen, die Operation mit langer Latenzzeit zeitlich zu untergliedern.
  • Eine Transparenz kann auch durch gutes Steuern und Verwalten der Latenzzeit der BT-Software erreicht werden, auf den Software-Stapel angewendet wird, so dass sie Weiterleitungs-Fortschrittsanforderungen dieses Stapels erfüllt. Wenn zum Beispiel BT-Software bis zu 1 Millisekunde (1 ms) benötigt, um eine Übersetzungsaufgabe für den identifizierten Hotspot abzuschließen, kann die Host-Einheit Mechanismen für die BT-Software zum Treffen von Gegenmaßnahmen und Steuern der Latenzzeit bereitstellen, die auf die Software angewendet werden. In einer Ausführungsform umfassen diese Mechanismen: 1) Bevorrechtigung der BT-Software (unfreiwillige Programmausstiege) nach externen Unterbrechungen, um die Latenzzeit zu minimieren, die auf das OS-Unterbrechungs-Handhabungsprogramm angewendet wird; 2) Verwenden einer oder mehrerer interner zeitlicher Ablaufsteuerungen, um eine Zeitmengenverwaltung (Zeitschlitzplanung) für BT-Software zu ermöglichen, um minimale Weiterleitungs-Fortschrittsanforderungen der zugrunde liegenden Programmausführung zu erfüllen; und 3) Zuordnen einer BT-Aufgabe langer Dauer einem oder mehreren unbelegten Kernen, um die BT-Software-Latenzzeit zu verstecken. Diese Mechanismen werden entweder von der Host-Einheit vorkonfiguriert oder durch BT-ISA-Erweiterungen, die auf die BT-Software angewendet werden, dynamisch konfiguriert.
  • Dass auf einem isolierten Container BT-Software abläuft, ermöglicht ebenfalls, dass die Host-Einheit ISA-Merkmale, die auf den BT-Container angewendet werden, sowie Privilegien wie Speicher- und Prozessor-Ressourcen-Zugriffsrechte steuert, die der BT-Software gewährt werden, die innerhalb des BT-Containers abläuft. Zum Beispiel kann die Host-Einheit die ISA-Merkmale begrenzen und steuern, die auf die BT-Software angewendet werden, wenn eine Untergruppe von ISA-Merkmalen (z. B. Nicht-Gleitkomma-ISA-Befehle) ausreicht, um eine gegebene Binärübersetzungsaufgabe auszuführen. Eine solche Steuerung kann zur Vereinfachung der Container-Umgebung und zur Verringerung der Kontext-Umschaltzeit zwischen der ursprünglichen und der BT-Container-Ausführung beitragen.
  • Anders als bei einem Überwachungsmodus, der bereitgestellt wird, um einen Hypervisor oder eine VMM ablaufen zu lassen, werden dem BT-Container minimale Privilegien und eine minimale zum Arbeiten geeignete Priorität gewährt, wodurch das Sicherheitsrisiko und die Systemauswirkungen, z. B. Latenzzeit-Anwendungen auf das Betriebssystem, deutlich verringert werden, sogar wenn ein Teil der ISA-Merkmale durch die BT-Software realisiert wird. In einer Ausführungsform kann die Host-Einheit ISA-Merkmale und Privilegien der BT-Software, z. B. System-ISA-Merkmale, und die Zeit, die für die BT-Ausführung aufgewendet wird, begrenzen und steuern, wobei der BT-Container darauf beschränkt wird, nur auf die Informationen, Ressourcen, Befehle und Zeitmenge zuzugreifen, die benötigt werden, um für seine legitimen Zwecke zu arbeiten.
  • Zum Beispiel kann die BT-Software nur mit Benutzerebenen(z. B. Ring-3)-ISA-Zugriff ausgeführt werden, wenn dies ausreicht, um die Binärübersetzungsaufgabe durchzuführen. Eine Ausführung mit einem solchen Zugriff kann angemessen sein, wenn die in einem Teilübersetzungsmodell durchzuführende Emulation Benutzerebenen-Anwendungs-Zwecken dient. Ferner können Speicherverweise nach außerhalb des BT-Container-Speichers auf lediglich Befehlsseiten von Anwendungs-Software beschränkt werden. Auch wird der BT-Software nur eine Leseberechtigung gewährt, wenn diese Berechtigung für die BT-Software ausreichend ist, um eine Binärübersetzungsaufgabe durchzuführen. Ein Gastprozessorzustands-Zugriff durch die BT-Software kann auf eine Untergruppe der Gastprozessorzustände beschränkt werden, die für die Binärübersetzungsaufgabe ausreichend ist. Anders ausgedrückt, ist nur der Gastzustand, der für die Übersetzung erforderlich ist, für die BT-Software verfügbar, so dass es keinen Zugriff auf Prozessor-Ressourcen gibt, die von der BT-Software nicht verwendet werden. In einer Ausführungsform kann die Host-Einheit auch verhindern, dass die BT-Software auf den Gastkernspeicher (z. B. Ring-0-Speicher) zugreift, wenn eine Binärübersetzung lediglich für Anwendungs-Software-Code (nämlich Benutzer-Software-Code) durchgeführt wird. Diese Steuerung ermöglicht, dass die BT-Software mit so wenig Privilegien wie möglich und Merkmalen abläuft, die ausreichend sind, um zu arbeiten, was zu einer erhöhten Robustheit und zu einem verringerten Sicherheitsrisiko eines HW/SW-co-designten Prozessors mit einem einfacheren Bereich von Systemauswirkungen, Veränderungen und Testanforderungen beitragen kann und eine bessere Systemsicherheit ermöglicht.
  • Unter Anwendung einer Ausführungsform der vorliegenden Erfindung kann ein Teilübersetzungsmodell auf einem oder mehreren Kernen eines Prozessors realisiert werden. Auf diese Weise kann eine ISA virtualisiert werden, um eine Anzahl von BT-Anwendungen zu ermöglichen und eine höhere Leistungsfähigkeit je Watt zu liefern. Ein solches Beispiel ist die Anwendung des BT-Mechanismus zum Durchführen von vektorbreiten Operationen in einem Vektorkern, der einen Code aufweist, der für Hardware ohne Vektorbreite oder Hardware geringerer Vektorbreite geschrieben ist. Auf diese Weise kann ein BT-Mechanismus Software übersetzen, um Register breiterer Vektoren zu verwenden, obwohl die Original-Software für eine Verwendung an Registern schmalerer Vektoren einer früheren Generation oder Nicht-Vektor-Registern geschrieben ist. In einem speziellen Beispiel wird Software, bei der Streaming-SIMD-Extensions(SSE)-Befehle einer Intel®-ISA verwendet werden, übersetzt, um stattdessen Intel®-ISA-Advanced-Vector-Extension(AVX)-Befehle zu benutzen. Ferner kann eine ISA-Kompatibilität mit einer kleineren Kerngröße realisiert werden, indem durch die hierin beschriebenen BT-Mechanismen ISA-Merkmalserweiterungen bereitgestellt werden, anstatt weitere dedizierte Hardware zum Durchführen des Merkmals einzubeziehen. Zum Beispiel weist ein kleinerer Kern möglicherweise keine AVX-Unterstützung und nur SSE-Unterstützung auf. Durch BT kann Software, welche AVX-Befehle verwendet, so übersetzt werden, dass sie stattdessen SSE-Befehle verwendet. Hierdurch wird eine ISA-Kompatibilität bereitgestellt und die ISA-Lücke des kleineren Kerns gefüllt.
  • Obwohl dieser HW- und SW-co-designte Rahmen für BT verwendet werden kann, wie hierin beschrieben, kann er verwendet werden, um andere Verwendungsmodelle zu ermöglichen, um Prozessormerkmale und -werte wie z. B. Leistungsfähigkeit, Energiemanagement und ISA-Erweiterungen/Emulationen ohne Veränderungen eines existierenden OS/einer existierenden VMM zu verbessern.
  • Man beachte, dass in einigen Ausführungsformen Plattform-Firmware-Komponenten wie z. B. System-Management-Mode (SMM) innerhalb der vertrauenswürdigen Grenzen des BT-Containers und der BT-Software angeordnet sein können, um mit Server-Zuverlässigkeits/Verfügbarkeits/Benutzerfreundlichkeits(RAS)-Merkmalen zu coexistieren. In anderen Ausrnhrungsformen können solche Komponenten jedoch mit den bestimmten HW-Erweiterungen, z. B. HW-basierte Speicherverschlüsselung und Integritätsprüfung, außerhalb der vertrauenswürdigen Grenzen angeordnet sein, um die Elastizität für SMM-Code und Hardware-Angriffe gegen die Software-Komponenten des HW- und SW-co-designten Prozessors zu verbessern.
  • Bezug nehmend nun auf 1, ist dort ein Blockschaubild eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 1 dargestellt, umfasst der Teil des Systems 100 einen co-designten Prozessor 110 und seine Wechselwirkung mit einem Software-Stapel 190. Obwohl viele verschiedene Typen von Prozessor-Designs als Grundlage für den co-designten Prozessor verwendet werden können, kann der Prozessor 110 in einer Ausführungsform ein Mehrkernprozessor sein, welcher mehrere Prozessorkerne umfasst, welche eine Gruppe von homogenen Kernen oder eine Zusammenstellung heterogener Kerne, z. B. ein oder mehrere Kerne niedriger Energie und ein oder mehrere Kerne höherer Energie, sein können. Außerdem versteht es sich, dass weitere Verarbeitungseinheiten vorhanden sein können, z. B. Graphikprozessoren und andere spezialisierte Verarbeitungseinheiten. In einer Ausführungsform kann der Prozessor 110 für einen speziellen Typ einer ISA, z. B. eine Intel®-64-ISA, konfiguriert sein. Natürlich können stattdessen andere Prozessor-ISAs, z. B. eine andere Intel-ISA, z. B. eine Intel®-62-ISA, oder ein anderer ISA-Typ, z. B. eine ISA auf ARM-Basis, vorhanden sein. Oder ein Prozessor kann mit mehreren ISAs konfiguriert sein.
  • In der Ausführungsform, die in 1 dargestellt ist, können in der Prozessor-Hardware 120 allgemein die verschiedenen Kerne und andere Ausführungslogik vorhanden sein. Zu Zwecken der Durchführung von Binärübersetzungen gemäß einer Ausführungsform der vorliegenden Erfindung umfasst die Hardware 120 eine Host-Einheits-Logik 122, eine Schutzlogik 124 und eine BT-Hardware-Einheit 126. In verschiedenen Ausführungsformen können diese verschiedenen Logikeinheiten als Zusammenstellungen von Hardware- und/oder Prozessor-Firmware-Erweiterungen, z. B. Prozessor-Mikrocode, der dafür konfiguriert ist, auf einer programmierbaren Logik ausgeführt zu werden, gebildet werden.
  • Im Allgemeinen kann die Host-Einheits-Logik 122 eine Steuerungslogik zum Verwalten des BT-Containers auf eine Weise umfassen, die für den Software-Stapel 190 transparent ist. Die Schutzlogik 124 kann im Gegenzug einen Schutzmechanismus auf Registerbasis umfassen, z. B. ein Bereichsregister, in welchem ein Bereichswert, z. B. ein erster Wert und ein zweiter Wert, gespeichert ist, um einen Speicherbereich anzuzeigen, welcher für den BT-Container und die Software darin dediziert ist, welche somit so gesteuert wird, dass sie vor dem Software-Stapel versteckt bleibt. In anderen Ausführungsformen können innerhalb dieser Schutzlogik mehrere Register vorhanden sein, umfassend ein Basisregister zum Speichern eines Basiswerts, der einem Beginn des geschützten Bereichs für den BT-Container entspricht, und eines Endwerts zum Anzeigen des Endwerts des geschützten Bereichs. In einer Ausführungsform kann die BT-Hardware-Einheit 126 eine Steuerungslogik zum Ermöglichen von Steuerungs-Transfers zwischen der Ausführung von ursprünglichem Code und einer Binärübersetzungsausführung innerhalb eines BT-Containers 130 umfassen. In einer solchen Ausführungsform kann die Steuerungslogik eine oder mehrere Umsetzungstabellen, welche mehrere Einträge umfassen, die jeweils ein ursprüngliches Code-Segment und eine entsprechende Binärübersetzung in Beziehung setzen, umfassen oder mit diesen verbunden sein. Zum Beispiel kann jeder Eintrag einen Eintragspunkt für ein ursprüngliches Code-Segment und einen entsprechenden Eintragspunkt für eine Binärübersetzung umfassen, die in einem Übersetzungs-Cache-Speicher 140 gespeichert ist.
  • Wie in 1 weiter zu sehen ist, tritt die Prozessor-Hardware 120 mit einem BT-Container 130 in Wechselwirkung. Dieser Container ist eine isolierte und versteckte Virtual-Machine-Ausführungsumgebung, welche somit für den Software-Stapel 190 transparent ist. Diese versteckte Umgebung kann unter Verwendung von Prozessor-Firmware und/oder Mikrocode durch die Hardware 120 in einer Weise gesteuert werden, die für den Software-Stapel 190 transparent ist. In der dargestellten Ausführungsform umfasst der Container 130 einen Zustandsspeicher 132 und einen besonderen Speicher 134. In Allgemeinen kann der Zustandsspeicher 132 einen Prozessorzustand zur Verwendung während BT-Operationen speichern. Insbesondere kann dieser Zustandsspeicher eine Kopie aller Prozessorzustandsinformationen speichern, umfassend den Status und Konfigurationsregister, allgemeine Register usw. In einigen Ausführungsformen kann dieser Zustandsspeicher im Mehrpfadbetrieb arbeiten. Außerdem umfasst der BT-Container 130 einen besonderen Speicher 134, in welchem die BT-Software gespeichert sein kann. In einigen Ausführungsformen kann dieser besondere Speicher eine mehrstufige Hierarchie aufweisen, umfassend eine temporäre Speicherung in einer oder mehreren Stufen eines Cache-Speichers des Prozessors und eine Speicherung in einem Systemspeicher.
  • Im Allgemeinen kann die BT-Software verschiedene Komponenten umfassen, von denen einige in 1 dargestellt sind. Speziell kann die BT-Software einen Transistor 135 umfassen, welcher verwendet wird, um Binärübersetzungen durchzuführen, um Optimierungen und/oder eine Emulation verschiedener ISA-Erweiterungen zu ermöglichen. Außerdem wird während der Laufzeit eine Laufzeitschicht 136 verwendet, um übersetzten Code auszuführen. Ferner kann eine Systemschicht 138 dafür konfiguriert sein, als eine Schnittstelle zwischen dem BT-Container 130 und der zugrunde liegenden Prozessor-Hardware 120 zu fungieren.
  • Binärübersetzungen, die von der BT-Software erzeugt werden, werden in einem Übersetzungs-Cache-Speicher 140 gespeichert. In verschiedenen Ausführungsformen können die BT-Hardware-Einheit 126 und/oder BT-Software dafür konfiguriert sein, das Vorliegen einer entsprechenden Binärübersetzung für ursprünglichen Code zu identifizieren, der auszuführen ist, und somit eine geeignete Konfigurierung des Prozessors für eine Ausführung der Binärübersetzung unter Verwendung des Prozessorzustands zu bewirken, der aus dem Zustandsspeicher 132 in dem BT-Container 130 erhalten wird.
  • Weiter Bezug nehmend auf 1, ist der Software-Stapel 190 vorhanden und wird auf dem Prozessor 110 ausgeführt. Im Allgemeinen umfasst der Software-Stapel 190 eine VMM-Schicht 192, eine OS-Schicht 194 und eine Anwendungsschicht 195. In dem Beispiel, das in 1 dargestellt ist, können mehrere Anwendungen 196a bis 196n in der Anwendungsschicht 195 vorhanden sein. Im Allgemeinen können diese Anwendungen Benutzerebenen-Anwendungen sein, welche verwendet werden, um Aufgaben durchzuführen, die von einem Benutzer angefordert werden.
  • Im Allgemeinen kann die unterschiedliche Software des Software-Stapels 190 ursprünglich auf dem Prozessor 120 ausgeführt werden. Jedoch können zumindest bestimmte Teile des Codes, z. B. Hot Code oder anderer Code, z. B. Code, der Befehle umfasst, die von der ursprünglichen ISA des Prozessors 110 nicht unterstützt werden, von einer Binärübersetzung profitieren. Ein solcher Code kann zum Beispiel über die Host-Einheits-Logik 122 erfasst werden, welche im Gegenzug auslösen kann, dass der BT-Container 130 eine Binärübersetzung durchführt und dieselbe im Übersetzungs-Cache-Speicher 140 installiert. Wenn daher ein Eintragspunkt für einen ursprünglichen Code-Teil aufgefunden wird, der übersetzt worden ist, kann zumindest ein Teil der Prozessor-Hardware 120 (z. B. ein einzelner Kern, Ausführung eines Kerns usw.) dafür konfiguriert sein, unter Verwendung eines Prozessorzustands, der in dem Zustandsspeicher 132 vorhanden ist, die Ausführung des übersetzten Codes im Übersetzungs-Cache-Speicher 140 zu ermöglichen. Obwohl er in der Ausführungsform der 1 auf diesem hohen Niveau dargestellt ist, versteht es sich, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Nun Bezug nehmend auf 2, ist dort ein Blockschaubild eines co-designten Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 2 dargestellt, ist der Prozessor 200 ein Mehrkernprozessor. Insbesondere kann der Prozessor 200 ein asymmetrischer Multiprozessor sein, welcher verschiedene Typen von Verarbeitungseinheiten umfasst. In der Ausführungsform, die in 2 dargestellt ist, umfasst der Prozessor 200 eine erste Vielzahl von Kernen 2100 bis 210n (allgemein Kernen 210), welche als große Kerne konfiguriert sein können. Mit „große Kerne” ist gemeint, dass diese Kerne dafür konfiguriert sein können, eine gegebene ISA vollständig zu unterstützen. Zum Beispiel können diese Kerne eine gegebene Intel®-ISA unterstützen, welche eine Vektorunterstützung umfasst, z. B. für Advanced-Vector-Extensions(AVX)-Befehle. Somit kann der Datenpfad einer oder mehrerer der Ausführungseinheiten innerhalb der großen Kerne eine gegebene Vektorbreite aufweisen, z. B. 128 Bits, 256 Bits, 512 Bits oder eine andere Vektorbreite. Bei diesem Datenpfad relativ hoher Vektorbreite ist es möglich, dass die großen Kerne während der Ausführung eine relativ hohe Energiemenge verbrauchen, zumindest während der Ausführung von Vektorbefehlen.
  • Obwohl viele Anwendungen solche Vektorbefehle nutzen, können andere Typen von Anwendungen diese Befehle nicht verwenden und können somit nicht von dem höheren Energieverbrauch großer Kerne 210 profitieren. Zu diesem Zweck umfasst der Prozessor 200 ferner eine Vielzahl von kleinen Kernen 2120 bis 212n (allgemein Kernen 212). Der Begriff „kleine Kerne” bedeutet, dass diese Kerne, welche ein gegenüber den großen Kernen heterogenes Design aufweisen können, einen niedrigeren Energieverbrauch aufweisen können. Zum Beispiel können diese kleinen Kerne eine andere ISA oder nur eine Untergruppe der ISA der großen Kerne unterstützen. Zum Beispiel stellen die kleinen Kerne 212 möglicherweise keine Unterstützung für Vektorbefehle, z. B. AVX-Befehle, bereit. Auf diese Weise kann der Datenpfad einer oder mehrerer Ausführungseinheiten der kleinen Kerne eine geringere Breite aufweisen als der Datenpfad von Ausführungseinheiten der großen Kerne 210.
  • Zusätzlich zu den verschiedenen Typen von Kernen können in dem Prozessor 200 weitere Verarbeitungseinheiten vorhanden sein. In der Ausführungsform, die in 2 dargestellt ist, können mehrere Graphikmaschinen 2140 bis 214n bereitgestellt werden. Diese Graphikmaschinen können Graphikverarbeitungseinheiten (Graphics Processing Units, GPUs) sein, welche verwendet werden können, um eine Graphikverarbeitung durchzuführen. Es versteht sich jedoch, dass auf diesen Graphikmaschinen auch eine weitere/andere Verarbeitung durchgeführt werden kann. Zum Beispiel können allgemeine Befehle in einem Modell einer allgemeinen Graphikverarbeitungseinheit (General Purpose GPU, GPGPU) ausgeführt werden. In dem Prozessor 200 können noch weitere Verarbeitungseinheiten vorhanden sein (in 2 zur Vereinfachung der Darstellung nicht dargestellt).
  • Weiter Bezug nehmend auf 2, sind verschiedene Kerne und andere Verarbeitungseinheiten mit einem gemeinsamen Cache-Speicher 215 verbunden, welcher in einer Ausführungsform ein Cache-Speicher letzter Ebene (Last Level Cache, LLC) sein kann. In einigen Ausführungsformen kann dieser Cache-Speicher ein verteilter Cache-Speicher sein, wobei zu jedem der Kerne/jeder der Graphikmaschinen ein oder mehrere Speicheradressbereiche gehören.
  • Um dynamische Binäroperationen zu bewirken, umfasst der Prozessor 200 ferner verschiedene Hardware zum Steuern und Durchführen von Binärübersetzungen. In der Ausführungsform, die in 2 dargestellt ist, umfasst der Prozessor 200 eine Binärübersetzungs-Steuerungslogik 220, welche mit einem Binärübersetzungs-Container 225 verbunden ist. Im Gegenzug ist der Binärübersetzungs-Container 225 mit einem Übersetzungs-Cache-Speicher 228 verbunden.
  • Im Allgemeinen kann die BT-Steuerungslogik 220 dafür konfiguriert sein, einen Aufruf in und einen Ausstieg aus BT-Software, die innerhalb des BT-Containers 225 ausgeführt wird, direkt zu steuern. Zum Beispiel kann die BT-Steuerungslogik 220 dafür konfiguriert sein, Code-Segmente zu identifizieren, für welche eine Binärübersetzung geeignet ist, z. B., um Optimierungen oder andere Emulationsmerkmale zu nutzen. Somit kann die BT-Steuerungslogik 220 der BT-Software im BT-Container 225 befehlen, eine Binärübersetzung für ein gegebenes Code-Segment zu erzeugen und zu bewirken, dass die BT-Software die resultierende Binärübersetzung im Übersetzungs-Cache-Speicher 228 speichert. Außerdem kann die BT-Steuerungslogik 220 eine Steuerungslogik (oder andere Prozessorlogik) programmieren, einen Steuerungstransfer auf eine Binärübersetzung zu ermöglichen, wenn ein Eintragspunkt für ein Code-Segment aufgefunden wird, für welches eine Binärübersetzung verfügbar ist. In einer Ausführungsform kann dieses Programmieren das Schreiben eines Eintrags in eine Umsetzungstabelle umfassen, welche ursprüngliche Code-Segmente und bearbeitete Code-Segmente in Beziehung setzt.
  • Dynamische Binärübersetzungen können für verschiedene Situationen durchgeführt werden, z. B. für Code-Optimierungen und ISA-Emulation. Eine spezielle Situation dient der Ausführung von Code, welcher einen oder mehrere Befehle aufweist, die ein Kern nicht unterstützt. Zum Beispiel bieten kleine Kerne 212, wie in einer Ausführungsform oben erörtert, möglicherweise keine Unterstützung für Vektorbefehle. Es kann jedoch, wenn eine begrenzte Anzahl von Vektorbefehlen in einem Code-Segment auftritt, aufgrund der Energieverbrauchsvorteile des kleinen Kerns im Vergleich zu dem großen Kern wünschenswert sein, dass dieses Code-Segment auf einem kleinen Kern ausgeführt wird. Somit kann die BT-Steuerungslogik 220 bewirken, dass die BT-Software eine Binärübersetzung eines Code-Segments erzeugt, welches z. B. eine geringe Anzahl an Vektorbefehlen aufweist, um eine Emulation dieser Vektorbefehle für eine Ausführung auf einem gegebenen kleinen Kern 212 zu ermöglichen.
  • Weiter Bezug nehmend auf 2, umfasst ein Prozessor 200 ferner weitere Schaltungen, z. B. eine Systemagentschaltung 230, welche Gesamtüberwachungsfunktionen bereitstellen kann, z. B. eine Energiesteuerung für den Prozessor über eine Energiesteuerungseinheit (Power Control Unit, PCU) 232. Außerdem stellt eine integrierte Speichersteuerung 234 eine Schnittstelle zu einem Systemspeicher, z. B. einem dynamischen Direktzugriffsspeicher (DRAM), bereit. Der Systemagent 230 kann auch eine oder mehrere Schnittstellen 236 umfassen, um eine Wechselwirkung mit anderen Agenten eines Systems, z. B. anderen Prozessoren eines Mehrprozessorsystems, einer peripheren Steuerung und anderen Systemkomponenten, zu ermöglichen. Obwohl er in der Ausführungsform der 2 auf diesem hohen Niveau dargestellt ist, versteht es sich, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Nun Bezug nehmend auf 3, ist dort ein Ablaufplan eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Im Allgemeinen kann das Verfahren 300 der 3 durch eine Kombination verschiedener Logik eines Prozessors durchgeführt werden, um übersetzten Code zu erzeugen und den Prozessor dafür zu konfigurieren, einen Steuerungstransfer auf diesen übersetzten Code zu ermöglichen, wenn während der Ausführung ein entsprechender ursprünglicher Code aufgerufen wird, für welchen der binärübersetzte Code erzeugt worden ist.
  • In 3 beginnt das Verfahren 300 mit dem Profiling der Code-Ausführung, um ein oder mehrere kritische Code-Segmente zu identifizieren (Block 310). In den hierin beschriebenen Beispielen kann dieses Profiling von Code durchgeführt werden, um Hotspot-Code, selbstmodifizierenden Code, zu emulierenden Code (z. B. für ISA-Befehle, die von einem gegebenen Kern, auf welchem er ausgeführt werden kann, nicht unterstützt werden) usw. zu identifizieren.
  • Weiter Bezug nehmend auf 3, können, nachdem die Ausführung voran schreitet und das Profiling durchgeführt ist, einem Binärübersetzungsagenten Informationen hinsichtlich eines identifizierten Code-Segments (z. B. eines Hotspot-Codes, eines selbstmodifizierenden Codes oder zu emulierender Codes) bereitgestellt werden (Block 320). Als ein Beispiel kann dieser Binärübersetzungsagent eine Binärübersetzungsmaschine sein, wie hierin beschrieben. Die Steuerung geht als Nächstes zum Block 330 über, wo aus dem Code-Segment ein bearbeitetes Code-Segment erzeugt werden kann und in einem Bearbeitungs-Cache-Speicher gespeichert werden kann. Als ein Beispiel kann dieses Erzeugen von bearbeitetem Code eine oder mehrere Emulationsroutinen umfassen, um einen oder mehrere Befehle zu emulieren, welche von einem gegebenen Kern oder einer anderen Verarbeitungseinheit des Prozessors nicht unterstützt werden. Auf diese Weise stellt der bearbeitete Code eine Emulationsfunktion bereit, um zu ermöglichen, dass emulierter Code zu niedrigeren Kosten ausgeführt wird (z. B. auf einem Kern mit niedrigerem Energieverbrauch). In einer Ausführungsform kann eine zeitliche Überprüfung vorgenommen werden, um Weiterleitungs-Fortschrittserwartungen des OS und von Anwendungs-Code während der Erzeugung der Übersetzung sicherzustellen. Wenn solch ein Ereignis auftritt, geht die Steuerung zurück zu der Ausführung des ursprünglichen Codes. Das nächste Hotspot-Ereignis bringt den Prozessor zurück zu der Aufgabe der Erzeugung der Übersetzung.
  • Weiter Bezug nehmend auf 3, gelangt die Steuerung als Nächstes zum Block 340, wo eine Steuerungslogik des Prozessors programmiert werden kann, auf dieses bearbeitete Code-Segment zu zeigen. Das heißt, eine Steuerungslogik, z. B. einer BT-Hardware-Einheit, kann eine oder mehrere Umsetzungstabellen umfassen, die mit einem Eintrag zum Identifizieren einer Entsprechung zwischen dem ursprünglichen Code-Segment (nämlich dem identifizierten kritischen Code-Segment) und dem bearbeiteten Code-Segment, welches statt des ursprünglichen Code-Segments auszuführen ist, zu aktualisieren sind. Durch diese Programmierung kann somit ermöglicht werden, dass die Logik einen Transfer oder eine Steuerung der Ausführung von ursprünglichem Code auf bearbeiteten Code durchführt, wenn ein Eintragspunkt für den nun übersetzten ursprünglichen Code aufgefunden wird. Obwohl er in der Ausführungsform der 3 auf diesem hohen Niveau dargestellt ist, versteht es sich, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Nun Bezug nehmend auf 4, ist dort ein Ablaufplan eines Verfahrens zur Durchführung eines Transfers auf übersetzten Code mit niedrigem Overhead gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Das Verfahren 400 der 4 kann durch verschiedene Logik eines Prozessors durchgeführt werden, umfassend eine BT-Steuerungslogik und eine andere Prozessorlogik. Wie zu sehen ist, kann das Verfahren 400 bei der Raute 410 durch Bestimmen beginnen, ob ein Eintragspunkt für ein erstes Code-Segment aufgefunden worden ist. In einer Ausführungsform kann dieser Eintragspunkt ein Aufruf eines ersten Befehls eines Code-Segments sein, für welches eine Binärübersetzung bewirkt worden ist. Wenn kein solcher Aufruf empfangen wird, kann im Block 420 die typische Code-Ausführung fortgesetzt werden. Anderenfalls, wenn ein Aufruf eines solchen Codes empfangen wird, gelangt die Steuerung zum Block 430, wo der Steuerungslogik ermöglicht wird, die Steuerung auf ein bearbeitetes Code-Segment zu übertragen. In einer Ausführungsform kann diese Ermöglichung des Steuerungstransfers durch Zugriff auf eine Umsetzungstabelle bewirkt werden, welche einen Eintragspunkt eines ursprünglichen Code-Segments mit einem Eintragspunkt eines übersetzten Code-Segments in Verbindung bringt.
  • Um die Ausführung der Binärübersetzung zu ermöglichen, gelangt die Steuerung zum Block 440, wo ein Austausch zwischen einem ursprünglichen Kontext, der in dem Prozessor gespeichert ist, und einem Binärübersetzungskontext stattfindet. In einer Ausführungsform kann der Austausch das Abspeichern eines Zustands des Prozessors in einem Prozessorzustandsspeicher und das Laden eines BT-Prozessorzustands aus einem BT-Zustandsspeicher innerhalb des BT-Containers in verschiedene Register des Prozessors umfassen, umfassend Konfigurations- und Statusregister, allgemeine Register usw. Die Steuerung gelangt als Nächstes zum Block 450, wo das bearbeitete Code-Segment ausgeführt werden kann, um ein nicht unterstütztes Merkmal zu emulieren.
  • Es ist möglich, dass während der Ausführung eine Ablaufunterbrechung oder externe Unterbrechung auftreten kann, wie in der Raute 460 bestimmt. Wenn kein solches Ereignis auftritt, kann das bearbeitete Code-Segment die Ausführung beenden (im Block 480). Und dementsprechend kann im Block 420 die Ausführung des ursprünglichen Codes fortgesetzt werden.
  • Anderenfalls, wenn ein solches Ereignis auftritt, gelangt die Steuerung zum Block 470. Im Block 470 kann eine weitere Kontextumschaltung erfolgen, um zu ermöglichen, dass wieder der ursprüngliche Zustand in den Prozessor geladen wird. Anschließend gelangt die Steuerung zum Block 480, wo ursprünglicher Code ausgeführt werden kann, um die Unterbrechung oder Ablaufunterbrechung zu handhaben. Dann, wenn für die Binärübersetzung weitere Arbeit verrichtet werden muss, gelangt die Steuerung zurück zum oben erörterten Block 430, um die Ausführung der Binärübersetzung fortzusetzen. Obwohl er in der Ausführungsform der 4 auf diesem hohen Niveau dargestellt ist, versteht es sich, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Um Komponenten eines Prozessors zu veranschaulichen, der als eine co-designte Virtual Machine gemäß einer Ausführungsform der vorliegenden Erfindung realisiert ist, wird auf 5 Bezug genommen. Wie in 5 dargestellt, umfasst eine Co-Design-Umgebung 600 einen Prozessor 605 und einen Speicher 620, welcher in einer Ausführungsform ein Systemspeicher, z. B. ein dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM), sein kann. Wie zu sehen ist, kann der Prozessor 605 eine gegebene Mikroarchitektur aufweisen und kann z. B. über eine Punkt-zu-Punkt-Verbindung, einen Bus oder auf ähnliche Weise mit dem Speicher 620 verbunden sein. In einem sichtbaren Teil des Speichers 620, nämlich einem ersten Teil 630, können ein oder mehrere Betriebssysteme 635 und Anwendungsprogramme 638 gespeichert sein. Dieser Teil wird als „sichtbar” bezeichnet, da er für Benutzerebenen-Code (d. h. das Anwendungsprogramm 638) und für das OS (sowohl das OS 635 als auch das Programm 638) sichtbar sein kann. In Abhängigkeit von der Art der Befehle, die in diesen Programmen auszuführen sind, kann die Kommunikation direkt mit dem Prozessor 605 erfolgen, z. B. durch Verwendung von Befehls-Decodierern, die in dem Prozessor vorhanden sind, um solche Befehle zu handhaben.
  • Alternativ kann in Ausführungsformen für verschiedene Code-Sequenzen, die unter Verwendung von übersetztem Code optimiert werden können, oder für solche Sequenzen, in welchen keine Mikroarchitekturunterstützung bereitgestellt wird, ein versteckter Teil des Speichers verwendet werden, nämlich ein zweiter Teil 640, um dem Prozessor 605 einen übersetzten Code bereitzustellen. Speziell können, wie zu sehen ist, sowohl das OS 635 als auch das Anwendungsprogramm 638 mit einer BT-Maschine 645 kommunizieren, welche eine Laufzeit-Ausführungseinheit umfassen kann, welche Interpretations-, Übersetzungs- und Optimierungsmechanismen umfasst. Man beachte, dass der versteckte Speicher 640 für das OS oder die Anwendungsprogramme nicht sichtbar oder zugänglich ist. Die BT-Maschine 645 kann somit einem Übersetzungs-Cache-Speicher 648 Code- und Adressinformationen bereitstellen, welche übersetzten Code umfassen können, der dem Prozessor 605 zur Ausführung bereitgestellt werden kann. In einer Ausführungsform kann Code, der im Übersetzungs-Cache-Speicher 648 gespeichert ist, verschlüsselt sein. Dieser übersetzte Code kann für die zugrunde liegende Mikroarchitektur des Prozessors geschrieben und optimiert sein, z. B. Ziel-ISA-Code.
  • Wie zu sehen ist, umfasst der Prozessor 605, welcher ein Co-Design-Prozessor sein kann, vorgelagerte Einheiten wie z. B. eine Befehlsabrufeinheit 606, welche Befehle direkt vom OS oder den Anwendungsprogrammen empfangen kann. Diese Befehle, welche Makrobefehle sein können, welche z. B. Benutzerebenenbefehlen eines Anwendungsprogramms entsprechen, können unter Verwendung eines Decodierers 607 decodiert werden, welcher so arbeiten kann, dass er den Befehl und Zugriff decodiert, welche uops entsprechen, die z. B. in einem Mikrocode-Speicher des Prozessors 605 vorhanden sind. Im Gegenzug kann der Decodierer 607 die uops einer oder mehreren Ausführungseinheiten 608 bereitstellen, welche verschiedene arithmetische Logikeinheiten (Arithmetic Logic Units, ALUs), spezialisierte Hardware und andere Arten von Recheneinheiten umfassen können. Ergebnisse aus diesen Befehlen können einer Inaktivierungseinheit 609 bereitgestellt werden, welche so arbeitet, dass sie die Befehle inaktiviert, um so die Ergebnisse in einem Architekturzustand des Prozessors in der Programmreihenfolge zu speichern, wenn keine Fehler oder Ablaufunterbrechungen aufgetreten sind. Obwohl sie als eine gemäß der Reihenfolge arbeitende Maschine beschrieben sind, können Ausführungsformen gleichermaßen unter Verwendung einer außerhalb der Reihenfolge arbeitenden Maschine realisiert werden.
  • Ausführungsformen können in vielen verschiedenen Systemtypen realisiert werden. Nun Bezug nehmend auf 6, ist dort ein Blockschaubild eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 6 dargestellt, ist das Mehrprozessorsystem 700 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 770 und einen zweiten Prozessor 780, welche über eine Punkt-zu-Punkt-Verbindung 750 verbunden sind. Wie in 6 dargestellt, kann jeder der Prozessoren 770 und 780 ein Mehrkernprozessor sein, welcher erste und zweite Prozessorkerne umfasst (d. h. Prozessorkerne 774a und 774b und Prozessorkerne 784a und 784b), obwohl möglicherweise in den Prozessoren viel mehr Kerne vorhanden sein können. Jeder der Prozessoren kann eine Logik zum Erzeugen und Verwalten eines BT-Containers umfassen, wie hierin beschrieben.
  • Weiter unter Bezugnahme auf 6, umfasst der erste Prozessor 770 ferner einen Speichersteuerungsknoten (Memory Controller Hub, MCH) 772 und Punkt-zu-Punkt(P-P)-Schnittstellen 776 und 778. In ähnlicher Weise umfasst der zweite Prozessor 780 einen MCH 782 und P-P-Schnittstellen 786 und 788. Wie in 6 dargestellt, verbinden die MCHs 772 und 782 die Prozessoren mit entsprechenden Speichern, nämlich einem Speicher 732 und einem Speicher 734, welche Teile eines Systemspeichers (z. B. DRAM) sein können, die lokal mit den entsprechenden Prozessoren verbunden sind. Der erste Prozessor 770 und der zweite Prozessor 780 können über P-P-Verbindungen 752 bzw. 754 mit einem Chipsatz 790 verbunden sein. Wie in 6 dargestellt, umfasst der Chipsatz 790 P-P-Schnittstelen 794 und 798.
  • Ferner umfasst der Chipsatz 790 eine Schnittstelle 792 zum Verbinden des Chipsatzes 790 mit einer Hochleistungs-Graphikmaschine 738 über eine P-P-Verbindung 739. Im Gegenzug kann der Chipsatz 790 über eine Schnittstelle 796 mit einem ersten Bus 716 verbunden sein. Wie in 6 dargestellt, können verschiedene Eingabe/Ausgabe(I/O)-Einheiten 714 mit dem ersten Bus 716 verbunden sein, zusammen mit einer Busbrücke 718, welche den ersten Bus 716 mit einem zweiten Bus 720 verbindet. Mit dem zweiten Bus 720 können verschiedene Einheiten verbunden sein, zum Beispiel eine Tastatur/Maus 722, Kommunikationseinheiten 726 und eine Datenspeichereinheit 728, z. B. ein Plattenlaufwerk oder eine andere Massenspeichereinheit, welche in einer Ausführungsform Code 730 umfassen kann. Ferner kann mit dem zweiten Bus 720 eine Audio-I/O-Einheit 724 verbunden sein. Ausführungsformen können in andere Arten von Systemen integriert sein, z. B. mobile Einheiten wie ein Smartphone, ein Tablet-Computer, ein Netbook usw.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • In einem Beispiel umfasst ein Prozessor einen ersten Kern zum Ausführen von Befehlen einer ersten Befehlssatzarchitektur (ISA), einen zweiten Kern zum Ausführen von Befehlen einer zweiten ISA, wobei der zweite Kern zu dem ersten Kern asymmetrisch ist, und einen Binärübersetzungs-Container, der transparent für einen Software-Stapel von dem Prozessor zu steuern ist, wobei der Binärübersetzungs-Container eine Binärübersetzungsmaschine zum Empfangen eines Code-Segments, zum Erzeugen einer Binärübersetzung des Code-Segments und zum Speichern der Binärübersetzung in einem Übersetzungs-Cache-Speicher umfasst, wobei die Binärübersetzung mindestens eine Emulationsroutine zum Emulieren eines Befehls der ersten ISA umfasst, der in der zweiten ISA nicht verfügbar ist, wobei der zweite Kern die Binärübersetzung ausführt.
  • In einem Beispiel ermöglicht die mindestens eine Emulationsroutine, dass der zweite Kern einen Befehl ausführt, eine Operation an einem ersten Vektoroperanden durchzuführen, wobei eine Breite eines Datenpfads des zweiten Kerns geringer als eine Breite des ersten Vektoroperanden ist.
  • In einem Beispiel führt der Prozessor ein Profiling an einer Anwendung durch, welche das Code-Segment umfasst, und bewirkt, dass die Binärübersetzungsmaschine die Binärübersetzung in Reaktion auf das Profiling erzeugt.
  • In einem Beispiel umfasst der Prozessor eine Umsetzungstabelle, welche mehrere Einträge umfasst, die jeweils ein ursprüngliches Code-Segment mit einem Binärübersetzungs-Code-Segment in Verbindung bringen.
  • In einem Beispiel greift der Prozessor auf die Umsetzungstabelle zu und führt die Binärübersetzung statt des Code-Segments aus, wenn ein Eintragspunkt für das Code-Segment aufgefunden wird, wenn die Umsetzungstabelle einen Eintrag umfasst, welcher das Code-Segment mit der Binärübersetzung in Verbindung bringt.
  • In einem Beispiel umfasst die Binärübersetzungsmaschine eine Steuerungslogik, um zu bewirken, dass die Binärübersetzung statt des Code-Segments ausgeführt wird.
  • In einem Beispiel weist der zweite Kern ein niedrigeres Energieverbrauchsniveau als der erste Kern auf.
  • Man beachte, dass der obige Prozessor unter Verwendung verschiedener Mittel realisiert werden kann.
  • In einem Beispiel umfasst der Prozessor ein System auf einem Chip (System an a Chip, SoC) auf, welches in eine berührungsaktivierte Einheit eines Benutzergeräts integriert ist.
  • In einem anderen Beispiel umfasst ein System eine Anzeigevorrichtung und einen Speicher und umfasst den Prozessor eines oder mehrerer der obigen Beispiele.
  • In einem anderen Beispiel sind auf einem maschinenlesbaren Medium Befehle gespeichert, welche, wenn sie von einer Maschine durchgeführt werden, bewirken, dass die Maschine ein Verfahren durchführt, welches das Empfangen eines Befehls zum Durchführen einer Binärübersetzung für ein erstes Code-Segment in einem Binärübersetzungsagenten eines Prozessors, das Erzeugen eines bearbeiteten Code-Segments für das erste Code-Segment, umfassend eine erste Routine zum Emulieren eines ersten Befehls einer ersten Befehlssatzarchitektur (ISA), wenn er auf einem Kern des Prozessors ausgeführt wird, der den ersten Befehl nicht unterstützt, das Speichern des bearbeiteten Code-Segments in einem Bearbeitungs-Cache-Speicher und das Programmieren des Prozessors umfasst, zu ermöglichen, dass der Kern das bearbeitete Code-Segment statt des ersten Code-Segments ausführt, wenn ein Eintragspunkt für das erste Code-Segment aufgefunden wird.
  • In einem Beispiel ist der Binärübersetzungsagent für einen Software-Stapel transparent, der auf dem Prozessor ausgeführt wird.
  • In einem Beispiel bringen Befehle zum Speichern eines Eintrags in einer Umsetzungstabelle den Eintragspunkt mit einer Stelle des bearbeiteten Code-Segments in dem Bearbeitungs-Cache-Speicher in Verbindung.
  • In einem Beispiel bewirken Befehle zum Speichern eines Eintrags in einer Umsetzungstabelle, dass der Kern statt eines zweiten Code-Segments ein zweites bearbeitetes Code-Segment ausführt, wobei das zweite Code-Segment einen Hotspot umfasst.
  • In einem Beispiel umfasst das maschinenlesbare Medium ferner Befehle zum Speichern eines Eintrags in einer Umsetzungstabelle, um zu bewirken, dass der Kern statt eines dritten Code-Segments ein drittes bearbeitetes Code-Segment ausführt, wobei das dritte Code-Segment einen selbstmodifizierenden Code umfasst.
  • In einem anderen Beispiel umfasst ein Prozessor einen Binärübersetzungs(BT)-Container, welcher Code zum Erzeugen einer Binärübersetzung eines ersten Code-Segments und zum Speichern der Binärübersetzung in einem Übersetzungs-Cache-Speicher umfasst, eine Host-Einheits-Logik zum Verwalten des BT-Containers und zum Identifizieren des ersten Code-Segments und eine Schutzlogik zum Isolieren des BT-Containers von einem Software-Stapel, wobei der Software-Stapel eine Virtual-Machine-Monitor(VMM)-Schicht, eine Betriebssystem(OS)-Schicht und eine Anwendungsschicht umfasst, wobei der BT-Container für den Software-Stapel transparent ist.
  • In einem Beispiel umfasst die Schutzlogik mindestens ein Register zum Speichern eines Bereichswerts zum Identifizieren einer Stelle des BT-Containers.
  • In einem Beispiel bewirkt die Host-Einheits-Logik, dass ein Zustand des Prozessors in einem ersten Zustandsspeicher gespeichert wird, und lädt einen BT-Zustand, der in einem BT-Zustandsspeicher des BT-Containers gespeichert ist, auf einen Eintrag für einen BT-Aufruf in den Prozessor.
  • In einem Beispiel bewirkt die Host-Einheits-Logik, dass der BT-Zustand in dem BT-Zustandsspeicher des BT-Containers gespeichert wird, und lädt den Prozessorzustand aus dem ersten Zustandsspeicher nach der Durchführung der Binärübersetzung für eine erste Zeitmenge, um eine Ausführung einer Anwendung des Software-Stapels zu ermöglichen.
  • In einem Beispiel bewirkt die Host-Einheits-Logik, dass der BT-Zustand in einen Zustandsspeicher eines unbelegten Kerns des Prozessors geladen wird, um die Durchführung der Binärübersetzung auf dem unbelegten Kern zu ermöglichen, wobei eine Anwendung des Software-Stapels auf einem zweiten Kern des Prozessors ausgeführt wird.
  • In einem Beispiel verhindert die Host-Einheits-Logik, dass der BT-Container auf die OS-Schicht und die VMM-Schicht des Software-Stapels zugreift.
  • In einem Beispiel verhindert die Host-Einheits-Logik einen Schreibzugriff des BT-Containers auf die Anwendungsschicht des Software-Stapels.
  • In einem Beispiel ermöglicht die Host-Einheits-Logik, dass der BT-Container auf eine erste Untergruppe eines Zustands des Prozessors zugreift, und verhindert einen Zugriff des BT-Containers auf eine zweite Untergruppe des Prozessorzustands.
  • In einem anderen Beispiel umfasst ein Verfahren das Empfangen eines Befehls zum Durchführen einer Binärübersetzung für ein erstes Code-Segment in einem Binärübersetzungsagenten eines Prozessors, das Erzeugen eines bearbeiteten Code-Segments für das erste Code-Segment, umfassend eine erste Routine zum Emulieren eines ersten Befehls einer ersten Befehlssatzarchitektur (ISA), wenn er auf einem Kern des Prozessors ausgeführt wird, der den ersten Befehl nicht unterstützt, das Speichern des bearbeiteten Code-Segments in einem Bearbeitungs-Cache-Speicher und das Programmieren des Prozessors, zu ermöglichen, dass der Kern das bearbeitete Code-Segment statt des ersten Code-Segments ausfährt, wenn ein Eintragspunkt für das erste Code-Segment aufgefunden wird.
  • In einem Beispiel ist der Binärübersetzungsagent für einen Software-Stapel transparent, der auf dem Prozessor ausgeführt wird.
  • In einem Beispiel umfasst das Verfahren das Speichern eines Eintrags in einer Umsetzungstabelle, um den Eintragspunkt mit einer Stelle des bearbeiteten Code-Segments in dem Bearbeitungs-Cache-Speicher in Verbindung zu bringen.
  • In einem Beispiel umfasst das Verfahren ferner das Speichern eines Eintrags in einer Umsetzungstabelle, um zu bewirken, dass der Kern statt eines zweiten Code-Segments ein zweites bearbeitetes Code-Segment ausführt, wobei das zweite Code-Segment einen Hotspot umfasst.
  • In einem Beispiel umfasst das Verfahren das Speichern eines Eintrags in einer Umsetzungstabelle, um zu bewirken, dass der Kern statt eines dritten Code-Segments ein drittes bearbeitetes Code-Segment ausführt, wobei das dritte Code-Segment einen selbstmodifizierenden Code umfasst.
  • In einem anderen Beispiel umfasst ein Prozessor ein Binärübersetzungs(BT)-Container-Mittel, welches Code zum Erzeugen einer Binärübersetzung eines ersten Code-Segments und zum Speichern der Binärübersetzung in einem Übersetzungs-Cache-Speicher umfasst, ein Host-Einheits-Mittel zum Verwalten des BT-Container-Mittels und zum Identifizieren des ersten Code-Segments und ein Schutzmittel zum Isolieren des BT-Containers von einem Software-Stapel, wobei der Software-Stapel eine Virtual-Machine-Monitor(VMM)-Schicht, eine Betriebssystem(OS)-Schicht und eine Anwendungsschicht umfasst, wobei das BT-Container-Mittel für den Software-Stapel transparent ist.
  • In einem Beispiel umfasst das Schutzmittel mindestens ein Register zum Speichern eines Bereichswerts zum Identifizieren einer Stelle des BT-Container-Mittels.
  • In einem Beispiel bewirkt das Host-Einheits-Mittel, dass ein Zustand des Prozessors in einem ersten Zustandsspeicher gespeichert wird, und lädt einen BT-Zustand, der in einem BT-Zustandsspeicher des BT-Container-Mittels gespeichert ist, auf einen Eintrag für einen BT-Aufruf in den Prozessor.
  • In einem Beispiel bewirkt das Host-Einheits-Mittel, dass der BT-Zustand in dem BT-Zustandsspeicher des BT-Container-Mittels gespeichert wird, und lädt den Prozessorzustand aus dem ersten Zustandsspeicher nach der Durchführung der Binärübersetzung für eine erste Zeitmenge, um eine Ausführung einer Anwendung des Software-Stapels zu ermöglichen.
  • In einem Beispiel bewirkt das Host-Einheits-Mittel, dass der BT-Zustand in einen Zustandsspeicher eines unbelegten Kerns des Prozessors geladen wird, um die Durchführung der Binärübersetzung auf dem unbelegten Kern zu ermöglichen, wobei eine Anwendung des Software-Stapels auf einem zweiten Kern des Prozessors ausgeführt wird.
  • In einem Beispiel verhindert das Host-Einheits-Mittel, dass der BT-Container auf die OS-Schicht und die VMM-Schicht des Software-Stapels zugreift.
  • In einem Beispiel verhindert das Host-Einheits-Mittel einen Schreibzugriff des BT-Containers auf die Anwendungsschicht des Software-Stapels.
  • In einem Beispiel ermöglicht das Host-Einheits-Mittel, dass der BT-Container auf eine erste Untergruppe eines Zustands des Prozessors zugreift, und verhindert einen Zugriff des BT-Containers auf eine zweite Untergruppe des Prozessorzustands.
  • In einem anderen Beispiel führt ein computerlesbares Medium, welches Befehle umfasst, das Verfahren eines der obigen Beispiele durch.
  • In einem anderen Beispiel umfasst eine Vorrichtung ein Mittel zum Durchführen des Verfahrens eines der obigen Beispiele.
  • In einem Beispiel ist eine Kommunikationseinheit dafür eingerichtet, das Verfahren eines der obigen Beispiele durchzuführen.
  • In einem Beispiel umfasst mindestens ein maschinenlesbares Medium mehrere Befehle, welche in Reaktion darauf, dass sie auf einer Recheneinheit ausgeführt werden, bewirken, dass die Recheneinheit ein Verfahren nach einem der obigen Beispiele durchführt.
  • Es versteht sich, dass verschiedene Kombinationen der obigen Beispiele möglich sind.
  • Ausführungsformen können in vielen verschiedenen Typen von Systemen angewendet werden. Zum Beispiel kann in einer Ausführungsform eine Kommunikationseinheit so eingerichtet sein, dass sie die verschiedenen Verfahren und Techniken durchführt, die hierin beschrieben sind. Natürlich ist der Umfang der vorliegenden Erfindung nicht auf eine Kommunikationseinheit beschränkt und stattdessen können andere Ausführungsformen auf andere Typen von Vorrichtungen zum Verarbeiten von Befehlen oder ein oder mehrere maschinenlesbare Medien gerichtet sein, welche Befehle umfassen, die in Reaktion darauf, dass sie auf einer Recheneinheit ausgeführt werden, bewirken, dass die Einheit ein oder mehrere der Verfahren und Techniken durchfüht, die hierin beschrieben sind.
  • Ausführungsformen können in Code realisiert werden und können auf einem Speichermedium gespeichert sein, auf welchem Befehle gespeichert sind, welche verwendet werden können, um ein System zum Ausführen der Befehle zu programmieren. Das Speichermedium kann, ohne darauf beschränkt zu sein, einen beliebigen Plattentyp umfassen, umfassend Disketten, optische Disks, Festplattenlaufwerke (Solid State Drives, SSDs), CD-ROMs, CD-RWs und magnetooptische Disks, Halbleitereinheiten wie Nur-Lese-Speicher (ROMs), Direktzugriffspeicher (RAMs), z. B. dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SDRAMs), löschbare programmierbare Nur-Lese-Speicher (Erasable Programmable ROMs, EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (Electrically Erasable Programmable ROMs, EPROMs), magnetische oder optische Karten oder eine beliebige andere Art von Medien, die zum Speichern elektronischer Befehle geeignet sind.
  • Obwohl die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, erkennt der Fachmann zahlreiche Modifikationen und Variationen dieser. Die anhängenden Patentansprüche sollen all solche Modifikationen und Variationen abdecken, welche unter die echte Idee und den Umfang der vorliegenden Erfindung fallen.

Claims (24)

  1. Prozessor, umfassend: einen ersten Kern zum Ausführen von Befehlen einer ersten Befehlssatzarchitektur (ISA); einen zweiten Kern zum Ausführen von Befehlen einer zweiten ISA, wobei der zweite Kern zu dem ersten Kern asymmetrisch ist; und einen Binärübersetzungs-Container, der transparent für einen Software-Stapel von dem Prozessor zu steuern ist, wobei der Binärübersetzungs-Container eine Binärübersetzungsmaschine zum Empfangen eines Code-Segments, zum Erzeugen einer Binärübersetzung des Code-Segments und zum Speichern der Binärübersetzung in einem Übersetzungs-Cache-Speicher umfasst, wobei die Binärübersetzung mindestens eine Emulationsroutine zum Emulieren eines Befehls der ersten ISA umfasst, der in der zweiten ISA nicht verfügbar ist, wobei der zweite Kern die Binärübersetzung ausführt.
  2. Prozessor nach Anspruch 1, wobei die mindestens eine Emulationsroutine ermöglicht, dass der zweite Kern einen Befehl ausführt, um eine Operation an einem ersten Vektoroperanden durchzuführen, wobei eine Breite eines Datenpfads des zweiten Kerns geringer als eine Breite des ersten Vektoroperanden ist.
  3. Prozessor nach Anspruch 1 oder 2, wobei der Prozessor ein Profiling an einer Anwendung durchführt, welche das Code-Segment umfasst, und bewirkt, dass die Binärübersetzungsmaschine die Binärübersetzung in Reaktion auf das Profiling erzeugt.
  4. Prozessor nach einem der Ansprüche 1 bis 3, wobei der Prozessor eine Umsetzungstabelle umfasst, welche mehrere Einträge umfasst, die jeweils ein ursprüngliches Code-Segment mit einem Binärübersetzungs-Code-Segment in Verbindung bringen.
  5. Prozessor nach Anspruch 4, wobei der Prozessor auf die Umsetzungstabelle zugreift und die Binärübersetzung statt des Code-Segments ausführt, wenn ein Eintragspunkt für das Code-Segment aufgefunden wird, wenn die Umsetzungstabelle einen Eintrag umfasst, welcher das Code-Segment mit der Binärübersetzung in Verbindung bringt.
  6. Prozessor nach einem der Ansprüche 1 bis 5, wobei die Binärübersetzungsmaschine eine Steuerungslogik umfasst, um zu bewirken, dass die Binärübersetzung statt des Code-Segments ausgeführt wird.
  7. Prozessor nach einem der Ansprüche 1 bis 6, wobei der zweite Kern ein niedrigeres Energieverbrauchsniveau als der erste Kern aufweist.
  8. Verfahren, umfassend: Empfangen eines Befehls zum Durchführen einer Binärübersetzung für ein erstes Code-Segment in einem Binärübersetzungsagenten eines Prozessors; Erzeugen eines bearbeiteten Code-Segments für das erste Code-Segment, umfassend eine erste Routine zum Emulieren eines ersten Befehls einer ersten Befehlssatzarchitektur (ISA), wenn er auf einem Kern des Prozessors ausgeführt wird, der den ersten Befehl nicht unterstützt; Speichern des bearbeiteten Code-Segments in einem Bearbeitungs-Cache-Speicher und Programmieren des Prozessors, um zu ermöglichen, dass der Kern das bearbeitete Code-Segment statt des ersten Code-Segments ausführt, wenn ein Eintragspunkt für das erste Code-Segment aufgefunden wird.
  9. Verfahren nach Anspruch 8, wobei der Binärübersetzungsagent für einen Software-Stapel transparent ist, der auf dem Prozessor ausgeführt wird.
  10. Verfahren nach Anspruch 8 oder 9, ferner umfassend das Speichern eines Eintrags in einer Umsetzungstabelle, um den Eintragspunkt mit einer Stelle des bearbeiteten Code-Segments in dem Bearbeitungs-Cache-Speicher in Verbindung zu bringen.
  11. Verfahren nach einem der Ansprüche 8 bis 10, ferner umfassend das Speichern eines Eintrags in einer Umsetzungstabelle, um zu bewirken, dass der Kern statt eines zweiten Code-Segments ein zweites bearbeitetes Code-Segment ausführt, wobei das zweite Code-Segment einen Hotspot umfasst.
  12. Verfahren nach einem der Ansprüche 8 bis 11, ferner umfassend das Speichern eines Eintrags in einer Umsetzungstabelle, um zu bewirken, dass der Kern statt eines dritten Code-Segments ein drittes bearbeitetes Code-Segment ausführt, wobei das dritte Code-Segment einen selbstmodifizierenden Code umfasst.
  13. Prozessor, umfassend: ein Binärübersetzungs(BT)-Container-Mittel, welches Code zum Erzeugen einer Binärübersetzung eines ersten Code-Segments und zum Speichern der Binärübersetzung in einem Übersetzungs-Cache-Speicher umfasst; ein Mittel einer Host-Einheit zum Verwalten des BT-Container-Mittels und zum Identifizieren des ersten Code-Segments und ein Schutzmittel zum Isolieren des BT-Containers von einem Software-Stapel, wobei der Software-Stapel eine Virtual-Machine-Monitor(VMM)-Schicht, eine Betriebssystem(OS)-Schicht und eine Anwendungsschicht umfasst, wobei das BT-Container-Mittel für den Software-Stapel transparent ist.
  14. Prozessor nach Anspruch 13, wobei das Schutzmittel mindestens ein Register zum Speichern eines Bereichswerts zum Identifizieren einer Stelle des BT-Container-Mittels umfasst.
  15. Prozessor nach Anspruch 13 oder 14, wobei das Host-Einheits-Mittel bewirkt, dass ein Zustand des Prozessors in einem ersten Zustandsspeicher gespeichert wird, und einen BT-Zustand, der in einem BT-Zustandsspeicher des BT-Container-Mittels gespeichert ist, auf einen Eintrag für einen BT-Aufruf in den Prozessor lädt.
  16. Prozessor nach Anspruch 15, wobei das Mittel der Host-Einheit bewirkt, dass der BT-Zustand in dem BT-Zustandsspeicher des BT-Container-Mittels gespeichert wird, und den Prozessorzustand aus dem ersten Zustandsspeicher nach der Durchführung der Binärübersetzung für eine erste Zeitdauer lädt, um eine Ausführung einer Anwendung des Software-Stapels zu ermöglichen
  17. Prozessor nach Anspruch 15, wobei das Host-Einheits-Mittel bewirkt, dass der BT-Zustand in einen Zustandsspeicher eines unbelegten Kerns des Prozessors geladen wird, um die Durchführung der Binärübersetzung auf dem unbelegten Kern zu ermöglichen, wobei eine Anwendung des Software-Stapels auf einem zweiten Kern des Prozessors ausgeführt wird.
  18. Prozessor nach einem der Ansprüche 13 bis 17, wobei das Mittel der Host-Einheit verhindert, dass der BT-Container auf die OS-Schicht und die VMM-Schicht des Software-Stapels zugreift.
  19. Prozessor nach einem der Ansprüche 13 bis 18, wobei das Mittel der Host-Einheit einen Schreibzugriff des BT-Containers auf die Anwendungsschicht des Software-Stapels verhindert.
  20. Prozessor nach einem der Ansprüche 13 bis 19, wobei das Mittel der Host-Einheit ermöglicht, dass der BT-Container auf eine erste Untergruppe eines Zustands des Prozessors zugreift, und einen Zugriff des BT-Containers auf eine zweite Untergruppe des Prozessorzustands verhindert.
  21. Kommunikationseinheit, welche dafür eingerichtet ist, das Verfahren nach einem der Ansprüche 8 bis 12 durchzuführen.
  22. Mindestens ein maschinenlesbares Medium, welches mehrere Befehle umfasst, welche in Reaktion darauf, dass sie auf einer Recheneinheit ausgeführt werden, bewirken, dass die Recheneinheit ein Verfahren nach einem der Ansprüche 8 bis 12 durchführt.
  23. Vorrichtung zum Verarbeiten von Befehlen, welche dafür konfiguriert ist, das Verfahren nach einem der Ansprüche 8 bis 12 durchzuführen.
  24. Vorrichtung, welche ein Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 8 bis 12 umfasst.
DE102014003540.9A 2013-03-12 2014-03-12 Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor Withdrawn DE102014003540A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/795,720 US9405551B2 (en) 2013-03-12 2013-03-12 Creating an isolated execution environment in a co-designed processor
US13/795,720 2013-03-12

Publications (1)

Publication Number Publication Date
DE102014003540A1 true DE102014003540A1 (de) 2014-09-18

Family

ID=50554836

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014003540.9A Withdrawn DE102014003540A1 (de) 2013-03-12 2014-03-12 Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor

Country Status (6)

Country Link
US (1) US9405551B2 (de)
JP (1) JP5936640B2 (de)
KR (1) KR101673435B1 (de)
CN (1) CN104050010A (de)
DE (1) DE102014003540A1 (de)
GB (2) GB2540640B (de)

Families Citing this family (19)

* 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
WO2013048468A1 (en) 2011-09-30 2013-04-04 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
US9454487B2 (en) * 2012-08-27 2016-09-27 Vmware, Inc. Transparent host-side caching of virtual disks located on shared storage
US9563432B2 (en) * 2013-04-19 2017-02-07 Nvidia Corporation Dynamic configuration of processing pipeline based on determined type of fetched instruction
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9652612B2 (en) * 2015-03-25 2017-05-16 International Business Machines Corporation Security within a software-defined infrastructure
WO2016162721A1 (en) * 2015-04-10 2016-10-13 Google Inc. Binary translation on shared object level
WO2016162720A1 (en) * 2015-04-10 2016-10-13 Google Inc. Binary translation into native client
CN106325819B (zh) * 2015-06-17 2019-08-02 华为技术有限公司 计算机指令处理方法、协处理器和系统
US10713146B2 (en) * 2015-06-26 2020-07-14 AVAST Software s.r.o. Dynamic binary translation and instrumentation with postponed attachment to running native threads
US9524183B1 (en) * 2015-07-22 2016-12-20 Bluedata Software, Inc. Employing application containers in a large scale processing environment
GB2542646B (en) * 2016-03-18 2017-11-15 Imagination Tech Ltd Non-linear cache logic
US11650902B2 (en) * 2017-11-08 2023-05-16 Intel Corporation Methods and apparatus to perform instruction-level graphics processing unit (GPU) profiling based on binary instrumentation
US11281767B2 (en) * 2018-03-23 2022-03-22 International Business Machines Corporation Secure system state extraction software extensibility via plugin sandboxing
US11188361B1 (en) 2020-06-26 2021-11-30 Red Hat, Inc. Cross-architecture software distribution using a virtual instruction set architecture
US20220308867A1 (en) * 2021-03-26 2022-09-29 Intel Corporation Apparatus and method for managing unsupported instruction set architecture (isa) features in a virtualized environment
CN113342436B (zh) * 2021-06-10 2023-03-17 网易(杭州)网络有限公司 一种游戏翻译方法和装置

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP3516963B2 (ja) 1993-03-12 2004-04-05 株式会社東芝 メモリアクセス制御装置
US5513337A (en) 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
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
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
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US5926832A (en) 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
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
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
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
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
US6820255B2 (en) * 1999-02-17 2004-11-16 Elbrus International Method for fast execution of translated binary code utilizing database cache for low-level code correspondence
US6615340B1 (en) 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US20020156977A1 (en) 2001-04-23 2002-10-24 Derrick John E. Virtual caching of regenerable data
US20040015874A1 (en) * 2001-05-14 2004-01-22 David Ungar Method and apparatus for finding resource allocation errors in virtual machine compilers
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7269825B1 (en) 2002-12-27 2007-09-11 Unisys Corporation Method and system for relative address translation
JP4713820B2 (ja) * 2003-05-28 2011-06-29 パナソニック株式会社 プログラム実行制御装置、プログラム実行制御方法
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
JP4563669B2 (ja) * 2003-11-25 2010-10-13 三菱電機株式会社 命令模擬装置
JP2006039879A (ja) * 2004-07-26 2006-02-09 Aplix Corp クラスファイル実行方法およびJava(R)実行環境プログラム
WO2009076324A2 (en) * 2007-12-10 2009-06-18 Strandera Corporation Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
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
US7734895B1 (en) * 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
WO2007101969A1 (en) 2006-03-06 2007-09-13 Arm Limited Accessing a cache in a data processing apparatus
JP4208895B2 (ja) 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
JP4784827B2 (ja) * 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
US8505002B2 (en) * 2006-09-29 2013-08-06 Arm Limited Translation of SIMD instructions in a data processing system
CN101295265A (zh) 2007-04-25 2008-10-29 国际商业机器公司 全系统isa仿真系统及其识别进程的方法
JP4608011B2 (ja) 2007-06-19 2011-01-05 富士通株式会社 演算処理装置および演算処理方法
JP4687729B2 (ja) 2008-03-04 2011-05-25 日本電気株式会社 キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法
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
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
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
US20110320766A1 (en) 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
CN101923492B (zh) 2010-08-11 2013-05-01 上海交通大学 面向嵌入式异构多核上执行动态分配指令的方法
US8683243B2 (en) * 2011-03-11 2014-03-25 Intel Corporation Dynamic core selection for heterogeneous multi-core systems
WO2013048468A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation

Also Published As

Publication number Publication date
GB2514221B (en) 2017-02-01
KR101673435B1 (ko) 2016-11-07
GB2540640B (en) 2017-12-06
KR20140111998A (ko) 2014-09-22
GB201520824D0 (en) 2016-01-06
CN104050010A (zh) 2014-09-17
JP2014174998A (ja) 2014-09-22
GB2540640A (en) 2017-01-25
JP5936640B2 (ja) 2016-06-22
GB201404228D0 (en) 2014-04-23
GB2514221A (en) 2014-11-19
US20140281376A1 (en) 2014-09-18
US9405551B2 (en) 2016-08-02

Similar Documents

Publication Publication Date Title
DE102014003540A1 (de) Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor
US10719632B2 (en) Data processing systems
Zhou et al. A bare-metal and asymmetric partitioning approach to client virtualization
US11048588B2 (en) Monitoring the operation of a processor
DE102014003798B4 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE112015006934T5 (de) Verschachtelte Virtualisierung für virtuelle Maschinenexits
JP2013109777A (ja) パフォーマンスカウンタの仮想化
US7529916B2 (en) Data processing apparatus and method for controlling access to registers
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
DE112010005821T5 (de) Kontextwechsel
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
US10387184B2 (en) Address based host page table selection
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE102018004726A1 (de) Dynamisches Ausschalten und Einschalten von Prozessorkernen
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE112015001502T5 (de) Ausstieg aus mehreren Threads in einem Computer
DE202019005683U1 (de) Prozessorkern mit Unterstützung einer Befehlssatzarchitektur für heterogene Systeme
DE112017001012T5 (de) Prozessoren, verfahren und systeme zum einstellen maximaler taktfrequenzen basierend auf dem befehlstyp
DE202019005669U1 (de) System zum Einschränken der Nutzung von Verschlüsselungsschlüsseln durch nicht vertrauenswürdige Software

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee