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

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

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

<>
  • 特許-オーバーフロー例外の命令割込み抑制 図1A
  • 特許-オーバーフロー例外の命令割込み抑制 図1B
  • 特許-オーバーフロー例外の命令割込み抑制 図2
  • 特許-オーバーフロー例外の命令割込み抑制 図3
  • 特許-オーバーフロー例外の命令割込み抑制 図4
  • 特許-オーバーフロー例外の命令割込み抑制 図5A
  • 特許-オーバーフロー例外の命令割込み抑制 図5B
  • 特許-オーバーフロー例外の命令割込み抑制 図6A
  • 特許-オーバーフロー例外の命令割込み抑制 図6B
  • 特許-オーバーフロー例外の命令割込み抑制 図7
  • 特許-オーバーフロー例外の命令割込み抑制 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-25
(45)【発行日】2024-05-08
(54)【発明の名称】オーバーフロー例外の命令割込み抑制
(51)【国際特許分類】
   G06F 9/48 20060101AFI20240426BHJP
   G06F 9/30 20180101ALI20240426BHJP
【FI】
G06F9/48 110B
G06F9/30 372
【請求項の数】 16
(21)【出願番号】P 2021537933
(86)(22)【出願日】2020-01-23
(65)【公表番号】
(43)【公表日】2022-03-16
(86)【国際出願番号】 IB2020050524
(87)【国際公開番号】W WO2020161554
(87)【国際公開日】2020-08-13
【審査請求日】2022-06-22
(31)【優先権主張番号】16/266,752
(32)【優先日】2019-02-04
(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)【発明者】
【氏名】レーバー、ペトラ
【審査官】田中 幸雄
(56)【参考文献】
【文献】特表2018-531467(JP,A)
【文献】米国特許出願公開第2018/0373529(US,A1)
【文献】特開2006-221606(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06F 9/30
(57)【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラムであって、
コンピュータに、
前記コンピューティング環境のプロセッサ上で命令を実行させ、
前記命令の実行に基づいて、オーバーフロー条件が発生したことを特定させ、
前記命令について、命令ごとのオーバーフロー割込みインジケータを取得させ、
前記オーバーフロー条件が発生し且つ前記命令ごとのオーバーフロー割込みインジケータが規定値にセットされていることに基づいて、前記オーバーフロー条件のための割込み処理を実行させ、
前記オーバーフロー条件が発生し且つ前記命令ごとのオーバーフロー割込みインジケータが別の規定値にセットされていることに基づいて、前記オーバーフロー条件のための前記割込み処理をバイパスさせることと、を含む、コンピュータ・プログラム。
【請求項2】
前記命令ごとのオーバーフロー割込みインジケータは、前記命令のフィールド内に位置する、請求項1に記載のコンピュータ・プログラム。
【請求項3】
前記命令ごとのオーバーフロー割込みインジケータは、命令実行手段によってアクセス可能な場所に位置する、請求項1に記載のコンピュータ・プログラム。
【請求項4】
前記オーバーフロー条件が発生したことを前記特定することは、前記命令の実行に基づいてセットされたオーバーフロー・インジケータをチェックすることを含む、請求項1に記載のコンピュータ・プログラム。
【請求項5】
割込み処理を前記実行することは、割込み可能条件を報告することを含む、請求項1に記載のコンピュータ・プログラム。
【請求項6】
割込み処理を前記実行することは、前記命令について、割込みを開始することを含む、請求項1に記載のコンピュータ・プログラム。
【請求項7】
前記規定値は1であり、前記別の規定値は0である、請求項1に記載のコンピュータ・プログラム。
【請求項8】
前記オーバーフロー条件は、前記命令の演算の実行結果であり、前記割込み処理を前記バイパスすることは、前記命令によって生成されることになるマシン例外を抑制することを含む、請求項1に記載のコンピュータ・プログラム。
【請求項9】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムは、
メモリと、
前記メモリに結合されたプロセッサとを備え、前記コンピュータ・システムは、方法を実行するように構成され、前記方法は、
前記プロセッサ上で命令を実行することと、
前記命令の実行に基づいて、オーバーフロー条件が発生したことを特定することと、
前記命令について、命令ごとのオーバーフロー割込みインジケータを取得することと、
前記オーバーフロー条件が発生し且つ前記命令ごとのオーバーフロー割込みインジケータが規定値にセットされていることに基づいて、前記オーバーフロー条件のための割込み処理を実行することと、
前記オーバーフロー条件が発生し且つ前記命令ごとのオーバーフロー割込みインジケータが別の規定値にセットされていることに基づいて、前記オーバーフロー条件のための前記割込み処理をバイパスすることと、
を含む、コンピュータ・システム。
【請求項10】
前記命令ごとのオーバーフロー割込みインジケータは、前記命令のフィールド内に位置する、請求項に記載のコンピュータ・システム。
【請求項11】
前記命令ごとのオーバーフロー割込みインジケータは、命令実行手段によってアクセス可能な場所に位置する、請求項に記載のコンピュータ・システム。
【請求項12】
前記オーバーフロー条件は、前記命令の演算の実行結果であり、前記割込み処理を前記バイパスすることは、前記命令によって生成されることになるマシン例外を抑制することを含む、請求項に記載のコンピュータ・システム。
【請求項13】
コンピューティング環境内の処理を容易にするコンピュータ実施方法であって、前記コンピュータ実施方法は、
前記コンピューティング環境のプロセッサ上で命令を実行することと、
前記命令の実行に基づいて、オーバーフロー条件が発生したことを特定することと、
前記命令について、命令ごとのオーバーフロー割込みインジケータを取得することと、
前記オーバーフロー条件が発生し且つ前記命令ごとのオーバーフロー割込みインジケータが規定値にセットされていることに基づいて、前記オーバーフロー条件のための割込み処理を実行することと、
前記オーバーフロー条件が発生し且つ前記命令ごとのオーバーフロー割込みインジケータが別の規定値にセットされていることに基づいて、前記オーバーフロー条件のための前記割込み処理をバイパスすることと、
を含む、コンピュータ実施方法。
【請求項14】
前記命令ごとのオーバーフロー割込みインジケータは、前記命令のフィールド内に位置する、請求項13に記載のコンピュータ実施方法。
【請求項15】
前記命令ごとのオーバーフロー割込みインジケータは、命令実行手段によってアクセス可能な場所に位置する、請求項13に記載のコンピュータ実施方法。
【請求項16】
前記オーバーフロー条件は、前記命令の演算の実行結果であり、前記割込み処理を前記バイパスすることは、前記命令によって生成されることになるマシン例外を抑制することを含む、請求項13に記載のコンピュータ実施方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピューティング環境内の処理を容易にすることに関し、特に、オーバーフロー条件を生成する場合がある命令に関連付けられた処理を容易にすることに関する。
【背景技術】
【0002】
様々な命令が、計算中、例えば、ターゲット・フォーマットにおいて結果を保存することができないときに、オーバーフロー条件を生成する場合がある。このオーバーフロー条件により、ユーザ・プログラムは割込みハンドラにジャンプし、割込みハンドラは、オーバーフロー条件割込みに対処するのに数百サイクルを要する。
【発明の概要】
【0003】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供を通じて、従来技術の欠点が克服され、更なる利点が提供される。コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、方法を実行するための命令を記憶するコンピュータ可読記憶媒体を備える。方法は、コンピューティング環境のプロセッサ上で命令を実行することと、命令の実行に基づいて、オーバーフロー条件が発生したことを特定することとを含む。命令について、命令ごとのオーバーフロー割込みインジケータが取得される。命令ごとのオーバーフロー割込みインジケータが規定値にセットされていることに基づいて、オーバーフロー条件のための割込み処理が実行される。命令ごとのオーバーフロー割込みインジケータが別の規定値にセットされていることに基づいて、オーバーフロー条件のための割込み処理がバイパスされる。
【0004】
命令ごとのオーバーフロー割込みインジケータを提供することによって、割込み処理をいつ行うかを決定する際の柔軟性がユーザ・コードに提供され、コードの複雑度が低減される。更に、選択に応じて割込み処理をバイパスすることによって、性能が改善される。
【0005】
1つの例として、命令ごとのオーバーフロー割込みインジケータは、命令のフィールド内に位置する。別の例において、命令ごとのオーバーフロー割込みインジケータは、命令にアクセス可能な場所に位置する。
【0006】
1つの実施形態において、オーバーフロー条件が発生したことを特定することは、命令の実行に基づいてセットされたオーバーフロー・インジケータをチェックすることを含む。
【0007】
1つの例として、割込み処理を実行することは、割込み可能条件を報告することを含む。別の例として、割込み処理を実行することは、命令について、割込みを開始することを含む。
【0008】
更に、例として、規定値は1であり、別の規定値は0である。
【0009】
1つの実施形態において、命令を実行することは、1つまたは複数の演算を実行することを含み、オーバーフロー条件は、1つまたは複数の演算の演算結果が、結果のターゲット・フォーマットよりも大きいことに基づいて発生した。例として、演算は、算術演算、変換演算および移動演算からなる演算の群からの演算である。
【0010】
1つの実施形態において、オーバーフロー条件は、命令の演算の実行結果であり、割込み処理をバイパスすることは、命令によって生成されることになるマシン例外を抑制することを含む。
【0011】
1つまたは複数の態様に関するコンピュータ実施方法およびシステムも本明細書に記載され、特許請求される。更に、1つまたは複数の態様に関するサービスも本明細書に記載され、特許請求される場合がある。
【0012】
更なる特徴および利点が、本明細書に記載される技術を通じて実現される。他の実施形態および態様は、本明細書において詳細に記載され、特許請求される態様の一部とみなされる。
【0013】
1つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として特に指摘され、かつ明確に請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および利点は、添付の図面と併せて解釈される以下の詳細な説明から明白となる。
【図面の簡単な説明】
【0014】
図1A】本発明の1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の1つの例を示す。
図1B】本発明の1つまたは複数の態様による、図1Aのプロセッサの更なる詳細を示す。
図2】本発明の1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の別の例を示す。
図3】本発明の態様による、命令のオーバーフロー割込みインジケータに基づいて命令を実行する1つの例を示す。
図4】本発明の態様による、図3の命令のオーバーフロー割込みインジケータを用いることに関連付けられた処理の1つの例を示す。
図5A】本発明の態様による、コンピューティング環境内の処理を容易にする1つの例を示す。
図5B】本発明の態様による、コンピューティング環境内の処理を容易にする1つの例を示す。
図6A】本発明の1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の別の例を示す。
図6B図6Aのメモリの更なる詳細を示す。
図7】クラウド・コンピューティング環境の1つの実施形態を示す。
図8】抽象化モデル層の1つの例を示す。
【発明を実施するための形態】
【0015】
本発明の態様によれば、コンピューティング環境内の処理を容易にする能力が提供される。1つの例において、この能力は、オーバーフロー割込み条件を生成する命令の演算から結果として生じるオーバーフロー割込みを、命令ごとの単位で一時的に無効にすることを含む。この演算は、例えば、例として、コンピュータによる演算(例えば、算術的-10進、2進化10進、浮動小数点)、変換演算(例えば、2進から10進、10進から2進等)、または移動演算(例えば、10進値を1つの場所(例えば、レジスタ)から別の場所に移動する)、あるいはその組合せを含む。割込みを一時的に無効にすることによって、性能が改善される。
【0016】
1つの例として、命令は、命令セット・アーキテクチャ(ISA)の一部である。例えば、命令は、ハードウェア/ソフトウェア・インタフェースにおける単一アーキテクチャのハードウェア・マシン命令である。命令は、コンピュータによる演算、変換演算、移動演算、または結果として割込みが生じるオーバーフロー条件を引き起こす場合がある他の演算、あるいはその組合せを実行する複数の命令のうちの1つとすることができる。命令は、限定ではないが、コンピュータ処理、セキュリティ処理、様々な技術についての計算の実行等を含む、多くのタイプの処理において用いられる。
【0017】
本発明の態様によれば、割込みは、命令ごとの単位で無効にすることができる。例えば、セットされると、オーバーフロー条件の結果として生じるオーバーフロー割込みを一時的に無効にするオーバーフロー割込みインジケータ(例えば、修飾ビット)が命令に含まれる(または他の形で命令と関連付けられる)。命令から結果として生じる条件コードは、依然として、所望の場合、ユーザ・コードによって試験することができるオーバーフロー条件を適切に示すようにセットされている。
【0018】
図1Aを参照して、本発明の1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の1つの実施形態を説明する。コンピューティング環境100は、例えば1つまたは複数のバス108または他の接続、あるいはその両方を介して互いに結合された、例えば、プロセッサ102(例えば、中央処理装置)と、メモリ104(例えば、システム・メモリ、主記憶装置、中央記憶装置、記憶装置として知られるメイン・メモリ)と、1つまたは複数の入力/出力(I/O)デバイスまたはインタフェース106、あるいはその両方とを含む。
【0019】
1つの例において、プロセッサ102は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるz/Architecture(R)ハードウェア・アーキテクチャに基づき、同様にインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供され、z/Architectureハードウェア・アーキテクチャを実施するIBM Z(R)サーバ等のサーバの一部である。z/Architectureハードウェア・アーキテクチャの1つの実施形態は、参照によりその全体が本明細書に援用される、「z/Architecture Principles of Operation」(IBM Publication No. SA22-7832-11, 12th edition, September 2017)と題する刊行物に記載されている。しかしながら、z/Architectureハードウェア・アーキテクチャは、1つの例示的なアーキテクチャにすぎず、他のアーキテクチャまたは他のタイプのコンピューティング環境、あるいはその両方は、本発明の1つまたは複数の態様を含むか、または用いるか、あるいはその両方とすることができる。1つの例において、プロセッサは、同様に、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供される、z/OS(R)オペレーティング・システム等のオペレーティング・システムを実行する。
【0020】
プロセッサ102は、命令を実行するのに用いられる複数の機能コンポーネントを含む。図1Bに示されるように、これらの機能コンポーネントは、例えば、実行される命令をフェッチする命令フェッチ・コンポーネント120と、フェッチされた命令を復号し、複合された命令のオペランドを取得する命令復号ユニット122と、復号された命令を実行する命令実行コンポーネント124と、必要な場合、命令実行のためにメモリにアクセスするメモリ・アクセス・コンポーネント126と、実行された命令の結果を提供するライト・バック・コンポーネント130とを含む。これらのコンポーネントのうちの1つまたは複数は、本発明の1つまたは複数の態様によれば、本明細書に記載のオーバーフロー割込み処理を含むオーバーフロー処理において用いられる1つまたは複数の他のコンポーネントの少なくとも一部分を含むか、またはそこへのアクセスを有することができる。1つまたは複数の他のコンポーネントは、例えば、オーバーフロー・コンポーネント136を含む。
【0021】
図2を参照して、本発明の1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の別の例を説明する。1つの例において、コンピューティング環境は、z/Architectureハードウェア・アーキテクチャに基づくが、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ・コーポレーションまたは他社によって提供される他のアーキテクチャに基づいてもよい。
【0022】
図2を参照すると、1つの例において、コンピューティング環境は、中央電子処理装置(central electronics complex)(CEC)200を含む。CEC200は、例えば、1つまたは複数のプロセッサ(中央処理装置(CPU)として知られる)204および入力/出力サブシステム206に結合されたメモリ202(システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、記憶装置として知られる)等の複数のコンポーネントを備える。
【0023】
メモリ202は、例えば、1つまたは複数の論理区画208と、論理区画を管理するハイパーバイザ210と、プロセッサ・ファームウェア212とを備える。ハイパーバイザ210の1つの例は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるProcessor Resource/System Manager(PR/SM(商標))ハイパーバイザである。本明細書において用いられるとき、ファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、より高水準のマシン・コードの実施において用いられるハードウェア水準命令またはデータ構造あるいはその両方を含む。1つの実施形態において、ファームウェアは、例えば、基礎をなすハードウェアに固有の信頼されたソフトウェアまたはマイクロコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御するマイクロコードとして通常配信される専用コードを含む。
【0024】
各論理区画208は、別個のシステムとして機能することが可能である。すなわち、各論理区画は、独立してリセットされ、z/OSオペレーティング・システムまたは別のオペレーティング・システム等のゲスト・オペレーティング・システム220を実行し、異なるプログラム222を用いて動作することができる。論理区画において実行中のオペレーティング・システムまたはアプリケーション・プログラムは、全体のかつ完全なシステムにアクセスを有するように見えるが、実際にはその一部分のみが利用可能である。
【0025】
メモリ202は、論理区画に配分することができる物理的プロセッサ・リソースであるプロセッサ(例えば、CPU)204に結合される。例えば、論理区画208は、各々が、その論理区画に動的に配分することができる物理的プロセッサ・リソース204の全てまたは割当分(share)を表す1つまたは複数の論理プロセッサを含む。1つの例において、プロセッサ204は、本明細書に記載のオーバーフロー割込み処理を含むオーバーフロー処理を実行するオーバーフロー・コンポーネント260を備える。
【0026】
更に、メモリ202は、I/Oサブシステム206に結合される。I/Oサブシステム206は、中央電子処理装置の一部とすることも、別個とすることもできる。I/Oサブシステム206は、主記憶装置202と、中央電子処理装置に結合された入力/出力制御ユニット230および入力/出力(I/O)デバイス240との間の情報の流れを方向づける。
【0027】
多くのタイプのI/Oデバイスを用いることができる。1つの特定のタイプはデータ・ストレージ・デバイス250である。データ・ストレージ・デバイス250は、1つまたは複数のプログラム252、1つまたは複数のコンピュータ可読プログラム命令254、またはデータ、あるいはその組合せ等を記憶することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成することができる。
【0028】
本発明の態様の実施形態の機能を実行するように構成されたコンピュータ可読プログラム命令は、更にまたは代替的にメモリ202に含めることができる。多くの変形が可能である。
【0029】
中央電子処理装置200は、リムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ・システム記憶媒体を含むか、またはこれに結合されるか、あるいはその両方であり得る。例えば、中央電子処理装置200は、非リムーバブルで不揮発性の磁気媒体(通常、「ハード・ドライブ」と呼ばれる)、リムーバブルで不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対し読み出しおよび書き込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROMもしくは他の光学媒体等の、リムーバブルで不揮発性の光ディスクに対し読み出しもしくは書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれに結合されるか、あるいはその両方とすることができる。中央電子処理装置200と併せて、他のハードウェアまたはソフトウェア・コンポーネント、あるいはその両方を用いることができることが理解されるべきである。例は、限定ではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システム等を含む。
【0030】
更に、中央電子処理装置200は、多数の他の汎用または専用コンピューティング・システム環境または構成を用いて動作可能である。中央電子処理装置200と共に用いるのに適することができるよく知られたコンピューティング・システム、環境または構成あるいはその組合せの例は、限定ではないが、パーソナル・コンピュータ(PC)・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境等を含む。
【0031】
本明細書においてコンピューティング環境の様々な例が記載されるが、本発明の1つまたは複数の態様は、多くのタイプの環境と共に用いることができる。本明細書に提供されるコンピューティング環境は例にすぎない。
【0032】
本発明の態様によれば、プロセッサ102または204等のプロセッサ上で実行される命令は、オーバーフロー割込み処理が命令についてバイパスされるか否かを示す、命令ごとのオーバーフロー割込みインジケータを含むかまたはそこへのアクセスを有する。割込み処理をバイパスすることによって、実行サイクルが低減され、プロセッサの性能が改善される。オーバーフロー割込みインジケータに関する更なる詳細およびこれに関連付けられた処理が図3および図4を参照して説明される。
【0033】
最初に図3を参照すると、1つの実施形態において、命令300は、オーバーフロー割込みインジケータ(itr_ovr)を有するフィールド302および命令テキスト(Itext)を有する1つまたは複数のフィールド304を含む複数のフィールドを含む。命令テキストは、例えば、命令テキストによって指定された演算を実行するのに用いられるオペランドを含む。命令は、限定ではないが、例として、算術演算、例えば、10進演算、2進化10進演算、浮動小数点演算等;2進から10進、10進から2進等の変換演算;または移動演算(例えば、10進値の移動)、あるいはその組合せ等の計算を含む、オーバーフロー条件を生成する場合がある多くのタイプの演算を実行することができる。
【0034】
別の実施形態において、オーバーフロー割込みインジケータは、命令の明示的なフィールド内にあるのではなく、命令の暗黙的フィールドまたはレジスタ内に含まれる。更に、別の実施形態において、オーバーフロー割込みインジケータは、命令自体の一部ではなく、命令にアクセス可能な場所(例えば、レジスタまたはメモリ場所)にあるか、または実行される命令を変更するのに用いられる別の命令(例えば、プレフィックス命令)の一部である。実施形態と無関係に、オーバーフロー割込みインジケータは、オーバーフロー条件を生成する場合がある1つまたは複数の演算を実行することになる命令のために特に提供される命令ごとのインジケータである。
【0035】
図3の続きで、命令は、プロセッサの命令順序付けユニット310の発行キュー306にディスパッチされる、発行キュー306において、命令は、例えばオペランドが利用可能になるまで待機する。準備ができると、命令は、プロセッサの実行ユニット315の適切な機能実行ユニット312に発行される。例として、命令が10進命令である場合、命令は、10進計算を実行する機能ユニットに発行され、浮動小数点命令である場合、浮動小数点機能ユニットに発行される。他の例も可能である。
【0036】
実行ユニット312は、実行する命令、およびオーバーフロー割込みインジケータ(itr_ovr)302を受信する。命令が実行され、この際、1つまたは複数の演算が実行される。オーバーフロー条件が発生したか否かのインジケーション(例えば、ovf)が命令の実行から提供される。更に、条件コード318が命令の実行の結果として得られる。オーバーフロー条件が存在する場合、これは、1つの例において、条件コードに反映され、ユーザ・プログラムが所望の場合にオーバーフロー条件に対処することが可能になる。
【0037】
更に、本発明の態様によれば、オーバーフロー割込みインジケータ(itr_ovr)およびオーバーフロー条件インジケータ(ovf)が、オーバーフロー条件が報告されるか否かを示すために用いられるANDゲート320等の論理演算子に入力される。例えば、オーバーフロー条件が発生し(例えば、ovfが1にセットされている)、かつオーバーフロー割込みインジケータが、オーバーフロー条件が報告されることを示すようにセットされている(例えば、itr_ovrが1にセットされている)場合、割込み処理が行われる(322)。しかしながら、オーバーフロー条件が発生しなかった(例えば、ovfが0にセットされている)場合、オーバーフロー割込みインジケータの設定と無関係に、割込み処理は実行されない。更に、オーバーフロー条件が発生し(例えば、ovfが1にセットされている)、かつオーバーフロー割込みインジケータが割込み処理をバイパスするようにセットされている(例えば、ovr_itrが0にセットされている)場合、割込み処理はバイパスされる。
【0038】
他の実施形態において、他の論理演算子、またはインジケータの他の値、あるいはその両方を用いることができる(例えば、別の例では、割込みがバイパスされることを示すために、ovr_itrが1にセットされる)。多くの変形および可能性が存在する。
【0039】
図4を参照して、オーバーフロー割込みインジケータに関連付けられた処理に関する更なる詳細を説明する。1つの例において、この処理は、プロセッサ102またはプロセッサ204等のプロセッサによって実行される。
【0040】
図4を参照すると、最初に、結果としてオーバーフロー条件が生じる場合がある1つまたは複数の演算を実行する命令が、プロセッサの実行ユニット(例えば、実行ユニット315)に発行される(ステップ400)。命令は、プロセッサの実行ユニットによって実行され、この結果として、オーバーフロー条件が生じる場合がある(ステップ402)。オーバーフロー条件が発生したか否かに関する判断が行われる(調査404)。1つの例において、この判断は、オーバーフロー・インジケータ(ovr)をチェックすることによって行われる。オーバーフロー条件が存在しない(例えば、ovrが0にセットされている)場合、オーバーフロー割込みインジケータに関する処理が完了する(ステップ410)。
【0041】
調査404に戻ると、オーバーフロー条件が存在する(例えば、ovrが1にセットされている)場合、命令マスキング・ビットまたは修飾ビットとも呼ばれる命令のオーバーフロー割込みインジケータ(itr_ovr)が、割込み処理がバイパスされることを反映するようにセットされているか否かに関する更なる判断が行われる(調査406)。例えば、オーバーフロー割込みインジケータが規定値(例えば、1)にセットされている場合、オーバーフロー条件に基づいて、割込み処理が実行される。しかしながら、オーバーフロー割込みインジケータが別の規定値(例えば、0)にセットされている場合、オーバーフロー条件に基づいて、割込み処理がバイパスされる。オーバーフロー割込みインジケータ(命令マスキング・ビットとして知られる)は、例えば、割込み処理がバイパスされることを示す0にセットされているとき、セットされていると言われる。
【0042】
調査406の続きで、命令マスキング・ビット(例えば、itr_ovr)がセットされている(例えば、0にセットされている)か否かの判断が行われる。命令マスキング・ビット(例えば、itr_ovr)がセットされていない場合、すなわち、規定値(例えば、1)にセットされている場合、オーバーフロー割込み処理が開始される(ステップ408)。例えば、割込みが報告されるか、または割込みが開始される(例えば、割込みハンドラがシグナリングされる)か、あるいはその両方が行われる。すなわち、割込みはバイパスされない。オーバーフロー割込みインジケータに関する処理が完了する(ステップ410)。
【0043】
しかしながら、本発明の態様によれば、オーバーフロー割込みインジケータが他の規定値(例えば、0)にセットされている場合、割込み処理がバイパスされ(412)、オーバーフロー割込みインジケータに関する処理が完了する(ステップ410)。1つの例において、割込み処理をバイパスすることは、命令によって生成されることになるマシン例外を抑制することを含む。更なる例において、割込み処理をバイパスすることは、ステータス・マスク設定を上書きしないことを含む。
【0044】
本明細書に記載されるように、本発明の態様によれば、命令ごとのオーバーフロー割込みインジケータを用いて、オーバーフロー条件についてオーバーフロー割込みが報告される(または他の割込み処理が実行される、あるいはその両方が行われる)か否かを決定する。このインジケータを用いることによって、オーバーフローが予期されるか否かを判断するために、割込みを生成し得る命令を実行する前に入力オペランドを試験することが不要であり、これにより、追加の処理サイクルが節減され、コード長が低減し、複雑度が低減する。更に、オーバーフロー割込みを無効にするために特殊なカーネルが必要でなく、複雑度が低減する。加えて、命令ごとのインジケータを提供することによって、ユーザ・コードは、コードの様々な部分について、割込み処理が行われるか否かを指定することができる。コードの1つまたは複数の部分は、性能の理由により割込みを抑制することができる。命令ごとのインジケータは、命令自体によって生成されるマシン例外の厳密な命令ごとの抑制を可能にする。他の変形も可能である。
【0045】
本発明の1つまたは複数の態様は、コンピュータ技術に密接に結びつき、コンピュータ内の処理を容易にし、その性能を改善する。命令ごとのオーバーフロー割込みインジケータを提供することによって、例えば、行われる割込み数を低減することにより、およびユーザ・コードにおける柔軟性を提供することにより、性能が向上する。
【0046】
命令ごとのオーバーフロー割込みインジケータを用いる命令は、異なるタイプのタスクを実行する多くのタイプの処理に含めることができる。例えば、命令は、計算、変換または移動、あるいはその組合せが行われる内部コンピュータ処理;認証情報を検証するセキュリティ処理;例えば、距離情報の提供、車両、ロボット、医療機関において実行される計算等における、タスクを実行する際に算術演算が用いられる任意の処理;倉庫保管;在庫管理等に含まれる場合がある。多くの可能性が存在する。
【0047】
図5A図5Bを参照して、本発明の1つまたは複数の態様に関する、コンピューティング環境内の処理を容易にする1つの実施形態の更なる詳細を説明する。
【0048】
図5Aを参照すると、1つの実施形態において、命令がコンピューティング環境のプロセッサ上で実行され(500)、命令の実行に基づいて、オーバーフロー条件が発生したことが特定される(502)。更に、命令について、命令ごとのオーバーフロー割込みインジケータが取得される(504)。命令ごとのオーバーフロー割込みインジケータが規定値にセットされていることに基づいて、オーバーフロー条件のための割込み処理が実行され(506)、命令ごとのオーバーフロー割込みインジケータが別の規定値にセットされていることに基づいて、オーバーフロー条件のための割込み処理がバイパスされる(508)。
【0049】
例として、命令ごとのオーバーフロー割込みインジケータは、命令のフィールド内に位置する(510)か、または命令にアクセス可能な場所に位置する(512)。
【0050】
更に、1つの実施形態において、オーバーフロー条件が発生したことを特定することは、命令の実行に基づいてセットされたオーバーフロー・インジケータをチェックすることを含む(514)。
【0051】
更に、例として、割込み処理を実行することは、割込み可能条件を報告すること(516)、または命令について、割込みを開始すること(518)、あるいはその両方を含む。
【0052】
図5Bを参照すると、1つの実施形態において、規定値は1であり、別の規定値は0である(520)。
【0053】
命令を実行することは、例えば、1つまたは複数の演算を実行することを含み、オーバーフロー条件は、1つまたは複数の演算の演算結果が、結果のターゲット・フォーマットよりも大きいことに基づいて発生した(522)。例として、演算は、算術演算、変換演算および移動演算からなる演算の群からの演算である(524)。
【0054】
更に、1つの実施形態において、オーバーフロー条件は、命令の演算の実行結果であり、割込み処理をバイパスすることは、命令によって生成されることになるマシン例外を抑制することを含む(526)。
【0055】
他の変形および実施形態も可能である。
【0056】
本発明の態様は、多くのタイプのコンピューティング環境によって用いることができる。図6Aを参照して、本発明の1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の別の実施形態を説明する。この例において、コンピューティング環境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は、米国および他の国におけるインテル・コーポレーションまたはその子会社の商標または登録商標である。
【0057】
ネイティブ中央処理装置12は、環境内の処理中に用いられる1つもしくは複数の汎用レジスタまたは1つもしくは複数の専用レジスタ、あるいはその両方等の1つまたは複数のネイティブ・レジスタ20を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【0058】
更に、ネイティブ中央処理装置12は、メモリ14に記憶される命令およびコードを実行する。1つの特定の例において、中央処理装置は、メモリ14に記憶されたエミュレータ・コード22を実行する。このコードは、1つのアーキテクチャにおいて構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータ・コード22は、マシンが、PowerPCプロセッサ、HP Superdomeサーバ等の、z/Architectureハードウェア・アーキテクチャ以外のアーキテクチャに基づいて、z/Architectureハードウェア・アーキテクチャをエミュレートし、z/Architectureハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
【0059】
図6Bを参照して、エミュレータ・コード22に関する更なる詳細を説明する。メモリ14に記憶されたゲスト命令30は、ネイティブCPU12のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令(例えば、マシン命令に相関する)を含む。例えば、ゲスト命令30は、z/Architectureハードウェア・アーキテクチャに基づいてプロセッサ上で実行されるように設計された場合があるが、代わりに、例えばIntel Itanium IIプロセッサとすることができるネイティブCPU12においてエミュレートされている。1つの例において、エミュレータ・コード22は、メモリ14から1つまたは複数のゲスト命令30を取得し、任意選択で、取得された命令のローカル・バッファリングを提供する、命令フェッチ・ルーチン32を含む。また、エミュレータ・コード22は、取得されたゲスト命令のタイプを特定し、ゲスト命令を、1つまたは複数の対応するネイティブ命令36に変換する、命令変換ルーチン34を含む。この変換は、例えば、ゲスト命令によって実行される機能を識別し、その機能を実行するためのネイティブ命令を選択することを含む。
【0060】
更に、エミュレータ・コード22は、ネイティブ命令が実行されるようにするエミュレーション制御ルーチン40を含む。エミュレーション制御ルーチン40は、ネイティブCPU12が、1つまたは複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行し、そのような実行の終了時に、制御を命令フェッチ・ルーチンに戻し、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするようにすることができる。ネイティブ命令36の実行は、メモリ14からレジスタ内にデータをロードすること、データをレジスタからメモリに戻して記憶すること、または変換ルーチンによる決定に応じていくつかのタイプの算術演算もしくは論理演算を実行することを含むことができる。
【0061】
各ルーチンは、例えば、メモリに記憶され、ネイティブ中央処理装置12によって実行されるソフトウェアにおいて実施される。他の例において、ルーチンまたは演算のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェアまたはそれらの何らかの組合せにおいて実施される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ20を用いて、またはメモリ14内の場所を用いることによってエミュレートすることができる。実施形態において、ゲスト命令30、ネイティブ命令36およびエミュレータ・コード22は、同じメモリ内に存在することができるか、または異なるメモリ・デバイス間に分配することができる。
【0062】
上記で説明したコンピューティング環境は、用いることができるコンピューティング環境の例にすぎない。限定ではないが、非区画化環境、区画化環境、またはエミュレートされた環境、あるいはその組合せを含む他の環境が用いられてもよく、実施形態はいずれの環境にも限定されない。
【0063】
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成されることが可能である。例えば、本発明の1つまたは複数の態様によれば、各々を、オーバーフロー処理を提供するように構成することができる。
【0064】
1つまたは複数の態様は、クラウド・コンピューティングに関する場合がある。
【0065】
本開示は、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載の教示の実施は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在既知であるかまたは後に開発される任意の他のタイプのコンピューティング環境と併せて実施されることが可能である。
【0066】
クラウド・コンピューティングは、最小限の管理労力、またはサービス・プロバイダとの最小限の対話で迅速にプロビジョニングされ、かつリリースされることが可能である構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有されるプールに対する好都合な、オンデマンドのネットワーク・アクセスを可能にするためのサービス・デリバリのモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つの展開モデルとを含んでよい。
【0067】
特徴は、以下のとおりである。
オンデマンド・セルフ・サービス:クラウド・コンシューマが、サービスのプロバイダとの人のやりとりを要求することなしに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージ等のコンピューティング能力を一方的にプロビジョニングすることが可能である。
ブロード・ネットワーク・アクセス:能力が、ネットワーク上で利用可能であり、かつ異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、モバイル電話、ラップトップ、およびPDA)による使用を促進する標準機構を通じてアクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数のコンシューマにサービングするためにプールされ、様々な物理リソースおよび仮想リソースが、需要に応じて動的に割当ておよび再割当てされている。コンシューマが、一般に、提供されるリソースの厳密な場所をまったく管理しておらず、それについての知識も有さないが、より高い抽象化レベル(例えば、国、州、またはデータセンタ)において場所を指定することができる可能性があるという点で、或る種の場所独立性が存在する。
迅速な伸縮性:急速にスケール・アウトするように、かつ急速にスケール・インすべく迅速にリリースされるように、一部の事例では自動的に、能力が迅速にかつ伸縮的にプロビジョニングされることが可能である。コンシューマには、プロビジョニングのために利用可能な能力は、しばしば、無制限であるように見え、かつ任意の時点で任意の数量で購入されることが可能である。
測定されるサービス:クラウド・システムが、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適切な抽象性の何らかのレベルで測定能力を活用することによって、リソース使用を自動的に制御し最適化する。リソース使用率が、監視され、制御され、かつ報告されて、利用されるサービスのプロバイダおよびコンシューマの両方に透明性を提供することが可能である。
【0068】
サービス・モデルは、以下のとおりである。
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)等のシン・クライアント・インタフェースを通じて様々なクライアント・デバイスからアクセス可能である。コンシューマは、限られたユーザ特有のアプリケーション構成設定を可能な例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション能力さえも含め、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしない。
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマによって作成された、または獲得されたアプリケーションをクラウド・インフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含め、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしないが、展開されるアプリケーション、および、場合により、アプリケーション・ホスティング環境構成に対する制御を有する。
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供される能力は、コンシューマが、オペレーティング・システムと、アプリケーションとを含むことができる任意のソフトウェアを展開し、実行することができる場合に、処理、ストレージ、ネットワーク、および他の基礎的なコンピューティング・リソースをプロビジョニングすることである。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしないが、オペレーティング・システム、ストレージ、展開されるアプリケーションに対する制御、および、場合により、選定されたネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の限られた制御を有する。
【0069】
展開モデルは、以下のとおりである。
プライベート・クラウド:クラウド・インフラストラクチャは、専ら組織のために運用される。クラウド・インフラストラクチャは、組織またはサード・パーティによって管理されてもよく、オン・プレミスで存在しても、オフ・プレミスで存在してもよい。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、かつ共有される関心(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織またはサード・パーティによって管理されてもよく、オン・プレミスで存在しても、オフ・プレミスで存在してもよい。
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大きい業界グループに提供され、かつクラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ移植性およびアプリケーション移植性(例えば、クラウド間の負荷分散のためのクラウド・バースティング)を可能にする、標準化技術または専有技術によって共に結び付けられた2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成である。
【0070】
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール性、および意味相互運用性に焦点を合わせて、サービス指向である。クラウド・コンピューティングの中核には、互いに接続されたノードのネットワークを含むインフラストラクチャがある。
【0071】
次に図7を参照すると、例示的なクラウド・コンピューティング環境50が示される。図示されるとおり、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せ等の、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信することができる、1つまたは複数のクラウド・コンピューティング・ノード52を含む。ノード52は、互いに通信することができる。ノード52は、上記で説明されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはその組合せ等の、1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化されてもよい(図示せず)。このことは、クラウド・コンピューティング環境50が、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして提供することを可能にする。図7に示されるコンピューティング・デバイス54A~Nのタイプは、単に例示的であることが意図されること、ならびにコンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続、あるいはその両方を介して(例えば、ウェブ・ブラウザを使用して)任意のタイプのコンピュータ化されたデバイスと通信することができることが理解される。
【0072】
次に図8を参照すると、クラウド・コンピューティング環境50(図7)によって提供される機能抽象化層のセットが示される。図8に示されるコンポーネント、層、および機能は、単に例示的であることが意図され、本発明の実施形態は、これらに限定されないことをあらかじめ理解されたい。図示されるとおり、以下の層および対応する機能が提供される。
【0073】
ハードウェアおよびソフトウェア層60が、ハードウェア・コンポーネントと、ソフトウェア・コンポーネントとを含む。ハードウェア・コンポーネントの例は、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67と、データベース・ソフトウェア68とを含む。
【0074】
仮想化層70が、仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供されることが可能な抽象化層を提供する。
【0075】
一例において、管理層80が、以下に説明される機能を提供してもよい。リソース・プロビジョニング81が、クラウド・コンピューティング環境内でタスクを実行するのに利用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。測定および価格設定82が、クラウド・コンピューティング環境内でリソースが利用されるにつれての費用追跡、およびこれらのリソースの消費に関する料金請求またはインボイス送付を提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティが、クラウド・コンシューマおよびタスクに関する身元検証、ならびにデータおよび他のリソースに関する保護を提供する。ユーザ・ポータル83が、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84が、要求されるサービス・レベルが満たされるようにクラウド・コンピューティング・リソース配分および管理を提供する。サービス・レベル合意(SLA)計画および履行85が、SLAにより将来の要求が予期されるクラウド・コンピューティング・リソースの事前準備および調達を提供する。
【0076】
作業負荷層90が、クラウド・コンピューティング環境が利用されることが可能な機能の例を提供する。この層から提供されることが可能な作業負荷および機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育デリバリ93、データ・アナリティックス処理94、トランザクション処理95、およびオーバーフロー割込み処理96を含む。
【0077】
本発明の態様は、統合の任意の可能な技術詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【0078】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持すること、および記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定ではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記の任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能なプログラマブル・リード・オンリー・メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカード、もしくは命令が記録されている溝の中の隆起構造等の機械的に符号化されたデバイス、および以上の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または配線を通して伝送される電気信号等の、一過性の信号自体であると解釈されるべきではない。
【0079】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされること、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、伝送光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0080】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはSmalltalk(R)、C++等のオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似したプログラミング言語等の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上で、かつ部分的に遠隔コンピュータ上で、または完全に遠隔コンピュータもしくは遠隔サーバの上で実行することができる。完全に遠隔コンピュータもしくは遠隔サーバの上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを利用してインターネットを通じて)行われてもよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、本発明の態様を実行するためにその電子回路を個人設定すべく、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行してもよい。
【0081】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートまたはブロック図、あるいはその両方を参照して本明細書において説明される。フローチャートまたはブロック図、あるいはその両方の各ブロック、ならびにフローチャートまたはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装されることが可能であることが理解されよう。
【0082】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するための手段を作り出すように、マシンを作り出すために汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、特定の方式で機能するようにコンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
【0083】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイスの上で一連の動作ステップを実行させるものであってもよい。
【0084】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を備える、命令のモジュール、セグメント、または一部分を表すことが可能である。いくつかの代替的な実装形態において、ブロックに記載される機能は、図に記載される順序を外れて生じてもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、またはそれらのブロックが、関与する機能に依存して、ときとして、逆の順序で実行されてもよい。また、ブロック図またはフローチャート、あるいはその両方の各ブロック、ならびにブロック図またはフローチャート、あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実装されることが可能であることにも留意されたい。
【0085】
上記に加えて、1つまたは複数の態様が、顧客環境の管理を提供するサービス・プロバイダによって提供、提案、展開、管理、サービス提供されること等が可能である。例えば、サービス・プロバイダが、1つまたは複数の顧客に関する1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャ、あるいはその両方を作成、保守、サポートすること等が可能である。その見返りとして、サービス・プロバイダは、例えば、サブスクリプションまたは料金合意、あるいはその両方の下で顧客から支払いを受け取ってもよい。更に、または代替的に、サービス・プロバイダは、1つまたは複数のサード・パーティに対する広告コンテンツの販売から支払いを受け取ってもよい。
【0086】
一態様において、1つまたは複数の実施形態を実行するためのアプリケーションが展開されてもよい。一例として、アプリケーションを展開することは、1つまたは複数の実施形態を実行するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【0087】
更なる態様として、コンピュータ可読コードをコンピューティング・システムに組み込むことを含むコンピューティング・インフラストラクチャを展開することができ、コンピューティング・システムと組み合わされたコードは、1つまたは複数の実施形態を実行することが可能である。
【0088】
また更なる態様として、コンピュータ可読コードをコンピュータ・システムに組み込むことを含む、コンピューティング・インフラストラクチャを組み込むためのプロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を備え、コンピュータ媒体は、1つまたは複数の実施形態を備える。コンピュータ・システムと組み合わされたコードは、1つまたは複数の実施形態を実行することが可能である。
【0089】
上記で様々な実施形態が説明されたが、これらは例にすぎない。例えば、他のアーキテクチャのコンピューティング環境を用いて、1つまたは複数の実施形態を組み込み、用いることができる。更に、異なる命令または演算が用いられてもよい。加えて、異なるタイプのインジケータが指定されてもよい。多くの変形が可能である。
【0090】
更に、他のタイプのコンピューティング環境が利益となり、用いられ得る。例として、システム・バスを通じてメモリ素子と直接または間接的に結合された少なくとも2つのプロセッサを含む、プログラムコードの記憶または実行、あるいはその両方を行うのに適したデータ処理システムが使用可能である。メモリ素子は、例えば、実行中にバルク・ストレージからコードが索出されなくてはならない回数を減らすために、少なくとも何らかのプログラムコードの一時的なストレージを提供する、プログラムコード、バルク・ストレージ、およびキャッシュ・メモリの実際の実行の間に用いられる、ローカル・メモリを含む。
【0091】
入力/出力またはI/Oデバイス(限定ではないが、キーボード、ディスプレイ、ポインティングデバイス、DASD、テープ、CD、DVD、サム・ドライブおよび他のメモリ媒体等を含む)は、直接またはI/Oコントローラの介在を通して、システムに結合することができる。ネットワーク・アダプタもまた、プライベート・ネットワークまたはパブリック・ネットワークの介在を通じて、データ処理システムが、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合されることを可能にするように、システムと結合されることが可能である。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、利用可能なタイプのネットワーク・アダプタのうちの僅かにすぎない。
【0092】
本明細書において使用される術語は、特定の実施形態を説明することのみを目的としており、限定することは意図していない。本明細書において用いられるとき、単数形「a」、「an」および「the」は、文脈上明らかに別段の指示がある場合を除き、複数形も包含することが意図されている。用語「含む(comprises)」または「含む(comprising)」あるいはその両方は、本明細書において使用される場合、挙げられている特徴、整数、ステップ、動作、要素またはコンポーネント、あるいはそれらの組合せの存在を特定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネントまたはそれらの群、あるいはそれらの組合せの存在または追加を除外しないことが、更に理解されるであろう。
【0093】
添付の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および均等物は、存在する場合、具体的に特許請求されるように、他の特許請求される要素と組み合せて機能を実行するための任意の構造、材料、または動作を含むことを意図する。1つまたは複数の実施形態の説明は、例示と説明の目的で提示されているが、網羅的であることも、開示される形態に限定されることも意図されない。多くの変形形態および変更形態が、当業者には明白となろう。実施形態は、様々な態様および実際的な応用を最もよく説明するため、ならびに当業者が、企図される特定の用途に適するように様々な変形を伴って様々な実施形態を理解することを可能にするために選択され、説明された。
図1A
図1B
図2
図3
図4
図5A
図5B
図6A
図6B
図7
図8