IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7391979キー機能制御に基づくデータ移動および記憶キー設定
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-27
(45)【発行日】2023-12-05
(54)【発明の名称】キー機能制御に基づくデータ移動および記憶キー設定
(51)【国際特許分類】
   G06F 9/315 20180101AFI20231128BHJP
   G06F 9/345 20180101ALI20231128BHJP
【FI】
G06F9/315 M
G06F9/345 A
【請求項の数】 11
(21)【出願番号】P 2021544475
(86)(22)【出願日】2020-02-14
(65)【公表番号】
(43)【公表日】2022-04-05
(86)【国際出願番号】 IB2020051253
(87)【国際公開番号】W WO2020174307
(87)【国際公開日】2020-09-03
【審査請求日】2022-07-25
(31)【優先権主張番号】16/283,976
(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)【発明者】
【氏名】ツォルツァトス、エルピーダ
【審査官】坂東 博司
(56)【参考文献】
【文献】特表2004-528659(JP,A)
【文献】特開平03-137747(JP,A)
【文献】米国特許出願公開第2006/0036824(US,A1)
【文献】米国特許出願公開第2003/0079100(US,A1)
【文献】米国特許第05237668(US,A)
【文献】米国特許出願公開第2013/0339709(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/315
G06F 9/345
(57)【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にする、コンピュータで実施される方法であって、
複数の機能を遂行する単一のアーキテクト命令を取得するステップと、
前記単一のアーキテクト命令を実行するステップとを含み、前記実行するステップが、
前記複数の機能のうちの第1の機能を遂行することを含み、前記第1の機能が、データのブロックを一方の位置から他方の位置へ移動させることを含み、前記実行するステップがさらに、
前記複数の機能のうちの第2の機能を遂行することを含み、前記第2の機能が、第1のオペランドの記憶キーの一方の部分を第2のオペランドの記憶キーの前記一方の部分と対応する部分をコピーすることによって設定すること、および前記第1のオペランドの記憶キーの他方の部分を前記単一のアーキテクト命令と関連付けられたレジスタ内の記憶キーを使用して設定することを含み、前記第1のオペランドの記憶キーが、前記データのブロックと関連付けられ、前記データのブロックへのアクセスを制御し、前記第1の機能および前記第2の機能が、前記単一のアーキテクト命令の一部として遂行される、方法。
【請求項2】
前記第1の機能を前記遂行することと前記第2の機能を前記遂行することが同時に行われる、請求項1に記載の方法。
【請求項3】
前記単一のアーキテクト命令を実行する前記ステップが、前記単一のアーキテクト命令と関連付けられた位置からキー機能制御を取得することを含み、前記キー機能制御は、前記第2の機能が遂行されるべきことを指定する、請求項1に記載の方法。
【請求項4】
前記キー機能制御は、前記第1のオペランドの記憶キーの前記一方の部分が、第2のオペランドの記憶キーのうち前記一方の部分と対応する部分をコピーすることによって設定されるべきことを指定し、また、前記第1のオペランドの記憶キーの前記他方の部分が、前記単一のアーキテクト命令と関連付けられたレジスタ内の記憶キーから設定されるべきことを指定する、請求項3に記載の方法。
【請求項5】
前記単一のアーキテクト命令と関連付けられた前記位置が、前記単一のアーキテクト命令と関連付けられている暗示されたレジスタを含む、請求項3に記載の方法。
【請求項6】
前記第1のオペランドの記憶キーの前記一方の部分が、アクセス制御フィールドおよびフェッチ保護フィールドを含み、前記第1のオペランドの記憶キーの前記他方の部分が、参照フィールドおよび変更フィールドを含む、請求項1に記載の方法。
【請求項7】
前記データのブロックを前記移動させることが、前記他方の位置のデータを前記一方の位置の前記データのブロックに置き換えることを含み、前記他方の位置および前記一方の位置が前記単一のアーキテクト命令によって指定される、請求項1に記載の方法。
【請求項8】
前記他方の位置が、前記単一のアーキテクト命令の一方のレジスタ・フィールドによって示された一方のレジスタによって指定され、前記一方の位置が、前記単一のアーキテクト命令の他方のレジスタ・フィールドによって示された他方のレジスタによって指定される、請求項に記載の方法。
【請求項9】
前記データのブロックがデータのページを含む、請求項1に記載の方法。
【請求項10】
請求項1ないしのいずれかに記載の前記方法のすべての前記ステップを遂行するように適合された手段を備えるシステム。
【請求項11】
コンピュータ・プログラムであって、前記コンピュータ・プログラムがコンピュータ・システム上で実行されるときに、請求項1ないしのいずれかに記載の前記方法のすべての前記ステップを遂行するための命令を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
1つまたは複数の態様は、一般には、コンピューティング環境内の処理を容易にすることに関し、詳細には、データを移動することに関連した処理を容易にすることに関する。
【背景技術】
【0002】
コンピュータ処理では、データがメモリ内の一方の位置(たとえば、ソース・ページ)からメモリ内の他方の位置(たとえば、宛先ページ)へ移動されることが多い。1つまたは複数のアーキテクチャでは、この移動は、アーキテクト命令(architected instruction)を使用して行われる。たとえば、ニューヨーク州アーモンクのIBM社から販売されているz/Architecture(R)ハードウェア・アーキテクチャでは、Move Page命令が、データを一方の位置から他方の位置へ移動させるために使用される。
【0003】
さらに、z/Architecture(R)ハードウェア・アーキテクチャでは、記憶キーが、移動されているデータと関連付けられており、データへのアクセスを制御するために使用される。具体的には、記憶キーが、機器構成内のメモリの各ブロック(たとえば、メモリの各ページ)と関連付けられており、メモリのその対応するブロックへのアクセスを制御するために使用される。たとえば宛先ページに記憶キーを設定するために、Set Storage Key Extended命令が使用される。Move Page命令とSet Storage Key Extended命令は別々の命令であり、それぞれが特権命令であり、ニューヨーク州アーモンクのIBM社から販売されているz/OS(R)オペレーティング・システムなどのオペレーティング・システムによって、別個にディスパッチされる。
【発明の概要】
【0004】
従来技術の欠点が克服されるとともに、さらなる利点が、請求項1に特許請求された方法、ならびに対応するシステムおよびコンピュータ・プログラムを用意することによってもたらされる。
【0005】
複数の機能を遂行する単一のアーキテクト命令を使用することによって、記憶キー設定機能に対する別個のアーキテクト命令が不要になる。したがって、諸機能は非常に速く実行されて、実行時間が低減され、プロセッサまたはシステム全体あるいはその両方の動作が改善され得る。
【0006】
1つの例では、第1の機能を遂行することと第2の機能を遂行することは同時に行われる。
【0007】
さらに、1つの例では、命令を実行することには、命令と関連付けられた位置からキー機能制御を取得することが含まれ、キー機能制御は、第2の機能が遂行されるべきことを指定する。
【0008】
キー機能制御を使用すると、1つの命令で複数の記憶キー設定機能を遂行できるようになって、記憶キーが、単一のアーキテクト命令のキー機能制御に応じて別々に設定されることが可能になる。
【0009】
1つの例では、キー機能制御は、記憶キーの一方の部分が、選択されたオペランドの一方の選択されたキーの対応する部分をコピーすることによって設定されるべきことを指定し、また、記憶キーの他方の部分が、命令と関連付けられた位置に供給された他方の選択されたキーの対応する部分から設定されるべきことを指定する。一例として、選択されたオペランドの一方の選択されたキーは、第2のオペランドの記憶キーであり、命令と関連付けられた位置に供給された他方の選択されたキーは、命令と関連付けられたレジスタ内の記憶キーである。命令と関連付けられた位置は、たとえば、命令と関連付けられている暗示されたレジスタを含む。
【0010】
一例として、記憶キーの一方の部分は、アクセス制御フィールドおよびフェッチ保護フィールドを含み、記憶キーの他方の部分は、参照フィールドおよび変更フィールドを含む。
【0011】
1つの例では、データのブロックを移動させることは、他方の位置のデータを一方の位置のデータのブロックに置き換えることを含み、他方の位置および一方の位置は命令によって指定される。他方の位置は、たとえば、命令の一方のレジスタ・フィールドによって示された一方のレジスタによって指定され、一方の位置は、命令の他方のレジスタ・フィールドによって示された他方のレジスタによって指定される。
【0012】
さらに、1つの例として、データのブロックはデータのページを含む。
【0013】
本明細書では、1つまたは複数の態様に関連する、コンピュータで実施される方法およびシステムについても説明され、特許請求される。本明細書ではさらに、1つまたは複数の態様に関連するサービスについても説明され、特許請求され得る。
【0014】
さらなる特徴および利点が、本明細書に記載の技術によって実現される。他の実施形態および態様が本明細書では詳細に説明され、これらは、特許請求された態様の一部と考えられる。
【0015】
1つまたは複数の態様が、本明細書の結末における特許請求の範囲に例として特に指摘され、明確に特許請求されている。上記、ならびに1つまたは複数の態様の目的、特徴および利点は、添付の図面と併せて、以下の「発明を実施するための形態」から明らかである。
【図面の簡単な説明】
【0016】
図1A】本発明の1つまたは複数の態様を組み込み使用するためのコンピューティング環境の1つの例を示す図である。
図1B】本発明の1つまたは複数の態様による、図1Aのプロセッサについてのさらなる詳細を示す図である。
図2】本発明の1つまたは複数の態様を組み込み使用するためのコンピューティング環境の別の例を示す図である。
図3A】本発明の一態様による、データを移動させ記憶キーを設定するために使用されるMovePage命令の1つのフォーマットを示す図である。
図3B】本発明の一態様による、Move Page命令によって指定されるレジスタRのコンテンツの1つの例を示す図である。
図3C】本発明の一態様による、Move Page命令によって指定される他方のレジスタRのコンテンツの1つの例を示す図である。
図3D】本発明の一態様による、命令によって使用される、暗示されたレジスタ(implied register)である汎用レジスタ0のフィールドの1つの例を示す図である。
図4】本発明の一態様による、Move Page命令の実行と関連付けられた処理の1つの例を示す図である。
図5A】本発明の一態様による、コンピューティング環境内の処理を容易にする1つの例を示す図である。
図5B】本発明の一態様による、コンピューティング環境内の処理を容易にする1つの例を示す図である。
図6A】本発明の1つまたは複数の態様を組み込み使用するためのコンピューティング環境の別の例を示す図である。
図6B図6Aのメモリについての別の詳細を示す図である。
図7】クラウド・コンピューティング環境の1つの実施形態を示す図である。
図8】抽象モデル層の1つの例を示す図である。
【発明を実施するための形態】
【0017】
本発明の一態様によれば、1つの機能が、コンピューティング環境内の処理を容易にするために提供される。1つの例として、単一の命令(たとえば、ハードウェア/ソフトウェアのインターフェースでの単一のアーキテクト機械命令)が、データを移動させること、およびデータと関連付けられた記憶キーを設定することなどの、複数の機能または動作を単一の命令の一部として行うために提供される。この命令は、汎用プロセッサ命令セット・アーキテクチャ(ISA)の一部であり、汎用プロセッサなどのプロセッサのプログラム(たとえば、オペレーティング・システム)によってディスパッチされる。
【0018】
1つの例では、Move Page命令と呼ばれる命令が、データのブロック(たとえば、データのページ)をソース位置(たとえば、ソース・ページ)から宛先位置(たとえば、宛先ページ)まで移動させるために、および記憶キーを宛先位置に設定するために使用される。一例として、データのブロックはデータのページであり、たとえば4Kバイトのデータである。別の例では、データのブロックはデータのページ以外であることがあり、またはデータのページは4Kバイト以外のデータであることがあり、あるいはその両方であることがある。
【0019】
1つの例では、複数の機能が、動作を改善するために同時に実行されるが、別の例では、複数の機能が単一の命令によって実行されるとはいえ、必ずしも同時ではない。多くの変形形態があり得る。
【0020】
本発明の1つまたは複数の態様を組み込み使用するためのコンピューティング環境の1つの実施形態について図1Aを参照して説明する。コンピューティング環境100は、たとえば1つもしくは複数のバス108または他の接続あるいはその両方を介して互いに結合された、たとえば、プロセッサ102(たとえば、中央処理装置)と、メモリ104(たとえば、主メモリ、別名はシステム・メモリ、主記憶装置、中央記憶装置、記憶装置)と、1つもしくは複数の入出力(I/O)デバイスまたはインターフェースあるいはその両方106とを含む。
【0021】
1つの例では、プロセッサ102は、z/Architecture(R)ハードウェア・アーキテクチャを基礎としており、IBM Z(R)サーバなどのサーバの一部であり、このサーバもまた、IBM社から販売されており、z/Architecture(R)ハードウェア・アーキテクチャを実装している。z/Architecture(R)ハードウェア・アーキテクチャの1つの実施形態が、IBM Publication No. SA22-7832-11、第12版、2017年9月の「z/Architecture Principles of Operation」という名称の出版物に記載されている。しかし、z/Architecture(R)ハードウェア・アーキテクチャは1つの例示的なアーキテクチャにすぎず、他のアーキテクチャまたは他のタイプのコンピューティング環境あるいはその両方が、本発明の1つまたは複数の態様を含むこと、または使用すること、あるいはその両方が可能である。1つの例では、プロセッサは、z/OS(R)オペレーティング・システムなどのオペレーティング・システムを実行する。
【0022】
プロセッサ102は、命令を実行するために使用される複数の機能構成要素を含む。図1Bに示されているように、これらの機能構成要素には、たとえば、実行されるべき命令をフェッチするための命令フェッチ構成要素120と、フェッチされた命令をデコードするための、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット122と、デコードされた命令を実行するための命令実行構成要素124と、必要ならば、命令実行用のメモリにアクセスするためのメモリ・アクセス構成要素126と、実行された命令の結果を得るためのライト・バック構成要素130とが含まれる。これらの構成要素の1つまたは複数は、本発明の1つまたは複数の態様によれば、本明細書に記載のように、データを移動させ、その移動(または、本発明の1つまたは複数の態様を使用できる他の処理)に関連付けられた記憶キーを設定する際に使用される1つまたは複数の他の構成要素の少なくとも一部を含むこと、またはその構成要素にアクセスすることができる。1つまたは複数の他の構成要素は、たとえば、データ移動/記憶キー設定構成要素(または他の構成要素)136を含む。
【0023】
1つの例では、メモリ・アクセス構成要素126は、1つまたは複数のメモリのブロックへのアクセスを要求している命令が、要求されているアクセスのタイプに対して許可されているのかどうかを決定するために、1つまたは複数の記憶キー128を使用する。
【0024】
本発明の1つまたは複数の態様を組み込み使用するためのコンピューティング環境の別の例について、図2を参照して説明する。1つの例では、コンピューティング環境は、z/Architecture(R)ハードウェア・アーキテクチャを基礎としているが、コンピューティング環境は、IBM社またはその他から販売されている別のアーキテクチャを基礎としてもよい。
【0025】
図2を参照すると、1つの例では、コンピューティング環境は中央電子処理装置(CEC)200を含む。CEC200は、1つまたは複数のプロセッサ(別名は中央処理装置(CPU))204および入出力サブシステム206に結合された、たとえばメモリ202(別名はシステム・メモリ、主メモリ、主記憶装置、中央記憶装置、記憶装置)などの複数の構成要素を含む。
【0026】
メモリ202は、たとえば、1つまたは複数の論理パーティション208、論理パーティションを管理するハイパーバイザ210、プロセッサ・ファームウェア212、および記憶キー214(本明細書で説明)を含む。ハイパーバイザ210の1つの例は、ニューヨーク州アーモンクのIBM社から販売されているプロセッサ・リソース/システム管理機構(PR/SM(商標))ハイパーバイザである。本明細書では、ファームウェアとは、たとえばプロセッサのマイクロコードを含むものである。ファームウェアは、たとえば、高レベル機械コードの実施に使用される、ハードウェアレベル命令またはデータ構造あるいはその両方を含む。1つの実施形態では、ファームウェアは、たとえば、通常はマイクロコードとして引き渡される、所有権を主張できるコードを含み、このコードは、基礎をなすハードウェアに専用の信頼できるソフトウェアまたはマイクロコードを含み、システム・ハードウェアへのオペレーティング・システム・アクセスを制御する。
【0027】
各論理パーティション208は、別々のシステムとして機能することができる。すなわち、各論理パーティションは別個にリセットすること、z/OS(R)オペレーティング・システムなどのゲスト・オペレーティング・システム220、または別のオペレーティング・システムを実行すること、および別のプログラム222を用いて動作することができる。論理パーティション内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステムにアクセスできるように見えるが、実際には、その一部分だけが利用可能である。
【0028】
メモリ202は、プロセッサ(たとえば、CPU)204に結合され、このプロセッサは、論理パーティションに割り当てることができる物理的なプロセッサ・リソースである。たとえば、論理パーティション208は、1つまたは複数の論理プロセッサを含み、これらのそれぞれは、論理パーティションに動的に割り当てることができる物理的なプロセッサ・リソース204の全部または共有部分を表す。
【0029】
さらに、メモリ202はI/Oサブシステム206に結合される。I/Oサブシステム206は、中央電子処理装置の一部とすることも、それとは別にすることもできる。I/Oサブシステム206は、主記憶装置202と、中央電子処理装置に結合された入出力制御ユニット230および入出力(I/O)デバイス240との間の情報の流れを指示する。
【0030】
多くのタイプのI/Oデバイスが使用され得る。1つの特別のタイプはデータ記憶デバイス250である。データ記憶デバイス250は、1つもしくは複数のプログラム252、1つもしくは複数のコンピュータ可読プログラム命令254、またはデータあるいはその組み合わせなどを記憶することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を遂行するように構成することができる。
【0031】
1つの例として、各プロセッサ204は、データを移動させること、および記憶キーを設定すること(または本発明の1つもしくは複数の態様の他の動作あるいはその両方)を含む、複数の機能を遂行する際に使用されるデータ移動/記憶キー設定構成要素(または他の構成要素)260を含むか、またはそれにアクセスできるか、あるいはその両方である。様々な例では、これらの機能を遂行する1つまたは複数の構成要素があり得る。多くの変形形態があり得る。
【0032】
中央電子処理装置200は、取り外し可能/固定型、揮発性/不揮発性のコンピュータ・システム記憶媒体を含み得る。たとえば、中央電子処理装置200は、固定型、不揮発性の磁気媒体(通常は「ハード・ドライブ」と呼ばれる)、取り外し可能な不揮発性磁気ディスク(たとえば、「フロッピー(R)・ディスク」)との間で読み出しおよび書き込みをするための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROMまたは他の光学媒体などの、取り外し可能な不揮発性光学ディスクの間で読み出しまたは書き込みをするための光ディスク・ドライブ、あるいはその組み合わせを含むこと、またはこれらに結合されること、あるいはその両方が可能である。他のハードウェアまたはソフトウェアの、あるいはその両方の構成要素が、中央電子処理装置200と組み合わせて使用できることを理解されたい。例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル記憶システムなどが、これらだけには限らないが挙げられる。
【0033】
さらに、中央電子処理装置200は、他の多数の汎用または専用のコンピューティング・システム環境または構成によって動作可能であり得る。中央電子処理装置200と一緒に使用するのに適し得る、よく知られているコンピューティング・システム、環境、または構成あるいはその組み合わせの例としては、パーソナル・コンピュータ(PC)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能消費者電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムおよびデバイスのいずれかを含む分散クラウド・コンピューティング環境などが、これらだけには限らないが挙げられる。
【0034】
コンピューティング環境の様々な例が本明細書に記載されているが、本発明の1つまたは複数の態様が、多くのタイプの環境と共に使用され得る。本明細書に提示されたコンピューティング環境は単なる例である。
【0035】
本発明の一態様によれば、コンピューティング環境100または中央電子処理装置200などのコンピューティング環境では、単一の命令をディスパッチすることの一部としてデータのブロックを移動させるための、および記憶キーを設定するための機構を実現するページ移動およびキー設定機能を使用する。1つの例では、ページ移動およびキー設定機能は、機能インジケータがたとえば1に設定されると、システムにインストールされる。z/Architecture(R)ハードウェア・アーキテクチャの1つの特別の例として、機能がz/Architecture(R)アーキテクチャ・モードでインストールされると、機能ビット149がたとえば1に設定される。この機能は、たとえばMove Page命令を含み、その一実施形態について以下で説明する。
【0036】
データのブロック(たとえば、データのページ)を移動させること、および記憶キーを設定することを含む複数の機能を遂行するMove Page命令の1つの実施形態について、図3A~3Dを参照して説明する。この命令は、1つの例では汎用プロセッサ(たとえば、プロセッサ102または204)を使用して実行される。本明細書の説明では、特定の位置、特定のフィールドまたはフィールドの特定のサイズあるいはその組み合わせが示される(たとえば、特定のバイトまたはビットあるいはその両方)。しかし、別の位置、フィールドまたはサイズあるいはその組み合わせが提示されることもある。さらに、特定の値、たとえば1またはゼロにビットを設定することが指定されるが、これは一例にすぎない。そのビットは、別の例では反対の値または別の値などの、異なる値に設定されることがある。多くの変形形態があり得る。
【0037】
図3Aを参照すると、1つの例では、Move Page命令300のフォーマットは、レジスタおよびレジスタ動作を拡張オペレーション・コード(オペコード)フィールドによって表すRREフォーマットである。一例として、この命令は、ページ移動動作を示すオペレーション・コードを有するオペレーション・コード・フィールド302(たとえば、ビット0~15)と、コンテンツがたとえば記憶装置の第1のオペランドの最左端バイトを含む汎用レジスタRを指定する、第1のレジスタ・フィールド(R)304(たとえば、ビット24~27)と、コンテンツがたとえば記憶装置の第2のオペランドの最左端バイトを含む汎用レジスタRを指定する、第2のレジスタ・フィールド(R)306(たとえば、ビット28~31)とを含む。1つの例では、命令のビット16~23は予約されており、ゼロを含まなければならず、そうでなければプログラムは将来、コンパチブルに動作することができない。本明細書では、プログラムとは命令を発行するものである。このプログラムは、たとえば、オペレーティング・システムなどの特権プログラムである。
【0038】
汎用レジスタRおよび汎用レジスタRに関するさらなる詳細について、図3B~3Cを参照して説明する。たとえば、図3Bに示されているように、汎用レジスタR310は、第1のオペランドの最左端バイトの位置、すなわち第1のオペランド・アドレス312を含む。さらに、図3Cを参照すると、汎用レジスタR320は、第2のオペランドの最左端バイトの位置、すなわち第2のオペランド・アドレス322を含む。
【0039】
汎用レジスタRおよびRのアドレスの処理は、アドレス指定モードによって決まる。たとえば、24ビット・アドレス指定モードでは、12個の最右端のゼロが追加されている汎用レジスタのビット位置40~51のコンテンツがアドレスであり、レジスタのビット0~39および52~63は無視される。31ビット・アドレス指定モードでは、12個の最右端のゼロが追加されている汎用レジスタのビット位置33~51のコンテンツがアドレスであり、レジスタのビット0~32および52~63は無視される。64ビット・アドレス指定モードでは、12個の最右端のゼロが追加されている汎用レジスタのビット位置0~51のコンテンツがアドレスであり、レジスタのビット52~63は無視される。
【0040】
汎用レジスタRおよびRに加えて、命令の実行には、1つまたは複数の暗示された汎用レジスタ(すなわち、命令によって明示的に指定されていないレジスタ)を使用することが含まれる。たとえば、汎用レジスタ0は命令の実行の際に使用され、1つの例では、命令の動作に影響を及ぼす様々な制御を含む。
【0041】
一例として、図3Dを参照すると、汎用レジスタ0(330)は、たとえば以下のような複数のフィールドを含む。
【0042】
キー機能制御332。1つの例では、本発明の一態様によれば、汎用レジスタ0のビット51~53は、ビット56~62の供給された記憶キーがどのように使用または設定されるかを決定するために使用されるキー機能制御(KFC)を含む。例示的な制御コードを以下に示す。
【0043】
KFC 意味
【0044】
0 PSW(プログラム・ステータス・ワード)キーは、両方のオペランドにアクセスするために使用される。参照(R)ビットおよび変更(C)ビットは、オペランド1ブロックの記憶キーに設定される。
【0045】
1 PSWキーは、第1のオペランドへの記憶アクセスのために使用され、供給されたACCキー(たとえば、汎用レジスタ0のビット56~59)は、第2のオペランドへのフェッチ・アクセスのために使用される。参照(R)ビットおよび変更(C)ビットが、オペランド1ブロックの記憶キーに設定される。
【0046】
2 供給されたACCキー(たとえば、汎用レジスタ0のビット56~59)は、第1のオペランドへの記憶アクセスのために使用され、PSWキーは、第2のオペランドへのフェッチ・アクセスのために使用される。参照(R)ビットおよび変更(C)ビットが、オペランド1ブロックの記憶キーに設定される。
【0047】
3 予約済み
【0048】
4 キー制御保護は第1のオペランドに適用されない。PSWキーが第2のオペランドへのフェッチ・アクセスのために使用される。第1のオペランドの4Kバイト・ブロックの記憶キーが、汎用レジスタ0のビット56~62に供給されたフル・キーに設定される。
【0049】
5 キー制御保護は第1のオペランドに適用されない。PSWキーは、第2のオペランドへのフェッチ・アクセスに使用される。第1のオペランドの4Kバイト・ブロックの記憶キーは、以下のように設定される。すなわち、アクセス制御ビット(ACC)およびフェッチ保護ビット(F)は、第2のオペランドの記憶キーからコピーされ、参照ビット(R)および変更ビット(C)は、汎用レジスタ0のビット61~62に供給された値を使用する。
【0050】
6~7 予約済み
【0051】
1つの例では、ページ移動およびキー設定機能はインストールされず、4および5のKFC値もまた予約される。予約値が指定されている場合、指定例外が認識される。
【0052】
宛先参照意図インジケータ334。1つの例では、汎用レジスタ0のビット54は宛先参照意図ビットである。
【0053】
条件コード・オプション・インジケータ336。1つの例では、ビット55は条件コード・オプション・ビットである。
【0054】
記憶キー338。1つの例では、汎用レジスタ0のビット56~62は記憶キーを含む。記憶キーは、たとえば、構成内で利用可能な記憶装置の各ブロック(たとえば、各4Kバイト・ブロック)と関連付けられている。記憶キーは、以下のフィールドを含む。
【0055】
アクセス制御(ACC)340。汎用レジスタ0の記憶キーのビット56~59は、アクセス制御ビットである。参照がキー制御保護されている場合、4つのアクセス制御ビットのビット0~3は、情報が記憶されるときに、また、フェッチすることに対して保護されている位置から情報がフェッチされるときに、4ビットアクセスキーと突き合わされる。
【0056】
フェッチ保護(F)342。汎用レジスタ0の記憶キーのビット60は、フェッチ保護ビットである。参照がキー制御保護されている場合、フェッチ保護ビットは、キー制御保護がフェッチタイプ参照に適用されるかどうかを制御する。すなわち、ゼロは、記憶タイプ参照だけが監視されること、および任意のアクセス・キーとフェッチすることが許容されることを示し、1は、キー制御保護が、フェッチすることにも記憶することにも適用されることを示す。命令をフェッチすることとオペランドをフェッチすることは、区別されない。
【0057】
参照(R)344。汎用レジスタ0の記憶キーのビット61は、参照ビットである。参照ビットは通常、対応する記憶ブロック内の1つの位置が情報を記憶またはフェッチするために参照されるたびに、たとえば1に設定される。
【0058】
変更(C)346。汎用レジスタ0の記憶キーのビット62は、変更ビットである。変更ビットは、情報が、対応する記憶ブロック内の1つの位置に記憶されるたびに1に設定される。
【0059】
1つの例では、記憶キーは、アドレス指定可能な記憶装置の一部ではない。
【0060】
汎用レジスタ0のビット48~50は、1つの例ではゼロになり、そうでなければ指定例外が認識される。汎用レジスタ0のビット0~47および63は無視される。ページ移動およびキー設定機能がインストールされていない場合、ビット60~62もまた無視される。1つの例では、ビット60、61および62は、4または5のKFC値が使用されていない限り、意味がない。
【0061】
1つの例では、Move Page命令の実行の際に、第1のオペランドは第2のオペランドに置き換えられ、任意選択で、記憶キーは第1のオペランドの4Kバイトのブロックに設定される。第1と第2のオペランドの両方が、たとえば、4Kバイト境界の4Kバイトである。結果は条件コードで示される。第1のオペランド位置または第2のオペランド位置への、しかし両方ではないアクセスは、汎用レジスタ0で指定されたキー(たとえば、記憶キー338)を使用することによって遂行され、そうでなければ、1つのオペランド位置へのアクセスは、プログラム・ステータス・ワード(PSW)キーを使用することによって遂行することができる。
【0062】
1つの例では、データのブロック(たとえば、4Kバイト)が移動されたとき、条件コード0が設定される。
【0063】
ページ変換例外条件が存在するとき、この例外は、条件コード・オプション・インジケータ、たとえば汎用レジスタ0のビット55、が1である場合には認識されず、その代わりに、条件コード1または2が設定される。条件コード1は、たとえば、ページ変換例外条件が第1のオペランドに対して存在し、第2のオペランドに対しては存在しない場合に設定される。条件コード2は、たとえば、ページ変換例外条件が第2のオペランドに対して存在する場合に、条件が第1のオペランドに対して存在するかどうかにかかわらず設定される。
【0064】
KFC値が4または5であり、(場合により動的アドレス変換(DAT)後の)第1と第2のオペランドの実アドレスまたは仮想アドレスが同じであるとき、オペランド例外が認識されるかどうかはモデルに依存する。
【0065】
アクセス例外が両方のオペランドで認識され得るとき、どちらのオペランドに対して例外が認識されるかは予測不能である。例外の一方が、条件コード1または2が設定されることになるページ変換例外である場合には、他方のオペランドに対するアクセス例外が認識されるか、それとも条件コード1または2が設定されるかどうかは予測不能である。
【0066】
条件コード1または2を設定することによって命令が完了し、PERゼロアドレス検出条件もまた第1または第2のオペランドに対して存在するとき、ゼロアドレス検出条件が認識されるかどうかは予測不能である。
【0067】
主記憶装置への参照は、他のCPUおよびチャネル・プログラムによって観察されるように、必ずしも単一のアクセス参照ではなく、また、必ずしも左から右への方向で行われない。
【0068】
記憶キーが第1のオペランド・ブロック(たとえば、4または5のKFC値)に設定される場合、静止動作が必ずしも行われない。
【0069】
KFC値が4または5であるとき、直列化機能およびチェックポイント同期機能が、1つの実施形態では、動作が開始する前に、さらにまた動作が完了した後に遂行される。
【0070】
例示的な条件
【0071】
問題状態では、KFC値が1または2であるとき、動作は、たとえば、汎用レジスタ0で指定されアクセス・キーが有効である場合だけに、すなわち、制御レジスタ3の対応するPSWキー・マスク・ビットが1である場合に、遂行される。そうでなければ、特権動作例外が認識される。スーパバイザ状態では、指定されたアクセス・キーに対して任意の値が有効である。
【0072】
KFC値が0であるとき、汎用レジスタ0のアクセス・キーは有効性について試験されず、特権動作例外が認識されない。問題状態では、ページ移動およびキー設定機能がインストールされておりKFC値が4または5であるとき、特権動作例外が認識される。
【0073】
問題状態では、KFC値が3であり汎用レジスタ0のアクセス・キーがPSWキー・マスクによって許可されていないとき、指定例外または特権動作例外が認識されるかどうかは予測不能である。6または7のKFC値の結果として、1つの実施形態では、指定例外が生じる。
【0074】
ESA/390互換モードでは、たとえば、構成もまたESA/拡張構成(ESA/XC)モードで動作していないときに、動作例外が認識される。
【0075】
例示的な結果としての条件コード
【0076】
0 データが移動され、任意選択でキーが設定される。
【0077】
1 条件コード・オプション・ビット1、第1のオペランドへのページ・テーブル入力無効、および第2のオペランドへのページ・テーブル入力有効
【0078】
2 条件コード・オプション・ビット1、および第2のオペランドへのページ・テーブル入力無効
【0079】
3 --
【0080】
プログラム例外
【0081】
● アクセス(フェッチ、オペランド2;記憶、オペランド1)
【0082】
● オペランド
【0083】
● 特権動作(アクセス・キー指定、および選択されたPSWキー・マスク・ビットが問題状態でゼロ;問題状態での4または5のKFC値)
【0084】
● 指定
【0085】
● トランザクション制約
【0086】
プログラミング上の注意
【0087】
* 4または5のKFC値が使用されるとき、別のCPUが参照を短時間観察し、第1のオペランド・ブロックに対して設定されるビットを、キー設定動作によってその最終の値に設定される前に1に変更することができる。
【0088】
* Move Page以外の命令によって第1のオペランドを参照する意図があるとき、宛先参照意図ビットが1に設定される。このビットは、制御プログラムがページ変換例外をより効率的に処理できるようにする。
【0089】
* 命令によって設定された条件コードは、条件コード・オプション・ビットがゼロである場合、またはDATがオフである場合には通常、調べられる必要がない。
【0090】
本発明の一態様による、Move Page命令を実行することに基づいた処理の1つの実施形態のさらなる詳細について、図4を参照して説明する。1つの例では、オペレーティング・システムが命令を発行し、この命令は、汎用プロセッサ102または204などのプロセッサを使用して実行される。たとえば、プロセッサのハードウェアが、命令を実行するために使用される。ハードウェアは、プロセッサから命令を受け取るためには、プロセッサの中にあってもプロセッサに結合されていてもよく、このプロセッサは、たとえば、命令を取得し、デコードし、セットアップして、ハードウェア上で実行する。他の変形形態もあり得る。
【0091】
図4を参照すると、最初に、Move Page命令がプロセッサ102または204などのプロセッサによって取得され(たとえば、フェッチされる、受け取られる、提供される、など)(STEP400)、命令が実行される(STEP402)。この実行することには、たとえば、命令のキー機能制御を取得することが含まれる(STEP404)。キー機能制御は、命令が使用する位置(たとえば、暗示された汎用レジスタ0などのレジスタ)によって指定される。実行することにはさらに、たとえば第2のオペランド位置のデータのブロック(たとえば、データのページ)である第2のオペランド・データを取得することが含まれる(STEP406)。第2のオペランド位置は、たとえば、命令のフィールド(たとえば、レジスタ・フィールド306)によって指定された汎用レジスタ(たとえば、R)に示されている。さらに、第2のオペランド・データへのアクセスは、取得されたキー機能制御に基づいている。たとえば、そのアクセスは、キー機能制御に応じて、汎用レジスタ0またはプログラム・ステータス・ワード・キーで指定された記憶キーを使用して遂行することができる。
【0092】
第2のオペランド・データは第1のオペランド・データ(たとえば、データのページなどのデータのブロック)に置き換わる(STEP408)。再び、第1のオペランドおよび第2のオペランドへのアクセスは、上述のように、キー機能制御に依存する。
【0093】
データを移動させることに加えて、本発明の一態様によれば、データと関連付けられた記憶キーを更新することができる。たとえば、取得されたキー機能制御に基づいて、記憶キーの1つまたは複数のフィールドが設定されるべきかどうかの決定が行われる(STEP410)。記憶キーの少なくとも一部が設定されるべき場合には(INQUIRY412)、記憶キーの1つまたは複数のフィールドがキー機能制御に基づいて設定される(STEP414)。たとえば、キー機能制御が4に設定されるべき場合には、第1のオペランド・データ(たとえば、第1のオペランドの4Kバイト・ブロック)の記憶キーは、汎用レジスタ0の記憶キーに供給されたフル・キーに設定される。別の例として、キー機能制御が5に設定される場合には、第1のオペランド・データの記憶キーは、たとえば以下のように設定される。すなわち、アクセス制御値およびフェッチ保護値が第2のオペランドの記憶キーからコピーされ、参照フィールドおよび変更フィールドでは、汎用レジスタ0の記憶キーに供給された値を使用する。他の例もまたあり得る。
【0094】
命令の実行が、条件コードを設定することによって完了する(STEP416)。
【0095】
本明細書に記載のように、1つの態様では、単一の命令(たとえば、ハードウェア/ソフトウェアのインターフェースでの単一のアーキテクト機械命令、たとえばMove Page命令)が、たとえば汎用プロセッサを使用してデータ移動動作および記憶キー設定動作を行うために提供される。この命令は、たとえば、命令セット・アーキテクチャ(ISA)で定義されているハードウェア命令である。結果として、データを移動させること、および記憶キーを設定することに関連するプログラムの複雑さが低減される。さらに、機能の動作が、したがってプロセッサが、命令(たとえば、記憶キー設定命令)を削除することによって改善される。処理が速くなり、実行時間が低減され、動作が改善される。
【0096】
Move Page命令の様々なフィールドおよびレジスタについて説明しているが、本発明の1つまたは複数の態様では、他の、追加の、もしくはもっと少ないフィールドもしくはレジスタを使用すること、またはフィールドおよびレジスタの他のサイズなどを使用することができる。多くの変形形態があり得る。たとえば、暗示されたレジスタが、明示的に指定された命令のレジスタもしくフィールドの代わりに使用されることがあり、または明示的に指定されたレジスタもしくはフィールドが、暗示されたレジスタもしくはフィールドの代わりに使用されることがあり、あるいはその両方がある。他の変形形態もまたあり得る。
【0097】
本発明の1つまたは複数の態様は、コンピュータ技術と密接に結び付いており、コンピュータ内の処理を容易にして、その動作を改善する。データの移動および記憶キーの設定を遂行する単一のアーキテクト機械命令を使用することにより、コンピューティング環境内の動作が改善する。データは、コンピュータ処理、医療処理、セキュリティなどの多くの技術分野で使用され得る。データを移動させ、記憶キーを設定する際の最適化を実現することによって、これらの技術分野は、実行時間が低減することで進歩する。
【0098】
コンピューティング環境内の処理を容易にする1つの実施形態のさらなる詳細について、このコンピューティング環境は本発明の1つまたは複数の態様と関連するので、図5A~5Bを参照して説明する。
【0099】
図5Aを参照すると、1つの実施形態では、複数の機能を遂行する命令が取得され(500)、この命令は、単一のアーキテクト命令である(502)。命令は実行され(504)、この実行することには、複数の機能のうちの第1の機能を遂行すること(506)、および複数の機能のうちの第2の機能を遂行すること(508)が含まれる。第1の機能は、データのブロックを一方の位置から他方の位置まで移動させることを含み、第2の機能は、記憶キーの一方の部分を一方の選択されたキーを使用して設定すること、および記憶キーの他方の部分を他方の選択されたキーを使用して設定することを含む。記憶キーは、データのブロックと関連付けられ、データのブロックへのアクセスを制御する(510)。第1の機能および第2の機能は、単一のアーキテクト命令の一部として遂行される(512)。
【0100】
1つの例では、第1の機能を遂行することと第2の機能を遂行することは同時に行われる(514)。
【0101】
さらに、1つの例では、命令を実行することには、その命令と関連付けられた位置からキー機能制御を取得することが含まれ、このキー機能制御は、遂行されるべき第2の機能を指定する(516)。
【0102】
1つの例では、図5Bを参照すると、キー機能制御は、記憶キーの一方の部分が、選択されたオペランドの一方の選択されたキーの対応する部分をコピーすることによって設定されるべきであることを指定し、さらに、記憶キーの他方の部分が、命令と関連付けられた位置に用意された他方の選択されたキーの対応する部分から設定されるべきであることを指定する(518)。一例として、選択されたオペランドの一方の選択されたキーは、第2のオペランドの記憶キーであり、命令と関連付けられた位置に用意された他方の選択されたキーは、命令と関連付けられたレジスタの記憶キーである(520)。命令と関連付けられた位置には、たとえば、命令と関連付けられている暗示されたレジスタが含まれる(522)。
【0103】
一例として、記憶キーの一方の部分は、アクセス制御フィールドおよびフェッチ保護フィールドを含み、記憶キーの他方の部分は、参照フィールドおよび変更フィールドを含む(524)。
【0104】
1つの例では、データのブロックを移動させることは、他方の位置のデータを一方の位置のデータのブロックに置き換えることを含み、これらの他方の位置および一方の位置は、命令によって指定される(526)。他方の位置は、たとえば、命令の一方のレジスタ・フィールドで示された一方のレジスタによって指定され、一方の位置は、命令の他方のレジスタ・フィールドで示された他方のレジスタによって指定される(528)。
【0105】
1つの例では、データのブロックはデータのページを含む(530)。
【0106】
他の変形形態および実施形態もあり得る。
【0107】
本発明の諸態様は、多くのタイプのコンピューティング環境で使用することができる。本発明の1つまたは複数の態様を組み込み使用するためのコンピューティング環境の別の実施形態について、図6Aを参照して説明する。この例では、コンピューティング環境10は、たとえば、1つもしくは複数のバス18または他の接続あるいはその両方を介して互いに結合された、たとえば、固有の中央処理装置(CPU)12と、メモリ14と、1つもしくは複数の入出力デバイスまたはインターフェースあるいはその両方16とを含む。例として、コンピューティング環境10は、ニューヨーク州アーモンクのIBM社から販売されているPowerPC(R)プロセッサ、カリフォルニア州パロ・アルトのヒューレット・パッカード社から販売されているIntel Itanium II(R)プロセッサ付きHP Superdome、またはIBM社、ヒューレット・パッカード、インテル社、オラクルやその他から販売されているアーキテクチャに基づいた他の機械あるいはその組み合わせを含み得る。IBM、z/Architecture、IBM Z、z/OS、PR/SMおよびPowerPCは、IBM社の少なくとも1つの権限内の商標または登録商標である。IntelおよびItaniumは、米国およびその他の国のインテル社またはその子会社の商標または登録商標である。
【0108】
固有の中央処理装置12は、その環境内の処理中に使用される、1つもしくは複数の汎用レジスタまたは1つもしくは複数の専用レジスタあるいはその両方などの、1つまたは複数の固有のレジスタ20を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【0109】
さらに、固有の中央処理装置12は、メモリ14に記憶されている命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ14に記憶されたエミュレータ・コード22を実行する。このコードは、1つのアーキテクチャ内に構成されたコンピューティング環境で、別のアーキテクチャをエミュレートできるようにする。たとえば、エミュレータ・コード22は、PowerPC(R)プロセッサ、HP Superdomeサーバやその他などの、z/Architecture(R)ハードウェア・アーキテクチャ以外のアーキテクチャに基づいた機械がz/Architecture(R)ハードウェア・アーキテクチャをエミュレートすること、ならびに、z/Architecture(R)ハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
【0110】
エミュレータ・コード22に関するさらなる詳細について、図6Bを参照して説明する。メモリ14に記憶されたゲスト命令30は、固有のCPU12以外のアーキテクチャで実行されるように開発されたソフトウェア命令(たとえば、機械命令と相互に関連している)を含む。たとえば、ゲスト命令30は、z/Architecture(R)ハードウェア・アーキテクチャに基づいたプロセッサで実行するように設計されることもあったが、そうしないで、たとえばIntel Itanium II(R)プロセッサとすることができる固有のCPU12でエミュレートされる。1つの例では、エミュレータ・コード22は、1つまたは複数のゲスト命令30をメモリ14から取得するための、および取得された命令のローカル・バッファリングを任意選択で行うための、命令フェッチ・ルーチン32を含む。エミュレータ・コードはまた、取得されたゲスト命令のタイプを決定するための、およびそのゲスト命令を1つまたは複数の対応する固有の命令36に変換するための、命令変換ルーチン34を含む。この変換には、たとえば、ゲスト命令によって遂行されるべき機能を特定すること、およびその機能を遂行するための固有の命令を選択することが含まれる。
【0111】
さらに、エミュレータ・コード22は、固有の命令が実行されるようにするためのエミュレーション制御ルーチン40を含む。エミュレーション制御ルーチン40は、固有のCPU12に、以前に取得された1つまたは複数のゲスト命令をエミュレートする固有の命令のルーチンを実行させることができ、また、このような実行の終わりに、制御を命令フェッチ・ルーチンに返して次のゲスト命令または一群のゲスト命令の取得をエミュレートさせることができる。固有の命令36の実行には、変換ルーチンによって決定されたように、データをメモリ14からレジスタにロードすること、データをレジスタから戻してメモリに記憶すること、または何らかのタイプの算術演算または論理演算を遂行することが含まれ得る。
【0112】
各ルーチンは、たとえば、メモリに記憶され固有の中央処理装置12によって実行されるソフトウェアで実施される。他の例では、ルーチンまたは動作のうちの1つまたは複数が、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組み合わせで実施される。エミュレートされたプロセッサのレジスタは、固有のCPUのレジスタ20を使用して、またはメモリ14内の場所を使用することによって、エミュレートされ得る。諸実施形態では、ゲスト命令30、固有の命令36、およびエミュレータ・コード22は同じメモリ内に常駐することも、異なるメモリデバイスの間に分散することもできる。
【0113】
上述のコンピューティング環境は、使用することができるコンピューティング環境の例にすぎない。分割されていない環境、分割された環境、またはエミュレートされた環境あるいはその組み合わせをそれだけには限らないが含む、他の環境が使用されることがあり、諸実施形態は、いかなる1つの環境にも限定されない。
【0114】
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成することができる。たとえば、それぞれを、本発明の1つまたは複数の態様による、データ移動/記憶キー設定処理を行うように構成することができる。
【0115】
1つまたは複数の態様は、クラウド・コンピューティングと関連することがある。
【0116】
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書に列挙された教示の実施態様は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の諸実施形態は、現在知られている、または今後開発される他の任意のタイプのコンピューティング環境と一緒に実施することができる。
【0117】
クラウド・コンピューティングは、最小の管理労力またはサービス・プロバイダとの対話によって迅速にプロビジョニングおよびリリースすることができる、構成可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想機械、およびサービス)の共用プールへの、便利でオンデマンドのネットワーク・アクセスを可能にするためのサービス・デリバリの1つのモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの配置モデルを含み得る。
【0118】
特徴は以下の通りである。
【0119】
オンデマンド・セルフサービス:クラウド消費者は、サーバ時間およびネットワーク記憶装置などのコンピューティング機能を必要に応じて自動的に、サービス・プロバイダとの人的対話を必要とせずに一方的にプロビジョニングすることができる。
【0120】
広範なネットワーク・アクセス:諸機能が、ネットワークを通じて利用可能であり、また、異種のシンまたはシック・クライアント・プラットフォームによって使用を促進する標準的な機構(たとえば、携帯電話、ラップトップ、およびPDA)を介してアクセスされる。
【0121】
リソース・プーリング:プロバイダのコンピューティング・リソースが、マルチテナント・モデルを使用して複数の消費者にサービスするためにプールされ、異なる物理的リソースおよび仮想リソースが、要求に応じて動的に割り当てられ、再割り当てされる。消費者には一般に、提供されるリソースの正確な位置に対する制御権または知識がないが、高レベルの抽象的概念(たとえば、国、州、またはデータセンタ)で位置を指定することができるという点で、位置独立の観念がある。
【0122】
迅速な順応性:諸機能が迅速かつ柔軟に、場合によっては自動的にプロビジョニングされて素早くスケール・アウトすることができ、また迅速にリリースされて速くスケール・インすることができる。消費者には、プロビジョニングするのに利用可能な機能は無制限のように見えることが多く、任意の時間に任意の分量で購入することができる。
【0123】
測定されるサービス:クラウド・システムは、サービスのタイプ(たとえば、記憶、処理、帯域、およびアクティブ・ユーザ・アカウント)に適している抽象化のレベルで計測機能を活用することによって、リソース使用を自動的に制御および最適化する。リソース使用は監視、制御、および報告して、利用されるサービスの提供者と消費者の両方に透明性をもたらすことができる。
【0124】
サービス・モデルは以下の通りである。
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上で走るプロバイダのアプリケーションを使用するものである。これらのアプリケーションは、ウェブ・ブラウザ(たとえば、ウェブベースのeメール)などのシン・クライアント・インターフェースを介して、様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、記憶装置、さらには個々のアプリケーション機能さえ含む、基礎をなすクラウド・インフラストラクチャを管理または制御せず、限定されたユーザ固有のアプリケーション構成設定を除外する可能性がある。
【0125】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされたプログラミング言語およびツールを用いて生成された、消費者生成または取得のアプリケーションをクラウド・インフラストラクチャに配置することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、または記憶装置を含む、基礎をなすクラウド・インフラストラクチャは管理したり制御したりしないが、配置されたアプリケーション、および場合により環境構成をホストするアプリケーションに対しては制御権を有する。
【0126】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを消費者が配置および実行できる処理、記憶装置、ネットワーク、その他の基本的なコンピューティング・リソースをプロビジョニングすることである。消費者は、基礎をなすクラウド・インフラストラクチャは管理したり制御したりしないが、オペレーティング・システム、記憶装置、配置されたアプリケーションに対する制御権、および場合により、選択されたネットワーキング構成要素(たとえば、ホスト・ファイアウォール)に対する限定された制御権を有する。
【0127】
展開モデルは以下の通りである。
【0128】
プライベート・クラウド:クラウド・インフラストラクチャは、1つの組織に限って動作する。プライベート・クラウドは、その組織またはサード・パーティによって管理され、オンプレミスまたはオフプレミスで存在し得る。
【0129】
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、関心事(たとえば、ミッション、セキュリティ要件、方針、およびコンプライアンス考慮事項)が共有されている特定のコミュニティをサポートする。コミュニティ・クラウドは、その組織またはサード・パーティによって管理され、オンプレミスまたはオフプレミスで存在し得る。
【0130】
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大規模業界団体が利用できるようになっており、クラウド・サービスを販売する組織に所有されている。
【0131】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)からなる構成体であり、これらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションの移植性を可能にする標準的または独自の技術(たとえば、クラウド間で負荷バランスをとるためのクラウド・バースティング)によって結合されている。
【0132】
クラウド・コンピューティング環境はサービス指向型であり、無国籍、低結合、モジュール性、意味相互運用性に焦点を合わせている。クラウド・コンピューティングの中心には、相互接続されたノードからなるネットワークを含む、インフラストラクチャがある。
【0133】
次に図7を参照すると、説明のためのクラウド・コンピューティング環境50が描かれている。図示のように、クラウド・コンピューティング環境50は、1つまたは複数のコンピューティング・ノード52を含み、これらのノードと、たとえば、携帯情報端末(PDA)もしくはセルラ電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはその組み合わせなどの、クラウド消費者によって使用されるローカル・コンピューティング・デバイスとが通信することができる。ノード52は、互に通信することができる。これらのノードは、上述のプライベート・クラウド、コミュニティ・クラウド、もしくはハイブリッド・クラウド、またはこれらの組み合わせなどの1つまたは複数のネットワークに物理的または仮想的にグループ化することができる(図示せず)。こうすることにより、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組み合わせを、クラウド消費者がローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提供することが可能になる。図7に示されたタイプのコンピューティング・デバイス54A~Nは単に説明のためのものであること、ならびにコンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意のタイプのネットワーク、またはネットワーク・アドレス指定可能な接続あるいはその両方を介して(たとえば、ウェブ・ブラウザを使用して)、任意のタイプのコンピュータ化デバイスと通信できることを理解されたい。
【0134】
次に図8を参照すると、クラウド・コンピューティング環境50(図7)によって提供された機能抽象化層の組が示されている。図8に示された構成要素、層、および機能は単に説明のためのものであり、本発明の諸実施形態はこれらに限定されないことをあらかじめ理解されたい。図示のように、以下の各層および対応する機能が提供される。
【0135】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェアの構成要素を含む。ハードウェア構成要素の例としては、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャをベースとするサーバ62、サーバ63、ブレード・サーバ64、記憶装置65、ならびにネットワークおよびネットワーキング構成要素66が挙げられる。いくつかの実施形態では、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア67、およびデータベース・ソフトウェア68を含む。
【0136】
仮想化層70は、以下の仮想エンティティの例、すなわち、仮想サーバ71、仮想記憶装置72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75をもたらし得る抽象化層を提供する。
【0137】
1つの例では、管理層80が下記の機能を提供し得る。リソース・プロビジョニング81が、クラウド・コンピューティング環境内でタスクを遂行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を行う。計測および価格付け82は、クラウド・コンピューティング環境内でリソースが利用されるときに原価管理を行い、これらのリソースの消費に対して課金およびインボイス作成を行う。1つの例では、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティにより、クラウド消費者およびタスクの識別検証、ならびにデータおよびその他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを消費者およびシステム管理者に提供する。サービス・レベル管理84では、必要なサービス・レベルが満たされるようにクラウド・コンピューティング・リソース割り当ておよび管理を行う。サービス品質保証制度(SLA)計画および履行85では、SLAに応じた要件が将来予期されるクラウド・コンピューティング・リソースの事前構成および調達を行う。
【0138】
作業負荷層90では、クラウド・コンピューティング環境を利用できる機能の例を提供する。この層から提供できる作業負荷および機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育デリバリ93、データ解析処理94、トランザクション処理95、ならびにデータ移動/記憶キー設定処理96が挙げられる。
【0139】
本発明の諸態様は、統合化の任意の可能な技術的詳細レベルにあるシステム、方法、またはコンピュータ・プログラム製品あるいはその組み合わせであり得る。コンピュータ・プログラム製品には、プロセッサに本発明の諸態様を遂行させるためのコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体が含まれ得る。
【0140】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶できる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、それだけには限らないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、またはこれらの任意の適切な組み合わせでよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録された溝の形の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組み合わせが含まれる。本明細書では、コンピュータ可読記憶媒体は、それ自体で、電波または他の自由伝搬する電磁波、導波管または他の伝送媒体を伝播する電磁波(たとえば、光ファイバ・ケーブルを進む光パルス)、または電線を通して伝送される電気信号などの、一時的な信号であると解釈されるべきではない。
【0141】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング・デバイス/処理デバイスに、またはネットワーク(たとえば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークまたは無線ネットワークあるいはその組み合わせ)を介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組み合わせを含み得る。各コンピューティング・デバイス/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、そのコンピュータ可読プログラム命令を、それぞれのンピューティング・デバイス/処理デバイスの中のコンピュータ可読記憶媒体に記憶するために転送する。
【0142】
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または1つもしくは複数のプログラム言語の任意の組み合わせで書かれたソース・コードまたはオブジェクト・コードとすることができ、このプログラム言語には、Smalltalk、C++などのオブジェクト指向プログラム言語、および「C」プログラム言語または同様のプログラム言語などの手続き型プログラム言語が含まれる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全部を、ユーザのコンピュータ上で一部を、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で一部を、かつリモート・コンピュータ上で一部を、またはリモート・コンピュータもしくはサーバ上で全部を実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータと接続することができ、あるいは、この接続を外部のコンピュータと行うことができる(たとえば、インターネット・サービス・プロバイダを用いてインターネット経由で)。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を遂行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人専用にすることによってコンピュータ可読プログラム命令を実行することができる。
【0143】
本発明の諸態様が、本発明の実施形態による、流れ図または方法のブロック図あるいはその両方、装置(システム)、およびコンピュータ・プログラム製品に関して本明細書で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施できることを理解されたい。
【0144】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行される命令が、流れ図またはブロック図あるいはその両方のブロック内で指定された機能/動作を実施する手段を作り出すように、汎用コンピュータ、専用コンピュータまたは他のプログラム可能データ処理装置のプロセッサに供給して1つの機械を生み出すことができる。コンピュータ、プログラム可能データ処理装置、または特定の方法で機能する他のデバイスあるいはその組み合わせに指示できる、これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読記憶媒体が、流れ図またはブロック図あるいはその両方のブロック内で指定された機能/動作の態様を実施する命令を含む製品を備えるように、コンピュータ可読記憶媒体に記憶することもできる。
【0145】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、流れ図またはブロック図あるいはその両方のブロック内で指定された機能/動作を実施するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、一連の動作ステップをコンピュータ、他のプログラム可能装置または他のデバイス上で、コンピュータで実施されるプロセスが生じるように遂行させることができる。
【0146】
図の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の実現可能な実施形態のアーキテクチャ、機能および動作を示す。この関連で、流れ図またはブロック図の各ブロックは、命令のモジュール、セグメントまたは一部分を表すことができ、指定された論理機能を実施するための1つまたは複数の実行可能な命令を含む。いくつかの代替実施形態では、ブロック内に示された機能は、図に示された順序から外れて行われることがある。たとえば、連続して示された2つのブロックが、実際には、実質的に同時に実行されることがあり、あるいは場合によってブロックが、含まれる機能に応じて逆の順序で実行されることがある。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方のブロックの組み合わせは、特定の機能または動作を遂行する、または専用ハードウェアおよびコンピュータ命令の組み合わせを遂行する、専用ハードウェアによるシステムによって実現できることにも留意されたい。
【0147】
上記に加えて、1つまたは複数の態様が、顧客環境の管理を提供するサービス・プロバイダによって実現され、提供され、配置され、管理され、サービスされることなどがある。たとえば、サービス・プロバイダは、1人または複数の顧客のための1つもしくは複数の態様を遂行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作り出し、維持し、サポートすることなどができる。見返りとして、サービス・プロバイダは、例として、契約または料金取り決めあるいはその両方のもとで顧客から支払いを受けることができる。加えて、または別法として、サービス・プロバイダは、1つまたは複数のサード・パーティに広告コンテンツを販売することにより支払いを受けることができる。
【0148】
1つの態様では、1つまたは複数の実施形態を遂行するためのアプリケーションが配置されることがある。1つの例として、アプリケーションの配置には、1つまたは複数の実施形態を遂行するように動作可能なコンピュータ・インフラストラクチャを提供することが含まれる。
【0149】
別の態様として、コンピューティング・インフラストラクチャは、コンピュータ可読コードをコンピューティング・システムに組み込むことを含めて配置されることがあり、コンピューティング・システムと組み合わされたコードは、1つまたは複数の実施形態を遂行することができる。
【0150】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに組み込むことを含む、コンピューティング・インフラストラクチャを組み込むためのプロセスが提供されることがある。そのコンピュータ・システムはコンピュータ可読媒体を含み、この中にコンピュータ媒体は、1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わされたコードは、1つまたは複数の実施形態を遂行することができる。
【0151】
様々な実施形態について上で説明したが、これらは例にすぎない。たとえば、別のアーキテクチャのコンピューティング環境が、1つまたは複数の実施形態を組み込み使用するために用いられることがある。さらに、異なる命令または動作が用いられることがある。加えて、異なるタイプの制御が指定されることがある。多くの変形形態があり得る。
【0152】
さらに、他のタイプのコンピューティング環境が利益を得ることがあり、使用されることがある。一例として、プログラム・コードの記憶または実行あるはその両方に適しているデータ処理システムが使用可能であり、このシステムは、システム・バスを介して直接または間接的にメモリ要素に結合された少なくとも2つのプロセッサを含む。このメモリ要素は、たとえば、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量記憶装置と、実行中に大容量記憶装置からコードが取得されなければならない回数を減らすために少なくともいくつかのプログラム・コードの一時的な記憶装置になる、キャッシュ・メモリとを含む。
【0153】
入出力すなわちI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブおよび他のメモリ媒体などを、これらだけには限らないが含む)がシステムに直接に、または介在するI/Oコントローラを介して、結合され得る。ネットワーク・アダプタもまた、データ処理システムが介在プライベートまたは公衆ネットワークを介して他のデータ処理システムまたは遠隔のプリンタもしくは記憶デバイスに結合されることを可能にするために、システムに結合され得る。モデム、ケーブル・モデム、およびイーサネット・カードは、利用可能なタイプのネットワーク・アダプタのうちのほんのいくつかである。
【0154】
本明細書で用いられる術語は、特定の諸実施形態を説明することだけが目的であり、限定するものではない。本明細書では、単数形の「1つの(a)」、「1つの(an)」および「その(the)」は、それ以外の指示がない限り複数形もまた含むものである。用語の「含む(comprises)」または「含んでいる(comprising)」あるいはその両方は、本明細書で用いられる場合、提示された特徴、完全体、ステップ、操作、要素、または構成要素あるいはそれらの組み合わせが存在することを明示するが、1つもしくは複数の他の特徴、完全体、ステップ、操作、要素、構成要素、および/またはこれらの群が存在すること、または追加されることを排除しないことをさらに理解されたい。
【0155】
添付の特許請求の範囲のすべての手段またはステップに機能要素を加えたものの対応する構造、材料、動作、および等価物は、もしあれば、明確に特許請求された他の特許請求要素と組み合わせて機能を遂行するための任意の構造、材料、または動作を含むものである。1つまたは複数の実施形態についての記述は説明および記述の目的で提示されているが、網羅的なもの、または開示された形状に限定されるものではない。多くの修正形態および変形形態が当業者には明らかであろう。実施形態は、様々な態様および実際的な適用を最善に説明するために、また、当業者以外が、企図される特定の用途に適している様々な修正を含む様々な実施形態を理解できるようにするために、選択され記述された。
図1A
図1B
図2
図3A
図3B
図3C
図3D
図4
図5A
図5B
図6A
図6B
図7
図8