JP2014174998A - 協調設計されたプロセッサへの、隔離された実行環境の作成 - Google Patents

協調設計されたプロセッサへの、隔離された実行環境の作成 Download PDF

Info

Publication number
JP2014174998A
JP2014174998A JP2014042957A JP2014042957A JP2014174998A JP 2014174998 A JP2014174998 A JP 2014174998A JP 2014042957 A JP2014042957 A JP 2014042957A JP 2014042957 A JP2014042957 A JP 2014042957A JP 2014174998 A JP2014174998 A JP 2014174998A
Authority
JP
Japan
Prior art keywords
processor
code segment
container
core
binary conversion
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.)
Granted
Application number
JP2014042957A
Other languages
English (en)
Other versions
JP2014174998A5 (ja
JP5936640B2 (ja
Inventor
Koichi Yamada
康一 山田
Rajan Shanmugavelayutham Palanivel
ラジャン シャンムガベラユサム、パラニベル
D Rodgers Scott
ディー. ロジャーズ、スコット
E Huntley Barry
イー. ハントリー、バリー
D Beaney James Jr
ディー. ビーニー、ジュニア、ジェームズ
Tamir Boaz
タミール、ボアズ
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 JP2014174998A publication Critical patent/JP2014174998A/ja
Publication of JP2014174998A5 publication Critical patent/JP2014174998A5/ja
Application granted granted Critical
Publication of JP5936640B2 publication Critical patent/JP5936640B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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
    • 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
    • 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

【課題】ファームウェア層の上のソフトウェアスタックから隠されているバイナリ変換ソフトウェアを維持するように協調設計されたプロセッサアーキテクチャフレームワークを提供する。
【解決手段】プロセッサ110が、第1のコードセグメントのバイナリ変換を生成して、変換キャッシュにバイナリ変換を格納するコードをもつバイナリ変換(BT)コンテナ130と、BTコンテナを管理して、第1のコードセグメントを特定するホスト実体論理と、BTコンテナをソフトウェアスタック190から隔離する保護論理とを含む。このようにして、BTコンテナは、ソフトウェアスタックに対してトランスペアレントに設定される。
【選択図】図1

Description

現代のマイクロプロセッサは、殆どのコンピュータシステムの心臓部である。 一般的に、これらプロセッサは、命令を受信して、命令に呼応してオペレーションを実行することで動作する。アプリケーションプログラム及びオペレーティングシステム(OS)アクティビティにおいて、命令は、プロセッサで受信され、プロセッサが、これら命令を、プロセッサハードウェア上での実行に適した、1以上のより小さいオペレーション(しばしばマイクロ命令(uops)と称される)にデコードしてよい。一部のプロセッサは、一定の命令セットアーキテクチャ(ISA)命令を直接実行するためのハードウェア特徴をもたない。このような訳で、命令が、直接ハードウェア上で実行可能なuopsにデコードされている。uopsにデコードすることで、プロセッサは並列処理もアウトオブオーダ処理もスケジュール及び実行することができるようになり、パフォーマンスの向上を助ける。しかしこのメカニズムは、多くの場合に不十分である。
本発明のある実施形態におけるシステムの部分のブロック図である。
本発明の別の実施形態における協調設計されたプロセッサのブロック図である。
本発明のある実施形態におけるバイナリ変換を実行する方法のフロー図である。
本発明のある実施形態における変換されたコードに低オーバヘッド転送を実行するための方法のフロー図である。
本発明のある実施形態におけるプロセッサ及びメモリを含む協調設計環境のブロック図である。
本発明のある実施形態におけるシステムのブロック図である。
様々な実施形態では、ファームウェア層の上のソフトウェアスタックから隠されているバイナリ変換ソフトウェアを維持するように協調設計されたプロセッサアーキテクチャフレームワークが提供される。このソフトウェアスタックは、プロセッサの1以上のコアの上で実行される、仮想マシンモニタ(VMM)、オペレーティングシステム(OS)及びアプリケーションを含む。このようにすることで、実施形態では、ファームウェアの上のソフトウェアスタックの層に対する修正を回避することができる。したがって、このスタックは、ダイナミックバイナリ最適化及び命令セットアーキテクチャ(ISA)エミュレーションシステムの恩恵を得ることができる。このアーキテクチャフレームワークが、VMM、OS、及びアプリケーションからトランスペアレントなBTソフトウェアの実行のために提供されたとしても、協調設計されたプロセッサの異なるタイプのソフトウェアコンポーネントを実行して、異なるタイプの利用を可能とするべく利用することもできる。例えばこのフレームワークは、隠れた環境で(例えばVMM/OS層から隠されたもの)実行されるソフトウェア(例えばウィルススキャンソフトウェア)を実行するために利用されてよい。この隠れた環境は、VMM、OS、及びアプリケーションから、隔離され、独立しており、保護されている実行環境である。
バイナリ変換によりハードウェア/ソフトウェアが協調設計されたプロセッサは、隠れたバイナリ変換(BT)ソフトウェアによる、ダイナミックバイナリ最適化及び変換を可能とすることができる。電力効率よくパフォーマンスを向上させ、更に、バイナリ変換によって新たなISA拡張を可能とすることができる。協調設計されたプロセッサでは、例えばx86ISAである、ソースISAと称される標準的なISAが存在している。OS及びアプリケーションプログラムの両方を含む、従来のソフトウェアが、ソースISAにコンパイルされる。そして、協調設計されたプロセッサのハードウェアが、特別パフォーマンス及び/またはエネルギー効率特徴を持つ一定のハードウェア実装例のために特別に設計されたターゲットISAを実装する。ターゲットISAは、uopsと同レベルにあり、uopsのセットと同一であってよい。
協調設計されたプロセッサに属すエミュレーションソフトウェアは、アプリケーション/OSソースISAソフトウェアの実行を、これを、ターゲット命令の最適化されたシーケンスへと解釈、または、直接変換することによって、指揮管理(direct)する。これら変換は、パフォーマンスゲイン及び/または向上したエネルギー効率を約束する。
エミュレーションプロセスは、通常、以下のように進められる。解釈は、最初に遭遇したコード(ソースISA命令)に対して利用される。そして、ダイナミックプロファイリングまたはその他の手段を利用することで頻繁に実行されるコード領域(ホットスポット)が発見されると、これらをターゲットISAに変換する。多くの場合、最適化は、変換プロセスの一部として実行され、非常に頻繁に利用されるコードは、後で、更にいっそう最適化されてよい。コードの変換された領域は、再利用できるように変換キャッシュに保持される。変換キャッシュは、エミュレーションソフトウェアによって管理され、全てのアプリケーション/OSソフトウェアから隠されたメモリの一部に保持される。アプリケーション/OSソフトウェアは、従来の(見える)メモリに保持される。
協調設計されたVMを利用する以前のプロセッサ実装は、エミュレーションソフトウェアが全てのアプリケーション/OSソフトウェアをエミュレートする、完全なエミュレーションを利用する。完全なエミュレーションの1つの欠点に、全てのコードを実行前にまず解釈及び/または変換する必要があり、これによって、ソフトウェアの領域に最初に遭遇したときに低パフォーマンスになってしまう恐れがある、ということがある。
実施形態では、ハードウェアベースのメカニズム及びプロセッサファームウェアベースのメカニズムを両方とも利用して、隔離され、隠された仮想マシン実行環境、ここではバイナリ変換(BT)コンテナと称される、を作成することができる。このコンテナは、部分変換または完全ISAエミュレーションモデルを実装するべく、BTソフトウェアを実行するために利用されてよい。ある実施形態では、BTコンテナは、本質的に、プロセッサファームウェアが直接制御する仮想マシン環境の特別な(及び幾つかの実施形態では簡略化された)バージョンである。様々な実施形態では、コンテナは、VMM,オペレーティングシステム、及びアプリケーションを含むソフトウェアスタックから隠され、及びトランスペアレントであるよう設計されている。
オペレーション中に、BTコンテナは、様々なコンポーネント及びメカニズムとインタラクトする。第1に、プロセッサは、BTコンテナを管理するためのホスト実体を含む。様々な実施形態では、この実体は、プロセッサハードウェア拡張と、ファームウェア(例えばマイクロコード層またはプロセッサアブストラクション層)との組み合わせによって実装されてよい。ここで記載するように、ホスト実体は、BTコンテナ、及びBTコンテナの内部で実行されるソフトウェアに晒されるISAに対するエントリの出し入れを制御する。
BTコンテナ環境は、BTソフトウェアのプロセッサの状態及びBTソフトウェアのためにコード及びデータを保持するプライベートメモリ空間を含む。BTソフトウェアは、このBTコンテナ内で実行されて、最適化及びISA整合オペレーション(ISA compatibility operations)を実行するための1以上のバイナリ変換アルゴリズムを実装する。
様々な実施形態は、BTコンテナメモリをソフトウェア(VMM、OS、及び、アプリケーション)及びハードウェアの攻撃者から保護するために利用されるハードウェアベースの保護メカニズムを提供してよい。一実施形態では、この保護メカニズムは、メモリレンジレジスタベースの保護、メモリ暗号化ハードウェア等で実装することができる。別の様々な実装例では、提供される保護のレベルは、利用される特徴及び所望のセキュリティ方針(security objectives)に基づいていてよい。
BTハードウェアユニットは、協調設計されたプロセッサのためのハードウェアサポートを実装するために提供される。ある実施形態では、このユニットは、BTコンテナを呼び出すためのイベントを検出(たとえば、ホットスポット検出、自己修正コード検出、及び、IPI(inter-processor interrupt:プロセッサ間割り込み))イベント、電力管理イベント、RAS(reliability availability serviceability)イベント等のその他のイベントを含む)するためのハードウェアサポートを含む。より一般的には、これらイベントは、BTソフトウェアから直に注目を受ける。例えば、1つのイベントが、複数のプロセッサの上で実行されるBTソフトウェア間を同期させるよう定義されているプライベートIPIメカニズムであってよい。
BT ISA拡張は、BTコンテナへの、または該BTコンテナからの、及びこのコンテナ内の様々なオペレーションへの、または該様々なオペレーションからの、制御移行を可能とするべく、提供されてよい。ある実施形態では、これらISA拡張は、BTコンテナの内部で実行されるBTソフトウェアのみによって利用可能であってよい。例として、これらISA拡張は、BTソフトウェアに、BTハードウェアユニットにアクセス、及び、BTハードウェアユニットをプログラムさせ、ホスト実体と通信することで、コンテナポリシーを設定して、バイナリ変換のための、元のコードメモリ空間にアクセスするようにさせる。
ある実施形態では、変換されたコードを格納するために、変換キャッシュメモリが提供されてよい。ある実施形態では、変換されたコードの実行への遷移は、BTハードウェアユニットが提供する変換エントリメカニズムによって統括される。 プライベートプロセッサの状態及びプライベートメモリ空間を含む、BTコンテナ環境は、他のソフトウェア(VMM、オペレーティングシステム、及び、アプリケーション)から隔離され、及び、隠されていてよい。
BTコンテナリソースは、システム起動中にホスト実体によって割り当て、作成されてよい。この時点に、ホスト実体が、ハードウェア保護メカニズムをプログラム、管理することができる。
OS及びVMMからトランスペアレントにするべく、BTコンテナのBTソフトウェアの呼び出し及び終了は、ホスト実体によって直接制御される。一実施形態では、呼び出し及び終了オペレーションは、ハードウェアとマイクロコードとの組み合わせによって実装される。別の実施形態では、プロセッサファームウェアを利用して、これらオペレーションが実行されてよい。
1つの制御移行オペレーションとして、BTハードウェアユニットがBT呼び出しイベント(たとえばホットスポット)を検出すると、プロセッサは、ゲストソフトウェアスタックの実行を停止して、ホスト実体にこのイベントを通知する。そして、ホスト実体は、プロセッサコンテキストの現在の状態を一時的な状態ストレージ領域にセーブして、BTコンテナコンテキストにスイッチして(BTコンテナのBT状態ストレージ内に格納されている場合がある)、定義されたエントリの命令ポインタ(IP)からBTソフトウェアの実行を開始させる。BTソフトウェアが制御を得ると、特別な終了命令によって(BTコンテナに晒されるBT ISA拡張であってよい)自発的終了が生じるまで、または、外部割込み、内部タイマ割り込み等の一定のハードウェアイベントが生じて、ホスト実体が非自発的終了を強制的に実行するまで、実行が続けられる。上述した内部タイマ割り込みは、本質的に、タイムアウトイベントであり、これがVMM及びOSから隠されることで、BTソフトウェアは、長いレイテンシーのオペレーションをタイムスライスすることができる。
トランスペアレンシーは、また、ソフトウェアスタックに晒されるBTソフトウェアレイテンシーを、このスタックの前進要求(forward progress requirement)を満たすように、よく制御及び管理することによって、達成することもできる。例えば、BTソフトウェアが、特定されたホットスポットのための変換タスクを完了するために最大1ミリ秒(ms)かかる場合、ホスト実体は、ソフトウェアに晒されるレイテンシーをBTソフトウェアが軽減及び制御するためのメカニズムを提供してよい。ある実施形態では、これらメカニズムは、1)OS割り込みハンドラに晒されるレイテンシーを最小限にするために外部割り込みを受けたBTソフトウェアをプリエンプション(preemption)(非自発的終了)すること、2)BTソフトウェアが、基礎となるプログラム実行の最小限の前進要件を満たすための、タイムカンタム管理(タイムスライススケジューリング)を可能とするために1以上の内部タイマを利用すること、及び、3)BTソフトウェアレイテンシーを隠すために1以上のアイドルコアに対して長期間のBTタスクをスケジューリングすること、を含む。これらのメカニズムは、ホスト実体によって予め設定されているか、BTソフトウェアが晒されているBT ISA拡張によって動的に設定される。
隔離されたコンテナにBTソフトウェアを実行させることによって、更に、ホスト実体が、BTコンテナに晒されるISA特徴、及び、BTコンテナ内で実行されるBTソフトウェアに与えられているメモリ及びプロセッサリソースのアクセス許可等の特権を制御することができる。例えば、ホスト実体は、ISA特徴のサブセット(例えば、浮動小数点ISA命令はない)が、十分、所与のバイナリ変換タスクを実行することができる場合に、BTソフトウェアに晒されるISA特徴を制限し、制御することができる。このような制御は、コンテナ環境の簡略化、及び、ネイティブコンテナ実行とBTコンテナ実行との間のコンテキスト切り替え時間の低減に役立つ。
ハイパーバイザまたはVMMを実行するべく提供される監督モードと異なり、BTコンテナは、動作に適した最小限の特権及び優先権を与えられているので、ISA特徴の一部がBTソフトウェアによって実装された場合であっても、オペレーティングシステムへのレイテンシーエクスポージャ等の安全上のリスク及びシステムへの影響を大幅に低減させることができる。ある実施形態では、ホスト実体が、システムISA特徴及びBT実行に費やされる時間等のBTソフトウェアのISA特徴及び特権を制限及び制御して、BTコンテナが、その正当な目的のために動作する上で必要な情報、リソース、命令、及びタイムカンタムのみにアクセスするよう制限することができる。
例えば、BTソフトウェアは、バイナリ変換タスクを実行するために、ユーザレベル(例えばリング3)のISAアクセスのみに晒されることで十分な場合には、そのようにされてよい。部分変換モデルで実行されるエミュレーションが、ユーザレベルのアプリケーションのためである場合には、このようにアクセスに晒すことが適切であろう。更に、BTコンテナメモリの外に対するメモリ参照を、アプリケーションソフトウェアの命令ページのみに限定することができる。また、BTソフトウェアがバイナリ変換タスクを実行するためには読み取り許可で十分である場合には、BTソフトウェアに読み取り許可のみが与えられる。BTソフトウェアによるゲストプロセッサの状態アクセスは、バイナリ変換タスクのために十分なゲストプロセッサの状態のサブセットに限定されてよい。言い換えると、BTソフトウェアにとっては、変換に必要なゲスト状態のみが利用可能となり、これにより、BTソフトウェアが使用しないプロセッサリソースにはアクセスされない。ある実施形態では、更に、バイナリ変換がアプリケーション(つまりユーザ)ソフトウェアコードのみに対して実行される場合、ホスト実体は、BTソフトウェアがゲストカーネル(例えばリング0)メモリにアクセスすることを妨げることもできる。この制御によって、BTソフトウェアは、動作に十分な最小限の特権及び特徴で動作することが可能となり、システムへの影響、変更、及び試験要件の範囲をより簡単にして、よりよいシステムセキュリティを実現することで、HW/SWが協調設計されたプロセッサの安全上のリスクを低減させロバストネスを向上させる一助となる。
本発明のある実施形態を利用することで、部分変換モデルを、プロセッサの1以上のコアの上に実現することができる。このようにすることで、ISAを仮想化して、複数のBT利用を可能として、ワットあたりのパフォーマンスを上げることができる。このような例の1つでは、コードが非ベクトル幅または、より小さいベクトル幅のハードウェアについて書き込まれたベクトルコアでベクトル幅のオペレーションを実行するためにBTメカニズムが利用される。このようにすることで、BTメカニズムは、元のソフトウェアが、より幅の狭い前の生成ベクトルレジスタまたは非ベクトルレジスタでの利用のために書き込まれた場合であっても、より幅の広いベクトルレジスタを利用するためにソフトウェアを変換することができる。この具体例では、Intel(登録商標)ISAのストリーミングSIMD拡張(SSE)命令を利用するソフトウェアが変換されて、代わりに、Intel(登録商標)ISA高度ベクトル拡張(AVX)命令が利用される。また更に、この特徴を実行するための追加の専用のハードウェアを含めるのではなく、ここで説明するBTメカニズムによってISA特徴拡張を提供することによって、ISA整合を、より小さいコアサイズで実現することができる。例えば、より小さいコアは、AVXサポートをもたず、SSEサポートしか持たない場合がある。BTは、AVX命令を利用するソフトウェアを変換することで、代わりにSSE命令を利用することができる。これにより、ISA整合が提供され、より小さいコアのISAギャップが埋まる。
このHW及びSWの協調設計されたフレームワークは、ここで記載されるようにBTに利用することができるが、他の利用モデルに、既存のOS/VMMに変更を行わずに、プロセッサ特徴及び値(例えばパフォーマンス、電力管理、及び、ISA拡張/エミュレーション)を増させるために利用することも可能である。
幾つかの実施形態では、システム管理モード(SMM)等のプラットフォームファームウェアコンポーネントが、サーバRAS(server reliability/availability/serviceability:サーバ信頼性/利用可能性/サービス提供性)特徴と共存するべく、BTコンテナ及びBTソフトウェアのトラステッド・バウンダリ内に位置してよい。しかし、他の実施形態では、これらのコンポーネントは、一定のHW拡張(例えばHWベースのメモリ暗号化及び整合性チェック)をもつトラステッド・バウンダリの外に位置することで、HW及びSWの協調設計されたプロセッサのソフトウェアコンポーネントに対するSMMコード及びHWアタックに対する耐性を向上させてもよい。
図1を参照すると、本発明のある実施形態におけるシステムの一部のブロック図が示されている。図1に示すように、システム100の該一部は、協調設計されたプロセッサ110と、ソフトウェアスタック190とのインタラクションとを含む。プロセッサ設計の多くの異なるタイプが、この協調設計されたプロセッサのベースラインとして利用可能であるが、ある実施形態では、プロセッサ110は、同種のコアのセットまたは異種コアの集合体であってよい複数のプロセッサコア(例えば1以上の低電力コア及び1以上のこれより高い電力のコア)を含むマルチコアプロセッサであってよい。加えて、グラフィックプロセッサ及びその他の専用プロセッシングユニット等の更なるプロセッシングユニットが存在してもよいことを理解されたい。ある実施形態では、プロセッサ110が、Intel(登録商標)64ISA等の特定のタイプのISAについて設定されてもよい。もちろん、別のIntel(登録商標)ISA(例えばIntel(登録商標)32ISA)、または、ARMベースのISA等の別のタイプのISA等の他のプロセッサISAが、代わりに存在してもよい。あるいは、プロセッサが、複数のISAで設定されてもよい。
図1に示す実施形態では、概して、様々なコア及びその他の実行論理がプロセッサハードウェア120に存在していてよい。本発明のある実施形態に則ったバイナリ変換を実施することを目的として、ハードウェア120は、ホスト実体論理122、保護論理124、及び、BTハードウェアユニット126を含む。様々な実施形態において、これら異なる論理ユニットは、プログラミング可能論理上で実行されるよう設定されたプロセッサマイクロコード等の、ハードウェア及び/またはプロセッサファームウェア拡張の集合体として形成されてよい。
概して、ホスト実体論理122は、BTコンテナをソフトウェアスタック190に対してトランスペアレントにするよう管理する制御論理を含んでよい。保護論理124は、BTコンテナ及びその中のソフトウェア専用のメモリのレンジを示すための、レンジ値(例えば第1の値及び第2の値)を格納するレンジレジスタ等のレジスタベースの保護メカニズムを含んでよく、したがってこれは、ソフトウェアスタックから隠され続けるよう制御される。他の実施形態では、複数のレジスタが、この保護論理内に存在してよく、複数のレジスタには、BTコンテナの保護されている領域の始めに対応しているベース値、及び、保護されている領域の最後を示すエンド値を格納するためのベースレジスタが含まれる。ある実施形態では、BTハードウェアユニット126は、BTコンテナ130内のネイティブコード実行及びバイナリ変換実行の間の制御移行を可能とするためのステアリング論理を含んでよい。このような実施形態の1つでは、ステアリング論理が、それぞれがネイティブコードセグメント及び対応するバイナリ変換を関連付ける複数のエントリを含む1以上のマッピングテーブルを含んでよく、または、これらに関連付けられていてよい。例えば、各エントリが、ネイティブコードセグメント用のエントリポイント、及び、例えば変換キャッシュ140内に格納されているバイナリ変換のための対応するエントリポイントを含んでよい。
図1から更にわかるように、プロセッサハードウェア120は、BTコンテナ130とインターフェースする。このコンテナは、隔離され、隠れた仮想マシン実行環境であり、したがってソフトウェアスタック190に対してトランスペアレントである。この隠れた環境は、ソフトウェアスタック190に対してトランスペアレントとなるようにプロセッサファームウェア及び/またはマイクロコードを利用してハードウェア120によって制御されてよい。図示されている実施形態では、コンテナ130が、状態ストレージ132及びプライベートメモリ134を含む。概して、状態ストレージ132は、BTオペレーション中に利用するためにプロセッサの状態を格納してよい。より詳しくは、この状態ストレージは、状態レジスタ及び設定レジスタ、汎用レジスタ等を含む、全てのプロセッサの状態情報のコピーを格納してよい。幾つかの実施形態では、この状態ストレージが、マルチステッドであってよい。加えて、BTコンテナ130が、BTソフトウェアが内部に格納されてよいプライベートメモリ134を含む。幾つかの実施形態では、このプライベートメモリは、プロセッサのキャッシュメモリの1以上のレベルの一時的ストレージと、システムメモリのストレージとを含む複数レベルのヒエラルキーをもつものであってよい。
概して、BTソフトウェアは、様々なコンポーネントを含んでよく、その幾つかを図1に示す。具体的には、BTソフトウェアは、様々なISA拡張の最適化及び/またはエミュレーションを可能とするべく、バイナリ変換を実行するために利用されるトランスレータ135を含んでよい。加えて、ランタイム層136がランタイム中に利用されて、変換されたコードを実行する。また更に、システム層138は、BTコンテナ130と基礎となるプロセッサハードウェア120との間のインターフェースとして機能するよう設定されてよい。
BTソフトウェアが生成するバイナリ変換は、変換キャッシュ140に格納される。様々な実施形態では、BTハードウェアユニット126及び/またはBTソフトウェアは、実行されるネイティブコードのための対応するバイナリ変換の存在を特定し、これにより、BTコンテナ130内の状態ストレージ132から取得したプロセッサの状態を利用するバイナリ変換の実行用にプロセッサを適切に設定させるよう設定されてよい。
図1の参照を続けると、ソフトウェアスタック190が存在しており、プロセッサ110上で実行される。概して、ソフトウェアスタック190は、VMM層192、OS層194、及び、アプリケーション層195を含む。図1に示す例では、複数のアプリケーション196a‐196nが、アプリケーション層195内に存在していてよい。概してこれらのアプリケーションは、ユーザが要求するタスクを実行するために利用されるユーザレベルのアプリケーションであってよい。
概して、ソフトウェアスタック190の様々なソフトウェアは、プロセッサ120上でネイティブに実行されてよい。しかし、ホットコードまたはその他のコード(例えばプロセッサ110のネイティブISAがサポートしていない命令を含むコードなど)等のコードの少なくとも一定の部分は、バイナリ変換の恩恵を得るだろう。このようなコードは、例えばホスト実体論理122を介して検出されてよく、これは、BTコンテナ130をトリガして、バイナリ変換を実行させ、これを変換キャッシュ140にインストールさせてよい。したがって、変換されたネイティブコード部分へのエントリポイントに遭遇すると、プロセッサハードウェア120の少なくとも一つの部分(例えば1シングルコア、コア等の実行等)は、状態ストレージ132に存在しているプロセッサの状態を利用して、変換キャッシュ140内で、変換されたコードの実行を可能とするよう設定されてよい。図1の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
図2を参照すると、本発明の別の実施形態における協調設計されたプロセッサのブロック図が示されている。図2に示されているように、プロセッサ200は、マルチコアプロセッサである。より詳しくは、プロセッサ200は、それぞれ異なるタイプのプロセッシングユニットを含む非対称マルチプロセッサであってよい。図2に示される実施形態では、プロセッサ200は、大きいコアとして設定されてよい、第1の複数のコア2100-210n(一般的にはコア210)を含む。「大きいコア」とは、これらコアが、あるISAを完全にサポートすることができるよう設定されてよいことを意味する。例えばこれらコアは、高度ベクトル拡張(AVX)命令等のベクトルサポートを含む、一定のIntel(登録商標)ISAをサポートしていてよい。したがって、大きいコア内の実行ユニットの1以上のデータパスは、一定のベクトル幅(例えば128ビット、256ビット、512ビット)または別のベクトル幅をもっていてよい。比較的幅の広いベクトルデータパスが与えられると、大きいコアが、実行中に、少なくともベクトル命令の実行中に、比較的多量の電力を消費する可能性がある。
多くのアプリケーションがこれらのベクトル命令の利点を享受しているが、他のタイプのアプリケーションは、これら命令を利用しない場合もあるので、大きいコア210のより大きな電力消費から恩恵を受けない場合がある。この目的を達成するために、プロセッサ200は更に、複数の小さいコア2120-212n(総称してコア212)を含む。「小さいコア」とは、大きいコアのうちの、異種設計を持っていてよいこれらコアが、より低い電力消費を有していてよいことを意味している。例えば、これらの小さいコアは、別のISA、または、大きいコアのISAのサブセットのみをサポートしていてよい。例えば、小さいコア212は、AVX命令等のベクトル命令のためにサポートを提供しなくてよい。このように、小さいコアの1以上の実行ユニットのデータパスは、大きいコア210の実行ユニットのデータパスより小さい幅を有してよい。
様々なタイプのコアに加えて、更なるプロセッシングユニットがプロセッサ200内に存在していてよい。図2に示す実施形態では、複数のグラフィックエンジン2140-214nが提供されてよい。これらグラフィックエンジンは、グラフィックプロセッシングを実行するために利用されてよいグラフィックプロセッシングユニット(GPU)であってよい。しかし、更なる/異なるプロセッシングをこれらグラフィックエンジン上で実行してもよい点を理解されたい。例えば、汎用グラフィックプロセッシングユニット(GPGPU)モデルでは汎用命令を実行することができる。また更なるプロセッシングユニットが、プロセッサ200内に存在していてもよい(図2では説明の便宜上図示していない)。
図2の参照を更に続けると、様々なコア及びその他のプロセッシングユニットが、ある実施形態ではラストレベルキャッシュ(LLC)であってよい、共有キャッシュメモリ215に連結されている。幾つかの実施形態では、このキャッシュメモリが、コア/グラフィックエンジンのそれぞれに関連付けられている1以上のバンクをもつ分散型のキャッシュメモリであってよい。
動的バイナリオペレーションをもたらすために、プロセッサ200は更に、バイナリ変換を制御及び実行するための様々なハードウェアを含む。図2に示す実施形態では、プロセッサ200が、バイナリ変換コンテナ225に連結されたバイナリ変換制御論理220を含む。そしてバイナリ変換コンテナ225が、変換キャッシュ228に連結されている。
概して、BT制御論理220は、BTコンテナ225内で実行されるBTソフトウェアへの、またはBTソフトウェアからの呼び出しを直接制御するよう設定されてよい。例えば、BT制御論理220は、例えば最適化またはその他のエミュレーション特徴を利用するために、バイナリ変換が適しているコードセグメントを特定するよう設定されていてよい。従ってBT制御論理220は、BTコンテナ225内のBTソフトウェアに対して、一定のコードセグメントのためのバイナリ変換を生成するよう命令して、BTソフトウェアに、変換キャッシュ228内に、生成されたバイナリ変換を格納させてよい。加えて、BT制御論理220は、バイナリ変換が利用可能なコードセグメントへのエントリポイントに遭遇したとき、バイナリ変換に制御移行を可能とするように、ステアリング論理(またはその他のプロセッサ論理)をプログラムしてよい。ある実施形態では、このプログラミングは、ネイティブコードセグメントと、インスツルメント(instrumented)コードセグメントとを関連付けるエントリをマッピングテーブルに書き込むことを含んでよい。
動的バイナリ変換は、コード最適化及びISAエミュレーション等のための様々な状況のために実行されてよい。具体的な1つの状況は、コアがサポートしない1以上の命令を持つコードを実行することを目的としている。例えば、一実施形態において上述したように、小さいコア212は、ベクトル命令のサポートを提供しなくてよい。しかし、大きいコアと比べて小さいコアに電力消費上の利点があるという前提において、限定された数のベクトル命令が1つのコードセグメント内に出現し、このコードセグメントを小さいコアで実行させることが望ましい。したがってBT制御論理220は、BTソフトウェアに、一定の小さいコア212の上で実行させるべくこれらベクトル命令のエミュレーションを可能とするために、例えば少数のベクトル命令を持つコードセグメントのバイナリ変換を生成させることができる。
図2に対する参照を続けると、プロセッサ200は更に、電力制御ユニット(PCU)232を介したプロセッサのための電力制御等の総括的な監督機能を提供することができるシステムエージェント回路230を含む更なる回路を含む。加えて、統合されたメモリコントローラ234が、ダイナミックランダムアクセスメモリ(DRAM)等のシステムメモリにインターフェースを提供する。システムエージェント230は更に、マルチプロセッサシステムの他のプロセッサ、ペリフェラルコントローラ及びその他のシステムコンポーネント等の、システムの他のエージェントに対するインターフェースを可能とするための、1以上のインターフェース236を含んでよい。図2の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
図3を参照すると、本発明のある実施形態における方法のフロー図が示されている。概して、図3の方法300は、プロセッサの様々な論理の組み合わせによって実行され、変換されたコードを生成して、実行中に、生成されたバイナリ変換されたコードに対応するネイティブコードに呼び出しが行われるとき、プロセッサが、この変換されたコードへの制御移行を実行できるよう、構成してよい。
図3では、方法300は、1以上の重要なコードセグメントを特定するように、コード実行をプロファイリングすることによって開始される(ブロック310)。ここで記載する例では、このコードのプロファイリングは、ホットスポットコード、自己修正コード、エミュレートされるコード(例えば、その上で実行されてよい所与のコアがサポートしないISA命令のためのもの)等を特定するために実行されてよい。
図3の参照を続けると、実行が続けられ、プロファイリングが実行された後に、特定されたコードセグメントに関する情報(例えばホットスポットコード、自己修正コード、エミュレートされるコード)をバイナリ変換エージェントに提供することができる(ブロック320)。例としては、このバイナリ変換エージェントが、ここで説明するバイナリ変換エンジンであってよい。次に制御はブロック330に移行され、ここで、インスツルメントコードセグメントが、コードセグメントから生成され、装備キャッシュに格納されてよい。例としては、このインスツルメントコードの生成には、プロセッサの所与のコアまたはその他のプロセッシングユニットによってサポートされない1以上の命令をエミュレートするための1以上のエミュレーションルーチンが含まれてよい。このようにすることで、インスツルメントコードが、エミュレートされたコードの、より低いコストでの実行を可能とするエミュレーション機能を提供する(例えば、より低い電力消費コアにおいて)。ある実施形態では、変換生成中にOS及びアプリケーションコードの前進予想を確実にするために、時間チェックを行ってよい。このイベントが起こった場合、制御は、ネイティブコードの実行に戻る。次のホットスポットイベントは、プロセッサを、変換生成タスクに戻す。
図3の説明を続けると、制御は次に、ブロック340に移行して、プロセッサのステアリング論理が、このインスツルメントコードセグメントを指すようにプログラムされてよい。つまり、BTハードウェアユニット等のステアリング論理は、ネイティブコードセグメント(つまり、特定された重要なコードセグメント)と、ネイティブコードセグメントのために実行される、インスツルメントコードセグメントとの間の対応関係を特定するエントリで更新される1以上のマッピングテーブルを含んでよい。従ってこのプログラミングは、論理に、今は変換されているネイティブコードへのエントリポイントに遭遇したときに、ネイティブコードから、インスツルメントコードの実行への移行またはステアリングの実行を可能とさせる。図3の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
図4を参照すると、本発明のある実施形態における変換されたコードに低オーバヘッド転送を実行するための方法のフロー図である。図4の方法400は、BT制御論理及びその他のプロセッサ論理を含むプロセッサの様々な論理によって実行されてよい。図示されているように、方法400は、ダイアモンド410で、第1のコードセグメントへのエントリポイントに遭遇したかを判断することから開始されてよい。ある実施形態では、このエントリポイントが、バイナリ変換が実行されたコードセグメントの第1の命令の呼び出しであってよい。このような呼び出しが受信されない場合には、ブロック420で通常のコード実行が続けられてよい。このようなコードの呼び出しが受信された場合には、制御はブロック430に移行して、インスツルメントコードセグメントに制御を移すために、ステアリング論理をイネーブルする。一実施形態では、この制御移行のイネーブルが、ネイティブコードセグメントエントリポイントを、変換されたコードセグメントエントリポイントに関連付けるマッピングテーブルへのアクセスによって実行されてよい。
バイナリ変換の実行をイネーブルするために、制御がブロック440に移され、ここでプロセッサに格納されているネイティブコンテキストと、バイナリ変換コンテキストとの間のスワッピングが生じる。ある実施形態では、スワッピングは、プロセッサの状態を、プロセッサの状態ストレージにセーブして、BTコンテナ内のBT状態ストレージからBTプロセッサの状態を、プロセッサの様々なレジスタにロードすることを含み、様々なレジスタには、設定レジスタ及び状態レジスタ、汎用レジスタ等が含まれる。次に、制御はブロック450に移され、インスツルメントコードセグメントが実行されて、サポートされていない特徴をエミュレートすることができる。
実行中に、例外または外部割込みが生じ得、これがダイアモンド460で判断される。このようなイベントが生じない場合には、インスツルメントコードセグメントが、実行を完了してよい(ブロック480)。従って、ブロック420で、ネイティブコードの実行継続が行われてよい。
反対にこのようなイベントが生じた場合には、制御はブロック470に移行する。ブロック470では、別のコンテキスト切り替えが生じ、ネイティブ状態の、プロセッサへの再度のロードが可能となってよい。そして制御はブロック480に移され、ネイティブコードが実行されて、割り込みまたは例外が処理されてよい。 そして、バイナリ変換のために更なる作業を行う必要があるときには、制御が前述したブロック430に戻され、バイナリ変換の実行継続が行われる。図4の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
本発明のある実施形態に従って協調設計された仮想マシンとして実装されたプロセッサのコンポーネントを例示するために、図5を参照する。図5に示されているように、協調設計環境600は、プロセッサ605とメモリ620とを含み、メモリ620は、一実施形態では、ダイナミックランダムアクセスメモリ(DRAM)等のシステムメモリであってよい。図示されているように、プロセッサ605は、所与のマイクロアーキテクチャを有してよく、例えばポイント−ツー−ポイントインターコネクト、バスによって、またはその他の類似した方法によって、メモリ620に連結されてよい。メモリ620の可視(visible)部分、つまり第1の部分630には、1以上のオペレーティングシステム635及びアプリケーションプログラム638が格納されてよい。この部分は、ユーザレベルコード(つまりアプリケーションプログラム638)から見ることができるために、及び、OS(OS635及びプログラム638の両方)から見ることができるために、「可視」と称される。これらプログラムで実行される命令のタイプに応じて、直接、プロセッサ605と通信することができる(例えば、これらの命令を処理するためにプロセッサ内に存在する命令デコーダを利用することにより)。
変換されたコードを利用して最適化することができる様々なコードシーケンスにおいて、または、マイクロアーキテクチャサポートが提供されないようなシーケンスにおいて、実施形態では、変換されたコードをプロセッサ605に提供するために、メモリの隠れた部分、つまり、第2の部分640を利用することができる。具体的には、示されているように、OS635及びアプリケーションプログラム638の両方が、BTエンジン645と通信してよく、BTエンジン645は、解釈、変換、及び最適化メカニズムを含むランタイム実行ユニットを含んでよい。隠されたメモリ640は、OSまたはアプリケーションプログラムからは、見えず、または、アクセスすることができない。従ってBTエンジン645は、変換キャッシュ648に、実行のためにプロセッサ605に提供することができる、変換されたコードを含んでよい、コード及びアドレス情報を提供してよい。一実施形態では、変換キャッシュ648に格納されているコードを暗号化することができる。この変換されたコードは、プロセッサの基礎となるマイクロアーキテクチャのために書き込まれ、最適化されてよい(例えばターゲットISAコード)。
図示されているように、協調設計プロセッサであってよいプロセッサ605は、命令をOSまたはアプリケーションプログラムから直接受信することができる命令フェッチャ606等のフロントエンドユニットを含む。例えばアプリケーションプログラムのユーザレベル命令に対応しているマクロ命令であってよいこれら命令は、デコーダ607を利用してデコードすることができ、デコーダ607は、命令をデコードして、対応するuops(例えばプロセッサ605のマイクロコードストレージに存在する)にアクセスするよう動作することができる。そしてデコーダ607は、このuopsを、1以上の実行ユニット608に提供してよく、1以上の実行ユニット608は、様々な算術論理オペレーションユニット(ALU)、専用ハードウェア、及び、その他のタイプの計算ユニットを含んでよい。これら命令の結果は、リタイヤユニット609に提供されてよく、リタイヤユニット609は、不良または例外が生じなかった場合には、命令をリタイヤして、これにより結果をプロセッサのアーキテクチャ状態に、プログラム順に格納するよう動作する。インオーダマシンとして説明されるが、実施形態は、アウトオブオーダマシンを利用しても同様に実装することができる。
実施形態は、多くの様々なタイプのシステムに実装されてよい。 図6を参照すると、本発明のある実施形態におけるシステムのブロック図が示されている。図6に示されているように、マルチプロセッサシステム700は、ポイント−ツー−ポイントインターコネクトシステムであり、ポイント−ツー−ポイントインターコネクト750を介して連結された第1のプロセッサ770と第2のプロセッサ780とを含む。図6では、各プロセッサ770及び780が、(第1プロセッサコア及び第2プロセッサコア(つまりプロセッサコア774a及び774b並びにプロセッサコア784a及び784b)を含む)マルチコアプロセッサであるが、これより多くのコアがプロセッサに存在していてもよい。。プロセッサのそれぞれは、ここで説明するBTコンテナを作成及び管理する論理を含んでよい。
図6の参照を更に続けると、第1のプロセッサ770は更にメモリコントローラハブ(MCH)772と、ポイント−ツー−ポイント(P−P)インターフェース776及び778とを含む。同様に、第2のプロセッサ780は、MCH782と、P−Pインターフェース786及び788とを含む。図6に示すように、MCH772及び782は、プロセッサをメモリそれぞれ(つまり、メモリ732及びメモリ734)に連結し、これらメモリは、それぞれのプロセッサにローカルに接続された、システムメモリ(例えばDRAM)の一部であってよい。第1のプロセッサ770及び第2のプロセッサ780は、P−Pインターコネクト752及び754をそれぞれ介してチップセット790に連結されてよい。図6に示すように、チップセット790はP−Pインターフェース794及び798を含む。
更にチップセット790は、チップセット790と高性能グラフィックスエンジン738とを、P−Pインターコネクト739により連結するインターフェース792を含む。そしてチップセット790は、インターフェース796を介して第1のバス716に連結されてよい。図6に示すように、第1のバス716を第2のバス720に連結するバスブリッジ718とともに、様々な入出力(I/O)デバイス714が第1のバス716に連結されてよい。例えば一実施形態では、キーボード/マウス722、通信デバイス726、及び、コード730を含みうるデータ格納ユニット728(例えば、ディスクドライブその他の大容量記憶デバイス)を含む様々なデバイスが第2のバス720に連結されてよい。更にオーディオI/O724が第2のバス720に連結されてよい。実施形態は、スマートセルラーテレフォン、タブレットコンピュータ、ネットブック等のモバイルデバイスを含む他のタイプのシステムに含めることができる。
以下の例は、更なる実施形態に関する。
ある例では、プロセッサが、第1の命令セットアーキテクチャ(ISA)の命令を実行する第1のコアと、第2のISAの命令を実行する第2のコアと、プロセッサによりソフトウェアスタックにトランスペアレントに制御されるバイナリ変換コンテナとを備え、バイナリ変換コンテナは、コードセグメントを受け取り、コードセグメントのバイナリ変換を生成し、バイナリ変換を変換キャッシュに格納するバイナリ変換エンジンを含み、バイナリ変換は、第2のISA内で利用不可能な第1のISAの命令をエミュレートするための少なくとも1つのエミュレーションルーチンを含み、第2のコアがバイナリ変換を実行し、第2のコアは第1のコアと非対称である。
ある例では、少なくとも1つのエミュレーションルーチンは、第2のコアに、第1のベクトルオペランドにオペレーションを実行する命令を実行することを可能にさせ、第2のコアのデータパスの幅は、第1のベクトルオペランドの幅未満である。
ある例では、プロセッサは、コードセグメントを含むアプリケーションをプロファイリングして、バイナリ変換エンジンに、プロファイリングに呼応してバイナリ変換を生成させる。
ある例では、プロセッサは、それぞれがネイティブコードセグメントをバイナリ変換コードセグメントに関連付ける、複数のエントリを含むマッピングテーブルを含む。
ある例では、プロセッサは、マッピングテーブルにアクセスして、コードセグメントへのエントリポイントに遭遇して、マッピングテーブルが、コードセグメントをバイナリ変換に関連付けるエントリを含むとき、コードセグメントの代わりに、バイナリ変換を実行する。
ある例では、バイナリ変換エンジンは、コードセグメントの代わりにバイナリ変換を実行させるステアリング論理を含む。
ある例では、第2のコアは、第1のコアよりも低い電力消費レベルを有する。
上述したプロセッサは、様々な手段を用いて実装することができる。
ある例では、プロセッサが、ユーザ機器の接触式デバイスに組み込まれるシステムオンチップ(SoC)を含む。
別の例としては、システムが、ディスプレイ及びメモリを含み、上述した例の1以上のプロセッサを含む。
別の例では、マシンにより実行されると、マシンに、方法を実行させる命令を格納したマシン可読媒体が提供され、方法は、プロセッサのバイナリ変換エージェントで、第1のコードセグメントのためのバイナリ変換を実行する命令を受信する段階と、第1の命令セットアーキテクチャ(ISA)の第1の命令をサポートしていないプロセッサのコアの上で実行されると、第1の命令をエミュレートする第1のルーチンを含む、第1のコードセグメントのための、インスツルメントコードセグメントを生成する段階と、インスツルメントコードセグメントを、装備キャッシュメモリに格納する段階と、第1のコードセグメントへのエントリポイントに遭遇したときに、第1のコードセグメントの代わりにインスツルメントコードセグメントを実行することをコアに可能とするよう、プロセッサをプログラミングする段階と
を備える。
ある例では、バイナリ変換エージェントは、プロセッサの上で実行されるソフトウェアスタックに対してトランスペアレントである。
ある例では、マッピングテーブルにエントリを格納する命令は、装備キャッシュメモリ内のインスツルメントコードセグメントの位置に、エントリポイントを関連付ける。
ある例では、マッピングテーブルにエントリを格納する命令は、コアに、第2のコードセグメントの代わりに、第2のインスツルメントコードセグメントを実行させ、第2のコードセグメントは、ホットスポットを含む。
ある例では、マシン可読媒体は更に、コアに、第3のコードセグメントの代わりに、第3のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を実行させる命令を更に備え、第3のコードセグメントは、自己修正コードを含む。
別の例では、プロセッサが、第1のコードセグメントのバイナリ変換を生成して、バイナリ変換を変換キャッシュに格納するコードを含む、バイナリ変換コンテナ(BTコンテナ)と、
BTコンテナを管理して、第1のコードセグメントを特定するホスト実体論理と、BTコンテナをソフトウェアスタックから隔離する保護論理とを備え、ソフトウェアスタックは、仮想マシンモニタ(VMM)層と、オペレーティングシステム(OS)層と、アプリケーション層とを含み、BTコンテナは、ソフトウェアスタックに対してトランスペアレントである。
ある例では、保護論理は、BTコンテナの位置を特定するためのレンジ値を格納する少なくとも1つのレジスタを有する。
ある例では、ホスト実体論理は、BT呼び出しへのエントリがあると、プロセッサの状態を第1の状態ストレージに格納させ、BTコンテナのBT状態ストレージに格納されているBT状態を、プロセッサ内にロードする。
ある例では、ホスト実体論理は、ソフトウェアスタックのアプリケーションの実行を可能とするために第1のタイムカンタムのためのバイナリ変換が実行された後で、BT状態を、BTコンテナのBT状態ストレージに格納させ、プロセッサの状態を第1の状態ストレージからロードする。
ある例では、ホスト実体論理は、プロセッサのアイドルコアの上でのバイナリ変換の実行を可能とするために、アイドルコアの状態ストレージにBT状態をロードさせ、ソフトウェアスタックのアプリケーションは、プロセッサの第2のコアの上で実行される。
ある例では、ホスト実体論理は、ソフトウェアスタックのVMM層及びOS層へのBTコンテナのアクセスを回避させる。
ある例では、ホスト実体論理は、ソフトウェアスタックのアプリケーション層へのBTコンテナの書き込みアクセスを回避させる。
ある例では、ホスト実体論理は、BTコンテナの、プロセッサの状態の第1のサブセットへのアクセスを可能として、BTコンテナの、プロセッサの状態の第2のサブセットへのアクセスを回避させる。
別の例では、方法が、プロセッサのバイナリ変換エージェントで、第1のコードセグメントのためのバイナリ変換を実行する命令を受信する段階と、第1の命令セットアーキテクチャ(ISA)の第1の命令をサポートしていないプロセッサのコアの上で実行されると、第1の命令をエミュレートする第1のルーチンを含む、第1のコードセグメントのための、インスツルメントコードセグメントを生成する段階と、インスツルメントコードセグメントを、装備キャッシュメモリに格納する段階と、第1のコードセグメントへのエントリポイントに遭遇したときに、第1のコードセグメントの代わりにインスツルメントコードセグメントを実行することをコアに可能とするよう、プロセッサをプログラミングする段階とを備える。
ある例では、バイナリ変換エージェントは、プロセッサの上で実行されるソフトウェアスタックに対してトランスペアレントである。
ある例では、方法が、装備キャッシュメモリ内のインスツルメントコードセグメントの位置に、エントリポイントを関連付けるために、マッピングテーブルにエントリを格納する段階を更に備える。
ある例では、方法は、コアに、第2のコードセグメントの代わりに、第2のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、第2のコードセグメントは、ホットスポットを含む。
ある例では、方法が、コアに、第3のコードセグメントの代わりに、第3のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、第3のコードセグメントは、自己修正コードを含む。
別の例では、プロセッサが、第1のコードセグメントのバイナリ変換を生成して、バイナリ変換を変換キャッシュに格納するコードを含む、バイナリ変換コンテナ手段(BTコンテナ手段)と、
BTコンテナ手段を管理して、第1のコードセグメントを特定するホスト実体手段と、BTコンテナ手段をソフトウェアスタックから隔離する保護手段とを備え、ソフトウェアスタックは、仮想マシンモニタ(VMM)層と、オペレーティングシステム(OS)層と、アプリケーション層とを含み、BTコンテナ手段は、ソフトウェアスタックに対してトランスペアレントである。
ある例では、保護手段は、BTコンテナ手段の位置を特定するためのレンジ値を格納する少なくとも1つのレジスタを有する。
ある例では、ホスト実体手段は、BT呼び出しへのエントリがあると、プロセッサの状態を第1の状態ストレージに格納させ、BTコンテナ手段のBT状態ストレージに格納されているBT状態を、プロセッサ内にロードする。
ある例では、ホスト実体手段は、ソフトウェアスタックのアプリケーションの実行を可能とするために第1のタイムカンタムのためのバイナリ変換が実行された後で、BT状態を、BTコンテナ手段のBT状態ストレージに格納させ、プロセッサの状態を第1の状態ストレージからロードする。
ある例では、ホスト実体手段は、プロセッサのアイドルコアの上でのバイナリ変換の実行を可能とするために、アイドルコアの状態ストレージにBT状態をロードさせ、ソフトウェアスタックのアプリケーションは、プロセッサの第2のコアの上で実行される。
ある例では、ホスト実体手段は、ソフトウェアスタックのVMM層及びOS層へのBTコンテナのアクセスを回避させる。
ある例では、ホスト実体手段は、ソフトウェアスタックのアプリケーション層へのBTコンテナの書き込みアクセスを回避させる。
ある例では、ホスト実体手段は、BTコンテナの、プロセッサの状態の第1のサブセットへのアクセスを可能として、BTコンテナの、プロセッサの状態の第2のサブセットへのアクセスを回避させる。
別の例では、命令を含むコンピュータ可読媒体が、上述した例のうちのいずれかの方法を実行する。
別の例では、装置が、上述した例のうちのいずれかの方法を実行する手段を有する。
ある例では、通信デバイスが、上述した例のうちのいずれかの方法を実行するよう、構成される。
ある例は、コンピューティングデバイス上で実行されることに呼応して、コンピューティングデバイスに、上述した例のうちのいずれかの方法を実行させる複数の命令を含む少なくとも1つのマシン可読媒体である。
上述した例の様々な組み合わせが可能である点を理解されたい。
実施形態は、様々な異なるタイプのシステムで利用されてよい。例えば、一実施形態では、通信デバイスが、ここに記載した様々な方法及び技術を実行するよう構成されてよい。 もちろん、本発明の範囲は通信デバイスに限定されず、他の実施形態は、命令を処理する他のタイプの装置、または、コンピューティングデバイス上で実行されると、デバイスにここで記載した方法及び技術の1以上を実行させる命令を含む1以上のマシン可読媒体を対象としていてよい。
実施形態はコードで実装することができ、命令を実行するようシステムをプログラムするために利用することができ、命令を格納した記憶媒体に格納されてよい。記憶媒体は、これらに限定はされないが、フロッピー(登録商標)ディスク、光ディスク、固体ドライブ(SSD)、CD−ROM(シーディーロム)、書き換え可能CD(CD−RW)、及び、光磁気ディスク、半導体デバイス(例えば読み出し専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)等のランダムアクセスメモリ(RAM)、消去可能かつプログラム可能な読み出し専用メモリ(EPROM)、フラッシュメモリ、電気的に消去可能かつプログラム可能な読み出し専用メモリ(EEPROM)等)、磁気または光カード、または、電子命令を格納する用途に適した任意の他のタイプの媒体を含んでよい。
本発明は、限定された数の実施形態に関して説明されたが、当業者であればこれら実施形態に基づき、様々な変形例及び変更例を想到する。添付請求項は、これら変形例及び変更例の全てを、本発明の真の精神及び範囲内に含まれるものとして含むことが意図されている。

Claims (24)

  1. 第1の命令セットアーキテクチャ(ISA)の命令を実行する第1のコアと、
    第2のISAの命令を実行する第2のコアと、
    プロセッサによりソフトウェアスタックにトランスペアレントに制御されるバイナリ変換コンテナと
    を備える前記プロセッサであって、
    前記バイナリ変換コンテナは、コードセグメントを受け取り、前記コードセグメントのバイナリ変換を生成し、前記バイナリ変換を変換キャッシュに格納するバイナリ変換エンジンを含み、前記バイナリ変換は、前記第2のISA内で利用不可能な前記第1のISAの命令をエミュレートするための少なくとも1つのエミュレーションルーチンを含み、前記第2のコアが前記バイナリ変換を実行し、
    前記第2のコアは前記第1のコアと非対称である、プロセッサ。
  2. 前記少なくとも1つのエミュレーションルーチンは、前記第2のコアに、第1のベクトルオペランドにオペレーションを実行する命令を実行することを可能にさせ、
    前記第2のコアのデータパスの幅は、前記第1のベクトルオペランドの幅未満である、請求項1に記載のプロセッサ。
  3. 前記プロセッサは、前記コードセグメントを含むアプリケーションをプロファイリングして、前記バイナリ変換エンジンに、前記プロファイリングに呼応して前記バイナリ変換を生成させる、請求項1または2に記載のプロセッサ。
  4. 前記プロセッサは、それぞれがネイティブコードセグメントをバイナリ変換コードセグメントに関連付ける、複数のエントリを含むマッピングテーブルを含む、請求項1から3の何れか一項に記載のプロセッサ。
  5. 前記プロセッサは、前記マッピングテーブルにアクセスして、前記コードセグメントへのエントリポイントに遭遇して、前記マッピングテーブルが、前記コードセグメントを前記バイナリ変換に関連付けるエントリを含むとき、前記コードセグメントの代わりに、前記バイナリ変換を実行する、請求項4に記載のプロセッサ。
  6. 前記バイナリ変換エンジンは、前記コードセグメントの代わりに前記バイナリ変換を実行させるステアリング論理を含む、請求項1から5の何れか一項に記載のプロセッサ。
  7. 前記第2のコアは、前記第1のコアよりも低い電力消費レベルを有する、請求項1から6の何れか一項に記載のプロセッサ。
  8. プロセッサのバイナリ変換エージェントで、第1のコードセグメントのためのバイナリ変換を実行する命令を受信する段階と、
    第1の命令セットアーキテクチャ(ISA)の第1の命令をサポートしていない前記プロセッサのコアの上で実行されると、前記第1の命令をエミュレートする第1のルーチンを含む、前記第1のコードセグメントのための、インスツルメントコードセグメントを生成する段階と、
    前記インスツルメントコードセグメントを、装備キャッシュメモリに格納する段階と、
    前記第1のコードセグメントへのエントリポイントに遭遇したときに、前記第1のコードセグメントの代わりに前記インスツルメントコードセグメントを実行することを前記コアに可能とするよう、前記プロセッサをプログラミングする段階と
    を備える、方法。
  9. 前記バイナリ変換エージェントは、前記プロセッサの上で実行されるソフトウェアスタックに対してトランスペアレントである、請求項8に記載の方法。
  10. 前記装備キャッシュメモリ内の前記インスツルメントコードセグメントの位置に、前記エントリポイントを関連付けるために、マッピングテーブルにエントリを格納する段階を更に備える、請求項8または9に記載の方法。
  11. 前記コアに、第2のコードセグメントの代わりに、第2のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、
    前記第2のコードセグメントは、ホットスポットを含む、請求項8から10の何れか一項に記載の方法。
  12. 前記コアに、第3のコードセグメントの代わりに、第3のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、
    前記第3のコードセグメントは、自己修正コードを含む、請求項8から11の何れか一項に記載の方法。
  13. 第1のコードセグメントのバイナリ変換を生成して、前記バイナリ変換を変換キャッシュに格納するコードを含む、バイナリ変換コンテナ手段(BTコンテナ手段)と、
    前記BTコンテナ手段を管理して、前記第1のコードセグメントを特定するホスト実体手段と、
    前記BTコンテナ手段をソフトウェアスタックから隔離する保護手段と
    を備え、
    前記ソフトウェアスタックは、仮想マシンモニタ層(VMM層)と、オペレーティングシステム層(OS層)と、アプリケーション層とを含み、前記BTコンテナ手段は、前記ソフトウェアスタックに対してトランスペアレントである、プロセッサ。
  14. 前記保護手段は、前記BTコンテナ手段の位置を特定するためのレンジ値を格納する少なくとも1つのレジスタを有する、請求項13に記載のプロセッサ。
  15. 前記ホスト実体手段は、BT呼び出しへのエントリがあると、前記プロセッサの状態を第1の状態ストレージに格納させ、前記BTコンテナ手段のBT状態ストレージに格納されているBT状態を、前記プロセッサ内にロードする、請求項13または14に記載のプロセッサ。
  16. 前記ホスト実体手段は、前記ソフトウェアスタックのアプリケーションの実行を可能とするために第1のタイムカンタムのための前記バイナリ変換が実行された後で、前記BT状態を、前記BTコンテナ手段の前記BT状態ストレージに格納させ、前記プロセッサの状態を前記第1の状態ストレージからロードする、請求項15に記載のプロセッサ。
  17. 前記ホスト実体手段は、前記プロセッサのアイドルコアの上での前記バイナリ変換の実行を可能とするために、前記アイドルコアの状態ストレージに前記BT状態をロードさせ、前記ソフトウェアスタックのアプリケーションは、前記プロセッサの第2のコアの上で実行される、請求項15または16に記載のプロセッサ。
  18. 前記ホスト実体手段は、前記ソフトウェアスタックの前記VMM層及び前記OS層への前記BTコンテナのアクセスを回避させる、請求項13から17の何れか一項に記載のプロセッサ。
  19. 前記ホスト実体手段は、前記ソフトウェアスタックの前記アプリケーション層への前記BTコンテナの書き込みアクセスを回避させる、請求項13から18の何れか一項に記載のプロセッサ。
  20. 前記ホスト実体手段は、前記BTコンテナの、前記プロセッサの状態の第1のサブセットへのアクセスを可能として、前記BTコンテナの、前記プロセッサの状態の第2のサブセットへのアクセスを回避させる、請求項13から19の何れか一項に記載のプロセッサ。
  21. 請求項8から12のいずれか一項に記載の方法を実行するよう構成された通信デバイス。
  22. コンピューターに請求項8から12のいずれか一項に記載の方法を実行させるためのプログラム。
  23. 請求項8から12のいずれか一項に記載の方法を実行する命令を処理する装置。
  24. 請求項8から12のいずれか一項に記載の方法を実行する手段を備える装置。
JP2014042957A 2013-03-12 2014-03-05 協調設計されたプロセッサへの、隔離された実行環境の作成 Expired - Fee Related JP5936640B2 (ja)

Applications Claiming Priority (2)

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

Publications (3)

Publication Number Publication Date
JP2014174998A true JP2014174998A (ja) 2014-09-22
JP2014174998A5 JP2014174998A5 (ja) 2015-07-09
JP5936640B2 JP5936640B2 (ja) 2016-06-22

Family

ID=50554836

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014042957A Expired - Fee Related JP5936640B2 (ja) 2013-03-12 2014-03-05 協調設計されたプロセッサへの、隔離された実行環境の作成

Country Status (6)

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

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
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
US9417855B2 (en) * 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US9032381B2 (en) 2012-06-29 2015-05-12 Intel Corporation State recovery methods and apparatus for computing platforms
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
GB2554201B (en) * 2015-04-10 2022-05-11 Google Llc 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 网易(杭州)网络有限公司 一种游戏翻译方法和装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004355277A (ja) * 2003-05-28 2004-12-16 Matsushita Electric Ind Co Ltd プログラム実行制御装置、プログラム実行制御方法
JP2005157640A (ja) * 2003-11-25 2005-06-16 Mitsubishi Electric Corp 命令模擬装置、命令模擬方法及び命令模擬プログラム
JP2006039879A (ja) * 2004-07-26 2006-02-09 Aplix Corp クラスファイル実行方法およびJava(R)実行環境プログラム
JP2011134315A (ja) * 2009-12-23 2011-07-07 Intel Corp 部分的なエミュレーション環境におけるソース命令セットアーキテクチャ(isa)コードから、変換済みコードへの遷移
WO2012005949A2 (en) * 2010-06-29 2012-01-12 Intel Corporation Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type
WO2012125200A2 (en) * 2011-03-11 2012-09-20 Intel Corporation Dynamic core selection for heterogeneous multi-core systems
JP2012531001A (ja) * 2009-12-22 2012-12-06 インテル・コーポレーション 複数のコアおよびスレッドについてのタイムスタンプカウンタ(tsc)のオフセットの制御

Family Cites Families (36)

* 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
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
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
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
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
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
WO2009076324A2 (en) * 2007-12-10 2009-06-18 Strandera Corporation Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US8255882B2 (en) * 2004-12-30 2012-08-28 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仿真系统及其识别进程的方法
EP2159706B1 (en) 2007-06-19 2014-09-10 Fujitsu Limited Operation processing apparatus and operation processing method
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
CN101923492B (zh) 2010-08-11 2013-05-01 上海交通大学 面向嵌入式异构多核上执行动态分配指令的方法
US9417855B2 (en) * 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004355277A (ja) * 2003-05-28 2004-12-16 Matsushita Electric Ind Co Ltd プログラム実行制御装置、プログラム実行制御方法
JP2005157640A (ja) * 2003-11-25 2005-06-16 Mitsubishi Electric Corp 命令模擬装置、命令模擬方法及び命令模擬プログラム
JP2006039879A (ja) * 2004-07-26 2006-02-09 Aplix Corp クラスファイル実行方法およびJava(R)実行環境プログラム
JP2012531001A (ja) * 2009-12-22 2012-12-06 インテル・コーポレーション 複数のコアおよびスレッドについてのタイムスタンプカウンタ(tsc)のオフセットの制御
JP2011134315A (ja) * 2009-12-23 2011-07-07 Intel Corp 部分的なエミュレーション環境におけるソース命令セットアーキテクチャ(isa)コードから、変換済みコードへの遷移
WO2012005949A2 (en) * 2010-06-29 2012-01-12 Intel Corporation Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type
WO2012125200A2 (en) * 2011-03-11 2012-09-20 Intel Corporation Dynamic core selection for heterogeneous multi-core systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200701269029; 'Intelによる仮想化支援のアプローチ' 仮想化技術Expert 初版, 20070301, p.168-173, 株式会社技術評論社 *
JPN6015006017; 'Intelによる仮想化支援のアプローチ' 仮想化技術Expert 初版, 20070301, p.168-173, 株式会社技術評論社 *

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5936640B2 (ja) 協調設計されたプロセッサへの、隔離された実行環境の作成
US10963281B2 (en) Nested virtualization for virtual machine exits
Fisher-Ogden Hardware support for efficient virtualization
US10120691B2 (en) Context switching mechanism for a processor having a general purpose core and a tightly coupled accelerator
US8099541B2 (en) Minivisor entry point in virtual machine monitor address space
TWI407366B (zh) 具有微代碼之微處理器、在微處理器中儲存資料的方法、以及使用於計算裝置之電腦程式產品
US10162655B2 (en) Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels
US8561060B2 (en) Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine
US10255090B2 (en) Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
US7917740B1 (en) Virtualization assist for legacy x86 floating point exception handling
Varanasi Implementing Hardware-supported Virtualization in OKL4 on ARM
TWI620124B (zh) 虛擬機器控制結構陰影化技術
US20140245446A1 (en) Performing security operations using binary translation
US10019275B2 (en) Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels
US7966458B2 (en) Method and apparatus for controlling a primary operating system and an appliance operating system on the same machine
KR101640769B1 (ko) 가상화 시스템 및 그것의 명령어 실행 방법
TW202147116A (zh) 監視處理器之操作之系統
Penneman et al. Formal virtualization requirements for the ARM architecture
Pan et al. Nestcloud: Towards practical nested virtualization
US10963280B2 (en) Hypervisor post-write notification of control and debug register updates
Lin et al. Hardware-assisted reliability enhancement for embedded multi-core virtualization design
US11573910B2 (en) Apparatus, system and method to define memory information leak zones in a computing system
Yao et al. SWVM: a light-weighted virtualization platform based on Sunway CPU architecture.
Montejano Framework for Monitoring Interactions in Nested Virtualization Environments

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150224

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20150521

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20151104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160304

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160311

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160510

R150 Certificate of patent or registration of utility model

Ref document number: 5936640

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees