(57)【要約】【課題】メモリベースの構成状態レジスタを有するコンピュータ・システムを提供。【解決手段】１つまたは複数の構成状態レジスタが、プロセッサ内ではなくメモリ内で提供される。構成状態レジスタへのアクセスの要求が取得される。構成状態レジスタがプロセッサ内ではなくメモリ内にあるということの決定が行われる。構成状態レジスタがメモリ内にあるということの決定に基づいて、アクセスが、プロセッサ内アクセス動作からメモリ内アクセス動作に変換される。例えば、不規則な順序での処理または投機的処理あるいはその両方におけるレジスタの使用を可能にすることによって、処理を容易にする。【選択図】図６
2021503119.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
処理回路によって読み取り可能な、方法を実行するための命令を格納しているコンピュータ可読記憶媒体を備えており、前記方法が、
構成状態レジスタへのアクセスの要求を取得することと、
前記構成状態レジスタがプロセッサ内ではなくメモリ内にあるということを決定することと、
前記構成状態レジスタがメモリ内にあるということの決定に基づいて、前記アクセスを、プロセッサ内アクセス動作からメモリ内アクセス動作に変換することとを含んでいる、コンピュータ・プログラム製品。
【請求項２】
前記メモリ内アクセス動作が、前記要求に応じて読み込み動作または格納動作を含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項３】
前記変換することが、前記アクセスを読み込み動作に変換することを含んでおり、前記読み込み動作に前記変換することが、
メモリ・ベース・アドレスを取得することと、
前記構成状態レジスタの指示を取得することと、
前記構成状態レジスタの前記指示をメモリ・オフセットにマッピングすることと、
前記ベース・アドレスおよび前記メモリ・オフセットを使用して決定されたアドレスから値を読み込むこととを含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項４】
前記変換することが、前記アクセスを格納動作に変換することを含んでおり、前記格納動作に前記変換することが、
メモリ・ベース・アドレスを取得することと、
前記構成状態レジスタの指示を取得することと、
前記構成状態レジスタの前記指示をメモリ・オフセットにマッピングすることと、
前記ベース・アドレスおよび前記メモリ・オフセットを使用して決定されたアドレスに値を格納することとを含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項５】
前記方法が、
定義された期間内に前記構成状態レジスタが複数回アクセスされたということを決定することと、
前記決定に基づいて、前記構成状態レジスタの値をキャッシュに格納することとをさらに含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項６】
前記方法が、１つまたは複数の構成状態レジスタを使用するシステムの初期ブートに基づいて、１つまたは複数のメモリ内メモリ・ユニットを前記１つまたは複数の構成状態レジスタに割り当てることをさらに含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項７】
前記１つまたは複数のメモリ内メモリ・ユニットが、ファームウェアによって所有されるメモリ内にある、請求項６に記載のコンピュータ・プログラム製品。
【請求項８】
前記１つまたは複数のメモリ内メモリ・ユニットが、制御プログラムによって所有されるメモリ内にある、請求項６に記載のコンピュータ・プログラム製品。
【請求項９】
前記制御プログラムがオペレーティング・システムまたはハイパーバイザを含んでいる、請求項８に記載のコンピュータ・プログラム製品。
【請求項１０】
前記構成状態レジスタが、構成状態レジスタ用に定義されたメモリの領域内にある、請求項１に記載のコンピュータ・プログラム製品。
【請求項１１】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信するプロセッサとを備えており、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
構成状態レジスタへのアクセスの要求を取得することと、
前記構成状態レジスタがプロセッサ内ではなくメモリ内にあるということを決定することと、
前記構成状態レジスタがメモリ内にあるということの決定に基づいて、前記アクセスを、プロセッサ内アクセス動作からメモリ内アクセス動作に変換することとを含んでいる、コンピュータ・システム。
【請求項１２】
前記変換することが、前記アクセスを読み込み動作に変換することを含んでおり、前記読み込み動作に前記変換することが、
メモリ・ベース・アドレスを取得することと、
前記構成状態レジスタの指示を取得することと、
前記構成状態レジスタの前記指示をメモリ・オフセットにマッピングすることと、
前記ベース・アドレスおよび前記メモリ・オフセットを使用して決定されたアドレスから値を読み込むこととを含んでいる、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記変換することが、前記アクセスを格納動作に変換することを含んでおり、前記格納動作に前記変換することが、
メモリ・ベース・アドレスを取得することと、
前記構成状態レジスタの指示を取得することと、
前記構成状態レジスタの前記指示をメモリ・オフセットにマッピングすることと、
前記ベース・アドレスおよび前記メモリ・オフセットを使用して決定されたアドレスに値を格納することとを含んでいる、請求項１１に記載のコンピュータ・システム。
【請求項１４】
前記方法が、
定義された期間内に前記構成状態レジスタが複数回アクセスされたということを決定することと、
前記決定に基づいて、前記構成状態レジスタの値をキャッシュに格納することとをさらに含んでいる、請求項１１に記載のコンピュータ・システム。
【請求項１５】
前記構成状態レジスタが、構成状態レジスタ用に定義されたメモリの領域内にある、請求項１１に記載のコンピュータ・システム。
【請求項１６】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
プロセッサによって、構成状態レジスタへのアクセスの要求を取得することと、
前記構成状態レジスタがプロセッサ内ではなくメモリ内にあるということを決定することと、
前記構成状態レジスタがメモリ内にあるということの決定に基づいて、前記アクセスを、プロセッサ内アクセス動作からメモリ内アクセス動作に変換することとを含んでいる、コンピュータ実装方法。
【請求項１７】
前記変換することが、前記アクセスを読み込み動作に変換することを含んでおり、前記読み込み動作に前記変換することが、
メモリ・ベース・アドレスを取得することと、
前記構成状態レジスタの指示を取得することと、
前記構成状態レジスタの前記指示をメモリ・オフセットにマッピングすることと、
前記ベース・アドレスおよび前記メモリ・オフセットを使用して決定されたアドレスから値を読み込むこととを含んでいる、請求項１６に記載のコンピュータ実装方法。
【請求項１８】
前記変換することが、前記アクセスを格納動作に変換することを含んでおり、前記格納動作に前記変換することが、
メモリ・ベース・アドレスを取得することと、
前記構成状態レジスタの指示を取得することと、
前記構成状態レジスタの前記指示をメモリ・オフセットにマッピングすることと、
前記ベース・アドレスおよび前記メモリ・オフセットを使用して決定されたアドレスに値を格納することとを含んでいる、請求項１６に記載のコンピュータ実装方法。
【請求項１９】
定義された期間内に前記構成状態レジスタが複数回アクセスされたということを決定することと、
前記決定に基づいて、前記構成状態レジスタの値をキャッシュに格納することとをさらに含んでいる、請求項１６に記載のコンピュータ実装方法。
【請求項２０】
前記構成状態レジスタが、構成状態レジスタ用に定義されたメモリの領域内にある、請求項１６に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
１つまたは複数の態様は、一般に、コンピューティング環境内の処理に関連しており、特に、そのような処理を容易にするコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法に関連している。なお、「コンピュータ・プログラム」は「コンピュータ・プログラム製品」とも呼ぶ。
【背景技術】
【０００２】
コンピューティング環境のコンピュータは、コンピュータ内の処理を制御する中央処理装置（ＣＰＵ：central processing units）またはプロセッサを含んでいる。中央処理装置の動作は、制御レジスタによって制御される。制御レジスタは、例えば、割り込み制御、アドレス指定モードの切り替え、ページング制御、またはコプロセッサ制御、あるいはその組合せなどの、特定のタスクを実行するプロセッサのレジスタである。
【０００３】
制御レジスタは、プロセッサ・チップの直接上にある半導体素子などの、ラッチとして通常は実装される。一部のコンピュータは、コンピュータのアーキテクチャの実装によって定義されたとおりに、多数の制御レジスタを使用する。したがって、制御レジスタは、チップの面積の増大を表す。
【０００４】
さらに、一部のコンピュータは、中央処理装置が複数のプロセスまたはスレッドを同時に実行できるマルチスレッドをサポートする。各スレッドは、制御レジスタの別々のセットを使用し、それによってチップ上の制御レジスタの数が増える。
【０００５】
ラッチベースの制御レジスタの数の増加は、性能、チップ面積、または電力消費、あるいはその組合せに影響を与えることがある。例えば、コンテキスト切り替え時に制御レジスタが切り替えられるため、制御レジスタの数の増加によって、コンテキスト切り替えのコストが増える。さらに、ラッチベースの制御レジスタでは、制御に対する更新がプログラム順序で発生し、このことも性能に影響を与えることがある。
【０００６】
異なるアーキテクチャは、制御レジスタについて異なる名前を有することがある。例えば、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク市）によって提供されるＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅでは、制御レジスタは専用レジスタ（ＳＰＲ：special purpose register）と呼ばれる。その他のアーキテクチャは、他の名前を使用することがある。本明細書では、制御レジスタの使用は、例えばＳＰＲなどの、他の名前の制御レジスタを含む。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015
【非特許文献２】“Power ISA(TM) Version 2.07B,” International Business Machines Corporation, April 9, 2015
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法を提供する。
【課題を解決するための手段】
【０００９】
従来技術の欠点が克服され、追加の利点がもたらされるコンピュータ・プログラム製品は、処理回路によって読み取り可能な、方法を実行するための命令を格納しているコンピュータ可読記憶媒体を含む。この方法は、例えば、構成状態レジスタへのアクセスの要求を取得することを含む。構成状態レジスタがプロセッサ内ではなくメモリ内にあるということの決定が行われる。構成状態レジスタがメモリ内にあるということの決定に基づいて、アクセスが、プロセッサ内アクセス動作からメモリ内アクセス動作に変換される。これは、例えば、不規則な順序での処理または投機的処理あるいはその両方におけるレジスタの使用を可能にすることによって、処理を容易にする。
【００１０】
例えば、メモリ内アクセス動作は、要求に応じて読み込み動作または格納動作を含む。
【００１１】
１つの態様では、この変換は、アクセスを読み込み動作に変換することを含む。読み込み動作に変換することは、メモリ・ベース・アドレスおよび構成状態レジスタの指示を取得することを含む。構成状態レジスタの指示はメモリ・オフセットにマッピングされ、ベース・アドレスおよびメモリ・オフセットを使用して決定されたアドレスから値が読み込まれる。
【００１２】
別の態様では、この変換は、アクセスを格納動作に変換することを含む。格納動作に変換することは、メモリ・ベース・アドレスおよび構成状態レジスタの指示を取得することを含む。構成状態レジスタの指示はメモリ・オフセットにマッピングされ、ベース・アドレスおよびメモリ・オフセットを使用して決定されたアドレスに値が格納される。
【００１３】
さらに別の態様として、定義された期間内に構成状態レジスタが複数回アクセスされたということの決定が行われる。この決定に基づいて、構成状態レジスタの値がキャッシュに格納される。
【００１４】
１つの実施形態では、１つまたは複数の構成状態レジスタを使用するシステムの初期ブートに基づいて、１つまたは複数のメモリ内メモリ・ユニットが１つまたは複数の構成状態レジスタに割り当てられる。
【００１５】
１つの例として、１つまたは複数のメモリ内メモリ・ユニットが、ファームウェアによって所有されるメモリ内にある。別の例として、１つまたは複数のメモリ内メモリ・ユニットが、制御プログラムによって所有されるメモリ内にある。制御プログラムは、例えば、オペレーティング・システムまたはハイパーバイザを含む。
【００１６】
１つの実施形態では、構成状態レジスタが、構成状態レジスタ用に定義されたメモリの領域内にある。
【００１７】
１つまたは複数の態様に関連するコンピュータ実装方法およびシステムも本明細書に記載され、請求される。さらに、１つまたは複数の態様に関連するサービスも本明細書に記載されており、請求されてよい。
【００１８】
その他の特徴および長所が、本明細書に記載された技術によって実現される。その他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
【００１９】
１つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに１つまたは複数の態様の目的、特徴、および長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【００２０】
【図１】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例を示す図である。
【図２】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
【図３】本発明の１つまたは複数の態様に従って、図１または図２のプロセッサの詳細をさらに示す図である。
【図４】本発明の１つまたは複数の態様に従って使用される命令実行パイプラインの一例の詳細をさらに示す図である。
【図５】本発明の態様に従って、プロセッサの一例の詳細をさらに示す図である。
【図６】本発明の態様に従って、プロセッサ内構成状態レジスタおよびメモリ内構成状態レジスタの一例を示す図である。
【図７】本発明の態様に従って、メモリ内構成状態レジスタを使用することに関連付けられたデコード論理の一例を示す図である。
【図８】本発明の態様に従って、構成状態レジスタ読み込み内部動作の一例を示す図である。
【図９】本発明の態様に従って、構成状態レジスタ格納内部動作の一例を示す図である。
【図１０】本発明の態様に従って、メモリ内構成状態レジスタを使用する一例を示す図である。
【図１１】本発明の態様に従って、メモリ内構成状態レジスタを使用する別の例を示す図である。
【図１２】本発明の態様に従って、構成状態レジスタの書き込み動作の一例を示す図である。
【図１３】本発明の態様に従って、構成状態レジスタの読み取り動作の一例を示す図である。
【図１４】本発明の態様に従って、構成状態レジスタへの移動または構成状態レジスタからの移動に関連付けられたデコード論理の一実施形態を示す図である。
【図１５】本発明の態様に従って、構成状態レジスタへの移動命令に関連付けられた詳細をさらに示す図である。
【図１６】本発明の態様に従って、構成状態レジスタからの移動命令の詳細をさらに示す図である。
【図１７】本発明の態様に従って、複合構成状態レジスタの読み取り参照に関連付けられた論理の一実施形態を示す図である。
【図１８】本発明の態様に従って、複合構成状態レジスタの書き込み参照に関連付けられた論理の一実施形態を示す図である。
【図１９】本発明の態様に従って、複合構成状態レジスタの一例を示す図である。
【図２０】本発明の態様に従って、構成状態レジスタの線形マッピングの一例を示す図である。
【図２１】本発明の態様に従って、構成状態レジスタの線形マッピングの一例を示す図である。
【図２２】本発明の態様に従って、構成状態レジスタの再マッピング・フロー論理の一例を示す図である。
【図２３】複数の構成状態レジスタの格納動作の一例を示す図である。
【図２４】本発明の態様に従って、構成状態レジスタ一括格納動作の一例を示す図である。
【図２５】本発明の態様に従って、構成状態レジスタ一括読み込み動作の一例を示す図である。
【図２６】本発明の態様に従って、アーキテクチャの構成制御を指定する一例を示す図である。
【図２７】本発明の態様に従って、アーキテクチャの構成制御を指定する別の例を示す図である。
【図２８】本発明の態様に従って、コンテキスト切り替えを実行する一例を示す図である。
【図２９】本発明の態様に従って、コンテキスト切り替えを実行する別の例を示す図である。
【図３０】本発明の態様に従って、構成状態レジスタへの移動動作に関連付けられたアドレス変換の一実施形態を示す図である。
【図３１】本発明の態様に従って、動的アドレス変換を実行する例を示す図である。
【図３２】本発明の態様に従って、動的アドレス変換を実行する例を示す図である。
【図３３】本発明の態様に従って、ページ・テーブル・エントリの一例を示す図である。
【図３４】本発明の態様に従って、特定のコンテキストに関連付けられている特定の構成状態レジスタの一例を示す図である。
【図３５】本発明の態様に従って、固定通知をホスト・システムに提供する一実施形態を示す図である。
【図３６】本発明の態様に従って、ページ・テーブル・エントリでの固定動作を指定する一実施形態を示す図である。
【図３７】本発明の態様に従って、ページ・テーブル・エントリでの固定解除動作を指定する一実施形態を示す図である。
【図３８】本発明の態様に従って、１回のハイパーバイザの呼び出しで固定動作および固定解除動作を結合する一例を示す図である。
【図３９】本発明の態様に従って、１回の呼び出しに基づいて固定動作および固定解除動作を実行することに関連付けられた詳細をさらに示す図である。
【図４０】本発明の１つまたは複数の態様に従って、データ書き込みのさまざまな例を示す図である。
【図４１】本発明の１つまたは複数の態様に従って、データ書き込みのさまざまな例を示す図である。
【図４２】本発明の１つまたは複数の態様に従って、データ書き込みのさまざまな例を示す図である。
【図４３】本発明の１つまたは複数の態様に従って、データ読み取りのさまざまな例を示す図である。
【図４４】本発明の１つまたは複数の態様に従って、データ読み取りのさまざまな例を示す図である。
【図４５】本発明の１つまたは複数の態様に従って、データ読み取りのさまざまな例を示す図である。
【図４６】本発明の態様に従って、コンピューティング環境内の処理を容易にする一実施形態を示す図である。
【図４７】本発明の態様に従って、コンピューティング環境内の処理を容易にする一実施形態を示す図である。
【図４８】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
【図４９】図４８のメモリの詳細をさらに示す図である。
【図５０】クラウド・コンピューティング環境の一実施形態を示す図である。
【図５１】抽象モデル・レイヤの一例を示す図である。
【発明を実施するための形態】
【００２１】
本発明の態様に従って、さまざまな構成状態レジスタが、プロセッサ内ではなくメモリ内で提供される。本明細書において使用されるとき、「構成状態レジスタ」という用語は、制御レジスタ、プログラム状態ワード（ＰＳＷ：program status word）またはその他のマシン状態レジスタなどのマシン状態レジスタ（ＭＳＲ：machine state register）、状態レジスタ（例えば、浮動小数点状態制御レジスタ）、専用レジスタ（ＳＰＲ）、構成レジスタ、または例えば命令の動作を構成するその他のレジスタ、あるいはその組合せを含む。
【００２２】
選択された構成状態レジスタ（またはさらに別の態様では、その一部）は、メモリ内で提供され、メモリ内でそれらのレジスタは、システム・メモリにマッピングされ、プロセッサに接続されているがプロセッサから離れているメモリ階層に含まれる。メモリ階層は、例えば、読み込み／格納キュー、１つまたは複数のメモリ・キャッシュ、およびシステム・メモリ（本明細書では、メイン・メモリ、中央記憶装置、ストレージ、主記憶装置、メモリとも呼ばれる）を含む。プロセッサ内ではなくメモリ内に存在することにより、レジスタは、メモリ・アドレスを使用することによってアクセスされ、アクセス要求が、再順序付けされるか、または投機的に処理されてよい。これに対して、プロセッサ内に存在する構成状態レジスタに対するアクセス要求は、不規則な順序では処理されず、投機的にも処理されない。プロセッサ内構成状態レジスタは、例えば直接チップ上で、例えば半導体素子（ラッチなど）として実装される。「チップ上」は、単一の集積回路に含まれているか、または特定のデバイスと同じ集積回路に含まれている、回路を示すか、またはそのような回路に関連している。
【００２３】
構成状態レジスタがシステム・メモリに格納されているということに基づいて、構成状態レジスタへの移動命令（例えば、ＳＰＲへの移動（ｍｔｓｐｒ：move to SPR）命令）および構成状態レジスタからの移動命令（例えば、ＳＰＲからの移動（ｍｆｓｐｒ：move from SPR）命令）などの、特定の命令が、命令デコード論理による読み込み命令または動作および格納命令または動作に置き換えられる。生成された読み込み命令／動作および格納命令／動作は、格納キューにコミットされ、標準的な読み込み処理および格納処理が実行される。
【００２４】
１つの例として、構成状態レジスタを含むための記憶領域が、オペレーティング・システムまたはハイパーバイザあるいはその両方によって定義され、メモリベースのレジスタを格納するために確保される。１つの実施形態では、物理メモリ領域がアーキテクチャによって指定される（例えば、物理メモリの最初または最後のｎページ）。
【００２５】
さらに別の態様では、構成状態レジスタの１つまたは複数の部分がメモリ内に設けられ、一方、構成状態レジスタの１つまたは複数の他の部分がプロセッサ内に設けられる。１つの例では、メモリ内に設けられた部分は、あまり頻繁に使用されない部分である。
【００２６】
さらに別の態様では、処理性能を改善するために、通常は一緒に使用される構成状態レジスタ（または少なくともその一部）がメモリ内に一緒に（例えば、単一のキャッシュ・ラインまたは隣接するキャッシュ・ライン内に）配置されるように、構成状態レジスタの再マッピングが提供される。
【００２７】
さらに別の態様では、複数の構成状態レジスタの一括格納または一括読み込みを実行するための命令または動作が提供される。これは、例えば、コンテキスト切り替えを容易にして、その性能を改善するためである。
【００２８】
さらに別の１つの態様では、メモリ内のどこに構成状態レジスタが格納されるかを識別するための制御のセットを定義することによって、処理が容易にされ、性能が改善される。
【００２９】
さらに別の態様では、メモリ内構成状態レジスタのメモリ・ポインタを操作することによって、コンテキスト切り替え時の効率が達成される。古い構成データをコピーするのではなく、それらのポインタが操作される。これによって、速度を上げ、コンテキスト切り替え時の複雑さを減らして、コンピューティング環境内の処理を改善する。
【００３０】
さらに別の態様では、後で命令の処理において発生する可能性のあるページ・フォールトを防ぐために、ベース・アドレスとして使用されるアドレスを読み込む命令を実行することに基づいて、アドレス変換が自動的に実行される。
【００３１】
さらに別の態様では、管理の柔軟性を向上させることによって処理を容易にするために、構成状態レジスタがコンテキストまたはグループ（例えば、ハイパーバイザ、オペレーティング・システム、プロセス、スレッド）別に分離される。
【００３２】
さらに別の態様として、初期化されたメモリ補助の状態のための自動固定の指示が提供される。
【００３３】
さらに別の態様では、準仮想化された固定呼び出しを使用して、メモリ・ページの固定が効率的に管理される。
【００３４】
さらに別の１つの態様では、システム・メモリがシングル・イベント・アップセットに対して保護される。
【００３５】
本明細書では、さまざまな態様が説明される。さらに、本発明の態様の思想を逸脱することなく、多くの変形が可能である。本明細書に記載された各態様および特徴ならびにその変形を、特に矛盾しない限り、任意の他の態様または特徴と組み合わせることができるということに、注意するべきである。
【００３６】
本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一実施形態が、図１を参照して説明される。１つの例では、コンピューティング環境は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク市）によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの一実施形態は、“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。Ｚ／ＡＲＣＨＩＴＥＣＴＵＲＥは、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（米国ニューヨーク州アーモンク市）の登録商標である。
【００３７】
別の例では、コンピューティング環境は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク市）によって提供されるＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅに基づく。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅの一実施形態は、“Power ISA(TM) Version 2.07B,” International Business Machines Corporation, April 9, 2015に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。ＰＯＷＥＲ  ＡＲＣＨＩＴＥＣＴＵＲＥは、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（米国ニューヨーク州アーモンク市）の登録商標である。
【００３８】
コンピューティング環境は、Ｉｎｔｅｌ  ｘ８６アーキテクチャを含むが、これに限定されない、他のアーキテクチャに基づいてもよい。その他の例も存在する。
【００３９】
図１に示されているように、コンピューティング環境１００は、例えば、汎用コンピューティング・デバイスの形態で示されるコンピュータ・システム１０２を含んでいる。コンピュータ・システム１０２は、１つまたは複数のバスまたはその他の接続１１０あるいはその両方を介して互いに結合された、１つまたは複数のプロセッサまたはプロセッシング・ユニット１０４（例えば、中央処理装置（ＣＰＵ））、メモリ１０６（例えば、システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、またはストレージとも呼ばれる）、および１つまたは複数の入出力（Ｉ／Ｏ：input/output）インターフェイス１０８を含んでよいが、これらに限定されない。
【００４０】
バス１１０は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数の種類のバス構造のいずれかのうちの１つまたは複数を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）、ＭＣＡ（Micro Channel Architecture）、ＥＩＳＡ（Enhanced ISA）、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびＰＣＩ（Peripheral Component Interconnects）を含むが、これらに限定されない。
【００４１】
メモリ１０６は、例えば、プロセッサ１０４のローカル・キャッシュ１２２に結合されてよい、共有キャッシュなどのキャッシュ１２０を含んでよい。さらに、メモリ１０６は、１つまたは複数のプログラムまたはアプリケーション１３０、オペレーティング・システム１３２、および１つまたは複数のコンピュータ可読プログラム命令１３４を含んでよい。コンピュータ可読プログラム命令１３４は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【００４２】
コンピュータ・システム１０２は、例えばＩ／Ｏインターフェイス１０８を介して、１つまたは複数の外部デバイス１４０、１つまたは複数のネットワーク・インターフェイス１４２、または１つまたは複数のデータ・ストレージ・デバイス１４４、あるいはその組合せと通信してもよい。外部デバイスの例としては、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイなどが挙げられる。ネットワーク・インターフェイス１４２は、コンピュータ・システム１０２が、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、一般的な広域ネットワーク（ＷＡＮ：wide area network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組合せなどの１つまたは複数のネットワークと通信できるようにし、他のコンピューティング・デバイスまたはシステムとの通信を実現する。
【００４３】
データ・ストレージ・デバイス１４４は、１つまたは複数のプログラム１４６、１つまたは複数のコンピュータ可読プログラム命令１４８、またはデータ、あるいはその組合せなどを格納してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【００４４】
コンピュータ・システム１０２は、取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなにコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であってよい。例えば、コンピュータ・システム１０２は、取り外し不可、不揮発性の磁気媒体（通常は、「ハード・ドライブ」と呼ばれる）、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、あるいはＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であってよい。その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム１０２と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００４５】
コンピュータ・システム１０２は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用されてよい。コンピュータ・システム１０２での使用に適した周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ（ＰＣ：personal computer）システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【００４６】
別の実施形態では、コンピューティング環境が仮想マシンをサポートする。そのような環境の一例が、図２を参照して説明される。１つの例では、コンピューティング環境１６１は、仮想マシンをサポートする中央処理装置複合体（ＣＰＣ：central processor complex）１６３を含んでいる。ＣＰＣ１６３は、１つまたは複数の制御ユニット１６９を介して１つまたは複数の入出力（Ｉ／Ｏ）デバイス１６７に結合される。中央処理装置複合体１６３は、例えば、１つまたは複数のプロセッサ（中央処理装置（ＣＰＵ：central processing unit）とも呼ばれる）１７１に結合されたメモリ１６５（システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、ストレージとも呼ばれる）、および入出力サブシステム１７３を含んでおり、これらの各々が下で説明される。
【００４７】
メモリ１６５は、例えば、１つまたは複数の仮想マシン１７５、仮想マシンを管理する仮想マシン・マネージャ（ハイパーバイザ１７７など）、およびプロセッサ・ファームウェア１７９を含んでいる。ハイパーバイザ１７７の１つの例は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク市）によって提供されるｚ／ＶＭである。ハイパーバイザは、ホストと呼ばれることがある。さらに、本明細書において使用されるとき、ファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、上位レベルの機械コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。１つの実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供される、システムのハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含む。
【００４８】
ＣＰＣの仮想マシンのサポートは、多数の仮想マシン１７５を動作させることができるようにし、各仮想マシン１７５は、異なるプログラム１８５で動作し、Ｌｉｎｕｘなどのゲスト・オペレーティング・システム１８３を実行することができる。各仮想マシン１７５は、別々のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲスト・オペレーティング・システムを実行し、異なるプログラムで動作することができる。仮想マシン内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。
【００４９】
メモリ１６５は、仮想マシンに割り当て可能な物理プロセッサ・リソースである、プロセッサ（例えば、ＣＰＵ）１７１に結合される。例えば、仮想マシン１７５は、１つまたは複数の論理プロセッサを含み、それらの論理プロセッサの各々は、仮想マシンに動的に割り当てることができる物理プロセッサ・リソース１７１の全部または一部を表す。
【００５０】
さらに、メモリ１６５は、Ｉ／Ｏサブシステム１７３に結合される。入出力サブシステム１７３は、入出力制御ユニット１６９およびデバイス１６７と主記憶装置１６５の間の情報の流れを管理する。入出力サブシステム１７３は中央処理装置複合体に結合され、この結合において、入出力サブシステム１７３は中央処理装置複合体の一部であるか、または中央処理装置複合体から分離することができる。
【００５１】
さらに、プロセッサ１０４（またはプロセッサ１７１）などのプロセッサの一例に関する詳細が、図３を参照して説明される。プロセッサ１０４（またはプロセッサ１７１）などのプロセッサは、命令を実行するために使用される複数の機能コンポーネントを含む。これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント１５０と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット１５２と、デコードされた命令を実行するための命令実行コンポーネント１５４と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント１５６と、実行された命令の結果を提供するための書き戻しコンポーネント１６０とを含む。これらのコンポーネントのうちの１つまたは複数は、本発明の態様に従って、メモリベースの構成状態レジスタの処理１６６に関連付けられた１つまたは複数の命令または動作あるいはその両方を実行するために使用されてよい。
【００５２】
プロセッサ１０４（またはプロセッサ１７１）は、１つの実施形態では、機能コンポーネントのうちの１つまたは複数によって使用される１つまたは複数のレジスタ１６８も含む。プロセッサ１０４（またはプロセッサ１７１）は、本明細書で提供されている例よりも多いコンポーネント、少ないコンポーネント、またはその他のコンポーネント、あるいはその組合せを含んでよい。
【００５３】
さらに、プロセッサ１０４またはプロセッサ１７１などのプロセッサの実行パイプラインに関する詳細が、図４を参照して説明される。本明細書では、パイプラインのさまざまな処理段階が図に示されて説明されているが、本発明の態様の思想から逸脱することなく、追加の段階、より少ない段階、またはその他の段階、あるいはその組合せが使用されてよいということが理解されるであろう。
【００５４】
図４を参照すると、１つの実施形態では、命令が命令キューからフェッチされ（１７０）、命令の分岐予測１７２またはデコーディング１７４あるいはその両方が実行されてよい。デコードされた命令が、一緒に処理される命令のグループ１７６に追加されてよい。グループ化された命令がマッパー１７８に提供され、マッパー１７８が、任意の依存関係を決定し、リソースを割り当て、命令／動作のグループを適切な発行キューにディスパッチする。例えば分岐、読み込み／格納、浮動小数点、固定小数点、ベクトルなどを含む、異なる種類の実行ユニットに対して、１つまたは複数の発行キューが存在する。発行段階１８０の間に、命令／動作が適切な実行ユニットに発行される。いずれかのレジスタが読み取られて（１８２）、そのソースを取り出し、実行段階１８４の間に命令／動作が実行される。示されているように、この実行は、分岐の場合、例えば、読み込み（ＬＤ）または格納（ＳＴ）、固定小数点演算（ＦＸ）、浮動小数点演算（ＦＰ）、またはベクトル演算（ＶＸ）であってよい。書き戻し段階１８６の間に、いずれかの結果が適切なレジスタに書き込まれる。その後、命令が完了する（１８８）。割り込みまたはフラッシュ１９０が存在する場合、処理が命令フェッチ１７０に戻ってよい。
【００５５】
さらに、１つの例では、レジスタの保存／復元において使用されてよいレジスタ名変更ユニット１９２が、デコード・ユニットに結合される。
【００５６】
プロセッサに関するその他の詳細が、図５を参照して説明される。１つの例では、プロセッサ１０４（またはプロセッサ１７１）などのプロセッサは、予測ハードウェア、レジスタ、キャッシュ、デコーダ、命令順序付けユニット、および命令実行ユニットを例として含んでよい、パイプライン型プロセッサである。予測ハードウェアは、例えば、ローカル分岐履歴テーブル（ＢＨＴ：branch history table）１０５ａ、グローバル分岐履歴テーブル（ＢＨＴ）１０５ｂ、およびグローバル・セレクタ１０５ｃを含む。予測ハードウェアは、次の命令フェッチのアドレスを有する命令フェッチ・アドレス・レジスタ（ＩＦＡＲ：instruction fetch address register）１０７を介してアクセスされる。
【００５７】
同じアドレスが、「フェッチ・グループ」と呼ばれる複数の命令をフェッチしてよい命令キャッシュ１０９にも提供される。ディレクトリ１１１が命令キャッシュ１０９に関連付けられる。
【００５８】
キャッシュおよび予測ハードウェアは、同じアドレスを使用してほぼ同時にアクセスされる。予測ハードウェアが、フェッチ・グループ内の命令に使用できる予測情報を含んでいる場合、その予測が命令順序付けユニット（ＩＳＵ：instruction sequencing unit）１１３に転送され、次に、命令順序付けユニット１１３が、命令を実行するために実行ユニットに発行する。この予測は、分岐ターゲット計算１１５および分岐ターゲット予測ハードウェア（リンク・レジスタ予測スタック１１７ａおよびカウント・レジスタ・スタック１１７ｂなど）と連動してＩＦＡＲ１０７を更新するために使用されてよい。予測情報を使用できないが、１つまたは複数の命令デコーダ１１９がフェッチ・グループ内で分岐命令を検出した場合、そのフェッチ・グループに関する予測が作成される。予測された分岐が、分岐情報キュー（ＢＩＱ：branch information queue）１２５などの予測ハードウェアに格納され、ＩＳＵ１１３に転送される。
【００５９】
ＩＳＵ１１３によって分岐実行ユニット（ＢＲＵ：branch execution unit）１２１に発行された命令に応答して、分岐実行ユニット１２１が動作する。ＢＲＵ１２１は、条件レジスタ（ＣＲ：condition register）ファイル１２３に対する読み取りアクセス権限を有する。さらに分岐実行ユニット１２１は、分岐スキャン論理（branch scan logic）によって分岐情報キュー１２５に格納された情報にアクセスして、分岐予測の成功を決定することができ、マイクロプロセッサによってサポートされる１つまたは複数のスレッドに対応する命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）１０７に、動作可能なように結合される。少なくとも１つの実施形態に従って、ＢＩＱエントリが識別子によって（例えば、分岐タグ（ＢＴＡＧ：branch tag）によって）関連付けられ、識別される。ＢＩＱエントリに関連付けられた分岐が完了したときに、そのことがＢＩＱエントリにマーク付けされる。ＢＩＱエントリはキュー内で維持され、完了した分岐に関連付けられた情報を含んでいるとしてキュー・エントリがマーク付けされるときに、最も古いキュー・エントリの割り当てが順次解除される。ＢＲＵ１２１は、ＢＲＵ１２１が分岐予測ミスを発見したときに予測器の更新を引き起こすように、動作可能なようにさらに結合される。
【００６０】
命令が実行されるときに、ＢＲＵ１２１が、予測が誤っているかどうかを検出する。予測が誤っている場合は、予測が更新される。この目的のために、プロセッサは予測器更新論理１２７も含んでいる。予測器更新論理１２７は、分岐実行ユニット１２１からの更新指示に応答して、ローカルＢＨＴ１０５ａ、グローバルＢＨＴ１０５ｂ、およびグローバル・セレクタ１０５ｃのうちの１つまたは複数に含まれる配列エントリを更新するように構成される。予測器ハードウェア１０５ａ、１０５ｂ、および１０５ｃは、命令フェッチおよび予測動作によって使用される、読み取りポートと異なる書き込みポートを有してよく、または単一の読み取り／書き込みポートが共有されてよい。予測器更新論理１２７は、リンク・スタック１１７ａおよびカウント・レジスタ・スタック１１７ｂに動作可能なようにさらに結合されてよい。
【００６１】
ここで条件レジスタ・ファイル（ＣＲＦ：condition register file）１２３を参照すると、ＣＲＦ１２３は、ＢＲＵ１２１によって読み取りアクセス可能であり、固定小数点ユニット（ＦＸＵ：fixed point unit）１４１、浮動小数点ユニット（ＦＰＵ：floatingpoint unit）１４３、およびベクトル・マルチメディア拡張ユニット（ＶＭＸＵ：vector multimedia extension unit）１４５を含むが、これらに限定さない、実行ユニットによって書き込み可能である。条件レジスタ論理（ＣＲＬ：condition register logic）実行ユニット１４７（ＣＲＵとも呼ばれる）および専用レジスタ（ＳＰＲ：special purpose register）処理論理１４９は、条件レジスタ・ファイル（ＣＲＦ）１２３に対する読み取りおよび書き込みアクセス権限を有する。ＣＲＵ１４７は、ＣＲＦファイル１２３に格納された条件レジスタに対して論理演算を実行する。ＦＸＵ１４１は、ＣＲＦ１２３に対して書き込み更新を実行することができる。
【００６２】
プロセッサ１０４（またはプロセッサ１７１）は、読み込み／格納ユニット１５１、ならびにさまざまなマルチプレクサ１５３およびバッファ１５５に加えて、アドレス変換テーブル１５７およびその他の回路をさらに含む。
【００６３】
さらに、プロセッサ１０４またはプロセッサ１７１などのプロセッサ２００によって使用されるさまざまなレジスタに関する詳細が、図６を参照して説明される。図に示されているように、プロセッサ２００は、複数のプロセッサ内構成状態レジスタ（ＣＳＲ：configuration state registers）２０２を含んでいる。例として、プロセッサ内構成状態レジスタは、リンク・レジスタ（ＬＲ：link register）、カウンタ・レジスタ（ＣＴＲ：counter register）、マシン状態レジスタ（ＭＳＲ）、浮動小数点状態制御レジスタ（ＦＰＳＣＲ：floating point status control register）、次命令アドレス（ＮＩＡ：nextinstruction address）レジスタ、および１つまたは複数の整数例外レジスタ（ＸＥＲ：exception register）を含んでいる。さらに、本発明の態様に従って、プロセッサ２００に結合されたシステム・メモリ２０６は、１つまたは複数のメモリ内構成状態レジスタ２０８を含んでいる。例として、メモリ内構成状態レジスタは、イベントベースの分岐復帰レジスタ（ＥＢＢＲＲ：event based branch return registers）、イベントベースの分岐（ＥＢＢ：event based branch）レジスタ、状態回復レジスタ（ＳＲＲ：state restoration registers）、整数例外レジスタ（ＸＥＲ）、およびベクトル・レジスタ保存（ＶＲＳＡＶＥ：vector register save）レジスタを含んでいる。１つの例では、メモリ内構成状態レジスタ２０８は、システム・メモリ２０６のメモリ内構成状態レジスタ領域２１０に格納される。
【００６４】
頻繁にアクセスされる（例えば、連続的に複数回アクセスされる）構成状態レジスタは、プロセッサ２００およびシステム・メモリ２０６に結合されたキャッシュ階層２１２に移動されてよい。
【００６５】
１つの態様に従って、メモリ内に移動または配置されている１つまたは複数の構成状態レジスタに基づいて、それらの構成状態レジスタへのプロセッサ内のアクセスが、メモリへのアクセスに置き換えられる。アクセスの種類を決定するデコード論理の一例が、図７を参照して説明される。この処理は、例えばプロセッサのデコード・ユニットまたは別のユニットあるいはその両方によって実行される。
【００６６】
図７を参照すると、最初に命令が受信される（ステップ３００）。命令がＳＰＲへの移動（ｍｔｓｐｒ）命令などの構成状態レジスタへの移動命令であるかどうかに関する判定が行われる（照会３０２）。命令が構成状態レジスタへの移動命令である場合、命令内で示された構成状態レジスタがメモリ内構成状態レジスタであるかどうかに関する判定がさらに行われる（照会３０４）。メモリ内構成状態レジスタでない場合、構成状態レジスタへの移動命令の従来の処理が実行される（ステップ３０６）。しかし、構成状態レジスタがメモリ内構成状態レジスタである場合、構成状態レジスタをメモリに格納する（例えば、構成状態レジスタの新しい内容をメモリに格納する）ために、構成状態レジスタ格納内部動作が生成される（ステップ３０８）。
【００６７】
照会３０２に戻ると、受信された命令が構成状態レジスタへの移動命令でない場合、命令がＳＰＲからの移動（ｍｆｓｐｒ）命令などの構成状態レジスタからの移動命令であるかに関する判定がさらに行われる（照会３１２）。命令が構成状態レジスタからの移動命令である場合、命令内で示された構成状態レジスタがメモリ内であるかどうかに関する判定が行われる（照会３１４）。メモリ内でない場合、従来の構成状態レジスタからの移動処理が実行される（ステップ３１６）。メモリ内である場合、レジスタの内容をメモリから取得するために、構成状態レジスタ読み込み内部動作が生成される（ステップ３１８）。
【００６８】
照会３１２に戻ると、受信された命令が構成状態レジスタへの移動命令でも構成状態レジスタからの移動命令でもない場合、受信された命令が、構成状態レジスタを使用する別の命令であるかどうかを判定するための判定がさらに実行されてよい（照会３２２）。受信された命令が構成状態レジスタを使用する別の命令である場合、命令によって実行されている機能に応じて、読み取りまたは書き込みあるいはその両方の内部動作が生成されてよい（ステップ３２４）。受信された命令が構成状態レジスタを使用する別の命令でない場合、処理がステップ３３２に進み、ステップ３３２で従来の命令デコード処理が実行される。
【００６９】
本発明の他の態様では、構成状態レジスタを読み込み、構成状態レジスタ値を格納するための内部動作が、命令に対応しないプロセッサの動作を実行することと連動して、例えば、割り込み要求を受信することに応答して例外ハンドラに移行することに応答して、実行される。
【００７０】
構成状態レジスタ読み込み内部動作に関する詳細が、図８を参照してさらに説明される。この処理は、プロセッサによって実行される。図８を参照すると、最初にメモリ・ベース・アドレス（ベース）が、構成状態レジスタを含んでいるメモリのベース・アドレスであるメモリ・ユニット（例えば、メモリ・ページ）のアドレスを含んでいるレジスタまたは位置（例えば、スレッド制御ベース・レジスタ（ＴＣＢＲ：thread control base register）などのベース・レジスタ）から取得される（ステップ４００）。さらに、動作において示されるレジスタ番号が取得される（ステップ４０２）。そのレジスタ番号が、メモリ内のオフセットにマッピングされる（ステップ４０４）。例えば、各構成状態レジスタ番号（または別の実施形態では、他の識別情報）が、メモリ内の特定の位置にマッピングされる。その位置は、ベース・アドレスからの特定の数量（例えば、オフセット）である。次に、アドレス（ベース・アドレスにオフセットを加算したアドレス）からの読み込みが実行され（ステップ４０６）、読み込まれた値が返される（ステップ４０８）。
【００７１】
本明細書において使用されるとき、ベースとは、メモリ内構成状態レジスタを含んでいるメモリのベース・アドレスのことを指し、ベース・レジスタとは、ベースを含んでいるレジスタのことを指す。ベース・レジスタの一例はスレッド制御ベース・レジスタ（ＴＣＢＲ）であるが、他の文脈（例えば、オペレーティング・システムなど）では、他のベース・レジスタを使用することがある。
【００７２】
構成状態レジスタ格納内部動作に関する詳細が、図９を参照してさらに説明される。この処理は、プロセッサによって実行される。図９を参照すると、最初にメモリ・ベース・アドレス（ベース）が、例えばベース・レジスタから（例えばＴＣＢＲから）取得され（ステップ５００）、動作において示されたレジスタ番号も取得される（ステップ５０２）。レジスタ番号がメモリ内のオフセットにマッピングされ（ステップ５０４）、格納のオペランド（例えば、レジスタの内容）が、ベース・アドレスにオフセットを加算することによって指定されたアドレスに格納される（ステップ５０６）。
【００７３】
上で示されたように、構成状態レジスタからの移動命令でも構成状態レジスタへの移動命令でもない命令が構成状態レジスタを使用することがある。したがって、そのような命令のうちの１つに関連付けられた処理が、図１０を参照して説明される。この処理は、プロセッサによって実行される。図１０を参照すると、この実施形態では、構成状態レジスタの読み取り参照を含んでいる命令／動作が取得される（ステップ６００）。それに基づいて、命令／動作において示された構成状態レジスタのメモリ・ベース・アドレス（ベース）が、例えばベース・レジスタから（例えばＴＣＢＲから）取得され（ステップ６０２）、命令／動作において示されたレジスタ番号も取得される（ステップ６０４）。レジスタ番号がメモリ内のオフセットにマッピングされ（ステップ６０６）、ベースにオフセットを加算することによって指定されたアドレスからの内容が、一時的レジスタに読み込まれる（ステップ６０８）。次に、一時的レジスタが使用される（ステップ６１０）。
【００７４】
図１１を参照して説明されているように、構成状態レジスタの書き込み参照に関して、同様の処理が実行される。この処理は、プロセッサによって実行される。図１１を参照すると、１つの例では、構成状態レジスタの書き込み参照が取得される（ステップ７００）。それに基づいて、メモリ・ベース・アドレス（ベース）が、例えば、命令／動作で示された構成状態レジスタのベース・レジスタから（例えばＴＣＢＲから）取得され（ステップ７０２）、それに加えて、命令／動作で指定されたベース・レジスタ番号が取得される（ステップ７０４）。レジスタ番号がオフセットにマッピングされ（ステップ７０６）、書き込み参照に（例えば、一時的レジスタに）含まれている内容が、ベースにオフセットを加算して指定されたアドレスに格納される（ステップ７０８）。
【００７５】
構成状態レジスタの書き込み動作（構成状態レジスタへの移動（例えば、ｍｔｓｐｒ）など）の動作可能な実装の考え方に関する詳細が、図１２を参照してさらに説明される。この処理は、プロセッサによって実行される。図１２を参照すると、１つの例では、動作で指定されたレジスタ番号が変換される（ステップ８００）。例えば、レジスタ番号（または他の指示）に対応するか、またはマッピングされたメモリ・アドレスが、（例えば、ルックアップ・テーブルを使用することによって、または計算されて）決定される。さらに、格納キュー・エントリが割り当てられ（ステップ８０２）、対象の構成状態レジスタに対応するアドレスが格納キュー・エントリに格納される（ステップ８０４）。さらに、対象の構成状態レジスタに書き込まれたデータに対応する内容（例えば、データ値）が、格納キュー・エントリに書き込まれる（ステップ８０６）。１つの例では、ステップ８０４および８０６は、不規則な順序で実行されてよい。
【００７６】
格納キュー・エントリは、示されたアドレスに対する読み取り（例えば、格納キューからの回避）に関して監視される（ステップ８０８）。さらに、投機誤りイベントに基づいて、格納キュー・エントリがフラッシュされてよく、投機誤りイベントは、１つの例では、アーキテクチャ的に正しい順序の位置まで発生する可能性がある（ステップ８１０）。
【００７７】
内容（例えば、データ値）が、メモリ階層（例えば、第１のレベルのキャッシュ）内のアドレスに書き込まれる（ステップ８１２）。読み取り要求に基づいて、第１のレベルのキャッシュからのデータが提供される（ステップ８１４）。さらに、キャッシュ置換ポリシーに基づいて、第１のレベルのキャッシュからキャッシュ階層の１つまたは複数の次のレベルへ、データが退避される（ステップ８１６）。読み取り要求に基づいて、キャッシュ階層の１つまたは複数の次のレベルからのデータが提供される（ステップ８１８）。キャッシュ置換ポリシーに基づいて、キャッシュの各レベルからのデータがシステム・メモリ（例えば、ＤＲＡＭ）に退避される（ステップ８２０）。読み取り要求に基づいて、システム・メモリからのデータが提供される（ステップ８２２）。
【００７８】
構成状態レジスタの読み取り動作の動作可能な実装の考え方に関する詳細が、図１３を参照してさらに説明される。この処理は、プロセッサによって実行される。図１３を参照すると、１つの例では、読み取り動作によって指定されたレジスタ番号が、対応するメモリ・アドレスに変換される（ステップ９００）。読み込み要求の追跡に使用される読み込みキュー内の位置を示すために使用される読み込みシーケンス番号、および依存関係を追跡する読み込みタグが、取得される（ステップ９０２）。格納キュー内で読み取られている構成状態レジスタに対応するアドレスにデータが存在する（すなわち、格納キュー内のメモリから読み取られるデータが存在する）かどうかのテストが実行される（ステップ９０４）。読み取られる構成状態レジスタのデータが格納キュー内で検出された場合（照会９０６）、格納キューから値が取得され（ステップ９０８）、処理が完了する。
【００７９】
照会９０６に戻ると、読み取られる構成状態レジスタのデータが格納キュー内で検出されない場合、読み取られる構成状態レジスタのデータが第１のレベルのキャッシュ内で検出されるかどうかに関する判定がさらに行われる（照会９１０）。データが第１のレベルのキャッシュ内で検出された場合、第１のレベルのキャッシュから値が取得され（ステップ９１２）、処理が完了する。
【００８０】
しかし、照会９１０に戻ると、データが第１のレベルのキャッシュ内で検出されない場合、読み取られる構成状態レジスタのデータが１つまたは複数の次のレベルのキャッシュ内で検出されるかどうかに関する判定がさらに行われる（照会９１４）。データが１つまたは複数の次のレベルのキャッシュ内で検出された場合、次のレベルのキャッシュからデータが取得され（ステップ９１６）、処理が完了する。
【００８１】
照会９１４に戻ると、データが１つまたは複数の次のレベルのキャッシュ内にない場合、システム・メモリからデータを取り出すために、読み取り要求が読み込みキューに発行される（ステップ９１８）。システム・メモリからの読み込みが完了した場合、構成状態レジスタに対応するデータが取得される（ステップ９２０）。
【００８２】
本発明の態様に従って、ソフトウェアの互換性を実現するために、メモリ内メモリ・ユニット（例えば、ページ）の割り当てが実行される。例えば、プロセッサがレガシー・ハイパーバイザを実行できるようにする、およびハイパーバイザがレガシー・オペレーティング・システムを実行できるようにする、などのために、ファームウェアによって割り当てが実行される。
【００８３】
１つの例では、システムの初期ブート時に、ファームウェアが、ファームウェアが所有するメモリ内のメモリ内ページをメモリ内構成状態レジスタに割り当てる。１つの例では、ハイパーバイザがメモリ内構成状態レジスタを認識しない場合、ベース・レジスタ（例えば、ＴＣＢＲなど）へのそれ以上のソフトウェアの参照なしで、ファームウェアが所有するページがシステムの実行全体を通じて使用される。
【００８４】
そのため、ハイパーバイザは、例えば構成状態レジスタからの移動（例えば、ｍｆｓｐｒ）を使用してコンテキストを読み取り、例えば構成状態レジスタへの移動（例えば、ｍｔｓｐｒ）を使用してコンテキストを再読み込みすることによって、コンテキスト切り替えを簡単に実行する。これによって、コンピュータ・システム内の大幅な設計の簡略化および性能優位性を実現する。
【００８５】
さらに、１つの例では、ハイパーバイザが、メモリによって補助されたページを認識する場合、ハイパーバイザは、補助ページのセットを含むように新しい各パーティションを構成してよい。さらに、オペレーティング・システムがメモリ内構成状態レジスタを認識しない場合、例えばベース・レジスタ（例えば、ＴＣＢＲなど）へのそれ以上のソフトウェアの参照なしで、ハイパーバイザが所有するページがシステムの実行全体を通じて使用される。ハイパーバイザも認識しない場合、オペレーティング・システムが、ファームウェアが所有するページを使用する。
【００８６】
そのため、オペレーティング・システムは、例えば構成状態レジスタからの移動（例えば、ｍｆｓｐｒなど）を使用してコンテキストを読み取り、例えば構成状態レジスタへの移動（例えば、ｍｔｓｐｒなど）を使用してコンテキストを再読み込みすることによって、コンテキスト切り替えを簡単に実行する。これによって、コンピュータ・システム内の大幅な設計の簡略化および性能優位性を実現し、処理を容易にする。
【００８７】
本明細書において説明されているように、１つまたは複数の態様に従って、選択された構成状態レジスタがシステム・メモリに格納される。したがって、構成状態レジスタへの移動および構成状態レジスタからの移動が、命令デコード論理によって、読み込み命令および格納命令に置き換えられる。そのように生成された読み込みおよび格納は、格納キューにコミットされ、通常の読み込み処理および格納処理が実行される。１つの例では、常に必要ではない構成状態レジスタ（例えば、プログラム・カウンタ（ＰＣ：program counter）、データおよびアドレス・ブレーク・ポイント・レジスタ、ＰＳＷ、浮動小数点制御などのレジスタ以外のレジスタ）は、メモリに格納される構成状態レジスタである。
【００８８】
１つの例として、記憶領域が、オペレーティング・システムおよびハイパーバイザによって定義され、メモリベースのレジスタを格納するために確保される。１つの実施形態では、物理メモリ領域がアーキテクチャによって指定される（例えば、物理メモリの最初または最後のｎページ）。
【００８９】
少なくとも１つの実施形態では、メモリ内構成状態レジスタが、通常のキャッシュ可能なメモリにマッピングされる。構成状態レジスタが更新される場合、その構成状態レジスタが格納キューに格納される。格納キューは、キュー・メカニズムであるだけでなく、メモリ・アクセスの投機的実行を可能にするために、格納用の位置の名前を変更する方法を効果的に提供する。アドレスの投機的値の複数のバージョンが（キャッシュ内またはシステム・メモリ内の、アーキテクチャ的に正しい順序の位置での信頼できる設計済み値に加えて）、格納キュー内に存在することができる。キャッシュ・エントリは、割り当てられた後に、不規則な順序で更新されてよい。格納は、エントリを格納キューからフラッシュすることによって取り消されてもよい。
【００９０】
したがって、メモリ内構成状態レジスタは、性能を犠牲にすることなく、格納キューを使用することによって更新し、不規則な順序で読み取ることができ、コア内のラッチベースの構成状態レジスタは、プロセッサ内構成状態レジスタの投機的実行のための手段を実装することが、ほとんどの場合、非常に高価であるため、２つのシリアライズおよび順序通りのアクセスによるコストの不利益を強いる。
【００９１】
さらに、値が格納キュー内にない場合、頻繁に使用されるメモリ制御（例えば、メモリ内構成状態レジスタ）が、キャッシュ内で検出され、わずか２〜３サイクル（第１のレベルのキャッシュにアクセスするための時間）で使用可能になることが可能であるため、値の読み取りを、ラッチからよりも効率的に実行することができ、この速度は、プロセッサ内のラッチベースの構成状態レジスタにアクセスするために必要な専用論理よりも非常に高速である。
【００９２】
１つの実施形態では、構成状態レジスタを保持するためのページが割り当てられた場合、アーキテクチャは、メモリのオペランドを使用するページへのアクセスを許可しない。これによって、メモリ操作と、構成状態レジスタからの／への移動命令との間の連結を防ぐ。
【００９３】
本発明のさらに別の態様に従って、構成状態レジスタの１つまたは複数の部分がメモリ内に設けられ、一方、構成状態レジスタの１つまたは複数の他の部分がプロセッサ内に設けられる。例えば、構成状態レジスタは複数の部分（例えば、フィールド）を含んでよく、それらの部分のうちの例えば頻繁にアクセスされる１つまたは複数が、プロセッサ内に残ってよく、例えばあまり使用されない残りの部分が、メモリに移動されてよい。これが、図１４〜図１９を参照してさらに詳細に説明される。
【００９４】
最初に図１４を参照すると、プロセッサ（または別のコンポーネント）のデコード・ユニットが命令を受信する（ステップ１０００）。デコード・ユニット（または別のコンポーネント）によって、命令がＳＰＲへの移動（ｍｔｓｐｒ）命令などの構成状態レジスタへの移動（ｍｔｃｓｒ：move to configuration state register）命令であるかどうかに関する判定が行われる（照会１００２）。命令が構成状態レジスタへの移動命令である場合、その命令が下で説明されているように処理される（ステップ１００４）。
【００９５】
照会１００２に戻ると、命令が構成状態レジスタへの移動命令でない場合、命令がＳＰＲからの移動（ｍｆｓｐｒ）命令などの構成状態レジスタからの移動（ｍｆｃｓｒ：move from configuration state register）命令であるかに関する判定がさらに行われる（照会１００６）。命令が構成状態レジスタからの移動命令である場合、その命令が下で説明されているように処理される（ステップ１００８）。照会１００６に戻ると、命令が構成状態レジスタへの移動命令でも構成状態レジスタからの移動命令でもない場合、従来の命令デコードが実行される（ステップ１０１０）。
【００９６】
さらに別の実施形態では、命令が構成状態レジスタを使用する別の命令であるかどうかに関する他の照会が行われてよく、そのような命令である場合、それららの命令が適切に処理されてよく、その例が本明細書において説明されている。さらに別の実施形態では、命令に対応していない（例えば、例外処理シーケンスを開始している）プロセッサの動作が同様に実行されてよい。
【００９７】
構成状態レジスタへの移動命令の処理に関する詳細が、図１５を参照してさらに説明される。１つの例では、構成状態レジスタが専用レジスタ（ＳＰＲ）であってよく、命令がＳＰＲへの移動（ｍｔｓｐｒ）命令である。ただし、これは１つの例にすぎない。他の構成状態レジスタが同様に処理されてよい。この論理は、例えばプロセッサのデコード・ユニットなどの、プロセッサによって実行される。他の例では、１つまたは複数の他のコンポーネントがこの論理を実行する。
【００９８】
図１５を参照すると、ｍｔｓｐｒ命令などの構成状態レジスタへの移動命令を取得すること（例えば、受信すること、提供されること、選択することなど）に基づいて、命令によって指定された構成状態レジスタ（ＣＳＲ）の少なくとも一部がメモリ内にあるかどうかに関する判定が行われる（照会１１００）。メモリ内にない場合、構成状態レジスタへの移動命令（例えば、ｍｔｓｐｒ）の従来の処理が実行される（ステップ１１０２）。
【００９９】
照会１１００に戻ると、構成状態レジスタの少なくとも一部がメモリ内にある場合、構成状態レジスタ全体がメモリ内にあるかどうかに関する判定がさらに行われる（照会１１０４）。構成状態レジスタ全体がメモリ内にある場合、構成状態レジスタ格納内部動作が生成される（ステップ１１０６）。この内部動作に関連する処理の例が、図９を参照して説明されている。
【０１００】
照会１１０４に戻ると、構成状態レジスタの１つまたは複数の部分のみがメモリ内にある場合、１つまたは複数のメモリ内構成状態レジスタの部分に対する１つまたは複数の構成状態レジスタ格納動作が生成される（ステップ１１１０）。さらに、１つまたは複数のコア内構成状態レジスタの部分に対する更新された内部動作が生成される（ステップ１１１２）。更新された内部動作は、指定されたコア内の部分のデータを含んでいる１つまたは複数の汎用レジスタの内容をコア内構成状態レジスタの適切な部分にコピーする動作を実行する、１つまたは複数の命令、状態マシンなどであってよい。処理が完了する。
【０１０１】
構成状態レジスタからの移動命令の処理に関連付けられた処理に関する詳細が、図１６を参照してさらに説明される。１つの例では、構成状態レジスタが専用レジスタ（ＳＰＲ）であってよく、命令がＳＰＲからの移動（ｍｆｓｐｒ）命令である。ただし、これは１つの例にすぎない。他の構成状態レジスタが同様に処理されてよい。この論理は、例えばプロセッサのデコード・ユニットなどの、プロセッサによって実行される。他の例では、１つまたは複数の他のコンポーネントがこの論理を実行する。
【０１０２】
図１６を参照すると、ｍｆｓｐｒ命令などの構成状態レジスタからの移動命令を取得すること（例えば、受信すること、提供すること、選択することなど）に基づいて、構成状態レジスタの少なくとも一部がメモリ内にあるかどうかに関する判定が行われる。メモリ内にない場合、構成状態レジスタからの移動命令に対して従来の処理が実行される（ステップ１２０２）。
【０１０３】
照会１２００に戻ると、構成状態レジスタの少なくとも一部がメモリ内にある場合、構成状態レジスタ全体がメモリ内にあるかどうかに関する判定がさらに行われる（照会１２０４）。構成状態レジスタ全体がメモリ内にある場合、構成状態レジスタ読み込み内部動作が生成される（ステップ１２０６）。この動作に関連する処理の例が、図８を参照して説明されている。
【０１０４】
照会１２０４に戻ると、構成状態レジスタの１つまたは複数の部分のみがメモリ内にある場合、メモリ内構成状態レジスタの部分のうちの１つまたは複数に対する１つまたは複数の構成状態レジスタ読み込み内部動作が生成される（ステップ１２１０）。さらに、１つまたは複数のコア内構成状態レジスタの部分に対する１つまたは複数の読み込み内部動作が生成される（ステップ１２１２）。
【０１０５】
さらに、１つの実施形態では、メモリ内の部分およびコア内の部分をアーキテクチャによって定義された構成状態レジスタのイメージに結合するために、１つまたは複数の内部動作が生成される（ステップ１２１４）。これは例えば、下で説明されているように、マスク下挿入命令、あるいはＯＲ、ＡＮＤ、もしくはＮＯＴ、あるいはその組合せの論理回路を使用することを含んでよい。
【０１０６】
１つまたは複数の部分がプロセッサ内にあり、１つまたは複数の部分がメモリ内にある複合構成状態レジスタの使用に関する詳細が、図１７を参照してさらに説明され、図１７では読み取り参照が説明される。この論理は、例えばプロセッサのデコード・ユニットなどの、プロセッサによって実行される。他の例では、１つまたは複数の他のコンポーネントがこの論理を実行する。
【０１０７】
図１７を参照すると、複合構成状態レジスタの読み取り参照１３００に基づいて、アクセスされている特定の部分（コンポーネント（例えばフィールド）とも呼ばれる）がメモリ内にあるかプロセッサ内にあるかに関する判定が行われる（照会１３１０）。特定の部分がプロセッサ内にある場合、プロセッサ内のコンポーネントがアクセスされ（ステップ１３２０）、処理が下で説明されている照会１３５０に進む。しかし、特定のコンポーネントがメモリ内にある場合（照会１３１０）、図１０を参照して説明された処理が実行される。例えば、メモリ・ベース・アドレス（ベース）が取得され（ステップ１３３０）、複合構成状態レジスタを参照する命令内で示されたレジスタ番号も取得される（ステップ１３３２）。レジスタ番号がオフセットにマッピングされ（ステップ１３３４）、アドレス（ベース＋オフセット）から一時的レジスタへの読み込みが実行される（ステップ１３３６）。次に、一時的レジスタが使用される（ステップ１３３８）。その後、またはステップ１３２０の後に、複合構成レジスタの別のコンポーネントがアクセスされるかどうかに関する判定が行われる（照会１３５０）。複合構成レジスタの別のコンポーネントがアクセスされる場合は、処理が照会１３１０を続行する。複合構成レジスタの別のコンポーネントがアクセスされない場合は、処理が完了する。
【０１０８】
１つまたは複数の部分がプロセッサ内にあり、１つまたは複数の部分がメモリ内にある複合構成状態レジスタの使用に関する詳細が、図１８を参照してさらに説明され、図１８では書き込み参照が説明される。この論理は、例えばプロセッサのデコード・ユニットなどの、プロセッサによって実行される。他の例では、１つまたは複数の他のコンポーネントがこの論理を実行する。
【０１０９】
図１８を参照すると、複合構成状態レジスタの書き込み参照１３６０に基づいて、アクセスされている特定の部分（コンポーネント（例えばフィールド）とも呼ばれる）がメモリ内にあるかプロセッサ内にあるかに関する判定が行われる（照会１３７０）。特定の部分がプロセッサ内にある場合、プロセッサ内のコンポーネントがアクセスされ（ステップ１３９０）、処理が下で説明されている照会１３８８に進む。しかし、特定のコンポーネントがメモリ内にある場合（照会１３７０）、図１１を参照して説明された処理が実行される。例えば、メモリ・ベース・アドレス（ベース）が取得され（ステップ１３８０）、複合構成状態レジスタを参照する命令内で示されたレジスタ番号も取得される（ステップ１３８２）。レジスタ番号がオフセットにマッピングされ（ステップ１３８４）、ベース＋オフセットによって定義されたアドレスへの格納が実行される（ステップ１３８６）。その後、またはステップ１３９０の後に、複合構成レジスタの別のコンポーネントがアクセスされるかどうかに関する判定が行われる（照会１３８８）。複合構成レジスタの別のコンポーネントがアクセスされる場合は、処理が照会１３７０を続行する。複合構成レジスタの別のコンポーネントがアクセスされない場合は、処理が完了する。
【０１１０】
複合構成状態レジスタの１つの例が、図１９に示されている。図に示されているように、この例では、複合構成状態レジスタ１４００は、整数例外レジスタ（ＸＥＲ）に対応する専用レジスタ（ＳＰＲ）１である。このレジスタは、複数のフィールド１４０２を含んでいる。１つの例では、フィールドのうちの１つまたは複数がプロセッサ内のフィールド１４０４であり、別のフィールド１４０６がメモリ内のフィールドである。この特定の例では、Ｘｅｒｆ０、１、２（すなわち、ＸＥＲのフィールド０、１、および２）の名前が、プロセッサ内ではＳＯ（要約オーバーフロー）、ＯＶ（オーバーフロー）、およびＣＡ（キャリー）に変更され、この例では名前が変更されないＸｅｒｆ３（ＸＥＲのフィールド３）は、メモリ内のバイト・カウント・フィールドである。この構成では、複合構成状態レジスタに対してｍｔｓｐｒおよびｍｆｓｐｒをそれぞれ実行するために、次のＩＯＰシーケンスが生成されて使用されてよい。
【０１１１】
ｍｔｓｐｒ＿ｘｅｒ    ｍｔｘｅｒｆ２
【０１１２】
ｍｔｘｅｒｆ０
【０１１３】
ｍｔｘｅｒｆ１
【０１１４】
ｓｔｘｅｒｆ３
【０１１５】
上記では、ＸＥＲレジスタに対するｍｔｓｐｒは、汎用レジスタの内容がＸＥＲのフィールド２にコピーされる、ＸＥＲのフィールド２への移動（ｍｔｘｅｒｆ２）、汎用レジスタの内容がＸＥＲのフィールド０にコピーされる、ＸＥＲのフィールド０への移動（ｍｔｘｅｒｆ０）、および汎用レジスタの内容がＸＥＲのフィールド１にコピーされる、ＸＥＲのフィールド１への移動（ｍｔｘｅｒｆ１）を含んでいる。ｍｔｓｐｒは、フィールド３がメモリ内にあるため、格納動作によって実行されるＸＥＲのフィールド３への格納（ｓｔｘｅｒｆ３）も含んでいる。
【０１１６】
ｍｆｓｐｒ＿ｘｅｒ    ｍｆｘｅｒｆ２
【０１１７】
ｍｆｘｅｒｆ０
【０１１８】
または
【０１１９】
ｌｄｘｅｒｆ３
【０１２０】
または
【０１２１】
ｍｆｘｅｒｆ１
【０１２２】
または
【０１２３】
ＸＥＲからの移動の場合、プロセッサ内またはメモリ内のいずれかから、フィールドの各々が読み取られ、それらのフィールドが、例えばＯＲ演算によって結合される。例えば、フィールド２およびフィールド０の内容が読み取られ、ＯＲ演算が実行されて結果１を提供し、次に、（例えば、フィールド３がメモリ内にあるため、ｘｅｒｆ３読み込み内部動作（ｌｄｘｅｒｆ３）などの読み込みを使用して）フィールド３の内容が読み取られ、結果１とのＯＲ演算が実行されて結果２を生成する。さらに、フィールド１の内容が読み取られ、結果２とのＯＲ演算が実行されて最終結果を提供し、この最終結果は、プロセッサ内かメモリ内かに関わらず、フィールドを含むＸＥＲのイメージである。
【０１２４】
本明細書において説明されているように、本発明の態様に従って、構成状態レジスタからの移動命令は、プロセッサ内の部分からの移動のシーケンス、およびメモリに格納された部分の読み取りを生成する。メモリ内の部分またはプロセッサ内の部分の読み取りの内容は、例えば、例えばＯＲ命令のシーケンスを使用して、照合される。さらに、構成状態レジスタへの移動命令は、プロセッサ内の部分への移動のシーケンス、およびメモリに格納された部分の格納を生成する。
【０１２５】
１つの態様では、メモリが構成状態レジスタに割り当てられた場合、オフセットがアーキテクチャよって指定される（例えば、定義されて外部から見える）か、またはマイクロアーキテクチャによって指定される（定義されるが、外部からは見えない）。例えば、オフセットは、構成状態レジスタ番号（またはその他の指示）から直接導き出されてよい。
【０１２６】
１つの例はマッピングであり、各構成状態レジスタが、対応するオフセット（ダブルワード単位）、すなわち、ベース＊構成状態レジスタ番号にマッピングされ、構成状態レジスタ１が第１の位置にあり、構成状態レジスタ２が、第１の位置に定義されたバイト数（例えば８）を加算した位置にある、などとなる。
【０１２７】
しかし、構成状態レジスタ番号は連続しておらず、メモリを浪費し、キャッシュ効率を低下させる。したがって、本発明の態様に従う別の実施形態では、メモリ・ページへのオフセットを直接導き出すために構成状態レジスタ番号が使用されず、機能的類似性に基づいて構成状態レジスタにオフセットが割り当てられる。したがって、キャッシュ局所性を向上させるために、共通の動作において一緒に使用される構成状態レジスタが、同じキャッシュ・ラインまたは隣接するキャッシュ・ラインに割り当てられる。例えば、ＥＢＢ処理は、例えばレジスタＥＢＢＨＲ、ＥＢＢＲＲ、ＢＥＳＣＲ、およびＴＡＲを使用する。ＴＡＲは、他のレジスタに隣接していない。しかし、これらのレジスタは、最終的に同じキャッシュ・ライン内または隣接するキャッシュ・ライン内に存在するように、すべてメモリに割り当てられる。
【０１２８】
線形マッピングの１つの例が、図２０〜図２１に示されている。図に示されているように、１つの例では、線形マッピング１５００はスパースである。例えば、１つの例では、１Ｋ未満の構成状態レジスタがマッピングされたとしても、８ＫＢ（２ページ）が使用される。さらに、ＥＢＢＨＲ、ＥＢＢＲＲ、ＢＥＳＣＲ、およびＴＡＲなどの共同で使用される構成状態レジスタは、隣接していない。さらに、構成状態レジスタのグループは、同じキャッシュ・ライン（例えば、７７９  ＭＭＣＲ０、７８０  ＳＩＡＲ、７８１  ＳＤＡＲ、７８２  ＭＭＣＲ１）内にあることを保証するために、アライメント境界上にない。さらに、一部の構成状態レジスタは、同じレジスタ（例えば、異なるアクセス許可、サブフィールドなど）を参照することがある。これは、非効率的なキャッシュの使用である。（各活動で１回のキャッシュ・ミスのみが発生することを保証するための）プリフェッチが欠如しており、大きすぎるキャッシュ・フットプリントが存在する（その結果、ヒット率を減らすワーキング・セットが増加する）。したがって、本発明の態様に従って、構成状態レジスタは、例えばベース＋（ｉｄｘ＊８）に格納されない。構成状態レジスタは、例えばベース＋再マッピング［ｉｄｘ］に格納される。
【０１２９】
この再マッピングは、キャッシュ・ラインを共有するために、グループが隣接することを保証し、スパース性を除去／低減して、より効率的なキャッシュの使用を実現し、複数の名前を処理する。１つの例として、この再マッピングは静的であり、プロセッサの設計で実行され、テーブルなどのデータ構造において提供されるか、または定義された方程式の計算によって提供される。別の例として、この再マッピングは動的であり、使用によって決定される。例えば、レジスタの追跡が、レジスタのセットのうちの複数のレジスタが一緒に使用されることを示した場合、それらのレジスタがグループ化され、互いに隣接して配置される。その他の可能性が存在する。
【０１３０】
再マッピングの詳細が、図２２を参照してさらに説明される。この処理は、プロセッサによって実行される。１つの例では、構成状態レジスタ番号がプロセッサによって取得される（ステップ１６００）。構成状態レジスタ番号に基づいて、メモリ・ユニット（例えば、ページ）へのインデックス位置（オフセットとも呼ばれる）が決定される（ステップ１６０２）。このインデックス位置は、テーブル検索によって、または計算によって決定されてよい。インデックス位置が要求側（例えば、内部動作）に返される（ステップ１６０４）。
【０１３１】
さらに別の例では、マッピング論理を含んでいる回路が使用される。構成状態レジスタ番号がマッピング論理に入力され、出力はページ・インデックスである。
【０１３２】
前述したように、１つの実施形態では、より効率的なキャッシュを可能にするために、一緒に使用される構成状態レジスタが互いに近接して配置されるように、アーキテクチャで定義された構成状態レジスタ番号が再マッピングされる。これによって、構成状態レジスタに使用されるキャッシュ・ラインの数を減らし、キャッシュの使用に関して、他のプログラムとの競合を少なくする。さらに、これによって、特定の構成状態レジスタと共にキャッシュ・ラインが読み込まれ、その値のキャッシュ・ミスに対してペナルティが支払われた後に、その構成状態レジスタと連動して使用されてもよい他の構成状態レジスタが、キャッシュ内でヒットし、その結果、他のキャッシュ・ミス・ペナルティを伴わない、ということを保証する。
【０１３３】
さらに別の実施形態では、異なるオフセット割り当てが可能である場合に、ｓｙｎｃ＿ｏ＿ｃｓｒ命令がバージョン・スタンプをページに内に書き込む。バージョン・スタンプは、異なるホスト間でパーティションを移行するときにオフセットを調整するため、またはオフセットを（例えば、ｓｙｎｃ＿ｉ＿ｃｓｒがパーティションのオフセットのバージョン番号を読み取るときに）ハードウェア内で直接調整するか、もしくはソフトウェア内で調整するため、あるいはその両方のために、使用されてよい。
【０１３４】
本発明の別の態様に従って、複数の構成状態レジスタを格納するか、または読み込む一括動作を実行するための能力が提供される。構成状態レジスタの個別の読み込みまたは格納は、各読み取りまたは書き込みが順序通りに実行され、次の命令が開始される前に完了するため、高価になる。さらに、プロセッサ内構成状態レジスタの名前変更の欠如がロールバックを許可しないため、正しい例外／エラー・シーケンスが保証される。しかし、本発明の１つまたは複数の態様に従って、メモリ・ユニット（ページなど）からの構成状態レジスタの一括読み込みおよび一括格納が提供される。
【０１３５】
例えば、構成状態レジスタ格納命令または動作（例えば、ＳＴ＿ＣＳＲ）が、複数のプロセッサ内構成状態レジスタをメモリに格納する（すなわち、現在のコンテキスト（例えば、アプリケーション、スレッドなど）に関連付けられた構成状態レジスタの内容を、特定の構成状態レジスタに対して定義された、選択されたメモリ位置に格納する）ために使用され、構成状態レジスタ読み込み命令または動作（例えば、ＬＤ＿ＣＳＲ）が、メモリに格納された構成状態レジスタをプロセッサに再び読み込む（すなわち、現在のコンテキストに関連付けられた構成状態レジスタの内容をメモリからプロセッサに再び読み込む）ために使用される。
【０１３６】
メモリに格納されてよいプロセッサ内（メモリによって補助されていない、とも呼ばれる）構成状態レジスタには、メモリ内（例えば、補助メモリ・ユニット（例えば、ページ）内）の位置が割り当てられる。１つの例では、メモリ位置またはメモリ・ユニットあるいはその両方は、明確に定義された定義済みの位置／ユニットであり、したがって命令は、位置／ユニットを指定するためのオペランドを含む必要がない。別の実施形態では、特定の位置／ユニットは、命令のオペランドとして指定されてよい。さらに別の実施形態では、各命令が、格納される／読み込まれる特定のレジスタを示すためのオペランドを含んでよい。その他の変形も可能である。
【０１３７】
さらに、ページは、メモリ・ユニットの１つの例にすぎない。その他のユニットが可能である。また、ページは通常４ＫＢであるが、他の実施形態では他のサイズであってよい。多くの可能性が存在する。
【０１３８】
前述したＳＴ＿ＣＳＲ命令およびＬＤ＿ＣＳＲ命令に加えて、本発明の態様に従って使用されてよい別の命令は、ｍｔｓｐｒ  ＴＣＢＲ、ｎｅｘｔ＿ｕ−＞ｃｓｒ＿ｐａｇｅである。この命令は、特定のコンテキスト（例えば、プロセッサ、スレッドなど）に関するメモリ内構成状態レジスタをレジスタ（ＴＣＢＲなど）に格納するために使用されるメモリ領域のベース・アドレスを読み込むために使用される。その後、このアドレスは、本明細書において説明されているように、ベース・アドレスを採用する処理において使用される。この命令では、ｎｅｘｔ＿ｕ−＞ｃｓｒ＿ｐａｇｅは、命令を発行するコンテキストに関するデータを格納するユーザ・データ構造を参照する。このデータは、メモリ内構成状態レジスタを格納するメモリ・ユニット（例えば、ページ）のベース・アドレスを含む。ｍｔｓｐｒが指定されているが、他の構成状態レジスタへの移動（ｍｔｃｓｒ）命令が使用されてよい。また、ＴＣＢＲはベース・レジスタの１つの例にすぎない。他のベース・レジスタが指定されてよい。多くの変形が可能である。
【０１３９】
上記の命令に加えて、キャッシュをメモリまたはプロセッサ内レジスタと同期させるための２つの同期命令が提供されてよい。例えば、ｓｙｎｃ＿ｏ＿ｃｓｒは、キャッシュおよび１つまたは複数のメモリ内構成状態レジスタを同期させるために使用され、ｓｙｎｃ＿ｉ＿ｃｓｒは、キャッシュおよび１つまたは複数のプロセッサ内構成状態レジスタを同期させるために使用される。
【０１４０】
本明細書において説明されているように、１つの態様では、複数の構成状態レジスタが読み込まれるか、または格納される。介在する例外は存在せず、すなわち、例外が回避され、動作が、動作のすべての構成状態レジスタに対して完了するか、またはどの構成状態レジスタに対しても完了しない。さらに、ページ・フォールトが存在しない（例えば、ページが固定され、ページが読み込まれた後でも、同じページへの参照が保証される）。必要に応じて、ハードウェアが、プロセスを再開可能にすることができる（例えば、マイクロコードまたは状態マシン内の読み込みまたは格納シーケンス）。
【０１４１】
図２３〜図２５を参照して説明されているように、複数の構成状態レジスタを格納する／読み込む命令を使用することによって、順序通りの位置を保証し、命令を順序通りに完了するなどの、特定の高価な動作があまり頻繁に使用されなくなる。図２３〜図２５の処理は、プロセッサによって実行される。
【０１４２】
図２３を参照すると、複数の構成状態レジスタをメモリに格納するために個別の命令（すなわち、一括動作ではない）を使用する１つの例が、図２３を参照して説明される。１つの例では、構成状態レジスタをメモリに移動するために、構成状態レジスタからの移動命令および格納命令が使用される。例えば、１つの例では、構成状態レジスタがＳＰＲであり、構成状態レジスタからの移動命令がｍｆｓｐｒである。他の構成状態レジスタおよび対応する命令が使用されてよい。
【０１４３】
この例では、ＳＰＲからの移動（ｍｆｓｐｒ）命令などのｍｆｓｐｒ命令の実行に基づいて、順序通りの位置が保証される（ステップ１７００）。その後、命令によって指定された構成状態レジスタ（例えば、ＳＰＲ）の内容が、構成状態レジスタから、例えば汎用レジスタ（ＧＰＲ：general purpose register）にコピーされる（ステップ１７０２）。命令が順序通りに完了する（ステップ１７０４）。その後、格納命令（ＳＴＤ）を介して、汎用レジスタの内容がメモリに格納される（ステップ１７０６）。この同じプロセスが、多数の構成状態レジスタであってよいメモリに格納される構成状態レジスタごとに、繰り返される（例えば、ステップ１７０８〜１７２２）。したがって、メモリに格納される構成状態レジスタごとに、順序通りの位置を保証し、順序通りに命令を完了する動作が必要になる。
【０１４４】
しかし、本発明の態様に従って、図２４を参照して説明されているように、順序通りの位置を保証する単一の動作および順序通りに命令を完了する単一の動作を使用して、複数の構成状態レジスタをメモリに格納する構成状態レジスタ格納（ＳＴ＿ＣＳＲ）命令が提供される。
【０１４５】
図２４を参照すると、構成状態レジスタ格納命令（ＳＴ＿ＣＳＲ）の実行に基づいて、順序通りの位置に達する（ステップ１７５０）。次に、選択された構成状態レジスタの内容が一時的レジスタに読み込まれる（ステップ１７５２）。さらに次に、一時的レジスタの内容がメモリ（例えば、メモリ制御ページ（memory control page））に格納される（ステップ１７５４）。１つまたは複数の追加の構成状態レジスタに対して、読み込み／格納動作が、１回または複数回、繰り返される（１７５６〜１７６２）。選択された構成状態レジスタ（多数のそのようなレジスタであってよい）をメモリにコピーした後に、命令が順序通りに完了する（ステップ１７７０）。
【０１４６】
１つの例では、ＳＴ＿ＣＳＲ命令が、コピーされるレジスタを指定するためのオペランドを含まず、代わりに、現在のコンテキスト（例えば、プロセス、スレッドなど）のプロセッサ内構成状態レジスタのすべてがコピーされる。別の例では、メモリにコピーされる１つまたは複数の構成状態レジスタを指定するためのオペランドが含まれ、使用されてよい。その他の変形も可能である。
【０１４７】
さらに別の例では、一括読み込み動作（例えば、ＬＤ＿ＣＳＲ）を使用して、複数の構成状態レジスタがメモリからプロセッサ内にコピーされてよい。
【０１４８】
図２５を参照すると、構成状態レジスタ読み込み（ＬＤ＿ＣＳＲ）命令の実行に基づいて、順序通りの位置が保証される（ステップ１７８０）。次に、選択された構成状態レジスタの内容がメモリから取得され、一時的レジスタに読み込まれる（ステップ１７８２）。その後、一時的レジスタの内容が、対応するプロセッサ内構成状態レジスタに格納される（ステップ１７８４）。１つまたは複数の（場合によっては、多数の）追加の構成状態レジスタに対して、読み込み／格納動作が、１回または複数回、繰り返される（１７８６〜１７９２）。その後、命令が順序通りに完了する（ステップ１７９４）。
【０１４９】
１つの例では、ＬＤ＿ＣＳＲ命令が、コピーされるレジスタを指定するためのオペランドを含まず、代わりに、現在のコンテキスト（例えば、プロセス、スレッドなど）の構成状態レジスタのすべてがコピーされる。別の例では、メモリからコピーされる１つまたは複数の構成状態レジスタを指定するためのオペランドが含まれ、使用されてよい。
【０１５０】
１つの態様では、一括動作を実行するための命令が、構成状態レジスタのグループに対して同じ動作（例えば、格納、読み込みなど）を実行してよく、このグループは共通の特徴によって定義される。この共通の特徴は、例えば、レジスタの数値範囲、同じアクセス許可またはコンテキスト（例えば、ユーザ、オペレーティング・システム、ハイパーバイザ）を有していること、同じ機能的目的（例えば、例外処理、時間管理など）を有していること、または同じ実装の特性（例えば、構成状態レジスタのセットがメモリに格納されている）を有していること、などであってよい。
【０１５１】
一括格納または一括読み込みあるいはその両方の動作の使用は、コンピュータ内の処理を改善する。例えば、一括格納動作を使用して複数の構成状態レジスタをメモリに効率的にコピーすることによって、コンテキスト切り替え処理がより高速かつ効率的に実行されてよい。その他の恩恵が実現されてもよい。
【０１５２】
さらに別の態様では、処理を容易にするために、構成状態レジスタが格納されるメモリ内の位置を示すアーキテクチャの配置制御が提供されてよい。例えば、ハードウェアが、構成状態レジスタが格納されるメモリ内の位置を識別するための制御のセットを定義する。１つの例として、アプリケーションの状態を格納するためのベース・アドレスを指定する少なくとも１つの構成状態レジスタが、提供される。１つの例として、ベース・アドレスがゲスト物理アドレスであり、すなわち、ゲスト・オペレーティング・システムが、それ自身のアドレス空間内のアドレスを指定する。例えば、アドレスが指定される場合、ゲストがホスト物理アドレスを指定できるようにすると、仮想化およびセキュリティを損なうことがあるため、ゲスト・レベルのアドレス（例えば、ゲスト実アドレス、ゲスト物理アドレス、またはゲスト仮想アドレス）が指定される。
【０１５３】
アーキテクチャの構成制御の指定に関する詳細が、図２６を参照してさらに説明される。１つの例では、プロセッサがこの論理を実行する。最初に、現在の実行環境（例えば、アプリケーションの状態、スレッドの状態、オペレーティング・システムの状態、ハイパーバイザの状態、特定のゲスト・オペレーティング・システムまたはホスト・オペレーティング・システムのレベルなど）に関するメモリ補助の位置を示すアドレス（すなわち、ベース・アドレス）が受信される（ステップ１８００）。例えば、仮想マシン／論理パーティションに関して、ハイパーバイザはハイパーバイザのアドレス（例えば、ホスト仮想アドレスまたはホスト絶対アドレス、ホスト物理アドレス、ホスト実アドレス）を使用し、オペレーティング・システムはゲスト実アドレスまたはゲスト仮想アドレスを使用する。プロセッサは、構成状態レジスタを格納するためのメモリ・ページの位置を示すアドレス（すなわち、ベース・アドレス）を取得する。
【０１５４】
任意選択的に、ベース・アドレスが物理アドレスに変換される（ステップ１８０２）。（変換がすでに実行されていることがあり、またはアドレスを変換する必要がない）。１つの実施形態では、この変換がページ・フォールトを引き起こすことがある。さらに別の実施形態では、ページ・フォールトを防ぐために、本手法の１つまたは複数の態様を実行する前に、例えばページを固定することによって、連携するハードウェアおよびソフトウェアが使用される。
【０１５５】
さらに、１つの例では、変換されたアドレスが捕捉される（ステップ１８０４）。すなわち、１つの例では、変換されたアドレスがキャッシュされる。別の実施形態では、変換されていないアドレスおよび変換されたアドレスの両方が格納される。
【０１５６】
図２７を参照する別の実施形態では、参照されているメモリ制御（例えば、構成状態レジスタ）に関する捕捉されたアドレスが取得される（ステップ１８５０）。さらに、このアドレスが物理アドレスに変換され（ステップ１８５２）、メモリ内の制御（例えば、構成状態レジスタ）がアクセスされる（ステップ１８５４）。この変換はページ・フォールトを引き起こすことがあるが、連携するハードウェアおよびソフトウェアを使用して、例えば本手法の１つまたは複数の態様を実行する前にページを固定することによって、ページ・フォールトを防ぐことができる。
【０１５７】
１つの実施形態では、循環する依存関係を防ぐために、ベース・アドレスが、例えばメモリではなく、構成状態レジスタに格納される。その他の例が可能である。
【０１５８】
さらに、１つの実施形態では、ベース・アドレスが物理アドレス／実アドレスに変換され、別の実施形態では、ベース・アドレスが次のレベルのスーパーバイザのアドレスに変換される（すなわち、オペレーティング・システムがページ・アドレスを設定するときに、ベース・アドレスがスーパーバイザのアドレスに変換される）。その他の例が可能である。
【０１５９】
１つの例として、変換されていない（物理／実）ベース・アドレスおよび変換された（物理／実）ベース・アドレスの両方が格納される。これによって、すべての構成状態レジスタのアクセスでアドレス変換（例えば、動的アドレス変換（ＤＡＴ：dynamic address translation））を実行する必要がなくなり、ページ・フォールトを処理する必要がなくなる。
【０１６０】
１つの実施形態では、変換された（実／物理）ベース・アドレスがプロセッサのレジスタ内で維持され、変換されていないベース・アドレスがメモリ内構成状態レジスタ内で維持される。そのような実施形態では、構成状態レジスタのベース・アドレスの読み出しのソフトウェア要求に応答して、変換されていないアドレスが再度提供される。変換されたアドレスは、メモリ内の位置からそのようなアドレスにアクセスするために使用されてよい。その他の可能性が存在する。
【０１６１】
本明細書において説明されているように、１つまたは複数のメモリ内構成状態レジスタが格納されるメモリ内の位置を指定するベース・アドレスを含んでいる、構成状態レジスタなどの制御が提供される。これらのメモリ内構成状態レジスタは、プロセッサ内レジスタになるようにアーキテクチャによって定義されたレジスタであるが、本発明の１つまたは複数の態様に従って、メモリ内構成状態レジスタに変換されている。少なくとも、メモリに格納される構成値がレジスタではなく、メモリ内に存在するようにアーキテクチャによって定義されているため、これらのメモリ内構成状態レジスタは、メモリに格納される構成値とは異なっている。メモリに格納される構成値は、アーキテクチャによって定義されたプロセッサのレジスタではない。
【０１６２】
さらに別の態様では、プログラム環境と、例えばオペレーティング・システム環境もしくはその他のスーパーバイザ環境との間、または異なるアプリケーションもしくはスレッド間、あるいはその両方などでのコンテキスト切り替え時に、効率が達成される。コンテキスト切り替えが実行されるときに、以前のコンテキストのデータが保存される。１つの例では、コンテキスト・データを保存するために、構成状態レジスタの内容がプロセッサ内レジスタから読み出されて、メモリに保存される。次に、実行を再開するために構成状態レジスタを読み込むことを含めて、次のコンテキストのデータが読み込まれる。これは高価なプロセスである。
【０１６３】
格納キューに基づく投機および不規則な順序での実行がこのプロセスを加速する、メモリ内構成状態レジスタの実行を伴う本発明の態様に従っても、コンテキストの保存および復元に関連する大きなコストが、やはり存在する。
【０１６４】
したがって、本発明の態様に従って、構成状態レジスタのページ操作によってコンテキスト切り替えが実行される。１つの例では、構成状態レジスタのメモリ内格納の位置が構成可能である。コンテキストを切り替えるときに、古い構成状態レジスタのデータを構成状態レジスタのメモリ・ユニット（またはページ）からコピーし、新しいデータを構成状態レジスタのページにコピーする代わりに、異なる構成状態レジスタのメモリ・ユニット（またはページ）が選択され、それによって、プロセッサから見える構成状態レジスタの値を変更する。
【０１６５】
本発明の態様に従って、構成状態レジスタのアンロードおよび再読み込みが必要となるのを避けるために、１つまたは複数の構成状態レジスタのメモリ内の位置（本明細書ではＣＳＲ補助メモリと呼ばれる）を示す、例えばベース構成状態レジスタ（本明細書ではベース・レジスタと呼ばれる）に含まれているベース・ポインタまたはベース・アドレス（本明細書ではベースと呼ばれる）を変更することによって、コンテキスト切り替えが実行される。
【０１６６】
この態様から恩恵を受けることができるコンテキスト切り替えは、オペレーティング・システムが異なるアプリケーション間で切り替えを実行する、オペレーティング・システムのコンテキスト切り替え、ハイパーバイザまたは仮想マシン・モニタが異なるパーティションまたは仮想マシンを切り替える、ハイパーバイザのコンテキスト切り替え、および異なるハードウェア・スレッド間のハードウェア・スレッドのコンテキスト切り替えを含めて、複数の種類が存在する可能性がある。各コンテキスト切り替えは、異なるレジスタに影響を与える。例えば、オペレーティング・システムによって使用されるコンテキスト切り替えの一部としてアプリケーションを切り替えるときに、そのアプリケーションに対応するいくつかの構成状態レジスタが別の位置に変更されるが、他の構成状態レジスタは変更されない（例えば、オペレーティング・システムの構成状態レジスタは変更されない）。さらに、ハイパーバイザのコンテキスト切り替えでは、切り替えられるさらに多くのレジスタが存在することがある。ハードウェア・スレッドのコンテキスト切り替えの場合も同様である。さらに、以下では、ハードウェア・スレッドのコンテキスト切り替えに関する詳細が説明される。
【０１６７】
１つの実施形態では、ハードウェア・スレッドのコンテキスト切り替えの場合、プロセッサが、スレッド・スケジューラを使用して、プロセッサに読み込まれる複数のスレッドから選択する。しかし、本発明の態様に従って、ハードウェアが、ハードウェアによってスケジューリングされ得る複数のスレッドから選択してよく、この複数のスレッドの数は、プロセッサに読み込まれるハードウェア・スレッドのコンテキストの数を超える。すなわち、本発明の態様に従って、本明細書において説明されているように、コンテキスト切り替えの能力は、ハードウェアが、プロセッサに読み込まれるスレッドよりも多くのスレッドを使用できるようにする。スレッドが選択され、ハードウェアが、そのスレッドのメモリ内構成情報を選択することによって、スレッドをスケジューリングする。１つの実施形態では、実行可能なレジスタの一部が、チップ上のレジスタ・ファイルまたは高速な第２のレベルのストレージに格納される。別の実施形態では、汎用レジスタも、メモリ内の構成ページに格納され、スレッドがスケジューリングされるときに、そこから読み込まれる。これは、必要性が生じたときに（例えば、最初にアクセスされたときに、各レジスタに対して）、または一括して（例えば、スケジューリングされた時間にすべてのレジスタに対して）、実行される。
【０１６８】
１つの実施形態では、ソフトウェア・エージェント（例えば、オペレーティング・システムまたはハイパーバイザ）に、別の構成状態レジスタのベースへのポインタを変更することを決定させるのではなく、ハードウェアが、ハードウェアの基準に応答して、ベース・ポインタ自体を調整する。ハードウェアにおいて複数のスレッドのうちの１つが選択され、複数のスレッドに基づいて、構成状態レジスタを含んでいるシステム・メモリ・ページへのポインタのうちの１つが選択される。
【０１６９】
コンテキスト切り替えを実行することに関連する詳細が、図２８および図２９を参照してさらに説明される。図２８は、データがコピーされるコンテキスト切り替えを実行するための１つのプロセスを示しており、図２９は、本発明の態様に従ってポインタが変更されるコンテキスト切り替えを実行するための別のプロセスを示している。
【０１７０】
最初に図２８を参照すると、コンテキスト切り替えが実行される場合、コンテキストのコピーアウトが、古いコンテキスト・データをコピーアウトするように初期化される（ステップ１９００）。この初期化は、以前のコンテキストのコンテキスト構造（例えば、スーパーバイザ構造）の位置を特定し、読み出されるコンテキストの第１の構成状態レジスタを識別することを含む。
【０１７１】
例えば、コンテキストは、仮想マシン、論理パーティション、プロセス、スレッドなどのうちの１つであることができる。コピーアウト・プロセスが続行する。
【０１７２】
格納される構成状態レジスタが選択される（ステップ１９０２）。この反復では、この構成状態レジスタは、上で識別された構成状態レジスタである。選択された構成状態レジスタが読み取られ（ステップ１９０４）、コンテキスト切り替えデータを格納するために、構成状態レジスタの内容が、例えばスーパーバイザ・ソフトウェア（またはハードウェア）によって維持されるメモリ内の構造に格納される（ステップ１９０６）。次に、コンテキストが切り替えられる構成状態レジスタがさらに存在するかどうかに関する判定が行われる（照会１９０８）。そのような構成状態レジスタが存在する場合は、処理がステップ１９０２を続行する。
【０１７３】
以前のコンテキストのデータをコピーアウトした後に、新しいコンテキストに関して、コピーイン・プロセスが実行される。したがって、コンテキストのコピーインが初期化され、次のコンテキストのコンテキスト構造の位置が特定され、コンテキスト書き込み用の第１の構成状態レジスタが識別される（ステップ１９１０）。メモリに読み込まれる構成状態レジスタが選択され（ステップ１９１２）、選択された構成状態レジスタの内容がコンテキスト構造（例えば、スーパーバイザ構造）から読み取られる（ステップ１９１４）。読み取られたコンテキスト・データが、メモリ内の構成状態レジスタに書き込まれる（ステップ１９１６）。コンテキストが切り替えられる構成状態レジスタがさらに存在するかどうかに関する判定が行われる（照会１９２０）。そのような構成状態レジスタが存在する場合は、処理がステップ１９１２を続行する。そのような構成状態レジスタが存在しない場合は、処理が完了する。
【０１７４】
図２９を参照すると、本発明の態様に従って、コンテキスト切り替えプロセスの別の例が説明されている。この例では、データをコピーする代わりに、データへのポインタが操作される。最初に、コンテキストのコピーアウトが初期化され、以前のコンテキストのコンテキスト構造（例えば、スーパーバイザ構造またはハードウェア構造）の位置が特定される（ステップ１９５０）。この場合も、コンテキストは、仮想マシン、論理パーティション、プロセス、スレッドなどのうちの１つであることができる。次に、レジスタの内容がメモリに格納されるように、プロセッサ内構成状態レジスタが処理される（ステップ１９５２）。１つの実施形態では、この処理は、図２８を参照して説明されているように、例えばコピー・ループを使用して実行される。別の実施形態では、この処理は、例えば一括コピー動作（例えば、ＳＴ＿ＣＳＲ）を使用して実行される。
【０１７５】
メモリ内構成状態レジスタのデータ・ユニットのアドレス（すなわち、例えば、このコンテキストの構成状態レジスタを格納するために使用されるメモリ・ページのアドレス（ベース・アドレス））が読み取られ（ステップ１９５４）、コンテキスト構造に格納されてよい（ステップ１９５６）。１つの例では、このアドレスが変化せず、そのため、このアドレスを繰り返し読み取ってコンテキスト構造に格納する必要がない。代わりに、このアドレスは、最初に、またはそのページが新しい位置に移動されたときに、格納される。この値は、コンテキスト切り替えデータを格納するために、例えばスーパーバイザ・ソフトウェアまたはハードウェアによって維持されるメモリ内の構造に格納される。
【０１７６】
コピーアウト・プロセスの実行後に、新しいコンテキスト・データを指し示すため、コピーイン・プロセスが利用される。したがって、コンテキストのコピーイン・プロセスが初期化され、次のコンテキストのコンテキスト構造（例えば、スーパーバイザ構造またはハードウェア構造）の位置が特定され、コンテキスト書き込み用の第１の構成状態レジスタが識別される（ステップ１９６０）。次のコンテキストの構成状態レジスタのデータ・ユニットのアドレスが読み込まれる（ステップ１９６２）。すなわち、例えば、新しいコンテキストの構成状態レジスタを格納するためのメモリ・ページのアドレス（ベース・アドレス）が取得される。さらに、メモリ内構成状態レジスタのデータ・ページのアドレス（ベース・アドレス）が書き込まれる（ステップ１９６４）。さらに、プロセッサ内構成状態レジスタが処理される（ステップ１９６６）。１つの例として、例えばコピー・ループまたは一括読み込み（例えば、ＬＤ＿ＣＳＲ）を使用して、このコンテキストのプロセッサ内構成状態レジスタがメモリから読み込まれる。
【０１７７】
前述したように、コンテキスト切り替えにおいてポインタ操作が使用されてよい。これは、仮想マシンの移行にも当てはまる。
【０１７８】
１つの実施形態では、仮想マシン（または論理パーティション）の移行をまたはライブ・マシンの移行あるいはその両方を加速するために、メモリ内レジスタが使用されてよい。１つの例では、従来手法に従ってページが移行されるが、メモリ内構成状態レジスタが移動されない。１つの例として、プロセッサ内構成状態レジスタを捕捉するためにＳＴ＿ＣＳＲ命令または動作が使用されるが、構成状態レジスタが移動されない。メモリ内の構成のメモリ・ページは移動される。
【０１７９】
さらに別の実施形態では、ライブ・マシンの移行の場合、マシンが休止されているときに、メモリ内構成状態レジスタの状態が移動される。複数のコンテキスト（例えば、複数のスレッド／プロセスなど）が存在する場合、この移動が複数のページを含んでよい。
【０１８０】
１つの実施形態では、ホストの移行形式およびターゲットの移行形式に互換性がない場合（例えば、構成状態レジスタが、アーキテクチャの異なる実装によってメモリ内構成状態レジスタのページ内の異なるオフセットにマッピングされる場合）、移行エージェントによって調整が実行される。１つのそのような実施形態では、構成状態レジスタ形式のアーキテクチャまたはマイクロアーキテクチャのバージョン番号が提供され、受信システムがレイアウトを調整する責任を負う。別の実施形態では、受信システムおよび送信システムが転送形式をネゴシエートする。別の実施形態では、転送形式が、例えば構成状態レジスタの値の線形リストまたは＜キー，値＞の対として定義され、このキーは構成状態レジスタ番号であり、この値は構成状態レジスタの値である。
【０１８１】
さらに他の実施形態では、プロセッサが、外部で構成された構成状態レジスタのレイアウト・マップ（例えば、レイアウト識別子を構成状態レジスタに読み込むことによって、ソフトウェアが指定する）に基づいて再マッピング論理を適応させて、複数のバージョンのレイアウトをサポートしてよい。
【０１８２】
少なくとも一部のプロセッサの実施形態では、設計によって、一部の値を、メモリ内レジスタとして識別されたレジスタのカスタムのプロセッサ内の位置にキャッシュしてよい。したがって、コンテキスト切り替えを実行するときに、キャッシュされたコピー（すなわち、個別の古いキャッシュされた値）が同期される。１つの例では、古いキャッシュされた値を無効化することをプロセッサに示すコンテキスト同期命令（ｃｓｙｎｃ）が提供される。この命令は、例えば、コンテキスト切り替えが実行されるたびに実行される。１つの例では、コンテキストのすべての構成状態レジスタに対応するキャッシュされた値が無効化される。他の例では、特定のレジスタのキャッシュされた値が無効化される。
【０１８３】
本明細書において説明されているように、コンテキスト切り替え時に、構成状態レジスタをコピーする代わりに、新しいページが示されてよい。このようにして、構成状態レジスタのコンテキスト・イメージがすでに保存されているため、少なくともメモリ内で維持されている構成状態レジスタに関して、コンテキスト切り替えを減らす。
【０１８４】
さらに、１つの実施形態では、ページ置き換えを伴うコンテキスト切り替えが有効化される。新しいコンテキストのメモリ・ページを読み込む前に、（少なくとも、メモリ内に存続しているレジスタに関して）メモリ・イメージが同期される。
【０１８５】
１つの実施形態に従って、構成状態レジスタ同期命令が提供される。具体的には、この命令は、すべてのキャッシュされた値をフラッシュし、切り替えが実行された後にキャッシュを抑制してよく、反対に、値をキャッシュに再び保存できるということを示してよい。例示的な命令は次を含む。
【０１８６】
送信ＣＳＲの同期    ｓｙｎｃ＿ｏ＿ＣＳＲ
【０１８７】
新しい補助ページの読み込み    ｍｔｓｐｒ  ＴＣＢＲ、ｎｅｘｔ＿ｕ−＞ｓｐｒ＿ｐａｇｅ
【０１８８】
受信ＳＰＲの同期    ｓｙｎｃ＿ｉ＿ＣＳＲ
【０１８９】
別の実施形態では、ベース・レジスタ（例えば、ＴＣＢＲ）への構成状態レジスタへの移動命令（例えば、ｍｔｓｐｒ命令）が、キャッシュされた送信値および受信値の同期を自動的に実行する。
【０１９０】
さらに別の態様では、１つまたは複数のメモリ内構成状態レジスタを格納するために使用されるメモリ内の位置を示す、ベース構成状態レジスタに格納されてよい、ゲスト・ベース・アドレス（guest base address）を読み込むことに基づいて、ページ・フォールトの可能性を防ぐために、ゲスト・ベース・アドレスから対応するホスト・ベース・アドレスへのアドレス変換が実行される。この変換は、例えば直ちに（すなわち、ベース・アドレスを受信することに基づいて、ベース・アドレスを使用する前に、例えばストレージの参照中に）実行される。例えば、仮想アドレスがベース・レジスタに読み込まれるときに（例えば、ゲスト・ベース・アドレスを、ベース・アドレスとして使用される構成状態ベース・レジスタ（例えば、ＴＣＢＲ）に読み込むことなどの、ベースへの読み込み）、システムが物理メモリ・アドレスへのアドレス変換を自動的に実行し、変換された物理アドレスが仮想アドレスと共に捕捉される。１つのアーキテクチャの実施形態に従って、ベース・レジスタへの読み込みが、変換の実行を引き起こすか、または引き起こす可能性のある命令として識別される。
【０１９１】
アドレスを変換できない場合、変換フォールトが選択される。例えばページ・テーブル・エントリ（下で説明される）で指定された許可に従って、ページが読み取りおよび書き込みのためにアクセス可能になるか、またはページ・フォールトが引き起こされる。
【０１９２】
実行されるベース・アドレスの変換を引き起こすか、または引き起こす可能性のある動作の実行に基づいてアドレス変換を自動的に実行することに関する詳細が、図３０を参照してさらに説明される。この処理はプロセッサによって実行され、１つの例では、この処理は、構成状態レジスタ・メモリ・ベース・レジスタに対する構成状態レジスタへの移動命令（例えば、ｍｔｓｐｒ命令）の実行に基づいて実行される。この処理は、その他の命令の実行に基づいて実行されてもよい。
【０１９３】
この命令の実行に基づいて、現在の実行環境に関するメモリ補助の位置を示すアドレス（例えば、ベース・アドレス）が受信される（ステップ２０００）。ｍｔｓｐｒの１つの定義に従って、場合によっては動的アドレス変換（ＤＡＴ）のページ・フォールトを招くように、ｍｔｓｐｒが定義される。したがって、本発明の態様に従って、変換が必要とされるということを決定する前であっても、ｍｔｓｐｒの一部としてアドレス変換が自動的に実行される。
【０１９４】
受信されたベース・アドレスが、例えばＤＡＴテーブルを使用して、物理ベース・アドレスに変換され（ステップ２００２）、その例が下でさらに説明される。ＤＡＴ変換フォールトが発生したかどうかに関する判定が行われる（照会２００４）。ＤＡＴ変換フォールトが発生した場合、ＤＡＴページ・フォールトが示される（ステップ２００６）。ページ・フォールト・ハンドラ・ソフトウェア・ルーチンに入り（ステップ２００８）、ページ・フォールト・ハンドラが実行される（ステップ２０１０）。１つの例では、このフォールトが許容されるフォールト（例えば、ページ・アウト）である場合、ページ・フォールト・ハンドラに従って、命令が再開される。そうでない場合、コンテキストまたは実行環境（例えば、オペレーティング・システム、ハイパーバイザ、仮想マシン、スレッド、プロセスなど）がエラー指示を受信し、場合によってはコンテキストの終了を引き起こす。
【０１９５】
照会２００４に戻り、ＤＡＴ変換フォールトが存在しない場合、変換されていないベース・アドレスが捕捉される（例えば、レジスタに格納される）（ステップ２０１２）。さらに、変換されたベース・アドレスが捕捉される（例えば、キャッシュされる）（ステップ２０１４）。任意選択的に、対象のページが固定される（ステップ２０１６）。
【０１９６】
動的アドレス変換の一例に関する詳細が、図３１〜図３２を参照してさらに説明される。この処理は、プロセッサによって実行される。
【０１９７】
動的アドレス変換は、仮想アドレスを対応する実（または絶対）アドレスに変換するプロセスである。動的アドレス変換は、ＣＰＵによって生成された命令アドレスおよびデータ・アドレスに対して指定されてよい。仮想アドレスは、一次仮想アドレス、二次仮想アドレス、ＡＲ（Access Register：アクセス・レジスタ）によって指定された仮想アドレス、またはホーム仮想アドレスであってよい。アドレスは、一次アドレス空間制御要素（ＡＳＣＥ：address space control element）、二次アドレス空間制御要素、ＡＲによって指定されたアドレス空間制御要素、またはホーム・アドレス空間制御要素をそれぞれ用いて変換される。適切なアドレス空間制御要素の選択後の変換プロセスは、４種類の仮想アドレスのすべてで同じである。アドレス空間制御要素は、セグメント・テーブル指定または領域テーブル指定であってよい。セグメント・テーブル指定または領域テーブル指定は、実ストレージまたは絶対ストレージ内でオペレーティング・システムによって確立されたテーブルを用いて実行される変換を引き起こす。
【０１９８】
変換のプロセスにおいて、セグメント・テーブル指定または領域テーブル指定を使用するときに、情報の３種類の単位（領域、セグメント、およびページ）が認識される。それに応じて、仮想アドレスが４つのフィールドに分割される。１つの例では、６４ビット・アドレスの場合、ビット０〜３２が領域インデックス（ＲＸ：region index）と呼ばれ、ビット３３〜４３がセグメント・インデックス（ＳＸ：segment index）と呼ばれ、ビット４４〜５１がページ・インデックス（ＰＸ：page index）と呼ばれ、ビット５２〜６３がバイト・インデックス（ＢＸ：byte index）と呼ばれる。仮想アドレスのＲＸの部分は、それ自体が３つのフィールドに分割される。１つの実施形態では、ビット０〜１０が領域の第１のインデックス（ＲＦＸ：region first index）と呼ばれ、ビット１１〜２１が領域の第２のインデックス（ＲＳＸ：region second index）と呼ばれ、ビット２２〜３２が領域の第３のインデックス（ＲＴＸ：region third index）と呼ばれる。
【０１９９】
仮想アドレスを実アドレスに変換する１つの例が、図３１を参照して説明される。このプロセスは、本明細書ではＤＡＴウォーク（またはページ・ウォーク）と呼ばれ、ＤＡＴウォークでは、アドレス変換テーブル内を進んで、あるアドレス（例えば、仮想アドレス）を別のアドレス（例えば、実アドレス）に変換する。この例では、アドレス空間制御要素（ＡＳＣＥ）２１００がテーブル原点２１０２および指定タイプ（ＤＴ：designation type）制御２１０４を含んでおり、指定タイプ制御２１０４は、変換の開始レベルの指示（すなわち、階層内のどのレベルでアドレス変換が開始するかの指示）である。テーブル原点２１０２およびＤＴ２１０４を使用して、特定のテーブルの原点が特定される。次に、このテーブルに基づいて、仮想アドレスのビットが、特定のテーブルのインデックスを参照して次のレベルのテーブルの原点を取得するために使用される。例えば、領域の第１のテーブル（ＲＦＴ：region first table）２１０６が選択された場合、仮想アドレスのビット０〜１０（ＲＦＸ）２１０８が、領域の第１のテーブルのインデックスを参照して領域の第２のテーブル２１１０の原点を取得するために使用される。次に、仮想アドレスのビット１１〜２１（ＲＳＸ）２１１２が、領域の第２のテーブル（ＲＳＴ：region second table）２１１０のインデックスを参照して領域の第３のテーブル２１１４の原点を取得するために使用される。同様に、仮想アドレスのビット２２〜３２（ＲＴＸ）２１１６が、領域の第３のテーブル（ＲＴＴ：region third table）２１１４のインデックスを参照してセグメント・テーブル２１１８の原点を取得するために使用される。次に、仮想アドレスのビット３３〜４３（ＳＸ）２１２０が、セグメント・テーブル２１１８のインデックスを参照してページ・テーブル２１２２の原点を取得するために使用され、仮想アドレスのビット４４〜５１（ＰＸ）２１２４が、ページ・テーブル２１２２のインデックスを参照して、ページ・フレーム実アドレス（ＰＦＲＡ：page frame real address）２１２６を含んでいるページ・テーブル・エントリ（ＰＴＥ：page table entry）２１２５を取得するために使用される。次に、このページ・フレーム実アドレスがオフセット２１２８（ビット５２〜６３）と結合されて（例えば、連結されて）、実アドレスを取得する。１つの実施形態では、次に接頭辞の付加が適用されて、対応する絶対アドレスを取得してよい。
【０２００】
アドレス変換の別の例が、図３２を参照して説明される。この例では、ＤＡＴウォークが実行されて、初期ゲスト仮想アドレスを最終的なホスト実アドレスに変換する。この例では、アドレス空間制御要素（ＡＳＣＥ）２１００はゲスト・アドレス空間制御要素であり、ＡＳＣＥ２１００のＤＴ２１０４は、ゲスト・アドレス変換構造２１６０によって決定されたゲスト変換が、テーブル原点２１０２によって指し示された領域の第１のテーブル２１０６で開始することを示す。したがって、初期ゲスト仮想アドレス（例えば、ＲＦＸ２１０８）の適切なビットが、領域の第１のテーブル２１０６のインデックスを参照して領域の第１のテーブルのエントリのポインタを取得するために使用される。領域の第１のテーブルのエントリ（ＲＦＴＥ：region first table entry）のアドレスは、ゲスト実アドレスまたはゲスト絶対アドレスである。このゲスト実アドレスまたはゲスト絶対アドレスは、主記憶装置の原点および制限が適用されて、適切な場合に、ホスト仮想アドレスに対応する。次に、ホスト・アドレス変換構造２１７０を使用して、この中間のホスト仮想アドレスが変換される。具体的には、アドレス空間制御要素（ＡＳＣＥ）２１５０は、ホスト・アドレス変換構造２１７２内の変換の開始レベルを示すために使用されるホスト・アドレス空間制御要素である。ＤＴ２１５４によって示された開始レベル（例えば、領域の第１のテーブル）に基づいて、図３１を参照して説明されたように、ホスト仮想アドレスの特定のビットが、テーブル原点２１５２で示されたテーブルのインデックスを参照するために使用され、このテーブルが、ホスト・アドレス変換２１７２を使用した変換に使用される。ゲストＲＦＴＥに対応するホスト仮想アドレスの変換は、ホスト・ページ・フレーム実アドレス（ＰＦＲＡ）２１７４ａが取得されるまで継続する。
【０２０１】
中間のホスト・ページ・フレーム実アドレスにあるデータは、ゲスト・アドレス変換構造（例えば、この特定の例では、ゲストの領域の第２のテーブル２１１０）の次のレベルへのポインタであり、前述したように変換が継続する。具体的には、ホスト・アドレス変換構造２１７６、２１７８、２１８０、および２１８２が、ゲストの領域の第２のテーブル２１１０、領域の第３のテーブル２１１４、セグメント・テーブル２１１８、およびページ・テーブル２１２２に関連付けられた中間のホスト仮想アドレスを変換するために使用され、その結果、ホストＰＦＲＡ２１７４ｂ、２１７４ｃ、２１７４ｄ、および２１７４ｅをそれぞれ得る。ホスト・ページ・フレーム実アドレス２１７４ｅは、ゲスト・ページ・テーブル・エントリ２１２５のアドレスを含む。ゲスト・ページ・テーブル・エントリ２１２５は、ゲスト・ページ・フレーム実アドレス２１２６を含み、ゲスト・ページ・フレーム実アドレス２１２６が初期ゲスト仮想アドレスからのオフセットと連結されて、対応するゲスト絶対アドレスを取得する。場合によっては、次に、主記憶装置の原点および制限が適用されて、対応するホスト仮想アドレスを計算し、その後、前述したように、アドレス変換構造２１８４を使用してこのホスト仮想アドレスが変換され、ホスト・ページ・フレーム実アドレス２１７４ｆを取得する。次に、ホスト・ページ・フレーム実アドレスがホスト仮想アドレスのオフセット（例えば、ビット５２〜６３）と結合されて（例えば、連結されて）、最終的なホスト実アドレスを取得する。これによって、ホスト実アドレスへのゲスト仮想アドレスの変換が完了する。
【０２０２】
上記の例では変換が領域の第１のテーブルで開始しているが、これは１つの例にすぎない。変換は、ゲストまたはホストのいずれかの任意のレベルで開始してよい。
【０２０３】
１つの実施形態では、アドレス変換を改善するために、仮想アドレスから実アドレスまたは絶対アドレスへの変換マッピングが、トランスレーション・ルックアサイド・バッファ（ＴＬＢ：translation look-aside buffer）のエントリに格納される。ＴＬＢは、仮想アドレスの変換速度を改善するためにメモリ管理ハードウェアによって使用されるキャッシュである。次に仮想アドレスの変換が要求されたときに、ＴＬＢがチェックされ、その仮想アドレスがＴＬＢ内にある場合、ＴＬＢのヒットが存在し、実アドレスまたは絶対アドレスがＴＬＢから取り出される。その仮想アドレスがＴＬＢ内にない場合、前述したようにページ・ウォークが実行される。
【０２０４】
示されているように、ゲスト変換がＴＬＢに含まれてよい。これらのエントリは、１つまたは複数のホスト変換を暗黙的に含む複合ゲスト／ホスト・エントリであってよい。例えば、ゲスト仮想ＴＬＢエントリは、初期ゲスト仮想アドレスから最終的なホスト実アドレスまたはホスト絶対アドレスまでの変換全体をバッファしてよい。この場合、図３２で前述したように、ゲストＴＬＢエントリは、すべての中間のホスト変換２１７２、２１７６、２１７８、２１８０、および２１８２、ならびに最終的なホスト変換２１８４を暗黙的に含む。別の例では、階層的ＴＬＢが、初期ゲスト仮想アドレスからゲスト・ページ・テーブル２１２２の関連付けられた原点までの変換をバッファするＴＬＢの第１のレベル内のエントリ、およびゲスト・ページ・テーブル・エントリのアドレスから最終的なホスト実アドレスまたはホスト絶対アドレスまでの変換をバッファするＴＬＢの第２のレベルからの別のエントリを含んでよい。この例では、図３２に示されているように、ＴＬＢの第１のレベル内のゲスト・エントリが、ゲスト領域およびセグメント・テーブルを補助するホスト変換に対応する中間のホスト変換２１７２、２１７６、２１７８、および２１８０を暗黙的に含み、第２のレベル内のゲスト・エントリが、ゲスト・ページ・テーブルを補助する中間のホスト変換２１８２および最終的なホスト変換２１８４を暗黙的に含む。トランスレーション・ルックアサイド・バッファの多くの実装が可能である。
【０２０５】
上記の例では、ページ・フレーム実アドレスが、ページ・テーブルのページ・テーブル・エントリに含まれる。ページ・テーブルは１つまたは複数のエントリを含み、ページ・テーブル・エントリの詳細が、図３３を参照してさらに説明される。
【０２０６】
１つの例では、ページ・テーブル・エントリ（ＰＴＥ）２２００が、メモリの特定のページに関連付けられ、例えば以下を含む。
【０２０７】
（ａ）ページ・フレーム実アドレス（ＰＦＲＡ）２２０２：このフィールドは、実（例えば、ホスト実）ストレージ・アドレスの左端のビットを提供する。これらのビットが右側の仮想アドレスのバイト・インデックス・フィールドと連結された場合に、実アドレスが取得される。
【０２０８】
（ｂ）ページ無効インジケータ（Ｉ：Indicator）２２０４：このフィールドは、ページ・テーブル・エントリに関連付けられたページが使用可能であるかどうかを制御する。このインジケータが０である場合、ページ・テーブル・エントリを使用することによって、アドレス変換が進む。インジケータが１である場合、ページ・テーブル・エントリを変換に使用することはできない。
【０２０９】
（ｃ）ページ保護インジケータ２２０６：このフィールドは、ページへの格納アクセスが許可されるかどうかを制御する。
【０２１０】
（ｄ）固定インジケータ２２０８：このフィールドは、本発明の態様に従って、このページが固定されるかどうかを示すために使用される。１つの例では、１が、このページが固定されることを示し、０が、このページが固定されないことを示す。
【０２１１】
ページ・テーブル・エントリは、本明細書に記載されたフィールドより多いフィールド、少ないフィールド、または異なるフィールド、あるいはその組合せを含んでよい。例えば、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅでは、ＰＴＥが、メモリの対応するブロックが参照されたかどうかを示す参照インジケータ、またはメモリの対応するブロックが格納されていることを示す変更インジケータ、あるいはその両方を含んでよい。その他の変形が可能である。
【０２１２】
本発明のさらに別の態様では、管理の柔軟性の向上を可能にするために、例えば、ホストおよびゲストの属性、コンテキスト、または実行環境（例えば、スレッドの状態、アプリケーションの状態、オペレーティング・システムの状態、ハイパーバイザの状態、特定のゲスト・オペレーティング・システムまたはホスト・オペレーティング・システムのレベルなど）、あるいはその組合せに基づいて、構成状態レジスタが分離されて割り当てられる。例えば、構成状態レジスタは、ハイパーバイザ、オペレーティング・システム、アプリケーション、スレッド番号、またはその他の実行環境などによって分離されてよい。
【０２１３】
特定の例として、ハイパーバイザ特権構成状態レジスタが、ハイパーバイザによって割り当てられたメモリのユニット（例えば、ページ）に格納され、オペレーティング・システム特権構成状態レジスタが、オペレーティング・システムのメモリのユニット（例えば、ページ）に格納される、などとなる。さらに、複数のスレッドがサポートされ、スレッドごとに構成状態レジスタが複製される場合、メモリの別々のユニット（例えば、ページ）がスレッドごとにサポートされてよい。そのような分離の例が、図３４に示されている。
【０２１４】
図３４に示されているように、構成状態レジスタの１つのセット２３００がスレッドまたはプロセス２３０２によって使用され、構成状態レジスタの別のセット２３０４がオペレーティング・システム２３０６によって使用され、構成状態レジスタのさらに別のセット２３０８がハイパーバイザ２３１０によって使用され、構成状態レジスタのさらに別のセット２３１２がハイパーバイザ２３１４によって使用される。その他の例も可能である。
【０２１５】
１つの例では、特定の実行環境の構成レジスタは、その実行環境に対して静的に定義され、その実行環境によって読み取り可能または書き込み可能なレジスタを含む。さらに別の例では、レジスタが使用に基づいて動的に割り当てられる。その他の例も可能である。
【０２１６】
１つの実施形態では、別々のメモリ領域が（例えば、複数の割り当て可能な変換ユニットとして）、別々に制御可能な各実行環境（例えば、スレッド、プロセス、オペレーティング・システム、ハイパーバイザ）に割り当てられ、したがって、その実行環境に関連付けられた構成状態レジスタのセットが、そのメモリ領域に割り当てられる。１つの例では、一部の構成状態レジスタが複数の実行環境からアクセス可能であってよい（例えば、オペレーティング・システムから読み取りアクセス可能であり、ハイパーバイザから読み取り／書き込み（Ｒ／Ｗ：read/write）アクセス可能である）ため、論理的所有権に基づいて構成状態レジスタが対応するメモリ領域に割り当てられる。
【０２１７】
異なる実行環境が異なる特権レベルを有していることがあるが、１つの態様では、特権レベルのレベルが高いほど、より低いレベルのアクセスを制御することができる。本明細書に記載されたＬＤ＿ＣＳＲ命令およびＳＴ＿ＣＳＲ命令ならびに同期動作を使用して、特定の特権レベルが指定されてよい。
【０２１８】
１つの例では、前述したように構成状態レジスタ番号が再マッピングされ、すなわち、各グループ化に関してレジスタを同じ位置に配置するように、構成状態レジスタ番号のインデックスが圧縮される。
【０２１９】
実行環境ごとにレジスタの特定のセットを提供することによって、コンテキスト切り替えを含む特定の種類の処理が容易になる。前述したように、実行環境に基づいてレジスタの特定のセットを割り当て、別々のメモリ・ユニットをそれらのセットに割り当てることによって、レジスタおよび、それらのレジスタを使用するプロセス（コンテキスト切り替えを含む）の管理を容易にする。
【０２２０】
本明細書において説明されているように、構成状態レジスタの状態をアンロードして再び読み込むのではなく、構成状態ベース・レジスタ内のベース・アドレス・ポインタを変更することによって、コンテキスト切り替えが実行されてよい。これを実現するために、ユーザ・モードの状態が、ユーザのコンテキストを切り替えるように、スーパーバイザの状態から独立して切り替え可能になり、オペレーティング・システムの状態が、仮想マシンを切り替えるように、ハイパーバイザの状態から独立して切り替え可能になり、ハードウェアごとのスレッドまたはサブプロセッサの状態が、それらが他のスレッド／サブプロセッサから独立して切り替えられる場合、独立して切り替え可能になる。別々のメモリ領域および別々に割り当て可能な構成状態レジスタが、これを容易にする。
【０２２１】
本発明の１つの態様に従って、別々の構成状態ベース・レジスタが、メモリ内構成状態レジスタの各グループ化の位置（ベース）を指定する。さらに、少なくとも１つの実施形態では、ベース・レジスタの各々に対するアクセス制御が、適切なアクセス許可を有する。例えば、オペレーティング・システムによって切り替えられるコンテキストの場合、オペレーティング・システム特権が、ベース・レジスタを変更するための最低限の前提条件であり、ハイパーバイザによって切り替えられるコンテキストの場合、ハイパーバイザ特権が、そのようなベース・レジスタを変更するための最低限の前提条件である、などとなる。
【０２２２】
さらに別の態様では、１つまたは複数の構成状態レジスタの格納（すなわち、ＣＳＲ補助メモリ）を提供するホスト・レベルのソフトウェア（ハイパーバイザまたは仮想マシン・モニタなど）によるメモリ・ユニット（例えば、ページ）の移動を防ぐための能力が、提供される。１つの例では、この能力は、メモリ・ユニットを固定すること、およびＣＳＲ補助メモリの自動的固定の指示を提供することを含む。
【０２２３】
１つまたは複数の構成状態レジスタの格納を提供するメモリのベースを示す構成状態レジスタ（すなわち、ＴＣＢＲなどのベース・レジスタ）が書き込まれる場合、アーキテクチャの仕様に従って、指示が現在のゲストのホストに提供される。少なくとも１つの実施形態では、この指示は例外に対応する。１つの実施形態では、例外タイプが、構成状態ベース・レジスタに対する書き込みイベントを示す。構成状態ベース・レジスタの変更の指示を受信することに応答して、少なくとも１つのホスト・スーパーバイザ・ソフトウェア（例えば、ハイパーバイザまたは仮想マシン・モニタ）が、ページ固定情報を更新するための動作を実行する。本発明の１つの態様では、固定情報を更新することが、固定されたＣＳＲ補助メモリ・ページのアドレスを記録すること、またはページに対応する固定インジケータを設定することを含む。別の態様では、固定情報を更新することが、特定の構成状態ベース・レジスタの以前に記録されたアドレスを、固定されたＣＳＲ補助メモリに対応する１つまたは複数の記録されたアドレスのプールから削除すること、または固定インジケータをリセットすることによって、以前に固定されたＣＳＲ補助メモリ・ページを固定解除することをさらに含む。
【０２２４】
本発明の１つの態様に従って、これらの更新によって、１つまたは複数のホスト・レベルがＣＳＲ補助メモリをページ・アウトまたは移動しないことを保証し、それによって、キャッシュされたアドレス変換を無効化し、そうしなければ、構成状態レジスタに対する更新を引き起こし、ページ変換フォールトをもたらす。本発明の別の態様では、ＣＳＲ補助メモリの位置の通知を提供し、いずれかのキャッシュされた変換を更新する機会を１つまたは複数のホストに与えることによって、固定情報が、ＣＳＲ補助メモリの位置を移動するために使用されてもよい。
【０２２５】
さらに、複数のレベルのゲスト方式をサポートするために、構成状態レジスタを補助するメモリ（ＣＳＲ補助メモリ）を指し示すベース・レジスタを初期化する命令が、ホストの複数のレベルで例外を他動詞的に引き起こして、適切な固定を保証するように、さらに指定されてよい。１つの実施形態では、ホストの１つのレベルのみが通知され、そのホストが、適切なときに、ＨＣＡＬＬ（ハイパーバイザ呼び出し）によって固定を引き起こす。
【０２２６】
構成状態レジスタのメモリ補助ページをメモリ内で固定することによって、構成状態レジスタがアクセスされるときに、ページ・フォールトが回避される。このページ・フォールトは、ソフトウェアによって予期されないことがあり、例えば、ソフトウェアが、どの命令がトラップを引き起こしたかをチェックし、トラップを引き起こした命令が、データ・ページ・フォールトを引き起こしたメモリにアクセスするように定義されていない命令だったことを検出したなどの場合に、一部のソフトウェアにおいてｐａｎｉｃ（）を引き起こすことがある。ｐａｎｉｃ（）は、予期されないイベントが発生したときにオペレーティング・システムにおいて実行される呼び出しであり、通常はシステム・クラッシュをもたらす。
【０２２７】
固定は、例えば、循環する例外を回避するため（例えば、例外に関連する構成状態レジスタに使用されるページが使用可能でない場合、そのページに関するページ・フォールト例外が引き起こされる必要がある、など）、および（例えば、構成状態レジスタの処理を伴う例外およびその他の外部イベントに対する）高速な応答を保証するためにも、使用される。
【０２２８】
１つの実施形態では、固定はソフトウェアにおいて実行される。例えば、下で説明されているように、固定は、準仮想化された環境内でのソフトウェアのコンテキスト切り替えと連動して、ハイパーバイザ呼び出し（ＨＣＡＬＬ）を使用して実行されてよい。
【０２２９】
１つの実施形態では、コンテキスト（例えば、スレッドのコンテキスト、またはプロセスのコンテキスト、または論理パーティションのコンテキスト、または仮想マシンのコンテキスト、またはオペレーティング・システムのコンテキストなど）が、スーパーバイザ・ソフトウェアによって初期化されるときに、スーパーバイザが、初期化されているコンテキストに対応する１つまたは複数の構成状態レジスタの格納を提供するために、メモリを割り当てる。
【０２３０】
１つの例では、この割り当ては、適切なアライメントおよびサイズのメモリを提供する割り当てルーチンを呼び出すことによって実行されてよい。少なくとも１つの実施形態に従って、返されたアドレスが、コンテキストに対応する情報を格納するメモリ領域に格納される。１つの実施形態では、このメモリ領域は「ｕ領域」と呼ばれ、変数「ｕ」によって示される。少なくとも１つの実施形態では、変数ｕは、コンテキストに関して記録されるさまざまな属性に対応する複数のメンバーを含む、レコード、構造体、クラス、またはその他の複合データ・タイプである。少なくとも１つの実施形態では、この構造体は、少なくとも１つのＣＳＲ補助メモリ・ページのアドレスに対応するメンバー（フィールド）を含む。少なくとも１つの例では、このメンバーに、「ｃｓｒ＿ｐａｇｅ」という名前が付けられる。
【０２３１】
ｍｙ＿ｃｓｒ＿ｐａｇｅ＿ｐｏｉｎｔｅｒ  ＝補助ページの割り当て
【０２３２】
ｕ．ｃｓｒ＿ｐａｇｅ  ＝  ｍｙ＿ｃｓｒ＿ｐａｇｅ＿ｐｏｉｎｔｅｒ
【０２３３】
準仮想化された環境内で、例えばハイパーバイザに対するＨＣＡＬＬを使用して、ＣＳＲ補助メモリの固定を実行するときに、コンテキスト切り替えのコンテキスト・シーケンス（例えば、図２８および図２９のうちの１つに従うシーケンス）が、固定ＨＣＡＬＬおよび固定解除ＨＣＡＬＬを含めて拡張される。本発明のこの態様でのコンテキスト切り替えの１つの実施形態に従って、以下のステップが実行される。
【０２３４】
（１）既知の手法に従って、汎用レジスタ、浮動小数点レジスタ、ベクトル・レジスタなどを含むが、これらに限定されない、以前のコンテキストの非ＣＳＲの状態を保存する。
【０２３５】
（２）（例えば、図２８および図２９のうちの１つの手法に基づいて）プロセッサ内構成状態レジスタを保存する。
【０２３６】
（３）受信ＣＳＲ補助メモリ・ページ（すなわち、次のコンテキストに切り替える（有効化する）ことの一部として、構成状態レジスタのメモリ・ページとして有効化されているページ）を固定する：ＨＣＡＬＬ（ＰＩＮ，  ｎｅｘｔ＿ｕ−＞ｃｓｒ＿ｐａｇｅ）。ｎｅｘｔ＿ｕは、次のコンテキストとして切り替えられて（有効化されて）いるコンテキストのｕ領域を指し示すポインタである。
【０２３７】
（４）任意選択的に、少なくとも１つの実施形態では、送信構成状態レジスタを同期する：ｓｙｎｃ＿ｏ＿ｃｓｒ。
【０２３８】
（５）有効化されているコンテキストに対応するＣＳＲ補助メモリのベース・アドレスを含むベース・レジスタを読み込む（１つの例では、このＣＳＲはＴＣＢＲに対応する）：ｍｔｓｐｒ  ＴＣＢＲ，  ｎｅｘｔ＿ｕ−＞ｃｓｒ＿ｐａｇｅ。
【０２３９】
（６）任意選択的に、少なくとも１つの実施形態では、受信構成状態レジスタを同期する：ｓｙｎｃ＿ｉ＿ｃｓｒ。
【０２４０】
（７）送信ＣＳＲ補助メモリ・ページ（すなわち、以前のコンテキストを切り替える（無効化する）ことの一部として、ＣＳＲ補助メモリ・ページとして無効化されているページ）を固定解除する：ＨＣＡＬＬ（ＵＮＰＩＮ，  ｐｒｅｖ＿ｕ−＞ｃｓｒ＿ｐａｇｅ）。ｐｒｅｖ＿ｕは、以前のコンテキストとして切り替えられて（無効化されて）いるコンテキストのｕ領域を指し示すポインタである。
【０２４１】
（８）既知の手法に従って、汎用レジスタ、浮動小数点レジスタ、ベクトル・レジスタなどを含むが、これらに限定されない、次のコンテキストの他の非ＣＳＲの状態を読み込む。
【０２４２】
（９）制御を新たに有効化されたコンテキストに移す。例えば、（Ｐｏｗｅｒ  ＩＳＡと連動する実装では）ｒｆｉｄ命令を使用して、オペレーティング・システムからアプリケーションのスレッドまたはプロセスのコンテキストに移す。
【０２４３】
当業者は、本明細書における上記のステップの順序が変更されてよいということを、理解するであろう。例えば、少なくとも１つの実施形態では、固定動作の前に、固定解除動作が実行されてよい。その他の変形が可能である。
【０２４４】
別の実施形態では、ＴＣＢＲなどのベース・レジスタを読み込むことに応答して、固定が実行される。通知イベント（例えば、割り込み）が、スーパーバイザに引き起こされてよい。複数のスーパーバイザ・レベルが存在する場合、１つの実施形態では、通知イベントが各スーパーバイザ・レベルに引き起こされる。通知イベントを受信することに応答して、固定情報が更新される。
【０２４５】
別の実施形態では、値をベース・レジスタに書き込むことによって、固定されたページを示すページ・テーブル・エントリ指示フラグが対応するＰＴＥ内で設定される。ページ・テーブル・エントリの複数のレベルが存在する場合、ページ・テーブル・エントリ指示フラグがレベルごとに設定されてよい。
【０２４６】
少なくとも別の実施形態では、固定プロセスまたは固定解除プロセスを開始する固定命令および固定解除命令のうちの少なくとも１つが提供される。
【０２４７】
さらに別の実施形態では、どのページが「固定されている」かを決定するために、システム内で有効なベース・レジスタを調べることによって、ホスト・ソフトウェアによって固定が決定されてよく、すなわち、ベース・レジスタ（例えば、ＴＣＢＲ）の複数の内容が、固定されたページの記録を表す。少なくとも１つの実施形態では、ページを移動またはページ・アウトする前に、スーパーバイザ・レベルのソフトウェアが、ページ・アドレスがベース・レジスタのうちの少なくとも１つに含まれるアドレスに対応するかどうかを判定することによって、ページが固定されたページに対応するかどうかを判定する。
【０２４８】
さらに別の実施形態では、ホストが、例えば１つの実施形態例では例外として、固定の通知イベントを受信してよい。通知を受信することに基づいて、ホスト・システムが、固定されるアドレスを受信し、将来メモリを管理するときに参照するために、そのアドレスを格納する。１つの実施形態では、通知は、固定解除されている以前のアドレスに関する情報（例えば、ベース構成状態レジスタに格納されている以前の値、または例えば構成状態レジスタを使用してその他の方法で提供される別の値）も含む。
【０２４９】
固定通知をホストに提供する１つの例に関する詳細が、図３５を参照してさらに説明される。この論理は、プロセッサによって実行される。図３５を参照すると、メモリ内構成状態レジスタを含んでいるメモリ・ページ（またはその他のメモリのユニット）に関して、新しい構成値（例えば、ゲスト・アドレス）が受信される（ステップ２４００）。１つの例では、この新しい構成値がベース・レジスタ（例えば、ＴＣＢＲなど）に格納される。しかし、他の実施形態では、この値が別の方法で提供されてよい。
【０２５０】
メモリ・ページのゲスト・アドレス（例えば、ゲスト仮想アドレスまたはゲスト実アドレス）が変換される（ステップ２４０２）。１つの例では、ゲスト・アドレスが物理的実アドレスに変換され、この変換が将来のアクセスのためにキャッシュされる。変数ｎが、ゲスト・レベルと同じに設定される（ステップ２４０４）。次にｎが、選択された値（例えば、１）によってデクリメントされる（ステップ２４０６）。固定されているゲスト・アドレスに対応するホスト・レベルｎの仮想アドレスを使用して、ホスト・レベルｎに固定イベントが通知される（ステップ２４０８）。さらに、ホスト・レベルがさらに存在するか（例えば、ｎが０より大きいか）どうかに関する判定が行われる（照会２４１０）。ホスト・レベルがさらに存在する場合は、処理がステップ２４０６を続行する。ホスト・レベルがそれ以上存在しない場合は、処理が完了する。
【０２５１】
１つの実施形態では、アドレスに対応するページ・テーブル・エントリ内の、ビットなどのインジケータによって、固定が示される。このビットは、ページが固定されており、ゲストによって使用中であるということを示す。この固定インジケータの１つの例が、図３３に示されている。
【０２５２】
固定に関連する詳細が、図３６に示されている例示的な変換動作および固定動作を参照して、さらに説明される。１つの例では、プロセッサがこの処理を実行する。最初に、メモリ内構成状態レジスタを含んでいるメモリ・ページに関して、新しい構成値（例えば、ゲスト・アドレス）が受信される（ステップ２５００）。ゲスト・アドレスが物理アドレスに変換され、この変換が将来のアクセスのためにキャッシュされる（ステップ２５０２）。変数ｎが、ゲスト・レベルと同じに設定され、ＡＤＤＲＥＳＳがゲスト仮想アドレスと同じに設定される（ステップ２５０４）。その後、ｎが定義された値（１など）だけデクリメントされ、ＡＤＤＲＥＳＳがｔｒａｎｓｌａｔｅ＿ｔｏ＿ｈｏｓｔ（ＡＤＤＲＥＳＳ，  ｎ）と同じに設定される（ステップ２５０６）。すなわち、ＡＤＤＲＥＳＳが、ホスト・レベル用の変換されたホスト・アドレスに設定される。アドレスのページ・テーブル・エントリ内で、固定インジケータ（例えば、ビット）が設定される（例えば、１に設定される）（ステップ２５０８）。さらに、ホスト・レベルがさらに存在するか（すなわち、ｎが０より大きいか）どうかに関する判定が行われる（照会２５１０）。ホスト・レベルがさらに存在する場合は、処理がステップ２５０６を続行する。ホスト・レベルがそれ以上存在しない場合は、処理が終了する。この時点で、ＡＤＤＲＥＳＳは、固定されたページの物理アドレスに対応し、アドレス変換との相乗効果に使用され得る。
【０２５３】
変換およびキャッシングに基づいて、１つの例ではすべてのホスト・レベルで、インジケータ（例えば、ビット）が設定される。１つの実施形態では、ページ・テーブル・ウォーキングおよび固定指示が結合される。これによって、変換が、固定指示に使用されるのと同じページ・テーブル・エントリにアクセスするために、性能が向上する。
【０２５４】
１つの実施形態では、別の値（例えば、構成状態レジスタに格納されている以前の値（アドレス）、または例えば構成レジスタを使用してその他の方法で提供される別の値）に対して、固定解除が実行される。
【０２５５】
変換動作および固定解除動作に関連する処理の一例が、図３７を参照して説明される。１つの例では、プロセッサがこの処理を実行する。最初に、アドレスの固定解除の要求が受信される（ステップ２６００）。この要求は、固定解除されるゲスト仮想アドレスを含む。さらに、ｎが、ゲスト・レベルと同じに設定され、ＡＤＤＲＥＳＳが、固定解除されるゲスト仮想アドレスと同じに設定される（ステップ２６０２）。次に、ｎが定義された値（１など）だけデクリメントされ、ＡＤＤＲＥＳＳがｔｒａｎｓｌａｔｅ＿ｔｏ＿ｈｏｓｔ（ＡＤＤＲＥＳＳ，  ｎ）と同じに設定される（ステップ２６０４）。すなわち、ＡＤＤＲＥＳＳが、ホスト・レベル用の変換されたホスト・アドレスに設定される。アドレスのページ・テーブル・エントリ内の固定インジケータ（例えば、ビット）が、リセットされる（例えば、０に設定される）（ステップ２６０６）。その後、ホスト・レベルがさらに存在するか（例えば、ｎが０より大きいか）どうかに関する判定が行われる（ステップ２６０８）。ホスト・レベルがさらに存在する場合は、処理がステップ２６０４を続行する。ホスト・レベルがそれ以上存在しない場合は、処理が終了する。この時点で、ＡＤＤＲＥＳＳは、固定解除されたページの物理アドレスに対応する。
【０２５６】
本明細書において説明されているように、メモリのユニットが固定されるということの決定に基づいて、通知が、例えば自動的に提供される。この通知は、インジケータを設定すること、割り込みを引き起こすこと、例外を提供することなどによるものであってよい。多くの変形が可能である。
【０２５７】
さらに別の態様では、準仮想化された固定呼び出しを介して、効率的な固定管理が提供される。ページが導入されるたびに、それらのページの固定および固定解除を行う必要がないということが、望ましい。一方、ホストのページ・キャッシュを不必要に断片化しないように、固定されるページの数を制限し、ページ割り当ての自由度を制限することも、望ましい。したがって、ホストによって固定解除されるページをゲストが指定する固定ＨＣＡＬＬ（ハイパーバイザ呼び出し）が、導入される。ハイパーバイザは、固定解除されるページが固定解除されたかどうかを示すことができ、それによって、ハイパーバイザが使用可能なリソースを有している場合に、すべてのページに対して固定要求を呼び出す必要がないように、ゲストに柔軟性を与える。
【０２５８】
この呼び出しは、１つの実施形態では、ＣＳＲメモリ補助ページへのベース・ポインタまたはベース・アドレス（ベース）を更新することを含む。さらに、１つの実施形態では、ゲストは、ページを固定された状態で維持するかどうかを指定する。
【０２５９】
別の実施形態では、ハイパーバイザは、ハイパーバイザがリソース不足の状況に陥ったときに、オペレーティング・システムへのコールバックによって、以前にオペレーティング・システムに残されている固定されたページを返すことを要求してよい。１つの実施形態では、オペレーティング・システムは、コールバックへの応答として、固定解除する１つまたは複数のページを指定する。
【０２６０】
１つまたは複数の態様に従って、図３８を参照して説明されているように、１回のＨＣＡＬＬなどの単一の呼び出しが、例えばプロセッサ上で実行されるホストによって、固定動作および固定解除動作を実行するために使用される。示されているように、１つの例では、１回のハイパーバイザ呼び出し２７０４に応答して、固定動作２７００および固定解除動作２７０２が実行される。１つの例では、古いページを固定解除するために、第１のアドレス（例えば、第１のベース・アドレス）に対して固定解除動作が実行され（ステップ２７１０）、新しいページを固定するために、第２のアドレス（例えば、第２のベース・アドレス）に対して固定動作が実行される（ステップ２７２０）。複数回の呼び出しの代わりに、１回の呼び出しが使用され、処理時間を節約する。固定解除呼び出しおよび固定呼び出しの回数は、結合された固定および固定解除呼び出しを含むこと、固定される新しいページ（例えば、ＣＳＲ補助メモリ・ページ）を指定すること、および固定解除される以前のページを指定することによって、減らされる。
【０２６１】
１つの実施形態では、オペレーティング・システムは、固定解除されるように呼び出しにおいて指定されたアドレスが固定解除されないことを、ハイパーバイザ・コンソール管理制約（hypervisor console management constraints）が許可する場合に、それを要求することができる。アドレスが固定されるのか、または固定解除されるのかに関する応答が返される。後で、ハイパーバイザは、さらにコールバックを使用して、１つまたは複数の固定されたページを固定解除することを、オペレーティング・システムに要求することができる。
【０２６２】
１つの例では、オペレーティング・システムは、有効なメモリ内構成状態レジスタのページに必要な数より多い数のページを保持する。さらに別の例では、オペレーティング・システムは、有効かどうかに関わらず、メモリ内構成状態レジスタを保持しているすべてのページを固定する。これによって、その後、固定を実行する必要がなくなる。しかしこれは、過剰な数の固定されたページおよびシステムの非効率性につながることがある。したがって、１つの実施形態では、オペレーティング・システムがコールバック関数を提供し、このコールバック関数で、システム内でメモリ内構成状態レジスタに使用するための多すぎるページ（または選択された数より多い数のページ）が固定されている場合に、ハイパーバイザがオペレーティング・システムを呼び出し、固定されたページの割り当てを解除することができる。
【０２６３】
固定解除／固定がコンテキスト切り替えにおいて実行される下の例を参照して、固定解除／固定に関連する詳細がさらに説明される。具体的には、下の例は、ゲスト（ＯＳ）が、固定を切り替えること、およびさらに任意選択的に、固定を維持することをホスト（ＨＶ）に要求する、コンテキスト固定の一例を説明する。
【０２６４】
１つの実施形態では、コンテキスト（例えば、スレッドのコンテキスト、またはプロセスのコンテキスト、または論理パーティションのコンテキスト、または仮想マシンのコンテキスト、またはオペレーティング・システムのコンテキストなど）が、スーパーバイザ・ソフトウェアによって初期化されるときに、スーパーバイザが、初期化されているコンテキストに対応する１つまたは複数の構成状態レジスタの格納を提供するために、メモリを割り当てる。
【０２６５】
１つの例では、この割り当ては、適切なアライメントおよびサイズのメモリを提供する割り当てルーチンを呼び出すことによって実行されてよい。少なくとも１つの実施形態に従って、返されたアドレスが、コンテキストに対応する情報を格納するメモリ領域に格納される。１つの実施形態では、このメモリ領域は「ｕ領域」と呼ばれ、変数「ｕ」によって示される。少なくとも１つの実施形態では、変数ｕは、コンテキストに関して記録されるさまざまな属性に対応する複数のメンバーを含む、レコード、構造体、クラス、またはその他の複合データ・タイプである。少なくとも１つの実施形態では、この構造体は、少なくとも１つのＣＳＲ補助メモリ・ページのアドレスに対応するメンバー（フィールド）を含む。少なくとも１つの例では、このメンバーに、「ｃｓｒ＿ｐａｇｅ」という名前が付けられる。
【０２６６】
ｍｙ＿ｃｓｒ＿ｐａｇｅ＿ｐｏｉｎｔｅｒ  ＝補助ページの割り当て
【０２６７】
ｕ．ｃｓｒ＿ｐａｇｅ  ＝  ｍｙ＿ｃｓｒ＿ｐａｇｅ＿ｐｏｉｎｔｅｒ
【０２６８】
準仮想化された環境内で、例えばハイパーバイザに対するＨＣＡＬＬを使用して、ＣＳＲ補助メモリの固定を実行するときに、コンテキスト切り替えのコンテキスト・シーケンス（例えば、図２８および図２９のうちの１つに従うシーケンス）が、固定ＨＣＡＬＬおよび固定解除ＨＣＡＬＬを含めて拡張される。本発明のこの態様でのコンテキスト切り替えの１つの実施形態に従って、以下のステップが実行される。
【０２６９】
（１）既知の手法に従って、汎用レジスタ、浮動小数点レジスタ、ベクトル・レジスタなどを含むが、これらに限定されない、以前のコンテキストの非ＣＳＲの状態を保存する。
【０２７０】
（２）（例えば、図２８および図２９のうちの１つの手法に基づいて）プロセッサ内構成状態レジスタを保存する。
【０２７１】
（３）任意選択的に、少なくとも１つの実施形態では、送信構成状態レジスタを同期する：ｓｙｎｃ＿ｏ＿ｃｓｒ。
【０２７２】
（４）（ｎｅｘｔ＿ｕ−＞ｃｓｒ＿ｐａｇｅ＿ｐｉｎｎｅｄ）が偽である場合
【０２７３】
固定解除するページを検出する    ｖｉｃｔｉｍ＝ｓｅｌｅｃｔ＿ＴＣＢＲ＿ｆｏｒ＿ｕｎｐｉｎ（）
【０２７４】
維持するのが望ましいか？    ｒｅｔａｉｎ＝ｒｅｔａｉｎ＿ｄｅｓｉｒａｂｌｅ＿ｐ（ｖｉｃｔｉｍ）
【０２７５】
ページの固定を得るために与える    ｌｏｓｔ＿ｖｉｃｔｉｍ＝ＨＣＡＬＬ（ＰＩＮ＿ｇｉｖｅ＿ｔｏ＿ｇｅｔ，  ｎｅｘｔ＿ｕ−    ＞ｃｓｒ＿ｐａｇｅ，  ｖｉｃｔｉｍ，  ｒｅｔａｉｎ）
【０２７６】
ｖｉｃｔｉｍが失われたか？    （ｌｏｓｔ＿ｖｉｃｔｉｍ）ｍａｒｋ＿ｕｎｐｉｎｎｅｄ（ｖｉｃｔｉｍ）が真である場合、
【０２７７】
（５）任意選択的に、少なくとも１つの実施形態では、受信構成状態レジスタを同期する：ｓｙｎｃ＿ｉ＿ｃｓｒ。
【０２７８】
（６）既知の手法に従って、汎用レジスタ、浮動小数点レジスタ、ベクトル・レジスタなどを含むが、これらに限定されない、次のコンテキストの他の非ＣＳＲの状態を読み込む。
【０２７９】
（７）制御を新たに有効化されたコンテキストに移す。例えば、（Ｐｏｗｅｒ  ＩＳＡと連動する実装では）ｒｆｉｄ命令を使用して、オペレーティング・システムからアプリケーションのスレッドまたはプロセスのコンテキストに移す。
【０２８０】
固定／固定解除動作を実行する一例の詳細が、図３９を参照してさらに説明される。新しいアドレス（ＮＡ：new address）の固定および古いアドレス（ＯＡ：old address）の固定解除の要求が、例えば、１回のハイパーバイザ呼び出し、およびＯＡを固定されたメモリとして維持する要求が行われているかどうかを指定する維持インジケータ（またはそのような指示）を介して、受信される（ステップ２８００）。１つの例として、新しいアドレスが、ＣＳＲメモリ補助ページを示す。アドレスＮＡが固定され（ステップ２８１０）、維持インジケータがアドレスＯＡをメモリ内で固定された状態で維持する要求を指定しているかどうかに関する判定が行われる（照会２８２０）。ＯＡの固定を維持する要求が存在する場合、示されたポリシー（例えば、複数の仮想マシンにわたるリソース割り当て）および固定に使用できるメモリに基づいて、固定されたページの維持を許可するかどうかに関する判定が行われる（照会２８２２）。この要求が許可された場合（照会２８２４）、固定解除動作が実行されないということの指示が行われる（ステップ２８２６）。この要求が許可されない場合、アドレスＯＡが固定解除され（ステップ２８３０）、固定解除が実行されたことの指示が提供される（ステップ２８３２）。
【０２８１】
照会２８２０に戻り、維持インジケータが、固定が維持されないということを指定する場合、処理がステップ２８３０を続行する。
【０２８２】
前述したように、１つのアドレスを固定解除すること、別のアドレスを固定すること、または固定解除の対象のアドレスが実際には固定解除されないことを要求すること、あるいはその組合せを実行するために、１回の呼び出しが使用されてよい。１回の呼び出しを使用することによって、処理が容易になり、性能が改善される。
【０２８３】
本明細書において説明されているように、選択された構成状態レジスタが、プロセッサ内の代わりに、メモリに格納される。レジスタをメモリに格納することによって、データの破損の検出および修正に関連することを含めて、特定の恩恵および最適化を実現することができる。
【０２８４】
１つの例では、回復力を強化するために、およびシングル・イベント・アップセット（ＳＥＵ：single event upsets）またはソフト・エラーに対処するために、メモリによって補助された状態が使用される。シングル・イベント・アップセットは、電離放射線の影響によって導入される状態の変化である。ＣＭＯＳ（complementary metal-oxide-semiconductor：相補型金属酸化膜半導体）のサイズが縮小するにつれて、ビットごとに蓄積される電荷が少なくなるため、ビットを変更するために使用される電荷量ＱＣＲＩＴが縮小する。シングル・イベント・アップセットの影響を修正するために、データ保護が適用される。このデータ保護は、例えば、レジスタのパリティまたはエラー訂正符号（ＥＣＣ：error correction code）保護を使用して、損傷した状態のレジスタ値をそれぞれ検出および修復することを含む。多くのレジスタにわたる領域全体の設計が償却可能である場合、レジスタ・ファイルの修復が妥当な価格であるため、エラー訂正符号またはパリティ保護が使用される。プロセッサ内構成レジスタの場合、レジスタごとに別々の保護および回復を設計する必要があるため、この費用が負担できないほど高額になることが多い。
【０２８５】
しかし、本発明の態様に従って、構成状態レジスタは、それらが、パリティ・ビットおよびエラー訂正符号（ＥＣＣ）を含むが、これに限定されない、１つまたは複数の高度な保護メカニズムを使用して保護されている、メモリに格納される。
【０２８６】
１つの態様では、プロセッサ内構成状態レジスタも、ＳＥＵに対する回復力のあるシステム・メモリ階層を使用することによって保護される。１つの実施形態では、プロセッサ内構成状態レジスタは、ＳＥＵによって引き起こされる破損を検出するための手法を使用して保護される。本発明の態様と共に、さまざまな検出手法が使用されてよい。１つの例では、破損検出メカニズムは、プロセッサ内構成状態レジスタに対するデータ・パリティ保護の使用に対応する。別の実施形態では、構成レジスタへの書き込みがない場合に、レジスタ値の変化の特徴をテストすることによって、ＳＥＵによって引き起こされる破損が検出されてよい。加えて、そのようなプロセッサ内レジスタは、プロセッサ内構成レジスタのＥＣＣによって保護されたコピーが使用可能であることを保証するために、メモリにも格納される。１つの実施形態では、そのように保護されたプロセッサ内構成レジスタの更新に応答して、更新のコピーもメモリ内のコピーに格納される。プロセッサがパリティ・エラーを認識した場合、ＥＣＣによって保護されたメモリ内のコピーから値が取り出され、プロセッサ内レジスタが更新される。
【０２８７】
さらに、１つの実施形態では、命令アドレス、データ・アドレス、およびコンテンツ・ブレーク・ポイント・レジスタ（content break point registers）などの使用率の高い値は、補助メモリに格納され、シングル・イベント・アップセットが検出されたときに回復され得る。回復は、ハードウェアの再読み込み経路（reload path）を介するか、またはマシン・チェックを実行し、マシン・チェック・ハンドラにそれらのレジスタを再読み込みさせることによる、パリティ保護を含む。したがって、本発明の態様に従って、構成状態レジスタは、構成状態レジスタをシステム・メモリに格納し、例えばＥＣＣを使用してシングル・イベント・アップセットから保護することによって、保護される。
【０２８８】
以下では、エラー訂正符号を構成状態レジスタに使用することに関連する詳細がさらに説明される。具体的には、エラー訂正符号をデータ書き込みに使用する例が、図４０〜図４２を参照して説明され、エラー訂正符号をデータ読み取りに使用する例が、図４３〜図４５を参照して説明される。
【０２８９】
最初に図４０を参照すると、この例では、データ書き込みが保護されていない。この例では、プロセッサ内構成状態レジスタの値が受信され（ステップ２９００）、その値が、構成状態レジスタを実装するラッチに書き込まれる（ステップ２９０２）。このデータ書き込みは、シングル・イベント・アップセットおよびその他の種類のエラーに対して保護されていない。
【０２９０】
これに対して、図４１を参照すると、プロセッサ内構成状態レジスタの値が受信され（ステップ２９２０）、エラー保護またはエラー訂正符号が計算される（ステップ２９２２）。受信された値が、保護またはエラー訂正符号と共に、構成状態レジスタ（例えば、構成状態レジスタを実装するラッチ）に書き込まれる（ステップ２９２４）。
【０２９１】
さらに、図４２を参照して、メモリ内構成状態レジスタに対するデータ書き込みの一実施形態が説明される。この例では、メモリ内構成状態レジスタの値が受信され（ステップ２９５２）、構成状態レジスタが格納されるシステム・メモリ・アドレスに関する決定が行われる（ステップ２９５４）。次に、この値が、エラー保護から恩恵を受けるメモリの一部であるため保護されている、そのシステム・メモリ・アドレスに格納される（ステップ２９５６）。
【０２９２】
１つの態様では、この格納することは、例えば、受信されたメモリ内構成状態レジスタ値に対してエラー訂正符号を計算することと、計算されたエラー訂正符号を受信された値と共に格納することとを含む。知られているように、エラー訂正符号は、１つまたは複数のパリティ・ビット（例えば、データ・ビットの１つまたは複数のサブセットごとに１つまたは複数のパリティ・ビット）を、値を表すデータ・ビットに追加し、それらのパリティ・ビットを使用してエラーを決定する。データ内にエラーが存在する場合、パリティ・ビットは、エラーが存在するデータ・ビット内の位置を示し、修正を行うことができるようにする（例えば、２進数で表された１つまたは複数のデータ・ビットを別の値に変更する）。
【０２９３】
上記に加えて、プロセッサ内構成状態レジスタおよびメモリ内構成状態レジスタに対してデータ読み取りを実行する一例が、図４３〜図４５を参照して説明される。
【０２９４】
図４３を参照して、保護が提供されていないプロセッサ内構成状態レジスタに対するデータ読み取りの一例が、説明される。この例では、値がプロセッサの論理に提供される（ステップ３０００）。
【０２９５】
これに対して、保護が提供されているプロセッサ内構成状態レジスタから値を読み取ることに関連する処理の一例が、図４４を参照して説明される。この例では、ラッチから値が受信され（ステップ３０２０）、訂正符号がチェックされる（ステップ３０２２）。破損が検出されない場合（照会３０２４）、値がプロセッサの論理に提供される（ステップ３０３０）。しかし、照会３０２４に戻り、破損が検出された場合、修正された値が計算され（ステップ３０２６）、修正された値が再びラッチに書き込まれる（ステップ３０２８）。さらに、その値がプロセッサの論理に提供される（ステップ３０３０）。
【０２９６】
さらに、メモリ内構成状態レジスタを使用するデータ読み取りが、図４５を参照して説明される。この例では、構成状態レジスタ番号がプロセッサによって受信される（ステップ３０５０）。構成状態レジスタのシステム・メモリ・アドレスに関する決定が行われる（ステップ３０５２）。保護されたシステム・メモリから値が読み取られ（ステップ３０５４）、その値がプロセッサの論理に提供される（ステップ３０５６）。
【０２９７】
１つの態様では、この読み取ることは、エラー訂正符号を使用して、データ（例えば、値）の破損が発生したかどうかを判定することを含む。破損が検出された場合、回復を実行することを含むが、これに限定されない、１つまたは複数のアクションが実行されてよい。回復は、エラー訂正符号を使用して、破損した値に対して、修正された値を計算することを含んでよい。その他の例も存在する。
【０２９８】
メモリ内構成状態レジスタを使用することによって、エラー保護の恩恵が得られ、費用のかかる追加ステップを回避し、およびそのような保護を、プロセッサ内構成状態レジスタを実装するラッチに追加するための待ち時間を防ぐ。
【０２９９】
例えば、エラーの修正は、メモリ内構成状態レジスタに書き込むことに基づいて提供される。エラー検出および訂正符号が、メモリに格納される構成状態レジスタの値を受信することに基づいて生成されてよい。エラー検出および訂正符号は、構成状態レジスタを格納しているメモリに対する読み取り要求を受信することに基づいて、破損が発生したかどうかを検出するために使用されてよい。メモリ内構成状態レジスタを読み取り、破損が発生したことを検出することに基づいて、破損が修正される。
【０３００】
本明細書では、メモリ内構成状態レジスタを提供することに関連する態様が、詳細に説明された。構成状態レジスタをメモリ内で提供することによって、処理が容易になり、性能を向上させることができる。特定の改良および最適化が実現されてよい。
【０３０１】
メモリ内構成状態レジスタは、命令の処理において、およびその他の動作シーケンスにおいて使用されてよい。例えば、外部デバイスから割り込み信号を受信することに基づいて、例外が受信されてよい。例外の処理において、１つまたは複数の構成状態レジスタ（ＳＲＲ０およびＳＲＲ１など）がアクセスされてよい。それらのレジスタがメモリ内構成状態レジスタである場合、割り込み処理シーケンスが、読み込み動作または格納動作あるいはその両方を含むように拡張される。その他の例または変形あるいはその両方が可能である。
【０３０２】
本発明の１つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。コンピューティング環境内の処理が、本発明の１つまたは複数の態様に関連しているとき、それらを容易にする一実施形態の詳細が、図４６〜図４７を参照してさらに説明される。
【０３０３】
図４６を参照すると、１つの実施形態では、構成状態レジスタへのアクセスの要求が取得される（３１００）。構成状態レジスタが、プロセッサ内ではなくメモリ内にあるということの決定が行われ（３１０２）、構成状態レジスタがメモリ内にあるということの決定に基づいて、アクセスがプロセッサ内アクセス動作からメモリ内アクセス動作に変換される（３１０４）。
【０３０４】
例えば、メモリ内アクセス動作は、要求に応じて読み込み動作または格納動作を含む（３１０６）。
【０３０５】
１つの実施形態では、この変換することは、アクセスを読み込み動作に変換すること（３１０８）を含み、この読み込み動作は、例えば、メモリ・ベース・アドレス（３１１０）および構成状態レジスタの指示を取得することを含む（３１１２）。構成状態レジスタの指示はメモリ・オフセットにマッピングされ（３１１４）、ベース・アドレスおよびメモリ・オフセットを使用して決定されたアドレスから値が読み込まれる（３１１６）。
【０３０６】
別の実施形態では、この変換することは、アクセスを格納動作に変換すること（３１２０）を含み、この格納動作は、例えば、メモリ・ベース・アドレス（３１２２）および構成状態レジスタの指示を取得することを含む（３１２４）。構成状態レジスタの指示はメモリ・オフセットにマッピングされ（３１２６）、ベース・アドレスおよびメモリ・オフセットを使用して決定されたアドレスに値が格納される（３１２８）。
【０３０７】
さらに別の例として図４７を参照すると、構成状態レジスタが、定義された期間内に複数回アクセスされたということの決定が行われ（３１３０）、その決定に基づいて、構成状態レジスタの値がキャッシュに格納される（３１３２）。
【０３０８】
１つの例では、１つまたは複数の構成状態レジスタを使用するシステムの初期ブートに基づいて、１つまたは複数のメモリ内メモリ・ユニットが１つまたは複数の構成状態レジスタに割り当てられる（３１３４）。例えば、１つまたは複数のメモリ内メモリ・ユニットが、ファームウェアによって所有されるメモリ内にあるか（３１３６）、または制御プログラムによって所有されるメモリ内にある（３１３８）。制御プログラムは、例えば、オペレーティング・システムまたはハイパーバイザを含む（３１４０）。
【０３０９】
さらに、１つの例では、構成状態レジスタが、構成状態レジスタ用に定義されたメモリの領域内にある（３１４２）。
【０３１０】
その他の変形および実施形態が可能である。
【０３１１】
エミュレーション環境を含むが、これに限定されない、その他の種類のコンピューティング環境が、本発明の１つまたは複数の態様を組み込んで使用してもよく、その例が、図４８を参照して説明される。この例では、コンピューティング環境２０は、例えば、１つまたは複数のバス２８またはその他の接続あるいはその両方を介して互いに結合された、ネイティブ中央処理装置（ＣＰＵ）２２、メモリ２４、および１つまたは複数の入出力デバイスまたはインターフェイスあるいはその両方２６を含む。例えば、コンピューティング環境２０は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク市）によって提供されるＰｏｗｅｒＰＣプロセッサまたはｐＳｅｒｉｅｓサーバ、あるいはＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ、Ｉｎｔｅｌ、またはその他の企業によって提供されるアーキテクチャに基づくその他のマシン、あるいはその組合せを含んでよい。
【０３１２】
ネイティブ中央処理装置２２は、環境内で処理中に使用される１つまたは複数の汎用レジスタまたは１つまたは複数の専用レジスタあるいはその両方などの、１つまたは複数のネイティブ・レジスタ３０を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
【０３１３】
さらに、ネイティブ中央処理装置２２は、メモリ２４に格納された命令およびコードを実行する。１つの特定の例では、中央処理装置は、メモリ２４に格納されたエミュレータ・コード３２を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード３２は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外のアーキテクチャに基づくマシン（ＰｏｗｅｒＰＣプロセッサ、ｐＳｅｒｉｅｓサーバ、あるいはその他のサーバまたはプロセッサなど）が、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅをエミュレートし、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
【０３１４】
エミュレータ・コード３２に関連する詳細が、図４９を参照してさらに説明される。メモリ２４に格納されたゲスト命令４０は、ネイティブＣＰＵ２２のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された（例えば、マシン命令と相互関係がある）ソフトウェア命令を含む。例えば、ゲスト命令４０は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサ上で実行するように設計されてよいが、代わりに、例えばインテル・プロセッサであってよい、ネイティブＣＰＵ２２上でエミュレートされる。１つの例では、エミュレータ・コード３２は、メモリ２４から１つまたは複数のゲスト命令４０を取得するため、および取得された命令のローカル・バッファリングを任意選択的に提供するための命令フェッチ・ルーチン４２を含む。エミュレータ・コード３２は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、１つまたは複数の対応するネイティブ命令４６に変換するための命令変換ルーチン４４も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
【０３１５】
さらに、エミュレータ・コード３２は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン４８を含む。エミュレーション制御ルーチン４８は、ネイティブＣＰＵ２２に、１つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令４６の実行は、データをメモリ２４からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、あるいは変換ルーチンによって決定された何らかの種類の算術演算または論理演算を実行することを含んでよい。
【０３１６】
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置２２によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの１つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブＣＰＵのレジスタ３０を使用して、またはメモリ２４内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令４０、ネイティブ命令４６、およびエミュレータ・コード３２は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
【０３１７】
本明細書において使用されるとき、ファームウェアは、例えば、プロセッサのマイクロコードまたはミリコードを含む。ファームウェアは、例えば、上位レベルの機械コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。一実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供される、システムのハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含む。
【０３１８】
取得され、変換されて実行されるゲスト命令４０は、例えば、本明細書に記載された命令のうちの１つであってよい。あるアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ）の命令が、メモリからフェッチされ、変換され、別のアーキテクチャ（例えば、ＰｏｗｅｒＰＣ、ｐＳｅｒｉｅｓ、Ｉｎｔｅｌなど）のネイティブ命令４６のシーケンスとして表される。その後、これらのネイティブ命令が実行される。
【０３１９】
１つまたは複数の態様がクラウド・コンピューティングに関連してよい。
【０３２０】
本開示にはクラウド・コンピューティングの詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないということが、あらかじめ理解される。本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【０３２１】
クラウド・コンピューティングは、構成可能な計算リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間とサービス・プロバイダとのやりとりを最小限に抑えて、それらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つのデプロイメント・モデルを含むことができる。
【０３２２】
特徴は、次のとおりである。
【０３２３】
オンデマンドのセルフ・サービス：クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【０３２４】
幅広いネットワーク・アクセス：クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による利用を促進する。
【０３２５】
リソース・プール：プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所（例えば、国、州、またはデータセンター）を指定できる場合がある。
【０３２６】
迅速な順応性：クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【０３２７】
測定されるサービス：クラウド・システムは、計測機能を活用することによって、サービスの種類（例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント）に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【０３２８】
サービス・モデルは、次のとおりである。
【０３２９】
ＳａａＳ（Software as a Service）：利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Ｗｅｂブラウザ（例えば、Ｗｅｂベースの電子メール）などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【０３３０】
ＰａａＳ（Platform as a Service）：利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【０３３１】
ＩａａＳ（Infrastructure as a Service）：利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント（例えば、ホスト・ファイアウォール）を限定的に制御できる。
【０３３２】
デプロイメント・モデルは、次のとおりである。
【０３３３】
プライベート・クラウド：このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【０３３４】
コミュニティ・クラウド：このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項）を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【０３３５】
パブリック・クラウド：このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【０３３６】
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術（例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト）によって固有の実体を残したまま互いに結合された２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合である。
【０３３７】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
【０３３８】
ここで図５０を参照すると、例示的なクラウド・コンピューティング環境５０が示されている。図示されているように、クラウド・コンピューティング環境５０は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス（例えば、ＰＤＡ（Personal Digital Assistant）または携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎ、あるいはその組合せなど）が通信できる１つまたは複数のクラウド・コンピューティング・ノード１０を備える。ノード１０は、互いに通信することができる。ノード１０は、１つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどに、物理的または仮想的にグループ化されてよい（図示されていない）。これによって、クラウド・コンピューティング環境５０は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはＳａａＳ、あるいはその組合せを提供できる。図５０に示されたコンピューティング・デバイス５４Ａ〜Ｎの種類は、例示のみが意図されており、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続（例えば、Ｗｅｂブラウザを使用した接続）あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【０３３９】
ここで図５１を参照すると、クラウド・コンピューティング環境５０（図５０）によって提供される機能的抽象レイヤのセットが示されている。図５１に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【０３４０】
ハードウェアおよびソフトウェア・レイヤ６０は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム６１、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャベースのサーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、ならびにネットワークおよびネットワーク・コンポーネント６６が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８を含む。
【０３４１】
仮想化レイヤ７０は、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、ならびに仮想クライアント７５などの仮想的実体を提供できる抽象レイヤを備える。
【０３４２】
一例を挙げると、管理レイヤ８０は、以下で説明される機能を提供できる。リソース・プロビジョニング８１は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定８２は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウドの利用者およびタスクのＩＤ検証を行うと共に、データおよびその他のリソースの保護を行う。ユーザ・ポータル８３は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理８４は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意（ＳＬＡ：Service Level Agreement）計画および実行８５は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、ＳＬＡに従って行う。
【０３４３】
ワークロード・レイヤ９０は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション９１、ソフトウェア開発およびライフサイクル管理９２、仮想クラスルーム教育の配信９３、データ解析処理９４、トランザクション処理９５、およびメモリベースの構成状態レジスタ処理９６が挙げられる。
【０３４４】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【０３４５】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【０３４６】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組合せ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【０３４７】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【０３４８】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【０３４９】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【０３５０】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【０３５１】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【０３５２】
上記に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、１つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、１人または複数人の顧客のために１つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、１つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【０３５３】
１つの態様では、１つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。１つの例として、アプリケーションのデプロイは、１つまたは複数の実施形態を実行するよう機能するコンピュータ・インフラストラクチャを提供することを含む。
【０３５４】
さらに別の態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、１つまたは複数の実施形態を実行できる。
【０３５５】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が１つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、１つまたは複数の実施形態を実行できる。
【０３５６】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、１つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、さまざまな命令または動作が使用されてよい。さらに、さまざまなレジスタが使用されてよく、またはその他の種類の（レジスタ番号以外の）指示が指定されてよく、あるいはその両方が行われてよい。多くの変形が可能である。
【０３５７】
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも２つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【０３５８】
入出力デバイスまたはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない）は、直接的に、または介在するＩ／Ｏコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【０３５９】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、１つまたは複数のその他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
【０３６０】
下の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるときに、その他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。１つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が可能であるということは、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
【図１】
2021503119.tif 000003
【図２】
2021503119.tif 000004
【図３】
2021503119.tif 000005
【図４】
2021503119.tif 000006
【図５】
2021503119.tif 000007
【図６】
2021503119.tif 000008
【図７】
2021503119.tif 000009
【図８】
2021503119.tif 000010
【図９】
2021503119.tif 000011
【図１０】
2021503119.tif 000012
【図１１】
2021503119.tif 000013
【図１２】
2021503119.tif 000014
【図１３】
2021503119.tif 000015
【図１４】
2021503119.tif 000016
【図１５】
2021503119.tif 000017
【図１６】
2021503119.tif 000018
【図１７】
2021503119.tif 000019
【図１８】
2021503119.tif 000020
【図１９】
2021503119.tif 000021
【図２０】
2021503119.tif 000022
【図２１】
2021503119.tif 000023
【図２２】
2021503119.tif 000024
【図２３】
2021503119.tif 000025
【図２４】
2021503119.tif 000026
【図２５】
2021503119.tif 000027
【図２６】
2021503119.tif 000028
【図２７】
2021503119.tif 000029
【図２８】
2021503119.tif 000030
【図２９】
2021503119.tif 000031
【図３０】
2021503119.tif 000032
【図３１】
2021503119.tif 000033
【図３２】
2021503119.tif 000034
【図３３】
2021503119.tif 000035
【図３４】
2021503119.tif 000036
【図３５】
2021503119.tif 000037
【図３６】
2021503119.tif 000038
【図３７】
2021503119.tif 000039
【図３８】
2021503119.tif 000040
【図３９】
2021503119.tif 000041
【図４０】
2021503119.tif 000042
【図４１】
2021503119.tif 000043
【図４２】
2021503119.tif 000044
【図４３】
2021503119.tif 000045
【図４４】
2021503119.tif 000046
【図４５】
2021503119.tif 000047
【図４６】
2021503119.tif 000048
【図４７】
2021503119.tif 000049
【図４８】
2021503119.tif 000050
【図４９】
2021503119.tif 000051
【図５０】
2021503119.tif 000052
【図５１】
2021503119.tif 000053
【国際調査報告】
2021503119.tif 000054
2021503119.tif 000055