特許第5936640号(P5936640)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許5936640協調設計されたプロセッサへの、隔離された実行環境の作成
<>
  • 特許5936640-協調設計されたプロセッサへの、隔離された実行環境の作成 図000002
  • 特許5936640-協調設計されたプロセッサへの、隔離された実行環境の作成 図000003
  • 特許5936640-協調設計されたプロセッサへの、隔離された実行環境の作成 図000004
  • 特許5936640-協調設計されたプロセッサへの、隔離された実行環境の作成 図000005
  • 特許5936640-協調設計されたプロセッサへの、隔離された実行環境の作成 図000006
  • 特許5936640-協調設計されたプロセッサへの、隔離された実行環境の作成 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5936640
(24)【登録日】2016年5月20日
(45)【発行日】2016年6月22日
(54)【発明の名称】協調設計されたプロセッサへの、隔離された実行環境の作成
(51)【国際特許分類】
   G06F 9/455 20060101AFI20160609BHJP
   G06F 9/30 20060101ALI20160609BHJP
   G06F 9/318 20060101ALI20160609BHJP
   G06F 9/38 20060101ALI20160609BHJP
【FI】
   G06F9/44 310A
   G06F9/30 310E
   G06F9/30 320C
   G06F9/38 370C
【請求項の数】22
【外国語出願】
【全頁数】22
(21)【出願番号】特願2014-42957(P2014-42957)
(22)【出願日】2014年3月5日
(65)【公開番号】特開2014-174998(P2014-174998A)
(43)【公開日】2014年9月22日
【審査請求日】2014年3月6日
(31)【優先権主張番号】13/795,720
(32)【優先日】2013年3月12日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】山田 康一
(72)【発明者】
【氏名】シャンムガベラユサム、パラニベル ラジャン
(72)【発明者】
【氏名】ロジャーズ、スコット ディー.
(72)【発明者】
【氏名】ハントリー、バリー イー.
(72)【発明者】
【氏名】ビーニー、ジュニア、ジェームズ ディー.
(72)【発明者】
【氏名】タミール、ボアズ
【審査官】 坂庭 剛史
(56)【参考文献】
【文献】 国際公開第2012/005949(WO,A1)
【文献】 特開2011−134315(JP,A)
【文献】 特開2004−355277(JP,A)
【文献】 特開2006−039879(JP,A)
【文献】 国際公開第2012/125200(WO,A1)
【文献】 特表2012−531001(JP,A)
【文献】 特開2005−157640(JP,A)
【文献】 Intelによる仮想化支援のアプローチ,仮想化技術Expert,株式会社技術評論社,2007年 3月 1日,初版,p.168−173,ISBN978-4-7741-3037-8
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
G06F 9/30
G06F 9/318
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
第1の命令セットアーキテクチャ(ISA)の命令を実行する第1のコアと、
第2のISAの命令を実行する第2のコアと、
プロセッサによりソフトウェアスタックにトランスペアレントに制御されるバイナリ変換コンテナと、
前記バイナリ変換コンテナを管理するホスト実体ロジックと、
を備える前記プロセッサであって、
前記第2のコアを複数備え、
前記バイナリ変換コンテナは、バイナリ変換状態を格納するバイナリ変換状態ストレージと、コードセグメントを受け取り、前記コードセグメントのバイナリ変換を生成し、前記バイナリ変換を変換キャッシュに格納するバイナリ変換エンジンとを含み、前記バイナリ変換は、前記第2のISA内で利用不可能な前記第1のISAの命令をエミュレートするための少なくとも1つのエミュレーションルーチンを含み、前記第2のコアが前記バイナリ変換を実行し、
前記第2のコアは前記第1のコアと非対称であり、
前記ホスト実体ロジックは、
バイナリ変換の実行を可能とするべく、前記プロセッサの状態を第1の状態ストレージに格納させ、前記バイナリ変換状態ストレージに格納されている前記バイナリ変換状態を、前記プロセッサ内にロードし、複数の前記第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のコードセグメントの代わりに前記インスツルメントコードセグメントを実行することを前記コアに可能とするよう、前記プロセッサをプログラミングする段階と
を備え、
前記プロセッサは前記コアを複数有し、
前記インスツルメントコードセグメントを実行する段階は、
前記エントリポイントに遭遇したときに前記バイナリ変換を実行する命令を受信し、前記プロセッサの状態を第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コンテナ手段は、前記ソフトウェアスタックに対してトランスペアレントであり、
前記ホスト実体手段は、BT呼び出しへのエントリがあると、前記プロセッサの状態を第1の状態ストレージに格納させ、前記BTコンテナ手段のBT状態ストレージに格納されているBT状態を、前記プロセッサ内にロードし、複数の前記コアのうちの複数のアイドルコアに対してバイナリ変換タスクをスケジューリングし
前記バイナリ変換が実行された後で、前記BT状態を、前記BTコンテナ手段の前記BT状態ストレージに格納させ、前記プロセッサの状態を前記第1の状態ストレージからロードする、プロセッサ。
【請求項14】
前記保護手段は、前記BTコンテナ手段の位置を特定するためのレンジ値を格納する少なくとも1つのレジスタを有する、請求項13に記載のプロセッサ。
【請求項15】
前記ホスト実体手段は、前記プロセッサのアイドルコアの上での前記バイナリ変換の実行を可能とするために、前記アイドルコアの状態ストレージに前記BT状態をロードさせ、前記ソフトウェアスタックのアプリケーションは、前記プロセッサの前記コアの上で実行される、請求項13または14に記載のプロセッサ。
【請求項16】
前記ホスト実体手段は、前記ソフトウェアスタックの前記VMM層及び前記OS層への前記BTコンテナのアクセスを回避させる、請求項13から15の何れか一項に記載のプロセッサ。
【請求項17】
前記ホスト実体手段は、前記ソフトウェアスタックの前記アプリケーション層への前記BTコンテナの書き込みアクセスを回避させる、請求項13から16の何れか一項に記載のプロセッサ。
【請求項18】
前記ホスト実体手段は、前記BTコンテナの、前記プロセッサの状態の第1のサブセットへのアクセスを可能として、前記BTコンテナの、前記プロセッサの状態の第2のサブセットへのアクセスを回避させる、請求項13から17の何れか一項に記載のプロセッサ。
【請求項19】
請求項8から12のいずれか一項に記載の方法を実行するよう構成された通信デバイス。
【請求項20】
コンピューターに請求項8から12のいずれか一項に記載の方法を実行させるためのプログラム。
【請求項21】
請求項8から12のいずれか一項に記載の方法を実行する命令を処理する装置。
【請求項22】
請求項8から12のいずれか一項に記載の方法を実行する手段を備える装置。
【発明の詳細な説明】
【背景技術】
【0001】
現代のマイクロプロセッサは、殆どのコンピュータシステムの心臓部である。 一般的に、これらプロセッサは、命令を受信して、命令に呼応してオペレーションを実行することで動作する。アプリケーションプログラム及びオペレーティングシステム(OS)アクティビティにおいて、命令は、プロセッサで受信され、プロセッサが、これら命令を、プロセッサハードウェア上での実行に適した、1以上のより小さいオペレーション(しばしばマイクロ命令(uops)と称される)にデコードしてよい。一部のプロセッサは、一定の命令セットアーキテクチャ(ISA)命令を直接実行するためのハードウェア特徴をもたない。このような訳で、命令が、直接ハードウェア上で実行可能なuopsにデコードされている。uopsにデコードすることで、プロセッサは並列処理もアウトオブオーダ処理もスケジュール及び実行することができるようになり、パフォーマンスの向上を助ける。しかしこのメカニズムは、多くの場合に不十分である。
【図面の簡単な説明】
【0002】
図1】本発明のある実施形態におけるシステムの部分のブロック図である。
【0003】
図2】本発明の別の実施形態における協調設計されたプロセッサのブロック図である。
【0004】
図3】本発明のある実施形態におけるバイナリ変換を実行する方法のフロー図である。
【0005】
図4】本発明のある実施形態における変換されたコードに低オーバヘッド転送を実行するための方法のフロー図である。
【0006】
図5】本発明のある実施形態におけるプロセッサ及びメモリを含む協調設計環境のブロック図である。
【0007】
図6】本発明のある実施形態におけるシステムのブロック図である。
【発明を実施するための形態】
【0008】
様々な実施形態では、ファームウェア層の上のソフトウェアスタックから隠されているバイナリ変換ソフトウェアを維持するように協調設計されたプロセッサアーキテクチャフレームワークが提供される。このソフトウェアスタックは、プロセッサの1以上のコアの上で実行される、仮想マシンモニタ(VMM)、オペレーティングシステム(OS)及びアプリケーションを含む。このようにすることで、実施形態では、ファームウェアの上のソフトウェアスタックの層に対する修正を回避することができる。したがって、このスタックは、ダイナミックバイナリ最適化及び命令セットアーキテクチャ(ISA)エミュレーションシステムの恩恵を得ることができる。このアーキテクチャフレームワークが、VMM、OS、及びアプリケーションからトランスペアレントなBTソフトウェアの実行のために提供されたとしても、協調設計されたプロセッサの異なるタイプのソフトウェアコンポーネントを実行して、異なるタイプの利用を可能とするべく利用することもできる。例えばこのフレームワークは、隠れた環境で(例えばVMM/OS層から隠されたもの)実行されるソフトウェア(例えばウィルススキャンソフトウェア)を実行するために利用されてよい。この隠れた環境は、VMM、OS、及びアプリケーションから、隔離され、独立しており、保護されている実行環境である。
【0009】
バイナリ変換によりハードウェア/ソフトウェアが協調設計されたプロセッサは、隠れたバイナリ変換(BT)ソフトウェアによる、ダイナミックバイナリ最適化及び変換を可能とすることができる。電力効率よくパフォーマンスを向上させ、更に、バイナリ変換によって新たなISA拡張を可能とすることができる。協調設計されたプロセッサでは、例えばx86ISAである、ソースISAと称される標準的なISAが存在している。OS及びアプリケーションプログラムの両方を含む、従来のソフトウェアが、ソースISAにコンパイルされる。そして、協調設計されたプロセッサのハードウェアが、特別パフォーマンス及び/またはエネルギー効率特徴を持つ一定のハードウェア実装例のために特別に設計されたターゲットISAを実装する。ターゲットISAは、uopsと同レベルにあり、uopsのセットと同一であってよい。
【0010】
協調設計されたプロセッサに属すエミュレーションソフトウェアは、アプリケーション/OSソースISAソフトウェアの実行を、これを、ターゲット命令の最適化されたシーケンスへと解釈、または、直接変換することによって、指揮管理(direct)する。これら変換は、パフォーマンスゲイン及び/または向上したエネルギー効率を約束する。
【0011】
エミュレーションプロセスは、通常、以下のように進められる。解釈は、最初に遭遇したコード(ソースISA命令)に対して利用される。そして、ダイナミックプロファイリングまたはその他の手段を利用することで頻繁に実行されるコード領域(ホットスポット)が発見されると、これらをターゲットISAに変換する。多くの場合、最適化は、変換プロセスの一部として実行され、非常に頻繁に利用されるコードは、後で、更にいっそう最適化されてよい。コードの変換された領域は、再利用できるように変換キャッシュに保持される。変換キャッシュは、エミュレーションソフトウェアによって管理され、全てのアプリケーション/OSソフトウェアから隠されたメモリの一部に保持される。アプリケーション/OSソフトウェアは、従来の(見える)メモリに保持される。
【0012】
協調設計されたVMを利用する以前のプロセッサ実装は、エミュレーションソフトウェアが全てのアプリケーション/OSソフトウェアをエミュレートする、完全なエミュレーションを利用する。完全なエミュレーションの1つの欠点に、全てのコードを実行前にまず解釈及び/または変換する必要があり、これによって、ソフトウェアの領域に最初に遭遇したときに低パフォーマンスになってしまう恐れがある、ということがある。
【0013】
実施形態では、ハードウェアベースのメカニズム及びプロセッサファームウェアベースのメカニズムを両方とも利用して、隔離され、隠された仮想マシン実行環境、ここではバイナリ変換(BT)コンテナと称される、を作成することができる。このコンテナは、部分変換または完全ISAエミュレーションモデルを実装するべく、BTソフトウェアを実行するために利用されてよい。ある実施形態では、BTコンテナは、本質的に、プロセッサファームウェアが直接制御する仮想マシン環境の特別な(及び幾つかの実施形態では簡略化された)バージョンである。様々な実施形態では、コンテナは、VMM,オペレーティングシステム、及びアプリケーションを含むソフトウェアスタックから隠され、及びトランスペアレントであるよう設計されている。
【0014】
オペレーション中に、BTコンテナは、様々なコンポーネント及びメカニズムとインタラクトする。第1に、プロセッサは、BTコンテナを管理するためのホスト実体を含む。様々な実施形態では、この実体は、プロセッサハードウェア拡張と、ファームウェア(例えばマイクロコード層またはプロセッサアブストラクション層)との組み合わせによって実装されてよい。ここで記載するように、ホスト実体は、BTコンテナ、及びBTコンテナの内部で実行されるソフトウェアに晒されるISAに対するエントリの出し入れを制御する。
【0015】
BTコンテナ環境は、BTソフトウェアのプロセッサの状態及びBTソフトウェアのためにコード及びデータを保持するプライベートメモリ空間を含む。BTソフトウェアは、このBTコンテナ内で実行されて、最適化及びISA整合オペレーション(ISA compatibility operations)を実行するための1以上のバイナリ変換アルゴリズムを実装する。
【0016】
様々な実施形態は、BTコンテナメモリをソフトウェア(VMM、OS、及び、アプリケーション)及びハードウェアの攻撃者から保護するために利用されるハードウェアベースの保護メカニズムを提供してよい。一実施形態では、この保護メカニズムは、メモリレンジレジスタベースの保護、メモリ暗号化ハードウェア等で実装することができる。別の様々な実装例では、提供される保護のレベルは、利用される特徴及び所望のセキュリティ方針(security objectives)に基づいていてよい。
【0017】
BTハードウェアユニットは、協調設計されたプロセッサのためのハードウェアサポートを実装するために提供される。ある実施形態では、このユニットは、BTコンテナを呼び出すためのイベントを検出(たとえば、ホットスポット検出、自己修正コード検出、及び、IPI(inter-processor interrupt:プロセッサ間割り込み))イベント、電力管理イベント、RAS(reliability availability serviceability)イベント等のその他のイベントを含む)するためのハードウェアサポートを含む。より一般的には、これらイベントは、BTソフトウェアから直に注目を受ける。例えば、1つのイベントが、複数のプロセッサの上で実行されるBTソフトウェア間を同期させるよう定義されているプライベートIPIメカニズムであってよい。
【0018】
BT ISA拡張は、BTコンテナへの、または該BTコンテナからの、及びこのコンテナ内の様々なオペレーションへの、または該様々なオペレーションからの、制御移行を可能とするべく、提供されてよい。ある実施形態では、これらISA拡張は、BTコンテナの内部で実行されるBTソフトウェアのみによって利用可能であってよい。例として、これらISA拡張は、BTソフトウェアに、BTハードウェアユニットにアクセス、及び、BTハードウェアユニットをプログラムさせ、ホスト実体と通信することで、コンテナポリシーを設定して、バイナリ変換のための、元のコードメモリ空間にアクセスするようにさせる。
【0019】
ある実施形態では、変換されたコードを格納するために、変換キャッシュメモリが提供されてよい。ある実施形態では、変換されたコードの実行への遷移は、BTハードウェアユニットが提供する変換エントリメカニズムによって統括される。 プライベートプロセッサの状態及びプライベートメモリ空間を含む、BTコンテナ環境は、他のソフトウェア(VMM、オペレーティングシステム、及び、アプリケーション)から隔離され、及び、隠されていてよい。
【0020】
BTコンテナリソースは、システム起動中にホスト実体によって割り当て、作成されてよい。この時点に、ホスト実体が、ハードウェア保護メカニズムをプログラム、管理することができる。
【0021】
OS及びVMMからトランスペアレントにするべく、BTコンテナのBTソフトウェアの呼び出し及び終了は、ホスト実体によって直接制御される。一実施形態では、呼び出し及び終了オペレーションは、ハードウェアとマイクロコードとの組み合わせによって実装される。別の実施形態では、プロセッサファームウェアを利用して、これらオペレーションが実行されてよい。
【0022】
1つの制御移行オペレーションとして、BTハードウェアユニットがBT呼び出しイベント(たとえばホットスポット)を検出すると、プロセッサは、ゲストソフトウェアスタックの実行を停止して、ホスト実体にこのイベントを通知する。そして、ホスト実体は、プロセッサコンテキストの現在の状態を一時的な状態ストレージ領域にセーブして、BTコンテナコンテキストにスイッチして(BTコンテナのBT状態ストレージ内に格納されている場合がある)、定義されたエントリの命令ポインタ(IP)からBTソフトウェアの実行を開始させる。BTソフトウェアが制御を得ると、特別な終了命令によって(BTコンテナに晒されるBT ISA拡張であってよい)自発的終了が生じるまで、または、外部割込み、内部タイマ割り込み等の一定のハードウェアイベントが生じて、ホスト実体が非自発的終了を強制的に実行するまで、実行が続けられる。上述した内部タイマ割り込みは、本質的に、タイムアウトイベントであり、これがVMM及びOSから隠されることで、BTソフトウェアは、長いレイテンシーのオペレーションをタイムスライスすることができる。
【0023】
トランスペアレンシーは、また、ソフトウェアスタックに晒されるBTソフトウェアレイテンシーを、このスタックの前進要求(forward progress requirement)を満たすように、よく制御及び管理することによって、達成することもできる。例えば、BTソフトウェアが、特定されたホットスポットのための変換タスクを完了するために最大1ミリ秒(ms)かかる場合、ホスト実体は、ソフトウェアに晒されるレイテンシーをBTソフトウェアが軽減及び制御するためのメカニズムを提供してよい。ある実施形態では、これらメカニズムは、1)OS割り込みハンドラに晒されるレイテンシーを最小限にするために外部割り込みを受けたBTソフトウェアをプリエンプション(preemption)(非自発的終了)すること、2)BTソフトウェアが、基礎となるプログラム実行の最小限の前進要件を満たすための、タイムカンタム管理(タイムスライススケジューリング)を可能とするために1以上の内部タイマを利用すること、及び、3)BTソフトウェアレイテンシーを隠すために1以上のアイドルコアに対して長期間のBTタスクをスケジューリングすること、を含む。これらのメカニズムは、ホスト実体によって予め設定されているか、BTソフトウェアが晒されているBT ISA拡張によって動的に設定される。
【0024】
隔離されたコンテナにBTソフトウェアを実行させることによって、更に、ホスト実体が、BTコンテナに晒されるISA特徴、及び、BTコンテナ内で実行されるBTソフトウェアに与えられているメモリ及びプロセッサリソースのアクセス許可等の特権を制御することができる。例えば、ホスト実体は、ISA特徴のサブセット(例えば、浮動小数点ISA命令はない)が、十分、所与のバイナリ変換タスクを実行することができる場合に、BTソフトウェアに晒されるISA特徴を制限し、制御することができる。このような制御は、コンテナ環境の簡略化、及び、ネイティブコンテナ実行とBTコンテナ実行との間のコンテキスト切り替え時間の低減に役立つ。
【0025】
ハイパーバイザまたはVMMを実行するべく提供される監督モードと異なり、BTコンテナは、動作に適した最小限の特権及び優先権を与えられているので、ISA特徴の一部がBTソフトウェアによって実装された場合であっても、オペレーティングシステムへのレイテンシーエクスポージャ等の安全上のリスク及びシステムへの影響を大幅に低減させることができる。ある実施形態では、ホスト実体が、システムISA特徴及びBT実行に費やされる時間等のBTソフトウェアのISA特徴及び特権を制限及び制御して、BTコンテナが、その正当な目的のために動作する上で必要な情報、リソース、命令、及びタイムカンタムのみにアクセスするよう制限することができる。
【0026】
例えば、BTソフトウェアは、バイナリ変換タスクを実行するために、ユーザレベル(例えばリング3)のISAアクセスのみに晒されることで十分な場合には、そのようにされてよい。部分変換モデルで実行されるエミュレーションが、ユーザレベルのアプリケーションのためである場合には、このようにアクセスに晒すことが適切であろう。更に、BTコンテナメモリの外に対するメモリ参照を、アプリケーションソフトウェアの命令ページのみに限定することができる。また、BTソフトウェアがバイナリ変換タスクを実行するためには読み取り許可で十分である場合には、BTソフトウェアに読み取り許可のみが与えられる。BTソフトウェアによるゲストプロセッサの状態アクセスは、バイナリ変換タスクのために十分なゲストプロセッサの状態のサブセットに限定されてよい。言い換えると、BTソフトウェアにとっては、変換に必要なゲスト状態のみが利用可能となり、これにより、BTソフトウェアが使用しないプロセッサリソースにはアクセスされない。ある実施形態では、更に、バイナリ変換がアプリケーション(つまりユーザ)ソフトウェアコードのみに対して実行される場合、ホスト実体は、BTソフトウェアがゲストカーネル(例えばリング0)メモリにアクセスすることを妨げることもできる。この制御によって、BTソフトウェアは、動作に十分な最小限の特権及び特徴で動作することが可能となり、システムへの影響、変更、及び試験要件の範囲をより簡単にして、よりよいシステムセキュリティを実現することで、HW/SWが協調設計されたプロセッサの安全上のリスクを低減させロバストネスを向上させる一助となる。
【0027】
本発明のある実施形態を利用することで、部分変換モデルを、プロセッサの1以上のコアの上に実現することができる。このようにすることで、ISAを仮想化して、複数のBT利用を可能として、ワットあたりのパフォーマンスを上げることができる。このような例の1つでは、コードが非ベクトル幅または、より小さいベクトル幅のハードウェアについて書き込まれたベクトルコアでベクトル幅のオペレーションを実行するためにBTメカニズムが利用される。このようにすることで、BTメカニズムは、元のソフトウェアが、より幅の狭い前の生成ベクトルレジスタまたは非ベクトルレジスタでの利用のために書き込まれた場合であっても、より幅の広いベクトルレジスタを利用するためにソフトウェアを変換することができる。この具体例では、Intel(登録商標)ISAのストリーミングSIMD拡張(SSE)命令を利用するソフトウェアが変換されて、代わりに、Intel(登録商標)ISA高度ベクトル拡張(AVX)命令が利用される。また更に、この特徴を実行するための追加の専用のハードウェアを含めるのではなく、ここで説明するBTメカニズムによってISA特徴拡張を提供することによって、ISA整合を、より小さいコアサイズで実現することができる。例えば、より小さいコアは、AVXサポートをもたず、SSEサポートしか持たない場合がある。BTは、AVX命令を利用するソフトウェアを変換することで、代わりにSSE命令を利用することができる。これにより、ISA整合が提供され、より小さいコアのISAギャップが埋まる。
【0028】
このHW及びSWの協調設計されたフレームワークは、ここで記載されるようにBTに利用することができるが、他の利用モデルに、既存のOS/VMMに変更を行わずに、プロセッサ特徴及び値(例えばパフォーマンス、電力管理、及び、ISA拡張/エミュレーション)を増させるために利用することも可能である。
【0029】
幾つかの実施形態では、システム管理モード(SMM)等のプラットフォームファームウェアコンポーネントが、サーバRAS(server reliability/availability/serviceability:サーバ信頼性/利用可能性/サービス提供性)特徴と共存するべく、BTコンテナ及びBTソフトウェアのトラステッド・バウンダリ内に位置してよい。しかし、他の実施形態では、これらのコンポーネントは、一定のHW拡張(例えばHWベースのメモリ暗号化及び整合性チェック)をもつトラステッド・バウンダリの外に位置することで、HW及びSWの協調設計されたプロセッサのソフトウェアコンポーネントに対するSMMコード及びHWアタックに対する耐性を向上させてもよい。
【0030】
図1を参照すると、本発明のある実施形態におけるシステムの一部のブロック図が示されている。図1に示すように、システム100の該一部は、協調設計されたプロセッサ110と、ソフトウェアスタック190とのインタラクションとを含む。プロセッサ設計の多くの異なるタイプが、この協調設計されたプロセッサのベースラインとして利用可能であるが、ある実施形態では、プロセッサ110は、同種のコアのセットまたは異種コアの集合体であってよい複数のプロセッサコア(例えば1以上の低電力コア及び1以上のこれより高い電力のコア)を含むマルチコアプロセッサであってよい。加えて、グラフィックプロセッサ及びその他の専用プロセッシングユニット等の更なるプロセッシングユニットが存在してもよいことを理解されたい。ある実施形態では、プロセッサ110が、Intel(登録商標)64ISA等の特定のタイプのISAについて設定されてもよい。もちろん、別のIntel(登録商標)ISA(例えばIntel(登録商標)32ISA)、または、ARMベースのISA等の別のタイプのISA等の他のプロセッサISAが、代わりに存在してもよい。あるいは、プロセッサが、複数のISAで設定されてもよい。
【0031】
図1に示す実施形態では、概して、様々なコア及びその他の実行論理がプロセッサハードウェア120に存在していてよい。本発明のある実施形態に則ったバイナリ変換を実施することを目的として、ハードウェア120は、ホスト実体論理122、保護論理124、及び、BTハードウェアユニット126を含む。様々な実施形態において、これら異なる論理ユニットは、プログラミング可能論理上で実行されるよう設定されたプロセッサマイクロコード等の、ハードウェア及び/またはプロセッサファームウェア拡張の集合体として形成されてよい。
【0032】
概して、ホスト実体論理122は、BTコンテナをソフトウェアスタック190に対してトランスペアレントにするよう管理する制御論理を含んでよい。保護論理124は、BTコンテナ及びその中のソフトウェア専用のメモリのレンジを示すための、レンジ値(例えば第1の値及び第2の値)を格納するレンジレジスタ等のレジスタベースの保護メカニズムを含んでよく、したがってこれは、ソフトウェアスタックから隠され続けるよう制御される。他の実施形態では、複数のレジスタが、この保護論理内に存在してよく、複数のレジスタには、BTコンテナの保護されている領域の始めに対応しているベース値、及び、保護されている領域の最後を示すエンド値を格納するためのベースレジスタが含まれる。ある実施形態では、BTハードウェアユニット126は、BTコンテナ130内のネイティブコード実行及びバイナリ変換実行の間の制御移行を可能とするためのステアリング論理を含んでよい。このような実施形態の1つでは、ステアリング論理が、それぞれがネイティブコードセグメント及び対応するバイナリ変換を関連付ける複数のエントリを含む1以上のマッピングテーブルを含んでよく、または、これらに関連付けられていてよい。例えば、各エントリが、ネイティブコードセグメント用のエントリポイント、及び、例えば変換キャッシュ140内に格納されているバイナリ変換のための対応するエントリポイントを含んでよい。
【0033】
図1から更にわかるように、プロセッサハードウェア120は、BTコンテナ130とインターフェースする。このコンテナは、隔離され、隠れた仮想マシン実行環境であり、したがってソフトウェアスタック190に対してトランスペアレントである。この隠れた環境は、ソフトウェアスタック190に対してトランスペアレントとなるようにプロセッサファームウェア及び/またはマイクロコードを利用してハードウェア120によって制御されてよい。図示されている実施形態では、コンテナ130が、状態ストレージ132及びプライベートメモリ134を含む。概して、状態ストレージ132は、BTオペレーション中に利用するためにプロセッサの状態を格納してよい。より詳しくは、この状態ストレージは、状態レジスタ及び設定レジスタ、汎用レジスタ等を含む、全てのプロセッサの状態情報のコピーを格納してよい。幾つかの実施形態では、この状態ストレージが、マルチステッドであってよい。加えて、BTコンテナ130が、BTソフトウェアが内部に格納されてよいプライベートメモリ134を含む。幾つかの実施形態では、このプライベートメモリは、プロセッサのキャッシュメモリの1以上のレベルの一時的ストレージと、システムメモリのストレージとを含む複数レベルのヒエラルキーをもつものであってよい。
【0034】
概して、BTソフトウェアは、様々なコンポーネントを含んでよく、その幾つかを図1に示す。具体的には、BTソフトウェアは、様々なISA拡張の最適化及び/またはエミュレーションを可能とするべく、バイナリ変換を実行するために利用されるトランスレータ135を含んでよい。加えて、ランタイム層136がランタイム中に利用されて、変換されたコードを実行する。また更に、システム層138は、BTコンテナ130と基礎となるプロセッサハードウェア120との間のインターフェースとして機能するよう設定されてよい。
【0035】
BTソフトウェアが生成するバイナリ変換は、変換キャッシュ140に格納される。様々な実施形態では、BTハードウェアユニット126及び/またはBTソフトウェアは、実行されるネイティブコードのための対応するバイナリ変換の存在を特定し、これにより、BTコンテナ130内の状態ストレージ132から取得したプロセッサの状態を利用するバイナリ変換の実行用にプロセッサを適切に設定させるよう設定されてよい。
【0036】
図1の参照を続けると、ソフトウェアスタック190が存在しており、プロセッサ110上で実行される。概して、ソフトウェアスタック190は、VMM層192、OS層194、及び、アプリケーション層195を含む。図1に示す例では、複数のアプリケーション196a‐196nが、アプリケーション層195内に存在していてよい。概してこれらのアプリケーションは、ユーザが要求するタスクを実行するために利用されるユーザレベルのアプリケーションであってよい。
【0037】
概して、ソフトウェアスタック190の様々なソフトウェアは、プロセッサ120上でネイティブに実行されてよい。しかし、ホットコードまたはその他のコード(例えばプロセッサ110のネイティブISAがサポートしていない命令を含むコードなど)等のコードの少なくとも一定の部分は、バイナリ変換の恩恵を得るだろう。このようなコードは、例えばホスト実体論理122を介して検出されてよく、これは、BTコンテナ130をトリガして、バイナリ変換を実行させ、これを変換キャッシュ140にインストールさせてよい。したがって、変換されたネイティブコード部分へのエントリポイントに遭遇すると、プロセッサハードウェア120の少なくとも一つの部分(例えば1シングルコア、コア等の実行等)は、状態ストレージ132に存在しているプロセッサの状態を利用して、変換キャッシュ140内で、変換されたコードの実行を可能とするよう設定されてよい。図1の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
【0038】
図2を参照すると、本発明の別の実施形態における協調設計されたプロセッサのブロック図が示されている。図2に示されているように、プロセッサ200は、マルチコアプロセッサである。より詳しくは、プロセッサ200は、それぞれ異なるタイプのプロセッシングユニットを含む非対称マルチプロセッサであってよい。図2に示される実施形態では、プロセッサ200は、大きいコアとして設定されてよい、第1の複数のコア2100-210n(一般的にはコア210)を含む。「大きいコア」とは、これらコアが、あるISAを完全にサポートすることができるよう設定されてよいことを意味する。例えばこれらコアは、高度ベクトル拡張(AVX)命令等のベクトルサポートを含む、一定のIntel(登録商標)ISAをサポートしていてよい。したがって、大きいコア内の実行ユニットの1以上のデータパスは、一定のベクトル幅(例えば128ビット、256ビット、512ビット)または別のベクトル幅をもっていてよい。比較的幅の広いベクトルデータパスが与えられると、大きいコアが、実行中に、少なくともベクトル命令の実行中に、比較的多量の電力を消費する可能性がある。
【0039】
多くのアプリケーションがこれらのベクトル命令の利点を享受しているが、他のタイプのアプリケーションは、これら命令を利用しない場合もあるので、大きいコア210のより大きな電力消費から恩恵を受けない場合がある。この目的を達成するために、プロセッサ200は更に、複数の小さいコア2120-212n(総称してコア212)を含む。「小さいコア」とは、大きいコアのうちの、異種設計を持っていてよいこれらコアが、より低い電力消費を有していてよいことを意味している。例えば、これらの小さいコアは、別のISA、または、大きいコアのISAのサブセットのみをサポートしていてよい。例えば、小さいコア212は、AVX命令等のベクトル命令のためにサポートを提供しなくてよい。このように、小さいコアの1以上の実行ユニットのデータパスは、大きいコア210の実行ユニットのデータパスより小さい幅を有してよい。
【0040】
様々なタイプのコアに加えて、更なるプロセッシングユニットがプロセッサ200内に存在していてよい。図2に示す実施形態では、複数のグラフィックエンジン2140-214nが提供されてよい。これらグラフィックエンジンは、グラフィックプロセッシングを実行するために利用されてよいグラフィックプロセッシングユニット(GPU)であってよい。しかし、更なる/異なるプロセッシングをこれらグラフィックエンジン上で実行してもよい点を理解されたい。例えば、汎用グラフィックプロセッシングユニット(GPGPU)モデルでは汎用命令を実行することができる。また更なるプロセッシングユニットが、プロセッサ200内に存在していてもよい(図2では説明の便宜上図示していない)。
【0041】
図2の参照を更に続けると、様々なコア及びその他のプロセッシングユニットが、ある実施形態ではラストレベルキャッシュ(LLC)であってよい、共有キャッシュメモリ215に連結されている。幾つかの実施形態では、このキャッシュメモリが、コア/グラフィックエンジンのそれぞれに関連付けられている1以上のバンクをもつ分散型のキャッシュメモリであってよい。
【0042】
動的バイナリオペレーションをもたらすために、プロセッサ200は更に、バイナリ変換を制御及び実行するための様々なハードウェアを含む。図2に示す実施形態では、プロセッサ200が、バイナリ変換コンテナ225に連結されたバイナリ変換制御論理220を含む。そしてバイナリ変換コンテナ225が、変換キャッシュ228に連結されている。
【0043】
概して、BT制御論理220は、BTコンテナ225内で実行されるBTソフトウェアへの、またはBTソフトウェアからの呼び出しを直接制御するよう設定されてよい。例えば、BT制御論理220は、例えば最適化またはその他のエミュレーション特徴を利用するために、バイナリ変換が適しているコードセグメントを特定するよう設定されていてよい。従ってBT制御論理220は、BTコンテナ225内のBTソフトウェアに対して、一定のコードセグメントのためのバイナリ変換を生成するよう命令して、BTソフトウェアに、変換キャッシュ228内に、生成されたバイナリ変換を格納させてよい。加えて、BT制御論理220は、バイナリ変換が利用可能なコードセグメントへのエントリポイントに遭遇したとき、バイナリ変換に制御移行を可能とするように、ステアリング論理(またはその他のプロセッサ論理)をプログラムしてよい。ある実施形態では、このプログラミングは、ネイティブコードセグメントと、インスツルメント(instrumented)コードセグメントとを関連付けるエントリをマッピングテーブルに書き込むことを含んでよい。
【0044】
動的バイナリ変換は、コード最適化及びISAエミュレーション等のための様々な状況のために実行されてよい。具体的な1つの状況は、コアがサポートしない1以上の命令を持つコードを実行することを目的としている。例えば、一実施形態において上述したように、小さいコア212は、ベクトル命令のサポートを提供しなくてよい。しかし、大きいコアと比べて小さいコアに電力消費上の利点があるという前提において、限定された数のベクトル命令が1つのコードセグメント内に出現し、このコードセグメントを小さいコアで実行させることが望ましい。したがってBT制御論理220は、BTソフトウェアに、一定の小さいコア212の上で実行させるべくこれらベクトル命令のエミュレーションを可能とするために、例えば少数のベクトル命令を持つコードセグメントのバイナリ変換を生成させることができる。
【0045】
図2に対する参照を続けると、プロセッサ200は更に、電力制御ユニット(PCU)232を介したプロセッサのための電力制御等の総括的な監督機能を提供することができるシステムエージェント回路230を含む更なる回路を含む。加えて、統合されたメモリコントローラ234が、ダイナミックランダムアクセスメモリ(DRAM)等のシステムメモリにインターフェースを提供する。システムエージェント230は更に、マルチプロセッサシステムの他のプロセッサ、ペリフェラルコントローラ及びその他のシステムコンポーネント等の、システムの他のエージェントに対するインターフェースを可能とするための、1以上のインターフェース236を含んでよい。図2の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
【0046】
図3を参照すると、本発明のある実施形態における方法のフロー図が示されている。概して、図3の方法300は、プロセッサの様々な論理の組み合わせによって実行され、変換されたコードを生成して、実行中に、生成されたバイナリ変換されたコードに対応するネイティブコードに呼び出しが行われるとき、プロセッサが、この変換されたコードへの制御移行を実行できるよう、構成してよい。
【0047】
図3では、方法300は、1以上の重要なコードセグメントを特定するように、コード実行をプロファイリングすることによって開始される(ブロック310)。ここで記載する例では、このコードのプロファイリングは、ホットスポットコード、自己修正コード、エミュレートされるコード(例えば、その上で実行されてよい所与のコアがサポートしないISA命令のためのもの)等を特定するために実行されてよい。
【0048】
図3の参照を続けると、実行が続けられ、プロファイリングが実行された後に、特定されたコードセグメントに関する情報(例えばホットスポットコード、自己修正コード、エミュレートされるコード)をバイナリ変換エージェントに提供することができる(ブロック320)。例としては、このバイナリ変換エージェントが、ここで説明するバイナリ変換エンジンであってよい。次に制御はブロック330に移行され、ここで、インスツルメントコードセグメントが、コードセグメントから生成され、装備キャッシュ(インスツルメントキャッシュ)に格納されてよい。例としては、このインスツルメントコードの生成には、プロセッサの所与のコアまたはその他のプロセッシングユニットによってサポートされない1以上の命令をエミュレートするための1以上のエミュレーションルーチンが含まれてよい。このようにすることで、インスツルメントコードが、エミュレートされたコードの、より低いコストでの実行を可能とするエミュレーション機能を提供する(例えば、より低い電力消費コアにおいて)。ある実施形態では、変換生成中にOS及びアプリケーションコードの前進予想を確実にするために、時間チェックを行ってよい。このイベントが起こった場合、制御は、ネイティブコードの実行に戻る。次のホットスポットイベントは、プロセッサを、変換生成タスクに戻す。
【0049】
図3の説明を続けると、制御は次に、ブロック340に移行して、プロセッサのステアリング論理が、このインスツルメントコードセグメントを指すようにプログラムされてよい。つまり、BTハードウェアユニット等のステアリング論理は、ネイティブコードセグメント(つまり、特定された重要なコードセグメント)と、ネイティブコードセグメントのために実行される、インスツルメントコードセグメントとの間の対応関係を特定するエントリで更新される1以上のマッピングテーブルを含んでよい。従ってこのプログラミングは、論理に、今は変換されているネイティブコードへのエントリポイントに遭遇したときに、ネイティブコードから、インスツルメントコードの実行への移行またはステアリングの実行を可能とさせる。図3の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
【0050】
図4を参照すると、本発明のある実施形態における変換されたコードに低オーバヘッド転送を実行するための方法のフロー図である。図4の方法400は、BT制御論理及びその他のプロセッサ論理を含むプロセッサの様々な論理によって実行されてよい。図示されているように、方法400は、ダイアモンド410で、第1のコードセグメントへのエントリポイントに遭遇したかを判断することから開始されてよい。ある実施形態では、このエントリポイントが、バイナリ変換が実行されたコードセグメントの第1の命令の呼び出しであってよい。このような呼び出しが受信されない場合には、ブロック420で通常のコード実行が続けられてよい。このようなコードの呼び出しが受信された場合には、制御はブロック430に移行して、インスツルメントコードセグメントに制御を移すために、ステアリング論理をイネーブルする。一実施形態では、この制御移行のイネーブルが、ネイティブコードセグメントエントリポイントを、変換されたコードセグメントエントリポイントに関連付けるマッピングテーブルへのアクセスによって実行されてよい。
【0051】
バイナリ変換の実行をイネーブルするために、制御がブロック440に移され、ここでプロセッサに格納されているネイティブコンテキストと、バイナリ変換コンテキストとの間のスワッピングが生じる。ある実施形態では、スワッピングは、プロセッサの状態を、プロセッサの状態ストレージにセーブして、BTコンテナ内のBT状態ストレージからBTプロセッサの状態を、プロセッサの様々なレジスタにロードすることを含み、様々なレジスタには、設定レジスタ及び状態レジスタ、汎用レジスタ等が含まれる。次に、制御はブロック450に移され、インスツルメントコードセグメントが実行されて、サポートされていない特徴をエミュレートすることができる。
【0052】
実行中に、例外または外部割込みが生じ得、これがダイアモンド460で判断される。このようなイベントが生じない場合には、インスツルメントコードセグメントが、実行を完了してよい(ブロック480)。従って、ブロック420で、ネイティブコードの実行継続が行われてよい。
【0053】
反対にこのようなイベントが生じた場合には、制御はブロック470に移行する。ブロック470では、別のコンテキスト切り替えが生じ、ネイティブ状態の、プロセッサへの再度のロードが可能となってよい。そして制御はブロック480に移され、ネイティブコードが実行されて、割り込みまたは例外が処理されてよい。 そして、バイナリ変換のために更なる作業を行う必要があるときには、制御が前述したブロック430に戻され、バイナリ変換の実行継続が行われる。図4の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
【0054】
本発明のある実施形態に従って協調設計された仮想マシンとして実装されたプロセッサのコンポーネントを例示するために、図5を参照する。図5に示されているように、協調設計環境600は、プロセッサ605とメモリ620とを含み、メモリ620は、一実施形態では、ダイナミックランダムアクセスメモリ(DRAM)等のシステムメモリであってよい。図示されているように、プロセッサ605は、所与のマイクロアーキテクチャを有してよく、例えばポイント−ツー−ポイントインターコネクト、バスによって、またはその他の類似した方法によって、メモリ620に連結されてよい。メモリ620の可視(visible)部分、つまり第1の部分630には、1以上のオペレーティングシステム635及びアプリケーションプログラム638が格納されてよい。この部分は、ユーザレベルコード(つまりアプリケーションプログラム638)から見ることができるために、及び、OS(OS635及びプログラム638の両方)から見ることができるために、「可視」と称される。これらプログラムで実行される命令のタイプに応じて、直接、プロセッサ605と通信することができる(例えば、これらの命令を処理するためにプロセッサ内に存在する命令デコーダを利用することにより)。
【0055】
変換されたコードを利用して最適化することができる様々なコードシーケンスにおいて、または、マイクロアーキテクチャサポートが提供されないようなシーケンスにおいて、実施形態では、変換されたコードをプロセッサ605に提供するために、メモリの隠れた部分、つまり、第2の部分640を利用することができる。具体的には、示されているように、OS635及びアプリケーションプログラム638の両方が、BTエンジン645と通信してよく、BTエンジン645は、解釈、変換、及び最適化メカニズムを含むランタイム実行ユニットを含んでよい。隠されたメモリ640は、OSまたはアプリケーションプログラムからは、見えず、または、アクセスすることができない。従ってBTエンジン645は、変換キャッシュ648に、実行のためにプロセッサ605に提供することができる、変換されたコードを含んでよい、コード及びアドレス情報を提供してよい。一実施形態では、変換キャッシュ648に格納されているコードを暗号化することができる。この変換されたコードは、プロセッサの基礎となるマイクロアーキテクチャのために書き込まれ、最適化されてよい(例えばターゲットISAコード)。
【0056】
図示されているように、協調設計プロセッサであってよいプロセッサ605は、命令をOSまたはアプリケーションプログラムから直接受信することができる命令フェッチャ606等のフロントエンドユニットを含む。例えばアプリケーションプログラムのユーザレベル命令に対応しているマクロ命令であってよいこれら命令は、デコーダ607を利用してデコードすることができ、デコーダ607は、命令をデコードして、対応するuops(例えばプロセッサ605のマイクロコードストレージに存在する)にアクセスするよう動作することができる。そしてデコーダ607は、このuopsを、1以上の実行ユニット608に提供してよく、1以上の実行ユニット608は、様々な算術論理オペレーションユニット(ALU)、専用ハードウェア、及び、その他のタイプの計算ユニットを含んでよい。これら命令の結果は、リタイヤユニット609に提供されてよく、リタイヤユニット609は、不良または例外が生じなかった場合には、命令をリタイヤして、これにより結果をプロセッサのアーキテクチャ状態に、プログラム順に格納するよう動作する。インオーダマシンとして説明されるが、実施形態は、アウトオブオーダマシンを利用しても同様に実装することができる。
【0057】
実施形態は、多くの様々なタイプのシステムに実装されてよい。 図6を参照すると、本発明のある実施形態におけるシステムのブロック図が示されている。図6に示されているように、マルチプロセッサシステム700は、ポイント−ツー−ポイントインターコネクトシステムであり、ポイント−ツー−ポイントインターコネクト750を介して連結された第1のプロセッサ770と第2のプロセッサ780とを含む。図6では、各プロセッサ770及び780が、(第1プロセッサコア及び第2プロセッサコア(つまりプロセッサコア774a及び774b並びにプロセッサコア784a及び784b)を含む)マルチコアプロセッサであるが、これより多くのコアがプロセッサに存在していてもよい。。プロセッサのそれぞれは、ここで説明するBTコンテナを作成及び管理する論理を含んでよい。
【0058】
図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を含む。
【0059】
更にチップセット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に連結されてよい。実施形態は、スマートセルラーテレフォン、タブレットコンピュータ、ネットブック等のモバイルデバイスを含む他のタイプのシステムに含めることができる。
【0060】
以下の例は、更なる実施形態に関する。
【0061】
ある例では、プロセッサが、第1の命令セットアーキテクチャ(ISA)の命令を実行する第1のコアと、第2のISAの命令を実行する第2のコアと、プロセッサによりソフトウェアスタックにトランスペアレントに制御されるバイナリ変換コンテナとを備え、バイナリ変換コンテナは、コードセグメントを受け取り、コードセグメントのバイナリ変換を生成し、バイナリ変換を変換キャッシュに格納するバイナリ変換エンジンを含み、バイナリ変換は、第2のISA内で利用不可能な第1のISAの命令をエミュレートするための少なくとも1つのエミュレーションルーチンを含み、第2のコアがバイナリ変換を実行し、第2のコアは第1のコアと非対称である。
【0062】
ある例では、少なくとも1つのエミュレーションルーチンは、第2のコアに、第1のベクトルオペランドにオペレーションを実行する命令を実行することを可能にさせ、第2のコアのデータパスの幅は、第1のベクトルオペランドの幅未満である。
【0063】
ある例では、プロセッサは、コードセグメントを含むアプリケーションをプロファイリングして、バイナリ変換エンジンに、プロファイリングに呼応してバイナリ変換を生成させる。
【0064】
ある例では、プロセッサは、それぞれがネイティブコードセグメントをバイナリ変換コードセグメントに関連付ける、複数のエントリを含むマッピングテーブルを含む。
【0065】
ある例では、プロセッサは、マッピングテーブルにアクセスして、コードセグメントへのエントリポイントに遭遇して、マッピングテーブルが、コードセグメントをバイナリ変換に関連付けるエントリを含むとき、コードセグメントの代わりに、バイナリ変換を実行する。
【0066】
ある例では、バイナリ変換エンジンは、コードセグメントの代わりにバイナリ変換を実行させるステアリング論理を含む。
【0067】
ある例では、第2のコアは、第1のコアよりも低い電力消費レベルを有する。
【0068】
上述したプロセッサは、様々な手段を用いて実装することができる。
【0069】
ある例では、プロセッサが、ユーザ機器の接触式デバイスに組み込まれるシステムオンチップ(SoC)を含む。
【0070】
別の例としては、システムが、ディスプレイ及びメモリを含み、上述した例の1以上のプロセッサを含む。
【0071】
別の例では、マシンにより実行されると、マシンに、方法を実行させる命令を格納したマシン可読媒体が提供され、方法は、プロセッサのバイナリ変換エージェントで、第1のコードセグメントのためのバイナリ変換を実行する命令を受信する段階と、第1の命令セットアーキテクチャ(ISA)の第1の命令をサポートしていないプロセッサのコアの上で実行されると、第1の命令をエミュレートする第1のルーチンを含む、第1のコードセグメントのための、インスツルメントコードセグメントを生成する段階と、インスツルメントコードセグメントを、装備キャッシュメモリに格納する段階と、第1のコードセグメントへのエントリポイントに遭遇したときに、第1のコードセグメントの代わりにインスツルメントコードセグメントを実行することをコアに可能とするよう、プロセッサをプログラミングする段階と
を備える。
【0072】
ある例では、バイナリ変換エージェントは、プロセッサの上で実行されるソフトウェアスタックに対してトランスペアレントである。
【0073】
ある例では、マッピングテーブルにエントリを格納する命令は、装備キャッシュメモリ内のインスツルメントコードセグメントの位置に、エントリポイントを関連付ける。
【0074】
ある例では、マッピングテーブルにエントリを格納する命令は、コアに、第2のコードセグメントの代わりに、第2のインスツルメントコードセグメントを実行させ、第2のコードセグメントは、ホットスポットを含む。
【0075】
ある例では、マシン可読媒体は更に、コアに、第3のコードセグメントの代わりに、第3のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を実行させる命令を更に備え、第3のコードセグメントは、自己修正コードを含む。
【0076】
別の例では、プロセッサが、第1のコードセグメントのバイナリ変換を生成して、バイナリ変換を変換キャッシュに格納するコードを含む、バイナリ変換コンテナ(BTコンテナ)と、
BTコンテナを管理して、第1のコードセグメントを特定するホスト実体論理と、BTコンテナをソフトウェアスタックから隔離する保護論理とを備え、ソフトウェアスタックは、仮想マシンモニタ(VMM)層と、オペレーティングシステム(OS)層と、アプリケーション層とを含み、BTコンテナは、ソフトウェアスタックに対してトランスペアレントである。
【0077】
ある例では、保護論理は、BTコンテナの位置を特定するためのレンジ値を格納する少なくとも1つのレジスタを有する。
【0078】
ある例では、ホスト実体論理は、BT呼び出しへのエントリがあると、プロセッサの状態を第1の状態ストレージに格納させ、BTコンテナのBT状態ストレージに格納されているBT状態を、プロセッサ内にロードする。
【0079】
ある例では、ホスト実体論理は、ソフトウェアスタックのアプリケーションの実行を可能とするために第1のタイムカンタムのためのバイナリ変換が実行された後で、BT状態を、BTコンテナのBT状態ストレージに格納させ、プロセッサの状態を第1の状態ストレージからロードする。
【0080】
ある例では、ホスト実体論理は、プロセッサのアイドルコアの上でのバイナリ変換の実行を可能とするために、アイドルコアの状態ストレージにBT状態をロードさせ、ソフトウェアスタックのアプリケーションは、プロセッサの第2のコアの上で実行される。
【0081】
ある例では、ホスト実体論理は、ソフトウェアスタックのVMM層及びOS層へのBTコンテナのアクセスを回避させる。
【0082】
ある例では、ホスト実体論理は、ソフトウェアスタックのアプリケーション層へのBTコンテナの書き込みアクセスを回避させる。
【0083】
ある例では、ホスト実体論理は、BTコンテナの、プロセッサの状態の第1のサブセットへのアクセスを可能として、BTコンテナの、プロセッサの状態の第2のサブセットへのアクセスを回避させる。
【0084】
別の例では、方法が、プロセッサのバイナリ変換エージェントで、第1のコードセグメントのためのバイナリ変換を実行する命令を受信する段階と、第1の命令セットアーキテクチャ(ISA)の第1の命令をサポートしていないプロセッサのコアの上で実行されると、第1の命令をエミュレートする第1のルーチンを含む、第1のコードセグメントのための、インスツルメントコードセグメントを生成する段階と、インスツルメントコードセグメントを、装備キャッシュメモリに格納する段階と、第1のコードセグメントへのエントリポイントに遭遇したときに、第1のコードセグメントの代わりにインスツルメントコードセグメントを実行することをコアに可能とするよう、プロセッサをプログラミングする段階とを備える。
【0085】
ある例では、バイナリ変換エージェントは、プロセッサの上で実行されるソフトウェアスタックに対してトランスペアレントである。
【0086】
ある例では、方法が、装備キャッシュメモリ内のインスツルメントコードセグメントの位置に、エントリポイントを関連付けるために、マッピングテーブルにエントリを格納する段階を更に備える。
【0087】
ある例では、方法は、コアに、第2のコードセグメントの代わりに、第2のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、第2のコードセグメントは、ホットスポットを含む。
【0088】
ある例では、方法が、コアに、第3のコードセグメントの代わりに、第3のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、第3のコードセグメントは、自己修正コードを含む。
【0089】
別の例では、プロセッサが、第1のコードセグメントのバイナリ変換を生成して、バイナリ変換を変換キャッシュに格納するコードを含む、バイナリ変換コンテナ手段(BTコンテナ手段)と、
BTコンテナ手段を管理して、第1のコードセグメントを特定するホスト実体手段と、BTコンテナ手段をソフトウェアスタックから隔離する保護手段とを備え、ソフトウェアスタックは、仮想マシンモニタ(VMM)層と、オペレーティングシステム(OS)層と、アプリケーション層とを含み、BTコンテナ手段は、ソフトウェアスタックに対してトランスペアレントである。
【0090】
ある例では、保護手段は、BTコンテナ手段の位置を特定するためのレンジ値を格納する少なくとも1つのレジスタを有する。
【0091】
ある例では、ホスト実体手段は、BT呼び出しへのエントリがあると、プロセッサの状態を第1の状態ストレージに格納させ、BTコンテナ手段のBT状態ストレージに格納されているBT状態を、プロセッサ内にロードする。
【0092】
ある例では、ホスト実体手段は、ソフトウェアスタックのアプリケーションの実行を可能とするために第1のタイムカンタムのためのバイナリ変換が実行された後で、BT状態を、BTコンテナ手段のBT状態ストレージに格納させ、プロセッサの状態を第1の状態ストレージからロードする。
【0093】
ある例では、ホスト実体手段は、プロセッサのアイドルコアの上でのバイナリ変換の実行を可能とするために、アイドルコアの状態ストレージにBT状態をロードさせ、ソフトウェアスタックのアプリケーションは、プロセッサの第2のコアの上で実行される。
【0094】
ある例では、ホスト実体手段は、ソフトウェアスタックのVMM層及びOS層へのBTコンテナのアクセスを回避させる。
【0095】
ある例では、ホスト実体手段は、ソフトウェアスタックのアプリケーション層へのBTコンテナの書き込みアクセスを回避させる。
【0096】
ある例では、ホスト実体手段は、BTコンテナの、プロセッサの状態の第1のサブセットへのアクセスを可能として、BTコンテナの、プロセッサの状態の第2のサブセットへのアクセスを回避させる。
【0097】
別の例では、命令を含むコンピュータ可読媒体が、上述した例のうちのいずれかの方法を実行する。
【0098】
別の例では、装置が、上述した例のうちのいずれかの方法を実行する手段を有する。
【0099】
ある例では、通信デバイスが、上述した例のうちのいずれかの方法を実行するよう、構成される。
【0100】
ある例は、コンピューティングデバイス上で実行されることに呼応して、コンピューティングデバイスに、上述した例のうちのいずれかの方法を実行させる複数の命令を含む少なくとも1つのマシン可読媒体である。
【0101】
上述した例の様々な組み合わせが可能である点を理解されたい。
【0102】
実施形態は、様々な異なるタイプのシステムで利用されてよい。例えば、一実施形態では、通信デバイスが、ここに記載した様々な方法及び技術を実行するよう構成されてよい。 もちろん、本発明の範囲は通信デバイスに限定されず、他の実施形態は、命令を処理する他のタイプの装置、または、コンピューティングデバイス上で実行されると、デバイスにここで記載した方法及び技術の1以上を実行させる命令を含む1以上のマシン可読媒体を対象としていてよい。
【0103】
実施形態はコードで実装することができ、命令を実行するようシステムをプログラムするために利用することができ、命令を格納した記憶媒体に格納されてよい。記憶媒体は、これらに限定はされないが、フロッピー(登録商標)ディスク、光ディスク、固体ドライブ(SSD)、CD−ROM(シーディーロム)、書き換え可能CD(CD−RW)、及び、光磁気ディスク、半導体デバイス(例えば読み出し専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)等のランダムアクセスメモリ(RAM)、消去可能かつプログラム可能な読み出し専用メモリ(EPROM)、フラッシュメモリ、電気的に消去可能かつプログラム可能な読み出し専用メモリ(EEPROM)等)、磁気または光カード、または、電子命令を格納する用途に適した任意の他のタイプの媒体を含んでよい。
【0104】
本発明は、限定された数の実施形態に関して説明されたが、当業者であればこれら実施形態に基づき、様々な変形例及び変更例を想到する。添付請求項は、これら変形例及び変更例の全てを、本発明の真の精神及び範囲内に含まれるものとして含むことが意図されている。
図1
図2
図3
図4
図5
図6