(57)【要約】【課題】装置内のインストレージ加速を提供するデータ記憶装置を提供する。【解決手段】データ記憶媒体、複数プロセッサコアを含むプロセッサ、再構成型ロジックブロック、相互接続、メモリを含む複数アプリケーション（ＡＰＰ）加速ブラックボックス（ＡＡＢＢ）スロット（ＳＴ）、遠隔ホストで実行される遠隔ＡＰＰからレジスタ伝送レベル（ＲＴＬ）ビットストリーム（ＢＳ）及びファームウェアドライバ（ＦＤ）を含むイメージファイルを含むホストコマンドを受信するホストインターフェース、ＲＴＬＢＳを複数ＡＡＢＢＳＴの一つのＡＡＢＢＳＴにダウンロードしＡＡＢＢＳＴを再構成しプロセッサのプロセッサコアにＦＤをロードする構成コントローラを有し、ＦＤがロードされたプロセッサコアはＡＡＢＢＳＴ内にダウンロードされたＲＴＬＢＳを用いデータ記憶媒体内に格納されたデータにアクセスして処理するために遠隔ＡＰＰのデータ加速プロセスを実行する。【選択図】  図４
2019075109.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶装置であって、
データ記憶媒体と、
複数のプロセッサコアを含むプロセッサと、
再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス（ａｐｐｌｉｃａｔｉｏｎ  ａｃｃｅｌｅｒａｔｉｏｎ  ｂｌａｃｋ−ｂｏｘ：以下、ＡＡＢＢと記す）スロットと、
遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル（ｒｅｇｉｓｔｅｒ−ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ：以下、ＲＴＬと記す）ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
前記ＲＴＬビットストリームを、前記複数のＡＡＢＢスロットの内の一つのＡＡＢＢスロットにダウンロードし、前記ＡＡＢＢスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロード（ｌｏａｄ）する構成コントローラと、を有し、
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記ＡＡＢＢスロット内にダウンロードされた前記ＲＴＬビットストリームを用いて、前記データ記憶媒体内に格納されたデータにアクセスして処理（ｐｒｏｃｅｓｓ）するために、前記遠隔アプリケーションのデータ加速プロセスを実行（ｒｕｎ）することを特徴とするデータ記憶装置。
【請求項２】
前記データ記憶装置は、非揮発性メモリエクスプレス（ｎｏｎｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ：以下、ＮＶＭｅと記す）ソリッドステートドライブ（以下、ＳＳＤと記す）であることを特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記データ記憶装置は、ＮＶＭｅオーバーファブリックス（ＮＶＭｅ  ｏｖｅｒ  ｆａｂｒｉｃｓ：以下、（ＮＶＭｅ−ｏＦ）と記す）ＳＳＤであり、前記ホストインターフェースはイーサネットインターフェースであることを特徴とする請求項１に記載のデータ記憶装置。
【請求項４】
前記遠隔ホストコンピュータは、第２ＲＴＬビットストリーム及び第２ファームウェアドライバイメージを前記データ記憶装置に伝送し、
前記構成コントローラは、前記ＡＡＢＢスロットにダウンロードされた前記ＲＴＬビットストリームを廃棄して前記第２ＲＴＬビットストリームをダウンロードし、前記第２ＲＴＬビットストリーム及び前記第２ファームウェアドライバイメージを用いて第２データ加速プロセスを実行するために、前記第２ファームウェアを前記プロセッサコアにロードすることを特徴とする請求項１に記載のデータ記憶装置。
【請求項５】
前記データ記憶装置は、前記遠隔アプリケーションにディスカバリー情報をさらに伝送し、
前記ディスカバリー情報は、前記ＡＡＢＢスロットの機能（ｆｅａｔｕｒｅｓ）、特徴、及び属性を含むことを特徴とする請求項１に記載のデータ記憶装置。
【請求項６】
前記ホストコマンドは、前記ＲＴＬビットストリーム及び前記ファームウェアドライバを活性化、非活性化、及び廃棄するためのマネジメントコマンドを含むことを特徴とする請求項１に記載のデータ記憶装置。
【請求項７】
前記ホストコマンドは、活性化されたＡＡＢＢスロットと通信するためのＡＡＢＢスロット通信コマンドを含み、
前記ＡＡＢＢスロット通信コマンドは、活性化されたＡＡＢＢスロットの識別子を含むことを特徴とする請求項１に記載のデータ記憶装置。
【請求項８】
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記遠隔アプリケーションに依存しない（ａｇｎｏｓｔｉｃ）アプリケーションプログラムインターフェース（以下、ＡＰＩと記す）呼び出し（ｃａｌｌ）のセットを用いて、前記遠隔アプリケーションの前記データ加速プロセスを実行している間に、前記データ記憶媒体に記憶された前記データにアクセスすることを特徴とする請求項１に記載のデータ記憶装置。
【請求項９】
一つ又はそれ以上のＡＡＢＢスロットは、ロジック領域、相互接続、ルックアップテーブル（ｌｏｏｋ−ｕｐ  ｔａｂｌｅ：以下、ＬＵＴと記す）、ランダムアクセスメモリ（以下、ＲＡＭと記す）ブロック、ハードマクロ、並びに、クロック及びリセット信号を含むことを特徴とする請求項１に記載のデータ記憶装置。
【請求項１０】
一つ又はそれ以上のＡＡＢＢスロットは、プログラミング可能なクロック／リセット、前記プロセッサコアに対するアドバンスドエクステンシブルインターフェース（ａｄｖａｎｃｅｄ  ｅｘｔｅｎｓｉｂｌｅ  ｉｎｔｅｒｆａｃｅ：以下、ＡＸＩと記す）、ダブルデータレート（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ：以下、ＤＤＲと記す）メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ：以下、ＰＣＩｅと記す）インターフェース、及びイーサネット（登録商標）インターフェースを含むことを特徴とする請求項１に記載のデータ記憶装置。
【請求項１１】
データ記憶装置のデータ記憶媒体内に格納されたデータにアクセスするデータ記憶インターフェースと、
複数のプロセッサコアを含むプロセッサと、
再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス（ａｐｐｌｉｃａｔｉｏｎ  ａｃｃｅｌｅｒａｔｉｏｎ  ｂｌａｃｋ−ｂｏｘ：以下、ＡＡＢＢと記す）スロットと、
遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル（ｒｅｇｉｓｔｅｒ−ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ：以下、ＲＴＬと記す）ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
前記ＲＴＬビットストリームを、前記複数のＡＡＢＢスロットの内の一つのＡＡＢＢスロットにダウンロードし、前記ＡＡＢＢスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロードする構成コントローラと、を有し、
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記データ記憶インターフェースを介して前記データ記憶装置の前記データ記憶媒体内に格納された前記データにアクセスし、前記ＡＡＢＢスロット内にダウンロードされた前記ＲＴＬビットストリームを用いて、前記データを処理（ｐｒｏｃｅｓｓ）するために前記遠隔アプリケーションのデータ加速プロセスを実行することを特徴とするブリッジ装置。
【請求項１２】
前記データ記憶インターフェースは、ＮＶＭｅインターフェースであることを特徴とする請求項１１に記載のブリッジ装置。
【請求項１３】
前記ホストインターフェースは、イーサネットインターフェースであり、
前記データ記憶装置は、（ＮＶＭｅ−ｏＦ）ＳＳＤであることを特徴とする請求項１１に記載のブリッジ装置。
【請求項１４】
前記遠隔ホストコンピュータは、第２ＲＴＬビットストリーム及び第２ファームウェアドライバイメージを前記ブリッジ装置に伝送し、
前記構成コントローラは、前記ＡＡＢＢスロットにダウンロードされた前記ＲＴＬビットストリームを廃棄して前記第２ＲＴＬビットストリームをダウンロードし、前記第２ＲＴＬビットストリーム及び前記第２ファームウェアドライバイメージを用いて、第２データ加速プロセスを実行するために前記第２ファームウェアドライバイメージを前記プロセッサコアにロードすることを特徴とする請求項１１に記載のブリッジ装置。
【請求項１５】
前記ブリッジ装置は、前記遠隔アプリケーションにディスカバリー情報をさらに伝送し、
前記ディスカバリー情報は、前記ＡＡＢＢスロットの機能（ｆｅａｔｕｒｅｓ）、特徴、及び属性を含むことを特徴とする請求項１１に記載のブリッジ装置。
【請求項１６】
、
前記ホストコマンドは、前記ＲＴＬビットストリーム及び前記ファームウェアドライバを活性化、非活性化、及び廃棄するためのマネジメントコマンドを含むことを特徴とする請求項１１に記載のブリッジ装置。
【請求項１７】
前記ホストコマンドは、活性化されたＡＡＢＢスロットと通信するためのＡＡＢＢスロット通信コマンドを含み、
前記ＡＡＢＢスロット通信コマンドは、活性化されたＡＡＢＢスロットの識別子を含むことを特徴とする請求項１１に記載のブリッジ装置。
【請求項１８】
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記遠隔アプリケーションに依存しないアプリケーションプログラムインターフェース（ＡＰＩ）呼び出しのセットを用いて、前記遠隔アプリケーソンの前記データ加速プロセスを実行している間に、前記データ記憶媒体に記憶された前記データに前記データ記憶インターフェースを介してアクセスすることを特徴とする請求項１１に記載のブリッジ装置。
【請求項１９】
一つ又はそれ以上のＡＡＢＢスロットは、ロジック領域、相互接続、ルックアップテーブル（ＬＵＴ）、ランダムアクセスメモリ（ＲＡＭ）ブロック、ハードマクロ、並びに、クロック及びリセット信号を含むことを特徴とする請求項１１に記載のブリッジ装置。
【請求項２０】
一つ又はそれ以上のＡＡＢＢスロットは、プログラミング可能なクロック／リセット、前記プロセッサコアに対するアドバンスドエクステンシブルインターフェース（ＡＸＴ）、ダブルデータレート（ＤＤＲ）メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス（ＰＣＩｅ）インターフェース、及びイーサネットインターフェースを含むことを特徴とする請求項１１に記載のブリッジ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主にデータ記憶システム内におけるデータプロセシング加速に関し、特に、データ記憶装置（具体的には、非揮発性メモリエクスプレス（ｎｏｎｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ：以下、ＮＶＭｅ）及び（ＮＶＭｅ  ｏｖｅｒ  ｆａｂｒｉｃｓ：（ＮＶＭｅ−ｏＦ）装置）内におけるインストレージ（ｉｎ−ｓｔｏｒａｇｅ）加速を提供するデータ記憶装置及びブリッジ装置に関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）は、ハードディスクドライブ（ＨＤＤ）のような、既存の記憶装置を速く代替して急速に現代のデータセンタインフラストラクチャー（ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）の主要なストレージ構成要素になりつつある。
ＳＳＤは、低いレイテンシ（ｌａｔｅｎｃｙ）、高いデータリード／ライト処理量（ｔｈｒｏｕｇｈｐｕｔ）、及びユーザデータの信頼性及び持続性を有するストレージを提供する。
非揮発性メモリエクスプレスオーバーファブリックス（Ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ（ＮＶＭｅ）  ｏｖｅｒ  ｆａｂｒｉｃｓ：以下、（ＮＶＭｅ−ｏＦ）と記す）は、イーサネット（登録商標、以下、省略）、ファイバチャンネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）、及びインフィニバンド（Ｉｎｆｉｎｉｂａｎｄ）のようなファブリックネットワークを介して数百及び数千のＳＳＤを接続させる、新しく浮上している技術である。
【０００３】
（ＮＶＭｅ−ｏＦ）プロトコルは、多くのＮＶＭｅＳＳＤを、形成されたファブリックネットワークを介して遠隔ホストに接続させる遠隔直接接続記憶装置（ｒｅｍｏｔｅ  ｄｉｒｅｃｔ−ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ：ｒＤＡＳ）を可能にする。
（ＮＶＭｅ−ｏＦ）プロトコルは、またネットワークを介してＮＶＭｅコマンド、データ及び応答を搬送（ｃａｒｒｙ）するための信頼性のあるトランスポートサービスを提供するため、遠隔直接メモリアクセス（ｒｅｍｏｔｅ  ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ：以下、ＲＤＭＡと記す）を支援する。
ｉＷＡＲＰ、「ＲｏＣＥ  ｖ１」、及び「ＲｏＣＥ  ｖ２」は、ＲＤＭＡサービスを提供するトランスポートプロトコルの一部の例である。
【０００４】
分割された（ｄｉｓａｇｇｒｅｇａｔｅｄ）データ記憶装置（例えば、（ＮＶＭｅ−ｏＦ）互換ＳＳＤ、本明細書においては、簡略に（ＮＶＭｅ−ｏＦ）ＳＳＤ又はｅＳＳＤとも記する）を用いるデータ記憶システムは、ホストコンピュータで実行されるアプリケーションに大量のストレージを提供できる。
アプリケーションは、分割されたデータ記憶装置から大量のデータ（ビッグデータ）を収集し、これらを分析できる。
【０００５】
ビッグデータプロセシングスケールは非常に大きいので、意味のあるビッグデータマイニング（ｄａｔａ  ｍｉｎｉｎｇ）を遂行するためのインフラストラクチャーは、過度な費用がかかる可能性が多く、多くのコンピューティングリソース、大型システムメモリ、高帯域幅ネットワークだけでなく、ビッグデータを記憶するための大型の高性能データ記憶装置が要求される。
従って、データプロセシングマイニングタスクの一部をホストコンピュータからデータ記憶装置に転嫁（ｏｆｆｌｏａｄ）させ、データ記憶装置からホストコンピュータへのデータ移動を最小化することが課題となっている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第９７０３４９４号明細書
【特許文献２】米国特許出願公開第２００９０２５１８６７号明細書
【特許文献３】米国特許出願公開第２０１２００８９６５５号明細書
【特許文献４】米国特許出願公開第２０１７００６８４６０号明細書
【特許文献５】米国特許出願公開第２００８０２８８２３１号明細書
【特許文献６】米国特許出願公開第２０１００１４６３３８号明細書
【特許文献７】米国特許出願公開第２０１３０３０５２４１号明細書
【特許文献８】米国特許出願公開第２０１６０２５９５９７号明細書
【特許文献９】米国特許出願公開第２０１３００６０９８１号明細書
【特許文献１０】米国特許出願公開第２０１５０２５４０８８号明細書
【特許文献１１】米国特許出願公開第２０１４００７１８５５号明細書
【特許文献１２】米国特許出願公開第２０１５０１８０５０３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は上記従来のＮＶＭｅＳＳＤにおける問題点に鑑みてなされたものであって、本発明の目的は、データ記憶装置（具体的には、ＮＶＭｅ及び（ＮＶＭｅ−ｏＦ）装置）内のインストレージ加速を提供するデータ記憶装置及びブリッジ装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた本発明によるデータ記憶装置は、データ記憶媒体と、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス（ａｐｐｌｉｃａｔｉｏｎ  ａｃｃｅｌｅｒａｔｉｏｎ  ｂｌａｃｋ−ｂｏｘ：以下、ＡＡＢＢと記す）スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル（ｒｅｇｉｓｔｅｒ−ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ：以下、ＲＴＬと記す）ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、前記ＲＴＬビットストリームを、前記複数のＡＡＢＢスロットの内の一つのＡＡＢＢスロットにダウンロードし、前記ＡＡＢＢスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロード（ｌｏａｄ）する構成コントローラと、を有し、前記ファームウェアドライバがロードされた前記プロセッサコアは、前記ＡＡＢＢスロット内にダウンロードされた前記ＲＴＬビットストリームを用いて、前記データ記憶媒体内に格納されたデータにアクセスして処理（ｐｒｏｃｅｓｓ）するために、前記遠隔アプリケーションのデータ加速プロセスを実行（ｒｕｎ）することを特徴とする。
【０００９】
上記目的を達成するためになされた本発明による、ブリッジ装置は、データ記憶装置のデータ記憶媒体内に格納されたデータにアクセスするデータ記憶インターフェースと、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス（ａｐｐｌｉｃａｔｉｏｎ  ａｃｃｅｌｅｒａｔｉｏｎ  ｂｌａｃｋ−ｂｏｘ：以下、ＡＡＢＢと記す）スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル（ｒｅｇｉｓｔｅｒ−ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ：以下、ＲＴＬと記す）ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、前記ＲＴＬビットストリームを、前記複数のＡＡＢＢスロットの内の一つのＡＡＢＢスロットにダウンロードし、前記ＡＡＢＢスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロードする構成コントローラと、を有し、前記ファームウェアドライバがロードされた前記プロセッサコアは、前記データ記憶インターフェースを介して前記データ記憶装置の前記データ記憶媒体内に格納された前記データにアクセスし、前記ＡＡＢＢスロット内にダウンロードされた前記ＲＴＬビットストリームを用いて、前記データを処理（ｐｒｏｃｅｓｓ）するために前記遠隔アプリケーションのデータ加速プロセスを実行することを特徴とする。
【発明の効果】
【００１０】
本発明に係るデータ記憶装置及びブリッジ装置によれば、隣接（ｎｅａｒ）又はインストレージ加速を遂行するために、ヘビーデューティー（ｈｅａｖｙ−ｄｕｔｙ）データプロセシング及び操作を遂行するホストアプリケーションの機能を、データ記憶装置又はブリッジ（ｂｒｉｄｇｅ）装置に転嫁させることによって、効率的なエネルギー及び帯域幅を有するデータソリューションを提供すると同時に、全体的な演算及び記憶インフラストラクチャーのコストを軽減させ得る、という効果がある。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態による例示的なデータ記憶システムを示すブロック図である。
【図２】本発明の一実施形態による例示的な（ＮＶＭｅ−ｏＦ）ブリッジ装置の構成を示すブロック図である。
【図３】本発明の一実施形態による例示的なアプリケーション加速ブラックボックス（ＡＡＢＢ）イメージのデータ構造を示す図である。
【図４】本発明の一実施形態によるバックエンドＳＳＤと共にブリッジ装置内に実装された例示的なインストレージ加速プラットフォームの構成を示すブロック図である。
【図５】本発明の一実施形態によるデータ記憶装置内に実装された例示的なＩＳＡプラットフォームの構成を示すブロック図である。
【図６】本発明の一実施形態によるＡＡＢＢダウンロードコマンドフォーマットを示す図である。
【図７】本発明の一実施形態によるＡＡＢＢスロットマネジメントコマンドの例を示す図である。
【図８】本発明の一実施形態による「ＡＡＢＢ  Ｃｏｍｍ」コマンドの例示的なフォーマットを示す図である。
【図９】本発明の一実施形態によるＡＡＢＢ可能な（ＮＶＭｅ−ｏＦ）ＳＳＤ内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
【図１０】本発明の他の実施形態によるＡＡＢＢ可能なＮＶＭｅＳＳＤ内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
【発明を実施するための形態】
【００１２】
次に、本発明に係るデータ記憶装置及びブリッジ装置を実施するための形態の具体例を図面を参照しながら説明する。
【００１３】
添付した図面は、必ずしも比率に合わせて示したものではなく、例示を示すための目的のために、図面の全体にわたって類似した構造の構成要素又は機能は、一般的に同様の符号番号によって示す。
図面は、ただ本明細書で記述される様々な実施形態が容易に記述されるように意図され、また、図面は、本明細書で開示する教示事項の全ての態様を記述せず、請求項の権利範囲を限定しない。
【００１４】
本明細書で開示する各機能（特性）（ｆｅａｔｕｒｅｓ）及び教示事項は、データ記憶装置（具体的には、ＮＶＭｅ及び（ＮＶＭｅ−ｏＦ）装置）内のインストレージ加速を提供するための、他の機能（特性）及び教示事項と分離されて、又はこれらと共に利用され得る。
多数のこのような追加的な機能（特性）及び教示事項を利用する代表的な例は、分離されてからだけではなく、共に組み合わせて、添付された図面を参照してより詳細に記述される。
このような詳細な記述は、ただ当業者に本教示事項の態様を実施するための、より具体的な事項を教示するように意図され、請求項の権利範囲を制限するためのものと意図されない。
そのため、詳細な説明内に上記に開示した機能（特性）の組み合わせは、最も広い範囲の意味における教示事項を実施するために必須的なものではなく、代わりにただ本教示事項の代表的な例示を具体的に記述するために教示する。
以下の記述において、説明の目的のために、具体的な命名法が本発明の完全な理解のために提示する。
しかしながら、このような具体的な細部事項が、本明細書の教示事項を実施するために必要でないというのは、当業者に自明であろう。
【００１５】
本明細書の詳細な説明の一部分は、コンピュータメモリ内におけるデータビットに対する演算の記号的表現及びアルゴリズムの側面で提示した。
このようなアルゴリズムに対する記述及び表現は、データプロセス分野内の当業者が自分の作業の要旨を他の当業者に効果的に伝達するために使用される。
本明細書において、そして一般的に、アルゴリズムは、目的とする結果をもたらす一貫性のある（ｓｅｌｆ−ｃｏｎｓｉｓｔｅｎｔ）ステップの順序と考えられる。
ステップは、物理的量の物理的操作を要求することである。通常、しかしながら、必須ではないように、このような物理的量は、記憶、伝送（ｔｒａｎｓｆｅｒ）、結合、比較、及びその他に操作が可能な電気的又は磁界的信号の形態を有する。
時には、主に汎用（ｃｏｍｍｏｎ  ｕｓａｇｅ）のための理由で、このような信号は、ビット、値、構成要素、記号、用語、数字、又はこれと類似するものと示すのが便利であると知られている。
【００１６】
しかしながら、このような全ての用語及びこれと類似の用語は、適切な物理的量と連携されなければならず、これらは、ただこのような物理的量に適用される便利なラベル（ｌａｂｅｌ）に過ぎないという点に留意しなければならない。
以下に開示した説明から明白に別に異なるように記述されない限り、明細書の全般にわたって「プロセシング（ｐｒｏｃｅｓｓｉｎｇ）」、「コンピューティング（ｃｏｍｐｕｔｉｎｇ）」、「計算する（ｃａｌｃｕｌａｔｉｎｇ）、」、「決定する、」「表示する、」又はこれと類似のもののような用語を用いる説明は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）量として表現されるデータを操作するとか、又はこれをコンピュータシステムメモリ又はレジスタ又は他の情報記憶、伝送又は表示装置内の物理的量で類似に表現される、他のデータに変換するコンピュータシステム又はこれと類似の電子コンピューティング装置の作動及びプロセスを示すものと理解されるべきである。
【００１７】
さらに、本教示事項の追加的な有用な実施形態を提供するために、代表的な例示の多様な機能（特性）及び従属請求項は、具体的且つ明白に列挙されない方式で組み合せられる。
全ての数値範囲又は個体のグループに対する表示は、元の開示目的だけでなく、請求された発明の要旨を制限する目的のために、全ての可能な中間値又は中間個体を開示することを明示する。
図面内に示した構成のサイズ及び形状は、本教示事項がどのように実施され得るか理解を助けるために設計されたものであり、例示内に示したサイズ及び形状を制限するように意図されたものではないことを明示する。
【００１８】
図１は、本発明の一実施形態による例示的なデータ記憶システムを示すブロック図である。
データ記憶システム１００は、一つ又はそれ以上の（ＮＶＭｅ−ｏＦ）互換イーサネットＳＳＤ（ｅＳＳＤ）を含むシャーシ１６０（本明細書において、ｅＳＳＤシャーシとも示す）及びホスト１１０を含む。
例えば、シャーシ１６０は、２４又は４８個のｅＳＳＤを含み得る。
シャーシ１６０内のｅＳＳＤは、ｅＳＳＤ（１７０ａ）〜ｅＳＳＤ（１７０ｎ）でそれぞれ表わす（本明細書において、これらを含めてｅＳＳＤ１７０として示す）。
【００１９】
ホスト１１０は、アプリケーション１１１、オペレーションシステム（ＯＳ）／ファイルシステム（ＦＳ）１１２、及び（ＮＶＭｅ−ｏＦ）ドライバ１１３を含む。
ホスト１１０のイニシエータ（例えば、アプリケーション１１１は、（ＮＶＭｅ−ｏＦ）ドライバ１１３を用いて、イーサネット１５０を介してｅＳＳＤ１７０と（ＮＶＭｅ−ｏＦ）接続を設定できる。
シャーシ１６０は、イーサネットスイッチ１６１、ベースボードマネジメントコントローラ（ｂａｓｅｂｏａｒｄ  ｍａｎａｇｅｍｅｎｔ  ｃｏｎｔｒｏｌｌｅｒ：ＢＭＣ）１６２、及びペリフェラルコンポーネント相互接続エクスプレス（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ：ＰＣＩｅ）スイッチ１６３を含む。
イーサネットスイッチ１６１は、ミッドプレーン（ｍｉｄｐｌａｎｅ）１６５を介してｅＳＳＤ１７０へのイーサネット接続を提供し、ＰＣＩｅスイッチ１６３は、ミッドプレーン１６５を介してｅＳＳＤ１７０へのマネジメントインターフェース１６４を提供する。
ＢＭＣ１６２は、システム管理者（ｓｙｓｔｅｍ  ａｄｍｉｎｉｓｔｒａｔｏｒ）によって提供される命令語に基づいてｅＳＳＤ１７０をプログラムできる。
【００２０】
イーサネットスイッチ１６１は、ｅＳＳＤ１７０及びホスト１１０の間のネットワーク接続性を提供する。
イーサネットスイッチ１６１は、一つ又はそれ以上のホストに接続するための大容量（ｌａｒｇｅ‐ｃａｐａｃｉｔｙ）（例えば、１００Ｇｂｐｓ）アップリンク（ｕｐｌｉｎｋ）を有し得る。
イーサネットスイッチ１６１は、また、ｅＳＳＤ１７０に接続するための多重の低容量（ｌｏｗｅｒ‐ｃａｐａｃｉｔｙ）（例えば、２５Ｇｂｐｓ）ダウンリンク（ｄａｗｎｌｉｎｋ）を有し得る。
例えば、イーサネットスイッチ１６１は、１２個の１００Ｇｂｐｓのアップリンク及び２４個又は４８個の２５Ｇｂｐｓのダウンリンクを含み得る。
イーサネットスイッチ１６１は、ＢＭＣ１６２への特殊設定／マネジメントポートを有し得る。
【００２１】
ＢＭＣ１６２は、イーサネットスイッチ１６１、ＰＣＩｅスイッチ１６３、及びｅＳＳＤ１７０を含むシャーシ１６０の内部コンポーネントを管理する。
ＢＭＣ１６２は、システムマネジメントのためのシステムマネジメントバス（ｓｙｓｔｅｍ  ｍａｎａｇｅｍｅｎｔ  ｂｕｓ：ＳＭＢｕｓ）インターフェース及び／又はＰＣＩｅを支援する。
ＢＭＣ１６２は、ｅＳＳＤ１７０を設定し、イーサネットスイッチ１６１をプログラムできる。
【００２２】
サーバベースのオールフラッシュアレイ（ａｌｌ‐ｆｌａｓｈ  ａｒｒａｙｓ：ＡＦＡｓ）と同様に、ｅＳＳＤ１７０は、ｅＳＳＤの束、これらの外部のホストと接続させるネットワークスイッチ（即ち、イーサネットスイッチ１６１及びこれを管理するためのＢＭＣ１６２を含むサーバレスエンクロージャ（ｓｅｒｖｅｒ‐ｌｅｓｓ  ｅｎｃｌｏｓｕｒｅ）（即ち、シャーシ１６０）に共に収納される。
ＢＭＣ１６２は、ブート（ｂｏｏｔ）を処理し、ｅＳＳＤ装置への経路を制御する。
完全な（ｆｕｌｌ‐ｆｌｅｄｇｅｄ）ｘ８６ＣＰＵとは異なり、ＢＭＣ１６２は、ＣＰＵが処理できる全てのタスクが処理できず、そのため、最小限のエンクロージャマネジメント機能を遂行する。
ＢＭＣ１６２は、ＳＭＢｕｓ又はＰＣＩｅバスを介して、接続性、状態、温度、ログ、及びエラーに対する、接続されたｅＳＳＤ１７０及び関連するハードウェアの自体検査（ｈｅａｌｔｈ  ｃｈｅｃｋ）を維持する。
【００２３】
ｅＳＳＤ１７０は、高性能及び大容量データ記憶ソリューションを提供する。
（ＮＶＭｅ−ｏＦ）プロトコルは、遠隔直接接続（ｒｅｍｏｔｅ  ｄｉｒｅｃｔ‐ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ：ｒＤＡＳ）方式でホストコンピュータ１１０で駆動されるアプリケーション１１１に数百個及び数千個の分割されたｅＳＳＤ１７０が接続されるようにする。
本発明のシステム及び方法は、分割されたｅＳＳＤ１７０に収集されて記憶される大量のデータの移動及びプロセシングを容易にする。
既存のホストコンピュータを利用する、このようなデータプロセシングの費用は非常に高い可能性がある。
【００２４】
ホストコンピュータ１１０で駆動されるアプリケーション１１１は、ネットワーク（例えば、イーサネット１５０）にかけているｅＳＳＤ１７０のような分割されたデータ記憶装置内に格納されたデータをフェッチ（ｆｅｔｃｈ）することにより、マシンラーニングのようなプロセスを遂行し、データを処理して、データ記憶装置にデータ処理の結果を再び格納できる。
データフェチング、データ処理、及び格納を含む、このようなプロセスは、ホストコンピュータ上の過度なエネルギー、コンピューティング、ネットワーク、及びデータ記憶リソースを消費して非常に非効率的である可能性がある。
さらに、このようなプロセスは、ホストコンピュータに高価のコンピューティング及びメモリリソース上の要求事項を負担させる可能性がある。
【００２５】
図２は、本発明の一実施形態による例示的な（ＮＶＭｅ−ｏＦ）ブリッジ装置の構成を示すブロック図である。
ブリッジ装置は、データ記憶装置に集積されるか、又は、データ記憶装置に接続されて分離された（そして、別個の）装置を示す。
続く例示において、ｅＳＳＤは、ブリッジ装置及びバックエンドＳＳＤの全てを含むものと記述するが、しかし、ｅＳＳＤを形成するために、データ記憶装置（バックエンドＳＳＤ）は、別個のブリッジ装置に接続され得るか、又は他の実施形態においてｅＳＳＤは、ブリッジ装置それ自体又はブリッジ装置の隣接コンピューティング（ｎｅａｒ−ｃｏｍｐｕｔｉｎｇ）機能を遂行できる装置を示し得ることを理解できるであろう。
【００２６】
（ＮＶＭｅ−ｏＦ）ブリッジ装置２００は、隣接ストレージコンピュート（ｎｅａｒ−ｓｔｏｒａｇｅ  ｃｏｍｐｕｔｅ：ＮＳＣ）プロセッサ２１１、システムメモリ２１２、コマンドパーサー（ｃｏｍｍａｎｄ  ｐａｒｓｅｒ）２１３、コマンド分類器（ｃｏｍｍａｎｄ  ｃｌａｓｓｉｆｉｅｒ）２１４、コマンドプロセッサ２１５、ＰＣＩｅ−サイドコマンドサブミッションキュー（ＰＣＩｅ−ｓｉｄｅ  ｃｏｍｍａｎｄ  ｓｕｂｍｉｓｓｉｏｎ  ｑｕｅｕｅ：ＰＳＱ）モジュール２１６、ＰＣＩｅアプリケーション（ＰＣＩｅ  ａｐｐｌｉｃａｔｉｏｎ：ＰＡＰＰ）／ルート（ｒｏｏｔ）コンプレックス（ｃｏｍｐｌｅｘ）モジュール２１７、（ＮＶＭｅ−ｏＦ）応答機（ＮＶＭｅ−ｏＦ  ｒｅｓｐｏｎｄｅｒ）２１８、ＰＣＩｅＣＥパーサー（ＰＣＩｅ  ＣＥ  ｐａｒｓｅｒ）２１９、ＰＣＩｅ−サイドコマンドコンプリーションキュー（ＰＣＩｅ−ｓｉｄｅ  ｃｏｍｍａｎｄ  ｃｏｍｐｌｅｔｉｏｎ  ｑｕｅｕｅ：ＰＣＱ）モジュール２２０を含む。
（ＮＶＭｅ−ｏＦ）ブリッジ装置２００は、ＰＣＩｅバスを介してバックエンドＳＳＤ（例えば、ＮＶＭｅＳＳＤ）２５０に結合される。
ホストコンピュータ上で駆動される遠隔イニシエータ（ｒｅｍｏｔｅ  ｉｎｉｔｉａｔｏｒ）は、ファブリックネットワーク（本発明の実施形態においては、イーサネット）を介してバックエンドＳＳＤ２５０に（ＮＶＭｅ−ｏＦ）コマンドを伝送する。
【００２７】
（ＮＶＭｅ−ｏＦ）ブリッジ装置２００のコマンドパーサー２１３は、バックエンドＳＳＤ２５０に伝送が予定された（ＮＶＭｅ−ｏＦ）コマンドをインターセプト（ｉｎｔｅｒｃｅｐｔ）し、これらを分析（ｐａｒｓｅ）して、コマンド分類器２１４へ分析された（ＮＶＭｅ−ｏＦ）コマンドを伝送する。
例えば、コマンドパーサー２１３は、コマンドオペコード（ｃｏｍｍａｎｄ  ｏｐｃｏｄｅ：ＯＰＣ）、コマンド識別子（ｃｏｍｍａｎｄ  ｉｄｅｎｔｉｆｉｅｒ：ＣＩＤ）、ネームスペース識別子（ｎａｍｅｓｐａｃｅ  ｉｄｅｎｔｉｆｉｅｒ：ＮＳＩＤ）、複数のロジカルブロック（ｎｕｍｂｅｒ  ｏｆ  ｌｏｇｉｃａｌ  ｂｌｏｃｋｓ：ＮＬＢ）、及びスタートロジカルブロックアドレス（ｓｔａｒｔ  ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ：ＳＬＢＡ）を含むが、しかし、これに限定されない、多様なコマンドを抽出して分析する。
【００２８】
コマンド分類器２１４は、分析された（ＮＶＭｅ−ｏＦ）コマンドを異なるグループに分類して、分類された（ＮＶＭｅ−ｏＦ）コマンドをコマンドプロセッサ２１５に伝送する。
例えば、コマンド分類器２１４は、アドミンコマンド（ａｄｍｉｎ  ｃｏｍｍａｎｄｓ）、ファブリックコマンド（ｆａｂｒｉｃ  ｃｏｍｍａｎｄｓ）、リードコマンド（ｒｅａｄ  ｃｏｍｍａｎｄｓ）、ライトコマンド（ｗｒｉｔｅ  ｃｏｍｍａｎｄｓ）、及び特殊コマンド（ｓｐｅｃｉａｌ  ｃｏｍｍａｎｄｓ）に分類する。
（ＮＶＭｅ−ｏＦ）コマンドの異なるコマンド又はグループは、コマンドプロセッサ２１５の特殊なコマンドプロセシングユニットを用いて処理され得る。
例えば、コマンドプロセッサ２１５は、特殊コマンドユニット（ｓｐｅｃｉａｌ  ｃｏｍｍａｎｄ  ｕｎｉｔ：ＳＣＵ）２３１、ファブリックコマンドユニット（ｆａｂｒｉｃｓ  ｃｏｍｍａｎｄ  ｕｎｉｔ：ＦＣＵ）２３２、アドミンコマンドユニット（ａｄｍｉｎ  ｃｏｍｍａｎｄ  ｕｎｉｔ：ＡＣＵ）２３３、リードコマンドユニット（ｒｅａｄ  ｃｏｍｍａｎｄ  ｕｎｉｔ：ＲＣＵ）２３４、及びライトコマンドユニット（ｗｒｉｔｅ  ｃｏｍｍａｎｄ  ｕｎｉｔ：ＷＣＵ）２３５を含む。
【００２９】
このようなコマンドプロセシングユニット（２３１〜２３５）は、（ＮＶＭｅ−ｏＦ）コマンドをＮＶＭｅコマンドに翻訳し、これらをＰＳＱモジュール２１６内に配置させる。
一実施形態によれば、ＰＳＱモジュール２１６は、コマンドサブミッションキュー（ａｃｔｉｖｅ  ｓｕｂｍｉｓｓｉｏｎ  ｑｕｅｕｅｓ）を具現し、アクティブサブミッションキュー（ａｃｔｉｖｅ  ｓｕｂｍｉｓｓｉｏｎ  ｑｕｅｕｅｓ）のためのヘッド（ｈｅａｄ）及びテール（ｔａｉｌ）ポインターを維持する。
ＰＳＱモジュール２１６は、アクティブサブミッションキューを検出でき、サブミッションキューがフル（ｆｕｌｌ）又はエンプティ（ｅｍｐｔｙ）であることを示す条件部フラッグ（ｃｏｎｄｉｔｉｏｎａｌ  ｆｌａｇｓ）を生成する。
ＮＶＭｅコマンドが、サブミッションキュー内に配置されている時、ＰＳＱモジュール２１６は、ドアベルイベント（ｄｏｏｒｂｅｌｌ  ｅｖｅｎｔｓ）（サブミッションキュードアベル（ｓｕｂｍｉｓｓｉｏｎ  ｑｕｅｕｅ−ｄｏｏｒｂｅｌｌ））を生成し、これをＰＡＰＰモジュール２１７を介してバックエンドＳＳＤ２５０に伝送する。
【００３０】
ＰＰＡＰモジュール２７１は、ＰＣＩｅバスを介してドアベルイベントを伝送するために、ＰＣＩｅ伝送（ＰＣＩｅ  ｔｒａｎｓｐｏｒｔ）をバックエンドＳＳＤ２５０に具現する。
ＰＡＰＰモジュール２７１は、（ＮＶＭｅ−ｏＦ）ブリッジ装置２００によって生成されたコンフィグリード（ｃｏｎｆｉｇ  ｒｅａｄ）、コンフィグライト（ｃｏｎｆｉｇ  ｗｒｉｔｅ）、メモリライト、及びメモリリードを含む標準ＰＣＩｅトランザクションコマンド（ｓｔａｎｄａｒｄ  ＰＣＩｅ  ｔｒａｎｓａｃｔｉｏｎ  ｃｏｍｍａｎｄｓ）を支援する。
追加的に、ＰＡＰＰモジュール２１７は、（ＮＶＭｅ−ｏＦ）ブリッジ装置２００ではないＰＣＩｅエンドポイント（ＰＣＩｅ  ｅｎｄ−ｐｏｉｎｔ）によって生成されたＰＣＩｅメモリリード及びメモリライトトランザクションを支援する。
言い換えれば、ＰＡＰＰモジュール２１７は、（ＮＶＭｅ−ｏＦ）ブリッジ装置２００のＰＣＩｅルートコンプレックス機能を実装及びサポートして、（ＮＶＭｅ−ｏＦ）ブリッジ装置２００をＰＣＩｅルートコンプレックス装置にする。
【００３１】
ＰＣＱモジュール２２０は、バックエンドＳＳＤ２５０のためのコマンドコンプリーションキュー（ｃｏｍｍａｎｄ  ｃｏｍｐｌｅｔｉｏｎ  ｑｕｅｕｅｓ）を実装する。
バックエンドＳＳＤ２５０は、バックエンドＳＳＤ２５０がプロセシングする、各ＮＶＭｅコマンドのためのコマンドコンプリーションエントリ（ｃｏｍｍａｎｄ  ｃｏｍｐｌｅｔｉｏｎ  ｅｎｔｒｙ：ＣＥ）を書き込むことができる。
通常は、コマンドサブミッションキューとコマンドコンプリーションキューとの間には、一対一マッピング（ｏｎｅ−ｔｏ−ｏｎｅ  ｍａｐｐｉｎｇ）がある。
ＰＣＩｅＣＥパーサー２１９は、ＰＣＱモジュール２２０から受信したコンプリーションエントリ（ＣＥ）を分析し、これらを解釈する。
【００３２】
ＰＣＩｅＣＥパーサー２１９は、分析されたＣＥを、対応するＮＶＭｅコマンドを生成した適切なコマンドプロセシングユニット（２３１〜２３５）に伝達する。
適切なコマンドプロセシングユニット（２３１〜２３５）は、ＰＣＩｅＣＥパーサー２１９から受信したＰＣＩｅＣＥ（又は、ＮＶＭｅＣＥ）に対応する（ＮＶＭｅ−ｏＦ）ＣＥを生成し、（ＮＶＭｅ−ｏＦ）インターフェース（例えば、イーサネット）を介して（ＮＶＭｅ−ｏＦ）ＣＥを遠隔イニシエータに戻して発行するために、生成された（ＮＶＭｅ−ｏＦ）ＣＥを（ＮＶＭｅ−ｏＦ）応答機２１８に伝達する。
（ＮＶＭｅ−ｏＦ）ＣＥは、遠隔イニシエータに／から伝送されるリードデータ又はライトデータの伝送に先行（ｐｒｅｃｅｄｅ）できる。
（ＮＶＭｅ−ｏＦ）コマンドブリッジング（ｂｒｉｄｇｉｎｇ）の一部として、コマンドプロセシングユニット（２３１〜２３５）は、バックエンドＳＳＤ２５０と遠隔イニシエータとの間のデータ伝送を容易にする。
【００３３】
ドアベルイベントに応答して、バックエンドＳＳＤ２５０は、ＰＳＱモジュール２１６から受信したＮＶＭｅコマンドをフェッチ（ｆｅｔｃｈ）し、これらを実行する。
コマンド実行の一部として、バックエンドＳＳＤ２５０は、データ伝送を遂行できる。
このようなデータ伝送は、（ＮＶＭｅ−ｏＦ）ブリッジ装置２００内で利用可能なオンチップ（ｏｎ−ｃｈｉｐ）又はオフチップ（ｏｆｆ−ｃｈｉｐ）メモリ又はシステムメモリ２１２に／から行われ得る。
【００３４】
ＮＶＭｅ及び（ＮＶＭｅ−ｏＦ）ＳＳＤのようなデータ記憶装置は、大量のデータを格納できる。
データ記憶装置に隣接した、又はその内部におけるデータプロセシングは、データをデータ記憶装置から遠隔ホストコンピュータに移動させ、遠隔ホストコンピュータ内でプロセシングするよりも効率的であり、費用面において効果的であり得る。
【００３５】
本明細書は、処理されなければならない実際のターゲットデータを記憶するＮＶＭｅ及び（ＮＶＭｅ−ｏＦ）ＳＳＤのような、データ記憶装置内の遠隔アプリケーションのデータプロセシングを加速するためのインストレージ加速（ｉｎ−ｓｔｏｒａｇｅ  ａｃｃｅｌｅｒａｔｉｏｎ：ＩＳＡ）プラットフォームを記述する。
例えば、本発明におけるＩＳＡプラットフォームは、ＮＶＭｅ及び（ＮＶＭｅ−ｏＦ）ＳＳＤ（例えば、図１のｅＳＳＤ１７０）のコントローラ内に実装され得る。
他の実施形態において、本発明のＩＳＡプラットフォームは、ブリッジ装置（例えば、図２の（ＮＶＭｅ−ｏＦ）ブリッジ装置２００）のコントローラ内に実装され得る。
このような点で、本明細書において使用される用語「インストレージ加速」は、ターゲットデータを格納する実際のデータ記憶装置だけでなく、データ記憶装置にインターフェース（又はプロトコル翻訳（ｐｒｏｔｏｃｏｌ  ｔｒａｎｓｌａｔｉｏｎ））を提供するために、データ記憶装置に隣接して配置されたブリッジ装置内におけるデータプロセシングを指示するために使用される。
【００３６】
大量のデータプロセシングを伴うデータ中心（ｄａｔａ−ｃｅｎｔｒｉｃ）ホストアプリケーションは、本発明のＩＳＡプラットフォームを用いることにより多くの利点が得られる。
ヘビーデューティデータプロセシング及び操作を遂行するホストアプリケーションの機能は、隣接又はインストレージ加速を遂行するためにデータ記憶装置又はブリッジ装置に転嫁（ｏｆｆｌｏａｄ）され得る。
本発明のＩＳＡプラットフォームは、エネルギー及び帯域幅の側面において、効率的なデータプロセシングソシューションを提供すると同時に、全体的な演算及び記憶インフラストラクチャーの費用を軽減させ得る。
【００３７】
一実施形態によれば、遠隔ホストコンピュータ上で駆動されるデータ集中的（ｄａｔａ−ｉｎｔｅｎｓｉｖｅ）アプリケーション（例えば、マシンラーニング（ＭＬ）アプリケーション、ビッグデータアプリケーション）は、一部のデータプロセシング機能をデータ記憶装置及び／又はブリッジ装置に転嫁させ得る。
データ記憶装置又はブリッジ装置は、実際のターゲットデータを格納するデータ記憶装置及びデータ記憶装置内に格納されたターゲットデータに対するアクセスを要求する、データ集中的アプリケーションを駆動する遠隔ホストコンピュータの間でのデータ伝送を最小化させることによって、データプロセシングを加速させ得る。
本発明のＩＳＡプラットフォームは、データ記憶装置及びデータ集中的アプリケーションを駆動する遠隔ホスト装置の間でのデータの移動を最小化させることによって、ユーザデータがデータ記憶装置に近く又はその内部でもっと効率的にプロセスされ得るようにする。
それにより、本発明のＩＳＡプラットフォームは、より向上したアプリケーション性能を達成すると同時に、ホストコンピュータのコンピューティング、ネットワーキング、及び記憶インフラストラクチャーと関連された費用を減少させ得る。
本発明のＩＳＡプラットフォームは、多様な種類のデータ記憶装置に適用され得る。
しかし、以下では、説明の便意のためにデータ記憶装置の例として、ＮＶＭｅＳＳＤ又は（ＮＶＭｅ−ｏＦ）ＳＳＤを示す。
【００３８】
一実施形態によれば、データプロセシング加速を遂行するデータ記憶装置又はブリッジ装置は、フィールドプログラマブルゲートアレイ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ：ＦＰＧＡ）ベース再構成型ロジックブロック（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  ｌｏｇｉｃ  ｂｌｏｃｋｓ）を含む。
ＦＰＧＡベース再構成型ロジックブロックは、アプリケーションの転嫁及び加速部分を可能にするために、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤのコントローラ（本明細書において、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤコントローラとも称される）又はブリッジ装置のコントローラ（本明細書において、ブリッジ装置コントローラとも称される）と一共に、同時に作動する。
このようなＦＰＧＡベース再構成型ロジックブロックは、外部的にＮＶＭｅ／（ＮＶＭｅ−ｏＦ）コントローラに接続されるか、又はＮＶＭｅ／（ＮＶＭｅ−ｏＦ）に内装され得る。
アプリケーションユーザは、加速のためのアプリケーションの機能が実装されるように、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤ内に内装されるか、又はこれに結合されたこのような再構成型ロジックブロックを利用できる。
【００３９】
本発明のＩＳＡプラットフォームは、加速される遠隔ホストコンピュータ上で駆動されるアプリケーションアグノスチック（ａｇｎｏｓｔｉｃ：依存しない）する。
本発明のＩＳＡプラットフォームが多様な種類のアプリケーション及びデータ記憶装置に適用できるように、本発明のＩＳＡプラットフォームは、アプリケーションを一般的な方式で加速できる。
追加的に、ユーザは、本発明のＩＳＡプラットフォームをセルフサービス方式で利用できる。
例えば、ユーザは、実時間（ｒｕｎｔｉｍｅ）のうち、アプリケーションの任意の部分を選択してダウンロードでき、アプリケーションを実時間に変更できる。
【００４０】
与えられたアプリケーションに対し、ユーザは、大量のデータをプロセスしたり、操作（ｍａｎｉｐｕｌａｔｅ）したりするアプリケーションの機能やコンポーネントを識別（ｉｄｅｎｔｉｆｙ）できる。
識別された機能は、アプリケーションの性能を加速させるために、ＩＳＡプラットフォームに転嫁され得る機能である。
一実施形態によれば、ユーザは、再構成型ロジックブロック（以下、ブラックボックス（ｂｌａｃｋ−ｂｏｘｅｓ）とも称される）を含むデータ記憶装置（又はブリッジ装置）の予め設定された記憶領域（ｓｔｏｒａｇｅ  ａｒｅａ）にアプリケーションの機能をダウンロードできる。
【００４１】
本明細書に使用する用語「ブラックボックス」は、特定のデータアクセス及びプロセシング機能を加速するために、アプリケーションコードからの機能をデータ記憶装置（又は、ブリッジ装置）近くの装置のデータ記憶装置（又は、ブリッジ装置）に転嫁させ得る再構成型ロジックブロックの集団（ｃｏｌｌｅｃｔｉｏｎ）を示すことに留意しなければならない。
本明細書において、各再構成型ロジックブロックの集団は、アプリケーション加速ブラックボックス（ＡＡＢＢ）であると便利に称される。ＡＡＢＢのそれぞれは、再構成型ロジックブロックがどのように構成されるかによって相異なるサイズ及び性能を有し得る。
【００４２】
ＡＡＢＢは、次のような二つの主要なコンポーネントを有する。
即ち、レジスタ伝送レベル（ｒｅｇｉｓｔｅｒ−ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ：ＲＴＬ）ブラックボックスであると称されるハードウェア部分及びＲＴＬブラックボックスドライバであると称されるファームウェア部分である。
ＲＴＬブラックボックスは、ハードウェアプロセシングエンジンを含み、ＲＴＬブラックボックスドライバは、ＲＴＬエンジンのためのファームウェアドライバであるか、又は加速するための機能に対応される一般的なファームウェアドライバである。
一実施形態において、ＡＡＢＢは、ハードウェア部分無しでファームウェア部分のみを有し得る。
【００４３】
本発明のＩＳＡプラットフォームは予め設定（ｐｒｅ−ｄｅｆｉｎｅｄ）され、予め供給（ｐｒｅ−ｐｒｏｖｉｓｉｏｎｅｄ）されたＦＰＧＡロジック領域（即ち、ＩＳＡプラットフォームの再構成型ロジックブロック）を再構成するために、ＲＴＬブラックボックスコンポーネントを用いる。
ＲＴＬブラックボックスドライバは、内装されたコントローラ（例えば、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）コントローラ又はブリッジコントローラ）のプロセッサコア上で駆動されるように意図された再構成されたＲＴＬブラックボックスと連携されるファームウェアドライバである。
【００４４】
ユーザの必要及び現在の加速された機能のための要求が充足された場合、ユーザは、ＡＡＢＢを非活性化させたり、廃棄したりして、新しいＡＡＢＢを廃棄したＡＡＢＢスロットにダウンロードできる。
ダウンロードされ、対応されるＡＡＢＢスロットに割り当てられたＡＡＢＢは、活性化されたＡＡＢＢスロット（ａｃｔｉｖｅ  ＡＡＢＢ  ｓｌｏｔ）であると称される。
活性化されたＡＡＢＢスロットは、加速機能を遂行する準備ができている。
ホストコマンドは、活性化されたＡＡＢＢスロットと通信するためのＡＡＢＢスロット通信コマンドを含む。
ＡＡＢＢスロット通信コマンドは、活性化されたＡＡＢＢスロットの識別子を含む。
複数のＡＡＢＢは、ＩＳＡプラットフォーム内で定められた時間に活性化される。
【００４５】
本発明のＩＳＡプラットフォームは、予め供給されて予め設定されたＡＡＢＢスロットのセットを提供する。
各ＡＡＢＢスロットは確保され（ｒｅｓｅｒｖｅｄ）、別に分離された（ｓｅｔ  ａｓｉｄｅ）幾つかのロジックリソースを有し得る。
相異なるＡＡＢＢスロットは、同一の又は相異なる定義されたリソース又はインターフェースを有し得る。
ユーザは、支援されるＡＡＢＢスロットの特性、特徴、及び属性を見つけ出し、使用する特定のＡＡＢＢを選択し、選択したＡＡＢＢスロットに回路コンポーネント及びファームウェアコンポーネントをダウンロードできる。
アプリケーションがファームウェアコンポーネントのみを有することも可能である。
例えば、回路コンポーネント及びファームウェアコンポーネントをダウンロードするのは、「ＡＡＢＢダウンロード」コマンドを用いて遂行され得る。
【００４６】
「ＡＡＢＢダウンロード」コマンドに加えて、「ＡＡＢＢマネジメント」コマンドは、ダウンロードされたＡＡＢＢイメージの活性化、非活性化、及び廃棄のようなＡＡＢＢスロットのマネジメントのために利用され得る。
「ＡＡＢＢ  Ｃｏｍｍ」コマンドは、活性化されたＡＡＢＢスロットとホストアプリケーションが通信するために使用される。
本発明のＩＳＡプラットフォームは、ダウンロードされたＡＡＢＢイメージが「ＡＡＢＢ  Ｃｏｍｍ」コマンドを受信するようにし、ＣＥを遠隔ホストコンピュータに返して伝送するためのアプリケーションプログラムインターフェース（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍ  ｉｎｔｅｒｆａｃｅ：ＡＰＩ）のセットを提供する。
【００４７】
追加的に、本発明のＩＳＡプラットフォームは、ＡＡＢＢファームウェアがホストメモリに／からだけでなく、ＳＳＤのＮＡＮＤフラッシュ媒体に／からのユーザデータ伝送を遂行できるようにビルトイン（ｂｕｉｌｔ−ｉｎ）ＡＰＩを提供する。
このようなコマンド及びデータ移動ＡＰＩを用いることによって、ＡＡＢＢイメージは、ユーザ記憶データ（ｕｓｅｒ  ｄａｔａ  ａｔ  ｒｅｓｔ）だけでなく、ユーザ移動データ（ｕｓｅｒ  ｄａｔａ  ｉｎ  ｆｌｉｇｈｔ）のためのユーザデータプロセシング、操作（ｍａｎｉｐｕｌａｔｉｏｎ）、及び他の変換を調整（ｏｒｃｈｅｓｔｒａｔｅ）することができる。
【００４８】
本発明のＩＳＡプラットフォームは、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤ及び／又はブリッジ装置を用いて、第三者アプリケーションを加速できる。
ユーザは、ユーザアプリケーションの目的とする機能（又は、目的とする機能の部分）を加速するために、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤにアプリケーションＡＡＢＢをダウンロードできる。
本発明のＩＳＡプラットフォームは、与えられたＡＡＢＢのためのハードウェアコンポーネント及び関連したファームウェアコンポーネントを活性化させる。
ハードウェアコンポーネントは、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤ内の一つ又はそれ以上の再構成型ロジックブロックでロード（ｌｏａｄ）され得る、ＲＴＬビットストリーム（ｂｉｔ  ｓｔｒｅａｍ）形態となっている。
ファームウェアコンポーネントは、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤの内臓されたプロセッサ（又はプロセッサコア）にロードされ、実行される。
【００４９】
たとえ、ユーザがＡＡＢＢスロットに実装する機能を識別できるとしても、本発明のＩＳＡプラットフォームに関する限り、ＡＡＢＢスロットは、依然としてブラックボックスである。
即ち、本発明のＩＳＡプラットフォーム及びプラットフォーム提供者は、どのように、又はどのような目的のためにＡＡＢＢが用いられるかは知れないか、又は気にしない。
ユーザは、セルフサービス方式で本発明のＩＳＡプラットフォームにより提供されるＡＡＢＢスロットを定義し、生成し、ダウンロードして利用できる。
たとえ、後述する例示が、ユーザがセルフサービス方式で第三者加速機能を駆動できるようにする、本発明のＩＳＡプラットフォームの実施形態に中点を置くとしても、特定の標準ビルトインブラックボックス機能が、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤ又はブリッジ装置内に内在的（ｎａｔｉｖｅｌｙ）に実装され得るように、本発明のＩＳＡプラットフォームは一般的な方式で利用され得るのが理解されるであろう。
【００５０】
ユーザがＡＡＢＢスロットにＡＡＢＢイメージをダウンロードする時に、ＡＡＢＢイメージを受信した装置（例えば、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤ又はブリッジ装置）は、ＲＴＬ及びファームウェアコンポーネントを抽出する。
ＲＴＬコンポーネントは、ビットストリームの形態で伝達され得る。
ファームウェアコンポーネントは、実行可能なバイナリイメージで伝達され得る。
ＲＴＬビットストリームは、対応する（複数の）ブラックボックスのために、予め確保されたＦＰＧＡ領域（即ち、（複数の）ＡＡＢＢスロット）を再構成するために用いられ、ドライババイナリ（ｄｒｉｖｅｒ  ｂｉｎａｒｙ）は内装されたプロセッサ（又は、内装されたプロセッサのプロセッサコア）上で実行される。
遠隔ホストコンピュータ上で駆動されるアプリケーションは、ＩＳＡプラットフォーム上におけるＡＡＢＢイメージと通信するためにＮＶＭｅコマンド「ＡＡＢＢ  Ｃｏｍｍ」を利用できる。
装置は、目的地ＡＡＢＢスロット識別子（ｄｅｓｔｉｎａｔｉｏｎ  ＡＡＢＢ  ｓｌｏｔ  ｉｄｅｎｔｉｆｉｅｒ）を用いて、「ＡＡＢＢ  Ｃｏｍｍ」コマンドをインターセプトし、これらを適切なＡＡＢＢスロットに伝達する。
【００５１】
図３は、本発明の一実施形態による例示的なアプリケーション加速ブラックボックス（ＡＡＢＢ）イメージのデータ構造を示す図である。
ＡＡＢＢイメージ３０１は、ヘッダ３１０、ＲＴＬビットストリーム３２０、及びドライババイナリイメージファイル３２１を含む。
ヘッダ３１０は、その他の情報３１１、パラメータ３１２、ＲＴＬビットストリームの長さ３１３、ＲＴＬビットストリームオフセット３１４、ドライババイナリファイルの長さ３１５、及びドライババイナリファイルオフセット３１６を含む。
【００５２】
ＲＴＬビットストリームオフセット３１４は、ＲＴＬビットストリームの長さ３１３のサイズを有するＲＴＬビットストリーム３２０へのポインターを含み、ドライババイナリファイルオフセット３１６は、ドライババイナリファイルの長さ３１５を有するドライババイナリイメージファイル３１２へのポインターを含む。
たとえ、一実施形態が一つのヘッダ、並びに、対応するＲＴＬビットストリーム及びドライババイナリイメージファイルだけを開示しているとしても、本発明の開示内容から逸脱しない範囲内で単一のＡＡＢＢイメージは、複数のヘッダ、ＲＴＬビットストリーム、及びドライババイナリイメージファイルを有し得ることが理解されるであろう。
【００５３】
本発明のＩＳＡプラットフォームは、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤ（例えば、図１のｅＳＳＤ１７０のコントローラ又はブリッジ装置（例えば、図２の（ＮＶＭｅ−ｏＦ）ブリッジ装置２００）のコントローラに実装され得る。
一実施形態において、コントローラは、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤ又はブリッジ装置に含まれるＦＰＧＡベース再構成型ロジックブロックと相互作用できる。
データ記憶性能に加えて、本発明のＩＳＡプラットフォームは、第三者機能ブロック（ｔｈｉｒｄ−ｐａｒｔｙ  ｆｕｎｃｔｉｏｎａｌ  ｂｌｏｃｋｓ）（即ち、ＡＡＢＢスロット）を実装し、実行するメカニズムを提供する。
【００５４】
ＡＡＢＢスロットは、予め定義されたインターフェースのセットを介してアクセスされ得る、予め設定された量のロジック、演算、及びメモリリソースで供給される。
ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤ又はブリッジ装置内に実装されたＦＰＧＡベース再構成型ロジックブロックは、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ＳＳＤ又はブリッジ装置の第三者機能ブロックのヘビーデューティーデータプロセシング機能を実装するために利用され得る。
コントローラプロセッサの演算リソースは、制御アルゴリズムだけでなく、ハードウェア加速エンジンのためのドライバファームウェアを実装するため、ユーザにより利用され得る。
一実施形態において、ユーザは、いくつかのユースケース（ｕｓｅ  ｃａｓｅ）のためにファームウェアリソースのみを利用できる。
【００５５】
図４は、本発明の一実施形態によるバックエンドＳＳＤと共にブリッジ装置内に実装された例示的なＩＳＡプラットフォームの構成を示すブロック図である。
例えば、バックエンドＳＳＤ４５０は、ブリッジ装置にＰＣＩｅリンクを通じてアクセス可能な標準ＮＶＭｅＳＳＤである。
ブリッジ装置及びバックエンドＳＳＤは、ホストに「ｅＳＳＤ」と見なされる単一の記憶装置としてパッケージされ得る。
ブリッジ装置４００は、プロセッサ４１１、ＰＣＩｅエンドポイント（ＥＰ）４２１、バックエンドＳＳＤ４５０と接続するためのＰＣＩｅインターフェース４１７、（ＮＶＭｅ−ｏＦ）ブリッジ装置である場合の選択的イーサネットインターフェース４１８、ブラックボックス再構成コントローラ４２２、データバッファ４２３、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ホストインターフェース４２４、及び再構成型ロジックブロック４２５を含む。
【００５６】
再構成型ロジックブロック４２５は、ロジックブロックをプログラミング可能に接続できる再構成可能な相互接続（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  ｉｎｔｅｒｃｏｎｎｅｃｔｓ）及びプログラム可能な（ｐｒｏｇｒａｍｍａｂｌｅ）ロジックブロックのアレイを含む、フィールドプログラマブルゲートアレイ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ：ＦＰＧＡ）であり得る。
ロジックブロックは、複雑な組み合わせ機能、又はＡＮＤ／ＸＯＲのような簡単なロジックゲートを遂行するように構成され得る。
追加的に、ロジックブロックは、また、フリップフロップ（ｆｌｉｐ−ｆｌｏｐｓ）又はもっと完全なメモリのブロックのようなメモリ構成要素を含む。
しかし、再構成型ロジックブロック４２５は、ＦＰＧＡブロックに限定されず、相異なる形態や種類のプログラミング可能な／再構成型ロジックブロックが、本開示内容の範囲を逸脱しない範囲内で利用され得る。
【００５７】
再構成型ロジックブロック４２５は、ＲＴＬブラックボックスのパーティション（ｐａｒｔｉｔｉｏｎｓ）（４３２ａ〜４３２ｎ）を包含する。
ＲＴＬブラックボックス４３２の各パーティションは、特定の量のハードウェアリソース及びシステムバス４３０を介するＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ホストインターフェース４２４、データバッファ４２３、ブラックボックス構成コントローラ４２２のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
ユーザは、ＲＴＬブラックボックス４３２を選択し、選択されたＲＴＬブラックボックス４３２のリソース及びインターフェース制約（ｃｏｎｓｔｒａｉｎｔｓ）内に第三者ＲＴＬ機能性を実装させ得る。
場合によって、ユーザは、ファームウェアブラックボックスのみを用いてＲＴＬ機能性を実装させ得る。
この場合、ファームウェアブラックボックスは、ＲＴＬブラックボックス４３２の、予め備えられた（ｐｒｅｐｏｐｕｌａｔｅｄ）ＲＴＬコンポーネントを利用できる。
【００５８】
ブリッジ装置４００は、バックエンドＳＳＤ４５０に伝送が予定されたイーサネット又はＰＣＩｅバスから受信したホストコマンドをインターセプトし、バックエンドＳＳＤ４５０に格納されたデータへのアクセスだけでなく、プロセッサ４１１を用いて隣接（ｎｅａｒ）記憶データプロセシングを提供できる。
ＢＢ構成コントローラ４２２は、ＲＴＬビットストリームを一つ又はそれ以上のＲＴＬブラックボックス４３２にダウンロードでき、プロセッサ４１１のプロセッサコアを用いて対応されるブラックボックスドライバ４３１を駆動するために、対応するドライババイナリイメージファイルをプロセッサ４１１にロードできる。
【００５９】
図５は、本発明の一実施形態によるデータ記憶装置内に実装された例示的なＩＳＡプラットフォームの構成を示すブロック図である。
データ記憶装置５００は、ＮＶＭｅＳＳＤ又は（ＮＶＭｅ−ｏＦ）ＳＳＤであり得る。
一部の実施形態において、データ記憶装置５００は、ＮＶＭｅＳＳＤ又は（ＮＶＭｅ−ｏＦ）ＳＳＤの格納（ｓｔｏｒａｇｅ）コントローラを指し得る。
データ記憶装置５００は、コントローラ５０１及びフラッシュ媒体（ｆｌａｓｈ  ｍｅｄｉａ）５６０を含む。
【００６０】
コントローラ５０１は、プロセッサ５１１、ＰＣＩｅＥＰ５２１、（ＮＶＭｅ−ｏＦ）ＳＳＤである場合、選択的イーサネットインターフェース５１８、ブラックボックス再構成コントローラ５２２、データバッファ５２３、ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ホストインターフェース５２４、及び再構成型ロジックブロック５２５を含む。
再構成型ロジックブロック５２５は、ＲＴＬブラックボックス（５３２ａ〜５３２ｎ）のパーティション（ｐａｒｔｉｔｉｏｎｓ）を含む。
ＲＴＬブラックボックス５３２の各パーティションは、特定の量のハードウェアリソース及びシステムバス５３０を介するＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ホストインターフェース５２４、データバッファ５２３、ブラックボックス構成コントローラ５２２のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
【００６１】
データ記憶装置５００を構成する多くの構成要素は、図４に示したブリッジ装置の例において記述したものと類似するか、又は同一である。
バックエンドＳＳＤ４５０に対するＰＣＩｅインターフェース４１７の代わりに、コントローラ５０１は、フラッシュ媒体５６０からユーザデータを読み出したり、フラッシュ媒体５６０に書き込んだりするためにフラッシュ媒体５６０とインターフェースするためのフラッシュ変換レイヤー（ｆｌａｓｈ  ｔｒａｎｓｌａｔｉｏｎ  ｌａｙｅｒ：ＦＴＬ）モジュール５２６を有する。
このような内在的実装（ｎａｔｉｖｅ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）においては、これと異なる場合、ブリッジ装置で遂行される機能をＳＳＤコントローラそのものが遂行できるので、ブリッジ装置は、バックエンドＳＳＤに接続される必要がない。
【００６２】
ＦＰＧＡベース再構成型ロジックブロック（例えば、図４の再構成型ロジックブロック４２５及び図５の再構成型ロジックブロック５２５）は、多様なユーザプログラミング可能なロジック機能を遂行するために再プログラミングされ得る。
各再構成型ロジックブロックは、
ａ）ルックアップテーブル（ＬＵＴ）、
ｂ）ランダムアクセスメモリ（ＲＡＭ）、及び
ｃ）再構成型相互接続を含む。
このような３つのコンポーネントを用いることによって、多様なデータプロセシング回路がハードウェアに実装され得る。
再構成型ロジックブロックは、通常的なアプリケーション特定用途向け集積回路（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ：ＡＳＩＣ）の高性能及びソフトウェア具現の柔軟性を同時に提供できる。
【００６３】
アプリケーションのデータプロセシング機能性は、ヴェリログ（Ｖｅｒｉｌｏｇ）及び  ＶＨＤＬのようなプログラミング可能な言語を用いて、ＲＴＬモデルの形態で実装され得る。
ＲＴＬモデルは、その後、ゲートレベル回路で合成（ｓｙｎｔｈｅｓｉｚｅ）される。
合成された回路は、その後、ゲートレベルネットリスト（ｎｅｔｌｉｓｔｓ）の物理的実装を実現するために、ＬＵＴ、ＲＡＭ，及び相互接続のようなＦＰＧＡリソースでマッピングされる。
最終的な実装は、ビットストリーム又はビットファイルの形態で示される。
ビットストリームは、本質的にＦＰＧＡ内の相互接続スイッチのためのビットマップである。
【００６４】
適切な相互接続スイッチは、オン（ｏｎ）及びオフ（ｏｆｆ）させることによって、目的とする回路がＦＰＧＡ内に実現される。
ビットファイルのビットストリームは、電源オン以後や所望する時点で、ＦＰＧＡにダウンロードされる。
いったん、ビットストリームが設定されると、リセット又はパワーサイクルの時まで、相互接続スイッチは、そのようなプログラムされた状態で維持される。
そして、ビットストリーム設定又はプログラミングが完了すると、データプロセシング機能は、データプロセシング機能の動作を開始する。
新しいデータプロセシング機能を開始するために、現在のデータプロセシング回路を中止させ、相異なるビットストリームを用いてＦＰＧＡを再構成することが可能である。
【００６５】
一実施形態によれば、本発明のＩＳＡプラットフォームは、複数のＦＰＧＡコアを有し得るし、各ＲＴＬブラックボックス当たり一つのコアを自由に利用する。
各ＲＴＬブラックボックスは、ロジック領域、相互接続、ＬＵＴ、ＲＡＭブロック、特殊ハードマクロ（ｓｐｅｃｉａｌｉｚｅｄ  ｈａｒｄ  ｍａｃｒｏｓ）（例えば、ＰＣＩｅコントローラ、デジタル信号プロセッサ（ＤＳＰ）演算ロジックユニット（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔｓ，  ＡＬＵｓ））、及びクロック及びリセット信号を含むが、しかし、これに限定されない、リソースで予め供給され、予め定義できる。
【００６６】
ＲＴＬブラックボックスは、多様な、予め定義されて予め供給されたインターフェースを有し得る。
インターフェースの例示は、プログラム可能なクロック／リセット、内装されたプロセッサに対するアドバンスドエクステンシブルインターフェース（ａｄｖａｎｃｅｄ  ｅｘｔｅｎｓｉｂｌｅ  ｉｎｔｅｒｆａｃｅ：ＡＸＩ）、ダブルデータレート（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ：ＤＤＲ）メモリインターフェース、ＰＣＩｅ（ＥＰ／ＲＰ）インターフェース、イーサネットインターフェース、特殊のＩＳＡサービス又は機能のためのカスタムインターフェース、及びその他の別途のインターフェースを含むが、これに限定されない。
【００６７】
追加的に、ＴＲＬブラックボックス５３２のそれぞれは、対応する構成コントローラ５２２に対する設定インターフェース（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｉｎｔｅｒｆａｃｅ）を有し得る。
このインターフェースは、ユーザに見られず、ＲＴＬブラックボックス５３２にユーザ回路をダウンロードするのに用いられる。
【００６８】
一実施形態によれば、ＳＳＤコントローラ又はブリッジコントローラは、ＦＰＧＡに実装され得る。
このような場合、ＦＰＧＡの一領域は、別に分離（ｓｅｔ  ａｓｉｄｅ）され、ＲＴＬブラックボックスに予め確保（ｒｅｓｅｒｖｅｄ）され得る。
別に分離されて、予め確保されたそのようなＦＰＧＡパーティションは、実行時間（ｒｕｎｔｉｍｅ）の間にユーザビットストリームをダウンロードするのに使用され得る。
【００６９】
本発明のＩＳＡプラットフォームは、ユーザアプリケーションを加速するための複数のＡＡＢＢスロットを提供する。
ユーザは、セルフサービスモデルとして、データ記憶装置のブリッジ装置のコントローラそのものにより駆動され得る機能を実装するために、ＡＡＢＢスロット（又は、ブラックボックス）を用いる。
そのため、本発明のＩＳＡプラットフォームは、ＡＡＢＢスロット内で駆動している実際の機能を知らない。
このような顧客セルフサービスアーキテクチャを容易にするため、本発明のＩＳＡプラットフォームは、アプリケーション加速を支援するデータ記憶装置又はブリッジ装置を発見するために、最終ユーザのための発見メカニズム（ｄｉｓｃｏｖｅｒｙ  ｍｅｃｈａｎｉｓｍ）を採用する。
【００７０】
一実施形態によれば、本発明のＩＳＡプラットフォームは、集積されたプログラム可能な／再構成可能な（ｐｒｏｇｒａｍｍａｂｌｅ／ｒｅｃｏｎｆｉｇｕｒａｂｌｅ）ＡＡＢＢスロットを用いて、装置がアプリケーション加速を支援できるというのを示すための広告／公開メカニズム（ａｄｖｅｒｔｉｓｅ／ｐｕｂｌｉｓｈ  ｍｅｃｈａｎｉｓｍ）を、装置が提供することができる。
例えば、装置は、ＡＡＢＢ支援を広告／公開するためのＮＶＭｅ識別コマンド（ＮＶＭｅ  Ｉｄｅｎｔｉｆｙ  ｃｏｍｍａｎｄ）を発行できる。
【００７１】
隣接又はインストレージアプリケーション加速を支援する装置は、支援されるＡＡＢＢフィーチャーの多様な属性及び特徴を提供するために、識別データ構造（ｉｄｅｎｔｉｆｙ  ｄａｔａ  ｓｔｒｕｃｔｕｒｅ）を用いる。
ＡＡＢＢ支援装置（ＡＡＢＢ  ｓｕｐｐｏｒｔｉｎｇ  ｄｅｖｉｃｅ）の属性、パラメータ及び特徴のいくつかの例が識別データ構造を介して利用可能になる。
例えば、識別データ構造は、ＲＴＬブラックボックス及びファームウェアブラックボックスを有するＡＡＢＢスロットの個数、ファームウェアだけを有するＡＡＢＢスロットの個数、ＲＴＬブラックボックス及びファームウェアブラックボックスパラメータを有する各ＡＡＢＢスロットに対するデータ構造に関する情報を含み得る。
【００７２】
ＲＴＬブラックボックスコンポーネントのためのパラメータの例は、領域、相互接続リソース、ロジックリソースの個数、ＬＵＴの属性、ＲＡＭブロックの個数、サイズなど、最大クロック周波数、及びインターフェースの個数及びタイプを含み、これに限定されない。
ファームウェアブラックボックスコンポーネントのためのパラメータの例は、関連するファームウェアブラックボックスのためのファームウェアコードサイズ（ｆｉｒｍｗａｒｅ  ｃｏｄｅ  ｓｉｚｅ）及びプロセッサ情報を含むが、これに限定されない。
【００７３】
一実施形態によれば、ＡＡＢＢ支援装置は、ＲＴＬブラックボックスにイメージをダウンロードするために、ＮＶＭｅコマンド（本明細書において、「ＡＡＢＢダウンロード」コマンドとして称される）を発行する。
図６は、本発明の一実施形態による、「ＡＡＢＢダウンロード」コマンドフォーマットを示す図である。
「ＯＰＣ」は、アドミンコマンドセット又は販売者定義（ｖｅｎｄｏｒ−ｄｅｆｉｎｅｄ）コマンドセットのために、予め確保された８ビット特殊オペコード（ｓｐｅｃｉａｌ  ｏｐｃｏｄｅ）である。
「ＣＩＤ」は、１６ビットコマンド識別子である。
「ＤＰＴＲ」は、ＳＧＬ（ｓｃａｔｔｅｒ  ｇａｔｈｅｒ  ｌｉｓｔ）又はＰＲＰ（ｐｈｙｓｉｃａｌ  ｒｅｇｉｏｎ  ｐａｇｅ）方法を用いるデータポインターである。
「ＤＰＴＲ」は、ホストメモリ内のＡＡＢＢイメージを指示する。
「ＮＵＭＤ」は、イメージの伝送のためのＤｗｏｒｄｓ（３２ビット無符号整数（ｕｎｓｉｇｎｅｄ  ｉｎｔｅｇｅｒ））の個数である。
「ＯＦＳＴ」は、現在伝送（ｃｕｒｒｅｎｔ  ｔｒａｎｓｆｅｒ）のためのオフセットである。
「ＡＡＢＢスロットＩＤ」は、ＡＡＢＢイメージのために用いられるＡＡＢＢスロット識別子を備える。
【００７４】
本発明のＩＳＡプラットフォームは、ＡＡＢＢメカニズムの円滑な作動のための複数のＡＡＢＢスロットマネジメント機能を提供する。
ＡＡＢＢスロットにＡＡＢＢイメージがダウンロードされると、ダウンロードされたＡＡＢＢイメージは、アプリケーションが明示的に活性化トリガーコマンド（ｅｘｐｌｉｃｉｔ  ａｃｔｉｖａｔｅ  ｔｒｉｇｇｅｒ  ｃｏｍｍａｎｄ）を発行してＩＳＡプラットフォーム上でＡＡＢＢイメージを起動（ｌａｕｎｃｈ）するまで、基本値でリセット状態を保持する。
アプリケーションは、また、現在駆動されている特定のＡＡＢＢイメージを中止するか、又はリセットできる。
アプリケーションは、ＩＳＡプラットフォームからの一つ又はそれ以上のＡＡＢＢイメージを廃棄できる。
このようなＡＡＢＢマネジメント機能を容易にするため、本発明のＩＳＡプラットフォームは、新しいセットのＮＶＭｅ  ＡＡＢＢスロットマネジメントコマンドを採用する。
【００７５】
図７は、本発明の一実施形態によるＡＡＢＢスロットマネジメントコマンドの例を示す図である。
「ＯＰＣ」は、アドミンコマンドセット又は販売者定義（ｖｅｎｄｏｒ−ｄｅｆｉｎｅｄ）コマンドセットのために予め確保される特殊オペコードであり、「ＣＩＤ」はコマンド識別子である。
「ＡＡＢＢスロットＩＤ」は、ＡＡＢＢスロットマネジメントコマンドのために用いられるＡＡＢＢスロット識別子である。
「ＡＡＢＢアクションＩＤ」は、実行されるマネジメントアクションを示す。
例えば、「０ｘ１」は、特定されたＡＡＢＢイメージを活性化させる。
「０ｘ２」は、特定されたＡＡＢＢイメージを非活性化させる。
「０ｘ３」は、特定されたＡＡＢＢイメージをリセットさせる。
「０ｘ４」は、特定されたＡＡＢＢイメージを廃棄する。
他の「ＡＡＢＢアクションＩＤ」は、このようなアクションＩＤが使用されるところで使用されるか、又はこれらと関連して使用され得る。
【００７６】
ＡＡＢＢイメージがダウンロードされ、ＩＳＡプラットフォームで起動（ｌａｕｎｃｈ）されると、アプリケーションは、ＮＶＭｅコマンド（本明細書において「ＡＡＢＢ  Ｃｏｍｍ」コマンドであると称され得る）の新しいセットを用いて、ＡＡＢＢイメージと通信する。
アプリケーションは、ＡＡＢＢに「ＡＡＢＢ  Ｃｏｍｍ」コマンドを送信でき、ＡＡＢＢは、再びアプリケーションに応答できる。
例えば、アプリケーションは、ＡＡＢＢに特定のクエリ（ｑｕｅｒｙ）を送信でき、ＡＡＢＢは、結果をアプリケーションに再び送信できる。
このようなホスト及びＡＡＢＢ通信は、ＮＶＭｅ又は（ＮＶＭｅ−ｏＦ）プロトコルの一部として実装され得る。
【００７７】
このような場合、「ＡＡＢＢ  Ｃｏｍｍ」コマンドは、本発明のＩＳＡプラットフォームがインターセプトし、ＩＳＡプラットフォーム上で駆動される適切なＡＡＢＢイメージに伝達できるように特殊なＮＶＭｅコマンドの標準フォーマットを有し得る。
図８は、本発明の一実施形態による「ＡＡＢＢ  Ｃｏｍｍ」コマンドの例示的なフォーマットを示す図である。
「ＯＰＣ」は、アドミンコマンドセット又は販売者定義コマンドセットのために予め確保した特殊オペコードであり、「ＣＩＤ」は、コマンド識別子である。
「ＡＡＢＢスロットＩＤ」は、ＡＡＢＢスロットマネジメントコマンドのために用いられるＡＡＢＢスロット識別子である。
【００７８】
一実施形態によれば、複数のＡＡＢＢイメージは、どのような、与えられた時間においても活性化され得る。
従って、図８に示すように、「ＡＡＢＢ  Ｃｏｍｍ」コマンドは、また、１６ビットの「ＡＡＢＢスロットＩＤ」を運搬する。
このようなＡＡＢＢスロットＩＤは、インターセプトした「ＡＡＢＢ  Ｃｏｍｍ」コマンドを正しいＡＡＢＢスロットに伝達するためにＩＳＡプラットフォームによって用いられる。
【００７９】
「ＡＡＢＢ  Ｃｏｍｍ」コマンドをインターセプトすることに加えて、本発明のＩＳＡプラットフォームは、遠隔ホストコンピュータ上で駆動されるアプリケーションと通信し、データ記憶装置に、及びこれからユーザデータを伝送するためにＡＡＢＢドライバが使用できる標準ＡＰＩのセットを提供する。
本発明のＩＳＡプラットフォームが提供するＡＰＩは、例えば、
１）ＡＡＢＢ  Ｃｏｍｍコマンドをインターセプトし、適切なＡＡＢＢスロットに伝達するコマンド、
２）再びアプリケーションにＡＡＢＢ  Ｃｏｍｍコマンドコンプリーションエントリを送信するコマンド、
３）データ記憶装置からユーザデータを読み出すコマンド、
４）データ記憶装置にＡＡＢＢデータを書き込むコマンド、
５）ホストメモリからユーザデータを読み出すコマンド、及び
６）ホストメモリにＡＡＢＢデータを書き込むコマンドのような、多様なコマンドを含む。
【００８０】
「ＡＡＢＢ  Ｃｏｍｍ」コマンドをインターセプトし、適切なＡＡＢＢスロットに伝達するための第一番目のコマンドは、コマンドを受信したサブミッションキュー識別子（ｓｕｂｍｉｓｓｉｏｎ  ｑｕｅｕｅ  ｉｄｅｎｔｉｆｉｅｒ：ＳＱＩＤ）を含む６４Ｂコマンドであり得る。
「ＡＡＢＢ  Ｃｏｍｍ」コマンドコンプリーションエントリをホストコンピュータ上で駆動するアプリケーションに送信するための第二番目のコマンドは、１６Ｂコンプリーションエントリ（ＣＢ）及びＳＱＩＤを含む。
データ記憶装置からユーザデータを読み出すための第三番目のコマンドは、ネームスペースＩＤ（ｎａｍｅｓｐａｃｅ  ＩＤ：ＮＳＩＤ）、スタート論理ブロックアドレス（ｓｔａｒｔ  ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ：ＳＬＢＡ）、複数のブロック（ａ  ｎｕｍｂｅｒ  ｏｆ  ｂｌｏｃｋｓ：ＮＬＢ）、ＩＳＡプラットフォーム内の目的地アドレス（ｄｅｓｔｉｎａｔｉｏｎ  ａｄｄｒｅｓｓ）、及びその他に別の必要な関連した情報だけを含む。
【００８１】
データ記憶装置にＡＡＢＢデータを書き込むための第四番目のコマンドは、ＮＳＩＤ、ＳＬＢＡ、ＮＬＢ、ＩＳＡプラットフォーム内のソースアドレス、及びその他に別の必要な関連した情報だけを含み得る。
ホストメモリからユーザデータを読み出すための第五番目のコマンドは、ホストメモリ内のソースアドレス（ＳＧＬ又はＰＲＰ）、ＩＳＡプラットフォーム内の目的地アドレス、伝送の長さ（ｌｅｎｇｔｈ  ｏｆ  ｔｒａｎｓｆｅｒ）、その他に別の必要な関連した情報を含み得る。
ＡＡＢＢデータをホストメモリに書き込むための第六番目のコマンドは、ＩＳＡプラットフォーム内のソースアドレス、ホストメモリ内の目的地アドレス（ＳＧＬ又はＰＲＰ）、伝送の長さ、その他に別の必要な関連した情報を含み得る。
【００８２】
このようなＡＰＩを用いて、ＡＡＢＢファームウェアは、ホストアプリケーションコマンドを受信し、受信した「ＡＡＢＢ  Ｃｏｍｍ」コマンドのための適切なコンプリーションエントリをホストアプリケーションに送り返すことができる。
データ記憶装置からユーザデータを読み出し、データ記憶装置にユーザデータを書き込むためのＡＰＩコマンドは、データ記憶装置に記憶されたユーザデータをＡＡＢＢがプロセス又は操作するように許容するのに用いられる。
ＡＡＢＢは、ローカルバッファにデータをフェッチし、データをプロセスするか、又はデータを変換させ、変更されたデータ又はプロセシング結果を再びデータ記憶装置に書き込むことができる。
【００８３】
ホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためのＡＰＩコマンドは、ＡＡＢＢファームウェアが遠隔ホストだけでなく、バックエンドデータ記憶装置と共に、又はデータ記憶装置のＮＡＮＤフラッシュ媒体と直接に共にデータの伝送を調整（ｏｒｃｈｅｓｔｒａｔｅ）することを許容するのに用いられる。
このようなアプリケーションコマンド受信、コマンドコンプリーション、並びに、ホスト及びデータ記憶装置の両方からのデータの伝送を利用することによって、ＩＳＡプラットフォームは、データ記憶装置内又はデータ記憶装置に隣接してユーザデータプロセシング及び操作の目的とする機能を実行できる。
【００８４】
一実施形態によれば、ＡＡＢＢファームウェアは、ＡＡＢＢコマンドを用いてホストメモリに／からデータ伝送を開始する。
ホスト及びＡＡＢＢは、一実施形態において、データ記憶装置を介してデータを交換できる。
ホストコンピュータは、データ記憶装置にユーザデータを直接読み出すか、又は書き込むことができ、ＡＡＢＢは、データ記憶装置内のユーザ記憶データ（ｕｓｅｒ  ｄａｔａ  ａｔ  ｒｅｓｔ）を読み出すか、又は変更できる。
ホストデータ移動のためのＡＡＢＢコマンドは、データ操作を即座に（ｏｎ−ｔｈｅ−ｆｌｙ）調整するために、ＡＡＢＢファームウェアにより用いられ得る。
一部のユース（ユーザ）ケースにおいて、ホストコンピュータによってデータが読み出すか、又は書き込むことにより、ＡＡＢＢは、データ操作及びデータの変換を実行できる。
【００８５】
図９は、本発明の一実施形態によるＡＡＢＢ可能な（ＮＶＭｅ−ｏＦ）ＳＳＤ内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
（ＮＶＭｅ−ｏＦ）ＳＳＤ９００は、コントローラ９０１及びフラッシュ媒体９６０を含む。
コントローラ９０１は、プロセッサ９１１、ＰＣＩｅＥＰ９２１、イーサネットインターフェース９１８、ブラックボックス再構成コントローラ９２２、データバッファ９２３、（ＮＶＭｅ−ｏＦ）ホストインターフェース９２４、及び再構成型ロジックブロック９２５を含む。
再構成型ロジックブロック９２５は、ＲＴＬブラックボックス（９３２ａ〜９３２ｎ）のパーティションを含む。
ＲＴＬブラックボックス９３２の各パーティションは、特定の量のハードウェアリソース及びシステムバス９３０を介するＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ホストインターフェース９２４、データバッファ９２３、ブラックボックス構成コントローラ９２２のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
【００８６】
（ＮＶＭｅ−ｏＦ）ＳＳＤ９００は、イーサネットインターフェース９１８を介してホストコマンドを受信できる。
ホストコマンドは、ＡＡＢＢダウンロードコマンド、ＡＡＢＢスロットマネジメントコマンド、及び「ＡＡＢＢ  Ｃｏｍｍ」のようなＡＡＢＢコマンドを含む。
イーサネットインターフェース９１８は、遠隔ホストコンピュータからＡＡＢＢコマンドをインターセプトし、これらをコマンド経路９５１を介して（ＮＶＭｅ−ｏＦ）ホストインターフェース９２４及びプロセッサ９１１に伝達する。
（ＮＶＭｅ−ｏＦ）ＳＳＤ９００のプロセッサ９１１は、コンプリーションエントリを生成でき、これを（ＮＶＭｅ−ｏＦ）ホストインターフェース９２４及びイーサネットインターフェース９１８を経るコマンド経路９５１を介してホストアプリケーションを送り返す。
【００８７】
ダウンロードされたＡＡＢＢが駆動している間、プロセッサ９１１は、（ＮＶＭｅ−ｏＦ）ホストインターフェース９２４及びＦＴＬ９２６を経るコマンド経路９５２を介してフラッシュ媒体９６０にユーザデータを読み出し及び書き込みのためのＡＡＢＢ開始内部コマンド（ＡＡＢＢ−ｉｎｉｔｉａｔｅｄ  ｉｎｔｅｒｎａｌ  ｃｏｍｍａｎｄｓ）（ホスト開始コマンドと対比されて）を発行する。
追加的に、プロセッサ９１１は、データバッファ９２３及びイーサネットインターフェース９１８を経るコマンド経路９５３を介してホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためにホストアプリケーションと通信する。
ホストアプリケーションは、イーサネットインターフェース９１８、（ＮＶＭｅ−ｏＦ）ホストインターフェース９２４、及びＦＴＬ９２６を経る経路９５４を介してメモリに／からフラッシュ媒体９６０にユーザデータを読み出し及び書き込みためのデータリード及びライト動作を開始する。
【００８８】
図１０は、本発明の他の実施形態によるＡＡＢＢ可能なＮＶＭｅＳＳＤ内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
ＮＶＭｅＳＳＤ１０００は、コントローラ１００１及びフラッシュ媒体１０６０を含む。
コントローラ１００１は、プロセッサ１０１１、イーサネットインターフェース１０１８（選択的）、ＰＣＩｅＥＰインターフェース１０２１、ブラックボックス再構成コントローラ１０２２、データバッファ１０２３、ＮＶＭｅホストインターフェース１０２４、及び再構成型ロジックブロック１０２５を含む。
再構成型ロジックブロック１０２５は、ＲＴＬブラックボックス（１０３２ａ〜１０３２ｎ）のパーティションを含む。
ＲＴＬブラックボックス１０３２の各パーティションは、特定の量のハードウェアリソース及びシステムバス１０３０を介するＮＶＭｅホストインターフェース１０２４、データバッファ１０２３、ブラックボックス構成コントローラ１０２２のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
【００８９】
ＮＶＭｅＳＳＤ１０００は、ＰＣＩｅＥＰインターフェース１０２１を介してホストコマンドを受信できる。
ホストコマンドは、ＡＡＢＢダウンロードコマンド、ＡＡＢＢスロットマネジメントコマンド、及び「ＡＡＢＢ  Ｃｏｍｍ」コマンドのようなＡＡＢＢコマンドを含む。
ＰＣＩｅＥＰインターフェース１０２１は、遠隔ホストコンピュータからＡＡＢＢコマンドをインターセプトし、これらをコマンド経路１０５１を介してＮＶＭｅホストインターフェース１０２４及びプロセッサ１０１１に伝達する。
ＮＶＭｅＳＳＤ１０００のプロセッサ１０１１は、コンプリーションエントリを生成でき、これをＮＶＭｅホストインターフェース１０２４及びＰＣＩｅＥＰインターフェース１０２１を経るコマンド経路１０５１を介してホストアプリケーションに送り返す。
【００９０】
ダウンロードされたＡＡＢＢが駆動している間に、プロセッサ１０１１は、ＮＶＭｅホストインターフェース１０２４及びＦＴＬ１０２６を経るコマンド経路１０５２を介してフラッシュ媒体１０６０にユーザデータを読み出し及び書き込みするためのＡＡＢＢ開始内部コマンド（ホスト開始コマンドと対比されて）を発行する。
さらに、プロセッサ１０１１は、データバッファ１０２３及びＰＣＩｅＥＰインターフェース１０２１を経るコマンド経路１０５３を介してホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためにホストアプリケーションと通信する。
ホストアプリケーションは、ＰＣＩｅＥＰインターフェース１０２１、ＮＶＭｅホストインターフェース１０２４、及びＦＴＬ１０２６を経る経路１０５４を介してホストメモリに／からフラッシュ媒体１０６０にユーザデータを読み出し及び書き込みのためのデータリード及びライト動作を開始する。
【００９１】
本発明の一実施形態によれば、データ記憶デバイスは、データ記憶媒体と、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス（ａｐｐｌｉｃａｔｉｏｎ  ａｃｃｅｌｅｒａｔｉｏｎ  ｂｌａｃｋ−ｂｏｘ：ＡＡＢＢ）スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル（ｒｅｇｉｓｔｅｒ−ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ：以下、ＲＴＬと記す）ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
ＲＴＬビットストリームを複数のＡＡＢＢスロットの内の一つのＡＡＢＢスロットにダウンロードし、ＡＡＢＢスロットを再構成し、プロセッサのプロセッサコアにファームウェアドライバをロードする構成コントローラと、を有し、
ファームウェアドライバがロードされたプロセッサコアは、ＡＡＢＢスロット内にダウンロードされたＲＴＬビットストリームを用いて、データ記憶媒体内に格納されたデータにアクセスして処理するために、遠隔アプリケーションのデータ加速プロセスを駆動する。
【００９２】
データ記憶装置は、不揮発性メモリエクスプレス（ｎｏｎｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ：ＮＶＭｅ）ソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）であってもよい。
データ記憶装置は、ＮＶＭｅオーバーファブリックス（ＮＶＭｅ  ｏｖｅｒ  ｆａｂｒｉｃｓ：ＮＶＭｅ−ｏＦ）ＳＳＤであってもよく、ホストインターフェースは、イーサネットインターフェースであってもよい。
【００９３】
遠隔ホストコンピュータは、第２ＲＴＬビットストリーム及び第２ファームウェアドライバイメージをデータ記憶装置に伝送し、構成コントローラは、ＡＡＢＢスロットにダウンロードされたＲＴＬビットストリームを廃棄して第２ＲＴＬビットストリームをダウンロードし、第２ＲＴＬビットストリーム及び第２ファームウェアドライバイメージを用いて、第２データ加速プロセスを駆動するために第２ファームウェアをプロセッサコアにロードしてもよい。
データ記憶装置は、遠隔アプリケーションにディスカバリー情報をさらに伝送し、ディスカバリー情報は、ＡＡＢＢスロットの機能（ｆｅａｔｕｒｅｓ）、特徴、及び属性を含んでもよい。
【００９４】
ホストコマンドは、ＲＴＬビットストリーム及びファームウェアドライバを活性化、非活性化及び廃棄するためのマネジメントコマンドを含んでもよい。
ホストコマンドは、活性化されたＡＡＢＢスロットと通信するためのＡＡＢＢスロット通信コマンドを含み、ＡＡＢＢスロット通信コマンドは、活性化されたＡＡＢＢスロットの識別子を含んでもよい。
ファームウェアドライバがロードされたプロセッサコアは、遠隔アプリケーションに依存しない（ａｇｎｏｓｔｉｃ）アプリケーションプログラムインターフェース（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍ  ｉｎｔｅｒｆａｃｅ：ＡＰＩ）呼び出し（ｃａｌｌ）のセットを用いて、遠隔アプリケーションのデータ加速プロセスを実行している間に、データ記憶媒体に格納されたデータにアクセスする。
【００９５】
一つ又はそれ以上のＡＡＢＢスロットは、ロジック領域、相互接続、ルックアップテーブル（ｌｏｏｋ−ｕｐ  ｔａｂｌｅ：ＬＵＴ）、ランダムアクセスメモリ（ＲＡＭ）ブロック、ハードマクロ、並びに、クロック及びリセット信号を含んでもよい。
一つ又はそれ以上のＡＡＢＢスロットは、プログラミング可能なクロック／リセット、プロセッサコアに対するアドバンスドエクステンシブルインターフェース（ａｄｖａｎｃｅｄ  ｅｘｔｅｎｓｉｂｌｅ  ｉｎｔｅｒｆａｃｅ：ＡＸＩ）、ダブルデータレート（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ：ＤＤＲ）メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ：ＰＣＩｅ）インターフェース、及びイーサネットインターフェースを含んでもよい。
【００９６】
本発明の他の実施形態によれば、ブリッジ装置は、データ記憶装置のデータ記憶媒体内に格納されたデータにアクセスするデータ記憶インターフェースと、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス（ａｐｐｌｉｃａｔｉｏｎ  ａｃｃｅｌｅｒａｔｉｏｎ  ｂｌａｃｋ−ｂｏｘ：ＡＡＢＢ）スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル（ｒｅｇｉｓｔｅｒ−ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ：以下、ＲＴＬと記す）ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、ＲＴＬビットストリームを複数のＡＡＢＢスロットの内の一つのＡＡＢＢスロットにダウンロードし、前記ＡＡＢＢスロットを再構成し、プロセッサのプロセッサコアにファームウェアドライバをロードする構成コントローラと、を有し、ファームウェアドライバがロードされたプロセッサコアは、データ記憶インターフェースを介してデータ記憶装置のデータ記憶媒体内に格納されたデータにアクセスし、ＡＡＢＢスロット内にダウンロードされたＲＴＬビットストリームを用いて、前記データを処理するために遠隔アプリケーションのデータ加速プロセスを実行する。
【００９７】
データ記憶インターフェースは、ＮＶＭｅインターフェースであってもよい。
ホストインターフェースはイーサネットインターフェースであってもよく、データ記憶装置は（ＮＶＭｅ−ｏＦ）ＳＳＤであってもよい。
遠隔ホストコンピュータは、第２ＲＴＬビットストリーム及び第２ファームウェアドライバイメージをブリッジ装置に伝送し、構成コントローラは、ＡＡＢＢスロットにダウンロードされたＲＴＬビットストリームを廃棄して第２ＲＴＬビットストリームをダウンロードし、前記第２ＲＴＬビットストリーム及び第２ファームウェアドライバイメージを用いて、第２データ加速プロセスを実行するために第２ファームウェアドライバイメージをプロセッサコアにロードする。
【００９８】
ブリッジ装置は、遠隔アプリケーションにディスカバリー情報をさらに伝送し、ディスカバリー情報は、前記ＡＡＢＢスロットの機能、特徴、及び属性を含んでもよい。
ホストコマンドは、ＲＴＬビットストリーム及びファームウェアドライバを活性化、非活性化及び廃棄するためのマネジメントコマンドを含んでもよい。
ホストコマンドは、活性化されたＡＡＢＢスロットと通信するためのＡＡＢＢスロット通信コマンドを含み、ＡＡＢＢスロット通信コマンドは、活性化されたＡＡＢＢスロットの識別子を含んでもよい。
ファームウェアドライバがロードされた前記プロセッサコアは、遠隔アプリケーションに依存しないアプリケーションプログラムインターフェース（ＡＰＩ）呼び出しのセットを用いて、遠隔アプリケーションのデータ加速プロセスを実行している間に、データ記憶媒体に格納されたデータにデータ記憶インターフェースを介してアクセスしてもよい。
【００９９】
一つ又はそれ以上のＡＡＢＢスロットは、ロジック領域、相互接続、ルックアップテーブル（ＬＵＴ）、ランダムアクセスメモリ（ＲＡＭ）ブロック、ハードマクロ、及びクロック及びリセット信号を含んでもよい。
一つ又はそれ以上のＡＡＢＢスロットは、プログラミング可能なクロック／リセット、プロセッサコアに対するアドバンスドエクステンシブルインターフェース（ＡＸＩ）、ダブルデータレート（ＤＤＲ）メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス（ＰＣＩｅ）インターフェース、及びイーサネットインターフェースを含んでもよい。
【０１００】
尚、本発明は、上述の実施形態に限られるものではない。ＮＶＭｅ及び（ＮＶＭｅ−ｏＦ）装置のようなデータ記憶装置内におけるインストレージ加速を提供するためのシステム及び方法である本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【産業上の利用可能性】
【０１０１】
本発明は、データ記憶装置におけるインストレージ加速を提供してデータ処理を高速化するため、非揮発性メモリなどを用いるソリッドステートドライブ（ＳＳＤ）などのようなデータ記憶システムに好適に使用される。
【符号の説明】
【０１０２】
１００    データ記憶システム
１１０    ホスト（コンピュータ）
１１１    アプリケーション
１１２    ＯＳ／ファイルシステム
１１３    （ＮＶＭｅ−ｏＦ）ドライバ
１５０    イーサネット
１６０    シャーシ
１６１    イーサネットスイッチ
１６２    ベースボードマネジメントコントローラ（ＢＭＣ）
１６３    ＰＣＩｅスイッチ
１６４    マネジメントインターフェース
１６５    ミッドプレーン
１７０（１７０ａ〜１７０ｎ）    ｅＳＳＤ
２００    （ＮＶＭｅ−ｏＦ）ブリッジ装置
２１１    隣接ストレージコンピュート（ＮＳＣ）プロセッサ
２１２    システムメモリ
２１３    コマンドパーサー
２１４    コマンド分類器
２１５    コマンドプロセッサ
２１６    ＰＳＱモジュール
２１７    ＰＡＰＰモジュール
２１８    （ＮＶＭｅ−ｏＦ）応答機
２１９    ＰＣＩｅＣＥパーサー
２２０    ＰＣＩｅ−サイドコマンドコンプリーションキュー（ＰＣＱ）モジュール
２３１    特殊コマンドユニット（ＳＣＵ）
２３２    ファブリックコマンドユニット（ＦＣＵ）
２３３    アドミンコマンドユニット（ＡＣＵ）
２３４    リードコマンドユニット（ＲＣＵ）
２３５    ライトコマンドユニット（ＷＣＵ）
４００    ブリッジ装置
４１１    プロセッサ
４１７    ＰＣＩｅインターフェース
４１８    （選択的）イーサネットインターフェース
４２１    ＰＣＩｅエンドポイント（ＥＰ）
４２２    ブラックボックス（ＢＢ）再構成コントローラ
４２３    データバッファ
４２４    ＮＶＭｅ／（ＮＶＭｅ−ｏＦ）ホストインターフェース
４２５    再構成型ロジックブロック
４３０    システムバス
４３１（４３１ａ〜４３１ｎ）    ブラックボックス（ＢＢ）ドライバ
４３２    ＲＴＬブラックボックス
４３２ａ〜４３２ｎ    ＲＴＬブラックボックスのパーティション
４５０    バックエンドＳＳＤ
【図１】
2019075109.tif 000003
【図２】
2019075109.tif 000004
【図３】
2019075109.tif 000005
【図４】
2019075109.tif 000006
【図５】
2019075109.tif 000007
【図６】
2019075109.tif 000008
【図７】
2019075109.tif 000009
【図８】
2019075109.tif 000010
【図９】
2019075109.tif 000011
【図１０】
2019075109.tif 000012