セキュアな埋め込みコンテナの実行のためのプロセッサの拡張
セキュアな埋込みコンテナを実行するためのプロセッサの拡張に関する方法及び装置。一実施例では、(例えば、マネージャビリティのために専用プロセッサ又はマイクロコントローラを利用することが不適切であるか、又は実用的でないUMPC環境又はその他の環境のための)マネージャビリティ機能のためのスケーラブルな解決策を提供する。例えば、一実施例では、OS(オペレーティング・システム)又はVMM(仮想マシン・マネージャ)独立アーキテクチャ(本明細書及び特許請求の範囲では概括的に「OI」として表す)は、ホストOS/VMMとOIコンテナとの間の(プロセッサ・サイクル、メモリ、デバイスなど)のリソースを動的に区画化することにより、プロセッサ上で1つ又は複数のコンテナを生成することが関係する。他の実施例も説明し、特許請求の範囲において請求している。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書及び特許請求の範囲は、一般に、エレクトロニクスの分野に関する。特に、本発明の実施例は、セキュアな埋込みコンテナの実行のためのプロセッサの拡張に関する。
【背景技術】
【0002】
コンピュータ・システムは、例えば、ハードウェア・レイヤ、ファームウェア及びオペレーティング・システム・レイヤ、並びにアプリケーション・プログラム・レイヤを含むレイヤ化されたデバイスとして実現し得る。コンピュータ・システムのハードウェア・レイヤは、物理プラットフォームとして表し得る。物理プラットフォームは、プロセッサ、チップセット、通信チャネル、メモリ、基板、及びシステムを含み得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
コンピュータ・システムは、マネージャビリティ・エンジン(例えば、コンピュータ・システムが(例えば、通信ネットワーク上で、遠隔管理コンソールを介して遠隔に)管理されることを可能にするための専用のマイクロコントローラを含む)も含み得る。しかし、マネージャビリティ・サービスのための専用のマイクロコントローラの提供は、制限されたMIPS(毎秒百万命令)、放熱、電力消費、サイズ、コストを含む理由のために、一部の実現形態において、適切でないか、実用的でないか、又は、さもなければ、スケーラブルでないことがあり得る。
【課題を解決するための手段】
【0004】
本発明の詳細な説明を、添付図面を参照して記載する。図中、参照符号の最も左の桁は、参照符号が最初に存在する図を識別する。別々の図において同じ参照符号を使用していることは、同様又は同一の項目を示している。
【図面の簡単な説明】
【0005】
【図1】本明細書及び特許請求の範囲記載に種々の実施例を実現するために利用し得るコンピュータ・システムの実施例を示すブロック図である。
【図2】一実施例による、一状態から別の状態への遷移をもたらすトリガ及び4つの状態を示す状態遷移図である。
【図3】一実施例による、別々のメモリ区画の実行に関連付けられた種々の動作を示すブロック図である。
【図4】一部の実施例によるタイムチャートである。
【図5】一部の実施例によるタイムチャートである。
【図6】一部の実施例によるタイムチャートである。
【図7】一部の実施例によるタイムチャートである。
【図8】一部の実施例によるタイムチャートである。
【図9】本発明の一部の実施例によるフロー図である。
【図10】一実施例による、OI区画に導入し、OIに割り当てられた装置から生じる割り込みを処理するために使用される種々の構成部分を示すブロック図である。
【図11】本発明の一部の実施例によるフロー図である。込みを処理するために使用される種々の構成部分を示すブロック図である。
【図12】一実施例による、OIPICモジュールと通信し合う種々の構成部分を示す図である。
【図13】一部の実施例による、ロード鍵の利用に関連付けられた動作を示すブロック図である。
【図14】一部の実施例による、ロード鍵の利用に関連付けられた動作を示すブロック図である。
【図15】一部の実施例による、記憶鍵の利用に関連付けられた動作を示すブロック図である。
【図16】一部の実施例による、記憶鍵の利用に関連付けられた動作を示すブロック図である。
【図17】一実施例による、S0とS3との間のセキュアな遷移に関連付けられた動作を示すブロック図である。
【図18】本明細書及び特許請求の範囲記載に種々の実施例を実現するために利用し得るコンピュータ・システムの実施例を示すブロック図である。
【図19】本明細書及び特許請求の範囲記載に種々の実施例を実現するために利用し得るコンピュータ・システムの実施例を示すブロック図である。
【発明を実施するための形態】
【0006】
以下の説明では、種々の実施例の徹底的な理解を得るために数多くの具体的な詳細を記載している。しかし、本発明の種々の実施例は、上記具体的な詳細なしで実施し得る。他の場合には、周知の方法、手順、構成部分、及び回路は、本発明の特定の実施例を分かりにくくすることがないように詳細に説明していない。更に、本発明の実施例の種々の局面は、半導体集積回路(「ハードウェア」)、1つ若しくは複数のプログラムに編成されたコンピュータ読み取り可能な命令(「ソフトウェア」)、又は、ハードウェア及びソフトウェアの特定の組み合わせなどの種々の手段を使用して行い得る。本明細書及び特許請求の範囲の目的では、「ロジック」への言及は、ハードウェア、ソフトウェア、又はそれらの特定の組み合わせを意味する。更に、本明細書及び特許請求の範囲の(「uop」としても表し得る)「マイクロオペレーション」又は「命令」の使用は、置き換え可能であり得る。更に、本明細書及び特許請求の範囲記載の実施例の一部は、論理0及び論理1として組、又は明確な値を表し得るが、前述の語は、例えば、実現形態に応じて、置き換え可能である。
【0007】
一部のプロセッサは複数のプロセッサ・コアを含み得る。複数のコアに加えて、プロセッサ・ダイは、(コア以外の、プロセッサ・ダイ上の構成要素全てを併せて表し得る)非コアを含み得る。性能を向上させるために、一層多くの機能を、例えば、複数のチップセットを置き換えることにより、プロセッサの非コアに組み入れることができる。例えば、一部の実現形態は、メモリ・コントローラ機能、IO(入出力)コントローラ機能、及びグラフィクス機能を非コアに組み入れ得る。しかし、この傾向は、プラットフォーム上で供給される他の機能及びサービス(例えば、マネージャビリティ)に影響を及ぼす。現在、一部のマネージャビリティ機能は、マネージャビリティ・エンジン(ME)のコア部分を構成し得る専用プロセッサ上で提供し得る。MEは一般に、チップセット上に配置される。更に、一部のサーバ・プラットフォームは、ベースボード管理コントローラ(BMC)、サービス・プロセッサ(SP)と呼ばれるか、又は何れかの他の名称によって呼ばれる個別の専用マイクロコントローラを実現し得る。上述の通り、前述の解決策は、限定されたMIPS、放熱、電力消費、サイズ、コスト等などの理由で、スケーラブルでない。このことは、超モバイル・パーソナル・コンピュータ(UMPC)環境において更に問題となり、別の解決策に対する必要性を強いる。
【0008】
この目的で、本明細書及び特許請求の範囲記載の一部の実施例は、(例えば、マネージャビリティのために専用プロセッサ又はマイクロコントローラを利用することが不適切であるか、又は実用的でないUMPC環境又はその他の環境のための)マネージャビリティ機能のためのスケーラブルな解決策を提供する。例えば、一実施例では、OS(オペレーティング・システム)又はVMM(仮想マシン・マネージャ)独立アーキテクチャ(併せて本明細書及び特許請求の範囲では「OI」として表す)は、ホストOS/VMMとOIコンテナとの間の(プロセッサ・サイクル、メモリ、デバイスなど)のリソースを動的に区画化することにより、例えば、プロセッサ上に、1つ又は複数のコンテナを生成することが関係する。一実施例では、OIリソース・マネージャ(OIRM)は、ホストOS/VMMコンテナ(本明細書及び特許請求の範囲では区画とも表す)とOS独立コンテナとの間のタイム・シェアリング動作を行い得る。その結果、一部の実施例は、OS/VMM実行性能に影響を及ぼすことなく(又はOS/VMM実行性能に対する、低減された影響を伴って)、有用な目的(例えば、マネージャビリティ)のために、アイドル・プロセッサ・サイクルを使用することを可能にする。
【0009】
一実施例では、OI区画の割り当てを導入し、OIに割り当てられたデバイスから生じた割り込みを処理するための手法を開示している。一実施例では、タンパリング耐性メモリが、OIにおけるセキュリティ感応性データを処理するために提供される。一実施例では、S3からS0への遷移及びS0からS3への遷移に費やすことが必要な期間の量が削減される。更に、本明細書及び特許請求の範囲記載の手法は、例えば、図1乃至図19を参照して説明したものなどの種々の計算装置における性能、効率、及び/又はセキュリティの向上を可能にし得る。
【実施例】
【0010】
より具体的には、図1は、本発明の実施例による計算システム100のブロック図を示す。上記システム100は、1つ又は複数のプロセッサ102−1乃至102−N(一般に、本明細書及び特許請求の範囲において「プロセッサ102」又は「プロセッサ102」として表す)を含み得る。プロセッサ102は、相互接続ネットワーク又はバス104を介して通信し得る。各プロセッサは、種々の構成部分を含み、その一部は、明確にするためにプロセッサ102−1のみを参照して表している。よって、残りのプロセッサ102−2乃至102−Nはそれぞれ、プロセッサ102−1を参照して表す同一又は同様の構成部分を含み得る。
【0011】
一実施例では、プロセッサ102−1は、(本明細書及び特許請求の範囲において「コア106」として、又はより概括的に「コア106」として表される)1つ又は複数のプロセッサ・コア106−1乃至106−8、共有キャッシュ108、及び/又はルータ110を含み得る。プロセッサ・コア106は単一の集積回路(IC)チップ上で実現し得る。更に、チップは、1つ若しくは複数の共有キャッシュ及び/又は占有キャッシュ(キャッシュ108など)、(バス若しくは相互接続ネットワーク112などの)バス又は相互接続、(図18乃至図19を参照して説明したものなどの)メモリ・コントローラ、又は他の構成部分を含み得る。
【0012】
一実施例では、ルータ110は、システム100及び/又はプロセッサ102−1の種々の構成部分間で通信するために使用し得る。更に、プロセッサ102−1は2つ以上のルータ110を含み得る。更に、多くのルータ110が、プロセッサ102−1の内部又は外部の種々の構成部分間のデータ・ルーティングを可能にするために通信し得る。一実施例では、プロセッサ102−1は、暗号動作における使用のためにOIRM124にのみアクセス可能な埋め込まれた鍵113を有し得る。一実施例では、この鍵は、プロセッサの最初の電源投入時に、強い乱数発生器を使用してOIRMにより、プロセッサ上で生成し、記憶し得る。別の実施例では、この鍵は、製造時にプロセッサに記憶し得る。
【0013】
共有キャッシュ108は、コア106などの、プロセッサ102−1の1つ又は複数の構成部分によって利用されるデータ(例えば、命令を含む)を記憶し得る。図に示すように、プロセッサ102は、オンプロセッサ(本明細書及び特許請求の範囲では「オンパッケージ」としても表す)メモリ111(更に後述するように、セキュアなメモリとして使用し得る)も含み得る。例えば、共有キャッシュ108は、プロセッサ102の構成部分による高速アクセスのために、メモリ114に記憶されたデータを局所にキャッシュし得る。一実施例では、キャッシュ108は、ミッドレベル・キャッシュ(レベル2(L2)、レベル3(L3)、レベル4(L4)、又は他のレベルのキャッシュなど)、ラスト・レベル・キャッシュ(LLC)、及び/又はそれらの組み合わせを含み得る。更に、プロセッサ102−1の種々の構成部分は、共有キャッシュ108と直接、バス(例えば、バス112)を介して、かつ/又はメモリ・コントローラ若しくはハブを介して通信し得る。図1に示すように、一部の実施例では、コア106の1つ又は複数は、(本明細書及び特許請求の範囲において概括的に「L1キャッシュ116」として表す)レベル1(L1)キャッシュ(116−1)及び/又はL2キャッシュ(図示せず)を含み得る。
【0014】
図1に示すように、システム100は、1つ又は複数の区画120又は122(本明細書及び特許請求の範囲では同義で「コンテナ」としても表す)を利用し得る。OIリソース・マネージャ(OIRM)124を、通信するよう、物理レイヤ(例えば、プロセッサ・コア、チップセット、メモリ、記憶装置、ネットワーク・インタフェース等)、ホストOS/VMM、OIコンテナ(又は区画)120及び122間に結合し得る。更に、2つ以上のOIコンテナを使用し得る。一部の実施例では、OIRM124は、プロセッサ上のファームウェア又はマイクロコードとして実現し得る。例えば、OIRM124は、プロセッサ・サイクルをスケジューリングする役割を果たすプロセッサ・マイクロコードであり得る。これは更に、(例えば、システム上で実行される複数の処理に対するシステム応答性又は公平性を維持するために)OI区画124によって実行されるプロセッサ命令とインタリーブされたプロセッサ命令を主OS/VMM区画120が実行することを可能にし得る。
【0015】
ホストOS/VMM区画120は、通常の(ホスト)アプリケーション及び/又はホスト・デバイス・ドライバ(図示せず)を含み得る。更に、OI区画122は、(例えば、選択されたデバイスに対する)OIドライバ(図示せず)及び/又は、コア機能に対応するデータ、アプリケーションを含み得る。更に、一部の実施例では、OIRMは、OIEE(OI実行環境(OI区画内の動作環境))にプロセッサ時間を割り当てる場合に満たすべき、以下の制約のうちの1つ又は複数を有し得る。
【0016】
ホストOS/VMMは割り込みを取り逃さず、又は時間ドリフトを被らず、ホストOS/VMM IOデバイス(例えば、CDROM、LAN、WAN等)は、バッファのアンダーフロー又はオーバフローを避けるために処理される。このことは、ホストOS/VMM宛のプロセッサ間割り込み及び外部割り込みが、最小のレーテンシを伴って配信されるということを示唆している。
【0017】
プロセッサ・コア上のOIEEのスケジューリングは、他のプロセッサのブロッキングにつながるものでない。OIをスケジューリングするために選択されたプロセッサ・コア上のロックをオペレーティング・システムが保持している場合に、前述の状態が生じ得る。OIを実行させるために前述のプロセッサ・コアを取り去ることにより、前述のロックを待っている他のプロセッサ・コアがスピンし、サイクルを浪費してしまう。プロセッサ・コア上の実行のためにOIをスケジューリングするアルゴリズムは、できる限り、前述の状態を避けるべきである。
【0018】
プロセッサ・コア、デバイス、バス等の電力管理は、ホストOS/VMM 120に干渉するというよりも、OSと協調する。OIRM124には、システムの電力状態、熱状態、及び性能状態についての決定のスケジューリングの副作用が分かり得る。例えば、OIをスケジューリングするために、(プロセッサC状態に関連付けられた)C−xプロセッサ・コアをC−0に至らせることにより、自動周波数スロットリングにつながる、システムの電力エンベロープの、閾値との交差をもたらし得る。よって、C−0プロセッサ・コアに対する性能の影響を避けるために行われるが、スケジューリングのためにC−xプロセッサ・コアを選択する動作は、厳しい性能ペナルティをもたらし得る。OIRM124は、(例えば、賢明な選択を行うためにPCU(電力制御装置)からの)非コア及びコアにおいて利用可能な適切な電力ヒューリスティックを利用し得る。PCUは、プロセッサ・コア及び非コア構成部分の電力管理方針を管理するためにプロセッサ非コアに備え得る。
【0019】
オペレーティング・システム及び性能監視ツールは、OIを実行するために特定のプロセッサ・コアから消費されたサイクルの数を検出する機会を与えるよう構成し得る。前述の観測機能を与えることは、それがOIによってもたらされたかを確かめるために、何れかの不測の挙動が観測された場合に、システムをデバッグすることに助力し得る。
【0020】
一部の実施例では、OI実現形態は、ホストOS/VMMの状態によって影響を受けない実行環境を提供することである。よって、OIRMは一部の実施例では、以下の要件のうちの1つ又は複数を満たし得る。
【0021】
構成されたように最小保証持続時間の間、OI動作/命令が実行することを確実にすることにより、OIの枯渇を避けるか、又は減らす。
【0022】
システム内の何れかの1つのプロセッサ・コアにOI動作/命令を束縛することを避けるか、又は減らす。OS独立動作は、ホストOS/VMMからサイクルをとり得る。一部のオペレーティング・システム及びVMMは、スループット目標を達成するためにワークロード(例えば、スレッド、VM(仮想マシン)等)を束縛する。特定のプロセッサ・コアにOIを束縛することは、ホストOS/VMMにより、そのプロセッサ・コアに束縛された何れかのワークロードに対して不当にペナルティを課すことになる。
【0023】
システム性能に対する影響が最小のプロセッサ・コア上で実行する。システム性能は、ホストOS/VMMスループット、電力消費、及びC状態ウェイク・レーテンシの混合である。OIRMは、前述のベクトルのうちの何れかに沿ったシステム性能に悪影響を及ぼさないためにOIEEを実行するためのプロセッサ・コア選択についての最適な決定に至るようPCUからのヒューリスティックスに依存し得る。
【0024】
図2は、一実施例による、一状態から別の状態への遷移をもたらすトリガ及び4つの状態を示す状態遷移図である。更に、上記要件に基づいて、プロセッサ・コアの例証された状態遷移を表し得る。プロセッサ・コアは、一部の実施例によれば、以下のモードのうちの1つにおいて存在し得る。一実施例では、前述のモード間のプロセッサ・コアの遷移はOIRM124によって制御される。
【0025】
ホストOS/VMM ホストOS/VMMコンテナ120は、プロセッサ上で実行しており、アクティブである。
【0026】
OI プロセッサ・コアはOIコンテナ122のうちの1つを実行している。
【0027】
SMM(システム管理モード) プロセッサ・コアはSMMコンテナ123を実行している。SMM状態には何れの状態からも入ることができる。
【0028】
アイドル ホストOS/VMM、及びOIEEがC−x状態に入っている。OIRMは、ホストOS/VMMによって要求されるC状態にプロセッサ・コアを遷移させる。
【0029】
以下の表1は、原因及び図2に示す各遷移に関する更なる情報を提供する。
【0030】
【表1】
更に、OIRM124は、プロセッサ・スレッド全ての上で実行するマイクロコード・モジュールとして実現し得る。OIRMインスタンスのうちの1つは、何れかの特定の時点においてプロセッサ・コアのうちの1つの上で実行するためにOIEEをアクティブにスケジューリングし得る。プロセッサ・コア上で実行するためにOIEEをアクティブにスケジューリングするOIRMインスタンスは、「アクティブ」OIRMインスタンスと呼ぶことができ、その他のインスタンスは、本明細書及び特許請求の範囲では「スタンバイ」OIRMインスタンスと呼ぶことができる。一実施例では、システムにおけるOIRMのアクティブなインスタンスは1つだけ存在している。
【0031】
一般に、マルチプロセッサ対応のオペレーティング・システムは、ロックを使用して、特定の動作のアトミック性を強化する。前述のロックを使用したクリティカル・セクション・コードは、ロックを保持しているプロセッサ・コア上でOIコンテナを実行するための強制排除によって拡張し得る。よって、他のロック・コンテンダは、ホストOS/VMMの実行のためにプロセッサ・コアが戻されるまでスピンし得る。したがって、スピンロック獲得をかなり拡張し得る。プロセッサ・コア上のOIEEのスケジューリングは、スピンロック上の他のプロセッサ・コアの前述の望ましくないスピンにつながらないはずである。本明細書及び特許請求の範囲記載のアーキテクチャによって実現される以下の方法は、前述のロックアップを避ける(又は、前述のロックアップの可能性を少なくとも削減する)。
【0032】
(1)ドライバ支援スケジューリング OI動作/命令を実行するためにオペレーティング・システムからプロセッサ・コアを取り去ることには、前述の障害はない時間間隔を宣言する機会をオペレーティング・システムに許す。例えば、(例えば、ホストOS/VMM120において備えられる)ドライバはこの判定を支援し得る。これは、OIRMが、OI動作/命令をスケジューリングするための必要性を示すために(例えば、割り込みを使用して)ホストOS/VMMにおけるOIドライバに通知する動作の通常モードであり得る。ドライバは(例えば、スケジューリングされたことに応じて)OIRMに通知する。この通知は、そのプロセッサ・コア上でOIをスケジューリングするためにOIRMによる「歩留り」表示として使用することができる。OIRMは、OIがそのサイクル割り当てを消費するか、又は割り込み/IPI(プロセッサ間割り込み)がホストOS/VMMに配信される必要がある状態になるまでそのプロセッサ・コア上でOIが実行することを可能にする。この手法は、基本的に、OI実行時間がドライバ実行時間として説明されることにつながり、更に、この手法により、高優先度ロック同期化関連の問題が避けられる。
【0033】
(2)自律スケジューリング しかし、一部の状態では、上記手法(1)は、OIスケジューリングの場合、完全に依存可能な訳でない。それは、(a)ホストOS/VMMが非動作状態にあり得、(b)OIドライバがディセーブルされているか、又はインストールされていないことがあり得、かつ/又は(c)ホストOS/VMM上の現在のワークロードは、OIドライバがスケジューリングされることを妨げ得る。OIRMは枯渇からOIEEを保護する必要があり、特定の構成された最小実行時間を与えるので、OIRMは、ホストOS/VMMにおける前述の異常状態に対して保護するためにガード・タイマを使用し得る。ガード・タイマは、OIドライバに対する割り込みの形式での通知がホストOS/VMMに配信されると、起動し得る。OIドライバが、このガード時間内にOIに、構成された最小実行時間を割り当てるのに十分長くスケジューリングされなかった場合、OIRMは、OIEEに対して行われた最小実行時間保証を満たすために動作のプリエンプティブ・モードにシフトし得る。OIRMは、更に、ホスト OS/VMMが強制排除される持続時間が決定論的であり、閾値上限に制限されることを確実にし得る。
【0034】
一部の実施例によれば、以下のパラメータは、ホストOS/VMMとOIとの間の実行時間の時間共有を調節し得る。
【0035】
1. OI−Accounting−Interval OIEEとホストOS/VMMとの間の時間共有が実施されるアカウンティング・インターバル。例えば、OIEEが、プロセッサ・コア上のサイクルの3%を使用するよう構成され、OIアカウンティング・インターバルが100msに設定された場合、OIEEは、何れの特定の100ms間隔においても、3ms超の間、実行しない。OIドライバに対する割り込みは、各アカウンティング・インターバルの開始時に供給し得る。
【0036】
2. OI−Minimum−Share OI−Accounting−Intervalの割合としてOIに対して保証し得る最小プロセッサ実行時間。最小シェアは、何れの特定のアカウンティング・インターバルにおいてOIに利用可能になる。しかし、レーテンシの保証はなく、最小シェアは、1つ又は複数のランにおけるアカウンティング・インターバル全体にわたって分散させ得る。
【0037】
3. OI−Normal−Share OI−Accounting−IntervalのパーセンテージとしてのOIに割り当てられたプロセッサ時間の通常のシェア。通常のシェアはOIに対して保証されないことがあり得る。
【0038】
4. OI−Maximum−Share OI−Accounting−IntervalのパーセンテージとしてのOIによって使用され得るプロセッサ時間の最大シェア。これは、OIに利用可能なプロセッサ・シェアであり(例えば、OS独立OIRMによって示される修復モードに入る場合)、実現形態に応じてOI−Accounting−Intervalの最高100%になり得る。
【0039】
5. OI−Scheduling−Quantum ホストOS/VMMを実行しているプロセッサ・コアが、OIを実行するために強制排除される場合に、強制排除されない状態で実行し得る。
【0040】
実行時間の現在のシェア(例えば、OI−Normal−Share又はOI−Maximum−Share)は、OI−Current−Shareと呼ばれるパラメータを使用してOIRMによって追跡し得る。例えば、各アカウンティング・インターバルの開始時に、OIEEは、プロセッサ・コア上の実行時間のそのOI−Current−Shareに等しい時間クレジットを受け取る。上記クレジットは、OIEEがプロセッサ・コア上で実行した持続時間に等しい量で、OIEEの各スケジュールに対して消費される。クレジットが枯渇すると、OIEEは、クレジットが補充される次のアカウンティング・インターバルまで実行が妨げられる。
【0041】
ドライバ支援スケジューリング手法(上記項目(1))は、ホストOS/VMMにインストールされたOIドライバに依存し得る。OIドライバは、OIRMによるその初期化の一部としてOIRMに割り込みベクトルを登録し得る。OIドライバは、OIドライバからのイベントの通知を待つ無限ループに位置するOIワーカ・スレッドの生成ももたらし得る。OIRMは、OI−Accounting−Intervalの開始をOIドライバに通知するために、このベクトルに対応するISR(割り込みサービス・ルーチン)ハンドラを呼び出す旨の割り込みをホストOS/VMMに導入し得る。
【0042】
図3は、一実施例による、OIEE及びホストOS/VMMの実行に関連付けられた種々の動作のブロック図を示す。図3に示すように、動作1では、OIRM124は割り込みをホストOS/VMM120に導入する。これは、(例えば、OS/VMM区画120に記憶された)OIドライバ302によって登録されたISRを呼び出し得る。動作2では、OIドライバ302は(例えば、対応するISRを介して)OIワーカ・スレッド303に通知する。一実施例では、スレッド303は、何れの特定のプロセッサ・コアにも結合していない。オペレーティング・システムは、適切な場合、スレッド303をスケジュールし得る。動作3では、スレッド303はOIEE304をスケジューリングする旨をOIRM124に要求するための命令を呼び出す。動作4では、OIRM124はホストOS/VMMコンテナ120の現在の状態を保存し、OIEE304の保存された状態をロードする。動作5は、ホストOS/VMM120向けの割り込み/IPIの到着によってトリガされ得るか、又は、OIEE304のために構成された実行時間の現在のシェア(通常又は最大)の満了によってトリガされ得る。
【0043】
ホストOS/VMM及びOIワーカ・スレッド303の観点から、IO命令は基本的には、上記動作5が実行されると戻るブロッキング命令であり得る。動作5を実行する理由に応じて、OIRM124は、ワーカ・スレッド303に以下の戻り値のうちの1つを戻し得る:
BLOCK この戻された値は、OIに対する時間割り当てが消費されたので、動作5が実行されたことを示す。これにより、基本的には、スレッド303を戻らせ、スレッド303に、OIドライバからの次のイベント通知を待たせ得る。
【0044】
CONTINUE この戻り値は、動作5が実行された(例えば、外部割り込み/IPIがホストOS/VMMに到着することによってOIが強制排除された)旨を示す。このアカウンティング・インターバル内のOIに対する時間割り当ては未だ消費されていないことがあり得る。動作5を実行させた割り込みはOIを強制排除し得る。ホストOS/VMMは、ISR処理(及び、場合によっては他の保留中の高優先度タスクの実行)を完了すると、OIワーカ・スレッド303を再スケジューリングする。あるいは、ホストOS/VMMは、到着している割り込みを処理する間に、スレッド303を別のプロセッサ・コアに移動させ得る。再開すると、ワーカ・スレッド303は、戻り値を検査し得、戻り値がCONTINUEの場合、OI実行を再開するための動作3を実行する。
【0045】
図4は、実施例によるタイムチャートを示す。2つのアカウンティング・インターバルを図4に示す。(図4の左側から始まる)第1のアカウンティング・インターバルでは、OIは、402でOIドライバ・スレッド303がOI−READを呼び出すことによってスケジューリングされる。しかし、OIは、404におけるホストOS/VMMによって割り込まれる。OIは再度、後に、406で、アカウンティング・インターバル内でスケジューリングされ、408でその割り当てられた時間の実行を完了する。(410で始まる)第2のアカウンティング・インターバルでは、412でその割り当てられた時間の間の実行を完了するまでOIは割り込まれない状態で実行する。
【0046】
一部の場合には、OIワーカ・スレッド303の実行を阻止又はブロックすることにより、OIに対して、偶然に、又は不当に、完全なサービス妨害を行う可能性が存在し得る。ガード・タイマ及び関連付けられたホストOS/VMM強制排除(後述する)は、OIに対して行われる最小実行時間保証をOIRMが達成することを可能にする。
【0047】
特に、OIワーカ・スレッド303のスケジューリングを要求するための割り込みが導入されると、OIRMはガード・タイマを起動させる。このタイマの持続時間は、一実施例におけるアカウンティング・インターバルの50%に設定し得る。他の持続時間も設定し得る。OIが、その最小の構成された時間のシェアの消費を実行する機会を十分得た場合、ORIMはそのアカウンティング・インターバルのガード・タイマをオフにする。更なる実行の機会は、よって、保証されないことがあり得る。このガード・タイマが満了すると、OIが、その構成された最小時間シェアを実行する機会を有していなかった場合、OIに対して、その構成された最小の時間シェアを消費する機会を十分提供した状態になるまで、OIRMはプリエンプティブ・スケジューリング・モードに入る。OIを実行するためのプリエンプティブ・スケジューリングを行う場合、ホストOS/VMM割り込みはブロックされ得る。しかし、OIRMは、OI−Scheduling−Quantumになるよう、割り込まれない状態でOIが実行する最大持続時間を制御し得る。
【0048】
一実施例では、以下の動作は、ガード・タイマ満了時のOIRM処理を説明しており、ここで、OIRMは、周期性Pのタイマを起動させ、ここで、Pは、
P=(OI_Accounting_Interval/2)/(OI_Minimum_Share/OI_Scheduling_Quantum)
で定められる。
【0049】
各インターバルが満了すると、以下の動作が行われる:(a)ホストOS/VMMを強制排除し、ホストOS/VMMが強制排除されたプロセッサ・コア上の実行のためにOIをスケジューリングし、(b)OI−Scheduling−Quantum後にOIが満了する強制排除時間を構成し、(c)OI強制排除タイマが満了すると、ホストOS/VMMを再開する。
【0050】
図5及び図8は、一部の実施例によるタイムチャートを示す。特に、図5は、ガード・タイマ満了前に消費されたOI−Minimum−Shareを示す。ここで、2つのアカウンティング・インターバルを示す。第1のアカウンティング・インターバルでは、OIは、ガード時間の満了前にその最小シェアを既に消費している。しかし、ホストOS/VMMは、更に実行するための機会をOIに対して与えることは決してない。第2のインターバルでは、同様な状態が起こる。しかし、ホストOS/VMMは、OIが、OI−Minimum−Share超を実行することを可能にする。
【0051】
図6では、OIは、プリエンプティブ・スケジューリング・モードに入り、その最小の構成された時間シェアの間、実行する機会を有する状態になるまでOIにおけるOI−Scheduling−Quantumの長バーストを実行するようホストOS/VMMの強制排除を開始する。図7では、OIは、プリエンプティブ・スケジューリング・モードに入り、OIにおいてOI−Scheduling−Quantumの長バーストを実行するようホストOS/VMMの強制排除を開始する。しかし、前述の数カンタム後、OS内のドライバは、アクティブになり、OIのスケジューリングを要求する旨のOI−READを呼び出す、更に、OI−READは、構成された最小の時間の消費に十分長くOIが実行すること、及びOI停止を実行するためのホストOS/VMMの強制排除につながる。図8では、OIは、プリエンプティブ・スケジューリング・モードに入り、OIにおいてOI−Scheduling−Quantumの長バーストを実行するようホストOS/VMMの強制排除を開始する。しかし、前述の数カンタム後、OS内のドライバは、アクティブになり、OIのスケジューリングを要求する旨のOI−READを呼び出す(しかし、OIは、構成された最小時間を消費するのに十分長く実行される訳でない)。これは、構成された最小時間がOIにおいて実行されるまでプリエンプティブ・スケジューリングをOIRMに続けさせる。
【0052】
一実施例では、ホストOS/VMMにおけるOIドライバの有無の処理に関し、ドライバ支援スケジューリング機構は、オペレーティング・システムにインストールされている前述のドライバが存在している場合に起動し得る。しかし、OIスケジューリングは、存在しているドライバに依存しないことがあり得る。よって、ドライバがインストールされ、機能している場合、スケジューリングはOSフレンドリな態様で機能する。ドライバがインストールされていないか、若しくはアンロードされていないか、又は、オペレーティング・システム自体がインストールされていないか、又はオペレーティング・システムが作動状態にない場合、OIRMは、上述のガード時間がゼロであったかのように実行し得る。スケジューリングのプリエンプティブ・モードは、構成された最小の実行時間をOIEEが受け取った状態になるまで、用い得る。OIEE時間スライスにおけるホストOS/VMMの到着は、同様に、構成された最小時間の間、OIEEが実行すると、ホストOS/VMMを実行させるようOIEEを強制排除させ得る。
【0053】
一部の実施例では、OSの可視性を、OIモードにおいて消費されたサイクルに与え得る。前述の機能は、OIがイネーブルされたプラットフォーム上の何らかの異常な挙動を理解するためのデバッグ用ツールにも有用であり得る。OIモードにおいて消費されたサイクルへの可視性は、コア毎MSR(モデル特有レジスタ)の対、OI_CYCLE_LOW(サイクル・カウントの低位32ビットを含む)及びOI_CYCLE_HIGH(カウンタの高位32ビットを含む)(オペレーティング・システム及び/又は性能監視ツールによって読み出し得る)によって利用可能にされ得る。OIRMは、その初期化手続の一部としてコア毎に前述のカウンタを0にリセットし得る。OIの実行毎に、OI内部で費やされた時間(SMM又はホストOS/VMM内で費やされる時間は考慮に入れない)は前述のカウンタによって更新し得る。
【0054】
図9は、一実施例による、ホップする対象の次のコアを判定するためのフロー図を示す。例えば、スケジューリングのドライバ支援モードが設けられると、OIRMは、OIEEの実行のためにプロセッサ・コアを選択する旨をホストOS/VMMに要求し得る。OIドライバに対する割り込みが、OIスケジューリングを要求するよう発信されると、オペレーティング・システムは、プロセッサ・コア上でOIワーカ・スレッド303をスケジューリングすると、この選択を行い得る。ワーカ・スレッド303がスケジューリングされるプロセッサ・コアは、OIEEをスケジューリングするために使用し得る。ホストOS/VMMが応答しない(例えば、ガード・タイマが満了したか、又は、ホストOS/VMMがOIドライバをインストールさせなかった)モ―ドでは、OIRMはプロセッサ・コア選択を自律的に行い得る。
【0055】
一般に、プロセッサ・コア(又はハードウェア・スレッド)は、プロセッサ命令をアクティブに実行する場合、C0状態にあると言える。この状態では、システム構成部分(例えば、プロセッサ、バス、キャッシュ、メモリ等)は全て、電源オンにされ、使用されている。しかし、プロセッサ・コアは、命令を実行していない場合、次第に、システムの別々の部分の電源をオフにするか、又はシステムの別々の部分を低電力モードに入れ得るC1、C2、C3等の状態に移され得る。前述の電力節減状態は一般に、C−x状態として表す。
【0056】
一部の実施例によれば、OIRMは、システム内のプロセッサ・コア全てにわたってロードを分散させ得る。これは、特定のプロセッサ・コア上で実行しているソフトウェアにペナルティを課すこと(例えば、VMMにより、物理プロセッサ・コアに束縛された仮想マシン)を減らすか、又は避け得る。プロセッサ・コア・ホッピング規則は、OIRMの現在のアクティブなインスタンスによって行われ、プロセッサ・コア・ホッピング・アルゴリズムの結果に応じて、アクティブな役割をスタンバイ・インスタンスのうちの1つにハンドオフし得る。OIは、パッケージ内のプロセッサ・コアのうちの1つの上で何れの特定の時点においても実行し得る。OIRMは、OIを実行するために使用する対象のプロセッサ・コアについての決定を行い得る。ホストOS/VMMは、1つ又は複数のプロセッサ・コアをC−x状態に入れ得る。実行するプロセッサ・コアを判定するためにOIRMによって使用されるロジックは、プロセッサ・コアにC−x状態が常駐していること、及びプロセッサ・コアの現在のC−x状態を考慮に入れ得る。
【0057】
一実施例では、OIRMは、OIを実行するためにC−xプロセッサ・コアをウェイクするか、又はC0プロセッサ・コアからサイクルをとるかを決定し得る。ここでのトレードオフは、電力対性能である。OIを実行するためにC−xプロセッサ・コアをウェイクしても、(大半の場合)ホストOS/VMMの性能に影響を及ぼさないことがあり得る。アクティブな場合、プロセッサ・コアからサイクルはとられないからである。しかし、C−xプロセッサ・コアをウェイクすることにより、電力利用率が増加する。考慮に入れるべき別の要因は、電力/熱エンベロープにおける変動により、C−xプロセッサ・コアがウェイクされた場合に、C0プロセッサ・コアの性能を低下させ得るダイナミック・スロットリングである。OIRMは、この判定を支援するためにヒューリスティックスを求めてCPPM/PCUを照会し得る。第2の考慮点は、C−x状態からのウェイクのレーテンシについてホストOS/VMMに対して行われる「保証」である。各C状態は、C0状態にウェイクするためのレーテンシと関連付けられる。ホストOS/VMMにより、C−x状態に入れられたプロセッサ・コアが、OIを実行するために選択されると、そのプロセッサ・コアの状態はC0に移る。ここで、(プロセッサ・コアがOIを実行していた際に)ウェーキング・イベント(例えば、割り込み)がホストOS/VMMに対して生じた場合、OIRMは、ホストOS/VMMに制御を戻すようOIを強制排除し得る。OIからホストOS/VMMへの切り換えの実行において生じるレーテンシは、ホストOS/VMMが要求したC状態からの保証されたウェイク・レーテンシを超えないことがあり得る。一部の実施例では、以下の規則は、前述の場合においてプロセッサ・コア選択を行うためにOIRMによって使用される。
【0058】
図9を参照すれば、C状態(ここで指しているC状態は、ホストOS/VMMによって認識され、要求された通りのC状態である)において、規則を適用し得る(902)。サイクルをこっそり取ることにより、ホストOS/VMMの性能に影響を及ぼすことを避けるために、OIRMは、アイドル状態(例えば、ホストOS/VMMの観点からの、C−x状態)にあり、ホストOS/VMMによって使用されていないプロセッサ・コア上でOIEEを実行し得る。OIEEを実行するためにC−xプロセッサ・コアをウェイクすることはしかし、電力/熱ベースの自律的なスロットリングをトリガさせるという悪い副作用を及ぼし、C0プロセッサ・コア上のホストOS/VMM性能が悪影響を受けることにつながり得る。(例えば、902における)OIRMは、OIを実行するようC0プロセッサ・コアを強制排除することと、C−xプロセッサ・コアを使用することとに関係するトレードオフを求めるようPCU904からのヒューリスティクスを利用し得る。同様に、プラットフォーム上の電力の影響は、C0状態にあるプロセッサ・コアを使用する場合よりも、スリーピング・プロセッサ・コアをウェイクする場合のほうが大きい。しかし、OIを実行するためにプロセッサ・コアをウェイクすることによる電力消費のわずかな増加は、プラットフォームが、バッテリ電源906で動作している場合に対して、AC電力で動作している場合に許容可能であり得る。
【0059】
図9に示すように、C状態の規則902の適用は、(C−xプロセッサ・コア及びC0プロセッサ・コアを含み得る)フィルタリングされたコア・リスト910を生成するために、現在のコアのリスト908、PCUヒューリスティクス904、及び/又はプラットフォーム電源906を考慮に入れ得る。動作912では、コアがC−x状態にないと判定された場合、OIRMは、ロードを分散させるためにC0プロセッサ・コア914のうちでコア・ホッピング規則920(例えば、ラウンド・ロビン選択)を行い得る。C−xプロセッサ・コアが存在している場合、OIRMは、リスト916からC−xプロセッサ・コアを選択し、(918において最低C状態におけるコアを選択するなどの)更なるホッピングを行わないことがあり得る。一実施例では、OIRMは、選択されたプロセッサ・コアが、なお、実行するのに最良のプロセッサ・コアであることを確実にするためにC状態の規則902を実行することにより、条件を周期的に再評価し得る。
【0060】
よって、図9に示す実施例によるプロセッサ・コア選択は、以下の動作を含み得る。まず、OIが実行し得るプロセッサ・コア・リスト908を使用し、C状態の規則902を適用して、フィルタリングされたプロセッサ・コア・リスト910を生成する、C状態の規則に対する入力としてプラットフォーム電源906及びPCUヒューリスティクス904を使用する。フィルタリングされたプロセッサ・コア・リスト910にC−x状態におけるプロセッサ・コアが存在している場合、最低C−x状態918におけるプロセッサ・コアを、ホップする先の、次のプロセッサ・コアとして選ぶ。C−x状態におけるプロセッサ・コアが存在しない場合、C−0プロセッサ・コア914のリストのうちから(例えば、ラウンド・ロビン・ホップを行うために)プロセッサ・コア・ホッピング規則920を呼び出す。このことは、一部の実施例には、前述のプロセッサ・コア上でOIRMのアクティブ/スタンバイの役割を切り換えることが関係し得る。
【0061】
図10は、一実施例による、OI区画に導入し、OIに割り当てられたデバイスから生じる割り込みを処理するために使用される種々の構成部分のブロック図を示す。図示したように、ハードウェア装置は、LAPIC(局所高度プログラマブル割り込みコントローラ)1006及び1008を、それぞれが有する複数のプロセッサ・コア1002及び1004を含み得る。LAPICはそれぞれ、(外部割り込み1012を受け取る)割り込み再マッピング装置1010と通信し合う。
【0062】
割り込み再マッピング装置1010は、(a)第2の割り込み再マップ・テーブル(IRT)1020をOI IRTエントリ(IRTE)で登録すること、(b)OIデバイス・フィルタ1022(例えば、PCIリクエスタID毎の1ビット(8KB)を有する)を登録すること、及び/又は、(c)後述する(例えば、図11に灰色の箱で示す。図11は、一実施例による、OI関連の割り込みの処理に関連付けられた動作のフロー図を示す)割り込み再マップ・ロジックに対する修正に対するサポートを含み得る。例えば、割り込み1102を受け取った後、ポスティングされた割り込みが、割り込みTLB(変換ルックアサイド・バッファ)1104になかった場合、割り込みがポスティングされているかを判定し得(1106)、肯定の場合、ルックアップ1108を、PCIリクエスタIDを使用してデバイス・フィルタ1022において行い得る。否定の場合、割り込みが処理される(1109)。対応するビットがデバイス・フィルタ1022にセットされた場合、OI IRT1110を、対応するラベルを探すために使用し得、さもなければ、OS/VMM
IRTをルックアップ1112に使用し得る。動作1110及び1112の後、割り込み記述子に対するベクトルを1114でポスティングし得る。
【0063】
更に、一実施例では、割り込み記述子は、割り込みをどこにポスティングするかを割り込み再マップ装置が判定することを助力する2つの項目(すなわち、割り込むためのAPIC ID, 及び通知割り込みとして使用するためのベクトル)を有し得る。更に、一部の実施例では、OIに対する要件の1つは、OIに対する割り込みの配信が、主OSからの何れの動作によっても影響を受けないということである。このことは、割り込み記述子内のベクトルを、コアに対する配信のために上記記述子にプログラムされた局所APICに配信するポスティングされた割り込み方法が、割り込み再マップ装置が、新たなマイクロコード・イベント通知を使用してOIRMにCPUマイクロコードを通知するように修正される。特に、割り込み再マップ装置からマイクロコード・イベント通知を受け取ると、OI区画は、何れのプロセッサ・コア上でもその時点で実行していないことがあり得るので、OIRMは、ポスティングされた割り込みをOI区画に直ちに導入する訳でないことがあり得る。よって、OIRMは、後述するメモリ構造(例えば、OIPIC(OIプログラマブル割り込みコントローラ)に、受け取られた割り込みをキューイングし、OI IDT(割り込み記述子テーブル)を使用した標準x86割り込み配信機構を使用してスケジューリングされる都度、OI区画に割り込みを導入する。
【0064】
図12は、一実施例による、OIPICモジュールと通信し合う種々の構成部分を示す。図示した通り、OIPICモジュール1202は、考えられる2つのソース(すなわち、(1)(例えば、割り込み再マッピング装置によって通知され、OI割り込みバッファにポスティングされる)OIEE1204に割り当てられたデバイスからの割り込み、又は(2)電力管理イベント、OI間通信通知、OIEEタイマに対するOIRM導入割り込み等(併せて1206として表す))からOIEEへの配信のためにベクトルを受け取る。
【0065】
OIPICモジュール1202は、OIEEに配信するためのベクトルをキューイングするために3つのレジスタをモデリングし得る。(1)OI IRR(割り込み要求レジスタ)1208(例えば、内部ソース又は外部ソースから到着するベクトルは全て、この256ビット・レジスタに入る) (2)OI ISR(OIインサービス・レジスタ)1208(例えば、OI IRRからの最高優先度ベクトルは、OI ISRに既にあるベクトルよりも優先度が高い場合、OI ISRに入れられる。これは、OIEEによって現在処理されている割り込みベクトルを追跡する256ビット・レジスタであり得る。OI ISRに既にある現在の割り込みベクトルはそのままである。例えば、最高優先度割り込みが低優先度割り込みに割り込みをかけたことを示す)及び/又は(3)OI EOI(割り込みの終了)1212(例えば、ここで、OIEE ISRは、OI ISRにおいて現在マーキングされている最高優先度ベクトルの処理の完了を通知する)。
【0066】
一部の実施例では、プロセッサ・コア上で実行するためにOI区画が(例えば、スケジューラ1214によって)スケジューリングされると、動作(すなわち、(1)OI IRRにおいて保留中のベクトルが存在していない場合、動作は必要でなく、(2)OI IRRから最高優先度ベクトルを取得し、OI ISRにおける最高ベクトルと比較し(OI IRRベクトルがOI ISRベクトルよりも低い場合、動作は必要でなく)、(3)OIEEが割り込み可能な場合、OI ISRにおいてOI IRRから受け取られた最高ベクトルに対応するビットをセットし(一実施例においては、OI IRRからそのベクトルをクリアし)、かつ/又は、(4)OIEEに導入する対象のベクトルとしてOI ISRにおいて保留中の最高ベクトルを戻す)がOIPICモジュール1202によって行われる。割り込みに応じて、OIEEにおける割り込みコントローラ・ドライバはOIEOIレジスタ1212に対する書き込みを使用して完了を通知する。OIEEからOIEOIを受け取ると、OIPIC1202は、OI ISR1210において保留中の最高優先度ベクトルに対応するビットをクリアする。次いで、次の再開時にOIEEに導入することが可能な何れかの他のベクトルが存在しているかを判定する。
【0067】
図10乃至12を参照して説明したように、ホストOS/VMMによって使用し得る割り込みベクトルに対する制約を加えないホストOS/VMMに対する非侵入的な手法が提供される。同様に、前述の実施例は、ホストOS/VMMからLAPIC/IOAPICへの何れのアクセスも遮断せず、前述のデバイスの何れも仮想化しようとしない。このことにより、別々の区画に割り込みを誘導し、前述の機能を有しない他の実現形態と比較すると、前述の機能を更に相当好適かつスケーラブルにするという機構が可能になる。
【0068】
一部の実施例では、ホストOS/VMM区画とOI区画との間のメモリの分離をもたらすために、OIRMは、OIメモリ区画に対する、ホストOS/VMMによって発生したアクセスをブロックするか否かを判定するためにハードウェア・レンジ・レジスタの1つ又は複数のビットを利用し得る。同様に、ホストOS/VMMメモリ区画に対するOI区画からのアクセスを制御するために、OIRMは、OI区画下の拡張ページ・テーブル(EPT)などのページ・テーブルを作成し得る。例えば、上記OI区画は、起動前認証、メディア・トランスコーディング、電子商取引等のような、セキュリティに気を配る必要がある特定の作業を行うために使用し得る。前述の動作が行われると、OI区画は、鍵及びパスワードのような秘密を有し得る。同様に、ホストOS/VMMプロセッサ・ベースのアクセスを使用して、又は、DMAバスマスタ・デバイスを使用して前述の秘密を盗むための、OIメモリに対するソフトウェア・ベースの攻撃は、レンジ・レジスタ及びDMAデバイス・フィルタを使用してブロックされる。
【0069】
一部の実施例では、2つのタイプの保護(すなわち、(1)保存データに対する保護、又は(2)使用中のデータに対する保護)を提供し得る。揮発性メモリ内又は不揮発性メモリ内にある場合の保存データの保護は、攻撃者に対して価値がないように上記データを暗号化することを必要とする。このために、OIは、処理する必要がある場合にデータを復号し、同時に、処理している際に盗むことができないようにデータを保護するためのやり方を必要とする。
【0070】
保存データを保護することは、CBC(暗号ブロック連鎖)、CTR(カウンタ・モード)等などの、何れかのモードにおける暗号を使用する高度暗号化標準(AES)(256ビット又は他のバージョン)のような暗号化アルゴリズムを使用してデータを暗号化し得るということを示唆している。暗号化するための鍵も保護する必要がある。一実施例では、その秘密を保護する必要がある各アプリケーションは、その秘密の暗号化のためのそれ自身の鍵を有する。OIRMは、コア又は非コアにおけるプロセッサ・ヒューズを使用してこの鍵を保護するためのblobサービスを提供し得る。blob鍵動作の場合、ユーザは、そのデータを保護するために使用したい鍵を生成し、それに対してblobを行うようOIRMに要求する。更に、以下に更に説明するように、一部の実施例は、処理における、ユーザによって生成された鍵の保護に助力し得る。
【0071】
一実施例によれば、以下の擬似コードは、鍵blobを生成するためにユーザによって使用し得る。
【0072】
1. application_key_generation_function()
2. {
3. char*key_buffer=malloc(4096)
4. generate_key(key_buffer)
5. blob_key(key buffer)
6. }
上記擬似コードの行4では、アプリケーションはkey_buffer内に鍵を生成し、行5では、アプリケーションは、鍵blobを生成するために(例えば、OIRMによって提供される)blobサービスを呼び出す。OIRMblobサービスは、このblobサービスに使用されるプロセッサ鍵113を使用して鍵バッファ内の鍵を暗号化し得る。よって、アプリケーションは、その秘密を保護するために使用し得るプラットフォームに結合されたセキュアな鍵を有する。アプリケーションは、上記行4において生成した元の鍵を保持しなくてよい。鍵blobが、データに対して処理するために今後必要な全てである。
【0073】
一部の実施例では、実行時にデータを保護するために、データは、システム・メモリ内で決して平文でないことがあり得る。これは、OI秘密を一時的に記憶するためにオンパッケージ・メモリ111の一ページの使用によって達成し得る。一実施例では、オンパッケージ・メモリ111は、このメモリの内容が、バス・アナライザ及び「フリーズ・キャン」攻撃を使用してアクセス可能でないことを可能にする。すなわち、メモリ111に記憶された、暗号化されていない情報は、プロセッサ102−1の外では利用可能でないことがあり得る。一実施例では、OIRMは、セキュアなメモリ・アクセスを可能にするための命令(すなわち、(1)Load_Key_Page メモリ・バッファからのデータをセキュアなメモリに移し、アプリケーションによる使用のために復号する。(2)Store Key Page セキュアなメモリからのデータをメモリ・バッファに移し、セキュアなメモリをクリアする。)をユーザに提供する。
【0074】
一実施例では、鍵ページ・ロード動作は2つの入力(すなわち、(a)鍵ページの暗号化のために使用されるblobが行われた鍵、及び(b)(鍵ページとして表される)暗号化データを保持するバッファの物理アドレス)を用いる。Load_Key_Page動作が呼び出されると、OIRMは、(1)物理アドレスによって指し示されたページの内容をオンパッケージ・メモリ111に複製し、(2)プロセッサ・ヒューズ鍵を使用して鍵blobを復号し、(3)オンパッケージ・メモリ111内のデータを、復号された鍵を使用して復号し、(4)オンパッケージ・メモリ111に対する前述の動作に転送される物理アドレスに対するアクセスを再指示するようOIのEPTを更新し、かつ/又は、(5)アプリケーションは次いで、秘密にアクセスするために標準ソフトウェア構成を使用し得るという動作を行う。
【0075】
図13及び図14は、一部の実施例による、ロード鍵の利用に関連付けられた動作のブロック図を示す。図13では、ロード鍵は、(例えば、暗号化された)物理メモリをセキュアなメモリに変え、出願人の鍵を使用してデータを復号する。図14では、OI EPTは、物理メモリをセキュアなメモリに転換するよう再マッピングし得る。
【0076】
一部の実施例では、単一の鍵ページのみを何れかの時点でロードし得る。先行してロードされたページに対してStore_Key_Pageを行うことなくLoad_Key_Pageを行おうとすると、障害が発生し得る。OIEEカーネルからの鍵ページ管理は、アプリケーションに対してロード/記憶サービスを提供するOIカーネル・モジュールに依存し得る。カーネル・モジュールは、処理/タスク・スイッチが通知されるようOIカーネル・スケジューラに関わり、Load/Store Key Pageを使用して、OIにおいて実行しているアプリケーションに基づいて鍵・ページを変え得る。
【0077】
一実施例では、鍵ページ記憶動作は2つの入力(すなわち、(a)鍵ページの暗号化のために使用される、blobが行われた鍵、及び(b)(鍵ページとして表される)暗号化データを記憶するためのバッファの物理アドレス)を用いる。OIRMは、(1)プロセッサ・ヒューズ鍵を使用して鍵blobを復号し、(2)復号されたblob鍵を使用してオンパッケージ・メモリ111の内容を暗号化し、かつ/又は(3)オンパッケージ・メモリ111の内容を、アプリケーションによって転送されたメモリ・ページに複製するという動作を行う。
【0078】
図15及び図16は、一部の実施例による、記憶鍵の利用に関連付けられた動作のブロック図を示す。図15では、記憶鍵は、セキュアなメモリ(例えば、平文)を物理メモリに変え、出願人の鍵を使用することにより、データを暗号化する。図16では、OI EPTは、物理メモリの転換を元に戻すよう再マッピングし得る。
【0079】
一実施例では、以下の擬似コードは、上述のLoad_Key_Page及びStore_Key_Pageに使用し得る。
【0080】
Do_secret_work_example_function(uint64_t key blob PA, uint64_t secret_page_PA)
{
Char *secret_page_la=map_secret_page(secret_page_PA);
Load_Key_Page(key_blob_PA,secret_page_PA);
Do_secret_work(secret_page_la);
Store_Key_Page(key_blob_PA,secret_page_PA);
}
上記コードでは、「la」が線形を表し、「PA」は物理アドレスを表す。よって、一実施例は、(例えば、ソフトウェア・ベースの攻撃又はコールド・ブートのようなハードウェアベースの攻撃からOIメモリ内の秘密を保護することにより、)OIにおける、セキュリティ感応性データを処理するためのタンパリング耐性メモリを提供する。これは、この機能なしの実現形態と比較して、上記機能をかなり好適に、かつ/又はスケーラブルにする。
【0081】
一部の実施例では、ホストOS/VMMとOIEEとの間のメモリの分離をもたらすために、OIRMは、OIメモリに対する、ホストOS/VMMによって発生したアクセスをブロックするハードウェア・レンジ・レジスタを利用する。同様に、OI区画からホストOS/VMMメモリへのアクセスを制御するために、OIRMは、OI区画下の拡張ページ・テーブル(EPT)などのページ・テ―ブルを作成する。
【0082】
システムが停止する(S3)と、システム・メモリは自己リフレッシュ状態に入る。しかし、CPUが電源オフにされ、よって、メモリ上でアクティブな保護は存在していない。よって、システムがS3状態に入っている場合、敵対者はメモリの内容を修正することができ得、メモリが、再開時に検証されない場合(S0)、これは、OIに対するコード導入攻撃につながり得る。前述のコード導入攻撃を避けるための一手法は、S3に入る前にメモリをハッシングし、S3からS0に再開する際に内容を検証する。しかし、この手法は一部の場合には2つの欠点を有し得る。(1)メモリの内容をハッシングするために行うべき更なる作業が理由で、S0からS3への遷移に必要な時間の量を増やし、(2)上記内容を検証するためにメモリをハッシングするために行うべき更なる作業が理由でS3からS0への遷移に必要な時間の量を増やす。
【0083】
上述の通り、S3へのシステムの遷移は、CPUの電源がオフになり、メモリが自己リフレッシュ・モードに入ることをもたらす。この時点では、レンジ・レジスタと同様にアクティブなメモリ上の保護は存在せず、デバイス・フィルタは動作状態にない。S3上で保持されるメモリ・イメージは、システムがS0状態に戻ると実行される。しかし、このメモリのインテグリティはこの場合、疑わしく、自己リフレッシュ・イメージに、不当なコードが導入されているか、あるいは、メモリが、不注意に、特定の形式で損なわれているか、あるいはタンパリングされていることがあり得る。この目的で、一実施例は、S3の再開時にメモリのインテグリティを検証する。OIRM124は例えば、実行することを可能にする前に、自己リフレッシュにおけるメモリ・イメージのインテグリティを測定し得る。上述の通り、このインテグリティ検証の一手法は、S0からS3への遷移の際のOIメモリの測定を記録し、S3からS0への遷移の際のイメージを検証することである。S3の再開に続く前にインテグリティ検証を行うのに大量の時間をOIRMが費やす必要があるので、この手法は再開のレーテンシを増加させ得る。(2LM(二レベルのメモリ)を有するシステム上でより顕著になる)前述の手法の不意の副作用は、測定するためにNV(不揮発性)メモリからDRAMページ・キャッシュにメモリ・ページをフェッチするオーバヘッドである。S3再開パスは、「即時ON」モードのような使用の場合の遅延を最小にするために最適化しなければならず、S3からの再開は、システムをS3に戻す前に同期化活動を行うための短い期間の間に行い得る。
【0084】
一実施例では、再開時間を最小にするために、インテグリティ検査値(ICV)は、ページ単位でOIEEイメージについて計算し得るので、S3からの再開の際には、ICVを検証するための時間は最小にされ得る。この場合、検証はOIEEコードとしてページ単位で行い得、S3の再開後にデータにアクセスされるからである。図17を参照すれば、一実施例による、S0とS3との間のセキュアな遷移に関連付けられた動作のブロック図を示す。OIEEページ1702のページ単位のインテグリティ検査値は、(例えば、OIRM124により、)ICVアレイ1704に記録し得る。ICVアレイの各要素はOIメモリ内の一ページに対応し、(1)インテグリティ検査値(ICV) 構成されたようなSHASHA256、SHA512等のような一方向の暗号ハッシュ・アルゴリズムを使用して生成されたページの一方向暗号ハッシュ、(2)ICV有効(図17に「V」として示す)、正/誤、及び/又は(3)(図17に「D」として示す)DMA(直接メモリ・アクセス)ページ、正/誤。OIRMは、ICVアレイのインテグリティを検証するためにICVアレイに関する(例えば、メモリ114にも)SHAハッシュを保持し得る、という情報を有する。S0からS3状態への遷移を行うと、OIRMは、S3からの再開の際に検証し得るようにICVアレイのハッシュに署名し得る。
【0085】
一部の実施例では、OIRMは、OIページ1702を(例えば、周期的に)ハッシングするためにバックグラウンド・タスク1706を使用し得る。OIに対する各遷移の前に、メモリ内のページの固定の組をハッシングするためにバックグラウンド・タスク1706を呼び出し得る。例えば、OIイメージのサイズが64MBである場合、インテグリティ保護するためのページが16384存在している。バックグラウンド・タスクは、ラウンド・ロビンで16Kページを実行し、各ランにおいて16ページのハッシュを行い得る。よって、バックグラウンド・タスクは、OIEEに割り当てられる16Kページ全てのハッシュを行うために1K回、呼び出す必要がある。一実施例では、ページをハッシングするために要する時間は、OIに帰され、実行クレジットから減算される。
【0086】
ページのハッシュが記されると、OIRMは、再ハッシュを必要としている修正を検知するために前述のページに対する書き込みを追跡し得る。OIRMは、OI EPTを使用して書き込み追跡を行い得る。ページがハッシングされ、ハッシュがICVアレイ1704において記されると、これは、EPTにおいてリードオンリとしてマーキングされ、ICVは、ICVアレイにおいて有効であるとしてマーキングされる。OIEEからのページへの書き込みは、OIRMがページICVを無効であるとしてマーキングし、もう一度書き込み可能であるとしてページを作ることにつながるEPTフォールトをもたらし得る。ページはこの場合、バックグラウンド・ハッシング・タスクがこのページまでもう一度至ると再ハッシングし得、ハッシュが記された後、リードオンリとして再マーキングされる。更に、DMA動作を使用したページに対する書き込みは、EPT障害を使用して追跡されないことがあり得る。DMAページに対する書き込みを追跡するために、OIRMは、DMAに対するページをデバイスに送出する前にOIRMに通知するためにOIEEカーネルに依存し得る。OIRMは、前述のページをDMAページとしてICVアレイに記し、そのバックグラウンド・タスクの一部として前述のページに対するICV検査を何ら行わないことがあり得る。
【0087】
S0からS3への遷移の場合、上記遷移がS3遷移の場合に、OIRMはICVページ・アレイを走査し得、無効のICVを記録させたページ、及びDMAページのICV値を記す。DMAページとしてマーキングされたページの場合、そのハッシュの記録に加えて、OIRMは、DMAページとしてのそのステータスをクリアし得る。OIRMは次いで、ICVアレイ自体にわたってハッシュを行う。ICVアレイのハッシュは、パッケージ内のプロセッサ鍵113から導き出されたOIRM ICV署名鍵を使用して署名し得る。ICVアレイの署名されたハッシュは、そのタンパリングをOIRMによって検出することが可能であるので、システム・メモリに残し得る。
【0088】
S3再開の場合、BIOS(基本IOシステム)は、OIイメージを再開するようOIRMに通知し得る。OIRMは、OIのコンテナを作成し、次いで、OIメモリ内に有効なICVアレイが存在しているかを判定する。一実施例では、ICVアレイの有効性は、ICVアレイのハッシュ上の署名を検証し、S0乃至S3の遷移上に記憶された値に対してICVアレイのハッシュを検査することによって判定される。
【0089】
ICVアレイのインテグリティが損なわれていなかった場合、OIRMはOI初期化を通常のリセット・パスとして続け得る(例えば、メモリ内のイメージが廃棄され、フレッシュ・ロード・コードのロードが行われる)。ICVアレイのインテグリティが損なわれていなかった場合、OIRMは、OI EPTに存在していないとしてOIEEのページを全てマーキングし、制御をOIEEに移し得る。OIEEが実行を始めるにつれ、コード及びデータ・ページのアクセスは、OIRMに誘導されたEPT障害を発生させる。ICVアレイ内のページに対して有効なICVが存在している場合、OIRMは、障害ページ上のICVを計算し、ページのインテグリティを検証するためにICVアレイにおけるICVに対してこれをマッチングさせる。このページは次いで、(例えば、ページに対する変更を追跡するために)リードオンリ・ページとしてOI EPTにマッピングし得る。よって、プロセッサによって生成されたEPT、及びIORMを使用した増分ハッシングは、例えば、ハイパバイザにおいて現在行われていることと比較して、主要な相違点である。更に、一実施例は、自己リフレッシュを出ると、OIメモリのインテグリティを効率的に検証する非常に重要な機構を加える。これは、この機能なしの実現形態と比較して、上記機能をかなり好適に、かつ/又はスケーラブルにする。
【0090】
図18は、本発明の実施例による計算システム1800のブロック図を示す。計算システム1800は、相互接続ネットワーク(又はバス)1804を介して通信する1つ若しくは複数の中央処理装置(CPU)1802又はプロセッサを含み得る。プロセッサ1802は、汎用プロセッサ、(コンピュータ・ネットワーク1803を介して通信されるデータを処理する)ネットワーク・プロセッサ、(縮小命令セット・コンピュータ(RISC)プロセッサ又は高度命令セット・コンピュータ(CISC)プロセッサを含む)他のタイプのプロセッサを含み得る。更に、プロセッサ1802は、単一又は複数のコア・デザインを有し得る。複数のコア・デザインを有するプロセッサ1802は、同じ集積回路(IC)ダイ上に各種プロセッサ・コアを一体化し得る。更に、複数のコア・デザインを有するプロセッサ1802は、対称又は非対称のマルチプロセッサとして実現し得る。一実施例では、プロセッサ1802のうちの1つ又は複数は、図1のプロセッサ102と同一又は同様であり得る。例えば、プロセッサ1802のうちの1つ又は複数は、例えばOIRM124を含む、図1乃至17を参照して記載したキャッシュ、記憶デバイス、及び/又はロジックのうちの1つ又は複数を含み得る。更に、図1乃至図17を参照して説明した動作は、システム1800の1つ又は複数の構成部分によって行い得る。
【0091】
チップセット1806は、相互接続ネットワーク1804とも通信し得る。チップセット1806はメモリ制御ハブ(MCH)1808を含み得る。MCH1808は、(図1のメモリ114と同一又は同様であり得る)メモリ1812と通信するメモリ・コントローラ1810を含み得る。メモリ1812は、計算システム1800に含まれるCPU1802又は何れかの他のデバイスによって実行し得る命令のシーケンスを含むデータを記憶し得る。本発明の一実施例では、メモリ1812は、ランダム・アクセス・メモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、又は他のタイプの記憶デバイスなどの1つ又は複数の揮発性記憶(又はメモリ)デバイスを含み得る。ハード・ディスクなどの不揮発性メモリも利用し得る。複数のCPU及び/又は複数のシステム・メモリなどの更なるデバイスは、相互接続ネットワーク1804を介して通信し得る。
【0092】
MCH1808は、ディスプレイ・デバイス1816と通信するグラフィクス・インタフェース1814も含み得る。本発明の一実施例では、グラフィクス・インタフェース1814は、アクセラレーテッド・グラフィクス・ポート(AGP)を介してディスプレイ・デバイス1816と通信し得る。本発明の一実施例では、(フラット・パネル・ディスプレイなどの)ディスプレイ1816は、例えば、ディスプレイ1816によって解釈され、表示されるディスプレイ信号にビデオ・メモリ又はシステム・メモリなどの記憶デバイスに記憶されたイメージのディジタル表現を変換する信号変換器を介してグラフィクス・インタフェース1814と通信し得る。ディスプレイ・デバイスによって生成されるディスプレイ信号は、ディスプレイ1816によって解釈され、その後、ディスプレイ1816上に表示される前に種々の制御デバイスを通り得る。
【0093】
ハブ・インタフェース1818は、MCH1808及び入出力制御ハブ(ICH)1820が通信することを可能にし得る。ICH1820は、計算システム1800と通信するI/Oデバイスに対するインタフェースを提供し得る。ICH1820は、周辺装置相互接続(PCI)ブリッジ、ユニバーサル・シリアル・バス(USB)コントローラや他のタイプの周辺装置ブリッジ又はコントローラなどの周辺装置ブリッジ(又はコントローラ)1824を介してバス1822と通信し得る。ブリッジ1824は、CPU1802と周辺装置との間のデータ・パスを提供し得る。他のタイプのトポロジも利用し得る。更に、複数のバスは、例えば、複数のブリッジ又はコントローラを介して、ICH1820と通信し得る。更に、ICH1820と通信し合う他の周辺装置は、本発明の種々の実施例において、集積ドライブ・エレクトロニクス(IDE)又は小型コンピュータ・システム・インタフェース(SCSI)ハード・ドライブ、USBポート、キーボード、マウス、パラレル・ポート、シリアル・ポ―ト、フロッピー(登録商標)ディスク・ドライブ、ディジタル出力サポート(例えば、ディジタル・ビデオ・インタフェース(DVI))、又は他のデバイスを含み得る。
【0094】
バス1822は、オーディオ・デバイス1826、1つ又は複数のディスク・ドライブ1828、及び(コンピュータ・ネットワーク1803と通信し合う)ネットワーク・インタフェース・デバイス1830と通信し得る。他のデバイスは、バス1822を介して通信し得る。更に(ネットワーク・インタフェース・デバイス1830などの)種々の構成部分が、本発明の一部の実施例においてMCH1808と通信し得る。更に、(限定列挙でないが、MCH1808、MCH1808の1つ又は複数の構成部分等を含む)図18に示すプロセッサ1802及び他の構成部分は、単一のチップを形成するよう組み合わせることができる。更に、グラフィクス・アクセラレータは、本発明の他の実施例においてMCH1808内に含まれ得る。
【0095】
更に、計算システム1800は、揮発性及び/又は不揮発性のメモリ(又は記憶装置)を含み得る。例えば、不揮発性メモリは、リードオンリ・メモリ(ROM)、プログラマブルROM(PROM)、消去可能なPROM(EPROM)、電気的に消去可能なPROM(EEPROM)、ディスク・ドライブ(例えば、1828)、フロッピー(登録商標)・ディスク、コンパクト・ディスクROM(CD−ROM)、ディジタル多用途ディスク(DVD)、フラッシュ・メモリ、光磁気ディスク、又は、電子データ(例えば、命令を含む)を記憶することができる不揮発性のマシン読み出し可能な他のタイプの媒体のうちの1つ又は複数を含み得る。
【0096】
図19は、本発明の実施例による、ポイントツーポイント(PtP)構成に配置された計算システム1900を示す。特に、図19は、いくつかのポイントツーポイント・インタフェースによってプロセッサ、メモリ及び入出力デバイスが相互接続されたシステムを示す。図1乃至18を参照して説明した動作は、システム1900の1つ又は複数の構成部分によって行い得る。
【0097】
図19に示すように、システム1900はいくつかのプロセッサ(明瞭にするために、このうちの2つ、すなわち、プロセッサ1902及び1904のみを示す)を含み得る。プロセッサ1902及び1904はそれぞれ、メモリ1910及び1912との通信を可能にするための局所メモリ・コントローラ・ハブ(MCH)1906及び1908を含み得る。メモリ1910及び/又は1912は、図18のメモリ1812を参照して説明したものなどの種々のデータを記憶し得る。
【0098】
一実施例では、プロセッサ1902及び1904は、(例えば、図1乃至図18を参照して説明したキャッシュのうちの1つ又は複数を含む、)図18を参照して説明したプロセッサ1802のうちの1つであり得る。プロセッサ1902及び1904は、PtPインタフェース回路1916及び1918それぞれを使用してポイントツーポイント(PtP)インタフェース1914を介してデータを交換し得る。更に、プロセッサ1902及び1904はそれぞれ、ポイントツーポイント・インタフェース回路1926、1928、1930及び1932を使用して個々のPtPインタフェース1922及び1924を介してチップセット1920とデータを交換し得る。チップセット1920は、例えば、PtPインタフェース回路1937を使用して、グラフィクス・インタフェース1936を介してグラフィクス回路1934とデータを交換し得る。
【0099】
本発明の少なくとも1つの実施例は、プロセッサ1902及び1904内に提供し得る。例えば、図1のコア106のうちの1つ又は複数は、プロセッサ1902及び1904内に配置され得る。更に、プロセッサ1902及び1904は、図1乃至図18を参照して説明したキャッシュ、記憶デバイス、及び/又はロジックの1つ又は複数を含み得る。例えば、OIRM124は、プロセッサ1902/1904内に提供し得る。しかし、OIRMは、図1乃至図18を参照して説明したような、(例えば、チップセット1920におけるプロセッサ1902/1904とMCH1906/1908との間の)他の場所で提供し得る。しかし、本発明の他の実施例は、図19のシステム1900内の他の回路、ロジック装置、又はデバイスに存在し得る。更に、本発明の他の実施例は、図19に示すいくつかの回路、ロジック装置、又はデバイスにわたって分散させ得る。
【0100】
チップセット1920はPtPインタフェース回路1941を使用してバス1940と通信し得る。バス1940は、バス・ブリッジ1942やI/Oデバイス1943などの1つ又は複数のデバイスと通信し得る。バス1944を介して、バス・ブリッジ1942は、(コンピュータ・ネットワーク1803と通信し得るモデム、ネットワーク・インタフェース・デバイス、又は他の通信デバイスなどの)通信デバイス1946、キーボード/マウス1945、オーディオI/Oデバイス1947、及び/又はデータ記憶デバイス1948などの他のデバイスと通信し得る。データ記憶デバイス1948は、プロセッサ1902及び/又は1904によって実行し得るコード1949を記憶し得る。
【0101】
本発明の種々の実施例では、例えば、図1乃至図19を参照して、本明細書及び特許請求の範囲に記載された動作は、ハードウェア(例えば、論理回路)、ソフトウェア、ファームウェア、又はそれらの組み合わせ(例えば、本明細書及び特許請求の範囲記載の処理を実行するようコンピュータをプログラムするために使用される命令(又はソフトウェア手続)を記憶させたマシン読み取り可能な媒体又はコンピュータ読み取り可能な媒体を含むコンピュータ・プログラム・プロダクトとして提供し得る)であり得る。マシン読み取り可能な媒体は、本明細書及び特許請求の範囲記載のものなどの記憶デバイスを含み得る。更に、前述の有形のコンピュータ読み取り可能な媒体はコンピュータ・プログラム・プロダクトとしてダウンロード可能であり得、プログラムは、通信リンク(例えば、バス、モデム、又はネットワーク接続)を介した伝搬媒体におけるデータ信号により、要求側のコンピュータ(例えば、クライアント)に遠隔コンピュータ(例えば、サーバ)から転送し得る。
【0102】
「一実施例」、「実施例」、又は「一部の実施例」に、明細書中で言及していることは、実施例に関して説明する特定の構成、構造又は特性が少なくとも一実現形態に含まれ得るということを意味している。明細書中の種々の箇所において「一実施例における」という句が存在することは、全てが、同じ実施例を表していてもよく、表していなくてもよい。
【0103】
更に、本明細書及び特許請求の範囲では、「結合」、「接続」、及びその派生形を使用し得る。本発明の一部の実施例では、「接続」は、2つ以上の構成要素が、互いに直接、物理的に又は電気的に接触しているということを示すために使用し得る。「結合」は、2つ以上の構成要素が直接、物理的又は電気的に接触しているということを意味し得る。しかし、「結合」は、2つ以上の構成要素が互いに直接接触している訳でないが、互いになお協調又は相互作用し得るということも意味し得る。
【0104】
よって、本発明の実施例は、構造的な構成及び/又は方法論的な動作に特有の文言で説明してきたが、請求された主題は、上述の特定の構成又は動作に限定されないことがあり得る。むしろ、上記特定の構成及び動作は、請求された主題を実現するサンプル形式として開示している。
【技術分野】
【0001】
本明細書及び特許請求の範囲は、一般に、エレクトロニクスの分野に関する。特に、本発明の実施例は、セキュアな埋込みコンテナの実行のためのプロセッサの拡張に関する。
【背景技術】
【0002】
コンピュータ・システムは、例えば、ハードウェア・レイヤ、ファームウェア及びオペレーティング・システム・レイヤ、並びにアプリケーション・プログラム・レイヤを含むレイヤ化されたデバイスとして実現し得る。コンピュータ・システムのハードウェア・レイヤは、物理プラットフォームとして表し得る。物理プラットフォームは、プロセッサ、チップセット、通信チャネル、メモリ、基板、及びシステムを含み得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
コンピュータ・システムは、マネージャビリティ・エンジン(例えば、コンピュータ・システムが(例えば、通信ネットワーク上で、遠隔管理コンソールを介して遠隔に)管理されることを可能にするための専用のマイクロコントローラを含む)も含み得る。しかし、マネージャビリティ・サービスのための専用のマイクロコントローラの提供は、制限されたMIPS(毎秒百万命令)、放熱、電力消費、サイズ、コストを含む理由のために、一部の実現形態において、適切でないか、実用的でないか、又は、さもなければ、スケーラブルでないことがあり得る。
【課題を解決するための手段】
【0004】
本発明の詳細な説明を、添付図面を参照して記載する。図中、参照符号の最も左の桁は、参照符号が最初に存在する図を識別する。別々の図において同じ参照符号を使用していることは、同様又は同一の項目を示している。
【図面の簡単な説明】
【0005】
【図1】本明細書及び特許請求の範囲記載に種々の実施例を実現するために利用し得るコンピュータ・システムの実施例を示すブロック図である。
【図2】一実施例による、一状態から別の状態への遷移をもたらすトリガ及び4つの状態を示す状態遷移図である。
【図3】一実施例による、別々のメモリ区画の実行に関連付けられた種々の動作を示すブロック図である。
【図4】一部の実施例によるタイムチャートである。
【図5】一部の実施例によるタイムチャートである。
【図6】一部の実施例によるタイムチャートである。
【図7】一部の実施例によるタイムチャートである。
【図8】一部の実施例によるタイムチャートである。
【図9】本発明の一部の実施例によるフロー図である。
【図10】一実施例による、OI区画に導入し、OIに割り当てられた装置から生じる割り込みを処理するために使用される種々の構成部分を示すブロック図である。
【図11】本発明の一部の実施例によるフロー図である。込みを処理するために使用される種々の構成部分を示すブロック図である。
【図12】一実施例による、OIPICモジュールと通信し合う種々の構成部分を示す図である。
【図13】一部の実施例による、ロード鍵の利用に関連付けられた動作を示すブロック図である。
【図14】一部の実施例による、ロード鍵の利用に関連付けられた動作を示すブロック図である。
【図15】一部の実施例による、記憶鍵の利用に関連付けられた動作を示すブロック図である。
【図16】一部の実施例による、記憶鍵の利用に関連付けられた動作を示すブロック図である。
【図17】一実施例による、S0とS3との間のセキュアな遷移に関連付けられた動作を示すブロック図である。
【図18】本明細書及び特許請求の範囲記載に種々の実施例を実現するために利用し得るコンピュータ・システムの実施例を示すブロック図である。
【図19】本明細書及び特許請求の範囲記載に種々の実施例を実現するために利用し得るコンピュータ・システムの実施例を示すブロック図である。
【発明を実施するための形態】
【0006】
以下の説明では、種々の実施例の徹底的な理解を得るために数多くの具体的な詳細を記載している。しかし、本発明の種々の実施例は、上記具体的な詳細なしで実施し得る。他の場合には、周知の方法、手順、構成部分、及び回路は、本発明の特定の実施例を分かりにくくすることがないように詳細に説明していない。更に、本発明の実施例の種々の局面は、半導体集積回路(「ハードウェア」)、1つ若しくは複数のプログラムに編成されたコンピュータ読み取り可能な命令(「ソフトウェア」)、又は、ハードウェア及びソフトウェアの特定の組み合わせなどの種々の手段を使用して行い得る。本明細書及び特許請求の範囲の目的では、「ロジック」への言及は、ハードウェア、ソフトウェア、又はそれらの特定の組み合わせを意味する。更に、本明細書及び特許請求の範囲の(「uop」としても表し得る)「マイクロオペレーション」又は「命令」の使用は、置き換え可能であり得る。更に、本明細書及び特許請求の範囲記載の実施例の一部は、論理0及び論理1として組、又は明確な値を表し得るが、前述の語は、例えば、実現形態に応じて、置き換え可能である。
【0007】
一部のプロセッサは複数のプロセッサ・コアを含み得る。複数のコアに加えて、プロセッサ・ダイは、(コア以外の、プロセッサ・ダイ上の構成要素全てを併せて表し得る)非コアを含み得る。性能を向上させるために、一層多くの機能を、例えば、複数のチップセットを置き換えることにより、プロセッサの非コアに組み入れることができる。例えば、一部の実現形態は、メモリ・コントローラ機能、IO(入出力)コントローラ機能、及びグラフィクス機能を非コアに組み入れ得る。しかし、この傾向は、プラットフォーム上で供給される他の機能及びサービス(例えば、マネージャビリティ)に影響を及ぼす。現在、一部のマネージャビリティ機能は、マネージャビリティ・エンジン(ME)のコア部分を構成し得る専用プロセッサ上で提供し得る。MEは一般に、チップセット上に配置される。更に、一部のサーバ・プラットフォームは、ベースボード管理コントローラ(BMC)、サービス・プロセッサ(SP)と呼ばれるか、又は何れかの他の名称によって呼ばれる個別の専用マイクロコントローラを実現し得る。上述の通り、前述の解決策は、限定されたMIPS、放熱、電力消費、サイズ、コスト等などの理由で、スケーラブルでない。このことは、超モバイル・パーソナル・コンピュータ(UMPC)環境において更に問題となり、別の解決策に対する必要性を強いる。
【0008】
この目的で、本明細書及び特許請求の範囲記載の一部の実施例は、(例えば、マネージャビリティのために専用プロセッサ又はマイクロコントローラを利用することが不適切であるか、又は実用的でないUMPC環境又はその他の環境のための)マネージャビリティ機能のためのスケーラブルな解決策を提供する。例えば、一実施例では、OS(オペレーティング・システム)又はVMM(仮想マシン・マネージャ)独立アーキテクチャ(併せて本明細書及び特許請求の範囲では「OI」として表す)は、ホストOS/VMMとOIコンテナとの間の(プロセッサ・サイクル、メモリ、デバイスなど)のリソースを動的に区画化することにより、例えば、プロセッサ上に、1つ又は複数のコンテナを生成することが関係する。一実施例では、OIリソース・マネージャ(OIRM)は、ホストOS/VMMコンテナ(本明細書及び特許請求の範囲では区画とも表す)とOS独立コンテナとの間のタイム・シェアリング動作を行い得る。その結果、一部の実施例は、OS/VMM実行性能に影響を及ぼすことなく(又はOS/VMM実行性能に対する、低減された影響を伴って)、有用な目的(例えば、マネージャビリティ)のために、アイドル・プロセッサ・サイクルを使用することを可能にする。
【0009】
一実施例では、OI区画の割り当てを導入し、OIに割り当てられたデバイスから生じた割り込みを処理するための手法を開示している。一実施例では、タンパリング耐性メモリが、OIにおけるセキュリティ感応性データを処理するために提供される。一実施例では、S3からS0への遷移及びS0からS3への遷移に費やすことが必要な期間の量が削減される。更に、本明細書及び特許請求の範囲記載の手法は、例えば、図1乃至図19を参照して説明したものなどの種々の計算装置における性能、効率、及び/又はセキュリティの向上を可能にし得る。
【実施例】
【0010】
より具体的には、図1は、本発明の実施例による計算システム100のブロック図を示す。上記システム100は、1つ又は複数のプロセッサ102−1乃至102−N(一般に、本明細書及び特許請求の範囲において「プロセッサ102」又は「プロセッサ102」として表す)を含み得る。プロセッサ102は、相互接続ネットワーク又はバス104を介して通信し得る。各プロセッサは、種々の構成部分を含み、その一部は、明確にするためにプロセッサ102−1のみを参照して表している。よって、残りのプロセッサ102−2乃至102−Nはそれぞれ、プロセッサ102−1を参照して表す同一又は同様の構成部分を含み得る。
【0011】
一実施例では、プロセッサ102−1は、(本明細書及び特許請求の範囲において「コア106」として、又はより概括的に「コア106」として表される)1つ又は複数のプロセッサ・コア106−1乃至106−8、共有キャッシュ108、及び/又はルータ110を含み得る。プロセッサ・コア106は単一の集積回路(IC)チップ上で実現し得る。更に、チップは、1つ若しくは複数の共有キャッシュ及び/又は占有キャッシュ(キャッシュ108など)、(バス若しくは相互接続ネットワーク112などの)バス又は相互接続、(図18乃至図19を参照して説明したものなどの)メモリ・コントローラ、又は他の構成部分を含み得る。
【0012】
一実施例では、ルータ110は、システム100及び/又はプロセッサ102−1の種々の構成部分間で通信するために使用し得る。更に、プロセッサ102−1は2つ以上のルータ110を含み得る。更に、多くのルータ110が、プロセッサ102−1の内部又は外部の種々の構成部分間のデータ・ルーティングを可能にするために通信し得る。一実施例では、プロセッサ102−1は、暗号動作における使用のためにOIRM124にのみアクセス可能な埋め込まれた鍵113を有し得る。一実施例では、この鍵は、プロセッサの最初の電源投入時に、強い乱数発生器を使用してOIRMにより、プロセッサ上で生成し、記憶し得る。別の実施例では、この鍵は、製造時にプロセッサに記憶し得る。
【0013】
共有キャッシュ108は、コア106などの、プロセッサ102−1の1つ又は複数の構成部分によって利用されるデータ(例えば、命令を含む)を記憶し得る。図に示すように、プロセッサ102は、オンプロセッサ(本明細書及び特許請求の範囲では「オンパッケージ」としても表す)メモリ111(更に後述するように、セキュアなメモリとして使用し得る)も含み得る。例えば、共有キャッシュ108は、プロセッサ102の構成部分による高速アクセスのために、メモリ114に記憶されたデータを局所にキャッシュし得る。一実施例では、キャッシュ108は、ミッドレベル・キャッシュ(レベル2(L2)、レベル3(L3)、レベル4(L4)、又は他のレベルのキャッシュなど)、ラスト・レベル・キャッシュ(LLC)、及び/又はそれらの組み合わせを含み得る。更に、プロセッサ102−1の種々の構成部分は、共有キャッシュ108と直接、バス(例えば、バス112)を介して、かつ/又はメモリ・コントローラ若しくはハブを介して通信し得る。図1に示すように、一部の実施例では、コア106の1つ又は複数は、(本明細書及び特許請求の範囲において概括的に「L1キャッシュ116」として表す)レベル1(L1)キャッシュ(116−1)及び/又はL2キャッシュ(図示せず)を含み得る。
【0014】
図1に示すように、システム100は、1つ又は複数の区画120又は122(本明細書及び特許請求の範囲では同義で「コンテナ」としても表す)を利用し得る。OIリソース・マネージャ(OIRM)124を、通信するよう、物理レイヤ(例えば、プロセッサ・コア、チップセット、メモリ、記憶装置、ネットワーク・インタフェース等)、ホストOS/VMM、OIコンテナ(又は区画)120及び122間に結合し得る。更に、2つ以上のOIコンテナを使用し得る。一部の実施例では、OIRM124は、プロセッサ上のファームウェア又はマイクロコードとして実現し得る。例えば、OIRM124は、プロセッサ・サイクルをスケジューリングする役割を果たすプロセッサ・マイクロコードであり得る。これは更に、(例えば、システム上で実行される複数の処理に対するシステム応答性又は公平性を維持するために)OI区画124によって実行されるプロセッサ命令とインタリーブされたプロセッサ命令を主OS/VMM区画120が実行することを可能にし得る。
【0015】
ホストOS/VMM区画120は、通常の(ホスト)アプリケーション及び/又はホスト・デバイス・ドライバ(図示せず)を含み得る。更に、OI区画122は、(例えば、選択されたデバイスに対する)OIドライバ(図示せず)及び/又は、コア機能に対応するデータ、アプリケーションを含み得る。更に、一部の実施例では、OIRMは、OIEE(OI実行環境(OI区画内の動作環境))にプロセッサ時間を割り当てる場合に満たすべき、以下の制約のうちの1つ又は複数を有し得る。
【0016】
ホストOS/VMMは割り込みを取り逃さず、又は時間ドリフトを被らず、ホストOS/VMM IOデバイス(例えば、CDROM、LAN、WAN等)は、バッファのアンダーフロー又はオーバフローを避けるために処理される。このことは、ホストOS/VMM宛のプロセッサ間割り込み及び外部割り込みが、最小のレーテンシを伴って配信されるということを示唆している。
【0017】
プロセッサ・コア上のOIEEのスケジューリングは、他のプロセッサのブロッキングにつながるものでない。OIをスケジューリングするために選択されたプロセッサ・コア上のロックをオペレーティング・システムが保持している場合に、前述の状態が生じ得る。OIを実行させるために前述のプロセッサ・コアを取り去ることにより、前述のロックを待っている他のプロセッサ・コアがスピンし、サイクルを浪費してしまう。プロセッサ・コア上の実行のためにOIをスケジューリングするアルゴリズムは、できる限り、前述の状態を避けるべきである。
【0018】
プロセッサ・コア、デバイス、バス等の電力管理は、ホストOS/VMM 120に干渉するというよりも、OSと協調する。OIRM124には、システムの電力状態、熱状態、及び性能状態についての決定のスケジューリングの副作用が分かり得る。例えば、OIをスケジューリングするために、(プロセッサC状態に関連付けられた)C−xプロセッサ・コアをC−0に至らせることにより、自動周波数スロットリングにつながる、システムの電力エンベロープの、閾値との交差をもたらし得る。よって、C−0プロセッサ・コアに対する性能の影響を避けるために行われるが、スケジューリングのためにC−xプロセッサ・コアを選択する動作は、厳しい性能ペナルティをもたらし得る。OIRM124は、(例えば、賢明な選択を行うためにPCU(電力制御装置)からの)非コア及びコアにおいて利用可能な適切な電力ヒューリスティックを利用し得る。PCUは、プロセッサ・コア及び非コア構成部分の電力管理方針を管理するためにプロセッサ非コアに備え得る。
【0019】
オペレーティング・システム及び性能監視ツールは、OIを実行するために特定のプロセッサ・コアから消費されたサイクルの数を検出する機会を与えるよう構成し得る。前述の観測機能を与えることは、それがOIによってもたらされたかを確かめるために、何れかの不測の挙動が観測された場合に、システムをデバッグすることに助力し得る。
【0020】
一部の実施例では、OI実現形態は、ホストOS/VMMの状態によって影響を受けない実行環境を提供することである。よって、OIRMは一部の実施例では、以下の要件のうちの1つ又は複数を満たし得る。
【0021】
構成されたように最小保証持続時間の間、OI動作/命令が実行することを確実にすることにより、OIの枯渇を避けるか、又は減らす。
【0022】
システム内の何れかの1つのプロセッサ・コアにOI動作/命令を束縛することを避けるか、又は減らす。OS独立動作は、ホストOS/VMMからサイクルをとり得る。一部のオペレーティング・システム及びVMMは、スループット目標を達成するためにワークロード(例えば、スレッド、VM(仮想マシン)等)を束縛する。特定のプロセッサ・コアにOIを束縛することは、ホストOS/VMMにより、そのプロセッサ・コアに束縛された何れかのワークロードに対して不当にペナルティを課すことになる。
【0023】
システム性能に対する影響が最小のプロセッサ・コア上で実行する。システム性能は、ホストOS/VMMスループット、電力消費、及びC状態ウェイク・レーテンシの混合である。OIRMは、前述のベクトルのうちの何れかに沿ったシステム性能に悪影響を及ぼさないためにOIEEを実行するためのプロセッサ・コア選択についての最適な決定に至るようPCUからのヒューリスティックスに依存し得る。
【0024】
図2は、一実施例による、一状態から別の状態への遷移をもたらすトリガ及び4つの状態を示す状態遷移図である。更に、上記要件に基づいて、プロセッサ・コアの例証された状態遷移を表し得る。プロセッサ・コアは、一部の実施例によれば、以下のモードのうちの1つにおいて存在し得る。一実施例では、前述のモード間のプロセッサ・コアの遷移はOIRM124によって制御される。
【0025】
ホストOS/VMM ホストOS/VMMコンテナ120は、プロセッサ上で実行しており、アクティブである。
【0026】
OI プロセッサ・コアはOIコンテナ122のうちの1つを実行している。
【0027】
SMM(システム管理モード) プロセッサ・コアはSMMコンテナ123を実行している。SMM状態には何れの状態からも入ることができる。
【0028】
アイドル ホストOS/VMM、及びOIEEがC−x状態に入っている。OIRMは、ホストOS/VMMによって要求されるC状態にプロセッサ・コアを遷移させる。
【0029】
以下の表1は、原因及び図2に示す各遷移に関する更なる情報を提供する。
【0030】
【表1】
更に、OIRM124は、プロセッサ・スレッド全ての上で実行するマイクロコード・モジュールとして実現し得る。OIRMインスタンスのうちの1つは、何れかの特定の時点においてプロセッサ・コアのうちの1つの上で実行するためにOIEEをアクティブにスケジューリングし得る。プロセッサ・コア上で実行するためにOIEEをアクティブにスケジューリングするOIRMインスタンスは、「アクティブ」OIRMインスタンスと呼ぶことができ、その他のインスタンスは、本明細書及び特許請求の範囲では「スタンバイ」OIRMインスタンスと呼ぶことができる。一実施例では、システムにおけるOIRMのアクティブなインスタンスは1つだけ存在している。
【0031】
一般に、マルチプロセッサ対応のオペレーティング・システムは、ロックを使用して、特定の動作のアトミック性を強化する。前述のロックを使用したクリティカル・セクション・コードは、ロックを保持しているプロセッサ・コア上でOIコンテナを実行するための強制排除によって拡張し得る。よって、他のロック・コンテンダは、ホストOS/VMMの実行のためにプロセッサ・コアが戻されるまでスピンし得る。したがって、スピンロック獲得をかなり拡張し得る。プロセッサ・コア上のOIEEのスケジューリングは、スピンロック上の他のプロセッサ・コアの前述の望ましくないスピンにつながらないはずである。本明細書及び特許請求の範囲記載のアーキテクチャによって実現される以下の方法は、前述のロックアップを避ける(又は、前述のロックアップの可能性を少なくとも削減する)。
【0032】
(1)ドライバ支援スケジューリング OI動作/命令を実行するためにオペレーティング・システムからプロセッサ・コアを取り去ることには、前述の障害はない時間間隔を宣言する機会をオペレーティング・システムに許す。例えば、(例えば、ホストOS/VMM120において備えられる)ドライバはこの判定を支援し得る。これは、OIRMが、OI動作/命令をスケジューリングするための必要性を示すために(例えば、割り込みを使用して)ホストOS/VMMにおけるOIドライバに通知する動作の通常モードであり得る。ドライバは(例えば、スケジューリングされたことに応じて)OIRMに通知する。この通知は、そのプロセッサ・コア上でOIをスケジューリングするためにOIRMによる「歩留り」表示として使用することができる。OIRMは、OIがそのサイクル割り当てを消費するか、又は割り込み/IPI(プロセッサ間割り込み)がホストOS/VMMに配信される必要がある状態になるまでそのプロセッサ・コア上でOIが実行することを可能にする。この手法は、基本的に、OI実行時間がドライバ実行時間として説明されることにつながり、更に、この手法により、高優先度ロック同期化関連の問題が避けられる。
【0033】
(2)自律スケジューリング しかし、一部の状態では、上記手法(1)は、OIスケジューリングの場合、完全に依存可能な訳でない。それは、(a)ホストOS/VMMが非動作状態にあり得、(b)OIドライバがディセーブルされているか、又はインストールされていないことがあり得、かつ/又は(c)ホストOS/VMM上の現在のワークロードは、OIドライバがスケジューリングされることを妨げ得る。OIRMは枯渇からOIEEを保護する必要があり、特定の構成された最小実行時間を与えるので、OIRMは、ホストOS/VMMにおける前述の異常状態に対して保護するためにガード・タイマを使用し得る。ガード・タイマは、OIドライバに対する割り込みの形式での通知がホストOS/VMMに配信されると、起動し得る。OIドライバが、このガード時間内にOIに、構成された最小実行時間を割り当てるのに十分長くスケジューリングされなかった場合、OIRMは、OIEEに対して行われた最小実行時間保証を満たすために動作のプリエンプティブ・モードにシフトし得る。OIRMは、更に、ホスト OS/VMMが強制排除される持続時間が決定論的であり、閾値上限に制限されることを確実にし得る。
【0034】
一部の実施例によれば、以下のパラメータは、ホストOS/VMMとOIとの間の実行時間の時間共有を調節し得る。
【0035】
1. OI−Accounting−Interval OIEEとホストOS/VMMとの間の時間共有が実施されるアカウンティング・インターバル。例えば、OIEEが、プロセッサ・コア上のサイクルの3%を使用するよう構成され、OIアカウンティング・インターバルが100msに設定された場合、OIEEは、何れの特定の100ms間隔においても、3ms超の間、実行しない。OIドライバに対する割り込みは、各アカウンティング・インターバルの開始時に供給し得る。
【0036】
2. OI−Minimum−Share OI−Accounting−Intervalの割合としてOIに対して保証し得る最小プロセッサ実行時間。最小シェアは、何れの特定のアカウンティング・インターバルにおいてOIに利用可能になる。しかし、レーテンシの保証はなく、最小シェアは、1つ又は複数のランにおけるアカウンティング・インターバル全体にわたって分散させ得る。
【0037】
3. OI−Normal−Share OI−Accounting−IntervalのパーセンテージとしてのOIに割り当てられたプロセッサ時間の通常のシェア。通常のシェアはOIに対して保証されないことがあり得る。
【0038】
4. OI−Maximum−Share OI−Accounting−IntervalのパーセンテージとしてのOIによって使用され得るプロセッサ時間の最大シェア。これは、OIに利用可能なプロセッサ・シェアであり(例えば、OS独立OIRMによって示される修復モードに入る場合)、実現形態に応じてOI−Accounting−Intervalの最高100%になり得る。
【0039】
5. OI−Scheduling−Quantum ホストOS/VMMを実行しているプロセッサ・コアが、OIを実行するために強制排除される場合に、強制排除されない状態で実行し得る。
【0040】
実行時間の現在のシェア(例えば、OI−Normal−Share又はOI−Maximum−Share)は、OI−Current−Shareと呼ばれるパラメータを使用してOIRMによって追跡し得る。例えば、各アカウンティング・インターバルの開始時に、OIEEは、プロセッサ・コア上の実行時間のそのOI−Current−Shareに等しい時間クレジットを受け取る。上記クレジットは、OIEEがプロセッサ・コア上で実行した持続時間に等しい量で、OIEEの各スケジュールに対して消費される。クレジットが枯渇すると、OIEEは、クレジットが補充される次のアカウンティング・インターバルまで実行が妨げられる。
【0041】
ドライバ支援スケジューリング手法(上記項目(1))は、ホストOS/VMMにインストールされたOIドライバに依存し得る。OIドライバは、OIRMによるその初期化の一部としてOIRMに割り込みベクトルを登録し得る。OIドライバは、OIドライバからのイベントの通知を待つ無限ループに位置するOIワーカ・スレッドの生成ももたらし得る。OIRMは、OI−Accounting−Intervalの開始をOIドライバに通知するために、このベクトルに対応するISR(割り込みサービス・ルーチン)ハンドラを呼び出す旨の割り込みをホストOS/VMMに導入し得る。
【0042】
図3は、一実施例による、OIEE及びホストOS/VMMの実行に関連付けられた種々の動作のブロック図を示す。図3に示すように、動作1では、OIRM124は割り込みをホストOS/VMM120に導入する。これは、(例えば、OS/VMM区画120に記憶された)OIドライバ302によって登録されたISRを呼び出し得る。動作2では、OIドライバ302は(例えば、対応するISRを介して)OIワーカ・スレッド303に通知する。一実施例では、スレッド303は、何れの特定のプロセッサ・コアにも結合していない。オペレーティング・システムは、適切な場合、スレッド303をスケジュールし得る。動作3では、スレッド303はOIEE304をスケジューリングする旨をOIRM124に要求するための命令を呼び出す。動作4では、OIRM124はホストOS/VMMコンテナ120の現在の状態を保存し、OIEE304の保存された状態をロードする。動作5は、ホストOS/VMM120向けの割り込み/IPIの到着によってトリガされ得るか、又は、OIEE304のために構成された実行時間の現在のシェア(通常又は最大)の満了によってトリガされ得る。
【0043】
ホストOS/VMM及びOIワーカ・スレッド303の観点から、IO命令は基本的には、上記動作5が実行されると戻るブロッキング命令であり得る。動作5を実行する理由に応じて、OIRM124は、ワーカ・スレッド303に以下の戻り値のうちの1つを戻し得る:
BLOCK この戻された値は、OIに対する時間割り当てが消費されたので、動作5が実行されたことを示す。これにより、基本的には、スレッド303を戻らせ、スレッド303に、OIドライバからの次のイベント通知を待たせ得る。
【0044】
CONTINUE この戻り値は、動作5が実行された(例えば、外部割り込み/IPIがホストOS/VMMに到着することによってOIが強制排除された)旨を示す。このアカウンティング・インターバル内のOIに対する時間割り当ては未だ消費されていないことがあり得る。動作5を実行させた割り込みはOIを強制排除し得る。ホストOS/VMMは、ISR処理(及び、場合によっては他の保留中の高優先度タスクの実行)を完了すると、OIワーカ・スレッド303を再スケジューリングする。あるいは、ホストOS/VMMは、到着している割り込みを処理する間に、スレッド303を別のプロセッサ・コアに移動させ得る。再開すると、ワーカ・スレッド303は、戻り値を検査し得、戻り値がCONTINUEの場合、OI実行を再開するための動作3を実行する。
【0045】
図4は、実施例によるタイムチャートを示す。2つのアカウンティング・インターバルを図4に示す。(図4の左側から始まる)第1のアカウンティング・インターバルでは、OIは、402でOIドライバ・スレッド303がOI−READを呼び出すことによってスケジューリングされる。しかし、OIは、404におけるホストOS/VMMによって割り込まれる。OIは再度、後に、406で、アカウンティング・インターバル内でスケジューリングされ、408でその割り当てられた時間の実行を完了する。(410で始まる)第2のアカウンティング・インターバルでは、412でその割り当てられた時間の間の実行を完了するまでOIは割り込まれない状態で実行する。
【0046】
一部の場合には、OIワーカ・スレッド303の実行を阻止又はブロックすることにより、OIに対して、偶然に、又は不当に、完全なサービス妨害を行う可能性が存在し得る。ガード・タイマ及び関連付けられたホストOS/VMM強制排除(後述する)は、OIに対して行われる最小実行時間保証をOIRMが達成することを可能にする。
【0047】
特に、OIワーカ・スレッド303のスケジューリングを要求するための割り込みが導入されると、OIRMはガード・タイマを起動させる。このタイマの持続時間は、一実施例におけるアカウンティング・インターバルの50%に設定し得る。他の持続時間も設定し得る。OIが、その最小の構成された時間のシェアの消費を実行する機会を十分得た場合、ORIMはそのアカウンティング・インターバルのガード・タイマをオフにする。更なる実行の機会は、よって、保証されないことがあり得る。このガード・タイマが満了すると、OIが、その構成された最小時間シェアを実行する機会を有していなかった場合、OIに対して、その構成された最小の時間シェアを消費する機会を十分提供した状態になるまで、OIRMはプリエンプティブ・スケジューリング・モードに入る。OIを実行するためのプリエンプティブ・スケジューリングを行う場合、ホストOS/VMM割り込みはブロックされ得る。しかし、OIRMは、OI−Scheduling−Quantumになるよう、割り込まれない状態でOIが実行する最大持続時間を制御し得る。
【0048】
一実施例では、以下の動作は、ガード・タイマ満了時のOIRM処理を説明しており、ここで、OIRMは、周期性Pのタイマを起動させ、ここで、Pは、
P=(OI_Accounting_Interval/2)/(OI_Minimum_Share/OI_Scheduling_Quantum)
で定められる。
【0049】
各インターバルが満了すると、以下の動作が行われる:(a)ホストOS/VMMを強制排除し、ホストOS/VMMが強制排除されたプロセッサ・コア上の実行のためにOIをスケジューリングし、(b)OI−Scheduling−Quantum後にOIが満了する強制排除時間を構成し、(c)OI強制排除タイマが満了すると、ホストOS/VMMを再開する。
【0050】
図5及び図8は、一部の実施例によるタイムチャートを示す。特に、図5は、ガード・タイマ満了前に消費されたOI−Minimum−Shareを示す。ここで、2つのアカウンティング・インターバルを示す。第1のアカウンティング・インターバルでは、OIは、ガード時間の満了前にその最小シェアを既に消費している。しかし、ホストOS/VMMは、更に実行するための機会をOIに対して与えることは決してない。第2のインターバルでは、同様な状態が起こる。しかし、ホストOS/VMMは、OIが、OI−Minimum−Share超を実行することを可能にする。
【0051】
図6では、OIは、プリエンプティブ・スケジューリング・モードに入り、その最小の構成された時間シェアの間、実行する機会を有する状態になるまでOIにおけるOI−Scheduling−Quantumの長バーストを実行するようホストOS/VMMの強制排除を開始する。図7では、OIは、プリエンプティブ・スケジューリング・モードに入り、OIにおいてOI−Scheduling−Quantumの長バーストを実行するようホストOS/VMMの強制排除を開始する。しかし、前述の数カンタム後、OS内のドライバは、アクティブになり、OIのスケジューリングを要求する旨のOI−READを呼び出す、更に、OI−READは、構成された最小の時間の消費に十分長くOIが実行すること、及びOI停止を実行するためのホストOS/VMMの強制排除につながる。図8では、OIは、プリエンプティブ・スケジューリング・モードに入り、OIにおいてOI−Scheduling−Quantumの長バーストを実行するようホストOS/VMMの強制排除を開始する。しかし、前述の数カンタム後、OS内のドライバは、アクティブになり、OIのスケジューリングを要求する旨のOI−READを呼び出す(しかし、OIは、構成された最小時間を消費するのに十分長く実行される訳でない)。これは、構成された最小時間がOIにおいて実行されるまでプリエンプティブ・スケジューリングをOIRMに続けさせる。
【0052】
一実施例では、ホストOS/VMMにおけるOIドライバの有無の処理に関し、ドライバ支援スケジューリング機構は、オペレーティング・システムにインストールされている前述のドライバが存在している場合に起動し得る。しかし、OIスケジューリングは、存在しているドライバに依存しないことがあり得る。よって、ドライバがインストールされ、機能している場合、スケジューリングはOSフレンドリな態様で機能する。ドライバがインストールされていないか、若しくはアンロードされていないか、又は、オペレーティング・システム自体がインストールされていないか、又はオペレーティング・システムが作動状態にない場合、OIRMは、上述のガード時間がゼロであったかのように実行し得る。スケジューリングのプリエンプティブ・モードは、構成された最小の実行時間をOIEEが受け取った状態になるまで、用い得る。OIEE時間スライスにおけるホストOS/VMMの到着は、同様に、構成された最小時間の間、OIEEが実行すると、ホストOS/VMMを実行させるようOIEEを強制排除させ得る。
【0053】
一部の実施例では、OSの可視性を、OIモードにおいて消費されたサイクルに与え得る。前述の機能は、OIがイネーブルされたプラットフォーム上の何らかの異常な挙動を理解するためのデバッグ用ツールにも有用であり得る。OIモードにおいて消費されたサイクルへの可視性は、コア毎MSR(モデル特有レジスタ)の対、OI_CYCLE_LOW(サイクル・カウントの低位32ビットを含む)及びOI_CYCLE_HIGH(カウンタの高位32ビットを含む)(オペレーティング・システム及び/又は性能監視ツールによって読み出し得る)によって利用可能にされ得る。OIRMは、その初期化手続の一部としてコア毎に前述のカウンタを0にリセットし得る。OIの実行毎に、OI内部で費やされた時間(SMM又はホストOS/VMM内で費やされる時間は考慮に入れない)は前述のカウンタによって更新し得る。
【0054】
図9は、一実施例による、ホップする対象の次のコアを判定するためのフロー図を示す。例えば、スケジューリングのドライバ支援モードが設けられると、OIRMは、OIEEの実行のためにプロセッサ・コアを選択する旨をホストOS/VMMに要求し得る。OIドライバに対する割り込みが、OIスケジューリングを要求するよう発信されると、オペレーティング・システムは、プロセッサ・コア上でOIワーカ・スレッド303をスケジューリングすると、この選択を行い得る。ワーカ・スレッド303がスケジューリングされるプロセッサ・コアは、OIEEをスケジューリングするために使用し得る。ホストOS/VMMが応答しない(例えば、ガード・タイマが満了したか、又は、ホストOS/VMMがOIドライバをインストールさせなかった)モ―ドでは、OIRMはプロセッサ・コア選択を自律的に行い得る。
【0055】
一般に、プロセッサ・コア(又はハードウェア・スレッド)は、プロセッサ命令をアクティブに実行する場合、C0状態にあると言える。この状態では、システム構成部分(例えば、プロセッサ、バス、キャッシュ、メモリ等)は全て、電源オンにされ、使用されている。しかし、プロセッサ・コアは、命令を実行していない場合、次第に、システムの別々の部分の電源をオフにするか、又はシステムの別々の部分を低電力モードに入れ得るC1、C2、C3等の状態に移され得る。前述の電力節減状態は一般に、C−x状態として表す。
【0056】
一部の実施例によれば、OIRMは、システム内のプロセッサ・コア全てにわたってロードを分散させ得る。これは、特定のプロセッサ・コア上で実行しているソフトウェアにペナルティを課すこと(例えば、VMMにより、物理プロセッサ・コアに束縛された仮想マシン)を減らすか、又は避け得る。プロセッサ・コア・ホッピング規則は、OIRMの現在のアクティブなインスタンスによって行われ、プロセッサ・コア・ホッピング・アルゴリズムの結果に応じて、アクティブな役割をスタンバイ・インスタンスのうちの1つにハンドオフし得る。OIは、パッケージ内のプロセッサ・コアのうちの1つの上で何れの特定の時点においても実行し得る。OIRMは、OIを実行するために使用する対象のプロセッサ・コアについての決定を行い得る。ホストOS/VMMは、1つ又は複数のプロセッサ・コアをC−x状態に入れ得る。実行するプロセッサ・コアを判定するためにOIRMによって使用されるロジックは、プロセッサ・コアにC−x状態が常駐していること、及びプロセッサ・コアの現在のC−x状態を考慮に入れ得る。
【0057】
一実施例では、OIRMは、OIを実行するためにC−xプロセッサ・コアをウェイクするか、又はC0プロセッサ・コアからサイクルをとるかを決定し得る。ここでのトレードオフは、電力対性能である。OIを実行するためにC−xプロセッサ・コアをウェイクしても、(大半の場合)ホストOS/VMMの性能に影響を及ぼさないことがあり得る。アクティブな場合、プロセッサ・コアからサイクルはとられないからである。しかし、C−xプロセッサ・コアをウェイクすることにより、電力利用率が増加する。考慮に入れるべき別の要因は、電力/熱エンベロープにおける変動により、C−xプロセッサ・コアがウェイクされた場合に、C0プロセッサ・コアの性能を低下させ得るダイナミック・スロットリングである。OIRMは、この判定を支援するためにヒューリスティックスを求めてCPPM/PCUを照会し得る。第2の考慮点は、C−x状態からのウェイクのレーテンシについてホストOS/VMMに対して行われる「保証」である。各C状態は、C0状態にウェイクするためのレーテンシと関連付けられる。ホストOS/VMMにより、C−x状態に入れられたプロセッサ・コアが、OIを実行するために選択されると、そのプロセッサ・コアの状態はC0に移る。ここで、(プロセッサ・コアがOIを実行していた際に)ウェーキング・イベント(例えば、割り込み)がホストOS/VMMに対して生じた場合、OIRMは、ホストOS/VMMに制御を戻すようOIを強制排除し得る。OIからホストOS/VMMへの切り換えの実行において生じるレーテンシは、ホストOS/VMMが要求したC状態からの保証されたウェイク・レーテンシを超えないことがあり得る。一部の実施例では、以下の規則は、前述の場合においてプロセッサ・コア選択を行うためにOIRMによって使用される。
【0058】
図9を参照すれば、C状態(ここで指しているC状態は、ホストOS/VMMによって認識され、要求された通りのC状態である)において、規則を適用し得る(902)。サイクルをこっそり取ることにより、ホストOS/VMMの性能に影響を及ぼすことを避けるために、OIRMは、アイドル状態(例えば、ホストOS/VMMの観点からの、C−x状態)にあり、ホストOS/VMMによって使用されていないプロセッサ・コア上でOIEEを実行し得る。OIEEを実行するためにC−xプロセッサ・コアをウェイクすることはしかし、電力/熱ベースの自律的なスロットリングをトリガさせるという悪い副作用を及ぼし、C0プロセッサ・コア上のホストOS/VMM性能が悪影響を受けることにつながり得る。(例えば、902における)OIRMは、OIを実行するようC0プロセッサ・コアを強制排除することと、C−xプロセッサ・コアを使用することとに関係するトレードオフを求めるようPCU904からのヒューリスティクスを利用し得る。同様に、プラットフォーム上の電力の影響は、C0状態にあるプロセッサ・コアを使用する場合よりも、スリーピング・プロセッサ・コアをウェイクする場合のほうが大きい。しかし、OIを実行するためにプロセッサ・コアをウェイクすることによる電力消費のわずかな増加は、プラットフォームが、バッテリ電源906で動作している場合に対して、AC電力で動作している場合に許容可能であり得る。
【0059】
図9に示すように、C状態の規則902の適用は、(C−xプロセッサ・コア及びC0プロセッサ・コアを含み得る)フィルタリングされたコア・リスト910を生成するために、現在のコアのリスト908、PCUヒューリスティクス904、及び/又はプラットフォーム電源906を考慮に入れ得る。動作912では、コアがC−x状態にないと判定された場合、OIRMは、ロードを分散させるためにC0プロセッサ・コア914のうちでコア・ホッピング規則920(例えば、ラウンド・ロビン選択)を行い得る。C−xプロセッサ・コアが存在している場合、OIRMは、リスト916からC−xプロセッサ・コアを選択し、(918において最低C状態におけるコアを選択するなどの)更なるホッピングを行わないことがあり得る。一実施例では、OIRMは、選択されたプロセッサ・コアが、なお、実行するのに最良のプロセッサ・コアであることを確実にするためにC状態の規則902を実行することにより、条件を周期的に再評価し得る。
【0060】
よって、図9に示す実施例によるプロセッサ・コア選択は、以下の動作を含み得る。まず、OIが実行し得るプロセッサ・コア・リスト908を使用し、C状態の規則902を適用して、フィルタリングされたプロセッサ・コア・リスト910を生成する、C状態の規則に対する入力としてプラットフォーム電源906及びPCUヒューリスティクス904を使用する。フィルタリングされたプロセッサ・コア・リスト910にC−x状態におけるプロセッサ・コアが存在している場合、最低C−x状態918におけるプロセッサ・コアを、ホップする先の、次のプロセッサ・コアとして選ぶ。C−x状態におけるプロセッサ・コアが存在しない場合、C−0プロセッサ・コア914のリストのうちから(例えば、ラウンド・ロビン・ホップを行うために)プロセッサ・コア・ホッピング規則920を呼び出す。このことは、一部の実施例には、前述のプロセッサ・コア上でOIRMのアクティブ/スタンバイの役割を切り換えることが関係し得る。
【0061】
図10は、一実施例による、OI区画に導入し、OIに割り当てられたデバイスから生じる割り込みを処理するために使用される種々の構成部分のブロック図を示す。図示したように、ハードウェア装置は、LAPIC(局所高度プログラマブル割り込みコントローラ)1006及び1008を、それぞれが有する複数のプロセッサ・コア1002及び1004を含み得る。LAPICはそれぞれ、(外部割り込み1012を受け取る)割り込み再マッピング装置1010と通信し合う。
【0062】
割り込み再マッピング装置1010は、(a)第2の割り込み再マップ・テーブル(IRT)1020をOI IRTエントリ(IRTE)で登録すること、(b)OIデバイス・フィルタ1022(例えば、PCIリクエスタID毎の1ビット(8KB)を有する)を登録すること、及び/又は、(c)後述する(例えば、図11に灰色の箱で示す。図11は、一実施例による、OI関連の割り込みの処理に関連付けられた動作のフロー図を示す)割り込み再マップ・ロジックに対する修正に対するサポートを含み得る。例えば、割り込み1102を受け取った後、ポスティングされた割り込みが、割り込みTLB(変換ルックアサイド・バッファ)1104になかった場合、割り込みがポスティングされているかを判定し得(1106)、肯定の場合、ルックアップ1108を、PCIリクエスタIDを使用してデバイス・フィルタ1022において行い得る。否定の場合、割り込みが処理される(1109)。対応するビットがデバイス・フィルタ1022にセットされた場合、OI IRT1110を、対応するラベルを探すために使用し得、さもなければ、OS/VMM
IRTをルックアップ1112に使用し得る。動作1110及び1112の後、割り込み記述子に対するベクトルを1114でポスティングし得る。
【0063】
更に、一実施例では、割り込み記述子は、割り込みをどこにポスティングするかを割り込み再マップ装置が判定することを助力する2つの項目(すなわち、割り込むためのAPIC ID, 及び通知割り込みとして使用するためのベクトル)を有し得る。更に、一部の実施例では、OIに対する要件の1つは、OIに対する割り込みの配信が、主OSからの何れの動作によっても影響を受けないということである。このことは、割り込み記述子内のベクトルを、コアに対する配信のために上記記述子にプログラムされた局所APICに配信するポスティングされた割り込み方法が、割り込み再マップ装置が、新たなマイクロコード・イベント通知を使用してOIRMにCPUマイクロコードを通知するように修正される。特に、割り込み再マップ装置からマイクロコード・イベント通知を受け取ると、OI区画は、何れのプロセッサ・コア上でもその時点で実行していないことがあり得るので、OIRMは、ポスティングされた割り込みをOI区画に直ちに導入する訳でないことがあり得る。よって、OIRMは、後述するメモリ構造(例えば、OIPIC(OIプログラマブル割り込みコントローラ)に、受け取られた割り込みをキューイングし、OI IDT(割り込み記述子テーブル)を使用した標準x86割り込み配信機構を使用してスケジューリングされる都度、OI区画に割り込みを導入する。
【0064】
図12は、一実施例による、OIPICモジュールと通信し合う種々の構成部分を示す。図示した通り、OIPICモジュール1202は、考えられる2つのソース(すなわち、(1)(例えば、割り込み再マッピング装置によって通知され、OI割り込みバッファにポスティングされる)OIEE1204に割り当てられたデバイスからの割り込み、又は(2)電力管理イベント、OI間通信通知、OIEEタイマに対するOIRM導入割り込み等(併せて1206として表す))からOIEEへの配信のためにベクトルを受け取る。
【0065】
OIPICモジュール1202は、OIEEに配信するためのベクトルをキューイングするために3つのレジスタをモデリングし得る。(1)OI IRR(割り込み要求レジスタ)1208(例えば、内部ソース又は外部ソースから到着するベクトルは全て、この256ビット・レジスタに入る) (2)OI ISR(OIインサービス・レジスタ)1208(例えば、OI IRRからの最高優先度ベクトルは、OI ISRに既にあるベクトルよりも優先度が高い場合、OI ISRに入れられる。これは、OIEEによって現在処理されている割り込みベクトルを追跡する256ビット・レジスタであり得る。OI ISRに既にある現在の割り込みベクトルはそのままである。例えば、最高優先度割り込みが低優先度割り込みに割り込みをかけたことを示す)及び/又は(3)OI EOI(割り込みの終了)1212(例えば、ここで、OIEE ISRは、OI ISRにおいて現在マーキングされている最高優先度ベクトルの処理の完了を通知する)。
【0066】
一部の実施例では、プロセッサ・コア上で実行するためにOI区画が(例えば、スケジューラ1214によって)スケジューリングされると、動作(すなわち、(1)OI IRRにおいて保留中のベクトルが存在していない場合、動作は必要でなく、(2)OI IRRから最高優先度ベクトルを取得し、OI ISRにおける最高ベクトルと比較し(OI IRRベクトルがOI ISRベクトルよりも低い場合、動作は必要でなく)、(3)OIEEが割り込み可能な場合、OI ISRにおいてOI IRRから受け取られた最高ベクトルに対応するビットをセットし(一実施例においては、OI IRRからそのベクトルをクリアし)、かつ/又は、(4)OIEEに導入する対象のベクトルとしてOI ISRにおいて保留中の最高ベクトルを戻す)がOIPICモジュール1202によって行われる。割り込みに応じて、OIEEにおける割り込みコントローラ・ドライバはOIEOIレジスタ1212に対する書き込みを使用して完了を通知する。OIEEからOIEOIを受け取ると、OIPIC1202は、OI ISR1210において保留中の最高優先度ベクトルに対応するビットをクリアする。次いで、次の再開時にOIEEに導入することが可能な何れかの他のベクトルが存在しているかを判定する。
【0067】
図10乃至12を参照して説明したように、ホストOS/VMMによって使用し得る割り込みベクトルに対する制約を加えないホストOS/VMMに対する非侵入的な手法が提供される。同様に、前述の実施例は、ホストOS/VMMからLAPIC/IOAPICへの何れのアクセスも遮断せず、前述のデバイスの何れも仮想化しようとしない。このことにより、別々の区画に割り込みを誘導し、前述の機能を有しない他の実現形態と比較すると、前述の機能を更に相当好適かつスケーラブルにするという機構が可能になる。
【0068】
一部の実施例では、ホストOS/VMM区画とOI区画との間のメモリの分離をもたらすために、OIRMは、OIメモリ区画に対する、ホストOS/VMMによって発生したアクセスをブロックするか否かを判定するためにハードウェア・レンジ・レジスタの1つ又は複数のビットを利用し得る。同様に、ホストOS/VMMメモリ区画に対するOI区画からのアクセスを制御するために、OIRMは、OI区画下の拡張ページ・テーブル(EPT)などのページ・テーブルを作成し得る。例えば、上記OI区画は、起動前認証、メディア・トランスコーディング、電子商取引等のような、セキュリティに気を配る必要がある特定の作業を行うために使用し得る。前述の動作が行われると、OI区画は、鍵及びパスワードのような秘密を有し得る。同様に、ホストOS/VMMプロセッサ・ベースのアクセスを使用して、又は、DMAバスマスタ・デバイスを使用して前述の秘密を盗むための、OIメモリに対するソフトウェア・ベースの攻撃は、レンジ・レジスタ及びDMAデバイス・フィルタを使用してブロックされる。
【0069】
一部の実施例では、2つのタイプの保護(すなわち、(1)保存データに対する保護、又は(2)使用中のデータに対する保護)を提供し得る。揮発性メモリ内又は不揮発性メモリ内にある場合の保存データの保護は、攻撃者に対して価値がないように上記データを暗号化することを必要とする。このために、OIは、処理する必要がある場合にデータを復号し、同時に、処理している際に盗むことができないようにデータを保護するためのやり方を必要とする。
【0070】
保存データを保護することは、CBC(暗号ブロック連鎖)、CTR(カウンタ・モード)等などの、何れかのモードにおける暗号を使用する高度暗号化標準(AES)(256ビット又は他のバージョン)のような暗号化アルゴリズムを使用してデータを暗号化し得るということを示唆している。暗号化するための鍵も保護する必要がある。一実施例では、その秘密を保護する必要がある各アプリケーションは、その秘密の暗号化のためのそれ自身の鍵を有する。OIRMは、コア又は非コアにおけるプロセッサ・ヒューズを使用してこの鍵を保護するためのblobサービスを提供し得る。blob鍵動作の場合、ユーザは、そのデータを保護するために使用したい鍵を生成し、それに対してblobを行うようOIRMに要求する。更に、以下に更に説明するように、一部の実施例は、処理における、ユーザによって生成された鍵の保護に助力し得る。
【0071】
一実施例によれば、以下の擬似コードは、鍵blobを生成するためにユーザによって使用し得る。
【0072】
1. application_key_generation_function()
2. {
3. char*key_buffer=malloc(4096)
4. generate_key(key_buffer)
5. blob_key(key buffer)
6. }
上記擬似コードの行4では、アプリケーションはkey_buffer内に鍵を生成し、行5では、アプリケーションは、鍵blobを生成するために(例えば、OIRMによって提供される)blobサービスを呼び出す。OIRMblobサービスは、このblobサービスに使用されるプロセッサ鍵113を使用して鍵バッファ内の鍵を暗号化し得る。よって、アプリケーションは、その秘密を保護するために使用し得るプラットフォームに結合されたセキュアな鍵を有する。アプリケーションは、上記行4において生成した元の鍵を保持しなくてよい。鍵blobが、データに対して処理するために今後必要な全てである。
【0073】
一部の実施例では、実行時にデータを保護するために、データは、システム・メモリ内で決して平文でないことがあり得る。これは、OI秘密を一時的に記憶するためにオンパッケージ・メモリ111の一ページの使用によって達成し得る。一実施例では、オンパッケージ・メモリ111は、このメモリの内容が、バス・アナライザ及び「フリーズ・キャン」攻撃を使用してアクセス可能でないことを可能にする。すなわち、メモリ111に記憶された、暗号化されていない情報は、プロセッサ102−1の外では利用可能でないことがあり得る。一実施例では、OIRMは、セキュアなメモリ・アクセスを可能にするための命令(すなわち、(1)Load_Key_Page メモリ・バッファからのデータをセキュアなメモリに移し、アプリケーションによる使用のために復号する。(2)Store Key Page セキュアなメモリからのデータをメモリ・バッファに移し、セキュアなメモリをクリアする。)をユーザに提供する。
【0074】
一実施例では、鍵ページ・ロード動作は2つの入力(すなわち、(a)鍵ページの暗号化のために使用されるblobが行われた鍵、及び(b)(鍵ページとして表される)暗号化データを保持するバッファの物理アドレス)を用いる。Load_Key_Page動作が呼び出されると、OIRMは、(1)物理アドレスによって指し示されたページの内容をオンパッケージ・メモリ111に複製し、(2)プロセッサ・ヒューズ鍵を使用して鍵blobを復号し、(3)オンパッケージ・メモリ111内のデータを、復号された鍵を使用して復号し、(4)オンパッケージ・メモリ111に対する前述の動作に転送される物理アドレスに対するアクセスを再指示するようOIのEPTを更新し、かつ/又は、(5)アプリケーションは次いで、秘密にアクセスするために標準ソフトウェア構成を使用し得るという動作を行う。
【0075】
図13及び図14は、一部の実施例による、ロード鍵の利用に関連付けられた動作のブロック図を示す。図13では、ロード鍵は、(例えば、暗号化された)物理メモリをセキュアなメモリに変え、出願人の鍵を使用してデータを復号する。図14では、OI EPTは、物理メモリをセキュアなメモリに転換するよう再マッピングし得る。
【0076】
一部の実施例では、単一の鍵ページのみを何れかの時点でロードし得る。先行してロードされたページに対してStore_Key_Pageを行うことなくLoad_Key_Pageを行おうとすると、障害が発生し得る。OIEEカーネルからの鍵ページ管理は、アプリケーションに対してロード/記憶サービスを提供するOIカーネル・モジュールに依存し得る。カーネル・モジュールは、処理/タスク・スイッチが通知されるようOIカーネル・スケジューラに関わり、Load/Store Key Pageを使用して、OIにおいて実行しているアプリケーションに基づいて鍵・ページを変え得る。
【0077】
一実施例では、鍵ページ記憶動作は2つの入力(すなわち、(a)鍵ページの暗号化のために使用される、blobが行われた鍵、及び(b)(鍵ページとして表される)暗号化データを記憶するためのバッファの物理アドレス)を用いる。OIRMは、(1)プロセッサ・ヒューズ鍵を使用して鍵blobを復号し、(2)復号されたblob鍵を使用してオンパッケージ・メモリ111の内容を暗号化し、かつ/又は(3)オンパッケージ・メモリ111の内容を、アプリケーションによって転送されたメモリ・ページに複製するという動作を行う。
【0078】
図15及び図16は、一部の実施例による、記憶鍵の利用に関連付けられた動作のブロック図を示す。図15では、記憶鍵は、セキュアなメモリ(例えば、平文)を物理メモリに変え、出願人の鍵を使用することにより、データを暗号化する。図16では、OI EPTは、物理メモリの転換を元に戻すよう再マッピングし得る。
【0079】
一実施例では、以下の擬似コードは、上述のLoad_Key_Page及びStore_Key_Pageに使用し得る。
【0080】
Do_secret_work_example_function(uint64_t key blob PA, uint64_t secret_page_PA)
{
Char *secret_page_la=map_secret_page(secret_page_PA);
Load_Key_Page(key_blob_PA,secret_page_PA);
Do_secret_work(secret_page_la);
Store_Key_Page(key_blob_PA,secret_page_PA);
}
上記コードでは、「la」が線形を表し、「PA」は物理アドレスを表す。よって、一実施例は、(例えば、ソフトウェア・ベースの攻撃又はコールド・ブートのようなハードウェアベースの攻撃からOIメモリ内の秘密を保護することにより、)OIにおける、セキュリティ感応性データを処理するためのタンパリング耐性メモリを提供する。これは、この機能なしの実現形態と比較して、上記機能をかなり好適に、かつ/又はスケーラブルにする。
【0081】
一部の実施例では、ホストOS/VMMとOIEEとの間のメモリの分離をもたらすために、OIRMは、OIメモリに対する、ホストOS/VMMによって発生したアクセスをブロックするハードウェア・レンジ・レジスタを利用する。同様に、OI区画からホストOS/VMMメモリへのアクセスを制御するために、OIRMは、OI区画下の拡張ページ・テーブル(EPT)などのページ・テ―ブルを作成する。
【0082】
システムが停止する(S3)と、システム・メモリは自己リフレッシュ状態に入る。しかし、CPUが電源オフにされ、よって、メモリ上でアクティブな保護は存在していない。よって、システムがS3状態に入っている場合、敵対者はメモリの内容を修正することができ得、メモリが、再開時に検証されない場合(S0)、これは、OIに対するコード導入攻撃につながり得る。前述のコード導入攻撃を避けるための一手法は、S3に入る前にメモリをハッシングし、S3からS0に再開する際に内容を検証する。しかし、この手法は一部の場合には2つの欠点を有し得る。(1)メモリの内容をハッシングするために行うべき更なる作業が理由で、S0からS3への遷移に必要な時間の量を増やし、(2)上記内容を検証するためにメモリをハッシングするために行うべき更なる作業が理由でS3からS0への遷移に必要な時間の量を増やす。
【0083】
上述の通り、S3へのシステムの遷移は、CPUの電源がオフになり、メモリが自己リフレッシュ・モードに入ることをもたらす。この時点では、レンジ・レジスタと同様にアクティブなメモリ上の保護は存在せず、デバイス・フィルタは動作状態にない。S3上で保持されるメモリ・イメージは、システムがS0状態に戻ると実行される。しかし、このメモリのインテグリティはこの場合、疑わしく、自己リフレッシュ・イメージに、不当なコードが導入されているか、あるいは、メモリが、不注意に、特定の形式で損なわれているか、あるいはタンパリングされていることがあり得る。この目的で、一実施例は、S3の再開時にメモリのインテグリティを検証する。OIRM124は例えば、実行することを可能にする前に、自己リフレッシュにおけるメモリ・イメージのインテグリティを測定し得る。上述の通り、このインテグリティ検証の一手法は、S0からS3への遷移の際のOIメモリの測定を記録し、S3からS0への遷移の際のイメージを検証することである。S3の再開に続く前にインテグリティ検証を行うのに大量の時間をOIRMが費やす必要があるので、この手法は再開のレーテンシを増加させ得る。(2LM(二レベルのメモリ)を有するシステム上でより顕著になる)前述の手法の不意の副作用は、測定するためにNV(不揮発性)メモリからDRAMページ・キャッシュにメモリ・ページをフェッチするオーバヘッドである。S3再開パスは、「即時ON」モードのような使用の場合の遅延を最小にするために最適化しなければならず、S3からの再開は、システムをS3に戻す前に同期化活動を行うための短い期間の間に行い得る。
【0084】
一実施例では、再開時間を最小にするために、インテグリティ検査値(ICV)は、ページ単位でOIEEイメージについて計算し得るので、S3からの再開の際には、ICVを検証するための時間は最小にされ得る。この場合、検証はOIEEコードとしてページ単位で行い得、S3の再開後にデータにアクセスされるからである。図17を参照すれば、一実施例による、S0とS3との間のセキュアな遷移に関連付けられた動作のブロック図を示す。OIEEページ1702のページ単位のインテグリティ検査値は、(例えば、OIRM124により、)ICVアレイ1704に記録し得る。ICVアレイの各要素はOIメモリ内の一ページに対応し、(1)インテグリティ検査値(ICV) 構成されたようなSHASHA256、SHA512等のような一方向の暗号ハッシュ・アルゴリズムを使用して生成されたページの一方向暗号ハッシュ、(2)ICV有効(図17に「V」として示す)、正/誤、及び/又は(3)(図17に「D」として示す)DMA(直接メモリ・アクセス)ページ、正/誤。OIRMは、ICVアレイのインテグリティを検証するためにICVアレイに関する(例えば、メモリ114にも)SHAハッシュを保持し得る、という情報を有する。S0からS3状態への遷移を行うと、OIRMは、S3からの再開の際に検証し得るようにICVアレイのハッシュに署名し得る。
【0085】
一部の実施例では、OIRMは、OIページ1702を(例えば、周期的に)ハッシングするためにバックグラウンド・タスク1706を使用し得る。OIに対する各遷移の前に、メモリ内のページの固定の組をハッシングするためにバックグラウンド・タスク1706を呼び出し得る。例えば、OIイメージのサイズが64MBである場合、インテグリティ保護するためのページが16384存在している。バックグラウンド・タスクは、ラウンド・ロビンで16Kページを実行し、各ランにおいて16ページのハッシュを行い得る。よって、バックグラウンド・タスクは、OIEEに割り当てられる16Kページ全てのハッシュを行うために1K回、呼び出す必要がある。一実施例では、ページをハッシングするために要する時間は、OIに帰され、実行クレジットから減算される。
【0086】
ページのハッシュが記されると、OIRMは、再ハッシュを必要としている修正を検知するために前述のページに対する書き込みを追跡し得る。OIRMは、OI EPTを使用して書き込み追跡を行い得る。ページがハッシングされ、ハッシュがICVアレイ1704において記されると、これは、EPTにおいてリードオンリとしてマーキングされ、ICVは、ICVアレイにおいて有効であるとしてマーキングされる。OIEEからのページへの書き込みは、OIRMがページICVを無効であるとしてマーキングし、もう一度書き込み可能であるとしてページを作ることにつながるEPTフォールトをもたらし得る。ページはこの場合、バックグラウンド・ハッシング・タスクがこのページまでもう一度至ると再ハッシングし得、ハッシュが記された後、リードオンリとして再マーキングされる。更に、DMA動作を使用したページに対する書き込みは、EPT障害を使用して追跡されないことがあり得る。DMAページに対する書き込みを追跡するために、OIRMは、DMAに対するページをデバイスに送出する前にOIRMに通知するためにOIEEカーネルに依存し得る。OIRMは、前述のページをDMAページとしてICVアレイに記し、そのバックグラウンド・タスクの一部として前述のページに対するICV検査を何ら行わないことがあり得る。
【0087】
S0からS3への遷移の場合、上記遷移がS3遷移の場合に、OIRMはICVページ・アレイを走査し得、無効のICVを記録させたページ、及びDMAページのICV値を記す。DMAページとしてマーキングされたページの場合、そのハッシュの記録に加えて、OIRMは、DMAページとしてのそのステータスをクリアし得る。OIRMは次いで、ICVアレイ自体にわたってハッシュを行う。ICVアレイのハッシュは、パッケージ内のプロセッサ鍵113から導き出されたOIRM ICV署名鍵を使用して署名し得る。ICVアレイの署名されたハッシュは、そのタンパリングをOIRMによって検出することが可能であるので、システム・メモリに残し得る。
【0088】
S3再開の場合、BIOS(基本IOシステム)は、OIイメージを再開するようOIRMに通知し得る。OIRMは、OIのコンテナを作成し、次いで、OIメモリ内に有効なICVアレイが存在しているかを判定する。一実施例では、ICVアレイの有効性は、ICVアレイのハッシュ上の署名を検証し、S0乃至S3の遷移上に記憶された値に対してICVアレイのハッシュを検査することによって判定される。
【0089】
ICVアレイのインテグリティが損なわれていなかった場合、OIRMはOI初期化を通常のリセット・パスとして続け得る(例えば、メモリ内のイメージが廃棄され、フレッシュ・ロード・コードのロードが行われる)。ICVアレイのインテグリティが損なわれていなかった場合、OIRMは、OI EPTに存在していないとしてOIEEのページを全てマーキングし、制御をOIEEに移し得る。OIEEが実行を始めるにつれ、コード及びデータ・ページのアクセスは、OIRMに誘導されたEPT障害を発生させる。ICVアレイ内のページに対して有効なICVが存在している場合、OIRMは、障害ページ上のICVを計算し、ページのインテグリティを検証するためにICVアレイにおけるICVに対してこれをマッチングさせる。このページは次いで、(例えば、ページに対する変更を追跡するために)リードオンリ・ページとしてOI EPTにマッピングし得る。よって、プロセッサによって生成されたEPT、及びIORMを使用した増分ハッシングは、例えば、ハイパバイザにおいて現在行われていることと比較して、主要な相違点である。更に、一実施例は、自己リフレッシュを出ると、OIメモリのインテグリティを効率的に検証する非常に重要な機構を加える。これは、この機能なしの実現形態と比較して、上記機能をかなり好適に、かつ/又はスケーラブルにする。
【0090】
図18は、本発明の実施例による計算システム1800のブロック図を示す。計算システム1800は、相互接続ネットワーク(又はバス)1804を介して通信する1つ若しくは複数の中央処理装置(CPU)1802又はプロセッサを含み得る。プロセッサ1802は、汎用プロセッサ、(コンピュータ・ネットワーク1803を介して通信されるデータを処理する)ネットワーク・プロセッサ、(縮小命令セット・コンピュータ(RISC)プロセッサ又は高度命令セット・コンピュータ(CISC)プロセッサを含む)他のタイプのプロセッサを含み得る。更に、プロセッサ1802は、単一又は複数のコア・デザインを有し得る。複数のコア・デザインを有するプロセッサ1802は、同じ集積回路(IC)ダイ上に各種プロセッサ・コアを一体化し得る。更に、複数のコア・デザインを有するプロセッサ1802は、対称又は非対称のマルチプロセッサとして実現し得る。一実施例では、プロセッサ1802のうちの1つ又は複数は、図1のプロセッサ102と同一又は同様であり得る。例えば、プロセッサ1802のうちの1つ又は複数は、例えばOIRM124を含む、図1乃至17を参照して記載したキャッシュ、記憶デバイス、及び/又はロジックのうちの1つ又は複数を含み得る。更に、図1乃至図17を参照して説明した動作は、システム1800の1つ又は複数の構成部分によって行い得る。
【0091】
チップセット1806は、相互接続ネットワーク1804とも通信し得る。チップセット1806はメモリ制御ハブ(MCH)1808を含み得る。MCH1808は、(図1のメモリ114と同一又は同様であり得る)メモリ1812と通信するメモリ・コントローラ1810を含み得る。メモリ1812は、計算システム1800に含まれるCPU1802又は何れかの他のデバイスによって実行し得る命令のシーケンスを含むデータを記憶し得る。本発明の一実施例では、メモリ1812は、ランダム・アクセス・メモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、又は他のタイプの記憶デバイスなどの1つ又は複数の揮発性記憶(又はメモリ)デバイスを含み得る。ハード・ディスクなどの不揮発性メモリも利用し得る。複数のCPU及び/又は複数のシステム・メモリなどの更なるデバイスは、相互接続ネットワーク1804を介して通信し得る。
【0092】
MCH1808は、ディスプレイ・デバイス1816と通信するグラフィクス・インタフェース1814も含み得る。本発明の一実施例では、グラフィクス・インタフェース1814は、アクセラレーテッド・グラフィクス・ポート(AGP)を介してディスプレイ・デバイス1816と通信し得る。本発明の一実施例では、(フラット・パネル・ディスプレイなどの)ディスプレイ1816は、例えば、ディスプレイ1816によって解釈され、表示されるディスプレイ信号にビデオ・メモリ又はシステム・メモリなどの記憶デバイスに記憶されたイメージのディジタル表現を変換する信号変換器を介してグラフィクス・インタフェース1814と通信し得る。ディスプレイ・デバイスによって生成されるディスプレイ信号は、ディスプレイ1816によって解釈され、その後、ディスプレイ1816上に表示される前に種々の制御デバイスを通り得る。
【0093】
ハブ・インタフェース1818は、MCH1808及び入出力制御ハブ(ICH)1820が通信することを可能にし得る。ICH1820は、計算システム1800と通信するI/Oデバイスに対するインタフェースを提供し得る。ICH1820は、周辺装置相互接続(PCI)ブリッジ、ユニバーサル・シリアル・バス(USB)コントローラや他のタイプの周辺装置ブリッジ又はコントローラなどの周辺装置ブリッジ(又はコントローラ)1824を介してバス1822と通信し得る。ブリッジ1824は、CPU1802と周辺装置との間のデータ・パスを提供し得る。他のタイプのトポロジも利用し得る。更に、複数のバスは、例えば、複数のブリッジ又はコントローラを介して、ICH1820と通信し得る。更に、ICH1820と通信し合う他の周辺装置は、本発明の種々の実施例において、集積ドライブ・エレクトロニクス(IDE)又は小型コンピュータ・システム・インタフェース(SCSI)ハード・ドライブ、USBポート、キーボード、マウス、パラレル・ポート、シリアル・ポ―ト、フロッピー(登録商標)ディスク・ドライブ、ディジタル出力サポート(例えば、ディジタル・ビデオ・インタフェース(DVI))、又は他のデバイスを含み得る。
【0094】
バス1822は、オーディオ・デバイス1826、1つ又は複数のディスク・ドライブ1828、及び(コンピュータ・ネットワーク1803と通信し合う)ネットワーク・インタフェース・デバイス1830と通信し得る。他のデバイスは、バス1822を介して通信し得る。更に(ネットワーク・インタフェース・デバイス1830などの)種々の構成部分が、本発明の一部の実施例においてMCH1808と通信し得る。更に、(限定列挙でないが、MCH1808、MCH1808の1つ又は複数の構成部分等を含む)図18に示すプロセッサ1802及び他の構成部分は、単一のチップを形成するよう組み合わせることができる。更に、グラフィクス・アクセラレータは、本発明の他の実施例においてMCH1808内に含まれ得る。
【0095】
更に、計算システム1800は、揮発性及び/又は不揮発性のメモリ(又は記憶装置)を含み得る。例えば、不揮発性メモリは、リードオンリ・メモリ(ROM)、プログラマブルROM(PROM)、消去可能なPROM(EPROM)、電気的に消去可能なPROM(EEPROM)、ディスク・ドライブ(例えば、1828)、フロッピー(登録商標)・ディスク、コンパクト・ディスクROM(CD−ROM)、ディジタル多用途ディスク(DVD)、フラッシュ・メモリ、光磁気ディスク、又は、電子データ(例えば、命令を含む)を記憶することができる不揮発性のマシン読み出し可能な他のタイプの媒体のうちの1つ又は複数を含み得る。
【0096】
図19は、本発明の実施例による、ポイントツーポイント(PtP)構成に配置された計算システム1900を示す。特に、図19は、いくつかのポイントツーポイント・インタフェースによってプロセッサ、メモリ及び入出力デバイスが相互接続されたシステムを示す。図1乃至18を参照して説明した動作は、システム1900の1つ又は複数の構成部分によって行い得る。
【0097】
図19に示すように、システム1900はいくつかのプロセッサ(明瞭にするために、このうちの2つ、すなわち、プロセッサ1902及び1904のみを示す)を含み得る。プロセッサ1902及び1904はそれぞれ、メモリ1910及び1912との通信を可能にするための局所メモリ・コントローラ・ハブ(MCH)1906及び1908を含み得る。メモリ1910及び/又は1912は、図18のメモリ1812を参照して説明したものなどの種々のデータを記憶し得る。
【0098】
一実施例では、プロセッサ1902及び1904は、(例えば、図1乃至図18を参照して説明したキャッシュのうちの1つ又は複数を含む、)図18を参照して説明したプロセッサ1802のうちの1つであり得る。プロセッサ1902及び1904は、PtPインタフェース回路1916及び1918それぞれを使用してポイントツーポイント(PtP)インタフェース1914を介してデータを交換し得る。更に、プロセッサ1902及び1904はそれぞれ、ポイントツーポイント・インタフェース回路1926、1928、1930及び1932を使用して個々のPtPインタフェース1922及び1924を介してチップセット1920とデータを交換し得る。チップセット1920は、例えば、PtPインタフェース回路1937を使用して、グラフィクス・インタフェース1936を介してグラフィクス回路1934とデータを交換し得る。
【0099】
本発明の少なくとも1つの実施例は、プロセッサ1902及び1904内に提供し得る。例えば、図1のコア106のうちの1つ又は複数は、プロセッサ1902及び1904内に配置され得る。更に、プロセッサ1902及び1904は、図1乃至図18を参照して説明したキャッシュ、記憶デバイス、及び/又はロジックの1つ又は複数を含み得る。例えば、OIRM124は、プロセッサ1902/1904内に提供し得る。しかし、OIRMは、図1乃至図18を参照して説明したような、(例えば、チップセット1920におけるプロセッサ1902/1904とMCH1906/1908との間の)他の場所で提供し得る。しかし、本発明の他の実施例は、図19のシステム1900内の他の回路、ロジック装置、又はデバイスに存在し得る。更に、本発明の他の実施例は、図19に示すいくつかの回路、ロジック装置、又はデバイスにわたって分散させ得る。
【0100】
チップセット1920はPtPインタフェース回路1941を使用してバス1940と通信し得る。バス1940は、バス・ブリッジ1942やI/Oデバイス1943などの1つ又は複数のデバイスと通信し得る。バス1944を介して、バス・ブリッジ1942は、(コンピュータ・ネットワーク1803と通信し得るモデム、ネットワーク・インタフェース・デバイス、又は他の通信デバイスなどの)通信デバイス1946、キーボード/マウス1945、オーディオI/Oデバイス1947、及び/又はデータ記憶デバイス1948などの他のデバイスと通信し得る。データ記憶デバイス1948は、プロセッサ1902及び/又は1904によって実行し得るコード1949を記憶し得る。
【0101】
本発明の種々の実施例では、例えば、図1乃至図19を参照して、本明細書及び特許請求の範囲に記載された動作は、ハードウェア(例えば、論理回路)、ソフトウェア、ファームウェア、又はそれらの組み合わせ(例えば、本明細書及び特許請求の範囲記載の処理を実行するようコンピュータをプログラムするために使用される命令(又はソフトウェア手続)を記憶させたマシン読み取り可能な媒体又はコンピュータ読み取り可能な媒体を含むコンピュータ・プログラム・プロダクトとして提供し得る)であり得る。マシン読み取り可能な媒体は、本明細書及び特許請求の範囲記載のものなどの記憶デバイスを含み得る。更に、前述の有形のコンピュータ読み取り可能な媒体はコンピュータ・プログラム・プロダクトとしてダウンロード可能であり得、プログラムは、通信リンク(例えば、バス、モデム、又はネットワーク接続)を介した伝搬媒体におけるデータ信号により、要求側のコンピュータ(例えば、クライアント)に遠隔コンピュータ(例えば、サーバ)から転送し得る。
【0102】
「一実施例」、「実施例」、又は「一部の実施例」に、明細書中で言及していることは、実施例に関して説明する特定の構成、構造又は特性が少なくとも一実現形態に含まれ得るということを意味している。明細書中の種々の箇所において「一実施例における」という句が存在することは、全てが、同じ実施例を表していてもよく、表していなくてもよい。
【0103】
更に、本明細書及び特許請求の範囲では、「結合」、「接続」、及びその派生形を使用し得る。本発明の一部の実施例では、「接続」は、2つ以上の構成要素が、互いに直接、物理的に又は電気的に接触しているということを示すために使用し得る。「結合」は、2つ以上の構成要素が直接、物理的又は電気的に接触しているということを意味し得る。しかし、「結合」は、2つ以上の構成要素が互いに直接接触している訳でないが、互いになお協調又は相互作用し得るということも意味し得る。
【0104】
よって、本発明の実施例は、構造的な構成及び/又は方法論的な動作に特有の文言で説明してきたが、請求された主題は、上述の特定の構成又は動作に限定されないことがあり得る。むしろ、上記特定の構成及び動作は、請求された主題を実現するサンプル形式として開示している。
【特許請求の範囲】
【請求項1】
装置であって、
複数の区画を有する記憶装置であって、前記複数の区画からの第1の区画はオペレーティング・システム(OS)独立区画を記憶し、前記複数の区画からの第2の区画はOSを記憶する記憶装置と、
前記複数の区画をプロセッサに結合するためのOS独立(OI)リソース・マネージャ(OIRM)と
を備え、前記OIRMは前記第1の区画と前記第2の区画との間で前記プロセッサのサイクルを動的に区画化する記憶装置。
【請求項2】
請求項1記載の装置であって、前記記憶装置は前記第2の区画にOIドライバを記憶し、前記OIドライバは、前記第1の区画に記憶された1つ又は複数の命令が、実行のためにスケジューリングされるか否かを前記OIRMに示す装置。
【請求項3】
請求項1記載の装置であって、前記OIRMは、選択された時間内の実行のためにOIRMが前記1つ又は複数の命令をOIRMがスケジューリングすることができなかった旨の判定に基づいて前記第1の区画に記憶された1つ又は複数の命令に対して最小保証実行持続時間を割り当てる装置。
【請求項4】
請求項1記載の装置であって、前記OIRMは前記プロセッサのアイドル・サイクルを前記第1の区画に割り当てる装置。
【請求項5】
請求項1記載の装置であって、前記プロセッサは1つ又は複数のプロセッサ・コアを含み、前記OIRMは、C0状態における前記1つ又は複数のプロセッサ・コアのうちの1つからサイクルを割り当てるか、C−X状態における前記1つ又は複数のプロセッサ・コアのうちの別の1つをウェイクするかを判定する装置。
【請求項6】
請求項1記載の装置であって、前記第1の区画は、前記第1の区画に記憶された第1の割り込み再マップ・テーブルに応じて割り込みが処理されるか、前記第2の区画に記憶された第2の割り込み再マップ・テーブルに応じて割り込みが処理されるかを示すためのデバイス・フィルタを含む装置。
【請求項7】
請求項6記載の装置であって、前記割り込みを受け取り、前記デバイス・フィルタをルックアップさせるための割り込み再マッピング装置を更に含む装置。
【請求項8】
請求項1記載の装置であって、前記OIRMは、レンジ・レジスタの1つ又は複数のビットに基づいて前記第2の区画から前記第1の区画へのアクセスをブロックする装置。
【請求項9】
請求項1記載の装置であって、前記OIRMは、前記第1の区画に記憶された、拡張ページ・テーブルに記憶されたデータに基づいて前記第1の区画から前記第2の区画へのアクセスをブロックする装置。
【請求項10】
請求項1記載の装置であって、前記プロセッサは、暗号化されていない情報を記憶するためのメモリを備え、前記暗号化されていない情報は、前記プロセッサの外部では利用可能でない装置。
【請求項11】
請求項1記載の装置であって、前記第1の区画の1つ又は複数のページに対応するデータを記憶するためのインテグリティ検査値アレイを更に含み、前記アレイにおける各エントリは、セキュアなハッシュ・アルゴリズム値、バリディティ、及び、前記第1の区画における対応するページの直接メモリ・アクセスを示す装置。
【請求項12】
請求項11記載の装置であって、前記OIRMは、前記インテグリティ検査値アレイの対応するエントリに記憶された値に基づいて前記第1のパーティションの前記1つ又は複数のページのインテグリティを判定する装置。
【請求項13】
請求項11記載の装置であって、前記OIRMは、前記第1の区画の対応するページに対する修正の検出に応じて前記インテグリティ検査値アレイに記憶された値に対して更新をもたらす装置。
【請求項14】
方法であって、
メモリに複数の区画を記憶する工程であって、前記複数の区画からの第1の区画はオペレーティング・システム(OS)独立区画を記憶し、前記複数の区画からの第2の区画はOSを記憶する工程と、
前記複数の区画をプロセッサにOS独立(OI)リソース・マネージャ(OIRM)を介して結合する工程と、
前記OIRMが、前記第1の区画と前記第2の区画との間の前記プロセッサのサイクルを割り当てる工程と
を含む方法。
【請求項15】
請求項14記載の方法であって、前記第2の区画にOIドライバを記憶する工程を更に含み、前記OIドライバは、前記OIRMに対して、前記第1の区画に記憶された1つ又は複数の命令が、実行のためにスケジューリングされるか否かを示す方法。
【請求項16】
請求項14記載の方法であって、選択された時間内の実行のために1つ又は複数の命令をOIRMがスケジューリングすることができなかった旨の判定に基づいて前記第1の区画に記憶された1つ又は複数の命令に対して最小保証実行持続時間を前記OIRMが割り当てる工程を更に含む方法。
【請求項17】
請求項14記載の方法であって、前記OIRMは前記プロセッサのアイドル・サイクルを前記第1の区画に割り当てる工程を更に含む方法。
【請求項18】
請求項14記載の方法であって、前記OIRMが、C0状態における前記プロセッサの1つ又は複数のプロセッサ・コアからのサイクルを割り当てるか、C−X状態における前記1つ又は複数のプロセッサ・コアのうちの別の1つをウェイクするかを判定する工程を更に含む方法。
【請求項19】
請求項14記載の方法であって、前記第1の区画に記憶されたデバイス・フィルタが、前記第1の区画に記憶された第1の割り込み再マップ・テーブルに応じて割り込みを処理するか、前記第2の区画に記憶された第2の割り込み再マップ・テーブルに応じて割り込みを処理するかを示す工程を更に含む方法。
【請求項20】
請求項14記載の方法であって、前記OIRMは、レンジ・レジスタの1つ又は複数のビットに基づいて前記第2の区画から前記第1の区画へのアクセスをブロックする工程を更に含む方法。
【請求項21】
請求項14記載の方法であって、インテグリティ検査値アレイに前記第1の区画の1つ又は複数のページに対応するデータを記憶する工程を更に含み、前記アレイにおける各エントリは、セキュアなハッシュ・アルゴリズム値、バリディティ、及び、前記第1の区画における対応するページの直接メモリ・アクセスを示す方法。
【請求項22】
プロセッサ上で実行されると、
複数の区画をメモリに記憶する工程であって、前記複数の区画からの第1の区画はオペレーティング・システム(OS)独立区画を記憶し、前記複数の区画からの第2の区画はOSを記憶する工程と、
前記複数の区画を前記プロセッサにOS独立(OI)リソース・マネージャ(OIRM)を介して結合する工程であって、前記OIRMは前記第1の区画と前記第2の区画との間の前記プロセッサのサイクルを割り当てる工程と
を行うよう前記プロセッサを構成する1つ又は複数の命令を含むコンピュータ読み取り可能な媒体。
【請求項23】
請求項22記載のコンピュータ読み取り可能な媒体であって、前記プロセッサ上で実行されると、前記第2の区画にOIドライバを記憶するよう前記プロセッサを構成する1つ又は複数の命令を更に含み、前記OIドライバは、前記第1の区画に記憶された1つ又は複数の命令が、実行するためにスケジューリングされるか否かを前記OIRMに示すコンピュータ読み取り可能な媒体。
【請求項24】
請求項22記載のコンピュータ読み取り可能な媒体であって、前記プロセッサ上で実行されると、選択された期間内に実行するために前記1つ又は複数の命令をOIRMがスケジューリングすることができなかった旨の判定に基づいて前記第1の区画に記憶された1つ又は複数の命令に対して最小保証実行持続時間を割り当てるよう前記プロセッサを構成する1つ又は複数の命令を更に含むコンピュータ読み取り可能な媒体。
【請求項25】
請求項22記載のコンピュータ読み取り可能な媒体であって、前記プロセッサ上で実行されると、前記インテグリティ検査値アレイの対応するエントリに記憶された値に基づいて前記第1の区画の前記1つ又は複数のページのインテグリティを判定するよう前記プロセッサを構成する1つ又は複数の命令を更に含むコンピュータ読み取り可能な媒体。
【請求項26】
請求項22記載のコンピュータ読み取り可能な媒体であって、前記プロセッサ上で実行されると、前記第1の区画の対応するページに対する修正の検出に応じて前記インテグリティ検査値アレイに記憶された値に対する更新をもたらすよう前記プロセッサを構成する1つ又は複数の命令を更に含むコンピュータ読み取り可能な媒体。
【請求項27】
計算システムであって、
命令を記憶するためのメモリであって、前記メモリは複数の区画を含み、前記複数の区画からの第1の区画はオペレーティング・システム(OS)独立区画を記憶し、前記複数の区画からの第2の区画はOSを記憶するメモリと、
前記命令を実行するためのプロセッサと、
前記複数の区画を前記プロセッサに結合するためのOS独立(OI)リソース・マネージャ(OIRM)と
を備え、前記OIRMは、前記第1の区画と前記第2の区画との間の前記プロセッサのサイクルを動的に区画化するシステム。
【請求項28】
請求項27記載のシステムであって、前記メモリは前記第2の区画にOIドライバを記憶し、前記OIドライバは、前記OIRMに対して、前記第1の区画に記憶された1つ又は複数の命令が、実行のためにスケジューリングされるか否かを示すシステム。
【請求項29】
請求項27記載のシステムであって、OIRMは、選択された時間内の実行のために前記1つ又は複数の命令をOIRMがスケジューリングすることができなかった旨の判定に基づいて前記第1の区画に記憶された1つ又は複数の命令に対して最小保証実行持続時間を割り当てるシステム。
【請求項30】
請求項27記載のシステムであって、前記プロセッサ・コアに結合されたオーディオ・デバイスを更に含むシステム。
【請求項1】
装置であって、
複数の区画を有する記憶装置であって、前記複数の区画からの第1の区画はオペレーティング・システム(OS)独立区画を記憶し、前記複数の区画からの第2の区画はOSを記憶する記憶装置と、
前記複数の区画をプロセッサに結合するためのOS独立(OI)リソース・マネージャ(OIRM)と
を備え、前記OIRMは前記第1の区画と前記第2の区画との間で前記プロセッサのサイクルを動的に区画化する記憶装置。
【請求項2】
請求項1記載の装置であって、前記記憶装置は前記第2の区画にOIドライバを記憶し、前記OIドライバは、前記第1の区画に記憶された1つ又は複数の命令が、実行のためにスケジューリングされるか否かを前記OIRMに示す装置。
【請求項3】
請求項1記載の装置であって、前記OIRMは、選択された時間内の実行のためにOIRMが前記1つ又は複数の命令をOIRMがスケジューリングすることができなかった旨の判定に基づいて前記第1の区画に記憶された1つ又は複数の命令に対して最小保証実行持続時間を割り当てる装置。
【請求項4】
請求項1記載の装置であって、前記OIRMは前記プロセッサのアイドル・サイクルを前記第1の区画に割り当てる装置。
【請求項5】
請求項1記載の装置であって、前記プロセッサは1つ又は複数のプロセッサ・コアを含み、前記OIRMは、C0状態における前記1つ又は複数のプロセッサ・コアのうちの1つからサイクルを割り当てるか、C−X状態における前記1つ又は複数のプロセッサ・コアのうちの別の1つをウェイクするかを判定する装置。
【請求項6】
請求項1記載の装置であって、前記第1の区画は、前記第1の区画に記憶された第1の割り込み再マップ・テーブルに応じて割り込みが処理されるか、前記第2の区画に記憶された第2の割り込み再マップ・テーブルに応じて割り込みが処理されるかを示すためのデバイス・フィルタを含む装置。
【請求項7】
請求項6記載の装置であって、前記割り込みを受け取り、前記デバイス・フィルタをルックアップさせるための割り込み再マッピング装置を更に含む装置。
【請求項8】
請求項1記載の装置であって、前記OIRMは、レンジ・レジスタの1つ又は複数のビットに基づいて前記第2の区画から前記第1の区画へのアクセスをブロックする装置。
【請求項9】
請求項1記載の装置であって、前記OIRMは、前記第1の区画に記憶された、拡張ページ・テーブルに記憶されたデータに基づいて前記第1の区画から前記第2の区画へのアクセスをブロックする装置。
【請求項10】
請求項1記載の装置であって、前記プロセッサは、暗号化されていない情報を記憶するためのメモリを備え、前記暗号化されていない情報は、前記プロセッサの外部では利用可能でない装置。
【請求項11】
請求項1記載の装置であって、前記第1の区画の1つ又は複数のページに対応するデータを記憶するためのインテグリティ検査値アレイを更に含み、前記アレイにおける各エントリは、セキュアなハッシュ・アルゴリズム値、バリディティ、及び、前記第1の区画における対応するページの直接メモリ・アクセスを示す装置。
【請求項12】
請求項11記載の装置であって、前記OIRMは、前記インテグリティ検査値アレイの対応するエントリに記憶された値に基づいて前記第1のパーティションの前記1つ又は複数のページのインテグリティを判定する装置。
【請求項13】
請求項11記載の装置であって、前記OIRMは、前記第1の区画の対応するページに対する修正の検出に応じて前記インテグリティ検査値アレイに記憶された値に対して更新をもたらす装置。
【請求項14】
方法であって、
メモリに複数の区画を記憶する工程であって、前記複数の区画からの第1の区画はオペレーティング・システム(OS)独立区画を記憶し、前記複数の区画からの第2の区画はOSを記憶する工程と、
前記複数の区画をプロセッサにOS独立(OI)リソース・マネージャ(OIRM)を介して結合する工程と、
前記OIRMが、前記第1の区画と前記第2の区画との間の前記プロセッサのサイクルを割り当てる工程と
を含む方法。
【請求項15】
請求項14記載の方法であって、前記第2の区画にOIドライバを記憶する工程を更に含み、前記OIドライバは、前記OIRMに対して、前記第1の区画に記憶された1つ又は複数の命令が、実行のためにスケジューリングされるか否かを示す方法。
【請求項16】
請求項14記載の方法であって、選択された時間内の実行のために1つ又は複数の命令をOIRMがスケジューリングすることができなかった旨の判定に基づいて前記第1の区画に記憶された1つ又は複数の命令に対して最小保証実行持続時間を前記OIRMが割り当てる工程を更に含む方法。
【請求項17】
請求項14記載の方法であって、前記OIRMは前記プロセッサのアイドル・サイクルを前記第1の区画に割り当てる工程を更に含む方法。
【請求項18】
請求項14記載の方法であって、前記OIRMが、C0状態における前記プロセッサの1つ又は複数のプロセッサ・コアからのサイクルを割り当てるか、C−X状態における前記1つ又は複数のプロセッサ・コアのうちの別の1つをウェイクするかを判定する工程を更に含む方法。
【請求項19】
請求項14記載の方法であって、前記第1の区画に記憶されたデバイス・フィルタが、前記第1の区画に記憶された第1の割り込み再マップ・テーブルに応じて割り込みを処理するか、前記第2の区画に記憶された第2の割り込み再マップ・テーブルに応じて割り込みを処理するかを示す工程を更に含む方法。
【請求項20】
請求項14記載の方法であって、前記OIRMは、レンジ・レジスタの1つ又は複数のビットに基づいて前記第2の区画から前記第1の区画へのアクセスをブロックする工程を更に含む方法。
【請求項21】
請求項14記載の方法であって、インテグリティ検査値アレイに前記第1の区画の1つ又は複数のページに対応するデータを記憶する工程を更に含み、前記アレイにおける各エントリは、セキュアなハッシュ・アルゴリズム値、バリディティ、及び、前記第1の区画における対応するページの直接メモリ・アクセスを示す方法。
【請求項22】
プロセッサ上で実行されると、
複数の区画をメモリに記憶する工程であって、前記複数の区画からの第1の区画はオペレーティング・システム(OS)独立区画を記憶し、前記複数の区画からの第2の区画はOSを記憶する工程と、
前記複数の区画を前記プロセッサにOS独立(OI)リソース・マネージャ(OIRM)を介して結合する工程であって、前記OIRMは前記第1の区画と前記第2の区画との間の前記プロセッサのサイクルを割り当てる工程と
を行うよう前記プロセッサを構成する1つ又は複数の命令を含むコンピュータ読み取り可能な媒体。
【請求項23】
請求項22記載のコンピュータ読み取り可能な媒体であって、前記プロセッサ上で実行されると、前記第2の区画にOIドライバを記憶するよう前記プロセッサを構成する1つ又は複数の命令を更に含み、前記OIドライバは、前記第1の区画に記憶された1つ又は複数の命令が、実行するためにスケジューリングされるか否かを前記OIRMに示すコンピュータ読み取り可能な媒体。
【請求項24】
請求項22記載のコンピュータ読み取り可能な媒体であって、前記プロセッサ上で実行されると、選択された期間内に実行するために前記1つ又は複数の命令をOIRMがスケジューリングすることができなかった旨の判定に基づいて前記第1の区画に記憶された1つ又は複数の命令に対して最小保証実行持続時間を割り当てるよう前記プロセッサを構成する1つ又は複数の命令を更に含むコンピュータ読み取り可能な媒体。
【請求項25】
請求項22記載のコンピュータ読み取り可能な媒体であって、前記プロセッサ上で実行されると、前記インテグリティ検査値アレイの対応するエントリに記憶された値に基づいて前記第1の区画の前記1つ又は複数のページのインテグリティを判定するよう前記プロセッサを構成する1つ又は複数の命令を更に含むコンピュータ読み取り可能な媒体。
【請求項26】
請求項22記載のコンピュータ読み取り可能な媒体であって、前記プロセッサ上で実行されると、前記第1の区画の対応するページに対する修正の検出に応じて前記インテグリティ検査値アレイに記憶された値に対する更新をもたらすよう前記プロセッサを構成する1つ又は複数の命令を更に含むコンピュータ読み取り可能な媒体。
【請求項27】
計算システムであって、
命令を記憶するためのメモリであって、前記メモリは複数の区画を含み、前記複数の区画からの第1の区画はオペレーティング・システム(OS)独立区画を記憶し、前記複数の区画からの第2の区画はOSを記憶するメモリと、
前記命令を実行するためのプロセッサと、
前記複数の区画を前記プロセッサに結合するためのOS独立(OI)リソース・マネージャ(OIRM)と
を備え、前記OIRMは、前記第1の区画と前記第2の区画との間の前記プロセッサのサイクルを動的に区画化するシステム。
【請求項28】
請求項27記載のシステムであって、前記メモリは前記第2の区画にOIドライバを記憶し、前記OIドライバは、前記OIRMに対して、前記第1の区画に記憶された1つ又は複数の命令が、実行のためにスケジューリングされるか否かを示すシステム。
【請求項29】
請求項27記載のシステムであって、OIRMは、選択された時間内の実行のために前記1つ又は複数の命令をOIRMがスケジューリングすることができなかった旨の判定に基づいて前記第1の区画に記憶された1つ又は複数の命令に対して最小保証実行持続時間を割り当てるシステム。
【請求項30】
請求項27記載のシステムであって、前記プロセッサ・コアに結合されたオーディオ・デバイスを更に含むシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公表番号】特表2012−508940(P2012−508940A)
【公表日】平成24年4月12日(2012.4.12)
【国際特許分類】
【出願番号】特願2011−536632(P2011−536632)
【出願日】平成21年12月22日(2009.12.22)
【国際出願番号】PCT/US2009/069136
【国際公開番号】WO2010/078143
【国際公開日】平成22年7月8日(2010.7.8)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】
【公表日】平成24年4月12日(2012.4.12)
【国際特許分類】
【出願日】平成21年12月22日(2009.12.22)
【国際出願番号】PCT/US2009/069136
【国際公開番号】WO2010/078143
【国際公開日】平成22年7月8日(2010.7.8)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】
[ Back to top ]