(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-09
(45)【発行日】2023-08-18
(54)【発明の名称】メモリを保護するために使用されるストレージ・キーの変更の検出
(51)【国際特許分類】
G06F 12/14 20060101AFI20230810BHJP
G06F 9/34 20180101ALI20230810BHJP
G06F 12/00 20060101ALI20230810BHJP
【FI】
G06F12/14 510E
G06F9/34 350A
G06F12/00 570A
(21)【出願番号】P 2021544615
(86)(22)【出願日】2020-02-14
(86)【国際出願番号】 IB2020051254
(87)【国際公開番号】W WO2020174308
(87)【国際公開日】2020-09-03
【審査請求日】2022-07-25
(32)【優先日】2019-02-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】スリゲル、ティモシー
(72)【発明者】
【氏名】ブラッドベリー、ジョナサン
(72)【発明者】
【氏名】ギアメイ、ブルース、コンラッド
(72)【発明者】
【氏名】ムルダー、ジェイムス
(72)【発明者】
【氏名】レルソン、ピーター、ジェレミー
【審査官】岸野 徹
(56)【参考文献】
【文献】特表2013-515989(JP,A)
【文献】国際公開第2011/076464(WO,A1)
【文献】特表2015-515654(JP,A)
【文献】米国特許出願公開第2013/0247011(US,A1)
【文献】特表2011-509470(JP,A)
【文献】米国特許出願公開第2009/0182971(US,A1)
【文献】米国特許出願公開第2017/0060782(US,A1)
【文献】特開2009-122858(JP,A)
【文献】米国特許出願公開第2012/0204010(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 9/34
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ実施方法であって、
前記コンピューティング環境のプロセッサ内でストレージ・キー変更イベントが発生したかどうかを判定するステップであって、前記判定するステップが、ストレージ・キーの1つまたは複数の選択されたフィールドが更新されたかどうかを確認することを含み、前記ストレージ・キーが、メモリ・ブロックに関連付けられ、前記メモリ・ブロックへのアクセスを制御し、前記ストレージ・キー変更イベントが、前記ストレージ・キーの前記1つまたは複数の選択されたフィールドが更新されたと前記確認が示したことに基づいて発生する、前記判定するステップと、
前記ストレージ・キー変更イベントが発生したとの判定に基づいて、前記ストレージ・キー変更イベントの通知を提供するステップと
を含む、コンピュータ実施方法。
【請求項2】
通知を提供する前記ステップが、前記ストレージ・キー変更イベントが発生したとの判定に基づいて、前記ストレージ・キー変更イベントの通知を割り込みによって提供することを含む、請求項1に記載の方法。
【請求項3】
前記確認することが、前記ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新されたかどうかを確認することを含み、前記ストレージ・キー変更イベントが、前記ストレージ・キーの前記1つまたは複数の選択されたフィールドがアクセス例外なしに更新されたと前記確認が示したことに基づいて発生する、請求項1に記載の方法。
【請求項4】
前記ストレージ・キー変更イベントが発生したかどうかを判定する前記ステップが、指定されたストレージ領域内に前記メモリ・ブロックがあるかどうかを判定することをさらに含み、前記ストレージ・キー変更イベントが、前記ストレージ・キーの前記1つまたは複数の選択されたフィールドが更新され、かつ前記指定されたストレージ領域内に前記メモリ・ブロックがあると前記確認が示したことに基づいて発生する、請求項1に記載の方法。
【請求項5】
前記確認することが、前記ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新されたかどうかを確認することを含み、前記ストレージ・キー変更イベントが、前記ストレージ・キーの前記1つまたは複数の選択されたフィールドがアクセス例外なしに更新され、かつ前記指定されたストレージ領域内に前記メモリ・ブロックがあると前記確認が示したことに基づいて発生する、請求項4に記載の方法。
【請求項6】
前記指定されたストレージ領域が、第1の位置で指定されたメモリの開始アドレスおよび第2の位置で指定されたメモリの終了アドレスによって定義される、請求項4に記載の方法。
【請求項7】
前記第1の位置が選択された制御レジスタであり、前記第2の位置が別の選択された制御レジスタである、請求項6に記載の方法。
【請求項8】
前記終了アドレスが前記開始アドレスにラップ・アラウンドし、前記開始アドレスおよび前記終了アドレスの選択された数の下位ビットが、2つ以上のメモリ・ブロックを含むように、前記指定されたストレージ領域の前記定義に使用される、請求項6に記載の方法。
【請求項9】
前記指定されたストレージ領域内に前記メモリ・ブロックがあるかどうかを判定することが、前記指定されたストレージ領域内に前記メモリ・ブロックのメモリの1つまたは複数のユニットがあるかどうかを判定することを含む、請求項4に記載の方法。
【請求項10】
前記1つまたは複数の選択されたフィールドが、前記ストレージ・キーのアクセス制御フィールドを含む、請求項1に記載の方法。
【請求項11】
前記1つまたは複数の選択されたフィールドが、前記ストレージ・キーのフェッチ保護フィールドを含む、請求項1に記載の方法。
【請求項12】
請求項1ないし11のいずれか一項に記載の方法のステップのすべてを実行するように適合された手段を含むシステム。
【請求項13】
コンピュータ・プログラムであって、前記コンピュータ・プログラムがコンピュータ・システム上で実行されると、請求項1ないし11のいずれか一項に記載の方法のステップのすべてを実行するための命令を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
1つまたは複数の態様は、一般に、コンピューティング環境内の処理を容易にすることに関し、詳細には、メモリへのアクセスを保護することに関連する処理を容易にすることに関する。
【背景技術】
【0002】
ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるz/Architecture(R)ハードウェア・アーキテクチャにおいて、メモリへのアクセスを制御するためにストレージ・キーが使用される。例えば、各メモリ・ブロックには、そのメモリ・ブロックへのアクセスを制御するストレージ・キーが関連付けられている。ストレージ・キーは、プログラムによって実行される様々な命令によって設定または変更され得る複数のフィールドを含む。特定のフィールドは、オペレーティング・システムなどの特権プログラムまたは他の特権プログラムによって実行される命令を介して、設定または変更される。
【0003】
慣例により、特定のプログラムのみがストレージ・キーを変更することが期待されている。他のプログラムがストレージ・キーを変更すると、悪影響が生じる可能性がある。また、ストレージ・キーを変更するための命令を出すプログラムがプログラミング・エラーを有する場合、ストレージ・キーは不正確に変更され、破損する場合がある。
【発明の概要】
【0004】
請求項1に記載の方法ならびに対応するシステムおよびコンピュータ・プログラムを提供することによって、従来技術の欠点が克服され、追加の利点がもたらされる。
【0005】
プログラムは、ストレージ・キーの変更を検出することによって、ストレージ・キーが破損しているかどうかを判定し、例えば、ストレージ・キーを変更する不正確なプログラムまたはストレージ・キーを不正確に変更するプログラムあるいはその両方を識別するためのアクションを実行することができる。プロセッサ内のセキュリティおよび性能が向上する。
【0006】
一例として、通知を提供するステップは、ストレージ・キー変更イベントが発生したとの判定に基づいて、ストレージ・キー変更イベントの通知を割り込みによって提供することを含む。
【0007】
一例において、確認することは、ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新されたかどうかを確認することを含む。ストレージ・キー変更イベントは、ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新されたと確認が示したことに基づいて発生する。
【0008】
一例において、ストレージ・キー変更イベントが発生したかどうかを判定するステップは、指定されたストレージ領域内にメモリ・ブロックがあるかどうかを判定することをさらに含む。ストレージ・キー変更イベントは、ストレージ・キーの1つまたは複数の選択されたフィールドが更新され、かつ指定されたストレージ領域内にメモリ・ブロックがあると確認が示したことに基づいて発生する。
【0009】
さらに、一例において、確認することは、ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新されたかどうかを確認することを含み、ストレージ・キー変更イベントは、ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新され、かつ指定されたストレージ領域内にメモリ・ブロックがあると確認が示したことに基づいて発生する。
【0010】
一例として、指定されたストレージ領域は、第1の位置で指定されたメモリの開始アドレスおよび第2の位置で指定されたメモリの終了アドレスによって定義される。第1の位置は、例えば、選択された制御レジスタであり、第2の位置は、別の選択された制御レジスタである。
【0011】
一例において、終了アドレスは開始アドレスにラップ・アラウンドし、開始アドレスおよび終了アドレスの選択された数の下位ビットは、2つ以上のメモリ・ブロックを含むように、指定されたストレージ領域の定義に使用される。
【0012】
さらに、一例において、指定されたストレージ領域内にメモリ・ブロックがあるかどうかを判定することは、指定されたストレージ領域内にメモリ・ブロックのメモリの1つまたは複数のユニットがあるかどうかを判定することを含む。
【0013】
例として、1つまたは複数の選択されたフィールドは、ストレージ・キーのアクセス制御フィールドまたはストレージ・キーのフェッチ保護フィールドあるいはその両方を含む。
【0014】
1つまたは複数の態様に関連するコンピュータ実施方法およびシステムもまた、本明細書で説明および特許請求されている。さらに、1つまたは複数の態様に関係するサービスも、本明細書で説明されており、特許請求され得る。
【0015】
本明細書に記載の技術を通して、追加の特徴および利点が実現される。他の実施形態および態様が、本明細書に詳細に記載されており、特許請求される態様の一部と見なされる。
【0016】
1つまたは複数の態様が、本明細書に添付の特許請求の範囲の例として具体的に取り上げられ、明確に特許請求されている。1つまたは複数の態様の前述の目的、特徴、および利点は、以下の添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0017】
【
図1A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例を示す図である。
【
図1B】本発明の1つまたは複数の態様による、
図1Aのプロセッサのさらなる詳細を示す図である。
【
図2】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
【
図3】本発明の一態様による、ストレージ・キーの一例を示す図である。
【
図4】本発明の一態様により使用されるストレージ・キー変更検出コンポーネントのさらなる詳細を示す図である。
【
図5】本発明の一態様による、ストレージ・キーの更新の検出に関連する処理の一例を示す図である。
【
図6A】本発明の一態様による、コンピューティング環境内の処理を容易にする一例を示す図である。
【
図6B】本発明の一態様による、コンピューティング環境内の処理を容易にする一例を示す図である。
【
図7A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
【
図8】クラウド・コンピューティング環境の一実施形態を示す図である。
【発明を実施するための形態】
【0018】
本発明の一態様によれば、コンピューティング環境内の処理を容易にするための機能が提供される。例えば、コンピューティング環境のメモリ・ブロックを保護するために使用されるストレージ・キーが変更されたことを検出するための機能が提供される。機能は、例えば、ストレージ・キーが変更されたことを示すプログラム・イベント記録(PER:program event recording)のイベント割り込みを含む。プログラムは、ストレージ・キーの変更を検出することによって、ストレージ・キーが破損しているかどうかを判定し、例えば、ストレージ・キーを変更する不正確なプログラムまたはストレージ・キーを不正確に変更するプログラムあるいはその両方を識別するためのアクションを実行することができる。一例として、メモリ・ブロック(本明細書ではストレージとも呼ぶ)は、メモリ・ページであり、このメモリは、例えば、4Kバイトのメモリである。他の例において、メモリ・ブロックは、メモリ・ページ以外であり得るか、またはメモリ・ページは、4Kバイト以外であり得るか、あるいはその両方である。多くの変形形態が可能である。
【0019】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一実施形態について、
図1Aを参照して説明する。コンピューティング環境100は、例えば、1つまたは複数のバス108または他の接続あるいはその両方を介して互いに結合された、例えば、プロセッサ102(例えば、中央処理装置)と、メモリ104(例えば、システム・メモリ、メイン・ストレージ、中央ストレージ、ストレージとしても知られている、メイン・メモリ)と、1つまたは複数の入出力(I/O:input/output)デバイスまたはインターフェースあるいはその両方106とを含む。
【0020】
一例において、プロセッサ102は、z/Architecture(R)ハードウェア・アーキテクチャに基づいており、同様にインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供され、z/Architecture(R)ハードウェア・アーキテクチャを実装するIBM Z(R)サーバなどのサーバの一部である。z/Architectureハードウェア・アーキテクチャの一実施形態が、「z/Architecture Principles of Operation」、IBM Publication No. SA22-7832-11、第12版、2017年9月に記載されている。しかしながら、z/Architecture(R)ハードウェア・アーキテクチャは、アーキテクチャの一例にすぎず、他のアーキテクチャまたは他のタイプのコンピューティング環境あるいはその両方が、本発明の1つまたは複数の態様を含むか、または使用するか、あるいはその両方でもよい。一例において、プロセッサは、z/OS(R)オペレーティング・システムなどのオペレーティング・システムを実行する。
【0021】
プロセッサ102は、命令を実行するために使用される複数の機能コンポーネントを含む。
図1Bに示すように、これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント120と、フェッチされた命令をデコードし、デコードされた命令のオペランドを取得するための命令デコード・ユニット122と、デコードされた命令を実行するための命令実行コンポーネント124と、必要に応じて、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント126と、実行された命令の結果を提供するためのライト・バック・コンポーネント130とを含む。本発明の1つまたは複数の態様によれば、これらのコンポーネントのうちの1つまたは複数は、本明細書に記載のように、ストレージ・キー変更検出(または、本発明の1つまたは複数の態様を使用することができる他の処理)で使用される1つまたは複数の他のコンポーネントの少なくとも一部を含むか、またはそれらにアクセスしてもよい。1つまたは複数の他のコンポーネントは、例えば、ストレージ・キー変更検出コンポーネント(または、他のコンポーネント)136を含む。
【0022】
一例において、メモリ・アクセス・コンポーネント126は、1つまたは複数のストレージ・キー128を使用して、1つまたは複数のメモリ・ブロックへのアクセスを要求する命令が、要求されているタイプのアクセスに対して許可されるかどうかを判定する。一例において、ストレージ・キーは、例えば、構成で利用可能な各メモリ・ブロック(例えば、各4Kバイトのブロック)に関連付けられている。
【0023】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例について、
図2を参照して説明する。一例において、コンピューティング環境はz/Architecture(R)ハードウェア・アーキテクチャに基づいているが、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ・コーポレーションまたはその他によって提供される他のアーキテクチャに基づいてもよい。
【0024】
図2を参照すると、一例において、コンピューティング環境は、中央電子処理装置(CEC:central electronics complex)200を含む。CEC200は、1つまたは複数のプロセッサ(中央処理装置(CPU:central processing unit)としても知られている)204、および入出力サブシステム206に結合された、例えば、メモリ202(システム・メモリ、メイン・メモリ、メイン・ストレージ、中央ストレージ、ストレージとしても知られている)などの複数のコンポーネントを含む。
【0025】
メモリ202は、例えば、1つまたは複数の論理区画208と、論理区画を管理するハイパーバイザ210と、プロセッサ・ファームウェア212と、関連する(本明細書に記載の)ストレージ・キー214とを含む。ハイパーバイザ210の一例は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるプロセッサ・リソース/システム管理機構(PR/SM(TM))ハイパーバイザである。本明細書で使用される場合、ファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、高レベルのマシン・コードの実装で使用されるハードウェアレベルの命令またはデータ構造あるいはその両方を含む。一実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして提供される、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含む。
【0026】
各論理区画208は、別個のシステムとして機能することができる。すなわち、各論理区画は、独立してリセットされ、z/OS(R)オペレーティング・システムまたは別のオペレーティング・システムなどのゲスト・オペレーティング・システム220を実行し、異なるプログラム222によって動作することができる。論理区画で実行しているオペレーティング・システムまたはアプリケーション・プログラムは、十分かつ完全なシステムにアクセスできるように見えるが、実際には、その一部のみが利用可能である。
【0027】
メモリ202は、論理区画に割り当てられ得る物理プロセッサ・リソースであるプロセッサ(例えば、CPU)204に結合される。例えば、論理区画208は、1つまたは複数の論理プロセッサを含み、各論理プロセッサは、論理区画に動的に割り当てられ得る物理プロセッサ・リソース204の全部または一部を表す。
【0028】
さらに、メモリ202は、I/Oサブシステム206に結合される。I/Oサブシステム206は、中央電子処理装置の一部であっても、中央電子処理装置から分離されていてもよい。I/Oサブシステム206は、中央電子処理装置に結合された、メイン・ストレージ202と、入出力制御ユニット230および入出力(I/O)デバイス240との間の情報の流れを指示する。
【0029】
多くのタイプのI/Oデバイスが使用されてもよい。特定のタイプの1つは、データ記憶デバイス250である。データ記憶デバイス250は、1つまたは複数のプログラム252、1つまたは複数のコンピュータ可読プログラム命令254、またはデータ、あるいはその組合せなどを記憶してもよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてもよい。
【0030】
一例として、各プロセッサ204は、ストレージ・キーの変更の検出(または、本発明の1つまたは複数の態様の他の動作、あるいはその両方)で使用されるストレージ・キー変更検出コンポーネント(または、他のコンポーネント)260を含むか、またはストレージ・キー変更検出コンポーネント260にアクセスすることができるか、あるいはその両方である。様々な例において、これらの機能を実行する1つまたは複数のコンポーネントが存在する場合がある。多くの変形形態が可能である。
【0031】
中央電子処理装置200は、取り外し可能/取り外し不可、揮発性/不揮発性コンピュータ・システム記憶媒体を含むか、またはそれらに結合されるか、あるいはその両方であってもよい。例えば、中央電子処理装置200は、取り外し不可、不揮発性の磁気媒体(通常は「ハード・ドライブ」と呼ぶ)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー・ディスク」)の読出しと書込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROMもしくは他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読出しと書込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であってもよい。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方も中央電子処理装置200と共に使用され得ることを理解されたい。例として、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0032】
さらに、中央電子処理装置200は、他の多数の汎用もしくは専用のコンピューティング・システム環境または構成で運用されてもよい。中央電子処理装置200での使用に適している可能性のある、よく知られているコンピューティング・システム、環境、または構成、あるいはその組合せの例には、パーソナル・コンピュータ(PC)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが含まれるが、これらに限定されない。
【0033】
コンピューティング環境の様々な例が本明細書に記載されているが、本発明の1つまたは複数の態様は、多くのタイプの環境で使用されてもよい。本明細書で提供されるコンピューティング環境は単なる例である。
【0034】
上に示したように、ストレージ・キーは、メモリ・ブロックへのアクセスを制御するために使用される。一例において、
図3を参照すると、ストレージ・キー300は、以下のフィールドを含む。
【0035】
アクセス制御(ACC:Access-Control)302:参照がキー制御保護の対象である場合、情報が記憶されるとき、およびフェッチから保護されている位置から情報がフェッチされるとき、4アクセス制御ビット、すなわちビット0~3が、例えば、プログラム・ステータス・ワード(PSW:program status word)内の4ビットのアクセス・キーと突き合わされる。
【0036】
フェッチ保護(F:Fetch-Protection)304:参照がキー制御保護の対象である場合、フェッチ保護ビットは、キー制御保護がフェッチ・タイプの参照に適用されるかどうかを制御する。0は、記憶タイプの参照のみが監視され、任意のアクセス・キーを用いたフェッチが許可されることを示し、1は、キー制御保護がフェッチと記憶の両方に適用されることを示す。命令のフェッチかオペランドのフェッチかの区別はされない。
【0037】
参照(R:Reference)306:参照ビットは通常、例えば、情報を記憶するためまたは情報をフェッチするために、対応するストレージ・ブロック内の位置が参照されるたびに1に設定される。
【0038】
変更(C:Change)308:変更ビットは、対応するストレージ・ブロック内の位置に情報が記憶されるたびに1に設定される。
【0039】
一実施形態において、参照フィールドおよび変更フィールドはストレージ・キーの一部であるが、例えば、フェッチまたは記憶の動作によって暗黙的に変更された場合、PERストレージ・キー変更イベントは検出されない。
【0040】
本発明の一態様によれば、ストレージ・キーを変更する不正確なプログラムまたは破損したストレージ・キーあるいはその両方の検出を容易にするために、ストレージ・キーの変更を検出するための機能が提供される。機能は、例えば、ストレージ・キー変更検出コンポーネント(例えば、ストレージ・キー変更検出コンポーネント136またはストレージ・キー変更検出コンポーネント260)の使用を含む。本発明の一態様による、ストレージ・キー変更検出コンポーネントに関連するさらなる詳細について、
図4を参照して説明する。
【0041】
図4に示すように、一例において、プロセッサ400(例えば、プロセッサ102またはプロセッサ204など)は、ストレージ・キー変更検出コンポーネント402(例えば、ストレージ・キー変更検出コンポーネント136またはストレージ・キー変更検出コンポーネント260など)を含み、このストレージ・キー変更検出コンポーネント402は、プログラム・イベント記録コンポーネント(PER)404を含むか、またはプログラム・イベント記録コンポーネント(PER)404にアクセスすることができる。プログラム・イベント記録コンポーネント404は、本発明の一態様によれば、ストレージ・キーの変更などの特定のイベントを検出し、そのようなイベントの通知を提供し、その通知に基づいてアクションを取ることを可能にするために使用される。このようなアクションは、例えば、ストレージ・キー変更が破損しているかどうかを判定し、破損している場合、ストレージ・キーを変更する不正確なプログラムまたはストレージ・キーを不正確に変更するプログラムあるいはその両方を識別することを含む。これに基づいて、ストレージ・キーを破損させるプログラムまたは命令あるいはその両方が修正されてもよい。さらに、一例において、プログラムは、通知を受信したことに基づいて、例えば、アラートを提供すること、プログラムの一部の実行を防止することなど、1つまたは複数のタスクを(例えば、自動的に)実行してもよい。
【0042】
プログラム・イベント記録コンポーネント404は、例えば、以下を含む複数のレジスタ410に関連付けられている。
【0043】
例えば、以下のフィールドを含む制御レジスタ9(420)。
【0044】
PERイベント・マスク(EM:PER-Event Masks)422:どのタイプのイベントを認識するかを指定するために使用される。
【0045】
分岐アドレス制御(B:Branch-Address Control)424:正常分岐イベントがいつ発生するかを示すために使用される。
【0046】
イベント抑制制御(ES:Event-Suppression Control)426:選択されたイベントの通知の抑制を示すために使用される。
【0047】
ストレージ変更空間制御(S:Storage-Alteration Space Control)428:指定されたアドレス空間内のストレージ変更イベントを示すために使用される。
【0048】
制御レジスタ10(430)は、指定されたストレージ領域の開始アドレスを含む。
【0049】
制御レジスタ11(440)は、指定されたストレージ領域の終了アドレスを含む。
【0050】
それぞれの制御レジスタについては、z/Architecture(R)ハードウェア・アーキテクチャの一実施形態について定義されたようなプログラム・イベント記録(PER)の説明に関連して、以下でさらに詳細に説明する。
【0051】
本明細書の説明において、特定の位置、特定のフィールド、またはレジスタのフィールドの特定のサイズ、あるいはその組合せ、他の位置または命令あるいはその両方が示されることがある(例えば、特定のバイトまたはビットあるいはその両方)。しかしながら、他の位置、フィールド、またはサイズ、あるいはその組合せが提供されてもよい。また、ビットを特定の値、例えば1または0に設定するよう指定されることがあるが、これは一例にすぎない。他の例において、ビットは、反対の値または別の値などの異なる値に設定されてもよい。多くの変形形態が可能である。
【0052】
引き続き
図4を参照すると、一例として、プロセッサ400は、PERによって使用されるデータを含むメモリ450(例えば、メモリ104、またはメモリ202)に結合される。例えば、メモリ450は、プログラム・ステータス・ワード(PSW)データ452および実メモリ位置150~151(454)、ならびに図示されていない他の実位置またはデータあるいはその両方を含む。
【0053】
一例において、メモリ位置454は、例えば、PERイベントの発生を示すために使用されるPERコード456と、PERイベントの原因を示すために使用されるアドレス指定および変換モード識別情報(ATMID:Addressing-and-Translation-Mode Identification)フィールド458と、イベントを引き起こした参照を変換するために使用されたアドレス空間制御要素(ASCE:address-space-control element)を識別するために、特定のインスタンスで使用されるPER ASCE識別情報(AI:PER ASCE Identification)フィールド460とを含む。メモリ位置454は、追加のフィールド、より少ないフィールド、または他のフィールド、あるいはその組合せを含んでもよい。さらに、特定のフィールドの使用は、検出されるイベントのタイプに依存することがある。例えば、一実施形態において、AIフィールド460は、ストレージ・キー変更イベントの検出には使用されないが、他のタイプのイベントに使用される。他の変形形態も可能である。各フィールドについては、以下でさらに詳細に説明する。
【0054】
一例において、ストレージ・キー変更検出コンポーネント(例えば、コンポーネント402)は、PERを使用して、ストレージ・キー変更イベントを検出し、イベントに関する通知をプログラムに提供する。ストレージ・キー変更イベントを検出することに関するさらなる詳細について、
図5を参照して説明する。一例において、プロセッサ(例えば、プロセッサ102、204、または400)によって、処理が実行される。特定の例として、プロセッサのハードウェアまたはファームウェアあるいはその両方によって、処理が実行される。
【0055】
図5を参照すると、一例において、ストレージ・キー変更イベント、および場合によっては破損したストレージ・キーを検出するために、プロセッサは、ストレージ・キー(例えば、ストレージ・キー300)の選択されたフィールドが更新されたかどうかを判定する(照会500)。例として、例えば、z/Architecture(R)ハードウェア・アーキテクチャの一部であるストレージ・キー拡張設定(Set Storage Key Extended)命令、フレーム管理機能実行(Perform Frame Management Function)命令、ブロック・テスト(Test Block)命令、およびページ移動(Move Page)命令を含む命令セット・アーキテクチャ(ISA)の1つまたは複数の命令を介して、ストレージ・キーが更新されてもよい。これらの命令は単なる例であり、ストレージ・キーを更新するために他の命令が使用されてもよい。
【0056】
一例において、これらの命令のうちの1つまたは複数がストレージ・キーの選択されたフィールドのうちの1つまたは複数を更新したとき、(これらの命令のうちの1つまたは複数を実行する)プログラムは、本発明の一態様によるイベント、例えば、ストレージ・キー変更イベントが認識されるべきであることを、PERを介して示す。
【0057】
例として、選択されたフィールドは、アクセス制御フィールド(例えば、アクセス制御302)およびフェッチ保護フィールド(例えば、フェッチ保護304)である。更新は、選択されたフィールドを同じ値または異なる値に更新することを含んでもよい。この例では、アクセス制御フィールドおよびフェッチ保護フィールドのうちの1つまたは複数の更新なしに参照フィールド(例えば、参照306)および変更フィールド(例えば、変更308)を更新すると、ストレージ・キー変更イベントは生じない。
【0058】
一実施形態において、選択されたフィールド(例えば、アクセス制御またはフェッチ保護あるいはその両方)が更新された場合、アクセス例外があったかどうかに関してさらなる判定が行われる(照会502)。一実施形態において、選択されたフィールドがアクセス例外なしに更新された場合、ストレージ・キーに関連付けられたメモリ・ブロック(例えば、4Kバイトのブロック)が(例えば、開始アドレス432および終了アドレス442によって定義される)メモリの指定された領域内にあるかどうかに関してさらなる照会が行われる(照会504)。別の実施形態において、メモリの指定された領域またはアクセス例外あるいはその両方の確認は、任意選択である。
【0059】
選択されたフィールドがアクセス例外なしに更新され、関連するメモリ・ブロックが指定された領域内にある場合、ストレージ・キー変更イベントが検出される(ステップ506)。一例において、判定を行い、ストレージ・キー変更イベントを検出するのは、プロセッサ内で実行しているPER機構である。ストレージ・キー変更イベントを検出したことに基づいて、プログラム割り込みが提供される(ステップ508)。一例において、プログラム割り込みは、0x80のプログラム割り込みコードを有する。さらに、一実施形態では、以下に説明するように、原因を特定し、プログラムにより多くの情報を提供するために、例えばストレージ内の固定位置に、追加情報が提供される(ステップ510)。
【0060】
照会500に戻り、一例において、選択されたフィールドが更新されていない場合、またはアクセス例外が発生した場合(照会502)、またはメモリ・ブロックが指定された領域にない場合、ストレージ・キー変更イベントは検出されない。
【0061】
本明細書に記載のように、一例において、ストレージ・キー変更イベントの検出は、z/Architecture(R)ハードウェア・アーキテクチャのプログラム・イベント記録(PER)機構を使用して実行される。PERは、本発明の一態様によれば、ストレージ・キー変更イベントなどの選択されたイベントのプログラムを検出および警告するためのメカニズムを提供する。プログラム・イベント記録機能のさらなる詳細について、以下で説明する。完全を期すために、本発明の一態様による、ストレージ・キー変更イベントを検出し、その通知を提供するために使用される1つまたは複数の態様に必要ではないが追加される機構について説明する。また、本明細書に記載の実施形態において、ストレージ・キー変更イベントを検出し、ストレージ・キー変更イベントの通知を提供するために、PERが使用されるが、他の実施形態において、ストレージ・キー変更イベントを検出し、ストレージ・キー変更イベントの通知を提供するために、他の機構またはメカニズムあるいはその両方が使用されてもよい。
【0062】
プログラム・イベント記録(PER)
【0063】
一実施形態において、PERは、プログラムのデバッグを支援するために使用される。これにより、例として、次のタイプのイベントをプログラムに警告することが可能になる。
【0064】
*正常分岐命令の実行。分岐の目標位置が指定されたストレージ領域内にある場合にのみイベントを発生させるオプションが提供される。指定されたストレージ領域について、本明細書でさらに説明する。
【0065】
*指定されたストレージ領域からの命令のフェッチ。
【0066】
*指定されたストレージ領域のコンテンツの変更。ストレージ領域が指定されたアドレス空間内にある場合にのみイベントを発生させるオプションが提供される。
【0067】
*実アドレス使用ストア(Store Using Real Address)命令の実行
【0068】
・トランザクション終了命令の実行
【0069】
・例えばインストールされているPERゼロ・アドレス検出機構に基づいた、0を含む汎用レジスタから形成されたオペランド・アドレスを使用してストレージにアクセスする命令の実行。
【0070】
・例えば、本発明の一態様による、インストールされているPERストレージ・キー変更機構に基づいた、ストレージ・キー拡張設定命令、フレーム管理機能実行命令、ページ移動命令、または指定されたストレージ領域のストレージ・キーを更新するブロック・テスト命令の実行。
【0071】
プログラムは、上記のタイプのイベントのうちの1つまたは複数が認識されるように選択的に指定することができる。PERイベントに関する情報は、例えば、プログラム割り込み(または他のメカニズム)によってプログラムに提供され、割り込みの原因は、割り込みコードにおいて識別される。
【0072】
PER命令フェッチ無効化(PER instruction-fetching nullification)
【0073】
一例として、PER-3機構は、z/Architectureハードウェア・アーキテクチャを実装するモデル上で使用可能であってもよい。この機構がインストールされている場合、制御レジスタ9のビット39は、1のとき、PER命令フェッチ・イベントが無効化を強制することを指定する。ビット39は、制御レジスタ9のビット33、命令フェッチPERイベント・マスク・ビットも1である場合に、この目的に対して有効である。ビット33が0である場合、PER命令フェッチ・イベントは認識されず、ビット39は効果がない。PER-3機構がインストールされていない場合、またはビット39が0である場合、PER命令フェッチ・イベントは無効化を強制しない。無効化を強制するPER命令フェッチ・イベントを、PER命令フェッチ無効化イベントと呼ぶ。無効化を強制しないPERイベントを、PER基本イベントと呼ぶ。
【0074】
PER-3機構がインストールされており、ビット39が1である場合、フェッチされた命令が実行される前にPER命令フェッチ・イベントによる割り込みが発生し、PER命令フェッチ無効化イベントが示され、他のPERイベントおよび他のプログラム割り込み条件は報告されず、命令の実行は無効化される。PER-3機構がインストールされていない場合、またはビット39が0である場合、無効化は強制されず、PER命令フェッチ基本イベントが示され、他のPERイベントおよび他のプログラム割り込み条件が同時に報告されてもよく、命令の実行が完了、終了、抑制、または無効化されてもよい。他の条件がない場合、フェッチされた命令またはその動作ユニットの実行が完了した後に、PER命令フェッチ基本イベントによる割り込みが発生する。
【0075】
制御レジスタ割当ておよびアドレス空間制御要素
【0076】
PERを制御するための情報は、例えば、制御レジスタ9、10、および11、ならびにアドレス空間制御要素内に存在する。
【0077】
モデルに応じて、制御レジスタ9、10もしくは11のいずれかまたはすべてが0以外の値を含む場合、アドレス比較制御は無効となり、制御レジスタ9から11が0に戻っても依然として無効であることがある。
【0078】
一例において、制御レジスタ内の情報は次のフォーマットを有し、
図4を参照する。
【0079】
制御レジスタ9(420)は、例えば、以下を含む。
【0080】
PERイベント・マスク(EM)422:ビット32~39は、どのタイプのイベントを認識するかを指定する。ビット32~34および36が利用可能であり、正常分岐イベント、命令フェッチ基本イベント、およびストレージ変更イベントを制御する。本発明の一態様によれば、PERストレージ・キー変更機構がインストールされている場合、PERイベント・マスクのビット35も使用される。PERゼロ・アドレス検出機構がインストールされている場合、PERイベント・マスクのビット37が使用される。PER-3機構がインストールされている場合、PERイベント・マスクのビット39が使用される。ESA/390互換モードでは、ストレージ・キー変更、ゼロ・アドレス検出、命令フェッチ無効化マスク、ビット35、37、および39がそれぞれサポートされているかどうかは予測不可能である。一例において、ビットは、次のように割り当てられる。
【0081】
ビット32:正常分岐イベント
【0082】
ビット33:命令フェッチ・イベント
【0083】
ビット34:ストレージ変更イベント
【0084】
ビット35:ストレージ・キー変更イベント
【0085】
ビット36:実アドレス使用ストア・イベント(ビット34も1でなければならない)
【0086】
ビット37:ゼロ・アドレス検出イベント
【0087】
ビット38:トランザクション終了イベント
【0088】
ビット39:命令フェッチ無効化イベント(ビット33も1でなければならない)
【0089】
ビット32~34およびビット36は、1である場合、対応するタイプのイベントが認識されることを指定する。しかしながら、ビット36は、ビット34も1である場合に、この目的に対して有効である。ビット34が1である場合、ストレージ変更イベントが認識される。ビット34および36が1である場合、ストレージ変更イベントと実アドレス使用ストア・イベントの両方が認識される。ビットが0である場合、対応するタイプのイベントは認識されない。ビット34が0である場合、ストレージ変更イベントと実アドレス使用ストア・イベントの両方が認識されない。
【0090】
PER-3機構がインストールされていない場合、ビット39は無視される。ビット39は、ビット33も1である場合に有効である。ビット33が1であり、PER-3機構がインストールされており、ビット39が1である場合、PER命令フェッチ無効化イベントが認識される。ビット33が1であり、ビット39が0である場合(またはPER-3機構がインストールされていない場合)、PER命令フェッチ基本イベントが認識される。ビット33が0である場合、PER命令フェッチ基本イベントもPER命令フェッチ無効化イベントも認識されない。
【0091】
トランザクション実行機構がインストールされていない場合、またはトランザクション実行機構がインストールされており、ビット38が0である場合、トランザクション終了イベントは認識されない。トランザクション実行機構がインストールされており、ビット38が1である場合、最外トランザクション終了命令の完了の結果として、トランザクション終了イベントが認識される。ESA/390互換モードでは、制御レジスタ9のビット38は無視される。
【0092】
PERストレージ・キー変更機構がインストールされていない場合、ビット35は無視される。ビット35が1であり、PERストレージ・キー変更機構がインストールされている場合、本発明の一態様によれば、例えば、次の命令のいずれかが、例えば指定された領域内にある4Kバイトのストレージ・ブロックに関連付けられたストレージ・キーのACCビットまたはFビットを実行および更新するとき、ストレージ・キー変更イベントが認識される。
【0093】
ページ移動およびキー設定機構がインストールされており、キー機能制御(KFC:key function control)(汎用レジスタ0のビット51~53)が4または5の値を含むとき、ページを移動する(Move Page)
【0094】
SK(汎用レジスタR1のビット46)が1であるとき、フレーム管理機能を実行する(Perform Frame Management Function)
【0095】
拡張されたストレージ・キーを設定する(Set Storage Key Extended)
【0096】
モデルの実装がストレージ・キーを更新するとき、ブロックをテストする(Test Block)
【0097】
制御レジスタ9は、PERイベント・マスク422に加えて、以下に説明する様々な制御を含む。追加の制御、より少ない制御、または他の制御、あるいはその組合せが使用されてもよい。
【0098】
分岐アドレス制御(B)424:制御レジスタ9のビット40は、1である場合、指定されたストレージ領域内の位置にある分岐に対してのみ正常分岐イベントが発生することを指定する。ビット40が0である場合、分岐目標アドレスに関係なく、正常分岐イベントが発生する。
【0099】
イベント抑制制御(ES)426:CPUが命令の開始時にトランザクション実行モードにある場合、制御レジスタ9のビット41は、1のとき、レジスタのビット32~34、36、37、および39のPERイベント・マスクが無視され、0を含むと見なされることを指定する。以下に記載する場合を除いて、CPUが命令の開始時にトランザクション実行モードにない場合、またはレジスタのビット41が0である場合、すべてのPERイベント・マスクは定義どおりに動作する。
【0100】
(a)最外トランザクション開始(Transaction Begin)命令が実行され、(b)同時プログラム例外条件がなく、(c)ES制御が1である場合、TBEGIN指定のトランザクション診断ブロック(TDB:Transaction Diagnostic Block)のPERストレージ変更イベントまたはゼロ・アドレス検出イベント、および命令フェッチ基本イベントは抑制され、この場合、命令フェッチ無効化イベントは抑制されない。ESA/390互換モードでは、イベント抑制制御は無視される。
【0101】
ストレージ変更空間制御(S)428:制御レジスタ9のビット42は、1である場合、指定されたストレージ領域への参照の結果として、ストレージ変更イベントが、指定されたアドレス空間内でのみ発生することを指定する。アドレス空間は、アドレス空間への参照を変換するために使用されるアドレス空間制御要素におけるストレージ変更イベント・ビットによってストレージ変更イベントが発生するアドレス空間として指定される。動的アドレス変換(DAT:Dynamic Address Translation)が有効でない場合、ビット42は無視される。DATが有効でない場合、またはビット42が0である場合、ストレージ変更イベントは特定のアドレス空間でのみ発生するようには制限されない。
【0102】
制御レジスタ10(430)は、例えば、以下を含む。
【0103】
PER開始アドレス432:制御レジスタ10のビット0~63は、指定されたストレージ領域の開始のアドレスである。ESA/390互換モードでは、PER開始アドレスのビット32が0として扱われるかどうかは予測不可能である。
【0104】
制御レジスタ11(440)は、例えば、以下を含む。
【0105】
PER終了アドレス442:制御レジスタ11のビット0~63は、指定されたストレージ領域の終了のアドレスである。ESA/390互換モードでは、PER開始アドレスのビット32が0として扱われるかどうかは予測不可能である。
【0106】
アドレス空間制御要素(ASCE)
【0107】
制御レジスタ9におけるストレージ変更空間制御が1である場合、アドレス空間制御要素のビット56は、1のとき、アドレス空間制御要素によって定義されるアドレス空間が、ストレージ変更イベントが発生し得るアドレス空間であることを指定する。ASCEのビット56は、アドレス空間制御要素を使用してストレージ・オペランド・ストア参照の動的アドレス変換を実行するときに検査される。
【0108】
PER動作
【0109】
一実施形態において、PERは、PSW(例えば、PSW452)のビット1、PERマスクの制御下にある。一例として、PERマスクおよび特定のPERイベント・マスク・ビットが1である場合、CPUは、対応するタイプのイベントに対して有効になり、それ以外の場合は無効になる。
【0110】
PER基本イベントによる割り込みは、通常、イベントの原因となる命令の実行後に発生する。イベントの発生は、命令の実行に影響を与えず、命令の実行は、完了、部分的に完了、終了、抑制、または無効化される場合がある。しかしながら、ストレージ変更イベントの認識により、イベントの原因となったバイトから4Kバイト以下しか記憶されず、動作ユニットの完了時に、ゼロ・アドレス検出イベントの認識が発生する場合があり、これらのPERイベントを認識すると、割り込み可能命令が部分的に完了することになる場合がある。一例において、複数の4Kバイト・ブロックのストレージ・キーを更新する命令上でストレージ・キー変更イベントが検出されると、イベントが検出されたブロックのストレージ・キーが設定され次第、その命令が割り込みされる。
【0111】
PSW内のPERマスクまたは制御レジスタ9内のマスクのいずれかによって、特定のPERイベントの発生時に特定のPERイベントに対してCPUが無効にされている場合、そのイベントは認識されない。
【0112】
PSW内のPERマスクまたは制御レジスタ9、10、および11内のPER制御フィールドへの変更は、直後の命令の実行から始まるPERに影響する。したがって、変更の結果として、命令フェッチ無効化イベントが直後の命令に適用される場合、その命令の実行は無効化され、命令フェッチ無効化イベントが報告される。
【0113】
制御レジスタ1、7、または13のアドレス空間制御要素のストレージ変更イベント・ビットへの変更も、直後の命令の実行から始まるPERに影響する。アクセス・レジスタの間に、メイン・ストレージまたはALBのいずれかのASN第2テーブル・エントリから取得され得るアドレス空間制御要素のストレージ変更イベント・ビットへの変更は、PERに影響があるとしても、必ずしも即時に影響するわけではない。しかしながら、PERは、ALBをパージするALBパージ(Purge ALB)または比較交換パージ(Compare And Swap And Purge)のいずれかが実行された直後に影響を受ける。
【0114】
CPUを有効から無効に変更する命令の実行中にそのタイプのイベントに対してPER基本イベントが発生した場合、そのPERイベントが認識される。
【0115】
PER基本イベントは、命令の試行の実行で認識さてもよく、その後、実際の実行のために、命令、DATテーブル・エントリ、およびオペランドが再フェッチされてもよい。再フェッチされたフィールドが、試行の実行と実際の実行の間に別のCPUまたはチャネル・プログラムによって変更された場合、示されたPERイベントが試行の実行に対するものか、実際の実行に対するものかは予測不可能である。
【0116】
原因の特定
【0117】
PERのプログラム割り込みは、割り込みコードのビット8を1に設定し、識別情報を実ストレージ位置150~159に配置する。PERイベントがストレージ変更イベントまたはゼロ・アドレス検出イベントである場合、情報は位置161にも記憶される。プログラム旧プログラム・ステータス・ワード(PSW)の命令アドレスおよび割り込み長コード(ILC:Interruption Length Code)によって、追加情報が提供される。
【0118】
一例において、位置150~151(例えば、
図4の位置454)は、以下を含む。
【0119】
PERコード456:PERイベントの発生は、ビット位置0~7が1であることによって示される。一実施形態において、特定のタイプのイベントのPERコードのビット位置は以下の通りである。
ビット PERイベント
0 正常分岐
1 命令フェッチ
2 ストレージ変更
3 ストレージ・キー変更
4 実アドレス使用ストア
5 ゼロ・アドレス検出
6 トランザクション終了
7 命令フェッチ無効化(PER-3)
【0120】
位置150のビット位置2が1であり、ビット位置4が0である場合、ストレージ変更イベントを示し、ビット位置2が1であり、ビット位置4が1である場合、実アドレス使用ストア・イベントを示す。プログラム割り込みが発生するとき、2つ以上のタイプのPER基本イベントを同時に示すことができる。しかしながら、ストレージ変更イベントとゼロ・アドレス検出イベントが同時に認識された場合、ストレージ変更イベントのみが示される。さらに、別のプログラム割り込み条件が存在する場合、プログラム割り込みの割り込みコードは、PER基本イベントとその他の条件の両方を示してもよい。
【0121】
PER命令フェッチ無効化イベントについてプログラム割り込みが発生する場合、PERコードのビット1およびビット7が1に設定される。他のPERイベントは同時に示されない。
【0122】
トランザクション実行機構がインストールされており、トランザクション・イベントのプログラム割り込みが発生する場合、PERコードのビット6は1に設定される。命令フェッチ基本イベントがトランザクション終了イベントと同時に発生する場合、PERコードのビット1も1に設定される。他のPERイベントは、トランザクション終了イベントと同時に示されない。
【0123】
位置150~151のビット位置3には、0が記憶される。PERゼロ・アドレス検出機構がインストールされていない場合、ビット位置5に0が記憶される。トランザクション実行機構がインストールされていない場合、ビット位置6に0が記憶される。PER-3がインストールされていない場合、ビット位置7に0が記憶される。
【0124】
アドレス指定および変換モード識別情報(ATMID)458:PERイベントが示されるときのプログラム割り込み中、そのイベントを引き起こした命令の実行開始時のPSW(例えば、PSW452)ビット31、32、5、16、および17が、実位置150~151のビット位置8および10~13にそれぞれ記憶されてもよい。ビット31、32、5、16および17が記憶される場合、位置150~151のビット位置9に、1ビットが記憶される。ビット31、32、5、16、および17が記憶されない場合、位置150~151のビット位置8~13に、0ビットが記憶される。
【0125】
実位置150~151のビット8~13を、アドレス指定および変換モード識別情報(ATMID)と呼ぶ。ビット9を、ATMID妥当性ビットと呼ぶ。ビット9が0である場合、無効なATMID(例えば、すべて0)が記憶されたことを示す。
【0126】
一実施形態において、有効なATMIDのビットの意味は以下の通りである。
ビット 意味
8 PSWビット31
9 ATMID妥当性ビット
10 PSWビット32
11 PSWビット5
12 PSWビット16
13 PSWビット17
【0127】
例えば、PERイベントが、次の命令のうちの1つによって引き起こされた場合にのみ、有効なATMIDが記憶される。Branch And Save And Set Mode(BASSM)、Branch And Set Authority(BSA)、Branch And Set Mode(BSM)、Branch In Subspace Group(BSG)、Load PSW(LPWS)、Load PSW extended(LPWSE)、Program Call(PC)、Program Return(PR)、Program Transfer(PT)、Program Transfer With Instance(PTI)、Resume Program(RP)、Set Address Space Control(SAC)、Set Address Space Control Fast(SACF)、Set Addressing Mode(SAM24、SAM31、SAM64)、Set System Mask(SSM)、Store Then And System Mask(STNSM)、Store Then Or System Mask(STOSM)、Supervisor Call(SVC)、およびTrap(TRAP2、TRAP4)
【0128】
PERイベントが他の命令によって引き起こされた場合、有効なATMIDが記憶されるかどうかは予測不可能である。PER命令フェッチ無効化イベント・マスク・ビットの値は、ATMIDフィールドの内容に影響を与えない。
【0129】
PER ASCE識別情報(AI)460:PERコードが、ストレージ変更イベント(例えば、ビット2が1であり、ビット4が0である)またはゼロ・アドレス検出イベント(例えば、ビット5が1である)の表示を含み、PSWビット5が1であるとともに、イベントの原因となった参照を変換するためにASCEが使用されたときに、そのイベントが発生した場合、位置150~151のビット14および15は、イベントの原因となった参照を変換するために使用されたアドレス空間制御要素(ASCE)を、一例では以下のように識別するように設定される。
ビット14~15 意味
00 1次ASCEが使用された。
01 AR指定のASCEが使用された。PERアクセスID、実位置161を調べて、使用されたASCEを判断することができる。AR指定のASCEが使用される場合でも、ARの内容が1次、2次、またはホームASCEを指定している場合、ビット14および15は、01ではなく、それぞれ00、10、または11に設定されてもよい。
10 2次ASCEが使用された。
11 ホームASCEが使用された。
【0130】
上記に加えて、PER機構は、例えば以下を含む。
【0131】
PERアドレス:(メモリ内の)位置152~159のPERアドレス・フィールドは、認識された1つまたは複数のPERイベントの原因となる命令をフェッチするために使用される命令アドレスを含む。ESA/390互換モードでは、位置152~155のPERアドレス・フィールドは、認識された1つまたは複数のPERイベントの原因となる命令をフェッチするために使用される命令アドレスのビット33~63を含む。位置152のビット0は、0として記憶される。
【0132】
命令が、実行型命令(ExecuteまたはExecute Relative Long)のターゲットである場合、その実行型命令をフェッチするために使用される命令アドレスが、PERアドレス・フィールドに配置される。
【0133】
PERアクセス識別情報(PAID:PER Access Identification):PERコードにストレージ変更イベントまたはゼロ・アドレス検出イベントが示され、PER ASCE識別情報(AI、位置150~151のビット14~15)が01バイナリを含む場合、イベントが適用されるアドレス空間の表示は、(実メモリの)位置161に記憶される。位置161のビット位置4~7に、使用されるアクセス・レジスタの番号が記憶され、ビット位置0~3に、0が記憶される。PER ASCE識別情報が01バイナリを含まない場合、位置161の内容は予測不可能である。
【0134】
命令アドレス:プログラム旧PSWにおける命令アドレスは、別のプログラム条件も示されていない限り、次に実行されるはずの命令のアドレスであり、別のプログラム条件が示されている場合、命令アドレスは、その条件に起因して終了する命令によって決定されるアドレスである。PER命令フェッチ無効化イベントが認識された場合、プログラム旧PSWにおける命令アドレスは、イベントを引き起こした命令のアドレスである。これは、実ストレージ位置152~159のPERアドレス・フィールドに記憶されているアドレスと同じアドレスである。
【0135】
ILC:PER命令無効化イベントの場合、ILCは0である。PER基本イベントの場合、PSWロード(Load PSW)、PSWロード拡張(Load PSW Extended)、プログラム戻り(Program Return)、またはILCスーパーバイザ呼び出し割り込みセットによって導入されたPSWの同時指定例外がILCを0に設定する場合を除き、ILCは、PERアドレスによって指定された命令の長さを示す。
【0136】
表示の優先順位
【0137】
PER命令フェッチ無効化イベントが認識され、他のプログラム割り込み条件も存在するとき、最も優先順位の高いプログラム割り込み条件が示される。
【0138】
PER命令フェッチ無効化イベントが示されるとき、他のPERイベントは示されない。PER命令フェッチ無効化イベントが示されないとき、2つ以上のPER基本イベントが認識および報告さてもよい。本セクションではこれより、これらの事例について提示する。
【0139】
PERのプログラム割り込みが発生し、2つ以上のPER基本イベントが認識された場合、認識されたすべてのPERイベントが同時にPERコードに示される。しかしながら、ストレージ変更イベントまたは実アドレス使用ストア・イベントのいずれかがゼロ・アドレス検出イベントと同時に認識される場合、ストレージ変更イベントまたは実アドレス使用ストア・イベントのみが示される。
【0140】
ゼロ・アドレス検出イベントが2つ以上のストレージ・オペランドについて認識された場合、位置150~151および161にどのオペランドのASCE識別情報、および該当する場合はAR番号が記憶されるかは予測不可能である。
【0141】
スーパーバイザ呼び出し(Supervisor Call)のための命令フェッチ基本イベントの場合、プログラム割り込みは、スーパーバイザ呼び出し割り込みの直後に発生する。
【0142】
早く認識されるタイプのPSW形式エラーを有する新しいPSWも導入する命令の実行中にPER基本イベントが認識される場合、プログラム割り込みの割り込みコードに、指定例外とPERの両方が同時に示される。PSW形式エラーが、遅れて認識されるタイプの場合、割り込みコードにPERのみが示される。どちらの場合も、無効なPSWは、プログラム旧PSWとして記憶される。
【0143】
PER基本イベントの認識は、通常、命令実行の終了に影響を及ぼさない。しかしながら、以下の場合、割り込み可能命令の実行は正常に完了しない。
【0144】
1.命令が非同期条件(I/O、外部、再起動、または抑制可能なマシン確認条件)のために割り込みされる場合、最初にPERイベントのプログラム割り込みが発生し、その後に他の割り込みが(新しいPSWのマスク・ビットに従って)通常の優先順位で発生する。
【0145】
2.停止機能が実行されると、CPUが停止状態に入る前に、PERイベントを示すプログラム割り込みが発生する。
【0146】
3.プログラム例外が認識されると、その命令実行のために認識されたPERイベントが同時に示される。
【0147】
4.モデルによっては、特定の状況で、PERイベントの認識は、プログラム例外の同時表示なしで、非同期条件の割り込みなしで、またCPUが停止状態になることなく、命令が早期に割り込みされるように見える場合がある。具体的には、ストレージ変更イベントの認識により、イベントの原因となったバイトから4Kバイト以下しか記憶されず、動作ユニットの完了時に、ゼロ・アドレス検出イベントの認識が発生する場合がある。
【0148】
上記の事例1および2において、認識された唯一のPERイベントが命令フェッチ基本イベントであり、命令の別の動作ユニットが依然として実行予定である場合、イベントは破棄されてもよく、その結果、プログラム割り込みは発生しない。イベントが破棄されるかどうかは予測不可能である。
【0149】
PER命令フェッチ無効化イベントの認識は、イベントの原因となる命令の実行を無効化させる。
【0150】
ストレージ領域の指定
【0151】
一実施形態において、命令フェッチ、ストレージ変更、およびストレージ・キー変更の3つのタイプのPERイベントは、ストレージ内の領域の指定を含む。正常分岐イベントが、この指定を含んでもよい。ストレージ領域は、制御レジスタ10の開始アドレスによって指定された位置から始まり、制御レジスタ11の終了アドレスによって指定された位置まで(その位置も含む)延在する。この領域は、開始アドレスの右側まで延在する。
【0152】
命令フェッチ・イベントは、(アドレス変換が適用される前に)命令アドレスによって指定された命令の先頭バイトまたは目標もしくは実行型命令の先頭バイトが、指定された領域からフェッチされるときは常に、発生する。
【0153】
ストレージ変更イベントは、論理アドレスまたは仮想アドレスとして定義されているオペランド・アドレスを使用して、指定された領域にストア・アクセスが行われたときに発生する。しかしながら、DATがオンであり、制御レジスタ9のストレージ変更空間制御が1である場合、ストレージ領域は、アドレス空間制御要素のストレージ変更イベント・ビットが1であるアドレス空間内にある。実アドレスとして定義されたオペランド・アドレスを用いて行われたストア・アクセスの場合、ストレージ変更イベントは発生しない。
【0154】
制御レジスタ9の分岐アドレス制御が1である場合、(アドレス変換が適用される前に)分岐アドレスによって指定された分岐目標命令の先頭バイトが、指定された領域内にあるとき、正常分岐イベントが発生する。
【0155】
ストレージ・キー変更イベントは、更新されたストレージ・キーに関連付けられた4Kバイト・ブロック内のいずれかのバイトが指定された領域内にある場合に発生する。一例において、下位12ビットを含む制御レジスタ10および11のすべてのビットが、指定された領域の決定に関与する。例えば、CR10=0x0000000000123017、CR11=0x0000000000123016と仮定する。定義が制御レジスタの下位12ビットを無視する場合、一例では、アドレス0x000000000123000の単一の4Kバイト・ブロックのみが指定された領域にある。
【0156】
さらに、CR10=0X0000000000123001、CR11=0x0000000000123FFと仮定し、さらに、定義が、4Kバイト・ブロックの先頭バイトのみが指定された領域内になければならないことを示すと仮定すると、例えば、アドレス0x0000000000123000へのSSKEは、指定された領域にヒットしない。
【0157】
一例において、破損しているストレージ・キーが特定の範囲内にあることがわかっている場合、指定されたストレージ領域は、その特定の範囲に設定されてもよい。代替として、ストレージ・キーが修正される場合に常にPERストレージ・キー変更イベントを検出するために、CR10は0x0000000000000000に等しく設定されてもよく、CR11は0xFFFFFFFFFFFFFFFFに設定されてもよい。他の変形形態も可能である。
【0158】
例として、アドレスは、ブロック・テストの実アドレス、フレーム管理機能実行およびストレージ・キー拡張設定の実アドレスまたは絶対アドレス、ならびにページ移動の論理アドレスである。
【0159】
正常分岐、命令フェッチ、ストレージ変更イベント、およびストレージ・キー変更イベント用に指定されたアドレスのセットは、アドレス264-1でラップ・アラウンドする、すなわち、アドレス264-1の次にアドレス0が続くものと見なされる。開始アドレスが終了アドレスよりも小さい場合、領域は連続している。開始アドレスが終了アドレスより大きい場合、指定されたセットの位置は、開始アドレスからアドレス264-1までの領域と、アドレス0から終了アドレスまで(終了アドレスも含む)の領域とを含む。開始アドレスが終了アドレスと等しい場合、その1つの位置のみが指定される。
【0160】
正常分岐イベント、命令フェッチ・イベント、ストレージ変更イベント、およびストレージ・キー変更イベントのアドレス比較は、64ビット・アドレスを使用して実行される。アドレス比較は、アドレスを開始アドレスおよび終了アドレスと比較する前に、24ビットまたは31ビットのアドレス指定モードで、仮想アドレス、論理アドレス、または命令アドレスをそれぞれ左側に40個または33個の0を拡張することによって実現される。
【0161】
例示的なプログラミング・ノート:いくつかのモデルにおいて、アドレス範囲確認の実行は、変換索引バッファ(TLB:translation look-aside buffer)の各ページ・テーブル・エントリへの拡張によって支援される。このような実装では、正常分岐、命令フェッチ、またはストレージ変更のイベント・マスクが1である場合に制御レジスタ10および11の内容を変更するか、またはこれらのPERイベント・マスクのいずれかを1に設定すると、TLBがエントリからクリアされることがある。これは、CPUがPERイベントに対して無効になっている場合でも生じる可能性がある。したがって、プログラムは、可能な場合、制御レジスタ9、10、または11のロードを回避すべきである。
【0162】
PERイベントの例には、例えば、以下が含まれる。
【0163】
正常分岐
【0164】
制御レジスタ9の分岐アドレス制御が0である場合、分岐目標アドレスに関係なく、正常分岐イベントが発生する。分岐アドレス制御が1である場合、分岐目標命令の先頭バイトが制御レジスタ10および11で指定されたストレージ領域にある場合にのみ、正常分岐イベントが発生する。
【0165】
分岐アドレス制御の効果を条件として、例として次の命令のうちの1つが分岐を引き起こす場合は常に、正常分岐イベントが発生する。Branch And Link(BAL、BALR)、Branch And Save(BAS、BASR)、Branch And Save And Set Mode(BASSM)、Branch And Set Authority(BSA)、Branch And Set Mode(BSM)、Branch And Stack(BAKR)、Branch In Subspace Group(BSG)、Branch Indirect On Condition、Branch on Condition(BC、BCR)、Branch On Count(BCT、BCTR、BCTG、BCTGR)、Branch On Index High(BXH、BXHG)、Branch On Index Low Or Equal(BXLE、BXLEG)、Branch Relative And Save、Branch Relative And Save Long、Branch Relative On Condition(BRC)、Branch Relative On Condition Long(BRCL)、Branch Relative On Count(BRCT)、Branch Relative On Count High(BRCTH)、Branch Relative On Index High(BRXH、BRXHG)、Branch Relative On Index Low Or Equal(BRXLE、BRXLG)、Compare And Branch(CRB、CGRB)、Compare And Branch Relative(CRJ、CGRJ)、Compare Immediate And Branch(CIB、CGIB)、Compare Immediate And Branch Relative(CIJ、CGIJ)、Compare Logical And Branch(CLRB、CLGRB)、Compare Logical And Branch Relative(CLRJ、CLGRJ)、Compare Logical Immediate And Branch(CLIB、CLGIB)、Compare Logical Immediate And Branch Relative(CLIJ、CLGIJ)、Resume Program(RP)、およびTrap(TRAP2、TRAP4)
【0166】
分岐アドレス制御の効果を条件として、次の命令のうちの1つが分岐を引き起こす場合も常に、正常分岐イベントが発生する。Program Call(PC)、Program Return(PR)、Program Transfer(PT)、およびProgram Transfer With Instance(PTI)
【0167】
Program Call(PC)、Program Return(PR)、Program Transfer(PT)、およびProgram Transfer With Instance(PTI)の場合、分岐目標アドレスは、命令によってPSWに配置される新しい命令アドレスであると見なされる。
【0168】
保護ストレージ機構が有効である場合、次の命令、すなわち、読み込み保護(LGG:Load Guarded)、ならびに読み込み論理およびシフト保護(LLGFSG:Load Logical and Shift Guarded)のいずれかによって引き起こされる保護ストレージ・イベントの結果として、正常分岐イベントが認識される。
【0169】
分岐アドレス制御が1である場合、分岐アドレスは、保護ストレージ・イベント・パラメータ・リスト(GSEPL:guarded storage event parameter list)内の保護ストレージ・イベント・ハンドラ・アドレス(GSEHA:guarded storage event handler address)フィールドの内容であると見なされる。
【0170】
正常分岐イベントは、PERイベント・マスクのビット32が1であり、PSW内のPERマスクが1である場合に、PER正常分岐イベントを認識させる。
【0171】
PER正常分岐イベントは、ビット0またはPERコードを1に設定することによって示される。
【0172】
命令フェッチ
【0173】
命令フェッチ・イベントは、命令の先頭バイトが制御レジスタ10および11によって指定されたストレージ領域内にある場合に発生する。命令フェッチ・イベントは、実行型命令の目標の先頭バイトが指定されたストレージ領域内にある場合にも発生する。
【0174】
命令フェッチ基本イベント:命令フェッチ・イベントは、PSW内のPERマスクが1であり、PERイベント・マスクのビット33が1であり、PER-3機構がインストールされていないか、またはPERイベント・マスクのビット39が0であるかのいずれかの場合に、PER命令フェッチ基本イベントを認識させる。
【0175】
命令フェッチ基本イベントが、非同期条件(I/O、外部、再起動、または抑制可能なマシン確認条件)または停止機能の実行のために割り込みされる割り込み可能命令に対して認識される唯一のPERイベントである場合、および命令の動作ユニットが依然として実行予定である場合、命令フェッチ・イベントは破棄されてもよく、命令フェッチ・イベントが破棄されるかどうかは予測不可能である。
【0176】
PER命令フェッチ基本イベントは、PERコードのビット1およびPERコードのビット7を0に設定することによって示される。
【0177】
命令フェッチ無効化イベント:命令フェッチ・イベントは、PSW内のPERマスクが1であり、PERイベント・マスクのビット33が1であり、PER-3機構がインストールされており、PERイベント・マスクのビット39が1である場合に、PER命令フェッチ無効化イベントを認識させる。
【0178】
PER命令フェッチ無効化イベントは、PERコードのビット1および7を1に設定することによって示される。
【0179】
ストレージ変更
【0180】
CPUが論理アドレスまたは仮想アドレスを使用することによって制御レジスタ10および11によって指定されたストレージ領域へのアクセス例外なしにストア・アクセスを行う場合は常に、ストレージ変更イベントが発生する。しかしながら、DATがオンであり、制御レジスタ9のストレージ変更空間制御が1である場合、参照をストレージ位置に変換するためにDATによって使用されるアドレス空間制御要素内のストレージ変更イベント・ビットが1である場合にのみ、イベントが発生する。
【0181】
オペランドの全部または一部を指定されたストレージ領域内に記憶する命令をCPUが実行する場合は常に、ストレージの内容が変更されたと見なされる。チャネル・プログラムによるデータの記憶に対して認識が発生しないことを除いて、示された保護例外の目的で記憶が行われると見なされる場合は常に、変更が加えられると見なされる。記憶された値が元の値と同じであっても、記憶はPERを目的とする変更を構成する。さらに、TBEGIN指定のTDBの内容は、中止されたトランザクションによってTDBが実際に記憶されているかどうかに関係なく、最外TBEGIN命令の実行によって変更されたと見なされ、内部TBEGIN命令の第1のオペランド位置でPERストレージ変更イベントが検出されるかどうかは予測不可能である。
【0182】
CPUによって参照される暗黙の位置は監視されない。このような位置には、PSWおよび割り込みコードの位置、プログラム割り込みトランザクション診断ブロック、拡張監視例外カウンタ、および制御レジスタ12によって指定されたトレース・エントリが含まれる。しかしながら、これらの位置は、情報が命令によって明示的にそこに記憶されている場合に監視される。同様に、監視は、チャネル・プログラムによるデータの記憶には適用されない。リンケージ・スタック上で動作する命令によって記憶されるリンケージ・スタック内の暗黙の位置、およびMonitor Call命令によって記憶される拡張監視カウント配列エントリが監視される。
【0183】
I/O命令は、実際に記憶が発生する場合にのみ、第2のオペランド位置を変更すると見なされる。
【0184】
ストレージ変更は、オペランドが実アドレスまたは絶対アドレスを有するように指定されている命令には適用されない。したがって、ストレージの変更は、(実効アドレスが0である場合)Compare and Replace DAT Table Entry、Invalidate DAT Table Entry(invalidation-and-clearing operation)、Invalidate Page Table Entry、Page In、Perform Frame Management Function、Reset Reference Bit Extended、Reset Reference Bits Multiple、Set Storage Key Extended、Store Using Real Address、Test Block、およびTest Pending Interruptionには適用されない。ストレージ変更は、ストア機構リストによる実位置200への記憶には適用されず、また、トレースを発生させる命令によるトレース・テーブルへの記憶にも適用されない。
【0185】
ストレージ変更イベントは、PERイベント・マスクのビット34が1であり、PSW内のPERマスクが1である場合に、PERストレージ変更イベントが認識させる。PERストレージ変更イベントを認識すべきかどうかを判定するとき、PERイベント・マスクのビット36は無視される。
【0186】
PERストレージ変更イベントは、PERコードのビット2を1に、PERコードのビット4を0に設定することによって示される。
【0187】
実アドレス使用ストア
【0188】
実アドレス使用ストア・イベントは、実アドレス使用ストア命令が実行される場合は常に発生する。
【0189】
実アドレス使用ストア・イベントと指定されたストレージ領域との間に関係はない。
【0190】
実アドレス使用ストア・イベントは、PERイベント・マスクのビット34および36が1であり、PSW内のPERマスクが1である場合に、PER実アドレス使用ストア・イベントを認識させる。
【0191】
PER実アドレス使用ストア・イベントは、PERコードのビット2および4を1に設定することによって示される。
【0192】
ゼロ・アドレス検出
【0193】
PERゼロ・アドレス検出機構がインストールされている場合、CPUが、ゼロを含む汎用レジスタまたは汎用レジスタのサブフィールドから形成された実効オペランド・アドレスを使用してストレージ・アクセスを行うときは常に、ゼロ・アドレス検出イベントが発生する。しかしながら、RX、RXE、RXF、RXY、またはVRX形式の命令の実行中は、CPUが次のいずれかの条件で形成された実効オペランド・アドレスを使用してストレージ・アクセスを行った場合にのみ、イベントが発生する。
【0194】
1.ベース・レジスタ番号が0であり、インデックス・レジスタ番号が0以外であり、インデックス・レジスタが0を含む。
【0195】
2.インデックス・レジスタ番号が0であり、ベース・レジスタ番号が0以外であり、ベース・レジスタが0を含む。
【0196】
3.ベース・レジスタ番号とインデックス・レジスタ番号の両方が0以外である場合、以下の条件のどちらがイベントを引き起こすかは予測不可能である。
【0197】
(a)ベース・レジスタが0を含む。
【0198】
(b)ベース・レジスタとインデックス・レジスタの内容の合計が0である。
【0199】
VRV形式の命令の実行中、CPUがストレージ・アクセスを行った場合、以下の条件の1つまたは複数のどれがイベントを発生させるかは予測不可能である。
【0200】
1.ベース・レジスタ番号が0であり、第2のオペランドのインデックス付き要素の値が0である。
【0201】
2.ベース・レジスタ番号が0以外であり、ベース・レジスタが0を含む。
【0202】
3.ベース・レジスタとインデックス付き要素の値の内容の合計が0である。
【0203】
以下に記載する場合を除いて、オペランド・アドレスのゼロ・アドレス検出は、そのアドレスを使用してストレージへのフェッチ、ストア、または更新参照が行われる場合に常に実行され、ゼロ・アドレス検出は、オペランド・アドレスを使用してストレージにアクセスする場合にのみ実行される。
【0204】
ゼロ・アドレス検出は、Branch Indirect On Conditionを除き、分岐型命令の分岐アドレスに対して実行されない。Branch Indirect On Conditionの場合、ゼロ・アドレス検出は第2のオペランド・アドレスで実行されるが、第2のオペランドからフェッチされた分岐アドレスでは実行されない。Load Guarded and Load Logical And Shift Guardedの場合、保護ストレージ・イベントが認識されたときに分岐型命令と見なされたとしても、ゼロ・アドレス検出は命令の第2のオペランド・アドレスで実行される。
【0205】
ゼロ・アドレス検出は、Execute命令の目標命令アドレスおよびTest Block命令の汎用レジスタR2の内容に対しても実行されない。
【0206】
Compression Call、Convert UTF-16 To UTF-32、Convert UTF-16 To UTF-8、Convert UTF-32 To UTF-16、Convert UTF-32 To UTF-8、Convert UTF-8 To UTF-16、およびConvert UTF-8 To UTF-32の場合、第1のオペランドの終了に達したが、第2のオペランドの終了に達していないとき、PERゼロ・アドレス検出イベントがストレージ・オペランドで認識されるかどうかは予測不可能である。
【0207】
ゼロ・アドレス検出イベントを引き起こすための条件は、命令実行の開始時に評価される。これらの条件が命令の実行中に再評価されるかどうかは予測不可能である。
【0208】
以下に記載する場合を除いて、レジスタの内容が0であるかどうかの判定は、次のように現在のアドレス指定モードに依存する。
【0209】
・24ビットおよび31ビットのアドレス指定モードでは、ビット32~63がすべて0である場合、レジスタは0を含むと見なされる。
【0210】
・64ビットのアドレス指定モードでは、ビット0~63がすべて0である場合、レジスタは0を含むと見なされる。
【0211】
Compare And Replace DAT Table Entryの場合、汎用レジスタR2のビット位置59が0を含むとき、ビット0~52がすべて0であれば、汎用レジスタR2は0を含むと見なされ、汎用レジスタR2のビット位置59が1を含むとき、ビット0~51がすべて0であれば、汎用レジスタR2は0を含むと見なされる。Invalidate DAT Table Entryの場合、ビット0~51がすべて0であるとき、汎用レジスタR1は0を含むと見なされ、Invalidate Page Table Entryの場合、ビット0~52がすべて0であるとき、アドレス指定モードに関係なく、汎用レジスタR1は0を含むと見なされる。
【0212】
ゼロ・アドレス検出イベント:ゼロ・アドレス検出イベントは、PSW内のPERマスクが1であり、PERイベント・マスクのビット37が1である場合に、PERゼロ・アドレス検出イベントを認識させる。
【0213】
PERゼロ・アドレス検出イベントは、PERコードのビット5を1に設定することによって示される。
【0214】
トランザクション終了
【0215】
トランザクション終了イベントは、CPUが最外Transaction End命令の開始時にトランザクション実行モードにあるとき、命令の完了時に発生する。
【0216】
トランザクション終了イベントと指定されたストレージ領域との間に関係はない。
【0217】
トランザクション終了イベントは、PERイベント・マスクのビット38が1であり、PSW内のPERマスクが1である場合に、PERトランザクション終了イベントを認識させる。
【0218】
PERトランザクション終了イベントは、PERコードのビット6を1に設定することによって示される。
【0219】
Transaction End命令が実行され、CPUがトランザクション実行モードにない場合、トランザクション終了イベントは認識されない。
【0220】
ストレージ・キー変更
【0221】
本発明の一態様によれば、CPUが、例えば、制御レジスタ10および11によって指定されたストレージ領域内の4Kバイトのストレージ・ブロックに関連付けられたストレージ・キーのACCまたはFビットなどをアクセス例外なしに更新する場合は常に、ストレージ・キー変更イベントが発生する。RビットまたはCビットを変更しても、ACCビットまたはFビットも変更されない限り、このイベントは発生しない。一例において、新しい値が元の値と同じであっても、ACCまたはFビットの更新はPERを目的とする変更と見なされる。
【0222】
他の実施形態において、CPUが、例えば、(指定されたストレージ領域に関係なく)4Kバイトのストレージ・ブロックに関連付けられたストレージ・キーのACCフィールドまたはFフィールドを(アクセス例外に関係なく)更新する場合に、ストレージ・キー変更イベントが発生する。他の変形形態も可能である。
【0223】
一例として、更新されたストレージ・キーに関連付けられた4Kバイト・ブロックが指定された領域内にある場合(または、別の実施形態では、指定される領域が指定されていない場合)、4つの命令がストレージ・キー変更イベントを引き起こすことができる。
【0224】
・ストレージ・キー拡張設定の実行。条件付きSSKE機構がインストールされており、MRビットとMCビットのいずれかまたは両方が1であり、アクセス制御ビットおよびフェッチ保護ビットを更新する必要がない場合、これがストレージ・キー変更イベントと見なされるかどうかはモデルに依存する。アクセス制御ビットおよびフェッチ保護ビットが更新される場合、例えば、関連する4Kバイトのストレージ・ブロックが指定された領域内にある限り、ストレージ・キー変更イベントが発生する。
【0225】
・SK(汎用レジスタR1のビット46)が1である場合、フレーム管理機能を実行する。条件付きSSKE機構がインストールされている場合、MRビットまたはMCビットのいずれかが0以外であるときの対処は、上記のストレージ・キー拡張設定命令について説明したものと同じである。
【0226】
・ページ移動およびキー設定機構がインストールされており、キー機能制御(KFC)(汎用レジスタ0のビット51~53)が4または5の値を含むとき、ページを移動する。
【0227】
・ブロック・テストの任意の実行。だたし、一例では、モデルの実装が実際にストレージ・キーを更新する場合のみ実行する。
【0228】
ストレージ・キー変更イベントは、例えば、PERイベント・マスクのビット35が1であり、PSW内のPERマスクが1である場合に、PERストレージ・キー変更イベントを認識させる。
【0229】
PERストレージ・キー変更イベントは、PERコードのビット3を1に設定することによって示される。
【0230】
PERイベントの他の割り込み条件との同時表示
【0231】
PER命令フェッチ無効化イベントが報告される場合、他のPERイベントおよび他のプログラム割り込み条件は報告されない。
【0232】
一例として、以下の規則は、プログラム例外、監視イベント、空間スイッチ・イベント、またはスーパーバイザ呼び出し割り込みも引き起こす命令によって引き起こされるPER基本イベントの表示を規定する。
【0233】
1.命令フェッチ基本イベントの表示は、命令の実行が完了したか、終了したか、抑制されたか、無効化されたかには依存しない。しかしながら、抑制および無効化の特殊な事例は、次の通りである。
【0234】
a.命令が、PSWにおける奇数の命令アドレスによって指定されている場合、命令フェッチ・イベントは示されない。
【0235】
b.PSW命令アドレスによって指定された命令の第1、第2、または第3のハーフワードにアクセス例外が適用され、PER-3機構がインストールされている場合、命令フェッチ・イベントは示されない。しかしながら、PER-3機構がインストールされていない場合、命令フェッチ・イベントが示されるかどうかは予測不可能である。
【0236】
c.(a)アクセス例外が実行型命令の目標位置の第1、第2、もしくは第3のハーフワードに適用される場合、または(b)Executeの目標アドレスが奇数の場合、一例では、以下が適用される。PER-3機構がインストールされている場合、目標位置について命令フェッチ・イベントは示されず、PERアドレス範囲が実行型命令とその目標の両方を含む場合を含め、実行型命令について命令フェッチ・イベントが示されるかどうかは予測不可能である。PER-3機構がインストールされていない場合、命令フェッチ・イベントが実行型命令について示されるのか、目標位置について示されるかは予測不可能である。
【0237】
2.動作が完了するか、または部分的に完了すると、プログラム例外、空間スイッチ・イベント、または監視イベントも認識されるかどうかに関係なく、イベントが示される。
【0238】
3.正常分岐、ゼロ・アドレス検出、ストレージ変更、および実アドレス使用ストアは、動作について、または命令が割り込み可能である場合は、抑制または無効化された動作ユニットについては示されない。
【0239】
4.命令の実行が終了すると、イベントが発生する場合は常にストレージ変更またはゼロ・アドレス検出が示される。結果フィールドの内容の変更がオペランド値を条件としている場合でも、命令の実行が完了した場合にイベントが発生したとき、モデルはイベントを示してもよい。この定義において、終了を許可する例外(アドレス指定、保護、およびデータ)の発生は、結果の領域が変更されていない場合でも終了を引き起こすと見なされる。
【0240】
5.Load PSW、Load PSW Extended、Program Return、Set System Mask、Store Then Or System Mask、またはSupervisor CallがPER基本条件を引き起こし、同時に、PSWがアクティブになった直後に認識されるタイプのPSW形式エラーを有する新しいPSWを導入する場合、割り込みコードは、PER基本条件と指定例外の両方を識別する。
【0241】
6.Load PSW、Load PSW Extended、Program Return、またはSupervisor CallがPER条件を引き起こし、同時に、次の命令の実行の一部として認識されるタイプのPSW形式エラーを有する新しいPSWを導入する場合、次の命令がフェッチまたは実行されることなく、また指定例外が認識されることなく、導入されたPSWは旧PSWとして記憶される。
【0242】
7.最外トランザクション開始(Transaction Begin)命令がPER基本イベントおよび同時プログラム例外を引き起こした場合、イベント抑制制御は適用されない。
【0243】
CPUがトランザクション実行モードにある間にPERイベントが発生すると、トランザクションは中止される。
【0244】
プログラミング・ノートの例には、例えば、以下が含まれる。
【0245】
1.割り込み可能命令のCompare And Form Codeword、Compare Logical Long、Compare until Substring Equal、Compression Call、Move Long、Test Block、およびUpdate Treeの実行により、命令フェッチおよびゼロ・アドレス検出のイベントが発生する可能性がある。割り込み可能命令のPerform Frame Management Function(拡張DAT機構がインストールされており、フレームサイズのコードが1Mバイトのフレームを指定している場合)、Set Storage Key Extended(拡張DAT機構がインストールされており、複数ブロック制御が1である場合)、およびTest Blockの実行により、命令フェッチのイベントが発生する可能性がある。Compression Call、Move Long、およびUpdate Treeの実行により、命令フェッチおよびストレージ変更のイベントが発生する可能性がある。
【0246】
このような命令を割り込みは、PER基本イベントを2回以上表示させてもよい。したがって、一例において、プログラムは、PERデータから冗長なイベント表示を除去してもよい。一例として、次の規則は、これらの命令の実行中に適用可能なイベントの表示を規定する。
【0247】
a.命令フェッチ基本イベントは、例えば、実行が最初の実行であるか再開であるかに関係なく命令が実行のためにフェッチされる場合は常に示されるが、例外として、イベントが、示される唯一のPERイベントであり、割り込みが非同期割り込み条件または停止機能の実行によるものであり、命令の動作ユニットが依然として実行予定である場合、イベントは、破棄される(示されない)場合がある。
【0248】
b.ストレージ変更イベントは、最後の開始から始まり、割り込み前に転送された最後のバイトで終わる動作の部分によって、指定されたストレージ領域にデータが記憶された場合にのみ示される。動作の再開時にイベントが再び発生するかどうかに関して、早期割り込みについての特別な表示は提供されない。指定されたストレージ領域が1バイトの位置である場合、ストレージ変更イベントは、Move LongまたはCompression Callの実行時に1回だけ認識される可能性があるが、Update Treeの場合、2回以上認識される可能性がある。
【0249】
2.以下は、命令の実行が完了するごとに1つのエントリのみが取得されるように、割り込み可能命令に対するPERデータ内のPER基本イベントの複数のエントリを削除するためにプログラムが実行する一般的なアクションの概要の一例である。
【0250】
a.PERアドレスが旧PSW内の命令アドレスと等しいかどうか、および最後に実行された命令が割り込み可能であったかどうかを確認する。
【0251】
b.両方の条件が満たされている場合、命令フェッチ・イベントを削除する。
【0252】
c.両方の条件が満たされ、イベントがストレージ変更である場合、残りのデスティネーション・オペランドの一部が指定されたストレージ領域内にあるとき、イベントを削除する。
【0253】
3.Load PSW(もしくは、Load PSW Extended)命令、またはLoad PSW命令によって導入されたエントリPSW形式エラーまたは奇数の命令アドレスに関連する次の命令のずれかによって引き起こされたPER命令フェッチ基本イベントの表示の一例。
【0254】
PER機構の一実施形態について本明細書に記載されているが、他の実施形態も可能である。さらに、本発明の1つまたは複数の態様を提供するために、他の機構または機能が使用されてもよい。多くの変更および変形が行われてもよい。
【0255】
本発明の1つまたは複数の態様は、コンピュータ技術と密接に結び付いており、コンピュータ内での処理を容易にし、コンピュータの性能を向上させる。ストレージ・キー変更イベントの検出により、ストレージ・キーを変更する不正確なプログラムまたは破損したストレージ・キーあるいはその両方の検出が可能になり、コンピューティング環境内のメモリおよび処理のセキュリティが向上する。破損したストレージ・キーを特定するために多くの命令を実行する必要なしに、プログラミング・エラーの検出を容易にし、誤ったプログラムを修正することによって、性能も向上する。
【0256】
本発明の1つまたは複数の態様に関連する、コンピューティング環境内の処理を容易にする一実施形態のさらなる詳細について、
図6A~
図6Bを参照して説明する。一例において、プロセッサのハードウェアまたはファームウェアあるいはその両方を使用して、以下に説明する処理を実行する。
【0257】
図6Aを参照すると、一実施形態において、コンピューティング環境のプロセッサ内でストレージ・キー変更イベントが発生したかどうかに関して判定が行われる(600)。判定するステップは、ストレージ・キーの1つまたは複数の選択されたフィールドが更新されたかどうかを確認することを含む(602)。ストレージ・キーは、メモリ・ブロックに関連付けられ、メモリ・ブロックへのアクセスを制御する(604)。一例において、ストレージ・キー変更イベントは、ストレージ・キーの1つまたは複数の選択されたフィールドが更新されたと確認が示したことに基づいて発生する(606)。ストレージ・キー変更イベントが発生したとの判定に基づいて、ストレージ・キー変更イベントの通知が提供される(608)。
【0258】
一例として、通知を提供するステップは、ストレージ・キー変更イベントが発生したとの判定に基づいて、ストレージ・キー変更イベントの通知を割り込みによって提供することを含む(609)。
【0259】
一例において、確認することは、ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新されたかどうかを確認することを含む(610)。ストレージ・キー変更イベントは、ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新されたと確認が示したことに基づいて発生する(612)。
【0260】
一例において、ストレージ・キー変更イベントが発生したかどうかを判定するステップは、指定されたストレージ領域内にメモリ・ブロックがあるかどうかを判定することをさらに含む(614)。ストレージ・キー変更イベントは、ストレージ・キーの1つまたは複数の選択されたフィールドが更新され、かつ指定されたストレージ領域内にメモリ・ブロックがあると確認が示したことに基づいて発生する(616)。
【0261】
さらに、一例において、
図6Bを参照すると、確認することは、ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新されたかどうかを確認することを含み(620)、ストレージ・キー変更イベントは、ストレージ・キーの1つまたは複数の選択されたフィールドがアクセス例外なしに更新され、かつ指定されたストレージ領域内にメモリ・ブロックがあると確認が示したことに基づいて発生する(622)。
【0262】
一例として、指定されたストレージ領域は、第1の位置で指定されたメモリの開始アドレスおよび第2の位置で指定されたメモリの終了アドレスによって定義される(624)。第1の位置は、例えば、選択された制御レジスタであり、第2の位置は、別の選択された制御レジスタである(626)。
【0263】
一例において、終了アドレスは、開始アドレスにラップ・アラウンドし、開始アドレスおよび終了アドレスの選択された数の下位ビットは、2つ以上のメモリ・ブロックを含むように、指定されたストレージ領域の定義に使用される(628)。さらに、一例において、指定されたストレージ領域内にメモリ・ブロックがあるかどうかを判定することは、指定されたストレージ領域内にメモリ・ブロックのメモリの1つまたは複数のユニットがあるかどうかを判定することを含む(630)。
【0264】
例として、1つまたは複数の選択されたフィールドは、ストレージ・キーのアクセス制御フィールド(632)またはストレージ・キーのフェッチ保護フィールド(634)あるいはその両方を含む。
【0265】
他の変形形態および実施形態が可能である。
【0266】
本発明の態様は、多くのタイプのコンピューティング環境によって使用されてもよい。本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態について、
図7Aを参照して説明する。この例では、コンピューティング環境10は、1つまたは複数のバス18または他の接続あるいはその両方を介して互いに結合された、例えば、ネイティブ中央処理装置(CPU)12と、メモリ14と、1つまたは複数の入出力デバイスまたはインターフェースあるいはその両方16とを含む。例として、コンピューティング環境10には、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるPowerPC(R)プロセッサ、カリフォルニア州パロ・アルトのヒューレット・パッカードによって提供されるIntel Itanium IIプロセッサを搭載したHP Superdome、またはインターナショナル・ビジネス・マシーンズ・コーポレーション、ヒューレット・パッカード、インテル、オラクルなどによって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せが含まれ得る。IBM、z/Architecture、IBM Z、z/OS、PR/SM、およびPowerPCは、少なくとも1つの管轄区域におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。IntelおよびItaniumは、インテルまたは米国および他国におけるその子会社の商標または登録商標である。
【0267】
ネイティブ中央処理装置12は、1つまたは複数の汎用レジスタ、または環境内での処理中に使用される1つまたは複数の専用レジスタ、あるいはその両方などの1つまたは複数のネイティブ・レジスタ20を含む。これらのレジスタは、特定の時点での環境の状態を表す情報を含む。
【0268】
さらに、ネイティブ中央処理装置12は、メモリ14に記憶されている命令およびコードを実行する。特定の一例において、中央処理装置は、メモリ14に記憶されたエミュレータ・コード22を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータ・コード22により、z/Architecture(R)ハードウェア・アーキテクチャ以外のアーキテクチャに基づく、PowerPC(R)プロセッサ、HP Superdomeサーバなどのマシンが、z/Architecture(R)ハードウェア・アーキテクチャをエミュレートし、z/Architecture(R)ハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行することが可能になる。
【0269】
エミュレータ・コード22に関するさらなる詳細について、
図7Bを参照して説明する。メモリ14に記憶されたゲスト命令30は、ネイティブCPU12のアーキテクチャ以外のアーキテクチャで実行されるように開発された(例えば、機械命令に相関する)ソフトウェア命令を含む。例えば、ゲスト命令30は、z/Architecture(R)ハードウェア・アーキテクチャに基づくプロセッサ上で実行するように設計されている場合があるが、代わりに、例えば、Intel Itanium IIプロセッサであり得るネイティブCPU12上でエミュレートされている。一例において、エミュレータ・コード22は、メモリ14から1つまたは複数のゲスト命令30を取得するため、また任意選択で、取得された命令にローカル・バッファリングを提供するための命令フェッチ・ルーチン32を含む。エミュレータ・コード22はまた、取得されたゲスト命令のタイプを特定し、ゲスト命令を1つまたは複数の対応するネイティブ命令36に変換するための命令変換ルーチン34も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別し、その機能を実行するためのネイティブ命令を選択することを含む。
【0270】
さらに、エミュレータ・コード22は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン40を含む。エミュレーション制御ルーチン40は、ネイティブCPU12に、1つまたは複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、その実行の終了時に、制御を命令フェッチ・ルーチンに戻して、次のゲスト命令またはゲスト命令のグループの取得をエミュレートさせてもよい。ネイティブ命令36の実行は、メモリ14からレジスタにデータをロードすること、レジスタからメモリにデータを戻して記憶すること、または、変換ルーチンによって決定された、あるタイプの算術演算もしくは論理演算を実行することを含んでもよい。
【0271】
各ルーチンは、例えば、ソフトウェアにおいて実装され、ソフトウェアは、メモリに記憶され、ネイティブの中央処理装置12によって実行される。他の例において、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはそのいくつかの組合せにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ20を使用して、またはメモリ14内の位置を使用することによってエミュレートされてもよい。実施形態において、ゲスト命令30、ネイティブ命令36、およびエミュレータ・コード22は、同じメモリに存在しても、異なるメモリ・デバイス間で分配されてもよい。
【0272】
上記のコンピューティング環境は、使用され得るコンピューティング環境の単なる例である。非区画環境、区画環境、またはエミュレートされた環境、あるいはその組合せを含むがこれらに限定されない他の環境が使用されてもよく、実施形態は、いずれか1つの環境に限定されない。
【0273】
それぞれのコンピューティング環境は、本発明の1つまたは複数の態様を含むように構成することができる。例えば、それぞれは、本発明の1つまたは複数の態様により、ストレージ・キー変更検出処理を実行するように構成されてもよい。
【0274】
1つまたは複数の態様は、クラウド・コンピューティングに関連し得る。
【0275】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている、または後に開発される他の任意のタイプのコンピューティング環境と組み合わせて実装することが可能である。
【0276】
クラウド・コンピューティングは、最小限の管理労力、またはサービス・プロバイダとの最小限の対話で迅速にプロビジョニングおよび解放され得る構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの簡便かつオンデマンドのネットワーク・アクセスを可能にするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
【0277】
特徴は、以下の通りである。
【0278】
オンデマンド・セルフサービス:クラウド・コンシューマは、サービス・プロバイダとの間で人間の対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
【0279】
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
【0280】
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数のコンシューマにサービス提供するようにプール化され、異なる物理リソースおよび仮想リソースが、要求に応じて動的に割当ておよび再割当てされる。コンシューマは一般に、提供されるリソースの正確な位置に対して制御も知識も有していないが、より高い抽象化レベルでは位置(例えば、国、州、またはデータセンタ)を特定し得るという点で、位置の独立性があるといえる。
【0281】
迅速な柔軟性:機能を、迅速かつ柔軟に、場合によっては自動的にプロビジョニングして素早くスケール・アウトし、迅速に解放して素早くスケール・インすることができる。コンシューマにとっては、プロビジョニングに利用可能な機能は、しばしば無制限であるように見え、いつでも任意の数量で購入することができる。
【0282】
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した一定の抽象化レベルでの計量機能を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用状況を監視、制御、および報告することができ、利用するサービスのプロバイダとコンシューマの両方に透明性を提供する。
【0283】
サービス・モデルは、以下の通りである。
【0284】
ソフトウェア・アズ・ア・サービス(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。限定されたユーザ固有のアプリケーション構成設定を想定される例外として、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理も制御もしない。
【0285】
プラットフォーム・アズ・ア・サービス(PaaS):プロバイダによってサポートされるプログラミング言語およびツールを使用して生成されたコンシューマが生成または取得したアプリケーションをクラウド・インフラストラクチャ上に展開するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージなどの基礎となるクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーション、および場合によってはアプリケーションをホストする環境構成を制御する。
【0286】
インフラストラクチャ・アズ・ア・サービス(IaaS):オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアをコンシューマが展開および動作させることができる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングするために、コンシューマに提供される機能である。コンシューマは、基礎となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては選択されたネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御する。
【0287】
展開モデルは、以下の通りである。
【0288】
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運用される。このクラウド・インフラストラクチャは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスで存在してもよい。
【0289】
コミュニティ・クラウド:クラウド・インフラストラクチャは複数の組織で共有され、関心事項(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス上の考慮事項)を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスで存在してもよい。
【0290】
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大規模な業界グループにとって利用可能であり、クラウド・サービスを販売する組織によって所有される。
【0291】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーションの移植性(例えば、クラウド間の負荷分散のためのクラウド・バースティング)を可能にする標準化された技術または専用の技術によって結び付けられる2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成である。
【0292】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に焦点を置くことを重視したサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0293】
次に
図8を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示のように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA:personal digital assistant)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはその組合せなどのクラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信することができる1つまたは複数のクラウド・コンピューティング・ノード52を含む。ノード52は、互いに通信してもよい。ノード52は、本明細書で上述したようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウドなどの1つまたは複数のネットワーク内で物理的にまたは仮想的にグループ化されてもよい(図示せず)。これにより、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして提供することが可能になる。
図8に示すコンピューティング・デバイス54A~54Nのタイプは、例示のみを意図しており、コンピューティング・ノード52およびクラウド・コンピューティング環境50は、(例えば、ウェブ・ブラウザを使用して)任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続あるいはその両方を介して任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
【0294】
次に
図9を参照すると、クラウド・コンピューティング環境50(
図8)によって提供される機能抽象化層のセットが示されている。
図9に示すコンポーネント、層、および機能は、例示のみを意図しており、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示のように、以下の層および対応する機能が提供される。
【0295】
ハードウェアおよびソフトウェア層60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、記憶デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66が含まれる。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0296】
仮想化層70は、抽象化層を提供し、この層から仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供され得る。
【0297】
一例において、管理層80は、以下に記載の機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計量および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド・コンシューマおよびタスクのための本人確認、ならびにデータおよび他のリソースのための保護を提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA)の計画および履行85は、SLAに従って将来において要求されることが予想されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【0298】
ワークロード層90は、クラウド・コンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、ならびにストレージ・キー変更検出処理96が含まれる。
【0299】
本発明の態様は、任意の可能な技術的詳細の統合レベルでのシステム、方法、またはコンピュータ・プログラム製品あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含んでもよい。
【0300】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。本明細書で使用するコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、または電線を介して送信される電気信号などの、一過性の信号自体であると解釈されるべきではない。
【0301】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含んでもよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体での記憶のために転送する。
【0302】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラム言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がコンピュータ上もしくはサーバ上で実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して接続されてもよい。いくつかの実施形態では、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路をパーソナライズすることによって、電子回路がコンピュータ可読プログラム命令を実行してもよい。
【0303】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【0304】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってもよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものであってもよい。
【0305】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0306】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことがある。いくつかの代替の実装形態では、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、実際には、関与する機能に応じて、実質的に同時に実行されてもよく、またはそれらのブロックは、場合によっては逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【0307】
上記に加えて、顧客環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供、提示、展開、管理、サービスなどされてもよい。例えば、サービス・プロバイダは、1人または複数人の顧客のために1つまたは複数の態様を実行するコンピュータコードまたはコンピュータ・インフラストラクチャあるいはその両方を作成、維持、サポートなどすることができる。その見返りとして、サービス・プロバイダは、例としてサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってもよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってもよい。
【0308】
一態様では、1つまたは複数の実施形態を実行するために、アプリケーションが展開されてもよい。一例として、アプリケーションの展開は、1つまたは複数の実施形態を実行するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【0309】
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャが展開されてもよく、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行することができる。
【0310】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてもよい。コンピュータ・システムは、コンピュータ可読媒体を含み、コンピュータ媒体は、1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行することができる。
【0311】
上記で様々な実施形態について説明したが、これらは単なる例である。例えば、1つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境を使用され得る。さらに、ストレージ・キーの変更を検出するために、様々な機構が使用されてもよい。多くの変形形態が可能である。
【0312】
さらに、他のタイプのコンピューティング環境も、恩恵を受けることができ、使用され得る。一例として、プログラム・コードを記憶または実行あるいはその両方を行うのに適した、システムバスを介してメモリ素子に直接的または間接的に結合された少なくとも2つのプロセッサを含む、データ処理システムが使用可能である。メモリ素子には、例えば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、バルク・ストレージ、および実行中にバルク・ストレージからコードが取得されなければならない回数を低減するために少なくともいくつかのプログラム・コードを一時的に記憶するキャッシュ・メモリが含まれる。
【0313】
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合され得る。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたは記憶デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、利用可能なネットワーク・アダプタのうちの、ごくわずかのタイプにすぎない。
【0314】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、限定することを意図するものではない。本明細書で使用される場合、単数形「ある(a)」、「1つの(an)」および「その(the)」は、文脈上特に明記されていない限り、複数形も含むことを意図している。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された特徴、整数、ステップ、動作、要素、またはコンポーネントあるいはその組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外するものではないことが、さらに理解されよう。
【0315】
添付の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および均等物がある場合それらは、具体的に特許請求されるときに、他の特許請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であること、または開示された形態に限定されることを意図するものではない。多くの変更形態および変形形態があることは、当業者には明らかであろう。実施形態は、様々な態様および実際の適用を最も適切に説明するため、また企図されている特定の使用に適した様々な変更を加えた様々な実施形態を当業者が理解できるようにするために選択および説明されたものである。