(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-08
(45)【発行日】2022-08-17
(54)【発明の名称】システム及びそのアクセラレーション方法並びにアクセラレーションモジュール
(51)【国際特許分類】
G06F 13/12 20060101AFI20220809BHJP
G06F 3/08 20060101ALI20220809BHJP
G06F 13/38 20060101ALI20220809BHJP
【FI】
G06F13/12 340A
G06F3/08 H
G06F13/38 350
(21)【出願番号】P 2019038574
(22)【出願日】2019-03-04
【審査請求日】2022-02-24
(32)【優先日】2018-03-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-03-09
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-03-13
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-09-05
(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)【発明者】
【氏名】フレッド ワーレイ
(72)【発明者】
【氏名】ソンポン ポール オラリグ
【審査官】打出 義尚
(56)【参考文献】
【文献】国際公開第2016/135875(WO,A1)
【文献】国際公開第2015/166540(WO,A1)
【文献】米国特許第08504750(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/12
G06F 3/08
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
システムであって、
アプリケーションを実行するプロセッサと、
前記プロセッサ上で実行される前記アプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するための
アップストリームエンドポイントと、
ストレージデバイスと通信するための第1ダウンストリームルートポートと、
前記ストレージデバイスと通信するための第2ダウンストリームルートポートと、
ハードウェアを使用して具現され、アクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー(以下、APM-F)を含むアクセラレーションモジュールと、を有し、
前記ストレージデバイスは、前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第1エンドポイントと、
前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第2エンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
前記アプリケーションに対するアプリケーションデータを格納するための
ストレージと、
前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するための前記ストレージデバイスのアクセラレーションプラットフォームマネージャー(以下、APM-S)と、を含み、
前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、PCIe(Peripheral Component Interconnect exchange)バスを介して通信し、
前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにローディング(loading)することなく、前記アプリケーション
に対する前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援
し、
前記アクセラレーションモジュールは、前記第1ダウンストリームルートポートで前記ストレージデバイスから受信した第3PCIeトランザクションを前記アップストリームエンドポイントを介して前記プロセッサに転送し、前記第2ダウンストリームルートポートの前記ストレージデバイスから受信した第4PCIeトランザクションを前記APM-Fに転送するように動作することを特徴とするシステム。
【請求項2】
前記プロセッサと前記アクセラレーションモジュールとの間
を通信可能に接続(bridging)し、前記
アップストリームエンドポイントを含む第1ブリッジコンポーネントと、
前記アクセラレーションモジュールと前記ストレージデバイスとの間
を通信可能に接続し、前記第1ダウンストリームルートポート及び前記第2ダウンストリームルートポートを含む第2ブリッジコンポーネントと、をさらに含むことを特徴とする請求項1に記載のシステム。
【請求項3】
前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記FPGAは、前記
アップストリームエンドポイント、前記第1ダウンストリームルートポート、及び前記第2ダウンストリームルートポートを含み、
前記ストレージデバイスは、SSD(SolidStateDrive)を含み、
前記SSDの第1エンドポイントは、前記第1ダウンストリームルートポート
に関連付けられ、
前記SSDの第2エンドポイントは、前記第2ダウンストリームルートポート
に関連付けられることを特徴とする請求項1に記載のシステム。
【請求項4】
前記APM-Fは、前記
アップストリームエンドポイントを介して前記プロセッサに結果を伝送するように動作することを特徴とする請求項3に記載のシステム。
【請求項5】
前記FPGAは、前記SSDの第1エンドポイントの機能を、前記
アップストリームエンドポイントにコピー
するための構成モニターを
さらに含むことを特徴とする請求項3に記載のシステム。
【請求項6】
前記FPGAは、第1物理機能(physical function)(以下、第1PF)、第2物理機能(以下、第2PF)を含み、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記第1ダウンストリームルートポート及び前記SSDの第1エンドポイントを介して前記SSDに伝送し、
前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝送し、
前記第1ダウンストリームルートポートにて前記SSDから受信した第2PCIeトランザクションを前記プロセッサに伝送し、
前記第2ダウンストリームルートポートにて前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝送するように動作し、
前記第1PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられることを特徴とする請求項3に記載のシステム。
【請求項7】
前記FPGAは、第2
アップストリームエンドポイントをさらに含み、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記
アップストリームエンドポイントにて前記第1ダウンストリームルートポート及び前記SSDの第1エンドポイントを介して前記SSDに伝送し、
前記第2
アップストリームエンドポイントにて前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝送し、
前記第1ダウンストリームルートポートにて前記SSDから受信した第2PCIeトランザクションを、前記
アップストリームエンドポイントを介して前記プロセッサに伝送し、
前記第2ダウンストリームルートポートにて前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝送するように動作することを特徴とする請求項3に記載のシステム。
【請求項8】
ハードウェアを利用して具現されたアクセラレーションモジュールであって、
アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー(以下、APM-F)と、
アプリケーションプログラムを実行するプロセッサと通信するためのアップストリームエンドポイントと、
前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(以下、APM-S)を含む前記ストレージデバイスと通信するための第1ダウンストリームルートポート及び第2ダウンストリームルートポートと、
前記アクセラレーションモジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ及び前記ストレージデバイスと通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをローディング(loading)することなく、前記
アプリケーションプログラムのための前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援し、
前記アクセラレーションモジュールは、前記第1ダウンストリームルートポートで前記ストレージデバイスから受信した第3PCIeトランザクションを前記アップストリームエンドポイントを介して前記プロセッサに転送し、前記第2ダウンストリームルートポートの前記ストレージデバイスから受信した第4PCIeトランザクションを前記APM-Fに転送するように動作することを特徴とするアクセラレーションモジュール。
【請求項9】
前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現されることを特徴とする請求項8に記載のアクセラレーションモジュール。
【請求項10】
前記APM-Fは、前記
アップストリームエンドポイントを介して前記プロセッサに結果を伝送するように動作することを特徴とする
請求項9に記載のアクセラレーションモジュール。
【請求項11】
前記FPGAは、第1物理機能(physical function)(以下、第1PF)、第2物理機能(以下、第2PF)を含み、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記
第1ダウンストリームルートポートを介して前記ストレージデバイスに伝送し、
前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝送し、
前記
第1ダウンストリームルートポートにて前記ストレージデバイスから受信した第2PCIeトランザクションを前記プロセッサに伝送し、
前記
第2ダウンストリームルートポートにて前記ストレージデバイスから受信した第1アクセラレーションコマンドを前記APM-Fに伝送するように動作し、
前記第1PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられることを特徴とする請求項9に記載のアクセラレーションモジュール。
【請求項12】
前記FPGAは、前記ストレージデバイスのエンドポイントの機能を前記
アップストリームエンドポイントにコピー
するための構成モニターをさらに含むことを特徴とする請求項11に記載のアクセラレーションモジュール。
【請求項13】
前記FPGAは、
第2アップストリームエンドポイントを含み、
前記FPGAは、前記
アップストリームエンドポイントにて前記プロセッサから受信した第1PCIeトランザクションを、前記
第1ダウンストリームルートポートを介して前記ストレージデバイスに伝送し、
前記
第2アップストリームエンドポイントにて前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝送し、
前記
第1ダウンストリームルートポートにて前記ストレージデバイスから受信した第2PCIeトランザクションを、前記
アップストリームエンドポイントを介して前記プロセッサに伝送し、
前記
第2ダウンストリームルートポートにて前記ストレージデバイスから受信した第1アクセラレーションコマンドを前記APM-Fに伝送するように動作することを特徴とする請求項9に記載のアクセラレーションモジュール。
【請求項14】
前記FPGAは、前記ストレージデバイスのエンドポイントの機能を前記
アップストリームエンドポイントにコピー
するための構成モニターをさらに含むことを特徴とする請求項13に記載のアクセラレーションモジュール。
【請求項15】
アクセラレーションモジュールを含むシステムのアクセラレーション方法であって、
前記アクセラレーションモジュール
のストレージデバイスから
第2PCIeトランザクションを受信するステップと、
前記
第2PCIeトランザクションが前記アクセラレーションモジュールの第1ダウンストリームルートポートで受信
されたか、前記アクセラレーションモジュールの第2ダウンストリームルートポートで受信
されたか、を判断するステップと、
少なくとも部分的には、前記
第2PCIeトランザクションが前記アクセラレーションモジュールの前記第1ダウンストリームルートポートで受信されたと判断
したことに基づいて、前記アクセラレーションモジュールの
アップストリームエンドポイントを使用して前記
第2PCIeトランザクションをプロセッサに伝送するステップと、
少なくとも部分的には、前記
第2PCIeトランザクションが前記アクセラレーションモジュールの前記第2ダウンストリームルートポートで受信されたと判断
したことに基づいて、前記
第2PCIeトランザクションを前記アクセラレーションモジュールのAPM-Fで処理するステップと、を有し、
前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをロードすることなく、アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対してアクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、PCIeバスを使用して通信することを特徴とするシステムのアクセラレーション方法。
【請求項16】
前記アクセラレーションモジュールは、FPGAを用いて具現されることを特徴とする請求項15に記載のシステムのアクセラレーション方法。
【請求項17】
前記FPGAの前記
アップストリームエンドポイントの前記プロセッサから
第1PCIeトランザクションを受信するステップと、
前記FPGAで、前記
第1PCIeトランザクションが前記FPGAの第1物理機能(physical function)(以下、第1PF)の第1識別子又は前記FPGAの第2物理機能(以下、第2PF)の第2識別子を有するタグを含むか否かを判断することにより、前記
第1PCIeトランザクションが、前記アクセラレーションコマンドであるか否かを判断するステップと、
少なくとも部分的には、前記
第1PCIeトランザクションが、前記第1PFの前記第1識別子を有する前記タグを含むと判断
したことに基づいて、前記アクセラレーションモジュールの前記第1ダウンストリームルートポートを使用して前記
第1PCIeトランザクションを前記ストレージデバイスに伝送するステップと、
少なくとも部分的には、前記
第1PCIeトランザクションが前記第2PFの前記第2識別子を有する前記タグを含むと判断
したことに基づいて、前記
第1PCIeトランザクションを前記アクセラレーションモジュールの前記APM-Fで処理するステップ
と、をさらに有することを特徴とする請求項16に記載のシステムのアクセラレーション方法。
【請求項18】
前記FPGAの前記
アップストリームエンドポイントを使用して前記
第1PCIeトランザクションの結果を前記プロセッサに伝送するステップをさらに
有することを特徴とする請求項17に記載のシステムのアクセラレーション方法。
【請求項19】
前記FPGAの構成モニターを用いて、前記FPGAの前記第1ダウンストリームルートポートと通信する前記ストレージデバイスのエンドポイントの構成を決定するステップと、
前記FPGAの前記
アップストリームエンドポイントを使用して、前記ストレージデバイスの前記エンドポイントの構成を複製するステップと、をさらに
有することを特徴とする請求項17に記載のシステムのアクセラレーション方法。
【請求項20】
前記FPGAの
第2アップストリームエンドポイントにおいて、前記プロセッサから
第1PCIeトランザクションを受信するステップと、
前記FPGAの前記APM-Fで、前記
第1PCIeトランザクションを処理するステップと、
前記FPGAの
第1アップストリームエンドポイントにおいて、前記プロセッサから
第3PCIeトランザクションを受信するステップと、
前記アクセラレーションモジュールの前記第1ダウンストリームルートポートを使用して、前記ストレージデバイスに前記
第3PCIeトランザクションを伝送するステップと、をさらに
有することを特徴とする請求項16に記載のシステムのアクセラレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージデバイスに関し、特に、追加のハードウェアを使用してソリッドステートドライブ(SSD)のパフォーマンスをアクセラレーションさせることができるシステム及びそのアクセラレーション方法並びにアクセラレーションモジュールに関する。
【背景技術】
【0002】
従来の方法においてストレージデバイスを使用するのが非効率的な場合がある。
例として、データベースでクエリの実行を必要とする場合が考慮される。
従来の解決策としては、データベースをコンピュータのメモリにロードし、データベースのメモリ内のコピーに対してクエリを実行した後、結果を処理するものである。
【0003】
これは、データベースが相対的に小さい場合、この方式が合理的であり得るものの、クエリの結果がデータベースの一つの記録を識別するために、数千、数百万以上の記録を含むデータベースをローディングするのは非常に非効率的である。
クエリを実行するために膨大な量のデータをメモリに移動しなければならず、既にメモリに格納された他のデータを代替する可能性がある。
クエリが完了されると、ほとんどのデータが必要でないので、クエリが完了された後に、ほとんどのデータは削除される。
【0004】
つまり、データベースに対して繰り返しクエリが実行されなければならないとき、問題が拡大する可能性がある。
つまり、各クエリは、メモリに再びローディングされるデータベースを要求する可能性がある。
従って、ストレージデバイスに関連する動作をアクセラレーションする方法が必要となっており、その開発が課題となっている。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許第9619167号明細書
【文献】米国特許第9898312号明細書
【文献】米国特許出願公開第20130343181号明細書
【文献】米国特許出願公開第20150254003号明細書
【文献】米国特許出願公開第20160094619号明細書
【文献】米国特許出願公開第20170177270号明細書
【文献】米国特許出願公開第20180052766号明細書
【文献】米国特許出願公開第20180081569号明細書
【非特許文献】
【0006】
【文献】JUN,Sang-Woo,“Scalable Multi-Access Flash Store for Big Data Analytics”,Proceedings of the 2014 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays,ACM 2014,found via Google Scholar(url:https://dspace.mit.edu/bitstream/handle/1721.1/87947/880415120-MIT.pdf;sequence=2),February 2014,49pages.
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は上記従来のストレージデバイスにおける課題点に鑑みてなされたものであって、本発明の目的は、追加のハードウェアを使用してストレージデバイス(SSD)のパフォーマンスをアクセラレーションさせることができるシステム及びそのアクセラレーション方法並びにアクセラレーションモジュールを提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するためになされた本発明によるシステムは、アプリケーションを実行するプロセッサと、前記プロセッサ上で実行される前記アプリケーションによって使用されるデータを格納するメモリと、前記プロセッサと通信するためのアップストリームエンドポイントと、ストレージデバイスと通信するための第1ダウンストリームルートポートと、前記ストレージデバイスと通信するための第2ダウンストリームルートポートと、ハードウェアを使用して具現され、アクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー(以下、APM-F)を含むアクセラレーションモジュールと、を有し、前記ストレージデバイスは、前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第1エンドポイントと、前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第2エンドポイントと、前記ストレージデバイスの動作を管理するためのコントローラと、前記アプリケーションに対するアプリケーションデータを格納するためのストレージと、前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するための前記ストレージデバイスのアクセラレーションプラットフォームマネージャー(以下、APM-S)と、を含み、前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、PCIe(Peripheral Component Interconnect exchange)バスを介して通信し、前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにローディング(loading)することなく、前記アプリケーションに対する前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援し、前記アクセラレーションモジュールは、前記第1ダウンストリームルートポートで前記ストレージデバイスから受信した第3PCIeトランザクションを前記アップストリームエンドポイントを介して前記プロセッサに転送し、前記第2ダウンストリームルートポートの前記ストレージデバイスから受信した第4PCIeトランザクションを前記APM-Fに転送するように動作することを特徴とする。
【0009】
上記目的を達成するためになされた本発明によるアクセラレーションモジュールは、ハードウェアを利用して具現されたアクセラレーションモジュールであって、アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー(以下、APM-F)と、アプリケーションプログラムを実行するプロセッサと通信するためのアップストリームエンドポイントと、前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(以下、APM-S)を含む前記ストレージデバイスと通信するための第1ダウンストリームルートポート及び第2ダウンストリームルートポートと、前記アクセラレーションモジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ及び前記ストレージデバイスと通信し、前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをローディング(loading)することなく、前記アプリケーションプログラムのための前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援し、前記アクセラレーションモジュールは、前記第1ダウンストリームルートポートで前記ストレージデバイスから受信した第3PCIeトランザクションを前記アップストリームエンドポイントを介して前記プロセッサに転送し、前記第2ダウンストリームルートポートの前記ストレージデバイスから受信した第4PCIeトランザクションを前記APM-Fに転送するように動作することを特徴とする。
【0010】
上記目的を達成するためになされた本発明によるシステムのアクセラレーション方法は、アクセラレーションモジュールを含むシステムのアクセラレーション方法であって、前記アクセラレーションモジュールのストレージデバイスから第2PCIeトランザクションを受信するステップと、前記第2PCIeトランザクションが前記アクセラレーションモジュールの第1ダウンストリームルートポートで受信されたか、前記アクセラレーションモジュールの第2ダウンストリームルートポートで受信されたか、を判断するステップと、少なくとも部分的には、前記第2PCIeトランザクションが前記アクセラレーションモジュールの前記第1ダウンストリームルートポートで受信されたと判断したことに基づいて、前記アクセラレーションモジュールのアップストリームエンドポイントを使用して前記第2PCIeトランザクションをプロセッサに伝送するステップと、少なくとも部分的には、前記第2PCIeトランザクションが前記アクセラレーションモジュールの前記第2ダウンストリームルートポートで受信されたと判断したことに基づいて、前記第2PCIeトランザクションを前記アクセラレーションモジュールのAPM-Fで処理するステップと、を有し、前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをロードすることなく、アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対してアクセラレーションコマンドを実行することを支援し、前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、PCIeバスを使用して通信することを特徴とする。
【発明の効果】
【0011】
本発明に係るシステム及びそのアクセラレーション方法並びにアクセラレーションモジュールによれば、追加のハードウェアを使用してデータがロード(load)可能なアクセラレーションモジュールを提供できる。
従って、例えば、SSDからデータをロードするのに発生する遅延を回避することができる。
【図面の簡単な説明】
【0012】
【
図1】本発明の一実施形態によるストレージデバイス上のアクセラレーションされる動作を支援する装置を示すブロック図である。
【
図2】
図1の装置の追加的な細部事項を示すブロック図である。
【
図3】本発明の第1の実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
【
図4】本発明の第1実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【
図5】本発明の第2実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
【
図6】本発明の第2実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【
図7】本発明の第3実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
【
図8】本発明の第3実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【
図9】本発明の第4実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
【
図10】本発明の第4実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【
図11】本発明の第5実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
【
図12】本発明の第5実施形態に基づいて、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【
図13】本発明の第6実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
【
図14】本発明の第6実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【
図15】本発明の第7実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
【
図16】本発明の第7実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である
【
図17】本発明の第8実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
【
図18】本発明の第8実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【
図19】本発明の実施形態による、
図1のアクセラレーションモジュールとの通信を管理するブリッジ構成要素を有する
図1のシステムの構成要素を示すブロック図である。
【
図20A】本発明の実施形態による、
図1のプロセッサ、
図1のアクセラレーションモジュール、
図1のストレージデバイス間の通信を説明するための図である。
【
図20B】本発明の実施形態による、
図1のプロセッサ、
図1のアクセラレーションモジュール、
図1のストレージデバイス間の通信を説明するための図である。
【
図21】本発明の実施形態によるPCIeトランザクションを処理するための、
図1のアクセラレーションモジュールに対する例示的な手順を説明するためのフローチャートである。
【
図22A】本発明の実施形態によるPCIeトランザクションを処理するための、
図1のアクセラレーションモジュールに対する例示的な手順を説明するためのより詳細なフローチャートである。
【
図22B】本発明の実施形態によるPCIeトランザクションを処理するための、
図1のアクセラレーションモジュールに対する例示的な手順を説明するためのより詳細なフローチャートである。
【
図22C】本発明の実施形態によるPCIeトランザクションを処理するための、
図1のアクセラレーションモジュールに対する例示的な手順を説明するためのより詳細なフローチャートである。
【
図23A】本発明の実施形態によるPCIeトランザクションがアクセラレーションコマンドを含む
図1のプロセッサから来ているか否かを判断するために、アクセラレーションモジュールに対する例示的な手順を説明するためのフローチャートである。
【
図23B】本発明の実施形態によるPCIeトランザクションがアクセラレーションコマンドを含む
図1のプロセッサから来ているか否かを判断するために、アクセラレーションモジュールに対する例示的な手順を説明するためのフローチャートである。
【
図24】本発明の実施形態による、PCIeトランザクションがアクセラレーションコマンドを含む
図1のストレージデバイスから来ているか否かを判断するために、アクセラレーションモジュールに対する例示的な手順を説明するためのフローチャートである。
【
図25】本発明の実施形態に基づいて、PCIeトランザクションがアクセラレーションコマンドを含む
図1のプロセッサから来ているか否かを判断するための、第1ブリッジ構成要素の例示的な手順のフローチャートを示す。
【
図26】本発明の実施形態による、PCIeトランザクションがアクセラレーションコマンドを含む
図1のストレージデバイスから来ているか否かを判断するための、
図19の第2ブリッジ構成要素の例示的な手順を説明するためのフローチャートである。
【
図27A】本発明の実施形態による、
図1のストレージデバイスがPCIeトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
【
図27B】本発明の実施形態による、
図1のストレージデバイスがPCIeトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
【
図27C】本発明の実施形態による、
図1のストレージデバイスがPCIeトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
【
図28A】本発明の実施形態による、
図1のストレージデバイスが、
図1のアクセラレーションモジュールから出て来るPCIeトランザクションがアクセラレーションコマンドを含んでいるか否かを判断するための、例示的な手順を説明するためのフローチャートである。
【
図28B】本発明の実施形態による、
図1のストレージデバイスが、
図1のアクセラレーションモジュールから出て来るPCIeトランザクションがアクセラレーションコマンドを含んでいるか否かを判断するための、例示的な手順を説明するためのフローチャートである。
【発明を実施するための形態】
【0013】
次に、本発明に係るシステム及びそのアクセラレーション方法並びにアクセラレーションモジュールを実施するための形態の具体例を図面を参照しながら説明する。
【0014】
後述する詳細な説明で、多様な特定の詳細が、本発明の技術的思想に対する十分な理解を助けるために提供する。
しかし、この分野における通常の技術を有する者は、このような特定の詳細がなくても、本発明の技術的思想を具現することができる。
他の例として、よく知られている方法、手順、コンポーネント、回路及びネットワークは実施形態の側面を不必要に曖昧にしないために詳細に説明しない。
【0015】
ここで、第1、第2などのような用語が多様なエレメントを説明するために使用するが、このような要素は、このような用語によって限定されない。
このような用語は、一つのエレメントを他の一つのエレメントと区別するためにだけ使用される。
例として、本発明の技術的思想の範囲から逸脱せずに、第1モジュールは、第2モジュールと命名されることができる。
同様に、第2モジュールは、第1モジュールと命名されることができる。
【0016】
本発明の技術的思想の説明で使用する用語は、特定の実施形態を説明するための目的でのみ使用され、本発明の技術的思想を限定することと意図しない。
本発明の技術的思想の説明及び添付した請求項において使用したように、コンテキスト(context)で明確に明示されなければ単数表現は複数表現も、また含めるものと意図する。
「及び/又は」の用語は、一つ又はそれより多くの関連された項目の任意かつすべての可能な組み合わせを含むものと参照される。
「包含する(含む)(comprises)」及び/又は「包含する(含む)(comprising)」の用語は、詳細な説明で使用した際に言及された特性、整数、ステップ、動作、エレメント、及び/又はコンポーネントの存在を明示し、一つ又はそれより多くの他の特性、整数、ステップ、動作、エレメント、コンポーネント及び/又はそれらのグループの存在又は追加を排除しない。
図面の構成及び特性は、不可欠に実際の比率に比例しない。
【0017】
本発明の実施形態は、特定のデータ処理機能をアクセラレーションするためにFPGA(Field Programmable Gate Array)が使用されているSSD(Solid State Drive)又は他のストレージデバイスの構造を提案する。
FPGAデバイスは、PCIe(Peripheral Component Interconnect Express)ホストインターフェースを提供するSSDの前に又は横に配置される。
ホストトランザクション(host transactions)が「FPGA PCIe」インターフェースで受信されると、PCIeトランザクションは、バックエンドSSDコントローラ(backend SSD controller)に伝達される。
「SSD」及び「SSDコントローラ」という用語は、明示された場合を除いては、一般的に同じ意味で使用される。
【0018】
バックエンドSSDは、PCIeエンドポイント及び不揮発性メモリエクスプレス(NVMe)コントローラを具現する。
したがって、ホストは、直接NVMeプロトコルをバックエンドSSDに伝達する。
つまり、FPGAを介してホストからバックエンドSSDに接続されるPCIeインターフェースは、通過(pass-through)特性である。
SSDは、直接メモリアクセス(DMA)を介してホストシステムメモリとのデータ伝送を実行する。
FPGAダウンストリームポート(DSP)は、PCIeトランザクションフィルタとして使用されるメモリのフィルタアドレス範囲(Filter Address Range:FAR)でプログラミングされる。
DSPは、FARウィンドウに属するすべてのPCIeトランザクションをフィルタリングして、それらをFPGAのロジック及びメモリに伝達する。
【0019】
プログラミングされたFARウィンドウに属していないすべてのPCIeトランザクションは、ホストシステムのメモリに属し、ホストに直接伝達される。
SSDコントローラは、「PCIe VDM」(Vendor Defined Message)メカニズム、又は「I2C/SM」バスのような他のサイドバンドバスを使用するFPGAで適切なFARウィンドウをプログラムする。
SSDコントローラは、「PCIe BAR」(Base Address Register)を介してホストにアドレス範囲のブロックを要請する。
ホストのBIOSが要請されたアドレスブロックをSSDコントローラに割り当てた後、SSDコントローラは、「FPGA DSP」でそのアドレス範囲のサブセットをFARウィンドウでプログラムする。
【0020】
DSPにプログラムされたアドレスの範囲は、SSDコントローラとFPGAとが通信し合うために使用される。
つまり、ホストがアドレスブロックを割り当てると、SSDとFPGAがPCIe階層で互いに、又は他のPCIeデバイスを干渉せずにホストトランザクションとPCIeバスを共有することができる。
SSDコントローラは、共有PCIeバスを介してFARウィンドウを使用してFPGAにアクセラレーションコマンドとデータを提供することができる。
FPGA又はホストが共有PCIeバス及び前記のアドレス範囲を使用してSSDコントローラからアクセラレーションのためのデータを要請することもできる。
FPGAは、同じメカニズムを使用してアクセラレーションの結果をSSDコントローラに再び提供することもできる。
提案された構造及びメカニズムは、低コスト及びFPGAデバイスを使用しているSSDベースのアプリケーションアクセラレーションのための低消費電力の解決策を具現することができる。
【0021】
≪提案された解決策の細部事項≫
基本的なアイディアは、FPGA及びSSD(及び/又は他のストレージデバイス)がホストと通信しながら(別のデバイスとして又は単一のデバイスに統合して)集合的に作動するというものである。
以下、説明において、ストレージデバイスはSSDを意味する。
3つのトラフィックストリームがある。
【0022】
1)ホストからストレージデバイスに。
ホストからストレージデバイスへの通信は、FPGA具現に応じてFPGAを介してストレージデバイスのEPに伝送されるすべてのトラフィックをアップストリームポート(USP)又はエンドポイント(EP)からダウンストリームポート(DSP)、ルートポート又はルート複合ポート(RP)に単純に伝送することにより、FPGAによって管理される。
FPGAは、ホストとストレージデバイスとの間のNVMe通信を支援するために、ストレージデバイスによってホストにさらされる物理関数を含み得る。
【0023】
2)FPGAに対するアクセラレーションコマンドの通信。
本発明のいくつかの実施形態で、アクセラレーションコマンドは、次の方式で処理される。
つまり、アクセラレーションサービスマネージャー(Acceleration Service Manager:ASM)が、ホスト上で実行され得る。
ASMは、ストレージデバイス(APM-Sとして識別される)とFPGA(APM-Fとして識別される)の両方の一部として構成を含み得るAPM(Acceleration Platform Manager)と通信することができる。
ホスト上のASMは、アクセラレーションコマンド及び関連情報をSSDに伝送するためにNVMeプロトコルを使用することができる。
その次にSSDは、FPGAと関連したアクセラレーションオーケストレーター(orchestrator)のように動作する。
APM-Sによって許容されるすべてのアクセラレーションコマンドは、独占の(proprietary)インターフェースを使用してAPM-Fに適切なコマンドを提供するために使用される。
独占のインターフェースは、アドレス空間のウィンドウを使用して容易になる。
【0024】
このアドレス空間ウィンドウは、ストレージデバイスの要請に応じて、ホストメモリアドレスマップ内に割り当てることができる(部分的には、ストレージデバイスとホストとの間のNVMeプロトコルを使用して通信を容易にするために)。
適切なアドレス空間でアドレスを使用するコマンドは、ホストやストレージデバイスから別のモジュールに直接通信する代わりに、APM-Fによる処理のためにFPGAによってフィルタリングされ得る。
フィルタリングは、コマンドと関連したタグを使用したり、PCIeメッセージベースのフィルタリングを使用して実行されたりすることもできる。
このフィルタリングは、FPGAをストレージデバイスに接続するDSP/RPに接続されたフィルタによって実行され得る。
【0025】
3)データのアクセラレーション及び処理のために、データをフェッチ(fetch)するためのFPGAとSSDとの間の通信。
本発明のいくつかの実施形態で、アクセラレーションは次の方法で行われる。
つまり、FPGAがアクセラレーション処理のためにデータのフェッチを要請するとき、FPGAは上述で議論された通り、ストレージデバイスとFPGAとの通信のために使用されるホストのメモリアドレスマップ内に割り当てられたアドレス空間を使用して要請を送ることができる。
【0026】
≪DSPフィルタ構造≫
この構造は、アクセラレーションされたデータを処理するために、FPGAと共有できるホストとSSDとの間のPCIeバスによる方法を提供する。
論理的に言って、FPGAは、ホストとSSDコントローラとの間に動作可能に配置される。
ホストは、FPGAのアップストリームポート(USP)に接続され、SSDは、FPGAのダウンストリームポート(DSP)に接続される。
【0027】
ホスト及び/又はSSDに接続するために使用されるPCIeバスは、x4、x8レーン(lanes)又はその他所望の幅であり得る。
FPGAのUSP及びDSPポートは、2方向の両方でPCIeトランザクション(つまり、トランザクション階層パケット(TLPs))を伝達する。
「PCIe TLP」の例は、構成の読み取り、構成の書き込み、メモリの読み取り及びメモリの書き込みである。
したがって、ホストは、SSDと直接通信する。
FPGA上のDSPポートは、プログラムされたフィルタのアドレス範囲(FAR)をベースにしたSSDコントローラから出てくるすべてのPCIeトランザクションをフィルタリングするロジックを有する。
【0028】
遮断されたSSDコントローラPCIeトランザクションは、アクセラレーションプラットフォームマネージャー(Acceleration Platform Manager)-FPGA(APM-F)ブロックに伝達される。
APM-Fモジュールは、SSDコントローラと通信する。
APM-Fモジュールは、SSDコントローラからのアクセラレーションプラットフォームマネージャー・SSD(APM-S)ファームウェアからデータ及びアクセラレーションコマンドを受信する。
その後にAPM-Fモジュールは、受信されたアクセラレーションコマンド及びデータをランタイム(RT)スケジューラに提供する。
RTスケジューラは、データ処理を実行するために、適切なアクセラレーションエンジンを順番にプログラムする。
【0029】
FPGAの使用は、1つの可能な具現を示すが、FPGA以外の具現も使用することができる。
FPGAは、ストレージデバイス内に具現され得る。
FPGAは、ホストメモリにデータをフェッチした後、ホストでデータを処理するよりは、ストレージデバイスに近く実行されうる、アクセラレーションされたデータの処理を支援する。
データをフェッチする代わりに、ストレージデバイス/FPGAは、クエリを受信して処理を局所的(locally)に行うことができる。
【0030】
SSDコントローラは、PCIeの伝送を使用してNVMeプロトコル処理ロジックを具現する。
PCIe構成の一部として、SSDコントローラは、それ自体の用途のため、ホストシステムアドレスマップのブロックを要請する。
SSDコントローラは、NVMeプロトコルを支援するために、一般的に必要なものよりも大きなブロックを要請する。
ストレージデバイスとFPGAとの間の通信を管理するために追加の空間の一部又は全部が使用され得る。
例として、NVMeプロトコルは、64KBのアドレス空間が必要になり得る。
提案された構造でSSDコントローラは、10MBアドレスブロックを要請することができる。
【0031】
SSDコントローラは、ホスト透明のある方法(host transparent manner)でFPGAと通信するために割り当てられたアドレスマップの一部を使用する。
SSD-FPGA通信のために予約のシステムアドレスマップのサブセットをフィルタアドレス範囲(FAR)と称する。
その後にSSDコントローラは、「FPGA DSP」でFARウィンドウをプログラムする。
SSDコントローラは、FPGAのFARウィンドウをプログラミングするために、I2CバスやSMバスのようなサイドバンドバスを使用することができる。
SSDコントローラは、FPGAのFARウィンドウをプログラミングするために「PCIe VDM」(Vendor Defined Messages)を使用することもできる。
【0032】
ホストインターフェースロジック(HIL)モジュールは、NVMeプロトコルを具現して、ホスト上で実行中のNVMeドライバと通信する。
HILモジュールは、一般的なホストNVMeコマンドを実行するためにFTL(Flash Translation Layer)と相互作用する。
さらに、HILモジュールは、ホスト側から受信した特定のアクセラレーションコマンドを遮断し、それらをAPM-Sモジュールに伝達する。
APM-Sは、ファームウェア又はファームウェア+ハードウェアとして具現することができる。
APM-Sモジュールは、特定のアクセラレーションコマンドを処理した後、アクセラレーションコマンドとデータをFPGA上のAPM-Fモジュールに送るために準備する。
APM-Sモジュールは、アクセラレーション情報をFPGAに送るためにFAR(Filter Address Range)アドレスを使用する。
APM-SとAPM-Fとの間の通信は、メッセージをベースにすることができる。
このようなAPM-SとAPM-Fとの間の通信のために、多様な方法を使用することができる。
【0033】
提案した構造及びメカニズムは、FPGAベースのアクセラレーションを可能にするために、SSDコントローラが、ホストPCIeバスの共有を可能にする。
本発明の実施形態は、SSDでFPGAを使用するアプリケーションのアクセラレーション化のための低コスト及び低消費電力の解決策を提供する。
【0034】
≪DSP+USPフィルタ構造≫
この構造で、FPGAは間接的な方式でホストに表示される。
FPGAとSSDとの間の通信は、提案したソリューション1と同じように維持される。
SSDコントローラは、ホストから大きなシステムのアドレス空間を要請する。
SSDコントローラは、割り当てられたアドレスブロックを3つのウィンドウに分割する。
一番目のウィンドウは、「NVMe Controller」レジスタのアドレス空間のために使用される。
二番目のウィンドウは、前述したように、FPGAとSSDとの間の通信のために使用される。
三番目のウィンドウは、ホストとFPGAとの間の通信のためのものである。
【0035】
ホストは、特定のNVMeレジスタからFPGAデバイスの位置を発見することができる。
SSDコントローラは、FPGAデバイスの位置を知るために、ホストアプリケーションによって読み出される特定のレジスタの三番目のウィンドウを広告することができる。
SSDコントローラは、USPがこのようなトランザクションをフィルタリングすることができるよう、同じアドレスウィンドウでUSPをプログラミングすることもできる。
USPは、三番目ウィンドウのアドレス空間に属するホストのすべてのトランザクションをフィルタリングしてFPGAアクセラレーションロジックに伝達する。
このメカニズムは、ホスト上のアクセラレーションサービスマネージャー(ASM)がアクセラレーションコマンド及びデータをFPGAに伝送するために使用することができる。
【0036】
したがって、本発明のいくつかの実施形態で、フィルタリングはまた、ホストからFPGAによって受信されたトラフィックに基づいて実行することができる。
つまり、ホストは、アクセラレーションコマンド/データをFPGAに送ることもできる。
FPGAのDSP又はFPGAのRPに接続されたものと類似したフィルタが、FPGAのUSP又はFPGAのEPにも接続することができる。
ホストは、ストレージデバイスによって要請されたアドレス空間のアドレスを使用することができる。
ホスト-FPGA通信のためにホストによって使用されたアドレスは、ホスト(言い替えるが、要請されたアドレス空間は、NVMe通信に必要な空間より大きい可能性がある)又はホストのメモリアドレスマップ内の別のアドレス空間の一部(仮想関数又は二番目の物理関数のいずれか1つ又は両方に対して、2つの中で1つはストレージデバイスによってホストにさらされる(exposed))とのNVMe通信のためにストレージデバイスによって要請されたアドレス空間の一部であり得る。
【0037】
USP又はEP、及びDSP又はRPにおいて、フィルタリングは、ホストメモリアドレスマップ内の別のアドレス範囲を使用して実行することができるので、ホストが必要に応じてストレージデバイス又はFPGAにコマンドを送ることができることに留意する必要がある(ストレージデバイスがFPGAと通信するように許諾する間にも必要である)。
【0038】
アドレス空間の一部が、ホストとFPGAとの間の通信を支援する本発明のいくつかの可能性があるで、FPGAは、ホストに直接見えない可能性がある。
この場合には、ホスト上のASMは、ホスト-FPGAの通信に使用されるアドレスの範囲を識別するためのNVMeアドレス空間の特定のレジスタに記録されたアドレスにアクセスすることにより、FPGAを「発見」することができる。
ASMは、PCIeデバイステーブルを介してストレージデバイスを検索することができ、NVMeアドレス空間のどのレジスタがホスト-FPGA通信アドレス空間に対するポインタを格納するかがわかる。
【0039】
≪VF+DSPフィルタ構造≫
このFPGA+SSDの構造で、SSDは一つの物理関数(機能)(physical function:PF)と1つの仮想関数(virtual function:VF)をホストに「さらす(曝す)」(expose、以下、見えるようにするの意味で用いる)。
SSDコントローラは、PFを介してさらされる。
VFは、FPGAをさらすために使用される。
【0040】
PFクラスコードは、大容量ストレージデバイスを示すことができる一方、VFクラスコードは、FPGAを識別するために設定することができる。
SSDコントローラのPFは、大規模システムメモリのアドレスブロックを要請してFPGAのアドレス指定ブロックのサブセットが「FPGA DSP」を通してFPGAとSSDとのの間の通信に使用することができ、SSDコントローラVFは、「FPGA USP」を介してFPGAとホストとの間の通信のために、それ自体のメモリアドレスブロックを要請することができる。
【0041】
「FPGA USP」は、PCIeトランザクションフィルタとして使用することができる、他のメモリのフィルタアドレス範囲及び/又はVFタグ(FAR-USP)でプログラムされ得る。
USPは、FARウィンドウ及び/又はVFに属するすべてのPCIeトランザクションに属するすべてのPCIeトランザクションをフィルタリングすることができ、これをFPGAのアクセラレーションロジック及びメモリに伝達することができる。
プログラミングされたFAR-USPウィンドウに属していないすべてのPCIeトランザクション又はVFに属していないトランザクションは、SSDに属し、SSDに直接伝達され得る。
SSDコントローラは、この情報を通信するために、「PCIe VDM」メカニズム又はI2C/SMバスのような他のサイドバンドバスを使用する適切なFAR-USPウィンドウをプログラムすることができる。
【0042】
このFARアドレスウィンドウは、ホスト上で実行中のASMソフトウェアがAPM-Fとの通信を可能にする。
つまり、FPGAはホストに直接見えることができる。
ASMソフトウェアは、アクセラレーションオーケストレーションコマンドとデータをFPGAに送るために、このPCIeアドレス範囲を使用することができる。
その後に、APM-Fは、受信したアクセラレーションコマンド及びデータをランタイム(RT)スケジューラに提供する。
RTスケジューラは、データ処理を実行するために、適切なアクセラレーションエンジンを順番にプログラミングする。
なお、APM-Fは、ホストメモリ又はSSDストアからデータをフェッチすることができる。
【0043】
≪PF+DSPフィルタ構造≫
このFPGA+SSDの構造は、VFを使用する代わりに、第2PFを使用してFPGAをホストに「さらす」ことを除いて提案したソリューション3と類似する。
SSDコントローラは、2つの物理関数(機能)をホストに「さらす」。
第1PFは、SSDコントローラのために使用され、第2PFはFPGAのために使用される。
第2PFの基本アドレスは、FPGAのFAR-USPでプログラミングすることができる。
したがって、USPは、第2PFに対しプログラムされたアドレス範囲(FAR-USP)にあるホストから来るすべてのトランザクションをフィルタリングすることができ、それらをFPGAに伝達することができる。
このメカニズムは、FPGAと通信するためホスト上で実行中のASMにより使用され得る。
【0044】
仮想関数(機能)又は(第2)物理関数(機能)をホストに「さらす」ことにより、ホスト-FPGA通信のためのアドレス空間がホスト(ストレージデバイスによって又はFPGAによって)から要求され得る。
仮想関数(機能)又は第2の物理的関数(機能)が「さらされた」場合、USP/EPのフィルタは、ホスト-FIFI通信に割り当てられたアドレスの範囲に基づいて、又は「さらされた」仮想関数(機能)や「さらされた」第2の物理的関数(機能)(例えば、フィルタ番号又は他のタグによって)をフィルタリングすることができる。(仮想関数(機能)は、オペレーティングシステムの支援を要求する。そして第2の実際の関数(機能)が具現されたり、支援されたりする場合、第2の物理的関数(機能)を「さらす」ことは、仮想関数の使用に対する代替の解決策を提案する。)
【0045】
≪PF+RPフィルター構造≫
この「FPGA SSD」構造で、「FPGA PCIe」ポートは、USP及びDSPではない、EP(endpoint)及びRP(root port)である。
USP/DSPとEP/RPポートとの違いは、EP/RPの両方がそれら自体のPCIe構成空間を有する反面、USP/DSPポートはそうではないということである。
本発明のこのような実施形態による構造で、FPGAは2つのPFをホストに「さらす」ことができる(PF/VFを提供するSSDがFPGAを「さらす」よりは、FPGAがそれ自身のPFをホストに「さらす」ことに注目する)。
【0046】
「SSD EP」は、FPGA上のRPに接続することができる。
「第1FPGA EP/PF」は、ホストをSSDに直接接続するために使用することができる反面、「第2FPGA EP/PF」は、ホストをFPGAに接続するために使用することができる。
このメカニズムは、FPGAと通信するためにホストで実行中のASMにより使用することができる。
SSD-FPGA通信は「FPGA RP」と「SSD EP」の間でアドレス空間マップの一部を使用することができる。
本発明のいくつかの実施形態で、第1FPGA(PF)は、大規模なアドレス空間を要求することができ、BIOS割り当てられたアドレスウィンドウは、SSDコントローラ(EP)にマッピング又は変換することができる。
このアドレス空間の一部は、ローカルFPGA-SSD通信のために使用することができる。
本発明の他の実施形態で、「第2FPGA EP」のために割り当てられたアドレス空間の部分は、FPGAとSSDコントローラの間の通信のために使用することができる。
【0047】
≪PF+デュアルポートSSDの構造≫
このFPGA-SSDの構造で、デュアルポートSSDは、FPGAとともに使用される。
この構造で、FPGA(言い換えると、FPGAはPF/VFを提供するSSDがFPGAを「さらす」よりは、それ自身のPFを「さらす」)は、二つのPFをホストに「さらす」ことができる。
「SSD EP」は、FPGA上のRPに接続することができる。
「第1FPGA EP/PF」は、ホストをSSDに直接接続するために使用することができる。
「第2FPGA EP/PF」のために来る、すべてのホストのトランザクションは、FPGAアクセラレーションロジックに伝達することができる。
ホスト上で実行中のASMソフトウェアは、FPGAと通信するための「第2FPGA EP/PF」を使用することができる。
【0048】
FPGA-SSD通信(アクセラレーション処理用)のために、SSDの「第2PCIe EP」を使用することができる。
したがって、FPGAはSSDに接続された二つのRPを有する。
SSDの第1EPポートは、一般的なホストストレージアクセスのためにホストとの通信に使用することができる。
SSDの第2EPは、処理のためにFPGAに必要なすべてのデータを伝送するために使用することができる。
【0049】
言及したように、ストレージデバイスが2つの(又は潜在的にもっと多くの)のポートを支援できる本発明の実施形態で、FPGAは、ストレージデバイス上の2つのEPと通信するために2つのRPを支援することができる。
このような本発明の実施形態で、FPGA上の一つのRP(及びそれに対応するストレージデバイス上のEP)は、ストレージデバイスとホストとの間の通信を管理するために使用することができ、FPGA上の他のRP(及びそれに対応するストレージデバイス上のEP)は、ストレージデバイスとFPGAの間の通信を管理するために使用することができる(アクセラレーションコマンド又はデータのための)。
本発明の斯かる実施形態で、FPGA上のRPは、2つのアドレスマップ(各RPごとに1つずつ)を支援することができる。
したがって、ホストとストレージデバイスの間の通信を支援するRPのためのアドレスマップは、NVMeコマンドのために割り当てられた空間を含むことができ、他のアドレスマップ(アクセラレーションコマンド/データの通信を管理するRPのための)は、全的に通信のために作られ得る。
【0050】
本発明の斯かる実施形態で、ホストメモリアドレスマップは、ホストがアクセラレーションコマンドをストレージデバイスに通信するように意図された任意のアドレス空間を省略することができるが、これは、斯かるすべてのコマンドがホストからFPGAに伝達されることができるからである(アドレス空間を介してFPGAの要請が、斯かる通信のためのホストのメモリアドレスマップ内に割り当てられる)。
その後に、FPGAはコマンドを処理し、FPGAとストレージデバイスの間の通信専用に指定された第2のRPのメモリアドレスマップを使用して、必要に応じて、コマンド/データをストレージデバイスに伝達することができる。
【0051】
EP/RPが、FPGAでUSP/DSPの代わりに使用される場合、EP/RPはPCIe構成空間を支援することができ、FPGAは、それの物理関数(機能)をホストに直接「さらす」ことができる(このような機能をストレージデバイスに残すことにより)。
FPGAによって「さらされた」一つの物理関数(機能)は、ホストからストレージデバイスへの通信を指示するために使用することができる。
他の物理関数(機能)は、ホストとFPGAの間の通信に使用することができる。
本発明の斯かる実施形態で、ストレージデバイスがこのような要求を発生させることにより、FPGAは、ホストから割り当てられるアドレス空間を要求することができる。
【0052】
EP/RPは、それら自体のメモリマップを支援することもできる。
したがって、FPGAは、ホストのメモリアドレスマップを使用してホストと通信することができ、FPGAはストレージデバイスと通信するために使用される、それ自体のメモリアドレスマップを支援することができる。
本発明の斯かる実施形態で、FPGAは、ホストからストレージデバイスへの通信を支援するために、ホストのメモリアドレスマップに割り当てられた空間を要請することができ(FPGAを介して発生する、そのような通信により)、追加の空間は、ホストからFPGAへの通信をサポートするために、ホストのメモリアドレスマップに割り当てられる。
FPGAのメモリアドレスマップは、ホストからストレージデバイスへコマンドを通信してFPGAとストレージデバイスの間でアクセラレーションコマンド/データを通信するためのそれ自体の空間の割り当てを含むことができる。
FPGAは、ホストとストレージデバイスの間の通信のために使用されるアドレス空間を、FPGAとストレージデバイス(同一サイズであるべき)との間の通信のために使用されるアドレス空間に変換することができる。
【0053】
FPGAが、EP/RPを含む場合、ホストは、FPGAを直接「見る」。
これは、PCIe機能がFPGAによって「さらされる」問題を提起する。
FPGAは、ストレージデバイスと同じPCIe機能を「さらさ」なければならない。
したがって、FPGAには、ストレージデバイスの「SSDコントローラEP PCIe」構成をマッチングするために「FPGAのEP PCIe」構成を設定するPCIe構成モニタを含み得る。
なお、ホストがFPGAのEPのPCIe構成を変更する場合、ストレージデバイスのEPのPCIe構成は、同様に修正され得る。
【0054】
本発明の実施形態は、全体の機能が維持されるのならば、FPGA内で記述されたような構成/機能を複数の個別エレメントに分割することを支援できる。
FPGA構成は、ハードウェア、ソフトウェア/ファームウェア、又はこの2つの組み合わせを使用して具現することができる。
【0055】
図1は、本発明の一実施形態によるストレージデバイス上のアクセラレーションされる動作を支援する装置105を示すブロック図である。
装置105は、プロセッサ110を含む。
プロセッサ110は、任意の多様なプロセッサであり得る。
つまり、例として、Intel(登録商標) Xeon(登録商標)、Celeron(登録商標)、Itanium(登録商標)、Atom(登録商標)プロセッサ、AMD(登録商標) Opteron(登録商標)プロセッサ、又はARM(登録商標)プロセッサなどである。
【0056】
図1は、装置105内の単一のプロセッサ110を示し、装置105は、それぞれ、単一のコア又はマルチコアプロセッサであり得る任意の数のプロセッサを含むことができ、任意の所望の組み合わせで混合することができる。
プロセッサ110は、ストレージデバイス120へのアクセスを支援できるデバイスドライバ115を実行することができ、相異なるデバイスドライバは、デバイス105の他の構成に対するアクセスを支援することができる。
この明細書の全般にかけて、ストレージデバイス120は、SSD(Solid State Drive)のストレージデバイス120のように説明するが、ストレージデバイス120は、以下の本発明の実施形態で説明する、アクセラレーション化されたコマンドを支援する任意の他のタイプのストレージデバイスであり得る。
プロセッサ110は、また、アクセラレーションコマンドを含む任意のアプリケーションであり得るアプリケーション125及びストレージデバイス120上に格納されたデータに対して実行されるアクセラレーションコマンドを伝送するために使用できるアプリケーションサービスマネージャ(ASM)130を実行することができる。
【0057】
装置105は、また、(メイン)メモリ140へのアクセスを管理するために使用することができるメモリコントローラ135を含む。
メモリ140は、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、永久ランダムアクセスメモリ、強誘電体ランダムアクセスメモリ(FRAM(登録商標))、又は磁気ランダムアクセスメモリ(MRAM)などのような不揮発性ランダムアクセスメモリ(NVRAM)のような任意の他のタイプのメモリであり得る。
【0058】
装置105は、また、アクセラレーションモジュール145を含む。
アクセラレーションモジュール145は、ストレージデバイス120に格納されたデータに対して、プロセッサ110によって要請されたアクセラレーションコマンドを実行することにより、プロセッサ110を補助する。
アクセラレーションモジュール145は、ファームウェア単独又はハードウェアとファームウェアを組み合わせて使用して具現することができる。
この明細書の全般にかけて、アクセラレーションモジュール145は、FPGA(Field Programmable Gate Array)145のように説明するが、アクセラレーションモジュール145は、以下の本発明の実施形態で説明するようにアクセラレーションコマンドを支援する任意の他のタイプのアクセラレーションモジュールでもあり得る。
例として、アクセラレーションモジュール145は、ASIC(Application-Specific Integrated Circuit)、GPU(Graphics Processing Unit)、SSDのISC(In-Storage Computing)能力又は他の具現として具現したり、使用したりすることができる。
【0059】
なお、
図1は、装置105をサーバ(スタンドアロン又はラックサーバであり得る)のように示すが、本発明の実施形態は、任意の所望のタイプの装置105を制限なしに含むことができる。
例として、装置105は、デスクトップ、ラップトップコンピュータ、又は本発明の実施形態から利益を得ることができる任意の他の装置に代替することができる。
装置105は、また、特殊化されたポータブルコンピューティングマシンに、タブレットコンピュータに、スマートフォン、及び他のコンピューティングマシン(machine:機械)を含むことができる。
なお、
図1は、ストレージデバイス120、アプリケーション125、及びASM(アクセラレーションサービスマネージャー)130を含む装置105を示すが、本発明の実施形態は、別のマシンで、それらの構成を有することができる。
例として、ストレージデバイス120は、1つ以上のネットワーク(有線、無線、グローバルなど)を通過するネットワーク接続を介して装置105(及びアプリケーション125及びASM130)に接続されたサーバにインストールすることができる。
【0060】
図1に示した構成の特定の方式にかかわらず、「ホスト」、「ホストマシン」又は「ホストプロセッサ」という用語は、装置105を記述するために使用することができる。
これは、プロセッサ110を独創的な概念の他の構成と区別し得る。
【0061】
図1の構成の中で、本発明の実施形態に関連のある3つのトラフィックストリームが存在する(本発明の実施形態とは関係のない他のトラフィックストリームが有り得る)。
1)ホストからストレージデバイス120まで。
ホスト(プロセッサ110)がストレージデバイス120に通信を送ることができる。
本発明の実施形態で、このようなすべてのトラフィックは、アクセラレーションモジュール145を通過し、アクセラレーションモジュール145によってストレージデバイス120に到達することから遮断されてはならない。
斯かるトラフィックの実施形態は、ストレージデバイス120からデータを読み出すための、及び/又はストレージデバイス120にデータを記録するためのコマンドを含み得る。
つまり、ストレージデバイス120によって提供される他のコマンドもこのようなトラフィックに含まれ得る。
【0062】
2)ASM130からアクセラレーションモジュール145まで。
ASM130は、特定のアクセラレーションコマンドが実行されるように要請する。
いずれにせよ、本発明の特定の実施形態にかかわらず、アクセラレーションモジュール145は、ASM130からアクセラレーションコマンドを受信しなければならない。
【0063】
3)アクセラレーションモジュール145からストレージデバイス130まで。
アクセラレーションコマンドを実行するために、アクセラレーションモジュール145は、ストレージデバイス130からデータをフェッチまたは受信する必要が有り得る。
【0064】
図2は、
図1の装置の追加的な細部事項を示している。
図2で、典型的に、装置105の追加的な事項は、装置105の構成要素の動作を調整するために使用され得る、メモリコントローラ135及びクロック205を含む1つ以上のプロセッサ110を含む。
なお、プロセッサ110は、例として、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)又は媒体を保存する他の状態を含むメモリ140に接続することができる。
プロセッサ110は、また、ストレージデバイス120及び、例としてイーサネット(登録商標)コネクタ又は無線コネクタであり得るネットワークコネクタ210に接続され得る。
プロセッサ110は、また、バス215に接続され得、これには、他の構成要素の中で、ユーザーインターフェース220及び入力/出力エンジン225を使用して管理され得る入力/出力インターフェースポートを取り付けることができる。
≪第1実施形態≫
【0065】
図3は、本発明の第1実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
図3において、プロセッサ110、アクセラレーションモジュール(以下、FPGAとして説明)145とSSD120は、通信すること示している。
図3において、プロセッサ110、FPGA145及びSSD120は、PCIe(Peripheral Component Interconnect Express)バスを介して通信する。
PCIeバスは、任意の数のレーンを使用することができる。
つまり、典型的な例は、x4及びx8であるが、本発明の実施形態は、任意の他の所望の数のレーンを使用することができる。
この通信は、不揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)であり得るPCIeトランザクションを含むが、本発明の実施形態は、他のエンコーディングを使用する通信又は他のプロトコルのコマンドを含むために拡張することができる。
【0066】
SSD120は、エンドポイント(EP)305、ホストインターフェース層(HIL)310、アクセラレーションプラットフォームマネージャ(APM-S)315、フラッシュ変換階層(FTL)320、及びフラッシュメディア325を含む。
エンドポイント305は、SSD120がPCIe通信を受信して伝送する論理的又は物理的な接続ポイントであり得る。
SSD120がエンドポイント305でプロセッサ110からPCIeトランザクションを受信する場合(FPGA145を介して)、SSD120は、PCIeトランザクションをHIL310に伝達する。
その後に、HIL310は、PCIeトランザクションがアクセラレーションコマンドを含むかどうかを判断する。
PCIeトランザクションがアクセラレーションコマンドを含む場合、HILは処理のためにPCIeトランザクション(又はPCIeトランザクションから圧縮解除されたアクセラレーションコマンドそのもの)をAPM-S315に伝送する。
つまり、「APM-S」315は、ファームウェア単独又はハードウェアとファームウェアの組み合わせを使用して具現することができる。
そうでなければ、HIL310は、FTL320にPCIeトランザクション(又は圧縮解除されたNVMeコマンド)を伝達し、FTLは、
図1のアプリケーション125によって使用される論理ブロックアドレス(LBA)を物理ブロックアドレス(PBA)に変換し、フラッシュメディア325に格納されたデータにアクセスする。
【0067】
「APM-S」315が処理することができる、基本的に2つのタイプのアクセラレーションコマンドがある。
アクセラレーションコマンドの第1タイプは、プロセッサ110からの特定のコマンドであり得る。
本発明の第1実施形態で、FPGA145は、プロセッサ110に見えない可能性がある。
つまり、プロセッサ110は、すべてのそれの通信をSSD120に伝送する。
プロセッサ110が、アプリケーションデータで実行されるためにアクセラレーションコマンドを所望する場合、プロセッサ110は、特定のコマンドをSSD120に伝達する。
プロセッサ110は、SSD120に、特定のコマンド/アクセラレーションコマンドをトンネリングするためにNVMeコマンドを使用する。
HIL310は、「APM-S」315に伝達することができる、特定のコマンドをインターセプトする。
その後に、「APM-S」315は、アクセラレーションコマンドを実行するためにFPGA145に再び伝送される特定のコマンドに応答してアクセラレーションコマンドを生成する。
この特定のコマンドは、例として、実行されるアクセラレーションコマンドの特定のタイプ及びアクセラレーションコマンドのオペレーションが実行されるデータをエンコーディングする。
【0068】
「APM-S」315が処理できるアクセラレーションコマンドの第2のタイプは、データを含む。
例として、FPGA145は、フラッシュメディア325に直接アクセスしていない可能性があり、したがって、アクセラレーションコマンドが実行されるデータを受信せずにアクセラレーションコマンドを実行することができない。
したがって、「APM-S」315は、FPGA145から問題のデータを要請するアクセラレーションコマンドを受信する。
その後、「APM-S」315は、FPGA145がアクセラレーションコマンドを実行できるようにするために、要求されたデータにアクセスし、それをFPGA145に返す。
【0069】
図3において、SSD120は、SSDで使用するのに適したFTL320及びフラッシュメディア325を含むものと示している。
SSD120は、代替ストレージデバイスに置き換えると、これらの構成要素は、ストレージデバイスのタイプに適した代替の構成要素に置き換えることができる。
例として、SSD120は、ハードディスクドライブに置き換えると、フラッシュメディア325は、ハードディスクプラッタに置き換えることができる。
データアクセスを支援するために追加の構成要素がまた含まれ得る。
つまり、ハードディスクドライブストレージデバイスの例を続けると、ストレージデバイスは、また、適切な読み取り/書き込みヘッドを含み得る。
【0070】
FPGA145がプロセッサ110とSSD120との間の通信をインターセプトする前に、SSD120は、プロセッサ110からホストメモリアドレスのブロックを要求する。
ホストメモリシステムアドレスのブロックに対する、このような要求は、PCIeトランザクションを使用するとき、一般的であり、スタートアップのとき、又は後で実行され得る。
それに応答して、プロセッサ110(又は
図1の装置105の基本的な入力/出力システム(BIOS))は、SSD120による使用のために、ホストメモリシステムアドレスのブロックを割り当てる。
その後、ホストマシンは、このホストメモリシステムアドレスのブロックが、
図1の装置105で他のデバイスによって利用できないことを知る。
【0071】
図4は、本発明の第1実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用説明するための図である。
図4で、SSD120は、ホストメモリシステムアドレスのブロックを要請する。
プロセッサ110とSSD120との間のNVMe通信を支援するために必要なメモリの量は比較的少ないが、例として、(64KB-)SSD120は、はるかに大きいブロック、例として10MB以上を要求する。
それに応答して、プロセッサ110は、ホストメモリシステムのアドレスブロック405を返す。
ブロック405の一端は、BAR(Base Address Register)に格納され、SSD120がBAR(そして要請されたブロックのサイズのSSD120の情報(knowledge)とともに)に基づいて、ブロック405を判断する。
【0072】
一旦SSD120が、どのようなアドレスがブロック405に在るかを知れば、SSD120は、ブロック405をそれ自身の使用のために、相異なる領域に分けることができる。
ブロック405の1つのサブセット410は、NVMe通信のために使用される。
他のサブセット415は、使用されないまま残され得る。
(ダウンストリーム)FAR(Filter Address Range)420(任意のフィルタリングがプロセッサ110からのダウンストリームで行われるので、「ダウンストリーム」)と称される第3サブセットは、SSD120とFPGA145との間の通信のための専用に使用される。
ダウンストリームFAR420は、SSD120及びFPGA145の両方で使用できることに注目する。
いずれか1つは、問題のPCIeトランザクションがアクセラレーションコマンドを含むことを示すために、ダウンストリームFAR420でアドレスを使用する。
【0073】
図3に戻って、SSD120がダウンストリームFAR420でアドレスを使用して通信を伝送すると、FPGA145は、ダウンストリームポート335で通信を受信し、通信をインターセプトし、その通信をプロセッサ110に伝達するよりは局部(局所)的に処理する。
ダウンストリームFAR420を含んでいないSSD120からのダウンストリームポート335でFPGA145によって、プロセッサ110が受信する任意の通信は、アップストリームポート330を介してFPGA145によりプロセッサ110に伝達される(FPGA145がアップストリームポート330で、プロセッサ110から受信する任意の通信は、ダウンストリームポート335を介して自動的にSSD120に伝達される)。
【0074】
FPGA145は、プロセッサ110とSSD120との間の通信をインターセプトできるように、プロセッサ110とSSD120の間に位置する。
このような通信をインターセプトすることにより、FPGA145は、SSD120によって要請されたアクセラレーションコマンドを実行する。
【0075】
アクセラレーションコマンドを実行するために、FPGA145は、アップストリームポート330、ダウンストリームポート335、アクセラレーションプラットフォームマネージャ(APM-F)340、スケジューラ345、及びアクセラレーションエンジン(350-1及び350-2)を含む。
アップストリームポート330は、プロセッサ110と通信するために使用する。
ダウンストリームポート335は、SSD120と通信するために使用する。
「APM-F」340は、FPGA145がインターセプトした任意のアクセラレーションコマンドを受信することに対する責任がある。
斯かるアクセラレーションコマンドは、メッセージのメールボックス355を使用してダウンストリームポート335からメッセージのように受信するが、本発明の実施形態は、APM-Fがアクセラレーションコマンドを受信するための他のメカニズムに拡張され得る。
【0076】
一度アクセラレーションコマンドを受信すると、「APM-F」340は、アクセラレーションコマンドを処理する。
例として、FPGA145がアクセラレーションコマンドを実行できる、十分な情報を有する場合、「APM-F」340は、アクセラレーションコマンドをアクセラレーションエンジン(350-1及び350-2)のような任意の利用可能なアクセラレーションエンジンでスケジューリングすることができるスケジューラ345(「ランタイムスケジューラ」と称され得る)にアクセラレーションコマンドを通過させる。
一方、
図3は、2つのアクセラレーションエンジン(350-1、350-2)を示すが、本発明の実施形態は、任意の所望の数のアクセラレーションエンジンを含むことができる。
つまり、
図3に示した2つは、単に例示的な目的のためのものである。
代案的に、FPGA145がアクセラレーションコマンドを実行するための追加情報を必要とする場合、つまり例として、FPGA145は、アクセラレーションコマンドが実行されるデータを必要とし、「APM-F」340は、PCIeトランザクションを、必要なデータを要請するSSD120に送るような他の動作をとる。
【0077】
特定のPCIeトランザクションが、アクセラレーションコマンドを含むか否かを判断するために、FPGA145は、ダウンストリームポート335に関連したダウンストリームフィルタ360を含む。
ダウンストリームフィルタ360は、アクセラレーションコマンドを含むSSD120から発行されたPCIeトランザクションを識別する。
これは所望する方式で実行することができる。
本発明のいくつかの実施形態で、SSD120は、
図4のダウンストリームFAR420でダウンストリームフィルタ360をプログラミングすることができる。
その後、ダウンストリームフィルタ360が、
図4のダウンストリームFAR420でアドレスを使用するPCIeトランザクションを識別するとき、FPGA145は、PCIeトランザクションを、アクセラレーションコマンドを含むものと識別し、PCIeトランザクションをインターセプトする。
【0078】
SSD120は、任意の所望の方式でダウンストリームフィルタ360をプログラミングすることができる。
例として、SSD120は、ダウンストリームフィルタ360をプログラミングするために、内部の集積回路バス(I2Cバス)、又はシステム管理バス(SMバス)のようなサイドバンドバス365を使用することができる。
また、SSD120は、ダウンストリームフィルタ360をプログラミングするために、PCIe VDM(Vendor Defined Message)を使用することができる。
SSD120は、また、ダウンストリームフィルタ360をプログラミングするために他のメカニズムを使用することができる。
【0079】
図3において、FPGA145は、プロセッサ110とSSD120との通信を可能にする部分を含むものと示している。
つまり、具体的には、アップストリームポート330、ダウンストリームポート335、及びダウンストリームフィルタ360である。
FPGA145は、プロセッサ110とSSD120と通信するいくつかのメカニズムを必要とするが、本発明の実施形態は、通信要素をFPGA145から分離することができる。
例として、ダウンストリームポート335とダウンストリームフィルタ360は、つまり、プロセッサ120に伝達される代わりにアクセラレーションコマンドを含むSSD120から受信したPCIeトランザクションを識別すること(及び「APM-F」340にリダイレクトする必要があり)に対する責任のある後者であり、FPGA145とSSD120との間のブリッジの構成要素(
図3に図示せず)に配置される。
これらのブリッジの構成要素は、FPGA145とSSD120と通信するために必要なので、FPGA145は、相変わらずダウンストリームポート335(又はブリッジ構成要素との通信を可能にする代案的な構造)を含むが、その後にダウンストリームフィルタ360は、FPGA145から除去される。
【0080】
前述した本発明の第1実施形態は、プロセッサ/FPGA/SSDの具現の可能な組み合わせを示す。
以下で、本発明の他の実施形態として説明する他の具現もまた可能である。
特定の構成の動作(例として、「APM-F」340、スケジューラ345、及びアクセラレーションエンジン(350-1及び350-2)の動作)の間に差異がない場合、それらの動作の繰り返しの説明は、後続の本発明の実施形態で省略する。
【0081】
≪第2実施形態≫
図5は、本発明の第2実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
本発明の第2実施形態は、アップストリームポート330が、フィルタも含むことを除いては、本発明の第1実施形態と類似する。
つまり、アップストリームフィルタ505である。
【0082】
アップストリームフィルタ505は、ダウンストリームフィルタ360と類似の方式で、プロセッサ110(アップストリームポート330を介して受信された)から来るPCIeトランザクションをフィルタリングする。
例として、SSD120は、
図4のダウンストリームFAR365と同様に、アップストリームFARを定義することができ、サイドバンドバス365、PCIe、VDM、又は任意の他のメカニズムを使用してアップストリームFARでアップストリームフィルタ505をプログラミングする。
その後に、FPGA145がアップストリームポート330で、プロセッサ110からPCIeトランザクションを受信するとき、アップストリームフィルタ505は、アップストリームフィルタ505がアップストリームFARでアドレスを含むかを見るために、PCIeトランザクションを検査する。
もしそうなら、PCIeトランザクションはアクセラレーションコマンドであり、FPGA145は、PCIeトランザクションをSSD120に伝達するよりも、プロセッサのためのPCIeトランザクションを「APM-F」340に伝送する。
【0083】
本発明の第2実施形態に基づいて、
図6は、
図1のシステムでコマンドをアクセラレーションするためのメモリ使用を説明するための図である。
本発明の第1実施形態でのように、SSD120は、SSD120がNVMeコマンドを支援するために必要なアドレスの範囲よりも、大きいホストシステムメモリアドレスのブロックを要請でき、それのBARに応答してブロック405を受信する。
その後に、SSD120は、NVMe通信のためにブロック405の1つのサブセット410を維持し、他のサブセット415は、未使用とし、第3サブセットは、ダウンストリームFAR420のように別に設定することができ、第4サブセットは、アップストリームFAR605のように別に設定することができる。
【0084】
図5に戻ると、本発明の第2実施形態で、プロセッサ110は、FPGA145が発見可能なデバイスではないので、相変わらずFPGA145を直接「見(see)」ない。
しかし、SSD120は、アップストリームFAR605のベースアドレスをNVMe通信のためのサブセット410内の特定のレジスタにプログラミングすることにより、アップストリームFAR605のプロセッサ110を知らせる。
NVMe通信のためのサブセット410から、この特定のレジスタを読み出す場合、プロセッサ110は、アップストリームFAR605を認識するようになる。
その後に、プロセッサ110は、SSD120の「APM-S」315に、特定のコマンドを伝送する代わりにアクセラレーションコマンドをFPGA145に伝送する(アップストリームポート330を介して)。
【0085】
図3でのように
図5において、FPGA(145)は、プロセッサ110とSSD120との通信を可能にする部分を含んでいるものと示している。
つまり、具体的には、アップストリームポート330、アップストリームフィルタ505、ダウンストリームポート335、及びダウンストリームフィルタ360である。
図3に示した本発明の実施形態と同様に、PCIeトランザクションのフィルタリングと関連した構成要素は、FPGA145から除去することができる。
したがって、本発明の第2実施形態で、アップストリームポート330及びアップストリームフィルタ505は、第1ブリッジ構成要素及びダウンストリームポート335に配置することができ、ダウンストリームポート335ダウンストリームフィルタ360は、第2ブリッジ構成要素に配置することができ、それぞれは
図5の相異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する。
又、PCIeトランザクションのソースに関係なしに、斯かるブリッジ構成要素の中で単に一つだけを使用することができ、(他のソース(source)からの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、シングルブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用される。
【0086】
≪第3実施形態≫
図7は、本発明の第3実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
本発明の第3の実施形態で、SSD120は、物理機能(関数)(PF)705及び仮想機能(関数)(VF)710を含む(本発明の第3実施形態は、本発明の他の実施形態がPF及び/又はVFを含んでいないことを意味するのではなく、単に本発明の第3実施形態と同じ方式で使用されないことを意味する)。
PF705は、SSD120によって提供される機能のような単一のリソースを示す。
VF710は、PFと関連するが、「仮想化」された機能を示す。
つまり、与えられたPFに対し1つ以上のVFが有り得る。
しかし、SSD120の仮想機能を表現する代わりに、VF710は、FPGA145を「さらす(expose)」することができる。
つまり、VF710は、FPGA145の機能を示す。(VF710は、相変わらずFPGA145の一部ではなく、SSD120の一部である。しかし、FPGA145を露出させるための専用VF710を使用すれば、VF710と関連した任意のメモリアドレスは、他のデバイスと衝突しない。)
PCIeデバイスが列挙(enumerate)されるとき、PF及びVFがプロセッサ110によって発見され得るので、プロセッサ110は、VF710を介してFPGA145を間接的に発見することができるが、それ自身が直接発見することはできない。
【0087】
図8は、本発明の第3実施形態による、
図1のシステムでコマンドをアクセラレーションするためのメモリ使用を説明するための図である。
本発明の第1実施形態でのように、SSD120は、SSD120がNVMeコマンドを支援する必要のあるアドレスの範囲よりも大きいホストシステムメモリアドレスのブロックを要請する。
しかし、SSD120は、実際にホストシステムのメモリアドレスの2つの相異なるブロックを要請する。
つまり、PF705に対するブロック805及びVF710に対するブロック810である。
ダウンストリームFAR420は、PF705に対するブロック805のサブセットとして選択される。
よって、アップストリームFAR605は、VF710に対するブロック810の全体であり得る。(アップストリームFAR605は、単にブロック810のサブセットとして選択され得る。しかし、ブロック810は、VF710による使用のために専用され、VF710はFPGA145を効果的に「さらす」こと以外の他の目的を有し得ないので、アップストリームFAR605の一部として使用されていないブロック810の任意のメモリアドレスは、無駄になる可能性がある。)
SSD120が、各ブロックに対し割り当てられたアドレスの範囲を知ることができるようにする間、ブロック(805及び810)のそれぞれは、個々のBARを有する。
【0088】
図7に戻ると、本発明の第2実施形態と同様に、アップストリームポート330は、またフィルタを含む。
つまり、VFフィルタ715である。
VFフィルタ715は、ダウンストリームフィルタ360と類似の方式で、プロセッサ110(アップストリームポート330を介して受信した)から来るPCIeトランザクションをフィルタリングする。
例として、SSD120は、サイドバンドバス365、「PCIe VDM」、又は任意の他のメカニズムを使用してアップストリームFAR605でVFフィルタ715をプログラムする。
その後に、FPGA145がアップストリームポート330で、プロセッサ110からPCIeトランザクションを受信するとき、VFフィルタ715は、PCIeトランザクションがアップストリームFAR605でアドレスを含むかどうかを知るためにPCIeトランザクションを検査する。
もしそう(含む)なら、PCIeトランザクションはアクセラレーションコマンドであり、FPGA145は、PCIeトランザクションをSSD120に伝達するより、プロセッサのためにPCIeトランザクションを「APM-F」340に伝送する。
【0089】
代案として、SSD120は、VF710の識別子でVFフィルタ715をプログラムすることができる。
VFフィルタ715は、アップストリームポート330で、プロセッサ110から受信したPCIeトランザクションを検査して、それがVF710の識別子を含むかどうかを知ることができる。
PCIeトランザクションがVF710の識別子を含むと、FPGA145は、PCIeトランザクションをSSD120に伝達するよりは、プロセッサのためPCIeトランザクションを「APM-F」340に伝送する。
【0090】
図7において、本発明の前の実施形態でのように、FPGA145は、プロセッサ110とSSD120の通信を可能にする部分を含むものとして示している。
つまり、具体的には、アップストリームポート330、VFフィルタ715、ダウンストリームポート335及びダウンストリームフィルタ360である。
前に示した、本発明の実施形態でのように、PCIeトランザクションのフィルタリングと関連した構成要素は、FPGA145から除去することができる。
したがって、本発明の第3実施形態で、アップストリームポート330及びVFフィルタ715は、第1ブリッジ構成要素に配置することができ、ダウンストリームポート335及びダウンストリームフィルタ360は、それぞれが
図7の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、又は、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタを処理するために使用することができる。
【0091】
≪第4実施形態≫
FPGA145を「さらす」ためにVF710を使用する問題の1つは、VFを使用することがプロセッサ110のホストの動作システムからの支援を要求できるというものである。
一部のオペレーティングシステムは、VFをサポートするが、すべてのオペレーティングシステムがVFを支援しているわけではなく、VFを支援しているのは、オペレーティングシステムに対しそれ自体の複雑さを伴う。
本発明の第4実施形態は、VFを使用する困難さを解決する。
【0092】
図9は、本発明の第4実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
本発明の第3実施形態とは対照的に、本発明の第4実施形態では、SSD120は、2つのPF(705、905)を含む。(本発明の第3実施形態でのように、本発明の第4実施形態は、本発明の他の実施形態がPF及び/又はVFを含んでいないことを意味しない。)
PF705は、SSD120によって提供される機能のような単一のリソースを示し続ける。
一方、PF905は、FPGA145を「さらさせる」。
つまり、PCIeデバイスが列挙されるとき、PFがプロセッサ110によって発見され得るので、プロセッサ110は、それ自身を直接発見できないとしても、PF905を介してFPGA145を間接的に発見できる。
【0093】
図10は、本発明の第4実施形態による、
図3のシステムでコマンドをアクセラレーション化するためのメモリ使用を説明するための図である。
本発明の第3実施形態でのように、SSD120は、ホストシステムのメモリアドレスの二つの相異なるブロックを要求する。
つまり、PF705に対するブロック1005及びPF905に対するブロック1010である。
ダウンストリームFAR420は、PF705に対するブロック1005のサブセットとして選択される。
そしてアップストリームFAR605は、PF905に対するブロック1010の全体であり得る。(つまり、アップストリームFAR605は、ブロック1010のサブセットとして選択され得る。しかし、ブロック1010は、PF905による使用のために専用されPF905は、FPGA145を効果的に「さらす」こと以外の他の目的を有し得ないので、アップストリームFAR605の一部として使用されていないブロック1010の任意のメモリアドレスは、無駄になる可能性がある。)
SSD120が、各ブロックに対し割り当てられたアドレスの範囲を知ることができるようにする間、ブロック(1005及び1010)のそれぞれは、個々のBARを有する。
【0094】
図9に戻ると、本発明の第3実施形態と同様に、アップストリームポート330は、また、フィルタを含む。
つまり、PFフィルタ715(PFフィルタ715は、動作中の
図7のVFフィルタ715と実質的に同一であり、名前の変更はPFフィルタ715がVFフィルタ715とは異なるように動作するため、FPGA145を「さらす」ために使用される関数のタイプと、さらに関連がある)である。
PFフィルタ715は、ダウンストリームフィルタ360と類似の方式で、プロセッサ110(アップストリームポート330を介して受信した)から来るPCIeトランザクションをフィルタリングする。
例として、SSD120は、サイドバンドバス365、「PCIe VDM」、又は任意の他のメカニズムを使用してアップストリームFAR605でVFフィルタ715をプログラムする。
その後に、FPGA145がアップストリームポート330で、プロセッサ110からPCIeトランザクションを受信するとき、PFフィルタ715は、PCIeトランザクションがアップストリームFAR605にアドレスを含むかどうかを知るためにPCIeトランザクションを検査する。
もしそう(含む)なら、PCIeトランザクションはアクセラレーションコマンドであり、FPGA145は、PCIeトランザクションをSSD120に伝達するよりは、プロセッサのためPCIeトランザクションを「APM-F」340に伝送する。
【0095】
代案として、SSD120は、PF905の識別子でPFフィルタ715をプログラムすることができる。
PFフィルタ715は、アップストリームポート330で、プロセッサ110から受信したPCIeトランザクションを検査して、それがPF905の識別子を含むかどうかを知ることができる。
PCIeトランザクションがPF905の識別子を含むと、FPGA145は、PCIeトランザクションをSSD120に伝達するよりは、プロセッサのためPCIeトランザクションを「APM-F」340に伝送する。
【0096】
図9において、本発明の前の実施形態でのように、FPGA145は、プロセッサ110とSSD120の通信を可能にする部分を含むものとして示している。
つまり、具体的には、アップストリームポート330、PFフィルタ715、ダウンストリームポート335及びダウンストリームフィルタ360である。
前に示した、本発明の実施形態でのように、PCIeトランザクションのフィルタリングと関連する構成要素は、FPGA145から除去することができる。
したがって、本発明の第4実施形態で、アップストリームポート330及びPFフィルタ715は、第1ブリッジ構成要素に配置することができ、ダウンストリームポート335及びダウンストリームフィルタ360は、それぞれが
図9の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、又は、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
【0097】
≪第5実施形態≫
本発明の第4実施形態は、本発明の第3実施形態でのようにVFを使用することの難しさを扱う。
しかし、本発明の第4実施形態を使用するためには、SSD120は、FPGA145の使用のために専用されているPF905を提供する必要がある。
すべてのSSD(又は、より一般的には、ストレージデバイス)がFPGA145の使用のために専用され得る利用可能なPFを有しない。
本発明の第5実施形態は、SSD120が多数のPFを提供する必要がない解決策を提供する。
【0098】
図11は、本発明の第5実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
図11において、SSD120は、PF及びVFを提供することが必要のない
図3及び
図5で示される構造に戻る。(つまり、SSD120は、PF及び/又はVFを提供しなくてもよく、SSD120は、追加のPF及び/又はVFを提供する必要がない。)
【0099】
本発明の第1~第4実施形態と比較すると、本発明の第5実施形態で、FPGA145は、多少異なる。
図3、5、7、9でのようなアップストリームポート330及びダウンストリームポート335の代わりに、FPGA145は、エンドポイント1105及びルートポート1110(本明細書では、用語「ポート」は、「ルートポート」と交換可能に使用するものとする。)を含む。
図3、5、7、9のアップストリームポート330及びダウンストリームポート335は、スイッチとみなされるが、つまり、それらは効果的に通過デバイス(pass-through devices)であり、エンドポイント1105及びルートポート1110は、PCIeの列挙を介して発見され得る通信のための終端点(termination points)である。
この事実は、エンドポイント1105及びルートポート1110が、
図12を参照して、以下に説明する、それら自身のPCIeの構成空間を含むことを意味する。
しかし、エンドポイント1105及びルートポート1110は、通信のための終端点なので、プロセッサ110及びSSD120は、通信を相互に指示するよりも、それぞれのエンドポイント1105及びルートポート1110にそれらの通信を行う。
【0100】
エンドポイント1105は、2つのPF(1115及び1120)を含む(又は、二者択一的に、一つのPF及び1つのVF。つまり、重要なのは、エンドポイント1105が互いに区別されることができる、2つの機能を含むということである)。
プロセッサ110がエンドポイント1105にPCIeトランザクションを伝送するとき、プロセッサ110は、どのPFのアドレスが指定されるかを特定する。
前述した本発明の第3及び第4実施形態と同様に、エンドポイント1105は、PFを識別するPCIeトランザクションに含まれているタグ、又はPCIeトランザクション(言い直すが、下から
図12を参照して説明する)と関連したアドレスによってPFがアドレス指定されるかどうかを識別する。
PF1115を識別するPCIeトランザクションは、SSD120のために予定のものと見なすことができ、ルートポート1110を介してFPGA145によってSSD120に伝送され得る。
PF1120を識別するPCIeトランザクションは、アクセラレーションコマンドを含むものと見なすことができ、「APM-F」340に伝送される。
【0101】
ルートポート1110は、ダウンストリームフィルタ360を含む。
ダウンストリームフィルタ360は、
図3、5、7、9、11のダウンストリームフィルタ360と同様に動作する。
つまり、唯一の重要な違いは、ダウンストリームフィルタが、ホストシステムメモリアドレスに基づいてフィルタリングするのではなく、以下で
図12を参照して説明するように、FPGAメモリアドレスに基づいてフィルタリングするものである。
ダウンストリームフィルタ360は、サイドバンドバス365、「PCIe VDM」、又は任意の他の望みのメカニズムを使用してSSD120によってダウンストリームFAR410でプログラムされる。
【0102】
FPGA145は、また、構成モニター1125を含む。
FPGA145は、SSD120を代替するのではなく、単に追加の機能を提供するため、そしてFPGA145がプロセッサ110とSSD120との間に挿入されるので、プロセッサ110がSSD120によって提供される機能を知ることができるのは重要である。
より具体的には、FPGA145は、SSD120のPCIe構成空間とマッチする性能を知らせなければならない。
その目的を達成するために、それに応じてSSD120が提示するのと同じPCIe構成をプロセッサ110に提供しつつ、そのために、構成モニター1125は、SSD120のPCIe構成空間を複製する。
【0103】
図12は、本発明の第5実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
図12において、SSD120は、これ以上のプロセッサ110と直接通信していないため、SSD120は、ホストシステムのメモリアドレスのブロックを要求しない。
代わりに、SSD120は、ルートポート1110のための構成空間を含むアドレスマップ1210からFPGAメモリアドレスのブロック1205を要請する。
ブロック1205は、プロセッサ110とダウンストリームFAR420とのNVMe通信のためのサブセット410を含む。
ブロック1205は、BARにより識別される。
【0104】
FPGA145なしで予想するように、SSD120と通信できるプロセッサ110によってメカニズムを提供するため、FPGA145は、プロセッサ110からホストシステムのメモリアドレスを要請する。
FPGA145のSSD120によって要請されたように、ブロック1205を並行するために、FPGA145は、PF1115のために、少なくともブロック1205と同じ大きさのブロック1215を求める(したがって、SSD120がプロセッサ110からブロック1215を要請したかのように見える)。
【0105】
ブロック1215でアドレスを使用するPCIeトランザクションが、ホストとSSD120との間の通信のためのものであるが、FPGA145を通過していることを反映するために、ブロック1215は、
図12で「ホスト-FPGA-SSD」で表示される。
FPGA145は、アクセラレーションコマンドについて「APM-F」340と通信するために、プロセッサ110のためのメカニズムを提供しつつ、PF1120のためのブロック1220を要請する。
ブロック(1215及び1220)は、それぞれ2つの分離されたBARにより識別され得る。
本発明の他の実施形態で、FPGA145とSSD120との間の通信を容易にするために、ダウンストリームFAR420のようにブロック1220の一部分を使用することが可能である。
【0106】
本発明の前述の実施形態でのように、
図11において、FPGA145は、プロセッサ110とSSD120との通信を可能にする部分を含むものとして示している。
つまり、具体的には、エンドポイント1105、PF(1115及び1120)、ルートポート1110、及びダウンストリームフィルタ360である。
前に示した本発明の実施形態と同様に、PCIeトランザクションのフィルタリングと関連した構成は、FPGA145から除去することができる。
したがって、本発明の第5実施形態で、エンドポイント1105、PF(1115及び1120)は、第1ブリッジ構成要素及びルートポート1110に配置することができ、ルートポート1110及びダウンストリームフィルタ360は、それぞれが、
図11の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、(他のソース(source)からの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
【0107】
≪第6実施形態≫
本発明の第5実施形態は、従来のPCIeトランザクション(プロセッサ110とSSD120との間の)からアクセラレーションコマンド(SSD120とFPGA145との間の)を分離するために、相変わらずダウンストリームフィルタ360に依存する。
ダウンストリームフィルタ360は、本発明の第6実施形態でのようにSSD120が第2エンドポイントを含む場合に除去することができる。
【0108】
図13は、本発明の第6実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
図13で、FPGAは、
図11の実施形態で示した1つのルートポート1110ではなく、2つのルートポート(1110及び1305)を含む。
ルートポート1110は、プロセッサ110から発生する従来のPCIeトランザクションで使用され得る。
ルートポート1305は、SSD120とFPGA145との間で交換されるアクセラレーションコマンド及びデータのために使用することができる。
【0109】
アクセラレーションコマンドは、相異なるルートポート(1110及び1305)を使用しているプロセッサ110から発生する従来のPCIeトランザクションから自然に分離されるので、
図3、5、7、9、11のダウンストリームフィルタ360が必要ではない。
この事実は、SSD120が、
図5、7、9のアップストリームフィルタ(505及び715)をプログラミングするための負担を軽減してくれるように、SSD120がFPGA360でダウンストリームフィルタ360をプログラミングの負担を軽減してくれるということを意味する(
図11及び13にFPGA145は、従来のPCIeトランザクションに関連したPFに基づいたアクセラレ-ションコマンドを区別することができる)。
この利点に対するオフセットは、SSD120が、それぞれFPGA145のルートポート(1110及び1305)と通信するために二つのエンドポイント(305及び1310)を含むことである。
【0110】
SSD120は、本発明の第6実施形態で、2つのエンドポイント(305及び1310)を含んでいるので、エンドポイント(305及び1310)のそれぞれは、FPGA145から、それ自身のメモリアドレスブロックを要請することができる。
さらに、ルートポート(1110及び1305)のそれぞれは、それ自身の構成空間を含んでいるので、SSD120のエンドポイント(305及び1310)は、相異なる構成空間からメモリアドレスのブロックを要請することができる。
図14は、このようなシナリオを示している。
【0111】
図14は、本発明の第6実施形態で、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
図14でSSD120のエンドポイント305は、ルートポート1110のための構成空間を含むアドレスマップ1210からブロック1405を要請する。
しかし、従来のPCIeトランザクション(プロセッサ110とSSD120との間)とアクセラレーションコマンド(FPGA145とSSD120との間)は、SSD120上の相異なるエンドポイントの使用により自然に分離されるが、SSD120は、ダウンストリームFARを含むのに十分な大きさのためにブロック1405を要請する必要がない。
したがって、ブロック1405は、FPGA145なしに大きくなる必要がある。
つまり、プロセッサ110とSSD120との間のNVMe通信を支援するのに十分な大きさのことである。
ブロック1405は、BARによって識別され得る。
【0112】
SSD120のエンドポイント1310は、アドレスマップ1410から、それ自身のメモリアドレスブロックを要請する。
しかし、ルートポート1305及びエンドポイント1310は、本発明の第6実施形態でアクセラレーションコマンドを交換するために使用されるので、アドレスマップ1410の全体が、斯かるPCIeトランザクションのために使用され得る。
つまり、エンドポイント1310が、アドレスマップ1410のただの小さいブロックを要請する必要はない。
【0113】
本発明の第5実施形態でのように、PF1115は、プロセッサ110とSSD120との間で交換されるPCIeトランザクションを管理するために、ホストシステムのメモリアドレスのブロック1215を要請する。
よって、ブロック1215は、少なくともブロック1405程大きいはずである。
同様に、PF1120は、プロセッサ110とFPGA145との間で交換されるアクセラレーションコマンドを管理するために、ホストシステムのメモリアドレスのブロック1220を要請する。
ブロック(1215及び1220)は、それぞれBARによって識別され得る。
【0114】
本発明の前の実施形態でのように、
図13で、FPGA145は、プロセッサ110とSSD120との通信を可能にする部分を含むものとして示している。
つまり、具体的には、エンドポイント1105、PF(1115及び1120)、ルートポート(1110、1305)である。
前に示した本発明の実施形態と同様に、PCIeトランザクションのフィルタリングと関連した構成は、FPGA145から除去することができる。
したがって、本発明の第6実施形態で、エンドポイント1105、PF(1115及び1120)は、第1ブリッジ構成要素に配置することができ、ルートポートに(1110、1305)は、それぞれが
図13の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、このようなブリッジ構成要素の中で単に一つだけが使用することができ、(他のソース(source)からの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
【0115】
≪第7実施形態≫
本発明の最初の第6実施形態で、FPGA145は、単一のアップストリームポート330(
図5、7、9)又は単一のエンドポイント1105(
図11及び13で)を使用して示している。
しかし、FPGA145が、本発明の第6実施形態におけるSSD120のように、多数のエンドポイントを包含していない理由はない。
本発明の第7及び第8実施形態は、FPGA145が多重のエンドポイントを使用して、どのように動作できるかを示す。
【0116】
図15は、本発明の第7実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
本発明の第7実施形態は、FPGA145が2つのエンドポイント(1105及び1505)を含むことを除いては、本発明の第6実施形態と類似する。
【0117】
SSD120のエンドポイント(305及び1310)が、従来の「ホスト-SSD PCIeトランザクション」(host-to-SSD PCIe transactions)及び「FPGA-SSDアクセラレーションコマンド」(FPGA-to-SSD acceleration instructions)を区別するために使用しているように、FPGA145のエンドポイント(1105及び1505)は、従来の「ホスト-SSD PCIeトランザクション」及び「FPGA-SSDアクセラレーションコマンド」を区別するために使用することができる。
エンドポイント1105で受信したPCIeトランザクションは、従来のPCIeトランザクションと見なすことができ、SSD120に伝送される一方(ルートポート1110を介して)、エンドポイント1505で受信したPCIeトランザクションはアクセラレーションコマンドと見なすことができ、処理のために「APM-F」340に伝達される。
【0118】
図16は、本発明の第7実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
すべての意図及び目的のために、本発明の第7実施形態によるメモリの使用は、第6実施形態によるメモリ使用と同じである。
FPGA145のルートポート(1110及び1305)は、それぞれそれ自身の構成空間を提供して、SSD120のエンドポイント305は、BARによって識別されるアドレスマップ1210からブロック1405を要請する(本発明の第6実施形態でのように、SSD120のエンドポイント1310は、アドレスマップ1410からブロック1405を要請できたり、SSD120のエンドポイント1310は、SSD-FPGA通信のためのアドレスマップ1410の全体を使用できたりする)。
エンドポイント(1105及び1505)は、プロセッサ110とSSD120との間で交換されるPCIeトランザクションを管理するために、ホストシステムのメモリアドレスのブロック(1215及び1220)を要請する。
よって、ブロック1215は、少なくともブロック1405だけ大きくなれる。
ブロック(1215及び1220)は、それぞれBARによって識別され得る。
【0119】
図15において、本発明の前の実施形態でのように、FPGA145は、プロセッサ110とSSD120との通信を可能にする部分を含むものとして示している。
つまり、具体的には、エンドポイント(1105、1505)、及びルートポート(1110及び1305)である。
前に示した、本発明の実施形態でのように、PCIeトランザクションのフィルタリングと関連した構成は、FPGA145から除去することができる。
したがって、本発明の第7実施形態で、エンドポイント(1105、1505)は、第1ブリッジ構成要素に配置することができ、ルートポート(1110及び1305)は、それぞれが
図15の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、又は、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
【0120】
≪第8実施形態≫
図17は、本発明の第8実施形態による、
図1のアクセラレーションモジュール及び
図1のストレージデバイスの構成要素を示すブロック図である。
本発明の第8実施形態は、FPGA145が2つのエンドポイント(1105及び1505)を含むことを除いては、本発明の第5実施形態と類似する。
言い換えれば、FPGA145のエンドポイント(1105及び1505)は、従来の「ホストSSD PCIeトランザクション」及び「ホスト-FPGAアクセラレーションコマンド」を区別するために使用される。
FPGA145のエンドポイント1105で受信したPCIeトランザクションは、従来のPCIeトランザクションと見なすことができ、SSD120に伝送される一方(ルートポート1110を介して)、FPGA145のエンドポイント1505で受信したPCIeトランザクションはアクセラレーションコマンドと見なすことができ、処理のために「APM-F」340に伝達される。
【0121】
図18は、本発明の第8実施形態による、
図1のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
本発明の第8実施形態によるメモリの使用は、第5実施形態によるメモリ使用と同じである。
ルートポート1110がFPGA145の唯一のルートポートである場合、SSD120のエンドポイント305は、ダウンストリームFAR420を含み得るアドレスマップ1210からブロック1205を要請する。
BARによって識別されるエンドポイント1105が、少なくともブロック1205と同じ大きさのブロック1215を要求しつつ、FPGA145のエンドポイント(1105、1505)は、ホストシステムのメモリアドレスからブロック(1215、1220)を要求する。
エンドポイント(1105及び1505)は、プロセッサ110とSSD120との間で交換されるPCIeトランザクションを管理するために、ホストシステムのメモリアドレスのブロック(1215及び1220)を要請する。
ブロック1215は、少なくともブロック1405だけ大きくなれる。
ブロック(1215及び1220)は、それぞれ2つの分離されたBARにより識別される。
本発明の他の実施形態で、FPGA145とSSD120との間の通信を容易にするために、ダウンストリームFAR420のようにブロック1220の部分を使用することが可能である。
【0122】
図17において、本発明の前の実施形態でのように、FPGA145は、プロセッサ110とSSD120との通信を可能にする部分を含むものとして示している。
つまり、具体的には、エンドポイント(1105、1505)、ルートポート1110及びダウンストリームフィルタ360である。
前に示した、本発明の実施形態でのように、PCIeトランザクションのフィルタリングと関連した構成は、FPGA145から除去することができる。
したがって、本発明の第8実施形態で、エンドポイント(1105、1505)は、第1ブリッジ構成要素に配置することができ、ルートポート1110及びダウンストリームフィルタ360は、それぞれが、
図17の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、又は、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
【0123】
本発明の様々な実施形態を参照して、前述したように、FPGA145のアップストリームインターフェース及び/又はダウンストリームインターフェースの一部であると記述されるフィルタリング機能は、FPGA145から分離することができ、他の構成によって処理され得る。
本発明の実施形態に応じて、
図19は、
図1のアクセラレーションモジュール145を代えてフィルタリング機能を処理できるブリッジ構成要素を示している。
【0124】
図19は、本発明の実施形態による、
図1のアクセラレーションモジュールとの通信を管理するブリッジ構成要素を有する
図1のシステムの構成要素を示すブロック図である。
図19において、2つのブリッジ構成要素(1905及び1910)を示す。
ブリッジ構成要素1905は、プロセッサ110から受信したPCIeトランザクションのフィルタリングを処理する一方、ブリッジ構成要素1910は、SSD120から受信したPCIeトランザクションのフィルタリングを処理する。
ブリッジ構成要素1905は、PCIeトランザクションがアクセラレーションコマンドを含むか否かに応じて、PCIeトランザクションをPCI145又はSSD120のいずれか一つに伝送する。
同様に、ブリッジ構成要素1910は、PCIeトランザクションがアクセラレーションコマンドを含むか否かに応じて、PCIeトランザクションをFPGA145又はプロセッサ110のいずれか一つに伝送する。
FPGA145のアップストリーム及びダウンストリームインターフェースの一部として図に示したものと類似の具現と同様に、ブリッジ構成要素(1905及び1910)の特定の具現は、
図19に示さない。
【0125】
本発明のいくつかの実施形態で、ブリッジ構成要素(1905及び1910)の両方が使用され得る。
本発明の他の実施形態で、1つのブリッジ構成要素(1905又は1910)のみ使用され、他のブリッジ構成要素の機能は、潜在的にFPGA145とともに残り得る。
他の実施形態で、ブリッジ構成要素(1905及び1910)の両方は、分離された構成ではない、単一の構成に含まれ得る。
【0126】
本発明の様々な実施形態を説明したので、プロセッサ110、FPGA145、及びSSD120の間のデータの流れを説明することができる。
本明細書の残りの部分で、すべてのフィルタリング機能は、FPGA145から起因するが、
図19のブリッジ構成要素(1905及び/又は1910)にフィルタリングが移動することができる時期と方法が明確にならなければならない。
【0127】
図20A及び
図20Bは、本発明の実施形態による、
図1のプロセッサ、
図1のアクセラレーションモジュール、
図1のストレージデバイス間の通信を説明するための図である。
図20Aで、本発明の第1実施形態(そして、できる限り、本発明の他の実施形態)によるデータの流れを示す。
プロセッサ110は、PCIeトランザクション2005をSSD120に伝送する(FPGAを介して)。
その後に、「APM-S」315は、SSD120がFPGA145に伝送できるPCIeトランザクション2020に含まれ得るアクセラレーションコマンド2015を生成する。
なお、
図20Aで示すように、FPGA145及びSSD120は、アクセラレーションデータを交換する。
【0128】
アクセラレーションコマンド2015の完了時に、FPGA145は、プロセッサ110に結果2035を伝達できるSSD120に結果2030を送り返す。
二者択一的に、FPGA145は、SSD120から来る結果2035をシミュレーションしながら、その結果2040をプロセッサ110に直接伝送し得る。
【0129】
対照的に、
図20Bで(本発明の第2乃至第8実施形態に適用可能な)、プロセッサ110は、アクセラレーションコマンド2045をPCIeトランザクション2005としてFPGA145に直接伝送する。
FPGA145及びSSD120は、
図20Bで示すように、アクセラレーションデータを交換する。
最後に、FPGA145は、結果2040を再びプロセッサ110に送る。
【0130】
図21は、本発明の実施形態によるFPGA145がPCIeトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
図21は、高いレベルのビュー(high-level view)を提供する。
よって、以後の図では、FPGA145の動作に対しより詳細な例示的なフローチャートを提供する。
【0131】
図21で、ステップS2105において、FPGA145は、デバイスからのPCIeトランザクションを受信する。
斯かるPCIeトランザクションは、
図20A、
図20BのPCIeトランザクション(2015又は2045)のいずれか1つであり得るし、デバイスは、プロセッサ110又はSSD120であり得る。
ステップS2110で、FPGA145は、PCIeトランザクションがアクセラレーションコマンドを含んでいるか否かを判断する。
ステップS2115で、FPGA145は、PCIeトランザクションがアクセラレーションコマンドを含むかどうかを知るために検査する。
もしそうなら(「はい」方向)、ステップS2120でアクセラレーションコマンドは、「APM-F」340によって処理される。
そうでない場合(「いいえ」方向)には、ステップS2125で、PCIeトランザクションは、他のデバイスに伝達される(PCIeトランザクションがプロセッサ110から受信した場合、PCIeトランザクションはSSD120に伝達され得、その逆も可能である)。
「APM-F」340によるアクセラレーションコマンドを処理するのはアクセラレーションコマンドによって処理されるアプリケーションデータを受信するためにSSD120と通信することを含み得ることに注目する。
【0132】
図22A~
図22Cは、本発明の実施形態による、PCIeトランザクションを処理するためにFPGA145に対して、より詳細な例示的な手順を説明するためのフローチャートである。
【0133】
図22Aにおいて、ステップS2203で、FPGA145は、SSD120からのダウンストリームFAR420を受信する。
ステップS2206で、FPGA145は、ダウンストリームFAR420をダウンストリームフィルタ360と関連付ける(associate)。
SSD120がサイドバンドバス365を介してダウンストリームFAR420をダウンストリームフィルタ360でプログラミングする場合、この関係は、自動的に発生することができたり、また、この関係は、FPGA145によって活性ステップを要求したりし得る(例として、SSD120がダウンストリームFAR420を含むFPGA145に「PCIe VDM」を伝送する場合)。
点線2209で示すように、本発明のいくつかの実施形態で、ステップS2203及びステップS2206は、スキップされることに注目する。
本発明のいくつかの実施形態で、ダウンストリームFAR420は、FPGA145それ自体によって提供され得る。
【0134】
ステップS2212で、FPGA145は、SSD120からアップストリームFAR605を受信し、ステップS2215で、FPGA145は、アップストリームポート330と、アップストリームFAR605を関連付ける。
SSD120がサイドバンドバス365を介してアップストリームFAR605をアップストリームフィルタ505でプログラミングする場合、この関係は、自動的に発生することができたり、また、この関係は、FPGA145によって活性ステップを要求したりすることができる(例として、SSD120がアップストリームFAR605を含むFPGA145に「PCIe VDM」を伝送する場合)。
本発明のいくつかの実施形態で、アップストリームFAR605は、FPGA145それ自体によって提供され得る。
【0135】
二者択一的に、ステップS2218で、FPGA145は、FPGA145を「さらす」ために使用されるPF又はVFの識別子をSSD120から受信し、ステップS2221で、FPGA145は、PF/VFの識別子をアップストリームフィルタ330と関連付ける。
言い換えれば、SSD120がサイドバンドバス365を介してPF/VFの識別子をアップストリームフィルタ505でプログラミングする場合は、この関係は、自動的に発生することができたり、また、この関係は、FPGA145によって活性ステップを要求したりすることができる(例として、SSD120がPF/VFの識別子を含むFPGA145に「PCIe VDM」を伝送する場合)。
点線2224に示すように、本発明のいくつかの実施形態で、ステップS2212、ステップS2215、ステップS2218、ステップS2221は、スキップすることができる。
【0136】
ステップS2227で、構成モニター1125は、SSD120のエンドポイント305の構成を判断し、ステップS2230で構成モジュール1125は、FPGA145のエンドポイント1105でその構成を複製し、そうすることでSSD120と同じ機能をプロセッサ110に提供する。
本発明のいくつかの実施形態で、ステップS2212、ステップS2215、ステップS2218、ステップS2221は、点線2233で示すようにスキップすることができる。
【0137】
一旦FPGA145が適切に構成されると、ステップS2236(
図22B参照)でFPGA145は、プロセッサ110から
図20BのPCIeトランザクション2005を受信する(本発明実施形態による、アップストリームポート330又はエンドポイント1105を介して)。
ステップS2239で、FPGA145は、
図20BのPCIeトランザクション2005が
図20Bのアクセラレーションコマンド2045を含んでいるか否かを判断する。
もしそうなら(「はい」方向)、ステップS2242で、
図20Bのアクセラレーションコマンド2045を処理することができ、ステップS2245で、「APM-F」340は、プロセッサ110に
図20Bの結果2040を送信する。
そうでなければ(「いいえ」方向)、
図20BのPCIeトランザクション2005が
図20Bのアクセラレーションコマンド2045を含んでいない場合、ステップS2248で、FPGA145は、
図20BのPCIeトランザクション2005をSSD120に伝送する(本発明の実施形態による、ダウンストリームポート335又はルートポート1110を介して)。
【0138】
ステップS2251(
図22C)で、FPGA145は、
図20AのPCIeトランザクション2020を受信する(本発明の実施形態による、ダウンストリームポート335又はルートポート1110によって)。
ステップS2254で、FPGA145は、
図20AのPCIeトランザクション2020が
図20Aのアクセラレーションコマンド2015を含んでいるか否かを判断する。
【0139】
図20AのPCIeトランザクション2020が
図20Aのアクセラレーションコマンド2015を含む場合(「はい」方向)、ステップS2257で、「APM-F」340は、
図22のアクセラレーションコマンド201を処理し、ステップS2260で、「APM-F」340は、
図20Aの結果2040をSSD120に伝送する。
そうでなければ(「いいえ」方向)、
図20AのPCIeトランザクション2020がアクセラレーションコマンド2015を含んでいない場合、ステップS2263で、FPGA145は、
図20AのPCIeトランザクション202をプロセッサ110に伝送する(発明の実施形態による、アップストリームポート330又はエンドポイント1105を介して)。
【0140】
図23A、23Bは、本発明の実施形態による、
図20BのPCIeトランザクション2005が
図20Bのアクセラレーションコマンド2045を含むプロセッサ110から来ているか否かを判断するためにFPGA145についての例示的な手順を説明するためのフローチャートである。
本発明の実施形態による、
図23A及び23Bは、個別的に又は集合的に使用することができる3つの可能なテストを示している。
一つ以上のテストを使用する本発明の実施形態で、個々のテストが満足される場合、
図20BのPCIeトランザクション2005は、
図20Bのアクセラレーションコマンド2045を含むものと判断される。
【0141】
図23Aにおいて、ステップS2305で、FPGA145は、
図20BのPCIeトランザクション2005に関連したアドレスがアップストリームFAR605でのアドレスを含んでいるか否かを判断する。
ステップS2310で、FPGA145は、
図20BのPCIeトランザクション2005がアップストリームフィルタ715と関連したPF又はVFの識別子を含むかどうかを判断する。
ステップS2315で、FPGA145は、エンドポイント1505のようなアクセラレーションコマンド専用のポートで
図20BのPCIeトランザクション2005が受信されるかどうかを判断する。
【0142】
これらのテストの任意の結果が、
図20BのPCIeトランザクション2005が
図20Bのアクセラレーションコマンド2045を含むことを示すと、ステップS2320(
図23B参照)において、FPGA145は、
図20BのPCIeトランザクション2005が
図20Bのアクセラレーションコマンド2045を含むことを知る(know)。
そうでなければ、ステップS2325で、FPGA145は、
図20BのPCIeトランザクション2005が
図20Bのアクセラレーションコマンド2045を含んでいないことを知る。
【0143】
図24は、本発明の実施形態による、
図20AのPCIeトランザクション2020が
図20Aのアクセラレーションコマンド2015を含むSSD120から来ているか否かを判断するためにFPGA145に対する例示的な手順を説明するためのフローチャートである。
本発明の実施形態に基づいて、
図24は、個別的に又は集合的に使用することのできる3つの可能なテストを示している。
一つ以上のテストを使用する本発明の実施形態で、どのようなテストでも満足される場合、
図20AのPCIeトランザクション2020は、
図20Aのアクセラレーションコマンド2015を含むものと判断される。
【0144】
図24において、ステップS2405で、FPGA145は、
図20aAのPCIeトランザクション2020に関連したアドレスがダウンストリームFAR420でのアドレスを含んでいるか否かを判断する。
ステップS2410において、FPGA145は、ループポート1305のようなアクセラレーションコマンド専用のポートで
図20AのPCIeトランザクション2020が受信されたどうか判断する。
これらのテストの任意の結果が、
図20AのPCIeトランザクション2020が
図20Aのアクセラレーションコマンド2015を含むものであることを示すと(「はい」方向)、ステップS2415で、FPGA145は、
図20AのPCIeトランザクション2020が
図20Aのアクセラレーションコマンド2015を含むことを知る。
従って、そうでなければ(「いいえ」方向)、ステップS2420で、FPGA145は、
図20AのPCIeトランザクション2020が
図20Aのアクセラレーションコマンド2015を含んでいないことを知る。
【0145】
図25は、本発明の実施形態による、PCIeトランザクション2020がアクセラレーションコマンドを含む、
図1のプロセッサ110から来ているか否かを判断するための
図19の第1ブリッジ構成要素1905ついての例示的な手を説明するためのフローチャートである。
【0146】
図25において、ステップS2505で、第1ブリッジ構成要素1905は、
図1のプロセッサ110からPCIeトランザクションを受信する。
ステップS2510で、第1ブリッジ構成要素1905は、PCIeトランザクションがアクセラレーションコマンドであるか否かを判断する。
もしそうなら(「はい」方向)、ステップS2515において、第1ブリッジ構成要素1905は、PCIeトランザクション/アクセラレーションコマンドを
図1のFPGA145に伝達する。
しかし、そうでなければ(「いいえ」方向)、ステップS2520において、第1ブリッジ構成要素1905は、PCIeトランザクションを
図1のSSD120に伝達する。
【0147】
図26は、本発明の実施形態による、PCIeトランザクションがアクセラレーションコマンドを含む、
図1のストレージデバイス120から来ているか否かを判断するための
図19の第2ブリッジ構成要素1910についての例示的な手順を説明するためのフローチャートである。
図26において、ステップS2605で、第2ブリッジ構成要素1905は、
図1のSSD120からPCIeトランザクションを受信する。
ステップS2610で、第2ブリッジ構成要素1905は、PCIeトランザクションがアクセラレーションコマンドであるか否かを判断する。
もしそうなら(「はい」方向)、ステップS2615において、第2ブリッジ構成要素1905は、PCIeトランザクション/アクセラレーションコマンドを
図1のFPGA145に伝達する。
しかし、そうでなければ(「いいえ」方向)、ステップS2620において、第2ブリッジ構成要素1905は、PCIeトランザクションを
図1のSSD120に伝達する。
【0148】
図27A~
図27Cは、本発明の実施形態による、SSD120がPCIeトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
【0149】
図27Aにおいて、ステップS2705で、SSD120は、メモリアドレスのブロックを要請する。
SSD120は、本発明の第1~第4の実施形態でのように、ホストシステムメモリから、又は本発明の第5~第8の実施形態でのようにFPGA145のルートポートの構成空間からメモリアドレスのブロックを要請する。
サイドバンドバス365、「PCIe VDM」又は任意の他の望みのメカニズムを使用して、ステップS2710で、SSD120は、ダウンストリームFAR420のように使用するためのメモリアドレスのブロックのサブセットを選択し、ステップS2715で、SSD120は、ダウンストリームフィルタ360をダウンストリームFAR420でプログラミングする。
本発明のいくつかの実施形態で、ステップS2705~S2715は、点線2720に示すようにスキップすることができることに注目する(点線2720、また
図27Bに示すいくつかのブロックを省略する)。
【0150】
サイドバンドバス365、「PCIe VDM」又は任意の他の望みのメカニズムを使用して、ステップS2725(
図27B)で、SSD120は、アップストリームFAR605のように使用するためのメモリアドレスのブロックのサブセットを選択し、ステップS2730で、SSD120は、ダウンストリームフィルタ360をダウンストリームFAR420でプログラミングする。
二者択一的に、ステップS2735で、SSD120は、PF705を使用してそれ自身の能力を「さらす」。
その後に、サイドバンドバス365、「PCIe VDM」又は任意の他の望みのメカニズムを使用して、ステップS2740で、SSD120は、FPGA145を「さらす」ためにPF905又はVF710を使用し、ステップS2745で、SSD120は、ダウンストリームフィルタ360をPF905又はVF710の識別子でプログラムする。
本発明のいくつかの実施形態でステップS2725~S2745)は、点線2750で示すようにスキップされ得ることに注目する。
【0151】
ステップS2755で、SSD120は、FPGA145からPCIeトランザクションを受信する。
このPCIeトランザクションは、
図20AのPCIeトランザクション2005、又は(プロセッサ110からFPGA145によって伝達される(forwarded))
図20A及び
図20BのPCIeトランザクション2025であり得る。
【0152】
PCIeトランザクションのソースに関係なく、ステップS2760(
図27C参照)で、HIL310は、PCIeトランザクションがアクセラレーションコマンドかどうかを判断する。
もしそうなら(「はい」方向)、ステップS2765で、HIL310は、PCIeトランザクション(又は圧縮解除されたアクセラレーションコマンド)を処理するために「APM-S」315に伝送する。
「APM-S」315は、アクセラレーションコマンドへの応答を生成し、これは、
図20Aのアクセラレーションコマンド2025、又は(PCIeトランザクションがプロセッサ110から由来された場合)アクセラレーションデータ2025であり得る(PCIeトランザクションがFPGA145の「APM-F」340から由来した場合)。
いずれの場合でも、ステップS2770で、「APM-S」315は、応答をFPGA145に伝送する。
【0153】
一方、PCIeトランザクションがアクセラレーションコマンドではなければ(「いいえ」方向)、ステップS2775で、SSD120は、PCIeトランザクションが
図20の結果2030であるかを判断する。
もしそうなら(「はい」方向)、ステップS2780で、SSD120は、
図20Aの結果2035をプロセッサ110に伝送する(SSD120及びFPGA145のエンドポイント305を介して)。
PCIeトランザクションが
図20Aの結果2030ではなければ(「いいえ」方向)、ステップS2785で、SSD120は、通常の場合のようにSSD120に格納されたデータに対してPCIeトランザクションを処理する。
【0154】
図28A、
図28Bは、本発明の実施形態によるSSD120がFPGA145から出てくるPCIeトランザクションがアクセラレーションコマンドを含んでいるか否かを判断するための例示的な手順を説明するためのフローチャートである。
本発明の実施形態に基づいて、
図28A及び28Bは、個別的に又は集合的に使用することができる3つの可能なテストを示している。
一つ以上のテストを使用する本発明の実施形態で、いくつかのテストで満足される場合、
図20AのPCIeトランザクションはアクセラレーションコマンド2015を含むものと判断される。
【0155】
図28Aにおいて、ステップS2805で、SSD120は、PCIeトランザクション2020がプロセッサ110(SSD120がFPGA145にアクセラレーションコマンドを開始しなければならないことを示す)からの特定のコマンドを含んでいるか否かを判断する。
ステップS2810で、SSD120は、PCIeトランザクションが「APM-F」340から由来するのかどうかを判断し、これは「APM-F」340が
図20A及び
図20Bのアクセラレーションデータ2025を要請したり、「APM-F」340が、
図20Aの結果2030をSSD120に伝送したりする場合に発生する。
ステップS2810のテストは、任意の所望の方式で実行することができる。
つまり、例として、PCIeトランザクションは、PCIeトランザクションがアクセラレーションコマンドであることを示すためのタグを含んだり、PCIeトランザクションはダウンストリームのアドレスと関連したりする。
ステップS2815で、SSD120は、PCIeトランザクションがエンドポイント1310のようなアクセラレーションコマンド専用のポートで受信されるか否かを判断する。
【0156】
これらのテストの結果の中のいずれかのものがPCIeトランザクションがアクセラレーションコマンドが含まれていることを示すと(「はい」方向)、ステップS2820(
図28B参照)で、SSD120は、PCIeトランザクションがアクセラレーションコマンドを含んでいることを知る。
そうでない場合(「いいえ」方向)、ステップS2825で、SSD120は、PCIeトランザクションがアクセラレーションコマンドを含んでいないことを知る。
【0157】
図21~28Bにおいて、本発明のいくつかの実施形態を示した。
しかし、当業者は、ステップの順序を変更したり、ステップを省略したり、又は図面に示していない接続を含んだりすることにより、本発明の他の実施形態も可能であることを認識するはずである。
加えて、特定の動作が特定の構成によって実行されるものとして説明したが、本発明の実施形態は、説明した動作を実行する他の構成を支援することができる。
フローチャートのこのようなすべての変形は、明示的に記述されていようとなかろうと本発明の実施形態だと見なされる。
【0158】
本発明の実施形態は、従来技術に比べて技術的な利点を提供する。
図1の装置105へ、
図1のアクセラレーションモジュール145を導入することにより、
図1のプロセッサ110は、
図1のアクセラレーションモジュール145によって実行可能な作業をオフロード(offload)することができる。
斯かるコマンドは、典型的には、廃棄することができる多くの量のデータを処理することを含んでいるので、
図1のメモリ140のいくつかの空間を自由にする必要性を回避するだけでなく、
図1のアクセラレーションモジュール145に作業をオフロードすることは、データを
図1のストレージデバイス120から、
図1のメモリ140にデータをローディングするのに要請される遅延を避ける。
【0159】
なお、本発明の多様な実施形態は、
図1の相異なるタイプののストレージデバイス120)を使用することを支援する。
図1のアクセラレーションモジュール145を「さらす」ために追加のPF及び/又はVFを支援するストレージデバイスだけでなく、シングルポート及びデュアルポートストレージデバイスのすべてが使用され得る。
【0160】
本発明の多様な実施形態は、異なる性能を提供するプロセッサを使用することを追加的にサポートする。
図1の装置105の動作システムがVFを支援すれば、VFが
図1のアクセラレーションモジュール145を「さらす」のに使用することができる。
そうでなければ、PFが使用され得る。
図1のプロセッサ110は、
図1のアクセラレーションモジュール145と直接通信することができ、そのような通信を支援する発明の実施形態が使用され得る。
そうでなければ、
図1のプロセッサ110は、
図1のストレージデバイス120に、すべてのアクセラレーションコマンドを送信することができ、
図1のアクセラレーションモジュール145がアクセラレーションコマンドを実行するように要請するために、それを、
図1のストレージデバイス120に残すことができる。
【0161】
下の説明は、本発明の技術的思想のいくつかの側面が具現される適切な装置(機械)又は複数の装置(機械)の簡単で一般的な説明を提供しようとする。
装置(機械)又は複数の装置(機械)は、少なくとも一部は、他の装置(機械)から受信される指示、バーチャルリアリティ(VR)環境との相互作用、生体フィードバック、又は他の入力信号だけではなく、キーボード、マウスなどのような通常の入力デバイスからの入力により制御され得る。
ここで使用するように、「装置(機械:マシン)」の用語は、単一のマシン、仮想マシン、複数の装置(機械)、複数の仮想マシン又はともに作動するデバイスと通信するように結合されたシステムを広く含むものとして意図する。
例示的な装置(機械)は、例として、自動車、電車、タクシーなどのような個人用や公共交通などの輸送装置(機械)だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルドデバイス、携帯電話、タブレットなどのようなコンピューティングデバイスを含み得る。
【0162】
装置(機械)又は複数の装置(機械)は、プログラム可能な又はプログラム不可能な論理デバイス、アレイ、ASIC(Application Specific Integrated Circuit)、エンベデッドコンピュータ、スマートカードのようなエンベデッドコントローラを含むことができる。
装置(機械)又は複数の装置(機械)は、ネットワークインターフェース、モデム又は他の通信結合を介して、のように一つ又はそれより多くのリモート機械(マシン)への一つ又はそれより多くの接続を活用することができる。
装置(機械:マシン)は、イントラネット、インターネット、LAN(local area networks)、(WAN wide area networks)などのような物理的及び/又は論理的ネットワークの手段として、互いに接続することができる。
この分野における熟練した者は、ネットワーク通信が、多様な有線及び/又は無線の近距離又は遠距離キャリア、及び無線周波数(RF)、衛星、マイクロウェーブ、IEEE 802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含むプロトコルを活用することを理解するだろう。
【0163】
本発明の技術的思想の実施形態は、装置(機械)によってアクセスされる際に装置(機械)が作業を実行したり、抽象データ型又は低レベルのハードウェアコンテキストを定義することを誘発する関数、プロシージャ、データ構造、アプリケーションなどを含む関連したデータを参照したり又は協力したりして説明することができる。
関連したデータは、例えば、RAM、ROMなどのような揮発性及び/又は不揮発性メモリ、他のストレージデバイス、ハードドライブ、フロッピーディスク(登録商標)、光学ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生体ストレージなどを含む、関連したストレージデバイスに格納することができる。
関連したデータは、物理的及び/又は論理ネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形態で伝達され、圧縮された又は暗号化されたフォーマットで使用され得る。
関連したデータは、分散環境でも使用することができ、装置(機械)アクセスに対してローカル及び/又はリモートで格納することができる。
【0164】
本発明の技術的思想の実施形態は、一つ又はそれより多くのプロセッサによって実行可能であり、ここで説明したように、本発明の技術的思想の要素を行うようにするコマンドを含んで実在する非一時的装置(機械)(コンピュータ)読み出し媒体を含み得る。
【0165】
前述で説明した方法の多様な動作は、多様なハードウェア及び/又はソフトウェア構成、回路、及び/又は複数のモジュールのような動作を実行できる任意の適切な手段によって実行することができる。
ソフトウェアは、論理的機能を具現するための実行可能なコマンドの順序付けられたリストを含み得、単一若しくは多重のコアプロセッサ、プロセッサ含みシステムのようなデバイス(device)、コマンド実行システム、又は機構(apparatus)と関連した、若しくはこれらによる使用のための任意の「プロセッサ可読媒体」で具現することができる。
【0166】
本明細書に開示した実施形態に関連して説明した方法、アルゴリズム及び機能のブロック、又はステップは、ハードウェア、プロセッサによって実行中のソフトウェアモジュール、又はそれらの組み合わせで直接具現することができる。
ソフトウェアで具現される場合、機能は実在し、非一時的コンピュータ可読媒体上に格納されたり、1つ以上のコマンド又はコードとして伝送されたりすることができる。
ソフトウェアモジュールは、RAM(random access memory)、フラッシュメモリ、ROM(Read Only Memory)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、レジスタ、ハードディスク、リムーバブルディスク、CDROM、又はこの技術分野において知られている任意の他の形態のストレージ媒体であり得る。
【0167】
図に示した実施形態を参照して説明された本発明の技術的思想の原則を有していると、図に示した実施形態は、このような原則から逸脱せずに、配列及び細部事項で修正されることができ、必要な任意の方法で組み合わせられることが理解されるだろう。
前述の説明が具体的な実施形態に集中したが、他の構成もまた考慮される。
具体的には、「本発明の技術的思想の実施形態による」のような説明や、ここで使用した類似のものにもかかわらず、このようなフレーズは、一般的に実施形態の可能性を参照し、本発明の技術的思想を具体的な実施形態の構成に限定することを意図しない。
ここで使用したように、このような用語は、他の実施形態への組み合わせ可能な同一又は相異なる実施形態を参照することができる。
【0168】
前述に説明した実施形態は、本発明の技術的思想を、それらに限定するものと解釈されない。
少ない実施形態だけを説明したが、この分野における熟練した者は、本記載の新規な説明及び長所から実質的に逸脱せずに、このような実施形態に多くの修正が可能であることを十分に理解するだろう。
したがって、このようなすべての修正は、請求項において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図する。
【0169】
本発明の実施形態は、制限なしに次のステートメント(Statement)へ拡張することができる。
【0170】
ステートメント1。本発明の実施形態は、システムを含む。前記システムは、アプリケーションを実行するプロセッサと、
前記プロセッサ上で実行中の前記アプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するためのアップストリームインターフェースと、
ストレージデバイスと通信するためのダウンストリームインターフェースと、
ハードウェアを使用して具現されてアクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー(APM-F)を含むアクセラレーションモジュールと、を包含し、
前記ストレージデバイスは、前記アクセラレーションモジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
前記アプリケーションに対するアプリケーションデータを格納するためのストアと、
前記アクセラレーションコマンドを実行するのに前記アクセラレーションプラットフォームマネージャー(APM-F)を補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(APM-S)と、をさらに包含し、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIe(Peripheral Component Interconnect Exchange)バスを介して通信し、
前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにローディングすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【0171】
ステートメント2。本発明の一実施形態はステートメント1によるシステムを含み、前記プロセッサと前記アクセラレーションモジュールとの間の通信を接続(bridging)し、前記アップストリームインターフェースを含む第1ブリッジ構成要素と、
前記アクセラレーションモジュールと前記ストレージデバイスとの間の通信を接続し、前記ダウンストリームインターフェースを含む第2ブリッジ構成要素と、をさらに包含する。
ステートメント3。本発明の一実施形態はステートメント1によるシステムを含み、前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記アクセラレーションモジュールは、前記アップストリームインターフェース及び前記ダウンストリームインタフェースを包含し、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
【0172】
ステートメント4。本発明の一実施形態はステートメント3によるシステムを含み、前記APM-F及び前記APM-Sは、前記アクセラレーションコマンドとともに使用される前記アプリケーションデータに関する、前記ダウンストリームインターフェース及び前記SSDの前記エンドポイントを使用して通信する。
ステートメント5。本発明の一実施形態はステートメント3によるシステムを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
【0173】
ステートメント6。本発明の一実施形態はステートメント3によるシステムを含み、前記プロセッサは、非揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)を含むPCIeトランザクションをSSDに伝送する。
ステートメント7。本発明の一実施形態はステートメント3によるシステムを含み、前記FPGAは、アクセラレーションエンジンと、
前記アクセラレーションエンジンに前記アクセラレーションコマンドをスケジューリングするランタイムスケジューラ(run-time scheduler)と、をさらに含む。
ステートメント8。本発明の一実施形態はステートメント3によるシステムを含み、前記SSDは、FPGAを含む。
【0174】
ステートメント9。本発明の一実施形態はステートメント3によるシステムを含み、前記アップストリームインターフェースは、FPGAのエンドポイントを含み、
前記ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、第1PF、第2PF及び前記FPGAルートポートと関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記SSDから受信した第1アクセラレーションコマンドをインターセプトするように動作し、前記APM-Fにダウンストリームフィルタのアドレス範囲(FAR)と関連する前記第1アクセラレーションコマンドを伝達するように動作し、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、前記プロセッサから受信した第1PCIeトランザクションを、前記SSDに伝達するように動作し、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記第1PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連関連付けられる。
【0175】
ステートメント10。本発明の一実施形態はステートメント9によるシステムを含み、前記アクセラレーションコマンドは、前記APM-Sによって生成される。
ステートメント11。本発明の一実施形態はステートメント10によるシステムを含み、前記SSDは、前記プロセッサから受信した前記アクセラレーションコマンドを含む、特定のコマンドをインターセプトし、前記アクセラレーションコマンドを生成するために、前記APM-Sをトリガーするために、前記特定のコマンドを前記APM-Sに伝達するホストインターフェースロジック(HIL)と、をさらに含む。
【0176】
ステートメント12。本発明の一実施形態はステートメント11によるシステムを含み、前記特定のコマンドは、前記のプロセッサ上で実行中のアクセラレーションサービスマネージャー(ASM)から由来する。
ステートメント13。本発明の一実施形態はステートメント9によるシステムを含み、前記SSDは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
【0177】
ステートメント14。本発明の一実施形態はステートメント13によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント15。本発明の一実施形態はステートメント14によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント16。本発明の一実施形態はステートメント15によるシステムを含み、前記サイドバンドバスはI2C(Inter-Integrated Circuit)バス及びSMBus(System Management Bus)を含むセットから得られる。
ステートメント17。本発明の一実施形態はステートメント14によるシステムを含み、前記コントローラは、「PCIe VDM」(Vendor Defined Message)を使用して、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
【0178】
ステートメント18。本発明の一実施形態はステートメント9によるシステムを含み、前記APM-Fは、前記のダウンストリームポート及び前記SSDのエンドポイントを介して前記APM-Sに結果を送信するように動作し、
前記コントローラは、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
ステートメント19。本発明の一実施形態はステートメント9によるシステムを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【0179】
ステートメント20。本発明の一実施形態はステートメント9によるシステムを含み、前記FPGAは、前記アップストリームポートと関連したアップストリームフィルタと、をさらに含み、前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトするように動作し、前記アップストリームFARと関連している前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAはアップストリームポートで前記プロセッサから受信したアップストリームFARと関連していない第3PCIeトランザクションを、前記SSDに伝達するように動作する。
【0180】
ステートメント21。本発明の一実施形態はステートメント20によるシステムを含み、前記第2アクセラレーションコマンドは、前記プロセッサ上で実行中のASMから由来する。
ステートメント22。本発明の一実施形態はステートメント20によるシステムを含み、前記SSDは、前記プロセッサからホストシステムアドレスのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセット及びアップストリームFARとして、前記ホストシステムアドレスの前記ブロックの第2サブセットを選択するように動作する。
【0181】
ステートメント23。ス本発明の一実施形態はステートメント22によるシステムを含み、ホストシステムのアドレスのブロックが、前記プロセッサ上で実行中のASMによってアクセス可能な特定のレジスタを含み、前記特定のレジスタは、前記アップストリームFARを識別する。
ステートメント24。本発明の一実施形態はステートメント22によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARで、前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
【0182】
ステートメント25。本発明の一実施形態はステートメント24によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARで、前記アップストリームフィルタを前記アップストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
ステートメント26。本発明の一実施形態はステートメント25によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0183】
ステートメント27。本発明の一実施形態はステートメント24によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記ダウンストリームフィルタを前記ダウンストリームFARで、前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
ステートメント28。本発明の一実施形態はステートメント20によるシステムを含み、前記APM-Fは、前記ダウンストリームポート及び前記SSDの前記エンドポイントを介して前記APM-Sに結果を伝送するように動作し、
前記コントローラは、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
【0184】
ステートメント29。本発明の一実施形態はステートメント20によるシステムを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント30。本発明の一実施形態はステートメント9によるシステムを含み、前記SSDは物理関数(PF)及び仮想関数(VF)を含み、前記PFは前記SSDを「さらす」ために動作し、前記VFは前記FPGAを「さらす」ために動作し、
前記FPGAは、前記アップストリームポートと関連した前記アップストリームフィルタと、をさらに含み、前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトし、前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされない第3PCIeトランザクションを、前記SSDに伝達するように動作する
【0185】
ステートメント31。本発明の一実施形態はステートメント30によるシステムを含み、前記第2アクセラレーションコマンドは、前記プロセッサ上で実行中のASMから由来する。
ステートメント32。本発明の一実施形態はステートメント30によるシステムを含み、前記PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
【0186】
ステートメント33。本発明の一実施形態はステートメント32によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント34。本発明の一実施形態はステートメント33によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【0187】
ステートメント35。本発明の一実施形態はステートメント34によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント36。本発明の一実施形態はステートメント33によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
【0188】
ステートメント37。本発明の一実施形態はステートメント30によるシステムを含み、前記第2アクセラレーションコマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、アップストリームFARと関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント38。本発明の一実施形態はステートメント37によるシステムを含み、前記VFは、前記アップストリームFARとして前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
【0189】
ステートメント39。本発明の一実施形態はステートメント38によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
ステートメント40。本発明の一実施形態はステートメント39によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【0190】
ステートメント41。本発明の一実施形態はステートメント40によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント42。本発明の一実施形態はステートメント39によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
【0191】
ステートメント43。本発明の一実施形態はステートメント30によるシステムを含み、前記第2アクセラレーションコマンドは、前記VFの識別子を含み、
前記アップストリームフィルタは、前記VFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント44。本発明の一実施形態はステートメント43によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
【0192】
ステートメント45。本発明の一実施形態はステートメント44によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記VFの前記識別子でプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント46。本発明の一実施形態はステートメント45によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0193】
ステートメント47。本発明の一実施形態はステートメント44によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
ステートメント48。本発明の一実施形態はステートメント30によるシステムを含み、前記APM-Fは、前記のダウンストリームポート及び前記SSDのエンドポイントを介して前記APM-Sに結果を伝送するように動作し、
前記コントローラは、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
【0194】
ステートメント49。本発明の一実施形態はステートメント30によるシステムを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント50。本発明の一実施形態はステートメント9によるシステムを含み、前記SSDは、前記SSDを「さらす」ように動作する第1PF及び前記FPGAを「さらす」ように動作する第2PFを含み、
前記FPGAは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトするように動作して、前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAはアップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされない第3PCIeトランザクションを、前記SSDに伝達する。
【0195】
ステートメント51。本発明の一実施形態はステートメント50によるシステムを含み、前記第2アクセラレーションコマンドが、前記プロセッサ上で実行中のASMから由来する。
ステートメント52。本発明の一実施形態はステートメント50によるシステムを含み、前記第1PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
【0196】
ステートメント53。本発明の一実施形態はステートメント52によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント54。本発明の一実施形態はステートメント53によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記サイドバンドバスを利用するように動作する。
【0197】
ステートメント55。本発明の一実施形態はステートメント54によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント56。本発明の一実施形態はステートメント53によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
【0198】
ステートメント57。本発明の一実施形態はステートメント50によるシステムを含み、前記第2アクセラレーションコマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、前記アップストリームFARに関連した前記第2のアクセラレーションコマンドをインターセプトするように動作する。
ステートメント58。本発明の一実施形態はステートメント57によるシステムを含み、前記第2PFが前記アップストリームFARとして前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
【0199】
ステートメント59。本発明の一実施形態はステートメント58によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
ステートメント60。本発明の一実施形態はステートメント59によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【0200】
ステートメント61。本発明の一実施形態はステートメント60によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント62。本発明の一実施形態はステートメント59によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
【0201】
ステートメント63。本発明の一実施形態はステートメント50によるシステムを含み、前記第2アクセラレーションコマンドは、前記第2VFの識別子を含み、
前記アップストリームフィルタは、前記第2VFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント64。本発明の一実施形態はステートメント63によるシステムを含み、前記コントローラは、前記第2PFの前記識別子で前記アップストリームフィルタをプログラミングするように動作する。
【0202】
ステートメント65。本発明の一実施形態はステートメント64によるシステムを含み、前記コントローラは、前記第2PFの前記識別子で前記アップストリームフィルタをプログラミングするために、前記サイドバンドバスを使用するように動作する。
ステートメント66。本発明の一実施形態はステートメント65によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0203】
ステートメント67。本発明の一実施形態はステートメント64によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記アップストリームフィルタを前記第2PFの前記識別子でプログラミングするように動作する。
ステートメント68。本発明の一実施形態はステートメント50によるシステムを含み、前記APM-Fは、前記ダウンストリームポート及び前記SSDの前記エンドポイントを介して前記APM-Sに結果を伝送するように動作し、
前記コントローラの前記の結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
ステートメント69。本発明の一実施形態はステートメント50によるシステムを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【0204】
ステートメント70。本発明の一実施形態はステートメント3によるシステムを含み、前記アップストリームインターフェースは、FPGAのエンドポイントを含み、
前記ダウンストリームインターフェイスは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、第1PF、第2PF、及び前記FPGAルートポートと関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信した第1アクセラレーションコマンドをインターセプトするように動作して前記第1アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記第1アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲(FAR)と関連付けられ、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信したPCIeトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられる。
【0205】
ステートメント71。本発明の一実施形態はステートメント70によるシステムを含み、前記SSDは、前記FPGAから前記ダウンストリームFARを含むFPGAアドレスのブロックを要請するように動作し、
前記ホストシステムアドレスの前記第2ブロックは、少なくとも前記FPGAアドレスの前記ブロックほど大きく、
前記コントローラは、前記ダウンストリームFARのように、前記FPGAアドレスの前記ブロックのサブセットを選択するように動作する。
ステートメント72。本発明の一実施形態はステートメント71によるシステムを含み、前記コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラムするように動作する。
【0206】
ステートメント73。本発明の一実施形態はステートメント72によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント74。本発明の一実施形態はステートメント73によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0207】
ステートメント75。本発明の一実施形態はステートメント72によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント76。本発明の一実施形態はステートメント70によるシステムを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント77。本発明の一実施形態はステートメント70によるシステムを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニターをさらに含む。
【0208】
ステートメント78。本発明の一実施形態はステートメント3によるシステムを含み、前記アップストリームインターフェースは、FPGAのエンドポイントを含み、
前記ダウンストリームインターフェースは、第1構成空間を支援する第1FPGAのルートポート及び第2構成空間を支援する第2FPGAのルートポートを含み、
前記SSDの前記エンドポイントは、前記第1FPGAのルートポートと関連し、
前記SSDは、前記第2のFPGAのルートポートと関連した前記SSDの第2エンドポイントと、をさらに含み、
前記FPGAは、第1PF及び第2PFを含み、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝送するように動作し、
前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記第1FPGAのルートポートで、前記SSDから受信した第2PCIeトランザクションを前記プロセッサに伝達するように動作し、
前記第2のFPGAのルートポートで、前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記第1PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられる。
【0209】
ステートメント79。本発明の一実施形態はステートメント78によるシステムを含み、前記第2アクセラレーションコマンドは、前記APM-Sによって生成される。
ステートメント80。本発明の一実施形態はステートメント78によるシステムを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送する。
【0210】
ステートメント81。本発明の一実施形態はステートメント78によるシステムを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニターをさらに含む。
ステートメント82。本発明の一実施形態はステートメント78によるシステムを含み、前記アップストリームインターフェースは、第2FPGAのエンドポイントと、をさらに含み、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDのエンドポイントを介して前記SSDに伝達するようにさらに動作し、前記第2FPGAのエンドポイントで、前記プロセッサから受信した前記第2アクセラレーションコマンドを前記APM-Fに伝達するように、さらに動作する。
【0211】
ステートメント83。本発明の一実施形態はステートメント82によるシステムを含み、前記第2アクセラレーションコマンドは、前記APM-Sによって生成される。
ステートメント84。本発明の一実施形態はステートメント82によるシステムを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント85。本発明の一実施形態はステートメント82によるシステムを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニターをさらに含む。
【0212】
ステートメント86。本発明の一実施形態はステートメント3によるシステムを含み、前記アップストリームインターフェースは、第1FPGAエンドポイント及び第2FPGAのエンドポイントを含み、
前記ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、前記FPGAルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記SSDから受信した第1アクセラレーションコマンドをインターセプトするように動作して、前記APM-Fに前記第1アクセラレーションコマンドを伝達するように動作し、
前記第1アクセラレーションコマンドは、ダウンストリームFARと関連し、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝達するように動作し、
前記第2FPGAのエンドポイントにおいて、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記第1FPGAのルートポートで、前記SSDから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記FPGAエンドポイントを介して前記プロセッサに伝達するように動作し、
前 記第2FPGAのルートポートで、前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝達するように動作する。
【0213】
ステートメント87。本発明の一実施形態はステートメント86によるシステムを含み、前記第2アクセラレーションコマンドは、前記APM-Sによって生成される。
ステートメント88。本発明の一実施形態はステートメント86によるシステムを含み、前記SSDは、前記ダウンストリームFARを含むFPGAアドレスのブロックを前記FPGAから要請するように動作し、
前記FPGAは、少なくとも前記FPGAアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを前記第1FPGAエンドポイントに対する前記プロセッサから要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして前記FPGAアドレスの前記ブロックのサブセットを選択するように動作する。
【0214】
ステートメント89。本発明の一実施形態はステートメント88によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント90。本発明の一実施形態はステートメント89によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【0215】
ステートメント91。本発明の一実施形態はステートメント90によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント92。本発明の一実施形態はステートメント89によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記「PCIe VDM」を使用するように動作する。
【0216】
ステートメント93。ステートメント86によると、本発明の実施形態は、システムを含む。ステートメント86において、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送する。
ステートメント94。本発明の一実施形態はステートメント86によるシステムを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニターをさらに含む。
【0217】
ステートメント95。本発明の実施形態は、アクセラレーションモジュールを含む。
前記アクセラレーションモジュールは、アクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー(APM-F)と、
プロセッサと通信するためのアップストリームインターフェースと、
前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(APM-S)を含むストレージデバイスと通信するためのダウンストリームインターフェースを含み、
前記プロセッサ上でアプリケーションが実行され、
前記アクセラレーションモジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して前記プロセッサ及び前記ストレージデバイスと通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリにアプリケーションのデータをローディングすることなく、前記アプリケーションに対する前記ストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【0218】
ステートメント96。本発明の一実施形態はステートメント95によるアクセラレーションモジュールを含み、前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現される。
ステートメント97。本発明の一実施形態はステートメント96によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sは、前記アクセラレーションコマンドとともに使用される前記アプリケーションのデータに関する前記ダウンストリームインターフェースを使用して通信する。
【0219】
ステートメント98。本発明の一実施形態はステートメント96によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント99。本発明の一実施形態はステートメント96によるアクセラレーションモジュールを含み、前記FPGAは、アクセラレーションエンジンと、
前記アクセラレーションエンジンで前記アクセラレーションコマンドをスケジューリングするランタイムスケジューラ(run-time scheduler)と、をさらに含む。
【0220】
ステートメント100。本発明の一実施形態はステートメント96によるアクセラレーションモジュールを含み、前記アップストリームインターフェースはアップストリームポートを含み、
前記ダウンストリームインターフェースはダウンストリームポートを含み、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信した第1PCIeトランザクションを前記ストレージデバイスに伝達するように動作し、
前記FPGAは、前記ダウンストリームポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信したアクセラレーションコマンドをインターセプトするように動作して前記APM-Fに前記アクセラレーションコマンドを伝達するように動作し、
前記アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲(FAR)と関連付けられ、
前記FPGAは、ダウンストリームポートで、前記ストレージデバイスから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記プロセッサに伝送するように動作する。
【0221】
ステートメント101。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタで前記ダウンストリームFARは、前記コントローラによってプログラミングされる。
ステートメント102。本発明の一実施形態はステートメント101によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタで前記ダウンストリームFARは、前記サイドバンドバスを介して前記コントローラによってプログラミングされる。
【0222】
ステートメント103。本発明の一実施形態はステートメント102によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2C(Inter-Integrated Circuit)バス及びSM(System Management Bus)バスを含むセットから得られる。
ステートメント104。本発明の一実施形態はステートメント101によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタで前記ダウンストリームFARは「PCIe VDM」(Vendor Defined Message)を使用して、前記コントローラによってプログラミングされる。
【0223】
ステートメント105。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記APM-Fは、前記ダウンストリームポートを介して前記ストレージデバイスのAMP-Sに結果を伝送するように動作する。
ステートメント106。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント107。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
【0224】
ステートメント108。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記FPGAは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、
前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトするよう動作し、アップストリームFARと関連付けられる前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAはアップストリームポートで前記プロセッサから受信した前記アップストリームFARと関連していない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
【0225】
ステートメント109。本発明の一実施形態はステートメント108によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
ステートメント110。本発明の一実施形態はステートメント109によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【0226】
ステートメント111。本発明の一実施形態はステートメント110によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2C(Inter-Integrated Circuit)バス及びSMBus(System Management Bus)を含むセットから得られる。
ステートメント112。本発明の一実施形態はステートメント109によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記「PCIe VDM」を用いて前記ストレージデバイスによってプログラミングされる。
【0227】
ステートメント113。本発明の一実施形態はステートメント108によるアクセラレーションモジュールを含み、前記APM-Fは、前記ダウンストリームポートを介して前記ストレージデバイスのAMP-Sへ結果を伝送するように動作する。
ステートメント114。本発明の一実施形態はステートメント108によるアクセラレーションモジュールを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【0228】
ステートメント115。本発明の一実施形態はステートメント108によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント116。ス本発明の一実施形態はステートメント108によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスに割り当てられた非揮発性メモリエクスプレス(NVMe)レジスタを介して前記プロセッサに間接的に「さらさ」れる。
【0229】
ステートメント117。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの仮想機能(VF)により「さらさ」れ、
前記FPGAは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、
前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトするよう動作し、前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
【0230】
ステートメント118。本発明の一実施形態はステートメント117によるアクセラレーションモジュールを含み、前記第2アクセラレーションコマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、アップストリームFARと関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント119。本発明の一実施形態はステートメント118によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
【0231】
ステートメント120。本発明の一実施形態はステートメント119によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント121。本発明の一実施形態はステートメント120によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0232】
ステートメント122。本発明の一実施形態はステートメント119によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは「PCIe VDM」を使用して、前記ストレージデバイスによってプログラミングされる。
ステートメント123。本発明の一実施形態はステートメント117によるアクセラレーションモジュールを含み、前記第2アクセラレーションコマンドは、前記VFの識別子を含み、
前記アップストリームフィルタは、前記VFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
【0233】
ステートメント124。本発明の一実施形態はステートメント123によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタは、前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
ステートメント125。本発明の一実施形態はステートメント124によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
【0234】
ステートメント126。本発明の一実施形態はステートメント125によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント127。本発明の一実施形態はステートメント124によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタは「PCIe VDM」を用いて前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
【0235】
ステートメント128。本発明の一実施形態はステートメント117によるアクセラレーションモジュールを含み、前記APM-Fは、前記ダウンストリームポートを介して前記ストレージデバイスの前記AMP-Sへ結果を伝送するように動作する。
ステートメント129。本発明の一実施形態はステートメント117によるアクセラレーションモジュールを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【0236】
ステートメント130。本発明の一実施形態はステートメント117によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント131。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの物理関数(PF)により「さらさ」れ、
前記FPGAは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、
前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトするよう動作し、前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
【0237】
ステートメント132。本発明の一実施形態はステートメント131によるアクセラレーションモジュールを含み、前記第2アクセラレーションコマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、アップストリームFARに関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント133。本発明の一実施形態はステートメント132によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
【0238】
ステートメント134。本発明の一実施形態はステートメント133によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント135。本発明の一実施形態はステートメント134によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0239】
ステートメント136。本発明の一実施形態はステートメント133によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは「PCIe VDM」を使用して、前記ストレージデバイスによってプログラミングされる。
ステートメント137。本発明の一実施形態はステートメント131によるアクセラレーションモジュールを含み、前記第2アクセラレーションコマンドは、前記PFの識別子を含み、
前記アップストリームフィルタは、前記PFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
【0240】
ステートメント138。本発明の一実施形態はステートメント137によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタは、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
ステートメント139。ス本発明の一実施形態はステートメント138によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタはサイドバンドバスを使用して、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
【0241】
ステートメント140。本発明の一実施形態はステートメント139によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント141。本発明の一実施形態はステートメント138によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタは「PCIe VDM」を使用して、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
【0242】
ステートメント142。本発明の一実施形態はステートメント131によるアクセラレーションモジュールを含み、前記APM-Fは、前記ダウンストリームポートを介して前記APM-Sへ結果を伝送するように動作する。
ステートメント143。本発明の一実施形態はステートメント131によるアクセラレーションモジュールを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント144。本発明の一実施形態はステートメント131によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
【0243】
ステートメント145。本発明の一実施形態はステートメント96によるアクセラレーションモジュールを含み、前記アップストリームインターフェースは、FPGAのエンドポイントを含み、
前記ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、第1PF、第2PF、及び前記FPGAルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信した第1アクセラレーションコマンドをインターセプトするように動作し、前記第1アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記第1アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲(FAR)と関連付けられ、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信したPCIeトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられる。
【0244】
ステートメント146。本発明の一実施形態はステートメント145によるアクセラレーションモジュールを含み、前記FPGAは、前記FPGAから前記ダウンストリームFARを含むFPGAアドレスのブロックに対する要請を前記ストレージデバイスから受信するように動作し、
前記FPGAは、前記構成空間から前記FPGAアドレスの前記ブロックを割り当てるように動作し、
前記ホストシステムアドレスの前記第1ブロックは、少なくとも前記FPGAアドレスの前記ブロックほど大きい。
ステートメント147。本発明の一実施形態はステートメント146によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタ内で前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
【0245】
ステートメント148。本発明の一実施形態はステートメント147によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタ内で前記ダウンストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント149。本発明の一実施形態はステートメント148によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0246】
ステートメント150。本発明の一実施形態はステートメント147によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタ内で前記ダウンストリームFARは、前記「PCIe VDM」を用いて前記ストレージデバイスによってプログラミングされる。
ステートメント151。本発明の一実施形態はステートメント145によるアクセラレーションモジュールを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
【0247】
ステートメント152。本発明の一実施形態はステートメント145によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント153。本発明の一実施形態はステートメント145によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニターをさらに含む。
【0248】
ステートメント154。本発明の一実施形態はステートメント96によるアクセラレーションモジュールを含み、前記アップストリームインターフェースは、FPGAのエンドポイントを含み、
前記ダウンストリームインターフェイスは、第1構成空間を支援する第1FPGAのルートポート及び第2構成空間を支援する第2FPGAのルートポートを含み、
前記SSDの前記エンドポイントは、前記第1FPGAのルートポートと関連し、
前記SSDは、前記第2FPGAのルートポートと関連した前記SSDの第2エンドポイントをさらに含み、
前記FPGAは、第1PF及び第2PFを含み、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝送するように動作し、
前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記第1FPGAのルートポートで、前記SSDから受信した第2PCIeトランザクションを前記プロセッサに伝達するよう動作し、
前記第2FPGAのルートポートで、前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝達するように動作する。
【0249】
ステートメント155。本発明の一実施形態はステートメント154によるアクセラレーションモジュールを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送する。
ステートメント156。本発明の一実施形態はステートメント154によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
【0250】
ステートメント157。本発明の一実施形態はステートメント154によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記のFPGAのエンドポイントにコピーするための構成モニターをさらに含む。
ステートメント158。本発明の一実施形態はステートメント154によるアクセラレーションモジュールを含み、前記アップストリームインターフェースは、第2FPGAのエンドポイントをさらに含み、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDのエンドポイントを介して前記SSDに伝達するように、さらに動作し、前記第2FPGAのエンドポイントで、前記プロセッサから受信した前記第2アクセラレーションコマンドを前記APM-Fに伝達するように、さらに動作する。
【0251】
ステートメント159。本発明の一実施形態はステートメント158によるアクセラレーションモジュールを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント160。本発明の一実施形態はステートメント158によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント161。本発明の一実施形態はステートメント158によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記のFPGAのエンドポイントにコピーするための構成モニターをさらに含む。
【0252】
ステートメント162。本発明の一実施形態はステートメント96によるアクセラレーションモジュールを含み、前記アップストリームインターフェースは、第1FPGAエンドポイント及び第2FPGAのエンドポイントを含み、
前記ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、前記FPGAルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記SSDから受信した第1アクセラレーションコマンドをインターセプトするように動作して、前記APM-Fに前記第1アクセラレーションコマンドを伝達するように動作し、
前記第1アクセラレーションコマンドは、ダウンストリームFARと関連し、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝達するように動作し、
前記第2FPGAのエンドポイントにおいて、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記第1FPGAのルートポートで、前記SSDから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記FPGAエンドポイントを介して前記プロセッサに伝達するよう動作し、
前記第2FPGAのルートポートで、前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝達するように動作する。
【0253】
ステートメント163。本発明の一実施形態はステートメント162によるアクセラレーションモジュールを含み、前記FPGAは、前記FPGAから前記ダウンストリームFARを含むFPGAアドレスのブロックの要請を前記ストレージデバイスから受信するように動作し、
前記FPGAは、前記構成空間から前記FPGAアドレスの前記ブロックを割り当てるように動作し、
前記FPGAは、前記第1FPGAのプロセッサから少なくとも前記FPGAアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを要請するように動作する。
ステートメント164。本発明の一実施形態はステートメント163によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタ内の前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
【0254】
ステートメント165。本発明の一実施形態はステートメント164によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタ内の前記ダウンストリームFARはサイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント166。本発明の一実施形態はステートメント165によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0255】
ステートメント167。本発明の一実施形態はステートメント164によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタ内の前記ダウンストリームFARは「PCIe VDM」を用いて前記ストレージデバイスによってプログラミングされる。
ステートメント168。本発明の一実施形態はステートメント162によるアクセラレーションモジュールを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
【0256】
ステートメント169。本発明の一実施形態はステートメント162によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント170。本発明の一実施形態はステートメント162によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記のFPGAのエンドポイントにコピーするための構成モニターをさらに含む。
【0257】
ステートメント171。本発明の実施形態は、ハードウェアを使用して具現される第1ブリッジコンポーネント(構成要素)を含んでいる。
前記第1ブリッジコンポーネントは、
プロセッサと通信するためのアップストリームインターフェースと、
アクセラレーションモジュール及びストレージデバイスと通信するためのダウンストリームインターフェースを含み、
前記プロセッサ上でアプリケーションが実行され、
前記第1ブリッジ構成要素(コンポーネント)は、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスと通信し、
前記ダウンストリームインターフェースは、前記PCIeトランザクションがアクセラレーションコマンドを含んでいるか否かに応じて前記プロセッサから前記アクセラレーションモジュール又は前記ストレージデバイスにPCIeトランザクションを伝達するように動作する。
【0258】
ステートメント172。本発明の一実施形態はステートメント171によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
【0259】
ステートメント173。本発明の一実施形態はステートメント171によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントは、
前記プロセッサ及び前記アクセラレーションモジュールと通信するための第2アップストリームインターフェースと、
前記ストレージデバイスと通信するための第2ダウンストリームインターフェースを含み、
前記第2ブリッジコンポーネントは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスと通信し、
前記第2アップストリームインターフェースは、前記第2PCIeトランザクションが第2アクセラレーションコマンドを含んでいるか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記アクセラレーションモジュールに第2PCIeトランザクションを伝達するように動作する。
【0260】
ステートメント174。本発明の一実施形態はステートメント171によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記アップストリームインターフェースは、アップストリームポートと、
前記アップストリームポートに関連したアップストリームフィルターを含み、
前記アップストリームフィルタは、前記プロセッサから受信したアップストリームFARに関連した第2アクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信したアップストリームFARと関連していない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
【0261】
ステートメント175。本発明の一実施形態はステートメント174によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
ステートメント176。本発明の一実施形態はステートメント175によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【0262】
ステートメント177。本発明の一実施形態はステートメント176によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント178。本発明の一実施形態はステートメント175によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記「PCIe VDM」は、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【0263】
ステートメント179。本発明の一実施形態はステートメント174によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記FPGAは、前記ストレージデバイスに割り当てられた非揮発性メモリエクスプレス(NVMe)レジスタを介して前記プロセッサに間接的に「さらさ」れる。
ステートメント180。本発明の一実施形態はステートメント171によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記アップストリームインターフェースは、前記ストレージデバイスの仮想関数(VF)により「さらさ」れ、
前記アップストリームインターフェースは、アップストリームポートと、
前記アップストリームポートと関連したアップストリームフィルタを含み、
前記アップストリームフィルタは、前記アクセラレーションモジュールに対する第2アクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
【0264】
ステートメント181。本発明の一実施形態はステートメント180によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第2アクセラレーションコマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、アップストリームFARに関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント182。本発明の一実施形態はステートメント181によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
【0265】
ステートメント183。本発明の一実施形態はステートメント182によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント184。本発明の一実施形態はステートメント183によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0266】
ステートメント185。本発明の一実施形態はステートメント182によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記「PCIe VDM」を用いて前記ストレージデバイスによってプログラミングされる。
ステートメント186。本発明の一実施形態はステートメント180によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第2アクセラレーションコマンドは、前記VFの識別子を包含し、
前記アップストリームフィルタは、前記VFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
【0267】
ステートメント187。本発明の一実施形態はステートメント186によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
ステートメント188。本発明の一実施形態はステートメント187によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
【0268】
ステートメント189。本発明の一実施形態はステートメント188によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント190。本発明の一実施形態はステートメント187によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは「PCIe VDM」を用いて前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
【0269】
ステートメント191。本発明の一実施形態はステートメント171によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記アップストリームインターフェースは、前記ストレージデバイスの物理関数(PF)により「さらさ」れ、
前記アップストリームインターフェースは、アップストリームポートと、
前記アップストリームポートと関連したアップストリームフィルタを含み、
前記アップストリームフィルタは、前記アクセラレーションモジュールに対する第2アクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作し、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
【0270】
ステートメント192。本発明の一実施形態はステートメント191によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第2アクセラレーションコマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、前記アップストリームFARに関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント193。本発明の一実施形態はステートメント192によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスによってプログラミングされる。
【0271】
ステートメント194。本発明の一実施形態はステートメント193によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント195。本発明の一実施形態はステートメント194によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0272】
ステートメント196。本発明の一実施形態はステートメント193によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは「PCIe VDM」を用いて前記ストレージデバイスによってプログラミングされる。
【0273】
ステートメント197。本発明の一実施形態はステートメント191によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第2アクセラレーションコマンドは、前記PFの識別子を含み、
前記アップストリームフィルタは、前記PFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント198。本発明の一実施形態はステートメント197によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
【0274】
ステートメント199。本発明の一実施形態はステートメント198によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
ステートメント200。本発明の一実施形態はステートメント199によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント201。本発明の一実施形態はステートメント198によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは「PCIe VDM」を使用して、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
【0275】
ステートメント202。本発明の一実施形態はステートメント171によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記アップストリームインターフェースは、エンドポイントと、
第1PFと、第2PFを含み、
前記ダウンストリームインターフェースは、前記プロセッサから受信したPCIeトランザクションを前記ストレージデバイスに伝送するように動作して、前記プロセッサから受信した第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作し、
前記PCIeトランザクションは、前記第1PFの第1識別子と関連関連付けられる、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連関連付けられる。
【0276】
ステートメント203。本発明の一実施形態はステートメント202によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントは、前記ストレージデバイスの前記エンドポイントの性能を前記のエンドポイントにコピーするための構成モニターと、をさらに含む。
【0277】
ステートメント204。本発明の一実施形態はステートメント171によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記アップストリームインターフェースは、第1エンドポイントと、第2エンドポイントを含み、
前記ダウンストリームインターフェースは、前記プロセッサから受信した前記第1エンドポイントに関連したPCIeトランザクションを前記ストレージデバイスに伝達するように動作して、前記プロセッサから受信した第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するよう動作し、
前記第2アクセラレーションコマンドは、前記第2エンドポイントと関連している。
【0278】
ステートメント205。本発明の一実施形態はステートメント204によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントは、前記ストレージデバイスの前記エンドポイントの性能を前記第1エンドポイントにコピーするための構成モニターをさらに含む。
【0279】
ステートメント206。本発明の実施形態は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。
前記第2ブリッジコンポーネントは、プロセッサとアクセラレーションモジュールと通信するためのアップストリームインターフェイスと、
ストレージデバイスと通信するためのダウンストリームインタフェースを含み、
前記第2ブリッジコンポーネントは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスと通信し、
前記アップストリームインターフェースは、前記PCIeトランザクションがアクセラレーションコマンドを含んでいるか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記アクセラレーションモジュールにPCIeトランザクションを伝達するように動作する。
【0280】
ステートメント207。本発明の一実施形態はステートメント206によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
【0281】
ステートメント208。本発明の一実施形態はステートメント206によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、ダウンストリームインターフェースは、ダウンストリームポートと、
前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲(FAR)に関連するアクセラレーションコマンドを識別するように動作するダウンストリームフィルタを含み、
前記ダウンストリームインターフェースは、前記アクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記プロセッサに伝達するように動作する。
【0282】
ステートメント209。本発明の一実施形態はステートメント208によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
ステートメント210。本発明の一実施形態はステートメント209によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARはサイドバンドバスを介して前記ストレージデバイスによってプログラミングされる。
【0283】
ステートメント211。本発明の一実施形態はステートメント210によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント212。本発明の一実施形態はステートメント209によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARは「PCIe VDM」を使用して、前記ストレージデバイスによってプログラミングされる。
【0284】
ステートメント213。本発明の一実施形態はステートメント206によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、ダウンストリームインターフェースは、ルートポートと、
前記ルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲(FAR)と関連したアクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記プロセッサに伝達するように動作する。
【0285】
ステートメント214。本発明の一実施形態はステートメント213によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
ステートメント215。本発明の一実施形態はステートメント214によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARはサイドバンドバスを使用して、前記ストレージデバイスによってプログラミングされる。
【0286】
ステートメント216。本発明の一実施形態はステートメント215によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント217。本発明の一実施形態はステートメント214によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARは「PCIe VDM」を使用して、前記ストレージデバイスによってプログラミングされる。
【0287】
ステートメント218。本発明の一実施形態はステートメント206によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、ダウンストリームインターフェースは、第1ルートポートと、第2ルートポートを含み、
前記ダウンストリームインターフェースは、前記第1ルートポートで、前記ストレージデバイスから受信した第2PCIeトランザクションを前記プロセッサに伝達するように動作し、前記第2ルートポートで、前記ストレージデバイスから受信したアクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作する。
【0288】
ステートメント219。本発明の実施形態は、ストレージデバイスを含む。
前記ストレージデバイスは、アクセラレーションプラットフォームマネージャー(APM-F)を含むアクセラレーションモジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
アプリケーションに対するアプリケーションデータを格納するストアと、
前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(APM-S)を含み、
前記ストレージデバイス及び前記アクセラレーションモジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して通信し、
前記アクセラレーションモジュールは、プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【0289】
ステートメント220。本発明の一実施形態はステートメント219によるストレージデバイスを含み、前記ストレージデバイスは、SSDを含む。
ステートメント221。本発明の一実施形態はステートメント220によるストレージデバイスを含み、前記APM-F及び前記APM-Sは、前記アクセラレーションコマンドとともに使用される前記アプリケーションデータに関する前記SSDの前記エンドポイントを使用して通信する。
【0290】
ステートメント222。本発明の一実施形態はステートメント220によるストレージデバイスを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント223。ステートメント220によると、本発明の実施形態は、ストレージデバイスを含んでいる。ステートメント220において、前記ストレージデバイスは、前記プロセッサから受信した非揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)を含むPCIeトランザクションをSSDに伝送する。
【0291】
ステートメント224。本発明の一実施形態はステートメント220によるストレージデバイスを含み、前記SSDは、前記アクセラレーションモジュールを含む。
ステートメント225。本発明の一実施形態はステートメント220によるストレージデバイスを含み、前記SSDはダウンストリームFARに関連したアクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作し、
前記第1PCIeトランザクションは、前記APM-Fのために具現され、
前記SSDは、前記ダウンストリームFARと関連していない第1PCIeトランザクションを、前記アクセラレーションモジュールに伝送するように動作し、
前記第1PCIeトランザクションは、前記プロセッサのために具現される。
【0292】
ステートメント226。本発明の一実施形態はステートメント225によるストレージデバイスを含み、前記アクセラレーションモジュールは、APM-Sによって生成される。
ステートメント227。本発明の一実施形態はステートメント226によるストレージデバイスを含み、前記SSDは、前記アクセラレーションコマンドを含む特定のコマンドをインターセプトし、前記アクセラレーションコマンドを生成するために、前記APM-Sをトリガーするために、前記の特定のコマンドを前記APM-Sに伝達するホストインターフェースロジック(HIL)をさらに含む。
【0293】
ステートメント228。本発明の一実施形態はステートメント227によるストレージデバイスを含み、前記特定のコマンドは、前記のプロセッサ上で実行中のアクセラレーションサービスマネージャー(ASM)から由来する。
ステートメント229。本発明の一実施形態はステートメント225によるストレージデバイスを含み、前記SSDは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
【0294】
ステートメント230。本発明の一実施形態はステートメント229によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント231。本発明の一実施形態はステートメント230によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためのサイドバンドバスを使用するように動作する。
【0295】
ステートメント232。本発明の一実施形態はステートメント231によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント233。本発明の一実施形態はステートメント230によるストレージデバイスを含み、前記コントローラは、「PCIe VDM」(Vendor Defined Message)を使用して、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
【0296】
ステートメント234。本発明の一実施形態はステートメント229によるストレージデバイスを含み、前記コントローラは、前記アップストリームFARのように、前記ホストシステムメモリの前記ブロックの第2サブセットを選択するように動作する。
ステートメント235。本発明の一実施形態はステートメント234によるストレージデバイスを含み、前記コントローラは、前記プロセッサ上で実行中のASMによってアクセス可能な、特定のレジスタ内で前記アップストリームFARに対する情報を格納するように動作する。
【0297】
ステートメント236。本発明の一実施形態はステートメント235によるストレージデバイスを含み、前記特定のレジスタは、前記ホストシステムアドレスの前記ブロック内にある。
ステートメント237。本発明の一実施形態はステートメント229によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
【0298】
ステートメント238。本発明の一実施形態はステートメント237によるストレージデバイスを含み、前記コントローラは、サイドバンドバスを使用して、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
ステートメント239。本発明の一実施形態はステートメント238によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0299】
ステートメント240。本発明の一実施形態はステートメント237によるストレージデバイスを含み、前記コントローラは、PCIe VDMを使用して、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
ステートメント241。本発明の一実施形態はステートメント225によるストレージデバイスを含み、前記SSDは、前記SSDの前記エンドポイントを介して前記APM-Fから結果を受信するように動作して、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
【0300】
ステートメント242。本発明の一実施形態はステートメント225によるストレージデバイスを含み、前記SSDは物理関数(PF)と仮想関数(VF)を包含し、前記PFは、前記SSDを露出させるように動作し、前記VFは、前記アクセラレーションモジュールを露出させるように動作する。
ステートメント243。本発明の一実施形態はステートメント242によるストレージデバイスを含み、前記PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
【0301】
ステートメント244。本発明の一実施形態はステートメント243によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント245。本発明の一実施形態はステートメント244によるストレージデバイスを含み、前記コントローラは、サイドバンドバスを利用して、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
【0302】
ステートメント246。本発明の一実施形態はステートメント245によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント247。本発明の一実施形態はステートメント244によるストレージデバイスを含み、前記コントローラは、「PCIe VDM」を用いて前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
【0303】
ステートメント248。本発明の一実施形態はステートメント242によるストレージデバイスを含み、前記VFは、前記アップストリームFARのように、前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
ステートメント249。ステートメント248によると、本発明の実施形態は、ストレージデバイスを含んでいる。ステートメント248において、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
【0304】
ステートメント250。本発明の一実施形態はステートメント249によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするためのサイドバンドバスを使用するように動作する。
ステートメント251。本発明の一実施形態はステートメント250によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0305】
ステートメント252。本発明の一実施形態はステートメント249によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするための「PCIe VDM」を使用するように動作する。
ステートメント253。本発明の一実施形態はステートメント242によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記VFでプログラミングするように動作する。
【0306】
ステートメント254。本発明の一実施形態はステートメント253によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記VFでプログラミングするためのサイドバンドバスを使用するように動作する。
ステートメント255。本発明の一実施形態はステートメント254によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0307】
ステートメント256。本発明の一実施形態はステートメント253によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記VFでプログラミングするために「PCIe VDM」を使用するように動作する。
ステートメント257。本発明の一実施形態はステートメント242によるストレージデバイスを含み、前記コントローラは、前記SSDの前記エンドポイントを介して前記APM-Fから結果を受信するように動作して、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
【0308】
ステートメント258。本発明の一実施形態はステートメント225によるストレージデバイスを含み、前記SSDは、前記SSDを露出させるように動作する第1PF及び前記FPGAを露出させるように動作する第2PFを含む。
ステートメント259。本発明の一実施形態はステートメント258によるストレージデバイスを含み、前記第1PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
【0309】
ステートメント260。本発明の一実施形態はステートメント259によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント261。本発明の一実施形態はステートメント260によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためにサイドバンドバスを利用するように動作する。
【0310】
ステートメント262。本発明の一実施形態はステートメント261によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント263。本発明の一実施形態はステートメント260によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記「PCIe VDM」を使用するように動作する。
【0311】
ステートメント264。本発明の一実施形態はステートメント258によるストレージデバイスを含み、前記第2PFが前記アップストリームFARのように、前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
ステートメント265。本発明の一実施形態はステートメント264によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
【0312】
ステートメント266。本発明の一実施形態はステートメント265によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記アップストリームFARでプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント267。本発明の一実施形態はステートメント266によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0313】
ステートメント26。本発明の一実施形態はステートメント265によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記アップストリームFARでプログラミングするために「PCIe VDM」を使用するように動作する。
ステートメント269。本発明の一実施形態はステートメント258によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記第2PFの識別子でプログラミングするように動作する。
【0314】
ステートメント270。本発明の一実施形態はステートメント269によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記第2PFの識別子でプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント271。本発明の一実施形態はステートメント270によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0315】
ステートメント272。本発明の一実施形態はステートメント269によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記第2PFの識別子でプログラミングするために「PCIe VDM」を使用するように動作する。
ステートメント273。本発明の一実施形態はステートメント258によるストレージデバイスを含み、前記コントローラは、前記SSDの前記エンドポイントを介して前記APM-Fから結果を受信するように動作して、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
【0316】
ステートメント274。本発明の一実施形態はステートメント225によるストレージデバイスを含み、前記SSDは、前記プロセッサからアクセラレーションモジュールのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記アクセラレーションモジュールの前記ブロックのサブセットを選択するように動作する。
ステートメント275。本発明の一実施形態はステートメント274によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
【0317】
ステートメント276。本発明の一実施形態はステートメント275によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント277。本発明の一実施形態はステートメント276によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0318】
ステートメント278。本発明の一実施形態はステートメント275によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために「PCIe VDM」を使用するように動作する。
ステートメント279。本発明の一実施形態はステートメント220によるストレージデバイスを含み、前記アクセラレーションモジュールと通信するための前記SSDの第2エンドポイントをさらに含み、
前記SSDの前記エンドポイントは、前記プロセッサと通信するために使用され、
前記SSDの前記第2エンドポイントは、前記APM-Fと通信するために使用される。
【0319】
ステートメント280。本発明の実施形態は、システムのアクセラレーション方法を含んでいる。
前記システムのアクセラレーション方法は、
アクセラレーションモジュールで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記アクセラレーションモジュールのアクセラレーションプラットフォームマネージャー(APM-F)において、前記PCIeトランザクションを処理するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記PCIeトランザクションを第2デバイスに伝達するステップを含み、
前記アクセラレーションモジュールは、プロセッサと関連したメモリにアプリケーションのデータをローディングすることなく、アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
【0320】
ステートメント281。本発明の一実施形態はステートメント280によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を用いて具現される。
【0321】
ステートメント282。本発明の一実施形態はステートメント281によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールにおいて、前記第1デバイスから前記PCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップを含む。
【0322】
ステートメント283。本発明の一実施形態はステートメント282によるシステムのアクセラレーション方法を含み、前記FPGAの前記ルートポートで、前記ストレージデバイスから第1PCIeトランザクションを受信するステップと、
前記FPGAのダウンストリームを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント284。本発明の一実施形態はステートメント282によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップと、をさらに含む。
【0323】
ステートメント285。本発明の一実施形態はステートメント284によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント286。本発明の一実施形態はステートメント284によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
【0324】
ステートメント287。本発明の一実施形態はステートメント282によるシステムのアクセラレーション方法を含み、前記FPGAの前記ダウンストリームを使用して前記第2のPCIeトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
ステートメント288。本発明の一実施形態はステートメント282によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームポートを使用して前記第2のPCIeトランザクションの結果を前記プロセッサに伝送するステップをさらに含む。
【0325】
ステートメント289。本発明の一実施形態はステートメント282によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームポートで前記プロセッサから第1PCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが前記FPGAの前記アップストリームポートと関連したアップストリームフィルタアドレス範囲(FAR)内のアドレスに関連するか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2のアクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【0326】
ステートメント290。本発明の一実施形態はステートメント289によるシステムのアクセラレーション方法を含み、前記第2アクセラレーションコマンドは、前記のプロセッサ上で実行中のASMから由来する。
ステートメント291。本発明の一実施形態はステートメント289によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、
前記アップストリームFARを前記FPGAの前記アップストリームポートと接続するステップと、をさらに含む。
【0327】
ステートメント292。本発明の一実施形態はステートメント291によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント293。本発明の一実施形態はステートメント292によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」はアップストリームFARを含む。
【0328】
ステートメント294。本発明の一実施形態はステートメント289によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
ステートメント295。本発明の一実施形態はステートメント289によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームポートを使用して前記第1 PCIeトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
【0329】
ステートメント296。本発明の一実施形態はステートメント282によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームポートで前記プロセッサから第1PCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連するか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【0330】
ステートメント297。本発明の一実施形態はステートメント296によるシステムのアクセラレーション方法を含み、前記第2アクセラレーションコマンドは、前記プロセッサ上で実行中のASMから由来する。
ステートメント298。本発明の一実施形態はステートメント296によるシステムのアクセラレーション方法を含み、前記第1PCIeトランザクションが前記第2アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記VFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【0331】
ステートメント299。本発明の一実施形態はステートメント298によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、
前記VFの前記識別子を前記FPGAの前記アップストリームポートに接続するステップと、をさらに含む。
ステートメント300。本発明の一実施形態はステートメント299によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0332】
ステートメント301。本発明の一実施形態はステートメント299によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記VFの前記識別子を含む。
ステートメント302。本発明の一実施形態はステートメント296によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
【0333】
ステートメント303。本発明の一実施形態はステートメント282によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームポートで前記プロセッサから第1PCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが前記ストレージデバイスによって「さらされる」物理関数(PF)と関連するか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【0334】
ステートメント304。本発明の一実施形態はステートメント303によるシステムのアクセラレーション方法を含み、前記第2アクセラレーションコマンドは、前記のプロセッサ上で実行中のASMから由来する。
ステートメント305。本発明の一実施形態はステートメント303によるシステムのアクセラレーション方法を含み、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【0335】
ステートメント306。本発明の一実施形態はステートメント305によるシステムのアクセラレーション方法を含み、前記ストレージデバイスから、前記FPGAにおいて、前記PFの前記識別子を受信するステップと、
前記PFの前記識別子を前記FPGAの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント307。本発明の一実施形態はステートメント306によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0336】
ステートメント308。本発明の一実施形態はステートメント306によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記PFの前記識別子を含む。
ステートメント309。本発明の一実施形態はステートメント303によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
ステートメント310。本発明の一実施形態はステートメント303によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
【0337】
ステートメント311。本発明の一実施形態はステートメント281によるシステムのアクセラレーション方法を含み、FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの第1識別子を有するタグを含んでいるか、または前記FPGAの第2PFの第2識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2のデバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップを含む。
【0338】
ステートメント312。本発明の一実施形態はステートメント311によるシステムのアクセラレーション方法を含み、前記FPGAの前記ルートポートで、前記ストレージデバイスから第2PCIeトランザクションを受信するステップと、
前記FPGAで前記第2PCIeトランザクションが、前記FPGAの前記ルートポートに関連したダウンストリームFAR内のアドレスと関連しているか否かを判断することにより、前記第2PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第2PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
【0339】
ステートメント313。本発明の一実施形態はステートメント312によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップと、をさらに含む。
ステートメント314。本発明の一実施形態はステートメント313によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージ装置からサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0340】
ステートメント315。本発明の一実施形態はステートメント313によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
ステートメント316。本発明の一実施形態はステートメント311によるシステムのアクセラレーション方法を含み、前記第2アクセラレーションコマンドは、前記プロセッサ上で実行中のASMから由来する。
【0341】
ステートメント317。本発明の一実施形態はステートメント311によるシステムのアクセラレーション方法を含み、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップをさらに含む。
ステートメント318。本発明の一実施形態はステートメント311によるシステムのアクセラレーション方法を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0342】
ステートメント319。本発明の一実施形態はステートメント281によるシステムのアクセラレーション方法を含み、FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの第1識別子を有するタグを含んでいるか、又は前記FPGAの第2PFの第2識別子を持つタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを第2ストレージデバイスに伝達するステップを含む。
【0343】
ステートメント320。本発明の一実施形態はステートメント319によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから第2PCIeトランザクションを受信するステップと、
前記第2PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、または前記FPGAの第2ルートポートで受信されるか否かを判断するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第1のルートポートで受信されたと判断された場合、前記エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第2のルートポートで受信されたと判断された場合、前記FPGAの前記AMP-Fで前記第2PCIeトランザクションを処理するステップと、をさらに含む。
【0344】
ステートメント321。本発明の一実施形態はステートメント319によるシステムのアクセラレーション方法を含み、前記第2アクセラレーションコマンドは、前記のプロセッサ上で実行中のASMから由来する。
ステートメント322。本発明の一実施形態はステートメント319によるシステムのアクセラレーション方法を含み、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップをさらに含む。
ステートメント323。本発明の一実施形態はステートメント319によるシステムのアクセラレーション方法を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記第1のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0345】
ステートメント324。本発明の一実施形態はステートメント281によるシステムのアクセラレーション方法を含み、FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップを含み、
前記FPGAで前記第1PCIeトランザクションが前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、第1ルートポート及び第2ルートポートを含む前記FPGAの第1ルートポートを使用して前記第1PCIeトランザクションをストレージデバイスに伝達するステップを含む。
【0346】
ステートメント325。本発明の一実施形態はステートメント324によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから第2PCIeトランザクションを受信するステップと、
前記第2PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断することにより、前記第2のPCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第1ルートポートで受信されたと判断された場合、前記第1エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第2ルートポートで受信されたと判断された場合、前記FPGAの前記AMP-Fで前記第2PCIeトランザクションを処理するステップと、をさらに含む。
【0347】
ステートメント326。本発明の一実施形態はステートメント324によるシステムのアクセラレーション方法を含み、前記第2アクセラレーションコマンドは、前記のプロセッサ上で実行中のASMから由来する。
ステートメント327。本発明の一実施形態はステートメント324によるシステムのアクセラレーション方法を含み、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
【0348】
ステートメント328。本発明の一実施形態はステートメント324によるシステムのアクセラレーション方法を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記第1ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記第1のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0349】
ステートメント329。本発明の一実施形態はステートメント281によるシステムのアクセラレーション方法を含み、FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションをストレージデバイスに伝達するステップを含む。
【0350】
ステートメント330。本発明の一実施形態はステートメント329によるシステムのアクセラレーション方法を含み、前記FPGAの前記ルートポートで、前記ストレージデバイスから第2PCIeトランザクションを受信するステップと、
前記FPGAで前記第2PCIeトランザクションが前記FPGAのルートポートと関連したダウンストリームFAR内のアドレスと関連するか否かを判断することにより、前記第2PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記第2PCIeトランザクションを前記FPGAの前記APM-Fで処理するステップと、
前記第2PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記FPGAの前記第1エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
【0351】
ステートメント331。本発明の一実施形態はステートメント330によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップと、をさらに含む。
ステートメント332。本発明の一実施形態はステートメント331によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0352】
ステートメント333。本発明の一実施形態はステートメント331によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
ステートメント334。本発明の一実施形態はステートメント329によるシステムのアクセラレーション方法を含み、前記第1PCIeトランザクションは、前記プロセッサ上で実行中のASMから由来する。
【0353】
ステートメント335。本発明の一実施形態はステートメント329によるシステムのアクセラレーション方法を含み、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
ステートメント336。本発明の一実施形態はステートメント329によるシステムのアクセラレーション方法を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記第1エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0354】
ステートメント337。本発明の実施形態は、システムのアクセラレーション方法を含んでいる。
前記システムのアクセラレーション方法は、第1ブリッジコンポーネントで、プロセッサからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記PCIeトランザクションをストレージデバイスに伝達するステップを含み、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージ装デバイスは、PCIeバスを使用して通信する。
【0355】
ステートメント338。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールは、FPGAを使用して具現され、
前記ストレージデバイスは、SSDを含む。
ステートメント339。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが第1ブリッジコンポーネントのアップストリームポートに関連したアップストリームFAR内のアドレスと関連しているか否かを判断するステップをさらに含む。
【0356】
ステートメント340。本発明の一実施形態はステートメント339によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、
前記アップストリームFARを前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント341。本発明の一実施形態はステートメント340によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0357】
ステートメント342。本発明の一実施形態はステートメント340によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記アップストリームFARを含む。
ステートメント343。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連するか否かを判断するステップを含む。
【0358】
ステートメント344。本発明の一実施形態はステートメント343によるシステムのアクセラレーション方法を含み、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連するか否かを判断するステップは、前記PCIeトランザクションが前記VFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
ステートメント345。本発明の一実施形態はステートメント344によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、
前記VFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
【0359】
ステートメント346。本発明の一実施形態はステートメント345によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント347。本発明の一実施形態はステートメント345によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記VFの前記識別子を含む。
【0360】
ステートメント348。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」物理関数(PF)と関連するか否かを判断するステップを含む。
ステートメント349。本発明の一実施形態はステートメント348によるシステムのアクセラレーション方法を含み、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」物理関数(PF)と関連するか否かを判断するステップは、前記PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【0361】
ステートメント350。本発明の一実施形態はステートメント349によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記PFの前記識別子を受信するステップと、
前記PFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント351。本発明の一実施形態はステートメント350によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びイSMバスを含むセットから得られる。
【0362】
ステートメント352。本発明の一実施形態はステートメント350によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記PFの前記識別子を含む。
ステートメント353。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記第1ブリッジコンポーネントの第1PFの識別子を有するタグを含むか、又は、前記第1ブリッジコンポーネントの第2PFの識別子を有するタグを含むか否かを判断するステップを含む。
【0363】
ステートメント354。本発明の一実施形態はステートメント353によるシステムのアクセラレーション方法を含み、前記第1ブリッジ構成要素の構成モニターを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第1構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
ステートメント355。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記第1コンポーネントの第1エンドポイントにおいて、前記プロセッサから受信したか否かを判断するステップを含む。
【0364】
ステートメント356。本発明の一実施形態はステートメント355によるシステムのアクセラレーション方法を含み、前記第1ブリッジ構成要素の構成モニターを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第1構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0365】
ステートメント357。本発明の実施形態は、システムのアクセラレーション方法を含んでいる。
前記システムのアクセラレーション方法は、
第2ブリッジコンポーネントでストレージからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記PCIeトランザクションをストレージデバイスに伝達するステップと、を含み、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
【0366】
ステートメント358。本発明の一実施形態はステートメント357によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント359。本発明の一実施形態はステートメント357によるシステムのアクセラレーション方法を含み、前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第2ブリッジコンポーネントにおいて、前記第2PCIeトランザクションが前記第2ブリッジコンポーネントのダウンストリームポートと関連したダウンストリームFAR内のアドレスと関連しているか否かを判断するステップをさらに含む。
【0367】
ステートメント360。本発明の一実施形態はステートメント359によるシステムのアクセラレーション方法を含み、前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記第2ブリッジコンポーネントの前記ダウンストリームポートと接続するステップと、をさらに含む。
ステートメント361。本発明の一実施形態はステートメント360によるシステムのアクセラレーション方法を含み、前記第2ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0368】
ステートメント362。本発明の一実施形態はステートメント360によるシステムのアクセラレーション方法を含み、前記第2のブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
ステートメント363。本発明の一実施形態はステートメント357によるシステムのアクセラレーション方法を含み、前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが第1ルートポイント及び第2ルートポイントを含む前記第2ブリッジコンポーネントの前記第2ルートポートで受信したか否かを判断するステップを含む。
【0369】
ステートメント364。本発明の実施形態は、システムのアクセラレーション方法を含んでいる。
前記システムのアクセラレーション方法は、
ストレージデバイスでアクセラレーションモジュールから第1PCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第1PCIeトランザクションが前記仮想コマンドであると判断された場合、前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップと、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップと、を含み、
プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【0370】
ステートメント365。本発明の一実施形態はステートメント364によるシステムのアクセラレーション方法を含み、前記ストレージデバイスは、SSDである。
【0371】
ステートメント366。本発明の一実施形態はステートメント365によるシステムのアクセラレーション方法を含み、ストレージデバイスのアクセラレーションモジュールから第1PCIeトランザクションを受信するステップは、前記SSDのエンドポイントにおいて、前記アクセラレーションモジュールから前記第1PCIeトランザクションを受信するステップを含み、
前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第1PCIeトランザクションが前記アクセラレーションモジュールの前記APM-Fから由来するか否かを判断するステップを含み、
前記ストレージデバイスのAPM-Sを使用して、第2のPCIeトランザクションを生成するステップは、前記第1PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2のPCIeトランザクションを生成するステップを含み、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第2PCIeトランザクションをストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
【0372】
ステートメント367。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記第1PCIeトランザクションは、前記プロセッサから由来され、特定のコマンドを含む。
ステートメント368。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記第1PCIeトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第1PCIeトランザクションが前記SSDのHILにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップをさらに含む。
【0373】
ステートメント369。本発明の一実施形態はステートメント368によるシステムのアクセラレーション方法を含み、前記特定のコマンドは、前記のプロセッサ上で実行中のASMから由来する。
ステートメント370。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップと、をさらに含む。
【0374】
ステートメント371。本発明の一実施形態はステートメント370によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント372。本発明の一実施形態はステートメント370によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
【0375】
ステートメント373。本発明の一実施形態はステートメント370によるシステムのアクセラレーション方法を含み、アップストリームFARのように、前記ホストシステムアドレスの前記ブロックの第2サブセットを選択するステップと、
前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップと、をさらに含む。
ステートメント374。本発明の一実施形態はステートメント373によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0376】
ステートメント375。本発明の一実施形態はステートメント373によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はアップストリームFARを含む。
ステートメント376。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、
前記アクセラレーションモジュールのルートポートを前記アクセラレーションモジュールでプログラミングするステップと、をさらに含む。
【0377】
ステートメント377。本発明の一実施形態はステートメント376によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント378。本発明の一実施形態はステートメント376によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
【0378】
ステートメント379。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記SSDの前記エンドポイントから前記アクセラレーションモジュールから前記第1PCIeトランザクションの結果を受信するステップと、
前記SSDの前記エンドポイントを使用して前記第1PCIeトランザクションの前記の結果を前記プロセッサに伝達するステップと、をさらに含む。
ステートメント380。本発明の一実施形態はステートメント376によるシステムのアクセラレーション方法を含み、前記SSDを「さらさせる」物理関数(PF)を提供するステップと、
前記アクセラレーションモジュールを「さらさせる」仮想関数(VF)を提供するステップと、をさらに含む。
【0379】
ステートメント381。本発明の一実施形態はステートメント380によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記VFの識別子でプログラミングするステップをさらに含む。
ステートメント382。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記SSDを露出させる第1PFを提供するステップと、
前記アクセラレーションモジュールを「さらされる」第2PFを提供するステップと、をさらに含む。
ステートメント383。本発明の一実施形態はステートメント382によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記第2のPFの識別子でプログラミングするステップをさらに含む。
【0380】
ステートメント384。本発明の一実施形態はステートメント365によるシステムのアクセラレーション方法を含み、ストレージデバイスのアクセラレーションモジュールから第1PCIeトランザクションを受信するステップは、前記SSDのエンドポイントにおいて、前記アクセラレーションモジュールから前記第1PCIeトランザクションを受信するステップを含み、
前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第2エンドポイントで第1エンドポイント及び前記第2エンドポイントを含むSSDによって受信されるか否かを判断するステップを含み、
前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップは、前記第1PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2PCIeトランザクションを生成するステップを含み、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第2PCIeトランザクションを前記ストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
【0381】
ステートメント385。本発明の一実施形態は、非揮発性記憶媒体を含む物品(article)を含み、非揮発性記憶媒体は、装置(機械:マシン)によって実行されたときに以下の結果となる命令を記憶しており、
前記以下の結果とは、
アクセラレーションモジュールで第1デバイスからPCIeトランザクションを受信するステップと、
前記PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記PCIeトランザクションが、前記仮想コマンドであると判断された場合、前記アクセラレーションモジュールのAPM-Fで前記PCIeトランザクションを処理するステップと、
前記PCIeトランザクションが、前記仮想コマンドではないと判断された場合、前記PCIeトランザクションを第2デバイスに伝送するステップを含み、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
【0382】
ステートメント386。本発明の一実施形態はステートメント385による物品を含み、前記アクセラレーションモジュールは、FPGAを使用して具現される。
【0383】
ステートメント387。本発明の一実施形態はステートメント386による物品を含み、前記FPGAで前記第1デバイスから前記PCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップを含む。
【0384】
ステートメント388。本発明の一実施形態はステートメント387による物品を含み、前記FPGAの前記アップストリームポートで前記プロセッサから第1PCIeトランザクションを受信するステップと、
前記FPGAの前記ダウンストリームプロセッサを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント389。本発明の一実施形態はステートメント387による物品を含み、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記FPGAの前記ダウンストリームポートと接続するステップと、をさらに含む。
【0385】
ステートメント390。本発明の一実施形態はステートメント389による物品を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント391。本発明の一実施形態はステートメント389による物品を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
【0386】
ステートメント392。本発明の一実施形態はステートメント387による物品を含み、前記FPGAの前記ダウンストリームポートを使用して、前記ストレージデバイスに前記第2PCIeのトランザクションの結果を送信するステップをさらに含む。
ステートメント393。本発明の一実施形態はステートメント387による物品を含み、前記FPGAの前記アップストリームポートを使用して前記プロセッサに、前記第2PCIeのトランザクションの結果を伝送するステップをさらに含む。
【0387】
ステートメント394。本発明の一実施形態はステートメント387による物品を含み、前記FPGAの前記アップストリームポートで前記プロセッサから第1PCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが前記FPGAの前記アップストリームポートと関連したアップストリームFAR内の第2アドレスと関連しているか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2のアクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2のアクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【0388】
ステートメント395。本発明の一実施形態はステートメント394による物品を含み、前記第2アクセラレーションコマンドは、前記のプロセッサ上で実行中のASMから由来する。
ステートメント396。本発明の一実施形態はステートメント394による物品を含み、前記FPGAにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、
前記アップストリームFARを前記FPGAの前記アップストリームポートと接続するステップと、をさらに含む。
【0389】
ステートメント397。本発明の一実施形態はステートメント396による物品を含み、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント398。本発明の一実施形態はステートメント396による物品を含み、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」はアップストリームFARを含む。
【0390】
ステートメント399。本発明の一実施形態はステートメント394による物品を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
ステートメント400。本発明の一実施形態はステートメント394による物品を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記プロセッサに伝送するステップをさらに含む。
【0391】
ステートメント401。本発明の一実施形態はステートメント387による物品を含み、前記FPGAの前記アップストリームポートで前記プロセッサから第1PCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連しているか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【0392】
ステートメント402。本発明の一実施形態はステートメント401による物品を含み、前記第2アクセラレーションコマンドは、前記プロセッサ上で実行中のASMから由来する。
ステートメント403。本発明の一実施形態はステートメント401による物品を含み、前記第1PCIeトランザクションが前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記VFの前記識別子を有するタグを含んでいるか否かを判断するステップを含む。
【0393】
ステートメント404。本発明の一実施形態はステートメント403による物品を含み、前記FPGAにおいて、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、
前記ダウンストリームFARを前記FPGAの前記アップストリームポートに接続するステップと、をさらに含む。
ステートメント405。本発明の一実施形態はステートメント404による物品を含み、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0394】
ステートメント406。本発明の一実施形態はステートメント404による物品を含み、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記VFの前記識別子を含む。
ステートメント407。本発明の一実施形態はステートメント401による物品を含み、前記FPGAのアップストリームポートを使用して前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップを含む。
【0395】
ステートメント408。本発明の一実施形態はステートメント387による物品を含み、前記FPGAの前記アップストリームポートで前記プロセッサから第1PCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連しているか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【0396】
ステートメント409。本発明の一実施形態はステートメント408による物品を含み、前記第2アクセラレーションコマンドは、前記プロセッサ上で実行中のASMから由来する。
ステートメント410。本発明の一実施形態はステートメント408による物品を含み、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【0397】
ステートメント411。本発明の一実施形態はステートメント410による物品を含み、前記ストレージデバイスから、前記FPGAにおいて、前記PFの前記識別子を受信するステップと、
前記PFの前記識別子を前記FPGAの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント412。本発明の一実施形態はステートメント411による物品を含み、前記FPGAにおいて、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0398】
ステートメント413。本発明の一実施形態はステートメント411による物品を含み、前記FPGAで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記PFの前記識別子を含む。
ステートメント414。本発明の一実施形態はステートメント408による物品を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記プロセッサに伝送するステップをさらに含む。
【0399】
ステートメント415。本発明の一実施形態はステートメント386による物品を含み、FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの識別子を有するタグを含んでいるか、又は前記FPGAの第2PFの第2識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを第2のストレージデバイスに伝達するステップを含む。
【0400】
ステートメント416。本発明の一実施形態はステートメント415による物品を含み、前記FPGAの前記ルートポートで、前記ストレージデバイスから第2PCIeトランザクションを受信するステップと、
前記FPGAで前記第2PCIeトランザクションが、前記FPGAの前記ルートポートに関連したダウンストリームFAR内のアドレスと関連するか否かを判断することにより、前記第2PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが前記第2のアクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第2PCIeトランザクションが前記第2のアクセラレーションコマンドではないと判断された場合、前記FPGAの前記エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップを含む。
【0401】
ステートメント417。本発明の一実施形態はステートメント416による物品を含み、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップを含む。
ステートメント418。本発明の一実施形態はステートメント417による物品を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0402】
ステートメント419。本発明の一実施形態はステートメント417による物品を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
ステートメント420。本発明の一実施形態はステートメント415による物品を含み、前記第2アクセラレーションコマンドは、前記のプロセッサ上で実行中のASMから由来する。
【0403】
ステートメント421。本発明の一実施形態はステートメント415による物品を含み、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップをさらに含む。
ステートメント422。本発明の一実施形態はステートメント415による物品を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0404】
ステートメント423。本発明の一実施形態はステートメント386による物品を含み、FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの第1識別子を有するタグを含んでいるか、又は前記FPGAの第2PFの第2識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを第2ストレージデバイスに伝達するステップを含む。
【0405】
ステートメント424。本発明の一実施形態はステートメント423による物品を含み、前記FPGAにおいて、前記ストレージデバイスから第2PCIeトランザクションを受信するステップと、
前記第2PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第1のルートポートで受信されると判断された場合、前記エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第2のルートポートで受信されると判断された場合、前記FPGAの前記AMP-Fで前記第2PCIeトランザクションを処理するステップと、をさらに含む。
【0406】
ステートメント425。本発明の一実施形態はステートメント423による物品を含み、前記第2アクセラレーションコマンドは、前記のプロセッサ上で実行中のASMから由来する。
ステートメント426。本発明の一実施形態はステートメント423による物品を含み、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップをさらに含む。
ステートメント427。本発明の一実施形態はステートメント423による物品を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記第1のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0407】
ステートメント428。本発明の一実施形態はステートメント386による物品を含み、FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップを含み、
前記FPGAで前記第1PCIeトランザクションが前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるかか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、第1ルートポート及び第2ルートポートを含む前記FPGAの第1ルートポートを使用して前記第1PCIeトランザクションをストレージデバイスに伝達するステップを含む。
【0408】
ステートメント429。本発明の一実施形態はステートメント428による物品を含み、前記FPGAにおいて、記憶装置から第2PCIeトランザクションを受信するステップと、
前記第2PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断することにより、前記第2PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第1のルートポートで受信されると判断された場合、前記第1エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第2ルートポートで受信されると判断された場合、前記FPGAの前記AMP-Fで前記第2PCIeトランザクションを処理するステップと、をさらに含む。
【0409】
ステートメント430。本発明の一実施形態はステートメント428による物品を含み、前記第2アクセラレーションコマンドは、前記のプロセッサ上で実行中のASM由来する。
ステートメント431。本発明の一実施形態はステートメント428による物品を含み、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップをさらに含む。
ステートメント432。本発明の一実施形態はステートメント401による物品を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記第1ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記第1エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0410】
ステートメント433。本発明の一実施形態はステートメント386による物品を含み、FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるかか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに転送するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションをストレージデバイスに伝達するステップを含む。
【0411】
ステートメント434。本発明の一実施形態はステートメント433による物品を含み、前記FPGAの前記ルートポートで、前記ストレージデバイスから第2PCIeトランザクションを受信するステップと、
前記FPGAで前記第2PCIeトランザクションが前記FPGAのルートポートと関連したダウンストリームFAR内のアドレスと関連しているか否かを判断することにより、前記第2PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記第2PCIeトランザクションを前記FPGAの前記APM-Fで処理するステップと、
前記第2PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記FPGAの前記第1エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
【0412】
ステートメント435。本発明の一実施形態はステートメント434による物品を含み、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップと、をさらに含む。
ステートメント436。本発明の一実施形態はステートメント435による物品を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0413】
ステートメント437。本発明の一実施形態はステートメント435による物品を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
ステートメント438。本発明の一実施形態はステートメント433による物品を含み、前記第1PCIeトランザクションは、前記プロセッサ上で実行中のASMから由来する。
【0414】
ステートメント439。本発明の一実施形態はステートメント433による物品を含み、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップをさらに含む。
ステートメント440。本発明の一実施形態はステートメント433による物品を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記第1エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0415】
ステートメント441。本発明の一実施形態は、非一時的記憶媒体を含む物品(article)を含み、非一時的記憶媒体は、装置(機械:マシン)によって実行されたときに以下の結果となる命令を記憶しており、
前記以下の結果とは、
ストレージデバイスでアクセラレーションモジュールからPCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第1PCIeトランザクションが前記仮想コマンドであると判断された場合、前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップと、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップと、
前記第1PCIeトランザクションが前記仮想コマンドではないと判断された場合、前記ストレージデバイスに格納したデータに対して前記第1PCIeトランザクションを実行するステップと、を含み、
プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【0416】
ステートメント442。本発明の一実施形態はステートメント441による物品を含み、前記ストレージデバイスはSSDである。
【0417】
ステートメント443。本発明の一実施形態はステートメント442による物品を含み、ストレージデバイスのアクセラレーションモジュールから第1PCIeトランザクションを受信するステップは、前記SSDエンドポイントにおいて、前記アクセラレーションモジュールから前記第1PCIeトランザクションを受信するステップを含み、
前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第1PCIeトランザクションが前記アクセラレーションモジュールの前記APM-Fから由来するか否かを判断するステップを含み、
前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップは、前記第1PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2PCIeトランザクションを生成するステップを含み、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第2PCIeトランザクションを前記ストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
【0418】
ステートメント444。本発明の一実施形態はステートメント443による物品を含み、前記第1PCIeトランザクションは、前記プロセッサから由来して、特定のコマンドを含む。
ステートメント445。本発明の一実施形態はステートメント443による物品を含み、前記第1PCIeトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第1PCIeトランザクションが前記SSDのHILにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップをさらに含む。
【0419】
ステートメント446。本発明の一実施形態はステートメント445による物品を含み、前記特定のコマンドは、前記のプロセッサ上で実行中のASMから由来する。
ステートメント447。本発明の一実施形態はステートメント443による物品を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップと、をさらに含む。
【0420】
ステートメント448。本発明の一実施形態はステートメント447による物品を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント449。本発明の一実施形態はステートメント447による物品を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
【0421】
ステートメント450。本発明の一実施形態はステートメント447による物品を含み、アップストリームFARのように、前記ホストシステムアドレスの前記ブロックの第2サブセットを選択するステップと、
前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップと、をさらに含む。
ステートメント451。本発明の一実施形態はステートメント450による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0422】
ステートメント452。本発明の一実施形態はステートメント450による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はアップストリームFARを含む。
ステートメント453。本発明の一実施形態はステートメント443による物品を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、
前記アクセラレーションモジュールのルートポートを前記アクセラレーションモジュールでプログラミングするステップと、をさらに含む。
【0423】
ステートメント454。本発明の一実施形態はステートメント453による物品を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント455。本発明の一実施形態はステートメント453による物品を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
【0424】
ステートメント456。本発明の一実施形態はステートメント443による物品を含み、前記SSDの前記エンドポイントで、前記アクセラレーションモジュールから前記第1PCIeトランザクションの結果を受信するステップと、
前記SSDの前記エンドポイントを使用して前記第1PCIeトランザクションの前記結果を前記プロセッサに伝達するステップと、をさらに含む。
ステートメント457。本発明の一実施形態はステートメント443による物品を含み、前記SSDを「さらさせる」物理関数(PF)を提供するステップと、
前記アクセラレーションモジュールを「さらさせる」仮想関数(VF)を提供するステップと、をさらに含む。
【0425】
ステートメント458。本発明の一実施形態はステートメント457による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記VFの識別子でプログラミングするステップをさらに含む。
ステートメント459。本発明の一実施形態はステートメント443による物品を含み、前記SSDを「さらさせる」第1PFを提供するステップと、
前記アクセラレーションモジュールを「さらされる」第2PFを提供するステップと、をさらに含む。
ステートメント460。本発明の一実施形態はステートメント459による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記第2PFの識別子でプログラミングするステップをさらに含む。
【0426】
ステートメント461。本発明の一実施形態はステートメント442による物品を含み、ストレージデバイスのアクセラレーションモジュールから第1PCIeトランザクションを受信するステップは、前記SSDのエンドポイントにおいて、前記アクセラレーションモジュールから前記第1PCIeトランザクションを受信するステップを含み、
前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第2エンドポイントで第1エンドポイント及び前記第2エンドポイントを含むSSDによって受信されるか否かを判断するステップを含み、
前記ストレージデバイスのAPM-Sを使用して、第2のPCIeトランザクションを生成するステップは、前記第1PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2のPCIeトランザクションを生成するステップを含み、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第2PCIeトランザクションを前記ストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
【0427】
ステートメント462。本発明の一実施形態は、本発明の一実施形態は、非一時的記憶媒体を含む物品(article)を含み、非一時的記憶媒体は、装置(機械:マシン)によって実行されたときに以下の結果となる命令を記憶しており、
前記以下の結果とは、
第1ブリッジコンポーネントで第1デバイスからPCIeトランザクションを受信するステップと、
前記第1ブリッジコンポーネントで、前記PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記PCIeトランザクションが、前記仮想コマンドであると判断された場合、前記PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、
前記PCIeトランザクションが、前記仮想コマンドではないと判断された場合、前記PCIeトランザクションをストレージデバイスに伝達するステップを含み、
前記プロセッサ、前記第1ブリッジのコンポーネント、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
【0428】
ステートメント463。本発明の一実施形態はステートメント462による物品を含み、前記アクセラレーションモジュールは、FPGAを使用して具現され、
前記ストレージデバイスは、SSDを含む。
ステートメント464。本発明の一実施形態はステートメント462による物品を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが第1ブリッジコンポーネントのアップストリームポートと関連したアップストリームFAR内のアドレスと関連しているか否かを判断するステップをさらに含む。
【0429】
ステートメント465。本発明の一実施形態はステートメント464による物品を含み、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、
前記アップストリームFARを前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント466。本発明の一実施形態はステートメント465による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0430】
ステートメント467。本発明の一実施形態はステートメント465による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記アップストリームFARを含む。
ステートメント468。本発明の一実施形態はステートメント462による物品を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連するか否かを判断するステップを含む。
【0431】
ステートメント469。本発明の一実施形態はステートメント468による物品を含み、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連するか否かを判断するステップは、前記PCIeトランザクションが前記VFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
ステートメント470。本発明の一実施形態はステートメント469による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、
前記VFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
【0432】
ステートメント471。本発明の一実施形態はステートメント470による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント472。本発明の一実施形態はステートメント470による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記VFの前記識別子を含む。
【0433】
ステートメント473。本発明の一実施形態はステートメント462による物品を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」物理関数(PF)と関連するか否かを判断するステップを含む。
ステートメント474。本発明の一実施形態はステートメント473による物品を含み、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」物理関数(PF)と関連するか否かを判断するステップは、前記PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【0434】
ステートメント475。本発明の一実施形態はステートメント474による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記PFの前記識別子を受信するステップと、
前記PFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント476。本発明の一実施形態はステートメント475による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0435】
ステートメント477。本発明の一実施形態はステートメント475による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記PFの前記識別子を含む。
ステートメント478。本発明の一実施形態はステートメント462による物品を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記第1ブリッジコンポーネントの第1PFの識別子を有するタグを含んでいるか、又は前記第1ブリッジコンポーネントの第2PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【0436】
ステートメント479。本発明の一実施形態はステートメント478による物品を含み、前記第1ブリッジコンポーネントの構成モニターを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第1コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
ステートメント480。本発明の一実施形態はステートメント462による物品を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記第1コンポーネントの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断するステップを含む。
【0437】
ステートメント481。本発明の一実施形態はステートメント480による物品を含み、前記第1ブリッジコンポーネントの構成モニターを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第1コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【0438】
ステートメント482。本発明の一実施形態は、非揮発性記憶媒体を含む物品(article)を含み、非揮発性記憶媒体は、装置(機械:マシン)によって実行されたときに以下の結果となる命令を記憶しており、
前記以下の結果とは、
第2ブリッジコンポーネントでストレージデバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記PCIeトランザクションをプロセッサに伝達するステップを含み、
前記プロセッサ、前記第2ブリッジコンポーネント、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
【0439】
ステートメント483。本発明の一実施形態はステートメント482による物品を含み、前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント484。本発明の一実施形態はステートメント482による物品を含み、前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第2ブリッジコンポーネントにおいて、前記第2PCIeトランザクションが前記第2ブリッジコンポーネントのダウンストリームポートと関連したダウンストリームFAR内のアドレスと関連しているか否かを判断するステップをさらに含む。
【0440】
ステートメント485。本発明の一実施形態はステートメント484による物品を含み、前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記第2ブリッジコンポーネントの前記ダウンストリームポートと接続するステップと、をさらに含む。
ステートメント486。本発明の一実施形態はステートメント485による物品を含み、前記第2ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
【0441】
ステートメント487。本発明の一実施形態はステートメント485による物品を含み、前記第2ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
ステートメント488。本発明の一実施形態はステートメント482による物品を含み、前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが第1ルートポイントおよび第2ルートポイントを含む前記第2ブリッジコンポーネントの前記第2ルートポートで受信されるか否かを判断するステップを含む。
【0442】
結論として、本明細書に記述した実施形態の多様な変更の観点から、この詳細なステートメント及び添付した資料は、単に例示的なものとして意図されており、本発明の範囲を制限するものとはみなされてはならない。したがって、本発明として請求されるのは、後述する請求の範囲、その均等物の範囲及び思想内に有り得るすべての変形である
【産業上の利用可能性】
【0443】
本発明は、FPGAベースの低コスト、低消費電力を必要とするSSD性能のアクセラレーション化のためのシステムに好適に使用可能である。
【符号の説明】
【0444】
105 装置(デバイス)(又はマシン)
110 プロセッサ
115 デバイスドライバ
120 ストレージデバイス(SSD)
125 アプリケーション
130 アプリケーションサービスマネージャ(ASM)
135 メモリコントローラ
140 メモリ
145 アクセラレーションモジュール(又はFPGA)
205 クロック
210 ネットワークコネクタ
215 バス
220 ユーザーインターフェース
225 入力/出力エンジン
305、1105、1310、1505 エンドポイント
310 ホストインターフェース層(HIL)
315 アクセラレーションプラットフォームマネージャ(APM-S)
320 フラッシュ変換階層(FTL)
325 フラッシュメディア
330 アップストリームポート
335 ダウンストリームポート
340 アクセラレーションプラットフォームマネージャ(APM-F)
345 スケジューラ
350-1、350-2 アクセラレーションエンジン
355 メッセージのメールボックス
360 ダウンストリームフィルタ
365 サイドバンドバス
405、805、810 ブロック
410 サブセット
420 ダウンストリームFAR(Filter Address Range)
505 アップストリームフィルタ
605 アップストリームFAR
705、905、1115、1120 物理機能(関数)(PF)
710 仮想機能(関数)(VF)
715 VFフィルタ
1005、1010、1215,1220、1405、2105、2125、2203、2206、2215、2221,2227,2230 ブロック
1110、1305 ルートポート
1125 構成モニター
1205、1215 メモリアドレスのブロック
1210,1410 アドレスマップ
1905、1910 ブリッジ構成要素(ブリッジコンポーネント)
2005、2020 PCIeトランザクション
2015 アクセラレーションコマンド
2030、2035、2040 結果