(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-26
(54)【発明の名称】記憶ブロック・アドレス・リスト・エントリ変換アーキテクチャ
(51)【国際特許分類】
G06F 13/12 20060101AFI20240918BHJP
G06F 13/14 20060101ALI20240918BHJP
G06F 3/06 20060101ALI20240918BHJP
【FI】
G06F13/12 340G
G06F13/14 320H
G06F3/06 301K
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024513764
(86)(22)【出願日】2022-08-25
(85)【翻訳文提出日】2024-02-29
(86)【国際出願番号】 EP2022073659
(87)【国際公開番号】W WO2023041299
(87)【国際公開日】2023-03-23
(32)【優先日】2021-09-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ホプキンス、ルーク
(72)【発明者】
【氏名】ベヒト、マイケル、ジェームス
(72)【発明者】
【氏名】コロッナ、クリストファー
(72)【発明者】
【氏名】グエンダート、スティーブン、ロバート
(72)【発明者】
【氏名】カタラノ、パスカル
(57)【要約】
態様は、変換対象のデータを取得することを含む。記憶ブロック・アドレス・リスト(SBAL)中の記憶ブロック・アドレス・リスト・エントリ(SBALE)に基づいて、データに適用される選択変換が決定される。SBALEは、適用対象の選択変換の決定に用いられる少なくとも1つのフィールドを含む。選択変換のデータへの適用によって変換データが生成され、SBALにより指定された場所に変換データが配置される。
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
変換対象のデータを取得することと、
記憶ブロック・アドレス・リスト(SBAL)中の記憶ブロック・アドレス・リスト・エントリ(SBALE)に基づいて、前記データに適用される選択変換を決定することであり、前記SBALEが、適用対象の前記選択変換の決定に用いられる少なくとも1つのフィールドを含む、前記決定することと、
前記選択変換を前記データに実行して、変換データを生成することと、
前記変換データを前記SBALにより指定された場所に配置することと、
を含むコンピュータ実装方法。
【請求項2】
前記選択変換を含む複数の変換が前記データに対して実行される、請求項1に記載の方法。
【請求項3】
前記複数の変換のうちの少なくとも2つが前記データに対して並行に実行され、少なくとも第2の変換データが生成されて第2の場所に配置される、請求項2に記載の方法。
【請求項4】
前記複数の変換のうちの少なくとも2つが前記データに対して連続的に実行される、請求項2に記載の方法。
【請求項5】
変換対象の前記データを前記取得することが、変換が前記データに適用される旨の指標に基づき、前記指標が、前記SBALEにおける少なくとも1つの付加的なフィールドに基づく、請求項1に記載の方法。
【請求項6】
前記SBALEの前記少なくとも1つのフィールドが、変換種別フィールドを含み、前記選択変換を前記決定することが、前記選択変換の指標に対して前記変換種別フィールドをチェックすることを含む、請求項1に記載の方法。
【請求項7】
前記少なくとも1つのフィールドが、変換副種別フィールドをさらに含み、前記選択変換を前記決定することが、前記選択変換の前記指標に対して前記変換副種別フィールドをチェックすることをさらに含む、請求項6に記載の方法。
【請求項8】
前記SBALが、コンピューティング・システムのメモリと前記コンピューティング・システムに結合された外部記憶装置との間の入出力(I/O)サブシステムを介した前記データの伝送に使用される、請求項1に記載の方法。
【請求項9】
前記選択変換が、前記SBALEにより指定された複数の種類の変換のうちの1種類の変換である、請求項1に記載の方法。
【請求項10】
前記複数の種類の変換が、数学演算、パケット・フィルタ、統計解析、テレメトリ、およびマルチキャスト・レプリケーションを含む、請求項9に記載の方法。
【請求項11】
少なくとも前記決定が、コンピューティング・システムのメモリと前記コンピューティング・システムに結合された外部記憶装置との間の前記データの処理に合わせて実行される、請求項1に記載の方法。
【請求項12】
システムであって、
コンピュータ可読命令を実行するための1つまたは複数のプロセッサを備え、前記コンピュータ可読命令が、
変換対象のデータを取得することと、
記憶ブロック・アドレス・リスト(SBAL)中の記憶ブロック・アドレス・リスト・エントリ(SBALE)に基づいて、前記データに適用される選択変換を決定することであり、前記SBALEが、適用対象の前記選択変換の決定に用いられる少なくとも1つのフィールドを含む、前記決定することと、
前記選択変換を前記データに実行して、変換データを生成することと、
前記変換データを前記SBALにより指定された場所に配置することと、
を含む動作を実行するように前記1つまたは複数のプロセッサを制御する、システム。
【請求項13】
前記選択変換を含む複数の変換が前記データに対して実行される、請求項12に記載のシステム。
【請求項14】
変換対象の前記データを前記取得することが、変換が前記データに適用される旨の指標に基づき、前記指標が、前記SBALEにおける少なくとも1つの付加的なフィールドに基づく、請求項12に記載のシステム。
【請求項15】
前記SBALEの前記少なくとも1つのフィールドが、変換種別フィールドを含み、前記選択変換を前記決定することが、前記選択変換の指標に対して前記変換種別フィールドをチェックすることを含む、請求項12に記載のシステム。
【請求項16】
前記SBALが、コンピューティング・システムのメモリと前記コンピューティング・システムに結合された外部記憶装置との間の入出力(I/O)サブシステムを介した前記データの伝送に使用される、請求項12に記載のシステム。
【請求項17】
前記選択変換が、前記SBALEにより指定された複数の種類の変換のうちの1種類の変換である、請求項12に記載のシステム。
【請求項18】
前記複数の種類の変換が、数学演算、パケット・フィルタ、統計解析、テレメトリ、およびマルチキャスト・レプリケーションを含む、請求項17に記載のシステム。
【請求項19】
少なくとも前記決定が、コンピューティング・システムのメモリと前記コンピューティング・システムに結合された外部記憶装置との間の前記データの処理に合わせて実行される、請求項12に記載のシステム。
【請求項20】
プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、前記プログラム命令が1つまたは複数のプロセッサによって実行可能であり、請求項1ないし11のいずれかに記載の方法を前記1つまたは複数のプロセッサに実行させる、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的にはコンピューティング環境内の入出力(I/O)処理の容易化に関し、より詳細には、記憶ブロック・アドレス・リスト・エントリ(SBALE)変換アーキテクチャの提供に関する。
【背景技術】
【0002】
I/O処理は、コンピューティング・システムのメイン・メモリとコンピューティング・システムに結合された1つまたは複数の外部装置との間のデータの転送を含む。データの転送を容易化するため、1つまたは複数のI/O動作が採用される。I/O動作の使用によって、1つまたは複数の外部記憶装置からデータを取得し、データに対して1つまたは複数の演算を実行し、その結果を1つまたは複数の記憶装置に格納する。データに対して実行され得る演算の1つとして変換がある。
【発明の概要】
【0003】
本発明の態様は、記憶ブロック・アドレス・リスト・エントリ(SBALE)変換アーキテクチャを対象とする。非限定的かつ例示的なコンピュータ実装方法は、変換対象のデータを取得することを含む。記憶ブロック・アドレス・リスト(SBAL)中のSBALEに基づいて、データに適用される選択変換が決定される。SBALEは、適用対象の選択変換の決定に用いられる少なくとも1つのフィールドを含む。選択変換がデータへ適用されて変換データが生成され、変換データがSBALにより指定された場所に配置される。
【0004】
本発明の他の態様は、コンピュータ・システムおよびコンピュータ・プログラム製品において、上述の方法の特徴を実装する。
【0005】
付加的な技術的特徴および利益については、本発明の技術によって実現される。本発明の実施形態および態様を本明細書において詳しく説明するが、これらは、特許請求の範囲に係る主題の一部と考えられる。より深い理解のため、詳細は説明および図面を参照する。
【0006】
本明細書に記載の独占権の明細は、本明細書の最後の特許請求の範囲において詳細に示されるとともに明確に請求される。本発明の実施形態の上記および他の特徴および利点については、添付の図面と併用する以下の詳細な説明から明らかである。
【図面の簡単な説明】
【0007】
【
図1】本発明の1つまたは複数の実施形態に係る、記憶ブロック・アドレス・リスト・エントリ(SBALE)変換アーキテクチャを提供するためのコンピューティング環境のブロック図である。
【
図2】本発明の1つまたは複数の実施形態に係る、記憶ブロック・アドレス・リスト(SBAL)のブロック図である。
【
図3】本発明の1つまたは複数の実施形態に係る、コマンドSBALのブロック図である。
【
図4】本発明の1つまたは複数の実施形態に係る、キュー転送制御(queue-transfer-control)ブロック(QTCB)SBALEおよびデータSBALEのブロック図である。
【
図5】本発明の1つまたは複数の実施形態に係る、演算子SBALEのブロック図である。
【
図6】本発明の1つまたは複数の実施形態に係る、即時配置(immediate placement)演算子SBALEのブロック図である。
【
図7】本発明の1つまたは複数の実施形態に係る、制御ブロックベース配置(controlblock-based placement)演算子SBALEのブロック図である。
【
図8】本発明の1つまたは複数の実施形態に係る、制御ブロックベース変換(control block-based transform)演算子SBALEのブロック図である。
【
図9】本発明の1つまたは複数の実施形態に係る、SBALE変換アーキテクチャを使用して変換を適用するための方法のフロー図である。
【
図10】本発明の1つまたは複数の実施形態に係る、複数の変換パイプラインのブロック図である。
【
図11】本発明の1つまたは複数の実施形態に係る、クラウド・コンピューティング環境を示した図である。
【
図12】本発明の1つまたは複数の実施形態に係る、抽象化モデル・レイヤを示した図である。
【
図13】本発明の1つまたは複数の実施形態に係る、ポート・ミラーリングを実行するためのシステムを示した図である。
【発明を実施するための形態】
【0008】
本明細書に記載の図は例示である。本発明の範囲から逸脱することなく、図面またはそこに記載の動作には多くの変形が存在し得る。たとえば、動作を異なる順序で実行することも可能であるし、動作を追加、消去、または変更することも可能である。また、用語「結合された(coupled)」およびその変形は、2つの要素間に伝達経路を有することを表し、要素/接続の介在を伴わない要素間の直接接続を暗示してはいない。これらの変形例はすべて、本明細書の一部と考えられる。
【0009】
本発明の1つまたは複数の実施形態は、記憶ブロック・アドレス・リスト・エントリ(SBALE)変換アーキテクチャを提供することにより、キュー直接入出力(QDIO)処理を容易化する。本発明の1つまたは複数の実施形態によれば、コンピューティング・システムと外部記憶装置との間で移動するデータに対して、データ移動に合わせて変換を実行することにより、入出力(I/O)処理が容易化される。すなわち、実行の決定および変換の実行は、コンピューティング・システムと外部記憶装置との間の直接経路において発生する。一例として、コンピューティング・システムまたはI/Oシステムあるいはその両方の1つまたは複数のマイクロコントローラ(または処理ロジックあるいはその両方)は、変換を実行するかを判定した後、ホスト・コントローラ等の付加的なマシンまたはコンピューティング・システムおよびI/Oシステムの外部の他のコンポーネントから独立して変換を実行する。
【0010】
本発明の1つまたは複数の実施形態では、SBALEを利用して、インバウンドまたはアウトバウンド・データに適用される1つまたは複数の演算子を指定する。演算子の種類としては、変換演算子および配置演算子が挙げられる。変換演算子としては、フィルタならびに統計および数学演算が挙げられるが、これらに限定されない。変換は、一連のイベントに基づいて経時的に変化し得るように関連付けられたステート・マシンも有し得る。ステート・マシンは、ドメイン固有言語(DSL)において指定され得る。配置演算子は、たとえばデータの宛先(仮想または物理)、持続的か否か、指定された宛先に向かうデータに適用すべき変換、および変換を適用すべき順序を指定することができる。本発明の1つまたは複数の実施形態によれば、トランザクションと関連付けられ、異なる変換を使用する複数の配置演算子、または、記憶ブロック・アドレス・リスト(SBAL)ごとの複数の配置が存在し得る。各配置演算子は、指定された順序で適用される一組の変換演算子識別子を参照し得る。
【0011】
QDIOは、他のデータ転送アーキテクチャと比較して、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)トラフィックのデータ転送速度および効率の向上に使用可能なデータ転送アーキテクチャである。QDIOは、実装コンピュータ・システムの主記憶において構築および管理されたデータ・キューの使用によって、オペレーティング・システム(OS)等のプログラムが1つもしくは複数のI/O装置または装置のネットワークと直接かつ非同期に通信するための手段を提供する。ここで、各QDIOキューが1つまたは複数のSBALを含み、各SBALが複数のSBALEを含む。(たとえば、SBALEのうちの1つに含まれる)SBALカウントは、I/O装置へのI/Oリクエストを構成するSBALの数を示し得る。キューは、OS I/Oスーパーバイザ等の集中制御メカニズムのサービスおよびこのようなメカニズムが示唆する結果的なオーバーヘッドを必要としない予測可能かつ効率的な通信の実行を可能にする。
【0012】
QDIO環境においてデータ変換を実行する現行の手法は、システムであって、外部記憶装置にデータを要求し、このシステムおよび外部記憶装置に結合されたI/Oサブシステムを介して外部記憶装置からデータを取得する、システムを含む。外部記憶装置から取得されたデータは、システムおよびI/Oサブシステムの外部にあって、このデータに適用される変換(存在する場合)を決定して実行する別のマシンに提供される。そして、変換結果がシステムにより取得され、外部記憶装置に格納されてもよい。
【0013】
これは、SBAL制御ブロックの内容に基づいてI/Oサブシステムにより変換が決定および適用される本発明の1つまたは複数の実施形態と対照的である。I/O制御ブロック(たとえば、SBAL制御ブロック)を使用することにより、ホスト・コントローラ等の付加的なマシンまたはコンピューティング・システムおよびI/Oサブシステムの外部の他のコンポーネントから独立して、変換を実行するかの判定および変換の性能(存在する場合)の決定が実行される。これにより、I/O処理性能を向上することができ、システム性能も向上し得る。
【0014】
また、SBAL制御ブロック(たとえば、SBAL中のSBALE)を使用してデータに適用される変換の種類を決定することにより、実行対象の選択変換の決定が容易化されるため、システム性能が向上し、複雑性が抑えられ、使用するハードウェアを減らす(たとえば、チェックを実行する別個のマシンをなくす)。また、本発明の1つまたは複数の実施形態によれば、同じデータ・ストリームに対して同時に適用される異なる変換を指定して、結果を異なる宛先に向かわせることができる。さらに、変換をターゲット・データと関連付ける方法は、SBAL制御ブロックにおいて規定される。
【0015】
ここで
図1を参照して、これは、本発明の1つまたは複数の実施形態に係るSBALE変換アーキテクチャを提供するためのコンピューティング環境100のブロック図を大略示している。一例として、
図1のコンピューティング環境は、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するz/Architecture(R)ハードウェア・アーキテクチャに基づく。ただし、z/Architectureハードウェア・アーキテクチャは、アーキテクチャの一例に過ぎない。本発明の態様は、他のアーキテクチャに基づいていてもよく、インテル(R)x86アーキテクチャ、インターナショナル・ビジネス・マシーンズ・コーポレーションの他のアーキテクチャ、または他社のアーキテクチャ、あるいはその組合せが挙げられるが、これらに限定されない。
【0016】
図1を参照するに、一例において、コンピューティング環境100は、入出力サブシステム104に結合されたコンピューティング・システム102を具備する。一例として、コンピューティング・システム102は、メモリ108(メイン・メモリ、システム・メモリ、ストレージ、主記憶、中央ストレージ等とも称する)に結合された1つまたは複数のプロセッサ106を具備する。本発明の1つまたは複数の実施形態によれば、メモリ108は、SBALを格納するためのQDIOキューを具備する。
図1に示すコンピューティング・システム102の全部または一部は、
図11の1つもしくは複数のコンピューティング・ノード10または
図13のコンピュータ・システム1300、あるいはその両方に実装可能である。
【0017】
プロセッサ106は、1つまたは複数のペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)接続等、1つまたは複数の接続またはバス112を介してI/Oサブシステム104に結合されている。また、他の接続またはバスが用いられてもよい。
図1に示す接続またはバスの全部または一部を
図11のクラウド環境50または
図13のネットワーク1312、あるいはその両方の少なくとも一部により実装可能である。
【0018】
I/Oサブシステム104は、1つまたは複数の入出力ドロワ120を具備しており、I/Oドロワ120は、たとえば1つまたは複数のスイッチ122および1つまたは複数のネットワーク・アダプタ124を具備する。
図1に示すI/Oサブシステム104の全部または一部を
図11の1つもしくは複数のコンピューティング・ノード10または
図13のコンピュータ・システム1300、あるいはその両方に実装可能である。一例においては、スイッチ122がプロセッサ106およびネットワーク・アダプタ124に結合されている。ネットワーク・アダプタ124は、たとえばコンバージド・ネットワーク・アダプタ(CNA)(たとえば、ファイバ・チャネル(FC)ホスト・バス・アダプタ(HBA)およびTCP/IPイーサネット(R)NICの両者を含む単一のネットワーク・インタフェース・カード(NIC))である。これは一例として、サーバをFCベースのストレージ・エリア・ネットワーク(SAN)およびイーサネットベースのローカル・エリア・ネットワーク(LAN)に接続する。
【0019】
I/Oサブシステム104は、1つまたは複数の外部記憶装置126に結合され、プロセッサ106を外部記憶装置126に結合するために用いられる。プロセッサ106と外部記憶装置126との間では、たとえばI/O動作によって、外部記憶装置126に格納されたデータ128が伝送される。一例として、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するz/OS(R)オペレーティング・システムまたはLinux(R)OS等、プロセッサ(たとえば、プロセッサ106)内で実行されるOSは、1つまたは複数のI/O動作を利用して、パス130等のパスに沿って外部記憶装置(たとえば、外部記憶装置126)からデータ(たとえば、データ128)を引き出す。また、他のOSが用いられてもよい。
【0020】
一例において、1つまたは複数のプロセッサ106は、本発明の1つまたは複数の態様に従って用いられる1つまたは複数のマイクロコントローラ110を具備する。たとえば、本明細書に記載の通り、I/O動作のデータに変換を適用すべきかの判定および変換を適用すべき場合の変換の実行のため、マイクロコントローラ110のうちの1つもしくは複数(またはコンピューティング・システムの処理ロジックあるいはその両方)が使用される。本発明の1つまたは複数の実施形態によれば、この変換は、別個のマイクロコントローラであるか、または、マイクロコントローラ(たとえば、マイクロコントローラ110)に含まれる
図1の変換エンジン132によって実行される。
【0021】
1つまたは複数のマイクロコントローラ(またはコンピューティング・システムの処理ロジックあるいはその両方)は、たとえばスイッチ(たとえば、スイッチ122)に結合された1つまたは複数の接続(たとえば、PCIe接続)を介してI/Oサブシステムに結合されたホスト・コントローラまたは他のコントローラの代わりに使用される。このため、変換の決定および実行は、I/O動作と合わせて発生する。すなわち、変換の決定および実行は、パス130の外側でI/Oサブシステムに結合されたホスト・コントローラまたはそのような他のコントローラから独立してパス130内で行われる。
【0022】
別の実施形態においては、I/Oサブシステム104に1つまたは複数のマイクロコントローラが配置され、本発明の一態様に従って、変換を適用すべきかの判定または変換を適用する決定に基づくこのような変換の実行、あるいはその両方に用いられてもよい。また、他の実施形態も可能である。
【0023】
図1のコンピューティング環境100に関して本明細書に記載の実施形態は、任意の適当なロジックで実装されてもよく、本明細書において言及するようなロジックは、種々の実施形態において、任意の好適なハードウェア(たとえば、とりわけプロセッサ、組み込みコントローラ、もしくは特定用途向け集積回路)、ソフトウェア(たとえば、とりわけアプリケーション)、ファームウェア、またはハードウェア、ソフトウェア、およびファームウェアの任意の好適な組合せを含み得る。
【0024】
ここで
図2を参照して、これは、本発明の1つまたは複数の実施形態に係るSBALの2つの例(SBAL202およびSBAL204)を大略示している。SBAL202およびSBAL204は、たとえば
図1のメモリ108のキューに格納可能である。SBAL202は、複数のエントリ(コマンドSBAL206、QTCB SBALE208、および1つまたは複数のデータSBALE210)を含む。本発明の1つまたは複数の実施形態によれば、コマンドSBAL206は、
図3のコマンドSBAL300に示すように構成されており、QTCB SBALE208は、以下の
図4のQTCB SBALE402に示すように構成されている。1つまたは複数のデータSBALE210は、SBAL202の最後に配置されており、本発明の1つまたは複数の実施形態によれば、データSBALE210は以下の
図4のデータSBALE404に示すように構成されている。本発明の1つまたは複数の実施形態によれば、SBALが如何なるデータ変換命令もデータ配置命令も含まない場合は、SBAL202に示すようなSBALを使用可能である。
【0025】
I/Oサブシステムによってデータ変換が実行される場合、本発明の1つまたは複数の実施形態では、
図2のSBAL204に示すように、SBAL202に類似する一方で、変換データを配置するためのデータ変換および配置を指定する付加的な演算子SBALE212を含むSBAL204を利用する。SBAL204は、コマンドSBAL206、QTCB SBALE208、1つまたは複数の演算子SBALE212、および1つまたは複数のデータSBALE210を含む。演算子SBALE212の例示的な実施形態については、以下の
図5~
図8に示す。本発明の実施形態では、
図2のSBAL204に示す3つの変換SBALEおよび3つの配置SBALE212に限らず、演算子SBALE212を一切含まないようにすることも可能であるし、演算子SBALE212を1つだけ含むことも可能であるし、より多くの演算子SBALE212を含むことも可能である。
【0026】
本発明の1つまたは複数の実施形態によれば、SBAL204は、如何なるデータSBALE210を含んでもよいし、含んでいなくてもよく、また、QTCB SBALE208を含んでもよいし、含んでいなくてもよい。たとえば、SBAL204は、変換および配置を指定する付加的な演算子SBALE212が後続するコマンドSBAL206のみを含んでもよい。この構成は、持続的な演算子の伝達または取り消しに用いられてもよい。
【0027】
ここで
図3を参照して、これは、本発明の1つまたは複数の実施形態に係るコマンドSBAL300のブロック図を大略示している。コマンドSBAL300は、それぞれが4つのバイト(バイト0、バイト1、バイト2、バイト3)を有する4つのワード(ワード0、ワード1、ワード2、ワード3)を含む。コマンドSBAL300のフィールドは、フラグ(このブロックがコマンドSBALを含むことを示すため、ゼロに設定されている)、後続SBALカウント、SBALF0、第1データ分割SBALEカウント、リクエストID、および2つの予約フィールドを含む。後続SBALカウントは、コマンドSBALに後続するSBALの数を示し、第1データ分割SBALEカウントは、読み書きリクエストの書き込み部中のSBALEの数またはI/Oリクエスト中の保護SBALEの数を示し、リクエストIDは、キュー上のすべての未解決リクエストにおける一意の識別子である。
【0028】
図3のコマンドSBAL300のSBALF0フィールドを参照して、ビット0は予約可能であり、ビット1はコマンドSBALEの読み出しのためのプログラム要求進行報告割り込みを示すことができ、ビット2、3はコマンドSBALEのみが使用する演算(記憶ブロック)種別(ステータス読み出し、書き込み、読み出し、読み書き)を示すことができ、ビット5、6はSBALシーケンス種別(チェーンの最後のSBAL、SBALなし(チェーンなし)(後続SBALカウント=ゼロ)、チェーンの中間のSBAL、チェーンの最初のSBAL(後続SBALカウントがゼロより大きい)を示すことができ、ビット7は予約可能である。
【0029】
ここで
図4を参照して、これは、本発明の1つまたは複数の実施形態に係るQTCB SBALE402およびデータSBALE404のブロック図を大略示している。QTCB SBALE402およびデータSBALE404は、アウトバウンド・データに使用可能なSBALEの例であり、それらはそれぞれ、それぞれが4つのバイト(バイト0、バイト1、バイト2、バイト3)を有する4つのワード(ワード0、ワード1、ワード2、ワード3)を含む。
図4に示すQTCB SBALE402のフィールドは、フラグ、ストレージ・キー、QTCBのサイズ、ホスト・メモリ中のQTCBのアドレス、および2つの予約フィールドを含む。
図4に示すデータSBALE404のフィールドは、フラグ、ストレージ・ブロックのサイズ、ホスト・メモリ中のストレージ・ブロックのアドレス、および2つの予約フィールドを含む。
【0030】
QTCB SBALE402およびデータSBALE404のフラグ・フィールドを参照して、ビット0は演算子SBALEであるかを示すことができ、ビット1は最後のSBALE(エントリ)であるかを示すことができ、ビット2はアドレスが(チャネルにより使用されない)4Kブロック内の連続ストレージを指すかを示すことができ、ビット3~7は予約可能である。
図4に示すQTCB SBALE402およびデータSBALE404の両者について、これらが演算子SBALEではないことから、ビット0は設定されない。本発明の1つまたは複数の実施形態によれば、フラグ・フィールドのビット7は、マークしたSBALEにのみ変換を適用すべきことを示すように設定可能である。ビット7が設定されない場合は、SBALのすべてのデータが変換/配置されることになる。
【0031】
ここで
図5を参照して、これは、本発明の1つまたは複数の実施形態に係るデータの変換および配置を実行するための演算子SBALE500のブロック図を大略示している。
図5に示す演算子SBALE500は、それぞれが4つのバイト(バイト0、バイト1、バイト2、バイト3)を有する4つのワード(ワード1、ワード2、ワード3、ワード4)を含む。
図5の演算子SBALE500のフィールドは、フラグ(ビット0が演算子SBALEであることを示すように設定されている)、演算子種別フラグ、変換または配置識別子、演算子固有フラグ、種別または変換ID、副種別または変換ID、演算子固有(必要に応じて)、および制御ブロック・ポインタまたは演算子固有データを含む。
図5に示すように、演算子種別フラグ・フィールドは、演算子SBALEに指定されたアドレスの場所において、演算が変換、配置、または即時配置のいずれであるかを示す。演算子固有フラグ・フィールドは、配置演算に適用されるビット(データがアウトバウンド・データであるかインバウンド・データであるか(配置演算子が持続的に適用される場合にのみ使用され、変換または1回限りの配置演算子には使用されない)、配置が物理的な場所(たとえば、ネットワーク・アダプタ上のポート)であるか仮想的な場所(たとえば、メモリ・アドレス)であるか、配置場所が1回使用されるか持続的に使用されるか1回限り使用されるか、を示すビットを含む)と、変換演算子に関するビット(マークしたSBALEにのみ変換が適用されるか(たとえば、フラグ・ビットが設定されたものを含むデータのサブセットのみを変換するか)を示すビットを含む)とを含む。
【0032】
上述の通り、I/O装置から受信されたデータは、このデータを要求するプログラムによる使用に先立って変換が必要となり得る。演算子SBALE500等の演算子SBALEの変換または配置IDフィールドにおいて識別され得る変換の種類としては、人工知能変換、データ・ハッシュ、データ圧縮、パケット・フィルタ、データ・フォーマット変換、統計解析に基づく変換、テレメトリ変換、およびデータ・レプリケーションが挙げられるが、これらに限定されない。統計解析において、データ変換としては、たとえば各データ点ziが変換値yi=f(fは数学関数)で置き換えられるような、データ・セット中の各データ点に対する決定論的数学関数の適用が可能である。テレメトリ変換では、たとえばシステムにより感覚データが取得され得、変換によってこの感覚データの使用が容易となり得る。別の例において、マルチキャスト変換は、解析器につながる第2のポートへとデータがミラーリングされるデータ・レプリケーションを含み得る。第2のポートは暗号化されていない可能性があるため、インフライトでデータを確認してデバッグすることができる。ここで、トラフィックは、暗号化されたカードに送られる。本発明の実施形態は、入力データを受信し、入力データとは異なる(たとえば、データ・レコード数が少ないもしくは多い、フォーマットが異なる、またはデータが異なる、あるいはその組合せ等である)出力データを生成する任意の変換または変換群の実行に利用可能であることから、上記変換例に限定されない。
【0033】
本発明の1つまたは複数の実施形態によれば、種別または変換IDフィールドの値の一例は、パケット捕捉、統計演算、テレメトリ、またはポート・ミラーリングを含み、副種別または変換IDフィールドの値の一例は、特定種類のパケット捕捉、演算すべきある種の統計平均、テレメトリ・データに適用される数学的変換、またはある種のポート・ミラーリングの識別子であり、演算子固有(必要に応じて)フィールドの値の一例は、種別および副種別により指定された変換に固有の値である。
【0034】
ここで
図6を参照して、これは、本発明の1つまたは複数の実施形態に係るデータの変換および配置を実行するための即時配置演算子SBALE600のブロック図を大略示している。即時配置演算子SBALE600は、付加的な情報の伝達に外部バッファも必要とする場合とは対照的に、SBAL自体での配置の実行に必要な情報をすべて含む。これは、I/OエンジンがSBALE600を有することで配置の実行に必要なすべてを把握することになる点を示唆する。したがって、従来の手法よりもコンパクトであり、個々の演算における非持続的な配置等、高い効率を要する場合に使用可能である。
【0035】
図6に示す即時配置演算子SBALE600のフィールドは、フラグ・フィールド(ビット0が演算子SBALEであることを示すように設定されている)、(SBALE600のワード2およびワード3のアドレスにおける)データの即時配置を示すように設定された演算子種別フラグ、配置演算子を識別するとともに、持続的な配置演算子(複数の演算に適用される演算子)の取り消し(または、除去)に使用可能な配置IDを含む。持続的配置の取り消しは、ワード1のバイト0に予約された変換IDによって伝達され得、または特別な変換演算子を用いた伝達が可能である。演算子固有フラグは、変換および配置演算が1回限り発生し、結果が仮想的な場所に格納されるべきであることを示し、3つの変換IDは、データに適用される変換を識別し、センチネル・フィールドは、それ以上の変換IDが存在しないことを示し、宛先メモリ・アドレスは、変換データを配置すべき場所である。
図6に示す例においては、ワード1に示す順序で3つの変換がデータに適用され、ワード2およびワード3のアドレスを起点として結果データが格納される。
【0036】
ここで
図7を参照して、これは、本発明の1つまたは複数の実施形態に係る制御ブロックベースの配置演算子SBALE700のブロック図を大略示している。制御ブロックベースの配置演算子SBALE700に示すような配置演算子の非即時ケースは、持続的ケースで通常使用されるより複雑な配置演算を可能にし得る。本明細書において、用語「持続的ケース(persistent case)」は、SBAL中のすべてのデータに適用される配置を表す。制御ブロックのフェッチには付加的なオーバーヘッドが使用されるものの、これはSBALに対して1回だけ実行されるため、持続的バージョン(または、持続的ケース)では問題にならない。本発明の1つまたは複数の実施形態によれば、持続的ケースは、このSBALのみならず、この演算および後続のすべての演算に適用されることを意味する。SBALのチェーンによって単一の演算が記述され得ることに留意するものとする。演算の最初のSBALをコマンドSBALと称する一方で、より多くのSBALが存在していてもよい。したがって、持続的配置演算子は、それが取り消されるまで、後続のすべての演算のための一組の変換および配置を確立し、複数の独立したSBALまたはSBALチェーンを網羅する可能性がある。
【0037】
図7に示す制御ブロックベースの配置演算子SBALE700を用いて実行し得るより複雑な配置演算の例としては、データまたはその一部を転送すべき外部ネットワーク装置の宛先アドレスの指定が挙げられるが、これに限定されない。別の複雑な配置演算子は、データを配置すべきメモリ内の場所およびサイズ等のバッファに関する任意の付加的なメタ情報を含むラッピング・バッファの特性を指定し得る。
【0038】
図7に示す制御ブロックベースの配置演算子SBALE700のフィールドは、フラグ・フィールド(ビット0が演算子SBALEであることを示すように設定されている)、非即時配置を示すように設定された演算子種別フラグ、配置ID、データが仮想的な場所へと持続的に送信されること(すなわち、持続的ケース)を示す演算子固有フラグ、および配置制御ブロック・アドレスを含む。本発明の1つまたは複数の実施形態によれば、データが仮想的な場所に配置または格納されていることを演算子固有フラグが示す場合、配置制御ブロックは、ラッピング・バッファ・フラグ、ラッピング・バッファ・サイズ、ラッピング・バッファ・ロケーション、またはラッピング・バッファへの現行インデックス、あるいはその組合せ等の情報を含むが、これらに限定されない。配置が物理的な場所であることを演算子固有フラグが示す場合、配置制御ブロックは、ネットワーク・アダプタ(たとえば、ホスト・バス・アダプタ)の配置に必要な情報を含む。
【0039】
ここで
図8を参照して、これは、本発明の1つまたは複数の実施形態に係る制御ブロックベースの変換演算子SBALE800のブロック図を大略示している。制御ブロックベースの変換演算子SBALE800は、演算捕捉のための特定種類のパケット・フィルタの提供等の変換演算の実行に使用可能であるが、これに限定されない。また、演算のいくつかの部分または種類のみを捕捉するため、特定のフィルタが制御ブロックにおいて符号化されている。また、制御ブロック変換の使用によって、I/O動作で読み出しているデータ・セットに対して実行すべき数学演算を指定することができる。これらの演算は、テレメトリ・データに適用可能であり、結果として、関連する配置演算子によって変換データ・セットが配置され得る。結果のデータは、適用演算子に基づいてデータを集約した1つまたは複数の値であってもよい。また、書き込みデータ・ストリームが修正されずに宛先装置に送られ、数学的に縮小された結果が配置演算子を介してメモリまたは1つもしくは複数の外部装置に格納され得る。同様に、読み出しデータ・ストリームが修正されずにメモリに読み込まれ、対応する数学的に縮小されたデータ・ストリームが関連する配置演算子によってメモリに配置されるか、または、外部装置に送信され得る。
【0040】
図8に示す制御ブロックベースの変換演算子SBALE800のフィールドは、フラグ・フィールド(ビット0が演算子SBALEであることを示すように設定されている)、非即時変換を示すように設定された演算子種別フラグ、配置演算子SBALEの配置演算子が参照するIDである変換ID、データが送信されることを示す演算子固有フラグ、「p」に設定された種別フィールド(変換種別を示す数値であり得る)、「q」に設定された副種別フィールド(変換副種別を示す数値であり得る)、および変換を記述するデータまたは変換メタデータが配置された変換制御ブロック・アドレスを含む。変換制御ブロック・アドレスは、バッファ、データ・ファイル、ステート・マシン等を指し得る。本発明の1つまたは複数の実施形態によれば、pは、演算捕捉変換を表し得、qは、トリガ・ステート・マシンによるパケット捕捉を含む演算捕捉副種別を表し得る。本発明の1つまたは複数の実施形態によれば、変換制御ブロック・アドレスは、捕捉を開始するイベント、捕捉を終了するイベント、および捕捉状態の場合に捕捉するものを決定するフィルタを指定するステート・マシン情報を参照可能である。本発明の1つまたは複数の実施形態によれば、変換メタデータは、データの暗号化または復号化に用いられる暗号鍵を含み得る。
【0041】
本明細書においては、
図2~
図8のSBALおよびSBALEの1つまたは複数の実施形態について、特定のフィールド、フィールドの場所、フィールドのサイズ、ビット、およびフィールドまたはビットの値を図示および説明したが、本発明の1つまたは複数の実施形態の範囲から逸脱することなく、他のフィールド、フィールドの場所、フィールドのサイズ、ビット、またはフィールドもしくはビットの値、あるいはその組合せが用いられてもよい。本明細書に記載していないフィールドのそれぞれのフィールドまたはサブフィールドあるいはその両方は、一実施形態において、空白にすること、所定の値(たとえば、ゼロ)を有すること、または無視される値を含むこと、あるいはその組合せが可能である。さらに、本発明の例示的な実施形態により使用するSBALおよびSBALEは、入出力処理において用いられる付加的なフィールドもしくはそのサブフィールド、より少ないフィールドもしくはそのサブフィールド、または他のフィールドもしくはそのサブフィールド、あるいはその組合せを含み得る。多くの可能性が存在する。
【0042】
ここで
図9を参照して、これは、本発明の1つまたは複数の実施形態に係るSBALE変換アーキテクチャを使用した変換を適用するための方法900のフロー図を大略示している。たとえば
図1の1つもしくは複数のマイクロコントローラ110または変換エンジン132あるいはその両方によって、
図9に示す処理の全部または一部が実行されてもよい。
図9に示す方法900は、
図1のコンピューティング・システム102等のコンピューティング・システムと
図1の記憶装置126等の外部記憶装置との間で移動しているデータに対して、このデータ移動と合わせて変換を適用すべきかの判定にSBALEを使用する一例である。本発明の1つまたは複数の実施形態において、
図9のブロック902では、I/O入出力動作中にマイクロコントローラがデータ・パケットを取得し(たとえば、受信するか、提供されるか、読み出し)、ブロック904では、データ・パケットと関連付けられた処理を実行する。たとえば、マイクロコントローラは、ブロック906において、データ・パケットのデータに変換を実行すべきかを判定する。一例として、マイクロコントローラは、データ・パケットと関連付けられたSBAL(たとえば、
図2のSBAL202またはSBAL204)の内容をチェックして、データに変換を適用すべきかを判定する。たとえば、マイクロコントローラは、SBAL内のSBALEをチェックして、そのいずれかが演算子SBALEであるかを判定することができ、演算子SBALEが識別された場合は、データに変換を適用すべきと判定することができる。上述のSBALEの実施形態の1つまたは複数においては、SBALEのフラグ・フィールドのビット0の使用によって、SBALEが演算子SBALEであるかを示す。
【0043】
ブロック906において、変換を適用すべきと判定した場合、マイクロコントローラ(たとえば、
図1の変換エンジン132)は、データに変換を実行する。たとえば、人工知能変換が選択され、特に、フィルタ機能等の特定の人工知能機能が選択された場合、マイクロコントローラは、この特定の機能をデータに実行する。変換の種類によっては、他の変換が同様に実行される。ただし、変換を適用すべきでない場合は、変換が実行されない。
【0044】
本発明の1つまたは複数の実施形態によれば、ブロック906において変換を実行すべきかをチェックすること、および、ブロック908において実行すべき変換(存在する場合)を決定することは、1つまたは複数のマイクロコントローラにより実行される。たとえば、同じマイクロコントローラがチェックおよび決定の両者を実行するようにしてもよいし、異なるマイクロコントローラがチェックおよび決定を実行するようにしてもよい。別の例としては、マイクロコントローラまたはコンピューティング・システム等のロジックによってチェックが実行されてもよく、このチェックに基づいて、選択されたマイクロコントローラまたは変換エンジンが変換を実行する。種々の実施態様が可能である。
【0045】
図9に示す処理は、任意特定の順序で演算を実行すべきこと、または
図2に示すすべての演算をあらゆる場合に含むべきことを示すことを意図しない。また、
図2に示す処理は、任意の好適な数の付加的な演算を含み得る。
【0046】
ここで
図10を参照して、これは、本発明の1つまたは複数の実施形態に係る複数の変換パイプラインのブロック
図1000を大略示している。
図10に示すように、アウトバウンド・データ・ストリーム1002がSBALのSBALEにおいて指定される。各ブロック1004a、1004b、1004c(本明細書においてはブロック1004と総称する)、1006a、1006b、1006c(本明細書においては1006と総称する)は、データの変換または配置を実行する。
図10に示すように、変換演算子(たとえば、ブロック1004)のチェーンは、最後に配置演算子(たとえば、ブロック1006)を有する。本発明の1つまたは複数の実施形態によれば、(単一のSBALにより記述される)単一のトランザクションが1つまたは複数の変換/配置パイプラインを含む。
図10に示す例は、単一のトランザクション上で単一のSBALにプログラミング可能な3つの変換/配置パイプラインを含む。パイプラインはそれぞれ、異なる場所(メモリ・エリア1 1008a、ホスト・バス・アダプタ(HBA)1008b、およびメモリ・エリア2 1008c)に配置される。
【0047】
異なるパイプラインの提供および使用によって、同じトランザクションの異なる表示が可能となる。
【0048】
本開示は、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書に列挙する教示内容の実装は、クラウド・コンピューティング環境に限定されないことが了解されるものとする。むしろ、本発明の実施形態は、現在既知または今後開発のその他の任意の種類のコンピューティング環境と併せて実装可能である。
【0049】
クラウド・コンピューティングは、最小限の管理労力またはサービス提供者との相互作用で迅速に設定および公開し得る設定可能な演算リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの簡便なオンデマンド・ネットワーク・アクセスを可能にするサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの配置モデルを含み得る。
【0050】
特性は、以下の通りである。
【0051】
オンデマンド・セルフサービス:クラウド利用者は、サービス提供者との人間の相互作用の必要なく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージ等の演算機能を一方的に設定可能である。
【0052】
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的な機構を通じてアクセスされる。
【0053】
リソース・プーリング:マルチテナント・モデルを用いることにより、複数の利用者に対して、提供者の演算リソースがプールされる。その際、要求に応じて、さまざまな物理的リソースおよび仮想的リソースが動的に割り当ておよび再割り当てされる。利用者は一般的に、提供されるリソースの正確な場所を制御も把握もできないが、より高い抽象化レベル(たとえば、国、州、またはデータセンタ)では場所を特定し得る点において、ある意味で場所の独立性が存在する。
【0054】
迅速な柔軟性:機能は、場合によっては自動的に、高速スケール・アウトするように迅速かつ柔軟に設定され、高速スケール・インするように迅速に公開され得る。利用者にとって、設定に利用可能な機能は、多くの場合見かけ上は制限なく、いつでも如何なる量でも購入可能である。
【0055】
サービス測定:クラウド・システムは、サービスの種類(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適した何らかの抽象化レベルでの測定機能を利用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用量は、モニタリング、制御、および報告によって、利用サービスの提供者および利用者の両者に透明性をもたらし得る。
【0056】
サービス・モデルは、以下の通りである。
【0057】
サービスとしてのソフトウェア(SaaS):利用者に提供される機能は、クラウド・インフラ上で動作する提供者のアプリケーションを使用することである。これらのアプリケーションは、ウェブ・ブラウザ等のシン・クライアント・インターフェースを通じて、さまざまなクライアント・デバイスからアクセス可能である(たとえば、ウェブベースの電子メール)。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む、下層のクラウド・インフラを管理も制御もしない。ただし、ユーザ固有の限定されたアプリケーション構成の設定については、この限りではない。
【0058】
サービスとしてのプラットフォーム(PaaS):利用者に提供される機能は、提供者がサポートするプログラミング言語およびツールを用いて作成された利用者作成または取得アプリケーションをクラウド・インフラ上に配置することである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、下層のクラウド・インフラを管理も制御もしない。ただし、配置されたアプリケーションと、場合によっては、アプリケーション・ホスティング環境の構成とを制御する。
【0059】
サービスとしてのインフラ(IaaS):利用者に提供される機能は、処理、ストレージ、ネットワーク、および他の基本的な演算リソースを設定することであるが、利用者は、オペレーティング・システムおよびアプリケーションを含み得る、任意のソフトウェアを配置および実行可能である。利用者は、下層のクラウド・インフラを管理も制御もしない。ただし、オペレーティング・システム、ストレージ、配置されたアプリケーションを制御するとともに、場合によっては、選択されたネットワーク・コンポーネント(たとえば、ホストのファイアウォール)を限定的に制御する。
【0060】
配置モデルは、以下の通りである。
【0061】
プライベート・クラウド:このクラウド・インフラは、ある組織のために単独で運用される。それはこの組織またはサード・パーティにより管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0062】
コミュニティ・クラウド:このクラウド・インフラは、複数の組織により共有され、共有された懸案事項(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス事項)を共有する特定のコミュニティをサポートする。それはこの組織またはサード・パーティにより管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0063】
パブリック・クラウド:このクラウド・インフラは、一般の人々または大規模な業界団体が利用可能で、クラウド・サービスを販売する組織により所有される。
【0064】
ハイブリッド・クラウド:このクラウド・インフラは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の組合せであり、固有のエンティティを維持する一方、データおよびアプリケーションの移植性を実現する標準または専有技術(たとえば、クラウド間の負荷分散のためのクラウド・バースティング)により結合される。
【0065】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、およびセマンティック相互運用性に焦点を当てたサービス指向型である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラがある。
【0066】
ここで
図11を参照して、この図は、例示的なクラウド・コンピューティング環境50を示している。図示のように、クラウド・コンピューティング環境50は、たとえば個人用デジタル補助装置(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せ等、クラウド利用者が使用するローカルのコンピューティング装置の通信を可能にする1つまたは複数のクラウド・コンピューティング・ノード10を具備する。ノード10は、互いに通信するようにしてもよい。これらは、上述のプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはその組合せ等、1つまたは複数のネットワークにおいて物理的または仮想的にグループ化されていてもよい(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド利用者がローカルのコンピューティング装置上でリソースを維持する必要のないサービスとしてのインフラ、サービスとしてのプラットフォーム、またはサービスとしてのソフトウェア、あるいはその組合せを提供することができる。
図11に示すコンピューティング装置54A~54Nの種類は、例示を意図したものに過ぎず、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(たとえば、ウェブ・ブラウザを用いることにより)任意の種類のネットワークまたはネットワーク・アドレス指定可能な接続、あるいはその両方において、任意の種類のコンピュータ化された機器と通信可能であることが了解される。
【0067】
ここで
図12を参照して、この図は、クラウド・コンピューティング環境50(
図11)が提供する一組の機能的抽象化レイヤを示している。
図12に示すコンポーネント、レイヤ、および機能は、例示を意図したものに過ぎず、本発明の実施形態はこれらに限定されないことが予め了解されるものとする。図示のように、以下のレイヤおよび対応する機能が提供される。
【0068】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、記憶装置65、ならびにネットワークおよびネットワーキング・コンポーネント66が挙げられる。いくつかの実施形態において、ソフトウェア・コンポーネントとしては、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68が挙げられる。
【0069】
仮想化レイヤ70は抽象化レイヤを提供し、これによって、仮想サーバ71、仮想ストレージ72、仮想ネットワーク73(仮想プライベート・ネットワークを含む)、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75といった仮想エンティティの例が提供され得る。
【0070】
一例において、管理レイヤ80は、後述の機能を提供するようにしてもよい。リソース設定81は、クラウド・コンピューティング環境におけるタスクの実行に利用される演算リソース等のリソースの動的な調達を提供する。測定および価格設定82は、クラウド・コンピューティング環境においてリソースが利用される場合のコスト追跡およびこれらリソースの消費に対する請求もしくはインボイスを提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド利用者およびタスクの識別情報確認の他、データおよび他のリソースの保護を提供する。ユーザ・ポータル83は、利用者およびシステム管理者に対してクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、所要サービス・レベルを満足するように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA)計画および実行85は、SLAに従って将来的な要件が見込まれるクラウド・コンピューティング・リソースの事前の取り決めおよび調達を提供する。
【0071】
ワークロード・レイヤ90は、クラウド・コンピューティング環境を利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育提供93、データ解析処理94、トランザクション処理95、ならびにデータ暗号化/復号化96が挙げられる。
【0072】
本発明の1つまたは複数の実施形態は、現在既知または今後開発される任意の種類のコンピューティング環境と併せて実装可能であることが了解される。
【0073】
ここで
図13を参照して、これは、一実施形態に係るコンピュータ・システム1300を大略示している。
図13に示すコンピュータ・システム1300の全部または一部を
図11の1つまたは複数のクラウド・コンピューティング・ノード10により実装可能である。本明細書に記載の通り、コンピュータ・システム1300としては、さまざまな通信技術を利用した任意数のコンピューティング装置およびネットワークならびにコンピューティング装置およびネットワークの組合せの包含または採用あるいはその両方による電子コンピュータ・フレームワークが可能である。コンピュータ・システム1300は、容易なスケーリング、拡張、およびモジュール化が可能であり、異なるサービスへの変更または一部機能の他機能から独立した再構成が可能である。コンピュータ・システム1300は、たとえばサーバ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、またはスマートフォンであってもよい。いくつかの例において、コンピュータ・システム1300は、クラウド・コンピューティング・ノードであってもよい。コンピュータ・システム1300は、プログラム・モジュール等のコンピュータ・システム実行可能命令がコンピュータ・システムにより実行されるという一般的な背景で説明され得る。一般的に、プログラム・モジュールは、特定のタスクの実行または特定の抽象データ型の実装を行うルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造等を含んでもよい。コンピュータ・システム1300は、通信ネットワークを通じてリンクされたリモート処理装置によりタスクが実行される分散クラウド・コンピューティング環境において実現されてもよい。分散クラウド・コンピューティング環境においては、メモリ記憶装置を含むローカルおよびリモートの両コンピュータ・システム記憶媒体にプログラム・モジュールが配置されていてもよい。
【0074】
図13に示すように、コンピュータ・システム1300は、1つまたは複数の中央演算処理装置(CPU)1301a、1301b、1301c等(プロセッサ1301と総称または汎称する)を有する。プロセッサ1301としては、シングルコア・プロセッサ、マルチコア・プロセッサ、コンピューティング・クラスタ、または任意数の他の構成が可能である。プロセッサ1301(処理回路とも称する)は、システム・バス1302を介してシステム・メモリ1303および他のさまざまな構成要素に結合されている。システム・メモリ1303は、リード・オンリー・メモリ(ROM)1304およびランダム・アクセス・メモリ(RAM)1305を含み得る。ROM1304は、システム・バス1302に結合されており、コンピュータ・システム1300の特定の基本機能を制御する基本入出力システム(BIOS)を含んでもよい。RAMは、システム・バス1302に結合されてプロセッサ1301が使用する読み書き可能メモリである。システム・メモリ1303は、動作中に前記命令の動作のための一時的なメモリ空間を提供する。システム・メモリ1303は、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ、フラッシュ・メモリ、またはその他の任意の好適なメモリ・システムを含み得る。
【0075】
コンピュータ・システム1300は、システム・バス1302に結合された入出力(I/O)アダプタ1306および通信アダプタ1307を備える。I/Oアダプタ1306は、ハード・ディスク1308またはその他の任意の類似の構成要素あるいはその両方と通信するSATA(Serial Advanced Technology Attachment)アダプタであってもよい。本明細書においては、I/Oアダプタ1306およびハード・ディスク1308を大容量ストレージ1310と総称する。
【0076】
コンピュータ・システム1300上で実行されるソフトウェア1311が大容量ストレージ1310に格納されていてもよい。大容量ストレージ1310は、プロセッサ1301により読み出し可能な有形記憶媒体の一例であり、ソフトウェア1311は、プロセッサ1301により実行される命令として格納され、さまざまな図面に関して本明細書に記載の通り、コンピュータ・システム1300を動作させる。コンピュータ・プログラム製品およびこのような命令の実行の例については、本明細書においてより詳しく論じる。通信アダプタ1307は、システム・バス1302をネットワーク1312(外部ネットワークであってもよい)と相互接続して、コンピュータ・システム1300がこのような他のシステムと通信できるようにする。一実施形態においては、システム・メモリ1303および大容量ストレージ1310の一部がオペレーティング・システムをまとめて格納するが、これは、
図13に示すさまざまな構成要素の機能を連係させる任意の適当なオペレーティング・システム(z/OS(R)またはAIX(R)オペレーティング・システム)であってもよい。
【0077】
ディスプレイ・アダプタ1315およびインターフェース・アダプタ1316を介してシステム・バス1302に接続されるものとして、付加的な入出力装置を示している。一実施形態において、アダプタ1306、1307、1315、および1316は、中間バス・ブリッジ(図示せず)を介してシステム・バス1302に接続された1つまたは複数のI/Oバスに接続されていてもよい。ディスプレイ・アダプタ1315によってディスプレイ1319(たとえば、スクリーンまたはディスプレイ・モニタ)がシステム・バス1302に接続されているが、これは、グラフィックスを多用するアプリケーションの性能を向上させるグラフィックス・コントローラおよびビデオ・コントローラを含み得る。たとえば複数のデバイス・アダプタを単一の集積回路に統合したスーパーI/Oチップを含み得るインターフェース・アダプタ1316を介して、キーボード1321、マウス1322、スピーカ1323等がシステム・バス1302に相互接続され得る。ハード・ディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタ等の周辺装置を接続するための好適なI/Oバスは通常、ペリフェラル・コンポーネント・インターコネクト(PCI)等の共通プロトコルを含む。このように、
図13の構成の通り、コンピュータ・システム1300は、プロセッサ1301の形態の処理能力と、システム・メモリ1303および大容量ストレージ1310を含む記憶能力と、キーボード1321およびマウス1322等の入力手段と、スピーカ1323およびディスプレイ1319を含む出力能力と、を含む。
【0078】
いくつかの実施形態において、通信アダプタ1307は、とりわけインターネット小型コンピュータ・システム・インターフェース等の任意の好適なインターフェースまたはプロトコルを使用してデータを送信することができる。ネットワーク1312は、とりわけセルラー・ネットワーク、無線ネットワーク、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、またはインターネットであってもよい。コンピュータ・システム1300には、ネットワーク1312を通じて外部コンピューティング装置がつながっていてもよい。いくつかの例において、外部コンピューティング装置は、外部ウェブサーバであってもよいし、クラウド・コンピューティング・ノードであってもよい。
【0079】
図13のブロック図は、
図13に示すすべての構成要素をコンピュータ・システム1300が具備することを示す意図ではないことが了解されるものとする。むしろ、コンピュータ・システム1300は、より少ない任意の適当な構成要素を含むことも可能であるし、
図13に示していない付加的な構成要素(たとえば、付加的なメモリ・コンポーネント、組み込みコントローラ、モジュール、付加的なネットワーク・インターフェース等)を含むことも可能である。さらに、コンピュータ・システム1300に関して本明細書に記載の実施形態は、任意の適当なロジックにより実装されてもよく、種々の実施形態において、本明細書に言及されるロジックは、任意の好適なハードウェア(たとえば、とりわけプロセッサ、組み込みコントローラ、または特定用途向け集積回路)、ソフトウェア(たとえば、とりわけアプリケーション)、ファームウェア、またはハードウェア、ソフトウェア、およびファームウェアの任意の好適な組合せを含むことができる。
【0080】
本明細書においては、関連する図面を参照して、本発明の種々の実施形態を説明している。本発明の範囲から逸脱することなく、本発明の代替実施形態を考案可能である。以下の説明および図面においては、さまざまな接続および位置関係(たとえば、上方、下方、隣接等)が要素間に規定される。これらの接続または位置関係あるいはその両方は、別段の指定のない限り、直接的でも間接的でも可能であり、この点に関して、本発明は限定することを意図していない。したがって、エンティティの結合は、直接的または間接的な結合を表すことができ、エンティティ間の位置関係としては、直接的または間接的な位置関係が可能である。さらに、本明細書に記載のさまざまなタスクおよびプロセス・ステップは、本明細書に詳しく記載していない付加的なステップまたは機能を有するより包括的な手順またはプロセスに組み込み可能である。
【0081】
データ信号に対して論理機能を実行するための論理ゲートを有するディスクリート論理回路、適当な組合せ論理ゲートを有する特定用途向け集積回路(ASIC)、プログラマグル・ゲート・アレイ(PGA)、フィールド・プログラマグル・ゲート・アレイ(FPGA)等、当技術分野においてそれぞれが周知である技術のいずれかまたは組合せによって、本明細書に記載の方法のうちの1つまたは複数を実現可能である。
【0082】
簡素化のため、本発明の態様の構成および使用と関連する従来の技術は、本明細書において詳しく説明する場合もあれば、詳しく説明しない場合もある。特に、本明細書に記載のさまざまな技術的特徴を実装するコンピューティング・システムおよび特定のコンピュータ・プログラムのさまざまな態様がよく知られている。したがって、本明細書においては簡素化のため、従来の多くの実施態様詳細について、周知のシステムまたはプロセスあるいはその両方の詳細を与えることなく、簡単に述べるのみとするか、または、全体を省略する。
【0083】
いくつかの実施形態においては、所与の場所または1つもしくは複数の装置もしくはシステムの動作との関連、あるいはその両方においてさまざまな機能および動作が発生し得る。いくつかの実施形態においては、所与の機能または動作の一部が第1のデバイスまたは場所で実行され得、この機能または動作のその他の部分が1つまたは複数の付加的なデバイスまたは場所で実行され得る。
【0084】
本明細書において使用する専門用語は、特定の実施形態を説明することを目的としているに過ぎず、限定することを意図していない。本明細書で使用される、単数形「a」、「an」、および「the」は、文脈上の別段の明確な指定のない限り、複数形も同様に含むことが意図される。本明細書において使用する場合の用語「備える(comprise)」または「備えている(comprising)」、あるいはその両方は、記載の特徴、整数、ステップ、動作、要素、または構成要素、あるいはその組合せの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはその群、あるいはその組合せの存在を除外するものでもなければ、追加を除外するものでもないことがさらに了解される。
【0085】
以下の特許請求の範囲において、すべてのミーンズ・プラス・ファンクション要素またはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および均等物は、具体的に請求される他の特許請求された要素との組合せで機能を実行するための任意の構造、材料、または動作を含むことが意図される。本開示は、例示および説明を目的として提示したものであるが、網羅性を意図したものでもなければ、開示の形態への限定を意図したものでもない。当業者には、本開示の範囲から逸脱することなく、多くの改良および変形が明らかとなるであろう。実施形態は、本開示の原理および実際の用途を最もよく説明するとともに、考えられる特定の使用に適した種々の改良を伴う種々の実施形態について他の当業者が本開示を理解できるように選定および記載したものである。
【0086】
本明細書に記載の図面は例示である。本開示の範囲から逸脱することなく、図面またはそこに記載のステップ(もしくは、動作)には多くの変形が存在し得る。たとえば、動作を異なる順序で実行することも可能であるし、動作を追加、消去、または変更することも可能である。また、用語「結合された(coupled)」は、2つの要素間に信号経路を有することを表し、要素/接続の介在を伴わない要素間の直接接続を暗示してはいない。これらの変形例はすべて、本開示の一部と考えられる。
【0087】
以下の定義および略語は、特許請求の範囲および本明細書の解釈のために使用するものとする。本明細書で使用される、用語「備える(comprise)」、「備えている(comprising)」、「具備する(include)」、「具備している(including)」、「有する(have)」、「有している(having)」、「含む(contain)」、もしくは「含んでいる(containing)」、またはこれらのその他の任意の変形は、非排他的な包含を網羅することが意図される。たとえば、要素の一覧を含む組成物、混合物、プロセス、方法、品目、または装置は、必ずしもこれらの要素だけに限定されず、このような組成物、混合物、プロセス、方法、品目、または装置に対して明示的に一覧化もされていなければ固有でもない他の要素を含み得る。
【0088】
また、本明細書において、用語「例示的な(exemplary)」は、「一例、事例、または実例として機能する」を意味するものとして使用している。本明細書で「例示的(exemplary)」として記載する如何なる実施形態も設計も、他の実施形態または設計より好ましいものまたは有利なものとしては必ずしも解釈されないものとする。用語「少なくとも1つ(at least one)」および「1つまたは複数(one or more)」は、1以上の任意の整数すなわち1、2、3、4等を含むものと理解される。用語「複数(a plurality)」は、2以上の任意の整数すなわち2、3、4、5等を含むものと理解される。用語「接続(connection)」は、間接的な「接続(connection)」および直接的な「接続(connection)」の両者を含み得る。
【0089】
用語「およそ(about)」、「実質的に(substantially)」、「約(approximately)」、およびこれらの変形は、本願の出願時点で利用可能な機器に基づく特定の量の測定と関連付けられた誤差の程度を含むことが意図される。たとえば、「およそ(about)」は、所与の値の±8%、5%、または2%の範囲を含み得る。
【0090】
本発明は、任意の可能な技術的詳細統合レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を具備していてもよい。
【0091】
コンピュータ可読記憶媒体としては、命令実行デバイスが使用する命令を保持および格納し得る有形デバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意の好適な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧は、携帯型コンピュータ・ディスケット、ハード・ディスク・ドライブ(HDD)、ソリッド・ステート・ドライブ(SDD)、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去・プログラム可能リード・オンリー・メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック(R)、フロッピー(R)・ディスク、パンチカードもしくは命令が記録された溝中の隆起構造等の機械的符号化デバイス、およびこれらの任意の好適な組合せを含む。本明細書で使用される、コンピュータ可読記憶媒体は、電波もしくはその他の自由に伝搬する電磁波、導波路もしくはその他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号等、一過性の信号自体としては解釈されないものとする。
【0092】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピュータ/処理装置にダウンロードすることも可能であるし、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータまたは外部記憶装置にダウンロードすることも可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含んでもよい。各コンピュータ/処理装置のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、このコンピュータ可読プログラム命令を転送して、各コンピュータ/処理装置内のコンピュータ可読記憶媒体に格納する。
【0093】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の設定データ、あるいはSmalltalk(R)、C++等のオブジェクト指向プログラミング言語およびCプログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、独立型ソフトウェア・パッケージとして全部または一部をユーザのコンピュータ上で実行するようにしてもよいし、一部をユーザのコンピュータ上、一部をリモート・コンピュータ上で実行するようにしてもよいし、全部をリモート・コンピュータまたはサーバ上で実行するようにしてもよい。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを通じてリモート・コンピュータをユーザのコンピュータに接続するようにしてもよいし、(たとえば、インターネット・サービス・プロバイダを用いることによりインターネットを通じて)外部コンピュータに接続するようにしてもよい。いくつかの実施形態においては、本発明の態様を実行するため、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人向けにすることにより、たとえばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路がコンピュータ可読プログラム命令を実行するようにしてもよい。
【0094】
本明細書においては、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様を説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令により実装可能であることが了解される。
【0095】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャート図またはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作を実装する手段を生成するように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出してもよい。また、これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体が、フローチャート図またはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラムな可能データ処理装置、または他のデバイス、あるいはその組合せに対して特定の様態で機能するように指示してもよい。
【0096】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作を実装するように、コンピュータ実装プロセスを生成するために、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスへロードされ、一連の動作ステップをコンピュータ、他のプログラム可能装置、または他のデバイス上で実行させてもよい。
【0097】
図中のフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示している。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表していてもよい。いくつかの代替実施態様において、ブロックに記載の機能は、図面に記載の順序とは異なる順序で行われてもよい。たとえば、連続して示す2つのブロックは実際のところ、関与する機能に応じて、実質的に同時に実行されてもよいし、場合により逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロックおよびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、特定の機能または動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する、専用ハードウェアベースのシステムにより実装することが可能であることにも留意されたい。
【0098】
本発明の種々の実施形態の説明は、例示を目的として提示しており、網羅的であること、または開示の実施形態に限定されることを意図したものでもない。当業者には、記載の実施形態の範囲から逸脱することなく、多くの改良および変形が明らかとなるであろう。本明細書において使用する専門用語は、実施形態の原理、実際の用途、もしくは市場において見られる技術の技術的改良を最もよく説明するために、または、他の当業者が本明細書に記載の実施形態を理解できるように選定されている。
【国際調査報告】