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

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

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

<>
  • 特表-インラインでのデータパケット変換 図1
  • 特表-インラインでのデータパケット変換 図2
  • 特表-インラインでのデータパケット変換 図3
  • 特表-インラインでのデータパケット変換 図4
  • 特表-インラインでのデータパケット変換 図5A
  • 特表-インラインでのデータパケット変換 図5B
  • 特表-インラインでのデータパケット変換 図6A
  • 特表-インラインでのデータパケット変換 図6B
  • 特表-インラインでのデータパケット変換 図6C
  • 特表-インラインでのデータパケット変換 図7A
  • 特表-インラインでのデータパケット変換 図7B
  • 特表-インラインでのデータパケット変換 図8
  • 特表-インラインでのデータパケット変換 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-26
(54)【発明の名称】インラインでのデータパケット変換
(51)【国際特許分類】
   G06F 13/12 20060101AFI20231219BHJP
   G06F 3/06 20060101ALI20231219BHJP
【FI】
G06F13/12 340C
G06F3/06 301N
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023535933
(86)(22)【出願日】2021-11-10
(85)【翻訳文提出日】2023-06-13
(86)【国際出願番号】 CN2021129736
(87)【国際公開番号】W WO2022127453
(87)【国際公開日】2022-06-23
(31)【優先権主張番号】17/120,398
(32)【優先日】2020-12-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】ベクト、マイケル、ジェームズ
(72)【発明者】
【氏名】コロンナ、クリストファー、ジェイ
(72)【発明者】
【氏名】ゲンダート、ステファン、ロバート
(72)【発明者】
【氏名】カタラーノ、パスクアーレ、エー
(72)【発明者】
【氏名】チェンシンスキー、エドワード、ダブリュー
(57)【要約】
インラインでのデータパケット変換が提供される。変換エンジンが、変換対象のデータを取得し、データに適用する変換を決定する。決定は、適用する変換を決定する際に使用される少なくとも1つのフィールドを含む入出力制御ブロックを用いて行われる。適用する変換を決定したことに基づいて、変換が実行される。
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易化するためのコンピュータプログラム製品であって、
1つ以上のコンピュータ可読記憶媒体と、当該1つ以上のコンピュータ可読記憶媒体にまとめて記憶された、方法を実行するためのプログラム命令と、を含み、当該方法は、
変換エンジンによって、変換対象のデータを取得することと、
前記変換エンジンによって、前記データに適用する選択された変換を決定することであって、当該決定は入出力制御ブロックを用いて行われ、当該入出力制御ブロックは、適用する当該選択された変換の決定に使用される少なくとも1つのフィールドを含む、ことと、
適用する前記選択された変換を決定したことに基づいて、前記変換エンジンによって、当該選択された変換を実行することと、
を含む、コンピュータプログラム製品。
【請求項2】
前記変換エンジンによって前記データを取得することは、当該データに変換を適用すべきであるという指示に基づいており、当該指示は、前記入出力制御ブロックによって提供される、請求項1に記載のコンピュータプログラム製品。
【請求項3】
前記指示は、前記入出力制御ブロックの前記少なくとも1つのフィールドによって提供され、当該入出力制御ブロックの当該少なくとも1つのフィールドは、変換タイプフィールドを含み、当該変換タイプフィールドは、前記変換を適用するか否かの決定に使用される、請求項2に記載のコンピュータプログラム製品。
【請求項4】
前記入出力制御ブロックの前記少なくとも1つのフィールドは、変換タイプフィールドを含み、前記選択された変換を決定することは、当該選択された変換の指示について当該変換タイプフィールドをチェックすることを含む、請求項1に記載のコンピュータプログラム製品。
【請求項5】
前記少なくとも1つのフィールドは、変換サブタイプフィールドをさらに含み、前記選択された変換を決定することは、当該選択された変換の前記指示について当該変換サブタイプフィールドをチェックすることをさらに含む、請求項4に記載のコンピュータプログラム製品。
【請求項6】
前記入出力制御ブロックは、コンピューティングシステムのメモリと、入出力サブシステムを介して当該コンピューティングシステムに結合された外部ストレージデバイスとの間で前記データを伝送する際に用いられるトランスポート制御ワードである、請求項1に記載のコンピュータプログラム製品。
【請求項7】
前記トランスポート制御ワードは、変換タイプフィールドおよび変換サブタイプフィールドを含み、前記選択された変換を決定することは、当該トランスポート制御ワードの当該変換タイプフィールドおよび当該変換サブタイプフィールドのうちの少なくとも1つをチェックすることを含む、請求項6に記載のコンピュータプログラム製品。
【請求項8】
前記選択された変換は、前記入出力制御ブロックによって指定される複数種類の変換のうちの1種類の変換である、請求項1に記載のコンピュータプログラム製品。
【請求項9】
前記複数種類の変換は、人工知能変換、パケットフィルタ、統計解析、テレメトリ、およびマルチキャストレプリケーションを含む、請求項8に記載のコンピュータプログラム製品。
【請求項10】
少なくとも前記決定を行うことは、コンピューティングシステムのメモリと当該コンピューティングシステムに結合された外部ストレージデバイスとの間での前記データの処理に対してインラインで実行される、請求項1に記載のコンピュータプログラム製品。
【請求項11】
コンピューティング環境内の処理を容易化するためのコンピュータシステムであって、
メモリと、
前記メモリと通信する少なくとも1つのプロセッサと、を含み、当該コンピュータシステムは、
変換エンジンによって、変換対象のデータを取得することと、
前記変換エンジンによって、前記データに適用する選択された変換を決定することであって、当該決定は入出力制御ブロックを用いて行われ、当該入出力制御ブロックは、適用する当該選択された変換の決定に使用される少なくとも1つのフィールドを含む、ことと、
適用する前記選択された変換を決定したことに基づいて、前記変換エンジンによって、当該選択された変換を実行することと、
を含む方法を実行するように構成されている、コンピュータシステム。
【請求項12】
前記入出力制御ブロックは、前記コンピューティングシステムの前記メモリと、入出力サブシステムを介して当該コンピューティングシステムに結合された外部ストレージデバイスとの間で前記データを伝送する際に用いられるトランスポート制御ワードである、請求項11に記載のコンピュータシステム。
【請求項13】
前記トランスポート制御ワードは、変換タイプフィールドおよび変換サブタイプフィールドを含み、前記選択された変換を決定することは、当該変換タイプフィールドおよび当該変換サブタイプフィールドのうちの少なくとも1つをチェックすることを含む、請求項12に記載のコンピュータシステム。
【請求項14】
前記選択された変換は、前記入出力制御ブロックによって指定される複数種類の変換のうちの1種類の変換である、請求項11に記載のコンピュータシステム。
【請求項15】
少なくとも前記決定を行うことは、前記コンピューティングシステムの前記メモリと当該コンピューティングシステムに結合された外部ストレージデバイスとの間での前記データの処理に対してインラインで実行される、請求項11に記載のコンピュータシステム。
【請求項16】
コンピューティング環境内の処理を容易化するためのコンピュータ実装方法であって、
変換エンジンによって、変換対象のデータを取得することと、
前記変換エンジンによって、前記データに適用する選択された変換を決定することであって、当該決定は入出力制御ブロックを用いて行われ、当該入出力制御ブロックは、適用する当該選択された変換の決定に使用される少なくとも1つのフィールドを含む、ことと、
適用する前記選択された変換を決定したことに基づいて、前記変換エンジンによって、当該選択された変換を実行することと、
を含む、コンピュータ実装方法。
【請求項17】
前記入出力制御ブロックは、コンピューティングシステムのメモリと、入出力サブシステムを介して当該コンピューティングシステムに結合された外部ストレージデバイスとの間で前記データを伝送する際に用いられるトランスポート制御ワードである、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記トランスポート制御ワードは、変換タイプフィールドおよび変換サブタイプフィールドを含み、前記選択された変換を決定することは、当該変換タイプフィールドおよび当該変換サブタイプフィールドのうちの少なくとも1つをチェックすることを含む、請求項17に記載のコンピュータ実装方法。
【請求項19】
前記選択された変換は、前記入出力制御ブロックによって指定される複数種類の変換のうちの1種類の変換である、請求項16に記載のコンピュータ実装方法。
【請求項20】
少なくとも前記決定を行うことは、コンピューティングシステムのメモリと当該コンピューティングシステムに結合された外部ストレージデバイスとの間での前記データの処理に対してインラインで実行される、請求項16に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【0001】
1つ以上の態様は、一般に、コンピューティング環境内の処理を容易化することに関し、具体的には、コンピューティング環境内の入出力処理に関連する処理を容易化することに関する。
【背景技術】
【0002】
入出力処理には、コンピューティングシステムのメインメモリと、当該システムに結合された1つ以上の外部デバイスとの間でデータを転送することが含まれる。データの転送を容易化するために、1つ以上の入出力操作(input/output operation)が使用される。入出力操作を使用して、1つ以上の外部ストレージデバイスからデータを取得し、当該データに対して1つ以上の操作を実行し、その結果を1つ以上のストレージデバイスに戻して記憶する。
【0003】
データに対して実行可能な操作の1つのタイプとして、変換(transformation)がある。このような操作を実行するために、システムは外部ストレージデバイスからデータを要求し、データは、システムおよび外部ストレージデバイスに結合された入出力サブシステムを介して、外部ストレージデバイスから取得される。外部ストレージデバイスから取得されたデータは、システムおよび入出力サブシステムの外部にある、変換を実行する別の機械に提供される。そして、変換結果をシステムが取得し、外部ストレージデバイスに記憶してもよい。
【発明の概要】
【0004】
コンピューティング環境内の処理を容易化するためのコンピュータプログラム製品の提供を通じて、従来技術の欠点が克服されるとともに、さらなる利点が得られる。コンピュータプログラム製品は、1つ以上のコンピュータ可読記憶媒体と、当該1つ以上のコンピュータ可読記憶媒体にまとめて記憶された、方法を実行するためのプログラム命令と、を含む。方法は、変換エンジンによって、変換対象のデータを取得することと、変換エンジンによって、データに適用する選択された変換を決定することと、を含む。決定は、入出力制御ブロックを用いて行われる。入出力制御ブロックは、適用する選択された変換の決定に使用される少なくとも1つのフィールドを含む。適用する選択された変換を決定したことに基づいて、変換エンジンによって、選択された変換が実行される。
【0005】
入出力制御ブロックを変換に使用することにより、変換を適用するか否かの決定と、(適用する場合)変換の実行とが、コンピューティングシステムおよびコンピューティングシステムに結合された入出力サブシステムの外部にある、ホストコントローラなどの別個のマシンから独立して実行される。これにより、入出力処理が改善され、したがって、システム性能が向上する。
【0006】
一実施形態において、変換エンジンによってデータを取得することは、データに変換を適用すべきであるという指示に基づいており、この指示は、入出力制御ブロックによって提供される。入出力制御ブロックにより、どの操作に変換を適用するか、適用する場合はどの変換を適用するかを識別する機能が能力される。
【0007】
一例として、変換を適用すべきであるという指示は、入出力制御ブロックの少なくとも1つのフィールドによって提供される。この入出力制御ブロックの少なくとも1つのフィールドは、変換タイプフィールドを含む。変換タイプフィールドを使用して、変換を適用すべきか否かが決定される。変換タイプフィールドを使用することにより、決定を容易にし、処理およびシステム性能を向上させることができる。
【0008】
一実施形態において、入出力制御ブロックの少なくとも1つのフィールドは、変換タイプフィールドを含み、選択された変換を決定することは、選択された変換の指示について変換タイプフィールドをチェックすることを含む。変換タイプフィールドをチェックすることにより、どの変換を適用するかの決定が容易になり、処理およびシステム性能を向上させることができる。
【0009】
少なくとも1つのフィールドは、変換サブタイプフィールドをさらに含み、選択された変換を決定することは、選択された変換の指示について変換サブタイプフィールドをチェックすることをさらに含む。変換サブタイプフィールドを提供することにより、変換を選択するためのさらなる精度が提供される。これにより、柔軟性が得られ、処理が容易になり、システム性能が向上する。
【0010】
一実施形態において、入出力制御ブロックは、コンピューティングシステムのメモリと、入出力サブシステムを介してコンピューティングシステムに結合された外部ストレージデバイスとの間でデータを伝送する際に用いられるトランスポート制御ワードである。
【0011】
一例として、トランスポート制御ワードは、変換タイプフィールドおよび変換サブタイプフィールドを含む。選択された変換を決定することは、変換タイプフィールドおよび変換サブタイプフィールドのうちの少なくとも1つをチェックすることを含む。トランスポート制御ワードを使用することにより、どの操作に変換を適用するか、適用する場合はどの変換を適用するかを識別することができるため、処理が容易となる。さらに、変換タイプフィールドもしくは変換サブタイプフィールドまたはその両方をチェックすることにより、実行すべき選択された変換を決定することが容易になり、これにより、システム性能の向上、複雑さの低減、使用するハードウェアの低減(例えば、チェックを行う別個のマシンが不要)が可能になる。
【0012】
一実施形態において、選択された変換は、入出力制御ブロックによって指定される複数種類の変換のうちの1種類の変換である。一例として、複数種類の変換は、人工知能変換、パケットフィルタ、統計解析、テレメトリ、およびマルチキャストレプリケーションを含む。
【0013】
一実施形態において、少なくとも決定を行うことは、コンピューティングシステムのメモリとコンピューティングシステムに結合された外部ストレージデバイスとの間でのデータの処理に対してインラインで実行される。これにより、少なくとも決定を行うための別個のマシンが不要となり、処理を改善し、コストを削減することができる。
【0014】
1つ以上の態様に関連するコンピュータ実装方法およびシステムも本明細書にて説明され、特許請求される。さらに、1つ以上の態様に関連するサービスもまた、本明細書にて説明され、特許請求される場合がある。
【0015】
さらなる特徴および利点が、本明細書に記載の技術によって実現される。他の実施形態および態様が本明細書にて詳細に説明され、これらは、特許請求される態様の一部と見なされる。
【図面の簡単な説明】
【0016】
1つ以上の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。上述の内容、ならびに1つ以上の態様の目的、特徴、および利点は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
図1】本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の一例を示す図である。
図2】本発明の1つ以上の態様に従って使用されるトランスポート制御ワードの一例を示す図である。
図3】本発明の1つ以上の態様に係る、変換を適用するか否かを決定する処理の一例を示す図である。
図4】本発明の1つ以上の態様に係る、変換エンジンを使用して変換を実行する一例を示す図である。
図5A】本発明の1つ以上の態様に係る、コンピューティング環境内の処理の容易化に関連する態様の一実施形態を示す図である。
図5B】本発明の1つ以上の態様に係る、コンピューティング環境内の処理の容易化に関連する態様の一実施形態を示す図である。
図6A】本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の一例を示す図である。
図6B】本発明の1つ以上の態様に係る、図6Aのメモリのさらなる詳細の一例を示す図である。
図6C】本発明の1つ以上の態様に係る、図6Aのメモリのさらなる詳細の別の例を示す図である。
図7A】本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の一例を示す図である。
図7B】本発明の1つ以上の態様に係る、図7Aのメモリのさらなる詳細を示す図である。
図8】本発明の1つ以上の態様に係る、クラウドコンピューティング環境の一実施形態を示す図である。
図9】本発明の1つ以上の態様に係る、抽象化モデルレイヤの一例を示す図である。
【発明を実施するための形態】
【0017】
1つ以上の態様において、入出力(I/O)処理は、コンピューティングシステムと外部ストレージデバイスとの間で移動しているデータを、データ移動に対してインラインで(in-line)変換することによって容易化される。すなわち、変換を実行することの決定および変換の実行は、コンピューティングシステムと外部ストレージデバイスとの間の直接経路(direct path)内で発生する。一例として、コンピューティングシステムもしくは入出力システムまたはその両方における1つ以上のマイクロコントローラ(もしくは処理ロジックまたはその両方)が、コンピューティングシステムおよび入出力システムの外部にある、ホストコントローラなどの追加のマシンまたは他のコンポーネントから独立して、変換を実行するか否かを決定し、変換を実行する。
【0018】
本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の一実施形態を、図1を参照して説明する。一例として、図1のコンピューティング環境は、International Business Machines Corporationが提供するz/Architecture(登録商標)ハードウェアアーキテクチャに基づくものである。z/Architectureハードウェアアーキテクチャの一実施形態は、「z/Architecture Principles of Operation」、(IBM公報SA22-7832-12、第13版、2019年9月)に記載されている。IBMおよびz/Architectureは、少なくとも1つの法域におけるInternational Business Machines Corporationの登録商標である。ただし、z/Architectureハードウェアアーキテクチャは、アーキテクチャの一例に過ぎない。本発明の態様は、他のアーキテクチャ(特に限定されないが、Intel x86アーキテクチャ、International Business Machines Corporationの他のアーキテクチャ、もしくは他社のアーキテクチャまたはその組み合わせなど)に基づいてもよい。
【0019】
図1を参照すると、一例として、コンピューティング環境100は、入出力サブシステム104に結合されたコンピューティングシステム102を含む。一例として、コンピューティングシステム102は、メモリ108(メインメモリ、システムメモリ、ストレージ、メインストレージ、中央ストレージなどとも呼ばれる)に結合された1つ以上のプロセッサ106を含む。
【0020】
プロセッサ106は、1つ以上の周辺機器相互接続エクスプレス(PCIe)接続などの1つ以上の接続またはバス112を介してI/Oサブシステム104に結合される。他の接続またはバスを使用してもよい。
【0021】
I/Oサブシステム104は、1つ以上の入出力ドロワ(input/output drawer)120を含む。入出力ドロワ120は、例えば、1つ以上のスイッチ122および1つ以上のネットワークアダプタ124を含む。一例として、スイッチ122は、プロセッサ106およびネットワークアダプタ124に結合される。ネットワークアダプタ124は、例えば、コンバージドネットワークアダプタ(CNA)である、CNAは、例えば、ファイバチャネル(FC)ホストバスアダプタ(HBA)およびTCP/IP(伝送制御プロトコル/インターネットプロトコル)イーサネットNICの両方を含む単一のネットワークインタフェースカード(NIC)である。これは例えば、サーバをFCベースのストレージエリアネットワーク(SAN)やイーサネットベースのローカルエリアネットワーク(LAN)に接続する。
【0022】
入出力サブシステム104は、1つ以上の外部ストレージデバイス126に結合されて、プロセッサ106を外部ストレージデバイス126に結合するために使用される。ストレージデバイスに記憶されたデータ128は、例えば、入出力操作を介してプロセッサと外部ストレージデバイスとの間で伝送される。一例として、プロセッサ(例えば、プロセッサ106)内で実行される、International Business Machines Corporation(ニューヨーク州アーモンク)が提供するz/OS(登録商標)オペレーティングシステムや、Linux(登録商標)オペレーティングシステムなどのオペレーティングシステムが、1つ以上の入出力操作を使用して、パス130などのパスに沿って外部ストレージデバイス(例えば、外部ストレージデバイス126)からデータ(例えば、データ128)を引き出す。なお、z/OSは少なくとも1つの法域におけるInternational Business Machines Corporationの商標または登録商標である。登録商標Linuxは、世界規模での当該商標の所有者であるLinus Torvaldsの独占的ライセンシーであるLinux Foundationからのサブライセンスに従って使用される。なお、他のオペレーティングシステムを使用してもよい。
【0023】
一例として、1つ以上のプロセッサ106は、本発明の1つ以上の態様に従って使用される1つ以上のマイクロコントローラ110を含む。例えば、本明細書で説明するように、マイクロコントローラ110(もしくはコンピューティングシステムの処理ロジックまたはその両方)のうちの1つ以上を使用して、入出力操作のデータに対して変換を適用するか否かを決定し、変換を適用する場合には変換を実行する。1つ以上のマイクロコントローラ(もしくはコンピューティングシステムの処理ロジックまたはその両方)は、例えば、スイッチ(例えば、スイッチ122)に結合された1つ以上の接続(例えば、PCIe接続)を介してI/Oサブシステムに結合されたホストコントローラまたは他のコントローラの代わりに使用される。このように、変換の決定および実行は、入出力操作に対してインラインで行われる。すなわち、変換の決定および実行はパス130内で実行され、パス130の外側でI/Oサブシステムに結合されたホストコントローラまたは他のそのようなコントローラから独立している。
【0024】
さらなる実施形態において、1つ以上のマイクロコントローラを入力/出力サブシステム内に配置して、本発明の一態様に従って、変換を適用するか否を決定する、もしくは変換を適用することの決定に基づいてそのような変換を実行する、またはその両方を行うために使用してもよい。他の実施形態も可能である。
【0025】
特定の入出力操作に対して変換を適用するか否かを決定するために、本発明の一態様によれば、トランスポート制御ワード(transport control word)などの制御ブロック(本明細書において入出力制御ブロックとも呼ぶ)が使用される。トランスポート制御ワードは、I/Oデバイス(例えば、外部ストレージデバイス126)に処理のために伝送すべき内容を有するトランスポート制御ブロックを指定する。トランスポート制御ブロックは、1つ以上のデバイスコマンドワード(device command word)および関連オプションを含む。データ(トランスポートコマンド制御ブロック内に含まれる制御データを除く)の転送を開始するコマンドを指定するデバイスコマンドワードの場合、トランスポート制御ワードは、当該データが位置する1つ以上のストレージエリアを指定する。
【0026】
トランスポート制御ワードの一例について、図2を参照して説明する。一例として、トランスポート制御ワード200は、例えば、64バイトの境界で指定される64バイトの制御ブロックである。一例として、トランスポート制御ワード200は、例えば、以下を含む複数のフィールドを含む。
【0027】
フォーマット(F)202:このフィールド(例えば、ワード0のビット0~1)は、トランスポート制御ワードのレイアウトを定義する2ビットの符号なし整数(unsigned integer)値を含む、トランスポート制御ワードフォーマットを形成する。このフィールドの値は、例えば、0である。
【0028】
フラグ204:このフィールド(例えば、ワード0のバイト1~3)は、トランスポート制御ワードに関する情報を含む。フラグの例としては、例えば、以下のものがある。
【0029】
入力トランスポート間接データアドレス指定(Input Transport Indirect Data Addressing)フラグ(例えば、ビット5):このフラグが0で、読み出し操作フィールド(例えば、ワード1のビット14)が1のとき、入力データアドレスフィールドは、例えば、入力位置の絶対アドレスを指定する。このフラグが1で、読み出し操作フィールドが1のとき、入力データアドレスフィールドは、例えば、入力記憶位置をそれぞれ指定する、トランスポート間接データアドレスワード、またはトランスポート間接データアドレスワードのリストにおける最初のトランスポート間接データアドレスワードの絶対アドレスを指定する。
【0030】
読み出し操作フィールドが0の場合、このフラグは意味を持たない。
【0031】
トランスポートコマンド制御ブロックトランスポート間接データアドレス(Transport Command Control Block Transport Indirect Data Address)フラグ(例えば、ビット6):このフラグが0のとき、トランスポートコマンド制御ブロックアドレスフィールドは、例えば、トランスポート制御ワードに関するトランスポートコマンド制御ブロックの絶対アドレスを指定する。このフラグが1のとき、トランスポートコマンド制御ブロックアドレスフィールドは、例えば、トランスポート制御ワードに関するトランスポート制御ブロックの位置をそれぞれ指定する、トランスポート間接データアドレスワードまたはトランスポート間接データアドレスワードのリストの絶対アドレスを指定する。
【0032】
出力トランスポート間接データアドレス指定(Output Transport Indirect Data Addressing)フラグ(例えば、ビット7):このフラグが0で、書き込み操作フィールド(例えば、ワード1のビット15)が1のとき、出力データアドレスフィールドは、例えば、絶対ストレージ(absolute storage)内の出力位置を指定する。このフラグが1で、書き込み操作フィールドが1のとき、出力データアドレスフィールドは、例えば、それぞれ出力記憶位置を指定する、トランスポート間接データアドレスワードまたはトランスポート間接データアドレスワードのリストの絶対アドレスを指定する。
【0033】
書き込み操作フィールドが0の場合、このフラグは意味を持たない。
【0034】
トランスポートコマンド制御ブロック長(TCCBL:Transport Command Control Block Length)206:このフィールド(例えば、ワード1のビット8~13)は、右側に2つのゼロが付加され、符号なし整数を指定する。符号なし整数の値は、一方向データ転送の場合は選択値(例えば、20)に、双方向データ転送の場合は別の値(例えば、24)に加算された場合に、バイト単位で転送コマンド制御ブロックの長さを指定する。
【0035】
読み出し操作(R)208:このフィールド(例えば、ワード1のビット14)が1のとき、入力カウント(例えば、ワード11)は有効であり、メインストレージに転送されるバイト数を示す非ゼロ値(non-zero value)を含む。
【0036】
書き込み操作(W)210:このフィールド(例えば、ワード1のビット15)が1のとき、出力カウント(例えば、ワード10)は有効であり、メインストレージから転送されるバイト数を示す非ゼロ値を含む。
【0037】
読み取り操作フィールドと書き込み操作フィールドが両方とも1であり、デバイスが双方向データ転送をサポートせず、選択されたフラグインジケータ(例えば、ビット10)が0の場合、プログラムチェック条件(program check condition)が認識される。書き込み操作フィールドが1であり、トランスポート制御ワードが問い合わせトランスポート制御ワード(interrogate transport control word)である場合、プログラムチェック条件が認識される。
【0038】
出力データアドレス(212):書き込み操作フィールドが1であり、フラグフィールドの出力トランスポート間接データアドレス指定フラグ(例えば、ビット7)が0のとき、このフィールド(例えば、ワード2~3)は、例えば、絶対ストレージにおける64ビット出力位置を指定する。書き込み操作フィールドが1であり、フラグフィールドの出力トランスポート間接データアドレス指定フラグが1のとき、このフィールドは、例えば、出力記憶位置を指定するトランスポート間接データアドレスワードまたはトランスポート間接データアドレスワードのリストの絶対ストレージにおける64ビット位置を指定する。
【0039】
入力データアドレス(214):読み出し操作フィールドが1であり、フラグフィールドの入力トランスポート間接データアドレス指定フラグ(例えば、ビット5)が0のとき、このフィールド(例えば、ワード4~5)は、例えば、絶対ストレージ内の64ビット入力位置を指定する。読み出し操作フィールドが1であり、フラグフィールドの入力トランスポート間接データアドレス指定が1のとき、このフィールドは、例えば、入力記憶位置を指定するトランスポート間接データアドレスワードまたはトランスポート間接データアドレスワードのリストの絶対ストレージにおける64ビット位置を指定する。
【0040】
トランスポートステータスブロックアドレス(Transport Status Block Address)(216):このフィールド(例えば、ワード6~7)は、例えば、トランスポート制御ワードに関するトランスポートステータスブロックの絶対ストレージにおける64ビット位置を指定する。
【0041】
トランスポートコマンド制御ブロックアドレス218:トランスポートコマンド制御ブロックトランスポート間接データアドレスフラグ(フラグフィールドのビット6)が0のとき、このフィールド(例えば、ワード8~9)は、例えば、トランスポートコマンド制御ブロックの絶対ストレージにおける64ビット位置を指定する。トランスポートコマンド制御ブロックトランスポート間接データアドレスフィールドが0のとき、トランスポートコマンド制御ブロックは、ストレージの連続領域(contiguous area)内に常駐するように指定される。トランスポートコマンド制御ブロックトランスポート間接データアドレスフィールドが1のとき、このフィールドは、例えば、トランスポートコマンド制御ブロックの絶対ストレージにおける位置を指定する、トランスポート間接データアドレスワードまたはトランスポート間接データアドレスワードのリストの絶対ストレージにおける64ビット位置を指定する。トランスポートコマンド制御ブロックトランスポート間接データアドレスフラグが1のとき、トランスポートコマンド制御ブロックは、ストレージの非連続領域(non-contiguous area)内に常駐するように指定されてもよい。
【0042】
トランスポートコマンド制御ブロックは、長さが可変であり、例えば、ヘッダ、トレーラ、および実行される1つ以上のコマンドを指定する1~30のデバイスコマンドワードを含む。
【0043】
出力カウント(220):書き込み操作フィールドが1のとき、このフィールド(例えば、ワード10)は、トランスポート制御ワードに関する出力バイトの符号なし整数合計カウントを含む。
【0044】
入力カウント(222):読み出し操作フィールドが1のとき、このフィールド(例えば、ワード11)は、トランスポート制御ワードに関する入力バイトの符号なし整数合計カウントを含む。
【0045】
変換(transform)タイプ(224):このフィールド(例えば、ワード12のビット0~3)は、本発明の一態様に従って、トランスポート制御ワードによって示されるように、転送されるデータに対して変換(transformation)(本明細書において「変換(transform)とも呼ぶ」)を適用するか否か、および変換を適用する場合、どの変換を適用するかの指示(indication)を含む。変換の例は以下の通りである。
【0046】
0000-変換を適用しない
【0047】
0001-人工知能(AI)変換
【0048】
AI変換には様々な例があり、特に限定されないが、ソースの各要素を関数funcに通すことによって形成される新たな分散データセットを返すmap(func)、funcが真を返すソースの要素を選択することによって形成される新たなデータセットを返すfilter(func)、ソースデータセットと引数の要素の和集合を含む新たなデータセットを返すunion(other dataset)、ソースデータセットと引数の要素の共通部分を含む新たなデータセットを返すintersection(other dataset)、および、特に限定されないが、join、sort、cogroup、cartesian、pipe、coalesce、repartition、aggregate、reduce、distinct、sampleなどの他の多くの関数が挙げられる。なお、1つ以上の変換を併用してもよい。
【0049】
0010-パケットフィルタ(Packet Filter)
【0050】
パケットフィルタリングは、例えばネットワークインタフェースにてパケットを許可またはブロックするために使用される。これは、例えば、セキュリティを目的として使用される。
【0051】
0011-Stats(統計解析)
【0052】
統計解析において、データ変換は、例えば、データセット内の各データ点に決定論的数学関数(deterministic mathematical function)を適用することであり、これにより、各データ点zが、変換後の値y=f(fは数学関数)で置き換えられる。
【0053】
01xx-テレメトリ(telemetry)タイプ
【0054】
テレメトリ変換では、感覚データ(sensory data)をシステムによって取得し、当該感覚データを使用しやすくするために変換することができる。他の例も可能である。
【0055】
1000-マルチキャスト
【0056】
一例として、マルチキャストはFICON(ファイバ接続)レプリケーション(FICON replication)のために行われる。データは、分析部に接続するために、第2のポートにミラーリングされる。第2のポートは暗号化されていなくてもよいため、データを送信中に(in-flight)見てデバッグすることができる。そして、トラフィックは暗号化されたカードに送られる。
【0057】
別の例としては、データセットレプリケーションの別の形態が挙げられる。
【0058】
1001-ポートミラー
【0059】
1xxx-未定義(undefined)
【0060】
変換サブタイプ(Transform Subtype)(226):このフィールド(例えば、ワード12のビット4~7)は、本発明の一態様に従って、特定の操作に適用する変換の特定のサブタイプを提示する。例えば、タイプフィールドが人工知能変換を示す場合、このフィールドは、適用する人工知能変換の特定のタイプ(例えば、map、filter、unionなど)を示す。他の例も可能である。
【0061】
ステータスフィールド(228):このフィールド(例えば、ワード12のバイト1)は、本発明の一態様に従って、成功か失敗かにかかわらず、変換の結果を示す。一例として、このフィールドは、ステータスフィールドオフセットポインタ(status field offset pointer)を示す。これは、どのようなエラーが(発生した場合)変換中に発生したかについてのさらなる情報の場所である。トランスポート制御ワードの位置から、ステータスが位置するxバイトのブロック数である。
【0062】
問い合わせトランスポート制御ワードアドレス(Interrogate Transport Control Word Address)(230):このフィールド(例えば、ワード15)は、適切な場合に問い合わせ操作(interrogate operation)を開始するために使用される。
【0063】
本明細書の一実施形態において、トランスポート制御ワードについて特定のフィールド、フィールドの位置、フィールドのサイズ、ビット、およびフィールドまたはビットの値を説明するが、本発明の1つ以上の態様の範囲から逸脱することなく、他のフィールド、フィールドの位置、フィールドのサイズ、ビット、もしくは、フィールドもしくはビットの値、またはその組み合わせを使用することができる。本明細書に記載されていない各フィールドのフィールドもしくはサブフィールドまたはその両方は、一実施形態において、空白であってもよいし、所定の値(例えば、0)を有していてもよいし、もしくは無視される値を含んでいてもよいし、これらの組み合わせであってもよい。さらに、トランスポート制御ワードは、入出力処理で使用するために追加の、より少ない、もしくは他の、またはこれらの組み合わせのフィールドまたはサブフィールドを含んでもよい。多くの可能性が存在する。
【0064】
トランスポート制御ワードを使用して、変換を適用するか否かを決定する一例について、図3を参照して説明する。一実施形態において、ステップ300にて、マイクロコントローラ(例えば、マイクロコントローラ110)が、入出力操作時にデータパケットを取得する(例えば、受信する、提供される、あるいは検索する)。そして、ステップ302にて、データパケットに関連する処理を実行する。例えば、マイクロコントローラは、分岐304にて、データパケットのデータに対して変換を実行するか否かを決定する。一例として、マイクロコントローラは、データパケットに関連するトランスポート制御ワード(例えば、トランスポート制御ワード200)をチェックし、データに変換を適用すべきか否かを決定する。例えば、マイクロコントローラは、変換タイプフィールド224をチェックして、データに変換を適用すべきか否かを決定する。選択値(例えば、0000)が示されている場合、変換は適用されない。しかし、別の値が示されている場合、変換タイプフィールド224もしくは変換サブタイプフィールド226またはその両方は、データに対して実行すべき特定の変換を示す。
【0065】
変換を適用する場合、マイクロコントローラはステップ306にて、データに対して変換を実行する。例えば、AI変換が選択された場合、具体的には、filter関数などの特定のAI関数が選択された場合、マイクロコントローラは、データに対してこの特定の関数を実行する。他の変換も同様に、変換のタイプに応じて実行される。ただし、変換を適用しない場合、変換は実行されない。
【0066】
一実施形態において、変換を実行するか否かのチェックと、(実行する場合)実行する変換を決定することは、1つ以上のマイクロコントローラによって行われる。例えば、同じマイクロコントローラがチェックと決定の両方を行ってもよいし、異なるマイクロコントローラがチェックと決定を行ってもよい。別の例として、チェックは、例えば、コンピューティングシステムのマイクロコントローラまたはロジックによって行い、このチェックに基づいて、選択されたマイクロコントローラが変換を実行してもよい。様々な実装形態が可能である。
【0067】
マイクロコントローラを使用してデータに対してインラインで変換を実行する場合のさらなる詳細について、図4を参照して説明する。図4は、ストアコマンド(store command)を説明する図である。同様の処理は、フェッチコマンド(fetch command)についても実行される。図4の処理は、1つ以上のプロセッサによって、プロセッサのハードウェアロジックもしくは1つ以上のマイクロコントローラまたはその両方を用いて実行される。矢印の隣の数字(例えば、数字1~20)は、以下に説明する例示的な処理ステップに対応する。なお、例示的な処理ステップを説明するが、本発明の1つ以上の態様に従って、追加の、より少ない、もしくは他の、またはこれらの組み合わせのステップを実行してもよい。
【0068】
1:PCI(例えば、ネットワークアダプタ124)が、データルータ400にストアコマンドを送信する。一例として、ストアコマンドは、I/O制御ブロック(例えば、トランスポート制御ワード200)により定義される。例えば、プログラム(例えば、オペレーティングシステム)が、外部ストレージデバイス(例えば、外部ストレージデバイス126)からデータ(例えば、データ128)を要求し、ストアコマンドを定義するトランスポート制御ワードを構築し、処理のためにトランスポート制御ワードをI/Oサブシステム(例えば、I/Oサブシステム104)に送信する。I/Oサブシステムがデータを取得し、ストアコマンドおよびデータは、一実施形態において、本明細書で説明するように処理される。
【0069】
2:ストアコマンドがデータとともに入ってくる。コマンドパース(command parse)401がデータを受け取り、受信(RX)バッファ402内の次の空き場所(free location)に格納し、受信バッファ402のどのアドレスにどれだけのデータが書き込まれたかを記録する。
【0070】
3:コマンドパース401は、PCIコマンドのアドレス制御ワードについて、1つ以上のアクティブ要求カウントアレイ(active request count array)404内の現在のアクティブ要求カウント値を読み取り、それを選択値(例えば、1)だけインクリメントする。
【0071】
アクティブ要求カウントは、データルータハードウェアが各アドレス制御ワードについて維持する内部カウンタである。ハードウェアは、このアドレス制御ワードをターゲットとするストア要求(例えば、PCIeストア要求)がバイトストアアレイ(byte store array)にロードされるたびに、このカウントを選択値(例えば、1)だけインクリメントする。ハードウェアは、ストア要求が完了した際にカウントをデクリメントする。ストア要求は、(1)データがコンピューティングシステム(例えば、システム102)をターゲットにしていた場合、PCIe要求についてメモリへの記憶要求が完了したとき、(2)アドレス制御ワードに廃棄インジケータ(discard indicator)が設定されている場合、このPCIe要求についてのデータがドロップされたとき、または、(3)PCIe要求がヘッダのみを転送した場合、ヘッダがアドレス制御ワードに格納されるとき、に完了する。
【0072】
4:コマンドパース401は、アドレス制御ワードキャッシュ406からアドレス制御語を読み出し、完了ビットを選択値(例えば、0)に設定する。
【0073】
5:コマンドパース401は、例えば、先入れ先出し(first in/first out)手法を用いて、新しいエントリをストアコマンドテーブル408に追加する。
【0074】
6:ストア比較ロジック(store compare logic)410は、ストアコマンドテーブル408から次のエントリを取得する。
【0075】
7:ストア比較ロジック410は、アドレス制御ワードキャッシュ406からアドレス制御ワードを読み出し、例えば、有効、制御、検証、状態、および次に予想されるオフセットを含む種々のフィールドをチェックする。ストア比較ロジック410はまた、アドレス制御ワードの状態およびタッチビット(touch bit)を更新する。
【0076】
8:問題がなければ、ストア比較ロジック410は、このコマンドをストアコマンドロジック412に提示する。
【0077】
9:ストアコマンドロジック412は、トランスポート間接データアドレスリストのアドレスおよびワーキングカウント(working count)について、アドレス制御ワードを読み取る。
【0078】
9a:トランスポート間接データアドレスリストがトランスポート間接データアドレスリストキャッシュ414にない場合、ストアコマンドロジック412は、ホストメモリ(例えば、メモリ108)から1つ以上のトランスポート間接データアドレスリストをフェッチする。一例として、一度に8つのトランスポート間接データアドレスリストをフェッチする。これは、一例では、データルータ400に結合されているデータアシストロジックへの高優先度フェッチ(high priority fetch)を介して行われる。
【0079】
9b:データアシストは、トランスポート間接データアドレスリスト情報を送信(TX)バッファ416に書き込む。
【0080】
9c:データアシストは、「完了」(done)付き返信を行い、ストアコマンドロジック412がこれをインターセプトする。
【0081】
9d:ストアコマンドロジック412は、送信バッファ416を読み取り、トランスポート間接データアドレスリストを取得する。
【0082】
9e:ストアコマンドロジック412は、トランスポート間接データアドレスリストをトランスポート間接データアドレスリストキャッシュ414に書き込む。
【0083】
10:ストアコマンドロジック412は、トランスポート間接データアドレスリストキャッシュ414からトランスポート間接データアドレスリストを取得する。
【0084】
11:ストアコマンドロジック412は、トランスポート間接データアドレスリスト情報に基づいて、データアシストにエンキュー(enqueues)を格納する。より多くのトランスポート間接データアドレスリストが必要な場合、ストアコマンドロジック412は、ホストメモリ(例えば、メモリ108)からより多くのトランスポート間接データアドレスリストをフェッチする。
【0085】
12:ストアコマンドロジック412は、いくつのエンキューが行われたか、およびその特定のPCIコマンドについて、ストアコマンドテーブル420に通知する。
【0086】
13:ストアコマンドロジック412は、残りのトランスポート間接データアドレスリスト情報をトランスポート間接データアドレスリストキャッシュ414に書き戻す(write back)。
【0087】
14:ストアコマンドロジック412は、トランスポート間接データアドレスキャッシュ414の次の位置および新たなワーキングカウントでアドレス制御ワードを更新する。
【0088】
15:データアシストは、受信バッファ402を読み取ってホストメモリ(例えば、メモリ108)へのデータ格納を開始しようとする。これは、ストアコマンドテーブル420によってインターセプトされ、保留にされる。
【0089】
16:ストアコマンドテーブル420は、現在の巡回冗長検査(CRC:cyclic redundancy check)の値および状態についてアドレス制御ワードを読み取る。ストアコマンドテーブル420はまた、トランスポート制御ワードの適切な処理インジケータ(例えば、1つ以上のビット)をチェックして、データに変換を適用すべきか否かを決定する。その後、データアシストに受信バッファの読み取りを許可する。処理インジケータ(例えば、変換タイプフィールド224)が、変換を適用すべきであることを示す選択値に設定されている場合、データは、汎用変換エンジン(generic transformation engine)430などの変換エンジンを通過する。変換エンジンは、複数の変換を実行することができるため、「汎用」と呼ばれる。一例として、変換エンジンは、マイクロコントローラ(例えば、マイクロコントローラ110)であるか、またはマイクロコントローラ内に含まれる。
【0090】
汎用変換エンジン430は、本発明の一態様に従って、データに適用すべき選択された変換を決定する。例えば、汎用変換エンジン430は、変換タイプフィールド224もしくは変換サブタイプフィールド226またはその両方をチェックし、適用する変換を決定する。汎用変換エンジン430は、指示された変換を実行(例えば、実行する選択された変換に基づいて、指定の数学関数、分析もしくは他の変換またはその組み合わせを実行)し、結果(例えば、変換されたデータ)を出力する。
【0091】
汎用変換エンジン430による処理が完了すると、データはデータアシストに転送され、新たな巡回冗長検査が計算される。データアシストが受信バッファ402の読み取りを終了すると、ストアコマンドテーブル420は新たな巡回冗長検査の値および状態をアドレス制御ワードに書き戻す。
【0092】
17:データアシストは、データがホストメモリ(例えば、メモリ108)に格納された後、データルータに「完了(done)」を返す。これらの「完了」は、ストアコマンドテーブル420によって蓄積される。
【0093】
一実施形態において、データの複製(duplication)が存在してもよく、したがって、データのコピーと変換が行われてもよい。
【0094】
18:PCIコマンドに関して受信した「完了」が十分にある場合、ストアコマンドテーブル420は、特定のPCIコマンドが完了したことをコマンドパースロジック401に指示する。
【0095】
19:コマンドパース401は、より多くの受信バッファ空間を解放し、また、アクティブ要求カウントアレイ404を読み取り、値を選択値(例えば、1)だけデクリメントする。これは、アドレス制御ワードとハードウェア応答ワード(hardware response word)が実行され、書き込まれた後に行われる。
【0096】
20:コマンドパース401はまた、アドレス制御ワードを読み取り、必要に応じてハードウェア応答ワードおよびアドレス制御ワードの他のビットを更新する。
【0097】
データルータの例示的なロジックが提供されているが、処理対象の他のコマンドもしくは他の実施形態またはその両方について、追加の、より少ない、もしくは他の、またはこれらの組み合わせのロジックを使用してもよい。本明細書で説明するロジックは、一例に過ぎない。
【0098】
本明細書で説明するように、一実施形態において、マイクロコントローラ(例えば、汎用変換エンジン)は、入出力操作のデータに適用すべき選択された変換を決定し、入出力操作のインライン処理中に当該変換をデータに適用する。これは、入出力システムまたはコンピューティングシステムに結合された別個のホストコントローラまたは他のコンポーネントから独立して実行される。これにより、別個のマシンに送信する際の遅延時間を低減することで、入出力操作の実行時間を短縮し、それにより、システム性能を向上させることができる。
【0099】
本発明の1つ以上の態様は、コンピュータ技術と密接に関連し、コンピューティング環境内での入力/出力処理を含む処理を容易化し、その性能を向上させる。コンピューティング環境内での処理を容易化することに関連する態様の一実施形態のさらなる詳細を、図5A、5Bを参照して説明する。
【0100】
図5Aを参照すると、一実施形態において、変換エンジンによって変換対象のデータが取得される(500)。そして、変換エンジンによって、データに適用すべき選択された変換が決定される(502)。一例として、この決定は、入出力制御ブロック(504)を使用する。入出力制御ブロックは、例えば、適用する選択された変換を決定する際に使用される少なくとも1つのフィールドを含む(506)。適用する選択された変換を決定したことに基づいて、選択された変換が変換エンジンによって実行される(508)。
【0101】
入出力制御ブロックを変換に使用することにより、変換を適用するか否かの決定と、(適用する場合)変換の実行とが、コンピューティングシステムおよびコンピューティングシステムに結合された入出力サブシステムの外部にある、ホストコントローラなどの別個のマシンから独立して実行される。これにより、入出力処理が改善され、したがって、システム性能が向上する。
【0102】
一実施形態において、変換エンジンによるデータの取得は、例えば、入出力制御ブロックにおける、変換をデータに適用すべきであるという指示に基づく(510)。どの操作に変換を適用するか、適用する場合はどの変換を適用するかを識別する能力が提供される。
【0103】
一実施形態において、変換を適用すべきであるという指示は、入出力制御ブロックの少なくとも1つのフィールドによって提供され、この入出力制御ブロックの少なくとも1つのフィールドは、変換タイプフィールドを含む(512)。変換タイプフィールドを使用して、変換を適用すべきか否かが決定される(514)。変換タイプフィールドをチェックすることにより、決定を容易にし、処理およびシステム性能を向上させることができる。
【0104】
一実施形態において、選択された変換を決定することは、選択された変換の指示について変換タイプフィールドをチェックすることを含む(516)。変換タイプフィールドをチェックすることにより、どの変換を適用するかの決定が容易になり、処理およびシステム性能を向上させることができる。
【0105】
一実施形態において、少なくとも1つのフィールドは、変換サブタイプフィールドをさらに含み(518)、選択された変換を決定することは、選択された変換の指示について変換サブタイプフィールドをチェックすることをさらに含む(520)。変換サブタイプフィールドを提供することにより、変換を選択するためのさらなる精度(granularity)が提供される。これにより、柔軟性が得られ、処理が容易になり、システム性能が向上する。
【0106】
図5Bを参照すると、一例として、入出力制御ブロックは、コンピューティングシステムのメモリと、入出力サブシステムを介してコンピューティングシステムに結合された外部ストレージデバイスとの間でデータを伝送する際に用いられるトランスポート制御ワードである(530)。トランスポート制御ワードは、例えば、変換タイプフィールドおよび変換サブタイプフィールドを含む(532)。一実施形態において、選択された変換を決定することは、変換タイプフィールドおよび変換サブタイプフィールドの少なくとも1つをチェックすることを含む(536)。トランスポート制御ワードを使用することにより、どの操作に変換を適用するか、適用する場合はどの変換を適用するかを識別することができるため、処理が容易となる。さらに、変換タイプフィールドもしくは変換サブタイプフィールドまたはその両方をチェックすることにより、変換を行うか否か、行う場合はどの変換を行うかの決定が容易になり、これにより、システム性能の向上、複雑さの低減、使用するハードウェアの低減(例えば、チェックを行う別個のマシンが不要)が可能になる。
【0107】
一実施形態において、選択された変換は、入出力制御ブロックによって指定される複数種類の変換のうちの1種類の変換である(538)。複数種類の変換の例としては、人工知能変換、パケットフィルタ、統計解析、テレメトリ、およびマルチキャストレプリケーションが挙げられる(540)。
【0108】
一実施形態において、少なくとも決定を行うことは、コンピューティングシステムのメモリとコンピューティングシステムに結合された外部ストレージデバイスとの間でのデータの処理に対してインラインで実行される(542)。これにより、少なくとも決定を行うための別個のマシンが不要となり、処理を改善し、コストを削減することができる。
【0109】
他の変形および実施形態も可能である。
【0110】
本発明の1つ以上の態様に係るインラインでのパケット変換は、多くのコンピューティング環境に組み込み、使用することができる。本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の一例を、図6Aを参照して説明する。一例として、図6Aのコンピューティング環境は、International Business Machines Corporationが提供するz/Architectureハードウェアアーキテクチャに基づくものである。ただし、z/Architectureハードウェアアーキテクチャは、アーキテクチャの一例に過ぎない。本発明の態様は、他のアーキテクチャ(特に限定されないが、Intel x86アーキテクチャ、International Business Machines Corporationの他のアーキテクチャ、もしくは他社のアーキテクチャまたはその組み合わせなど)に基づいてもよい。なお、Intelは、Intel Corporationおよびその子会社の米国およびその他の国における商標または登録商標である。
【0111】
一例として、コンピューティング環境600は、中央電子処理装置(CEC:central electronics complex)602を含む。CEC602は、複数のコンポーネントを含む。複数のコンポーネントは、例えば、1つ以上のプロセッサ(別名、中央処理装置(CPU))606と入出力(I/O)サブシステム608とに結合されたメモリ604(別名、システムメモリ、メインメモリ、メインストレージ、中央ストレージ、ストレージ)を含む。
【0112】
I/Oサブシステム608は、中央電子処理装置の一部であってもよいし、そこから分離していてもよい。I/Oサブシステム608は、メインストレージ604と、中央電子処理装置に結合された入出力制御ユニット610および入出力(I/O)デバイス612との間の情報フローを指示する。
【0113】
多くのタイプのI/Oデバイスを使用することができる。1つの特定のタイプとして、データストレージデバイス614が使用される。データストレージデバイス614は、1つ以上のプログラム616、1つ以上のコンピュータ可読プログラム命令618、もしくはデータまたはその組み合わせなどを記憶することができる。コンピュータ可読プログラム命令は、本発明の態様に係る実施形態の機能を実行するように構成することができる。
【0114】
一実施形態において、プロセッサ606のうちの1つ以上は、1つ以上のマイクロコントローラ620を含む。本明細書で説明するように、マイクロコントローラは、本発明の1つ以上の態様に従って、入出力操作のデータパケットに変換を適用するか否かを決定するとともに、変換を適用すべき場合は、変換を実行するために使用される。
【0115】
別の実施形態において、1つ以上のマイクロコントローラは、1つ以上のプロセッサ606と同様に、またはその代わりに、I/Oサブシステム608に含まれてもよい。他の変形も可能である。
【0116】
中央電子処理装置602は、取り外し可能/取り外し不可能な揮発性/不揮発性のコンピュータシステムストレージ媒体を含むことができ、もしくはこれに結合することができ、またはその両方とすることができる。例えば、中央電子処理装置602は、取り外し不可能な不揮発性磁気媒体(一般的には「ハードディスク」と呼ばれる)、取り外し可能な不揮発性磁気ディスク(例えば「フロッピーディスク」)に対して読み書きを行うための磁気ディスクドライブ、もしくは、CD-ROM、DVD-ROMや他の光学媒体など、取り外し可能な不揮発性の光ディスクに対して読み書きを行うための光ディスクドライブを含むことができ、もしくはこれに結合することができ、またはその両方とすることができる。なお、他のハードウェアもしくはソフトウェアまたはその両方のコンポーネントを中央電子処理装置602と組み合わせて使用してもよい。これらのコンポーネントの例としては、特に限定されないが、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、およびデータアーカイブストレージシステムなどが挙げられる。
【0117】
さらに、中央電子処理装置602は、多数の他の汎用もしくは専用コンピューティングシステム環境または構成とともに動作可能である。中央電子処理装置602とともに使用するのに適した周知のコンピューティングシステム、環境、もしくは構成またはその組み合わせの例としては、特に限定されないが、パーソナルコンピュータ(PC)システム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および、これらのシステムまたはデバイスのいずれかを含む分散型クラウドコンピューティング環境などが挙げられる。
【0118】
中央電子処理装置602は、1つ以上の実施形態において、論理パーティショニングもしくは仮想化サポートまたはその両方を提供する。一実施形態において、図6Bに示すように、メモリ604は、例えば、1つ以上の論理パーティション670、論理パーティションを管理するハイパーバイザ672、およびプロセッサファームウェア674を含む。ハイパーバイザ672の一例としては、International Business Machines Corporation(ニューヨーク州アーモンク)によって提供されるProcessor Resource/System Manager(PR/SM)が挙げられる。本明細書において使用されるように、ファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、より上位レベルのマシンコードの実装において使用されるハードウェアレベル命令もしくはデータ構造またはその両方を含む。一実施形態において、ファームウェアは、例えば、信頼できるソフトウェアを含むマイクロコードまたは基礎となるハードウェアに固有のマイクロコードとして通常は提供される、システムハードウェアへのオペレーティングシステムのアクセスを制御する独自コードを含む。
【0119】
各論理パーティション670は、別個のシステムとして機能することができる。すなわち、各論理パーティションは、独立してリセットされ、ゲストオペレーティングシステム676(International Business Machines Corporation(ニューヨーク州アーモンク)が提供するz/OSオペレーティングシステムなど)または他の制御コード678(結合ファシリティ制御コード(CFCC:coupling facility control code)など)を実行し、異なるプログラム680で動作することができる。論理パーティション内で実行されているオペレーティングシステムまたはアプリケーションプログラムは、全体の完全なシステムにアクセスできるように見えるが、実際には、その一部しか利用できない。なお、Processor Resource/System Managerハイパーバイザおよびz/OSオペレーティングシステムを例示したが、他のハイパーバイザもしくはオペレーティングシステムまたはその両方を、本発明の1つ以上の態様に従って使用してもよい。
【0120】
メモリ604は、CPU606(図6A)に結合される。CPU606は、論理パーティションに割り当てることができる物理プロセッサリソースである。例えば、論理パーティション670は、1つ以上の論理プロセッサを含み、その各々は、論理パーティションに動的に割り当てることができる物理プロセッサリソース606のすべてまたは部分を表す。
【0121】
さらなる一実施形態において、中央電子処理装置は、仮想マシンサポートを提供する(論理パーティショニングサポートを伴うか、伴わないかのいずれか)。図6Cに示すように、中央電子処理装置602のメモリ604は、例えば、1つ以上の仮想マシン690と、仮想マシンを管理するハイパーバイザ692などの仮想マシンマネージャと、プロセッサファームウェア694とを含む。ハイパーバイザ692の一例としては、International Business Machines Corporation(ニューヨーク州アーモンク)が提供するz/VM(登録商標)ハイパーバイザが挙げられる。ハイパーバイザは、ホストと呼ばれることもある。なお、PR/SMおよびz/VMは、少なくとも1つの法域におけるInternational Business Machines Corporationの商標または登録商標である。
【0122】
CECの仮想マシンサポートは、各々が異なるプログラム696で動作し、Linuxオペレーティングシステムや他のオペレーティングシステムなどのゲストオペレーティングシステム698を実行することができる、多数の仮想マシン690を運用する能力を提供する。各仮想マシン690は、別個のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲストオペレーティングシステムを実行し、異なるプログラムで動作することができる。仮想マシン内で実行されるオペレーティングシステムまたはアプリケーションプログラムは、全体の完全なシステムにアクセスできるように見えるが、実際には、その一部しか利用できない。なお、z/VMハイパーバイザおよびLinuxオペレーティングシステムを例示したが、他の仮想マシンマネージャもしくはオペレーティングシステムまたはその両方を、本発明の1つ以上の態様に従って使用してもよい。
【0123】
本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の別の実施形態を、図7Aを参照して説明する。この例では、コンピューティング環境10は、例えば、ネイティブ中央処理装置(CPU)12と、メモリ14と、例えば1つ以上のバス18もしくは他の接続またはその両方介して互いに結合された1つ以上の入出力デバイス16もしくは入出力インタフェース16またはその両方と含む。一例として、コンピューティング環境10は、International Business Machines Corporation(ニューヨーク州アーモンク)が提供するPowerPC(登録商標)プロセッサ、Hewlett Packard Co.(カリフォルニア州パロアルト)が提供するIntel Itanium IIプロセッサ搭載HP Superdome、もしくは、International Business Machines Corporation、Hewlett Packard、Intel Corporation、Oracleもしくは他の企業が提供するアーキテクチャに基づく他のマシン、またはその組み合わせを含むことができる。PowerPCは、少なくとも1つの法域におけるInternational Business Machines Corporationの商標または登録商標である。Itaniumは、Intel Corporationまたはその子会社の米国およびその他の国における商標または登録商標である。
【0124】
ネイティブ中央処理装置12は、環境内での処理中に使用される1つ以上の汎用レジスタもしくは1つ以上の専用レジスタまたはその両方などの、1つ以上のネイティブレジスタ20を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【0125】
さらに、ネイティブ中央処理装置12は、メモリ14に記憶されている命令およびコードを実行する。1つの具体例では、中央処理装置は、メモリ14に記憶されているエミュレータコード22を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータコード22は、z/Architectureハードウェアアーキテクチャ以外のアーキテクチャ(PowerPCプロセッサ、HP Superdomeサーバなど)に基づくマシンが、z/Architectureハードウェアアーキテクチャをエミュレートし、z/Architectureハードウェアアーキテクチャに基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
【0126】
エミュレータコード22に関連するさらなる詳細を、図7Bを参照して説明する。メモリ14に記憶されたゲスト命令(guest instructions)30は、ネイティブCPU12のアーキテクチャ以外のアーキテクチャで実行されるように開発されたソフトウェア命令(例えば、マシン命令と相互に関連付けられた)を含む。例えば、ゲスト命令30は、z/Architectureハードウェアアーキテクチャに基づくプロセッサ上で実行されるように設計されていた可能性があるが、その代わりに、ネイティブCPU12(例えばIntel Itanium IIプロセッサであってもよい)上でエミュレートされている。一例として、エミュレータコード22は、メモリ14から1つ以上のゲスト命令30を取得することと、取得した命令に対してローカルバッファリングを任意で提供することとを行うための命令フェッチルーチン(instruction fetching routine)32を含む。また、エミュレータコード22は、取得したゲスト命令のタイプを決定することと、ゲスト命令を1つ以上の対応するネイティブ命令(native instructions)36に変換することとを行うための命令変換ルーチン(instruction translation routine)34を含む。この変換は、例えば、ゲスト命令によって実行される機能を特定することと、当該機能を実行するためのネイティブ命令を選択することとを含む。
【0127】
さらに、エミュレータコード22は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン(emulation control routine)40を含む。エミュレーション制御ルーチン40は、ネイティブCPU12に、1つ以上の以前に取得したゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、このような実行の終了時に、次のゲスト命令またはゲスト命令グループの取得をエミュレートするために制御を命令フェッチルーチンに戻してもよい。ネイティブ命令36の実行は、メモリ14からレジスタにデータをロードすること、レジスタからメモリにデータを戻して記憶すること、または、変換ルーチンによって決定されるようないくつかのタイプの算術演算または論理演算を実行することを含んでもよい。
【0128】
各ルーチンは、例えば、メモリに記憶されかつネイティブ中央処理装置12によって実行されるソフトウェアにおいて実装される。他の例において、ルーチンまたは操作のうちの1つ以上は、ファームウェア、ハードウェア、ソフトウェアまたはそれらの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ20を使用して、またはメモリ14内の位置を使用してエミュレートされてもよい。実施形態において、ゲスト命令30、ネイティブ命令36およびエミュレータコード22は、同じメモリに存在してもよいし、または異なるメモリデバイス間に分散されてもよい。
【0129】
上述したコンピューティング環境は、使用可能なコンピューティング環境の例に過ぎない。他の環境(特に限定されないが、非パーティション化環境、パーティション化環境、クラウド環境もしくはエミュレートされた環境またはその組み合わせを含む)を使用してもよく、実施形態は1つの環境に限定されない。本明細書では、コンピューティング環境の様々な例を説明しているが、本発明の1つ以上の態様は、多くのタイプの環境とともに使用することができる。本明細書で提供されるコンピューティング環境は、例示に過ぎない。
【0130】
各コンピューティング環境は、本発明の1つ以上の態様を含むように構成することができる。例えば、各コンピューティング環境は、本発明の1つ以上の態様に従って、インライン変換処理を行うために構成することができる。
【0131】
本明細書で説明するように、1つ以上の態様において、インライン変換が提供される。一態様では、トランスポート制御ワードなどの制御ブロックがチェックされ、制御ブロックによって示されるデータに変換を適用すべきか否かが決定される。変換を適用する場合、制御ブロックによって示される変換が適用され、結果が返される。適用される変換は、制御ブロックに示される複数種類の変換のうちの1つの変換であってもよい。一例として、マイクロコントローラは、少なくとも、適用する変換を決定する能力と、変換を適用する能力とを有するように構成される。適用する変換を決定する能力と、変換を実行する能力とを有するようにマイクロコントローラを構成することにより、コンピューティングシステムおよび入出力システムの外部にあるホストコントローラを用いて変換を実行する必要がなくなる。これにより、時間を節約し、コンピューティング環境内のパフォーマンスを向上させることができる。
【0132】
本明細書では様々な実施形態を説明しているが、本発明の態様の範囲から逸脱することなく、多くの変形および他の実施形態が可能である。例えば、一実施形態において、1つ以上の変換がデータに適用されてもよく、適用される各変換は、I/O制御ブロック(例えば、トランスポート制御ワード200)において示される。他の変形も可能である。なお、特に矛盾しない限り、本明細書に記載の各態様または特徴およびその変形を、任意の他の態様または特徴と組み合わせてもよい。
【0133】
1つ以上の態様は、クラウドコンピューティングに関連してもよい。
【0134】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装形態は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている又は後に開発される任意の他のタイプのコンピューティング環境と組み合わせて実施することが可能である。
【0135】
クラウドコンピューティングは、設定可能なコンピューティングリソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)の共有プールへの簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの展開モデルを含むことができる。
【0136】
特性は以下の通りである。
【0137】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0138】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0139】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0140】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0141】
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0142】
サービスモデルは以下の通りである。
【0143】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0144】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0145】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0146】
展開モデルは以下の通りである。
【0147】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0148】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0149】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0150】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0151】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0152】
ここで、図8に例示的なクラウドコンピューティング環境50を示す。図示するように、クラウドコンピューティング環境50は1つ以上のクラウドコンピューティングノード52を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード52は互いに通信することができる。ノード52は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、図8に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード52およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0153】
ここで、クラウドコンピューティング環境50(図8)によって提供される機能的抽象化レイヤのセットを図9に示す。なお、図9に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0154】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0155】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75などの仮想エンティティを提供することができる。
【0156】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでもよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウド消費者およびタスクの識別確認を可能にする。ユーザポータル83は、消費者およびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0157】
ワークロードレイヤ90は、クラウドコンピューティング環境の利用が可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、およびインラインパケット変換処理キーワード推奨プログラム96が含まれる。
【0158】
本発明の態様は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合わせとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでもよい。
【0159】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、一例として、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイスまたはこれらの適切な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化されたデバイス、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0160】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティングデバイス/処理デバイスへダウンロード可能である。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくはワイヤレスネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部ストレージデバイスへダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピューティングデバイス/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピューティングデバイス/処理デバイスにおけるコンピュータ可読記憶媒体に記憶するために転送する。
【0161】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
【0162】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。
【0163】
これらのコンピュータ可読プログラム命令は、機械を生産するために、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサに提供することができる。これにより、このようなコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。これらのコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他のデバイスまたはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶することができる。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
【0164】
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他のデバイスにロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行する。
【0165】
図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行されてもよい。例えば、関係する機能に応じて、連続して示される2つのブロックが、実際には、1つの工程として達成されてもよいし、同時もしくは略同時に実行されてもよいし、部分的もしくは全体的に時間的に重複した態様で実行されてもよいし、ブロックが場合により逆順で実行されてもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能もしくは動作を行う、または専用ハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実行可能である。
【0166】
上記に加えて、1つ以上の態様は、顧客環境の管理を提供するサービスプロバイダによって供与、提供、展開、管理、サービスなどが行われてもよい。例えば、サービスプロバイダは、1つ以上の顧客のために1つ以上の態様を実施するコンピュータコードもしくはコンピュータインフラストラクチャまたはその両方の作成、保守、サポートなどを行うことができる。見返りに、サービスプロバイダは、例えば、サブスクリプションもしくは料金契約またはその両方に基づいて、顧客から支払いを受けることができる。これに加えて、またはこれに代えて、サービスプロバイダは、1つ以上の第三者に対する広告コンテンツの販売から支払いを受けてもよい。
【0167】
一態様において、1つ以上の実施形態を実施するために、アプリケーションを展開してもよい。一例として、アプリケーションの展開は、1つ以上の実施形態を実施するように動作可能なコンピュータインフラストラクチャを提供することを含む。
【0168】
さらなる態様として、コンピュータ可読コードをコンピューティングシステムに統合することを含む、コンピューティングインフラを展開してもよい。この場合、コンピューティングシステムと組み合わせたコードは、1つ以上の実施形態を実施することができる。
【0169】
さらに別の態様として、コンピュータ可読コードをコンピュータシステムに統合することを含む、コンピューティングインフラを統合するためのプロセスを提供してもよい。コンピュータシステムは、コンピュータ可読媒体を含む。コンピュータ媒体は、1つ以上の実施形態を含む。コンピュータシステムと組み合わせたコードは、1つ以上の実施形態を実施することができる。
【0170】
様々な実施形態を上述したが、これらは一例に過ぎない。例えば、他のアーキテクチャのコンピューティング環境を使用して、1つ以上の実施形態を組み込んで使用することができる。さらに、異なる制御ブロック、コマンド、または操作を使用してもよい。さらに、異なるタイプの変換を指定してもよい。多くの変形が可能である。
【0171】
本明細書では、様々な態様を説明している。さらに、本発明の態様の範囲から逸脱することなく、多くの変形が可能である。特に矛盾しない限り、本明細書に記載の各態様または特徴、およびその変形は、任意の他の態様または特徴と組み合わせてもよい。
【0172】
さらに、他のタイプのコンピューティング環境も本発明の恩恵を受け、使用することができる。一例として、システムバスを介してメモリ要素に直接的または間接的に結合された少なくとも2つのプロセッサを含む、プログラムコードの記憶もしくは実行またはその両方に適したデータ処理システムを使用することができる。メモリ要素には、例えば、プログラムコードの実際の実行中に使用されるローカルメモリ、バルクストレージ、および、実行中にバルクストレージからコードを取得する回数を減らすために少なくとも一部のプログラムコードの一時的なストレージを提供するキャッシュメモリがある。
【0173】
入出力またはI/Oデバイス(特に限定されないが、キーボード、ディスプレイ、ポインティングデバイス、DASD、テープ、CD、DVD、サムドライブおよび他のメモリ媒体など)は、直接的に、またはI/Oコントローラを間に介してシステムに結合することができる。また、ネットワークアダプタをシステムに結合して、データ処理システムを、プライベートネットワークまたはパブリックネットワークを間に介して他のデータ処理システム、リモートプリンタまたはストレージデバイスに結合できるようにしてもよい。利用可能なネットワークアダプタを数種類挙げると、モデム、ケーブルモデム、イーサネットカードなどがある。
【0174】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、種々の実施形態を限定することを意図するものではない。本明細書において、単数形「ある(a)」、「ある(an)」および「その(the)」は、文脈上そうではないことが明らかでない限り、複数形も含むことを意図している。さらに、本明細書において、「含む(comprises)」もしくは「含んでいる(comprising)」またはその両方の用語が用いられる場合、記載された特徴、整数、ステップ、操作、要素、もしくは構成要素またはその組み合わせが存在することを規定するが、1つ以上の他の特徴、整数、ステップ、操作、要素、構成要素、もしくはそれらのグループまたはその組み合わせが存在したり、追加されたりすることを排除するものではない。
【0175】
以下の特許請求の範囲に存在する場合、すべてのミーンズプラスファンクション要素またはステッププラスファンクション要素の対応する構造、材料、動作、および均等物は、具体的に特許請求された他の特許請求要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことを意図している。いつ以上の実施形態の記載は、例示および説明を目的として提示されたものであり、網羅的であることや、開示した形態に限定することを意図したものではない。多くの変更および変形が当業者には明らかである。本実施形態は、様々な態様および実際の応用例を最もよく説明するために、かつ他の当業者が、企図している特定の用途に適した各種の変更を伴う各種の実施形態を理解できるように選択され記載されたものである。
図1
図2
図3
図4
図5A
図5B
図6A
図6B
図6C
図7A
図7B
図8
図9
【手続補正書】
【提出日】2023-07-19
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易化するためのコンピュータプログラム製品であって、
1つ以上のコンピュータ可読記憶媒体と、当該1つ以上のコンピュータ可読記憶媒体にまとめて記憶された、方法を実行するためのプログラム命令と、を含み、当該方法は、
変換エンジンによって、変換対象のデータを取得することと、
前記変換エンジンによって、前記データに適用する選択された変換を決定することであって、当該決定は入出力制御ブロックを用いて行われ、当該入出力制御ブロックは、適用する当該選択された変換の決定に使用される少なくとも1つのフィールドを含む、ことと、
適用する前記選択された変換を決定したことに基づいて、前記変換エンジンによって、当該選択された変換を実行することと、
を含む、コンピュータプログラム製品。
【請求項2】
前記変換エンジンによって前記データを取得することは、当該データに変換を適用すべきであるという指示に基づいており、当該指示は、前記入出力制御ブロックによって提供される、請求項1に記載のコンピュータプログラム製品。
【請求項3】
前記指示は、前記入出力制御ブロックの前記少なくとも1つのフィールドによって提供され、当該入出力制御ブロックの当該少なくとも1つのフィールドは、変換タイプフィールドを含み、当該変換タイプフィールドは、前記変換を適用するか否かの決定に使用される、請求項2に記載のコンピュータプログラム製品。
【請求項4】
前記入出力制御ブロックの前記少なくとも1つのフィールドは、変換タイプフィールドを含み、前記選択された変換を決定することは、当該選択された変換の指示について当該変換タイプフィールドをチェックすることを含む、請求項1に記載のコンピュータプログラム製品。
【請求項5】
前記少なくとも1つのフィールドは、変換サブタイプフィールドをさらに含み、前記選択された変換を決定することは、当該選択された変換の前記指示について当該変換サブタイプフィールドをチェックすることをさらに含む、請求項4に記載のコンピュータプログラム製品。
【請求項6】
前記入出力制御ブロックは、コンピューティングシステムのメモリと、入出力サブシステムを介して当該コンピューティングシステムに結合された外部ストレージデバイスとの間で前記データを伝送する際に用いられるトランスポート制御ワードである、請求項1に記載のコンピュータプログラム製品。
【請求項7】
前記トランスポート制御ワードは、変換タイプフィールドおよび変換サブタイプフィールドを含み、前記選択された変換を決定することは、当該トランスポート制御ワードの当該変換タイプフィールドおよび当該変換サブタイプフィールドのうちの少なくとも1つをチェックすることを含む、請求項6に記載のコンピュータプログラム製品。
【請求項8】
前記選択された変換は、前記入出力制御ブロックによって指定される複数種類の変換のうちの1種類の変換である、請求項1に記載のコンピュータプログラム製品。
【請求項9】
前記複数種類の変換は、人工知能変換、パケットフィルタ、統計解析、テレメトリ、およびマルチキャストレプリケーションを含む、請求項8に記載のコンピュータプログラム製品。
【請求項10】
少なくとも前記決定を行うことは、コンピューティングシステムのメモリと当該コンピューティングシステムに結合された外部ストレージデバイスとの間での前記データの処理に対してインラインで実行される、請求項1に記載のコンピュータプログラム製品。
【請求項11】
コンピューティング環境内の処理を容易化するためのコンピュータシステムであって、
メモリと、
前記メモリと通信する少なくとも1つのプロセッサと、を含み、当該コンピュータシステムは、
変換エンジンによって、変換対象のデータを取得することと、
前記変換エンジンによって、前記データに適用する選択された変換を決定することであって、当該決定は入出力制御ブロックを用いて行われ、当該入出力制御ブロックは、適用する当該選択された変換の決定に使用される少なくとも1つのフィールドを含む、ことと、
適用する前記選択された変換を決定したことに基づいて、前記変換エンジンによって、当該選択された変換を実行することと、
を含む方法を実行するように構成されている、コンピュータシステム。
【請求項12】
前記入出力制御ブロックは、コンピューティングシステムのメモリと、入出力サブシステムを介して当該コンピューティングシステムに結合された外部ストレージデバイスとの間で前記データを伝送する際に用いられるトランスポート制御ワードである、請求項11に記載のコンピュータシステム。
【請求項13】
前記トランスポート制御ワードは、変換タイプフィールドおよび変換サブタイプフィールドを含み、前記選択された変換を決定することは、当該変換タイプフィールドおよび当該変換サブタイプフィールドのうちの少なくとも1つをチェックすることを含む、請求項12に記載のコンピュータシステム。
【請求項14】
前記選択された変換は、前記入出力制御ブロックによって指定される複数種類の変換のうちの1種類の変換である、請求項11に記載のコンピュータシステム。
【請求項15】
少なくとも前記決定を行うことは、コンピューティングシステムのメモリと当該コンピューティングシステムに結合された外部ストレージデバイスとの間での前記データの処理に対してインラインで実行される、請求項11に記載のコンピュータシステム。
【請求項16】
コンピューティング環境内の処理を容易化するためのコンピュータ実装方法であって、
変換エンジンによって、変換対象のデータを取得することと、
前記変換エンジンによって、前記データに適用する選択された変換を決定することであって、当該決定は入出力制御ブロックを用いて行われ、当該入出力制御ブロックは、適用する当該選択された変換の決定に使用される少なくとも1つのフィールドを含む、ことと、
適用する前記選択された変換を決定したことに基づいて、前記変換エンジンによって、当該選択された変換を実行することと、
を含む、コンピュータ実装方法。
【請求項17】
前記入出力制御ブロックは、コンピューティングシステムのメモリと、入出力サブシステムを介して当該コンピューティングシステムに結合された外部ストレージデバイスとの間で前記データを伝送する際に用いられるトランスポート制御ワードである、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記トランスポート制御ワードは、変換タイプフィールドおよび変換サブタイプフィールドを含み、前記選択された変換を決定することは、当該変換タイプフィールドおよび当該変換サブタイプフィールドのうちの少なくとも1つをチェックすることを含む、請求項17に記載のコンピュータ実装方法。
【請求項19】
前記選択された変換は、前記入出力制御ブロックによって指定される複数種類の変換のうちの1種類の変換である、請求項16に記載のコンピュータ実装方法。
【請求項20】
少なくとも前記決定を行うことは、コンピューティングシステムのメモリと当該コンピューティングシステムに結合された外部ストレージデバイスとの間での前記データの処理に対してインラインで実行される、請求項16に記載のコンピュータ実装方法。
【国際調査報告】