特表2017-535868(P2017-535868A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特表2017-535868CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム
<>
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000003
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000004
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000005
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000006
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000007
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000008
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000009
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000010
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000011
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000012
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000013
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000014
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000015
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000016
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000017
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000018
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000019
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000020
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000021
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000022
  • 特表2017535868-CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム 図000023
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2017-535868(P2017-535868A)
(43)【公表日】2017年11月30日
(54)【発明の名称】CAPIアダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システム、およびコンピュータ・プログラム
(51)【国際特許分類】
   G06F 21/62 20130101AFI20171102BHJP
【FI】
   G06F21/62
【審査請求】未請求
【予備審査請求】未請求
【全頁数】22
(21)【出願番号】特願2017-524432(P2017-524432)
(86)(22)【出願日】2015年11月12日
(85)【翻訳文提出日】2017年5月8日
(86)【国際出願番号】IB2015058743
(87)【国際公開番号】WO2016079642
(87)【国際公開日】20160526
(31)【優先権主張番号】14/548,516
(32)【優先日】2014年11月20日
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】バッケ、ブライアン
(72)【発明者】
【氏名】ゲルハルト、エイドリアン
(72)【発明者】
【氏名】モールテル、ダニエル
(57)【要約】
【課題】コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システムおよびコンピュータ・プログラム製品を提供する。
【解決手段】CAPIアダプタは、クライアントにあるエクステント粒度でのデータ・アクセスを許可するため、および、アプリケーションがCAPIアダプタ内で未許可のデータにアクセスすることを回避するために、許可テーブルおよびファイル・システム許可機能を含む。各許可テーブル・エントリは、CAPIクライアントのために、CAPIクライアント識別子(ID)、CAPIクライアントにリソース所有権を割り当てるCAPIサーバ・レジスタ空間、および、許容される機能のCAPIセットを規定する。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンピュータ・システム内にコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタのためのブロック・エクステント粒度の許可モデルの処理を実装するための方法であって、
前記CAPIアダプタに許可テーブルおよびファイル・システム許可機能を提供することと、
前記ファイル・システム許可機能が、エクステント粒度レベルでのデータ・アクセスを各CAPIクライアントに許可して、アプリケーションが前記CAPIアダプタ内で未許可のデータにアクセスすることを回避することと、
各許可テーブルが、前記各CAPIクライアントのために、CAPIクライアント識別子(ID)、前記CAPIクライアントにリソース所有権を割り当てるCAPIサーバ・レジスタ空間、および許容される機能のCAPIセットを規定することと
を含む、方法。
【請求項2】
前記CAPIサーバ・レジスタ空間が、初期化機能を行うために使用されるCAPIサーバ・レジスタを含み、前記CAPIクライアントIDがCAPIサーバ・レジスタの特定のコピーへのインデックスを提供する、請求項1に記載の方法。
【請求項3】
前記ファイル・システム許可機能が、前記各CAPIクライアントのための仮想アドレスを前記CAPIサーバ・レジスタ空間にマッピングすることによって、それぞれのCAPIクライアントに対するそれぞれのCAPIサーバ・レジスタへのアクセスを実施することを含む、請求項1に記載の方法。
【請求項4】
複数のCAPIクライアントのうち1つまたは複数を主所有者CAPIクライアントとして特定することを含む、請求項1に記載の方法。
【請求項5】
前記主所有者CAPIクライアントが親CAPIクライアントであり、前記親CAPIクライアントが前記CAPIアダプタに新しい子CAPIクライアントについて通知し、前記新しい子CAPIクライアントのための前記CAPIサーバ・レジスタ空間を特定し、前記新しい子CAPIクライアントのために許容されるCAPI機能を特定することを含む、請求項4に記載の方法。
【請求項6】
ユーザCAPIクライアントに前記ファイル・システム許可機能が許可ハンドルを返すことを含む、請求項1に記載の方法。
【請求項7】
前記CAPIアダプタが、CAPIサーバ・レジスタ空間に送られた各コマンドに許容される機能を、前記コマンド内の前記許可ハンドルを使用して実施することを含む、請求項6に記載の方法。
【請求項8】
前記ユーザCAPIクライアントが前記各コマンド内に前記許可ハンドルを設定することを含む、請求項6に記載の方法。
【請求項9】
前記CAPIアダプタが、前記許可ハンドルを使用して前記各コマンドを検証することを含む、請求項1に記載の方法。
【請求項10】
コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタにブロック・エクステント粒度の許可モデルの処理を実装するためのシステムであって、
許可テーブルおよびファイル・システム許可機能を含む前記CAPIアダプタを含み、
前記ファイル・システム許可機能が、エクステント粒度でのデータ・アクセスをCAPIクライアントに許可して、アプリケーションが前記CAPIアダプタ内で未許可のデータにアクセスすることを回避し、
前記許可テーブルが、前記CAPIクライアントのために、CAPIクライアント識別子(ID)、前記CAPIクライアントにリソース所有権を割り当てるCAPIサーバ・レジスタ空間、および許容される機能のCAPIセットを規定する、システム。
【請求項11】
コンピュータ可読媒体に記憶された制御コードを含み、前記制御コードが前記ファイル・システム許可機能を含む、請求項10に記載のシステム。
【請求項12】
前記CAPIサーバ・レジスタ空間が、初期化機能を行うために使用されるCAPIサーバ・レジスタを含み、前記CAPIクライアントIDがCAPIサーバ・レジスタの特定のコピーへのインデックスを提供する、請求項10に記載のシステム。
【請求項13】
プロセッサ、ファイル・システム、および前記CAPIアダプタに関連する許可機能を管理するハイパーバイザを含む、前記CAPIアダプタに結合されたプロセッサ・コンプレックスを含む、請求項10に記載のシステム。
【請求項14】
コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)、およびペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIE)を備えるトランスポート機構を含む、請求項13に記載のシステム。
【請求項15】
前記ファイル・システム許可機能が、前記各CAPIクライアントのための仮想アドレスを前記CAPIサーバ・レジスタ空間にマッピングすることによって、それぞれのCAPIクライアントに対するそれぞれのCAPIサーバ・レジスタへのアクセスを実施する、請求項10に記載のシステム。
【請求項16】
主所有者CAPIクライアントとして特定された、複数のCAPIクライアントのうち1つまたは複数を含み、前記主所有者CAPIクライアントが親CAPIクライアントであり、前記親CAPIクライアントが前記CAPIアダプタに新しい子CAPIクライアントについて通知し、前記新しい子CAPIクライアントのための前記CAPIサーバ・レジスタ空間を特定し、前記新しい子CAPIクライアントのために許容されるCAPI機能を特定する、請求項10に記載のシステム。
【請求項17】
ユーザCAPIクライアントに前記ファイル・システム許可機能が許可ハンドルを返す、請求項10に記載のシステム。
【請求項18】
前記CAPIアダプタが、CAPIサーバ・レジスタ空間に送られた各コマンドに許容される機能を、前記コマンド内の前記許可ハンドルを使用して実施することを含む、請求項10に記載のシステム。
【請求項19】
前記ユーザCAPIクライアントが前記各コマンド内に前記許可ハンドルを設定する、請求項18に記載のシステム。
【請求項20】
エクステント粒度でのデータ・アクセスをCAPIクライアントに許可する前記ファイル・システム許可機能が、ブロック・デバイスまたは論理ユニット(LUN)のリソース空間サブセットを含む各エクステントを含む、請求項10に記載のシステム。
【請求項21】
コンピュータ・システム内にコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタのためのブロック・エクステント粒度の許可モデルの処理を実装するためのコンピュータ・プログラム製品であって、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備え、前記プログラム命令が、請求項1ないし9のいずれかの方法を行うようにコンピュータによって実行可能である、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にデータ処理の分野に関し、より詳細には、コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI:Coherent Accelerator Processor Interface)にブロック・エクステント粒度の許可モデルの処理を実装するための方法、コンピュータ・システムおよびコンピュータ・プログラムに関する。
【背景技術】
【0002】
恒久的な二次ストレージは、実質的にすべてのコンピュータ・システムの構成要素である。このストレージは通常、ハード・ディスク・ドライブまたはフラッシュ・ストレージ・デバイスなどのブロック・デバイスである。ホスト・コンピュータ・システムをハード・ディスク・ドライブ、固体ドライブ、テープ・ドライブ、コンパクト・ディスク・ドライブなどの周辺ストレージI/Oデバイスに接続するために、ストレージ・アダプタが使用されることが多い。
【0003】
従来のコンピュータ・システムでは、ブロック・デバイスに対してデータの読み出しまたは書き込みを行う必要のあるアプリケーションは、要求されたデータのブロックを読み出すか書き込むためにオペレーティング・システム(OS)またはファイル・システム(FS)あるいはその両方の呼び出しを行う。オペレーティング・システムまたはファイル・システムはコンピュータ・システムの「信頼できる」部分であり、読み出し/書き込みリクエストの一部として、そのアプリケーションが要求されたデータのブロックへのアクセスを許容されることを確認または許可する。許可に成功すると、OSは読み出し/書き込みリクエストのコマンドを作成し、そのコマンドをホスト・バス・アダプタ(HBA)に送ってサービスする。HBAが受信することができるのはOSからのコマンドのみなので、HBAには、要求されたブロック範囲が許可済みであり、そのコマンドを実行しても安全であることが分かっている。
【0004】
IBMは、オープンパワー・ファウンデーション(OpenPOWER Foundation)の一部として、新しいブロック・デバイスI/Oモデルを導入した。この新しいブロック・デバイスI/Oモデルは、コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)技術を使用する。CAPIでは、アプリケーションが入出力アダプタ(IOA)に対する読み出し/書き込みのコマンドを作成し、そのコマンドをOS/FSを迂回して、したがって従来の許可も迂回して、直接IOAに送ることができる。許可が行われなければ、アプリケーションが、そのアプリケーションにアクセスが許容されるべきではないデータを取得できるようになる。例えば、第1の競合者および第2の競合者の専有データが含まれているサーバシステムで、許可が行われなければ、第1の競合者が第2の競合者のデータにアクセスできるようになる。
【0005】
OS/FSの外部でのブロック・デバイス許可のための現在の技術は、ブロック・デバイスまたは論理ユニット(LUN)の粒度レベルでのゾーニングなどのアウトオブバンド技法を使用する。
【発明の概要】
【発明が解決しようとする課題】
【0006】
コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタのための許可をコンピュータ・システム内に実装するための実効的な機構への需要が存在する。望ましくは、そのような機構は、IO操作を行うための多くのホストCPU要件を迂回して、実効的で効率的なCPAIアダプタの利用を可能にする。
【課題を解決するための手段】
【0007】
本発明の主要な態様は、アプリケーションが未許可データにアクセスすることを回避するために、コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタにブロック・エクステント粒度の許可を実装するための方法、システムおよびコンピュータ・プログラム製品を提供することである。本発明のその他の重要な態様は、ほとんど負の影響のない、また、従来技術の配置にある多くの短所を克服する、そのような方法、システムおよびコンピュータ・プログラム製品を提供することである。
【0008】
端的に言えば、コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタにブロック・エクステント粒度の許可モデルの処理を実装するための方法、システムおよびコンピュータ・プログラム製品が提供される。CAPIアダプタは、クライアントにあるエクステント粒度でのデータ・アクセスを許可するため、および、アプリケーションがCAPIアダプタ内で未許可のデータにアクセスすることを回避するために、許可テーブルおよびファイル・システム許可機能を含む。許可テーブルの各エントリは、そのCAPIクライアントのために、CAPIクライアント識別子(ID)、CAPIクライアントにリソース所有権を割り当てるCAPIサーバ・レジスタ空間、および許容される機能のCAPIセットを規定する。
【0009】
本発明の特徴によれば、CAPIサーバ・レジスタ空間は、CAPIアダプタ・システム・バス・アドレス空間内の各エクステント、すなわち、ある範囲の論理ブロック・アドレスについて、クライアント許可を定めるCAPIサービス・レジスタを含む。
【0010】
本発明は、前述およびその他の目的および利点と共に、図面に示される本発明の好ましい実施形態の下記の詳細な説明によって、最もよく理解され得る。
【図面の簡単な説明】
【0011】
図1】好ましい実施形態によって、CAPIアダプタにコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)許可を実装するためのコンピュータの例およびCAPI許可ハンドルの配列要素の例を示す図である。
図2】好ましい実施形態によって、CAPIアダプタにコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)許可を実装するためのコンピュータの例およびCAPI許可ハンドルの配列要素の例を示す図である。
図3】好ましい実施形態によって、CAPIアダプタにコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)許可を実装するためのコンピュータの例およびCAPI許可ハンドルの配列要素の例を示す図である。
図4】好ましい実施形態による、コマンドを検証するCAPI許可操作の例を示す図である。
図5】好ましい実施形態による、コマンドを検証するCAPI許可操作の例を示す図である。
図6】好ましい実施形態によるCAPI許可モデルおよび許可処理操作を含む、読み出しコマンドの例を示す図である。
図7】好ましい実施形態によるCAPI許可モデルおよび許可処理操作を含む、読み出しコマンドの例を示す図である。
図8】好ましい実施形態によるCAPI許可モデルおよび許可処理操作を含む、読み出しコマンドの例を示す図である。
図9】好ましい実施形態によるCAPI許可モデルおよび許可処理操作を含む、読み出しコマンドの例を示す図である。
図10】好ましい実施形態によるCAPI許可モデルおよび許可処理操作を含む、読み出しコマンドの例を示す図である。
図11】好ましい実施形態によるCAPI許可モデルおよび許可処理操作を含む、読み出しコマンドの例を示す図である。
図12】好ましい実施形態による、CAPI許可モデル処理操作の例を示す図である。
図13】好ましい実施形態による、CAPI許可初期化処理操作の例を示す図である。
図14】好ましい実施形態による、CAPI許可処理操作の例を示す図である。
図15】好ましい実施形態による、CAPI許可コマンド・フロー処理操作の例を示す図である。
図16】好ましい実施形態による、CAPI許可実施処理操作の例を示す図である。
図17】好ましい実施形態による、CAPI許可機構および処理操作の例を示す図である。
図18】好ましい実施形態による、CAPI許可削除処理操作の例を示す図である。
図19】好ましい実施形態による、CAPI許可読み出しコマンド処理操作の例を示す図である。
図20】好ましい実施形態による、CAPI許可読み出しコマンド処理操作の例を示す図である。
図21】好ましい実施形態によるコンピュータ・プログラム製品を示すブロック図である。
【発明を実施するための形態】
【0012】
下記の、本発明の実施形態の詳細な説明では、添付図面を参照し、その図面には本発明が実践され得るようにする実施形態の例が示される。他の実施形態が利用されてもよく、また本発明の範囲を逸脱することなく構造的変更が加えられてもよいことが理解される。
【0013】
本明細書で使用される用語は、特定の実施形態のみを説明することを目的とし、本発明を限定することは意図されない。本明細書で使用されるとき、単数形「a」、「an」、および「the」は、文脈によって明確に断りのない限り、複数形も含む。また、用語「備える」または「備えている」あるいはその両方は、本明細書で使用するとき、述べられた特徴、完全体、ステップ、操作、要素、または構成要素あるいはその組合せの存在を明確に示すが、1つまたは複数の他の特徴、完全体、ステップ、操作、要素、構成要素またはそれらのグループあるいはその組合せの存在または追加を除外しない。
【0014】
本発明の特徴によれば、好ましい実施形態によって、CAPIアダプタにコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)許可を実装するための方法、システム、およびコンピュータ・プログラム製品が提供される。
【0015】
図面を参照すると、図1および2に、好ましい実施形態によって、CAPIアダプタ102にコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)許可を実装するためのコンピュータ・システムの例が、全体として参照文字100で示されている。コンピュータ・システム100は、システム・メモリ106に結合された1つまたは複数のプロセッサ104または中央処理ユニット(CPU)104(1つが示されている)を含み、このプロセッサ104またはCPU104は、I/Oハブまたはコヒーレント・アタッチ・プロセッサ・プロキシ(CAPP)108およびペリフェラル・コンポーネント・インターコネクト・エクスプレス(Peripheral Component Interconnect Express:PCIエクスプレスまたはPCIE)接続によってCAPIアダプタ102に結合されている。CAPIアダプタ102は許可テーブル112を含み、このテーブルは好ましい実施形態によって許可を実装する複数の許可エントリを含む。
【0016】
図2に示されるように、好ましい実施例によれば、コンピュータ・システム100はストレージ・スタック120の例を含み、このスタックは、CAPI/PCIEインタフェース・ブロック130によってCAPIアダプタ102に結合された、ユーザCAPIクライアント122、ファイル・システム126を含むオペレーティング・システム124、およびハイパーバイザ128を含み、CAPIアダプタ102はファイル・システム許可機能132を含む。CAPI/PCIEインタフェース・ブロック130はCAPIトランスポート機構を含み、この機構は、システム・トランスポート機構またはPCIEの上に重ねられている。CAPIクライアント122はユニークなシステム・エントリであり、CAPIアダプタ機能にアクセスするための許可の、別途特定されたセットを有する。
【0017】
また図3を参照すると、許可テーブル112は好ましい実施形態による許可を実装する許可エントリ140を含む。図示された許可エントリ140の例は、好ましい実施形態によれば、CAPIクライアント・ユーザID150、リソースならびにエクステントの情報を含むCAPIサーバ・レジスタ空間152、および、許容されるアクセス・タイプを含めた許容される機能のCAPIセット154を含む。
【0018】
本発明の特徴によれば、CAPIサーバ・レジスタ空間152は、コマンドを開始させるために使用できるレジスタの複数のコピーを含むCAPIアダプタ・システム・バス・アドレス空間である。各コピーは、CAPIサーバ・レジスタと呼ばれる。各CAPIサーバ・レジスタは、その特定のCAPIサーバ・レジスタに以前から許可されているアダプタ機能にのみアクセスできる。
【0019】
本発明の特徴によれば、CAPIクライアントIDは、CAPIサーバ・レジスタの特定のコピーへのインデックスである。CAPIクライアントのうち1つまたは複数が、マスタ・クライアントとして特定される。マスタ・クライアントのためのCAPIサーバ・レジスタは、CAPIアダプタの初期化機能を実行するために使用され、これらの特定のCAPIサーバ・レジスタは、すべてのCAPIアダプタ機能にアクセスすることができる。
【0020】
図4および5を参照すると、好ましい実施形態による、コマンドを検証するCAPI許可操作の例が示されている。図4に、コマンドを検証するCAPI許可操作の例が、全体として参照文字200で示されている。図5のブロック222に示されるように、ホストにより検証が行われ、許可されたコンテキストのみが図4に示される所与のMMIO空間202に書き込んでもよい。図4で、IOアダプタ・リクエスト制御ブロック(IOARCB)206は、許可ハンドル208を含む。図5のブロック222に示されるように、図4の許可エントリ140で示される、信頼できるハンドル・データはCAPIサーバID214ならびにリソースおよび範囲212を含む。ブロック224に示されるように、MMIO空間202が、CAPIサーバID214によってインデクシングされる。ブロック226に示されるように、図4に示されるプロセス要素216がCAPIサーバIDによってインデクシングされる。ブロック228に示されるように、プロセス要素216はホスト実効アドレスを物理アドレスに変換するために必要な情報を含む。
【0021】
図6、7、8、9、10および11を参照すると、好ましい実施形態によるCAPI許可モデルおよび読み出しコマンドのための許可処理操作を含む、読み出しコマンド操作の例が示されている。
【0022】
図6に、読み出しコマンドのためのCAPI許可操作の例が、全体として参照文字300で示されている。CAPI許可操作300の例は、ユーザ302、OS304、ハイパーバイザ306、およびCAPIアダプタ102で示されている。図7のブロック310に示されるように、OSが「所有者」コンテキストであると仮定する。ブロック312に示されるように、ユーザが、ファイル/hdiskを「開く」ためにシステムコールを行う。ブロック314に示されるように、OSが、ユーザのコンテキストをコンテキスト・リストに追加するためにハイパーコールを行う。ブロック316に示されるように、ハイパーバイザが、ユーザのコンテキストをコンテキスト・リストに追加する。ブロック318に示されるように、ハイパーバイザが、そのコンテキストをアダプタに追加するためにCAPI処理を行う。
【0023】
図8に、読み出しコマンドのためのCAPI許可操作の例が、全体として参照文字320で示されている。CAPI許可操作320の例は、ユーザ302、OS304、ハイパーバイザ306、およびCAPIアダプタ102で示されている。図9で、ブロック322に示されるように、ハイパーバイザがユーザのCAPI IDを返す。ブロック324に示されるように、許可を追加するために、OSがアダプタに対して「許可作成」のリクエストを行い、OSがユーザCAPI IDを提供し、次に、リソースおよびエクステントを提供する。ブロック326に示されるように、アダプタが各エクステントに許可ハンドルを割り当て、CAPI IDおよびエクステント情報を記入する。ブロック328に示されるように、アダプタがオペレーティング・システムに新しいユーザ許可ハンドルを返す。
【0024】
図10に、読み出しコマンドのためのCAPI許可操作の例が、全体として参照文字330で示されている。CAPI許可操作330の例は、ユーザ302、OS304、ハイパーバイザ306、およびCAPIアダプタ102で示されている。図11で、ブロック334に示されるように、OSがユーザに許可ハンドルを返す。ブロック334に示されるように、ユーザがアダプタに、読み出しを発行するよう求めるリクエストを送る。ブロック336に示されるように、アダプタがCAPI IDを使用して、どのコンテキストを使用するか特定する。ブロック340に示されるように、アダプタがそのコンテキストを使用して、ホスト・リクエスト・アドレスを変換する。
【0025】
ブロック342に示されるように、アダプタがIOアダプタ・リクエスト制御ブロック(IOARCB)をフェッチする。ブロック344に示されるように、アダプタがIOARCBから許可ハンドルを取得する。ブロック346に示されるように、アダプタが、その許可ハンドルが現行バージョンであるか(全ビットが一致するか)確認する。
【0026】
ブロック348に示されるように、アダプタが、その許可ハンドルが使用されたCAPI IDのためのものであるか確認する。ブロック350に示されるように、アダプタが、そのリクエストの範囲が許容されている(許可ハンドル・データ内のデータ)か確認する。ブロック352に示されるように、アダプタが読み出しを行う。ブロック354に示されるように、アダプタがアドレスを変換して、データをホストへ(ユーザのメモリ内へ)送る。ブロック356に示されるように、アダプタはキューを書き込むか、メモリ位置を書き込むか、割り込みを生成するか、または何らかの所望の完了通知を行う。
【0027】
本発明の特徴によって、図12に関して示され、記載されるように、CAPI許可モデルは、権利の分割実施に基づく。
【0028】
図12を参照すると、好ましい実施形態によるCAPI許可モデル操作の例が示され、ブロック400で開始する。ブロック402に示されるように、信頼できるOSが、どのCAPIサーバ・レジスタがどのクライアントによってアクセス可能であるかを実施する。これは、例えば、クライアントの仮想アドレスをCAPIサーバ・レジスタ空間にマッピングすることによって実現される。ブロック404に示されるように、親クライアント(初期には主所有者クライアント(Master Owning Client))がCAPIアダプタ102に、どの機能が子のCAPIサーバに許容されるかを通知する。ブロック406に示されるように、親クライアントが、新しい子のCAPIサーバ・レジスタ空間に送ることを許容される機能、コマンド、エクステントを特定する1つまたは複数のコマンドを、以前から許可されているCAPIサーバ・レジスタ空間に送る。ブロック408に示されるように、アダプタが、要求されたそれぞれの許可要素に適した不透明の許可ハンドル・トークンを生成して返す。許可ハンドルは、実装ごとに固有の方法で、読み出し/書き込みコマンドの許可パフォーマンスを最適化するように符号化される。ブロック410に示されるように、アダプタは、CAPIサーバ・レジスタ空間に送られた各コマンドで許容される機能を実施する。ブロック410で、クライアントは適切な「許可ハンドル」をコマンド内にセットし、アダプタはその「許可ハンドル」を使用して、そのコマンドが受信側CAPIサーバ・レジスタ空間による実行を許容されていることを検証する。
【0029】
図13を参照すると、好ましい実施形態によるCAPI許可初期化処理操作の例が示され、ブロック500で開始する。ブロック502に示されるように、アダプタのリセットが完了し、信頼できるOSのブート・プロセスがアダプタをCAPIモードに移行させ、主所有者クライアント・コンポーネント、および、その主所有者クライアントに割り当てられたアダプタCAPIサーバ・レジスタ空間を特定する。ブロック504に示されるように、主所有者クライアントは、アダプタの制御下で、すべてのデバイスおよび機能に対してデフォルトで許可される。ブロック506に示されるように、主所有者クライアントは信頼できるとして特定される。ブロック508に示されるように、信頼できるOSは、主所有者クライアントが、その所有者クライアントに割り当てられたCAPIサーバ・レジスタ空間にアクセスするためのアドレス・マッピングを作成する。このアドレス・マッピングは、他のどのようなクライアントまたはアプリケーションにも与えられない。
【0030】
ブロック510に示されるように、これで、主所有者クライアントがアダプタにコマンドを送れるようになる。ブロック512に示されるように、他のクライアントまたはアプリケーションは、主所有者クライアントのサーバ・レジスタ空間へのアドレス・マッピングをもたないので、それらのレジスタを介してアダプタにコマンドを送ることはできない。
【0031】
図14を参照すると、好ましい実施形態によるCAPI許可処理操作の例が示され、ブロック600で開始する。ブロック602に示されるように、アプリケーション・クライアントは、ファイル・システムからのファイルに対する許可を要求する。ブロック604に示されるように、ファイル・システムはリクエストを検証して、ファイルを含む各エクステントの位置を判断し、システムCAPI許可マネージャからの各エクステントに対する許可を要求する。ブロック606に示されるように、システムCAPI許可マネージャは、どのCAPIアダプタが各エクステントにサービスを行う必要があるか判断し、要求元アプリケーション・クライアントに(子)クライアントIDおよびCAPIサーバ・レジスタ範囲を割り当てるようにCAPIクライアント・マネージャに要求し、以前から許可されているCAPI親クライアント(初期にはマスタ・クライアント)に、子IDおよびエクステントのリストを許可するように要求する。ブロック608に示されるように、CAPI親クライアントは親のCAPIサーバ・レジスタを介して「許可作成」コマンドをCAPIアダプタに送る。パラメータは、CAPI子クライアントID、エクステントのリスト、および他のコマンド/アダプタ・リソースのリストであり、エクステントのリストは各エクステントについてCAPI親許可ハンドル、エクステント開始LBAおよびブロック数を含み、他のコマンド/アダプタ・リソースのリストは各コマンド/リソースについてCAPI親許可ハンドルを含む。ブロック610に示されるように、CAPIアダプタは、親許可ハンドルおよびCAPIサーバ・レジスタ範囲が特定のエクステント/コマンド/リソースに対して有効であることを検証し、要求された、それぞれの検証済みエクステント/コマンド/リソースに新しい子許可ハンドルを割り当てることによって許可リストを作成し、その許可リストを親クライアントに返す。ブロック612に示されるように、親クライアントは許可リストを許可マネージャに返す。ブロック614に示されるように、許可マネージャは許可リストおよび子クライアントIDをファイル・システムに返し、ファイル・システムは許可リストおよび子クライアントIDをアプリケーション・クライアントに返す。
【0032】
図15を参照すると、好ましい実施形態によるCAPI許可コマンド・フロー処理操作の例が示され、ブロック700で開始する。ブロック702に示されるように、アプリケーション・クライアントがコマンドを作成する。パラメータは、開始LBAおよびLBAの数、ならびに子の許可ハンドルを含む。ブロック704に示されるように、アプリケーション・クライアントはそのコマンドを、そのアプリケーション・クライアントのCAPIサーバ・レジスタを介して直接CAPIアダプタに送る。ブロック706に示されるように、CAPIアダプタは、許可ハンドルおよび受信側CAPIサーバ・レジスタ・アドレスを使用して、要求側クライアントがコマンドの実行を許可されていることを検証する。ブロック708に示されるように、CAPIアダプタはコマンドを実行し、完了通知をアプリケーション・クライアントに送る。
【0033】
図16を参照すると、好ましい実施形態によるCAPI許可実施処理操作の例が示され、ブロック800で開始する。ブロック802に示されるように、個々のクライアント/アプリケーションのためにアドレス空間マッピングを作成する、信頼できるOSによって、CAPIアダプタ・サーバ・レジスタ空間へのアクセスが実施される。ブロック804に示されるように、アダプタは、各コマンドで渡された許可ハンドルが要求側クライアントに属すること、および、そのクライアントが要求されたコマンド/機能/エクステントに対して許可されていることを検証することによって、そのコマンドにアクセス権を実施する。
【0034】
図17を参照すると、好ましい実施形態によるCAPI許可機構および処理操作の例が示され、ブロック900で開始する。ブロック902に示されるように、許可ハンドルを、ルックアップ・テーブル・インデックスを含む複数のフィールドとして符号化する。ルックアップ・テーブル・インデックス・フィールドのサイズは、有効となる可能性のある許可ハンドルの数を最大化するように、実装によって選択されるべきである。許可ハンドルは実装固有の符号化を含み、このフィールドのサイズは失効した証明書の検出が可能である最小のサイズにすべきである。ブロック904に示されるように、複数の許可エントリを含む許可テーブルを作成する。各許可エントリは許可ハンドル、CAPIサーバ・レジスタID、エクステントの論理開始ブロック・アドレス、エクステントの論理ブロック・アドレスの範囲を含む。ブロック906に示されるように、コマンドを受信したときの許可処理は、受信したコマンドに含まれる許可ハンドルからルックアップ・テーブル・インデックスを抽出することを含む。そのルックアップ・テーブル・インデックスを使用して、許可エントリの場所を特定する。許可エントリのCAPIサーバ・レジスタIDを受信側のCAPIサーバ・レジスタIDと比較する。許可エントリの許可ハンドルを、受信したコマンドに含まれる許可ハンドルと比較する。いずれかが一致しない場合には、その結果、コマンドが拒絶される。
【0035】
図18を参照すると、好ましい実施形態によるCAPI許可削除処理操作の例が示され、ブロック1000で開始する。ブロック1002に示されるように、アプリケーション子クライアント(または、その系列の親、祖父母など)が、「許可削除」コマンドをクライアントのCAPIサーバ・レジスタを介してCAPIアダプタに送る。パラメータは、CAPI子クライアントID、およびエクステントのリストである。各エクステントについて、CAPI子許可ハンドル、エクステントの開始LBAおよびブロック数、ならびに、他のコマンド/アダプタ・リソースのリストを含む。各コマンド/リソースについて、CAPI子許可ハンドルを含む。ブロック1004に示されるように、CAPIアダプタは、要求元が系列内の親または子のいずれかであることを検証し、リスト内の許可を削除する。
【0036】
図19および図20を参照すると、好ましい実施形態によるCAPI許可読み出しコマンド処理操作の例が示されている。図19に、読み出しコマンドのためのCAPI許可操作が、全体として参照文字1100で示されている。CAPI許可操作1100の例は、ユーザ1102、OS1104、ファイル・システム1106、ハイパーバイザ1108、およびCAPIアダプタ102で示される。図20のブロック1102に示されるように、OSがファイル・システムおよびハイパーバイザに指示してファイルを開く。ブロック1104に示されるように、ハイパーバイザがCAPI IDを提供し、ファイル・システムが許可チェックを行って許可情報およびファイル・ハンドル(FH)を返す。ブロック1106に示されるように、OSが(ファイル・システムの指示により)許可作成リクエストを発行する。ブロック1108に示されるように、Lseekはユーザのファイル・システムのみを取り扱う。ブロック1110に示されるように、読み出しは、直接CAPIアダプタに対して行われる。ブロック1112に示されるように、CAPIアダプタは、CAPI ID、許可ハンドル(AH)、エクステント(ファイル・システム許可)を検証する。ブロック1114に示されるように、CAPIアダプタがその操作を行い、応答する。
【0037】
図21を参照すると、本発明の工業製品またはコンピュータ・プログラム製品1200が示されている。コンピュータ・プログラム製品1200は、フロッピー(R)・ディスク、光学読み取り可能なコンパクト・ディスクもしくはCD−ROMの形での大容量読み出し専用メモリ、テープ、または別の同様のコンピュータ・プログラム製品などの記録媒体1202を含む、非一時的コンピュータ可読ストレージ媒体に有形に具現化されている。記録媒体1202は、図1および2のシステム100内の好ましい実施形態のCAPIアダプタ102にコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)許可を実装するための方法を行うために、媒体1202上にプログラム手段1204、1206、1208、および1210を記憶する。
【0038】
記録されたプログラム手段1204、1206、1208および1210により定められた一連のプログラム命令または1つもしくは複数の相互に関係するモジュールの論理アセンブリが、コンピュータ・システム100に、コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)許可を好ましい実施形態のCAPIアダプタ102に実装するように命じる。
【0039】
本発明について、図面に示される本発明の実施形態の詳細を参照しながら説明してきた。それらの詳細は、添付の特許請求の範囲で請求される本発明の範囲を限定することを意図しない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
【手続補正書】
【提出日】2017年7月10日
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ・システム内にコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタのためのブロック・エクステント粒度の許可モデルの処理を実装するための方法であって、
前記CAPIアダプタに許可テーブルおよびファイル・システム許可機能を提供することと、
前記ファイル・システム許可機能が、エクステント粒度レベルでのデータ・アクセスを各CAPIクライアントに許可して、アプリケーションが前記CAPIアダプタ内で未許可のデータにアクセスすることを回避することと、
各許可テーブルが、前記各CAPIクライアントのために、CAPIクライアント識別子(ID)、前記CAPIクライアントにリソース所有権を割り当てるCAPIサーバ・レジスタ空間、および許容される機能のCAPIセットを規定することと
を含む、方法。
【請求項2】
前記CAPIサーバ・レジスタ空間が、初期化機能を行うために使用されるCAPIサーバ・レジスタを含み、前記CAPIクライアントIDがCAPIサーバ・レジスタの特定のコピーへのインデックスを提供する、請求項1に記載の方法。
【請求項3】
前記ファイル・システム許可機能が、前記各CAPIクライアントのための仮想アドレスを前記CAPIサーバ・レジスタ空間にマッピングすることによって、それぞれのCAPIクライアントに対するそれぞれのCAPIサーバ・レジスタへのアクセスを実施することを含む、請求項1又は2に記載の方法。
【請求項4】
複数のCAPIクライアントのうち1つまたは複数を主所有者CAPIクライアントとして特定することを含む、請求項1乃至3のいずれかに記載の方法。
【請求項5】
前記主所有者CAPIクライアントが親CAPIクライアントであり、前記親CAPIクライアントが前記CAPIアダプタに新しい子CAPIクライアントについて通知し、前記新しい子CAPIクライアントのための前記CAPIサーバ・レジスタ空間を特定し、前記新しい子CAPIクライアントのために許容されるCAPI機能を特定することを含む、請求項4に記載の方法。
【請求項6】
ユーザCAPIクライアントに前記ファイル・システム許可機能が許可ハンドルを返すことを含む、請求項1乃至5のいずれかに記載の方法。
【請求項7】
前記CAPIアダプタが、CAPIサーバ・レジスタ空間に送られた各コマンドに許容される機能を、前記コマンド内の前記許可ハンドルを使用して実施することを含む、請求項6に記載の方法。
【請求項8】
前記ユーザCAPIクライアントが前記各コマンド内に前記許可ハンドルを設定することを含む、請求項6に記載の方法。
【請求項9】
前記CAPIアダプタが、前記許可ハンドルを使用して前記各コマンドを検証することを含む、請求項1乃至8のいずれかに記載の方法。
【請求項10】
コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタにブロック・エクステント粒度の許可モデルの処理を実装するためのシステムであって、
許可テーブルおよびファイル・システム許可機能を含む前記CAPIアダプタを含み、
前記ファイル・システム許可機能が、エクステント粒度でのデータ・アクセスをCAPIクライアントに許可して、アプリケーションが前記CAPIアダプタ内で未許可のデータにアクセスすることを回避し、
前記許可テーブルが、前記CAPIクライアントのために、CAPIクライアント識別子(ID)、前記CAPIクライアントにリソース所有権を割り当てるCAPIサーバ・レジスタ空間、および許容される機能のCAPIセットを規定する、システム。
【請求項11】
コンピュータ可読媒体に記憶された制御コードを含み、前記制御コードが前記ファイル・システム許可機能を含む、請求項10に記載のシステム。
【請求項12】
前記CAPIサーバ・レジスタ空間が、初期化機能を行うために使用されるCAPIサーバ・レジスタを含み、前記CAPIクライアントIDがCAPIサーバ・レジスタの特定のコピーへのインデックスを提供する、請求項10又は11に記載のシステム。
【請求項13】
プロセッサ、ファイル・システム、および前記CAPIアダプタに関連する許可機能を管理するハイパーバイザを含む、前記CAPIアダプタに結合されたプロセッサ・コンプレックスを含む、請求項10乃至12のいずれかに記載のシステム。
【請求項14】
コヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)、およびペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIE)を備えるトランスポート機構を含む、請求項13に記載のシステム。
【請求項15】
前記ファイル・システム許可機能が、前記各CAPIクライアントのための仮想アドレスを前記CAPIサーバ・レジスタ空間にマッピングすることによって、それぞれのCAPIクライアントに対するそれぞれのCAPIサーバ・レジスタへのアクセスを実施する、請求項10乃至14のいずれかに記載のシステム。
【請求項16】
主所有者CAPIクライアントとして特定された、複数のCAPIクライアントのうち1つまたは複数を含み、前記主所有者CAPIクライアントが親CAPIクライアントであり、前記親CAPIクライアントが前記CAPIアダプタに新しい子CAPIクライアントについて通知し、前記新しい子CAPIクライアントのための前記CAPIサーバ・レジスタ空間を特定し、前記新しい子CAPIクライアントのために許容されるCAPI機能を特定する、請求項10乃至15のいずれかに記載のシステム。
【請求項17】
ユーザCAPIクライアントに前記ファイル・システム許可機能が許可ハンドルを返す、請求項10乃至16のいずれかに記載のシステム。
【請求項18】
前記CAPIアダプタが、CAPIサーバ・レジスタ空間に送られた各コマンドに許容される機能を、前記コマンド内の前記許可ハンドルを使用して実施することを含む、請求項10乃至17のいずれかに記載のシステム。
【請求項19】
前記ユーザCAPIクライアントが前記各コマンド内に前記許可ハンドルを設定する、請求項18に記載のシステム。
【請求項20】
エクステント粒度でのデータ・アクセスをCAPIクライアントに許可する前記ファイル・システム許可機能が、ブロック・デバイスまたは論理ユニット(LUN)のリソース空間サブセットを含む各エクステントを含む、請求項10乃至19のいずれかに記載のシステム。
【請求項21】
コンピュータ・システム内にコヒーレント・アクセラレータ・プロセッサ・インタフェース(CAPI)アダプタのためのブロック・エクステント粒度の許可モデルの処理を実装するためのコンピュータ・プログラムであって、プログラム命令が具現化され、前記プログラム命令が、請求項1ないし9のいずれかの方法を行うようにコンピュータによって実行可能である、コンピュータ・プログラム
【国際調査報告】