(57)【要約】      （修正有）【課題】ファームウェア層の上のソフトウェアスタックから隠されているバイナリ変換ソフトウェアを維持するように協調設計されたプロセッサアーキテクチャフレームワークを提供する。【解決手段】プロセッサ１１０が、第１のコードセグメントのバイナリ変換を生成して、変換キャッシュにバイナリ変換を格納するコードをもつバイナリ変換（ＢＴ）コンテナ１３０と、ＢＴコンテナを管理して、第１のコードセグメントを特定するホスト実体論理と、ＢＴコンテナをソフトウェアスタック１９０から隔離する保護論理とを含む。このようにして、ＢＴコンテナは、ソフトウェアスタックに対してトランスペアレントに設定される。【選択図】図１
2014174998.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令セットアーキテクチャ（ISA）の命令を実行する第１のコアと、
第２のISAの命令を実行する第２のコアと、
プロセッサによりソフトウェアスタックにトランスペアレントに制御されるバイナリ変換コンテナと
を備える前記プロセッサであって、
前記バイナリ変換コンテナは、コードセグメントを受け取り、前記コードセグメントのバイナリ変換を生成し、前記バイナリ変換を変換キャッシュに格納するバイナリ変換エンジンを含み、前記バイナリ変換は、前記第２のISA内で利用不可能な前記第１のISAの命令をエミュレートするための少なくとも１つのエミュレーションルーチンを含み、前記第２のコアが前記バイナリ変換を実行し、
前記第２のコアは前記第１のコアと非対称である、プロセッサ。
【請求項２】
前記少なくとも１つのエミュレーションルーチンは、前記第２のコアに、第１のベクトルオペランドにオペレーションを実行する命令を実行することを可能にさせ、
前記第２のコアのデータパスの幅は、前記第１のベクトルオペランドの幅未満である、請求項１に記載のプロセッサ。
【請求項３】
前記プロセッサは、前記コードセグメントを含むアプリケーションをプロファイリングして、前記バイナリ変換エンジンに、前記プロファイリングに呼応して前記バイナリ変換を生成させる、請求項１または２に記載のプロセッサ。
【請求項４】
前記プロセッサは、それぞれがネイティブコードセグメントをバイナリ変換コードセグメントに関連付ける、複数のエントリを含むマッピングテーブルを含む、請求項１から３の何れか一項に記載のプロセッサ。
【請求項５】
前記プロセッサは、前記マッピングテーブルにアクセスして、前記コードセグメントへのエントリポイントに遭遇して、前記マッピングテーブルが、前記コードセグメントを前記バイナリ変換に関連付けるエントリを含むとき、前記コードセグメントの代わりに、前記バイナリ変換を実行する、請求項４に記載のプロセッサ。
【請求項６】
前記バイナリ変換エンジンは、前記コードセグメントの代わりに前記バイナリ変換を実行させるステアリング論理を含む、請求項１から５の何れか一項に記載のプロセッサ。
【請求項７】
前記第２のコアは、前記第１のコアよりも低い電力消費レベルを有する、請求項１から６の何れか一項に記載のプロセッサ。
【請求項８】
プロセッサのバイナリ変換エージェントで、第１のコードセグメントのためのバイナリ変換を実行する命令を受信する段階と、
第１の命令セットアーキテクチャ（ＩＳＡ）の第１の命令をサポートしていない前記プロセッサのコアの上で実行されると、前記第１の命令をエミュレートする第１のルーチンを含む、前記第１のコードセグメントのための、インスツルメントコードセグメントを生成する段階と、
前記インスツルメントコードセグメントを、装備キャッシュメモリに格納する段階と、
前記第１のコードセグメントへのエントリポイントに遭遇したときに、前記第１のコードセグメントの代わりに前記インスツルメントコードセグメントを実行することを前記コアに可能とするよう、前記プロセッサをプログラミングする段階と
を備える、方法。
【請求項９】
前記バイナリ変換エージェントは、前記プロセッサの上で実行されるソフトウェアスタックに対してトランスペアレントである、請求項８に記載の方法。
【請求項１０】
前記装備キャッシュメモリ内の前記インスツルメントコードセグメントの位置に、前記エントリポイントを関連付けるために、マッピングテーブルにエントリを格納する段階を更に備える、請求項８または９に記載の方法。
【請求項１１】
前記コアに、第２のコードセグメントの代わりに、第２のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、
前記第２のコードセグメントは、ホットスポットを含む、請求項８から１０の何れか一項に記載の方法。
【請求項１２】
前記コアに、第３のコードセグメントの代わりに、第３のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、
前記第３のコードセグメントは、自己修正コードを含む、請求項８から１１の何れか一項に記載の方法。
【請求項１３】
第１のコードセグメントのバイナリ変換を生成して、前記バイナリ変換を変換キャッシュに格納するコードを含む、バイナリ変換コンテナ手段（ＢＴコンテナ手段）と、
前記ＢＴコンテナ手段を管理して、前記第１のコードセグメントを特定するホスト実体手段と、
前記ＢＴコンテナ手段をソフトウェアスタックから隔離する保護手段と
を備え、
前記ソフトウェアスタックは、仮想マシンモニタ層（ＶＭＭ層）と、オペレーティングシステム層（ＯＳ層）と、アプリケーション層とを含み、前記ＢＴコンテナ手段は、前記ソフトウェアスタックに対してトランスペアレントである、プロセッサ。
【請求項１４】
前記保護手段は、前記ＢＴコンテナ手段の位置を特定するためのレンジ値を格納する少なくとも１つのレジスタを有する、請求項１３に記載のプロセッサ。
【請求項１５】
前記ホスト実体手段は、ＢＴ呼び出しへのエントリがあると、前記プロセッサの状態を第１の状態ストレージに格納させ、前記ＢＴコンテナ手段のＢＴ状態ストレージに格納されているＢＴ状態を、前記プロセッサ内にロードする、請求項１３または１４に記載のプロセッサ。
【請求項１６】
前記ホスト実体手段は、前記ソフトウェアスタックのアプリケーションの実行を可能とするために第１のタイムカンタムのための前記バイナリ変換が実行された後で、前記ＢＴ状態を、前記ＢＴコンテナ手段の前記ＢＴ状態ストレージに格納させ、前記プロセッサの状態を前記第１の状態ストレージからロードする、請求項１５に記載のプロセッサ。
【請求項１７】
前記ホスト実体手段は、前記プロセッサのアイドルコアの上での前記バイナリ変換の実行を可能とするために、前記アイドルコアの状態ストレージに前記ＢＴ状態をロードさせ、前記ソフトウェアスタックのアプリケーションは、前記プロセッサの第２のコアの上で実行される、請求項１５または１６に記載のプロセッサ。
【請求項１８】
前記ホスト実体手段は、前記ソフトウェアスタックの前記ＶＭＭ層及び前記ＯＳ層への前記ＢＴコンテナのアクセスを回避させる、請求項１３から１７の何れか一項に記載のプロセッサ。
【請求項１９】
前記ホスト実体手段は、前記ソフトウェアスタックの前記アプリケーション層への前記ＢＴコンテナの書き込みアクセスを回避させる、請求項１３から１８の何れか一項に記載のプロセッサ。
【請求項２０】
前記ホスト実体手段は、前記ＢＴコンテナの、前記プロセッサの状態の第１のサブセットへのアクセスを可能として、前記ＢＴコンテナの、前記プロセッサの状態の第２のサブセットへのアクセスを回避させる、請求項１３から１９の何れか一項に記載のプロセッサ。
【請求項２１】
請求項８から１２のいずれか一項に記載の方法を実行するよう構成された通信デバイス。
【請求項２２】
コンピューターに請求項８から１２のいずれか一項に記載の方法を実行させるためのプログラム。
【請求項２３】
請求項８から１２のいずれか一項に記載の方法を実行する命令を処理する装置。
【請求項２４】
請求項８から１２のいずれか一項に記載の方法を実行する手段を備える装置。
【発明の詳細な説明】
【背景技術】
【０００１】
現代のマイクロプロセッサは、殆どのコンピュータシステムの心臓部である。  一般的に、これらプロセッサは、命令を受信して、命令に呼応してオペレーションを実行することで動作する。アプリケーションプログラム及びオペレーティングシステム（ＯＳ）アクティビティにおいて、命令は、プロセッサで受信され、プロセッサが、これら命令を、プロセッサハードウェア上での実行に適した、１以上のより小さいオペレーション（しばしばマイクロ命令（ｕｏｐｓ）と称される）にデコードしてよい。一部のプロセッサは、一定の命令セットアーキテクチャ（ＩＳＡ）命令を直接実行するためのハードウェア特徴をもたない。このような訳で、命令が、直接ハードウェア上で実行可能なｕｏｐｓにデコードされている。ｕｏｐｓにデコードすることで、プロセッサは並列処理もアウトオブオーダ処理もスケジュール及び実行することができるようになり、パフォーマンスの向上を助ける。しかしこのメカニズムは、多くの場合に不十分である。
【図面の簡単な説明】
【０００２】
【図１】本発明のある実施形態におけるシステムの部分のブロック図である。
【０００３】
【図２】本発明の別の実施形態における協調設計されたプロセッサのブロック図である。
【０００４】
【図３】本発明のある実施形態におけるバイナリ変換を実行する方法のフロー図である。
【０００５】
【図４】本発明のある実施形態における変換されたコードに低オーバヘッド転送を実行するための方法のフロー図である。
【０００６】
【図５】本発明のある実施形態におけるプロセッサ及びメモリを含む協調設計環境のブロック図である。
【０００７】
【図６】本発明のある実施形態におけるシステムのブロック図である。
【発明を実施するための形態】
【０００８】
様々な実施形態では、ファームウェア層の上のソフトウェアスタックから隠されているバイナリ変換ソフトウェアを維持するように協調設計されたプロセッサアーキテクチャフレームワークが提供される。このソフトウェアスタックは、プロセッサの１以上のコアの上で実行される、仮想マシンモニタ（ＶＭＭ）、オペレーティングシステム（ＯＳ）及びアプリケーションを含む。このようにすることで、実施形態では、ファームウェアの上のソフトウェアスタックの層に対する修正を回避することができる。したがって、このスタックは、ダイナミックバイナリ最適化及び命令セットアーキテクチャ（ＩＳＡ）エミュレーションシステムの恩恵を得ることができる。このアーキテクチャフレームワークが、ＶＭＭ、ＯＳ、及びアプリケーションからトランスペアレントなＢＴソフトウェアの実行のために提供されたとしても、協調設計されたプロセッサの異なるタイプのソフトウェアコンポーネントを実行して、異なるタイプの利用を可能とするべく利用することもできる。例えばこのフレームワークは、隠れた環境で（例えばＶＭＭ／ＯＳ層から隠されたもの）実行されるソフトウェア（例えばウィルススキャンソフトウェア）を実行するために利用されてよい。この隠れた環境は、ＶＭＭ、ＯＳ、及びアプリケーションから、隔離され、独立しており、保護されている実行環境である。
【０００９】
バイナリ変換によりハードウェア／ソフトウェアが協調設計されたプロセッサは、隠れたバイナリ変換（ＢＴ）ソフトウェアによる、ダイナミックバイナリ最適化及び変換を可能とすることができる。電力効率よくパフォーマンスを向上させ、更に、バイナリ変換によって新たなＩＳＡ拡張を可能とすることができる。協調設計されたプロセッサでは、例えばｘ８６ＩＳＡである、ソースＩＳＡと称される標準的なＩＳＡが存在している。ＯＳ及びアプリケーションプログラムの両方を含む、従来のソフトウェアが、ソースＩＳＡにコンパイルされる。そして、協調設計されたプロセッサのハードウェアが、特別パフォーマンス及び／またはエネルギー効率特徴を持つ一定のハードウェア実装例のために特別に設計されたターゲットＩＳＡを実装する。ターゲットＩＳＡは、ｕｏｐｓと同レベルにあり、ｕｏｐｓのセットと同一であってよい。
【００１０】
協調設計されたプロセッサに属すエミュレーションソフトウェアは、アプリケーション／ＯＳソースＩＳＡソフトウェアの実行を、これを、ターゲット命令の最適化されたシーケンスへと解釈、または、直接変換することによって、指揮管理（direct）する。これら変換は、パフォーマンスゲイン及び／または向上したエネルギー効率を約束する。
【００１１】
エミュレーションプロセスは、通常、以下のように進められる。解釈は、最初に遭遇したコード（ソースＩＳＡ命令）に対して利用される。そして、ダイナミックプロファイリングまたはその他の手段を利用することで頻繁に実行されるコード領域（ホットスポット）が発見されると、これらをターゲットＩＳＡに変換する。多くの場合、最適化は、変換プロセスの一部として実行され、非常に頻繁に利用されるコードは、後で、更にいっそう最適化されてよい。コードの変換された領域は、再利用できるように変換キャッシュに保持される。変換キャッシュは、エミュレーションソフトウェアによって管理され、全てのアプリケーション／ＯＳソフトウェアから隠されたメモリの一部に保持される。アプリケーション／ＯＳソフトウェアは、従来の（見える）メモリに保持される。
【００１２】
協調設計されたＶＭを利用する以前のプロセッサ実装は、エミュレーションソフトウェアが全てのアプリケーション／ＯＳソフトウェアをエミュレートする、完全なエミュレーションを利用する。完全なエミュレーションの１つの欠点に、全てのコードを実行前にまず解釈及び／または変換する必要があり、これによって、ソフトウェアの領域に最初に遭遇したときに低パフォーマンスになってしまう恐れがある、ということがある。
【００１３】
実施形態では、ハードウェアベースのメカニズム及びプロセッサファームウェアベースのメカニズムを両方とも利用して、隔離され、隠された仮想マシン実行環境、ここではバイナリ変換（ＢＴ）コンテナと称される、を作成することができる。このコンテナは、部分変換または完全ＩＳＡエミュレーションモデルを実装するべく、ＢＴソフトウェアを実行するために利用されてよい。ある実施形態では、ＢＴコンテナは、本質的に、プロセッサファームウェアが直接制御する仮想マシン環境の特別な（及び幾つかの実施形態では簡略化された）バージョンである。様々な実施形態では、コンテナは、ＶＭＭ，オペレーティングシステム、及びアプリケーションを含むソフトウェアスタックから隠され、及びトランスペアレントであるよう設計されている。
【００１４】
オペレーション中に、ＢＴコンテナは、様々なコンポーネント及びメカニズムとインタラクトする。第１に、プロセッサは、ＢＴコンテナを管理するためのホスト実体を含む。様々な実施形態では、この実体は、プロセッサハードウェア拡張と、ファームウェア（例えばマイクロコード層またはプロセッサアブストラクション層）との組み合わせによって実装されてよい。ここで記載するように、ホスト実体は、ＢＴコンテナ、及びＢＴコンテナの内部で実行されるソフトウェアに晒されるＩＳＡに対するエントリの出し入れを制御する。
【００１５】
ＢＴコンテナ環境は、ＢＴソフトウェアのプロセッサの状態及びＢＴソフトウェアのためにコード及びデータを保持するプライベートメモリ空間を含む。ＢＴソフトウェアは、このＢＴコンテナ内で実行されて、最適化及びＩＳＡ整合オペレーション（ISA compatibility operations）を実行するための１以上のバイナリ変換アルゴリズムを実装する。
【００１６】
様々な実施形態は、ＢＴコンテナメモリをソフトウェア（ＶＭＭ、ＯＳ、及び、アプリケーション）及びハードウェアの攻撃者から保護するために利用されるハードウェアベースの保護メカニズムを提供してよい。一実施形態では、この保護メカニズムは、メモリレンジレジスタベースの保護、メモリ暗号化ハードウェア等で実装することができる。別の様々な実装例では、提供される保護のレベルは、利用される特徴及び所望のセキュリティ方針（security objectives）に基づいていてよい。
【００１７】
ＢＴハードウェアユニットは、協調設計されたプロセッサのためのハードウェアサポートを実装するために提供される。ある実施形態では、このユニットは、ＢＴコンテナを呼び出すためのイベントを検出（たとえば、ホットスポット検出、自己修正コード検出、及び、ＩＰＩ（inter-processor interrupt：プロセッサ間割り込み））イベント、電力管理イベント、ＲＡＳ（reliability availability serviceability）イベント等のその他のイベントを含む）するためのハードウェアサポートを含む。より一般的には、これらイベントは、ＢＴソフトウェアから直に注目を受ける。例えば、１つのイベントが、複数のプロセッサの上で実行されるＢＴソフトウェア間を同期させるよう定義されているプライベートＩＰＩメカニズムであってよい。
【００１８】
ＢＴ  ＩＳＡ拡張は、ＢＴコンテナへの、または該ＢＴコンテナからの、及びこのコンテナ内の様々なオペレーションへの、または該様々なオペレーションからの、制御移行を可能とするべく、提供されてよい。ある実施形態では、これらＩＳＡ拡張は、ＢＴコンテナの内部で実行されるＢＴソフトウェアのみによって利用可能であってよい。例として、これらＩＳＡ拡張は、ＢＴソフトウェアに、ＢＴハードウェアユニットにアクセス、及び、ＢＴハードウェアユニットをプログラムさせ、ホスト実体と通信することで、コンテナポリシーを設定して、バイナリ変換のための、元のコードメモリ空間にアクセスするようにさせる。
【００１９】
ある実施形態では、変換されたコードを格納するために、変換キャッシュメモリが提供されてよい。ある実施形態では、変換されたコードの実行への遷移は、ＢＴハードウェアユニットが提供する変換エントリメカニズムによって統括される。  プライベートプロセッサの状態及びプライベートメモリ空間を含む、ＢＴコンテナ環境は、他のソフトウェア（ＶＭＭ、オペレーティングシステム、及び、アプリケーション）から隔離され、及び、隠されていてよい。
【００２０】
ＢＴコンテナリソースは、システム起動中にホスト実体によって割り当て、作成されてよい。この時点に、ホスト実体が、ハードウェア保護メカニズムをプログラム、管理することができる。
【００２１】
ＯＳ及びＶＭＭからトランスペアレントにするべく、ＢＴコンテナのＢＴソフトウェアの呼び出し及び終了は、ホスト実体によって直接制御される。一実施形態では、呼び出し及び終了オペレーションは、ハードウェアとマイクロコードとの組み合わせによって実装される。別の実施形態では、プロセッサファームウェアを利用して、これらオペレーションが実行されてよい。
【００２２】
１つの制御移行オペレーションとして、ＢＴハードウェアユニットがＢＴ呼び出しイベント（たとえばホットスポット）を検出すると、プロセッサは、ゲストソフトウェアスタックの実行を停止して、ホスト実体にこのイベントを通知する。そして、ホスト実体は、プロセッサコンテキストの現在の状態を一時的な状態ストレージ領域にセーブして、ＢＴコンテナコンテキストにスイッチして（ＢＴコンテナのＢＴ状態ストレージ内に格納されている場合がある）、定義されたエントリの命令ポインタ（ＩＰ）からＢＴソフトウェアの実行を開始させる。ＢＴソフトウェアが制御を得ると、特別な終了命令によって（ＢＴコンテナに晒されるＢＴ  ＩＳＡ拡張であってよい）自発的終了が生じるまで、または、外部割込み、内部タイマ割り込み等の一定のハードウェアイベントが生じて、ホスト実体が非自発的終了を強制的に実行するまで、実行が続けられる。上述した内部タイマ割り込みは、本質的に、タイムアウトイベントであり、これがＶＭＭ及びＯＳから隠されることで、ＢＴソフトウェアは、長いレイテンシーのオペレーションをタイムスライスすることができる。
【００２３】
トランスペアレンシーは、また、ソフトウェアスタックに晒されるＢＴソフトウェアレイテンシーを、このスタックの前進要求（forward progress requirement）を満たすように、よく制御及び管理することによって、達成することもできる。例えば、ＢＴソフトウェアが、特定されたホットスポットのための変換タスクを完了するために最大１ミリ秒（ｍｓ）かかる場合、ホスト実体は、ソフトウェアに晒されるレイテンシーをＢＴソフトウェアが軽減及び制御するためのメカニズムを提供してよい。ある実施形態では、これらメカニズムは、１）ＯＳ割り込みハンドラに晒されるレイテンシーを最小限にするために外部割り込みを受けたＢＴソフトウェアをプリエンプション（preemption）（非自発的終了）すること、２）ＢＴソフトウェアが、基礎となるプログラム実行の最小限の前進要件を満たすための、タイムカンタム管理（タイムスライススケジューリング）を可能とするために１以上の内部タイマを利用すること、及び、３）ＢＴソフトウェアレイテンシーを隠すために１以上のアイドルコアに対して長期間のＢＴタスクをスケジューリングすること、を含む。これらのメカニズムは、ホスト実体によって予め設定されているか、ＢＴソフトウェアが晒されているＢＴ  ＩＳＡ拡張によって動的に設定される。
【００２４】
隔離されたコンテナにＢＴソフトウェアを実行させることによって、更に、ホスト実体が、ＢＴコンテナに晒されるＩＳＡ特徴、及び、ＢＴコンテナ内で実行されるＢＴソフトウェアに与えられているメモリ及びプロセッサリソースのアクセス許可等の特権を制御することができる。例えば、ホスト実体は、ＩＳＡ特徴のサブセット（例えば、浮動小数点ＩＳＡ命令はない）が、十分、所与のバイナリ変換タスクを実行することができる場合に、ＢＴソフトウェアに晒されるＩＳＡ特徴を制限し、制御することができる。このような制御は、コンテナ環境の簡略化、及び、ネイティブコンテナ実行とＢＴコンテナ実行との間のコンテキスト切り替え時間の低減に役立つ。
【００２５】
ハイパーバイザまたはＶＭＭを実行するべく提供される監督モードと異なり、ＢＴコンテナは、動作に適した最小限の特権及び優先権を与えられているので、ＩＳＡ特徴の一部がＢＴソフトウェアによって実装された場合であっても、オペレーティングシステムへのレイテンシーエクスポージャ等の安全上のリスク及びシステムへの影響を大幅に低減させることができる。ある実施形態では、ホスト実体が、システムＩＳＡ特徴及びＢＴ実行に費やされる時間等のＢＴソフトウェアのＩＳＡ特徴及び特権を制限及び制御して、ＢＴコンテナが、その正当な目的のために動作する上で必要な情報、リソース、命令、及びタイムカンタムのみにアクセスするよう制限することができる。
【００２６】
例えば、ＢＴソフトウェアは、バイナリ変換タスクを実行するために、ユーザレベル（例えばリング３）のＩＳＡアクセスのみに晒されることで十分な場合には、そのようにされてよい。部分変換モデルで実行されるエミュレーションが、ユーザレベルのアプリケーションのためである場合には、このようにアクセスに晒すことが適切であろう。更に、ＢＴコンテナメモリの外に対するメモリ参照を、アプリケーションソフトウェアの命令ページのみに限定することができる。また、ＢＴソフトウェアがバイナリ変換タスクを実行するためには読み取り許可で十分である場合には、ＢＴソフトウェアに読み取り許可のみが与えられる。ＢＴソフトウェアによるゲストプロセッサの状態アクセスは、バイナリ変換タスクのために十分なゲストプロセッサの状態のサブセットに限定されてよい。言い換えると、ＢＴソフトウェアにとっては、変換に必要なゲスト状態のみが利用可能となり、これにより、ＢＴソフトウェアが使用しないプロセッサリソースにはアクセスされない。ある実施形態では、更に、バイナリ変換がアプリケーション（つまりユーザ）ソフトウェアコードのみに対して実行される場合、ホスト実体は、ＢＴソフトウェアがゲストカーネル（例えばリング０）メモリにアクセスすることを妨げることもできる。この制御によって、ＢＴソフトウェアは、動作に十分な最小限の特権及び特徴で動作することが可能となり、システムへの影響、変更、及び試験要件の範囲をより簡単にして、よりよいシステムセキュリティを実現することで、ＨＷ／ＳＷが協調設計されたプロセッサの安全上のリスクを低減させロバストネスを向上させる一助となる。
【００２７】
本発明のある実施形態を利用することで、部分変換モデルを、プロセッサの１以上のコアの上に実現することができる。このようにすることで、ＩＳＡを仮想化して、複数のＢＴ利用を可能として、ワットあたりのパフォーマンスを上げることができる。このような例の１つでは、コードが非ベクトル幅または、より小さいベクトル幅のハードウェアについて書き込まれたベクトルコアでベクトル幅のオペレーションを実行するためにＢＴメカニズムが利用される。このようにすることで、ＢＴメカニズムは、元のソフトウェアが、より幅の狭い前の生成ベクトルレジスタまたは非ベクトルレジスタでの利用のために書き込まれた場合であっても、より幅の広いベクトルレジスタを利用するためにソフトウェアを変換することができる。この具体例では、Ｉｎｔｅｌ（登録商標）ＩＳＡのストリーミングＳＩＭＤ拡張（ＳＳＥ）命令を利用するソフトウェアが変換されて、代わりに、Ｉｎｔｅｌ（登録商標）ＩＳＡ高度ベクトル拡張（ＡＶＸ）命令が利用される。また更に、この特徴を実行するための追加の専用のハードウェアを含めるのではなく、ここで説明するＢＴメカニズムによってＩＳＡ特徴拡張を提供することによって、ＩＳＡ整合を、より小さいコアサイズで実現することができる。例えば、より小さいコアは、ＡＶＸサポートをもたず、ＳＳＥサポートしか持たない場合がある。ＢＴは、ＡＶＸ命令を利用するソフトウェアを変換することで、代わりにＳＳＥ命令を利用することができる。これにより、ＩＳＡ整合が提供され、より小さいコアのＩＳＡギャップが埋まる。
【００２８】
このＨＷ及びＳＷの協調設計されたフレームワークは、ここで記載されるようにＢＴに利用することができるが、他の利用モデルに、既存のＯＳ／ＶＭＭに変更を行わずに、プロセッサ特徴及び値（例えばパフォーマンス、電力管理、及び、ＩＳＡ拡張／エミュレーション）を増させるために利用することも可能である。
【００２９】
幾つかの実施形態では、システム管理モード（ＳＭＭ）等のプラットフォームファームウェアコンポーネントが、サーバＲＡＳ（server reliability/availability/serviceability：サーバ信頼性／利用可能性／サービス提供性）特徴と共存するべく、ＢＴコンテナ及びＢＴソフトウェアのトラステッド・バウンダリ内に位置してよい。しかし、他の実施形態では、これらのコンポーネントは、一定のＨＷ拡張（例えばＨＷベースのメモリ暗号化及び整合性チェック）をもつトラステッド・バウンダリの外に位置することで、ＨＷ及びＳＷの協調設計されたプロセッサのソフトウェアコンポーネントに対するＳＭＭコード及びＨＷアタックに対する耐性を向上させてもよい。
【００３０】
図１を参照すると、本発明のある実施形態におけるシステムの一部のブロック図が示されている。図１に示すように、システム１００の該一部は、協調設計されたプロセッサ１１０と、ソフトウェアスタック１９０とのインタラクションとを含む。プロセッサ設計の多くの異なるタイプが、この協調設計されたプロセッサのベースラインとして利用可能であるが、ある実施形態では、プロセッサ１１０は、同種のコアのセットまたは異種コアの集合体であってよい複数のプロセッサコア（例えば１以上の低電力コア及び１以上のこれより高い電力のコア）を含むマルチコアプロセッサであってよい。加えて、グラフィックプロセッサ及びその他の専用プロセッシングユニット等の更なるプロセッシングユニットが存在してもよいことを理解されたい。ある実施形態では、プロセッサ１１０が、Ｉｎｔｅｌ（登録商標）６４ＩＳＡ等の特定のタイプのＩＳＡについて設定されてもよい。もちろん、別のＩｎｔｅｌ（登録商標）ＩＳＡ（例えばＩｎｔｅｌ（登録商標）３２ＩＳＡ）、または、ＡＲＭベースのＩＳＡ等の別のタイプのＩＳＡ等の他のプロセッサＩＳＡが、代わりに存在してもよい。あるいは、プロセッサが、複数のＩＳＡで設定されてもよい。
【００３１】
図１に示す実施形態では、概して、様々なコア及びその他の実行論理がプロセッサハードウェア１２０に存在していてよい。本発明のある実施形態に則ったバイナリ変換を実施することを目的として、ハードウェア１２０は、ホスト実体論理１２２、保護論理１２４、及び、ＢＴハードウェアユニット１２６を含む。様々な実施形態において、これら異なる論理ユニットは、プログラミング可能論理上で実行されるよう設定されたプロセッサマイクロコード等の、ハードウェア及び／またはプロセッサファームウェア拡張の集合体として形成されてよい。
【００３２】
概して、ホスト実体論理１２２は、ＢＴコンテナをソフトウェアスタック１９０に対してトランスペアレントにするよう管理する制御論理を含んでよい。保護論理１２４は、ＢＴコンテナ及びその中のソフトウェア専用のメモリのレンジを示すための、レンジ値（例えば第１の値及び第２の値）を格納するレンジレジスタ等のレジスタベースの保護メカニズムを含んでよく、したがってこれは、ソフトウェアスタックから隠され続けるよう制御される。他の実施形態では、複数のレジスタが、この保護論理内に存在してよく、複数のレジスタには、ＢＴコンテナの保護されている領域の始めに対応しているベース値、及び、保護されている領域の最後を示すエンド値を格納するためのベースレジスタが含まれる。ある実施形態では、ＢＴハードウェアユニット１２６は、ＢＴコンテナ１３０内のネイティブコード実行及びバイナリ変換実行の間の制御移行を可能とするためのステアリング論理を含んでよい。このような実施形態の１つでは、ステアリング論理が、それぞれがネイティブコードセグメント及び対応するバイナリ変換を関連付ける複数のエントリを含む１以上のマッピングテーブルを含んでよく、または、これらに関連付けられていてよい。例えば、各エントリが、ネイティブコードセグメント用のエントリポイント、及び、例えば変換キャッシュ１４０内に格納されているバイナリ変換のための対応するエントリポイントを含んでよい。
【００３３】
図１から更にわかるように、プロセッサハードウェア１２０は、ＢＴコンテナ１３０とインターフェースする。このコンテナは、隔離され、隠れた仮想マシン実行環境であり、したがってソフトウェアスタック１９０に対してトランスペアレントである。この隠れた環境は、ソフトウェアスタック１９０に対してトランスペアレントとなるようにプロセッサファームウェア及び／またはマイクロコードを利用してハードウェア１２０によって制御されてよい。図示されている実施形態では、コンテナ１３０が、状態ストレージ１３２及びプライベートメモリ１３４を含む。概して、状態ストレージ１３２は、ＢＴオペレーション中に利用するためにプロセッサの状態を格納してよい。より詳しくは、この状態ストレージは、状態レジスタ及び設定レジスタ、汎用レジスタ等を含む、全てのプロセッサの状態情報のコピーを格納してよい。幾つかの実施形態では、この状態ストレージが、マルチステッドであってよい。加えて、ＢＴコンテナ１３０が、ＢＴソフトウェアが内部に格納されてよいプライベートメモリ１３４を含む。幾つかの実施形態では、このプライベートメモリは、プロセッサのキャッシュメモリの１以上のレベルの一時的ストレージと、システムメモリのストレージとを含む複数レベルのヒエラルキーをもつものであってよい。
【００３４】
概して、ＢＴソフトウェアは、様々なコンポーネントを含んでよく、その幾つかを図１に示す。具体的には、ＢＴソフトウェアは、様々なＩＳＡ拡張の最適化及び／またはエミュレーションを可能とするべく、バイナリ変換を実行するために利用されるトランスレータ１３５を含んでよい。加えて、ランタイム層１３６がランタイム中に利用されて、変換されたコードを実行する。また更に、システム層１３８は、ＢＴコンテナ１３０と基礎となるプロセッサハードウェア１２０との間のインターフェースとして機能するよう設定されてよい。
【００３５】
ＢＴソフトウェアが生成するバイナリ変換は、変換キャッシュ１４０に格納される。様々な実施形態では、ＢＴハードウェアユニット１２６及び／またはＢＴソフトウェアは、実行されるネイティブコードのための対応するバイナリ変換の存在を特定し、これにより、ＢＴコンテナ１３０内の状態ストレージ１３２から取得したプロセッサの状態を利用するバイナリ変換の実行用にプロセッサを適切に設定させるよう設定されてよい。
【００３６】
図１の参照を続けると、ソフトウェアスタック１９０が存在しており、プロセッサ１１０上で実行される。概して、ソフトウェアスタック１９０は、ＶＭＭ層１９２、ＯＳ層１９４、及び、アプリケーション層１９５を含む。図１に示す例では、複数のアプリケーション１９６ａ‐１９６ｎが、アプリケーション層１９５内に存在していてよい。概してこれらのアプリケーションは、ユーザが要求するタスクを実行するために利用されるユーザレベルのアプリケーションであってよい。
【００３７】
概して、ソフトウェアスタック１９０の様々なソフトウェアは、プロセッサ１２０上でネイティブに実行されてよい。しかし、ホットコードまたはその他のコード（例えばプロセッサ１１０のネイティブＩＳＡがサポートしていない命令を含むコードなど）等のコードの少なくとも一定の部分は、バイナリ変換の恩恵を得るだろう。このようなコードは、例えばホスト実体論理１２２を介して検出されてよく、これは、ＢＴコンテナ１３０をトリガして、バイナリ変換を実行させ、これを変換キャッシュ１４０にインストールさせてよい。したがって、変換されたネイティブコード部分へのエントリポイントに遭遇すると、プロセッサハードウェア１２０の少なくとも一つの部分（例えば１シングルコア、コア等の実行等）は、状態ストレージ１３２に存在しているプロセッサの状態を利用して、変換キャッシュ１４０内で、変換されたコードの実行を可能とするよう設定されてよい。図１の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
【００３８】
図２を参照すると、本発明の別の実施形態における協調設計されたプロセッサのブロック図が示されている。図２に示されているように、プロセッサ２００は、マルチコアプロセッサである。より詳しくは、プロセッサ２００は、それぞれ異なるタイプのプロセッシングユニットを含む非対称マルチプロセッサであってよい。図２に示される実施形態では、プロセッサ２００は、大きいコアとして設定されてよい、第１の複数のコア2100-210n（一般的にはコア２１０）を含む。「大きいコア」とは、これらコアが、あるＩＳＡを完全にサポートすることができるよう設定されてよいことを意味する。例えばこれらコアは、高度ベクトル拡張（ＡＶＸ）命令等のベクトルサポートを含む、一定のＩｎｔｅｌ（登録商標）ＩＳＡをサポートしていてよい。したがって、大きいコア内の実行ユニットの１以上のデータパスは、一定のベクトル幅（例えば１２８ビット、２５６ビット、５１２ビット）または別のベクトル幅をもっていてよい。比較的幅の広いベクトルデータパスが与えられると、大きいコアが、実行中に、少なくともベクトル命令の実行中に、比較的多量の電力を消費する可能性がある。
【００３９】
多くのアプリケーションがこれらのベクトル命令の利点を享受しているが、他のタイプのアプリケーションは、これら命令を利用しない場合もあるので、大きいコア２１０のより大きな電力消費から恩恵を受けない場合がある。この目的を達成するために、プロセッサ２００は更に、複数の小さいコア2120-212n（総称してコア２１２）を含む。「小さいコア」とは、大きいコアのうちの、異種設計を持っていてよいこれらコアが、より低い電力消費を有していてよいことを意味している。例えば、これらの小さいコアは、別のＩＳＡ、または、大きいコアのＩＳＡのサブセットのみをサポートしていてよい。例えば、小さいコア２１２は、ＡＶＸ命令等のベクトル命令のためにサポートを提供しなくてよい。このように、小さいコアの１以上の実行ユニットのデータパスは、大きいコア２１０の実行ユニットのデータパスより小さい幅を有してよい。
【００４０】
様々なタイプのコアに加えて、更なるプロセッシングユニットがプロセッサ２００内に存在していてよい。図２に示す実施形態では、複数のグラフィックエンジン2140-214nが提供されてよい。これらグラフィックエンジンは、グラフィックプロセッシングを実行するために利用されてよいグラフィックプロセッシングユニット（ＧＰＵ）であってよい。しかし、更なる／異なるプロセッシングをこれらグラフィックエンジン上で実行してもよい点を理解されたい。例えば、汎用グラフィックプロセッシングユニット（ＧＰＧＰＵ）モデルでは汎用命令を実行することができる。また更なるプロセッシングユニットが、プロセッサ２００内に存在していてもよい（図２では説明の便宜上図示していない）。
【００４１】
図２の参照を更に続けると、様々なコア及びその他のプロセッシングユニットが、ある実施形態ではラストレベルキャッシュ（ＬＬＣ）であってよい、共有キャッシュメモリ２１５に連結されている。幾つかの実施形態では、このキャッシュメモリが、コア／グラフィックエンジンのそれぞれに関連付けられている１以上のバンクをもつ分散型のキャッシュメモリであってよい。
【００４２】
動的バイナリオペレーションをもたらすために、プロセッサ２００は更に、バイナリ変換を制御及び実行するための様々なハードウェアを含む。図２に示す実施形態では、プロセッサ２００が、バイナリ変換コンテナ２２５に連結されたバイナリ変換制御論理２２０を含む。そしてバイナリ変換コンテナ２２５が、変換キャッシュ２２８に連結されている。
【００４３】
概して、ＢＴ制御論理２２０は、ＢＴコンテナ２２５内で実行されるＢＴソフトウェアへの、またはＢＴソフトウェアからの呼び出しを直接制御するよう設定されてよい。例えば、ＢＴ制御論理２２０は、例えば最適化またはその他のエミュレーション特徴を利用するために、バイナリ変換が適しているコードセグメントを特定するよう設定されていてよい。従ってＢＴ制御論理２２０は、ＢＴコンテナ２２５内のＢＴソフトウェアに対して、一定のコードセグメントのためのバイナリ変換を生成するよう命令して、ＢＴソフトウェアに、変換キャッシュ２２８内に、生成されたバイナリ変換を格納させてよい。加えて、ＢＴ制御論理２２０は、バイナリ変換が利用可能なコードセグメントへのエントリポイントに遭遇したとき、バイナリ変換に制御移行を可能とするように、ステアリング論理（またはその他のプロセッサ論理）をプログラムしてよい。ある実施形態では、このプログラミングは、ネイティブコードセグメントと、インスツルメント（instrumented）コードセグメントとを関連付けるエントリをマッピングテーブルに書き込むことを含んでよい。
【００４４】
動的バイナリ変換は、コード最適化及びＩＳＡエミュレーション等のための様々な状況のために実行されてよい。具体的な１つの状況は、コアがサポートしない１以上の命令を持つコードを実行することを目的としている。例えば、一実施形態において上述したように、小さいコア２１２は、ベクトル命令のサポートを提供しなくてよい。しかし、大きいコアと比べて小さいコアに電力消費上の利点があるという前提において、限定された数のベクトル命令が１つのコードセグメント内に出現し、このコードセグメントを小さいコアで実行させることが望ましい。したがってＢＴ制御論理２２０は、ＢＴソフトウェアに、一定の小さいコア２１２の上で実行させるべくこれらベクトル命令のエミュレーションを可能とするために、例えば少数のベクトル命令を持つコードセグメントのバイナリ変換を生成させることができる。
【００４５】
図２に対する参照を続けると、プロセッサ２００は更に、電力制御ユニット（ＰＣＵ）２３２を介したプロセッサのための電力制御等の総括的な監督機能を提供することができるシステムエージェント回路２３０を含む更なる回路を含む。加えて、統合されたメモリコントローラ２３４が、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等のシステムメモリにインターフェースを提供する。システムエージェント２３０は更に、マルチプロセッサシステムの他のプロセッサ、ペリフェラルコントローラ及びその他のシステムコンポーネント等の、システムの他のエージェントに対するインターフェースを可能とするための、１以上のインターフェース２３６を含んでよい。図２の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
【００４６】
図３を参照すると、本発明のある実施形態における方法のフロー図が示されている。概して、図３の方法３００は、プロセッサの様々な論理の組み合わせによって実行され、変換されたコードを生成して、実行中に、生成されたバイナリ変換されたコードに対応するネイティブコードに呼び出しが行われるとき、プロセッサが、この変換されたコードへの制御移行を実行できるよう、構成してよい。
【００４７】
図３では、方法３００は、１以上の重要なコードセグメントを特定するように、コード実行をプロファイリングすることによって開始される（ブロック３１０）。ここで記載する例では、このコードのプロファイリングは、ホットスポットコード、自己修正コード、エミュレートされるコード（例えば、その上で実行されてよい所与のコアがサポートしないＩＳＡ命令のためのもの）等を特定するために実行されてよい。
【００４８】
図３の参照を続けると、実行が続けられ、プロファイリングが実行された後に、特定されたコードセグメントに関する情報（例えばホットスポットコード、自己修正コード、エミュレートされるコード）をバイナリ変換エージェントに提供することができる（ブロック３２０）。例としては、このバイナリ変換エージェントが、ここで説明するバイナリ変換エンジンであってよい。次に制御はブロック３３０に移行され、ここで、インスツルメントコードセグメントが、コードセグメントから生成され、装備キャッシュに格納されてよい。例としては、このインスツルメントコードの生成には、プロセッサの所与のコアまたはその他のプロセッシングユニットによってサポートされない１以上の命令をエミュレートするための１以上のエミュレーションルーチンが含まれてよい。このようにすることで、インスツルメントコードが、エミュレートされたコードの、より低いコストでの実行を可能とするエミュレーション機能を提供する（例えば、より低い電力消費コアにおいて）。ある実施形態では、変換生成中にＯＳ及びアプリケーションコードの前進予想を確実にするために、時間チェックを行ってよい。このイベントが起こった場合、制御は、ネイティブコードの実行に戻る。次のホットスポットイベントは、プロセッサを、変換生成タスクに戻す。
【００４９】
図３の説明を続けると、制御は次に、ブロック３４０に移行して、プロセッサのステアリング論理が、このインスツルメントコードセグメントを指すようにプログラムされてよい。つまり、ＢＴハードウェアユニット等のステアリング論理は、ネイティブコードセグメント（つまり、特定された重要なコードセグメント）と、ネイティブコードセグメントのために実行される、インスツルメントコードセグメントとの間の対応関係を特定するエントリで更新される１以上のマッピングテーブルを含んでよい。従ってこのプログラミングは、論理に、今は変換されているネイティブコードへのエントリポイントに遭遇したときに、ネイティブコードから、インスツルメントコードの実行への移行またはステアリングの実行を可能とさせる。図３の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
【００５０】
図４を参照すると、本発明のある実施形態における変換されたコードに低オーバヘッド転送を実行するための方法のフロー図である。図４の方法４００は、ＢＴ制御論理及びその他のプロセッサ論理を含むプロセッサの様々な論理によって実行されてよい。図示されているように、方法４００は、ダイアモンド４１０で、第１のコードセグメントへのエントリポイントに遭遇したかを判断することから開始されてよい。ある実施形態では、このエントリポイントが、バイナリ変換が実行されたコードセグメントの第１の命令の呼び出しであってよい。このような呼び出しが受信されない場合には、ブロック４２０で通常のコード実行が続けられてよい。このようなコードの呼び出しが受信された場合には、制御はブロック４３０に移行して、インスツルメントコードセグメントに制御を移すために、ステアリング論理をイネーブルする。一実施形態では、この制御移行のイネーブルが、ネイティブコードセグメントエントリポイントを、変換されたコードセグメントエントリポイントに関連付けるマッピングテーブルへのアクセスによって実行されてよい。
【００５１】
バイナリ変換の実行をイネーブルするために、制御がブロック４４０に移され、ここでプロセッサに格納されているネイティブコンテキストと、バイナリ変換コンテキストとの間のスワッピングが生じる。ある実施形態では、スワッピングは、プロセッサの状態を、プロセッサの状態ストレージにセーブして、ＢＴコンテナ内のＢＴ状態ストレージからＢＴプロセッサの状態を、プロセッサの様々なレジスタにロードすることを含み、様々なレジスタには、設定レジスタ及び状態レジスタ、汎用レジスタ等が含まれる。次に、制御はブロック４５０に移され、インスツルメントコードセグメントが実行されて、サポートされていない特徴をエミュレートすることができる。
【００５２】
実行中に、例外または外部割込みが生じ得、これがダイアモンド４６０で判断される。このようなイベントが生じない場合には、インスツルメントコードセグメントが、実行を完了してよい（ブロック４８０）。従って、ブロック４２０で、ネイティブコードの実行継続が行われてよい。
【００５３】
反対にこのようなイベントが生じた場合には、制御はブロック４７０に移行する。ブロック４７０では、別のコンテキスト切り替えが生じ、ネイティブ状態の、プロセッサへの再度のロードが可能となってよい。そして制御はブロック４８０に移され、ネイティブコードが実行されて、割り込みまたは例外が処理されてよい。  そして、バイナリ変換のために更なる作業を行う必要があるときには、制御が前述したブロック４３０に戻され、バイナリ変換の実行継続が行われる。図４の実施形態にはこのようなハイレベルで示されているが、本発明の範囲はこの点に限定されないことを理解されたい。
【００５４】
本発明のある実施形態に従って協調設計された仮想マシンとして実装されたプロセッサのコンポーネントを例示するために、図５を参照する。図５に示されているように、協調設計環境６００は、プロセッサ６０５とメモリ６２０とを含み、メモリ６２０は、一実施形態では、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等のシステムメモリであってよい。図示されているように、プロセッサ６０５は、所与のマイクロアーキテクチャを有してよく、例えばポイント−ツー−ポイントインターコネクト、バスによって、またはその他の類似した方法によって、メモリ６２０に連結されてよい。メモリ６２０の可視（visible）部分、つまり第１の部分６３０には、１以上のオペレーティングシステム６３５及びアプリケーションプログラム６３８が格納されてよい。この部分は、ユーザレベルコード（つまりアプリケーションプログラム６３８）から見ることができるために、及び、ＯＳ（ＯＳ６３５及びプログラム６３８の両方）から見ることができるために、「可視」と称される。これらプログラムで実行される命令のタイプに応じて、直接、プロセッサ６０５と通信することができる（例えば、これらの命令を処理するためにプロセッサ内に存在する命令デコーダを利用することにより）。
【００５５】
変換されたコードを利用して最適化することができる様々なコードシーケンスにおいて、または、マイクロアーキテクチャサポートが提供されないようなシーケンスにおいて、実施形態では、変換されたコードをプロセッサ６０５に提供するために、メモリの隠れた部分、つまり、第２の部分６４０を利用することができる。具体的には、示されているように、ＯＳ６３５及びアプリケーションプログラム６３８の両方が、ＢＴエンジン６４５と通信してよく、ＢＴエンジン６４５は、解釈、変換、及び最適化メカニズムを含むランタイム実行ユニットを含んでよい。隠されたメモリ６４０は、ＯＳまたはアプリケーションプログラムからは、見えず、または、アクセスすることができない。従ってＢＴエンジン６４５は、変換キャッシュ６４８に、実行のためにプロセッサ６０５に提供することができる、変換されたコードを含んでよい、コード及びアドレス情報を提供してよい。一実施形態では、変換キャッシュ６４８に格納されているコードを暗号化することができる。この変換されたコードは、プロセッサの基礎となるマイクロアーキテクチャのために書き込まれ、最適化されてよい（例えばターゲットＩＳＡコード）。
【００５６】
図示されているように、協調設計プロセッサであってよいプロセッサ６０５は、命令をＯＳまたはアプリケーションプログラムから直接受信することができる命令フェッチャ６０６等のフロントエンドユニットを含む。例えばアプリケーションプログラムのユーザレベル命令に対応しているマクロ命令であってよいこれら命令は、デコーダ６０７を利用してデコードすることができ、デコーダ６０７は、命令をデコードして、対応するｕｏｐｓ（例えばプロセッサ６０５のマイクロコードストレージに存在する）にアクセスするよう動作することができる。そしてデコーダ６０７は、このｕｏｐｓを、１以上の実行ユニット６０８に提供してよく、１以上の実行ユニット６０８は、様々な算術論理オペレーションユニット（ＡＬＵ）、専用ハードウェア、及び、その他のタイプの計算ユニットを含んでよい。これら命令の結果は、リタイヤユニット６０９に提供されてよく、リタイヤユニット６０９は、不良または例外が生じなかった場合には、命令をリタイヤして、これにより結果をプロセッサのアーキテクチャ状態に、プログラム順に格納するよう動作する。インオーダマシンとして説明されるが、実施形態は、アウトオブオーダマシンを利用しても同様に実装することができる。
【００５７】
実施形態は、多くの様々なタイプのシステムに実装されてよい。  図６を参照すると、本発明のある実施形態におけるシステムのブロック図が示されている。図６に示されているように、マルチプロセッサシステム７００は、ポイント−ツー−ポイントインターコネクトシステムであり、ポイント−ツー−ポイントインターコネクト７５０を介して連結された第１のプロセッサ７７０と第２のプロセッサ７８０とを含む。図６では、各プロセッサ７７０及び７８０が、（第１プロセッサコア及び第２プロセッサコア（つまりプロセッサコア７７４ａ及び７７４ｂ並びにプロセッサコア７８４ａ及び７８４ｂ）を含む）マルチコアプロセッサであるが、これより多くのコアがプロセッサに存在していてもよい。。プロセッサのそれぞれは、ここで説明するＢＴコンテナを作成及び管理する論理を含んでよい。
【００５８】
図６の参照を更に続けると、第１のプロセッサ７７０は更にメモリコントローラハブ（ＭＣＨ）７７２と、ポイント−ツー−ポイント（Ｐ−Ｐ）インターフェース７７６及び７７８とを含む。同様に、第２のプロセッサ７８０は、ＭＣＨ７８２と、Ｐ−Ｐインターフェース７８６及び７８８とを含む。図６に示すように、ＭＣＨ７７２及び７８２は、プロセッサをメモリそれぞれ（つまり、メモリ７３２及びメモリ７３４）に連結し、これらメモリは、それぞれのプロセッサにローカルに接続された、システムメモリ（例えばＤＲＡＭ）の一部であってよい。第１のプロセッサ７７０及び第２のプロセッサ７８０は、Ｐ−Ｐインターコネクト７５２及び７５４をそれぞれ介してチップセット７９０に連結されてよい。図６に示すように、チップセット７９０はＰ−Ｐインターフェース７９４及び７９８を含む。
【００５９】
更にチップセット７９０は、チップセット７９０と高性能グラフィックスエンジン７３８とを、Ｐ−Ｐインターコネクト７３９により連結するインターフェース７９２を含む。そしてチップセット７９０は、インターフェース７９６を介して第１のバス７１６に連結されてよい。図６に示すように、第１のバス７１６を第２のバス７２０に連結するバスブリッジ７１８とともに、様々な入出力（Ｉ／Ｏ）デバイス７１４が第１のバス７１６に連結されてよい。例えば一実施形態では、キーボード／マウス７２２、通信デバイス７２６、及び、コード７３０を含みうるデータ格納ユニット７２８（例えば、ディスクドライブその他の大容量記憶デバイス）を含む様々なデバイスが第２のバス７２０に連結されてよい。更にオーディオＩ／Ｏ７２４が第２のバス７２０に連結されてよい。実施形態は、スマートセルラーテレフォン、タブレットコンピュータ、ネットブック等のモバイルデバイスを含む他のタイプのシステムに含めることができる。
【００６０】
以下の例は、更なる実施形態に関する。
【００６１】
ある例では、プロセッサが、第１の命令セットアーキテクチャ（ISA）の命令を実行する第１のコアと、第２のISAの命令を実行する第２のコアと、プロセッサによりソフトウェアスタックにトランスペアレントに制御されるバイナリ変換コンテナとを備え、バイナリ変換コンテナは、コードセグメントを受け取り、コードセグメントのバイナリ変換を生成し、バイナリ変換を変換キャッシュに格納するバイナリ変換エンジンを含み、バイナリ変換は、第２のISA内で利用不可能な第１のISAの命令をエミュレートするための少なくとも１つのエミュレーションルーチンを含み、第２のコアがバイナリ変換を実行し、第２のコアは第１のコアと非対称である。
【００６２】
ある例では、少なくとも１つのエミュレーションルーチンは、第２のコアに、第１のベクトルオペランドにオペレーションを実行する命令を実行することを可能にさせ、第２のコアのデータパスの幅は、第１のベクトルオペランドの幅未満である。
【００６３】
ある例では、プロセッサは、コードセグメントを含むアプリケーションをプロファイリングして、バイナリ変換エンジンに、プロファイリングに呼応してバイナリ変換を生成させる。
【００６４】
ある例では、プロセッサは、それぞれがネイティブコードセグメントをバイナリ変換コードセグメントに関連付ける、複数のエントリを含むマッピングテーブルを含む。
【００６５】
ある例では、プロセッサは、マッピングテーブルにアクセスして、コードセグメントへのエントリポイントに遭遇して、マッピングテーブルが、コードセグメントをバイナリ変換に関連付けるエントリを含むとき、コードセグメントの代わりに、バイナリ変換を実行する。
【００６６】
ある例では、バイナリ変換エンジンは、コードセグメントの代わりにバイナリ変換を実行させるステアリング論理を含む。
【００６７】
ある例では、第２のコアは、第１のコアよりも低い電力消費レベルを有する。
【００６８】
上述したプロセッサは、様々な手段を用いて実装することができる。
【００６９】
ある例では、プロセッサが、ユーザ機器の接触式デバイスに組み込まれるシステムオンチップ（ＳｏＣ）を含む。
【００７０】
別の例としては、システムが、ディスプレイ及びメモリを含み、上述した例の１以上のプロセッサを含む。
【００７１】
別の例では、マシンにより実行されると、マシンに、方法を実行させる命令を格納したマシン可読媒体が提供され、方法は、プロセッサのバイナリ変換エージェントで、第１のコードセグメントのためのバイナリ変換を実行する命令を受信する段階と、第１の命令セットアーキテクチャ（ＩＳＡ）の第１の命令をサポートしていないプロセッサのコアの上で実行されると、第１の命令をエミュレートする第１のルーチンを含む、第１のコードセグメントのための、インスツルメントコードセグメントを生成する段階と、インスツルメントコードセグメントを、装備キャッシュメモリに格納する段階と、第１のコードセグメントへのエントリポイントに遭遇したときに、第１のコードセグメントの代わりにインスツルメントコードセグメントを実行することをコアに可能とするよう、プロセッサをプログラミングする段階と
を備える。
【００７２】
ある例では、バイナリ変換エージェントは、プロセッサの上で実行されるソフトウェアスタックに対してトランスペアレントである。
【００７３】
ある例では、マッピングテーブルにエントリを格納する命令は、装備キャッシュメモリ内のインスツルメントコードセグメントの位置に、エントリポイントを関連付ける。
【００７４】
ある例では、マッピングテーブルにエントリを格納する命令は、コアに、第２のコードセグメントの代わりに、第２のインスツルメントコードセグメントを実行させ、第２のコードセグメントは、ホットスポットを含む。
【００７５】
ある例では、マシン可読媒体は更に、コアに、第３のコードセグメントの代わりに、第３のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を実行させる命令を更に備え、第３のコードセグメントは、自己修正コードを含む。
【００７６】
別の例では、プロセッサが、第１のコードセグメントのバイナリ変換を生成して、バイナリ変換を変換キャッシュに格納するコードを含む、バイナリ変換コンテナ（ＢＴコンテナ）と、
ＢＴコンテナを管理して、第１のコードセグメントを特定するホスト実体論理と、ＢＴコンテナをソフトウェアスタックから隔離する保護論理とを備え、ソフトウェアスタックは、仮想マシンモニタ（ＶＭＭ）層と、オペレーティングシステム（ＯＳ）層と、アプリケーション層とを含み、ＢＴコンテナは、ソフトウェアスタックに対してトランスペアレントである。
【００７７】
ある例では、保護論理は、ＢＴコンテナの位置を特定するためのレンジ値を格納する少なくとも１つのレジスタを有する。
【００７８】
ある例では、ホスト実体論理は、ＢＴ呼び出しへのエントリがあると、プロセッサの状態を第１の状態ストレージに格納させ、ＢＴコンテナのＢＴ状態ストレージに格納されているＢＴ状態を、プロセッサ内にロードする。
【００７９】
ある例では、ホスト実体論理は、ソフトウェアスタックのアプリケーションの実行を可能とするために第１のタイムカンタムのためのバイナリ変換が実行された後で、ＢＴ状態を、ＢＴコンテナのＢＴ状態ストレージに格納させ、プロセッサの状態を第１の状態ストレージからロードする。
【００８０】
ある例では、ホスト実体論理は、プロセッサのアイドルコアの上でのバイナリ変換の実行を可能とするために、アイドルコアの状態ストレージにＢＴ状態をロードさせ、ソフトウェアスタックのアプリケーションは、プロセッサの第２のコアの上で実行される。
【００８１】
ある例では、ホスト実体論理は、ソフトウェアスタックのＶＭＭ層及びＯＳ層へのＢＴコンテナのアクセスを回避させる。
【００８２】
ある例では、ホスト実体論理は、ソフトウェアスタックのアプリケーション層へのＢＴコンテナの書き込みアクセスを回避させる。
【００８３】
ある例では、ホスト実体論理は、ＢＴコンテナの、プロセッサの状態の第１のサブセットへのアクセスを可能として、ＢＴコンテナの、プロセッサの状態の第２のサブセットへのアクセスを回避させる。
【００８４】
別の例では、方法が、プロセッサのバイナリ変換エージェントで、第１のコードセグメントのためのバイナリ変換を実行する命令を受信する段階と、第１の命令セットアーキテクチャ（ＩＳＡ）の第１の命令をサポートしていないプロセッサのコアの上で実行されると、第１の命令をエミュレートする第１のルーチンを含む、第１のコードセグメントのための、インスツルメントコードセグメントを生成する段階と、インスツルメントコードセグメントを、装備キャッシュメモリに格納する段階と、第１のコードセグメントへのエントリポイントに遭遇したときに、第１のコードセグメントの代わりにインスツルメントコードセグメントを実行することをコアに可能とするよう、プロセッサをプログラミングする段階とを備える。
【００８５】
ある例では、バイナリ変換エージェントは、プロセッサの上で実行されるソフトウェアスタックに対してトランスペアレントである。
【００８６】
ある例では、方法が、装備キャッシュメモリ内のインスツルメントコードセグメントの位置に、エントリポイントを関連付けるために、マッピングテーブルにエントリを格納する段階を更に備える。
【００８７】
ある例では、方法は、コアに、第２のコードセグメントの代わりに、第２のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、第２のコードセグメントは、ホットスポットを含む。
【００８８】
ある例では、方法が、コアに、第３のコードセグメントの代わりに、第３のインスツルメントコードセグメントを実行させるために、マッピングテーブルにエントリを格納する段階を更に備え、第３のコードセグメントは、自己修正コードを含む。
【００８９】
別の例では、プロセッサが、第１のコードセグメントのバイナリ変換を生成して、バイナリ変換を変換キャッシュに格納するコードを含む、バイナリ変換コンテナ手段（ＢＴコンテナ手段）と、
ＢＴコンテナ手段を管理して、第１のコードセグメントを特定するホスト実体手段と、ＢＴコンテナ手段をソフトウェアスタックから隔離する保護手段とを備え、ソフトウェアスタックは、仮想マシンモニタ（ＶＭＭ）層と、オペレーティングシステム（ＯＳ）層と、アプリケーション層とを含み、ＢＴコンテナ手段は、ソフトウェアスタックに対してトランスペアレントである。
【００９０】
ある例では、保護手段は、ＢＴコンテナ手段の位置を特定するためのレンジ値を格納する少なくとも１つのレジスタを有する。
【００９１】
ある例では、ホスト実体手段は、ＢＴ呼び出しへのエントリがあると、プロセッサの状態を第１の状態ストレージに格納させ、ＢＴコンテナ手段のＢＴ状態ストレージに格納されているＢＴ状態を、プロセッサ内にロードする。
【００９２】
ある例では、ホスト実体手段は、ソフトウェアスタックのアプリケーションの実行を可能とするために第１のタイムカンタムのためのバイナリ変換が実行された後で、ＢＴ状態を、ＢＴコンテナ手段のＢＴ状態ストレージに格納させ、プロセッサの状態を第１の状態ストレージからロードする。
【００９３】
ある例では、ホスト実体手段は、プロセッサのアイドルコアの上でのバイナリ変換の実行を可能とするために、アイドルコアの状態ストレージにＢＴ状態をロードさせ、ソフトウェアスタックのアプリケーションは、プロセッサの第２のコアの上で実行される。
【００９４】
ある例では、ホスト実体手段は、ソフトウェアスタックのＶＭＭ層及びＯＳ層へのＢＴコンテナのアクセスを回避させる。
【００９５】
ある例では、ホスト実体手段は、ソフトウェアスタックのアプリケーション層へのＢＴコンテナの書き込みアクセスを回避させる。
【００９６】
ある例では、ホスト実体手段は、ＢＴコンテナの、プロセッサの状態の第１のサブセットへのアクセスを可能として、ＢＴコンテナの、プロセッサの状態の第２のサブセットへのアクセスを回避させる。
【００９７】
別の例では、命令を含むコンピュータ可読媒体が、上述した例のうちのいずれかの方法を実行する。
【００９８】
別の例では、装置が、上述した例のうちのいずれかの方法を実行する手段を有する。
【００９９】
ある例では、通信デバイスが、上述した例のうちのいずれかの方法を実行するよう、構成される。
【０１００】
ある例は、コンピューティングデバイス上で実行されることに呼応して、コンピューティングデバイスに、上述した例のうちのいずれかの方法を実行させる複数の命令を含む少なくとも１つのマシン可読媒体である。
【０１０１】
上述した例の様々な組み合わせが可能である点を理解されたい。
【０１０２】
実施形態は、様々な異なるタイプのシステムで利用されてよい。例えば、一実施形態では、通信デバイスが、ここに記載した様々な方法及び技術を実行するよう構成されてよい。  もちろん、本発明の範囲は通信デバイスに限定されず、他の実施形態は、命令を処理する他のタイプの装置、または、コンピューティングデバイス上で実行されると、デバイスにここで記載した方法及び技術の１以上を実行させる命令を含む１以上のマシン可読媒体を対象としていてよい。
【０１０３】
実施形態はコードで実装することができ、命令を実行するようシステムをプログラムするために利用することができ、命令を格納した記憶媒体に格納されてよい。記憶媒体は、これらに限定はされないが、フロッピー（登録商標）ディスク、光ディスク、固体ドライブ（ＳＳＤ）、ＣＤ−ＲＯＭ（シーディーロム）、書き換え可能ＣＤ（ＣＤ−ＲＷ）、及び、光磁気ディスク、半導体デバイス（例えば読み出し専用メモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、消去可能かつプログラム可能な読み出し専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的に消去可能かつプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）等）、磁気または光カード、または、電子命令を格納する用途に適した任意の他のタイプの媒体を含んでよい。
【０１０４】
本発明は、限定された数の実施形態に関して説明されたが、当業者であればこれら実施形態に基づき、様々な変形例及び変更例を想到する。添付請求項は、これら変形例及び変更例の全てを、本発明の真の精神及び範囲内に含まれるものとして含むことが意図されている。
【図１】
2014174998.tif 000003
【図２】
2014174998.tif 000004
【図３】
2014174998.tif 000005
【図４】
2014174998.tif 000006
【図５】
2014174998.tif 000007
【図６】
2014174998.tif 000008
【外国語明細書】
2014174998000001.pdf