(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-04
(54)【発明の名称】動的アドレス変換保護リセット命令
(51)【国際特許分類】
G06F 12/1027 20160101AFI20240528BHJP
G06F 9/30 20180101ALI20240528BHJP
G06F 9/355 20180101ALI20240528BHJP
G06F 12/14 20060101ALI20240528BHJP
【FI】
G06F12/1027 100
G06F9/30 350A
G06F9/355 330A
G06F12/14 510E
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023573482
(86)(22)【出願日】2022-05-31
(85)【翻訳文提出日】2023-11-28
(86)【国際出願番号】 EP2022064836
(87)【国際公開番号】W WO2022253866
(87)【国際公開日】2022-12-08
(32)【優先日】2021-06-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】ジアメイ、ブルース
(72)【発明者】
【氏名】スレーゲル、ティモシー
(72)【発明者】
【氏名】ボーントレーガー、クリスチャン
(72)【発明者】
【氏名】オシセック、ダミアン
(72)【発明者】
【氏名】ヘラー、リサ
(72)【発明者】
【氏名】ガートナー、ユテ
(72)【発明者】
【氏名】ヨスト、クリスティン
(72)【発明者】
【氏名】ツォルツァトス、エルピーダ
【テーマコード(参考)】
5B017
5B033
5B205
【Fターム(参考)】
5B017AA02
5B017BA04
5B017BB05
5B017CA01
5B033AA04
5B033BE00
5B033DA03
5B033DA04
5B033FA27
5B205MM51
5B205RR02
5B205UX01
(57)【要約】
実行されることで、アドレス変換保護リセット操作を実行する命令が提供される。命令を実行することは、プロセッサによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することを含む。アドレス変換保護ビットをリセットすることの決定に基づいて、命令を実行することは、アドレス変換保護ビットをリセットしてストレージブロックに対する書き込み保護を無効化することを含む。リセットは、コンピューティング環境の1つ以上の他のプロセッサによるアクションを待つことなく行われる。
【選択図】
図2A
【特許請求の範囲】
【請求項1】
コンピューティング環境内での処理を容易にするためのコンピュータプログラム製品であって、
プログラム命令を実装した少なくとも1つのコンピュータ可読記憶媒体を含み、当該プログラム命令はプロセッサによって読み取り可能であり、当該プロセッサに、
アドレス変換保護リセット操作を実行する命令を実行することを含む方法を実行させ、当該命令を実行することは、
前記プロセッサによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することと、
前記決定に基づいて、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化することであって、当該リセットは、前記コンピューティング環境の1つ以上の他のプロセッサによるアクションを待つことなく行われる、ことと、
を含む、コンピュータプログラム製品。
【請求項2】
前記命令を実行することは、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化したことに基づいて、前記コンピューティング環境の前記1つ以上の他のプロセッサによる静止操作を必要とすることなく、当該命令の実行を終了することをさらに含む、前記請求項に記載のコンピュータプログラム製品。
【請求項3】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリをクリアすることをさらに含む、前記請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項4】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリの保護指示をリセットすることをさらに含む、前記請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項5】
前記命令を実行することは、前記コンピューティング環境の1つ以上の他のプロセッサに対して、前記特定の変換テーブルエントリに関連する当該1つ以上の他のプロセッサ内の変換ルックアサイドバッファエントリをクリアまたは修正する信号をブロードキャストすることをさらに含む、前記請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項6】
前記命令を実行することは、前記ストレージブロックに関連する前記特定の変換テーブルエントリ内の前記アドレス変換保護ビットをテストすることをさらに含み、前記ブロードキャストは、当該テストの結果に少なくとも部分的に基づく、前記請求項に記載のコンピュータプログラム製品。
【請求項7】
前記1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、前記ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生し、それに基づいて、当該他のプロセッサは、前記アドレス変換保護ビットを検査して、当該アドレス変換保護例外条件が過剰指示であることを識別し、当該検査によって当該アドレス変換保護例外条件が過剰指示であることを識別したことに基づいて、当該ストレージブロックへの書き込みアクセスが許可される、前記2つの請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項8】
前記1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、前記ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生し、それに基づいて、当該別のプロセッサは、前記アドレス変換保護ビットを検査して、当該アドレス変換保護例外条件が過剰指示であることを識別し、当該検査によって当該アドレス変換保護例外条件が過剰指示であることを識別したことに基づいて、当該別のプロセッサは、当該過剰指示されたアドレス変換保護ビットを含む当該別のプロセッサの関連する変換ルックアサイドバッファエントリをクリアまたは修正する、前記3つの請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項9】
前記1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、前記ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生し、それに基づいて、当該別のプロセッサは、当該例外条件を前記コンピューティング環境のオペレーティングシステムに報告し、それに基づいて、当該オペレーティングシステムは当該別のプロセッサに対して、当該1つ以上の他のプロセッサのうちの当該別のプロセッサにおいて前記アドレス変換保護リセット操作を実行する命令を発行する、前記3つの請求項のいずれか1項に記載のコンピュータプログラム製品。
【請求項10】
コンピューティング環境内での処理を容易にするためのコンピュータシステムであって、
メモリと、
前記メモリと通信するプロセッサと、を備え、前記コンピュータシステムは、
前記プロセッサによって、アドレス変換保護リセット操作を実行する命令を実行することを含む方法を実行するように構成され、当該命令を実行することは、
前記プロセッサによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することと、
前記決定に基づいて、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化することであって、当該リセットは、前記コンピューティング環境の1つ以上の他のプロセッサによるアクションを待つことなく行われる、ことと、
を含む、コンピュータシステム。
【請求項11】
前記命令を実行することは、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化したことに基づいて、前記コンピューティング環境の前記1つ以上の他のプロセッサによる静止操作を必要とすることなく、当該命令の実行を終了することをさらに含む、前記請求項に記載のコンピュータシステム。
【請求項12】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリをクリアすることをさらに含む、前記2つの請求項のいずれか1項に記載のコンピュータシステム。
【請求項13】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリの保護指示をリセットすることをさらに含む、前記3つの請求項のいずれか1項に記載のコンピュータシステム。
【請求項14】
前記命令を実行することは、前記コンピューティング環境の1つ以上の他のプロセッサに対して、前記特定の変換テーブルエントリに関連する当該1つ以上の他のプロセッサ内の変換ルックアサイドバッファエントリをクリアまたは修正する信号をブロードキャストすることをさらに含む、前記4つの請求項のいずれか1項に記載のコンピュータシステム。
【請求項15】
前記命令を実行することは、前記ストレージブロックに関連する前記特定の変換テーブルエントリ内の前記アドレス変換保護ビットをテストすることをさらに含み、前記ブロードキャストは、当該テストの結果に少なくとも部分的に基づく、前記請求項に記載のコンピュータシステム。
【請求項16】
コンピューティング環境内での処理を容易にするためのコンピュータ実装方法であって、
プロセッサによって、アドレス変換保護リセット操作を実行する命令を実行することを含み、当該命令を実行することは、
前記プロセッサによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することと、
前記決定に基づいて、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化することであって、当該リセットは、前記コンピューティング環境の1つ以上の他のプロセッサによるアクションを待つことなく行われる、ことと、
を含む、コンピュータ実装方法。
【請求項17】
前記命令を実行することは、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化したことに基づいて、前記コンピューティング環境の前記1つ以上の他のプロセッサによる静止操作を必要とすることなく、当該命令の実行を終了することをさらに含む、前記請求項に記載のコンピュータ実装方法。
【請求項18】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリをクリアすることをさらに含む、前記2つの請求項のいずれか1項に記載のコンピュータ実装方法。
【請求項19】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリの保護指示をリセットすることをさらに含む、前記3つの請求項のいずれか1項に記載のコンピュータ実装方法。
【請求項20】
前記命令を実行することは、前記コンピューティング環境の1つ以上の他のプロセッサに対して、前記特定の変換テーブルエントリに関連する当該1つ以上の他のプロセッサ内の変換ルックアサイドバッファエントリをクリアまたは修正する信号をブロードキャストすることをさらに含む、前記4つの請求項のいずれか1項に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【0001】
1つ以上の態様は、一般に、コンピューティング環境内の処理を容易にすることに関し、特に、そのような処理を改善することに関する。
【背景技術】
【0002】
コンピュータアーキテクチャは一般的に、オペレーティングシステム(OS)プログラムが、ストレージのブロックに対する書き込み保護を有効化(activate)および無効化(deactivate)するためのメカニズムを提供する。このような場合にオペレーティングシステムによって提供されるメモリ管理は、1つ以上の実施形態において、一連のイベントを含むことができる。一連のイベントには、オペレーティングシステムが特定のストレージブロックに対する書き込み保護を有効化すること、および、アプリケーションプログラムが当該特定のストレージブロックへの書き込みを試みたことに対し、プロセッサまたは中央処理装置(CPU)が書き込みを阻止し、当該書き込みの試みについてオペレーティングシステムに通知することが含まれる。オペレーティングシステムはこれに応じて、適切なメモリ管理処理を実行し、当該特定のストレージブロックに対する書き込み保護を無効化する。アプリケーションプログラムは、当該特定のストレージブロックへの書き込みを再び試み、今回は当該操作が許可される。
【0003】
オペレーティングシステムがストレージブロックへの書き込み許可を変更した場合、ブロードキャスト操作を介して、コンピューティング環境内のすべてのプロセッサに変更が通知される。そして、各プロセッサは、変更がローカルで観察されることを確認するためのアクションを実行する。コンピューティング環境内のすべてのプロセッサ間で必要とされるブロードキャストおよびシリアライズ(serialization:逐次化)のプロセスを、静止操作(quiescing operation)と称する。静止操作の一環として、各プロセッサは割り込み可能なポイント(interruptible point)に到達し、変更が観察可能であることを保証するためにローカルで必要なアクション(例えば、現在は使用されていない変換ルックアサイドバッファ(TLB:translation lookaside buffer)データの削除)を実行し、開始プロセッサ(initiating processor)に対してその旨を応答する必要がある。更新後の許可に依存する可能性のある命令処理はすべて、構成内のすべてのプロセッサが自身の応答を示し、イニシエータ(initiator)が、特定のストレージブロックに関する書き込み許可に対してシステム全体の更新を行うまで、中断される。
【0004】
記載した一連のイベントは、コピーオンライト(copy-on-write)や変更追跡(change-tracking)などの、頻繁に行われるメモリ管理操作中に発生する可能性がある。コンピューティング環境内のプロセッサの数が多くなるほど、静止操作の実行に要する時間が長くなる。
【発明の概要】
【0005】
コンピューティング環境内の処理を容易にするためのコンピュータプログラム製品の提供を通じて、従来技術の欠点が克服されるとともに、さらなる利点が得られる。コンピュータプログラム製品は、プログラム命令を実装した少なくとも1つのコンピュータ可読記憶媒体を含む。当該プログラム命令はプロセッサによって読み取り可能であり、当該プロセッサに、アドレス変換保護リセット操作を実行する命令を実行することを含む方法を実行させる。当該命令を実行することは、前記プロセッサによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することと、前記決定に基づいて、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化することと、を含む。当該リセットは、前記コンピューティング環境の1つ以上の他のプロセッサによるアクションを待つことなく行われる。コンピューティング環境の他のプロセッサによるアクションを待つことなくリセットを行うことによって、この命令を使用して性能が向上する。
【0006】
1つ以上の実施形態において、前記命令を実行することは、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化したことに基づいて、前記コンピューティング環境の前記1つ以上の他のプロセッサによる静止操作を必要とすることなく、当該命令の実行を終了することを含む。なお、この文脈における静止操作は、通常、コンピューティング環境内のすべてのプロセッサ間でのシリアライズを必要とする。静止操作が回避されるため、命令を使用してストレージブロックに対する書き込み保護を無効化するためにプロセッサ間でシリアライズを行う必要がない。この結果、コンピューティング環境の他のプロセッサによる命令処理の中断が低減され、性能が向上する。さらに、システム内の静止シリアライズメカニズムの競合(contention)が低減される。この命令は、オペレーティングシステムに対して、変更への対応としてコンピューティング環境のすべてのプロセッサ間でのシリアライズを必要とすることなく、ストレージブロックの書き込み保護を無効化するオプションを提供する。さらに、アドレス変換保護リセット操作を実行する命令は、決定操作およびリセット操作を実行する単一の命令であるため、性能が向上し、リソースの使用量が低減される。決定操作およびリセット操作を実行する単一の命令を提供することにより、特定のタスクは、ソフトウェアパラダイムを使用するよりも効率的に実行することができる。決定操作およびリセット操作はより高速に実行されるため、実行時間が短縮され、プロセッサおよびシステム全体の性能が向上する。
【0007】
一例において、前記命令を実行することは、前記変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリをクリアすることをさらに含む。別の例において、前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリの保護指示をリセットすることをさらに含む。有利な点として、変換ルックアサイドバッファエントリをクリアするのではなく、プロセッサは、エントリ内の保護指示を単にリセットし、エントリの残りの部分をそのままにしておくことができる。これにより、必要な変換ルックアサイドバッファエントリを再構築するためのアドレス再変換を必要とすることなく、書き込みを続け完了させることができる。
【0008】
1つ以上の実装形態において、前記命令を実行することは、前記コンピューティング環境内の1つ以上の他のプロセッサに対して、前記特定の変換テーブルエントリに関連する当該1つ以上の他のプロセッサ内の変換ルックアサイドバッファエントリをクリアまたは修正する信号をブロードキャストすることをさらに含む。一例において、前記命令を実行することは、前記ストレージブロックに関連する前記特定の変換テーブルエントリ内の前記アドレス変換保護ビットをテストすることをさらに含み、前記ブロードキャストは、当該テストの結果に少なくとも部分的に基づく。アドレス変換保護リセット命令を使用して、決定、リセット、およびブロードキャスト操作を実行することにより、性能が向上するとともに、リソースの使用率が低減される。
【0009】
1つ以上の実施形態において、前記コンピューティング環境の前記1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、前記ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生する。当該アドレス変換保護例外条件に基づいて、当該他のプロセッサは、前記アドレス変換保護ビットを検査して、当該アドレス変換保護例外条件が過剰指示であることを識別し、当該検査によって当該アドレス変換保護例外条件が過剰指示であることを識別したことに基づいて、当該ストレージブロックへの書き込みアクセスが許可される。有利な点として、アドレス変換保護ビットを検査してアドレス変換保護例外条件が過剰指示であることを識別することにより、アクセスを許可し、オペレーティングシステムのプログラム割り込みハンドラの必要性を回避することによって、この状況における処理性能を向上させることができる。
【0010】
1つ以上の実施形態において、前記コンピューティング環境の前記1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、前記ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生する。当該アドレス変換保護例外条件に基づいて、当該別のプロセッサは、前記アドレス変換保護ビットを検査して、当該アドレス変換保護例外条件が過剰指示であることを識別し、当該検査によって当該アドレス変換保護例外条件が過剰指示であることを識別したことに基づいて、当該別のプロセッサは、当該過剰指示されたアドレス変換保護ビットを含む当該別のプロセッサの関連する変換ルックアサイドバッファエントリをクリアまたは修正する。有利な点として、アドレス変換保護ビットを検査してアドレス変換保護例外条件が過剰指示であることを識別することにより、書き込みアクセスを続行させることによって、この状況における処理性能を向上させることができる。
【0011】
1つ以上の実施形態において、前記1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、前記ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生し、それに基づいて、当該別のプロセッサは、当該例外条件を前記コンピューティング環境のオペレーティングシステムに報告する。当該例外条件の報告に基づいて、当該オペレーティングシステムは当該別のプロセッサに対して、当該1つ以上の他のプロセッサのうちの当該別のプロセッサにおいて前記アドレス変換保護リセット操作を実行する命令を発行する。有利な点として、アドレス変換保護リセット操作を実行する命令は、変更に対する応答としてコンピューティング環境のすべてのプロセッサ間での静止操作を必要とすることなく、ストレージブロックに対する書き込み保護を容易に無効化するオプションをオペレーティングシステムに提供することができる。
【0012】
1つ以上の態様に関連するコンピュータシステムおよびコンピュータ実装方法も本明細書にて説明され、特許請求される。さらに、1つ以上の態様に関連するサービスもまた、本明細書にて説明され、特許請求される場合がある。
【0013】
さらなる特徴および利点が、本明細書に記載の技術によって実現される。他の実施形態および態様が、本明細書において詳細に説明され、特許請求される態様の一部と見なされる。
【0014】
1つ以上の態様が、本明細書の末尾の特許請求の範囲において例として具体的に指摘され、明確に特許請求される。上述の内容、ならびに1つ以上の態様の目的、特徴、および利点は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0015】
【
図1A】本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の一例を示す図である。
【
図1B】本発明の1つ以上の態様に係る、
図1Aのプロセッサのさらなる詳細を示す図である。
【
図2A】本発明の1つ以上の態様に係る、アドレス変換、およびリセットされるアドレス変換保護ビットの一例を示す図である。
【
図2B】本発明の1つ以上の態様に係る、アドレス変換、およびリセットされるアドレス変換保護ビットの他の一例を示す図である。
【
図2C】本発明の1つ以上の態様に係る、アドレス変換ルックアサイドバッファの一実施形態を示す図である。
【
図3】(A)~(E)は、本発明の1つ以上の態様に係る、動的アドレス変換保護リセット命令のフォーマットの一例を示す図である。
【
図4A】本発明の1つ以上の実施形態に係る、動的アドレス変換保護リセット命令の実行に関連する処理の一実施形態を示す図である。
【
図4B】本発明の1つ以上の実施形態に係る、動的アドレス変換保護リセット命令の実行に関連する処理の他の実施形態を示す図である。
【
図5A】本発明の1つ以上の実施形態の特定の態様を示すワークフローの一実施形態を示す図である。
【
図5B】本発明の1つ以上の実施形態の特定の態様を示すワークフローの一実施形態を示す図である。
【
図5C】本発明の1つ以上の実施形態の特定の態様を示すワークフローの一実施形態を示す図である。
【
図6A】本発明の1つ以上の態様に係る、コンピューティング環境内の処理を容易にする一例を示す図である。
【
図6B】本発明の1つ以上の態様に係る、コンピューティング環境内の処理を容易にする一例を示す図である。
【
図7A】本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の他の例を示す図である。
【
図7B】本発明の1つ以上の態様に係る、
図7Aのコンピューティング環境のためのメモリの更なる詳細の一例を示す図である。
【
図7C】本発明の1つ以上の態様に係る、
図7Aのコンピューティング環境のためのメモリの更なる詳細の他の一例を示す図である。
【
図8A】本発明の1つ以上の態様を組み込んで使用するコンピューティング環境のさらなる他の例を示す図である。
【
図8B】本発明の1つ以上の態様に係る、
図8Aのメモリのさらなる詳細を示す図である。
【
図9】本発明の1つ以上の態様に係る、クラウドコンピューティング環境の一実施形態を示す図である。
【
図10】本発明の1つ以上の態様に係る、抽象化モデルレイヤの一例を示す図である。
【発明を実施するための形態】
【0016】
本発明の一態様によれば、コンピューティング環境内の処理を容易にする機能が提供される。一例として、単一の命令(例えば、中央処理装置/ソフトウェアインタフェースにおける単一のアーキテクチャ化された機械命令)が、リセット操作(reset operation)を実行するために提供される。本明細書において、動的アドレス変換保護リセット命令(reset dynamic address translation protection instruction)、またはアドレス変換保護リセット命令と称されるこの命令は、汎用プロセッサ命令セットアーキテクチャ(ISA)の一部であり、汎用プロセッサなどのプロセッサ上のプログラムによってディスパッチされる(別の例において、この命令は、特定の機能用に構成されたコプロセッサなどの、専用プロセッサの一部であってもよい)。
【0017】
単一の命令(例えば、動的アドレス変換保護リセット命令)の実行の一部として、様々な操作が実行される。これらの操作には、プロセッサによって、一のストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することと、当該決定に基づいて、アドレス変換保護ビットをリセットし、当該ストレージブロックに対する書き込み保護を無効化することとが含まれる。ここで、リセット操作および命令実行は、コンピューティング環境における1つ以上の他のプロセッサの関連する操作から独立している。例えば、プロセッサ内のストレージブロックに対する書き込み保護のリセットは、コンピューティング環境における1つ以上の他のプロセッサによる静止操作なしに行われるか、またはこれを必要としない。これらの各操作は、単一の命令の実行の一部として実行される。これにより、システム性能が向上するとともに、システムリソースの使用が低減される。
【0018】
前述のように、コンピューティング環境、またはコンピュータアーキテクチャは一般的に、オペレーティングシステム(OS)プログラムが、ストレージの1つ以上のブロックに対する書き込み保護を選択的に有効化もしくは無効化またはその両方を行うためのプロセスまたは一連のイベントを提供する。オペレーティングシステムによって提供されるメモリ管理は一般的に、以下の一連のイベントを含む:1)オペレーティングシステムが、特定のストレージブロックに対する書き込み保護を有効化する、2)アプリケーションプログラムが、当該特定のストレージブロックへの書き込みを試み、プロセッサまたは中央処理装置(CPU)が、当該書き込みアクセスの試みをOSに通知する、3)OSが適切なメモリ管理リアクション処理を実行し、当該特定のストレージブロックに対する書き込み保護を無効化する、4)アプリケーションプログラムが、当該特定のストレージブロックへの書き込みを再び試み、今回は当該操作が許可される。
【0019】
OSがストレージブロックへの書き込み許可を変更した場合、コンピューティング構成または環境内のすべてのプロセッサは、従来、その通知を受信し、変更が遵守されていることを確認するために関連アクションを実行する。このような変更に必要なブロードキャストおよびシリアライズのプロセスを、コンピューティング環境内のプロセッサ間の静止操作と称する。静止操作の一部として、各プロセッサが変更に対応した後、各プロセッサは、コンピューティング構成内のすべてのプロセッサが対応の完了を示すまで、命令処理を中断する。
【0020】
記載した一連のイベントは、コピーオンライトや変更追跡などの、頻繁に行われるメモリ管理操作中に発生する。さらに、コンピューティング環境内のプロセッサまたはCPUの数が多くなるほど、静止操作の実行に要する時間が長くなる。したがって、静止操作をなくすことで、コンピューティング構成がこの一般的な書き込み許可の変更に対応するのに必要な時間が短縮され、これらの操作のパフォーマンスが向上し、コンピューティング環境内の処理が促進される。さらに、静止するハードウェアのシリアライズ要件により、これらのリソースがシステム内で制限されてしまう。この場合、静止の必要性をなくすことで、このハードウェアが経験するシステム全体の制約も軽減される。
【0021】
有利な点として、本明細書に開示するアドレス変換保護リセット命令は、変更に対するコンピューティング構成の応答の一部としてプロセッサまたはCPU間のシリアライズを必要とすることなく、OSがストレージブロックに対する書き込み保護を無効化するオプションを提供することができる。変更は、書き込み保護を無効化する命令を実行するプロセッサに適用される(すなわち、以前の(保護が有効な)テーブルエントリに基づく情報は、プロセッサの変換ルックアサイドバッファ(TLB)からクリアされる)。そして、変更は、コンピューティング構成内の1つ以上の他のプロセッサ(他のすべてのプロセッサなど)に適用されてもよいし、適用されなくてもよい。OSがアドレス変換保護リセット命令操作を使用することを選択した場合、OSは、別のプロセッサが、特定のストレージブロックに対する書き込み保護違反、すなわちアドレス変換保護の例外条件(address translation protection exception conditions)を引き続き報告する可能性があることを把握する。そのような場合、OSは、これが過剰指示(over-indication)であること認識し、(この(第2の)プロセッサのTLBをクリアまたは修正することによって)違反を示したプロセッサ上のストレージブロックに対する書き込み保護を無効化することができる。1つ以上の実施形態において、OSは、例えば、コンピューティング構成内の他のプロセッサも特定のストレージブロックにアクセスしている可能性が低い場合に、本明細書で提供するアドレス変換保護リセット命令を使用することができる。アドレス変換保護リセット操作の実行においてプロセッサ間のシリアライズが不要であるため、コンピューティング環境内の他のプロセッサによる命令処理の中断が低減される。その結果、パフォーマンスが向上する。
【0022】
本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の一実施形態を、
図1Aを参照して説明する。一例として、コンピューティング環境は、z/Architecture(登録商標)命令セットアーキテクチャ(インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製)に基づいている。z/Architecture命令セットアーキテクチャの一実施形態は、「z/Architecture Principles of Operation」と題された刊行物(IBM刊行物番号SA22-7832-12、第13版、2019年9月)に記載されており、その全体が参照により本明細書に組み込まれる。ただし、z/Architecture命令セットアーキテクチャは、一例に過ぎず、インターナショナル・ビジネス・マシーンズ・コーポレーションおよび/もしくは他のエンティティの他のアーキテクチャもしくは他のタイプのコンピューティング環境またはその両方が、本発明の1つ以上の態様を含む、もしくは使用する、またはその両方を行うことができる。なお、z/ArchitectureおよびIBMは、少なくとも1つの法域における、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。
【0023】
図1Aを参照すると、コンピューティング環境100は、例えば、コンピュータシステム102を含む。コンピュータシステム102は例えば、汎用コンピューティングデバイスとして示される。コンピュータシステム102は、特に限定されないが、1つ以上のバスもしくは他の接続110またはその両方を介して互いに結合された、1つ以上のプロセッサまたは処理ユニット104(例えば、中央処理装置(CPU))と、メモリ106(または、例えば、システムメモリ、メインメモリ、メインストレージ、中央ストレージ、またはストレージとも呼ばれる)と、1つ以上の入力/出力(I/O)インタフェース108とを含んでもよい。
【0024】
メモリ106は、例えば、プロセッサ104のローカルキャッシュ114に結合可能な共有キャッシュなどのキャッシュ112を含んでもよい。さらに、メモリ106は、1つ以上のプログラムまたはアプリケーション116および少なくとも1つのオペレーティングシステム118を含んでもよい。オペレーティングシステムの一例としては、z/OS(登録商標)オペレーティングシステム(インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製)。なお、z/OSは、少なくとも1つの法域における、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。インターナショナル・ビジネス・マシーンズ・コーポレーションもしくは他のエンティティまたはその両方が提供する他のオペレーティングシステムを使用してもよい。メモリ106はまた、本発明の態様の実施形態の機能を実行するように構成可能な、1つ以上のコンピュータ可読プログラム命令120を含んでもよい。
【0025】
コンピュータシステム102は、例えばI/Oインタフェース108(例えば、周辺コンポーネント相互接続(PCI)もしくは他のI/Oインタフェース接続またはその両方)を介して、ユーザ端末、テープドライブ、ポインティングデバイス、ディスプレイ、および1つ以上のデータストレージデバイス134などの1つ以上の外部デバイス130と通信することができる。データストレージデバイス134は、1つ以上のプログラム136、1つ以上のコンピュータ可読プログラム命令138、もしくはデータまたはその組み合わせなどを記憶してもよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてもよい。
【0026】
コンピュータシステム102はまた、例えばI/Oインタフェース108を介して、ネットワークインタフェース132と通信してもよい。これにより、コンピュータシステム102は、ローカルエリアネットワーク(LAN)、汎用ワイドエリアネットワーク(WAN)、もしくは公衆ネットワーク(例えば、インターネット)またはその組み合わせなどの1つ以上のネットワークと通信することができ、他のコンピューティングデバイスまたはシステムとの通信を実現することができる。
【0027】
コンピュータシステム102は、取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータシステム可読媒体を含んでもよいし、これらの媒体に結合されてもよいし、その両方であってもよい。例えば、コンピュータシステム102は、取り外し不可能な不揮発性磁気媒体(一般的に「ハードドライブ」と呼ばれる)、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピーディスク」)への読み書きのための磁気ディスクドライブ、もしくは、取り外し可能な不揮発性光ディスク(CD-ROM、DVD-ROMや他の光媒体など)への読み書きのための光ディスクドライブ、またはその組み合わせを含んでもよいし、これらの媒体に結合されてもよいし、その両方であってもよい。なお、他のハードウェアコンポーネントもしくはソフトウェアコンポーネントまたはその両方をコンピュータシステム102とともに使用してもよい。例としては、特に限定されないが、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、データアーカイブストレージシステムなどが挙げられる。
【0028】
コンピュータシステム102は、他の多くの汎用または専用コンピューティングシステム環境または構成とともに動作してもよい。コンピュータシステム102とともに使用するのに適した周知のコンピューティングシステム、環境、もしくは構成またはその組み合わせの例としては、特に限定されないが、パーソナルコンピュータ(PC)システム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および、これらのシステムまたはデバイスのいずれかを含む分散型クラウドコンピューティング環境などが挙げられる。
【0029】
一例として、プロセッサ(例えば、プロセッサ104)は、命令を実行するために使用される複数の機能コンポーネントを含む。
図1Bに示すように、これらの機能コンポーネントは、例えば、実行される命令をフェッチする命令フェッチコンポーネント150と、フェッチされた命令をデコードし、デコードされた命令のオペランドを取得する命令デコードユニット152と、デコードされた命令を実行する1つ以上の命令実行コンポーネント154と、必要に応じて命令実行のためにメモリにアクセスするメモリアクセスコンポーネント156と、実行された命令の結果を提供するライトバック(write back)コンポーネント158とを含む。コンポーネントのうちの1つ以上は、命令処理において1つ以上のレジスタ160にアクセスする、もしくはレジスタ160を使用する、またはその両方を行うことができる。さらに、コンポーネントのうちの1つ以上は、本発明の1つ以上の態様に従って、例えば本明細書に記載する動的アドレス変換保護リセット命令(または本発明の1つ以上の態様を使用可能な他の処理)のリセット操作を実行する際に使用される1つ以上の他のコンポーネントの少なくとも一部を含むか、またはこれら1つ以上の他のコンポーネントにアクセスすることができる。これら1つ以上の他のコンポーネントには、例えば、アドレス変換保護リセットコンポーネント(または1つ以上の他のコンポーネント)170が含まれる。
【0030】
本明細書に記載するコンピューティング環境は、動的アドレス変換(DAT:dynamic address translation)などのアーキテクチャ機能をサポートする。オペレーティングシステムによる適切なサポートとともに、動的アドレス変換機能を使用することによって、その構成において利用可能なメインストレージ(メインメモリとしても知られる)よりもストレージが大きく見えるシステムをユーザに提供することができる。この見かけ上のメインストレージを仮想ストレージと称し、仮想ストレージ内で場所を指定するために使用されるアドレスを仮想アドレスと称する。ユーザの仮想ストレージは、その構成において利用可能なメインストレージのサイズをはるかに超えてもよく、通常は補助ストレージ(auxiliary storage)(例えば、直接アドレス指定できないストレージ)内で維持される。仮想ストレージは、ページと呼ばれるアドレスのブロックから構成されていると考えられる。仮想ストレージの直近に参照されたページのみが、物理メインストレージ(例えば、ランダムアクセスメモリ(RAM))のブロックに割り振られる。ユーザがメインストレージ上にない仮想ストレージのページを参照すると、これらのページは、メインストレージのページのうち、必要とされる可能性の低いページに置き換わる。ストレージのページの入れ替えは、ユーザが知らないうちにオペレーティングシステムによって実行されてもよい。
【0031】
さらには、仮想コンピューティング環境において、解釈的な(interpretive)実行アーキテクチャが、ページング可能(pageable)ストレージモードと呼ばれる、絶対ストレージ用のストレージモードを提供する。ページング可能ストレージモードでは、ホストレベルで動的アドレス変換を使用して、ゲストのメインストレージをマッピングする。ホストは、ページング可能ストレージモードのゲスト実ストレージ(guest real storage)を、ホストDATを使用してホスト実ストレージの任意の場所にある使用可能なフレームに分散させる機能と、ゲストデータを補助ストレージにページアウトさせる機能とを有する。この技術は、ゲスト用の絶対ストレージの連続する範囲について期待される見え方を維持しながら、実マシンのリソースを割り当てる際に柔軟性を提供することができる。
【0032】
仮想マシン環境は、DATの適用を複数回要求することができる:最初はゲストレベルで、ゲストが管理する変換テーブルを通じてゲスト仮想アドレスをゲスト非仮想アドレス(guest non-virtual address)に変換するためであり、次に、ページング可能なゲストについて、ホストレベルで、対応するホスト仮想アドレス(すなわち、ゲスト非仮想アドレス)を、ホスト実アドレスまたは絶対アドレスなどのホスト非仮想アドレスに変換するためである。
【0033】
仮想ストレージに関連付けられる仮想アドレスのシーケンスは、アドレス空間と呼ばれ、動的アドレス変換機能を使用して、複数のアドレス空間を提供することができる。これらのアドレス空間を使用してユーザ間の分離度合い(degrees of isolation)を提供することができる。このようなサポートは、各ユーザ用の完全に異なるアドレス空間を含むことができ、これにより完全な分離を提供することができる。あるいは、各アドレス空間の一部を単一の共通ストレージエリアにマッピングすることにより、共有エリアを提供してもよい。また、準特権(semi-privileged)プログラムが2つ以上のこのようなアドレス空間にアクセスできるようにする命令も提供される。動的アドレス変換は、例えば、制御レジスタ内の変換パラメータを変更することなく、複数の異なるアドレス空間からの仮想アドレスの変換を可能にする。
【0034】
動的アドレス変換は、ストレージ参照中に仮想アドレスを対応する実アドレスまたは絶対アドレスに変換する処理である。動的アドレス変換は、CPUが生成する命令アドレスおよびデータアドレスに対して指定することができる。動的アドレス変換によって形成される実アドレスまたは絶対アドレス、およびその後プレフィックス変換(prefixing)によって形成される絶対アドレスは、一実施形態において、64ビット長である。仮想アドレスは、一次仮想アドレス、二次仮想アドレス、アクセスレジスタ(AR:access register)指定仮想アドレス、またはホーム仮想アドレスであってもよい。アドレスは、それぞれ一次、二次、AR指定、またはホームのアドレス空間制御要素(ASCE:address space control element)によって変換される。適切なアドレス空間制御要素の選択後は、変換プロセスは4種類の仮想アドレスすべてについて同一である。アドレス空間制御要素は、セグメントテーブル指定(segment table designation)または領域テーブル指定(region table designation)であってもよい。セグメントテーブル指定または領域テーブル指定は、実ストレージまたは絶対ストレージにおいてオペレーティングシステムによって確立されたテーブルによって変換を実行させる。
【0035】
セグメントテーブル指定または領域テーブル指定を使用する場合の変換プロセスでは、3種類の情報単位、すなわち、領域、セグメント、ページが認識される。それに応じて、仮想アドレスは4つのフィールドに分割される。一例として、ビット0~32を領域インデックス(RX:region index)、ビット33~43をセグメントインデックス(SX:segment index)、ビット44~51をページインデックス(PX:page index)、ビット52~63をバイトインデックス(BX:byte index)と呼ぶ。仮想アドレスのRX部分は、それ自身が3つのフィールドに分割される。一実施形態において、ビット0~10を領域第1インデックス(RFX:region first index)、ビット11~21を領域第2インデックス(RSX:region second index)、ビット22~32を領域第3インデックス(RTX:region third index)と呼ぶ。
【0036】
図2Aを参照して、仮想アドレスを実アドレスに変換する一例を説明する。この処理を、本明細書ではDATウォーク(またはページウォーク)と称し、あるアドレス(例えば、仮想アドレス)を別のアドレス(例えば、実アドレス)に変換するためにアドレス変換テーブルをウォーク(walk)する。この例では、アドレス空間制御要素(ASCE)200は、テーブルオリジン202と、変換の開始レベルの指標(すなわち、階層構造内のどのレベルでアドレス変換を開始するかの指標)となる指定タイプ(DT:designation type)制御204とを含む。テーブルオリジン202およびDT204を使用して、特定のテーブルのオリジンの位置が決められる。次に、テーブルに基づいて、仮想アドレスのビットを特定のテーブルへのインデックスとして使用し、次のレベルのテーブルのオリジンを取得する。例えば、領域第1テーブル(RFT)206が選択される場合、仮想アドレスのビット0~10(RFX)208を領域第1テーブルへのインデックスに使用し、領域第2テーブル(RST)210のオリジンを取得する。次に、仮想アドレスのビット11~21(RSX)212を領域第2テーブル210へのインデックスに使用し、領域第3テーブル(RTT)214のオリジンを取得する。同様に、仮想アドレスのビット22~32(RTX)216を領域第3テーブル214へのインデックスに使用し、セグメントテーブル218のオリジンを取得する。次に、仮想アドレスのビット33~43(SX)220をセグメントテーブル218へのインデックスに使用し、ページテーブル222のオリジンを取得する。そして、仮想アドレスのビット44~51(PX)224をページテーブル222へのインデックスに使用し、ページフレーム実アドレス(PFRA:page frame real address)226を有するページテーブルエントリ(PTE)225を取得する。次に、ページフレーム実アドレスを、オフセット228(ビット52~63)と組み合わせ(例えば、連結し)、実アドレスを取得する。その後、プレフィックス変換を適用して、対応する絶対アドレスを取得してもよい。
【0037】
一実施形態において、ページテーブル222などの1つ以上の変換テーブルエントリは、アドレス変換保護ビットPを含む。これは、変換テーブルエントリに関連する1つ以上のストレージブロックへの書き込みアクセスを制御するために使用することができる。ビットが第1の値、例えば「0」であるとき、ストレージブロックに対する書き込み保護は無効化され、ビットが第2の値、例えば「1」であるとき、ストレージブロックに対する書き込み保護は有効化される。例えば、アドレス変換保護ビットはセットされると、例えば、ページテーブルエントリのコンテキストにおける特定のページにアドレス変換保護が適用されることを示す(セグメントテーブルエントリの場合、アドレス変換保護ビットは、セグメント全体への書き込みアクセスが可能かどうかを制御する)。一実施形態において、このビットはフェッチアクセスには影響せず、書き込みアクセスにのみ影響する。(一実施形態において)保護ビットが「0」の場合、書き込みアクセスが許可され、ビットが「1」の場合、書き込みアクセスが禁止される。
【0038】
図2Bを参照して、アドレス変換の別の例を説明する。この例では、最初のゲスト仮想アドレスを最終的なホスト実アドレスに変換するためにDATウォークが実行される。この例では、アドレス空間制御要素(ASCE)200は、ゲストアドレス空間制御要素であり、ASCE200のDT204は、ゲストアドレス変換構造260によって決定されるゲスト変換が、テーブルオリジン202によって指示される領域第1テーブル206から開始することを示している。したがって、最初のゲスト仮想アドレスの適切なビット(例えば、RFX208)を領域第1テーブル206へのインデックスに使用して、領域第1テーブルのエントリのポインタを取得する。領域第1テーブルエントリ(RFTE:region first table entry)のアドレスは、ゲスト実アドレスまたは絶対アドレスである。このゲスト実アドレスまたは絶対アドレスは、メインストレージのオリジンおよびリミット(limit)が適用され、ホスト仮想アドレスに対応する。この中間(intermediate)ホスト仮想アドレスは次に、ホストアドレス変換構造270を使用して変換される。特に、アドレス空間制御要素(ASCE)250は、ホストアドレス変換構造272における変換の開始レベルを示すために使用される、ホストアドレス空間制御要素である。ASCE250のDT254によって示される開始レベル(例えば、領域第1テーブル)に基づいて、
図2Aを参照して説明したように、ホスト仮想アドレスの特定のビットは、テーブルオリジン252で示されるテーブルへのインデックスに使用され、このテーブルが、ホストアドレス変換構造272を使用した変換に使用される。ゲストRFTEに対応するホスト仮想アドレスの変換は、ホストページフレーム実アドレス(PFRA)274aが取得されるまで続けられる。
【0039】
中間のホストページフレーム実アドレスにおけるデータは、ゲストアドレス変換構造(例えば、この特定の例においては、ゲスト領域第2テーブル210)の次のレベルへのポインタであり、上述のように変換が続けられる。具体的に、ホストアドレス変換構造276、278、280、および282を使用して、ゲスト領域第2テーブル210、領域第3テーブル214、セグメントテーブル218、およびページテーブル222にそれぞれ関連付けられる中間ホスト仮想アドレスを変換し、それぞれホストPFRA274b、274c、274d、および274eが得られる。ホストページフレーム実アドレス274eは、ゲストページテーブルエントリ225のアドレスを含む。ゲストページテーブルエントリ225は、ゲストページフレーム実アドレス226を含む。ゲストページフレーム実アドレス226は、最初のゲスト仮想アドレスからのオフセットと連結されて、対応するゲスト絶対アドレスが得られる。次に、メインストレージのオリジンおよびリミットが、対応するホスト仮想アドレスを計算するために適用され、次いで、このホスト仮想アドレスが、上述のようにアドレス変換構造284を使用して変換され、ホストページフレーム実アドレス274fが得られる。その後、ホストページフレーム実アドレスは、ホスト仮想アドレスのオフセット(例えば、ビット52~63)と組み合わされ(例えば、連結され)、最終的なホスト実アドレスを取得する。これで、ゲスト仮想アドレスの、ホスト実アドレスへの変換が完了する。
【0040】
上記の例では、変換は領域第1テーブルで開始するが、これは一例に過ぎない。変換は、ゲストまたはホストいずれかの、あらゆる領域またはセグメントテーブルレベルで開始することができる。さらに、留意すべき点として、領域第2テーブル、領域第3テーブル、セグメントテーブル、ページテーブルなどの変換テーブルエントリの1つ以上の一部として、アドレス変換保護ビットPをテーブルエントリに含めることができ、関連する1つ以上のストレージブロックへの書き込みアクセスの処理中に、当該書き込みアクセスの続行を許可するか否かを決定するために参照することができる。アドレス変換保護ビットが第1の値(例えば、「0」)である場合、この1つ以上のストレージブロックへの書き込みアクセスは許可され、アドレス変換保護ビットが第2の値(例えば、「1」)である場合、この1つ以上のストレージブロックに対する書き込み保護が有効であり、書き込みアクセスが禁止される。
【0041】
さらに、一実施形態において、アドレス変換を向上させるために、仮想アドレスから実アドレスまたは絶対アドレスへの変換マッピングを、変換ルックアサイドバッファ(TLB:translation lookaside buffer)などの、アドレス変換に関連する構造のエントリに格納することができる。TLBは、仮想アドレス変換速度を向上させるためにメモリ管理ハードウェアが使用するキャッシュである。次に仮想アドレスの変換が要求されたとき、TLBがチェックされ、もし対応するエントリがTLBに存在すれば、TLBヒットとなり、実アドレスまたは絶対アドレスがそこから取得される。そうでない場合は、上述のようにページウォークが実行される。
【0042】
図2Cに示すように、一例において、変換ルックアサイドバッファ290は、1つ以上のエントリ292を含むことができる。所与の変換ルックアサイドバッファエントリは、アドレス変換保護ビットP296を含むことができる。アドレス変換保護ビットP296は、本明細書で説明するように、変換テーブルエントリに関連する1つ以上のストレージブロックへの書き込みアクセスを制御するために使用することができる。さらに、TLBエントリを、アドレス変換テーブルの領域テーブルエントリ、セグメントテーブルエントリ、またはページテーブルエントリに関連付けてもよい。1つ以上の実施形態において、領域テーブルエントリおよびセグメントテーブルエントリは、ページテーブルエントリ内のアドレス変換保護ビットPに加えて、保護ビットも有することができる。変換ルックアサイドバッファでは、すべてのアドレス変換保護ビットPがORされて(ORed)、ゲスト(または仮想)アドレスから実アドレスに変換される。エントリは、コンピューティング環境のホスト用であってもよいし、ゲスト用(または両方)であってもよく、インジケータ(例えば、H/Gインジケータ294)によってそのようにマークされてもよい。例えば、H/G294が1に設定されている場合、エントリはホストエントリであり、0に設定されている場合、エントリはゲストエントリである。または、その逆であってもよい。いくつかの実施形態において、ゲストレベルとホストレベルの両方の変換が順番に実行され、ゲストレベルとホストレベルの両方について、各々がこれらのテーブルレベルを介して進行し、ゲストレベルとホストレベルのすべてのテーブルエントリからの保護ビットがORされて、複合(composite)変換ルックアサイドバッファエントリの保護ビットを形成する。変換ルックアサイドバッファは多くの実装形態が可能である。
【0043】
ここで示すように、ゲスト変換をTLBに含むことができる。これらのエントリは、1つ以上のホスト変換を暗黙的に(implicitly)含む複合ゲスト/ホストエントリであってもよい。例えば、ゲスト仮想TLBエントリは、最初のゲスト仮想アドレスから最終的なホスト実アドレスまたは絶対アドレスまでの変換全体をバッファしてもよい。この場合、上記の
図2Bで説明したように、ゲストTLBエントリは暗黙的に、すべての中間ホスト変換272、276、278、280および282、ならびに最終的なホスト変換284を含む。別の例では、階層型TLBは、最初のゲスト仮想アドレスからゲストページテーブル222の関連するオリジンまでの変換をバッファするTLBの第1のレベルのエントリを含んでもよい。この第1のレベルのエントリは、例えば、領域とセグメントテーブルの組み合わせエントリ(CRSTE:combined region and segment table entry)を表現しており、TLBのCRSTE部分と呼ぶことがある。さらには、階層型TLBは、ゲストページテーブルエントリアドレスから最終的なホスト実アドレスまたは絶対アドレスまでの変換をバッファするTLBの第2のレベルから別個のエントリを含んでもよい。この例では、
図2Bで説明したように、TLBの第1のレベル内のゲストエントリは、ゲストの領域およびセグメントテーブルを補助(back)するホスト変換に対応する中間ホスト変換272、276、278、および280を暗黙的に含み、第2のレベル内のゲストエントリは、ゲストページテーブルおよび最終的なホスト変換284を補助する中間ホスト変換282を暗黙的に含む。変換ルックアサイドバッファは多くの実装形態が可能である。
【0044】
本発明の一態様によれば、本明細書において動的アドレス変換保護リセット命令、DAT保護リセット命令、またはアドレス変換保護リセット命令と称する命令は、単一の命令を実行する一部として、命令を実行するプロセッサまたはCPUによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定し、保護ビットをリセットすることの決定に基づいて、アドレス変換保護ビットをリセットして、当該ストレージブロックに対する書き込み保護を無効化することを実行するために提供される。リセットは、コンピューティング環境の他のプロセッサによる静止操作なしに行われるか、またはこれを必要とせずに行われる。1つ以上の実施形態において、命令を実行することは、ストレージブロックへの書き込みアクセスが試みられたことに基づいており、書き込みアクセスは、当該命令を実行する前は、特定の変換テーブルエントリ内のアドレス変換保護ビットによってブロックされる。さらに、命令を実行することは、コンピューティング環境の1つ以上の他のプロセッサによる関連アクションを待つことなく、アドレス変換保護ビットをリセットしてストレージブロックに対する書き込み保護を無効化したことに基づいて、命令の実行を終了することを含むことができる。このように、アドレス変換保護リセット命令を実行するプロセッサは、コンピューティング環境の1つ以上の他のプロセッサにおける関連処理から独立して進行する。
【0045】
オペレーティングシステムは、例えば、コピーオンライト操作または特定のストレージ位置への変更追跡の一部として、ストレージの1つ以上のブロックに対するアドレス変換保護の例外を有効化もしくは無効化またはその両方を行うことができる。上述したように、該当する変換テーブルエントリのアドレス変換保護ビットは、アドレス変換保護の例外条件が存在する場合を指定する。アドレス変換保護を修正する既存の方法は、一般的に、コンピューティング環境内の他のすべてのプロセッサを含む静止操作を伴う。先に説明したように、1つ以上の実施形態において、アドレス変換保護リセット命令が本明細書において提供され、この命令を実行することにより、静止操作のシリアライズ要素を必要とせずに、適切な場合に、変換テーブルエントリのアドレス変換保護ビットをクリアし、関連するTLBエントリのローカルコピーをクリアまたは修正し、さらに必要に応じて、構成内の他のCPUに変更をブロードキャストするメカニズムが提供される。このように、本開示のアドレス変換保護リセット操作は、リセット操作の進行および完了のためにコンピューティング環境のプロセッサ間で静止操作を必要とする典型的なアプローチと比較して、性能の向上を実現する。さらに、本開示のアドレス変換保護リセット操作は、システム全体の限られた静止操作リソースの消費を防止し、リソースを他の操作に使用できるようにすることができる。
【0046】
上述したように、指定された変換テーブルエントリのアドレス変換保護ビット(例えば、DAT保護ビット)は、動的アドレス変換保護リセット命令実行の一部として、0に設定されるか、または0であることが検証される。さらに、命令を実行するプロセッサまたはCPU内の関連する変換ルックアサイドバッファエントリがクリアまたは修正される。ローカルクリア制御(local clearing control)が0である場合、コンピューティング環境内の他のプロセッサ内の関連する変換ルックアサイドバッファエントリは、命令の実行と非同期でクリアまたは修正されてもよいし、されなくてもよい。なお、一実施形態において、命令実行の開始時に指定のアドレス変換保護ビットがアクティブでない場合であっても、リセット命令を実行するプロセッサ内の関連する変換ルックアサイドバッファはクリアまたは修正される。
【0047】
リセット動作を実行するために使用される動的アドレス変換保護リセット命令の一実施形態を、
図3(A)~(E)を参照して以下に説明する。この命令は、一例において、汎用プロセッサ(例えば、
図1Aのプロセッサ104)を使用して実行される。本明細書の説明において、特定の場所、特定のフィールド、もしくはフィールドの特定のサイズまたはその組み合わせが示される場合がある(例えば、特定のバイトもしくはビットまたはその両方)。しかしながら、他の場所、フィールド、もしくはサイズまたはその組み合わせが提供されてもよい。さらに、ビットを特定の値、例えば1または0に設定することが指定される場合があるが、これは一例に過ぎない。他の例において、ビットは、反対の値や別の値など、異なる値に設定されてもよい。多くの変形が可能である。
【0048】
一例において、動的アドレス変換保護リセット命令は、拡張操作コード(オペコード(opcode))および追加レジスタによって、レジスタおよびレジスタ操作を示すフォーマットを有する。
図3(A)に示すように、一例において、動的アドレス変換保護リセット命令300は複数のフィールドを有し、各フィールドは関連する添え字番号を有してもよい。命令の各フィールドに関連する添え字番号は、そのフィールドが適用されるオペランドを示す。例えば、レジスタR
1に関連する添え字番号1は、R
1を使用して指定されたレジスタが第1のオペランドを含むことを示す。レジスタオペランドの長さは1レジスタで、例えば64ビットである。
【0049】
一実施形態において、動的アドレス変換保護リセット(RDP)命令300は、リセット操作を示すオペレーションコード(オペコード)フィールド302(例えば、ビット0~15)と、少なくとも1つの第1のレジスタを指定するために使用される第1のレジスタ(R1)フィールド308(例えば、ビット24~27)と、少なくとも1つの第2のレジスタを指定するために使用される第2のレジスタ(R2)フィールド310(例えば、ビット28~31)と、少なくとも1つの第3のレジスタを指定するために使用される第3のレジスタ(R3)フィールド304(例えば、ビット16~19)と、マスク(M4)フィールド306(例えば、ビット20~23)とを含む。、これらの各フィールドについては後述する。一実施形態において、フィールドは互いに別個で独立しているが、他の実施形態において、2つ以上のフィールドが組み合わされてもよい。これらのフィールドに関するさらなる情報を以下に説明する。
【0050】
一実施形態において、レジスタ(R
1)フィールド308は、
図3(B)に示すように、セグメントテーブルエントリのフォーマットを有する内容を含み、ページテーブルオリジンのみが使用される。
【0051】
一例において、レジスタ(R
2)フィールド310は、
図3(C)に示すように、仮想アドレスのフォーマットを有することができ、ページインデックスのみが使用される。
【0052】
1つ以上の実施形態において、リセット命令のレジスタ(R
3)フィールド304は、アドレス空間制御要素(ASCE)のフォーマットを有し、テーブルオリジンおよび指定タイプ制御(DT)のみが使用される。
図3(D)は、この例を示しており、レジスタ(R
3)フィールド304は、クリアに使用されるASCEの領域テーブルオリジンまたはセグメントテーブルオリジンを含む。これらの内容はさらに、クリアまたは修正する変換ルックアサイドバッファエントリの選択に使用することができる。命令のR
3フィールドが0である場合、R
3のすべての内容が無視され、変換ルックアサイドバッファエントリが、それらの形成に使用されるASCEにかかわらずクリアされる。
【0053】
一例において、命令の実行に1つ以上の制御が使用される。制御の例は、M
4フィールド306に含まれる。
図3(E)を参照すると、M
4フィールド306は、(一実施形態において)ローカルクリア制御(LC)ビットを含み、このビットは、セットされた場合、ローカルプロセッサまたはCPU内の関連する変換ルックアサイドバッファエントリのみがクリアまたは修正されることを示し、セットされない場合、ローカルプロセッサ内の関連する変換ルックアサイドバッファエントリのクリアに加えて、コンピューティング環境またはコンピュータ構成のすべてのプロセッサ内の関連する変換ルックアサイドバッファエントリがクリアまたは修正されてもよいし、クリアまたは修正されなくてもよい。
【0054】
1つ以上の具体的な実施形態において、ページテーブルオリジンおよびページインデックスは、ページテーブルルックアップのための動的アドレス変換規則に従って、ページテーブルエントリを指定する。z/Architecture(登録商標)アーキテクチャモードでは、ページテーブルオリジンは64ビットアドレスとして扱われ、加算は、現在のアドレス指定モード(addressing mode)にかかわらず、64ビットアドレス算術の規則を使用して実行される。これら2つのコンポーネントから形成されるアドレスは、実アドレスまたは絶対アドレスである。
【0055】
この手順の間、ページテーブルエントリは、フォーマットエラーについて検査される必要はなく、エントリに含まれるページフレーム実アドレスは、アドレス指定例外について検査される必要はない。さらに、アドレス変換保護(またはDAT保護)ビットは、ページ無効ビット(page-invalid bit)の値にかかわらず、0に設定される(または0であることが検証される)。
【0056】
ページテーブルエントリ全体は、他のプロセッサから観察すると、ストレージから同時にフェッチされるように見える。DAT保護ビットが検査される。命令の開始時にDAT保護ビットが「1」の場合、DAT保護ビットを含むバイトが格納される。命令の開始時にDAT保護ビットが「0」の場合、DAT保護ビットを含むバイトが格納されるかどうかは、モデルに依存する。
【0057】
例外が認識されない場合、プロセッサは、自身の変換ルックアサイドバッファから、選択されたエントリをクリアする。そして、LCビットが0である場合、プロセッサは、構成内のすべてのプロセッサに対して、静止操作を実行することなく適宜のタイミングで、自身の変換ルックアサイドバッファから、選択されたエントリをクリアまたは修正するように信号を送ることができる。影響を受ける変換ルックアサイドバッファは、少なくとも以下の条件が満たされるエントリをクリアする:1)汎用レジスタR1のページテーブルオリジンが、TLBテーブルエントリを形成するために使用されたページテーブルオリジンと一致する、2)汎用レジスタR2のページインデックスが、TLBテーブルエントリのページインデックスと一致する、3)R3フィールドが0であるか、または汎用レジスタR3のテーブルオリジンおよび指定タイプフィールドが、TLBテーブルエントリを形成するために使用されたアドレス空間制御要素(ASCE)のテーブルオリジンおよび指定タイプフィールドと一致する、4)指定ページテーブルエントリに含まれるページフレーム実アドレス(PFRA)が、TLBテーブルエントリを形成するために使用されたPFRAと一致する。
【0058】
1つ以上の実施形態において、リセット操作の開始前に、命令を実行するプロセッサ上でシリアライズ機能が実行され、操作の完了後に再び実行される。すべてのシリアライズ操作の場合と同様に、このシリアライズは、アドレス変換保護リセット命令を実行するプロセッサにのみ適用される。有利な点として、本明細書に開示する命令を実行するために、他のプロセッサをシリアライズまたは静止させる必要はない。
【0059】
以下で説明するように、アドレス変換保護リセット命令の実行後、構成内の他のプロセッサは、命令によって変更されたページテーブルエントリに対応するページ(すなわち、ストレージブロック)に対するアドレス変換保護例外を引き続き認識することができる。この場合、命令を実行しなかったプロセッサでは、変更されたページテーブルエントリに対応する変換ルックアサイドバッファエントリはまだクリアまたは修正されていない。さらに、この場合、命令を実行しなかったプロセッサは、変更されたページテーブルエントリのアドレス変換保護ビットが0であることを観察することができる。コンピューティング環境内で動作するオペレーティングシステムまたは制御プログラムは、
図4A~
図5Cを参照してさらに後述するように、潜在的なシナリオを認識し、処理する。
【0060】
性能をさらに向上させるために、コンピューティング環境内の他のプロセッサは、関連する変換ルックアサイドバッファエントリがまだクリアまたは修正されていない場合に、不要なアドレス変換保護例外をオペレーティングシステムに提示するケースを最小限にすることができる。例えば、DAT保護例外を提示する前に、プロセッサは変換テーブルエントリのDAT保護ビットの内容を調べることができる。このビットが0であることが分かった場合、プロセッサは、保護例外条件を破棄し、古い保護指示を含むエントリのローカルTLBをクリアまたは修正し、例外をトリガした命令を再実行することができる。さらに、RDP命令を実行したプロセッサでは、命令の開始時に特定のページテーブルエントリのDAT保護ビットが0である場合、プロセッサは変更を行っていないため、コンピューティング環境内の他のプロセッサに操作の信号を送る必要はない。また、先行するプロセッサが変更を行っている場合、当該プロセッサは既に信号を適宜ブロードキャストしているはずである。さらに、他のプロセッサは、本明細書で説明したように、過剰指示を認識して処理するか、または例外を提示して、オペレーティングシステムに当該プロセッサ上で別のRDPを発行させるので、信号のさらなるブロードキャストがなくても、適切な動作が保証される。
【0061】
上述したように、別の実施形態において、保護指示を含むTLBエントリをクリアする代わりに、プロセッサは、TLBエントリをインプレース(in-place)で変更または修正して保護を無効にするすることができる。有利な点として、これにより、命令が再実行される際に、エントリを再構築するために別のページウォークを実行する必要がなくなる。
【0062】
なお、1つ以上の実施形態において、アドレス変換保護リセット命令は、ページテーブルエントリに適用することができる。1つ以上の他の実施形態において、アドレス変換保護リセット命令は、ページテーブルエントリだけでなく、セグメントテーブルエントリまたは領域テーブルエントリにも適用することができる。
【0063】
また、動的アドレス変換保護リセット命令の様々なフィールドおよびレジスタを説明しているが、本発明の1つ以上の態様は、他の、追加の、および/もしくはより少ない数のフィールドおよび/もしくはレジスタ、ならびに/または、他のサイズのフィールドおよび/もしくレジスタを使用してもよい。多くの変形が可能である。例えば、命令の明示的に指定されたレジスタおよび/もしくはフィールドの代わりに暗示的レジスタを使用することができ、ならびに/または、暗示的レジスタおよび/もしくはフィールドの代わりに明示的に指定されたレジスタおよび/もしくはフィールドを使用することができる。他の変形も可能である。
【0064】
本明細書で述べたように、アドレス変換保護ビット(例えば、DAT保護ビット)は、オペレーティングシステムがストレージブロックに対する書き込み保護を有効化および無効化するための手段またはメカニズムとして、アドレス変換テーブルエントリに設けることができる。書き込み保護を有効化するには、オペレーティングシステムは、対象のストレージブロックへの書き込みアクセスの試行中に使用される変換テーブルエントリにおいて、アドレス変換保護ビットを「1」に設定する。書き込み保護を無効化するには、オペレーティングシステムは、同じアドレス変換保護ビットを0に設定する。いくつかの実装形態において、コンピューティング環境(例えば、IBM z/Architecture(登録商標))は、書き込みアクセスを防止する対応する変換テーブルエントリ(TTE)を有するストレージブロックにアプリケーションプログラムが書き込みを試みたことを、コンピューティング環境がオペレーティングシステムに通知するメカニズムとして、アドレス変換保護プログラム例外を提供することができる。上述したように、性能を向上させるために、コンピューティング環境のプロセッサは、変換ルックアサイドバッファ(TLB)を実装することができる。アドレス変換に関連する情報は、TLBエントリに保持することができる。このような情報は、アドレス変換保護ビットなど、アドレス変換中に使用される変換テーブルエントリの内容を含むことができる。命令実行の一部としてアドレス変換が必要な場合、プロセッサは、TLBを使用することでプロセッサの時間を節約できるため、変換テーブルエントリを処理する代わりに、可能な場合はTLBエントリを使用することができる。
【0065】
コンピューティングアーキテクチャ(IBM z/Architecture(登録商標)など)は、コンピューティング構成内のすべてのプロセッサ間で一貫した結果となる方法で、オペレーティングシステムが変換テーブルエントリの内容を変更するための命令を提供することができる。現在までのところ、変換テーブルエントリへの変更は、コンピューティング構成内のプロセッサ内の関連するTLBエントリをクリアすることと、静止操作を実行することとを含む。
【0066】
上述したように、1つ以上の態様において、動的アドレス変換(DAT)保護リセット命令(またはRDP命令)が本明細書において提供される。RDP命令は、オペレーティングシステムが、変更に対するコンピューティング環境の応答の一部としてすべてのプロセッサ間でブロードキャストまたはシリアライズを行うことを必要とせずに(すなわち、静止操作を必要とせずに)、ストレージブロックについて、変換テーブルエントリのアドレス変換保護ビット(例えば、DAT保護ビット)を0に設定する(書き込み保護を無効化する)オプションを提供する。アドレス変換保護リセット命令を実行するプロセッサは、特定の変換テーブルエントリ内のアドレス変換保護ビットをテストすることができる。アドレス変換保護ビットが「1」であれば、0に変更される。命令の実行開始時の値に関係なく、関連するTLBエントリがあれば、アドレス変換保護リセット命令を実行するプロセッサにおいてクリアまたは修正される。ローカルクリアオプションが指定されていない場合、アドレス変換保護リセット命令を実行するプロセッサは、コンピューティング環境内の他のすべてのプロセッサに対して、当該他のプロセッサ内の関連するTLBエントリをクリアまたは修正するための信号をブロードキャストすることができ、すべてのプロセッサによるTLBのクリアまたは修正を待つことなく、命令完了を示すことができる。有利な点として、アドレス変換保護リセット命令の実行中に静止操作を行う必要はない。
【0067】
さらなる例として、
図4Aおよび
図4Bは、本発明の1つ以上の態様に係る、動的アドレス変換保護リセット命令の実行に基づく処理の異なる実施形態を示す図である。一例において、汎用プロセッサまたはCPU104(
図1A)などのプロセッサまたはCPUが、命令の実行に使用される。一例として、プロセッサのハードウェアおよびファームウェアが命令の実行に使用される。ハードウェアおよびファームウェアは、プロセッサから命令を受信するために、プロセッサ内に配置またはプロセッサに結合することができ、プロセッサは、例えば、ハードウェア上で実行するために命令を取得し、デコードし、セットアップする。他の変形も可能である。
【0068】
図4Aは、マルチプロセッサ(すなわち、マルチCPU)コンピューティング環境または構成において、ストレージブロックXに対する書き込み保護を無効化するための動的アドレス変換保護リセット命令の実行に関連する処理の一例を示す図である。図示するように、プロセスは、まずステップ400にて、プロセッサ(CPU-A)上で実行されているアプリケーションプログラムがストレージブロックXへの書き込みを試み、ステップ402にてブロックされる。この場合、プロセッサ(CPU-A)は、アドレス変換保護例外(例えば、DAT-P例外)をオペレーティングシステム(OS)に報告する。オペレーティングシステムは、ストレージブロックXに対するメモリ管理操作を実行する。これは、本発明の1つ以上の態様に従って、ステップ404にて、(一例において)プロセッサ(CPU-A)上で動的アドレス変換保護リセット(RDP)命令を発行することを含む。ステップ406にて、プロセッサ(CPU-A)は、RDP命令を取得(例えば、受信、フェッチなど)し、命令を実行する。
【0069】
一実施形態において、命令の実行は、変換テーブルエントリ内のDAT保護ビット(TTE.P)をテストすることを含むことができ、書き込み保護に設定されている場合、ストレージブロックXに対する変換テーブルエントリを更新して、ストレージブロックに対する書き込み保護を無効化する(例えば、ストレージブロックXに対するTTE.Pを「0」に設定する)ことができる。さらに、RDP命令の実行により、プロセッサ(CPU-A)内の関連する変換ルックアサイドバッファ(TLB)エントリがクリアまたは修正される。ローカルクリア制御が設定されていない場合(すなわち、LC=0)、コンピューティング環境内の他のプロセッサ内の関連する変換ルックアサイドバッファエントリを適宜のタイミングでクリアまたは修正するために、これらの他のプロセッサに信号をブロードキャストしてもよい。一実施形態において、信号は、コンピューティング環境内の他のすべてのプロセッサに送信される。RDP命令の実行は、コンピューティング環境内の他のプロセッサによるいずれの関連処理からも独立しており、したがって、コンピューティング環境内の他のプロセッサによるアクションを待つことなく終了する(例えば、コンピューティング環境内の1つ以上の他のプロセッサによるシリアライズ操作または静止操作を必要としない)。なお、本明細書の説明の文脈におけるシリアライズとは、いくつかの実施形態において、構成全体のリソース(変換テーブルエントリなど)に対する更新が、命令の完了前に構成内のすべてのプロセッサに見えるようにすることを意味する。
【0070】
ステップ408にて、アプリケーションプログラムは、プロセッサ(CPU-A)上で動作を再開し、今回は、ストレージブロックXへの書き込みが許可される。これにより、ステップ410にて、プロセッサ(CPU-A)上のRDP命令に関連する処理が終了する。さらに、
図4Aに示すように、1つ以上の他のプロセッサ(例えば、CPU-B)が、関連するTLBエントリのクリアまたは修正を要求するブロードキャスト信号を受信すると、これらの他のプロセッサ(例えば、CPU-B)は、ステップ412にて、適宜のタイミングで関連するTLBエントリをクリアまたは修正する要求をキューに入れる。なお、この点で、TLBは複数のレベルを有してもよい。一実装形態において、TLBはレベル1-TLBおよびレベル2-TLBを含んでもよい。CPU-Bでは、適宜のタイミングで関連するTLBエントリをクリアまたは修正する要求を受信した後、TLBエントリをクリアまたは修正すべきであるが、必須ではない。例えば、レベル1-TLBエントリはクリアする必要はなく、他のプロセッサは、関連エントリのエージアウト(aging out)に依存する。そして、レベル2-TLBエントリはバックグラウンドプロセスでクリアまたは修正することができ、オーバーヘッドが少なくて済む。関連するTLBエントリのクリアまたは修正を要求するブロードキャスト信号を処理する具体的なアプローチは、実装形態に依存する。
【0071】
図4Aに示すように、第1の開始ステップ400と同時ではない第2の開始ステップ420は、他のプロセッサ(CPU-B)上で実行されているアプリケーションプログラムが、ステップ422にてストレージブロックXへの書き込みを試みるときに発生する。これに基づいて、処理はステップ424にて、DAT-P例外条件がCPU-Bによって検出されたかどうかを判定する。そうではない場合、アプリケーションプログラムはステップ426にてストレージブロックXへの書き込みを許可され、ステップ410にて処理が完了する。
【0072】
DAT-P例外条件がCPU-Bによって検出された場合、処理は、ステップ428にて、CPU-Bが変換テーブルエントリ保護ビット(TTE.P)を検査することに基づいて、ストレージブロックXについてTTE.Pが0であるかどうかを判定する。そうではない場合、ステップ430にて、CPU-Bはさらなる処理のためにオペレーティングシステムにDAT-P例外を報告する。
【0073】
変換テーブルエントリ保護ビット(TTE.P)の内容が0であることに基づいて、状態は過剰検出(over-detected)であることが確認される。したがって、ステップ432にて、CPU-B内の関連するTLBエントリがクリアまたは修正され、状態は過剰検出であることが確認され、オペレーティングシステムには報告されない。ステップ434にて、アプリケーションプログラムはCPU-B上で動作を再開し、今回はストレージブロックXへの書き込みが許可され、ステップ410にて処理が完了する。なお、上記の説明に関して、オペレーティングシステムが本明細書に開示するアドレス変換保護リセット命令を選択的に利用する場合、アドレス変換保護例外の過剰検出はまれであると予想される。
【0074】
図4Bは、マルチプロセッサ(すなわち、マルチCPU)コンピューティング環境または構成において、ストレージブロックXに対する書き込み保護を無効化するための動的アドレス変換保護リセット命令の実行に関連する処理の代替的な実施形態を示す図である。
図4Aの実施形態では、オペレーティングシステムへの通知前に、検出された状態を検証することが可能なCPU実装形態が提示されているが、
図4Bの実施形態では、オペレーティングシステムへの通知前に、検出された状態を検証しない、または検証することができないCPU実装形態を仮定している。
【0075】
図示するように、プロセスは、まずステップ400にて、プロセッサ(CPU-A)上で実行されているアプリケーションプログラムがストレージブロックXへの書き込みを試み、ステップ402にてブロックされる。この場合、プロセッサ(CPU-A)は、アドレス変換保護例外(例えば、DAT-P例外)をオペレーティングシステム(OS)に報告する。オペレーティングシステムは、ストレージブロックXに対するメモリ管理操作を実行する。これは、本発明の1つ以上の態様に従って、ステップ404にて、(一例において)プロセッサ(CPU-A)に動的アドレス変換保護リセット(RDP)命令を発行することを含む。ステップ406にて、プロセッサ(CPU-A)は、RDP命令を取得(例えば、受信、フェッチなど)し、命令を実行する。
【0076】
一実施形態において、命令の実行は、DAT保護ビット(TTE.P)をテストすることを含むことができ、書き込み保護に設定されている場合、ストレージブロックXに対する変換テーブルエントリを更新して、ストレージブロックに対する書き込み保護を無効化する(例えば、ストレージブロックXに対するTTE.Pを「0」に設定する)ことができる。さらに、RDP命令の実行により、プロセッサ(CPU-A)内の関連する変換ルックアサイドバッファ(TLB)エントリがクリアまたは修正される。ローカルクリア制御が設定されていない場合(すなわち、LC=0)、コンピューティング環境内の他のプロセッサ内の関連する変換ルックアサイドバッファエントリを適宜のタイミングでクリアまたは修正するために、これらの他のプロセッサに信号をブロードキャストすることができる。一実施形態において、信号は、コンピューティング環境内のすべてのプロセッサに送信される。RDP命令の実行は、コンピューティング環境内の他のプロセッサにおけるいずれの関連処理からも独立しており、したがって、コンピューティング環境内の1つ以上の他のプロセッサによるシリアライズ操作または静止操作など、コンピューティング環境内の他のプロセッサによるアクションを待つことなく終了する。
【0077】
ステップ408にて、アプリケーションプログラムは、プロセッサ(CPU-A)上で動作を再開し、今回は、ストレージブロックXへの書き込みが許可される。これにより、ステップ410にて、プロセッサ(CPU-A)上のRDP命令に関連する処理が終了する。
図4Bに示すように、信号がブロードキャストされる場合、1つ以上の他のプロセッサ(例えば、CPU-B)が、関連するTLBエントリのクリアまたは修正を要求するブロードキャスト信号を受信すると、これらの他のプロセッサ(例えば、CPU-B)は、ステップ412にて、適宜のタイミングで関連するTLBエントリをクリアまたは修正する要求をキューに入れる。
【0078】
同時ではない第2の開始ステップ420にて、他のプロセッサ(CPU-B)上で実行されているアプリケーションプログラムが、ステップ422にてストレージブロックXへの書き込みを試みる。これに基づいて、処理はステップ424にて、ストレージブロックXについて、アドレス変換保護例外(例えば、DAT-P例外)状態がCPU-Bによって検出されたかどうかを判定する。そうではない場合、アプリケーションプログラムはステップ426にてストレージブロックXへの書き込みを許可され、ステップ410にて処理が完了する。
【0079】
DAT-P例外条件がCPU-Bによって検出された場合、ステップ440にて、オペレーティングシステムは、別のプロセッサ(CPU-B)から、ストレージブロックXに対するアドレス変換保護例外(例えば、DAT-P例外)が通知される。オペレーティングシステムは、ステップ442にて、変換テーブルエントリ保護ビット(例えば、TTE.P)をテストし、それにより、報告された条件を過剰指示として認識し、別のアドレス変換保護リセット命令を、今度はこの別のプロセッサ(CPU-B)に発行する。これにより、ステップ444にて、別のプロセッサ(CPU-B)は、アドレス変換保護リセット命令を実行してアドレス変換保護ビットをリセットし、検査された(そして0であることが確認された)ストレージブロックに対する書き込み保護を無効化する。さらに、その他のプロセッサ(CPU-B)上の関連するTLBエントリは、当該プロセッサ上での条件の過剰指示を以後防止するためにクリアまたは修正される。さらに、変換テーブルエントリ保護ビット(例えば、TTE.P)が「0」であることが確認されるので、コンピューティング環境内の他のプロセッサに信号をブロードキャストする必要はない。その後、ステップ446にて、この別のプロセッサ上のアプリケーションプログラムは動作を再開することができ、今回は、ストレージブロックXへの書き込みが許可され、ステップ410にて処理が終了する。なお、この点に関して、オペレーティングシステムが本明細書に開示するアドレス変換保護リセット命令を選択的に利用する場合、アドレス変換保護例外の過剰指示はまれであると予想される。
【0080】
図5A~5Cは、本発明の1つ以上の実施形態の特定の態様を示すワークフローの別の実施形態を示す図である。
【0081】
図5Aを参照すると、ステップ500にて、オペレーティングシステムは、マルチプロセッサコンピューティング環境のプロセッサ(CPU-A)上で実行されているアプリケーションプログラムから、ストレージブロックXに対する書き込み保護をリセットする要求を受信する。要求を受信したことに基づいて、オペレーティングシステムは、ステップ502にて、ストレージブロックXに関連する動的アドレス変換(DAT)エントリをロックし、ステップ504にて、書き込み保護がアクティブである場合、ローカルクリアを指定せずに、DAT保護リセット(RDP)命令を発行する。プロセッサ(CPU-A)は、ステップ506にて、RDP命令を取得(例えば、受信、フェッチなど)し、命令を実行する。
【0082】
1つ以上の実施形態において、命令の実行は、DAT保護ビット(TTE.P)をテストすることを含むことができ、書き込み保護に設定されている場合、ストレージブロックXに対する変換テーブルエントリを更新して、ストレージブロックに対する書き込み保護を無効化する(例えば、ストレージブロックXに対するTTE.Pを「0」に設定する)ことができる。さらに、RDP命令の実行により、プロセッサ(CPU-A)内の関連する変換ルックアサイドバッファ(TLB)エントリがクリアまたは修正される。ローカルクリア制御が設定されていない場合(すなわち、LC=0)、コンピューティング環境内の他のプロセッサ内の関連する変換ルックアサイドバッファエントリを適宜のタイミングでクリアまたは修正するために、これらの他のプロセッサに信号をブロードキャストすることができる。一実施形態において、信号は、コンピューティング環境内の他のすべてのプロセッサに送信される。RDP命令の実行は、コンピューティング環境内の他のプロセッサによるいずれの関連処理からも独立しており、したがって、コンピューティング環境内の他のプロセッサによるアクションを待つことなく終了する(例えば、コンピューティング環境内の1つ以上の他のプロセッサによるシリアライズ操作または静止操作を必要としない。
【0083】
一実施形態において図示するように、オペレーティングシステム(OS)は、ステップ508にて、プロセッサ(CPU-A)がRDP命令を実行したことを示す情報を取得し、ステップ510に進みDATエントリのロックを解除し、ステップ512にて処理を完了する。
【0084】
マルチシステムまたはマルチプロセッサコンピューティング環境では、アプリケーションプログラムは、複数の異なるプロセッサ(CPU)から同じストレージブロックにアクセスすることができる。このアクセスにより、TLBエントリを複数の異なるプロセッサに格納することができる。本明細書で開示するように、オペレーティングシステムサービスは、ストレージブロックに対する書き込み保護を有効化および無効化するために使用される。
図5Bを参照すると、1つ以上の実装形態において、ステップ520にて、CPU-B上で動作するアプリケーションプログラムは、プロセッサ(CPU-B)の関連するTLBエントリをクリアまたは修正するための受信ブロードキャスト信号を処理する前に、ストレージブロックXへの書き込みを試みる。
【0085】
これに基づいて、オペレーティングシステムは、ステップ522にて、ハードウェアからオペレーティングシステムに発行された書き込み保護例外割り込み(write protection exception interrupt)を受信する。オペレーティングシステムは、ステップ524にて、書き込み保護例外割り込みを処理する制御を取得し、ステップ526にて、書き込み保護がアクティブでないことを(例えば、
図5Aに関連して上述した処理に基づいて)示すストレージブロックのエントリをチェックする。オペレーティングシステムは、ステップ528にて、ストレージブロックXに対するRDP命令を実行または開始し、(書き込み保護例外割り込みを発生させた書き込みアクセスを試みた)プロセッサ(CPU-B)上の関連するTLBエントリをクリアまたは修正するローカルクリアを指定する。オペレーティングシステムは、ステップ530にて、ストレージブロックXへの書き込みを試みる命令を再試行するようにCPU-Bに要求信号を送信し、書き込み保護例外割り込みを完了する。プロセッサ(CPU-B)は、ステップ532にて、ストレージブロックXへの書き込みアクセスを再試行し、書き込みアクセスが完了する。そして、ステップ534にて、処理が完了する。
【0086】
最終的に、コンピューティング環境内のすべてのプロセッサ(CPU)は、ストレージブロックに対する書き込み操作例外を処理する間に、元のブロードキャスト信号を処理するか、関連するTLBエントリをローカルでクリアまたは修正することになる。
図5Cに示すように、ステップ540にて、すべてのプロセッサが(例えば、先行するプロセッサ(CPU-A)がRDP命令を実行したことに基づいて(
図5A参照))、ブロードキャストされた無効化要求を処理する前に、あるアプリケーションが同じストレージブロックXに対して書き込み保護を有効化するよう要求する状況が発生する可能性がある。この有効化要求に基づいて、オペレーティングシステムは、ステップ542にて、ストレージブロックXに関連するDATエントリを更新して書き込み保護がアクティブであることを示す前に、マルチプロセッサシステム内のすべてのプロセッサ(CPU)上の関連するTLBエントリをクリアする静止操作命令を発行することができる。これにより、ステップ544にて、処理が完了する。
【0087】
本明細書で説明するように、一態様において、リセット操作を実行するための命令(例えば、ハードウェア/ソフトウェアインタフェースにおける単一のアーキテクチャ化された機械命令(例えば、動的アドレス変換保護リセット命令))が提供される。この命令は、例えば、命令セットアーキテクチャ(ISA)において定義される命令であり、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定し、当該決定に基づいて、アドレス変換保護ビットをリセットして、当該ストレージブロックに対する書き込み保護を無効化する。リセットは、コンピューティング環境内の1つ以上の他のプロセッサによる静止操作を必要とせず、すなわち、コンピューティング環境内の1つ以上の他のプロセッサによる関連処理から独立している。さらに、リセットは、システム内の他のプロセッサに操作をブロードキャストすることなく行うことができる。したがって、リセット操作の実行に関連する処理の複雑さが低減される。さらに、リセット動作、ひいてはプロセッサの性能が向上する。このような命令実行により、実行時間が短縮され、性能が向上し、さらには、他のプロセッサが使用するシステム全体の静止リソースを解放することができる。
【0088】
本発明の1つ以上の態様は、コンピュータ技術と密接に結びついており、コンピュータ内の処理を容易にし、その性能を向上させる。リセット関連操作を実行するために単一のアーキテクチャ化された機械命令を使用することにより、複雑さを低減し、リソースの使用を低減し、処理速度を向上させることによって、コンピューティング環境内の性能を向上させる。この命令は、コンピュータ処理、医療処理、エンジニアリング、自動車技術、製造などの多くの技術分野で使用することができる。ストレージブロックへの書き込みアクセスをリセットする最適化方法を提供することにより、実行時間を短縮し、これらの技術分野を改善することができる。
【0089】
本発明の1つ以上の態様に関連する、コンピューティング環境内の処理を容易にする一実施形態のさらなる詳細を、
図6Aおよび
図6Bを参照して説明する。
【0090】
図6Aを参照すると、一実施形態において、ステップ600にて、リセット操作を実行する命令が実行される。命令を実行することは、例えば、ステップ602にて、プロセッサによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することと、ステップ604にて、当該決定に基づいて、アドレス変換保護ビットをリセットして当該ストレージブロックに対する書き込み保護を無効化することと、を含む。ここで、リセットは、コンピューティング環境内の1つ以上の他のプロセッサによるアクションを待つことなく行われる。コンピューティング環境内の1つ以上の他のプロセッサによる静止操作を必要とすることなく(すなわち、コンピューティング環境の1つ以上の他のプロセッサの関連処理とは独立して)リセットを行うことによって、コンピューティング環境内の命令処理の中断が低減され、性能が向上する。さらに、RDP命令を使用して、少なくとも決定操作およびリセット操作を実行することにより、性能が向上するとともに、リソースの利用が低減される。
【0091】
一例において、命令を実行することは、ステップ606にて、コンピューティング環境内の1つ以上の他のプロセッサによる静止操作を必要とせずに、アドレス変換保護ビットをリセットしてストレージブロックに対する書き込み保護を無効化したことに基づいて、命令の実行を終了することを含む。有利な点として、コンピューティング環境内の1つ以上の他のプロセッサによる静止操作を必要とすることなく命令の実行を終了することにより、コンピューティング環境の性能が向上するとともに、他のプロセッサが使用するシステム全体の静止リソースを解放することができる。
【0092】
一実施形態において、命令を実行することは、ステップ608にて、特定の変換テーブルエントリに関連するプロセッサ内の変換ルックアサイドバッファエントリをクリアすることをさらに含む。別の例において、命令を実行することは、ステップ610にて、特定の変換テーブルエントリに関連するプロセッサ内の変換ルックアサイドバッファエントリの保護表示をリセットすることをさらに含む。有利な点として、変換ルックアサイドバッファエントリをクリアするのではなく、プロセッサは、エントリ内の保護指示を単にリセットし、エントリの残りの部分をそのままにしておくことができる。これにより、必要な変換ルックアサイドバッファエントリを再構築するためのアドレス再変換を必要とすることなく、書き込みを続け完了させることができる。
【0093】
一実施形態において、命令を実行することは、ステップ612にて、コンピューティング環境内の1つ以上の他のプロセッサに対して、特定の変換テーブルエントリに関連する当該1つ以上の他のプロセッサ内の変換ルックアサイドバッファエントリをクリアまたは修正する信号をブロードキャストすることをさらに含む。一実施形態において、命令を実行することは、ステップ614にて、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをテストすることをさらに含む。ここで、ブロードキャストは、当該テストの結果に少なくとも部分的に基づく。アドレス変換保護リセット命令を使用して、決定、リセット、およびブロードキャスト操作を実行することにより、性能が向上するとともに、リソースの使用率が低減される。
【0094】
図6Bを参照すると、一例において、ステップ616にて、1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件の過剰検出が発生し、それに基づいて、当該他のプロセッサは、アドレス変換保護ビットを検査して、アドレス変換保護例外条件が過剰検出であることを識別し、当該検査によってアドレス変換保護例外条件が過剰検出であることを識別したことに基づいて、当該ストレージブロックへの書き込みアクセスが許可される。有利な点として、アドレス変換保護ビットを検査してアドレス変換保護例外条件が過剰指示であることを識別することにより、アクセスを許可し、オペレーティングシステムのプログラム割り込みハンドラの必要性を回避することによって、この状況における処理性能を向上させることができる。
【0095】
さらなる例において、ステップ618にて、1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生し、それに基づいて、当該別のプロセッサは、アドレス変換保護ビットを検査して、アドレス変換保護例外条件が過剰指示であることを識別し、当該検査によってアドレス変換保護例外条件が過剰指示であることを識別したことに基づいて、当該別のプロセッサは、当該過剰指示されたアドレス変換保護ビットを含む関連する変換ルックアサイドバッファエントリをクリアまたは修正する。有利な点として、アドレス変換保護ビットを検査してアドレス変換保護例外条件が過剰指示であることを識別することにより、書き込みアクセスを続行させることによって、この状況における処理性能を向上させることができる。
【0096】
一例において、ステップ620にて、1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が過剰検出された場合、当該別のプロセッサは、当該例外条件をコンピューティング環境のオペレーティングシステムに報告し、それに基づいて、オペレーティングシステムは当該別のプロセッサに対して、1つ以上の他のプロセッサのうちの当該別のプロセッサにおいてアドレス変換保護リセット操作を実行する命令を発行する。有利な点として、アドレス変換保護リセット操作を実行する命令は、変更に対する応答としてコンピューティング環境のすべてのプロセッサ間での静止操作を必要とすることなく、ストレージブロックに対する書き込み保護を容易に無効化するオプションをオペレーティングシステムに提供することができる。
【0097】
他の変形および実施形態も可能である。例えば、1つ以上の他の実装形態において、変換保護表示は、エントリをクリアして再構築することを要求するのではなく、既存のTLBエントリ内でリセットすることができる。
【0098】
本発明の態様は、多くの種類のコンピューティング環境で使用することができる。本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の別の例を、
図7Aを参照して説明する。一例として、
図7Aのコンピューティング環境は、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のz/Architecture(登録商標)命令セットアーキテクチャに基づいている。ただし、z/Architectureハードウェアアーキテクチャは、アーキテクチャの一例に過ぎない。繰り返しになるが、コンピューティング環境は、Intel(登録商標)x86アーキテクチャ、インターナショナル・ビジネス・マシーンズ・コーポレーションの他のアーキテクチャ、もしくは他社のアーキテクチャまたはその組み合わせを含む(ただし、これらに限定されない)他のアーキテクチャに基づいてもよい。なお、Intelは、インテル・コーポレーションまたはその子会社の米国およびその他の国における商標または登録商標である。
【0099】
一例として、コンピューティング環境10は、中央電子処理装置(CEC:central electronics complex)11を含む。中央電子処理装置11は、複数のコンポーネントを含む。複数のコンポーネントは、例えば、1つ以上のプロセッサ(別名、中央処理装置(CPU))13と入出力(I/O)サブシステム14とに結合されたメモリ12(別名、システムメモリ、メインメモリ、メインストレージ、中央ストレージ、ストレージ)を含む。
【0100】
I/Oサブシステム14は、中央電子処理装置の一部であってもよいし、そこから分離していてもよい。I/Oサブシステム14は、メインストレージ12と、中央電子処理装置に結合された入出力制御ユニット15および入出力(I/O)デバイス16との間の情報フローを指示する。
【0101】
多くのタイプのI/Oデバイスを使用することができる。1つの特定のタイプとして、データストレージデバイス17が使用される。データストレージデバイス17は、1つ以上のプログラム18、1つ以上のコンピュータ可読プログラム命令19、もしくはデータまたはその組み合わせなどを記憶することができる。コンピュータ可読プログラム命令は、本発明の態様に係る実施形態の機能を実行するように構成することができる。
【0102】
中央電子処理装置11は、取り外し可能/取り外し不可能な揮発性/不揮発性のコンピュータシステムストレージ媒体を含むことができ、もしくはこれに結合することができ、またはその両方とすることができる。例えば、中央電子処理装置11は、取り外し不可能な不揮発性磁気媒体(一般的に「ハードディスク」と呼ばれる)、取り外し可能な不揮発性磁気ディスク(例えば「フロッピーディスク」)に対して読み書きを行うための磁気ディスクドライブ、もしくは、CD-ROM、DVD-ROMや他の光学媒体など、取り外し可能な不揮発性の光ディスクに対して読み書きを行うための光ディスクドライブを含むことができ、もしくはこれに結合することができ、またはその両方とすることができる。なお、他のハードウェアもしくはソフトウェアまたはその両方のコンポーネントを中央電子処理装置11と組み合わせて使用してもよい。これらのコンポーネントの例としては、特に限定されないが、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、およびデータアーカイブストレージシステムなどが挙げられる。
【0103】
さらに、中央電子処理装置11は、多くの他の汎用もしくは専用コンピューティングシステム環境または構成とともに動作可能である。中央電子処理装置11とともに使用するのに適した周知のコンピューティングシステム、環境、もしくは構成またはその組み合わせの例としては、特に限定されないが、パーソナルコンピュータ(PC)システム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および、これらのシステムまたはデバイスのいずれかを含む分散型クラウドコンピューティング環境などが挙げられる。
【0104】
中央電子処理装置11は、1つ以上の実施形態において、論理パーティショニングもしくは仮想化サポートまたはその両方を提供する。一実施形態において、
図7Bに示すように、メモリ12は、例えば、1つ以上の論理パーティション20、論理パーティションを管理するハイパーバイザ21、およびプロセッサファームウェア22を含む。ハイパーバイザ21の一例としては、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のProcessor Resource/System Manager(PR/SM
TM)が挙げられる。本明細書において使用される場合、ファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、より上位レベルのマシンコードの実装において使用されるハードウェアレベルの命令もしくはデータ構造またはその両方を含む。一実施形態において、ファームウェアは、例えば、信頼できるソフトウェアを含むマイクロコードまたは基礎となるハードウェアに固有のマイクロコードとして通常は提供される、システムハードウェアへのオペレーティングシステムのアクセスを制御する独自コードを含む。なお、PR/SMは、少なくとも1つの法域におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。
【0105】
各論理パーティション20は、別個のシステムとして機能することができる。すなわち、各論理パーティションは、独立してリセットされ、ゲストオペレーティングシステム23(インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のz/OS(登録商標)オペレーティングシステムなど)、または他の制御コード24(結合ファシリティ制御コード(CFCC:coupling facility control code)など)を実行し、異なるプログラム25とともに動作することができる。論理パーティション内で実行されているオペレーティングシステムまたはアプリケーションプログラムは、全体の完全なシステムにアクセスできるように見えるが、実際には、その一部しか利用できない。なお、z/OSオペレーティングシステムを例示したが、インターナショナル・ビジネス・マシーンズ・コーポレーションもしくは他の企業またはその両方が提供する他のオペレーティングシステムを、本発明の1つ以上の態様に従って使用してもよい。
【0106】
メモリ12は、CPU13(
図7A)に結合される。CPU13は、論理パーティションに割り当てることができる物理プロセッサリソースである。例えば、論理パーティション20は、1つ以上の論理プロセッサを含み、その各々は、論理パーティションに動的に割り当てることができる物理プロセッサリソース13のすべてまたは割り当て分を表す。
【0107】
さらなる一実施形態において、中央電子処理装置は、仮想マシンサポート(論理パーティショニングサポートを有するもの、または有しないものいずれか)を提供する。
図7Cに示すように、中央電子処理装置11のメモリ12は、例えば、1つ以上の仮想マシン26と、仮想マシンを管理するハイパーバイザ27などの仮想マシンマネージャと、プロセッサファームウェア28とを含む。ハイパーバイザ27の一例としては、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のz/VM(登録商標)ハイパーバイザが挙げられる。ハイパーバイザは、ホストと呼ばれることもある。なお、z/VMは、少なくとも1つの法域におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。
【0108】
中央電子処理装置の仮想マシンサポートは、各々が異なるプログラム29とともに動作し、Linux(登録商標)オペレーティングシステムなどのゲストオペレーティングシステム30を実行することができる、多数の仮想マシン26を運用する能力を提供する。各仮想マシン26は、別個のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲストオペレーティングシステムを実行し、異なるプログラムとともに動作することができる。仮想マシン内で実行されるオペレーティングシステムまたはアプリケーションプログラムは、全体の完全なシステムにアクセスできるように見えるが、実際には、その一部しか利用できない。なお、z/VMおよびLinuxを例示したが、他の仮想マシンマネージャもしくはオペレーティングシステムまたはその両方を、本発明の1つ以上の態様に従って使用してもよい。なお、登録商標Linuxは、世界規模での当該商標の所有者であるLinus Torvaldsの独占的ライセンシーであるLinux Foundationからのサブライセンスに従って使用される。
【0109】
本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の別の実施形態を、
図8Aを参照して説明する。この例では、コンピューティング環境36は、例えば、ネイティブ中央処理装置(CPU)37と、メモリ38と、例えば1つ以上のバス40もしくは他の接続またはその両方介して互いに結合された1つ以上の入出力デバイス39もしくは入出力インタフェース39またはその両方と含む。一例として、コンピューティング環境36は、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のPowerPC(登録商標)プロセッサ、ヒューレット・パッカード・カンパニー(カリフォルニア州パロアルト)製のIntel(登録商標)Itanium(登録商標)IIプロセッサ搭載HP Superdome、もしくは、インターナショナル・ビジネス・マシーンズ・コーポレーション、ヒューレット・パッカード、インテル・コーポレーション、オラクルもしくは他の企業またはその組み合わせが提供するアーキテクチャに基づく他のマシン、またはその組み合わせを含むことができる。なお、PowerPCは、少なくとも1つの法域におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。Itaniumは、インテル・コーポレーションまたはその子会社の米国およびその他の国における商標または登録商標である。
【0110】
ネイティブ中央処理装置37は、環境内での処理中に使用される1つ以上の汎用レジスタもしくは1つ以上の専用レジスタまたはその両方などの、1つ以上のネイティブレジスタ41を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【0111】
さらに、ネイティブ中央処理装置37は、メモリ38に記憶されている命令およびコードを実行する。1つの具体例では、中央処理装置は、メモリ38に記憶されているエミュレータコード42を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータコード42は、z/Architectureハードウェアアーキテクチャ以外のアーキテクチャ(PowerPCプロセッサ、HP Superdomeサーバなど)に基づくマシンが、z/Architectureハードウェアアーキテクチャをエミュレートし、z/Architectureハードウェアアーキテクチャに基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
【0112】
エミュレータコード42に関連するさらなる詳細を、
図8Bを参照して説明する。メモリ38に記憶されたゲスト命令(guest instructions)43は、ネイティブCPU37のアーキテクチャ以外のアーキテクチャで実行されるように開発されたソフトウェア命令(例えば、マシン命令と相互に関連付けられた)を含む。例えば、ゲスト命令43は、z/Architectureハードウェアアーキテクチャに基づくプロセッサ上で実行されるように設計されていた可能性があるが、その代わりに、ネイティブCPU37(例えばIntel Itanium IIプロセッサであってもよい)上でエミュレートされている。一例として、エミュレータコード42は、メモリ38から1つ以上のゲスト命令43を取得し、取得した命令に対して必要に応じてローカルバッファを提供するための命令フェッチルーチン(instruction fetching routine)44を含む。また、エミュレータコード42は、取得したゲスト命令のタイプを決定し、ゲスト命令を1つ以上の対応するネイティブ命令(native instructions)46に変換するための命令変換ルーチン(instruction translation routine)45を含む。この変換は、例えば、ゲスト命令によって実行される機能を特定することと、当該機能を実行するためのネイティブ命令を選択することとを含む。
【0113】
さらに、エミュレータコード42は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン(emulation control routine)47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1つ以上の以前に取得したゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、このような実行の終了時に、次のゲスト命令またはゲスト命令グループの取得をエミュレートするために、制御を命令フェッチルーチンに戻させてもよい。ネイティブ命令46の実行は、メモリ38からレジスタにデータをロードすること、レジスタからメモリにデータを戻して記憶すること、または、変換ルーチンによって決定される何らかのタイプの算術演算または論理演算を実行することを含んでもよい。
【0114】
各ルーチンは、例えば、メモリに記憶されかつネイティブ中央処理装置37によって実行されるソフトウェアにおいて実装される。他の例において、ルーチンまたは操作のうちの1つ以上は、ファームウェア、ハードウェア、ソフトウェアまたはそれらの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用してエミュレートされてもよいし、メモリ38内の位置を使用してエミュレートされてもよい。実施形態において、ゲスト命令43、ネイティブ命令46およびエミュレータコード42は、同じメモリに存在してもよいし、異なるメモリデバイス間に分散されてもよい。
【0115】
エミュレート可能な命令の1つが、本発明の一態様に係る、本明細書で説明する動的アドレス変換保護リセット命令である。
【0116】
上述したコンピューティング環境は、使用可能なコンピューティング環境の例に過ぎない。他の環境(特に限定されないが、非パーティション化環境、パーティション化環境、クラウド環境もしくはエミュレートされた環境またはその組み合わせを含む)を使用してもよく、実施形態はいずれか1つの環境に限定されない。本明細書では、コンピューティング環境の様々な例を説明しているが、本発明の1つ以上の態様は、多くのタイプの環境とともに使用することができる。本明細書で提供されるコンピューティング環境は、例示に過ぎない。
【0117】
各コンピューティング環境は、本発明の1つ以上の態様を含むように構成することができる。
【0118】
1つ以上の態様は、クラウドコンピューティングに関係してもよい。
【0119】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装形態は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在公知のまたは後に開発される任意の他のタイプのコンピューティング環境と組み合わせて実施することが可能である。
【0120】
クラウドコンピューティングは、設定可能なコンピューティングリソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)の共有プールへの簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの展開モデルを含むことができる。
【0121】
特性は以下の通りである。
【0122】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0123】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0124】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0125】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0126】
サービスの測定:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの計量機能(metering capability)を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0127】
サービスモデルは以下の通りである。
【0128】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0129】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0130】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0131】
展開モデルは以下の通りである。
【0132】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0133】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0134】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0135】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0136】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0137】
ここで、
図9に例示的なクラウドコンピューティング環境50を示す。図示するように、クラウドコンピューティング環境50は1つ以上のクラウドコンピューティングノード52を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード52は互いに通信することができる。ノード52は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、
図9に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード52およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0138】
ここで、クラウドコンピューティング環境50(
図9)によって提供される機能的抽象化レイヤのセットを
図10に示す。なお、
図10に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0139】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0140】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75などの仮想エンティティを提供することができる。
【0141】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでもよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウド消費者およびタスクの識別確認を可能にする。ユーザポータル83は、消費者およびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0142】
ワークロードレイヤ90は、クラウドコンピューティング環境の利用が可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、リセット処理96が含まれる。
【0143】
本発明の態様は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合わせとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでもよい。
【0144】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、一例として、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイスまたはこれらの適切な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、消去可能プログラマブルROM(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化されたデバイス、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0145】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティングデバイス/処理デバイスへダウンロードすることができる。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくは無線ネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部ストレージデバイスへダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピューティングデバイス/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピューティングデバイス/処理デバイスにおけるコンピュータ可読記憶媒体に記憶するために転送する。
【0146】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
【0147】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。
【0148】
これらのコンピュータ可読プログラム命令は、機械を生産するために、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサに提供することができる。これにより、このようなコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。これらのコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他のデバイスまたはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶することができる。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
【0149】
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他のデバイスにロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行する。
【0150】
図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行されてもよい。例えば、関係する機能に応じて、連続して示される2つのブロックが、実際には、1つの工程として達成されてもよいし、同時もしくは略同時に実行されてもよいし、部分的もしくは全体的に時間的に重複した態様で実行されてもよいし、ブロックが場合により逆順で実行されてもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能もしくは動作を行う、または専用ハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実行可能である。
【0151】
上記に加えて、1つ以上の態様は、顧客環境の管理を提供するサービスプロバイダによって供与、提供、展開、管理、サービスなどが行われてもよい。例えば、サービスプロバイダは、1つ以上の顧客のために1つ以上の態様を実施するコンピュータコードもしくはコンピュータインフラストラクチャまたはその両方の作成、保守、サポートなどを行うことができる。見返りに、サービスプロバイダは、例えば、サブスクリプションもしくは料金契約またはその両方に基づいて、顧客から支払いを受けることができる。これに加えて、またはこれに代えて、サービスプロバイダは、1つ以上の第三者に対する広告コンテンツの販売から支払いを受けてもよい。
【0152】
一態様において、1つ以上の実施形態を実施するために、アプリケーションを展開してもよい。一例として、アプリケーションの展開は、1つ以上の実施形態を実施するように動作可能なコンピュータインフラストラクチャを提供することを含む。
【0153】
さらなる態様として、コンピュータ可読コードをコンピューティングシステムに統合することを含む、コンピューティングインフラを展開してもよい。この場合、コンピューティングシステムと組み合わせたコードは、1つ以上の実施形態を実施することができる。
【0154】
さらに別の態様として、コンピュータ可読コードをコンピュータシステムに統合することを含む、コンピューティングインフラを統合するためのプロセスを提供してもよい。コンピュータシステムは、コンピュータ可読媒体を含む。コンピュータ媒体は、1つ以上の実施形態を含む。コンピュータシステムと組み合わせたコードは、1つ以上の実施形態を実施することができる。
【0155】
様々な実施形態を上述したが、これらは一例に過ぎない。例えば、他のアーキテクチャのコンピューティング環境を使用して、1つ以上の態様を組み込む、もしくは使用する、またはその両方を行うことができる。さらに、異なる命令または操作を使用してもよい。さらに、異なるタイプのレジスタもしくは異なるレジスタまたはその両方を使用してもよい。多くの変形が可能である。
【0156】
本明細書では、様々な態様を説明している。さらに、本発明の態様の主旨から逸脱することなく、多くの変形が可能である。特に矛盾しない限り、本明細書に記載の各態様または特徴、およびその変形は、任意の他の態様または特徴と組み合わせてもよい。
【0157】
さらに、他のタイプのコンピューティング環境も本発明の恩恵を受け、使用することができる。一例として、システムバスを介してメモリ要素に直接的または間接的に結合された少なくとも2つのプロセッサを含む、プログラムコードの記憶もしくは実行またはその両方に適したデータ処理システムを使用することができる。メモリ要素には、例えば、プログラムコードの実際の実行中に使用されるローカルメモリ、バルクストレージ、および、実行中にバルクストレージからコードを取得する回数を減らすために少なくとも一部のプログラムコードの一時的なストレージを提供するキャッシュメモリがある。
【0158】
入出力またはI/Oデバイス(特に限定されないが、キーボード、ディスプレイ、ポインティングデバイス、DASD、テープ、CD、DVD、サムドライブおよび他のメモリ媒体など)は、直接的に、またはI/Oコントローラを間に介してシステムに結合することができる。また、ネットワークアダプタをシステムに結合して、データ処理システムを、プライベートネットワークまたはパブリックネットワークを間に介して他のデータ処理システム、リモートプリンタまたはストレージデバイスに結合できるようにしてもよい。利用可能なネットワークアダプタを数種類挙げると、モデム、ケーブルモデム、イーサネットカードなどがある。
【0159】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、種々の実施形態を限定することを意図するものではない。本明細書において、単数形「ある(a)」、「ある(an)」および「その(the)」は、文脈上そうではないことが明らかでない限り、複数形も含むことを意図している。さらに、本明細書において、「含む(comprises)」もしくは「含んでいる(comprising)」またはその両方の用語が用いられる場合、記載された特徴、整数、ステップ、操作、要素、もしくは構成要素またはその組み合わせが存在することを規定するが、1つ以上の他の特徴、整数、ステップ、操作、要素、構成要素、もしくはそれらのグループまたはその組み合わせが存在したり、追加されたりすることを排除するものではない。
【0160】
以下の特許請求の範囲に存在する場合、すべてのミーンズプラスファンクション要素またはステッププラスファンクション要素の対応する構造、材料、動作、および均等物は、具体的に特許請求された他の特許請求要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことを意図している。1つ以上の実施形態の記載は、例示および説明を目的として提示されたものであり、網羅的であることや、開示した形態に限定することを意図したものではない。多くの変更および変形が当業者には明らかである。本実施形態は、様々な態様および実際の応用例を最もよく説明するために、かつ他の当業者が、企図している特定の用途に適した各種の変更を伴う各種の実施形態を理解できるように選択され記載されたものである。
【手続補正書】
【提出日】2024-01-18
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピューティング環境内での処理を容易にするためのコンピュータプログラム製品であって、
プログラム命令を実装した少なくとも1つのコンピュータ可読記憶媒体を含み、当該プログラム命令はプロセッサによって読み取り可能であり、当該プロセッサに、
アドレス変換保護リセット操作を実行する命令を実行することを含む方法を実行させ、当該命令を実行することは、
前記プロセッサによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することと、
前記決定に基づいて、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化することであって、当該リセットは、前記コンピューティング環境の1つ以上の他のプロセッサによるアクションを待つことなく行われる、ことと、
を含む、コンピュータプログラム製品。
【請求項2】
前記命令を実行することは、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化したことに基づいて、前記コンピューティング環境の前記1つ以上の他のプロセッサによる静止操作を必要とすることなく、当該命令の実行を終了することをさらに含む、
請求項1に記載のコンピュータプログラム製品。
【請求項3】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリをクリアすることをさらに含む、
請求項1に記載のコンピュータプログラム製品。
【請求項4】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリの保護指示をリセットすることをさらに含む、
請求項1に記載のコンピュータプログラム製品。
【請求項5】
前記命令を実行することは、前記コンピューティング環境の1つ以上の他のプロセッサに対して、前記特定の変換テーブルエントリに関連する当該1つ以上の他のプロセッサ内の変換ルックアサイドバッファエントリをクリアまたは修正する信号をブロードキャストすることをさらに含む、
請求項1に記載のコンピュータプログラム製品。
【請求項6】
前記命令を実行することは、前記ストレージブロックに関連する前記特定の変換テーブルエントリ内の前記アドレス変換保護ビットをテストすることをさらに含み、前記ブロードキャストは、当該テストの結果に少なくとも部分的に基づく、
請求項5に記載のコンピュータプログラム製品。
【請求項7】
前記1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、前記ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生し、それに基づいて、当該他のプロセッサは、前記アドレス変換保護ビットを検査して、当該アドレス変換保護例外条件が過剰指示であることを識別し、当該検査によって当該アドレス変換保護例外条件が過剰指示であることを識別したことに基づいて、当該ストレージブロックへの書き込みアクセスが許可される、
請求項5に記載のコンピュータプログラム製品。
【請求項8】
前記1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、前記ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生し、それに基づいて、当該別のプロセッサは、前記アドレス変換保護ビットを検査して、当該アドレス変換保護例外条件が過剰指示であることを識別し、当該検査によって当該アドレス変換保護例外条件が過剰指示であることを識別したことに基づいて、当該別のプロセッサは、当該過剰指示されたアドレス変換保護ビットを含む当該別のプロセッサの関連する変換ルックアサイドバッファエントリをクリアまたは修正する、
請求項5に記載のコンピュータプログラム製品。
【請求項9】
前記1つ以上の他のプロセッサのうちの別のプロセッサが、当該別のプロセッサの関連する変換ルックアサイドバッファエントリがクリアまたは修正されていない状態で、前記ストレージブロックへの書き込みアクセスを試み、その結果、アドレス変換保護例外条件が発生し、それに基づいて、当該別のプロセッサは、当該例外条件を前記コンピューティング環境のオペレーティングシステムに報告し、それに基づいて、当該オペレーティングシステムは当該別のプロセッサに対して、当該1つ以上の他のプロセッサのうちの当該別のプロセッサにおいて前記アドレス変換保護リセット操作を実行する命令を発行する、
請求項6乃至8のいずれか1項に記載のコンピュータプログラム製品。
【請求項10】
コンピューティング環境内での処理を容易にするためのコンピュータシステムであって、
メモリと、
前記メモリと通信するプロセッサと、を備え、前記コンピュータシステムは、
前記プロセッサによって、アドレス変換保護リセット操作を実行する命令を実行することを含む方法を実行するように構成され、当該命令を実行することは、
前記プロセッサによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することと、
前記決定に基づいて、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化することであって、当該リセットは、前記コンピューティング環境の1つ以上の他のプロセッサによるアクションを待つことなく行われる、ことと、
を含む、コンピュータシステム。
【請求項11】
前記命令を実行することは、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化したことに基づいて、前記コンピューティング環境の前記1つ以上の他のプロセッサによる静止操作を必要とすることなく、当該命令の実行を終了することをさらに含む、
請求項10に記載のコンピュータシステム。
【請求項12】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリをクリアすることをさらに含む、
請求項10に記載のコンピュータシステム。
【請求項13】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリの保護指示をリセットすることをさらに含む、
請求項10に記載のコンピュータシステム。
【請求項14】
前記命令を実行することは、前記コンピューティング環境の1つ以上の他のプロセッサに対して、前記特定の変換テーブルエントリに関連する当該1つ以上の他のプロセッサ内の変換ルックアサイドバッファエントリをクリアまたは修正する信号をブロードキャストすることをさらに含む、
請求項10乃至13のいずれか1項に記載のコンピュータシステム。
【請求項15】
前記命令を実行することは、前記ストレージブロックに関連する前記特定の変換テーブルエントリ内の前記アドレス変換保護ビットをテストすることをさらに含み、前記ブロードキャストは、当該テストの結果に少なくとも部分的に基づく、
請求項14に記載のコンピュータシステム。
【請求項16】
コンピューティング環境内での処理を容易にするためのコンピュータ実装方法であって、
プロセッサによって、アドレス変換保護リセット操作を実行する命令を実行することを含み、当該命令を実行することは、
前記プロセッサによって、ストレージブロックに関連する特定の変換テーブルエントリ内のアドレス変換保護ビットをリセットすることを決定することと、
前記決定に基づいて、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化することであって、当該リセットは、前記コンピューティング環境の1つ以上の他のプロセッサによるアクションを待つことなく行われる、ことと、
を含む、コンピュータ実装方法。
【請求項17】
前記命令を実行することは、前記アドレス変換保護ビットをリセットして前記ストレージブロックに対する書き込み保護を無効化したことに基づいて、前記コンピューティング環境の前記1つ以上の他のプロセッサによる静止操作を必要とすることなく、当該命令の実行を終了することをさらに含む、
請求項16に記載のコンピュータ実装方法。
【請求項18】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリをクリアすることをさらに含む、
請求項16に記載のコンピュータ実装方法。
【請求項19】
前記命令を実行することは、前記特定の変換テーブルエントリに関連する前記プロセッサ内の変換ルックアサイドバッファエントリの保護指示をリセットすることをさらに含む、
請求項16に記載のコンピュータ実装方法。
【請求項20】
前記命令を実行することは、前記コンピューティング環境の1つ以上の他のプロセッサに対して、前記特定の変換テーブルエントリに関連する当該1つ以上の他のプロセッサ内の変換ルックアサイドバッファエントリをクリアまたは修正する信号をブロードキャストすることをさらに含む、
請求項16乃至19のいずれか1項に記載のコンピュータ実装方法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0053
【補正方法】変更
【補正の内容】
【0053】
一例において、命令の実行に1つ以上の制御が使用される。制御の例は、M
4フィールド306に含まれる。
図3(E)を参照すると、M
4フィールド306は、(一実施形態において)ローカルクリア制御(LC)ビット
350を含み、このビットは、セットされた場合、ローカルプロセッサまたはCPU内の関連する変換ルックアサイドバッファエントリのみがクリアまたは修正されることを示し、セットされない場合、ローカルプロセッサ内の関連する変換ルックアサイドバッファエントリのクリアに加えて、コンピューティング環境またはコンピュータ構成のすべてのプロセッサ内の関連する変換ルックアサイドバッファエントリがクリアまたは修正されてもよいし、クリアまたは修正されなくてもよい。
【国際調査報告】