以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳細な説明で、多様な特定の詳細な説明を、本発明の技術的思想に対する十分な理解を助けるために提供する。しかし、この分野における通常の技術を有する者は、このような特定の詳細な説明がなくても、本発明の技術的思想を具現することができる。他の例として、よく知られている方法、手順、コンポーネント、回路、及びネットワークは実施例の側面を不必要に曖昧にしないために詳細に説明しない。
ここで、第1、第2などのような用語を多様なエレメントを説明するために使用するが、このような要素は、このような用語によって限定されない。このような用語は、一つのエレメントを他の一つのエレメントと区別するためにのみ使用される。例として、本発明の技術的思想の範囲から逸脱せずに、第1モジュールは、第2モジュールと命名される。同様に、第2モジュールは、第1モジュールと命名される。
本明細書の詳細な説明で使用する用語は、特定の実施例を説明するための目的でのみ使用され、本発明の技術的思想を限定するものと意図されない。本発明の技術的思想の説明及び請求項において使用されるように、コンテキスト(context)で明確に明示されない場合、単数表現は複数表現もまた含むものと意図される。「及び/又は」の用語は、一つ又はそれより多くの関連する項目の任意且つ全ての可能な組み合わせを含むものとして参照される。「含む(comprises)」及び/又は「含む(comprising)」の用語は、詳細な説明で使用する際に言及する特性、整数、ステップ、動作、エレメント、及び/又はコンポーネントの存在を明示し、一つ又はそれより多くの他の特性、整数、ステップ、動作、エレメント、コンポーネント及び/又はそれらのグループの存在又は追加を排除しない。図面の構成及び特性は、不可欠に実際の比率に比例しない。
本発明の実施例は、特定のデータ処理機能をアクセラレーションするために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コントローラ」という用語は、明示された場合を除いては、一般的に同じ意味で使用される。バックエンドSSDはPCIeエンドポイント及び不揮発性メモリエクスプレス(NVMe)コントローラを具現する。従って、ホストは、直接NVMeプロトコルをバックエンドSSDに伝達する。即ち、FPGAを介してホストからバックエンドSSDに連結されるPCIeインターフェースは通過(pass-through)特性である。SSDは直接メモリアクセス(DMA)を介してホストシステムメモリとのデータ伝送を遂行する。FPGAダウンストリームポート(DSP)は、PCIeトランザクションフィルタとして使用されるメモリのフィルタアドレス範囲(FAR)でプログラミングされる。DSPは、FARウィンドウに属する全てのPCIeトランザクションをフィルタリングして、それらをFPGAのロジック及びメモリに伝達する。プログラミングされたFARウィンドウに属さない全てのPCIeトランザクションは、ホストシステムのメモリに属し、ホストに直接伝達される。SSDコントローラは、PCIe VDM(Vendor Defined Message)メカニズム又はI2C/SMバスのような他のサイドバンドバスを使用するFPGAで適切なFARウィンドウをプログラムする。SSDコントローラは、PCIe BAR(Base Address Register)を介してホストにアドレス範囲のブロックを要請する。ホストのBIOSが要請されたアドレスブロックをSSDコントローラに割り当てた後、SSDコントローラは、FPGA DSPでそのアドレス範囲のサブセットをFARウィンドウでプログラムする。DSPにプログラムされたアドレスの範囲は、SSDコントローラとFPGAとが通信し合うために使用される。即ち、ホストがアドレスブロックを割り当てると、SSDとFPGAとがPCIe階層で互いに又は他のPCIeデバイスに干渉せずにホストトランザクションとPCIeバスを共有する。SSDコントローラは、共有PCIeバスを介してFARウィンドウを使用してFPGAにアクセラレーションコマンド及びデータを提供する。FPGA又はホストが共有PCIeバス及び上記アドレス範囲を使用してSSDコントローラからアクセラレーションのためのデータを要請することもできる。FPGAは、同じメカニズムを使用してアクセラレーションの結果をSSDコントローラに再び提供することもできる。提案された構造及びメカニズムは、低コスト及びFPGAデバイスを使用するSSDベースのアプリケーションアクセラレーションのための低消費電力の解決策を具現する。
提案された解決策の細部事項
基本的なアイディアは、FPGA及びSSD(及び/又は他のストレージデバイス)がホストと通信しながら(別のデバイスとして又はシングルデバイスに統合して)集合的に作動するというものである。以下の説明において、ストレージデバイスはSSDを意味する。3つのトラフィックストリームがある。
1)ホストからストレージデバイスに。ホストからストレージデバイスへの通信は、FPGA具現に応じてFPGAを介してストレージデバイスのEPに配信される全てのトラフィックをアップストリームポート(USP)又はエンドポイント(EP)からダウンストリームポート(DSP)に、又はルートポート又はルート複合ポート(RP)に単純に伝送することにより、FPGAによって管理される。FPGAは、ホストとストレージデバイスとの間のNVMe通信を支援するために、ストレージデバイスによってホストにさらされる物理関数を含む。
2)FPGAに対するアクセラレーションコマンドの通信。本発明のいくつかの実施例で、アクセラレーションコマンドは、次の方式で処理される。即ち、アクセラレーションサービスマネージャー(ASM)がホスト上で実行される。ASMは、ストレージデバイス(APM-Sとして識別される)とFPGA(APM-Fとして識別される)の両方の一部としての構成を含むAPM(Acceleration Platform Manager)と通信する。ホスト上のASMは、アクセラレーションコマンド及び関連情報をSSDに伝送するためにNVMeプロトコルを使用する。その次にSSDは、FPGAに関連付けられたアクセラレーションオーケストレーター(orchestrator)のように動作する。APM-Sによって許容される全てのアクセラレーションコマンドは、専有のインターフェースを用いてAPM-Fに適切なコマンドを提供するために使用される。専有のインターフェースは、アドレス空間のウィンドウを使用して容易になる。このアドレス空間ウィンドウは、ストレージデバイスの要請に応じて、ホストメモリアドレスマップ内に割り当てられる(部分的には、ストレージデバイスとホストとの間のNVMeプロトコルを使用して通信を容易にするために)。適切なアドレス空間でアドレスを使用するコマンドは、ホストやストレージデバイスから別のモジュールに直接通信する代わりに、APM-Fによる処理のためにFPGAによってフィルタリングされる。フィルタリングは、コマンドに関連付けられたタグを使用するか、又はPCIeメッセージベースのフィルタリングを使用して遂行される。このフィルタリングは、FPGAをストレージデバイスに連結するDSP/RPに連結されたフィルタによって遂行される。
3)データのアクセラレーション及び処理のためのデータをフェッチ(fetch)するFPGAとSSDとの間の通信。本発明のいくつかの実施例で、アクセラレーションは次の方法で行われる。即ち、FPGAがアクセラレーション処理のためにデータのフェッチを要請するとき、FPGAは、上述した通り、ストレージデバイスとFPGAとの通信のために使用されるホストのメモリアドレスマップ内に割り当てられたアドレス空間を使用して要請を送る。
DSPフィルタ構造
この構造は、アクセラレーションされたデータを処理するために、FPGAと共有するホストとSSDとの間のPCIeバスによる方法を提供する。論理的に言うと、FPGAは、ホストとSSDコントローラとの間に動作可能に配置される。ホストはFPGAのアップストリームポート(USP)に連結され、SSDはFPGAのダウンストリームポート(DSP)に連結される。ホスト及び/又はSSDに連結するために使用されるPCIeバスは、x4、x8レーン(lanes)、又はその他の望みの幅である。FPGA USP及びDSPポートは、2方向の両方でPCIeトランザクション(即ち、トランザクション階層パケット(TLPs))を伝達する。PCIe TLPの例は、構成の読み取り、構成の書き込み、メモリの読み取り、及びメモリの書き込みである。従って、ホストは、SSDと直接通信する。FPGA上のDSPポートは、プログラムされたフィルタのアドレス範囲(FAR)をベースにしたSSDコントローラから来る全てのPCIeトランザクションをフィルタリングするロジックを有する。遮断されたSSDコントローラのPCIeトランザクションは、アクセラレーションプラットフォームマネージャー(Acceleration Platform Manager)-FPGA(APM-F)ブロックに伝達される。APM-Fモジュールは、SSDコントローラと通信する。APM-Fモジュールは、SSDコントローラからのアクセラレーションプラットフォームマネージャー-SSD(APM-S)ファームウェアからデータ及びアクセラレーションコマンドを受信する。その後にAPM-Fモジュールは、受信されたアクセラレーションコマンド及びデータをランタイム(RT)スケジューラに提供する。RTスケジューラは、データ処理を遂行するために、適切なアクセラレーションエンジンを順番にプログラムする。
FPGAの使用は、1つの可能な具現を示すが、FPGA以外の具現が使用される。FPGAは、ストレージデバイス内に具現される。FPGAは、ホストメモリにデータをフェッチした後、ホストでデータを処理するのではなく、ストレージデバイスに近く遂行されるアクセラレーションされたデータの処理を支援する。データをフェッチする代わりに、ストレージデバイス/FPGAは、クエリを受信して処理を局部的に行う。
SSDコントローラは、PCIeの伝送を使用してNVMeプロトコル処理ロジックを具現する。PCIe構成の一部として、SSDコントローラは、それ自体の用途のため、ホストシステムアドレスマップのブロックを要請する。SSDコントローラは、NVMeプロトコルを支援するために、一般的に必要なものよりも大きなブロックを要請する。ストレージデバイスとFPGAとの間の通信を管理するために追加の空間の一部又は全部が使用される。例として、NVMeプロトコルは64KBのアドレス空間が必要になる。提案された構造で、SSDコントローラは、10MBアドレスブロックを要請する。SSDコントローラは、ホスト透過なある方法でFPGAと通信するために割り当てられたアドレスマップの一部を使用する。SSD-FPGA通信のための予約のシステムアドレスマップのサブセットをフィルタアドレス範囲(FAR)と称する。その後にSSDコントローラは、FPGA DSPでFARウィンドウをプログラムする。SSDコントローラは、FPGAのFARウィンドウをプログラミングするために、I2CバスやSMバスのようなサイドバンドバスを使用する。SSDコントローラは、FPGAのFARウィンドウをプログラミングするためにPCIe VDM(Vendor Defined Messages)を使用することもできる。
ホストインターフェースロジック(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との間の通信のために、多様な方法を使用することができる。
提案された構造及びメカニズムは、FPGAベースのアクセラレーションを可能にするために、SSDコントローラがホストPCIeバスの共有を可能にする。本発明の実施例は、SSDでFPGAを使用するアプリケーションのアクセラレーション化のための低コスト及び低消費電力の解決策を提供する。
DSP+USPフィルタ構造
この構造で、FPGAは間接的な方式でホストに可視化される。FPGAとSSDとの間の通信は、提案されたソリューション1と同じように維持される。SSDコントローラは、ホストから大きなシステムのアドレス空間が要請される。SSDコントローラは、割り当てられたアドレスブロックを3つのウィンドウに分割する。一番目のウィンドウは、NVMe Controllerレジスタのアドレス空間のために使用される。二番目のウィンドウは、上述したように、FPGAとSSDとの間の通信のために使用される。三番目のウィンドウは、ホストとFPGAとの間の通信のためのものである。ホストは、特定のNVMeレジスタからFPGAデバイスの位置を発見する。SSDコントローラは、FPGAデバイスの位置を知るために、ホストアプリケーションによって読み出される特定のレジスタの三番目のウィンドウを公表する。SSDコントローラは、USPがこのようなトランザクションをフィルタリングすることができるように同じアドレスウィンドウでUSPをプログラミングすることもできる。USPは、三番目のウィンドウのアドレス空間に属するホストの全てのトランザクションをフィルタリングしてFPGAアクセラレーションロジックに伝達する。このメカニズムは、アクセラレーションコマンド及びデータをFPGAに通信するためにホスト上のアクセラレーションサービスマネージャー(ASM)によって使用される。
従って、本発明のいくつかの実施例で、フィルタリングは、また、ホストからFPGAによって受信されたトラフィックに基づいて遂行される。即ち、ホストはアクセラレーションコマンド/データをFPGAに送ることもできる。FPGAのDSP又はFPGAのRPに連結されたものと類似したフィルタが、FPGAのUSP又はFPGAのEPにも連結される。ホストは、ストレージデバイスによって要請されたアドレス空間のアドレスを使用する。ホスト-FPGA通信のためにホストによって使用されたアドレスは、ホスト(言い替えると、要請されたアドレス空間は、NVMe通信に必要な空間よりも大きい可能性がある)又はホストのメモリアドレスマップ内の別のアドレス空間の一部(仮想関数又は二番目の物理関数のいずれか1つ又は両方に対して、2つの中の1つはストレージデバイスによってホストにさらされる)とのNVMe通信のためにストレージデバイスによって要請されたアドレス空間の一部である。USP又はEP及びDSP又はRPにおいて、フィルタリングは、ホストメモリアドレスマップ内の別のアドレス範囲を使用して遂行されるため、ホストが必要に応じてストレージデバイス又はFPGAにコマンドを送ることに留意する(ストレージデバイスがFPGAと通信するように許諾する間にも必要である)。
アドレス空間の一部が、ホストとFPGAとの間の通信を支援する本発明のいくつかの実施例で、FPGAは、ホストに直接見えない可能性がある。この場合、ホスト上のASMは、ホスト-FPGAの通信に使用されるアドレスの範囲を識別するためのNVMeアドレス空間の特定のレジスタに記録されたアドレスにアクセスすることにより、FPGAを「発見」することができる。ASMは、PCIeデバイステーブルを介してストレージデバイスを検索することで、NVMeアドレス空間のどのレジスタがホスト-FPGA通信アドレス空間に対するポインタを格納するかがわかる。
VF+DSPフィルタ構造
このFPGA+SSDの構造で、SSDは一つの物理関数(PF)と1つの仮想関数(VF)をホストに露出させる。SSDコントローラは、PFを介してさらされる。VFは、FPGAを露出させるために使用される。PFクラスコードは大容量ストレージデバイスを示す一方、VFクラスコードはFPGAを識別するために設定される。SSDコントローラのPFは大規模システムメモリのアドレスブロックを要請してFPGAのアドレス指定ブロックのサブセットがFPGA DSPを通してFPGAとSSDとのの間の通信に使用され、SSDコントローラVFはFPGA USPを介してFPGAとホストとの間の通信のためにそれ自体のメモリアドレスブロックを要請する。
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ウィンドウをプログラムする。
このFARアドレスウィンドウは、ホスト上で実行中のASMソフトウェアがAPM-Fとの通信を可能にする。即ち、FPGAはホストから直接見ることができる。ASMソフトウェアは、アクセラレーションオーケストレーションコマンド及びデータをFPGAに送るためにPCIeアドレス範囲を使用する。その後、APM-Fは、受信されたアクセラレーションコマンド及びデータをランタイム(RT)スケジューラに提供する。RTスケジューラは、データ処理を遂行するために適切なアクセラレーションエンジンを順番にプログラミングする。なお、APM-Fは、ホストメモリ又はSSDストレージからデータをフェッチする。
PF+DSPフィルタ構造
このFPGA+SSDの構造は、VFを使用する代わりに第2 PFを使用してFPGAをホストに露出させることを除いて、提案されたソリューション3と類似する。SSDコントローラは、2つの物理関数をホストに露出させる。第1 PFはSSDコントローラのために使用され、第2 PFはFPGAのために使用される。第2 PFの基本アドレスは、FPGAのFAR-USPでプログラミングされる。従って、USPは、第2PFに対しプログラムされたアドレス範囲(FAR-USP)にあるホストから来る全てのトランザクションをフィルタリングしてそれらをFPGAに伝達する。このメカニズムは、FPGAと通信するためにホスト上で実行中のASMにより使用される。
仮想関数又は(第2)物理関数をホストに露出させることにより、ホスト-FPGA通信のためのアドレス空間がホスト(ストレージデバイスによって又はFPGAによって)から要求される。仮想関数又は第2の物理的関数が露出された場合、USP/EPのフィルタは、ホスト-FIFI通信に割り当てられたアドレスの範囲に基づいて、又は露出された仮想関数や露出された第2の物理的関数(例えば、フィルタ番号又は他のタグによって)をフィルタリングする。(仮想関数は、オペレーティングシステムの支援を要求する。そして第2の実際の関数が具現されるか又は支援される場合、第2の物理的関数を露出することは、仮想関数の使用に対する代替の解決策を提案する。)
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をホストに露出させることに注目する)。SSD EPは、FPGA上のRPに連結される。第1FPGA EP PFは、ホストをSSDに直接連結するために使用される反面、第2FPGA EP PFは、ホストをFPGAに連結するために使用される。このメカニズムは、FPGAと通信するためにホストで実行中のASMにより使用される。SSD-FPGA通信はFPGA RPとSSD EPとの間でアドレス空間マップの一部を使用する。本発明のいくつかの実施例で、FPGAの第1 PFは、大規模なアドレス空間を要求し、BIOSで割り当てられたアドレスウィンドウは、SSDコントローラ(EP)にマッピング又は変換される。このアドレス空間の一部は、ローカルFPGA-SSD通信のために使用される。本発明の他の実施例で、第2FPGA EPのために割り当てられたアドレス空間の部分は、FPGAとSSDコントローラとの間の通信のために使用される。
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を使用する。
FPGA-SSD通信(アクセラレーション処理用)のために、SSDの第2PCIe EPが使用される。従って、FPGAはSSDに連結された二つのRPを有する。SSDの第1 EPポートは、一般的なホストストレージアクセスのためにホストとの通信に使用される。SSDの第2 EPは処理のためにFPGAに必要な全てのデータを伝送するために使用される。
言及したように、ストレージデバイスが2つの(又は潜在的により多くの)のポートを支援する本発明の実施例で、FPGAは、ストレージデバイス上の2つのEPと通信するために2つのRPを支援する。このような本発明の実施例で、FPGA上の一つのRP(及びそれに対応するストレージデバイス上のEP)はストレージデバイスとホストとの間の通信を管理するために使用され、FPGA上の他のRP(及びそれに対応するストレージデバイス上のEP)はストレージデバイスとFPGAとの間の通信を管理するために使用される(アクセラレーションコマンド又はデータのための)。本発明のこのような実施例で、FPGA上のRPは、2つのアドレスマップ(各RP毎に1つずつ)を支援する。従って、ホストとストレージデバイスとの間の通信を支援するRPのためのアドレスマップは、NVMeコマンドのために割り当てられた空間を含み、他のアドレスマップ(アクセラレーションコマンド/データの通信を管理するRPのための)は、全体的に通信のために作られる。本発明のこのような実施例で、ホストメモリアドレスマップは、ホストがアクセラレーションコマンドをストレージデバイスに通信するように意図された任意のアドレス空間を省略することができるが、これは、このような全てのコマンドがホストからFPGAに伝達されるためである(アドレス空間を介してFPGAの要請が、このような通信のためのホストのメモリアドレスマップ内に割り当てられる)。その後に、FPGAは、コマンドを処理し、FPGAとストレージデバイスとの間の通信専用に指定された第2のRPのメモリアドレスマップを使用して、必要に応じてコマンド/データをストレージデバイスに伝達する。
EP/RPがFPGAでUSP/DSPの代わりに使用される場合、EP/RPはPCIe構成空間を支援し、FPGAはその物理関数をホストに直接露出させる(このような機能をストレージデバイスに残すよりも)。FPGAによって露出された一つの物理関数は、ホストからストレージデバイスへの通信を指示するために使用される。他の物理関数は、ホストとFPGAとの間の通信に使用される。本発明のこのような実施例で、ストレージデバイスがこのような要求を発生させるよりも、FPGAはホストから割り当てられるアドレス空間を要求する。
EP/RPは、それら自体のメモリマップを支援することもできる。従って、FPGAはホストのメモリアドレスマップを使用してホストと通信し、FPGAはストレージデバイスと通信するために使用されるそれ自体のメモリアドレスマップを支援する。本発明のこのような実施例で、FPGAは、ホストからストレージデバイスへの通信を支援するために、ホストのメモリアドレスマップに割り当てられた空間を要請し(FPGAを介して発生するそのような通信により)、追加の空間は、ホストからFPGAへの通信をサポートするために、ホストのメモリアドレスマップに割り当てられる。FPGAのメモリアドレスマップは、ホストからストレージデバイスへコマンドを通信してFPGAとストレージデバイスとの間でアクセラレーションコマンド/データを通信するためのそれ自体の空間の割り当てを含む。FPGAは、ホストとストレージデバイスとの間の通信のために使用されるアドレス空間を、FPGAとストレージデバイス(同一サイズであるべき)との間の通信のために使用されるアドレス空間に変換する。
FPGAが、EP/RPを含む場合、ホストは、FPGAを直接見る。これは、PCIe機能がFPGAによって露出される問題を提起する。FPGAは、ストレージデバイスと同じPCIe機能を露出させなければならない。従って、FPGAは、ストレージデバイスのSSDコントローラのEPのPCIe構成をマッチングするためにFPGAのEPのPCIe構成を設定するPCIe構成モニターを含む。なお、ホストがFPGAのEPのPCIe構成を変更する場合、ストレージデバイスのEPのPCIe構成は、同様に修正される。
本発明の実施例は、全体の機能が維持されるならば、FPGA内で記述されたような構成/機能を多数の個別エレメントに分割することを支援する。FPGA構成は、ハードウェア、ソフトウェア/ファームウェア、又はこの2つの組み合わせを使用して具現される。
図1は、本発明の一実施例によるストレージデバイス上のアクセラレーション動作を支援する機械(又はマシン)105を示す図である。機械105は、プロセッサ110を含む。プロセッサ110は、任意の多様なプロセッサである。即ち、例として、Intel Xeon(登録商標)、Celeron(登録商標)、Itanium(登録商標)、Atom(登録商標)プロセッサ、AMD Opteron(登録商標)プロセッサ、ARMプロセッサなどである。図1は、機械105内のシングルプロセッサ110を示し、機械105は、それぞれシングルコア又はマルチコアプロセッサである任意の数のプロセッサを含み、任意の所望の組み合わせで混合される。プロセッサ110は、ストレージデバイス120へのアクセスを支援するデバイスドライバ115を実行し、異なるデバイスドライバは、デバイスの他の構成に対するアクセスを支援する。本明細書の全般に亘り、ストレージデバイス120は、SSD(Solid State Drive)のストレージデバイス120として説明するが、ストレージデバイス120は、以下の本発明の実施例で説明するアクセラレーション化されたコマンドを支援する任意の他のタイプのストレージデバイスであり得る。プロセッサ110は、またアクセラレーションコマンドを含む任意のアプリケーションであるアプリケーション125及びストレージデバイス120に格納されたデータ上で遂行されるアクセラレーションコマンドを伝送するために使用されるアプリケーションサービスマネージャ(ASM)130を実行する。
機械105は、またメインメモリ140へのアクセスを管理するために使用されるメモリコントローラ135を含む。メモリ140は、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、永久ランダムアクセスメモリ、強誘電体ランダムアクセスメモリ(FeRAM)、磁気ランダムアクセスメモリ(MRAM)などのような不揮発性ランダムアクセスメモリ(NVRAM)のような任意の他のタイプのメモリであり得る。
機械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)能力、又は他の構成として具現されるか又は使用される。
なお、図1は、機械105をサーバ(スタンドアロン又はラックサーバである)のように図示するが、本発明の実施例は、任意の所望のタイプの機械105を制限なしに含む。例として、機械105は、デスクトップ、ラップトップコンピュータ、又は本発明の実施例から利益を得る任意の他の機械に代替される。機械105は、また特殊化されたポータブルコンピューティングマシン、タブレットコンピュータ、スマートフォン、及び他のコンピューティングマシン(machine:機械)を含む。なお、図1は、ストレージデバイス120、アプリケーション125、及びASM130を含む機械105を図示するが、本発明の実施例は、別のマシンで、それらの構成を有することができる。例として、ストレージデバイス120は、1つ以上のネットワーク(有線、無線、グローバルなど)を通過するネットワーク連結を介して機械150(及びアプリケーション125及びASM130)に連結されたサーバにインストールされる。
図1に示した構成の特定の方式に拘らず、「ホスト」、「ホストマシン」、又は「ホストプロセッサ」という用語は、機械105を記述するために使用される。これは、プロセッサ110を独創的な概念の他の構成と区別する。
図1の構成の中で、本発明の実施例に関心のある3つのトラフィックストリームが存在する(本発明の実施例とは関係のない他のトラフィックストリームが有る)。
1)ホストからストレージデバイス120まで。ホスト(プロセッサ110)がストレージデバイス120に通信を送る。本発明の実施例で、このような全てのトラフィックは、アクセラレーションモジュール145を通過し、アクセラレーションモジュール145によってストレージデバイス120に到達することから遮断されてはならない。このようなトラフィックの実施例は、ストレージデバイス120からデータを読み出すための、及び/又はストレージデバイス120にデータを記録するためのコマンドを含む。即ち、ストレージデバイス120によって提供される他のコマンドもこのようなトラフィックに含まれる。
2)ASM130からアクセラレーションモジュール145まで。ASM130は、特定のアクセラレーションコマンドが遂行されるように要請する。いずれにせよ、本発明の特定の実施例に拘わらず、アクセラレーションモジュール145は、ASM130からアクセラレーションコマンドを受信しなければならない。
3)アクセラレーションモジュール145からストレージデバイス130まで。アクセラレーションコマンドを遂行するために、アクセラレーションモジュール145は、ストレージデバイス130からデータをフェッチ又は受信する必要が有る。
図2は、図1の機械の追加的な細部構成を示す図である。図2で、典型的に、機械105は、デバイス105の構成要素の動作を調整するために使用されるメモリコントローラ135及びクロック205を含む1つ以上のプロセッサ110を含む。なお、プロセッサ110は、例としてランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、又は媒体を保存する他の状態を含むメモリ140に連結される。プロセッサ110は、またストレージデバイス120、及び例としてイーサネット(登録商標)コネクタ又は無線コネクタであるネットワークコネクタ210に連結される。プロセッサ110は、またバス215に連結され、これには他の構成要素の中のユーザーインターフェース220及び入力/出力エンジン225を使用して管理される入力/出力インターフェースポートが取り付けられる。
第1実施例
図3は、本発明の第1実施例による図1のアクセラレーションモジュール(FPGA)145及び図1のストレージデバイス(SSD)120の構成を示す図である。図3において、プロセッサ110、FPGA145、及びSSD120は、通信することを示す。図3において、プロセッサ110、FPGA145、及びSSD120は、PCIe(Peripheral Component Interconnect Express)バスを介して通信する。PCIeバスは、任意の数のレーンが使用される。即ち、典型的な例は、x4及びx8であるが、本発明の実施例は、任意の他の所望の数のレーンを使用する。この通信は、不揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)であるPCIeトランザクションを含むが、本発明の実施例は、他のエンコーディングを使用する通信又は他のプロトコルのコマンドを含むために拡張される。
SSD120は、エンドポイント(EP)305、ホストインターフェース階層(HIL)310、SSDアクセラレーションプラットフォームマネージャー(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-S315は、ファームウェア単独、又はハードウェアとファームウェアとの組み合わせを使用して具現される。そうでない場合、HIL310はFTL320にPCIeトランザクション(又は圧縮解除されたNVMeコマンド)を配信し、FTLは、図1のアプリケーション125によって使用される論理ブロックアドレス(LBA)を物理ブロックアドレス(PBA)に変換してフラッシュメディア325に格納されたデータにアクセスする。
APM-S315が処理する基本的に2つのタイプのアクセラレーションコマンドがある。アクセラレーションコマンドの第1タイプは、プロセッサ110からの特定のコマンドである。本発明の第1実施例で、FPGA145は、プロセッサ110に見えない可能性がある。即ち、プロセッサ110は、全てのその通信をSSD120に伝送する。プロセッサ110がアプリケーションデータ上で遂行されるアクセラレーションコマンドを所望する場合、プロセッサ110は、特定のコマンドをSSD120に伝達する。プロセッサ110は、SSD120に特定のコマンド/アクセラレーションコマンドをトンネリングするためにNVMeコマンドを使用する。HIL310は、APM-S315に配信される特定のコマンドをインターセプトする。その後に、APM-S315は、アクセラレーションコマンドを遂行するためにFPGA145に再び伝送される特定のコマンドに応答してアクセラレーションコマンドを生成する。この特定のコマンドは、例として、実行されるアクセラレーションコマンドの特定のタイプ及びアクセラレーションコマンドのオペレーションが遂行されるデータをエンコーディングする。
APM-S315が処理するアクセラレーションコマンドの第2のタイプは、データを含む。例として、FPGA145は、フラッシュメディア325に直接アクセスしない可能性があり、従って、アクセラレーションコマンドが遂行されるデータを受信せずにアクセラレーションコマンドを遂行することができない。従って、APM-S315は、FPGA145から問題のデータを要請するアクセラレーションコマンドを受信する。その後、APM-S315は、FPGA145がアクセラレーションコマンドを遂行するために要求されたデータにアクセスし、それをFPGA145に返す。
図3において、SSD120は、SSDで使用するのに適したFTL320及びフラッシュメディア325を含むものとして示される。SSD120は、代替ストレージデバイスに置き換えられ、これらの構成要素は、ストレージデバイスのタイプに適した代替の構成要素に置き換えられる。例として、SSD120は、ハードディスクドライブに置き換えられ、フラッシュメディア325は、ハードディスクプラッタに置き換えられる。データアクセスを支援するために追加の構成要素が更に含まれる。即ち、ハードディスクドライブのストレージデバイスの例を続けると、ストレージデバイスは、更に適切な読み取り/書き込みヘッドを含む。
FPGA145がプロセッサ110とSSD120との間の通信をインターセプトする前に、SSD120は、プロセッサ110からホストメモリアドレスのブロックを要求する。ホストメモリシステムアドレスのブロックに対するこのような要求は、PCIeトランザクションを使用するときに一般的であり、スタートアップのとき又は後に遂行される。それに応答して、プロセッサ110(又は図1の機械105の基本的な入力/出力システム(BIOS))は、SSD120による使用のためにホストメモリシステムアドレスのブロックを割り当てる。その後、ホストマシンは、このホストメモリシステムアドレスのブロックが、図1の機械105で他のデバイスによって利用できないことを知る。
図4は、本発明の第1実施例による図1のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。図4で、SSD120は、ホストメモリシステムアドレスのブロックを要請する。プロセッサ110とSSD120との間のNVMe通信を支援するために必要なメモリの量は比較的少ないが、例として64KB-SSD120は、はるかに大きいブロック、例として10MB以上を要求する。それに応答して、プロセッサ110は、ホストメモリシステムのアドレスブロック405を返す。ブロック405の一端は、BAR(Base Address Register)に格納され、SSD120がBAR(そして要請されたブロックのサイズのSSD120の情報(knowledge)と共に)に基づいて、ブロック405を判断する。
一旦SSD120が、どのようなアドレスがブロック405に在るかを知ると、SSD120は、ブロック405をそれ自身の使用のために異なる領域に分ける。ブロック405の1つのサブセット410は、NVMe通信のために使用される。他のサブセット415は、使用されないまま残される。ダウンストリームFAR(Filter Address Range)420(任意のフィルタリングがプロセッサ110からのダウンストリームで行われるため、「ダウンストリーム」)と称される第3サブセットは、SSD120とFPGA145との間の通信のための専用に使用される。ダウンストリームFAR420は、SSD120及びFPGA145の両方で使用されることに注目する。SSD120及びFPGA145のいずれか1つは、問題のPCIeトランザクションがアクセラレーションコマンドを含むことを示すダウンストリームFAR420内のアドレスを使用する。
図3に戻って、SSD120がダウンストリームFAR420内のアドレスを使用して通信を伝送すると、FPGA145は、ダウンストリームポート335で通信を受信して通信をインターセプトし、その通信をプロセッサ110に伝達するのではなく局部的に処理する。ダウンストリームFAR420を含まないSSD120からのダウンストリームポート335でFPGA145によってプロセッサ110に受信される任意の通信は、アップストリームポート330を介してFPGA145によりプロセッサ110に配信される(FPGA145がアップストリームポート330でプロセッサ110から受信する任意の通信は、ダウンストリームポート335を介して自動的にSSD120に配信される)。
FPGA145は、プロセッサ110とSSD120との間の通信をインターセプトすることができるように、プロセッサ110とSSD120との間に位置する。このような通信をインターセプトすることにより、FPGA145は、SSD120によって要請されたアクセラレーションコマンドを遂行する。
アクセラレーションコマンドを遂行するために、FPGA145は、アップストリームポート330、ダウンストリームポート335、FPGAアクセラレーションプラットフォームマネージャー(APM-F)340、スケジューラ345、及びアクセラレーションエンジン(350-1及び350-2)を含む。アップストリームポート330は、プロセッサ110と通信するために使用される。ダウンストリームポート335は、SSD120と通信するために使用される。APM-F340は、FPGA145がインターセプトした任意のアクセラレーションコマンドを受信することに対する責任がある。このようなアクセラレーションコマンドは、メッセージメールボックス355を使用してダウンストリームポート335からメッセージのように受信されるが、本発明の実施例は、APM-Fがアクセラレーションコマンドを受信するための他のメカニズムに拡張され得る。一度アクセラレーションコマンドが受信されると、APM-F340は、アクセラレーションコマンドを処理する。例として、FPGA145がアクセラレーションコマンドを遂行する十分な情報を有する場合、APM-F340は、アクセラレーションコマンドをアクセラレーションエンジン(350-1及び350-2)のような任意の利用可能なアクセラレーションエンジンでスケジューリングするスケジューラ345(「ランタイムスケジューラ」と称される)にアクセラレーションコマンドを通過させる。一方、図3は、2つのアクセラレーションエンジン(350-1、350-2)を図示するが、本発明の実施例は、任意の所望の数のアクセラレーションエンジンを含むことができる。即ち、図3に示した二つは単に例示的な目的のためのものである。代案的に、FPGA145がアクセラレーションコマンドを遂行するための追加情報を必要とする場合、即ち、例として、FPGA145はアクセラレーションコマンドが遂行されるデータを必要とし、APM-F340は、PCIeトランザクションを、必要なデータを要請するSSD120に送るというような他の動作をとる。
特定のPCIeトランザクションが、アクセラレーションコマンドを含むか否かを判断するために、FPGA145は、ダウンストリームポート335に関連付けられたダウンストリームフィルタ360を含む。ダウンストリームフィルタ360は、アクセラレーションコマンドを含むSSD120から発行されたPCIeトランザクションを識別する。これは所望の方式で遂行される。本発明のいくつかの実施例で、SSD120は、図4のダウンストリームFAR420でダウンストリームフィルタ360をプログラミングする。その後、ダウンストリームフィルタ360が、図4のダウンストリームFAR420内のアドレスを使用するPCIeトランザクションを識別すると、FPGA145は、PCIeトランザクションを、アクセラレーションコマンドを含むものとして識別し、PCIeトランザクションをインターセプトする。SSD120は、任意の所望の方式でダウンストリームフィルタ360をプログラミングする。例として、SSD120は、ダウンストリームフィルタ360をプログラミングするために、内部の集積回路バス(I2Cバス)又はシステム管理バス(SMバス)のようなサイドバンドバス365を使用する。また、SSD120は、ダウンストリームフィルタ360をプログラミングするために、PCIe VDM(Vendor Defined Message)を使用する。SSD120は、またダウンストリームフィルタ360をプログラミングするために他のメカニズムを使用することができる。
図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から除去される。
上述した本発明の第1実施例は、プロセッサ/FPGA/SSDの具現の可能な組み合わせを示す。以下で、本発明の他の実施例として説明する他の具現もまた可能である。特定の構成の動作(例として、APM-F340、スケジューラ345、及びアクセラレーションエンジン(350-1及び350-2)の動作)の間に差異がない場合、それらの動作の繰り返しの説明は、後続の本発明の実施例で省略される。
第2実施例
図5は、本発明の第2実施例による図1のアクセラレーションモジュール(FPGA)145及び図1のストレージデバイス(SSD)120の構成を示す図である。本発明の第2実施例は、アップストリームポート330がフィルタも含むことを除いては、本発明の第1実施例と類似する。即ち、アップストリームフィルタ505である。アップストリームフィルタ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-F340にルーティングする。
図6は、本発明の第2実施例による図1のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。本発明の第1実施例のように、SSD120は、SSD120がNVMeコマンドを支援するために必要なアドレスの範囲よりも大きいホストシステムメモリアドレスのブロックを要請し、そのBARに応答してブロック405を受信する。その後、SSD120は、NVMe通信のためにブロック405の1つのサブセット410を維持し、他のサブセット415は未使用にされ、第3サブセットはダウンストリームFAR420として別に設定され、第4サブセットはアップストリームFAR605として別に設定される。
図5に戻ると、本発明の第2実施例で、プロセッサ110は、FPGA145が発見可能なデバイスではないため、依然としてFPGA145を直接「見(see)」ない。しかし、SSD120は、アップストリームFAR605のベースアドレスをNVMe通信のためのサブセット410内の特定のレジスタにプログラミングすることにより、アップストリームFAR605をプロセッサ110に知らせることができる。NVMe通信のためのサブセット410から、この特定のレジスタを読み出すと、プロセッサ110は、アップストリームFAR605を認識する。その後、プロセッサ110は、SSD120のAPM-S315に特定のコマンドを伝送する代わりにアクセラレーションコマンドをFPGA145に伝送する(アップストリームポート330を介して)。
図5において、図3のように、FPGA(145)は、プロセッサ110とSSD120との通信を可能にする部分を含むものとして示される。即ち、具体的に、アップストリームポート330、アップストリームフィルタ505、ダウンストリームポート335、及びダウンストリームフィルタ360である。図3に示した本発明の実施例と同様に、PCIeトランザクションのフィルタリングに関連付けられた構成要素は、FPGA145から除去される。従って、本発明の第2実施例で、アップストリームポート330及びアップストリームフィルタ335は、第1ブリッジ構成要素及びダウンストリームポート335に配置され、ダウンストリームポート335及びダウンストリームフィルタ360は、第2ブリッジ構成要素に配置され、それぞれが図5の異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する。また、PCIeトランザクションのソースに関係なく、このようなブリッジ構成要素の中の単に一つのみが使用されるか(他のソース(source)からの通信のために、それ自体のフィルタリングを処理するFPGA145と共に)、又はシングルブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用される。
第3実施例
図7は、本発明の第3実施例による図1のアクセラレーションモジュール(FPGA)145及び図1のストレージデバイス(SSD)120の構成を示す図である。本発明の第3の実施例で、SSD120は、物理機能(PF)705及び仮想機能(VF)710を含む(本発明の第3実施例は、本発明の他の実施例がPF及び/又はVFを含まないことを意味するのではなく、単に本発明の第3実施例と同じ方式で使用されないことを意味する)。PF705は、SSD120によって提供される機能のようなシングルリソースを示す。VF710は、PFに関連付けられるが、「仮想化」された機能を示す。即ち、与えられたPFに対して1つ以上のVFが有る。しかし、SSD120の仮想機能を表現する代わりに、VF710は、FPGA145を「露出」する。即ち、VF710は、FPGA145の機能を示す。(VF710は、依然としてFPGA145の一部ではなく、SSD120の一部である。しかし、FPGA145を露出させるための専用VF710を使用すると、VF710に関連付けられた任意のメモリアドレスは、他のデバイスと衝突しない。)PCIeデバイスが列挙されている場合、PF及びVFがプロセッサ110によって発見されるため、プロセッサ110は、それ自身を直接発見することができなくても、VF710を介してFPGA145を間接的に発見することができる。
図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を有する。
図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-F340にルーティングする。
代案として、SSD120は、VF710の識別子でVFフィルタ715をプログラムする。VFフィルタ715は、アップストリームポート330でプロセッサ110から受信されたPCIeトランザクションを検査し、それがVF710の識別子を含むか否かを知る。PCIeトランザクションがVF710の識別子を含む場合、FPGA145は、PCIeトランザクションをSSD120に配信するのではなく、プロセッサのためのPCIeトランザクションをAPM-F340にルーティングする。
図7において、本発明の上記実施例のように、FPGA145は、プロセッサ110とSSD120との通信を可能にする部分を含むものとして示される。即ち、具体的に、アップストリームポート330、VFフィルタ715、ダウンストリームポート335、及びダウンストリームフィルタ360である。上述した本発明の実施例のように、PCIeトランザクションのフィルタリングに関連付けられた構成要素は、FPGA145から除去される。従って、本発明の第3実施例で、アップストリームポート330及びVFフィルタ715は第1ブリッジ構成要素に配置され、ダウンストリームポート335及びダウンストリームフィルタ360は、それぞれが図7の異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置される。代替的に、PCIeトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるか(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145と共に)、又はシングルブリッジ構成要素がFPGA145に対する全てのフィルタを処理するために使用される。
第4実施例
FPGA145を露出させるためにVF710を使用する問題の1つは、VFを使用することがプロセッサ110のホストの動作システムからの支援を要求するというものである。一部のオペレーティングシステムは、VFをサポートするが、全てのオペレーティングシステムがVFを支援するわけではなく、VFを支援するのは、オペレーティングシステムに対してそれ自体の複雑さを伴う。本発明の第4実施例はVFを使用する問題点を解決する。
図9は、本発明の第4実施例による図1のアクセラレーションモジュール(FPGA)145及び図1のストレージデバイス(SSD)120の構成を示す図である。本発明の第3実施例とは対照的に、本発明の第4実施例で、SSD120は、2つのPF(705、905)を含む。(本発明の第3実施例のように、本発明の第4実施例は、本発明の他の実施例がPF及び/又はVFを含まないことを意味しない。)PF705は、SSD120によって提供される機能のようなシングルリソースを示し続ける。一方、PF905は、FPGA145を露出させる。即ち、PCIeデバイスが列挙されるときにPFがプロセッサ110によって発見されるため、プロセッサ110は、それ自身を直接発見することができなくても、PF905を介してFPGA145を間接的に発見することができる。
図10は、本発明の第4実施例による図1のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。本発明の第3実施例のように、SSD120は、ホストシステムのメモリアドレスの二つの異なるブロックを要求する。即ち、PF705に対するブロック1005及びPF905に対するブロック1010である。ダウンストリームFAR420は、PF705に対するブロック1005のサブセットとして選択される。そしてアップストリームFAR605は、PF905に対するブロック1010の全体である。(即ち、アップストリームFAR605は、ブロック1010のサブセットとして選択される。しかし、ブロック1010はPF905による使用のために専用されて、PF905はFPGA145を効果的に露出させること以外の他の目的を有さないため、アップストリームFAR605の一部として使用されないブロック1010の任意のメモリアドレスは無駄になる。)SSD120が、各ブロックに対して割り当てられたアドレスの範囲を知るようにする間、ブロック(1005及び1010)のそれぞれは、個々のBARを有する。
図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-F340にルーティングする。
代案として、SSD120は、PF905の識別子でPFフィルタ715をプログラムする。PFフィルタ715は、アップストリームポート330でプロセッサ110から受信されたPCIeトランザクションを検査し、それがPF905の識別子を含むか否かを知る。PCIeトランザクションがPF905の識別子を含む場合、FPGA145は、PCIeトランザクションをSSD120に配信するのではなく、プロセッサのためのPCIeトランザクションをAPM-F340にルーティングする。
図9において、本発明の上記実施例のように、FPGA145は、プロセッサ110とSSD120との通信を可能にする部分を含むものとして示される。即ち、具体的に、アップストリームポート330、PFフィルタ715、ダウンストリームポート335、及びダウンストリームフィルタ360である。上述した本発明の実施例のように、PCIeトランザクションのフィルタリングに関連付けられた構成要素は、FPGA145から除去される。従って、本発明の第4実施例で、アップストリームポート330及びPFフィルタ715は第1ブリッジ構成要素に配置され、ダウンストリームポート335及びダウンストリームフィルタ360は、それぞれが図9の異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置される。代替的に、PCIeトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるか(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145と共に)、又はシングルブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用される。
第5実施例
本発明の第4実施例は、本発明の第3実施例のようにVFを使用することの難しさを扱う。しかし、本発明の第4実施例を使用するために、SSD120は、FPGA145の使用のために専用されるPF905を提供する必要がある。全てのSSD(又は、より一般的には、ストレージデバイス)がFPGA145の使用のために専用される利用可能なPFを有しない。本発明の第5実施例は、SSD120が多数のPFを提供する必要がない解決策を提供する。
図11は、本発明の第5実施例による図1のアクセラレーションモジュール(FPGA)145及び図1のストレージデバイス(SSD)120の構成を示す図である。図11において、SSD120は、PF及びVFを提供することが必要のない図3及び図5で示した構造に戻る。(即ち、SSD120は、PF及び/又はVFを提供しなくてもよく、SSD120は、追加のPF及び/又はVFを提供する必要がない。)
本発明の第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にそれらの通信を指示する。
エンドポイント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-F340にルーティングされる。
ルートポート1110は、ダウンストリームフィルタ360を含む。ダウンストリームフィルタ360は、図3、5、7、9、及び11のダウンストリームフィルタ360と同様に動作する。即ち、唯一の重要な違いは、ダウンストリームフィルタが、ホストシステムメモリアドレスに基づいてフィルタリングするのではなく、下記の図12を参照して説明するように、FPGAメモリアドレスに基づいてフィルタリングするものである。ダウンストリームフィルタ360は、サイドバンドバス365、PCIe VDM、又は任意の他の望みのメカニズムを使用してSSD120によってダウンストリームFAR410でプログラムされる。
FPGA145は、更に構成モニター1125を含む。FPGA145は、SSD120を代替するのではなく単に追加の機能を提供するため、そしてFPGA145がプロセッサ110とSSD120との間に挿入されるため、プロセッサ110がSSD120によって提供される機能を知ることは重要である。より具体的に、FPGA145は、SSD120のPCIe構成空間にマッチする性能を知らせなければならない。その目的を達成するために、それに応じてSSD120が提示するのと同じPCIe構成をプロセッサ110に提供し、そのために構成モニター1125はSSD120のPCIe構成空間を複製する。
図12は、本発明の第5実施例による図1のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図であり、FPGA145及びSSD120の構成を示す。図12において、SSD120は、これ以上プロセッサ110と直接通信しないため、SSD120は、ホストシステムのメモリアドレスのブロックを要求しない。代わりに、SSD120は、ルートポート1110のための構成空間を含むアドレスマップ1210からFPGAメモリアドレスのブロック1205を要請する。ブロック1205は、プロセッサ110とダウンストリームFAR420とのNVMe通信のためのサブセット410を含む。
FPGA145なしで予想されるように、SSD120と通信するプロセッサ110によってメカニズムを提供するため、FPGA145は、プロセッサ110からホストシステムのメモリアドレスを要請する。
FPGA145のSSD120によって要請された並列のブロック1205に対して、FPGA145は、PF1115のための少なくともブロック1205と同じ大きさのブロック1215を求める(従って、SSD120がプロセッサ110からブロック1215を要請したかのように見える)。ブロック1215でアドレスを使用するPCIeトランザクションは、ホストとSSD120との間の通信のためのものであるが、FPGA145を通過していることを反映するために、ブロック1215は、図12で「ホスト-FPGA-SSD」で示される。FPGA145は、アクセラレーションコマンドについてAPM-F340と通信するプロセッサ110のためのメカニズムを提供し、PF1120のためのブロック1220を要請する。ブロック(1215及び1220)は、それぞれ2つの分離されたBARにより識別される。本発明の他の実施例で、FPGA145とSSD120との間の通信を容易にするために、ダウンストリームFAR420のようにブロック1220の一部分を使用することが可能である。
図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に対する全てのフィルタリングを処理するために使用される。
第6実施例
本発明の第5実施例は、従来のPCIeトランザクション(プロセッサ110とSSD120との間の)からアクセラレーションコマンド(SSD120とFPGA145との間の)を分離するために、依然としてダウンストリームフィルタ360に依存する。ダウンストリームフィルタ360は、下記本発明の第6実施例のようにSSD120が第2エンドポイントを含む場合に除去される。
図13は、本発明の第6実施例による図1のアクセラレーションモジュール(FPGA)145及び図1のストレージデバイス(SSD)120の構成を示す図である。図13で、FPGAは、図11の実施例で示した1つのルートポート1110ではなく、2つのルートポート(1110及び305)を含む。ルートポート1110は、プロセッサ110から発生する従来のPCIeトランザクションに使用される。ルートポート1305は、SSD120とFPGA145との間で交換されるアクセラレーションコマンド及びデータのために使用される。
アクセラレーションコマンドは、異なるルートポート(1110及び1305)を使用するプロセッサ110から発生する従来のPCIeトランザクションから自然に分離されるため、図3、5、7、9、及び11のダウンストリームフィルタ360が必要ではない。この事実は、SSD120が、図5、7、及び9のアップストリームフィルター(505及び715)をプログラミングするための負担を軽減するように、SSD120がFPGA145でダウンストリームフィルタ360をプログラミングする負担を軽減するということを意味する(図11及び13でFPGA145は、従来のPCIeトランザクションに関連付けられたPFに基づいたアクセラレ-ションコマンドを区別する)。この利点に対する相殺は、SSD120が、それぞれFPGA145のルートポート(1110及び1305)と通信するために二つのエンドポイント(305及び1310)を含むことである。
SSD120は、本発明の第6実施例で、2つのエンドポイント(305及び1310)を含むため、エンドポイント(305及び1310)のそれぞれは、FPGA145から、それ自身のメモリアドレスブロックを要請する。更に、ルートポート(1110及び1305)のそれぞれがそれ自身の構成空間を含むため、SSD120のエンドポイント(305及び1310)は、異なる構成空間からメモリアドレスのブロックを要請する。図14は、このようなシナリオを示す。
図14は、本発明の第6実施例による図1のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。図14でSSD120のエンドポイント305は、ルートポート1110のための構成空間を含むアドレスマップ1210からブロック1405を要請する。しかし、従来のPCIeトランザクション(プロセッサ110とSSD120との間)とアクセラレーションコマンド(FPGA145とSSD120との間)とは、FPGA上の異なるルートポート及びSSD120上の異なるエンドポイントの使用により自然に分離されるため、SSD120は、ダウンストリームFARを含むのに十分な大きさのブロック1405を要請する必要がない。従って、ブロック1405は、FPGA145がない場合と同じ大きさであればよい。即ち、プロセッサ110とSSD120との間のNVMe通信を支援するのに十分な大きさであればよい。ブロック1405は、BARによって識別される。
SSD120のエンドポイント1310は、アドレスマップ1410から、それ自身のメモリアドレスブロックを要請する。しかし、ルートポート1305及びエンドポイント1310は、本発明の第6実施例で単にアクセラレーションコマンドを交換するために使用されるため、アドレスマップ1410の全体が、このようなPCIeトランザクションのために使用される。即ち、エンドポイント1310がアドレスマップ1410の小さいブロックを単に要請する必要はない。
本発明の第5実施例のように、PF1115は、プロセッサ110とSSD120との間で交換されるPCIeトランザクションを管理するために、ホストシステムのメモリアドレスのブロック1215を要請する。従って、ブロック1215は、少なくともブロック1405と同じ大きさである。同様に、PF1120は、プロセッサ110とFPGA145との間で交換されるアクセラレーションコマンドを管理するために、ホストシステムのメモリアドレスのブロック1220を要請する。ブロック(1215及び1220)は、それぞれBARによって識別される。
図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に対する全てのフィルタリングを処理するために使用される。
第7実施例
本発明の最初の第6実施例で、FPGA145は、シングルアップストリームポート330(図5、7、及び9)又はシングルエンドポイント1105(図11及び13で)を使用して示される。しかし、FPGA145が、本発明の第6実施例におけるSSD120のように、多数のエンドポイントを含まない理由はない。本発明の第7及び第8実施例は、FPGA145が多重のエンドポイントを使用してどのように動作するかを示す。
図15は、本発明の第7実施例による図1のアクセラレーションモジュール(FPGA)145及び図1のストレージデバイス(SSD)120の構成を示す図である。本発明の第7実施例は、FPGA145が2つのエンドポイント(1105及び1505)を含むことを除いては、本発明の第6実施例と類似する。
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-F340に伝達される。
図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によって識別される。
図15において、本発明の上記実施例のように、FPGA145は、プロセッサ110とSSD120との通信を可能にする部分を含むものとして示される。即ち、具体的に、エンドポイント(1105、1505)及びルートポート(1110及び1305)である。上述した本発明の実施例のように、PCIeトランザクションのフィルタリングに関連付けられた構成は、FPGA145から除去される。従って、本発明の第7実施例で、エンドポイント(1105、1505)は、第1ブリッジ構成要素に配置され、ルートポート(1110及び1305)は、それぞれが図15の異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置される。代替的に、PCIeトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるるか(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145と共に)、又はシングルブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用される。
第8実施例
図17は、本発明の第8実施例による図1のアクセラレーションモジュール(FPGA)145及び図1のストレージデバイス(SSD)120の構成を示す図である。本発明の第8実施例は、FPGA145が2つのエンドポイント(1105及び1505)を含むことを除いては、本発明の第5実施例と類似する。言い換えると、FPGA145のエンドポイント(1105及び1505)は、従来のホスト-SSD PCIeトランザクション及びホスト-FPGAアクセラレーションコマンドを区別するために使用される。FPGA145のエンドポイント1105で受信されたPCIeトランザクションは、従来のPCIeトランザクションと見なされ、SSD120に伝送される反面(ルートポート1110を介して)、FPGA145のエンドポイント1505で受信されたPCIeトランザクションはアクセラレーションコマンドと見なされ、処理のためにAPM-F340に伝達される。
図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は、少なくともブロック1205と同じ大きさである。ブロック(1215及び1220)は、それぞれ2つの分離されたBARにより識別される。本発明の他の実施例で、FPGA145とSSD120との間の通信を容易にするために、ダウンストリームFAR420のようにブロック1220の部分を使用することも可能である。
図17において、本発明の上記実施例のように、FPGA145は、プロセッサ110とSSD120との通信を可能にする部分を含むものとして示される。即ち、具体的に、エンドポイント(1105、1505)、ルートポート1110、及びダウンストリームフィルタ360である。上述した本発明の実施例のように、PCIeトランザクションのフィルタリングに関連付けられた構成要素は、FPGA145から除去される。従って、本発明の第8実施例で、エンドポイント(1105、1505)は、第1ブリッジ構成要素に配置され、ルートポート1110及びダウンストリームフィルタ360は、それぞれが図17の異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置される。代替的に、PCIeトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるか(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145と共に)、又はシングルブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用される。
本発明の様々な実施例を参照して上述したように、FPGA145のアップストリームインターフェース及び/又はダウンストリームインターフェースの一部であるとして記述したフィルタリング機能は、FPGA145から分離されて他の構成によって処理され得る。
図19は、本発明の一実施例による図1のシステムの構成及び図1のアクセラレーションモジュールとの通信を管理するブリッジン構成要素(bridging components)を示す図であり、図1のアクセラレーションモジュール145に代えてフィルタリング機能を処理するブリッジ構成要素を示す。図19において、2つのブリッジ構成要素(1905及び1910)が示される。ブリッジ構成要素1905は、プロセッサ110から受信されたPCIeトランザクションのフィルタリングを処理する反面、ブリッジ構成要素1910は、SSD120から受信されたPCIeトランザクションのフィルタリングを処理する。ブリッジ構成要素1905は、PCIeトランザクションがアクセラレーションコマンドを含むか否かに応じて、PCIeトランザクションをFPGA145又はSSD120のいずれか一つに伝送する。同様に、ブリッジ構成要素1910は、PCIeトランザクションがアクセラレーションコマンドを含むか否かに応じて、PCIeトランザクションをFPGA145又はプロセッサ110のいずれか一つに伝送する。FPGA145のアップストリーム及びダウンストリームインターフェースの一部として図示したものと類似の具現と同様に、ブリッジ構成要素(1905及び1910)の特定の具現は、図19に示さない。
本発明のいくつかの実施例で、ブリッジ構成要素(1905及び1910)の両方が使用される。本発明の他の実施例で、1つのブリッジ構成要素(1905又は1910)のみが使用され、他のブリッジ構成要素の機能は、潜在的にFPGA145と共に残る。他の実施例で、ブリッジ構成要素(1905及び1910)の両方は、分離された構成ではない単一の構成に含まれる。
本発明の様々な実施例を説明したため、プロセッサ110、FPGA145、及びSSD120間のデータの流れを説明することができる。本明細書の残りの部分で、全てのフィルタリング機能は、FPGA145から起因するが、図19のブリッジ構成要素(1905及び/又は1910)にフィルタリングが移動する時期と方法が明確にならなければならない。
図20a及び図20bは、本発明の一実施例による図1のプロセッサ、図1のアクセラレーションモジュール(FPGA)145、及び図1のストレージデバイス(SSD)120間の通信を示す図である。図20aに、本発明の第1実施例(そして、できる限り本発明の他の実施例)によるデータの流れを示す。プロセッサ110は、PCIeトランザクション2005をSSD120に配信する(FPGAを介して)。その後に、APM-S315は、SSD120がFPGA145に伝送するPCIeトランザクション2020に含まれるアクセラレーションコマンド2015を生成する。なお、図20aに示すように、FPGA145とSSD120とは、アクセラレーションデータを交換する。
アクセラレーションコマンド2015の完了時に、FPGA145は、プロセッサ110に結果2035を伝達するSSD120に結果2030を送り返す。代替的に、FPGA145は、SSD120から来る結果2035をシミュレーションしながら、その結果2040をプロセッサ110に直接伝送することができる。
対照的に、図20bで(本発明の第2~第8実施例に適用可能な)、プロセッサ110は、アクセラレーションコマンド2045をPCIeトランザクション2005としてFPGA145に直接伝送する。FPGA145とSSD120とは、図20bに示したように、アクセラレーションデータを交換する。最後に、FPGA145は、結果2040をプロセッサ110に送り返す。
図21は、本発明の一実施例によるPCIeトランザクションを処理するための図1のアクセラレーションモジュール(FPGA)145の例示的な手順のフローチャートである。図21は、高いレベルのビュー(view)を提供する。従って、以後の図面は、FPGA145の動作に対してより詳細な例示的なフローチャートを提供する。図21において、ブロック2105で、FPGA145は、デバイスからのPCIeトランザクションを受信する。このようなPCIeトランザクションは、図20a及び図20bのPCIeトランザクション(2015又は2045)のいずれか1つであり、デバイスは、プロセッサ110又はSSD120である。ブロック2110で、FPGA145は、PCIeトランザクションがアクセラレーションコマンドを含むか否かを判断する。ブロック2115で、FPGA145は、PCIeトランザクションがアクセラレーションコマンドを含むか否かを知るために検査する。そうである場合、ブロック2120で、アクセラレーションコマンドは、APM-F340によって処理される。そうでない場合、ブロック2125で、PCIeトランザクションは、他のデバイスに配信される(PCIeトランザクションがプロセッサ110から受信された場合、PCIeトランザクションはSSD120に配信されるが、その逆も可能である)。APM-F340によるアクセラレーションコマンドを処理することは、アクセラレーションコマンドによって処理されるアプリケーションデータを受信するためにSSD120と通信することを含むことに注目する。
図22a~図22cは、本発明の一実施例によるPCIeトランザクションを処理するための図1のアクセラレーションモジュール(FPGA)145の例示的な手順のより詳細なフローチャートである。図22aにおいて、ブロック2203で、FPGA145は、SSD120からのダウンストリームFAR420を受信する。ブロック2206で、FPGA145は、ダウンストリームFAR420をダウンストリームフィルタ360に関連付ける。SSD120がサイドバンドバス365を介してダウンストリームFAR420をダウンストリームフィルタ360内にプログラミングする場合、この関係は自動的に発生するか、又はこの関係はFPGA145によって活性ステップを要求する(例として、SSD120がダウンストリームFAR420を含むFPGA145にPCIe VDMを伝送する場合)。点線2209で示すように、本発明のいくつかの実施例で、ブロック(2203及び2206)は、スキップされることに注目する。本発明のいくつかの実施例で、ダウンストリームFAR420は、FPGA145それ自体によって提供される。
ブロック2212で、FPGA145は、SSD120からアップストリームFAR605を受信し、ブロック2215で、FPGA145は、アップストリームポート330とアップストリームFAR605とを関連付ける。SSD120がサイドバンドバス365を介してアップストリームFAR605をアップストリームフィルタ505内にプログラミングする場合、この関係は自動的に発生するか、又はこの関係はFPGA145によって活性ステップを要求する(例として、SSD120がアップストリームFAR605を含むFPGA145にPCIe VDMを伝送する場合)。本発明のいくつかの実施例で、アップストリームFAR605は、FPGA145それ自体によって提供される。
代替的に、ブロック2218で、FPGA145は、FPGA145を露出させるために使用されるPF又はVFの識別子をSSD120から受信し、ブロック2221で、FPGA145は、PF/VFの識別子をアップストリームフィルタ330に関連付ける。言い換えると、SSD120がサイドバンドバス365を介してPF/VFの識別子をアップストリームフィルタ505内にプログラミングする場合、この関係は自動的に発生するか、又はこの関係はFPGA145によって活性ステップを要求する(例として、SSD120がPF/VFの識別子を含むFPGA145にPCIe VDMを伝送する場合)。
点線2224に示したように、本発明のいくつかの実施例で、ブロック(2212、2215、2218、及び2221)は、スキップされる。
ブロック2227で、構成モニター1125は、SSD120のエンドポイント305の構成を判断し、ブロック2230で、構成モニター1125は、FPGA145のエンドポイント1105でその構成を複製し、そうすることでSSD120と同じ機能をプロセッサ110に提供する。本発明のいくつかの実施例で、ブロック(2227及び2230)は、点線2233で示したようにスキップ(skip)される。
一旦FPGA145が適切に構成されると、ブロック2236(図22b)で、FPGA145は、プロセッサ110から図20bのPCIeトランザクション2005を受信する(本発明の実施例に基づいて、アップストリームポート330又はエンドポイント1105を介して)。ブロック2239で、FPGA145は、図20bのPCIeトランザクション2005が図20bのアクセラレーションコマンド2045を含むか否かを判断する。そうである場合、ブロック2242で、図22bのアクセラレーションコマンド2045を処理し、ブロック2245で、APM-F340は、プロセッサ110に図20bの結果2040を送信する。そうでなく、図20bのPCIeトランザクション2005が図20bのアクセラレーションコマンド2045を含まない場合、ブロック2248で、FPGA145は、図20bのPCIeトランザクション2005をSSD120に配信する(本発明の実施例に基づいて、ダウンストリームポート335又はルートポート1110を介して)。
ブロック2251(図22c)で、FPGA145は、図20aのPCIeトランザクション2020を受信する(本発明の実施例によるダウンストリームポート335又はルートポート1110を介して)。ブロック2254で、FPGA145は、図20aのPCIeトランザクション2020が図20aのアクセラレーションコマンド2015を含むか否かを判断する。
図20aのPCIeトランザクション2020が図20aのアクセラレーションコマンド2015を含む場合、ブロック2257で、APM-F340は、図22cのアクセラレーションコマンド201を処理し、ブロック2260で、APM-F340は、図20aの結果2040をSSD120に伝送する。そうでなく、図20aのPCIeトランザクション2020がアクセラレーションコマンド2015を含まない場合、ブロック2263で、FPGA145は、図20aのPCIeトランザクション202をプロセッサ110に伝送する(発明の実施例によるアップストリームポート330又はエンドポイント1105を介して)。
図23a及び23bは、本発明の一実施例による図20bのPCIeトランザクション2005が図20bのアクセラレーションコマンド2045を含む図1のプロセッサ110から来るか否かを判断するためのアクセラレーションモジュール(FPGA)145の例示的な手順のフローチャートである。本実施例による図23a及び23bは、個別的に又は集合的に使用される3つの可能なテストを示す。一つ以上のテストを使用する本実施例で個々のテストが満足される場合、図20bのPCIeトランザクション2005は、図20bのアクセラレーションコマンド2045を含むものと判断される。図23aにおいて、ブロック2305で、FPGA145は、図20bのPCIeトランザクション2005に関連付けられたアドレスがアップストリームFAR605内のアドレスを含むか否かを判断する。ブロック2310で、FPGA145は、図20bのPCIeトランザクション2005がアップストリームフィルタ715に関連付けられたPF又はVFの識別子を含むか否かを判断する。ブロック2315で、FPGA145は、図20bのPCIeトランザクション2005がエンドポイント1505のようなアクセラレーションコマンド専用のポートで受信されるか否かを判断する。これらのテストの任意の結果、図20bのPCIeトランザクション2005が図20bのアクセラレーションコマンド2045を含むことを示す場合、ブロック2320(図23b)で、FPGA145は、図20bのPCIeトランザクション2005が図20bのアクセラレーションコマンド2045を含むことを知っている。そうでない場合、ブロック2325で、FPGA145は、図20bのPCIeトランザクション2005が図20bのアクセラレーションコマンド2045を含まないことを知っている。
図24は、本発明の一実施例による図20aのPCIeトランザクション2020が図20aのアクセラレーションコマンド2015を含む図1のストレージデバイス(SSD)120から来るか否かを判断するためのアクセラレーションモジュール(FPGA)145の例示的な手順のフローチャートである。本実施例による図24は、個別的に又は集合的に使用される3つの可能なテストを示す。一つ以上のテストを使用する本実施例で、どのようなテストも満足される場合、図20aのPCIeトランザクション2020は、図20aのアクセラレーションコマンド2015を含むものと判断される。図24において、ブロック2405で、FPGA145は、図20aのPCIeトランザクション2020に関連付けられたアドレスがダウンストリームFAR420内のアドレスを含むか否かを判断する。ブロック2410で、FPGA145は、図20aのPCIeトランザクション2020がルートポート1305のようなアクセラレーションコマンド専用のポートで受信されるか否かを判断する。これらのテストの任意の結果、図20aのPCIeトランザクション2020が図20aのアクセラレーションコマンド2015を含むことを示す場合、ブロック2415で、FPGA145は、図20aのPCIeトランザクション2020が図20aのアクセラレーションコマンド2015を含むことを知っている。従って、そうでない場合、ブロック2420で、FPGA145は、図20aのPCIeトランザクション2020が図20aのアクセラレーションコマンド2015を含まないことを知っている。
図25は、本発明の一実施例によるPCIeトランザクション2020がアクセラレーションコマンドを含む図1のプロセッサ110から来るか否かを判断するための図19の第1ブリッジ構成要素1905の例示的な手順のフローチャートである。図25において、ブロック2505で、第1ブリッジ構成要素1905は、図1のプロセッサ110からPCIeトランザクションを受信する。ブロック2510で、第1ブリッジ構成要素1905は、PCIeトランザクションがアクセラレーションコマンドであるか否かを判断する。そうである場合、ブロック2515で、第1ブリッジ構成要素1905は、PCIeトランザクション/アクセラレーションコマンドを図1のFPGA145に伝送する。しかし、そうでない場合、ブロック2520で、第1ブリッジ構成要素1905は、PCIeトランザクションを図1のSSD120に伝達する。
図26は、本発明の一実施例によるPCIeトランザクションがアクセラレーションコマンドを含む図1のストレージデバイス120から来るか否かを判断するための図19の第2ブリッジ構成要素1910の例示的な手順のフローチャートである。図26において、ブロック2605で、第2ブリッジ構成要素1910は、図1のSSD120からPCIeトランザクションを受信する。ブロック2610で、第2ブリッジ構成要素1910は、PCIeトランザクションがアクセラレーションコマンドであるか否かを判断する。そうである場合、ブロック2615で、第2ブリッジ構成要素1910は、PCIeトランザクション/アクセラレーションコマンドを図1のFPGA145に伝送する。しかし、そうでない場合、ブロック2620で、第2ブリッジ構成要素1910は、PCIeトランザクションを図1のプロセッサ110に伝達する。
図27a~図27cは、本発明の一実施例による図1のストレージデバイス(SSD)120がPCIeトランザクションを処理するための例示的な手順のフローチャートである。図27aにおいて、ブロック2705で、SSD120は、メモリアドレスのブロックを要請する。SSD120は、本発明の第1~第4実施例のようにホストシステムメモリから、又は本発明の第5~第8実施例のようにFPGA145のルートポートの構成空間からメモリアドレスのブロックを要請する。サイドバンドバス365、PCIe VDM、又は任意の他の望みのメカニズムを使用して、ブロック2710で、SSD120は、ダウンストリームFAR420として使用するためのメモリアドレスのブロックのサブセットを選択し、ブロック2715で、SSD120は、ダウンストリームフィルタ360をダウンストリームFAR420でプログラミングする。本発明のいくつかの実施例で、ブロック(2705~2715)は、点線2720に示したようにスキップされることに注目する(点線2720、また図27bに示したいくつかのブロックを省略する)。
サイドバンドバス365、PCIe VDM、又は任意の他の望みのメカニズムを使用して、ブロック2725(図27b)で、SSD120は、アップストリームFAR605として使用するためのメモリアドレスのブロックのサブセットを選択し、ブロック2730で、SSD120は、ダウンストリームフィルタ360をダウンストリームFAR420でプログラミングする。代替的に、ブロック2735で、SSD120は、PF705を使用してそれ自身の能力を露出させる。その後に、サイドバンドバス365、PCIe VDM、又は任意の他の望みのメカニズムを使用して、ブロック2740で、SSD120は、FPGA145を露出させるためにPF905又はVF710を使用し、ブロック2745で、SSD120は、ダウンストリームフィルタ360をPF905又はVF710の識別子でプログラムする。本発明のいくつかの実施例で、ブロック(2725~2745)は、点線2750で示したようにスキップされることに注目する。
ブロック2755で、SSD120は、FPGA145からPCIeトランザクションを受信する。このPCIeトランザクションは、図20aのPCIeトランザクション2005であるか、又は(プロセッサ110からFPGA145によって伝達される(forwarded))図20a及び図20bのPCIeトランザクション2025である。PCIeトランザクションのソースに関係なく、ブロック2760(図27c)で、HIL310は、PCIeトランザクションがアクセラレーションコマンドを含むか否かを判断する。そうである場合、ブロック2765で、HIL310は、PCIeトランザクション(又は圧縮解除されたアクセラレーションコマンド)を、処理のためにAPM-S315に伝送する。APM-S315は、アクセラレーションコマンドへの応答を生成し、これは、図20aのアクセラレーションコマンド2025、又は(PCIeトランザクションがプロセッサ110から由来する場合)アクセラレーションデータ2025である(PCIeトランザクションがFPGA145のAPM-F340から生じた場合)。いずれの場合でも、ブロック2770で、APM-S315は、応答をFPGA145に伝送する。
一方、PCIeトランザクションがアクセラレーションコマンドではない場合、ブロック2775で、SSD120は、PCIeトランザクションが図20aの結果2030であるか否かを判断する。そうである場合、ブロック2780で、SSD120は、図20aの結果2035をプロセッサ110に伝送する(SSD120及びFPGA145のエンドポイント305を介して)。PCIeトランザクションが図20aの結果2030ではない場合、ブロック2785で、SSD120は、通常の場合としてSSD120に格納されたデータのPCIeトランザクションを処理する。
図28a及び図28bは、本発明の一実施例による図1のストレージデバイス(SSD)120が図1のアクセラレーションモジュール(FPGA)145から来るPCIeトランザクションがアクセラレーションコマンドを含むか否かを判断するための例示的な手順のフローチャートである。
本実施例による図28a及び28bは、個別的に又は集合的に使用される3つの可能なテストを示す。一つ以上のテストを使用する本実施例で個々のテストが満足される場合、図20aのPCIeトランザクションは、アクセラレーションコマンド2015を含むものと判断される。図28aにおいて、ブロック2805で、SSD120は、PCIeトランザクション2020がプロセッサ110(SSD120がFPGA145にアクセラレーションコマンドを開始しなければならないことを示す)からの特定のコマンドを含むか否かを判断する。ブロック2810で、SSD120は、PCIeトランザクションがAPM-F340から生じるのか否かを判断し、これはAPM-F340が図20a及び図20bのアクセラレーションデータ2025を要請するか、又はAPM-F340が図20aの結果2030をSSD120に伝送する場合に発生する。ブロック2810のテストは、任意の所望の方式で遂行される。即ち、例として、PCIeトランザクションはPCIeトランザクションがアクセラレーションコマンドであることを示すためのタグを含むか、又はPCIeトランザクションはダウンストリームのアドレスに関連付けられる。ブロック2815で、SSD120は、PCIeトランザクションがエンドポイント1310のようなアクセラレーションコマンド専用のポートで受信されるか否かを判断する。これらのテストの任意の結果、PCIeトランザクションがアクセラレーションコマンドを含むことを示す場合、ブロック2820(図28b)で、SSD120は、PCIeトランザクションがアクセラレーションコマンドを含むことを知っている。そうでない場合、ブロック2825で、SSD120は、PCIeトランザクションがアクセラレーションコマンドを含まないことを知っている。
図21~28bにおいて、本発明のいくつかの実施例を示した。しかし、当業者は、ブロックの順序を変更したり、ブロックを省略したり、又は図面に図示されていない連結を含んだりすることにより、本発明の他の実施例も可能であることを認識するはずである。加えて、特定の動作が特定の構成によって実行されるものとして説明したが、本発明の実施例は、説明した動作を遂行する他の構成を支援することができる。フローチャートのこのような全ての変形は、明示的に記述されているであろうとなかろうと本発明の実施例と見なされる。
本発明の実施例は、従来技術に比べて技術的な利点を提供する。図1の機械105に図1のアクセラレーションモジュール145を導入することにより、図1のプロセッサ110は、図1のアクセラレーションモジュール145によって遂行可能な作業を軽減(offload)することができる。このようなコマンドは、通常廃棄される多くの量のデータを処理することを含むため、図1のメモリ140のいくつかの空間を自由にする必要性を回避するだけでなく、図1のアクセラレーションモジュール145に対する作業を軽減することは、図1のストレージデバイス120から図1のメモリ140にデータをロードするのに要請される遅延を避けることができる。
なお、本発明の多様な実施例は、図1の異なるタイプのストレージデバイス120)を使用することを支援する。図1のアクセラレーションモジュール145を露出させるために追加のPF及び/又はVFを支援するストレージデバイスだけでなく、シングルポート及びデュアルポートストレージデバイスの全てが使用される。
本発明の多様な実施例は、異なる性能を提供するプロセッサを使用することを更に支援する。図1の機械105の動作システムがVFを支援する場合、VFが図1のアクセラレーションモジュール145を露出させるのに使用される。そうでない場合、PFが使用される。図1のプロセッサ110は、図1のアクセラレーションモジュール145と直接通信し、そのような通信を支援する本発明の実施例が使用される。そうでない場合、図1のプロセッサ110は、図1のストレージデバイス120に全てのアクセラレーションコマンドを送信し、図1のアクセラレーションモジュール145がアクセラレーションコマンドを遂行するように要請するために、それを図1のストレージデバイス120に残す。
下記の説明は、本発明の技術的思想のいくつかの側面が具現される適切な機械又は複数の機械の簡単で一般的な説明を提供する。機械又は複数の機械の少なくとも一部は、他の機械から受信される指示、バーチャルリアリティ(VR)環境との相互作用、生体フィードバック、又は他の入力信号だけではなく、キーボード、マウスなどのような通常の入力デバイスからの入力により制御される。ここで使用されるように、「機械(マシン)」の用語は、単一のマシン、仮想マシン、複数の機械、複数の仮想マシン、又は共に作動するデバイスと通信するように結合されたシステムを広く含むものと意図される。例示的な機械は、例として、自動車、電車、タクシーなどのような個人用や公共交通などの輸送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルドデバイス、携帯電話、タブレットなどのようなコンピューティングデバイスを含む。
機械又は複数の機械は、プログラム可能な又はプログラム不可能な論理デバイス、アレイ、ASIC(Application Specific Integrated Circuit)、エンベデッドコンピュータ、スマートカードのようなエンベデッドコントローラを含む。機械又は複数の機械は、ネットワークインターフェース、モデム又は他の通信結合を介するように一つ又はそれより多くのリモート機械(マシン)への一つ又はそれより多くの連結を活用する。機械(マシン)は、イントラネット、インターネット、LAN(local area networks)、(WAN wide area networks)などのような物理的及び/又は論理的ネットワークの手段として互いに連結される。この分野における熟練した者は、ネットワーク通信が、多様な有線及び/又は無線の近距離又は遠距離キャリア、及び無線周波数(RF)、衛星、マイクロウェーブ、IEEE802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含むプロトコルを活用することを理解するだろう。
本発明の技術的思想の実施例は、機械によってアクセスされる際に機械が作業を遂行したり、抽象データ型又は低レベルのハードウェアコンテキストを定義することを誘発する機能、プロシージャ、データ構造、アプリケーションなどを含む関連するデータを参照したり又は協力したりして説明される。関連するデータは、例えばRAM、ROMなどのような揮発性及び/又は不揮発性メモリ、他のストレージデバイス、ハードドライブ、フロッピー(登録商標)ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生体ストレージなどを含む関連するストレージデバイスに格納される。関連するデータは、物理的及び/又は論理ネットワークを含む伝送環境を経て、パケット、シリアルデータ、パラレルデータ、伝送信号などの形態で伝達され、圧縮された又は暗号化されたフォーマットで使用される。関連するデータは、分散環境で使用され、機械アクセスに対してローカル及び/又はリモートで格納される。
本発明の技術的思想の実施例は、一つ又はそれより多くのプロセッサによって実行可能であり、ここで説明したように、本発明の技術的思想のエレメントを行うようにするコマンドを含んで実在する非一時的機械読み出し媒体を含む。
上述した方法の多様な動作は、多様なハードウェア及び/又はソフトウェア構成、回路、及び/又は複数のモジュールのような動作を遂行する任意の適切な手段によって遂行される。ソフトウェアは、論理的機能を具現するための実行可能なコマンドの順序付けられたリストを含み、シングル若しくはマルチコアプロセッサ、プロセッサを含むシステムのようなデバイス(device)、コマンド実行システム、又は機構(apparatus)に関連するか若しくはこれらの使用のための任意の「プロセッサ可読媒体」で具現される。
本明細書に開示した実施例に関連して説明した方法、アルゴリズム、及び機能のブロック又はステップは、ハードウェア、プロセッサによって実行中のソフトウェアモジュール、又はそれらの組み合わせで直接具現される。ソフトウェアで具現される場合、機能は実在し、非一時的コンピュータ読み取り可能な記録媒体上に格納されたり、1つ以上のコマンド又はコードとして伝送されたりする。ソフトウェアモジュールは、RAM(random access memory)、フラッシュメモリ、ROM(Read Only Memory)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、レジスタ、ハードディスク、リムーバブルディスク、CD ROM、又はこの技術分野において知られている任意の他の形態のストレージ媒体である。
図示した実施例を参照して説明した本発明の技術的思想の原則を有する場合、図示した実施例は、このような原則から逸脱せずに配列及び細部事項で修正され、必要な任意の方法で組み合わせられることが理解される。上記の説明は具体的な実施例に集中したが、他の構成もまた考慮される。具体的に、「本発明の技術的思想の実施例による」のような説明や、ここで使用した類似のものにも拘らず、このようなフレーズは、一般的に実施例の可能性を参照し、本発明の技術的思想を具体的な実施例の構成に限定することを意図しない。ここで使用したように、このような用語は、他の実施例への組み合わせ可能な同一又は異なる実施例を参照する。
上述した実施例は、本発明の技術的思想を、それらに限定するものと解釈されない。少ない実施例だけを説明したが、この分野における熟練した者は、本明細書に記載の新規な説明及び長所から実質的に逸脱せずに、このような実施例に多くの修正が可能であることを十分に理解するだろう。従って、このような全ての修正は、請求項において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図される。
本発明の実施例は制限なしに次のステートメントに拡張される。
ステートメント1。本発明の実施例は、システムを含む。システムは、アプリケーションを実行するプロセッサと、プロセッサ上で実行中のアプリケーションによって使用されるデータを格納するメモリと、プロセッサと通信するためのアップストリームインターフェース(アップストリームポート)と、ストレージデバイスと通信するためのダウンストリームインターフェース(ダウンストリームポート)と、ハードウェアを用いて具現され、アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー(APM-F)を含むアクセラレーションモジュールと、を備え、ストレージデバイスは、アクセラレーションモジュールと通信するためのストレージデバイスのエンドポイントと、ストレージデバイスの動作を管理するコントローラと、アプリケーションのためのアプリケーションデータを格納するストレージと、アクセラレーションコマンドを実行する際にアクセラレーションプラットフォームマネージャー(APM-F)を補助するアクセラレーションプラットフォームマネージャー(APM-S)と、を含み、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、PCIe(Peripheral Component Interconnect Exchange)バスを介して通信し、アクセラレーションモジュールは、アプリケーションデータをメモリにロードすることなく、アプリケーションのためのストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
ステートメント2。本発明の実施例は、ステートメント1によるシステムを含む。システムは、プロセッサとアクセラレーションモジュールとの間の通信をブリッジ(bridging)し、アップストリームインターフェースを含む第1ブリッジ構成要素と、アクセラレーションモジュールとストレージデバイスとの間の通信をブリッジし、ダウンストリームインターフェースを含む第2ブリッジ構成要素と、を更に含む。
ステートメント3。本発明の実施例は、ステートメント1によるシステムを含む。アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を用いて具現され、アクセラレーションモジュールは、アップストリームインターフェース及びダウンストリームインターフェースを含み、ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント4。本発明の実施例は、ステートメント3によるシステムを含む。APM-FとAPM-Sとは、アクセラレーションコマンドと共に用いられるアプリケーションデータに関するダウンストリームインターフェース及びSSDのエンドポイントを用いて通信する。
ステートメント5。本発明の実施例は、ステートメント3によるシステムを含む。APM-FとAPM-Sとは、メッセージを使用して通信する。
ステートメント6。本発明の実施例は、ステートメント3によるシステムを含む。プロセッサは、非揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)を含むPCIeトランザクションをSSDに伝送する。
ステートメント7。本発明の実施例は、ステートメント3によるシステムを含む。FPGAは、アクセラレーションエンジンと、アクセラレーションエンジンにアクセラレーションコマンドをスケジューリングするランタイムスケジューラ(run-time scheduler)と、を更に含む。
ステートメント8。本発明の実施例は、ステートメント3によるシステムを含む。SSDは、FPGAを含む。
ステートメント9。本発明の実施例は、ステートメント3によるシステムを含む。アップストリームインターフェースは、FPGAのエンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、FPGAは、第1 PF、第2 PF、及びFPGAルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、SSDから受信された第1アクセラレーションコマンドをインターセプトしてAPM-Fにダウンストリームフィルタのアドレス範囲(FAR)に関連付けられた第1アクセラレーションコマンドを伝達し、FPGAは、第1 PFに対するプロセッサからホストシステムアドレスの第1ブロックを要請して、第2 PFに対するプロセッサからホストシステムアドレスの第2ブロックを要請し、プロセッサから受信された第1 PCIeトランザクションをSSDに伝達し、プロセッサから受信された第2アクセラレーションコマンドをAPM-Fに配信し、第1 PCIeトランザクションは、第1 PFの第1識別子に関連付けられ、第2アクセラレーションコマンドは、第2 PFの第2識別子に関連付けられる。
ステートメント10。本発明の実施例は、ステートメント9によるシステムを含む。アクセラレーションコマンドは、APM-Sによって生成される。
ステートメント11。本発明の実施例は、ステートメント10によるシステムを含む。SSDは、プロセッサから受信されたアクセラレーションコマンドを含む特定のコマンドをインターセプトしてアクセラレーションコマンドを生成するAPM-Sをトリガーする特定のコマンドをAPM-Sに伝達するホストインターフェースロジック(HIL)を更に含む。
ステートメント12。本発明の実施例は、ステートメント11によるシステムを含む。特定のコマンドは、プロセッサ上で実行中のアクセラレーションサービスマネージャー(ASM)から生じる。
ステートメント13。本発明の実施例は、ステートメント9によるシステムを含む。SSDは、プロセッサからホストシステムアドレスのブロックを要請し、コントローラは、ダウンストリームFARとしてホストシステムアドレスのブロックのサブセットを選択する。
ステートメント14。本発明の実施例は、ステートメント13によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント15.本発明の実施例は、ステートメント14によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント16.本発明の実施例は、ステートメント15によるシステムを含む。サイドバンドバスは、I2C(Inter-Integrated Circuit)バス及びSMBus(System Management Bus)を含むセットから成る。
ステートメント17。本発明の実施例は、ステートメント14によるシステムを含む。コントローラは、PCIe VDM(Vendor Defined Message)を使用してダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント18。本発明の実施例は、ステートメント9によるシステムを含む。APM-Fは、ダウンストリームポート及びSSDのエンドポイントを介してAPM-Sに結果を送信し、コントローラは、結果をSSDのエンドポイントを介してプロセッサに伝達する。
ステートメント19。本発明の実施例は、ステートメント9によるシステムを含む。APM-Fは、アップストリームポートを介してプロセッサに結果を伝送する。
ステートメント20。本発明の実施例は、ステートメント9によるシステムを含む。FPGAは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第2アクセラレーションコマンドをインターセプトしてアップストリームFARに関連付けられた第2アクセラレーションコマンドをAPM-Fに配信し、FPGAは、アップストリームポートでプロセッサから受信されたアップストリームFARに関連付けられていない第3 PCIeトランザクションをSSDに伝達する。
ステートメント21。本発明の実施例は、ステートメント20によるシステムを含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント22。本発明の実施例は、ステートメント20によるシステムを含む。SSDは、プロセッサからホストシステムアドレスのブロックを要請し、コントローラは、ダウンストリームFARとしてホストシステムアドレスのブロックの第1サブセット、及びアップストリームFARとしてホストシステムアドレスのブロックの第2サブセットを選択する。
ステートメント23。本発明の実施例は、ステートメント22によるシステムを含む。ホストシステムアドレスのブロックは、プロセッサ上で実行中のASMによってアクセス可能な特定のレジスタを含み、特定のレジスタは、アップストリームFARを識別する。
ステートメント24。本発明の実施例は、ステートメント22によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングし、アップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント25。本発明の実施例は、ステートメント24によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングし、アップストリームフィルタをアップストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント26。本発明の実施例は、ステートメント25によるシステムを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント27。本発明の実施例は、ステートメント24によるシステムを含む。コントローラは、PCIe VDMを使用してダウンストリームフィルタをダウンストリームFARでプログラミングし、アップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント28。本発明の実施例は、ステートメント20によるシステムを含む。APM-Fは、ダウンストリームポート及びSSDのエンドポイントを介してAPM-Sに結果を伝送し、コントローラは、結果をSSDのエンドポイントを介してプロセッサに伝達する。
ステートメント29。本発明の実施例は、ステートメント20によるシステムを含む。APM-Fは、アップストリームポートを介してプロセッサに結果を伝送する。
ステートメント30。本発明の実施例は、ステートメント9によるシステムを含む。SSDは、物理関数(PF)及び仮想関数(VF)を含み、PFは、SSDを露出させ、VFは、FPGAを露出させ、FPGAは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第2アクセラレーションコマンドをインターセプトして第2アクセラレーションコマンドをAPM-Fに配信し、FPGAは、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされない第3 PCIeトランザクションをSSDに伝達する。
ステートメント31。本発明の実施例は、ステートメント30によるシステムを含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント32。本発明の実施例は、ステートメント30によるシステムを含む。PFは、プロセッサからホストシステムアドレスの第1ブロックを要請し、コントローラは、ダウンストリームFARとしてホストシステムアドレスのブロックの第1サブセットを選択する。
ステートメント33。本発明の実施例は、ステートメント32によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント34。本発明の実施例は、ステートメント33によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント35。本発明の実施例は、ステートメント34によるシステムを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント36。本発明の実施例は、ステートメント33によるシステムを含む。コントローラは、PCIe VDMを使用してダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント37。本発明の実施例は、ステートメント30によるシステムを含む。第2アクセラレーションコマンドは、アップストリームFARに関連付けられ、アップストリームフィルタは、アップストリームFARに関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント38。本発明の実施例は、ステートメント37によるシステムを含む。VFは、アップストリームFARとしてプロセッサからホストシステムアドレスの第2ブロックを要請する。
ステートメント39。本発明の実施例は、ステートメント38によるシステムを含む。コントローラは、アップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント40。本発明の実施例は、ステートメント39によるシステムを含む。コントローラは、アップストリームフィルタをアップストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント41。本発明の実施例は、ステートメント40によるシステムを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント42。本発明の実施例は、ステートメント39によるシステムを含む。コントローラは、PCIe VDMを使用してアップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント43。本発明の実施例は、ステートメント30によるシステムを含む。第2アクセラレーションコマンドは、VFの識別子を含み、アップストリームフィルタは、VFの識別子に関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント44。本発明の実施例は、ステートメント43によるシステムを含む。コントローラは、アップストリームフィルタをVFの識別子でプログラミングする。
ステートメント45。本発明の実施例は、ステートメント44によるシステムを含む。コントローラは、アップストリームフィルタをVFの識別子でプログラミングするためにサイドバンドバスを使用する。
ステートメント46。本発明の実施例は、ステートメント45によるシステムを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント47。本発明の実施例は、ステートメント44によるシステムを含む。コントローラは、PCIe VDMを使用してアップストリームフィルタをVFの識別子でプログラミングする。
ステートメント48。本発明の実施例は、ステートメント30によるシステムを含む。APM-Fは、ダウンストリームポート及びSSDのエンドポイントを介してAPM-Sに結果を伝送し、コントローラは、結果をSSDのエンドポイントを介してプロセッサに伝達する。
ステートメント49。本発明の実施例は、ステートメント30によるシステムを含む。APM-Fは、アップストリームポートを介してプロセッサに結果を伝送する。
ステートメント50。本発明の実施例は、ステートメント9によるシステムを含む。SSDは、SSDを露出させる第1 PF及びFPGAを露出させる第2 PFを含み、FPGAは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第2アクセラレーションコマンドをインターセプトして第2アクセラレーションコマンドをAPM-Fに配信し、FPGAは、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされない第3 PCIeトランザクションをSSDに伝達する。
ステートメント51。本発明の実施例は、ステートメント50によるシステムを含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント52。本発明の実施例は、ステートメント50によるシステムを含む。第1 PFは、プロセッサからホストシステムアドレスの第1ブロックを要請し、コントローラは、ダウンストリームFARとしてホストシステムアドレスのブロックの第1サブセットを選択する。
ステートメント53。本発明の実施例は、ステートメント52によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント54。本発明の実施例は、ステートメント53によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント55。本発明の実施例は、ステートメント54によるシステムを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント56。本発明の実施例は、ステートメント53によるシステムを含む。コントローラは、PCIe VDMを使用してアップストリームフィルタをVFの識別子でプログラミングする。
ステートメント57。本発明の実施例は、ステートメント50によるシステムを含む。第2アクセラレーションコマンドは、アップストリームFARに関連付けられ、アップストリームフィルタは、アップストリームFARに関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント58。本発明の実施例は、ステートメント57によるシステムを含む。第2 PFは、アップストリームFARとしてプロセッサからホストシステムアドレスの第2ブロックを要請する。
ステートメント59。本発明の実施例は、ステートメント58によるシステムを含む。コントローラは、アップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント60。本発明の実施例は、ステートメント59によるシステムを含む。コントローラは、アップストリームフィルタをアップストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント61。本発明の実施例は、ステートメント60によるシステムを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント62。本発明の実施例は、ステートメント59によるシステムを含む。コントローラは、PCIe VDMを使用してアップストリームフィルタをVFの識別子でプログラミングする。
ステートメント63。本発明の実施例は、ステートメント50によるシステムを含む。第2アクセラレーションコマンドは、第2 VFの識別子を含み、アップストリームフィルタは、第2 VFの識別子に関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント64。本発明の実施例は、ステートメント63によるシステムを含む。コントローラは、第2 PFの識別子でアップストリームフィルタをプログラミングする。
ステートメント65。本発明の実施例は、ステートメント64によるシステムを含む。コントローラは、第2 PFの識別子でアップストリームフィルタをプログラミングするためにサイドバンドバスを使用する。
ステートメント66。本発明の実施例は、ステートメント65によるシステムを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント67。本発明の実施例は、ステートメント64によるシステムを含む。コントローラは、PCIe VDMを使用してアップストリームフィルタを第2 PFの識別子でプログラミングする。
ステートメント68。本発明の実施例は、ステートメント50によるシステムを含む。APM-Fは、ダウンストリームポート及びSSDのエンドポイントを介してAPM-Sに結果を伝送し、コントローラの結果をSSDのエンドポイントを介してプロセッサに伝達する。
ステートメント69。本発明の実施例は、ステートメント50によるシステムを含む。APM-Fは、アップストリームポートを介してプロセッサに結果を伝送する。
ステートメント70。本発明の実施例は、ステートメント3によるシステムを含む。アップストリームインターフェースは、FPGAのエンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、FPGAは、第1 PF、第2 PF、及びFPGAのルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、ストレージデバイスから受信された第1アクセラレーションコマンドをインターセプトして第1アクセラレーションコマンドをAPM-Fに配信し、第1アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲(FAR)に関連付けられ、FPGAは、第1 PFに対するプロセッサからホストシステムアドレスの第1ブロックを要請して、第2 PFに対するプロセッサからホストシステムアドレスの第2ブロックを要請し、FPGAは、プロセッサから受信されたPCIeトランザクションをストレージデバイスに伝達し、プロセッサから受信された第2アクセラレーションコマンドをAPM-Fに伝達し、PCIeトランザクションは、第1 PFの第1識別子に関連付けられ、第2アクセラレーションコマンドは、第2 PFの第2識別子に関連付けられる。
ステートメント71。本発明の実施例は、ステートメント70によるシステムを含む。SSDは、FPGAからダウンストリームFARを含むFPGAアドレスのブロックを要請し、ホストシステムアドレスの第2ブロックは、少なくともFPGAアドレスのブロックと同じ大きさであり、コントローラは、ダウンストリームFARとしてFPGAアドレスのブロックのサブセットを選択する。
ステートメント72。本発明の実施例は、ステートメント71によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント73。本発明の実施例は、ステートメント72によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント74。本発明の実施例は、ステートメント73によるシステムを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント75。本発明の実施例は、ステートメント72によるシステムを含む。コントローラは、PCIe VDMを使用してダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント76。本発明の実施例は、ステートメント70によるシステムを含む。APM-Fは、FPGAのエンドポイントを介してプロセッサに結果を伝送する。
ステートメント77。本発明の実施例は、ステートメント70によるシステムを含む。FPGAは、ストレージデバイスのエンドポイントの性能をFPGAのエンドポイントにコピーする構成モニターを更に含む。
ステートメント78。本発明の実施例は、ステートメント3によるシステムを含む。アップストリームインターフェースは、FPGAのエンドポイントを含み、ダウンストリームインターフェースは、第1構成空間を支援するFPGAの第1ルートポート及び第2構成空間を支援するFPGAの第2ルートポートを含み、SSDのエンドポイントは、FPGAの第1ルートポートに関連付けられ、SSDは、FPGAの第2ルートポートに関連付けられたSSDの第2エンドポイントを更に含み、FPGAは、第1 PF及び第2 PFを含み、FPGAは、第1 PFに対するプロセッサからホストシステムアドレスの第1ブロックを要請して、第2 PFに対するプロセッサからホストシステムアドレスの第2ブロックを要請し、FPGAは、プロセッサから受信された第1 PCIeトランザクションをFPGAの第1ルートポート及びSSDのエンドポイントを介してSSDに伝送し、プロセッサから受信された第2アクセラレーションコマンドをAPM-Fに伝達し、FPGAの第1ルートポートでSSDから受信された第2 PCIeトランザクションをプロセッサに伝達し、FPGAの第2ルートポートでSSDから受信された第1アクセラレーションコマンドをAPM-Fに伝達し、第1 PCIeトランザクションは、第1 PFの第1識別子に関連付けられ、第2アクセラレーションコマンドは、第2 PFの第2識別子に関連付けられる。
ステートメント79。本発明の実施例は、ステートメント78によるシステムを含む。第2アクセラレーションコマンドは、APM-Sによって生成される。
ステートメント80。本発明の実施例は、ステートメント78によるシステムを含む。APM-Fは、FPGAのエンドポイントを介してプロセッサに結果を伝送する。
ステートメント81。本発明の実施例は、ステートメント78によるシステムを含む。FPGAは、ストレージデバイスのエンドポイントの性能をFPGAのエンドポイントにコピーする構成モニターを更に含む。
ステートメント82。本発明の実施例は、ステートメント78によるシステムを含む。アップストリームインターフェースは、FPGAの第2エンドポイントを更に含み、FPGAは、FPGAのエンドポイントでプロセッサから受信された第1 PCIeトランザクションをFPGAの第1ルートポート及びSSDのエンドポイントを介してSSDに伝達し、FPGAの第2エンドポイントでプロセッサから受信された第2アクセラレーションコマンドをAPM-Fに伝達する。
ステートメント83。本発明の実施例は、ステートメント82によるシステムを含む。第2アクセラレーションコマンドは、APM-Sによって生成される。
ステートメント84。本発明の実施例は、ステートメント82によるシステムを含む。APM-Fは、FPGAのエンドポイントを介してプロセッサに結果を伝送する。
ステートメント85。本発明の実施例は、ステートメント82によるシステムを含む。FPGAは、ストレージデバイスのエンドポイントの性能をFPGAのエンドポイントにコピーする構成モニターを更に含む。
ステートメント86。本発明の実施例は、ステートメント3によるシステムを含む。アップストリームインターフェースは、FPGAの第1エンドポイント及びFPGAの第2エンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、FPGAは、FPGAのルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、SSDから受信された第1アクセラレーションコマンドをインターセプトしてAPM-Fに第1アクセラレーションコマンドを配信し、第1アクセラレーションコマンドは、ダウンストリームFARに関連付けられ、FPGAは、FPGAエンドポイントでプロセッサから受信された第1 PCIeトランザクションをFPGAのルートポート及びSSDのエンドポイントを介してSSDに伝達し、FPGAの第2エンドポイントでプロセッサから受信された第2アクセラレーションコマンドをAPM-Fに伝達し、FPGAの第1ルートポートでSSDから受信されたダウンストリームFARに関連付けられていない第2 PCIeトランザクションを、FPGAのエンドポイントを介してプロセッサに伝達し、FPGAの第2ルートポートでSSDから受信された第1アクセラレーションコマンドをAPM-Fに伝達する。
ステートメント87。本発明の実施例は、ステートメント86によるシステムを含む。第2アクセラレーションコマンドは、APM-Sによって生成される。
ステートメント88。本発明の実施例は、ステートメント86によるシステムを含む。SSDは、ダウンストリームFARを含むFPGAアドレスのブロックをFPGAから要請し、FPGAは、少なくともFPGAアドレスのブロックと同じ大きさのホストシステムアドレスのブロックをFPGAの第1エンドポイントに対するプロセッサから要請し、コントローラは、ダウンストリームFARとしてFPGAアドレスのブロックのサブセットを選択する。
ステートメント89。本発明の実施例は、ステートメント88によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント90。本発明の実施例は、ステートメント89によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント91。本発明の実施例は、ステートメント90によるシステムを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント92。本発明の実施例は、ステートメント89によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラミングするためにPCIe VDMを使用する。
ステートメント93。本発明の実施例は、ステートメント86によるシステムを含む。APM-Fは、FPGAのエンドポイントを介してプロセッサに結果を伝送する。
ステートメント94。本発明の実施例は、ステートメント86によるシステムを含む。FPGAは、ストレージデバイスのエンドポイントの性能をFPGAのエンドポイントにコピーする構成モニターを更に含む。
ステートメント95。本発明の実施例は、アクセラレーションモジュールを含む。アクセラレーションモジュールは、アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー(APM-F)と、アプリケーションを実行中のプロセッサと通信するためのアップストリームインターフェース(アップストリームポート)と、アクセラレーションコマンドを実行する際にAPM-Fを補助するアクセラレーションプラットフォームマネージャー(APM-S)を含むストレージデバイスと通信するためのダウンストリームインターフェース(ダウンストリームポート)と、を備え、アクセラレーションモジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用してプロセッサ及びストレージデバイスと通信し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、アプリケーションのためのストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
ステートメント96。本発明の実施例は、ステートメント95によるアクセラレーションモジュールを含む。アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を用いて具現される。
ステートメント97。本発明の実施例は、ステートメント96によるアクセラレーションモジュールを含む。APM-FとAPM-Sとは、アクセラレーションコマンドと共に使用されるアプリケーションデータに関するダウンストリームインターフェースを使用して通信する。
ステートメント98。本発明の実施例は、ステートメント96によるアクセラレーションモジュールを含む。APM-FとAPM-Sとはメッセージを使用して通信する。
ステートメント99。本発明の実施例は、ステートメント96によるアクセラレーションモジュールを含む。FPGAは、アクセラレーションエンジンと、アクセラレーションエンジンでアクセラレーションコマンドをスケジューリングするランタイムスケジューラ(run-time scheduler)と、を更に含む。
ステートメント100。本発明の実施例は、ステートメント96によるアクセラレーションモジュールを含む。アップストリームインターフェースは、アップストリームポートを含み、ダウンストリームインターフェースは、ダウンストリームポートを含み、FPGAは、アップストリームポートでプロセッサから受信された第1 PCIeトランザクションをストレージデバイスに伝達し、FPGAは、ダウンストリームポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、ストレージデバイスから受信されたアクセラレーションコマンドをインターセプトしてAPM-Fにアクセラレーションコマンドを配信し、アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲(FAR)に関連付けられ、FPGAは、ダウンストリームポートでストレージデバイスから受信されたダウンストリームFARに関連付けられていない第2 PCIeトランザクションをプロセッサに伝送する。
ステートメント101。本発明の実施例は、ステートメント100によるアクセラレーションモジュールを含む。FPGAのダウンストリームフィルタでダウンストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント102。本発明の実施例は、ステートメント101によるアクセラレーションモジュールを含む。FPGAのダウンストリームフィルタでダウンストリームFARは、サイドバンドバスを介してストレージデバイスによってプログラミングされる。
ステートメント103。本発明の実施例は、ステートメント102によるアクセラレーションモジュールを含む。サイドバンドバスは、I2C(Inter-Integrated Circuit)バス及びSM(System Management Bus)バスを含むセットから成る。
ステートメント104。本発明の実施例は、ステートメント101によるアクセラレーションモジュールを含む。FPGAのダウンストリームフィルタでダウンストリームFARは、PCIe VDM(Vendor Defined Message)を使用して、ストレージデバイスによってプログラミングされる。
ステートメント105。本発明の実施例は、ステートメント100によるアクセラレーションモジュールを含む。APM-Fは、ダウンストリームポートを介してストレージデバイスのAMP-Sに結果を伝送する。
ステートメント106。本発明の実施例は、ステートメント100によるアクセラレーションモジュールを含む。APM-Fは、アップストリームポートを介してプロセッサに結果を伝送する。
ステートメント107。本発明の実施例は、ステートメント100によるアクセラレーションモジュールを含む。APM-FとAPM-Sとはメッセージを使用して通信する。
ステートメント108。本発明の実施例は、ステートメント100によるアクセラレーションモジュールを含む。FPGAは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第2アクセラレーションコマンドをインターセプトしてアップストリームFARに関連付けられた第2アクセラレーションコマンドをAPM-Fに配信し、FPGAは、アップストリームポートでプロセッサから受信されたアップストリームFARに関連付けられていない第3 PCIeトランザクションをストレージデバイスに伝送する。
ステートメント109。本発明の実施例は、ステートメント108によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタ内でアップストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント110。本発明の実施例は、ステートメント109によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタ内でアップストリームFARは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント111。本発明の実施例は、ステートメント110によるアクセラレーションモジュールを含む。サイドバンドバスは、I2C(Inter-Integrated Circuit)バス及びSMBus(System Management Bus)を含むセットから成る。
ステートメント112。本発明の実施例は、ステートメント109によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタ内でアップストリームFARは、PCIe VDMを用いてストレージデバイスによってプログラミングされる。
ステートメント113。本発明の実施例は、ステートメント108によるアクセラレーションモジュールを含む。APM-Fは、ダウンストリームポートを介してストレージデバイスのAMP-Sに結果を伝送する。
ステートメント114。本発明の実施例は、ステートメント108によるアクセラレーションモジュールを含む。APM-Fは、アップストリームポートを介してプロセッサに結果を伝送する。
ステートメント115。本発明の実施例は、ステートメント108によるアクセラレーションモジュールを含む。APM-FとAPM-Sとはメッセージを使用して通信する。
ステートメント116。本発明の実施例は、ステートメント108によるアクセラレーションモジュールを含む。FPGAは、ストレージデバイスに割り当てられた非揮発性メモリエクスプレス(NVMe)レジスタを介してプロセッサに間接的に露出される。
ステートメント117。本発明の実施例は、ステートメント100によるアクセラレーションモジュールを含む。FPGAは、ストレージデバイスの仮想機能(VF)により露出され、FPGAは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第2アクセラレーションコマンドをインターセプトして第2アクセラレーションコマンドをAPM-Fに配信し、FPGAは、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされていない第3 PCIeトランザクションをストレージデバイスに伝送する。
ステートメント118。本発明の実施例は、ステートメント117によるアクセラレーションモジュールを含む。第2アクセラレーションコマンドは、アップストリームFARに関連付けられ、アップストリームフィルタは、アップストリームFARに関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント119。本発明の実施例は、ステートメント118によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタ内でアップストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント120。本発明の実施例は、ステートメント119によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタ内でアップストリームFARは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント121。本発明の実施例は、ステートメント120によるアクセラレーションモジュールを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント122。本発明の実施例は、ステートメント119によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタ内でアップストリームFARは、PCIe VDMを使用してストレージデバイスによってプログラミングされる。
ステートメント123。本発明の実施例は、ステートメント117によるアクセラレーションモジュールを含む。第2アクセラレーションコマンドは、VFの識別子を含み、アップストリームフィルタは、VFの識別子に関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント124。本発明の実施例は、ステートメント123によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタは、ストレージデバイスによりVFの識別子でプログラミングされる。
ステートメント125。本発明の実施例は、ステートメント124によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによりVFの識別子でプログラミングされる。
ステートメント126。本発明の実施例は、ステートメント125によるアクセラレーションモジュールを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント127。本発明の実施例は、ステートメント124によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタは、PCIe VDMを用いてストレージデバイスによりVFの識別子でプログラミングされる。
ステートメント128。本発明の実施例は、ステートメント117によるアクセラレーションモジュールを含む。APM-Fは、ダウンストリームポートを介してストレージデバイスのAMP-Sに結果を伝送する。
ステートメント129。本発明の実施例は、ステートメント117によるアクセラレーションモジュールを含む。APM-Fは、アップストリームポートを介してプロセッサに結果を伝送する。
ステートメント130。本発明の実施例は、ステートメント117によるアクセラレーションモジュールを含む。APM-FとAPM-Sとは、メッセージを使用して通信する。
ステートメント131。本発明の実施例は、ステートメント100によるアクセラレーションモジュールを含む。FPGAは、ストレージデバイスの物理関数(PF)により露出され、FPGAは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第2アクセラレーションコマンドをインターセプトして第2アクセラレーションコマンドをAPM-Fに配信し、FPGAは、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされていない第3 PCIeトランザクションをストレージデバイスに伝送する。
ステートメント132。本発明の実施例は、ステートメント131によるアクセラレーションモジュールを含む。第2アクセラレーションコマンドは、アップストリームFARに関連付けられ、アップストリームフィルタは、アップストリームFARに関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント133。本発明の実施例は、ステートメント132によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタ内でアップストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント134。本発明の実施例は、ステートメント133によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタ内でアップストリームFARは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント135。本発明の実施例は、ステートメント134によるアクセラレーションモジュールを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント136。本発明の実施例は、ステートメント133によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタ内でアップストリームFARは、PCIe VDMを使用してストレージデバイスによってプログラミングされる。
ステートメント137。本発明の実施例は、ステートメント131によるアクセラレーションモジュールを含む。第2アクセラレーションコマンドは、PFの識別子を含み、アップストリームフィルタは、PFの識別子に関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント138。本発明の実施例は、ステートメント137によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタは、ストレージデバイスによりPFの識別子でプログラミングされる。
ステートメント139。本発明の実施例は、ステートメント138によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによりPFの識別子でプログラミングされる。
ステートメント140。本発明の実施例は、ステートメント139によるアクセラレーションモジュールを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント141。本発明の実施例は、ステートメント138によるアクセラレーションモジュールを含む。FPGAのアップストリームフィルタは、PCIe VDMを使用してストレージデバイスによりPFの識別子でプログラミングされる。
ステートメント142。本発明の実施例は、ステートメント131によるアクセラレーションモジュールを含む。APM-Fは、ダウンストリームポートを介してAPM-Sに結果を伝送する。
ステートメント143。本発明の実施例は、ステートメント131によるアクセラレーションモジュールを含む。APM-Fは、アップストリームポートを介してプロセッサに結果を伝送する。
ステートメント144。本発明の実施例は、ステートメント131によるアクセラレーションモジュールを含む。APM-FとAPM-Sとは、メッセージを使用して通信する。
ステートメント145。本発明の実施例は、ステートメント96によるアクセラレーションモジュールを含む。アップストリームインターフェースは、FPGAのエンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、FPGAは、第1 PF、第2 PF、及びFPGAのルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、ストレージデバイスから受信された第1アクセラレーションコマンドをインターセプトして第1アクセラレーションコマンドをAPM-Fに配信し、第1アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲(FAR)に関連付けられ、FPGAは、第1 PFに対するプロセッサからホストシステムアドレスの第1ブロックを要請して、第2 PFに対するプロセッサからホストシステムアドレスの第2ブロックを要請し、FPGAは、プロセッサから受信されたPCIeトランザクションをストレージデバイスに伝達し、プロセッサから受信された第2アクセラレーションコマンドをAPM-Fに伝達し、PCIeトランザクションは、第1 PFの第1識別子に関連付けられ、第2アクセラレーションコマンドは、第2 PFの第2識別子に関連付けられる。
ステートメント146。本発明の実施例は、ステートメント145によるアクセラレーションモジュールを含む。FPGAは、FPGAからダウンストリームFARを含むFPGAアドレスのブロックに対する要請をストレージデバイスから受信し、FPGAは、構成空間からFPGAアドレスのブロックを割り当て、ホストシステムアドレスの第1ブロックは、少なくともFPGAアドレスのブロックと同じ大きさである。
ステートメント147。本発明の実施例は、ステートメント146によるアクセラレーションモジュールを含む。FPGAのダウンストリームフィルタ内でダウンストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント148。本発明の実施例は、ステートメント147によると、アクセラレーションモジュールを含む。FPGAのダウンストリームフィルタ内でダウンストリームFARは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント149。本発明の実施例は、ステートメント148によるアクセラレーションモジュールを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント150。本発明の実施例は、ステートメント147によるアクセラレーションモジュールを含む。FPGAのダウンストリームフィルタ内でダウンストリームFARは、PCIe VDMを用いてストレージデバイスによってプログラミングされる。
ステートメント151。本発明の実施例は、ステートメント145によるアクセラレーションモジュールを含む。APM-Fは、FPGAのエンドポイントを介してプロセッサに結果を伝送する。
ステートメント152。本発明の実施例は、ステートメント145によるアクセラレーションモジュールを含む。APM-FとAPM-Sとは、メッセージを使用して通信する。
ステートメント153。本発明の実施例は、ステートメント145によるアクセラレーションモジュールを含む。FPGAは、ストレージデバイスのエンドポイントの性能をFPGAのエンドポイントにコピーする構成モニターを更に含む。
ステートメント154。本発明の実施例は、ステートメント96によるアクセラレーションモジュールを含む。アップストリームインターフェースは、FPGAのエンドポイントを含み、ダウンストリームインターフェースは、第1構成空間を支援するFPGAの第1ルートポート及び第2構成空間を支援するFPGAの第2ルートポートを含み、SSDのエンドポイントは、FPGAの第1ルートポートに関連付けられ、SSDは、FPGAの第2ルートポートに関連付けられたSSDの第2エンドポイントを更に含み、FPGAは、第1 PF及び第2 PFを含み、FPGAは、第1 PFに対するプロセッサからホストシステムアドレスの第1ブロックを要請して、第2 PFに対するプロセッサからホストシステムアドレスの第2ブロックを要請し、FPGAは、プロセッサから受信された第1 PCIeトランザクションをFPGAの第1ルートポート及びSSDのエンドポイントを介してSSDに伝送し、プロセッサから受信された第2アクセラレーションコマンドをAPM-Fに伝達し、FPGAの第1ルートポートでSSDから受信された第2 PCIeトランザクションをプロセッサに伝達し、FPGAの第2ルートポートでSSDから受信された第1アクセラレーションコマンドをAPM-Fに伝達する。
ステートメント155。本発明の実施例は、ステートメント154によるアクセラレーションモジュールを含む。APM-Fは、FPGAのエンドポイントを介してプロセッサに結果を伝送する。
ステートメント156。本発明の実施例は、ステートメント154によるアクセラレーションモジュールを含む。APM-FとAPM-Sとは、メッセージを使用して通信する。
ステートメント157。本発明の実施例は、ステートメント154によるアクセラレーションモジュールを含む。FPGAは、ストレージデバイスのエンドポイントの性能をFPGAのエンドポイントにコピーする構成モニターを更に含む。
ステートメント158。本発明の実施例は、ステートメント154によるアクセラレーションモジュールを含む。アップストリームインターフェースは、FPGAの第2エンドポイントを更に含み、FPGAは、FPGAエンドポイントでプロセッサから受信された第1 PCIeトランザクションをFPGAの第1ルートポート及びSSDのエンドポイントを介してSSDに伝達し、FPGAの第2エンドポイントでプロセッサから受信された第2アクセラレーションコマンドをAPM-Fに伝達する。
ステートメント159。本発明の実施例は、ステートメント158によるアクセラレーションモジュールを含む。APM-Fは、FPGAのエンドポイントを介してプロセッサに結果を伝送する。
ステートメント160。本発明の実施例は、ステートメント158によるアクセラレーションモジュールを含む。APM-FとAPM-Sとは、メッセージを使用して通信する。
ステートメント161。本発明の実施例は、ステートメント158によるアクセラレーションモジュールを含む。FPGAは、ストレージデバイスのエンドポイントの性能をFPGAのエンドポイントにコピーする構成モニターを更に含む。
ステートメント162。本発明の実施例は、ステートメント96によるアクセラレーションモジュールを含む。アップストリームインターフェースは、FPGAの第1エンドポイント及びFPGAの第2エンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、FPGAは、FPGAのルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、SSDから受信された第1アクセラレーションコマンドをインターセプトしてAPM-Fに第1アクセラレーションコマンドを配信し、第1アクセラレーションコマンドは、ダウンストリームFARに関連付けられ、FPGAは、FPGAエンドポイントでプロセッサから受信された第1 PCIeトランザクションをFPGAの第1ルートポート及びSSDのエンドポイントを介してSSDに伝達し、FPGAの第2エンドポイントでプロセッサから受信された第2アクセラレーションコマンドをAPM-Fに伝達し、FPGAの第1ルートポートでSSDから受信されたダウンストリームFARに関連付けられていない第2 PCIeトランザクションを、FPGAエンドポイントを介してプロセッサに伝達し、FPGAの第2ルートポートでSSDから受信された第1アクセラレーションコマンドをAPM-Fに伝達する。
ステートメント163。本発明の実施例は、ステートメント162によるアクセラレーションモジュールを含む。FPGAは、FPGAからダウンストリームFARを含むFPGAアドレスのブロックの要請をストレージデバイスから受信し、FPGAは、構成空間からFPGAアドレスのブロックを割り当て、FPGAは、FPGAの第1エンドポイントに対してプロセッサから少なくともFPGAアドレスのブロックと同じ大きさのホストシステムアドレスのブロックを要請する。
ステートメント164。本発明の実施例は、ステートメント163によるアクセラレーションモジュールを含む。FPGAのダウンストリームフィルタ内のダウンストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント165。本発明の実施例は、ステートメント164によるアクセラレーションモジュールを含む。FPGAのダウンストリームフィルタ内のダウンストリームFARは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント166。本発明の実施例は、ステートメント165によるアクセラレーションモジュールを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント167。本発明の実施例は、ステートメント164によるアクセラレーションモジュールを含む。FPGAのダウンストリームフィルタ内のダウンストリームFARは、PCIe VDMを用いてストレージデバイスによってプログラミングされる。
ステートメント168。本発明の実施例は、ステートメント162によるアクセラレーションモジュールを含む。APM-Fは、FPGAのエンドポイントを介してプロセッサに結果を伝送する。
ステートメント169。本発明の実施例は、ステートメント162によるアクセラレーションモジュールを含む。APM-FとAPM-Sとは、メッセージを使用して通信する。
ステートメント170。本発明の実施例は、ステートメント162によるアクセラレーションモジュールを含む。FPGAは、ストレージデバイスのエンドポイントの性能をFPGAのエンドポイントにコピーする構成モニターを更に含む。
ステートメント171。本発明の実施例は、ハードウェアを用いて具現される第1ブリッジコンポーネント(構成要素)を含む。第1ブリッジコンポーネントは、アプリケーションを実行中のプロセッサと通信するためのアップストリームインターフェースと、アクセラレーションモジュール及びストレージデバイスと通信するためのダウンストリームインターフェースと、を備え、第1ブリッジ構成要素(コンポーネント)は、PCIe(Peripheral Component Interconnect Exchange)バスを使用してプロセッサ、アクセラレーションモジュール、及びストレージデバイスと通信し、ダウンストリームインターフェースは、PCIeトランザクションがアクセラレーションコマンドを含むか否かに応じてプロセッサからアクセラレーションモジュール又はストレージデバイスにPCIeトランザクションを配信する。
ステートメント172。本発明の実施例は、ステートメント171による第1ブリッジコンポーネント(構成要素)を含む。アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を用いて具現され、ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント173。本発明の実施例は、ステートメント171による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)は、第2ブリッジコンポーネント(構成要素)を更に含み、第2ブリッジ構成要素(コンポーネント)は、プロセッサ及びアクセラレーションモジュールと通信するための第2アップストリームインターフェースと、ストレージデバイスと通信するための第2ダウンストリームインターフェースと、を含み、第2ブリッジ構成要素(コンポーネント)は、PCIe(Peripheral Component Interconnect Exchange)バスを使用してプロセッサ、アクセラレーションモジュール、及びストレージデバイスと通信し、第2アップストリームインターフェースは、第2 PCIeトランザクションが第2アクセラレーションコマンドを含むか否かに応じてストレージデバイスからプロセッサ又はアクセラレーションモジュールに第2 PCIeトランザクションを配信する。
ステートメント174。本発明の実施例は、ステートメント171による第1ブリッジコンポーネントを含む。アップストリームインターフェースは、アップストリームポートと、アップストリームポートに関連付けられたアップストリームフィルタと、を含み、アップストリームフィルタは、プロセッサから受信されたアップストリームFARに関連付けられた第2アクセラレーションコマンドを識別し、ダウンストリームインターフェースは、第2アクセラレーションコマンドをアクセラレーションモジュールに伝達し、アップストリームポートでプロセッサから受信されたアップストリームFARに関連付けられていない第3 PCIeトランザクションをストレージデバイスに伝送する。
ステートメント175。本発明の実施例は、ステートメント174による第1ブリッジコンポーネントを含む。第1ブリッジコンポーネントのアップストリームフィルタ内でアップストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント176。本発明の実施例は、ステートメント175による第1ブリッジコンポーネントを含む。第1ブリッジコンポーネントのアップストリームフィルタ内でアップストリームFARは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント177。本発明の実施例は、ステートメント176による第1ブリッジコンポーネントを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント178。本発明の実施例は、ステートメント175による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタ内でPCIe VDMは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント179。本発明の実施例は、ステートメント174による第1ブリッジコンポーネントを含む。FPGAは、ストレージデバイスに割り当てられた非揮発性メモリエクスプレス(NVMe)レジスタを介してプロセッサに間接的に露出される。
ステートメント180。本発明の実施例は、ステートメント171による第1ブリッジコンポーネントを含む。アップストリームインターフェースは、ストレージデバイスの仮想関数(VF)により露出され、アップストリームインターフェースは、アップストリームポートと、アップストリームポートに関連付けられたアップストリームフィルタと、を含み、アップストリームフィルタは、アクセラレーションモジュールに対する第2アクセラレーションコマンドを識別し、ダウンストリームインターフェースは、第2アクセラレーションコマンドをアクセラレーションモジュールに伝達し、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされていない第3 PCIeトランザクションをストレージデバイスに伝送する。
ステートメント181。本発明の実施例は、ステートメント180による第1ブリッジコンポーネントを含む。第2アクセラレーションコマンドは、アップストリームFARに関連付けられ、アップストリームフィルタは、アップストリームFARに関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント182。本発明の実施例は、ステートメント181による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタ内でアップストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント183。本発明の実施例は、ステートメント182による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタ内でアップストリームFARは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント184。本発明の実施例は、ステートメント183による第1ブリッジコンポーネントを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント185。本発明の実施例は、ステートメント182による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタ内でアップストリームFARは、PCIe VDMを使用してストレージデバイスによってプログラミングされる。
ステートメント186。本発明の実施例は、ステートメント180による第1ブリッジコンポーネントを含む。第2アクセラレーションコマンドは、VFの識別子を含み、アップストリームフィルタは、VFの識別子に関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント187。本発明の実施例は、ステートメント186による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタは、ストレージデバイスによりVFの識別子でプログラミングされる。
ステートメント188。本発明の実施例は、ステートメント187による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによりVFの識別子でプログラミングされる。
ステートメント189。本発明の実施例は、ステートメント188による第1ブリッジコンポーネントを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント190。本発明の実施例は、ステートメント187による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタは、PCIe VDMを使用してストレージデバイスによりVFの識別子でプログラミングされる。
ステートメント191。本発明の実施例は、ステートメント171による第1ブリッジコンポーネントを含む。アップストリームインターフェースは、ストレージデバイスの物理関数(PF)により露出され、アップストリームインターフェースは、アップストリームポートと、アップストリームポートに関連付けられたアップストリームフィルタと、を含み、アップストリームフィルタは、アクセラレーションモジュールに対する第2アクセラレーションコマンドを識別し、ダウンストリームインターフェースは、第2アクセラレーションコマンドをアクセラレーションモジュールに伝送し、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされていない第3 PCIeトランザクションをストレージデバイスに伝送する。
ステートメント192。本発明の実施例は、ステートメント191による第1ブリッジコンポーネントを含む。第2アクセラレーションコマンドは、アップストリームFARに関連付けられ、アップストリームフィルタは、アップストリームFARに関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント193。本発明の実施例は、ステートメント192による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタは、ストレージデバイスによってプログラミングされる。
ステートメント194。本発明の実施例は、ステートメント193による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント195。本発明の実施例は、ステートメント194による第1ブリッジコンポーネントを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント196。本発明の実施例は、ステートメント193による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタは、PCIe VDMを用いてストレージデバイスによってプログラミングされる。
ステートメント197。本発明の実施例は、ステートメント191による第1ブリッジコンポーネントを含む。第2アクセラレーションコマンドは、PFの識別子を含み、アップストリームフィルタは、PFの識別子に関連付けられた第2アクセラレーションコマンドをインターセプトする。
ステートメント198。本発明の実施例は、ステートメント197による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタは、ストレージデバイスによりPFの識別子でプログラミングされる。
ステートメント199。本発明の実施例は、ステートメント198による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによりPFの識別子でプログラミングされる。
ステートメント200。本発明の実施例は、ステートメント199による第1ブリッジコンポーネントを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント201。本発明の実施例は、ステートメント198による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)のアップストリームフィルタは、PCIe VDMを使用してストレージデバイスによりPFの識別子でプログラミングされる。
ステートメント202。本発明の実施例は、ステートメント171による第1ブリッジコンポーネントを含む。アップストリームインターフェースは、エンドポイント、第1 PF、及び第2 PFを含み、ダウンストリームインターフェースは、プロセッサから受信されたPCIeトランザクションをストレージデバイスに伝送して、プロセッサから受信された第2アクセラレーションコマンドをアクセラレーションモジュールに伝送し、PCIeトランザクションは、第1 PFの第1識別子に関連付けられ、第2アクセラレーションコマンドは、第2 PFの第2識別子に関連付けられる。
ステートメント203。本発明の実施例は、ステートメント202による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)は、ストレージデバイスのエンドポイントの性能をエンドポイントにコピーする構成モニターを更に含む。
ステートメント204。本発明の実施例は、ステートメント171による第1ブリッジコンポーネントを含む。アップストリームインターフェースは、第1エンドポイントと、第2エンドポイントと、を含み、ダウンストリームインターフェースは、プロセッサから受信された第1エンドポイントに関連付けられたPCIeトランザクションをストレージデバイスに伝達して、プロセッサから受信された第2アクセラレーションコマンドをアクセラレーションモジュールに伝達し、第2アクセラレーションコマンドは、第2エンドポイントに関連付けられる。
ステートメント205。本発明の実施例は、ステートメント204による第1ブリッジコンポーネントを含む。第1ブリッジ構成要素(コンポーネント)は、ストレージデバイスのエンドポイントの性能を第1エンドポイントにコピーする構成モニターを更に含む。
ステートメント206。本発明の実施例は、ハードウェアを用いて具現される第2ブリッジコンポーネント(構成要素)を含む。第2ブリッジコンポーネントは、アクセラレーションモジュールと通信するためのアップストリームインターフェースと、ストレージデバイスと通信するためのダウンストリームインターフェースと、を備え、第2ブリッジ構成要素(コンポーネント)は、PCIe(Peripheral Component Interconnect Exchange)バスを使用してプロセッサ、アクセラレーションモジュール、及びストレージデバイスと通信し、アップストリームインターフェースは、PCIeトランザクションがアクセラレーションコマンドを含むか否かに応じてストレージデバイスからプロセッサ又はアクセラレーションモジュールにPCIeトランザクションを配信する。
ステートメント207。本発明の実施例は、ステートメント206による第2ブリッジコンポーネントを含む。アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を用いて具現され、ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント208。本発明の実施例は、ステートメント206による第2ブリッジコンポーネントを含む。ダウンストリームインターフェースは、ダウンストリームポートと、ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲(FAR)に関連付けられたアクセラレーションコマンドを識別するダウンストリームフィルタと、を含み、ダウンストリームインターフェースは、アクセラレーションコマンドをアクセラレーションモジュールに伝送して、ダウンストリームポートでストレージデバイスから受信されたダウンストリームFARに関連付けられていない第2 PCIeトランザクションをプロセッサに伝達する。
ステートメント209。本発明の実施例は、ステートメント208による第2ブリッジコンポーネントを含む。第2ブリッジ構成要素(コンポーネント)のダウンストリームフィルタ内のダウンストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント210。本発明の実施例は、ステートメント209による第2ブリッジコンポーネントを含む。第2ブリッジ構成要素(コンポーネント)のダウンストリームフィルタ内のダウンストリームFARは、サイドバンドバスを介してストレージデバイスによってプログラミングされる。
ステートメント211。本発明の実施例は、ステートメント210による第2ブリッジコンポーネントを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント212。本発明の実施例は、ステートメント209による第2ブリッジコンポーネントを含む。第2ブリッジ構成要素(コンポーネント)のダウンストリームフィルタ内のダウンストリームFARは、PCIe VDMを使用してストレージデバイスによってプログラミングされる。
ステートメント213。本発明の実施例は、ステートメント206による第2ブリッジコンポーネントを含む。ダウンストリームインターフェースは、ルートポートと、ルートポートに関連付けられたダウンストリームフィルタと、を含み、ダウンストリームフィルタは、ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲(FAR)に関連付けられたアクセラレーションコマンドを識別し、ダウンストリームインターフェースは、アクセラレーションコマンドをアクセラレーションモジュールに伝達して、ダウンストリームポートでストレージデバイスから受信されたダウンストリームFARに関連付けられていない第2 PCIeトランザクションをプロセッサに伝達する。
ステートメント214。本発明の実施例は、ステートメント213による第2ブリッジコンポーネントを含む。第2ブリッジ構成要素(コンポーネント)のダウンストリームフィルタ内のダウンストリームFARは、ストレージデバイスによってプログラミングされる。
ステートメント215。本発明の実施例は、ステートメント214による第2ブリッジコンポーネントを含む。第2ブリッジ構成要素(コンポーネント)のダウンストリームフィルタ内のダウンストリームFARは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
ステートメント216。本発明の実施例は、ステートメント215による第2ブリッジコンポーネントを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント217。本発明の実施例は、ステートメント214による第2ブリッジコンポーネントを含む。第2ブリッジ構成要素(コンポーネント)のダウンストリームフィルタ内のダウンストリームFARは、PCIe VDMを使用してストレージデバイスによってプログラミングされる。
ステートメント218。本発明の実施例は、ステートメント206による第2ブリッジコンポーネントを含む。ダウンストリームインターフェースは、第1ルートポートと、第2ルートポートと、を含み、ダウンストリームインターフェースは、第1ルートポートでストレージデバイスから受信された第2 PCIeトランザクションをプロセッサに伝達し、第2ルートポートでストレージデバイスから受信されたアクセラレーションコマンドをアクセラレーションモジュールに伝送する。
ステートメント219。本発明の実施例は、ストレージデバイスを含む。ストレージデバイスは、アクセラレーションプラットフォームマネージャー(APM-F)を含むアクセラレーションモジュールと通信するためのストレージデバイスのエンドポイントと、ストレージデバイスの動作を管理するコントローラと、アプリケーションに対するアプリケーションデータを格納するストレージと、アクセラレーションコマンドを実行する際にAPM-Fを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(APM-S)と、を備え、ストレージデバイス及びアクセラレーションモジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して通信し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、アプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
ステートメント220。本発明の実施例は、ステートメント219によるストレージデバイスを含む。ストレージデバイスは、SSDを含む。
ステートメント221。本発明の実施例は、ステートメント220によるストレージデバイスを含む。APM-FとAPM-Sとは、アクセラレーションコマンドと共に使用されるアプリケーションデータに関するSSDのエンドポイントを使用して通信する。
ステートメント222。本発明の実施例は、ステートメント220によるストレージデバイスを含む。APM-FとAPM-Sとは、メッセージを使用して通信する。
ステートメント223。本発明の実施例は、ステートメント220によるストレージデバイスを含む。ストレージデバイスは、プロセッサから受信された非揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)を含むPCIeトランザクションをSSDに伝送する。
ステートメント224。本発明の実施例は、ステートメント220によるストレージデバイスを含む。SSDは、アクセラレーションモジュールを含む。
ステートメント225。本発明の実施例は、ステートメント220によるストレージデバイスを含む。SSDは、ダウンストリームFARに関連付けられたアクセラレーションコマンドをアクセラレーションモジュールに伝送し、第1 PCIeトランザクションは、APM-Fのために具現され、SSDは、ダウンストリームFARに関連付けられていない第1 PCIeトランザクションをアクセラレーションモジュールに伝送し、第1 PCIeトランザクションは、プロセッサのために具現される。
ステートメント226。本発明の実施例は、ステートメント225によるストレージデバイスを含む。アクセラレーションモジュールは、APM-Sによって生成される。
ステートメント227。本発明の実施例は、ステートメント226によるストレージデバイスを含む。SSDは、アクセラレーションコマンドを含む特定のコマンドをインターセプトしてアクセラレーションコマンドを生成するAPM-Sをトリガーする特定のコマンドをAPM-Sに伝達するホストインターフェースロジック(HIL)を更に含む。
ステートメント228。本発明の実施例は、ステートメント227によるストレージデバイスを含む。特定のコマンドは、プロセッサ上で実行中のアクセラレーションサービスマネージャー(ASM)から生じる。
ステートメント229。本発明の実施例は、ステートメント225によるストレージデバイスを含む。SSDは、プロセッサからホストシステムのブロックを要請し、コントローラは、ダウンストリームFARとしてホストシステムのブロックのサブセットを選択する。
ステートメント230。本発明の実施例は、ステートメント229によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント231。本発明の実施例は、ステートメント230によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングするためのサイドバンドバスを使用する。
ステートメント232。本発明の実施例は、ステートメント231によるストレージデバイスを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント233。本発明の実施例は、ステートメント230によるストレージデバイスを含む。コントローラは、PCIe VDM(Vendor Defined Message)を使用してダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント234。本発明の実施例は、ステートメント229によるストレージデバイスを含む。コントローラは、アップストリームFARとしてホストシステムアドレスのブロックの第2サブセットを選択する。
ステートメント235。本発明の実施例は、ステートメント234によるストレージデバイスを含む。コントローラは、プロセッサ上で実行中のASMによってアクセス可能な特定のレジスタ内でアップストリームFARに対する情報を格納する。
ステートメント236。本発明の実施例は、ステートメント235によるストレージデバイスを含む。特定のレジスタは、ホストシステムアドレスのブロック内にある。
ステートメント237。本発明の実施例は、ステートメント229よるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント238。本発明の実施例は、ステートメント237によるストレージデバイスを含む。コントローラは、サイドバンドバスを使用してアクセラレーションモジュールのアップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント239。本発明の実施例は、ステートメント238によるストレージデバイスを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント240。本発明の実施例は、ステートメント237によるストレージデバイスを含む。コントローラは、PCIe VDMを使用してアクセラレーションモジュールのアップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント241。本発明の実施例は、ステートメント225によるストレージデバイスを含む。SSDは、SSDのエンドポイントを介してAPM-Fから結果を受信して、結果をSSDのエンドポイントを介してプロセッサに伝送する。
ステートメント242。本発明の実施例は、ステートメント225によるストレージデバイスを含む。SSDは、物理関数(PF)及び仮想関数(VF)を含み、PFは、SSDを露出させ、VFは、アクセラレーションモジュールを露出させる。
ステートメント243。本発明の実施例は、ステートメント242によるストレージデバイスを含む。PFは、プロセッサからホストシステムアドレスの第1ブロックを要請し、コントローラは、ダウンストリームFARとしてホストシステムアドレスのブロックの第1サブセットを選択する。
ステートメント244。本発明の実施例は、ステートメント243によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント245。本発明の実施例は、ステートメント244によるストレージデバイスを含む。コントローラは、サイドバンドバスを使用してアクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント246。本発明の実施例は、ステートメント245によるストレージデバイスを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント247。本発明の実施例は、ステートメント244によるストレージデバイスを含む。コントローラは、PCIe VDMを用いてアクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント248。本発明の実施例は、ステートメント242によるストレージデバイスを含む。VFは、アップストリームFARとしてプロセッサからホストシステムアドレスの第2ブロックを要請する。
ステートメント249。本発明の実施例は、ステートメント248によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント250。本発明の実施例は、ステートメント249によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームFARでプログラミングするためのサイドバンドバスを使用する。
ステートメント251。本発明の実施例は、ステートメント250によるストレージデバイスを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント252。本発明の実施例は、ステートメント249によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームFARでプログラミングするためのPCIe VDMを使用する。
ステートメント253。本発明の実施例は、ステートメント242によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをVFの識別子でプログラミングする。
ステートメント254。本発明の実施例は、ステートメント253によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをVFの識別子でプログラミングするためのサイドバンドバスを使用する。
ステートメント255。本発明の実施例は、ステートメント254によるストレージデバイスを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント256。本発明の実施例は、ステートメント253によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをVFの識別子でプログラミングするためにPCIe VDMを使用する。
ステートメント257。本発明の実施例は、ステートメント242によるストレージデバイスを含む。コントローラは、SSDのエンドポイントを介してAPM-Fから結果を受信して、結果をSSDのエンドポイントを介してプロセッサに伝送する。
ステートメント258。本発明の実施例は、ステートメント225によるストレージデバイスを含む。SSDは、SSDを露出させる第1 PF及びFPGAを露出させる第2 PFを含む。
ステートメント259。本発明の実施例は、ステートメント258によるストレージデバイスを含む。第1 PFは、プロセッサからホストシステムアドレスの第1ブロックを要請し、コントローラは、ダウンストリームFARとしてホストシステムアドレスのブロックの第1サブセットを選択する。
ステートメント260。本発明の実施例は、ステートメント259によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント261。本発明の実施例は、ステートメント260によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント262。本発明の実施例は、ステートメント261によるストレージデバイスを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント263。本発明の実施例は、ステートメント260によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングするためにPCIe VDMを使用する。
ステートメント264。本発明の実施例は、ステートメント258によるストレージデバイスを含む。第2 PFがアップストリームFARとしてプロセッサからホストシステムアドレスの第2ブロックを要請する。
ステートメント265。本発明の実施例は、ステートメント264によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームFARでプログラミングする。
ステートメント266。本発明の実施例は、ステートメント265によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント267。本発明の実施例は、ステートメント266によるストレージデバイスを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント268。本発明の実施例は、ステートメント265によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームFARでプログラミングするためにPCIe VDMを使用する。
ステートメント269。本発明の実施例は、ステートメント258によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタを第2 PFの識別子でプログラミングする。
ステートメント270。本発明の実施例は、ステートメント269によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタを第2 PFの識別子でプログラミングするためにサイドバンドバスを使用する。
ステートメント271。ステートメント270によると、本発明の実施例は、ストレージデバイスを含む。ステートメント270において、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント272。ステートメント269によると、本発明の実施例は、ストレージデバイスを含む。ステートメント269において、コントローラは、アクセラレーションモジュールのアップストリームフィルタを第2 PFの識別子でプログラミングするためにPCIe VDMを使用する。
ステートメント273。本発明の実施例は、ステートメント258によるストレージデバイスを含む。コントローラは、SSDのエンドポイントを介してAPM-Fから結果を受信して、結果をSSDのエンドポイントを介してプロセッサに伝送する。
ステートメント274。本発明の実施例は、ステートメント225によるストレージデバイスを含む。SSDは、プロセッサからアクセラレーションモジュールのブロックを要請し、コントローラは、ダウンストリームFARとしてアクセラレーションモジュールのブロックのサブセットを選択する。
ステートメント275。本発明の実施例は、ステートメント274によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングする。
ステートメント276。本発明の実施例は、ステートメント275によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングするためにサイドバンドバスを使用する。
ステートメント277。本発明の実施例は、ステートメント276によるストレージデバイスを含む。サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント278。本発明の実施例は、ステートメント275によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームFARでプログラミングするためにPCIe VDMを使用する。
ステートメント279。本発明の実施例は、ステートメント220によるストレージデバイスを含む。ストレージデバイスは、アクセラレーションモジュールと通信するためのSSDの第2エンドポイントを更に含み、SSDのエンドポイントは、プロセッサと通信するために使用され、SSDの第2エンドポイントは、APM-Fと通信するために使用される。
ステートメント280。本発明の実施例は、方法を含む。方法は、アクセラレーションモジュールで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、アクセラレーションモジュールでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、アクセラレーションモジュールのアクセラレーションプラットフォームマネージャー(APM-F)でPCIeトランザクションを処理するステップと、PCIeトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、PCIeトランザクションを第2デバイスに配信するステップと、を有し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、アプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援し、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、PCIeバスを使用して通信する。
ステートメント281。本発明の実施例は、ステートメント280による方法を含む。アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を用いて具現される。
ステートメント282。本発明の実施例は、ステートメント281による方法を含む。アクセラレーションモジュールで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAのエンドポイントでプロセッサから第1 PCIeトランザクションを受信するステップを含み、アクセラレーションモジュールでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションがFPGAの第1 PFの識別子を有するタグを含むか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、FPGAのルートポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップを含む。
ステートメント283。本発明の実施例は、ステートメント282による方法を含む。方法は、FPGAのアップストリームポートでプロセッサから第1 PCIeトランザクションを受信するステップと、FPGAのダウンストリームポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップと、を更に含む。
ステートメント284。本発明の実施例は、ステートメント282による方法を含む。方法は、FPGAでストレージデバイスからダウンストリームFARを受信するステップと、ダウンストリームFARをFPGAのダウンストリームポートに連結するステップと、を更に含む。
ステートメント285。本発明の実施例は、ステートメント284による方法を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してダウンストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント286。本発明の実施例は、ステートメント284による方法を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント287。本発明の実施例は、ステートメント282による方法を含む。方法は、FPGAのダウンストリームポートを使用して第2 PCIeトランザクションの結果をストレージデバイスに伝送するステップを更に含む。
ステートメント288。本発明の実施例は、ステートメント282による方法を含む。方法は、FPGAのアップストリームポートを使用して第2 PCIeトランザクションの結果をプロセッサに伝送するステップを更に含む。
ステートメント289。本発明の実施例は、ステートメント282による方法を含む。方法は、FPGAのアップストリームポートでプロセッサから第1 PCIeトランザクションを受信するステップと、第1 PCIeトランザクションがFPGAのアップストリームポートに関連付けられたアップストリームフィルタアドレス範囲(FAR)内の第2アドレスに関連付けられているか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、FPGAのAPM-Fで第1 PCIeトランザクションを処理するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAのダウンストリームポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップと、を更に含む。
ステートメント290。本発明の実施例は、ステートメント289による方法を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント291。本発明の実施例は、ステートメント289による方法を含む。方法は、FPGAでストレージデバイスからアップストリームFARを受信するステップと、アップストリームFARをFPGAのアップストリームポートに連結するステップと、を更に含む。
ステートメント292。本発明の実施例は、ステートメント291による方法を含む。FPGAでストレージデバイスからアップストリームFARを受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してアップストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント293。本発明の実施例は、ステートメント292による方法を含む。FPGAでストレージデバイスからアップストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、アップストリームFARを含む。
ステートメント294。本発明の実施例は、ステートメント289による方法を含む。方法は、FPGAのアップストリームポートを使用して第1 PCIeトランザクションの結果をストレージデバイスに伝送するステップを更に含む。
ステートメント295。本発明の実施例は、ステートメント289による方法を含む。方法は、FPGAのアップストリームポートを使用して第1 PCIeトランザクションの結果をプロセッサに伝送するステップを更に含む。
ステートメント296。本発明の実施例は、ステートメント282による方法を含む。方法は、FPGAのアップストリームポートでプロセッサから第1 PCIeトランザクションを受信するステップと、第1 PCIeトランザクションがストレージデバイスによって露出される仮想関数(VF)に関連付けられているか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドであるか否かを判断するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、FPGAのAPM-Fで第1 PCIeトランザクションを処理するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAのダウンストリームポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップと、を更に含む。
ステートメント297。本発明の実施例は、ステートメント296による方法を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント298。本発明の実施例は、ステートメント296による方法を含む。第1 PCIeトランザクションが第2アクセラレーションコマンドであるか否かを判断するステップは、第1 PCIeトランザクションがVFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント299。本発明の実施例は、ステートメント298による方法を含む。方法は、FPGAでストレージデバイスからVFの識別子を受信するステップと、VFの識別子をFPGAのアップストリームポートに連結するステップと、を更に含む。
ステートメント300。本発明の実施例は、ステートメント299による方法を含む。FPGAでストレージデバイスからVFの識別子を受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してVFの識別子を受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント301。本発明の実施例は、ステートメント299による方法を含む。FPGAでストレージデバイスからVFの識別子を受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、VFの識別子を含む。
ステートメント302。本発明の実施例は、ステートメント296による方法を含む。方法は、FPGAのアップストリームポートを使用して第1 PCIeトランザクションの結果をプロセッサに伝送するステップを更に含む。
ステートメント303。本発明の実施例は、ステートメント282よる方法を含む。方法は、FPGAのアップストリームポートでプロセッサから第1 PCIeトランザクションを受信するステップと、第1 PCIeトランザクションがストレージデバイスによって露出される物理関数(PF)に関連付けられているか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドであるか否かを判断するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、FPGAのAPM-Fで第1 PCIeトランザクションを処理するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAのダウンストリームポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップと、を更に含む。
ステートメント304。本発明の実施例は、ステートメント303による方法を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント305。本発明の実施例は、ステートメント303による方法を含む。第1 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションがPFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント306。本発明の実施例は、ステートメント305による方法を含む。方法は、FPGAでストレージデバイスからPFの識別子を受信するステップと、PFの識別子をFPGAのアップストリームポートに連結するステップと、を更に含む。
ステートメント307。本発明の実施例は、ステートメント306による方法を含む。FPGAでストレージデバイスからPFの識別子を受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してPFの識別子を受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント308。本発明の実施例は、ステートメント306による方法を含む。FPGAでストレージデバイスからPFの識別子を受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、PFの識別子を含む。
ステートメント309。本発明の実施例は、ステートメント303による方法を含む。方法は、FPGAのアップストリームを使用して第1 PCIeトランザクションの結果をストレージデバイスに伝送するステップを更に含む。
ステートメント310。本発明の実施例は、ステートメント303による方法を含む。方法は、FPGAのアップストリームを使用して第1 PCIeトランザクションの結果をプロセッサに伝送するステップを更に含む。
ステートメント311。本発明の実施例は、ステートメント281による方法を含む。FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAのエンドポイントでプロセッサから第1 PCIeトランザクションを受信するステップを含み、アクセラレーションモジュールでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションがFPGAの第1 PFの第1識別子を有するタグを含むか、又はFPGAの第2 PFの第2識別子を有するタグを含むか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、FPGAのルートポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップを含む。
ステートメント312。本発明の実施例は、ステートメント311による方法を含む。方法は、FPGAのルートポートでストレージデバイスから第2 PCIeトランザクションを受信するステップと、FPGAで第2 PCIeトランザクションがFPGAのルートポートに関連付けられたダウンストリームFAR内のアドレスに関連付けられているか否かを判断することにより、第2 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、第2 PCIeトランザクションが第2アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、FPGAのAPM-Fで第1 PCIeトランザクションを処理するステップと、第2 PCIeトランザクションが第2アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAのエンドポイントを使用して第2 PCIeトランザクションをプロセッサに配信するステップと、を更に含む。
ステートメント313。本発明の実施例は、ステートメント312による方法を含む。方法は、FPGAでストレージデバイスからダウンストリームFARを受信するステップと、ダウンストリームFARをFPGAのルートポートに連結するステップと、を更に含む。
ステートメント314。本発明の実施例は、ステートメント313による方法を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してダウンストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント315。本発明の実施例は、ステートメント313による方法を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント316。本発明の実施例は、ステートメント311による方法を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント317。本発明の実施例は、ステートメント311による方法を含む。方法は、FPGAのエンドポイントを使用してプロセッサに第1 PCIeのトランザクションの結果を伝送するステップを更に含む。
ステートメント318。本発明の実施例は、ステートメント311による方法を含む。方法は、FPGAの構成モニターを使用してFPGAのルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、FPGAのエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント319。本発明の実施例は、ステートメント281による方法を含む。FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAのエンドポイントでプロセッサから第1 PCIeトランザクションを受信するステップを含み、アクセラレーションモジュールでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第1 PCIeトランザクションがFPGAの第1 PFの第1識別子を有するタグを含むか、又はFPGAの第2 PFの第2識別子を有するタグを含むか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、FPGAのルートポートを使用して第1 PCIeトランザクションを第2ストレージデバイスに配信するステップを含む。
ステートメント320。本発明の実施例は、ステートメント319による方法を含む。方法は、FPGAでストレージデバイスから第2 PCIeトランザクションを受信するステップと、第2 PCIeトランザクションがFPGAの第1ルートポートで受信されるか又はFPGAの第2ルートポートで受信されるか否かを判断するステップと、第2 PCIeトランザクションがFPGAの第1のルートポートで受信されると判断することに少なくとも部分的に基づいて、エンドポイントを使用して第2 PCIeトランザクションをプロセッサに配信するステップと、第2 PCIeトランザクションがFPGAの第2のルートポートで受信されると判断することに少なくとも部分的に基づいて、FPGAのAMP-Fで第2 PCIeトランザクションを処理するステップと、を更に含む。
ステートメント321。本発明の実施例は、ステートメント319による方法を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント322。本発明の実施例は、ステートメント319による方法を含む。方法は、FPGAのエンドポイントを使用してプロセッサに第1 PCIeのトランザクションの結果を伝送するステップを更に含む。
ステートメント323。本発明の実施例は、ステートメント319による方法を含む。方法は、FPGAの構成モニターを使用してFPGAの第1のルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、FPGAのエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント324。本発明の実施例は、ステートメント281による方法を含む。FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAでプロセッサから第1 PCIeトランザクションを受信するステップを含み、FPGAで第1 PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含むFPGAの第1エンドポイントでプロセッサから受信されるか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、第1ルートポート及び第2ルートポートを含むFPGAの第1ルートポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップを含む。
ステートメント325。本発明の実施例は、ステートメント324による方法を含む。方法は、FPGAでストレージデバイスから第2 PCIeトランザクションを受信するステップと、第2 PCIeトランザクションがFPGAの第1ルートポートで受信されるか又はFPGAの第2ルートポートで受信されるか否かを判断することにより、第2 PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、第2 PCIeトランザクションがFPGAの第1のルートポートで受信されると判断することに少なくとも部分的に基づいて、第1エンドポイントを使用して第2 PCIeトランザクションをプロセッサに配信するステップと、第2 PCIeトランザクションがFPGAの第2ルートポートで受信されると判断することに少なくとも部分的に基づいて、FPGAのAMP-Fで第2 PCIeトランザクションを処理するステップと、を更に含む。
ステートメント326。本発明の実施例は、ステートメント324による方法を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント327。本発明の実施例は、ステートメント324による方法を含む。方法は、FPGAの第2エンドポイントを使用してプロセッサに第1 PCIeのトランザクションの結果を伝送するステップを更に含む。
ステートメント328。本発明の実施例は、ステートメント324による方法を含む。方法は、FPGAの構成モニターを使用してFPGAの第1ルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、FPGAの第1エンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント329。本発明の実施例は、ステートメント281による方法を含む。FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAでプロセッサから第1 PCIeトランザクションを受信するステップを含み、アクセラレーションモジュールで第1 PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含むFPGAの第1エンドポイントでプロセッサから受信されるか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、FPGAのルートポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップを含む。
ステートメント330。本発明の実施例は、ステートメント329による方法を含む。方法は、FPGAのルートポートでストレージデバイスから第2 PCIeトランザクションを受信するステップと、FPGAで第2 PCIeトランザクションがFPGAのルートポートに関連付けられたダウンストリームFAR内のアドレスに関連付けられているか否かを判断することにより、第2 PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、第2 PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、第2 PCIeトランザクションをFPGAのAPM-Fで処理するステップと、第2 PCIeトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAの第1エンドポイントを使用して第2 PCIeトランザクションをプロセッサに配信するステップと、を更に含む。
ステートメント331。本発明の実施例は、ステートメント330による方法を含む。方法は、FPGAでストレージデバイスからダウンストリームFARを受信するステップと、ダウンストリームFARをFPGAのルートポートに連結するステップと、を更に含む。
ステートメント332。本発明の実施例は、ステートメント331による方法を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してダウンストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント333。本発明の実施例は、ステートメント331による方法を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント334。本発明の実施例は、ステートメント329による方法を含む。第1 PCIeトランザクションは、プロセッサ上で実行中のASMから生じる。
ステートメント335。本発明の実施例は、ステートメント329による方法を含む。方法は、FPGAの第2エンドポイントを使用してプロセッサに第1 PCIeのトランザクションの結果を伝送するステップを更に含む。
ステートメント336。本発明の実施例は、ステートメント329による方法を含む。方法は、FPGAの構成モニターを使用してFPGAのルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、FPGAの第1エンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント337。本発明の実施例は、方法を含む。方法は、第1ブリッジ(構成要素)コンポーネントでプロセッサからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、第1ブリッジ(構成要素)コンポーネントでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、PCIeトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、PCIeトランザクションをストレージデバイスに伝達するステップと、を有し、プロセッサ、第1ブリッジコンポーネント、アクセラレーションモジュール、及びストレージデバイスは、PCIeバスを使用して通信する。
ステートメント338。本発明の実施例は、ステートメント337による方法を含む。アクセラレーションモジュールは、FPGAを用いて具現され、ストレージデバイスは、SSDを含む。
ステートメント339。本発明の実施例は、ステートメント337による方法を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、PCIeトランザクションが第1ブリッジコンポーネントのアップストリームポートに関連付けられたアップストリームFAR内のアドレスに関連付けられているか否かを判断するステップを更に含む。
ステートメント340。本発明の実施例は、ステートメント339による方法を含む。方法は、第1ブリッジコンポーネントでストレージデバイスからアップストリームFARを受信するステップと、アップストリームFARを第1ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
ステートメント341。本発明の実施例は、ステートメント340による方法を含む。第1ブリッジコンポーネントでストレージデバイスからアップストリームFARを受信するステップは、第1ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してアップストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント342。本発明の実施例は、ステートメント340による方法を含む。第1ブリッジコンポーネントでストレージデバイスからアップストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、アップストリームFARを含む。
ステートメント343。本発明の実施例は、ステートメント337による方法を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、PCIeトランザクションがストレージデバイスによって露出される仮想関数(VF)に関連付けられているか否かを判断するステップを含む。
ステートメント344。本発明の実施例は、ステートメント343による方法を含む。PCIeトランザクションがストレージデバイスによって露出される仮想関数(VF)に関連付けられているか否かを判断するステップは、PCIeトランザクションがVFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント345。本発明の実施例は、ステートメント344による方法を含む。方法は、第1ブリッジコンポーネントでストレージデバイスからVFの識別子を受信するステップと、VFの識別子を第1ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
ステートメント346。本発明の実施例は、ステートメント345による方法を含む。第1ブリッジコンポーネントでストレージデバイスからVFの識別子を受信するステップは、第1ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してVFの識別子を受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント347。本発明の実施例は、ステートメント345による方法を含む。第1ブリッジコンポーネントでストレージデバイスからVFの識別子を受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、VFの識別子を含む。
ステートメント348。本発明の実施例は、ステートメント337による方法を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、PCIeトランザクションがストレージデバイスによって露出される物理関数(PF)に関連付けられているか否かを判断するステップを含む。
ステートメント349。本発明の実施例は、ステートメント348による方法を含む。PCIeトランザクションがストレージデバイスによって露出される物理関数(PF)に関連付けられているか否かを判断するステップは、PCIeトランザクションがPFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント350。本発明の実施例は、ステートメント349による方法を含む。方法は、第1ブリッジコンポーネントでストレージデバイスからPFの識別子を受信するステップと、PFの識別子を第1ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
ステートメント351。本発明の実施例は、ステートメント350による方法を含む。第1ブリッジコンポーネントでストレージデバイスからPFの識別子を受信するステップは、第1ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してPFの識別子を受信するステップを含み、サイドバンドバスは、I2Cバス及びイSMバスを含むセットから成る。
ステートメント352。本発明の実施例は、ステートメント350による方法を含む。第1ブリッジコンポーネントでストレージデバイスからPFの識別子を受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、PFの識別子を含む。
ステートメント353。本発明の実施例は、ステートメント337による方法を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、PCIeトランザクションが第1ブリッジコンポーネントの第1 PFの識別子を有するタグを含むか、又は第1ブリッジコンポーネントの第2 PFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント354。本発明の実施例は、ステートメント353による方法を含む。方法は、第1ブリッジ構成要素の構成モニターを使用してストレージデバイスのエンドポイントの構成を判断するステップと、第1構成要素のエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント355。本発明の実施例は、ステートメント337による方法を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む第1コンポーネントの第1エンドポイントでプロセッサから受信されるか否かを判断するステップを含む。
ステートメント356。本発明の実施例は、ステートメント355による方法を含む。方法は、第1ブリッジ構成要素の構成モニターを使用してストレージデバイスのエンドポイントの構成を判断するステップと、第1構成要素のエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント357。本発明の実施例は、方法を含む。方法は、第2ブリッジ(構成要素)コンポーネントでストレージからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、第2ブリッジ(構成要素)コンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、PCIeトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、PCIeトランザクションをプロセッサに伝達するステップと、を有し、プロセッサ、アクセラレーションモジュール、第2ブリッジコンポーネント、及びストレージデバイスは、PCIeバスを使用して通信する。
ステートメント358。本発明の実施例は、ステートメント357による方法を含む。アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を用いて具現され、ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント359。本発明の実施例は、ステートメント357による方法を含む。第2ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第2ブリッジコンポーネントで第2 PCIeトランザクションが第2ブリッジコンポーネントのダウンストリームポートに関連付けられたダウンストリームFAR内のアドレスに関連付けられているか否かを判断するステップを更に含む。
ステートメント360。本発明の実施例は、ステートメント359による方法を含む。方法は、第2ブリッジコンポーネントでストレージデバイスからダウンストリームFARを受信するステップと、ダウンストリームFARを第2ブリッジコンポーネントのダウンストリームポートに連結するステップと、を更に含む。
ステートメント361。本発明の実施例は、ステートメント360による方法を含む。第2ブリッジコンポーネントでストレージデバイスからダウンストリームFARを受信するステップは、第2ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してダウンストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント362。本発明の実施例は、ステートメント360による方法を含む。第2ブリッジコンポーネントでストレージデバイスからダウンストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント363。本発明の実施例は、ステートメント357による方法を含む。第2ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、PCIeトランザクションが第1ルートポート及び第2ルートポートを含む第2ブリッジコンポーネントの第2ルートポートで受信されるか否かを判断するステップを含む。
ステートメント364。本発明の実施例は、方法を含む。方法は、ストレージデバイスでアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップと、第1 PCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、第1 PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ストレージデバイスのAPM-Sを使用して第2 PCIeトランザクションを生成するステップと、第2 PCIeトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップと、を有し、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、PCIeバスを使用して通信し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、プロセッサ上で実行中のアプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
ステートメント365。本発明の実施例は、ステートメント364による方法を含む。ストレージデバイスは、SSDである。
ステートメント366。本発明の実施例は、ステートメント365による方法を含む。ストレージデバイスのアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップは、SSDのエンドポイントでアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップを含み、第1 PCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第1 PCIeトランザクションがプロセッサからの特定のコマンドを含むか、又は第1 PCIeトランザクションがアクセラレーションモジュールのAPM-Fから生じるか否かを判断するステップを含み、ストレージデバイスのAPM-Sを使用して第2のPCIeトランザクションを生成するステップは、第1 PCIeトランザクションに応答してSSDのAPM-Sにより第2のPCIeトランザクションを生成するステップを含み、第2 PCIeトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップは、第2 PCIeトランザクションをストレージデバイスのエンドポイントからアクセラレーションモジュールに伝送するステップを含む。
ステートメント367。本発明の実施例は、ステートメント366による方法を含む。第1 PCIeトランザクションは、プロセッサから生じて、特定のコマンドを含む。
ステートメント368。本発明の実施例は、ステートメント366による方法を含む。第1 PCIeトランザクションがプロセッサから特定のコマンドを含むか否かを判断するステップは、第1 PCIeトランザクションがSSDのHILによりプロセッサから特定のコマンドを含むか否かを判断するステップを更に含む。
ステートメント369。本発明の実施例は、ステートメント368による方法を含む。特定のコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント370。本発明の実施例は、ステートメント366による方法を含む。方法は、プロセッサからホストシステムアドレスのブロックを要請するステップと、ダウンストリームFARとしてホストシステムアドレスのブロックのサブセットを選択するステップと、アクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップと、を更に含む。
ステートメント371。本発明の実施例は、ステートメント370による方法を含む。アクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント372。本発明の実施例は、ステートメント370による方法を含む。アクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップは、PCIe VDMを使用してアクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント373。本発明の実施例は、ステートメント370による方法を含む。方法は、アップストリームFARとしてホストシステムアドレスのブロックの第2サブセットを選択するステップと、アクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップと、を更に含む。
ステートメント374。本発明の実施例は、ステートメント373による方法を含む。アクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント375。本発明の実施例は、ステートメント373による方法を含む。アクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップは、PCIe VDMを使用してアクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップを含み、PCIe VDMは、アップストリームFARを含む。
ステートメント376。本発明の実施例は、ステートメント366による方法を含む。方法は、プロセッサからホストシステムアドレスのブロックを要請するステップと、ダウンストリームFARとしてホストシステムアドレスのブロックのサブセットを選択するステップと、アクセラレーションモジュールのルートポートをアクセラレーションモジュールでプログラミングするステップと、を更に含む。
ステートメント377。本発明の実施例は、ステートメント376による方法を含む。アクセラレーションモジュールのルートポートをダウンストリームFARでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのルートポートをダウンストリームFARでプログラミングするステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント378。本発明の実施例は、ステートメント376による方法を含む。アクセラレーションモジュールのルートポートをダウンストリームFARでプログラミングするステップは、PCIe VDMを使用してアクセラレーションモジュールのルートポートをダウンストリームFARでプログラミングするステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント379。本発明の実施例は、ステートメント366による方法を含む。方法は、SSDのエンドポイントでアクセラレーションモジュールから第1 PCIeトランザクションの結果を受信するステップと、SSDのエンドポイントを使用して第1 PCIeトランザクションの結果をプロセッサに伝達するステップと、を更に含む。
ステートメント380。本発明の実施例は、ステートメント376による方法を含む。方法は、SSDを露出させる物理関数(PF)を提供するステップと、アクセラレーションモジュールを露出させる仮想関数(VF)を提供するステップと、を更に含む。
ステートメント381。本発明の実施例は、ステートメント380による方法を含む。方法は、アクセラレーションモジュールのアップストリームポートをVFの識別子でプログラミングするステップを更に含む。
ステートメント382。本発明の実施例は、ステートメント366による方法を含む。方法は、SSDを露出させる第1 PFを提供するステップと、アクセラレーションモジュールを露出させる第2 PFを提供するステップと、を更に含む。
ステートメント383。本発明の実施例は、ステートメント382による方法を含む。方法は、アクセラレーションモジュールのアップストリームポートを第2 PFの識別子でプログラミングするステップを更に含む。
ステートメント384。本発明の実施例は、ステートメント365による方法を含む。ストレージデバイスのアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップは、SSDのエンドポイントでアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップを含み、第1 PCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第1 PCIeトランザクションが第2エンドポイントで第1エンドポイント及び第2エンドポイントを含むSSDによって受信されるか否かを判断するステップを含み、ストレージデバイスのAPM-Sを使用して第2 PCIeトランザクションを生成するステップは、第1 PCIeトランザクションに応答してSSDのAPM-Sにより第2 PCIeトランザクションを生成するステップを含み、第2 PCIeトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップは、第2 PCIeトランザクションをストレージデバイスのエンドポイントからアクセラレーションモジュールに伝送するステップを含む。
ステートメント385。本発明の一実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品(article)を含む。その結果は、アクセラレーションモジュールで第1デバイスからPCIeトランザクションを受信するステップと、PCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、アクセラレーションモジュールのアクセラレーションプラットフォームマネージャー(APM-F)でPCIeトランザクションを処理するステップと、PCIeトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、PCIeトランザクションを第2デバイスに配信するステップと、を有し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、アプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援し、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、PCIeバスを使用して通信する。
ステートメント386。本発明の実施例は、ステートメント385による物品を含む。アクセラレーションモジュールは、FPGAを使用して具現される。
ステートメント387。本発明の実施例は、ステートメント386による物品を含む。FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAのエンドポイントでプロセッサから第1 PCIeトランザクションを受信するステップを含み、アクセラレーションモジュールでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションがFPGAの第1 PFの識別子を有するタグを含むか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、FPGAのルートポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップを含む。
ステートメント388。本発明の実施例は、ステートメント387による物品を含む。その結果は、FPGAのアップストリームポートでプロセッサから第1 PCIeトランザクションを受信するステップと、FPGAのダウンストリームポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップと、を更に含む。
ステートメント389。本発明の実施例は、ステートメント387による物品を含む。その結果は、FPGAでストレージデバイスからダウンストリームFARを受信するステップと、ダウンストリームFARをFPGAのダウンストリームポートに連結するステップと、を更に含む。
ステートメント390。本発明の実施例は、ステートメント389による物品を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してダウンストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント391。本発明の実施例は、ステートメント389による物品を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント392。本発明の実施例は、ステートメント387による物品を含む。その結果は、FPGAのダウンストリームポートを使用してストレージデバイスに第2 PCIeのトランザクションの結果を送信するステップを更に含む。
ステートメント393。本発明の実施例は、ステートメント387による物品を含む。その結果は、FPGAのアップストリームポートを使用してプロセッサに第2 PCIeトランザクションの結果を伝送するステップを更に含む。
ステートメント394。本発明の実施例は、ステートメント387による物品を含む。その結果は、FPGAのアップストリームポートでプロセッサから第1 PCIeトランザクションを受信するステップと、第1 PCIeトランザクションがFPGAのアップストリームポートに関連付けられたアップストリームフィルタアドレス範囲(FAR)内の第2アドレスに関連付けられているか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、FPGAのAPM-Fで第1 PCIeトランザクションを処理するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAのダウンストリームポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップと、を更に含む。
ステートメント395。本発明の実施例は、ステートメント394による物品を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント396。本発明の実施例は、ステートメント394による物品を含む。その結果は、FPGAでストレージデバイスからアップストリームFARを受信するステップと、アップストリームFARをFPGAのアップストリームポートに連結するステップと、を更に含む。
ステートメント397。本発明の実施例は、ステートメント396による物品を含む。FPGAでストレージデバイスからアップストリームFARを受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してアップストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント398。本発明の実施例は、ステートメント396による物品を含む。FPGAでストレージデバイスからアップストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、アップストリームFARを含む。
ステートメント399。本発明の実施例は、ステートメント394による物品を含む。その結果は、FPGAのアップストリームポートを使用して第1 PCIeトランザクションの結果をストレージデバイスに伝送するステップを更に含む。
ステートメント400。本発明の実施例は、ステートメント394による物品を含む。その結果は、FPGAのアップストリームポートを使用して第1 PCIeトランザクションの結果をプロセッサに伝送するステップを更に含む。
ステートメント401。本発明の実施例は、ステートメント387による物品を含む。その結果は、FPGAのアップストリームポートでプロセッサから第1 PCIeトランザクションを受信するステップと、第1 PCIeトランザクションがストレージデバイスによって露出される仮想関数(VF)に関連付けられているか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドであるか否かを判断するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、FPGAのAPM-Fで第1 PCIeトランザクションを処理するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAのダウンストリームポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップと、を更に含む。
ステートメント402。本発明の実施例は、ステートメント401による物品を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント403。本発明の実施例は、ステートメント401による物品を含む。第1 PCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第1 PCIeトランザクションがVFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント404。本発明の実施例は、ステートメント403による物品を含む。その結果は、FPGAでストレージデバイスからVFの識別子を受信するステップと、VFの識別子をFPGAのアップストリームポートに連結するステップと、を更に含む。
ステートメント405。本発明の実施例は、ステートメント404による物品を含む。FPGAでストレージデバイスからVFの識別子を受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してVFの識別子を受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント406。本発明の実施例は、ステートメント404による物品を含む。FPGAでストレージデバイスからVFの識別子を受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、VFの識別子を含む。
ステートメント407。本発明の実施例は、ステートメント401による物品を含む。その結果は、FPGAのアップストリームポートを使用してプロセッサに第1 PCIeのトランザクションの結果を伝送するステップを含む。
ステートメント408。本発明の実施例は、ステートメント387による物品を含む。その結果は、FPGAのアップストリームポートでプロセッサから第1 PCIeトランザクションを受信するステップと、第1 PCIeトランザクションがストレージデバイスによって露出される物理関数(PF)に関連付けられているか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドであるか否かを判断するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、FPGAのAPM-Fで第1 PCIeトランザクションを処理するステップと、第1 PCIeトランザクションが第2アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAのダウンストリームポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップと、を更に含む。
ステートメント409。本発明の実施例は、ステートメント408による物品を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント410。本発明の実施例は、ステートメント408による物品を含む。第1 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションがPFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント411。本発明の実施例は、ステートメント410による物品を含む。その結果は、FPGAでストレージデバイスからPFの識別子を受信するステップと、PFの識別子をFPGAのアップストリームポートに連結するステップと、を更に含む。
ステートメント412。本発明の実施例は、ステートメント411による物品を含む。FPGAでストレージデバイスからPFの識別子を受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してPFの識別子を受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント413。本発明の実施例は、ステートメント411による物品を含む。FPGAでストレージデバイスからPFの識別子を受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、PFの識別子を含む。
ステートメント414。本発明の実施例は、ステートメント408による物品を含む。その結果は、FPGAのアップストリームを使用して第1 PCIeトランザクションの結果をプロセッサに伝送するステップを更に含む。
ステートメント415。本発明の実施例は、ステートメント386による物品を含む。FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAのエンドポイントでプロセッサから第1 PCIeトランザクションを受信するステップを含み、アクセラレーションモジュールでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションがFPGAの第1 PFの識別子を有するタグを含むか、又はFPGAの第2 PFの第2識別子を有するタグを含むか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、FPGAのルートポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップを含む。
ステートメント416。本発明の実施例は、ステートメント415による物品を含む。その結果は、FPGAのルートポートでストレージデバイスから第2 PCIeトランザクションを受信するステップと、FPGAで第2 PCIeトランザクションがFPGAのルートポートに関連付けられたダウンストリームFAR内のアドレスに関連付けられているか否かを判断することにより、第2 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、第2 PCIeトランザクションが第2アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、FPGAのAPM-Fで第1 PCIeトランザクションを処理するステップと、第2 PCIeトランザクションが第2アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAのエンドポイントを使用して第2 PCIeトランザクションをプロセッサに配信するステップと、を更に含む。
ステートメント417。本発明の実施例は、ステートメント416による物品を含む。その結果は、FPGAでストレージデバイスからダウンストリームFARを受信するステップと、ダウンストリームFARをFPGAのルートポートに連結するステップと、を更に含む。
ステートメント418。本発明の実施例は、ステートメント417による物品を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してダウンストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント419。本発明の実施例は、ステートメント417による物品を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント420。本発明の実施例は、ステートメント415による物品を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント421。本発明の実施例は、ステートメント415による物品を含む。その結果は、FPGAのエンドポイントを使用してプロセッサに第1 PCIeのトランザクションの結果を伝送するステップを更に含む。
ステートメント422。本発明の実施例は、ステートメント415による物品を含む。その結果は、FPGAの構成モニターを使用してFPGAのルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、FPGAのエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント423。本発明の実施例は、ステートメント386による物品を含む。FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAのエンドポイントでプロセッサから第1 PCIeトランザクションを受信するステップを含み、アクセラレーションモジュールでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第1 PCIeトランザクションがFPGAの第1 PFの第1識別子を有するタグを含むか、又はFPGAの第2 PFの第2識別子を有するタグを含むか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、FPGAのルートポートを使用して第1 PCIeトランザクションを第2ストレージデバイスに配信するステップを含む。
ステートメント424。本発明の実施例は、ステートメント423による物品を含む。その結果は、FPGAでストレージデバイスから第2 PCIeトランザクションを受信するステップと、第2 PCIeトランザクションがFPGAの第1ルートポートで受信されるか又はFPGAの第2ルートポートで受信されるか否かを判断するステップと、第2 PCIeトランザクションがFPGAの第1のルートポートで受信されると判断することに少なくとも部分的に基づいて、エンドポイントを使用して第2 PCIeトランザクションをプロセッサに配信するステップと、第2 PCIeトランザクションがFPGAの第2のルートポートで受信されると判断することに少なくとも部分的に基づいて、FPGAのAMP-Fで第2 PCIeトランザクションを処理するステップと、を更に含む。
ステートメント425。本発明の実施例は、ステートメント423による物品を含む。第2アクセラレーションコマンドは、のプロセッサ上で実行中のASMから生じる。
ステートメント426。本発明の実施例は、ステートメント423による物品を含む。その結果は、FPGAのエンドポイントを使用してプロセッサに第1 PCIeのトランザクションの結果を伝送するステップを更に含む。
ステートメント427。本発明の実施例は、ステートメント423による物品を含む。その結果は、FPGAの構成モニターを使用してFPGAの第1のルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、FPGAのエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント428。本発明の実施例は、ステートメント386による物品を含む。FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAでプロセッサから第1 PCIeトランザクションを受信するステップを含み、FPGAで第1 PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含むFPGAの第1エンドポイントでプロセッサから受信されるか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、第1ルートポート及び第2ルートポートを含むFPGAの第1ルートポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップを含む。
ステートメント429。本発明の実施例は、ステートメント428による物品を含む。その結果は、FPGAでストレージデバイスから第2 PCIeトランザクションを受信するステップと、第2 PCIeトランザクションがFPGAの第1ルートポートで受信されるか又はFPGAの第2ルートポートで受信されるか否かを判断することにより、第2 PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、第2 PCIeトランザクションがFPGAの第1のルートポートで受信されると判断することに少なくとも部分的に基づいて、第1エンドポイントを使用して第2 PCIeトランザクションをプロセッサに配信するステップと、第2 PCIeトランザクションがFPGAの第2ルートポートで受信されると判断することに少なくとも部分的に基づいて、FPGAのAMP-Fで第2 PCIeトランザクションを処理するステップと、を更に含む。
ステートメント430。本発明の実施例は、ステートメント428による物品を含む。第2アクセラレーションコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント431。本発明の実施例は、ステートメント428による物品を含む。その結果は、FPGAの第2エンドポイントを使用してプロセッサに第1 PCIeのトランザクションの結果を伝送するステップを更に含む。
ステートメント432。本発明の実施例は、ステートメント428による物品を含む。その結果は、FPGAの構成モニターを使用してFPGAの第1ルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、FPGAの第1エンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント433。本発明の実施例は、ステートメント386による物品を含む。FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、FPGAでプロセッサから第1 PCIeトランザクションを受信するステップを含み、アクセラレーションモジュールで第1 PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含むFPGAの第1エンドポイントでプロセッサから受信されるか否かを判断することにより、第1 PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、PCIeトランザクションを第2デバイスに配信するステップは、FPGAのルートポートを使用して第1 PCIeトランザクションをストレージデバイスに配信するステップを含む。
ステートメント434。本発明の実施例は、ステートメント433による物品を含む。その結果は、FPGAのルートポートでストレージデバイスから第2 PCIeトランザクションを受信するステップと、FPGAで第2 PCIeトランザクションがFPGAのルートポートに関連付けられたダウンストリームFAR内のアドレスに関連付けられているか否かを判断することにより、第2 PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、第2 PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、第2 PCIeトランザクションをFPGAのAPM-Fで処理するステップと、第2 PCIeトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、FPGAの第1エンドポイントを使用して第2 PCIeトランザクションをプロセッサに配信するステップと、を更に含む。
ステートメント435。本発明の実施例は、ステートメント434による物品を含む。その結果は、FPGAでストレージデバイスからダウンストリームFARを受信するステップと、ダウンストリームFARをFPGAのルートポートに連結するステップと、を更に含む。
ステートメント436。本発明の実施例は、ステートメント435による物品を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、FPGAでストレージデバイスからサイドバンドバスを介してダウンストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント437。本発明の実施例は、ステートメント435による物品を含む。FPGAでストレージデバイスからダウンストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント438。本発明の実施例は、ステートメント433による物品を含む。第1 PCIeトランザクションは、プロセッサ上で実行中のASMから生じる。
ステートメント439。本発明の実施例は、ステートメント433による物品を含む。その結果は、FPGAの第2エンドポイントを使用してプロセッサに第1 PCIeのトランザクションの結果を伝送するステップを更に含む。
ステートメント440。本発明の実施例は、ステートメント433による物品を含む。その結果は、FPGAの構成モニターを使用してFPGAのルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、FPGAの第1エンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント441。本発明の実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品(article)を含む。その結果は、ストレージデバイスでアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップと、第1 PCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、第1 PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ストレージデバイスのAPM-Sを使用して第2 PCIeトランザクションを生成するステップと、第2 PCIeトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップと、第1 PCIeトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ストレージデバイスに格納されたデータに対して第1 PCIeトランザクションを実行するステップと、を有し、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、PCIeバスを使用して通信し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、プロセッサ上で実行中のアプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
ステートメント442。本発明の実施例は、ステートメント441による物品を含む。ストレージデバイスは、SSDである。
ステートメント443。本発明の実施例は、ステートメント442による物品を含む。ストレージデバイスのアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップは、SSDのエンドポイントでアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップを含み、第1 PCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第1 PCIeトランザクションがプロセッサからの特定のコマンドを含むか、又は第1 PCIeトランザクションがアクセラレーションモジュールのAPM-Fから生じるか否かを判断するステップを含み、ストレージデバイスのAPM-Sを使用して第2 PCIeトランザクションを生成するステップは、第1 PCIeトランザクションに応答してSSDのAPM-Sにより第2 PCIeトランザクションを生成するステップを含み、第2 PCIeトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップは、第2 PCIeトランザクションをストレージデバイスのエンドポイントからアクセラレーションモジュールに伝送するステップを含む。
ステートメント444。本発明の実施例は、ステートメント443による物品を含む。第1 PCIeトランザクションは、プロセッサから生じて、特定のコマンドを含む。
ステートメント445。本発明の実施例は、ステートメント443による物品を含む。第1 PCIeトランザクションがプロセッサから特定のコマンドを含むか否かを判断するステップは、第1 PCIeトランザクションがSSDのHILによりプロセッサから特定のコマンドを含むか否かを判断するステップを更に含む。
ステートメント446。本発明の実施例は、ステートメント445による物品を含む。特定のコマンドは、プロセッサ上で実行中のASMから生じる。
ステートメント447。本発明の実施例は、ステートメント443による物品を含む。その結果は、プロセッサからホストシステムアドレスのブロックを要請するステップと、ダウンストリームFARとしてホストシステムアドレスのブロックのサブセットを選択するステップと、アクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップと、を更に含む。
ステートメント448。本発明の実施例は、ステートメント447による物品を含む。アクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント449。本発明の実施例は、ステートメント447による物品を含む。アクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップは、PCIe VDMを使用してアクセラレーションモジュールのダウンストリームポートをダウンストリームFARでプログラミングするステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント450。本発明の実施例は、ステートメント447による物品を含む。その結果は、アップストリームFARとしてホストシステムアドレスのブロックの第2サブセットを選択するステップと、アクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップと、を更に含む。
ステートメント451。本発明の実施例は、ステートメント450による物品を含む。アクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント452。本発明の実施例は、ステートメント450による物品を含む。アクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップは、PCIe VDMを使用してアクセラレーションモジュールのアップストリームポートをアップストリームFARでプログラミングするステップを含み、PCIe VDMは、アップストリームFARを含む。
ステートメント453。本発明の実施例は、ステートメント443による物品を含む。その結果は、プロセッサからホストシステムアドレスのブロックを要請するステップと、ダウンストリームFARとしてホストシステムアドレスのブロックのサブセットを選択するステップと、アクセラレーションモジュールのルートポートをアクセラレーションモジュールでプログラミングするステップと、を更に含む。
ステートメント454。本発明の実施例は、ステートメント453による物品を含む。アクセラレーションモジュールのルートポートをダウンストリームFARでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのルートポートをダウンストリームFARでプログラミングするステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント455。本発明の実施例は、ステートメント453による物品を含む。アクセラレーションモジュールのルートポートをダウンストリームFARでプログラミングするステップは、PCIe VDMを使用してアクセラレーションモジュールのルートポートをダウンストリームFARでプログラミングするステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント456。本発明の実施例は、ステートメント443による物品を含む。その結果は、SSDのエンドポイントでアクセラレーションモジュールから第1 PCIeトランザクションの結果を受信するステップと、SSDのエンドポイントを使用して第1 PCIeトランザクションの結果をプロセッサに伝達するステップと、を更に含む。
ステートメント457。本発明の実施例は、ステートメント443による物品を含む。その結果は、SSDを露出させる物理関数(PF)を提供するステップと、アクセラレーションモジュールを露出させる仮想関数(VF)を提供するステップと、を更に含む。
ステートメント458。本発明の実施例は、ステートメント457による物品を含む。その結果は、アクセラレーションモジュールのアップストリームポートをVFの識別子でプログラミングするステップを更に含む。
ステートメント459。本発明の実施例は、ステートメント443による物品を含む。その結果は、SSDを露出させる第1 PFを提供するステップと、アクセラレーションモジュールを露出させる第2 PFを提供するステップと、を更に含む。
ステートメント460。本発明の実施例は、ステートメント459による物品を含む。その結果は、アクセラレーションモジュールのアップストリームポートを第2 PFの識別子でプログラミングするステップを更に含む。
ステートメント461。本発明の実施例は、ステートメント442による物品を含む。ストレージデバイスのアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップは、SSDのエンドポイントでアクセラレーションモジュールから第1 PCIeトランザクションを受信するステップを含み、第1 PCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第1 PCIeトランザクションが第2エンドポイントで第1エンドポイント及び第2エンドポイントを含むSSDによって受信されるか否かを判断するステップを含み、ストレージデバイスのAPM-Sを使用して第2 PCIeトランザクションを生成するステップは、第1 PCIeトランザクションに応答してSSDのAPM-Sにより第2 PCIeトランザクションを生成するステップを含み、第2 PCIeトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップは、第2 PCIeトランザクションをストレージデバイスのエンドポイントからアクセラレーションモジュールに伝送するステップを含む。
ステートメント462。本発明の一実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品(article)を含む。その結果は、第1ブリッジ(構成要素)コンポーネントでプロセッサからPCIeトランザクションを受信するステップと、第1ブリッジ(構成要素)コンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、PCIeトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、PCIeトランザクションをストレージデバイスに伝達するステップと、を有し、プロセッサ、第1ブリッジコンポーネント、アクセラレーションモジュール、及びストレージデバイスは、PCIeバスを使用して通信する。
ステートメント463。本発明の実施例は、ステートメント462による物品を含む。アクセラレーションモジュールは、FPGAを用いて具現され、ストレージデバイスは、SSDを含む。
ステートメント464。本発明の実施例は、ステートメント462による物品を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、PCIeトランザクションが第1ブリッジコンポーネントのアップストリームポートに関連付けられたアップストリームFAR内のアドレスに関連付けられているか否かを判断するステップを更に含む。
ステートメント465。本発明の実施例は、ステートメント464による物品を含む。その結果は、第1ブリッジコンポーネントでストレージデバイスからアップストリームFARを受信するステップと、アップストリームFARを第1ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
ステートメント466。本発明の実施例は、ステートメント465による物品を含む。第1ブリッジコンポーネントでストレージデバイスからアップストリームFARを受信するステップは、第1ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してアップストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント467。本発明の実施例は、ステートメント465による物品を含む。第1ブリッジコンポーネントでストレージデバイスからアップストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、アップストリームFARを含む。
ステートメント468。本発明の実施例は、ステートメント462による物品を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、PCIeトランザクションがストレージデバイスによって露出される仮想関数(VF)に関連付けられているか否かを判断するステップを含む。
ステートメント469。本発明の実施例は、ステートメント468による物品を含む。PCIeトランザクションがストレージデバイスによって露出される仮想関数(VF)に関連付けられているか否かを判断するステップは、PCIeトランザクションがVFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント470。本発明の実施例は、ステートメント469による物品を含む。その結果は、第1ブリッジコンポーネントでストレージデバイスからVFの識別子を受信するステップと、VFの識別子を第1ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
ステートメント471。本発明の実施例は、ステートメント470による物品を含む。第1ブリッジコンポーネントでストレージデバイスからVFの識別子を受信するステップは、第1ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してVFの識別子を受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント472。本発明の実施例は、ステートメント470による物品を含む。第1ブリッジコンポーネントでストレージデバイスからVFの識別子を受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、VFの識別子を含む。
ステートメント473。本発明の実施例は、ステートメント462による物品を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、PCIeトランザクションがストレージデバイスによって露出される物理関数(PF)に関連付けられているか否かを判断するステップを含む。
ステートメント474。本発明の実施例は、ステートメント473による物品を含む。PCIeトランザクションがストレージデバイスによって露出される物理関数(PF)に関連付けられているか否かを判断するステップは、PCIeトランザクションがPFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント475。本発明の実施例は、ステートメント474による物品を含む。その結果は、第1ブリッジコンポーネントでストレージデバイスからPFの識別子を受信するステップと、PFの識別子を第1ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
ステートメント476。本発明の実施例は、ステートメント475による物品を含む。第1ブリッジコンポーネントでストレージデバイスからPFの識別子を受信するステップは、第1ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してPFの識別子を受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント477。本発明の実施例は、ステートメント475による物品を含む。第1ブリッジコンポーネントでストレージデバイスからPFの識別子を受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、PFの識別子を含む。
ステートメント478。本発明の実施例は、ステートメント462による物品を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、PCIeトランザクションが第1ブリッジコンポーネントの第1 PFの識別子を有するタグを含むか、又は第1ブリッジコンポーネントの第2 PFの識別子を有するタグを含むか否かを判断するステップを含む。
ステートメント479。本発明の実施例は、ステートメント478による物品を含む。その結果は、第1ブリッジ構成要素の構成モニターを使用してストレージデバイスのエンドポイントの構成を判断するステップと、第1構成要素のエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント480。本発明の実施例は、ステートメント462による物品を含む。第1ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む第1コンポーネントの第1エンドポイントでプロセッサから受信されるか否かを判断するステップを含む。
ステートメント481。本発明の実施例は、ステートメント480による物品を含む。その結果は、第1ブリッジ構成要素の構成モニターを使用してストレージデバイスのエンドポイントの構成を判断するステップと、第1構成要素のエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
ステートメント482。本発明の一実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品(article)を含む。その結果は、第2ブリッジ(構成要素)コンポーネントでストレージデバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、第2ブリッジ(構成要素)コンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、PCIeトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、PCIeトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、PCIeトランザクションをプロセッサに伝達するステップを含み、プロセッサ、アクセラレーションモジュール、第2ブリッジコンポーネント、及びストレージデバイスは、PCIeバスを使用して通信する。
ステートメント483。本発明の実施例は、ステートメント482による物品を含む。アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を用いて具現され、ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント484。本発明の実施例は、ステートメント482による物品を含む。第2ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第2ブリッジコンポーネントで第2 PCIeトランザクションが第2ブリッジコンポーネントのダウンストリームポートに関連付けられたダウンストリームFAR内のアドレスに関連付けられているか否かを判断するステップを更に含む。
ステートメント485。本発明の実施例は、ステートメント484による物品を含む。その結果は、第2ブリッジコンポーネントでストレージデバイスからダウンストリームFARを受信するステップと、ダウンストリームFARを第2ブリッジコンポーネントのダウンストリームポートに連結するステップと、を更に含む。
ステートメント486。本発明の実施例は、ステートメント485による物品を含む。第2ブリッジコンポーネントでストレージデバイスからダウンストリームFARを受信するステップは、第2ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してダウンストリームFARを受信するステップを含み、サイドバンドバスは、I2Cバス及びSMバスを含むセットから成る。
ステートメント487。本発明の実施例は、ステートメント485による物品を含む。第2ブリッジコンポーネントでストレージデバイスからダウンストリームFARを受信するステップは、ストレージデバイスからPCIe VDMを受信するステップを含み、PCIe VDMは、ダウンストリームFARを含む。
ステートメント488。本発明の実施例は、ステートメント482による物品を含む。第2ブリッジコンポーネントでPCIeトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、PCIeトランザクションが第1ルートポート及び第2ルートポートを含む第2ブリッジコンポーネントの第2ルートポートで受信されるか否かを判断するステップを含む。
以上、本発明の実施例について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。