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

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

▶ 三星電子株式会社の特許一覧

特許7141902ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法
<>
  • 特許-ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 図1
  • 特許-ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 図2
  • 特許-ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 図3
  • 特許-ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 図4
  • 特許-ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 図5
  • 特許-ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 図6
  • 特許-ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-14
(45)【発行日】2022-09-26
(54)【発明の名称】ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法
(51)【国際特許分類】
   G06F 13/36 20060101AFI20220915BHJP
   G06F 3/06 20060101ALI20220915BHJP
   G06F 3/08 20060101ALI20220915BHJP
   G06F 13/10 20060101ALI20220915BHJP
   G06F 13/12 20060101ALI20220915BHJP
   G06F 13/38 20060101ALI20220915BHJP
【FI】
G06F13/36 320A
G06F3/06 301F
G06F3/08 H
G06F13/10 340A
G06F13/12 340C
G06F13/36 310E
G06F13/38 350
【請求項の数】 20
(21)【出願番号】P 2018179913
(22)【出願日】2018-09-26
(65)【公開番号】P2019075104
(43)【公開日】2019-05-16
【審査請求日】2021-09-24
(31)【優先権主張番号】62/571061
(32)【優先日】2017-10-11
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/571064
(32)【優先日】2017-10-11
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】15/944682
(32)【優先日】2018-04-03
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】ウォーリー フレッド
(72)【発明者】
【氏名】カチャレ ラムダス
【審査官】打出 義尚
(56)【参考文献】
【文献】米国特許出願公開第2017/0286363(US,A1)
【文献】国際公開第2016/135875(WO,A1)
【文献】国際公開第2012/091798(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/36
G06F 3/06
G06F 3/08
G06F 13/10
G06F 13/12
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
ブリッジ装置であって、
ホストコンピュータで実行されるアプリケーションから第1命令セットを受信する第1インタフェースと、
前記第1命令セットを変換し、前記第1命令セットに基づいて第2命令セットを生成する1つ以上の命令プロセッサと、
データストレージ装置に前記第2命令セットを提供する第2インタフェースと、
前記アプリケーションから受信される前記第1命令セットの少なくとも1つの命令を処理する間、バックグラウンドモードで、前記データストレージ装置からデータを引き出し、前記データストレージ装置にデータを書き込むよう、前記第1命令セットと独立して前記ブリッジ装置によって生成される内部命令を発生させるコンピューティングプロセッサと、を有することを特徴とするブリッジ装置。
【請求項2】
前記データストレージ装置は、不揮発性メモリエクスプレス(NVMe)標準と互換可能なソリッドステートドライブであることを特徴とする請求項1に記載のブリッジ装置。
【請求項3】
前記データストレージ装置は、NVMeオーバーファブリック標準と互換可能なソリッドステートドライブであることを特徴とする請求項1に記載のブリッジ装置。
【請求項4】
前記第1インタフェースは、ファブリックネットワークを介したNVMe-oFインタフェースであり、前記第2インタフェースは、PCIeインタフェースであり、
前記第1命令セットはNVMe-oF命令を含み、前記第2命令セットはNVMe命令を含み、前記内部命令は前記コンピューティングプロセッサによって割り当てられた命令識別子を含むことを特徴とする請求項3に記載のブリッジ装置。
【請求項5】
前記ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択されることを特徴とする請求項4に記載のブリッジ装置。
【請求項6】
命令パーサーと命令分類器とをさらに含み、
前記命令パーサーは、前記第1命令セットをパーシングし、パーシングした命令を生成し、
前記命令分類器は、前記パーシングした命令を分類し、分類した命令を前記1つ以上の命令プロセッサに提供することを特徴とする請求項1に記載のブリッジ装置。
【請求項7】
前記1つ以上の命令プロセッサは、前記コンピューティングプロセッサによって発生された前記第2命令セットの命令のサブセットを処理する特殊命令部を有することを特徴とする請求項1に記載のブリッジ装置。
【請求項8】
前記アプリケーションは、機械学習アプリケーションであることを特徴とする請求項1に記載のブリッジ装置。
【請求項9】
前記第2命令セットの各命令は、前記1つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって前記第1命令セットにマッピングされるローカルタグと、を含む、命令識別子を有することを特徴とする請求項1に記載のブリッジ装置。
【請求項10】
前記データストレージ装置に前記第2命令セットをキューイングするための提出キューと、前記データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、をさらに有することを特徴とする請求項1に記載のブリッジ装置。
【請求項11】
第1インタフェースと、第2インタフェースと、を有するブリッジ装置を用いたストレージ隣接演算方法であって、
前記ブリッジ装置により、前記第1インタフェースを介してホストコンピュータで実行されるアプリケーションから第1命令セットを受信する段階と、
前記ブリッジ装置により、前記第1命令セットを変換し、前記第1命令セットに基づいて第2命令セットを生成する段階と、
前記ブリッジ装置により、前記第2インタフェースを介してデータストレージ装置に前記第2命令セットを提供する段階と、
前記ブリッジ装置により、前記アプリケーションから受信される前記第1命令セットの少なくとも1つの命令を処理する間、バックグラウンドモードで、前記データストレージ装置からデータを引き出し、前記データストレージ装置にデータを書き込むよう、前記第1命令セットと独立して前記ブリッジ装置によって生成される内部命令を発生させる段階と、を有することを特徴とするブリッジ装置を用いたストレージ隣接演算方法。
【請求項12】
前記データストレージ装置は、不揮発性メモリエクスプレス(NVMe)標準と互換可能なソリッドステートドライブであることを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項13】
前記データストレージ装置は、NVMeオーバーファブリック標準と互換可能なソリッドステートドライブであることを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項14】
前記第1インタフェースは、ファブリックネットワークを介したNVMe-oFインタフェースであり、前記第2インタフェースは、PCIeインタフェースであり、
前記第1命令セットはNVMe-oF命令を含み、前記第2命令セットはNVMe命令を含み、前記内部命令はコンピューティングプロセッサによって割り当てられた命令識別子を含むことを特徴とする請求項13に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項15】
前記ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択されることを特徴とする請求項14に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項16】
前記第1命令セットをパーシングし、パーシングした命令を生成する段階と、
前記パーシングした命令を分類し、分類した命令を1つ以上の命令プロセッサに提供する段階と、をさらに有することを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項17】
前記1つ以上の命令プロセッサは、コンピューティングプロセッサによって発生された前記第2命令セットの命令のサブセットを処理する特殊命令部を有することを特徴とする請求項16に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項18】
前記アプリケーションは、機械学習アプリケーションであることを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項19】
前記第2命令セットの各命令は、前記1つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって前記第1命令セットにマッピングされるローカルタグと、を含む、命令識別子を有することを特徴とする請求項16に記載のブリッジ装置を用いたストレージ隣接演算方法。
【請求項20】
前記データストレージ装置に前記第2命令セットをキューイングするための提出キューと、前記データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、を提供する段階をさらに有することを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データストレージシステムに係り、より詳細には、ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法に関する。
【背景技術】
【0002】
ソリッドステートドライブ(Solid State Drive:SSD)は、急速にハードディスクドライブ(Hard Disk Drive:HDD)等の従来のストレージ装置に取って代わってきており、最近のデータセンターインフラの主なストレージ要素として急浮上している。SSDは、低遅延性、高いデータ読み取り/書き込み処理量、及び高信頼性を有するユーザーデータの永久ストレージを提供する。不揮発性メモリエクスプレスオーバーファブリック(Non-volatile Memory express over fabrics:NVMe-oF)は、イーサネット(登録商標)(Ethernet(登録商標))、光チャンネル(Fibre Channel)、インフィニバンド(Infiniband)等のファブリックネットワーク(Fabric Network)を介して、数百から数千個のSSDを連結させる新技術である。
【0003】
NVMe-oFプロトコルは、構築されたファブリックネットワークを介して、数多くのNVMe SSDを遠隔ホストに連結させる遠隔直結ストレージ(remote Direct-Attached Storage:rDAS)を可能にする。また、NVMe-oFプロトコルは、遠隔ダイレクトメモリアクセス(Remote Direct Memory Access:RDMA)を支援し、ネットワークを介して、NVMe命令、データ、及び応答を伝達する高信頼性の伝送サービスを提供する。RDMAサービスを提供する伝送プロトコルの一例として、iWARP、RoCE v1、及びRoCE v2が挙げられる。
【0004】
分離されたデータストレージ装置(Disaggregated Data Storage System)(例:NVMe-oF-互換SSD、本明細書において、NVMe-oF SSD又はeSSDとも簡単に指称する)を用いるデータストレージシステムは、ホストコンピュータで実行されるアプリケーションに大きなストレージ容量を提供できる。アプリケーションは、分離されたデータストレージ装置から大量のデータ(ビッグデータ)を収集して分析できる。
【0005】
ビッグデータの処理規模は非常に大きいため、有意義なビッグデータマイニング(Mining)を行うためのインフラには、膨大な費用を投入しなければならず、大量のコンピューティング資源、大容量のシステムメモリ、及び高帯域幅ネットワークのみならず、ビッグデータを保存するための大容量の高性能データストレージ装置が必要となる。従って、ホストコンピュータからデータストレージ装置にデータ処理マイニングタスクの一部をオフロード(Offload)し、データストレージ装置からホストコンピュータへのデータの移動を最小化することが好ましい。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、上記従来技術に鑑みてなされたものであって、本発明の目的は、ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法を提供することにある。
【課題を解決するための手段】
【0007】
本発明の一実施形態によるブリッジ装置は、ホストコンピュータで実行されるアプリケーションから第1命令セットを受信する第1インタフェースと、前記第1命令セットを変換し、前記第1命令セットに基づいて第2命令セットを生成する1つ以上の命令プロセッサと、データストレージ装置に前記第2命令セットを提供する第2インタフェースと、前記アプリケーションから受信される前記第1命令セットの少なくとも1つの命令を処理する間、バックグラウンドモードで、前記データストレージ装置からデータを引き出し、前記データストレージ装置にデータを書き込むよう、前記第1命令セットと独立して前記ブリッジ装置によって生成される内部命令を発生させるコンピューティングプロセッサと、を有することを特徴とする
【0008】
本発明の他の実施形態による方法は、第1インタフェースと、第2インタフェースと、を有するブリッジ装置を用いたストレージ隣接演算方法であって、前記ブリッジ装置により、前記第1インタフェースを介してホストコンピュータで実行されるアプリケーションから第1命令セットを受信する段階と、前記ブリッジ装置により、前記第1命令セットを変換し、前記第1命令セットに基づいて第2命令セットを生成する段階と、前記ブリッジ装置により、前記第2インタフェースを介してデータストレージ装置に前記第2命令セットを提供する段階と、前記ブリッジ装置により、前記アプリケーションから受信される前記第1命令セットの少なくとも1つの命令を処理する間、バックグラウンドモードで、前記データストレージ装置からデータを引き出し、前記データストレージ装置にデータを書き込むよう、前記第1命令セットと独立して前記ブリッジ装置によって生成される内部命令を発生させる段階と、を有することを特徴とする。
【0009】
具現及びイベントの組み合わせの多様な新規細部事項を含む前述の好ましい特徴やその他の好ましい特徴は、添付図面を参照してより詳細に説明し、請求範囲で提示する。本明細書で説明する特定のシステム及び方法は、例示として示し、これに限定されない。本明細書で説明する原理及び特徴は、本発明の範囲から逸脱することなく、数多くの多様な実施形態から採択できるということが本発明の技術分野に属する通常の技術者にとって当然である。
【発明の効果】
【0010】
本発明の実施形態によるブリッジ装置を用いたストレージ隣接演算方法によれば、ホストコンピュータからストレージ装置にデータ処理及びマイニングタスクをオフロードすることにより、分離されたデータストレージシステムにおいて、ストレージ装置からホストコンピュータへのデータの移動を最小化できる。
【図面の簡単な説明】
【0011】
図1】本発明の一実施形態によるデータストレージシステムの例示的なブロック図である。
図2】本発明の一実施形態によるNVMe-oFブリッジ装置の例示的なブロック図である。
図3】本発明の一実施形態による特殊命令部の例示的なブロック図である。
図4】本発明の一実施形態による例示的な命令識別子の変換方法を示す。
図5】本発明の一実施形態による管理者提出キューと完了キューとの共有を示すブロック図である。
図6】本発明の一実施形態による遠隔ホスト及びストレージ隣接演算プロセッサ間の入/出力提出キューの共有を示すブロック図である。
図7】本発明の一実施形態によるブリッジ装置内のローカルデータの移動を示すブロック図である。
【発明を実施するための形態】
【0012】
本明細書の一部として含まれた添付図面は、現時点における好ましい実施形態を示し、前述の全般的な説明や以下の好ましい実施形態に関する詳細な説明と共に、本明細書に記載される原理を説明し教示する。
【0013】
図面は、必ずしも一定の割合で示しているわけではなく、図面全般に亘って同様の構造又は機能部の構成要素は、説明のために同一の参照番号で示している。また、図面は、単に本明細書に説明している多様な実施形態の説明を容易にするためのものであって、本明細書に開示する教示の全ての様相を示すものではなく、請求項の範囲を制限するものでもない。
【0014】
本明細書に開示するそれぞれの特徴や教示は、ストレージ隣接演算を提供するブリッジ装置(Bridge Device)を提供するために、個別にまたは他の特徴や教示と共に利用できる。その他の多くの特徴や教示を個別にまたは結合して利用する代表的な例示を添付図面を参照してより詳細に説明する。このような詳細な説明は、本教示の様相を実施するための細部事項を本発明の技術分野に属する通常の技術者に教示するためのものであり、請求項の範囲を制限するものではない。従って、詳細な説明に開示する特徴の組み合わせは、最も広い意味の教示を実施するにあたって必須ではなく、代わりに、本教示の特に代表的な例示を説明するために教示するものである。
【0015】
以下の説明では、単に説明する目的で特定の用語を記載しており、本発明の完全な理解を助ける。しかし、本発明の技術分野に属する通常の技術者が本発明の教示を実施するために、このような特定の細部事項を必要としないことは明らかである。
【0016】
本明細書の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号の形式で提供する。このようなアルゴリズム形式の説明や表現は、データ処理の技術分野における通常の技術者がその研究内容を他の通常の技術者に効果的に伝達するために用いる。アルゴリズムは、一般に、目標とする結果を導く一貫した一連の段階として見なされる。段階は、物理量を物理的に操作することを必要とする。通常、必須ではないが、このような物理量は、保存、伝送、結合、比較、及びその他の操作可能な電気又は磁気信号の形態を有する。主に共通して用いるという理由から、このような信号がビット、値、要素、記号、文字、用語、数字等と指称することが時には便利であるということは既に知られている。
【0017】
一方、このような用語やこれと類似する用語は何れも、適切な物理量と関連しており、単に便宜のために、このような物理量に名付けたものであることに留意すべきである。以下の説明で明らかに別途具体的に言及しない限り、明細書全般において、「処理」、「演算」、「計算」、「判定」、「表示」等の用語を利用する説明は、コンピュータシステムのレジスター及びメモリ内の(電子的)物理量として示したデータを、コンピュータシステムのメモリ/レジスター又は他の情報保存/伝送/表示装置内の物理量として同様に示した他のデータに操作及び変換する、コンピュータシステム又はこれと類似する電子コンピューティング装置の動作及びプロセスを言及するものである。
【0018】
また、代表的な例示における多様な特徴、及び従属項は、本教示のさらなる有用な実施形態を提供するために、具体的且つ明示的に挙げていない方法によっても結合する。また、請求する技術的思想を限定するための目的はもちろん、本来の開示の目的のために、全ての値の範囲又はエンティティー群の表示は、あり得る全ての中間値又は中間エンティティーを開示するという点にも特に留意すべきである。なお、図面に示す構成要素の大きさ及び形態は、本教示がどのように実施されるかに関して理解を助けるために構成したものであり、例示として示す大きさ及び形態に限定されるものではない。
【0019】
本発明は、分離されたデータストレージシステムにおいて、ストレージ装置からホストコンピュータへのデータの移動を最小化するために、ホストコンピュータからストレージ装置にデータ処理及びマイニングタスクをオフロードするシステム及び方法について説明する。本発明の一実施形態によると、本発明のシステム及び方法は、ストレージ装置に隣接して又はストレージ装置内でデータを処理できるようにし、これは、それぞれストレージ隣接演算(Near-Storage Compute:NSC)及びストレージ内部促進(In-Storage Acceleration:ISA)と指称する。本システム及び方法は、NVMe-oF標準を用いる分離されたストレージ装置に好適である。また、本発明のシステム及び方法は、直結NVMe対NVMe(Direct Attached NVMe-toNVMe)ブリッジ装置において用いることができる。ホストコンピュータは、NVMe-oF SSDに一部のデータマイニングタスクをオフロードし、NVMe-oFネットワークを介したホストコンピュータとNVMe-oF SSD間のデータの移動を減らし、これにより、エネルギー及びネットワークのインフラコストを削減できる。
【0020】
図1は、本発明の一実施形態によるデータストレージシステムの例示的なブロック図である。データストレージシステム100は、ホスト110と、1つ以上のNVMe-oF-互換イーサネットSSD(eSSD)を含むシャーシ(Chassis)160(「eSSDシャーシ」とも指称する)と、を有する。例えば、シャーシ160は、24個又は48個のeSSDを有する。シャーシ160内のeSSDは、それぞれeSSD170a乃至170n(まとめてeSSD170と指称する)として表示する。ホスト110は、アプリケーション111と、オペレーティングシステム(OS)とファイルシステム(FS)112と、NVMe-oFドライバー113と、を有する。ホスト110のイニシエータ(Initiator)(例:アプリケーション111)は、NVMe-oFドライバー113を用いてイーサネット150を介してeSSD170とNVMe-oFとの連結を達成可能である。シャーシ160は、イーサネットスイッチ161と、ベースボード管理コントローラ(Baseboard Management Controller:BMC)162と、PCIe(Peripheral Component Interconnect express)スイッチ163と、を有する。イーサネットスイッチ161は、ミッドプレーン(Midplane)165を介してeSSD170にイーサネット連結を提供し、PCIeスイッチ163は、ミッドプレーン165を介してeSSD170に管理者インタフェース164を提供する。BMC162は、システム管理者による所定の命令(語)に従って、eSSD170をプログラミングする。
【0021】
イーサネットスイッチ161は、ホスト110とeSSD170間のネットワーク連結性を提供する。イーサネットスイッチ161は、1つ以上のホストに接続するための大容量(例:100Gbps)のアップリンクを有する。イーサネットスイッチ161は、eSSD170に接続するための低容量(例:25Gbps)の多重ダウンリンクも有する。例えば、イーサネットスイッチ161は、12個の100Gbpsのアップリンクと、24個又は48個の25Gbpsのダウンリンクと、を有する。イーサネットスイッチ161は、BMC162に対する専用の構成/管理ポートを有する。
【0022】
BMC162は、イーサネットスイッチ161と、PCIeスイッチ163と、eSSD170とを含むシャーシ160の内部の構成要素を管理する。BMC162は、PCIe及び/又はシステム管理のためのシステム管理バス(System Management Bus:SMBus)インタフェースを支援する。BMC162は、eSSD170を設定し、イーサネットスイッチ161をプログラミングする。
【0023】
サーバベースのオールフラッシュアレイ(All-Flash Array:AFA)と同様に、eSSD170は、複数のeSSD170と、外部のホストとeSSDとを連結させるネットワークスイッチ(即ち、イーサネットスイッチ161)と、これらを管理するBMC162と、を含むサーバのない構造物(即ち、シャーシ160)に共に収容される。BMC162は、eSSD装置に対するブート(boot)及び制御経路を処理する。完全なx86CPUと異なり、BMC162は、CPUが処理する作業を全て行うのではなく、最小限の構造管理機能を行う。BMC162は、システム管理バス又はPCIeバスを介して、連結性、状態、温度、ログ、及びエラーに関して、連結されたeSSD170及び関連ハードウェアの状態を持続的に点検する。
【0024】
eSSD170は、大容量の高性能なデータストレージソリューションを提供する。NVMe-oFプロトコルは、数百から数千個の分離されたeSSD170がホストコンピュータ110で実行されるアプリケーション111に遠隔直結(rDAS)方式で接続することを可能とする。本発明のシステム及び方法は、分離されたeSSDに収集されて保存された大量のデータの処理や移動を容易にする。従来のホストコンピュータを用いる場合、このようなデータの処理は非常にコストがかかる。
【0025】
ホスト110で実行されるアプリケーション111は、eSSD170のように分離されたデータストレージ装置に保存されたデータをネットワーク(例:イーサネット150)を介して引き出して(fetch)処理し、データ処理の結果を再度データストレージ装置に保存することにより、機械学習(Machine Learning:ML)等のプロセスを行う。データの引き出し、処理、及び保存の過程を含むこのようなプロセスは、ホストコンピュータのエネルギー、演算能力、ネットワーク、及びデータストレージ資源を過度に消費する極めて非効率的な過程である。また、このようなプロセスは、ホストコンピュータの演算及びメモリ資源において高コストをもたらす。
【0026】
本発明のシステム及び方法は、ストレージ隣接演算又はストレージ内部促進を用いて、バックグラウンドデータの処理を可能にする。ストレージ隣接演算及びストレージ内部促進は、大量のデータがバックグラウンドで効率的な方法により処理できるようにする。一実施形態によると、処理すべきデータが保存されたデータストレージ装置に連結したブリッジ装置は、連結したデータストレージ装置に隣接するバックグラウンドデータ処理を容易にする。一実施形態において、ブリッジ装置は、データストレージ装置に統合される。他の実施形態において、ブリッジ装置は、データストレージ装置に連結した別途の装置である。「隣接」という用語は、本発明の範囲を逸脱することなく、データ処理が、別途の装置だけでなく、データストレージ装置自体でも行われることを意味すると理解すべきである。一部の実施形態において、「ストレージ隣接」及び「ストレージ内部」という用語は、本明細書において相互交換して用いることができる。
【0027】
ブリッジ装置は、データストレージ装置に保存されたデータのストレージ隣接演算をアプリケーションに感知されない方式で具現する1つ以上のハードウェア構成要素を含む。ブリッジ装置は、NVMe-oF対NVMeブリッジ装置及びNVMe対NVMeブリッジ装置のうちの何れか1つである。NVMe-oF標準と互換可能なNVMe-oF対NVMeブリッジ装置は、ファブリックネットワークを介してNVMe-oF命令を受信し、バックエンド(Backend)データストレージ装置にPCIeインタフェースを提供する。NVMe標準と互換可能なNVMe対NVMeブリッジ装置は、PCIeバスを介してNVMe命令を受信し、データストレージ装置に隣接してデータ処理を行う。以下では、説明の便宜のために、データストレージ装置の例としてeSSDについて説明する。一方、本発明の範囲を逸脱することなく、他の種類のデータストレージ装置及び分離されたデータストレージシステムも使用可能であることは当然である。以下の例示において、eSSDは、ブリッジ装置とバックエンドSSDの両方を含む装置として説明するが、他の実施形態では、データストレージ装置(バックエンドSSD)が別途のブリッジ装置と連結してeSSDを構成するか、又はeSSDがブリッジ装置自体やブリッジ装置の隣接-演算機能を行う装置を指称する。
【0028】
本発明のブリッジ装置は、SSDに対するホストコンピュータの一般的なデータアクセス動作に影響を与えることなく、バックエンドSSDに保存されたデータを引き出し、処理及び修正し、処理済みのデータを再度バックエンドSSDに保存する。一実施形態において、ブリッジ装置は、一対の入/出力(I/O)提出キュー(Submission Queue)及び完了キュー(Completion Queue) をメンテナンスし、一対の入/出力キュー(I/O Queue)を用いて、バックグラウンドモードでバックエンドSSDへのデータアクセスを行うシステムメモリを有する。ブリッジ装置は、ホストコンピュータから出力した命令と、ブリッジ装置のストレージ隣接プロセッサから発生した内部命令との両方を処理するために、入/出力提出キュー及び完了キューを共有する。また、ブリッジ装置のシステムメモリは、ホストコンピュータとストレージ隣接演算プロセッサ(NSC Processor)間で共有可能な管理者提出キューと完了キューとを含む一対の管理者キュー(Admin Queue)をメンテナンスする。
【0029】
一実施形態によると、ブリッジ装置は、ストレージ隣接演算プロセッサがバックエンドSSDに保存されたデータへアクセスすることを許容するNVMe-oF対NVMe又はNVMe対NVMeプロトコル連結(Bridging)を用いる。機械学習アルゴリズム等の多様なプロセスは、ホストコンピュータにかかわらず、バックグラウンドモードでデータ処理を行うために、ホストコンピュータ又はブリッジ装置で実行する。機械学習アルゴリズムを実行するホストコンピュータは、ブリッジ装置の外部に配置可能であるが、ブリッジ装置を介して間接的にeSSDに保存されたデータにアクセスできる。一部の実施形態において、ブリッジ装置及び/又はホストコンピュータは、eSSDと同一のシャーシの異なるスロット(例:U.2スロット)に配置されるか、物理的にシャーシの外部に配置される。図面を参照して説明する以下の例示は、主にNVMe-oFブリッジ装置(「NVMe-oF対NVMeブリッジ装置」とも指称する)に関するものであるが、NVMe対NVMeブリッジ装置にも同様に適用可能である。
【0030】
ブリッジ装置は、バックエンドSSDに伝送されるホスト命令(例:NVMe-oF命令)を受信するためのインタフェースを提供する。ブリッジ装置は、受信したホスト命令識別子(Command Identifier:CID)をローカルタグ(Local Tag)にマッピングし、処理すべきデータを保存するバックエンドSSDに対する新たな命令識別子を含むNVMe命令を生成する。バックエンドSSDは、NVMe命令に対応する完了エントリー(Completion Entry:CE)を生成してブリッジ装置に送信する。その後、ブリッジ装置は、完了エントリーをパーシングし、完了エントリーをブリッジ装置のストレージ隣接演算プロセッサに知能的に伝達する。
【0031】
ホストの開始命令を中継(Bridging)するのとは別に、ブリッジ装置のストレージ隣接演算プロセッサは、ホストコンピュータにかかわらず、バックエンドSSDに対するNVMe命令を発生させる。ブリッジ装置は、共有の入/出力キュー及び管理者キューを用いて、ホストコンピュータとストレージ隣接演算プロセッサの両方の入/出力動作を互いに干渉することなく同時に且つ能動的に処理する。ホスト命令を中継する機能を維持しつつ、バックエンドSSDに保存されたデータにアクセスするストレージ隣接演算プロセッサの機能は、機械学習アプリケーションをストレージ隣接演算装置(即ち、ブリッジ装置)で実行するのに好適である。機械学習アプリケーションにおいて、ストレージ隣接演算プロセッサは、エネルギー、資源、及びコストの側面から効率的なデータ処理を提供する。
【0032】
NVMe-oFブリッジ装置は、一方では、遠隔イニシエータ(例:ホストコンピュータで実行される機械学習アプリケーション)にNVMe-oFインタフェースを提供し、他方では、バックエンドSSDに標準PCIeベースのNVMeインタフェースを提供する。遠隔イニシエータは、NVMe-oFインタフェースを介して、イーサネットを経由してNVMe-oFブリッジ装置に連結する。NVMe-oFブリッジ装置は、バックエンドSSDとの連結のために、NVMe-oFプロトコルをNVMeプロトコルに変換する。
【0033】
反面、NVMeブリッジ装置は、遠隔イニシエータ及びバックエンドSSDに標準PCIeインタフェースを提供する。遠隔イニシエータは、PCIeバスを介してNVMeブリッジ装置に連結する。NVMeブリッジ装置は、バックエンドSSDに、NVMe命令がホストコンピュータではなく、NVMeブリッジ装置から出力されたかのように見えるように、NVMeホスト命令を異なる命令識別子が含まれた他のNVMe命令に変換できる。
【0034】
一実施形態によると、ブリッジ装置のNVMe-oF対NVMe又はNVMe対NVMeの連結機能は、フィールド-プログラマブルゲートアレイ(Field-Programmable Gate Array:FPGA)又は注文型集積回路(Application-Specific Integrated Chip:ASIC)で具現する。代案として、連結機能は、ファームウェア又はソフトウェアプログラムにより具現する。
【0035】
図2は、本発明の一実施形態によるNVMe-oFブリッジ装置の例示的なブロック図である。NVMe-oFブリッジ装置200は、ストレージ隣接演算プロセッサ211と、システムメモリ212と、命令パーサー213と、命令分類器214と、命令プロセッサ215と、PCIe側命令提出キュー(以下、「PSQ」)モジュール216と、PCIeアプリケーション(以下、「PAPP」)/ルートコンプレックス(Root Complex)モジュール217と、NVMe-oF応答器218と、PCIe完了エントリーパーサー219と、PCIe側命令完了キュー(以下、「PCQ」)モジュール220と、を有する。NVMe-oFブリッジ装置200は、PCIeバスを介してバックエンドSSD250に連結される。ホストコンピュータで実行される遠隔イニシエータは、ファブリックネットワーク(本例示ではイーサネット)を介して、NVMe-oF命令をバックエンドSSD250に送信する。
【0036】
NVMe-oFブリッジ装置200の命令パーサー213は、バックエンドSSD250に伝送されるNVMe-oF命令をインターセプトしてパーシングし、パーシングしたNVMe-oF命令を命令分類器214に送信する。例えば、命令パーサー213は、命令演算符号(Opcode:OPC)、命令識別子(CID)、名称空間識別子(Namespace Identifier:NSID)、論理ブロックの個数(Number of Logical Blocks:NLB)、及び開始論理ブロックアドレス(Start Logical Block Address:SLBA)を含むが、これに限定されない多様な命令を抽出してパーシングする。命令分類器214は、パーシングしたNVMe-oF命令を異なるグループに分類し、分類したNVMe-oF命令を命令プロセッサ215に送信する。例えば、命令分類器214は、管理者命令、ファブリック命令、読み取り命令、書き込み命令、及び特殊命令を分類する。NVMe-oF命令のうちの異なる命令又はグループは、命令プロセッサ215の専用命令処理部を用いて処理する。例えば、命令プロセッサ215は、特殊命令部(Special Command Unit:SCU)231と、ファブリック命令部(Fabrics Command Unit: FCU)232と、管理者命令部(Admin Command Unit:ACU)233と、書き込み命令部(Write Command Unit:WCU)234と、読み取り命令部(Read Command Unit:RCU)235と、を有する。
【0037】
このような各命令処理部231乃至235は、NVMe-oF命令をNVMe命令に変換してPSQモジュール216に送る。一実施形態によると、PSQモジュール216は、命令提出キューを具現し、活性(Active)提出キューに関するヘッド及びテイルポインタをメンテナンスする。PSQモジュール216は、活性提出キューを感知して、提出キューが満たされているか、又は空いている状態であることを示す条件フラグを生成する。NVMe命令が提出キューに挿入される場合、PSQモジュール216は、ドアベル(Doorbell)イベント(提出キュー-ドアベル)を生成して、PAPPモジュール217を介してバックエンドSSD250に送信する。PAPPモジュール217は、PCIeバスを介してドアベルイベントを送信するよう、バックエンドSSD250に対するPCIe伝送を具現する。PAPPモジュール217は、NVMe-oFブリッジ装置200によって求められる設定の読み取り(Config Read)、設定の書き込み(Config Write)、メモリの書き込み(Memory Write)、及びメモリの読み取り(Memory Read)を含む標準PCIeトランザクション命令を支援する。また、PAPPモジュール217は、NVMe-oFブリッジ装置200のPCIeエンドポイントによって求められるPCIeメモリ読み取り及びメモリ書き込みトランザクションを支援する。言い換えれば、PAPPモジュール217は、NVMe-oFブリッジ装置200のPCIeルートコンプレックス機能を具現及び支援して、NVMe-oFブリッジ装置200をPCIeルートコンプレックス装置とする。
【0038】
PCQモジュール220は、バックエンドSSD250に関する命令完了キューを具現する。バックエンドSSD250は、処理する各々のNVMe命令に対する命令完了エントリーを書き込む。一般に、命令提出キューと命令完了キューは、互いに一対一でマッピングされる。PCIe完了エントリーパーサー219は、PCQモジュール220から受信した完了エントリーをパーシングし解釈する。PCIe完了エントリーパーサー219は、パーシングした完了エントリーを、対応するNVMe命令を生成した適切な各命令処理部231乃至235に伝達する。適切な各命令処理部231乃至235は、PCIe完了エントリーパーサー219から受信したPCIe完了エントリー(又はNVMe完了エントリー)に対応するNVMe-oF完了エントリーを生成し、NVMe-oFインタフェース(例:イーサネット)を介して、遠隔イニシエータに再度NVMe-oF完了エントリーを出力するNVMe-oF応答器218にNVMe-oF完了エントリーを伝達する。NVMe-oF完了エントリーは、読み取りデータ又は書き込みデータが遠隔イニシエータに伝送された後に伝達される。NVMe-oF命令中継の一部として、各命令処理部231乃至235は、バックエンドSSD250と遠隔イニシエータとの間のデータ伝送を容易にする。
【0039】
バックエンドSSD250は、ドアベルイベントに応答して、PSQモジュール216から受信したNVMe命令を引き出して実行する。命令実行の一部として、バックエンドSSD250はデータ伝送を行う。このようなデータは、NVMe-oFブリッジ装置200で利用可能なシステムメモリ212又はオンチップ(On-chip)若しくはオフチップ(Off-chip)メモリに伝送されるか、又はこれから伝送される。
【0040】
図3は、本発明の一実施形態による特殊命令部231の例示的なブロック図である。特殊命令部231は、バックエンドSSD250に特殊命令を出力するように、ストレージ隣接演算プロセッサ211とのインタフェースを具現する。ストレージ隣接プロセッサ211は、このようなインタフェースを用いてバックグラウンドでバックエンドSSD250からデータを引き出すか、バックエンドSSD250にデータ又は処理結果を書き込む。
【0041】
ファブリック命令部232は、NVMe-oFプロトコルに対する命令のファブリックタイプを処理する。例えば、ファブリック命令には、Connect、Property Get、Property Set等が含まれるが、これに限定されない。管理者命令部233は、管理者命令を処理する。例えば、管理者命令には、Identify、Get Log Page等を含むが、これに限定されない。書き込み命令部234は、書き込み命令を処理する。
【0042】
図3を参照すると、特殊命令部231は、インバウンド先入れ先出し(Inbound First Input First Output、以下「IBFIFO」)332と、アウトバウンド(Outbound:OB)先入れ先出し(以下「OBFIFO」)333と、NVMe命令バッファ334と、を有する。IBFIFO332及びOBFIFO333は、バックエンドSSD250に特殊命令を出力するために、ストレージ隣接演算プロセッサ211によって用いられる構造である。ストレージ隣接演算プロセッサ211は、NVMe命令を生成してメッセージにこれを挿入し、OBFIFO333に該当メッセージを書き込む。特殊命令部231は、メッセージを読み取り、NVMe命令をバックエンドSSD250に送信する。バックエンドSSD250が完了エントリーとして応答すると、特殊命令部231は、完了エントリーをメッセージに挿入し、該当メッセージをIBFIFO332に書き込む。ストレージ隣接演算プロセッサ211は、更なる演算のためにIBFIFO332から完了エントリーを読み取る。
【0043】
図4は、本発明の一実施形態による例示的な命令識別子の変換方法を示す。ブリッジ装置は、16ビットの命令識別子(CID)401を含む入力命令(NVMe-oF又はNVMe命令の何れか1つ)を受信する。16ビットの命令識別子及び提出キューの番号は、活性命令(Active Command)を固有に識別する。所定の命令に対する完了エントリは、逆照会(Reverse Look-up)を通じて完了エントリーが対応するNVMe命令と正確に関連付けられるよう、同一の16ビットの命令識別子を含む。これに関しては以下で詳細に説明する。
【0044】
NVMe-oFブリッジ装置の場合、NVMe-oFブリッジ装置は、NVMe-oF命令を受信し、NVMe-oF命令に対するコンテクストを生成し、ローカル命令タグ(「ローカルタグ」とも指称する)を記録する。一実施形態において、NVMe-oFブリッジ装置は、ルックアップテーブル(Lookup Table:LUT)402を照会し、受信した16ビットの命令識別子を12ビットのローカルタグ(Local_Tag)403にマッピングする。ルックアップテーブル402が全ていっぱいの場合、活性命令の個数をルックアップテーブル402の容量(2^12)に制限して、入力命令の実行を一時停止する。また、12ビットのローカルタグは、バックエンドSSDに出力されるNVMe命令の16ビットのNVMe命令識別子(NVMe CID)410の一部として用いられる。変換されたNVMe命令は、新たに構成された16ビットのNVMe命令識別子410を含む。一実施形態によると、NVMe命令識別子410は、2つのフィールド、即ち、4ビットの命令処理部識別子(CU_ID)404と、12ビットのローカルタグ(Local_Tag)405と、を有する。12ビットのローカルタグ405及び4ビットの命令処理部識別子404に分割されたフィールドは例示であるのみで、他の具現例では、本発明の範囲から逸脱することなく、異なるサイズに分割できることは当然である。本例示において、NVMe命令識別子410は、次のマッピング方式を用いて構成する。

NVMe CID[15:0]={CU_ID[3:0]、Local_Tag[11:0]}
【0045】
命令処理部識別子(CU_ID)は、入力されるNVMe-oF命令を処理するブリッジ装置の命令処理部によって決定される。表1は、命令処理部識別子(CU_ID)に対する例示的な符号化方式を示す。
【0046】
【表1】
【0047】
NVMe命令識別子の12ビットのローカルタグは、本来のNVMe-oF命令に含まれたNVMe-oF命令識別子にマッピングすることに用いられる。特殊命令部231以外の命令処理部に関する12ビットのローカルタグは、次のように得られる。

Local_Tag[11:0]=LUT (NVMe-oF CID[15:0])

ルックアップテーブル(LUT)402は、16ビットのNVMe-oF命令識別子を12ビットのローカルタグにマッピングする。ルックアップテーブル(LUT)402は、命令分類器214によってメンテナンスされる動的エンティティーである。ホスト命令を受信すると、ルックアップテーブル(LUT)402のエントリーが割り当てられる。エントリーの12ビットのインデックスは、12ビットのローカルタグ(Local Tag)である。本来の16ビットの命令識別子は、対応するインデックスに保存される。命令が完了すると、ルックアップテーブル(LUT)402のエントリーは割り当て解除される。
特殊命令部231に関する12ビットのローカルタグは、次のように得られる。

Local_Tag[11:0]=LUT (NSC CID[15:0])

ここで、NSC CIDは、ストレージ隣接演算プロセッサが内部的に割り当てる命令識別子である。NSC CIDは、ストレージ隣接演算プロセッサによって出力された命令に含まれる16ビットの命令識別子の値を示す。ローカルタグ(Local Tag)を判定するための前述の数式は、ホスト又はストレージ隣接演算プロセッサから受信した命令の命令識別子を12ビットのローカルタグ(Local Tag)にマッピングすることに用いられる。
【0048】
12ビットのローカルタグが照会されると、NVMe命令識別子の残りの4ビットの命令処理部識別子は、バックエンドSSD250から受信したNVMe完了エントリーが逆照会することを支援する。NVMe完了エントリーは、ブリッジ装置の処理部のうち、対応するNVMe命令を生成した処理部とNVMe命令識別子を関連付けることに用いられる。図2を参照すると、PCIe完了エントリーパーサー219は、PAPPモジュール217を介してバックエンドSSD250から受信したNVMe命令識別子から4ビットの命令処理部識別子を抽出し、該当完了エントリーの属する処理部がどれか判定する。受信したNVMe完了エントリーが適切な命令処理部に伝達されると、PCIe完了エントリーパーサー219は再度逆照会を行って、12ビットのローカルタグを本来のNVMe-oF命令識別子にマッピングする。特殊命令部231の場合、このような逆照会は、前述のNVMe-oF命令識別子の代わりに、ストレージ隣接演算命令識別子(NSC-CID)を用いる。
【0049】
このようなNVMe-oF対NVMeマッピング(又はNVMe対NVMeマッピング)を利用して、NVMe-oFブリッジ装置200は、バックエンドSSD250にNVMe命令を出力する複数の命令処理部を支援する。例えば、NVMe-oFブリッジ装置200は、所定の提出キュー(SQ)(ローカルタグの12ビットの深さ)に対して、最大で4096(212)個の活性NVMe命令(即ち、キュー深さ)を支援する。特殊命令部231は、このような方法を用いて、ストレージ隣接演算プロセッサによる多様なNVMe命令をホスト命令と干渉することなく、バックエンドSSD250に出力する。例えば、ストレージ隣接演算プロセッサは、NVMe読み取り命令を出力することによってバックエンドSSDからデータチャンクを引き出し、引き出したデータを処理し、NVMe書き込み命令を出力することによってバックエンドSSDに再度処理結果を保存する。異なる大きさの命令処理部識別子とNVMe命令識別子のローカルタグの構成を使用し、このようなNVMe命令識別子の配列は、異なる最大のキュー深さを提供する。
【0050】
図5は、本発明の一実施形態による管理者提出キューと完了キューとの共有を示すブロック図である。バックエンドSSDは、管理者提出キュー531と管理者完了キュー532とを含む管理者キューの対を本発明のブリッジ装置と共有する。管理者提出キュー531は、バックエンドSSDに管理者命令を出力することに用いられる。遠隔ホスト501で実行されるアプリケーションは、バックエンドSSDのデータストレージへのアクセスを必要とするデータ中心のアプリケーション(例:機械学習アプリケーション)である。NVMe-oFブリッジ装置のNVMe-oF対NVMe命令変換器521(例:図2におけるファブリック命令部232及び管理者命令部233)は、遠隔イニシエータから受信したNVMe-oF管理者命令をNVMe管理者命令に変換し、NVMe管理者命令を管理者提出キュー531(例:図2におけるPSQモジュール216)に挿入する。また、NVMe-oFブリッジ装置のストレージ隣接演算プロセッサ511は、管理者提出キュー531を介して、バックエンドSSDに管理者命令を出力する。
【0051】
ファブリック命令部、管理者命令部、書き込み命令部、及び読み取り命令部等のそれぞれのNVMe-oF命令処理部は、固有の4ビットの命令処理部識別子(CU_ID)を有する。従って、同一の管理者提出キュー531を介して、ストレージ隣接演算プロセッサ511の管理者命令のみならず、NVMe-oFホストの管理者命令を出力することも可能である。ストレージ隣接演算プロセッサ511は、ホスト側から見える(Host-visible)ユーザーデータのデータ完全性に影響を与えないか、又はバックエンドSSDのデータ構造を制御しない管理者命令のみを出力すると仮定する。ストレージ隣接演算プロセッサ511は、ホストデータを読み取るか又は監視して、該プロセッサが有するデータを修正するのみである。一部の実施形態において、遠隔ホスト501及びストレージ隣接演算プロセッサ511は、データの同期化を通じて、バックエンドSSDに保存されたデータを共有する。
【0052】
図6は、本発明の一実施形態による遠隔ホスト及びストレージ隣接演算プロセッサ間の入/出力提出キューの共有を示すブロック図である。図5の管理者提出キュー531と異なり、多くの入/出力提出キューが存在する。入/出力提出キューは、読み取り及び書き込み等のデータ命令を出力することに用いられる。入/出力命令は、遠隔イニシエータ及びバックエンドSSDにデータを移動させるか、又は遠隔イニシエータ及びバックエンドSSDからデータを移動させる。特殊命令部231は、異なる命令処理部識別子(CU_ID)の値を用いて、ホスト入/出力命令に対して用いているものと同一の入/出力提出キューにストレージ隣接演算プロセッサのための入/出力命令を挿入する。他の実施形態において、ストレージ隣接演算プロセッサ611から出力された入/出力命令を処理するために、ストレージ隣接演算プロセッサ専用の入/出力提出キューのセットを用いる。図6は、ストレージ隣接演算プロセッサ611と、遠隔イニシエータから出力された入/出力命令のために、2つの別の入/出力命令提出キュー及び完了キューを用いる例を示している。
【0053】
何れの場合でも、PCIe完了エントリーパーサーは、命令処理部識別子(CU_ID)を用いて、バックエンドSSDから受信した完了エントリーをブリッジ装置の適切な命令処理部に伝送する。ストレージ隣接演算プロセッサ611は、ホストデータに修正を加えない入/出力命令を出力すると仮定する。主に、ストレージ隣接演算プロセッサ611は、ホスト601によって書き込まれたデータを読み取り、ローカル処理のために読み取りデータの処理と分析を行う。ストレージ隣接演算プロセッサ611によって生成された修正データ又は分析の結果は、ホスト601へのアクセスが可能又は不可能な別途のストレージ領域に書き込まれる。一実施形態において、ストレージ隣接演算プロセッサ611、及びホスト601で実行される遠隔イニシエータは、同一のデータとストレージ名称空間とを共有するために、高いレベルで同期化される。
【0054】
図7は、本発明の一実施形態によるブリッジ装置内のローカルデータの移動を示すブロック図である。ブリッジ装置700は、書き込みデータバッファ751と読み取りデータバッファ752と、を有する。一実施形態によると、ブリッジ装置700のシステムメモリ(例:図3におけるシステムメモリ212)は、書き込みデータバッファ751と読み取りデータバッファ752と、を有する。
【0055】
ストレージ隣接演算プロセッサ711は、バックグラウンドでSSDデータをスキャンし分析する。ストレージ隣接演算プロセッサ711は、周期的にバックエンドSSD750からユーザーデータを引き出して分析する。ストレージ隣接演算プロセッサ711は、修正されたデータ及び/又はデータ処理の結果を再度バックエンドSSD750に保存する。このような動作は、バックエンドSSD750へのデータの移動やバックエンドSSD750からのデータの移動を必要とする。ストレージ隣接演算NVMe命令は、このようなデータ伝送の細部事項を指定する。
【0056】
一実施形態において、ストレージ隣接演算プロセッサ711は、NVMe命令が書き込み命令なのかそれとも読み取り命令なのかを示すために、ストレージ隣接演算NVMe命令演算符号を用いる。ストレージ隣接演算NVMe命令は、書き込みデータバッファ751又は読み取りデータバッファ752の関連論理ブロックアドレス(LBA)も示す。ストレージ隣接演算の書き込み命令において、データは、ブリッジ装置700のシステムメモリからバックエンドSSD750に移動する。ストレージ隣接演算の読み取り命令において、データは、バックエンドSSD750からブリッジ装置700のシステムメモリに移動する。ホスト命令のデータ伝送において、このような両方向のデータの移動が混ざることがないよう、書き込みデータバッファ751又は読み取りデータバッファ752内における別途のバッファアドレスのセットが用いられる。
【0057】
ストレージ隣接演算プロセッサ711がバックエンドSSD750に保存されたデータを処理するために、ストレージ隣接演算NVMe命令を出力する場合、ストレージ隣接演算プロセッサ711は、まず、所望の大きさの読み取りデータバッファ752に空間を割り当てる。その後、ストレージ隣接演算プロセッサ711は、割り当てられた読み取りバッファ空間のポインターを用いて、NVMe読み取り命令を生成する。ストレージ隣接演算プロセッサ711は、バックエンドSSD750に保存されたデータを読み取るために、バックエンドSSD750内の適切なNamespace.LBAアドレスを生成する(populate)。その後、ストレージ隣接演算プロセッサ711は、構成されたストレージ隣接演算-NVMe-読み取り命令をブリッジ装置700の適切な入/出力提出キューに挿入する。バックエンドSSD750は、ストレージ隣接演算-NVMe-読み取り命令をPCIeバスを介して引き出し、読み取りデータバッファ752内の割り当てられた読み取りバッファ空間のポインターを用いて、システムメモリに対して要請データのダイレクトメモリアクセス(DMA)書き込み動作を行う。その後、バックエンドSSD750は、ストレージ隣接演算-NVMe-読み取り命令の完了エントリーをブリッジ装置700に送信する。ブリッジ装置700は、知能的にストレージ隣接演算-NVMe-読み取り完了エントリーをストレージ隣接演算プロセッサ711に伝達する。その際、ストレージ隣接演算プロセッサ711は、引き出されたデータを続けて処理又は分析する。
【0058】
ストレージ隣接演算プロセッサ711は、引き出されたデータを修正する。ストレージ隣接演算プロセッサ711は、データ処理の結果として、新規データを生成する。ある時点において、ストレージ隣接演算プロセッサ711は、バックエンドSSD750に対して書き込み動作を行うことにより、このようなデータを維持する。ストレージ隣接演算プロセッサ711は、バックエンドSSD750への書き込みが必要なデータのアドレスを用いて、ストレージ隣接演算-NVMe-書き込み命令を構成する。その後、ストレージ隣接演算プロセッサ711は、バックエンドSSD750内のデータが書き込まれるのに好適なNamespace.LBAストレージの位置を挿入する。その後、ストレージ隣接演算プロセッサ711は、新たに構成されたストレージ隣接演算-NVMe-書き込み命令をブリッジ装置700の入/出力提出キューに挿入する。バックエンドSSD750は、PCIeバスを介して、ストレージ隣接演算-NVMe-書き込み命令を引き出して実行する。バックエンドSSD750は、システムメモリからストレージ隣接演算-NVMe-書き込み命令に指定されたバックエンドSSDアドレスにデータを書き込むDMA動作を行う。データのDMA動作が完了すると、バックエンドSSD750は、ストレージ隣接演算-NVMe-書き込み命令に対する完了エントリーを伝送する。ブリッジ装置700は、知能的にストレージ隣接演算-NVMe-書き込み命令の完了エントリーをストレージ隣接演算プロセッサ711に伝達する。その際、ストレージ隣接演算プロセッサは、書き込みデータバッファ751の書き込みデータを破棄する。
【0059】
一実施形態によると、ブリッジ装置は、ホストコンピュータで実行されるアプリケーションから第1命令セットを受信する第1インタフェースと、第1命令セットを変換し、第1命令セットに基づいて第2命令セットを生成する1つ以上の命令プロセッサと、データストレージ装置に第2命令セットを提供する第2インタフェースと、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させるコンピューティングプロセッサと、を有する。
【0060】
データストレージ装置は、不揮発性メモリエクスプレス(NVMe)標準と互換可能なソリッドステートドライブである。
【0061】
データストレージ装置は、NVMeオーバーファブリック(NVMe-oF)標準と互換可能なソリッドステートドライブである。
【0062】
第1インタフェースは、ファブリックネットワークを介したNVMe-oFインタフェースであり、データストレージ装置に対する第2インタフェースは、PCIeインタフェースである。第1命令セットはNVMe-oF命令を含み、第2命令セットはNVMe命令を含む。
【0063】
ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択される。
【0064】
ブリッジ装置は、命令パーサーと、命令分類器と、をさらに含む。命令パーサーは、第1命令セットをパーシングし、パーシングした命令を生成し、命令分類器は、パーシングした命令を分類し、分類した命令を1つ以上の命令プロセッサに提供する。
【0065】
1つ以上の命令プロセッサは、コンピューティングプロセッサによって出力された第2命令セットの命令のサブセットを処理する特殊命令部を有する。
【0066】
アプリケーションは、機械学習アプリケーションである。
【0067】
第2命令セットの各命令は、1つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって第1命令セットにマッピングされるローカルタグと、を含む、命令識別子を有する。
【0068】
ブリッジ装置は、データストレージ装置に第2命令セットをキューイングするための提出キューと、データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、をさらに有する。
【0069】
他の実施形態による方法は、第1インタフェースを介してホストコンピュータで実行されるアプリケーションから第1命令セットを受信する段階と、第1命令セットを変換し、第1命令セットに基づいて第2命令セットを生成する段階と、第2インタフェースを介してデータストレージ装置に第2命令セットを提供する段階と、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させる段階と、を有する。
【0070】
データストレージ装置は、不揮発性メモリエクスプレス(NVMe)標準と互換可能なソリッドステートドライブである。
【0071】
データストレージ装置は、NVMeオーバーファブリック(NVMe-oF)標準と互換可能なソリッドステートドライブである。
【0072】
第1インタフェースは、ファブリックネットワークを介したNVMe-oFインタフェースであり、データストレージ装置に対する第2インタフェースは、PCIeインタフェースである。第1命令セットはNVMe-oF命令を含み、第2命令セットはNVMe命令を含む。
【0073】
ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択される。
【0074】
本実施例の方法は、第1命令セットをパーシングし、パーシングした命令を生成する段階と、パーシングした命令を分類し、分類した命令を1つ以上の命令プロセッサに提供する段階と、をさらに有する。
【0075】
1つ以上の命令プロセッサは、コンピューティングプロセッサによって出力された第2命令セットの命令のサブセットを処理する特殊命令部を有する。

【0076】
アプリケーションは、機械学習アプリケーションである。
【0077】
第2命令セットの各命令は、1つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって第1命令セットにマッピングされるローカルタグと、を含む、命令識別子を有する。
【0078】
本実施形態の方法は、データストレージ装置に第2命令セットをキューイングするための提出キューと、データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、をさらに有する。
【0079】
上記実施形態を、ストレージ隣接演算を提供するためのブリッジ装置を具現する多様な実施形態を例示するために本明細書で説明した。本明細書に開示する実施形態からの多様な変形及び変更が本発明の技術分野に属する通常の技術者によって行われ得る。本発明の範囲に属する技術的思想は、請求範囲に記載する。
【符号の説明】
【0080】
110、601 ホスト
111 アプリケーション
112 OS/ファイルシステム
113 NVMe-oFドライバー
150 イーサネット
160 シャーシ
161 イーサネットスイッチ
162 BMC
163 PCIeスイッチ
164 管理者インターフェース
165 ミッドプレーン
170 eSSD
200 NVMe-oFブリッジ装置
211、511、611、711 ストレージ隣接演算プロセッサ
212 システムメモリ
213 命令パーサー
214 命令分類器
215 命令プロセッサ
216 PSQモジュール
217、717 PAPPモジュール
218 NVMe-oF応答器
219 PCIe完了エントリーパーサー
220 PCQモジュール
231 特殊命令部
232 ファブリック命令部
233 管理者命令部
234 書き込み命令部
235 読み取り命令部
250、550、650、750 バックエンドSSD
332 IB FIFO
333 OB FIFO
334 NVMe命令バッファ
401 NVMe-oF命令識別子又はNSC命令識別子
402 ルックアップテーブル
403、405 ローカルタグ
404 命令処理部識別子
410 NVMe命令識別子
501、701 遠隔ホスト
521、621 NVMe-oF対NVMe命令変換器
522、622 NVMe対NVMe-oF完了エントリー変換器
531 管理者提出キュー
532 管理者完了キュー
631 入/出力提出キュー
632 ストレージ隣接演算入/出力提出キュー
633 ストレージ隣接演算入/出力完了キュー
634 入/出力完了キュー
700 ブリッジ装置
751 書き込みデータバッファ
752 読み取りデータバッファ
761 書き込みデータバッファ
762 読み取りデータバッファ

図1
図2
図3
図4
図5
図6
図7