(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-06
(45)【発行日】2022-09-14
(54)【発明の名称】データ記憶装置及びブリッジ装置
(51)【国際特許分類】
G06F 13/10 20060101AFI20220907BHJP
G06F 3/06 20060101ALI20220907BHJP
G06F 3/08 20060101ALI20220907BHJP
G06F 9/445 20180101ALI20220907BHJP
G06F 13/14 20060101ALI20220907BHJP
【FI】
G06F13/10 340A
G06F3/06 301F
G06F3/08 H
G06F9/445
G06F13/14 310F
G06F13/14 330A
(21)【出願番号】P 2018189015
(22)【出願日】2018-10-04
【審査請求日】2021-09-28
(32)【優先日】2017-10-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-10-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-03-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】カチェア ラムダス
(72)【発明者】
【氏名】ワーレイ フレッド
(72)【発明者】
【氏名】姚 学 斌
【審査官】佐々木 洋
(56)【参考文献】
【文献】特開2019-075104(JP,A)
【文献】国際公開第2019/244656(WO,A1)
【文献】特開2018-041448(JP,A)
【文献】米国特許出願公開第2017/0286363(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10
G06F 3/06
G06F 3/08
G06F 13/14
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
データ記憶装置であって、
データ記憶媒体と、
複数のプロセッサコアを含むプロセッサと、
再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black-box:以下、AABBと記す)スロットと、
遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register-transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロード(load)する構成コントローラと、を有し、
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データ記憶媒体内に格納されたデータにアクセスして処理(process)するために、前記遠隔アプリケーションのデータ加速プロセスを実行(run)することを特徴とするデータ記憶装置。
【請求項2】
前記データ記憶装置は、非揮発性メモリエクスプレス(nonvolatile memory express:以下、NVMeと記す)ソリッドステートドライブ(以下、SSDと記す)であることを特徴とする請求項1に記載のデータ記憶装置。
【請求項3】
前記データ記憶装置は、NVMeオーバーファブリックス(NVMe over fabrics:以下、(NVMe-oF)と記す)SSDであり、前記ホストインターフェースはイーサネットインターフェースであることを特徴とする請求項1に記載のデータ記憶装置。
【請求項4】
前記遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージを前記データ記憶装置に伝送し、
前記構成コントローラは、前記AABBスロットにダウンロードされた前記RTLビットストリームを廃棄して前記第2RTLビットストリームをダウンロードし、前記第2RTLビットストリーム及び前記第2ファームウェアドライバイメージを用いて第2データ加速プロセスを実行するために、前記第2ファームウェアを前記プロセッサコアにロードすることを特徴とする請求項1に記載のデータ記憶装置。
【請求項5】
前記データ記憶装置は、前記遠隔アプリケーションにディスカバリー情報をさらに伝送し、
前記ディスカバリー情報は、前記AABBスロットの機能(features)、特徴、及び属性を含むことを特徴とする請求項1に記載のデータ記憶装置。
【請求項6】
前記ホストコマンドは、前記RTLビットストリーム及び前記ファームウェアドライバを活性化、非活性化、及び廃棄するためのマネジメントコマンドを含むことを特徴とする請求項1に記載のデータ記憶装置。
【請求項7】
前記ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、
前記AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含むことを特徴とする請求項1に記載のデータ記憶装置。
【請求項8】
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記遠隔アプリケーションに依存しない(agnostic)アプリケーションプログラムインターフェース(以下、APIと記す)呼び出し(call)のセットを用いて、前記遠隔アプリケーションの前記データ加速プロセスを実行している間に、前記データ記憶媒体に記憶された前記データにアクセスすることを特徴とする請求項1に記載のデータ記憶装置。
【請求項9】
一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(look-up table:以下、LUTと記す)、ランダムアクセスメモリ(以下、RAMと記す)ブロック、ハードマクロ、並びに、クロック及びリセット信号を含むことを特徴とする請求項1に記載のデータ記憶装置。
【請求項10】
一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、前記プロセッサコアに対するアドバンスドエクステンシブルインターフェース(advanced extensible interface:以下、AXIと記す)、ダブルデータレート(double data rate:以下、DDRと記す)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(peripheral component interconnect express:以下、PCIeと記す)インターフェース、及びイーサネット(登録商標)インターフェースを含むことを特徴とする請求項1に記載のデータ記憶装置。
【請求項11】
データ記憶装置のデータ記憶媒体内に格納されたデータにアクセスするデータ記憶インターフェースと、
複数のプロセッサコアを含むプロセッサと、
再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black-box:以下、AABBと記す)スロットと、
遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register-transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロードする構成コントローラと、を有し、
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記データ記憶インターフェースを介して前記データ記憶装置の前記データ記憶媒体内に格納された前記データにアクセスし、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データを処理(process)するために前記遠隔アプリケーションのデータ加速プロセスを実行することを特徴とするブリッジ装置。
【請求項12】
前記データ記憶インターフェースは、NVMeインターフェースであることを特徴とする請求項11に記載のブリッジ装置。
【請求項13】
前記ホストインターフェースは、イーサネットインターフェースであり、
前記データ記憶装置は、(NVMe-oF)SSDであることを特徴とする請求項11に記載のブリッジ装置。
【請求項14】
前記遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージを前記ブリッジ装置に伝送し、
前記構成コントローラは、前記AABBスロットにダウンロードされた前記RTLビットストリームを廃棄して前記第2RTLビットストリームをダウンロードし、前記第2RTLビットストリーム及び前記第2ファームウェアドライバイメージを用いて、第2データ加速プロセスを実行するために前記第2ファームウェアドライバイメージを前記プロセッサコアにロードすることを特徴とする請求項11に記載のブリッジ装置。
【請求項15】
前記ブリッジ装置は、前記遠隔アプリケーションにディスカバリー情報をさらに伝送し、
前記ディスカバリー情報は、前記AABBスロットの機能(features)、特徴、及び属性を含むことを特徴とする請求項11に記載のブリッジ装置。
【請求項16】
、
前記ホストコマンドは、前記RTLビットストリーム及び前記ファームウェアドライバを活性化、非活性化、及び廃棄するためのマネジメントコマンドを含むことを特徴とする請求項11に記載のブリッジ装置。
【請求項17】
前記ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、
前記AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含むことを特徴とする請求項11に記載のブリッジ装置。
【請求項18】
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記遠隔アプリケーションに依存しないアプリケーションプログラムインターフェース(API)呼び出しのセットを用いて、前記遠隔
アプリケーションの前記データ加速プロセスを実行している間に、前記データ記憶媒体に記憶された前記データに前記データ記憶インターフェースを介してアクセスすることを特徴とする請求項11に記載のブリッジ装置。
【請求項19】
一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(LUT)、ランダムアクセスメモリ(RAM)ブロック、ハードマクロ、並びに、クロック及びリセット信号を含むことを特徴とする請求項11に記載のブリッジ装置。
【請求項20】
一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、前記プロセッサコアに対するアドバンスドエクステンシブルインターフェース(AXT)、ダブルデータレート(DDR)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(PCIe)インターフェース、及びイーサネットインターフェースを含むことを特徴とする請求項11に記載のブリッジ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、主にデータ記憶システム内におけるデータプロセシング加速に関し、特に、データ記憶装置(具体的には、非揮発性メモリエクスプレス(nonvolatile memory express:以下、NVMe)及び(NVMe over fabrics:(NVMe-oF)装置)内におけるインストレージ(in-storage)加速を提供するデータ記憶装置及びブリッジ装置に関する。
【背景技術】
【0002】
ソリッドステートドライブ(SSD)は、ハードディスクドライブ(HDD)のような、既存の記憶装置を速く代替して急速に現代のデータセンタインフラストラクチャー(infrastructure)の主要なストレージ構成要素になりつつある。
SSDは、低いレイテンシ(latency)、高いデータリード/ライト処理量(throughput)、及びユーザデータの信頼性及び持続性を有するストレージを提供する。
非揮発性メモリエクスプレスオーバーファブリックス(Non-volatile memory express(NVMe) over fabrics:以下、(NVMe-oF)と記す)は、イーサネット(登録商標、以下、省略)、ファイバチャンネル(Fibre Channel)、及びインフィニバンド(Infiniband)のようなファブリックネットワークを介して数百及び数千のSSDを接続させる、新しく浮上している技術である。
【0003】
(NVMe-oF)プロトコルは、多くのNVMeSSDを、形成されたファブリックネットワークを介して遠隔ホストに接続させる遠隔直接接続記憶装置(remote direct-attached storage:rDAS)を可能にする。
(NVMe-oF)プロトコルは、またネットワークを介してNVMeコマンド、データ及び応答を搬送(carry)するための信頼性のあるトランスポートサービスを提供するため、遠隔直接メモリアクセス(remote direct memory access:以下、RDMAと記す)を支援する。
iWARP、「RoCE v1」、及び「RoCE v2」は、RDMAサービスを提供するトランスポートプロトコルの一部の例である。
【0004】
分割された(disaggregated)データ記憶装置(例えば、(NVMe-oF)互換SSD、本明細書においては、簡略に(NVMe-oF)SSD又はeSSDとも記する)を用いるデータ記憶システムは、ホストコンピュータで実行されるアプリケーションに大量のストレージを提供できる。
アプリケーションは、分割されたデータ記憶装置から大量のデータ(ビッグデータ)を収集し、これらを分析できる。
【0005】
ビッグデータプロセシングスケールは非常に大きいので、意味のあるビッグデータマイニング(data mining)を遂行するためのインフラストラクチャーは、過度な費用がかかる可能性が多く、多くのコンピューティングリソース、大型システムメモリ、高帯域幅ネットワークだけでなく、ビッグデータを記憶するための大型の高性能データ記憶装置が要求される。
従って、データプロセシングマイニングタスクの一部をホストコンピュータからデータ記憶装置に転嫁(offload)させ、データ記憶装置からホストコンピュータへのデータ移動を最小化することが課題となっている。
【先行技術文献】
【特許文献】
【0006】
【文献】米国特許第9703494号明細書
【文献】米国特許出願公開第20090251867号明細書
【文献】米国特許出願公開第20120089655号明細書
【文献】米国特許出願公開第20170068460号明細書
【文献】米国特許出願公開第20080288231号明細書
【文献】米国特許出願公開第20100146338号明細書
【文献】米国特許出願公開第20130305241号明細書
【文献】米国特許出願公開第20160259597号明細書
【文献】米国特許出願公開第20130060981号明細書
【文献】米国特許出願公開第20150254088号明細書
【文献】米国特許出願公開第20140071855号明細書
【文献】米国特許出願公開第20150180503号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は上記従来のNVMeSSDにおける問題点に鑑みてなされたものであって、本発明の目的は、データ記憶装置(具体的には、NVMe及び(NVMe-oF)装置)内のインストレージ加速を提供するデータ記憶装置及びブリッジ装置を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するためになされた本発明によるデータ記憶装置は、データ記憶媒体と、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black-box:以下、AABBと記す)スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register-transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロード(load)する構成コントローラと、を有し、前記ファームウェアドライバがロードされた前記プロセッサコアは、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データ記憶媒体内に格納されたデータにアクセスして処理(process)するために、前記遠隔アプリケーションのデータ加速プロセスを実行(run)することを特徴とする。
【0009】
上記目的を達成するためになされた本発明による、ブリッジ装置は、データ記憶装置のデータ記憶媒体内に格納されたデータにアクセスするデータ記憶インターフェースと、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black-box:以下、AABBと記す)スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register-transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロードする構成コントローラと、を有し、前記ファームウェアドライバがロードされた前記プロセッサコアは、前記データ記憶インターフェースを介して前記データ記憶装置の前記データ記憶媒体内に格納された前記データにアクセスし、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データを処理(process)するために前記遠隔アプリケーションのデータ加速プロセスを実行することを特徴とする。
【発明の効果】
【0010】
本発明に係るデータ記憶装置及びブリッジ装置によれば、隣接(near)又はインストレージ加速を遂行するために、ヘビーデューティー(heavy-duty)データプロセシング及び操作を遂行するホストアプリケーションの機能を、データ記憶装置又はブリッジ(bridge)装置に転嫁させることによって、効率的なエネルギー及び帯域幅を有するデータソリューションを提供すると同時に、全体的な演算及び記憶インフラストラクチャーのコストを軽減させ得る、という効果がある。
【図面の簡単な説明】
【0011】
【
図1】本発明の一実施形態による例示的なデータ記憶システムを示すブロック図である。
【
図2】本発明の一実施形態による例示的な(NVMe-oF)ブリッジ装置の構成を示すブロック図である。
【
図3】本発明の一実施形態による例示的なアプリケーション加速ブラックボックス(AABB)イメージのデータ構造を示す図である。
【
図4】本発明の一実施形態によるバックエンドSSDと共にブリッジ装置内に実装された例示的なインストレージ加速プラットフォームの構成を示すブロック図である。
【
図5】本発明の一実施形態によるデータ記憶装置内に実装された例示的なISAプラットフォームの構成を示すブロック図である。
【
図6】本発明の一実施形態によるAABBダウンロードコマンドフォーマットを示す図である。
【
図7】本発明の一実施形態によるAABBスロットマネジメントコマンドの例を示す図である。
【
図8】本発明の一実施形態による「AABB Comm」コマンドの例示的なフォーマットを示す図である。
【
図9】本発明の一実施形態によるAABB可能な(NVMe-oF)SSD内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
【
図10】本発明の他の実施形態によるAABB可能なNVMeSSD内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
【発明を実施するための形態】
【0012】
次に、本発明に係るデータ記憶装置及びブリッジ装置を実施するための形態の具体例を図面を参照しながら説明する。
【0013】
添付した図面は、必ずしも比率に合わせて示したものではなく、例示を示すための目的のために、図面の全体にわたって類似した構造の構成要素又は機能は、一般的に同様の符号番号によって示す。
図面は、ただ本明細書で記述される様々な実施形態が容易に記述されるように意図され、また、図面は、本明細書で開示する教示事項の全ての態様を記述せず、請求項の権利範囲を限定しない。
【0014】
本明細書で開示する各機能(特性)(features)及び教示事項は、データ記憶装置(具体的には、NVMe及び(NVMe-oF)装置)内のインストレージ加速を提供するための、他の機能(特性)及び教示事項と分離されて、又はこれらと共に利用され得る。
多数のこのような追加的な機能(特性)及び教示事項を利用する代表的な例は、分離されてからだけではなく、共に組み合わせて、添付された図面を参照してより詳細に記述される。
このような詳細な記述は、ただ当業者に本教示事項の態様を実施するための、より具体的な事項を教示するように意図され、請求項の権利範囲を制限するためのものと意図されない。
そのため、詳細な説明内に上記に開示した機能(特性)の組み合わせは、最も広い範囲の意味における教示事項を実施するために必須的なものではなく、代わりにただ本教示事項の代表的な例示を具体的に記述するために教示する。
以下の記述において、説明の目的のために、具体的な命名法が本発明の完全な理解のために提示する。
しかしながら、このような具体的な細部事項が、本明細書の教示事項を実施するために必要でないというのは、当業者に自明であろう。
【0015】
本明細書の詳細な説明の一部分は、コンピュータメモリ内におけるデータビットに対する演算の記号的表現及びアルゴリズムの側面で提示した。
このようなアルゴリズムに対する記述及び表現は、データプロセス分野内の当業者が自分の作業の要旨を他の当業者に効果的に伝達するために使用される。
本明細書において、そして一般的に、アルゴリズムは、目的とする結果をもたらす一貫性のある(self-consistent)ステップの順序と考えられる。
ステップは、物理的量の物理的操作を要求することである。通常、しかしながら、必須ではないように、このような物理的量は、記憶、伝送(transfer)、結合、比較、及びその他に操作が可能な電気的又は磁界的信号の形態を有する。
時には、主に汎用(common usage)のための理由で、このような信号は、ビット、値、構成要素、記号、用語、数字、又はこれと類似するものと示すのが便利であると知られている。
【0016】
しかしながら、このような全ての用語及びこれと類似の用語は、適切な物理的量と連携されなければならず、これらは、ただこのような物理的量に適用される便利なラベル(label)に過ぎないという点に留意しなければならない。
以下に開示した説明から明白に別に異なるように記述されない限り、明細書の全般にわたって「プロセシング(processing)」、「コンピューティング(computing)」、「計算する(calculating)、」、「決定する、」「表示する、」又はこれと類似のもののような用語を用いる説明は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子的)量として表現されるデータを操作するとか、又はこれをコンピュータシステムメモリ又はレジスタ又は他の情報記憶、伝送又は表示装置内の物理的量で類似に表現される、他のデータに変換するコンピュータシステム又はこれと類似の電子コンピューティング装置の作動及びプロセスを示すものと理解されるべきである。
【0017】
さらに、本教示事項の追加的な有用な実施形態を提供するために、代表的な例示の多様な機能(特性)及び従属請求項は、具体的且つ明白に列挙されない方式で組み合せられる。
全ての数値範囲又は個体のグループに対する表示は、元の開示目的だけでなく、請求された発明の要旨を制限する目的のために、全ての可能な中間値又は中間個体を開示することを明示する。
図面内に示した構成のサイズ及び形状は、本教示事項がどのように実施され得るか理解を助けるために設計されたものであり、例示内に示したサイズ及び形状を制限するように意図されたものではないことを明示する。
【0018】
図1は、本発明の一実施形態による例示的なデータ記憶システムを示すブロック図である。
データ記憶システム100は、一つ又はそれ以上の(NVMe-oF)互換イーサネットSSD(eSSD)を含むシャーシ160(本明細書において、eSSDシャーシとも示す)及びホスト110を含む。
例えば、シャーシ160は、24又は48個のeSSDを含み得る。
シャーシ160内のeSSDは、eSSD(170a)~eSSD(170n)でそれぞれ表わす(本明細書において、これらを含めてeSSD170として示す)。
【0019】
ホスト110は、アプリケーション111、オペレーションシステム(OS)/ファイルシステム(FS)112、及び(NVMe-oF)ドライバ113を含む。
ホスト110のイニシエータ(例えば、アプリケーション111は、(NVMe-oF)ドライバ113を用いて、イーサネット150を介してeSSD170と(NVMe-oF)接続を設定できる。
シャーシ160は、イーサネットスイッチ161、ベースボードマネジメントコントローラ(baseboard management controller:BMC)162、及びペリフェラルコンポーネント相互接続エクスプレス(peripheral component interconnect express:PCIe)スイッチ163を含む。
イーサネットスイッチ161は、ミッドプレーン(midplane)165を介してeSSD170へのイーサネット接続を提供し、PCIeスイッチ163は、ミッドプレーン165を介してeSSD170へのマネジメントインターフェース164を提供する。
BMC162は、システム管理者(system administrator)によって提供される命令語に基づいてeSSD170をプログラムできる。
【0020】
イーサネットスイッチ161は、eSSD170及びホスト110の間のネットワーク接続性を提供する。
イーサネットスイッチ161は、一つ又はそれ以上のホストに接続するための大容量(large‐capacity)(例えば、100Gbps)アップリンク(uplink)を有し得る。
イーサネットスイッチ161は、また、eSSD170に接続するための多重の低容量(lower‐capacity)(例えば、25Gbps)ダウンリンク(dawnlink)を有し得る。
例えば、イーサネットスイッチ161は、12個の100Gbpsのアップリンク及び24個又は48個の25Gbpsのダウンリンクを含み得る。
イーサネットスイッチ161は、BMC162への特殊設定/マネジメントポートを有し得る。
【0021】
BMC162は、イーサネットスイッチ161、PCIeスイッチ163、及びeSSD170を含むシャーシ160の内部コンポーネントを管理する。
BMC162は、システムマネジメントのためのシステムマネジメントバス(system management bus:SMBus)インターフェース及び/又はPCIeを支援する。
BMC162は、eSSD170を設定し、イーサネットスイッチ161をプログラムできる。
【0022】
サーバベースのオールフラッシュアレイ(all‐flash arrays:AFAs)と同様に、eSSD170は、eSSDの束、これらの外部のホストと接続させるネットワークスイッチ(即ち、イーサネットスイッチ161及びこれを管理するためのBMC162を含むサーバレスエンクロージャ(server‐less enclosure)(即ち、シャーシ160)に共に収納される。
BMC162は、ブート(boot)を処理し、eSSD装置への経路を制御する。
完全な(full‐fledged)x86CPUとは異なり、BMC162は、CPUが処理できる全てのタスクが処理できず、そのため、最小限のエンクロージャマネジメント機能を遂行する。
BMC162は、SMBus又はPCIeバスを介して、接続性、状態、温度、ログ、及びエラーに対する、接続されたeSSD170及び関連するハードウェアの自体検査(health check)を維持する。
【0023】
eSSD170は、高性能及び大容量データ記憶ソリューションを提供する。
(NVMe-oF)プロトコルは、遠隔直接接続(remote direct‐attached storage:rDAS)方式でホストコンピュータ110で駆動されるアプリケーション111に数百個及び数千個の分割されたeSSD170が接続されるようにする。
本発明のシステム及び方法は、分割されたeSSD170に収集されて記憶される大量のデータの移動及びプロセシングを容易にする。
既存のホストコンピュータを利用する、このようなデータプロセシングの費用は非常に高い可能性がある。
【0024】
ホストコンピュータ110で駆動されるアプリケーション111は、ネットワーク(例えば、イーサネット150)にかけているeSSD170のような分割されたデータ記憶装置内に格納されたデータをフェッチ(fetch)することにより、マシンラーニングのようなプロセスを遂行し、データを処理して、データ記憶装置にデータ処理の結果を再び格納できる。
データフェチング、データ処理、及び格納を含む、このようなプロセスは、ホストコンピュータ上の過度なエネルギー、コンピューティング、ネットワーク、及びデータ記憶リソースを消費して非常に非効率的である可能性がある。
さらに、このようなプロセスは、ホストコンピュータに高価のコンピューティング及びメモリリソース上の要求事項を負担させる可能性がある。
【0025】
図2は、本発明の一実施形態による例示的な(NVMe-oF)ブリッジ装置の構成を示すブロック図である。
ブリッジ装置は、データ記憶装置に集積されるか、又は、データ記憶装置に接続されて分離された(そして、別個の)装置を示す。
続く例示において、eSSDは、ブリッジ装置及びバックエンドSSDの全てを含むものと記述するが、しかし、eSSDを形成するために、データ記憶装置(バックエンドSSD)は、別個のブリッジ装置に接続され得るか、又は他の実施形態においてeSSDは、ブリッジ装置それ自体又はブリッジ装置の隣接コンピューティング(near-computing)機能を遂行できる装置を示し得ることを理解できるであろう。
【0026】
(NVMe-oF)ブリッジ装置200は、隣接ストレージコンピュート(near-storage compute:NSC)プロセッサ211、システムメモリ212、コマンドパーサー(command parser)213、コマンド分類器(command classifier)214、コマンドプロセッサ215、PCIe-サイドコマンドサブミッションキュー(PCIe-side command submission queue:PSQ)モジュール216、PCIeアプリケーション(PCIe application:PAPP)/ルート(root)コンプレックス(complex)モジュール217、(NVMe-oF)応答機(NVMe-oF responder)218、PCIeCEパーサー(PCIe CE parser)219、PCIe-サイドコマンドコンプリーションキュー(PCIe-side command completion queue:PCQ)モジュール220を含む。
(NVMe-oF)ブリッジ装置200は、PCIeバスを介してバックエンドSSD(例えば、NVMeSSD)250に結合される。
ホストコンピュータ上で駆動される遠隔イニシエータ(remote initiator)は、ファブリックネットワーク(本発明の実施形態においては、イーサネット)を介してバックエンドSSD250に(NVMe-oF)コマンドを伝送する。
【0027】
(NVMe-oF)ブリッジ装置200のコマンドパーサー213は、バックエンドSSD250に伝送が予定された(NVMe-oF)コマンドをインターセプト(intercept)し、これらを分析(parse)して、コマンド分類器214へ分析された(NVMe-oF)コマンドを伝送する。
例えば、コマンドパーサー213は、コマンドオペコード(command opcode:OPC)、コマンド識別子(command identifier:CID)、ネームスペース識別子(namespace identifier:NSID)、複数のロジカルブロック(number of logical blocks:NLB)、及びスタートロジカルブロックアドレス(start logical block address:SLBA)を含むが、しかし、これに限定されない、多様なコマンドを抽出して分析する。
【0028】
コマンド分類器214は、分析された(NVMe-oF)コマンドを異なるグループに分類して、分類された(NVMe-oF)コマンドをコマンドプロセッサ215に伝送する。
例えば、コマンド分類器214は、アドミンコマンド(admin commands)、ファブリックコマンド(fabric commands)、リードコマンド(read commands)、ライトコマンド(write commands)、及び特殊コマンド(special commands)に分類する。
(NVMe-oF)コマンドの異なるコマンド又はグループは、コマンドプロセッサ215の特殊なコマンドプロセシングユニットを用いて処理され得る。
例えば、コマンドプロセッサ215は、特殊コマンドユニット(special command unit:SCU)231、ファブリックコマンドユニット(fabrics command unit:FCU)232、アドミンコマンドユニット(admin command unit:ACU)233、リードコマンドユニット(read command unit:RCU)234、及びライトコマンドユニット(write command unit:WCU)235を含む。
【0029】
このようなコマンドプロセシングユニット(231~235)は、(NVMe-oF)コマンドをNVMeコマンドに翻訳し、これらをPSQモジュール216内に配置させる。
一実施形態によれば、PSQモジュール216は、コマンドサブミッションキュー(active submission queues)を具現し、アクティブサブミッションキュー(active submission queues)のためのヘッド(head)及びテール(tail)ポインターを維持する。
PSQモジュール216は、アクティブサブミッションキューを検出でき、サブミッションキューがフル(full)又はエンプティ(empty)であることを示す条件部フラッグ(conditional flags)を生成する。
NVMeコマンドが、サブミッションキュー内に配置されている時、PSQモジュール216は、ドアベルイベント(doorbell events)(サブミッションキュードアベル(submission queue-doorbell))を生成し、これをPAPPモジュール217を介してバックエンドSSD250に伝送する。
【0030】
PPAPモジュール271は、PCIeバスを介してドアベルイベントを伝送するために、PCIe伝送(PCIe transport)をバックエンドSSD250に具現する。
PAPPモジュール271は、(NVMe-oF)ブリッジ装置200によって生成されたコンフィグリード(config read)、コンフィグライト(config write)、メモリライト、及びメモリリードを含む標準PCIeトランザクションコマンド(standard PCIe transaction commands)を支援する。
追加的に、PAPPモジュール217は、(NVMe-oF)ブリッジ装置200ではないPCIeエンドポイント(PCIe end-point)によって生成されたPCIeメモリリード及びメモリライトトランザクションを支援する。
言い換えれば、PAPPモジュール217は、(NVMe-oF)ブリッジ装置200のPCIeルートコンプレックス機能を実装及びサポートして、(NVMe-oF)ブリッジ装置200をPCIeルートコンプレックス装置にする。
【0031】
PCQモジュール220は、バックエンドSSD250のためのコマンドコンプリーションキュー(command completion queues)を実装する。
バックエンドSSD250は、バックエンドSSD250がプロセシングする、各NVMeコマンドのためのコマンドコンプリーションエントリ(command completion entry:CE)を書き込むことができる。
通常は、コマンドサブミッションキューとコマンドコンプリーションキューとの間には、一対一マッピング(one-to-one mapping)がある。
PCIeCEパーサー219は、PCQモジュール220から受信したコンプリーションエントリ(CE)を分析し、これらを解釈する。
【0032】
PCIeCEパーサー219は、分析されたCEを、対応するNVMeコマンドを生成した適切なコマンドプロセシングユニット(231~235)に伝達する。
適切なコマンドプロセシングユニット(231~235)は、PCIeCEパーサー219から受信したPCIeCE(又は、NVMeCE)に対応する(NVMe-oF)CEを生成し、(NVMe-oF)インターフェース(例えば、イーサネット)を介して(NVMe-oF)CEを遠隔イニシエータに戻して発行するために、生成された(NVMe-oF)CEを(NVMe-oF)応答機218に伝達する。
(NVMe-oF)CEは、遠隔イニシエータに/から伝送されるリードデータ又はライトデータの伝送に先行(precede)できる。
(NVMe-oF)コマンドブリッジング(bridging)の一部として、コマンドプロセシングユニット(231~235)は、バックエンドSSD250と遠隔イニシエータとの間のデータ伝送を容易にする。
【0033】
ドアベルイベントに応答して、バックエンドSSD250は、PSQモジュール216から受信したNVMeコマンドをフェッチ(fetch)し、これらを実行する。
コマンド実行の一部として、バックエンドSSD250は、データ伝送を遂行できる。
このようなデータ伝送は、(NVMe-oF)ブリッジ装置200内で利用可能なオンチップ(on-chip)又はオフチップ(off-chip)メモリ又はシステムメモリ212に/から行われ得る。
【0034】
NVMe及び(NVMe-oF)SSDのようなデータ記憶装置は、大量のデータを格納できる。
データ記憶装置に隣接した、又はその内部におけるデータプロセシングは、データをデータ記憶装置から遠隔ホストコンピュータに移動させ、遠隔ホストコンピュータ内でプロセシングするよりも効率的であり、費用面において効果的であり得る。
【0035】
本明細書は、処理されなければならない実際のターゲットデータを記憶するNVMe及び(NVMe-oF)SSDのような、データ記憶装置内の遠隔アプリケーションのデータプロセシングを加速するためのインストレージ加速(in-storage acceleration:ISA)プラットフォームを記述する。
例えば、本発明におけるISAプラットフォームは、NVMe及び(NVMe-oF)SSD(例えば、
図1のeSSD170)のコントローラ内に実装され得る。
他の実施形態において、本発明のISAプラットフォームは、ブリッジ装置(例えば、
図2の(NVMe-oF)ブリッジ装置200)のコントローラ内に実装され得る。
このような点で、本明細書において使用される用語「インストレージ加速」は、ターゲットデータを格納する実際のデータ記憶装置だけでなく、データ記憶装置にインターフェース(又はプロトコル翻訳(protocol translation))を提供するために、データ記憶装置に隣接して配置されたブリッジ装置内におけるデータプロセシングを指示するために使用される。
【0036】
大量のデータプロセシングを伴うデータ中心(data-centric)ホストアプリケーションは、本発明のISAプラットフォームを用いることにより多くの利点が得られる。
ヘビーデューティデータプロセシング及び操作を遂行するホストアプリケーションの機能は、隣接又はインストレージ加速を遂行するためにデータ記憶装置又はブリッジ装置に転嫁(offload)され得る。
本発明のISAプラットフォームは、エネルギー及び帯域幅の側面において、効率的なデータプロセシングソシューションを提供すると同時に、全体的な演算及び記憶インフラストラクチャーの費用を軽減させ得る。
【0037】
一実施形態によれば、遠隔ホストコンピュータ上で駆動されるデータ集中的(data-intensive)アプリケーション(例えば、マシンラーニング(ML)アプリケーション、ビッグデータアプリケーション)は、一部のデータプロセシング機能をデータ記憶装置及び/又はブリッジ装置に転嫁させ得る。
データ記憶装置又はブリッジ装置は、実際のターゲットデータを格納するデータ記憶装置及びデータ記憶装置内に格納されたターゲットデータに対するアクセスを要求する、データ集中的アプリケーションを駆動する遠隔ホストコンピュータの間でのデータ伝送を最小化させることによって、データプロセシングを加速させ得る。
本発明のISAプラットフォームは、データ記憶装置及びデータ集中的アプリケーションを駆動する遠隔ホスト装置の間でのデータの移動を最小化させることによって、ユーザデータがデータ記憶装置に近く又はその内部でもっと効率的にプロセスされ得るようにする。
それにより、本発明のISAプラットフォームは、より向上したアプリケーション性能を達成すると同時に、ホストコンピュータのコンピューティング、ネットワーキング、及び記憶インフラストラクチャーと関連された費用を減少させ得る。
本発明のISAプラットフォームは、多様な種類のデータ記憶装置に適用され得る。
しかし、以下では、説明の便意のためにデータ記憶装置の例として、NVMeSSD又は(NVMe-oF)SSDを示す。
【0038】
一実施形態によれば、データプロセシング加速を遂行するデータ記憶装置又はブリッジ装置は、フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)ベース再構成型ロジックブロック(reconfigurable logic blocks)を含む。
FPGAベース再構成型ロジックブロックは、アプリケーションの転嫁及び加速部分を可能にするために、NVMe/(NVMe-oF)SSDのコントローラ(本明細書において、NVMe/(NVMe-oF)SSDコントローラとも称される)又はブリッジ装置のコントローラ(本明細書において、ブリッジ装置コントローラとも称される)と一共に、同時に作動する。
このようなFPGAベース再構成型ロジックブロックは、外部的にNVMe/(NVMe-oF)コントローラに接続されるか、又はNVMe/(NVMe-oF)に内装され得る。
アプリケーションユーザは、加速のためのアプリケーションの機能が実装されるように、NVMe/(NVMe-oF)SSD内に内装されるか、又はこれに結合されたこのような再構成型ロジックブロックを利用できる。
【0039】
本発明のISAプラットフォームは、加速される遠隔ホストコンピュータ上で駆動されるアプリケーションアグノスチック(agnostic:依存しない)する。
本発明のISAプラットフォームが多様な種類のアプリケーション及びデータ記憶装置に適用できるように、本発明のISAプラットフォームは、アプリケーションを一般的な方式で加速できる。
追加的に、ユーザは、本発明のISAプラットフォームをセルフサービス方式で利用できる。
例えば、ユーザは、実時間(runtime)のうち、アプリケーションの任意の部分を選択してダウンロードでき、アプリケーションを実時間に変更できる。
【0040】
与えられたアプリケーションに対し、ユーザは、大量のデータをプロセスしたり、操作(manipulate)したりするアプリケーションの機能やコンポーネントを識別(identify)できる。
識別された機能は、アプリケーションの性能を加速させるために、ISAプラットフォームに転嫁され得る機能である。
一実施形態によれば、ユーザは、再構成型ロジックブロック(以下、ブラックボックス(black-boxes)とも称される)を含むデータ記憶装置(又はブリッジ装置)の予め設定された記憶領域(storage area)にアプリケーションの機能をダウンロードできる。
【0041】
本明細書に使用する用語「ブラックボックス」は、特定のデータアクセス及びプロセシング機能を加速するために、アプリケーションコードからの機能をデータ記憶装置(又は、ブリッジ装置)近くの装置のデータ記憶装置(又は、ブリッジ装置)に転嫁させ得る再構成型ロジックブロックの集団(collection)を示すことに留意しなければならない。
本明細書において、各再構成型ロジックブロックの集団は、アプリケーション加速ブラックボックス(AABB)であると便利に称される。AABBのそれぞれは、再構成型ロジックブロックがどのように構成されるかによって相異なるサイズ及び性能を有し得る。
【0042】
AABBは、次のような二つの主要なコンポーネントを有する。
即ち、レジスタ伝送レベル(register-transfer level:RTL)ブラックボックスであると称されるハードウェア部分及びRTLブラックボックスドライバであると称されるファームウェア部分である。
RTLブラックボックスは、ハードウェアプロセシングエンジンを含み、RTLブラックボックスドライバは、RTLエンジンのためのファームウェアドライバであるか、又は加速するための機能に対応される一般的なファームウェアドライバである。
一実施形態において、AABBは、ハードウェア部分無しでファームウェア部分のみを有し得る。
【0043】
本発明のISAプラットフォームは予め設定(pre-defined)され、予め供給(pre-provisioned)されたFPGAロジック領域(即ち、ISAプラットフォームの再構成型ロジックブロック)を再構成するために、RTLブラックボックスコンポーネントを用いる。
RTLブラックボックスドライバは、内装されたコントローラ(例えば、NVMe/(NVMe-oF)コントローラ又はブリッジコントローラ)のプロセッサコア上で駆動されるように意図された再構成されたRTLブラックボックスと連携されるファームウェアドライバである。
【0044】
ユーザの必要及び現在の加速された機能のための要求が充足された場合、ユーザは、AABBを非活性化させたり、廃棄したりして、新しいAABBを廃棄したAABBスロットにダウンロードできる。
ダウンロードされ、対応されるAABBスロットに割り当てられたAABBは、活性化されたAABBスロット(active AABB slot)であると称される。
活性化されたAABBスロットは、加速機能を遂行する準備ができている。
ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含む。
AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含む。
複数のAABBは、ISAプラットフォーム内で定められた時間に活性化される。
【0045】
本発明のISAプラットフォームは、予め供給されて予め設定されたAABBスロットのセットを提供する。
各AABBスロットは確保され(reserved)、別に分離された(set aside)幾つかのロジックリソースを有し得る。
相異なるAABBスロットは、同一の又は相異なる定義されたリソース又はインターフェースを有し得る。
ユーザは、支援されるAABBスロットの特性、特徴、及び属性を見つけ出し、使用する特定のAABBを選択し、選択したAABBスロットに回路コンポーネント及びファームウェアコンポーネントをダウンロードできる。
アプリケーションがファームウェアコンポーネントのみを有することも可能である。
例えば、回路コンポーネント及びファームウェアコンポーネントをダウンロードするのは、「AABBダウンロード」コマンドを用いて遂行され得る。
【0046】
「AABBダウンロード」コマンドに加えて、「AABBマネジメント」コマンドは、ダウンロードされたAABBイメージの活性化、非活性化、及び廃棄のようなAABBスロットのマネジメントのために利用され得る。
「AABB Comm」コマンドは、活性化されたAABBスロットとホストアプリケーションが通信するために使用される。
本発明のISAプラットフォームは、ダウンロードされたAABBイメージが「AABB Comm」コマンドを受信するようにし、CEを遠隔ホストコンピュータに返して伝送するためのアプリケーションプログラムインターフェース(application program interface:API)のセットを提供する。
【0047】
追加的に、本発明のISAプラットフォームは、AABBファームウェアがホストメモリに/からだけでなく、SSDのNANDフラッシュ媒体に/からのユーザデータ伝送を遂行できるようにビルトイン(built-in)APIを提供する。
このようなコマンド及びデータ移動APIを用いることによって、AABBイメージは、ユーザ記憶データ(user data at rest)だけでなく、ユーザ移動データ(user data in flight)のためのユーザデータプロセシング、操作(manipulation)、及び他の変換を調整(orchestrate)することができる。
【0048】
本発明のISAプラットフォームは、NVMe/(NVMe-oF)SSD及び/又はブリッジ装置を用いて、第三者アプリケーションを加速できる。
ユーザは、ユーザアプリケーションの目的とする機能(又は、目的とする機能の部分)を加速するために、NVMe/(NVMe-oF)SSDにアプリケーションAABBをダウンロードできる。
本発明のISAプラットフォームは、与えられたAABBのためのハードウェアコンポーネント及び関連したファームウェアコンポーネントを活性化させる。
ハードウェアコンポーネントは、NVMe/(NVMe-oF)SSD内の一つ又はそれ以上の再構成型ロジックブロックでロード(load)され得る、RTLビットストリーム(bit stream)形態となっている。
ファームウェアコンポーネントは、NVMe/(NVMe-oF)SSDの内臓されたプロセッサ(又はプロセッサコア)にロードされ、実行される。
【0049】
たとえ、ユーザがAABBスロットに実装する機能を識別できるとしても、本発明のISAプラットフォームに関する限り、AABBスロットは、依然としてブラックボックスである。
即ち、本発明のISAプラットフォーム及びプラットフォーム提供者は、どのように、又はどのような目的のためにAABBが用いられるかは知れないか、又は気にしない。
ユーザは、セルフサービス方式で本発明のISAプラットフォームにより提供されるAABBスロットを定義し、生成し、ダウンロードして利用できる。
たとえ、後述する例示が、ユーザがセルフサービス方式で第三者加速機能を駆動できるようにする、本発明のISAプラットフォームの実施形態に中点を置くとしても、特定の標準ビルトインブラックボックス機能が、NVMe/(NVMe-oF)SSD又はブリッジ装置内に内在的(natively)に実装され得るように、本発明のISAプラットフォームは一般的な方式で利用され得るのが理解されるであろう。
【0050】
ユーザがAABBスロットにAABBイメージをダウンロードする時に、AABBイメージを受信した装置(例えば、NVMe/(NVMe-oF)SSD又はブリッジ装置)は、RTL及びファームウェアコンポーネントを抽出する。
RTLコンポーネントは、ビットストリームの形態で伝達され得る。
ファームウェアコンポーネントは、実行可能なバイナリイメージで伝達され得る。
RTLビットストリームは、対応する(複数の)ブラックボックスのために、予め確保されたFPGA領域(即ち、(複数の)AABBスロット)を再構成するために用いられ、ドライババイナリ(driver binary)は内装されたプロセッサ(又は、内装されたプロセッサのプロセッサコア)上で実行される。
遠隔ホストコンピュータ上で駆動されるアプリケーションは、ISAプラットフォーム上におけるAABBイメージと通信するためにNVMeコマンド「AABB Comm」を利用できる。
装置は、目的地AABBスロット識別子(destination AABB slot identifier)を用いて、「AABB Comm」コマンドをインターセプトし、これらを適切なAABBスロットに伝達する。
【0051】
図3は、本発明の一実施形態による例示的なアプリケーション加速ブラックボックス(AABB)イメージのデータ構造を示す図である。
AABBイメージ301は、ヘッダ310、RTLビットストリーム320、及びドライババイナリイメージファイル321を含む。
ヘッダ310は、その他の情報311、パラメータ312、RTLビットストリームの長さ313、RTLビットストリームオフセット314、ドライババイナリファイルの長さ315、及びドライババイナリファイルオフセット316を含む。
【0052】
RTLビットストリームオフセット314は、RTLビットストリームの長さ313のサイズを有するRTLビットストリーム320へのポインターを含み、ドライババイナリファイルオフセット316は、ドライババイナリファイルの長さ315を有するドライババイナリイメージファイル312へのポインターを含む。
たとえ、一実施形態が一つのヘッダ、並びに、対応するRTLビットストリーム及びドライババイナリイメージファイルだけを開示しているとしても、本発明の開示内容から逸脱しない範囲内で単一のAABBイメージは、複数のヘッダ、RTLビットストリーム、及びドライババイナリイメージファイルを有し得ることが理解されるであろう。
【0053】
本発明のISAプラットフォームは、NVMe/(NVMe-oF)SSD(例えば、
図1のeSSD170のコントローラ又はブリッジ装置(例えば、
図2の(NVMe-oF)ブリッジ装置200)のコントローラに実装され得る。
一実施形態において、コントローラは、NVMe/(NVMe-oF)SSD又はブリッジ装置に含まれるFPGAベース再構成型ロジックブロックと相互作用できる。
データ記憶性能に加えて、本発明のISAプラットフォームは、第三者機能ブロック(third-party functional blocks)(即ち、AABBスロット)を実装し、実行するメカニズムを提供する。
【0054】
AABBスロットは、予め定義されたインターフェースのセットを介してアクセスされ得る、予め設定された量のロジック、演算、及びメモリリソースで供給される。
NVMe/(NVMe-oF)SSD又はブリッジ装置内に実装されたFPGAベース再構成型ロジックブロックは、NVMe/(NVMe-oF)SSD又はブリッジ装置の第三者機能ブロックのヘビーデューティーデータプロセシング機能を実装するために利用され得る。
コントローラプロセッサの演算リソースは、制御アルゴリズムだけでなく、ハードウェア加速エンジンのためのドライバファームウェアを実装するため、ユーザにより利用され得る。
一実施形態において、ユーザは、いくつかのユースケース(use case)のためにファームウェアリソースのみを利用できる。
【0055】
図4は、本発明の一実施形態によるバックエンドSSDと共にブリッジ装置内に実装された例示的なISAプラットフォームの構成を示すブロック図である。
例えば、バックエンドSSD450は、ブリッジ装置にPCIeリンクを通じてアクセス可能な標準NVMeSSDである。
ブリッジ装置及びバックエンドSSDは、ホストに「eSSD」と見なされる単一の記憶装置としてパッケージされ得る。
ブリッジ装置400は、プロセッサ411、PCIeエンドポイント(EP)421、バックエンドSSD450と接続するためのPCIeインターフェース417、(NVMe-oF)ブリッジ装置である場合の選択的イーサネットインターフェース418、ブラックボックス再構成コントローラ422、データバッファ423、NVMe/(NVMe-oF)ホストインターフェース424、及び再構成型ロジックブロック425を含む。
【0056】
再構成型ロジックブロック425は、ロジックブロックをプログラミング可能に接続できる再構成可能な相互接続(reconfigurable interconnects)及びプログラム可能な(programmable)ロジックブロックのアレイを含む、フィールドプログラマブルゲートアレイ(field-programmable gate array:FPGA)であり得る。
ロジックブロックは、複雑な組み合わせ機能、又はAND/XORのような簡単なロジックゲートを遂行するように構成され得る。
追加的に、ロジックブロックは、また、フリップフロップ(flip-flops)又はもっと完全なメモリのブロックのようなメモリ構成要素を含む。
しかし、再構成型ロジックブロック425は、FPGAブロックに限定されず、相異なる形態や種類のプログラミング可能な/再構成型ロジックブロックが、本開示内容の範囲を逸脱しない範囲内で利用され得る。
【0057】
再構成型ロジックブロック425は、RTLブラックボックスのパーティション(partitions)(432a~432n)を包含する。
RTLブラックボックス432の各パーティションは、特定の量のハードウェアリソース及びシステムバス430を介するNVMe/(NVMe-oF)ホストインターフェース424、データバッファ423、ブラックボックス構成コントローラ422のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
ユーザは、RTLブラックボックス432を選択し、選択されたRTLブラックボックス432のリソース及びインターフェース制約(constraints)内に第三者RTL機能性を実装させ得る。
場合によって、ユーザは、ファームウェアブラックボックスのみを用いてRTL機能性を実装させ得る。
この場合、ファームウェアブラックボックスは、RTLブラックボックス432の、予め備えられた(prepopulated)RTLコンポーネントを利用できる。
【0058】
ブリッジ装置400は、バックエンドSSD450に伝送が予定されたイーサネット又はPCIeバスから受信したホストコマンドをインターセプトし、バックエンドSSD450に格納されたデータへのアクセスだけでなく、プロセッサ411を用いて隣接(near)記憶データプロセシングを提供できる。
BB構成コントローラ422は、RTLビットストリームを一つ又はそれ以上のRTLブラックボックス432にダウンロードでき、プロセッサ411のプロセッサコアを用いて対応されるブラックボックスドライバ431を駆動するために、対応するドライババイナリイメージファイルをプロセッサ411にロードできる。
【0059】
図5は、本発明の一実施形態によるデータ記憶装置内に実装された例示的なISAプラットフォームの構成を示すブロック図である。
データ記憶装置500は、NVMeSSD又は(NVMe-oF)SSDであり得る。
一部の実施形態において、データ記憶装置500は、NVMeSSD又は(NVMe-oF)SSDの格納(storage)コントローラを指し得る。
データ記憶装置500は、コントローラ501及びフラッシュ媒体(flash media)560を含む。
【0060】
コントローラ501は、プロセッサ511、PCIeEP521、(NVMe-oF)SSDである場合、選択的イーサネットインターフェース518、ブラックボックス再構成コントローラ522、データバッファ523、NVMe/(NVMe-oF)ホストインターフェース524、及び再構成型ロジックブロック525を含む。
再構成型ロジックブロック525は、RTLブラックボックス(532a~532n)のパーティション(partitions)を含む。
RTLブラックボックス532の各パーティションは、特定の量のハードウェアリソース及びシステムバス530を介するNVMe/(NVMe-oF)ホストインターフェース524、データバッファ523、ブラックボックス構成コントローラ522のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
【0061】
データ記憶装置500を構成する多くの構成要素は、
図4に示したブリッジ装置の例において記述したものと類似するか、又は同一である。
バックエンドSSD450に対するPCIeインターフェース417の代わりに、コントローラ501は、フラッシュ媒体560からユーザデータを読み出したり、フラッシュ媒体560に書き込んだりするためにフラッシュ媒体560とインターフェースするためのフラッシュ変換レイヤー(flash translation layer:FTL)モジュール526を有する。
このような内在的実装(native implementation)においては、これと異なる場合、ブリッジ装置で遂行される機能をSSDコントローラそのものが遂行できるので、ブリッジ装置は、バックエンドSSDに接続される必要がない。
【0062】
FPGAベース再構成型ロジックブロック(例えば、
図4の再構成型ロジックブロック425及び
図5の再構成型ロジックブロック525)は、多様なユーザプログラミング可能なロジック機能を遂行するために再プログラミングされ得る。
各再構成型ロジックブロックは、
a)ルックアップテーブル(LUT)、
b)ランダムアクセスメモリ(RAM)、及び
c)再構成型相互接続を含む。
このような3つのコンポーネントを用いることによって、多様なデータプロセシング回路がハードウェアに実装され得る。
再構成型ロジックブロックは、通常的なアプリケーション特定用途向け集積回路(application-specific integrated circuit:ASIC)の高性能及びソフトウェア具現の柔軟性を同時に提供できる。
【0063】
アプリケーションのデータプロセシング機能性は、ヴェリログ(Verilog)及び VHDLのようなプログラミング可能な言語を用いて、RTLモデルの形態で実装され得る。
RTLモデルは、その後、ゲートレベル回路で合成(synthesize)される。
合成された回路は、その後、ゲートレベルネットリスト(netlists)の物理的実装を実現するために、LUT、RAM,及び相互接続のようなFPGAリソースでマッピングされる。
最終的な実装は、ビットストリーム又はビットファイルの形態で示される。
ビットストリームは、本質的にFPGA内の相互接続スイッチのためのビットマップである。
【0064】
適切な相互接続スイッチは、オン(on)及びオフ(off)させることによって、目的とする回路がFPGA内に実現される。
ビットファイルのビットストリームは、電源オン以後や所望する時点で、FPGAにダウンロードされる。
いったん、ビットストリームが設定されると、リセット又はパワーサイクルの時まで、相互接続スイッチは、そのようなプログラムされた状態で維持される。
そして、ビットストリーム設定又はプログラミングが完了すると、データプロセシング機能は、データプロセシング機能の動作を開始する。
新しいデータプロセシング機能を開始するために、現在のデータプロセシング回路を中止させ、相異なるビットストリームを用いてFPGAを再構成することが可能である。
【0065】
一実施形態によれば、本発明のISAプラットフォームは、複数のFPGAコアを有し得るし、各RTLブラックボックス当たり一つのコアを自由に利用する。
各RTLブラックボックスは、ロジック領域、相互接続、LUT、RAMブロック、特殊ハードマクロ(specialized hard macros)(例えば、PCIeコントローラ、デジタル信号プロセッサ(DSP)演算ロジックユニット(arithmetic logic units, ALUs))、及びクロック及びリセット信号を含むが、しかし、これに限定されない、リソースで予め供給され、予め定義できる。
【0066】
RTLブラックボックスは、多様な、予め定義されて予め供給されたインターフェースを有し得る。
インターフェースの例示は、プログラム可能なクロック/リセット、内装されたプロセッサに対するアドバンスドエクステンシブルインターフェース(advanced extensible interface:AXI)、ダブルデータレート(double data rate:DDR)メモリインターフェース、PCIe(EP/RP)インターフェース、イーサネットインターフェース、特殊のISAサービス又は機能のためのカスタムインターフェース、及びその他の別途のインターフェースを含むが、これに限定されない。
【0067】
追加的に、TRLブラックボックス532のそれぞれは、対応する構成コントローラ522に対する設定インターフェース(configuration interface)を有し得る。
このインターフェースは、ユーザに見られず、RTLブラックボックス532にユーザ回路をダウンロードするのに用いられる。
【0068】
一実施形態によれば、SSDコントローラ又はブリッジコントローラは、FPGAに実装され得る。
このような場合、FPGAの一領域は、別に分離(set aside)され、RTLブラックボックスに予め確保(reserved)され得る。
別に分離されて、予め確保されたそのようなFPGAパーティションは、実行時間(runtime)の間にユーザビットストリームをダウンロードするのに使用され得る。
【0069】
本発明のISAプラットフォームは、ユーザアプリケーションを加速するための複数のAABBスロットを提供する。
ユーザは、セルフサービスモデルとして、データ記憶装置のブリッジ装置のコントローラそのものにより駆動され得る機能を実装するために、AABBスロット(又は、ブラックボックス)を用いる。
そのため、本発明のISAプラットフォームは、AABBスロット内で駆動している実際の機能を知らない。
このような顧客セルフサービスアーキテクチャを容易にするため、本発明のISAプラットフォームは、アプリケーション加速を支援するデータ記憶装置又はブリッジ装置を発見するために、最終ユーザのための発見メカニズム(discovery mechanism)を採用する。
【0070】
一実施形態によれば、本発明のISAプラットフォームは、集積されたプログラム可能な/再構成可能な(programmable/reconfigurable)AABBスロットを用いて、装置がアプリケーション加速を支援できるというのを示すための広告/公開メカニズム(advertise/publish mechanism)を、装置が提供することができる。
例えば、装置は、AABB支援を広告/公開するためのNVMe識別コマンド(NVMe Identify command)を発行できる。
【0071】
隣接又はインストレージアプリケーション加速を支援する装置は、支援されるAABBフィーチャーの多様な属性及び特徴を提供するために、識別データ構造(identify data structure)を用いる。
AABB支援装置(AABB supporting device)の属性、パラメータ及び特徴のいくつかの例が識別データ構造を介して利用可能になる。
例えば、識別データ構造は、RTLブラックボックス及びファームウェアブラックボックスを有するAABBスロットの個数、ファームウェアだけを有するAABBスロットの個数、RTLブラックボックス及びファームウェアブラックボックスパラメータを有する各AABBスロットに対するデータ構造に関する情報を含み得る。
【0072】
RTLブラックボックスコンポーネントのためのパラメータの例は、領域、相互接続リソース、ロジックリソースの個数、LUTの属性、RAMブロックの個数、サイズなど、最大クロック周波数、及びインターフェースの個数及びタイプを含み、これに限定されない。
ファームウェアブラックボックスコンポーネントのためのパラメータの例は、関連するファームウェアブラックボックスのためのファームウェアコードサイズ(firmware code size)及びプロセッサ情報を含むが、これに限定されない。
【0073】
一実施形態によれば、AABB支援装置は、RTLブラックボックスにイメージをダウンロードするために、NVMeコマンド(本明細書において、「AABBダウンロード」コマンドとして称される)を発行する。
図6は、本発明の一実施形態による、「AABBダウンロード」コマンドフォーマットを示す図である。
「OPC」は、アドミンコマンドセット又は販売者定義(vendor-defined)コマンドセットのために、予め確保された8ビット特殊オペコード(special opcode)である。
「CID」は、16ビットコマンド識別子である。
「DPTR」は、SGL(scatter gather list)又はPRP(physical region page)方法を用いるデータポインターである。
「DPTR」は、ホストメモリ内のAABBイメージを指示する。
「NUMD」は、イメージの伝送のためのDwords(32ビット無符号整数(unsigned integer))の個数である。
「OFST」は、現在伝送(current transfer)のためのオフセットである。
「AABBスロットID」は、AABBイメージのために用いられるAABBスロット識別子を備える。
【0074】
本発明のISAプラットフォームは、AABBメカニズムの円滑な作動のための複数のAABBスロットマネジメント機能を提供する。
AABBスロットにAABBイメージがダウンロードされると、ダウンロードされたAABBイメージは、アプリケーションが明示的に活性化トリガーコマンド(explicit activate trigger command)を発行してISAプラットフォーム上でAABBイメージを起動(launch)するまで、基本値でリセット状態を保持する。
アプリケーションは、また、現在駆動されている特定のAABBイメージを中止するか、又はリセットできる。
アプリケーションは、ISAプラットフォームからの一つ又はそれ以上のAABBイメージを廃棄できる。
このようなAABBマネジメント機能を容易にするため、本発明のISAプラットフォームは、新しいセットのNVMe AABBスロットマネジメントコマンドを採用する。
【0075】
図7は、本発明の一実施形態によるAABBスロットマネジメントコマンドの例を示す図である。
「OPC」は、アドミンコマンドセット又は販売者定義(vendor-defined)コマンドセットのために予め確保される特殊オペコードであり、「CID」はコマンド識別子である。
「AABBスロットID」は、AABBスロットマネジメントコマンドのために用いられるAABBスロット識別子である。
「AABBアクションID」は、実行されるマネジメントアクションを示す。
例えば、「0x1」は、特定されたAABBイメージを活性化させる。
「0x2」は、特定されたAABBイメージを非活性化させる。
「0x3」は、特定されたAABBイメージをリセットさせる。
「0x4」は、特定されたAABBイメージを廃棄する。
他の「AABBアクションID」は、このようなアクションIDが使用されるところで使用されるか、又はこれらと関連して使用され得る。
【0076】
AABBイメージがダウンロードされ、ISAプラットフォームで起動(launch)されると、アプリケーションは、NVMeコマンド(本明細書において「AABB Comm」コマンドであると称され得る)の新しいセットを用いて、AABBイメージと通信する。
アプリケーションは、AABBに「AABB Comm」コマンドを送信でき、AABBは、再びアプリケーションに応答できる。
例えば、アプリケーションは、AABBに特定のクエリ(query)を送信でき、AABBは、結果をアプリケーションに再び送信できる。
このようなホスト及びAABB通信は、NVMe又は(NVMe-oF)プロトコルの一部として実装され得る。
【0077】
このような場合、「AABB Comm」コマンドは、本発明のISAプラットフォームがインターセプトし、ISAプラットフォーム上で駆動される適切なAABBイメージに伝達できるように特殊なNVMeコマンドの標準フォーマットを有し得る。
図8は、本発明の一実施形態による「AABB Comm」コマンドの例示的なフォーマットを示す図である。
「OPC」は、アドミンコマンドセット又は販売者定義コマンドセットのために予め確保した特殊オペコードであり、「CID」は、コマンド識別子である。
「AABBスロットID」は、AABBスロットマネジメントコマンドのために用いられるAABBスロット識別子である。
【0078】
一実施形態によれば、複数のAABBイメージは、どのような、与えられた時間においても活性化され得る。
従って、
図8に示すように、「AABB Comm」コマンドは、また、16ビットの「AABBスロットID」を運搬する。
このようなAABBスロットIDは、インターセプトした「AABB Comm」コマンドを正しいAABBスロットに伝達するためにISAプラットフォームによって用いられる。
【0079】
「AABB Comm」コマンドをインターセプトすることに加えて、本発明のISAプラットフォームは、遠隔ホストコンピュータ上で駆動されるアプリケーションと通信し、データ記憶装置に、及びこれからユーザデータを伝送するためにAABBドライバが使用できる標準APIのセットを提供する。
本発明のISAプラットフォームが提供するAPIは、例えば、
1)AABB Commコマンドをインターセプトし、適切なAABBスロットに伝達するコマンド、
2)再びアプリケーションにAABB Commコマンドコンプリーションエントリを送信するコマンド、
3)データ記憶装置からユーザデータを読み出すコマンド、
4)データ記憶装置にAABBデータを書き込むコマンド、
5)ホストメモリからユーザデータを読み出すコマンド、及び
6)ホストメモリにAABBデータを書き込むコマンドのような、多様なコマンドを含む。
【0080】
「AABB Comm」コマンドをインターセプトし、適切なAABBスロットに伝達するための第一番目のコマンドは、コマンドを受信したサブミッションキュー識別子(submission queue identifier:SQID)を含む64Bコマンドであり得る。
「AABB Comm」コマンドコンプリーションエントリをホストコンピュータ上で駆動するアプリケーションに送信するための第二番目のコマンドは、16Bコンプリーションエントリ(CB)及びSQIDを含む。
データ記憶装置からユーザデータを読み出すための第三番目のコマンドは、ネームスペースID(namespace ID:NSID)、スタート論理ブロックアドレス(start logical block address:SLBA)、複数のブロック(a number of blocks:NLB)、ISAプラットフォーム内の目的地アドレス(destination address)、及びその他に別の必要な関連した情報だけを含む。
【0081】
データ記憶装置にAABBデータを書き込むための第四番目のコマンドは、NSID、SLBA、NLB、ISAプラットフォーム内のソースアドレス、及びその他に別の必要な関連した情報だけを含み得る。
ホストメモリからユーザデータを読み出すための第五番目のコマンドは、ホストメモリ内のソースアドレス(SGL又はPRP)、ISAプラットフォーム内の目的地アドレス、伝送の長さ(length of transfer)、その他に別の必要な関連した情報を含み得る。
AABBデータをホストメモリに書き込むための第六番目のコマンドは、ISAプラットフォーム内のソースアドレス、ホストメモリ内の目的地アドレス(SGL又はPRP)、伝送の長さ、その他に別の必要な関連した情報を含み得る。
【0082】
このようなAPIを用いて、AABBファームウェアは、ホストアプリケーションコマンドを受信し、受信した「AABB Comm」コマンドのための適切なコンプリーションエントリをホストアプリケーションに送り返すことができる。
データ記憶装置からユーザデータを読み出し、データ記憶装置にユーザデータを書き込むためのAPIコマンドは、データ記憶装置に記憶されたユーザデータをAABBがプロセス又は操作するように許容するのに用いられる。
AABBは、ローカルバッファにデータをフェッチし、データをプロセスするか、又はデータを変換させ、変更されたデータ又はプロセシング結果を再びデータ記憶装置に書き込むことができる。
【0083】
ホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためのAPIコマンドは、AABBファームウェアが遠隔ホストだけでなく、バックエンドデータ記憶装置と共に、又はデータ記憶装置のNANDフラッシュ媒体と直接に共にデータの伝送を調整(orchestrate)することを許容するのに用いられる。
このようなアプリケーションコマンド受信、コマンドコンプリーション、並びに、ホスト及びデータ記憶装置の両方からのデータの伝送を利用することによって、ISAプラットフォームは、データ記憶装置内又はデータ記憶装置に隣接してユーザデータプロセシング及び操作の目的とする機能を実行できる。
【0084】
一実施形態によれば、AABBファームウェアは、AABBコマンドを用いてホストメモリに/からデータ伝送を開始する。
ホスト及びAABBは、一実施形態において、データ記憶装置を介してデータを交換できる。
ホストコンピュータは、データ記憶装置にユーザデータを直接読み出すか、又は書き込むことができ、AABBは、データ記憶装置内のユーザ記憶データ(user data at rest)を読み出すか、又は変更できる。
ホストデータ移動のためのAABBコマンドは、データ操作を即座に(on-the-fly)調整するために、AABBファームウェアにより用いられ得る。
一部のユース(ユーザ)ケースにおいて、ホストコンピュータによってデータが読み出すか、又は書き込むことにより、AABBは、データ操作及びデータの変換を実行できる。
【0085】
図9は、本発明の一実施形態によるAABB可能な(NVMe-oF)SSD内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
(NVMe-oF)SSD900は、コントローラ901及びフラッシュ媒体960を含む。
コントローラ901は、プロセッサ911、PCIeEP921、イーサネットインターフェース918、ブラックボックス再構成コントローラ922、データバッファ923、(NVMe-oF)ホストインターフェース924、及び再構成型ロジックブロック925を含む。
再構成型ロジックブロック925は、RTLブラックボックス(932a~932n)のパーティションを含む。
RTLブラックボックス932の各パーティションは、特定の量のハードウェアリソース及びシステムバス930を介するNVMe/(NVMe-oF)ホストインターフェース924、データバッファ923、ブラックボックス構成コントローラ922のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
【0086】
(NVMe-oF)SSD900は、イーサネットインターフェース918を介してホストコマンドを受信できる。
ホストコマンドは、AABBダウンロードコマンド、AABBスロットマネジメントコマンド、及び「AABB Comm」のようなAABBコマンドを含む。
イーサネットインターフェース918は、遠隔ホストコンピュータからAABBコマンドをインターセプトし、これらをコマンド経路951を介して(NVMe-oF)ホストインターフェース924及びプロセッサ911に伝達する。
(NVMe-oF)SSD900のプロセッサ911は、コンプリーションエントリを生成でき、これを(NVMe-oF)ホストインターフェース924及びイーサネットインターフェース918を経るコマンド経路951を介してホストアプリケーションを送り返す。
【0087】
ダウンロードされたAABBが駆動している間、プロセッサ911は、(NVMe-oF)ホストインターフェース924及びFTL926を経るコマンド経路952を介してフラッシュ媒体960にユーザデータを読み出し及び書き込みのためのAABB開始内部コマンド(AABB-initiated internal commands)(ホスト開始コマンドと対比されて)を発行する。
追加的に、プロセッサ911は、データバッファ923及びイーサネットインターフェース918を経るコマンド経路953を介してホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためにホストアプリケーションと通信する。
ホストアプリケーションは、イーサネットインターフェース918、(NVMe-oF)ホストインターフェース924、及びFTL926を経る経路954を介してメモリに/からフラッシュ媒体960にユーザデータを読み出し及び書き込みためのデータリード及びライト動作を開始する。
【0088】
図10は、本発明の他の実施形態によるAABB可能なNVMeSSD内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
NVMeSSD1000は、コントローラ1001及びフラッシュ媒体1060を含む。
コントローラ1001は、プロセッサ1011、イーサネットインターフェース1018(選択的)、PCIeEPインターフェース1021、ブラックボックス再構成コントローラ1022、データバッファ1023、NVMeホストインターフェース1024、及び再構成型ロジックブロック1025を含む。
再構成型ロジックブロック1025は、RTLブラックボックス(1032a~1032n)のパーティションを含む。
RTLブラックボックス1032の各パーティションは、特定の量のハードウェアリソース及びシステムバス1030を介するNVMeホストインターフェース1024、データバッファ1023、ブラックボックス構成コントローラ1022のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
【0089】
NVMeSSD1000は、PCIeEPインターフェース1021を介してホストコマンドを受信できる。
ホストコマンドは、AABBダウンロードコマンド、AABBスロットマネジメントコマンド、及び「AABB Comm」コマンドのようなAABBコマンドを含む。
PCIeEPインターフェース1021は、遠隔ホストコンピュータからAABBコマンドをインターセプトし、これらをコマンド経路1051を介してNVMeホストインターフェース1024及びプロセッサ1011に伝達する。
NVMeSSD1000のプロセッサ1011は、コンプリーションエントリを生成でき、これをNVMeホストインターフェース1024及びPCIeEPインターフェース1021を経るコマンド経路1051を介してホストアプリケーションに送り返す。
【0090】
ダウンロードされたAABBが駆動している間に、プロセッサ1011は、NVMeホストインターフェース1024及びFTL1026を経るコマンド経路1052を介してフラッシュ媒体1060にユーザデータを読み出し及び書き込みするためのAABB開始内部コマンド(ホスト開始コマンドと対比されて)を発行する。
さらに、プロセッサ1011は、データバッファ1023及びPCIeEPインターフェース1021を経るコマンド経路1053を介してホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためにホストアプリケーションと通信する。
ホストアプリケーションは、PCIeEPインターフェース1021、NVMeホストインターフェース1024、及びFTL1026を経る経路1054を介してホストメモリに/からフラッシュ媒体1060にユーザデータを読み出し及び書き込みのためのデータリード及びライト動作を開始する。
【0091】
本発明の一実施形態によれば、データ記憶デバイスは、データ記憶媒体と、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black-box:AABB)スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register-transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
RTLビットストリームを複数のAABBスロットの内の一つのAABBスロットにダウンロードし、AABBスロットを再構成し、プロセッサのプロセッサコアにファームウェアドライバをロードする構成コントローラと、を有し、
ファームウェアドライバがロードされたプロセッサコアは、AABBスロット内にダウンロードされたRTLビットストリームを用いて、データ記憶媒体内に格納されたデータにアクセスして処理するために、遠隔アプリケーションのデータ加速プロセスを駆動する。
【0092】
データ記憶装置は、不揮発性メモリエクスプレス(nonvolatile memory express:NVMe)ソリッドステートドライブ(solid state drive:SSD)であってもよい。
データ記憶装置は、NVMeオーバーファブリックス(NVMe over fabrics:NVMe-oF)SSDであってもよく、ホストインターフェースは、イーサネットインターフェースであってもよい。
【0093】
遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージをデータ記憶装置に伝送し、構成コントローラは、AABBスロットにダウンロードされたRTLビットストリームを廃棄して第2RTLビットストリームをダウンロードし、第2RTLビットストリーム及び第2ファームウェアドライバイメージを用いて、第2データ加速プロセスを駆動するために第2ファームウェアをプロセッサコアにロードしてもよい。
データ記憶装置は、遠隔アプリケーションにディスカバリー情報をさらに伝送し、ディスカバリー情報は、AABBスロットの機能(features)、特徴、及び属性を含んでもよい。
【0094】
ホストコマンドは、RTLビットストリーム及びファームウェアドライバを活性化、非活性化及び廃棄するためのマネジメントコマンドを含んでもよい。
ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含んでもよい。
ファームウェアドライバがロードされたプロセッサコアは、遠隔アプリケーションに依存しない(agnostic)アプリケーションプログラムインターフェース(application program interface:API)呼び出し(call)のセットを用いて、遠隔アプリケーションのデータ加速プロセスを実行している間に、データ記憶媒体に格納されたデータにアクセスする。
【0095】
一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(look-up table:LUT)、ランダムアクセスメモリ(RAM)ブロック、ハードマクロ、並びに、クロック及びリセット信号を含んでもよい。
一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、プロセッサコアに対するアドバンスドエクステンシブルインターフェース(advanced extensible interface:AXI)、ダブルデータレート(double data rate:DDR)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(peripheral component interconnect express:PCIe)インターフェース、及びイーサネットインターフェースを含んでもよい。
【0096】
本発明の他の実施形態によれば、ブリッジ装置は、データ記憶装置のデータ記憶媒体内に格納されたデータにアクセスするデータ記憶インターフェースと、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black-box:AABB)スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register-transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、RTLビットストリームを複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、プロセッサのプロセッサコアにファームウェアドライバをロードする構成コントローラと、を有し、ファームウェアドライバがロードされたプロセッサコアは、データ記憶インターフェースを介してデータ記憶装置のデータ記憶媒体内に格納されたデータにアクセスし、AABBスロット内にダウンロードされたRTLビットストリームを用いて、前記データを処理するために遠隔アプリケーションのデータ加速プロセスを実行する。
【0097】
データ記憶インターフェースは、NVMeインターフェースであってもよい。
ホストインターフェースはイーサネットインターフェースであってもよく、データ記憶装置は(NVMe-oF)SSDであってもよい。
遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージをブリッジ装置に伝送し、構成コントローラは、AABBスロットにダウンロードされたRTLビットストリームを廃棄して第2RTLビットストリームをダウンロードし、前記第2RTLビットストリーム及び第2ファームウェアドライバイメージを用いて、第2データ加速プロセスを実行するために第2ファームウェアドライバイメージをプロセッサコアにロードする。
【0098】
ブリッジ装置は、遠隔アプリケーションにディスカバリー情報をさらに伝送し、ディスカバリー情報は、前記AABBスロットの機能、特徴、及び属性を含んでもよい。
ホストコマンドは、RTLビットストリーム及びファームウェアドライバを活性化、非活性化及び廃棄するためのマネジメントコマンドを含んでもよい。
ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含んでもよい。
ファームウェアドライバがロードされた前記プロセッサコアは、遠隔アプリケーションに依存しないアプリケーションプログラムインターフェース(API)呼び出しのセットを用いて、遠隔アプリケーションのデータ加速プロセスを実行している間に、データ記憶媒体に格納されたデータにデータ記憶インターフェースを介してアクセスしてもよい。
【0099】
一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(LUT)、ランダムアクセスメモリ(RAM)ブロック、ハードマクロ、及びクロック及びリセット信号を含んでもよい。
一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、プロセッサコアに対するアドバンスドエクステンシブルインターフェース(AXI)、ダブルデータレート(DDR)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(PCIe)インターフェース、及びイーサネットインターフェースを含んでもよい。
【0100】
尚、本発明は、上述の実施形態に限られるものではない。NVMe及び(NVMe-oF)装置のようなデータ記憶装置内におけるインストレージ加速を提供するためのシステム及び方法である本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【産業上の利用可能性】
【0101】
本発明は、データ記憶装置におけるインストレージ加速を提供してデータ処理を高速化するため、非揮発性メモリなどを用いるソリッドステートドライブ(SSD)などのようなデータ記憶システムに好適に使用される。
【符号の説明】
【0102】
100 データ記憶システム
110 ホスト(コンピュータ)
111 アプリケーション
112 OS/ファイルシステム
113 (NVMe-oF)ドライバ
150 イーサネット
160 シャーシ
161 イーサネットスイッチ
162 ベースボードマネジメントコントローラ(BMC)
163 PCIeスイッチ
164 マネジメントインターフェース
165 ミッドプレーン
170(170a~170n) eSSD
200 (NVMe-oF)ブリッジ装置
211 隣接ストレージコンピュート(NSC)プロセッサ
212 システムメモリ
213 コマンドパーサー
214 コマンド分類器
215 コマンドプロセッサ
216 PSQモジュール
217 PAPPモジュール
218 (NVMe-oF)応答機
219 PCIeCEパーサー
220 PCIe-サイドコマンドコンプリーションキュー(PCQ)モジュール
231 特殊コマンドユニット(SCU)
232 ファブリックコマンドユニット(FCU)
233 アドミンコマンドユニット(ACU)
234 リードコマンドユニット(RCU)
235 ライトコマンドユニット(WCU)
400 ブリッジ装置
411 プロセッサ
417 PCIeインターフェース
418 (選択的)イーサネットインターフェース
421 PCIeエンドポイント(EP)
422 ブラックボックス(BB)再構成コントローラ
423 データバッファ
424 NVMe/(NVMe-oF)ホストインターフェース
425 再構成型ロジックブロック
430 システムバス
431(431a~431n) ブラックボックス(BB)ドライバ
432 RTLブラックボックス
432a~432n RTLブラックボックスのパーティション
450 バックエンドSSD