(57)【要約】      （修正有）【課題】ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法を提供する。【解決手段】ブリッジ装置２００は、ホストコンピュータで実行されるアプリケーションから第１命令セットを受信する第１インタフェースと、第１命令セットを変換し、第１命令セットに基づいて第２命令セットを生成する１つ以上の命令プロセッサと、データストレージ装置に第２命令セットを提供する第２インタフェースと、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させるコンピューティングプロセッサと、を有する。【選択図】図２
2019075104.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータで実行されるアプリケーションから第１命令セットを受信する第１インタフェースと、
前記第１命令セットを変換し、前記第１命令セットに基づいて第２命令セットを生成する１つ以上の命令プロセッサと、
データストレージ装置に前記第２命令セットを提供する第２インタフェースと、
前記アプリケーションが実行される間、前記ホストコンピュータにかかわらず、バックグラウンドモードで、前記データストレージ装置からデータを引き出し、前記データストレージ装置にデータを書き込むよう、内部命令を発生させるコンピューティングプロセッサと、
を有することを特徴とするブリッジ装置。
【請求項２】
前記データストレージ装置は、不揮発性メモリエクスプレス（ＮＶＭｅ）標準と互換可能なソリッドステートドライブであることを特徴とする請求項１に記載のブリッジ装置。
【請求項３】
前記データストレージ装置は、ＮＶＭｅオーバーファブリック標準と互換可能なソリッドステートドライブであることを特徴とする請求項１に記載のブリッジ装置。
【請求項４】
前記第１インタフェースは、ファブリックネットワークを介したＮＶＭｅ−ｏＦインタフェースであり、前記第２インタフェースは、ＰＣＩｅインタフェースであり、
前記第１命令セットはＮＶＭｅ−ｏＦ命令を含み、前記第２命令セットはＮＶＭｅ命令を含むことを特徴とする請求項１に記載のブリッジ装置。
【請求項５】
前記ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択されることを特徴とする請求項４に記載のブリッジ装置。
【請求項６】
命令パーサーと命令分類器とをさらに含み、
前記命令パーサーは、前記第１命令セットをパーシングし、パーシングした命令を生成し、
前記命令分類器は、前記パーシングした命令を分類し、分類した命令を前記１つ以上の命令プロセッサに提供することを特徴とする請求項１に記載のブリッジ装置。
【請求項７】
前記１つ以上の命令プロセッサは、前記コンピューティングプロセッサによって発生された前記第２命令セットのサブ命令セットを処理する特殊命令部を有することを特徴とする請求項１に記載のブリッジ装置。
【請求項８】
前記アプリケーションは、機械学習アプリケーションであることを特徴とする請求項１に記載のブリッジ装置。
【請求項９】
前記第２命令セットの各命令は、前記１つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって前記第１命令セットにマッピングされるローカルタグと、を含む、命令識別子を有することを特徴とする請求項１に記載のブリッジ装置。
【請求項１０】
前記データストレージ装置に前記第２命令セットをキューイングするための提出キューと、前記データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、をさらに有することを特徴とする請求項１に記載のブリッジ装置。
【請求項１１】
第１インタフェースを介してホストコンピュータで実行されるアプリケーションから第１命令セットを受信する段階と、
前記第１命令セットを変換し、前記第１命令セットに基づいて第２命令セットを生成する段階と、
第２インタフェースを介してデータストレージ装置に前記第２命令セットを提供する段階と、
前記アプリケーションが実行される間、前記ホストコンピュータにかかわらず、バックグラウンドモードで、前記データストレージ装置からデータを引き出し、前記データストレージ装置にデータを書き込むよう、内部命令を発生させる段階と、
を有することを特徴とするブリッジ装置を用いたストレージ隣接演算方法。
【請求項１２】
前記データストレージ装置は、不揮発性メモリエクスプレス（ＮＶＭｅ）標準と互換可能なソリッドステートドライブであることを特徴とする請求項１１に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項１３】
前記データストレージ装置は、ＮＶＭｅオーバーファブリック標準と互換可能なソリッドステートドライブであることを特徴とする請求項１１に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項１４】
前記第１インタフェースは、ファブリックネットワークを介したＮＶＭｅ−ｏＦインタフェースであり、前記第２インタフェースは、ＰＣＩｅインタフェースであり、
前記第１命令セットはＮＶＭｅ−ｏＦ命令を含み、前記第２命令セットはＮＶＭｅ命令を含むことを特徴とする請求項１１に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項１５】
前記ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択されることを特徴とする請求項１４に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項１６】
前記第１命令セットをパーシングし、パーシングした命令を生成する段階と、
前記パーシングした命令を分類し、分類した命令を１つ以上の命令プロセッサに提供する段階と、をさらに有することを特徴とする請求項１１に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項１７】
前記１つ以上の命令プロセッサは、コンピューティングプロセッサによって発生された前記第２命令セットのサブ命令セットを処理する特殊命令部を有することを特徴とする請求項１６に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項１８】
前記アプリケーションは、機械学習アプリケーションであることを特徴とする請求項１１に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項１９】
前記第２命令セットの各命令は、前記１つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって前記第１命令セットにマッピングされるローカルタグと、を含む、命令識別子を有することを特徴とする請求項１６に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項２０】
前記データストレージ装置に前記第２命令セットをキューイングするための提出キューと、前記データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、を提供する段階をさらに有することを特徴とする請求項１１に記載のブリッジ装置を用いたストレージ隣接演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データストレージシステムに係り、より詳細には、ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法に関する。
【背景技術】
【０００２】
ソリッドステートドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ：ＳＳＤ）は、急速にハードディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ：ＨＤＤ）等の従来のストレージ装置に取って代わってきており、最近のデータセンターインフラの主なストレージ要素として急浮上している。ＳＳＤは、低遅延性、高いデータ読み取り／書き込み処理量、及び高信頼性を有するユーザーデータの永久ストレージを提供する。不揮発性メモリエクスプレスオーバーファブリック（Ｎｏｎ−ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ  ｏｖｅｒ  ｆａｂｒｉｃｓ：ＮＶＭｅ−ｏＦ）は、イーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ（登録商標））、光チャンネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）、インフィニバンド（Ｉｎｆｉｎｉｂａｎｄ）等のファブリックネットワーク（Ｆａｂｒｉｃ  Ｎｅｔｗｏｒｋ）を介して、数百から数千個のＳＳＤを連結させる新技術である。
【０００３】
ＮＶＭｅ−ｏＦプロトコルは、構築されたファブリックネットワークを介して、数多くのＮＶＭｅ  ＳＳＤを遠隔ホストに連結させる遠隔直結ストレージ（ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ−Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ：ｒＤＡＳ）を可能にする。また、ＮＶＭｅ−ｏＦプロトコルは、遠隔ダイレクトメモリアクセス（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：ＲＤＭＡ）を支援し、ネットワークを介して、ＮＶＭｅ命令、データ、及び応答を伝達する高信頼性の伝送サービスを提供する。ＲＤＭＡサービスを提供する伝送プロトコルの一例として、ｉＷＡＲＰ、ＲｏＣＥ  ｖ１、及びＲｏＣＥ  ｖ２が挙げられる。
【０００４】
分離されたデータストレージ装置（Ｄｉｓａｇｇｒｅｇａｔｅｄ  Ｄａｔａ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ）（例：ＮＶＭｅ−ｏＦ−互換ＳＳＤ、本明細書において、ＮＶＭｅ−ｏＦ  ＳＳＤ又はｅＳＳＤとも簡単に指称する）を用いるデータストレージシステムは、ホストコンピュータで実行されるアプリケーションに大きなストレージ容量を提供できる。アプリケーションは、分離されたデータストレージ装置から大量のデータ（ビッグデータ）を収集して分析できる。
【０００５】
ビッグデータの処理規模は非常に大きいため、有意義なビッグデータマイニング（Ｍｉｎｉｎｇ）を行うためのインフラには、膨大な費用を投入しなければならず、大量のコンピューティング資源、大容量のシステムメモリ、及び高帯域幅ネットワークのみならず、ビッグデータを保存するための大容量の高性能データストレージ装置が必要となる。従って、ホストコンピュータからデータストレージ装置にデータ処理マイニングタスクの一部をオフロード（Ｏｆｆｌｏａｄ）し、データストレージ装置からホストコンピュータへのデータの移動を最小化することが好ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記従来技術に鑑みてなされたものであって、本発明の目的は、ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一実施形態によるブリッジ装置は、ホストコンピュータで実行されるアプリケーションから第１命令セットを受信する第１インタフェースと、第１命令セットを変換し、第１命令セットに基づいて第２命令セットを生成する１つ以上の命令プロセッサと、データストレージ装置に第２命令セットを提供する第２インタフェースと、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させるコンピューティングプロセッサと、を有する。
【０００８】
本発明の他の実施形態による方法は、第１インタフェースを介してホストコンピュータで実行されるアプリケーションから第１命令セットを受信する段階と、第１命令セットを変換し、第１命令セットに基づいて第２命令セットを生成する段階と、第２インタフェースを介してデータストレージ装置に第２命令セットを提供する段階と、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させる段階と、を有する。
【０００９】
具現及びイベントの組み合わせの多様な新規細部事項を含む前述の好ましい特徴やその他の好ましい特徴は、添付図面を参照してより詳細に説明し、請求範囲で提示する。本明細書で説明する特定のシステム及び方法は、例示として示し、これに限定されない。本明細書で説明する原理及び特徴は、本発明の範囲から逸脱することなく、数多くの多様な実施形態から採択できるということが本発明の技術分野に属する通常の技術者にとって当然である。
【発明の効果】
【００１０】
本発明の実施形態によるブリッジ装置を用いたストレージ隣接演算方法によれば、ホストコンピュータからストレージ装置にデータ処理及びマイニングタスクをオフロードすることにより、分離されたデータストレージシステムにおいて、ストレージ装置からホストコンピュータへのデータの移動を最小化できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態によるデータストレージシステムの例示的なブロック図である。
【図２】本発明の一実施形態によるＮＶＭｅ−ｏＦブリッジ装置の例示的なブロック図である。
【図３】本発明の一実施形態による特殊命令部の例示的なブロック図である。
【図４】本発明の一実施形態による例示的な命令識別子の変換方法を示す。
【図５】本発明の一実施形態による管理者提出キューと完了キューとの共有を示すブロック図である。
【図６】本発明の一実施形態による遠隔ホスト及びストレージ隣接演算プロセッサ間の入／出力提出キューの共有を示すブロック図である。
【図７】本発明の一実施形態によるブリッジ装置内のローカルデータの移動を示すブロック図である。
【発明を実施するための形態】
【００１２】
本明細書の一部として含まれた添付図面は、現時点における好ましい実施形態を示し、前述の全般的な説明や以下の好ましい実施形態に関する詳細な説明と共に、本明細書に記載される原理を説明し教示する。
【００１３】
図面は、必ずしも一定の割合で示しているわけではなく、図面全般に亘って同様の構造又は機能部の構成要素は、説明のために同一の参照番号で示している。また、図面は、単に本明細書に説明している多様な実施形態の説明を容易にするためのものであって、本明細書に開示する教示の全ての様相を示すものではなく、請求項の範囲を制限するものでもない。
【００１４】
本明細書に開示するそれぞれの特徴や教示は、ストレージ隣接演算を提供するブリッジ装置（Ｂｒｉｄｇｅ  Ｄｅｖｉｃｅ）を提供するために、個別にまたは他の特徴や教示と共に利用できる。その他の多くの特徴や教示を個別にまたは結合して利用する代表的な例示を添付図面を参照してより詳細に説明する。このような詳細な説明は、本教示の様相を実施するための細部事項を本発明の技術分野に属する通常の技術者に教示するためのものであり、請求項の範囲を制限するものではない。従って、詳細な説明に開示する特徴の組み合わせは、最も広い意味の教示を実施するにあたって必須ではなく、代わりに、本教示の特に代表的な例示を説明するために教示するものである。
【００１５】
以下の説明では、単に説明する目的で特定の用語を記載しており、本発明の完全な理解を助ける。しかし、本発明の技術分野に属する通常の技術者が本発明の教示を実施するために、このような特定の細部事項を必要としないことは明らかである。
【００１６】
本明細書の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号の形式で提供する。このようなアルゴリズム形式の説明や表現は、データ処理の技術分野における通常の技術者がその研究内容を他の通常の技術者に効果的に伝達するために用いる。アルゴリズムは、一般に、目標とする結果を導く一貫した一連の段階として見なされる。段階は、物理量を物理的に操作することを必要とする。通常、必須ではないが、このような物理量は、保存、伝送、結合、比較、及びその他の操作可能な電気又は磁気信号の形態を有する。主に共通して用いるという理由から、このような信号がビット、値、要素、記号、文字、用語、数字等と指称することが時には便利であるということは既に知られている。
【００１７】
一方、このような用語やこれと類似する用語は何れも、適切な物理量と関連しており、単に便宜のために、このような物理量に名付けたものであることに留意すべきである。以下の説明で明らかに別途具体的に言及しない限り、明細書全般において、「処理」、「演算」、「計算」、「判定」、「表示」等の用語を利用する説明は、コンピュータシステムのレジスター及びメモリ内の（電子的）物理量として示したデータを、コンピュータシステムのメモリ／レジスター又は他の情報保存／伝送／表示装置内の物理量として同様に示した他のデータに操作及び変換する、コンピュータシステム又はこれと類似する電子コンピューティング装置の動作及びプロセスを言及するものである。
【００１８】
また、代表的な例示における多様な特徴、及び従属項は、本教示のさらなる有用な実施形態を提供するために、具体的且つ明示的に挙げていない方法によっても結合する。また、請求する技術的思想を限定するための目的はもちろん、本来の開示の目的のために、全ての値の範囲又はエンティティー群の表示は、あり得る全ての中間値又は中間エンティティーを開示するという点にも特に留意すべきである。なお、図面に示す構成要素の大きさ及び形態は、本教示がどのように実施されるかに関して理解を助けるために構成したものであり、例示として示す大きさ及び形態に限定されるものではない。
【００１９】
本発明は、分離されたデータストレージシステムにおいて、ストレージ装置からホストコンピュータへのデータの移動を最小化するために、ホストコンピュータからストレージ装置にデータ処理及びマイニングタスクをオフロードするシステム及び方法について説明する。本発明の一実施形態によると、本発明のシステム及び方法は、ストレージ装置に隣接して又はストレージ装置内でデータを処理できるようにし、これは、それぞれストレージ隣接演算（Ｎｅａｒ−Ｓｔｏｒａｇｅ  Ｃｏｍｐｕｔｅ：ＮＳＣ）及びストレージ内部促進（Ｉｎ−Ｓｔｏｒａｇｅ  Ａｃｃｅｌｅｒａｔｉｏｎ：ＩＳＡ）と指称する。本システム及び方法は、ＮＶＭｅ−ｏＦ標準を用いる分離されたストレージ装置に好適である。また、本発明のシステム及び方法は、直結ＮＶＭｅ対ＮＶＭｅ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  ＮＶＭｅ−ｔｏＮＶＭｅ）ブリッジ装置において用いることができる。ホストコンピュータは、ＮＶＭｅ−ｏＦ  ＳＳＤに一部のデータマイニングタスクをオフロードし、ＮＶＭｅ−ｏＦネットワークを介したホストコンピュータとＮＶＭｅ−ｏＦ  ＳＳＤ間のデータの移動を減らし、これにより、エネルギー及びネットワークのインフラコストを削減できる。
【００２０】
図１は、本発明の一実施形態によるデータストレージシステムの例示的なブロック図である。データストレージシステム１００は、ホスト１１０と、１つ以上のＮＶＭｅ−ｏＦ−互換イーサネットＳＳＤ（ｅＳＳＤ）を含むシャーシ（Ｃｈａｓｓｉｓ）１６０（「ｅＳＳＤシャーシ」とも指称する）と、を有する。例えば、シャーシ１６０は、２４個又は４８個のｅＳＳＤを有する。シャーシ１６０内のｅＳＳＤは、それぞれｅＳＳＤ１７０ａ乃至１７０ｎ（まとめてｅＳＳＤ１７０と指称する）として表示する。ホスト１１０は、アプリケーション１１１と、オペレーティングシステム（ＯＳ）とファイルシステム（ＦＳ）１１２と、ＮＶＭｅ−ｏＦドライバー１１３と、を有する。ホスト１１０のイニシエータ（Ｉｎｉｔｉａｔｏｒ）（例：アプリケーション１１１）は、ＮＶＭｅ−ｏＦドライバー１１３を用いてイーサネット１５０を介してｅＳＳＤ１７０とＮＶＭｅ−ｏＦとの連結を達成可能である。シャーシ１６０は、イーサネットスイッチ１６１と、ベースボード管理コントローラ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ：ＢＭＣ）１６２と、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）スイッチ１６３と、を有する。イーサネットスイッチ１６１は、ミッドプレーン（Ｍｉｄｐｌａｎｅ）１６５を介してｅＳＳＤ１７０にイーサネット連結を提供し、ＰＣＩｅスイッチ１６３は、ミッドプレーン１６５を介してｅＳＳＤ１７０に管理者インタフェース１６４を提供する。ＢＭＣ１６２は、システム管理者による所定の命令（語）に従って、ｅＳＳＤ１７０をプログラミングする。
【００２１】
イーサネットスイッチ１６１は、ホスト１１０とｅＳＳＤ１７０間のネットワーク連結性を提供する。イーサネットスイッチ１６１は、１つ以上のホストに接続するための大容量（例：１００Ｇｂｐｓ）のアップリンクを有する。イーサネットスイッチ１６１は、ｅＳＳＤ１７０に接続するための低容量（例：２５Ｇｂｐｓ）の多重ダウンリンクも有する。例えば、イーサネットスイッチ１６１は、１２個の１００Ｇｂｐｓのアップリンクと、２４個又は４８個の２５Ｇｂｐｓのダウンリンクと、を有する。イーサネットスイッチ１６１は、ＢＭＣ１６２に対する専用の構成／管理ポートを有する。
【００２２】
ＢＭＣ１６２は、イーサネットスイッチ１６１と、ＰＣＩｅスイッチ１６３と、ｅＳＳＤ１７０とを含むシャーシ１６０の内部の構成要素を管理する。ＢＭＣ１６２は、ＰＣＩｅ及び／又はシステム管理のためのシステム管理バス（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ：ＳＭＢｕｓ）インタフェースを支援する。ＢＭＣ１６２は、ｅＳＳＤ１７０を設定し、イーサネットスイッチ１６１をプログラミングする。
【００２３】
サーバベースのオールフラッシュアレイ（Ａｌｌ−Ｆｌａｓｈ  Ａｒｒａｙ：ＡＦＡ）と同様に、ｅＳＳＤ１７０は、複数のｅＳＳＤ１７０と、外部のホストとｅＳＳＤとを連結させるネットワークスイッチ（即ち、イーサネットスイッチ１６１）と、これらを管理するＢＭＣ１６２と、を含むサーバのない構造物（即ち、シャーシ１６０）に共に収容される。ＢＭＣ１６２は、ｅＳＳＤ装置に対するブート（ｂｏｏｔ）及び制御経路を処理する。完全なｘ８６ＣＰＵと異なり、ＢＭＣ１６２は、ＣＰＵが処理する作業を全て行うのではなく、最小限の構造管理機能を行う。ＢＭＣ１６２は、システム管理バス又はＰＣＩｅバスを介して、連結性、状態、温度、ログ、及びエラーに関して、連結されたｅＳＳＤ１７０及び関連ハードウェアの状態を持続的に点検する。
【００２４】
ｅＳＳＤ１７０は、大容量の高性能なデータストレージソリューションを提供する。ＮＶＭｅ−ｏＦプロトコルは、数百から数千個の分離されたｅＳＳＤ１７０がホストコンピュータ１１０で実行されるアプリケーション１１１に遠隔直結（ｒＤＡＳ）方式で接続することを可能とする。本発明のシステム及び方法は、分離されたｅＳＳＤに収集されて保存された大量のデータの処理や移動を容易にする。従来のホストコンピュータを用いる場合、このようなデータの処理は非常にコストがかかる。
【００２５】
ホスト１１０で実行されるアプリケーション１１１は、ｅＳＳＤ１７０のように分離されたデータストレージ装置に保存されたデータをネットワーク（例：イーサネット１５０）を介して引き出して（ｆｅｔｃｈ）処理し、データ処理の結果を再度データストレージ装置に保存することにより、機械学習（Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ：ＭＬ）等のプロセスを行う。データの引き出し、処理、及び保存の過程を含むこのようなプロセスは、ホストコンピュータのエネルギー、演算能力、ネットワーク、及びデータストレージ資源を過度に消費する極めて非効率的な過程である。また、このようなプロセスは、ホストコンピュータの演算及びメモリ資源において高コストをもたらす。
【００２６】
本発明のシステム及び方法は、ストレージ隣接演算又はストレージ内部促進を用いて、バックグラウンドデータの処理を可能にする。ストレージ隣接演算及びストレージ内部促進は、大量のデータがバックグラウンドで効率的な方法により処理できるようにする。一実施形態によると、処理すべきデータが保存されたデータストレージ装置に連結したブリッジ装置は、連結したデータストレージ装置に隣接するバックグラウンドデータ処理を容易にする。一実施形態において、ブリッジ装置は、データストレージ装置に統合される。他の実施形態において、ブリッジ装置は、データストレージ装置に連結した別途の装置である。「隣接」という用語は、本発明の範囲を逸脱することなく、データ処理が、別途の装置だけでなく、データストレージ装置自体でも行われることを意味すると理解すべきである。一部の実施形態において、「ストレージ隣接」及び「ストレージ内部」という用語は、本明細書において相互交換して用いることができる。
【００２７】
ブリッジ装置は、データストレージ装置に保存されたデータのストレージ隣接演算をアプリケーションに感知されない方式で具現する１つ以上のハードウェア構成要素を含む。ブリッジ装置は、ＮＶＭｅ−ｏＦ対ＮＶＭｅブリッジ装置及びＮＶＭｅ対ＮＶＭｅブリッジ装置のうちの何れか１つである。ＮＶＭｅ−ｏＦ標準と互換可能なＮＶＭｅ−ｏＦ対ＮＶＭｅブリッジ装置は、ファブリックネットワークを介してＮＶＭｅ−ｏＦ命令を受信し、バックエンド（Ｂａｃｋｅｎｄ）データストレージ装置にＰＣＩｅインタフェースを提供する。ＮＶＭｅ標準と互換可能なＮＶＭｅ対ＮＶＭｅブリッジ装置は、ＰＣＩｅバスを介してＮＶＭｅ命令を受信し、データストレージ装置に隣接してデータ処理を行う。以下では、説明の便宜のために、データストレージ装置の例としてｅＳＳＤについて説明する。一方、本発明の範囲を逸脱することなく、他の種類のデータストレージ装置及び分離されたデータストレージシステムも使用可能であることは当然である。以下の例示において、ｅＳＳＤは、ブリッジ装置とバックエンドＳＳＤの両方を含む装置として説明するが、他の実施形態では、データストレージ装置（バックエンドＳＳＤ）が別途のブリッジ装置と連結してｅＳＳＤを構成するか、又はｅＳＳＤがブリッジ装置自体やブリッジ装置の隣接−演算機能を行う装置を指称する。
【００２８】
本発明のブリッジ装置は、ＳＳＤに対するホストコンピュータの一般的なデータアクセス動作に影響を与えることなく、バックエンドＳＳＤに保存されたデータを引き出し、処理及び修正し、処理済みのデータを再度バックエンドＳＳＤに保存する。一実施形態において、ブリッジ装置は、一対の入／出力（Ｉ／Ｏ）提出キュー（Ｓｕｂｍｉｓｓｉｏｎ  Ｑｕｅｕｅ）及び完了キュー（Ｃｏｍｐｌｅｔｉｏｎ  Ｑｕｅｕｅ）  をメンテナンスし、一対の入／出力キュー（Ｉ／Ｏ  Ｑｕｅｕｅ）を用いて、バックグラウンドモードでバックエンドＳＳＤへのデータアクセスを行うシステムメモリを有する。ブリッジ装置は、ホストコンピュータから出力した命令と、ブリッジ装置のストレージ隣接プロセッサから発生した内部命令との両方を処理するために、入／出力提出キュー及び完了キューを共有する。また、ブリッジ装置のシステムメモリは、ホストコンピュータとストレージ隣接演算プロセッサ（ＮＳＣ  Ｐｒｏｃｅｓｓｏｒ）間で共有可能な管理者提出キューと完了キューとを含む一対の管理者キュー（Ａｄｍｉｎ  Ｑｕｅｕｅ）をメンテナンスする。
【００２９】
一実施形態によると、ブリッジ装置は、ストレージ隣接演算プロセッサがバックエンドＳＳＤに保存されたデータへアクセスすることを許容するＮＶＭｅ−ｏＦ対ＮＶＭｅ又はＮＶＭｅ対ＮＶＭｅプロトコル連結（Ｂｒｉｄｇｉｎｇ）を用いる。機械学習アルゴリズム等の多様なプロセスは、ホストコンピュータにかかわらず、バックグラウンドモードでデータ処理を行うために、ホストコンピュータ又はブリッジ装置で実行する。機械学習アルゴリズムを実行するホストコンピュータは、ブリッジ装置の外部に配置可能であるが、ブリッジ装置を介して間接的にｅＳＳＤに保存されたデータにアクセスできる。一部の実施形態において、ブリッジ装置及び／又はホストコンピュータは、ｅＳＳＤと同一のシャーシの異なるスロット（例：Ｕ．２スロット）に配置されるか、物理的にシャーシの外部に配置される。図面を参照して説明する以下の例示は、主にＮＶＭｅ−ｏＦブリッジ装置（「ＮＶＭｅ−ｏＦ対ＮＶＭｅブリッジ装置」とも指称する）に関するものであるが、ＮＶＭｅ対ＮＶＭｅブリッジ装置にも同様に適用可能である。
【００３０】
ブリッジ装置は、バックエンドＳＳＤに伝送されるホスト命令（例：ＮＶＭｅ−ｏＦ命令）を受信するためのインタフェースを提供する。ブリッジ装置は、受信したホスト命令識別子（Ｃｏｍｍａｎｄ  Ｉｄｅｎｔｉｆｉｅｒ：ＣＩＤ）をローカルタグ（Ｌｏｃａｌ  Ｔａｇ）にマッピングし、処理すべきデータを保存するバックエンドＳＳＤに対する新たな命令識別子を含むＮＶＭｅ命令を生成する。バックエンドＳＳＤは、ＮＶＭｅ命令に対応する完了エントリー（Ｃｏｍｐｌｅｔｉｏｎ  Ｅｎｔｒｙ：ＣＥ）を生成してブリッジ装置に送信する。その後、ブリッジ装置は、完了エントリーをパーシングし、完了エントリーをブリッジ装置のストレージ隣接演算プロセッサに知能的に伝達する。
【００３１】
ホストの開始命令を中継（Ｂｒｉｄｇｉｎｇ）するのとは別に、ブリッジ装置のストレージ隣接演算プロセッサは、ホストコンピュータにかかわらず、バックエンドＳＳＤに対するＮＶＭｅ命令を発生させる。ブリッジ装置は、共有の入／出力キュー及び管理者キューを用いて、ホストコンピュータとストレージ隣接演算プロセッサの両方の入／出力動作を互いに干渉することなく同時に且つ能動的に処理する。ホスト命令を中継する機能を維持しつつ、バックエンドＳＳＤに保存されたデータにアクセスするストレージ隣接演算プロセッサの機能は、機械学習アプリケーションをストレージ隣接演算装置（即ち、ブリッジ装置）で実行するのに好適である。機械学習アプリケーションにおいて、ストレージ隣接演算プロセッサは、エネルギー、資源、及びコストの側面から効率的なデータ処理を提供する。
【００３２】
ＮＶＭｅ−ｏＦブリッジ装置は、一方では、遠隔イニシエータ（例：ホストコンピュータで実行される機械学習アプリケーション）にＮＶＭｅ−ｏＦインタフェースを提供し、他方では、バックエンドＳＳＤに標準ＰＣＩｅベースのＮＶＭｅインタフェースを提供する。遠隔イニシエータは、ＮＶＭｅ−ｏＦインタフェースを介して、イーサネットを経由してＮＶＭｅ−ｏＦブリッジ装置に連結する。ＮＶＭｅ−ｏＦブリッジ装置は、バックエンドＳＳＤとの連結のために、ＮＶＭｅ−ｏＦプロトコルをＮＶＭｅプロトコルに変換する。
【００３３】
反面、ＮＶＭｅブリッジ装置は、遠隔イニシエータ及びバックエンドＳＳＤに標準ＰＣＩｅインタフェースを提供する。遠隔イニシエータは、ＰＣＩｅバスを介してＮＶＭｅブリッジ装置に連結する。ＮＶＭｅブリッジ装置は、バックエンドＳＳＤに、ＮＶＭｅ命令がホストコンピュータではなく、ＮＶＭｅブリッジ装置から出力されたかのように見えるように、ＮＶＭｅホスト命令を異なる命令識別子が含まれた他のＮＶＭｅ命令に変換できる。
【００３４】
一実施形態によると、ブリッジ装置のＮＶＭｅ−ｏＦ対ＮＶＭｅ又はＮＶＭｅ対ＮＶＭｅの連結機能は、フィールド−プログラマブルゲートアレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ：ＦＰＧＡ）又は注文型集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｈｉｐ：ＡＳＩＣ）で具現する。代案として、連結機能は、ファームウェア又はソフトウェアプログラムにより具現する。
【００３５】
図２は、本発明の一実施形態によるＮＶＭｅ−ｏＦブリッジ装置の例示的なブロック図である。ＮＶＭｅ−ｏＦブリッジ装置２００は、ストレージ隣接演算プロセッサ２１１と、システムメモリ２１２と、命令パーサー２１３と、命令分類器２１４と、命令プロセッサ２１５と、ＰＣＩｅ側命令提出キュー（以下、「ＰＳＱ」）モジュール２１６と、ＰＣＩｅアプリケーション（以下、「ＰＡＰＰ」）／ルートコンプレックス（Ｒｏｏｔ  Ｃｏｍｐｌｅｘ）モジュール２１７と、ＮＶＭｅ−ｏＦ応答器２１８と、ＰＣＩｅ完了エントリーパーサー２１９と、ＰＣＩｅ側命令完了キュー（以下、「ＰＣＱ」）モジュール２２０と、を有する。ＮＶＭｅ−ｏＦブリッジ装置２００は、ＰＣＩｅバスを介してバックエンドＳＳＤ２５０に連結される。ホストコンピュータで実行される遠隔イニシエータは、ファブリックネットワーク（本例示ではイーサネット）を介して、ＮＶＭｅ−ｏＦ命令をバックエンドＳＳＤ２５０に送信する。
【００３６】
ＮＶＭｅ−ｏＦブリッジ装置２００の命令パーサー２１３は、バックエンドＳＳＤ２５０に伝送されるＮＶＭｅ−ｏＦ命令をインターセプトしてパーシングし、パーシングしたＮＶＭｅ−ｏＦ命令を命令分類器２１４に送信する。例えば、命令パーサー２１３は、命令演算符号（Ｏｐｃｏｄｅ：ＯＰＣ）、命令識別子（ＣＩＤ）、名称空間識別子（Ｎａｍｅｓｐａｃｅ  Ｉｄｅｎｔｉｆｉｅｒ：ＮＳＩＤ）、論理ブロックの個数（Ｎｕｍｂｅｒ  ｏｆ  Ｌｏｇｉｃａｌ  Ｂｌｏｃｋｓ：ＮＬＢ）、及び開始論理ブロックアドレス（Ｓｔａｒｔ  Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ：ＳＬＢＡ）を含むが、これに限定されない多様な命令を抽出してパーシングする。命令分類器２１４は、パーシングしたＮＶＭｅ−ｏＦ命令を異なるグループに分類し、分類したＮＶＭｅ−ｏＦ命令を命令プロセッサ２１５に送信する。例えば、命令分類器２１４は、管理者命令、ファブリック命令、読み取り命令、書き込み命令、及び特殊命令を分類する。ＮＶＭｅ−ｏＦ命令のうちの異なる命令又はグループは、命令プロセッサ２１５の専用命令処理部を用いて処理する。例えば、命令プロセッサ２１５は、特殊命令部（Ｓｐｅｃｉａｌ  Ｃｏｍｍａｎｄ  Ｕｎｉｔ：ＳＣＵ）２３１と、ファブリック命令部（Ｆａｂｒｉｃｓ  Ｃｏｍｍａｎｄ  Ｕｎｉｔ：  ＦＣＵ）２３２と、管理者命令部（Ａｄｍｉｎ  Ｃｏｍｍａｎｄ  Ｕｎｉｔ：ＡＣＵ）２３３と、書き込み命令部（Ｗｒｉｔｅ  Ｃｏｍｍａｎｄ  Ｕｎｉｔ：ＷＣＵ）２３４と、読み取り命令部（Ｒｅａｄ  Ｃｏｍｍａｎｄ  Ｕｎｉｔ：ＲＣＵ）２３５と、を有する。
【００３７】
このような各命令処理部２３１乃至２３５は、ＮＶＭｅ−ｏＦ命令をＮＶＭｅ命令に変換してＰＳＱモジュール２１６に送る。一実施形態によると、ＰＳＱモジュール２１６は、命令提出キューを具現し、活性（Ａｃｔｉｖｅ）提出キューに関するヘッド及びテイルポインタをメンテナンスする。ＰＳＱモジュール２１６は、活性提出キューを感知して、提出キューが満たされているか、又は空いている状態であることを示す条件フラグを生成する。ＮＶＭｅ命令が提出キューに挿入される場合、ＰＳＱモジュール２１６は、ドアベル（Ｄｏｏｒｂｅｌｌ）イベント（提出キュー−ドアベル）を生成して、ＰＡＰＰモジュール２１７を介してバックエンドＳＳＤ２５０に送信する。ＰＡＰＰモジュール２１７は、ＰＣＩｅバスを介してドアベルイベントを送信するよう、バックエンドＳＳＤ２５０に対するＰＣＩｅ伝送を具現する。ＰＡＰＰモジュール２１７は、ＮＶＭｅ−ｏＦブリッジ装置２００によって求められる設定の読み取り（Ｃｏｎｆｉｇ  Ｒｅａｄ）、設定の書き込み（Ｃｏｎｆｉｇ  Ｗｒｉｔｅ）、メモリの書き込み（Ｍｅｍｏｒｙ  Ｗｒｉｔｅ）、及びメモリの読み取り（Ｍｅｍｏｒｙ  Ｒｅａｄ）を含む標準ＰＣＩｅトランザクション命令を支援する。また、ＰＡＰＰモジュール２１７は、ＮＶＭｅ−ｏＦブリッジ装置２００のＰＣＩｅエンドポイントによって求められるＰＣＩｅメモリ読み取り及びメモリ書き込みトランザクションを支援する。言い換えれば、ＰＡＰＰモジュール２１７は、ＮＶＭｅ−ｏＦブリッジ装置２００のＰＣＩｅルートコンプレックス機能を具現及び支援して、ＮＶＭｅ−ｏＦブリッジ装置２００をＰＣＩｅルートコンプレックス装置とする。
【００３８】
ＰＣＱモジュール２２０は、バックエンドＳＳＤ２５０に関する命令完了キューを具現する。バックエンドＳＳＤ２５０は、処理する各々のＮＶＭｅ命令に対する命令完了エントリーを書き込む。一般に、命令提出キューと命令完了キューは、互いに一対一でマッピングされる。ＰＣＩｅ完了エントリーパーサー２１９は、ＰＣＱモジュール２２０から受信した完了エントリーをパーシングし解釈する。ＰＣＩｅ完了エントリーパーサー２１９は、パーシングした完了エントリーを、対応するＮＶＭｅ命令を生成した適切な各命令処理部２３１乃至２３５に伝達する。適切な各命令処理部２３１乃至２３５は、ＰＣＩｅ完了エントリーパーサー２１９から受信したＰＣＩｅ完了エントリー（又はＮＶＭｅ完了エントリー）に対応するＮＶＭｅ−ｏＦ完了エントリーを生成し、ＮＶＭｅ−ｏＦインタフェース（例：イーサネット）を介して、遠隔イニシエータに再度ＮＶＭｅ−ｏＦ完了エントリーを出力するＮＶＭｅ−ｏＦ応答器２１８にＮＶＭｅ−ｏＦ完了エントリーを伝達する。ＮＶＭｅ−ｏＦ完了エントリーは、読み取りデータ又は書き込みデータが遠隔イニシエータに伝送された後に伝達される。ＮＶＭｅ−ｏＦ命令中継の一部として、各命令処理部２３１乃至２３５は、バックエンドＳＳＤ２５０と遠隔イニシエータとの間のデータ伝送を容易にする。
【００３９】
バックエンドＳＳＤ２５０は、ドアベルイベントに応答して、ＰＳＱモジュール２１６から受信したＮＶＭｅ命令を引き出して実行する。命令実行の一部として、バックエンドＳＳＤ２５０はデータ伝送を行う。このようなデータは、ＮＶＭｅ−ｏＦブリッジ装置２００で利用可能なシステムメモリ２１２又はオンチップ（Ｏｎ−ｃｈｉｐ）若しくはオフチップ（Ｏｆｆ−ｃｈｉｐ）メモリに伝送されるか、又はこれから伝送される。
【００４０】
図３は、本発明の一実施形態による特殊命令部２３１の例示的なブロック図である。特殊命令部２３１は、バックエンドＳＳＤ２５０に特殊命令を出力するように、ストレージ隣接演算プロセッサ２１１とのインタフェースを具現する。ストレージ隣接プロセッサ２１１は、このようなインタフェースを用いてバックグラウンドでバックエンドＳＳＤ２５０からデータを引き出すか、バックエンドＳＳＤ２５０にデータ又は処理結果を書き込む。
【００４１】
ファブリック命令部２３２は、ＮＶＭｅ−ｏＦプロトコルに対する命令のファブリックタイプを処理する。例えば、ファブリック命令には、Ｃｏｎｎｅｃｔ、Ｐｒｏｐｅｒｔｙ  Ｇｅｔ、Ｐｒｏｐｅｒｔｙ  Ｓｅｔ等が含まれるが、これに限定されない。管理者命令部２３３は、管理者命令を処理する。例えば、管理者命令には、Ｉｄｅｎｔｉｆｙ、Ｇｅｔ  Ｌｏｇ  Ｐａｇｅ等を含むが、これに限定されない。書き込み命令部２３４は、書き込み命令を処理する。
【００４２】
図３を参照すると、特殊命令部２３１は、インバウンド先入れ先出し（Ｉｎｂｏｕｎｄ  Ｆｉｒｓｔ  Ｉｎｐｕｔ  Ｆｉｒｓｔ  Ｏｕｔｐｕｔ、以下「ＩＢＦＩＦＯ」）３３２と、アウトバウンド（Ｏｕｔｂｏｕｎｄ：ＯＢ）先入れ先出し（以下「ＯＢＦＩＦＯ」）３３３と、ＮＶＭｅ命令バッファ３３４と、を有する。ＩＢＦＩＦＯ３３２及びＯＢＦＩＦＯ３３３は、バックエンドＳＳＤ２５０に特殊命令を出力するために、ストレージ隣接演算プロセッサ２１１によって用いられる構造である。ストレージ隣接演算プロセッサ２１１は、ＮＶＭｅ命令を生成してメッセージにこれを挿入し、ＯＢＦＩＦＯ３３３に該当メッセージを書き込む。特殊命令部２３１は、メッセージを読み取り、ＮＶＭｅ命令をバックエンドＳＳＤ２５０に送信する。バックエンドＳＳＤ２５０が完了エントリーとして応答すると、特殊命令部２３１は、完了エントリーをメッセージに挿入し、該当メッセージをＩＢＦＩＦＯ３３２に書き込む。ストレージ隣接演算プロセッサ２１１は、更なる演算のためにＩＢＦＩＦＯ３３２から完了エントリーを読み取る。
【００４３】
図４は、本発明の一実施形態による例示的な命令識別子の変換方法を示す。ブリッジ装置は、１６ビットの命令識別子（ＣＩＤ）４０１を含む入力命令（ＮＶＭｅ−ｏＦ又はＮＶＭｅ命令の何れか１つ）を受信する。１６ビットの命令識別子及び提出キューの番号は、活性命令（Ａｃｔｉｖｅ  Ｃｏｍｍａｎｄ）を固有に識別する。所定の命令に対する完了エントリは、逆照会（Ｒｅｖｅｒｓｅ  Ｌｏｏｋ−ｕｐ）を通じて完了エントリーが対応するＮＶＭｅ命令と正確に関連付けられるよう、同一の１６ビットの命令識別子を含む。これに関しては以下で詳細に説明する。
【００４４】
ＮＶＭｅ−ｏＦブリッジ装置の場合、ＮＶＭｅ−ｏＦブリッジ装置は、ＮＶＭｅ−ｏＦ命令を受信し、ＮＶＭｅ−ｏＦ命令に対するコンテクストを生成し、ローカル命令タグ（「ローカルタグ」とも指称する）を記録する。一実施形態において、ＮＶＭｅ−ｏＦブリッジ装置は、ルックアップテーブル（Ｌｏｏｋｕｐ  Ｔａｂｌｅ：ＬＵＴ）４０２を照会し、受信した１６ビットの命令識別子を１２ビットのローカルタグ（Ｌｏｃａｌ＿Ｔａｇ）４０３にマッピングする。ルックアップテーブル４０２が全ていっぱいの場合、活性命令の個数をルックアップテーブル４０２の容量（２＾１２）に制限して、入力命令の実行を一時停止する。また、１２ビットのローカルタグは、バックエンドＳＳＤに出力されるＮＶＭｅ命令の１６ビットのＮＶＭｅ命令識別子（ＮＶＭｅ  ＣＩＤ）４１０の一部として用いられる。変換されたＮＶＭｅ命令は、新たに構成された１６ビットのＮＶＭｅ命令識別子４１０を含む。一実施形態によると、ＮＶＭｅ命令識別子４１０は、２つのフィールド、即ち、４ビットの命令処理部識別子（ＣＵ＿ＩＤ）４０４と、１２ビットのローカルタグ（Ｌｏｃａｌ＿Ｔａｇ）４０５と、を有する。１２ビットのローカルタグ４０５及び４ビットの命令処理部識別子４０４に分割されたフィールドは例示であるのみで、他の具現例では、本発明の範囲から逸脱することなく、異なるサイズに分割できることは当然である。本例示において、ＮＶＭｅ命令識別子４１０は、次のマッピング方式を用いて構成する。
ＮＶＭｅ  ＣＩＤ［１５：０］＝｛ＣＵ＿ＩＤ［３：０］、Ｌｏｃａｌ＿Ｔａｇ［１１：０］｝
【００４５】
命令処理部識別子（ＣＵ＿ＩＤ）は、入力されるＮＶＭｅ−ｏＦ命令を処理するブリッジ装置の命令処理部によって決定される。表１は、命令処理部識別子（ＣＵ＿ＩＤ）に対する例示的な符号化方式を示す。
【００４６】
【表１】
2019075104.tif 000003
【００４７】
ＮＶＭｅ命令識別子の１２ビットのローカルタグは、本来のＮＶＭｅ−ｏＦ命令に含まれたＮＶＭｅ−ｏＦ命令識別子にマッピングすることに用いられる。特殊命令部２３１以外の命令処理部に関する１２ビットのローカルタグは、次のように得られる。
Ｌｏｃａｌ＿Ｔａｇ［１１：０］＝ＬＵＴ  （ＮＶＭｅ−ｏＦ  ＣＩＤ［１５：０］）
ルックアップテーブル（ＬＵＴ）４０２は、１６ビットのＮＶＭｅ−ｏＦ命令識別子を１２ビットのローカルタグにマッピングする。ルックアップテーブル（ＬＵＴ）４０２は、命令分類器２１４によってメンテナンスされる動的エンティティーである。ホスト命令を受信すると、ルックアップテーブル（ＬＵＴ）４０２のエントリーが割り当てられる。エントリーの１２ビットのインデックスは、１２ビットのローカルタグ（Ｌｏｃａｌ  Ｔａｇ）である。本来の１６ビットの命令識別子は、対応するインデックスに保存される。命令が完了すると、ルックアップテーブル（ＬＵＴ）４０２のエントリーは割り当て解除される。
特殊命令部２３１に関する１２ビットのローカルタグは、次のように得られる。
Ｌｏｃａｌ＿Ｔａｇ［１１：０］＝ＬＵＴ  （ＮＳＣ  ＣＩＤ［１５：０］）
ここで、ＮＳＣ  ＣＩＤは、ストレージ隣接演算プロセッサが内部的に割り当てる命令識別子である。ＮＳＣ  ＣＩＤは、ストレージ隣接演算プロセッサによって出力された命令に含まれる１６ビットの命令識別子の値を示す。ローカルタグ（Ｌｏｃａｌ  Ｔａｇ）を判定するための前述の数式は、ホスト又はストレージ隣接演算プロセッサから受信した命令の命令識別子を１２ビットのローカルタグ（Ｌｏｃａｌ  Ｔａｇ）にマッピングすることに用いられる。
【００４８】
１２ビットのローカルタグが照会されると、ＮＶＭｅ命令識別子の残りの４ビットの命令処理部識別子は、バックエンドＳＳＤ２５０から受信したＮＶＭｅ完了エントリーが逆照会することを支援する。ＮＶＭｅ完了エントリーは、ブリッジ装置の処理部のうち、対応するＮＶＭｅ命令を生成した処理部とＮＶＭｅ命令識別子を関連付けることに用いられる。図２を参照すると、ＰＣＩｅ完了エントリーパーサー２１９は、ＰＡＰＰモジュール２１７を介してバックエンドＳＳＤ２５０から受信したＮＶＭｅ命令識別子から４ビットの命令処理部識別子を抽出し、該当完了エントリーの属する処理部がどれか判定する。受信したＮＶＭｅ完了エントリーが適切な命令処理部に伝達されると、ＰＣＩｅ完了エントリーパーサー２１９は再度逆照会を行って、１２ビットのローカルタグを本来のＮＶＭｅ−ｏＦ命令識別子にマッピングする。特殊命令部２３１の場合、このような逆照会は、前述のＮＶＭｅ−ｏＦ命令識別子の代わりに、ストレージ隣接演算命令識別子（ＮＳＣ−ＣＩＤ）を用いる。
【００４９】
このようなＮＶＭｅ−ｏＦ対ＮＶＭｅマッピング（又はＮＶＭｅ対ＮＶＭｅマッピング）を利用して、ＮＶＭｅ−ｏＦブリッジ装置２００は、バックエンドＳＳＤ２５０にＮＶＭｅ命令を出力する複数の命令処理部を支援する。例えば、ＮＶＭｅ−ｏＦブリッジ装置２００は、所定の提出キュー（ＳＱ）（ローカルタグの１２ビットの深さ）に対して、最大で４０９６（２１２）個の活性ＮＶＭｅ命令（即ち、キュー深さ）を支援する。特殊命令部２３１は、このような方法を用いて、ストレージ隣接演算プロセッサによる多様なＮＶＭｅ命令をホスト命令と干渉することなく、バックエンドＳＳＤ２５０に出力する。例えば、ストレージ隣接演算プロセッサは、ＮＶＭｅ読み取り命令を出力することによってバックエンドＳＳＤからデータチャンクを引き出し、引き出したデータを処理し、ＮＶＭｅ書き込み命令を出力することによってバックエンドＳＳＤに再度処理結果を保存する。異なる大きさの命令処理部識別子とＮＶＭｅ命令識別子のローカルタグの構成を使用し、このようなＮＶＭｅ命令識別子の配列は、異なる最大のキュー深さを提供する。
【００５０】
図５は、本発明の一実施形態による管理者提出キューと完了キューとの共有を示すブロック図である。バックエンドＳＳＤは、管理者提出キュー５３１と管理者完了キュー５３２とを含む管理者キューの対を本発明のブリッジ装置と共有する。管理者提出キュー５３１は、バックエンドＳＳＤに管理者命令を出力することに用いられる。遠隔ホスト５０１で実行されるアプリケーションは、バックエンドＳＳＤのデータストレージへのアクセスを必要とするデータ中心のアプリケーション（例：機械学習アプリケーション）である。ＮＶＭｅ−ｏＦブリッジ装置のＮＶＭｅ−ｏＦ対ＮＶＭｅ命令変換器５２１（例：図２におけるファブリック命令部２３２及び管理者命令部２３３）は、遠隔イニシエータから受信したＮＶＭｅ−ｏＦ管理者命令をＮＶＭｅ管理者命令に変換し、ＮＶＭｅ管理者命令を管理者提出キュー５３１（例：図２におけるＰＳＱモジュール２１６）に挿入する。また、ＮＶＭｅ−ｏＦブリッジ装置のストレージ隣接演算プロセッサ５１１は、管理者提出キュー５３１を介して、バックエンドＳＳＤに管理者命令を出力する。
【００５１】
ファブリック命令部、管理者命令部、書き込み命令部、及び読み取り命令部等のそれぞれのＮＶＭｅ−ｏＦ命令処理部は、固有の４ビットの命令処理部識別子（ＣＵ＿ＩＤ）を有する。従って、同一の管理者提出キュー５３１を介して、ストレージ隣接演算プロセッサ５１１の管理者命令のみならず、ＮＶＭｅ−ｏＦホストの管理者命令を出力することも可能である。ストレージ隣接演算プロセッサ５１１は、ホスト側から見える（Ｈｏｓｔ−ｖｉｓｉｂｌｅ）ユーザーデータのデータ完全性に影響を与えないか、又はバックエンドＳＳＤのデータ構造を制御しない管理者命令のみを出力すると仮定する。ストレージ隣接演算プロセッサ５１１は、ホストデータを読み取るか又は監視して、該プロセッサが有するデータを修正するのみである。一部の実施形態において、遠隔ホスト５０１及びストレージ隣接演算プロセッサ５１１は、データの同期化を通じて、バックエンドＳＳＤに保存されたデータを共有する。
【００５２】
図６は、本発明の一実施形態による遠隔ホスト及びストレージ隣接演算プロセッサ間の入／出力提出キューの共有を示すブロック図である。図５の管理者提出キュー５３１と異なり、多くの入／出力提出キューが存在する。入／出力提出キューは、読み取り及び書き込み等のデータ命令を出力することに用いられる。入／出力命令は、遠隔イニシエータ及びバックエンドＳＳＤにデータを移動させるか、又は遠隔イニシエータ及びバックエンドＳＳＤからデータを移動させる。特殊命令部２３１は、異なる命令処理部識別子（ＣＵ＿ＩＤ）の値を用いて、ホスト入／出力命令に対して用いているものと同一の入／出力提出キューにストレージ隣接演算プロセッサのための入／出力命令を挿入する。他の実施形態において、ストレージ隣接演算プロセッサ６１１から出力された入／出力命令を処理するために、ストレージ隣接演算プロセッサ専用の入／出力提出キューのセットを用いる。図６は、ストレージ隣接演算プロセッサ６１１と、遠隔イニシエータから出力された入／出力命令のために、２つの別の入／出力命令提出キュー及び完了キューを用いる例を示している。
【００５３】
何れの場合でも、ＰＣＩｅ完了エントリーパーサーは、命令処理部識別子（ＣＵ＿ＩＤ）を用いて、バックエンドＳＳＤから受信した完了エントリーをブリッジ装置の適切な命令処理部に伝送する。ストレージ隣接演算プロセッサ６１１は、ホストデータに修正を加えない入／出力命令を出力すると仮定する。主に、ストレージ隣接演算プロセッサ６１１は、ホスト６０１によって書き込まれたデータを読み取り、ローカル処理のために読み取りデータの処理と分析を行う。ストレージ隣接演算プロセッサ６１１によって生成された修正データ又は分析の結果は、ホスト６０１へのアクセスが可能又は不可能な別途のストレージ領域に書き込まれる。一実施形態において、ストレージ隣接演算プロセッサ６１１、及びホスト６０１で実行される遠隔イニシエータは、同一のデータとストレージ名称空間とを共有するために、高いレベルで同期化される。
【００５４】
図７は、本発明の一実施形態によるブリッジ装置内のローカルデータの移動を示すブロック図である。ブリッジ装置７００は、書き込みデータバッファ７５１と読み取りデータバッファ７５２と、を有する。一実施形態によると、ブリッジ装置７００のシステムメモリ（例：図３におけるシステムメモリ２１２）は、書き込みデータバッファ７５１と読み取りデータバッファ７５２と、を有する。
【００５５】
ストレージ隣接演算プロセッサ７１１は、バックグラウンドでＳＳＤデータをスキャンし分析する。ストレージ隣接演算プロセッサ７１１は、周期的にバックエンドＳＳＤ７５０からユーザーデータを引き出して分析する。ストレージ隣接演算プロセッサ７１１は、修正されたデータ及び／又はデータ処理の結果を再度バックエンドＳＳＤ７５０に保存する。このような動作は、バックエンドＳＳＤ７５０へのデータの移動やバックエンドＳＳＤ７５０からのデータの移動を必要とする。ストレージ隣接演算ＮＶＭｅ命令は、このようなデータ伝送の細部事項を指定する。
【００５６】
一実施形態において、ストレージ隣接演算プロセッサ７１１は、ＮＶＭｅ命令が書き込み命令なのかそれとも読み取り命令なのかを示すために、ストレージ隣接演算ＮＶＭｅ命令演算符号を用いる。ストレージ隣接演算ＮＶＭｅ命令は、書き込みデータバッファ７５１又は読み取りデータバッファ７５２の関連論理ブロックアドレス（ＬＢＡ）も示す。ストレージ隣接演算の書き込み命令において、データは、ブリッジ装置７００のシステムメモリからバックエンドＳＳＤ７５０に移動する。ストレージ隣接演算の読み取り命令において、データは、バックエンドＳＳＤ７５０からブリッジ装置７００のシステムメモリに移動する。ホスト命令のデータ伝送において、このような両方向のデータの移動が混ざることがないよう、書き込みデータバッファ７５１又は読み取りデータバッファ７５２内における別途のバッファアドレスのセットが用いられる。
【００５７】
ストレージ隣接演算プロセッサ７１１がバックエンドＳＳＤ７５０に保存されたデータを処理するために、ストレージ隣接演算ＮＶＭｅ命令を出力する場合、ストレージ隣接演算プロセッサ７１１は、まず、所望の大きさの読み取りデータバッファ７５２に空間を割り当てる。その後、ストレージ隣接演算プロセッサ７１１は、割り当てられた読み取りバッファ空間のポインターを用いて、ＮＶＭｅ読み取り命令を生成する。ストレージ隣接演算プロセッサ７１１は、バックエンドＳＳＤ７５０に保存されたデータを読み取るために、バックエンドＳＳＤ７５０内の適切なＮａｍｅｓｐａｃｅ．ＬＢＡアドレスを生成する（ｐｏｐｕｌａｔｅ）。その後、ストレージ隣接演算プロセッサ７１１は、構成されたストレージ隣接演算−ＮＶＭｅ−読み取り命令をブリッジ装置７００の適切な入／出力提出キューに挿入する。バックエンドＳＳＤ７５０は、ストレージ隣接演算−ＮＶＭｅ−読み取り命令をＰＣＩｅバスを介して引き出し、読み取りデータバッファ７５２内の割り当てられた読み取りバッファ空間のポインターを用いて、システムメモリに対して要請データのダイレクトメモリアクセス（ＤＭＡ）書き込み動作を行う。その後、バックエンドＳＳＤ７５０は、ストレージ隣接演算−ＮＶＭｅ−読み取り命令の完了エントリーをブリッジ装置７００に送信する。ブリッジ装置７００は、知能的にストレージ隣接演算−ＮＶＭｅ−読み取り完了エントリーをストレージ隣接演算プロセッサ７１１に伝達する。その際、ストレージ隣接演算プロセッサ７１１は、引き出されたデータを続けて処理又は分析する。
【００５８】
ストレージ隣接演算プロセッサ７１１は、引き出されたデータを修正する。ストレージ隣接演算プロセッサ７１１は、データ処理の結果として、新規データを生成する。ある時点において、ストレージ隣接演算プロセッサ７１１は、バックエンドＳＳＤ７５０に対して書き込み動作を行うことにより、このようなデータを維持する。ストレージ隣接演算プロセッサ７１１は、バックエンドＳＳＤ７５０への書き込みが必要なデータのアドレスを用いて、ストレージ隣接演算−ＮＶＭｅ−書き込み命令を構成する。その後、ストレージ隣接演算プロセッサ７１１は、バックエンドＳＳＤ７５０内のデータが書き込まれるのに好適なＮａｍｅｓｐａｃｅ．ＬＢＡストレージの位置を挿入する。その後、ストレージ隣接演算プロセッサ７１１は、新たに構成されたストレージ隣接演算−ＮＶＭｅ−書き込み命令をブリッジ装置７００の入／出力提出キューに挿入する。バックエンドＳＳＤ７５０は、ＰＣＩｅバスを介して、ストレージ隣接演算−ＮＶＭｅ−書き込み命令を引き出して実行する。バックエンドＳＳＤ７５０は、システムメモリからストレージ隣接演算−ＮＶＭｅ−書き込み命令に指定されたバックエンドＳＳＤアドレスにデータを書き込むＤＭＡ動作を行う。データのＤＭＡ動作が完了すると、バックエンドＳＳＤ７５０は、ストレージ隣接演算−ＮＶＭｅ−書き込み命令に対する完了エントリーを伝送する。ブリッジ装置７００は、知能的にストレージ隣接演算−ＮＶＭｅ−書き込み命令の完了エントリーをストレージ隣接演算プロセッサ７１１に伝達する。その際、ストレージ隣接演算プロセッサは、書き込みデータバッファ７５１の書き込みデータを破棄する。
【００５９】
一実施形態によると、ブリッジ装置は、ホストコンピュータで実行されるアプリケーションから第１命令セットを受信する第１インタフェースと、第１命令セットを変換し、第１命令セットに基づいて第２命令セットを生成する１つ以上の命令プロセッサと、データストレージ装置に第２命令セットを提供する第２インタフェースと、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させるコンピューティングプロセッサと、を有する。
【００６０】
データストレージ装置は、不揮発性メモリエクスプレス（ＮＶＭｅ）標準と互換可能なソリッドステートドライブである。
【００６１】
データストレージ装置は、ＮＶＭｅオーバーファブリック（ＮＶＭｅ−ｏＦ）標準と互換可能なソリッドステートドライブである。
【００６２】
第１インタフェースは、ファブリックネットワークを介したＮＶＭｅ−ｏＦインタフェースであり、データストレージ装置に対する第２インタフェースは、ＰＣＩｅインタフェースである。第１命令セットはＮＶＭｅ−ｏＦ命令を含み、第２命令セットはＮＶＭｅ命令を含む。
【００６３】
ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択される。
【００６４】
ブリッジ装置は、命令パーサーと、命令分類器と、をさらに含む。命令パーサーは、第１命令セットをパーシングし、パーシングした命令を生成し、命令分類器は、パーシングした命令を分類し、分類した命令を１つ以上の命令プロセッサに提供する。
【００６５】
１つ以上の命令プロセッサは、コンピューティングプロセッサによって出力された第２命令セットのサブ命令セットを処理する特殊命令部を有する。
【００６６】
アプリケーションは、機械学習アプリケーションである。
【００６７】
第２命令セットの各命令は、１つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって第１命令セットにマッピングされるローカルタグと、を含む、命令識別子を有する。
【００６８】
ブリッジ装置は、データストレージ装置に第２命令セットをキューイングするための提出キューと、データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、をさらに有する。
【００６９】
他の実施形態による方法は、第１インタフェースを介してホストコンピュータで実行されるアプリケーションから第１命令セットを受信する段階と、第１命令セットを変換し、第１命令セットに基づいて第２命令セットを生成する段階と、第２インタフェースを介してデータストレージ装置に第２命令セットを提供する段階と、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させる段階と、を有する。
【００７０】
データストレージ装置は、不揮発性メモリエクスプレス（ＮＶＭｅ）標準と互換可能なソリッドステートドライブである。
【００７１】
データストレージ装置は、ＮＶＭｅオーバーファブリック（ＮＶＭｅ−ｏＦ）標準と互換可能なソリッドステートドライブである。
【００７２】
第１インタフェースは、ファブリックネットワークを介したＮＶＭｅ−ｏＦインタフェースであり、データストレージ装置に対する第２インタフェースは、ＰＣＩｅインタフェースである。第１命令セットはＮＶＭｅ−ｏＦ命令を含み、第２命令セットはＮＶＭｅ命令を含む。
【００７３】
ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択される。
【００７４】
本実施例の方法は、第１命令セットをパーシングし、パーシングした命令を生成する段階と、パーシングした命令を分類し、分類した命令を１つ以上の命令プロセッサに提供する段階と、をさらに有する。
【００７５】
１つ以上の命令プロセッサは、コンピューティングプロセッサによって出力された第２命令セットのサブ命令セットを処理する特殊命令部を有する。
【００７６】
アプリケーションは、機械学習アプリケーションである。
【００７７】
第２命令セットの各命令は、１つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって第１命令セットにマッピングされるローカルタグと、を含む、命令識別子を有する。
【００７８】
本実施形態の方法は、データストレージ装置に第２命令セットをキューイングするための提出キューと、データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、をさらに有する。
【００７９】
上記実施形態を、ストレージ隣接演算を提供するためのブリッジ装置を具現する多様な実施形態を例示するために本明細書で説明した。本明細書に開示する実施形態からの多様な変形及び変更が本発明の技術分野に属する通常の技術者によって行われ得る。本発明の範囲に属する技術的思想は、請求範囲に記載する。
【符号の説明】
【００８０】
１１０、６０１  ホスト
１１１  アプリケーション
１１２  ＯＳ／ファイルシステム
１１３  ＮＶＭｅ−ｏＦドライバー
１５０  イーサネット
１６０  シャーシ
１６１  イーサネットスイッチ
１６２  ＢＭＣ
１６３  ＰＣＩｅスイッチ
１６４  管理者インターフェース
１６５  ミッドプレーン
１７０  ｅＳＳＤ
２００  ＮＶＭｅ−ｏＦブリッジ装置
２１１、５１１、６１１、７１１  ストレージ隣接演算プロセッサ
２１２  システムメモリ
２１３  命令パーサー
２１４  命令分類器
２１５  命令プロセッサ
２１６  ＰＳＱモジュール
２１７、７１７  ＰＡＰＰモジュール
２１８  ＮＶＭｅ−ｏＦ応答器
２１９  ＰＣＩｅ完了エントリーパーサー
２２０  ＰＣＱモジュール
２３１  特殊命令部
２３２  ファブリック命令部
２３３  管理者命令部
２３４  書き込み命令部
２３５  読み取り命令部
２５０、５５０、６５０、７５０  バックエンドＳＳＤ
３３２  ＩＢ  ＦＩＦＯ
３３３  ＯＢ  ＦＩＦＯ
３３４  ＮＶＭｅ命令バッファ
４０１  ＮＶＭｅ−ｏＦ命令識別子又はＮＳＣ命令識別子
４０２  ルックアップテーブル
４０３、４０５  ローカルタグ
４０４  命令処理部識別子
４１０  ＮＶＭｅ命令識別子
５０１、７０１  遠隔ホスト
５２１、６２１  ＮＶＭｅ−ｏＦ対ＮＶＭｅ命令変換器
５２２、６２２  ＮＶＭｅ対ＮＶＭｅ−ｏＦ完了エントリー変換器
５３１  管理者提出キュー
５３２  管理者完了キュー
６３１  入／出力提出キュー
６３２  ストレージ隣接演算入／出力提出キュー
６３３  ストレージ隣接演算入／出力完了キュー
６３４  入／出力完了キュー
７００  ブリッジ装置
７５１  書き込みデータバッファ
７５２  読み取りデータバッファ
７６１  書き込みデータバッファ
７６２  読み取りデータバッファ
【図１】
2019075104.tif 000004
【図２】
2019075104.tif 000005
【図３】
2019075104.tif 000006
【図４】
2019075104.tif 000007
【図５】
2019075104.tif 000008
【図６】
2019075104.tif 000009
【図７】
2019075104.tif 000010