JP7120945B2 - システム及びそのアクセラレーション方法並びにアクセラレーションモジュール - Google Patents
システム及びそのアクセラレーション方法並びにアクセラレーションモジュール Download PDFInfo
- Publication number
- JP7120945B2 JP7120945B2 JP2019038574A JP2019038574A JP7120945B2 JP 7120945 B2 JP7120945 B2 JP 7120945B2 JP 2019038574 A JP2019038574 A JP 2019038574A JP 2019038574 A JP2019038574 A JP 2019038574A JP 7120945 B2 JP7120945 B2 JP 7120945B2
- Authority
- JP
- Japan
- Prior art keywords
- fpga
- statement
- acceleration
- storage device
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000001133 acceleration Effects 0.000 title claims description 884
- 238000000034 method Methods 0.000 title claims description 167
- 238000011144 upstream manufacturing Methods 0.000 claims description 391
- 230000015654 memory Effects 0.000 claims description 123
- 238000012545 processing Methods 0.000 claims description 46
- 230000002093 peripheral effect Effects 0.000 claims description 26
- 239000007787 solid Substances 0.000 claims description 9
- 230000003362 replicative effect Effects 0.000 claims 1
- 230000003863 physical function Effects 0.000 description 211
- 238000004891 communication Methods 0.000 description 99
- 230000006870 function Effects 0.000 description 47
- 238000010586 diagram Methods 0.000 description 40
- 238000001914 filtration Methods 0.000 description 37
- 230000007246 mechanism Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000012360 testing method Methods 0.000 description 13
- 230000004044 response Effects 0.000 description 11
- 230000008901 benefit Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- UBCPYVAQZGCDJO-KQYNXXCUSA-N (2r,3r,4s,5r)-2-(6-aminopurin-9-yl)-5-(dihydroxyphosphinothioyloxymethyl)oxolane-3,4-diol Chemical compound C1=NC=2C(N)=NC=NC=2N1[C@@H]1O[C@H](COP(O)(O)=S)[C@@H](O)[C@H]1O UBCPYVAQZGCDJO-KQYNXXCUSA-N 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101000759555 Homo sapiens Zinc finger and BTB domain-containing protein 7C Proteins 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 102100023250 Zinc finger and BTB domain-containing protein 7C Human genes 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Systems (AREA)
- Advance Control (AREA)
- Bus Control (AREA)
- Air Bags (AREA)
- Stored Programmes (AREA)
Description
例として、データベースでクエリの実行を必要とする場合が考慮される。
従来の解決策としては、データベースをコンピュータのメモリにロードし、データベースのメモリ内のコピーに対してクエリを実行した後、結果を処理するものである。
クエリを実行するために膨大な量のデータをメモリに移動しなければならず、既にメモリに格納された他のデータを代替する可能性がある。
クエリが完了されると、ほとんどのデータが必要でないので、クエリが完了された後に、ほとんどのデータは削除される。
つまり、各クエリは、メモリに再びローディングされるデータベースを要求する可能性がある。
従って、ストレージデバイスに関連する動作をアクセラレーションする方法が必要となっており、その開発が課題となっている。
従って、例えば、SSDからデータをロードするのに発生する遅延を回避することができる。
しかし、この分野における通常の技術を有する者は、このような特定の詳細がなくても、本発明の技術的思想を具現することができる。
他の例として、よく知られている方法、手順、コンポーネント、回路及びネットワークは実施形態の側面を不必要に曖昧にしないために詳細に説明しない。
このような用語は、一つのエレメントを他の一つのエレメントと区別するためにだけ使用される。
例として、本発明の技術的思想の範囲から逸脱せずに、第1モジュールは、第2モジュールと命名されることができる。
同様に、第2モジュールは、第1モジュールと命名されることができる。
本発明の技術的思想の説明及び添付した請求項において使用したように、コンテキスト(context)で明確に明示されなければ単数表現は複数表現も、また含めるものと意図する。
「及び/又は」の用語は、一つ又はそれより多くの関連された項目の任意かつすべての可能な組み合わせを含むものと参照される。
「包含する(含む)(comprises)」及び/又は「包含する(含む)(comprising)」の用語は、詳細な説明で使用した際に言及された特性、整数、ステップ、動作、エレメント、及び/又はコンポーネントの存在を明示し、一つ又はそれより多くの他の特性、整数、ステップ、動作、エレメント、コンポーネント及び/又はそれらのグループの存在又は追加を排除しない。
図面の構成及び特性は、不可欠に実際の比率に比例しない。
FPGAデバイスは、PCIe(Peripheral Component Interconnect Express)ホストインターフェースを提供するSSDの前に又は横に配置される。
ホストトランザクション(host transactions)が「FPGA PCIe」インターフェースで受信されると、PCIeトランザクションは、バックエンドSSDコントローラ(backend SSD controller)に伝達される。
「SSD」及び「SSDコントローラ」という用語は、明示された場合を除いては、一般的に同じ意味で使用される。
したがって、ホストは、直接NVMeプロトコルをバックエンドSSDに伝達する。
つまり、FPGAを介してホストからバックエンドSSDに接続されるPCIeインターフェースは、通過(pass-through)特性である。
SSDは、直接メモリアクセス(DMA)を介してホストシステムメモリとのデータ伝送を実行する。
FPGAダウンストリームポート(DSP)は、PCIeトランザクションフィルタとして使用されるメモリのフィルタアドレス範囲(Filter Address Range:FAR)でプログラミングされる。
DSPは、FARウィンドウに属するすべてのPCIeトランザクションをフィルタリングして、それらをFPGAのロジック及びメモリに伝達する。
SSDコントローラは、「PCIe VDM」(Vendor Defined Message)メカニズム、又は「I2C/SM」バスのような他のサイドバンドバスを使用するFPGAで適切なFARウィンドウをプログラムする。
SSDコントローラは、「PCIe BAR」(Base Address Register)を介してホストにアドレス範囲のブロックを要請する。
ホストのBIOSが要請されたアドレスブロックをSSDコントローラに割り当てた後、SSDコントローラは、「FPGA DSP」でそのアドレス範囲のサブセットをFARウィンドウでプログラムする。
つまり、ホストがアドレスブロックを割り当てると、SSDとFPGAがPCIe階層で互いに、又は他のPCIeデバイスを干渉せずにホストトランザクションとPCIeバスを共有することができる。
SSDコントローラは、共有PCIeバスを介してFARウィンドウを使用してFPGAにアクセラレーションコマンドとデータを提供することができる。
FPGA又はホストが共有PCIeバス及び前記のアドレス範囲を使用してSSDコントローラからアクセラレーションのためのデータを要請することもできる。
FPGAは、同じメカニズムを使用してアクセラレーションの結果をSSDコントローラに再び提供することもできる。
提案された構造及びメカニズムは、低コスト及びFPGAデバイスを使用しているSSDベースのアプリケーションアクセラレーションのための低消費電力の解決策を具現することができる。
基本的なアイディアは、FPGA及びSSD(及び/又は他のストレージデバイス)がホストと通信しながら(別のデバイスとして又は単一のデバイスに統合して)集合的に作動するというものである。
以下、説明において、ストレージデバイスはSSDを意味する。
3つのトラフィックストリームがある。
ホストからストレージデバイスへの通信は、FPGA具現に応じてFPGAを介してストレージデバイスのEPに伝送されるすべてのトラフィックをアップストリームポート(USP)又はエンドポイント(EP)からダウンストリームポート(DSP)、ルートポート又はルート複合ポート(RP)に単純に伝送することにより、FPGAによって管理される。
FPGAは、ホストとストレージデバイスとの間のNVMe通信を支援するために、ストレージデバイスによってホストにさらされる物理関数を含み得る。
本発明のいくつかの実施形態で、アクセラレーションコマンドは、次の方式で処理される。
つまり、アクセラレーションサービスマネージャー(Acceleration Service Manager:ASM)が、ホスト上で実行され得る。
ASMは、ストレージデバイス(APM-Sとして識別される)とFPGA(APM-Fとして識別される)の両方の一部として構成を含み得るAPM(Acceleration Platform Manager)と通信することができる。
ホスト上のASMは、アクセラレーションコマンド及び関連情報をSSDに伝送するためにNVMeプロトコルを使用することができる。
その次にSSDは、FPGAと関連したアクセラレーションオーケストレーター(orchestrator)のように動作する。
APM-Sによって許容されるすべてのアクセラレーションコマンドは、独占の(proprietary)インターフェースを使用してAPM-Fに適切なコマンドを提供するために使用される。
独占のインターフェースは、アドレス空間のウィンドウを使用して容易になる。
適切なアドレス空間でアドレスを使用するコマンドは、ホストやストレージデバイスから別のモジュールに直接通信する代わりに、APM-Fによる処理のためにFPGAによってフィルタリングされ得る。
フィルタリングは、コマンドと関連したタグを使用したり、PCIeメッセージベースのフィルタリングを使用して実行されたりすることもできる。
このフィルタリングは、FPGAをストレージデバイスに接続するDSP/RPに接続されたフィルタによって実行され得る。
本発明のいくつかの実施形態で、アクセラレーションは次の方法で行われる。
つまり、FPGAがアクセラレーション処理のためにデータのフェッチを要請するとき、FPGAは上述で議論された通り、ストレージデバイスとFPGAとの通信のために使用されるホストのメモリアドレスマップ内に割り当てられたアドレス空間を使用して要請を送ることができる。
この構造は、アクセラレーションされたデータを処理するために、FPGAと共有できるホストとSSDとの間のPCIeバスによる方法を提供する。
論理的に言って、FPGAは、ホストとSSDコントローラとの間に動作可能に配置される。
ホストは、FPGAのアップストリームポート(USP)に接続され、SSDは、FPGAのダウンストリームポート(DSP)に接続される。
FPGAのUSP及びDSPポートは、2方向の両方でPCIeトランザクション(つまり、トランザクション階層パケット(TLPs))を伝達する。
「PCIe TLP」の例は、構成の読み取り、構成の書き込み、メモリの読み取り及びメモリの書き込みである。
したがって、ホストは、SSDと直接通信する。
FPGA上のDSPポートは、プログラムされたフィルタのアドレス範囲(FAR)をベースにしたSSDコントローラから出てくるすべてのPCIeトランザクションをフィルタリングするロジックを有する。
APM-Fモジュールは、SSDコントローラと通信する。
APM-Fモジュールは、SSDコントローラからのアクセラレーションプラットフォームマネージャー・SSD(APM-S)ファームウェアからデータ及びアクセラレーションコマンドを受信する。
その後にAPM-Fモジュールは、受信されたアクセラレーションコマンド及びデータをランタイム(RT)スケジューラに提供する。
RTスケジューラは、データ処理を実行するために、適切なアクセラレーションエンジンを順番にプログラムする。
FPGAは、ストレージデバイス内に具現され得る。
FPGAは、ホストメモリにデータをフェッチした後、ホストでデータを処理するよりは、ストレージデバイスに近く実行されうる、アクセラレーションされたデータの処理を支援する。
データをフェッチする代わりに、ストレージデバイス/FPGAは、クエリを受信して処理を局所的(locally)に行うことができる。
PCIe構成の一部として、SSDコントローラは、それ自体の用途のため、ホストシステムアドレスマップのブロックを要請する。
SSDコントローラは、NVMeプロトコルを支援するために、一般的に必要なものよりも大きなブロックを要請する。
ストレージデバイスとFPGAとの間の通信を管理するために追加の空間の一部又は全部が使用され得る。
例として、NVMeプロトコルは、64KBのアドレス空間が必要になり得る。
提案された構造でSSDコントローラは、10MBアドレスブロックを要請することができる。
SSD-FPGA通信のために予約のシステムアドレスマップのサブセットをフィルタアドレス範囲(FAR)と称する。
その後にSSDコントローラは、「FPGA DSP」でFARウィンドウをプログラムする。
SSDコントローラは、FPGAのFARウィンドウをプログラミングするために、I2CバスやSMバスのようなサイドバンドバスを使用することができる。
SSDコントローラは、FPGAのFARウィンドウをプログラミングするために「PCIe VDM」(Vendor Defined Messages)を使用することもできる。
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との間の通信のために、多様な方法を使用することができる。
本発明の実施形態は、SSDでFPGAを使用するアプリケーションのアクセラレーション化のための低コスト及び低消費電力の解決策を提供する。
この構造で、FPGAは間接的な方式でホストに表示される。
FPGAとSSDとの間の通信は、提案したソリューション1と同じように維持される。
SSDコントローラは、ホストから大きなシステムのアドレス空間を要請する。
SSDコントローラは、割り当てられたアドレスブロックを3つのウィンドウに分割する。
一番目のウィンドウは、「NVMe Controller」レジスタのアドレス空間のために使用される。
二番目のウィンドウは、前述したように、FPGAとSSDとの間の通信のために使用される。
三番目のウィンドウは、ホストとFPGAとの間の通信のためのものである。
SSDコントローラは、FPGAデバイスの位置を知るために、ホストアプリケーションによって読み出される特定のレジスタの三番目のウィンドウを広告することができる。
SSDコントローラは、USPがこのようなトランザクションをフィルタリングすることができるよう、同じアドレスウィンドウでUSPをプログラミングすることもできる。
USPは、三番目ウィンドウのアドレス空間に属するホストのすべてのトランザクションをフィルタリングしてFPGAアクセラレーションロジックに伝達する。
このメカニズムは、ホスト上のアクセラレーションサービスマネージャー(ASM)がアクセラレーションコマンド及びデータをFPGAに伝送するために使用することができる。
つまり、ホストは、アクセラレーションコマンド/データをFPGAに送ることもできる。
FPGAのDSP又はFPGAのRPに接続されたものと類似したフィルタが、FPGAのUSP又はFPGAのEPにも接続することができる。
ホストは、ストレージデバイスによって要請されたアドレス空間のアドレスを使用することができる。
ホスト-FPGA通信のためにホストによって使用されたアドレスは、ホスト(言い替えるが、要請されたアドレス空間は、NVMe通信に必要な空間より大きい可能性がある)又はホストのメモリアドレスマップ内の別のアドレス空間の一部(仮想関数又は二番目の物理関数のいずれか1つ又は両方に対して、2つの中で1つはストレージデバイスによってホストにさらされる(exposed))とのNVMe通信のためにストレージデバイスによって要請されたアドレス空間の一部であり得る。
この場合には、ホスト上のASMは、ホスト-FPGAの通信に使用されるアドレスの範囲を識別するためのNVMeアドレス空間の特定のレジスタに記録されたアドレスにアクセスすることにより、FPGAを「発見」することができる。
ASMは、PCIeデバイステーブルを介してストレージデバイスを検索することができ、NVMeアドレス空間のどのレジスタがホスト-FPGA通信アドレス空間に対するポインタを格納するかがわかる。
このFPGA+SSDの構造で、SSDは一つの物理関数(機能)(physical function:PF)と1つの仮想関数(virtual function:VF)をホストに「さらす(曝す)」(expose、以下、見えるようにするの意味で用いる)。
SSDコントローラは、PFを介してさらされる。
VFは、FPGAをさらすために使用される。
SSDコントローラのPFは、大規模システムメモリのアドレスブロックを要請してFPGAのアドレス指定ブロックのサブセットが「FPGA DSP」を通してFPGAとSSDとのの間の通信に使用することができ、SSDコントローラVFは、「FPGA USP」を介してFPGAとホストとの間の通信のために、それ自体のメモリアドレスブロックを要請することができる。
USPは、FARウィンドウ及び/又はVFに属するすべてのPCIeトランザクションに属するすべてのPCIeトランザクションをフィルタリングすることができ、これをFPGAのアクセラレーションロジック及びメモリに伝達することができる。
プログラミングされたFAR-USPウィンドウに属していないすべてのPCIeトランザクション又はVFに属していないトランザクションは、SSDに属し、SSDに直接伝達され得る。
SSDコントローラは、この情報を通信するために、「PCIe VDM」メカニズム又はI2C/SMバスのような他のサイドバンドバスを使用する適切なFAR-USPウィンドウをプログラムすることができる。
つまり、FPGAはホストに直接見えることができる。
ASMソフトウェアは、アクセラレーションオーケストレーションコマンドとデータをFPGAに送るために、このPCIeアドレス範囲を使用することができる。
その後に、APM-Fは、受信したアクセラレーションコマンド及びデータをランタイム(RT)スケジューラに提供する。
RTスケジューラは、データ処理を実行するために、適切なアクセラレーションエンジンを順番にプログラミングする。
なお、APM-Fは、ホストメモリ又はSSDストアからデータをフェッチすることができる。
このFPGA+SSDの構造は、VFを使用する代わりに、第2PFを使用してFPGAをホストに「さらす」ことを除いて提案したソリューション3と類似する。
SSDコントローラは、2つの物理関数(機能)をホストに「さらす」。
第1PFは、SSDコントローラのために使用され、第2PFはFPGAのために使用される。
第2PFの基本アドレスは、FPGAのFAR-USPでプログラミングすることができる。
したがって、USPは、第2PFに対しプログラムされたアドレス範囲(FAR-USP)にあるホストから来るすべてのトランザクションをフィルタリングすることができ、それらをFPGAに伝達することができる。
このメカニズムは、FPGAと通信するためホスト上で実行中のASMにより使用され得る。
仮想関数(機能)又は第2の物理的関数(機能)が「さらされた」場合、USP/EPのフィルタは、ホスト-FIFI通信に割り当てられたアドレスの範囲に基づいて、又は「さらされた」仮想関数(機能)や「さらされた」第2の物理的関数(機能)(例えば、フィルタ番号又は他のタグによって)をフィルタリングすることができる。(仮想関数(機能)は、オペレーティングシステムの支援を要求する。そして第2の実際の関数(機能)が具現されたり、支援されたりする場合、第2の物理的関数(機能)を「さらす」ことは、仮想関数の使用に対する代替の解決策を提案する。)
この「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をホストに「さらす」ことに注目する)。
「第1FPGA EP/PF」は、ホストをSSDに直接接続するために使用することができる反面、「第2FPGA EP/PF」は、ホストをFPGAに接続するために使用することができる。
このメカニズムは、FPGAと通信するためにホストで実行中のASMにより使用することができる。
SSD-FPGA通信は「FPGA RP」と「SSD EP」の間でアドレス空間マップの一部を使用することができる。
本発明のいくつかの実施形態で、第1FPGA(PF)は、大規模なアドレス空間を要求することができ、BIOS割り当てられたアドレスウィンドウは、SSDコントローラ(EP)にマッピング又は変換することができる。
このアドレス空間の一部は、ローカルFPGA-SSD通信のために使用することができる。
本発明の他の実施形態で、「第2FPGA EP」のために割り当てられたアドレス空間の部分は、FPGAとSSDコントローラの間の通信のために使用することができる。
この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に接続された二つのRPを有する。
SSDの第1EPポートは、一般的なホストストレージアクセスのためにホストとの通信に使用することができる。
SSDの第2EPは、処理のためにFPGAに必要なすべてのデータを伝送するために使用することができる。
このような本発明の実施形態で、FPGA上の一つのRP(及びそれに対応するストレージデバイス上のEP)は、ストレージデバイスとホストとの間の通信を管理するために使用することができ、FPGA上の他のRP(及びそれに対応するストレージデバイス上のEP)は、ストレージデバイスとFPGAの間の通信を管理するために使用することができる(アクセラレーションコマンド又はデータのための)。
本発明の斯かる実施形態で、FPGA上のRPは、2つのアドレスマップ(各RPごとに1つずつ)を支援することができる。
したがって、ホストとストレージデバイスの間の通信を支援するRPのためのアドレスマップは、NVMeコマンドのために割り当てられた空間を含むことができ、他のアドレスマップ(アクセラレーションコマンド/データの通信を管理するRPのための)は、全的に通信のために作られ得る。
その後に、FPGAはコマンドを処理し、FPGAとストレージデバイスの間の通信専用に指定された第2のRPのメモリアドレスマップを使用して、必要に応じて、コマンド/データをストレージデバイスに伝達することができる。
FPGAによって「さらされた」一つの物理関数(機能)は、ホストからストレージデバイスへの通信を指示するために使用することができる。
他の物理関数(機能)は、ホストとFPGAの間の通信に使用することができる。
本発明の斯かる実施形態で、ストレージデバイスがこのような要求を発生させることにより、FPGAは、ホストから割り当てられるアドレス空間を要求することができる。
したがって、FPGAは、ホストのメモリアドレスマップを使用してホストと通信することができ、FPGAはストレージデバイスと通信するために使用される、それ自体のメモリアドレスマップを支援することができる。
本発明の斯かる実施形態で、FPGAは、ホストからストレージデバイスへの通信を支援するために、ホストのメモリアドレスマップに割り当てられた空間を要請することができ(FPGAを介して発生する、そのような通信により)、追加の空間は、ホストからFPGAへの通信をサポートするために、ホストのメモリアドレスマップに割り当てられる。
FPGAのメモリアドレスマップは、ホストからストレージデバイスへコマンドを通信してFPGAとストレージデバイスの間でアクセラレーションコマンド/データを通信するためのそれ自体の空間の割り当てを含むことができる。
FPGAは、ホストとストレージデバイスの間の通信のために使用されるアドレス空間を、FPGAとストレージデバイス(同一サイズであるべき)との間の通信のために使用されるアドレス空間に変換することができる。
これは、PCIe機能がFPGAによって「さらされる」問題を提起する。
FPGAは、ストレージデバイスと同じPCIe機能を「さらさ」なければならない。
したがって、FPGAには、ストレージデバイスの「SSDコントローラEP PCIe」構成をマッチングするために「FPGAのEP PCIe」構成を設定するPCIe構成モニタを含み得る。
なお、ホストがFPGAのEPのPCIe構成を変更する場合、ストレージデバイスのEPのPCIe構成は、同様に修正され得る。
FPGA構成は、ハードウェア、ソフトウェア/ファームウェア、又はこの2つの組み合わせを使用して具現することができる。
装置105は、プロセッサ110を含む。
プロセッサ110は、任意の多様なプロセッサであり得る。
つまり、例として、Intel(登録商標) Xeon(登録商標)、Celeron(登録商標)、Itanium(登録商標)、Atom(登録商標)プロセッサ、AMD(登録商標) Opteron(登録商標)プロセッサ、又はARM(登録商標)プロセッサなどである。
プロセッサ110は、ストレージデバイス120へのアクセスを支援できるデバイスドライバ115を実行することができ、相異なるデバイスドライバは、デバイス105の他の構成に対するアクセスを支援することができる。
この明細書の全般にかけて、ストレージデバイス120は、SSD(Solid State Drive)のストレージデバイス120のように説明するが、ストレージデバイス120は、以下の本発明の実施形態で説明する、アクセラレーション化されたコマンドを支援する任意の他のタイプのストレージデバイスであり得る。
プロセッサ110は、また、アクセラレーションコマンドを含む任意のアプリケーションであり得るアプリケーション125及びストレージデバイス120上に格納されたデータに対して実行されるアクセラレーションコマンドを伝送するために使用できるアプリケーションサービスマネージャ(ASM)130を実行することができる。
メモリ140は、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、永久ランダムアクセスメモリ、強誘電体ランダムアクセスメモリ(FRAM(登録商標))、又は磁気ランダムアクセスメモリ(MRAM)などのような不揮発性ランダムアクセスメモリ(NVRAM)のような任意の他のタイプのメモリであり得る。
アクセラレーションモジュール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)能力又は他の具現として具現したり、使用したりすることができる。
例として、装置105は、デスクトップ、ラップトップコンピュータ、又は本発明の実施形態から利益を得ることができる任意の他の装置に代替することができる。
装置105は、また、特殊化されたポータブルコンピューティングマシンに、タブレットコンピュータに、スマートフォン、及び他のコンピューティングマシン(machine:機械)を含むことができる。
なお、図1は、ストレージデバイス120、アプリケーション125、及びASM(アクセラレーションサービスマネージャー)130を含む装置105を示すが、本発明の実施形態は、別のマシンで、それらの構成を有することができる。
例として、ストレージデバイス120は、1つ以上のネットワーク(有線、無線、グローバルなど)を通過するネットワーク接続を介して装置105(及びアプリケーション125及びASM130)に接続されたサーバにインストールすることができる。
これは、プロセッサ110を独創的な概念の他の構成と区別し得る。
1)ホストからストレージデバイス120まで。
ホスト(プロセッサ110)がストレージデバイス120に通信を送ることができる。
本発明の実施形態で、このようなすべてのトラフィックは、アクセラレーションモジュール145を通過し、アクセラレーションモジュール145によってストレージデバイス120に到達することから遮断されてはならない。
斯かるトラフィックの実施形態は、ストレージデバイス120からデータを読み出すための、及び/又はストレージデバイス120にデータを記録するためのコマンドを含み得る。
つまり、ストレージデバイス120によって提供される他のコマンドもこのようなトラフィックに含まれ得る。
ASM130は、特定のアクセラレーションコマンドが実行されるように要請する。
いずれにせよ、本発明の特定の実施形態にかかわらず、アクセラレーションモジュール145は、ASM130からアクセラレーションコマンドを受信しなければならない。
アクセラレーションコマンドを実行するために、アクセラレーションモジュール145は、ストレージデバイス130からデータをフェッチまたは受信する必要が有り得る。
図2で、典型的に、装置105の追加的な事項は、装置105の構成要素の動作を調整するために使用され得る、メモリコントローラ135及びクロック205を含む1つ以上のプロセッサ110を含む。
なお、プロセッサ110は、例として、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)又は媒体を保存する他の状態を含むメモリ140に接続することができる。
プロセッサ110は、また、ストレージデバイス120及び、例としてイーサネット(登録商標)コネクタ又は無線コネクタであり得るネットワークコネクタ210に接続され得る。
プロセッサ110は、また、バス215に接続され得、これには、他の構成要素の中で、ユーザーインターフェース220及び入力/出力エンジン225を使用して管理され得る入力/出力インターフェースポートを取り付けることができる。
≪第1実施形態≫
図3において、プロセッサ110、アクセラレーションモジュール(以下、FPGAとして説明)145とSSD120は、通信すること示している。
図3において、プロセッサ110、FPGA145及びSSD120は、PCIe(Peripheral Component Interconnect Express)バスを介して通信する。
PCIeバスは、任意の数のレーンを使用することができる。
つまり、典型的な例は、x4及びx8であるが、本発明の実施形態は、任意の他の所望の数のレーンを使用することができる。
この通信は、不揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)であり得るPCIeトランザクションを含むが、本発明の実施形態は、他のエンコーディングを使用する通信又は他のプロトコルのコマンドを含むために拡張することができる。
エンドポイント305は、SSD120がPCIe通信を受信して伝送する論理的又は物理的な接続ポイントであり得る。
SSD120がエンドポイント305でプロセッサ110からPCIeトランザクションを受信する場合(FPGA145を介して)、SSD120は、PCIeトランザクションをHIL310に伝達する。
その後に、HIL310は、PCIeトランザクションがアクセラレーションコマンドを含むかどうかを判断する。
PCIeトランザクションがアクセラレーションコマンドを含む場合、HILは処理のためにPCIeトランザクション(又はPCIeトランザクションから圧縮解除されたアクセラレーションコマンドそのもの)をAPM-S315に伝送する。
つまり、「APM-S」315は、ファームウェア単独又はハードウェアとファームウェアの組み合わせを使用して具現することができる。
そうでなければ、HIL310は、FTL320にPCIeトランザクション(又は圧縮解除されたNVMeコマンド)を伝達し、FTLは、図1のアプリケーション125によって使用される論理ブロックアドレス(LBA)を物理ブロックアドレス(PBA)に変換し、フラッシュメディア325に格納されたデータにアクセスする。
アクセラレーションコマンドの第1タイプは、プロセッサ110からの特定のコマンドであり得る。
本発明の第1実施形態で、FPGA145は、プロセッサ110に見えない可能性がある。
つまり、プロセッサ110は、すべてのそれの通信をSSD120に伝送する。
プロセッサ110が、アプリケーションデータで実行されるためにアクセラレーションコマンドを所望する場合、プロセッサ110は、特定のコマンドをSSD120に伝達する。
プロセッサ110は、SSD120に、特定のコマンド/アクセラレーションコマンドをトンネリングするためにNVMeコマンドを使用する。
HIL310は、「APM-S」315に伝達することができる、特定のコマンドをインターセプトする。
その後に、「APM-S」315は、アクセラレーションコマンドを実行するためにFPGA145に再び伝送される特定のコマンドに応答してアクセラレーションコマンドを生成する。
この特定のコマンドは、例として、実行されるアクセラレーションコマンドの特定のタイプ及びアクセラレーションコマンドのオペレーションが実行されるデータをエンコーディングする。
例として、FPGA145は、フラッシュメディア325に直接アクセスしていない可能性があり、したがって、アクセラレーションコマンドが実行されるデータを受信せずにアクセラレーションコマンドを実行することができない。
したがって、「APM-S」315は、FPGA145から問題のデータを要請するアクセラレーションコマンドを受信する。
その後、「APM-S」315は、FPGA145がアクセラレーションコマンドを実行できるようにするために、要求されたデータにアクセスし、それをFPGA145に返す。
SSD120は、代替ストレージデバイスに置き換えると、これらの構成要素は、ストレージデバイスのタイプに適した代替の構成要素に置き換えることができる。
例として、SSD120は、ハードディスクドライブに置き換えると、フラッシュメディア325は、ハードディスクプラッタに置き換えることができる。
データアクセスを支援するために追加の構成要素がまた含まれ得る。
つまり、ハードディスクドライブストレージデバイスの例を続けると、ストレージデバイスは、また、適切な読み取り/書き込みヘッドを含み得る。
ホストメモリシステムアドレスのブロックに対する、このような要求は、PCIeトランザクションを使用するとき、一般的であり、スタートアップのとき、又は後で実行され得る。
それに応答して、プロセッサ110(又は図1の装置105の基本的な入力/出力システム(BIOS))は、SSD120による使用のために、ホストメモリシステムアドレスのブロックを割り当てる。
その後、ホストマシンは、このホストメモリシステムアドレスのブロックが、図1の装置105で他のデバイスによって利用できないことを知る。
図4で、SSD120は、ホストメモリシステムアドレスのブロックを要請する。
プロセッサ110とSSD120との間のNVMe通信を支援するために必要なメモリの量は比較的少ないが、例として、(64KB-)SSD120は、はるかに大きいブロック、例として10MB以上を要求する。
それに応答して、プロセッサ110は、ホストメモリシステムのアドレスブロック405を返す。
ブロック405の一端は、BAR(Base Address Register)に格納され、SSD120がBAR(そして要請されたブロックのサイズのSSD120の情報(knowledge)とともに)に基づいて、ブロック405を判断する。
ブロック405の1つのサブセット410は、NVMe通信のために使用される。
他のサブセット415は、使用されないまま残され得る。
(ダウンストリーム)FAR(Filter Address Range)420(任意のフィルタリングがプロセッサ110からのダウンストリームで行われるので、「ダウンストリーム」)と称される第3サブセットは、SSD120とFPGA145との間の通信のための専用に使用される。
ダウンストリームFAR420は、SSD120及びFPGA145の両方で使用できることに注目する。
いずれか1つは、問題のPCIeトランザクションがアクセラレーションコマンドを含むことを示すために、ダウンストリームFAR420でアドレスを使用する。
ダウンストリームFAR420を含んでいないSSD120からのダウンストリームポート335でFPGA145によって、プロセッサ110が受信する任意の通信は、アップストリームポート330を介してFPGA145によりプロセッサ110に伝達される(FPGA145がアップストリームポート330で、プロセッサ110から受信する任意の通信は、ダウンストリームポート335を介して自動的にSSD120に伝達される)。
このような通信をインターセプトすることにより、FPGA145は、SSD120によって要請されたアクセラレーションコマンドを実行する。
アップストリームポート330は、プロセッサ110と通信するために使用する。
ダウンストリームポート335は、SSD120と通信するために使用する。
「APM-F」340は、FPGA145がインターセプトした任意のアクセラレーションコマンドを受信することに対する責任がある。
斯かるアクセラレーションコマンドは、メッセージのメールボックス355を使用してダウンストリームポート335からメッセージのように受信するが、本発明の実施形態は、APM-Fがアクセラレーションコマンドを受信するための他のメカニズムに拡張され得る。
例として、FPGA145がアクセラレーションコマンドを実行できる、十分な情報を有する場合、「APM-F」340は、アクセラレーションコマンドをアクセラレーションエンジン(350-1及び350-2)のような任意の利用可能なアクセラレーションエンジンでスケジューリングすることができるスケジューラ345(「ランタイムスケジューラ」と称され得る)にアクセラレーションコマンドを通過させる。
一方、図3は、2つのアクセラレーションエンジン(350-1、350-2)を示すが、本発明の実施形態は、任意の所望の数のアクセラレーションエンジンを含むことができる。
つまり、図3に示した2つは、単に例示的な目的のためのものである。
代案的に、FPGA145がアクセラレーションコマンドを実行するための追加情報を必要とする場合、つまり例として、FPGA145は、アクセラレーションコマンドが実行されるデータを必要とし、「APM-F」340は、PCIeトランザクションを、必要なデータを要請するSSD120に送るような他の動作をとる。
ダウンストリームフィルタ360は、アクセラレーションコマンドを含むSSD120から発行されたPCIeトランザクションを識別する。
これは所望する方式で実行することができる。
本発明のいくつかの実施形態で、SSD120は、図4のダウンストリームFAR420でダウンストリームフィルタ360をプログラミングすることができる。
その後、ダウンストリームフィルタ360が、図4のダウンストリームFAR420でアドレスを使用するPCIeトランザクションを識別するとき、FPGA145は、PCIeトランザクションを、アクセラレーションコマンドを含むものと識別し、PCIeトランザクションをインターセプトする。
例として、SSD120は、ダウンストリームフィルタ360をプログラミングするために、内部の集積回路バス(I2Cバス)、又はシステム管理バス(SMバス)のようなサイドバンドバス365を使用することができる。
また、SSD120は、ダウンストリームフィルタ360をプログラミングするために、PCIe VDM(Vendor Defined Message)を使用することができる。
SSD120は、また、ダウンストリームフィルタ360をプログラミングするために他のメカニズムを使用することができる。
つまり、具体的には、アップストリームポート330、ダウンストリームポート335、及びダウンストリームフィルタ360である。
FPGA145は、プロセッサ110とSSD120と通信するいくつかのメカニズムを必要とするが、本発明の実施形態は、通信要素をFPGA145から分離することができる。
例として、ダウンストリームポート335とダウンストリームフィルタ360は、つまり、プロセッサ120に伝達される代わりにアクセラレーションコマンドを含むSSD120から受信したPCIeトランザクションを識別すること(及び「APM-F」340にリダイレクトする必要があり)に対する責任のある後者であり、FPGA145とSSD120との間のブリッジの構成要素(図3に図示せず)に配置される。
これらのブリッジの構成要素は、FPGA145とSSD120と通信するために必要なので、FPGA145は、相変わらずダウンストリームポート335(又はブリッジ構成要素との通信を可能にする代案的な構造)を含むが、その後にダウンストリームフィルタ360は、FPGA145から除去される。
以下で、本発明の他の実施形態として説明する他の具現もまた可能である。
特定の構成の動作(例として、「APM-F」340、スケジューラ345、及びアクセラレーションエンジン(350-1及び350-2)の動作)の間に差異がない場合、それらの動作の繰り返しの説明は、後続の本発明の実施形態で省略する。
図5は、本発明の第2実施形態による、図1のアクセラレーションモジュール及び図1のストレージデバイスの構成要素を示すブロック図である。
本発明の第2実施形態は、アップストリームポート330が、フィルタも含むことを除いては、本発明の第1実施形態と類似する。
つまり、アップストリームフィルタ505である。
例として、SSD120は、図4のダウンストリームFAR365と同様に、アップストリームFARを定義することができ、サイドバンドバス365、PCIe、VDM、又は任意の他のメカニズムを使用してアップストリームFARでアップストリームフィルタ505をプログラミングする。
その後に、FPGA145がアップストリームポート330で、プロセッサ110からPCIeトランザクションを受信するとき、アップストリームフィルタ505は、アップストリームフィルタ505がアップストリームFARでアドレスを含むかを見るために、PCIeトランザクションを検査する。
もしそうなら、PCIeトランザクションはアクセラレーションコマンドであり、FPGA145は、PCIeトランザクションをSSD120に伝達するよりも、プロセッサのためのPCIeトランザクションを「APM-F」340に伝送する。
本発明の第1実施形態でのように、SSD120は、SSD120がNVMeコマンドを支援するために必要なアドレスの範囲よりも、大きいホストシステムメモリアドレスのブロックを要請でき、それのBARに応答してブロック405を受信する。
その後に、SSD120は、NVMe通信のためにブロック405の1つのサブセット410を維持し、他のサブセット415は、未使用とし、第3サブセットは、ダウンストリームFAR420のように別に設定することができ、第4サブセットは、アップストリームFAR605のように別に設定することができる。
しかし、SSD120は、アップストリームFAR605のベースアドレスをNVMe通信のためのサブセット410内の特定のレジスタにプログラミングすることにより、アップストリームFAR605のプロセッサ110を知らせる。
NVMe通信のためのサブセット410から、この特定のレジスタを読み出す場合、プロセッサ110は、アップストリームFAR605を認識するようになる。
その後に、プロセッサ110は、SSD120の「APM-S」315に、特定のコマンドを伝送する代わりにアクセラレーションコマンドをFPGA145に伝送する(アップストリームポート330を介して)。
つまり、具体的には、アップストリームポート330、アップストリームフィルタ505、ダウンストリームポート335、及びダウンストリームフィルタ360である。
図3に示した本発明の実施形態と同様に、PCIeトランザクションのフィルタリングと関連した構成要素は、FPGA145から除去することができる。
したがって、本発明の第2実施形態で、アップストリームポート330及びアップストリームフィルタ505は、第1ブリッジ構成要素及びダウンストリームポート335に配置することができ、ダウンストリームポート335ダウンストリームフィルタ360は、第2ブリッジ構成要素に配置することができ、それぞれは図5の相異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する。
又、PCIeトランザクションのソースに関係なしに、斯かるブリッジ構成要素の中で単に一つだけを使用することができ、(他のソース(source)からの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、シングルブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用される。
図7は、本発明の第3実施形態による、図1のアクセラレーションモジュール及び図1のストレージデバイスの構成要素を示すブロック図である。
本発明の第3の実施形態で、SSD120は、物理機能(関数)(PF)705及び仮想機能(関数)(VF)710を含む(本発明の第3実施形態は、本発明の他の実施形態がPF及び/又はVFを含んでいないことを意味するのではなく、単に本発明の第3実施形態と同じ方式で使用されないことを意味する)。
PF705は、SSD120によって提供される機能のような単一のリソースを示す。
VF710は、PFと関連するが、「仮想化」された機能を示す。
つまり、与えられたPFに対し1つ以上のVFが有り得る。
しかし、SSD120の仮想機能を表現する代わりに、VF710は、FPGA145を「さらす(expose)」することができる。
つまり、VF710は、FPGA145の機能を示す。(VF710は、相変わらずFPGA145の一部ではなく、SSD120の一部である。しかし、FPGA145を露出させるための専用VF710を使用すれば、VF710と関連した任意のメモリアドレスは、他のデバイスと衝突しない。)
PCIeデバイスが列挙(enumerate)されるとき、PF及びVFがプロセッサ110によって発見され得るので、プロセッサ110は、VF710を介してFPGA145を間接的に発見することができるが、それ自身が直接発見することはできない。
本発明の第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を有する。
つまり、VFフィルタ715である。
VFフィルタ715は、ダウンストリームフィルタ360と類似の方式で、プロセッサ110(アップストリームポート330を介して受信した)から来るPCIeトランザクションをフィルタリングする。
例として、SSD120は、サイドバンドバス365、「PCIe VDM」、又は任意の他のメカニズムを使用してアップストリームFAR605でVFフィルタ715をプログラムする。
その後に、FPGA145がアップストリームポート330で、プロセッサ110からPCIeトランザクションを受信するとき、VFフィルタ715は、PCIeトランザクションがアップストリームFAR605でアドレスを含むかどうかを知るためにPCIeトランザクションを検査する。
もしそう(含む)なら、PCIeトランザクションはアクセラレーションコマンドであり、FPGA145は、PCIeトランザクションをSSD120に伝達するより、プロセッサのためにPCIeトランザクションを「APM-F」340に伝送する。
VFフィルタ715は、アップストリームポート330で、プロセッサ110から受信したPCIeトランザクションを検査して、それがVF710の識別子を含むかどうかを知ることができる。
PCIeトランザクションがVF710の識別子を含むと、FPGA145は、PCIeトランザクションをSSD120に伝達するよりは、プロセッサのためPCIeトランザクションを「APM-F」340に伝送する。
つまり、具体的には、アップストリームポート330、VFフィルタ715、ダウンストリームポート335及びダウンストリームフィルタ360である。
前に示した、本発明の実施形態でのように、PCIeトランザクションのフィルタリングと関連した構成要素は、FPGA145から除去することができる。
したがって、本発明の第3実施形態で、アップストリームポート330及びVFフィルタ715は、第1ブリッジ構成要素に配置することができ、ダウンストリームポート335及びダウンストリームフィルタ360は、それぞれが図7の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、又は、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタを処理するために使用することができる。
FPGA145を「さらす」ためにVF710を使用する問題の1つは、VFを使用することがプロセッサ110のホストの動作システムからの支援を要求できるというものである。
一部のオペレーティングシステムは、VFをサポートするが、すべてのオペレーティングシステムがVFを支援しているわけではなく、VFを支援しているのは、オペレーティングシステムに対しそれ自体の複雑さを伴う。
本発明の第4実施形態は、VFを使用する困難さを解決する。
本発明の第3実施形態とは対照的に、本発明の第4実施形態では、SSD120は、2つのPF(705、905)を含む。(本発明の第3実施形態でのように、本発明の第4実施形態は、本発明の他の実施形態がPF及び/又はVFを含んでいないことを意味しない。)
PF705は、SSD120によって提供される機能のような単一のリソースを示し続ける。
一方、PF905は、FPGA145を「さらさせる」。
つまり、PCIeデバイスが列挙されるとき、PFがプロセッサ110によって発見され得るので、プロセッサ110は、それ自身を直接発見できないとしても、PF905を介してFPGA145を間接的に発見できる。
本発明の第3実施形態でのように、SSD120は、ホストシステムのメモリアドレスの二つの相異なるブロックを要求する。
つまり、PF705に対するブロック1005及びPF905に対するブロック1010である。
ダウンストリームFAR420は、PF705に対するブロック1005のサブセットとして選択される。
そしてアップストリームFAR605は、PF905に対するブロック1010の全体であり得る。(つまり、アップストリームFAR605は、ブロック1010のサブセットとして選択され得る。しかし、ブロック1010は、PF905による使用のために専用されPF905は、FPGA145を効果的に「さらす」こと以外の他の目的を有し得ないので、アップストリームFAR605の一部として使用されていないブロック1010の任意のメモリアドレスは、無駄になる可能性がある。)
SSD120が、各ブロックに対し割り当てられたアドレスの範囲を知ることができるようにする間、ブロック(1005及び1010)のそれぞれは、個々のBARを有する。
つまり、PFフィルタ715(PFフィルタ715は、動作中の図7のVFフィルタ715と実質的に同一であり、名前の変更はPFフィルタ715がVFフィルタ715とは異なるように動作するため、FPGA145を「さらす」ために使用される関数のタイプと、さらに関連がある)である。
PFフィルタ715は、ダウンストリームフィルタ360と類似の方式で、プロセッサ110(アップストリームポート330を介して受信した)から来るPCIeトランザクションをフィルタリングする。
例として、SSD120は、サイドバンドバス365、「PCIe VDM」、又は任意の他のメカニズムを使用してアップストリームFAR605でVFフィルタ715をプログラムする。
その後に、FPGA145がアップストリームポート330で、プロセッサ110からPCIeトランザクションを受信するとき、PFフィルタ715は、PCIeトランザクションがアップストリームFAR605にアドレスを含むかどうかを知るためにPCIeトランザクションを検査する。
もしそう(含む)なら、PCIeトランザクションはアクセラレーションコマンドであり、FPGA145は、PCIeトランザクションをSSD120に伝達するよりは、プロセッサのためPCIeトランザクションを「APM-F」340に伝送する。
PFフィルタ715は、アップストリームポート330で、プロセッサ110から受信したPCIeトランザクションを検査して、それがPF905の識別子を含むかどうかを知ることができる。
PCIeトランザクションがPF905の識別子を含むと、FPGA145は、PCIeトランザクションをSSD120に伝達するよりは、プロセッサのためPCIeトランザクションを「APM-F」340に伝送する。
つまり、具体的には、アップストリームポート330、PFフィルタ715、ダウンストリームポート335及びダウンストリームフィルタ360である。
前に示した、本発明の実施形態でのように、PCIeトランザクションのフィルタリングと関連する構成要素は、FPGA145から除去することができる。
したがって、本発明の第4実施形態で、アップストリームポート330及びPFフィルタ715は、第1ブリッジ構成要素に配置することができ、ダウンストリームポート335及びダウンストリームフィルタ360は、それぞれが図9の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、又は、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
本発明の第4実施形態は、本発明の第3実施形態でのようにVFを使用することの難しさを扱う。
しかし、本発明の第4実施形態を使用するためには、SSD120は、FPGA145の使用のために専用されているPF905を提供する必要がある。
すべてのSSD(又は、より一般的には、ストレージデバイス)がFPGA145の使用のために専用され得る利用可能なPFを有しない。
本発明の第5実施形態は、SSD120が多数のPFを提供する必要がない解決策を提供する。
図11において、SSD120は、PF及びVFを提供することが必要のない図3及び図5で示される構造に戻る。(つまり、SSD120は、PF及び/又はVFを提供しなくてもよく、SSD120は、追加のPF及び/又はVFを提供する必要がない。)
図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にそれらの通信を行う。
プロセッサ110がエンドポイント1105にPCIeトランザクションを伝送するとき、プロセッサ110は、どのPFのアドレスが指定されるかを特定する。
前述した本発明の第3及び第4実施形態と同様に、エンドポイント1105は、PFを識別するPCIeトランザクションに含まれているタグ、又はPCIeトランザクション(言い直すが、下から図12を参照して説明する)と関連したアドレスによってPFがアドレス指定されるかどうかを識別する。
PF1115を識別するPCIeトランザクションは、SSD120のために予定のものと見なすことができ、ルートポート1110を介してFPGA145によってSSD120に伝送され得る。
PF1120を識別するPCIeトランザクションは、アクセラレーションコマンドを含むものと見なすことができ、「APM-F」340に伝送される。
ダウンストリームフィルタ360は、図3、5、7、9、11のダウンストリームフィルタ360と同様に動作する。
つまり、唯一の重要な違いは、ダウンストリームフィルタが、ホストシステムメモリアドレスに基づいてフィルタリングするのではなく、以下で図12を参照して説明するように、FPGAメモリアドレスに基づいてフィルタリングするものである。
ダウンストリームフィルタ360は、サイドバンドバス365、「PCIe VDM」、又は任意の他の望みのメカニズムを使用してSSD120によってダウンストリームFAR410でプログラムされる。
FPGA145は、SSD120を代替するのではなく、単に追加の機能を提供するため、そしてFPGA145がプロセッサ110とSSD120との間に挿入されるので、プロセッサ110がSSD120によって提供される機能を知ることができるのは重要である。
より具体的には、FPGA145は、SSD120のPCIe構成空間とマッチする性能を知らせなければならない。
その目的を達成するために、それに応じてSSD120が提示するのと同じPCIe構成をプロセッサ110に提供しつつ、そのために、構成モニター1125は、SSD120のPCIe構成空間を複製する。
図12において、SSD120は、これ以上のプロセッサ110と直接通信していないため、SSD120は、ホストシステムのメモリアドレスのブロックを要求しない。
代わりに、SSD120は、ルートポート1110のための構成空間を含むアドレスマップ1210からFPGAメモリアドレスのブロック1205を要請する。
ブロック1205は、プロセッサ110とダウンストリームFAR420とのNVMe通信のためのサブセット410を含む。
ブロック1205は、BARにより識別される。
FPGA145のSSD120によって要請されたように、ブロック1205を並行するために、FPGA145は、PF1115のために、少なくともブロック1205と同じ大きさのブロック1215を求める(したがって、SSD120がプロセッサ110からブロック1215を要請したかのように見える)。
FPGA145は、アクセラレーションコマンドについて「APM-F」340と通信するために、プロセッサ110のためのメカニズムを提供しつつ、PF1120のためのブロック1220を要請する。
ブロック(1215及び1220)は、それぞれ2つの分離されたBARにより識別され得る。
本発明の他の実施形態で、FPGA145とSSD120との間の通信を容易にするために、ダウンストリームFAR420のようにブロック1220の一部分を使用することが可能である。
つまり、具体的には、エンドポイント1105、PF(1115及び1120)、ルートポート1110、及びダウンストリームフィルタ360である。
前に示した本発明の実施形態と同様に、PCIeトランザクションのフィルタリングと関連した構成は、FPGA145から除去することができる。
したがって、本発明の第5実施形態で、エンドポイント1105、PF(1115及び1120)は、第1ブリッジ構成要素及びルートポート1110に配置することができ、ルートポート1110及びダウンストリームフィルタ360は、それぞれが、図11の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、(他のソース(source)からの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
本発明の第5実施形態は、従来のPCIeトランザクション(プロセッサ110とSSD120との間の)からアクセラレーションコマンド(SSD120とFPGA145との間の)を分離するために、相変わらずダウンストリームフィルタ360に依存する。
ダウンストリームフィルタ360は、本発明の第6実施形態でのようにSSD120が第2エンドポイントを含む場合に除去することができる。
図13で、FPGAは、図11の実施形態で示した1つのルートポート1110ではなく、2つのルートポート(1110及び1305)を含む。
ルートポート1110は、プロセッサ110から発生する従来のPCIeトランザクションで使用され得る。
ルートポート1305は、SSD120とFPGA145との間で交換されるアクセラレーションコマンド及びデータのために使用することができる。
この事実は、SSD120が、図5、7、9のアップストリームフィルタ(505及び715)をプログラミングするための負担を軽減してくれるように、SSD120がFPGA360でダウンストリームフィルタ360をプログラミングの負担を軽減してくれるということを意味する(図11及び13にFPGA145は、従来のPCIeトランザクションに関連したPFに基づいたアクセラレ-ションコマンドを区別することができる)。
この利点に対するオフセットは、SSD120が、それぞれFPGA145のルートポート(1110及び1305)と通信するために二つのエンドポイント(305及び1310)を含むことである。
さらに、ルートポート(1110及び1305)のそれぞれは、それ自身の構成空間を含んでいるので、SSD120のエンドポイント(305及び1310)は、相異なる構成空間からメモリアドレスのブロックを要請することができる。
図14は、このようなシナリオを示している。
図14でSSD120のエンドポイント305は、ルートポート1110のための構成空間を含むアドレスマップ1210からブロック1405を要請する。
しかし、従来のPCIeトランザクション(プロセッサ110とSSD120との間)とアクセラレーションコマンド(FPGA145とSSD120との間)は、SSD120上の相異なるエンドポイントの使用により自然に分離されるが、SSD120は、ダウンストリームFARを含むのに十分な大きさのためにブロック1405を要請する必要がない。
したがって、ブロック1405は、FPGA145なしに大きくなる必要がある。
つまり、プロセッサ110とSSD120との間のNVMe通信を支援するのに十分な大きさのことである。
ブロック1405は、BARによって識別され得る。
しかし、ルートポート1305及びエンドポイント1310は、本発明の第6実施形態でアクセラレーションコマンドを交換するために使用されるので、アドレスマップ1410の全体が、斯かるPCIeトランザクションのために使用され得る。
つまり、エンドポイント1310が、アドレスマップ1410のただの小さいブロックを要請する必要はない。
よって、ブロック1215は、少なくともブロック1405程大きいはずである。
同様に、PF1120は、プロセッサ110とFPGA145との間で交換されるアクセラレーションコマンドを管理するために、ホストシステムのメモリアドレスのブロック1220を要請する。
ブロック(1215及び1220)は、それぞれBARによって識別され得る。
つまり、具体的には、エンドポイント1105、PF(1115及び1120)、ルートポート(1110、1305)である。
前に示した本発明の実施形態と同様に、PCIeトランザクションのフィルタリングと関連した構成は、FPGA145から除去することができる。
したがって、本発明の第6実施形態で、エンドポイント1105、PF(1115及び1120)は、第1ブリッジ構成要素に配置することができ、ルートポートに(1110、1305)は、それぞれが図13の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、このようなブリッジ構成要素の中で単に一つだけが使用することができ、(他のソース(source)からの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
本発明の最初の第6実施形態で、FPGA145は、単一のアップストリームポート330(図5、7、9)又は単一のエンドポイント1105(図11及び13で)を使用して示している。
しかし、FPGA145が、本発明の第6実施形態におけるSSD120のように、多数のエンドポイントを包含していない理由はない。
本発明の第7及び第8実施形態は、FPGA145が多重のエンドポイントを使用して、どのように動作できるかを示す。
本発明の第7実施形態は、FPGA145が2つのエンドポイント(1105及び1505)を含むことを除いては、本発明の第6実施形態と類似する。
エンドポイント1105で受信したPCIeトランザクションは、従来のPCIeトランザクションと見なすことができ、SSD120に伝送される一方(ルートポート1110を介して)、エンドポイント1505で受信したPCIeトランザクションはアクセラレーションコマンドと見なすことができ、処理のために「APM-F」340に伝達される。
すべての意図及び目的のために、本発明の第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によって識別され得る。
つまり、具体的には、エンドポイント(1105、1505)、及びルートポート(1110及び1305)である。
前に示した、本発明の実施形態でのように、PCIeトランザクションのフィルタリングと関連した構成は、FPGA145から除去することができる。
したがって、本発明の第7実施形態で、エンドポイント(1105、1505)は、第1ブリッジ構成要素に配置することができ、ルートポート(1110及び1305)は、それぞれが図15の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、又は、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
図17は、本発明の第8実施形態による、図1のアクセラレーションモジュール及び図1のストレージデバイスの構成要素を示すブロック図である。
本発明の第8実施形態は、FPGA145が2つのエンドポイント(1105及び1505)を含むことを除いては、本発明の第5実施形態と類似する。
言い換えれば、FPGA145のエンドポイント(1105及び1505)は、従来の「ホストSSD PCIeトランザクション」及び「ホスト-FPGAアクセラレーションコマンド」を区別するために使用される。
FPGA145のエンドポイント1105で受信したPCIeトランザクションは、従来のPCIeトランザクションと見なすことができ、SSD120に伝送される一方(ルートポート1110を介して)、FPGA145のエンドポイント1505で受信したPCIeトランザクションはアクセラレーションコマンドと見なすことができ、処理のために「APM-F」340に伝達される。
本発明の第8実施形態によるメモリの使用は、第5実施形態によるメモリ使用と同じである。
ルートポート1110がFPGA145の唯一のルートポートである場合、SSD120のエンドポイント305は、ダウンストリームFAR420を含み得るアドレスマップ1210からブロック1205を要請する。
BARによって識別されるエンドポイント1105が、少なくともブロック1205と同じ大きさのブロック1215を要求しつつ、FPGA145のエンドポイント(1105、1505)は、ホストシステムのメモリアドレスからブロック(1215、1220)を要求する。
エンドポイント(1105及び1505)は、プロセッサ110とSSD120との間で交換されるPCIeトランザクションを管理するために、ホストシステムのメモリアドレスのブロック(1215及び1220)を要請する。
ブロック1215は、少なくともブロック1405だけ大きくなれる。
ブロック(1215及び1220)は、それぞれ2つの分離されたBARにより識別される。
本発明の他の実施形態で、FPGA145とSSD120との間の通信を容易にするために、ダウンストリームFAR420のようにブロック1220の部分を使用することが可能である。
つまり、具体的には、エンドポイント(1105、1505)、ルートポート1110及びダウンストリームフィルタ360である。
前に示した、本発明の実施形態でのように、PCIeトランザクションのフィルタリングと関連した構成は、FPGA145から除去することができる。
したがって、本発明の第8実施形態で、エンドポイント(1105、1505)は、第1ブリッジ構成要素に配置することができ、ルートポート1110及びダウンストリームフィルタ360は、それぞれが、図17の相異なる構成を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置することができる。
二者択一的に、PCIeトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、(他のソースからの通信のために、それ自体のフィルタリングを処理するFPGA145とともに)、又は、単一のブリッジ構成要素がFPGA145に対するすべてのフィルタリングを処理するために使用することができる。
本発明の実施形態に応じて、図19は、図1のアクセラレーションモジュール145を代えてフィルタリング機能を処理できるブリッジ構成要素を示している。
図19において、2つのブリッジ構成要素(1905及び1910)を示す。
ブリッジ構成要素1905は、プロセッサ110から受信したPCIeトランザクションのフィルタリングを処理する一方、ブリッジ構成要素1910は、SSD120から受信したPCIeトランザクションのフィルタリングを処理する。
ブリッジ構成要素1905は、PCIeトランザクションがアクセラレーションコマンドを含むか否かに応じて、PCIeトランザクションをPCI145又はSSD120のいずれか一つに伝送する。
同様に、ブリッジ構成要素1910は、PCIeトランザクションがアクセラレーションコマンドを含むか否かに応じて、PCIeトランザクションをFPGA145又はプロセッサ110のいずれか一つに伝送する。
FPGA145のアップストリーム及びダウンストリームインターフェースの一部として図に示したものと類似の具現と同様に、ブリッジ構成要素(1905及び1910)の特定の具現は、図19に示さない。
本発明の他の実施形態で、1つのブリッジ構成要素(1905又は1910)のみ使用され、他のブリッジ構成要素の機能は、潜在的にFPGA145とともに残り得る。
他の実施形態で、ブリッジ構成要素(1905及び1910)の両方は、分離された構成ではない、単一の構成に含まれ得る。
本明細書の残りの部分で、すべてのフィルタリング機能は、FPGA145から起因するが、図19のブリッジ構成要素(1905及び/又は1910)にフィルタリングが移動することができる時期と方法が明確にならなければならない。
図20Aで、本発明の第1実施形態(そして、できる限り、本発明の他の実施形態)によるデータの流れを示す。
プロセッサ110は、PCIeトランザクション2005をSSD120に伝送する(FPGAを介して)。
その後に、「APM-S」315は、SSD120がFPGA145に伝送できるPCIeトランザクション2020に含まれ得るアクセラレーションコマンド2015を生成する。
なお、図20Aで示すように、FPGA145及びSSD120は、アクセラレーションデータを交換する。
二者択一的に、FPGA145は、SSD120から来る結果2035をシミュレーションしながら、その結果2040をプロセッサ110に直接伝送し得る。
FPGA145及びSSD120は、図20Bで示すように、アクセラレーションデータを交換する。
最後に、FPGA145は、結果2040を再びプロセッサ110に送る。
図21は、高いレベルのビュー(high-level view)を提供する。
よって、以後の図では、FPGA145の動作に対しより詳細な例示的なフローチャートを提供する。
斯かるPCIeトランザクションは、図20A、図20BのPCIeトランザクション(2015又は2045)のいずれか1つであり得るし、デバイスは、プロセッサ110又はSSD120であり得る。
ステップS2110で、FPGA145は、PCIeトランザクションがアクセラレーションコマンドを含んでいるか否かを判断する。
ステップS2115で、FPGA145は、PCIeトランザクションがアクセラレーションコマンドを含むかどうかを知るために検査する。
もしそうなら(「はい」方向)、ステップS2120でアクセラレーションコマンドは、「APM-F」340によって処理される。
そうでない場合(「いいえ」方向)には、ステップS2125で、PCIeトランザクションは、他のデバイスに伝達される(PCIeトランザクションがプロセッサ110から受信した場合、PCIeトランザクションはSSD120に伝達され得、その逆も可能である)。
「APM-F」340によるアクセラレーションコマンドを処理するのはアクセラレーションコマンドによって処理されるアプリケーションデータを受信するためにSSD120と通信することを含み得ることに注目する。
ステップS2206で、FPGA145は、ダウンストリームFAR420をダウンストリームフィルタ360と関連付ける(associate)。
SSD120がサイドバンドバス365を介してダウンストリームFAR420をダウンストリームフィルタ360でプログラミングする場合、この関係は、自動的に発生することができたり、また、この関係は、FPGA145によって活性ステップを要求したりし得る(例として、SSD120がダウンストリームFAR420を含むFPGA145に「PCIe VDM」を伝送する場合)。
点線2209で示すように、本発明のいくつかの実施形態で、ステップS2203及びステップS2206は、スキップされることに注目する。
本発明のいくつかの実施形態で、ダウンストリームFAR420は、FPGA145それ自体によって提供され得る。
SSD120がサイドバンドバス365を介してアップストリームFAR605をアップストリームフィルタ505でプログラミングする場合、この関係は、自動的に発生することができたり、また、この関係は、FPGA145によって活性ステップを要求したりすることができる(例として、SSD120がアップストリームFAR605を含むFPGA145に「PCIe VDM」を伝送する場合)。
本発明のいくつかの実施形態で、アップストリームFAR605は、FPGA145それ自体によって提供され得る。
言い換えれば、SSD120がサイドバンドバス365を介してPF/VFの識別子をアップストリームフィルタ505でプログラミングする場合は、この関係は、自動的に発生することができたり、また、この関係は、FPGA145によって活性ステップを要求したりすることができる(例として、SSD120がPF/VFの識別子を含むFPGA145に「PCIe VDM」を伝送する場合)。
点線2224に示すように、本発明のいくつかの実施形態で、ステップS2212、ステップS2215、ステップS2218、ステップS2221は、スキップすることができる。
本発明のいくつかの実施形態で、ステップS2212、ステップS2215、ステップS2218、ステップS2221は、点線2233で示すようにスキップすることができる。
ステップS2239で、FPGA145は、図20BのPCIeトランザクション2005が図20Bのアクセラレーションコマンド2045を含んでいるか否かを判断する。
もしそうなら(「はい」方向)、ステップS2242で、図20Bのアクセラレーションコマンド2045を処理することができ、ステップS2245で、「APM-F」340は、プロセッサ110に図20Bの結果2040を送信する。
そうでなければ(「いいえ」方向)、図20BのPCIeトランザクション2005が図20Bのアクセラレーションコマンド2045を含んでいない場合、ステップS2248で、FPGA145は、図20BのPCIeトランザクション2005をSSD120に伝送する(本発明の実施形態による、ダウンストリームポート335又はルートポート1110を介して)。
ステップS2254で、FPGA145は、図20AのPCIeトランザクション2020が図20Aのアクセラレーションコマンド2015を含んでいるか否かを判断する。
そうでなければ(「いいえ」方向)、図20AのPCIeトランザクション2020がアクセラレーションコマンド2015を含んでいない場合、ステップS2263で、FPGA145は、図20AのPCIeトランザクション202をプロセッサ110に伝送する(発明の実施形態による、アップストリームポート330又はエンドポイント1105を介して)。
本発明の実施形態による、図23A及び23Bは、個別的に又は集合的に使用することができる3つの可能なテストを示している。
一つ以上のテストを使用する本発明の実施形態で、個々のテストが満足される場合、図20BのPCIeトランザクション2005は、図20Bのアクセラレーションコマンド2045を含むものと判断される。
ステップS2310で、FPGA145は、図20BのPCIeトランザクション2005がアップストリームフィルタ715と関連したPF又はVFの識別子を含むかどうかを判断する。
ステップS2315で、FPGA145は、エンドポイント1505のようなアクセラレーションコマンド専用のポートで図20BのPCIeトランザクション2005が受信されるかどうかを判断する。
そうでなければ、ステップS2325で、FPGA145は、図20BのPCIeトランザクション2005が図20Bのアクセラレーションコマンド2045を含んでいないことを知る。
本発明の実施形態に基づいて、図24は、個別的に又は集合的に使用することのできる3つの可能なテストを示している。
一つ以上のテストを使用する本発明の実施形態で、どのようなテストでも満足される場合、図20AのPCIeトランザクション2020は、図20Aのアクセラレーションコマンド2015を含むものと判断される。
ステップS2410において、FPGA145は、ループポート1305のようなアクセラレーションコマンド専用のポートで図20AのPCIeトランザクション2020が受信されたどうか判断する。
これらのテストの任意の結果が、図20AのPCIeトランザクション2020が図20Aのアクセラレーションコマンド2015を含むものであることを示すと(「はい」方向)、ステップS2415で、FPGA145は、図20AのPCIeトランザクション2020が図20Aのアクセラレーションコマンド2015を含むことを知る。
従って、そうでなければ(「いいえ」方向)、ステップS2420で、FPGA145は、図20AのPCIeトランザクション2020が図20Aのアクセラレーションコマンド2015を含んでいないことを知る。
ステップS2510で、第1ブリッジ構成要素1905は、PCIeトランザクションがアクセラレーションコマンドであるか否かを判断する。
もしそうなら(「はい」方向)、ステップS2515において、第1ブリッジ構成要素1905は、PCIeトランザクション/アクセラレーションコマンドを図1のFPGA145に伝達する。
しかし、そうでなければ(「いいえ」方向)、ステップS2520において、第1ブリッジ構成要素1905は、PCIeトランザクションを図1のSSD120に伝達する。
図26において、ステップS2605で、第2ブリッジ構成要素1905は、図1のSSD120からPCIeトランザクションを受信する。
ステップS2610で、第2ブリッジ構成要素1905は、PCIeトランザクションがアクセラレーションコマンドであるか否かを判断する。
もしそうなら(「はい」方向)、ステップS2615において、第2ブリッジ構成要素1905は、PCIeトランザクション/アクセラレーションコマンドを図1のFPGA145に伝達する。
しかし、そうでなければ(「いいえ」方向)、ステップS2620において、第2ブリッジ構成要素1905は、PCIeトランザクションを図1のSSD120に伝達する。
SSD120は、本発明の第1~第4の実施形態でのように、ホストシステムメモリから、又は本発明の第5~第8の実施形態でのようにFPGA145のルートポートの構成空間からメモリアドレスのブロックを要請する。
サイドバンドバス365、「PCIe VDM」又は任意の他の望みのメカニズムを使用して、ステップS2710で、SSD120は、ダウンストリームFAR420のように使用するためのメモリアドレスのブロックのサブセットを選択し、ステップS2715で、SSD120は、ダウンストリームフィルタ360をダウンストリームFAR420でプログラミングする。
本発明のいくつかの実施形態で、ステップS2705~S2715は、点線2720に示すようにスキップすることができることに注目する(点線2720、また図27Bに示すいくつかのブロックを省略する)。
二者択一的に、ステップS2735で、SSD120は、PF705を使用してそれ自身の能力を「さらす」。
その後に、サイドバンドバス365、「PCIe VDM」又は任意の他の望みのメカニズムを使用して、ステップS2740で、SSD120は、FPGA145を「さらす」ためにPF905又はVF710を使用し、ステップS2745で、SSD120は、ダウンストリームフィルタ360をPF905又はVF710の識別子でプログラムする。
本発明のいくつかの実施形態でステップS2725~S2745)は、点線2750で示すようにスキップされ得ることに注目する。
このPCIeトランザクションは、図20AのPCIeトランザクション2005、又は(プロセッサ110からFPGA145によって伝達される(forwarded))図20A及び図20BのPCIeトランザクション2025であり得る。
もしそうなら(「はい」方向)、ステップS2765で、HIL310は、PCIeトランザクション(又は圧縮解除されたアクセラレーションコマンド)を処理するために「APM-S」315に伝送する。
「APM-S」315は、アクセラレーションコマンドへの応答を生成し、これは、図20Aのアクセラレーションコマンド2025、又は(PCIeトランザクションがプロセッサ110から由来された場合)アクセラレーションデータ2025であり得る(PCIeトランザクションがFPGA145の「APM-F」340から由来した場合)。
いずれの場合でも、ステップS2770で、「APM-S」315は、応答をFPGA145に伝送する。
もしそうなら(「はい」方向)、ステップS2780で、SSD120は、図20Aの結果2035をプロセッサ110に伝送する(SSD120及びFPGA145のエンドポイント305を介して)。
PCIeトランザクションが図20Aの結果2030ではなければ(「いいえ」方向)、ステップS2785で、SSD120は、通常の場合のようにSSD120に格納されたデータに対してPCIeトランザクションを処理する。
本発明の実施形態に基づいて、図28A及び28Bは、個別的に又は集合的に使用することができる3つの可能なテストを示している。
一つ以上のテストを使用する本発明の実施形態で、いくつかのテストで満足される場合、図20AのPCIeトランザクションはアクセラレーションコマンド2015を含むものと判断される。
ステップS2810で、SSD120は、PCIeトランザクションが「APM-F」340から由来するのかどうかを判断し、これは「APM-F」340が図20A及び図20Bのアクセラレーションデータ2025を要請したり、「APM-F」340が、図20Aの結果2030をSSD120に伝送したりする場合に発生する。
ステップS2810のテストは、任意の所望の方式で実行することができる。
つまり、例として、PCIeトランザクションは、PCIeトランザクションがアクセラレーションコマンドであることを示すためのタグを含んだり、PCIeトランザクションはダウンストリームのアドレスと関連したりする。
ステップS2815で、SSD120は、PCIeトランザクションがエンドポイント1310のようなアクセラレーションコマンド専用のポートで受信されるか否かを判断する。
そうでない場合(「いいえ」方向)、ステップS2825で、SSD120は、PCIeトランザクションがアクセラレーションコマンドを含んでいないことを知る。
しかし、当業者は、ステップの順序を変更したり、ステップを省略したり、又は図面に示していない接続を含んだりすることにより、本発明の他の実施形態も可能であることを認識するはずである。
加えて、特定の動作が特定の構成によって実行されるものとして説明したが、本発明の実施形態は、説明した動作を実行する他の構成を支援することができる。
フローチャートのこのようなすべての変形は、明示的に記述されていようとなかろうと本発明の実施形態だと見なされる。
図1の装置105へ、図1のアクセラレーションモジュール145を導入することにより、図1のプロセッサ110は、図1のアクセラレーションモジュール145によって実行可能な作業をオフロード(offload)することができる。
斯かるコマンドは、典型的には、廃棄することができる多くの量のデータを処理することを含んでいるので、図1のメモリ140のいくつかの空間を自由にする必要性を回避するだけでなく、図1のアクセラレーションモジュール145に作業をオフロードすることは、データを図1のストレージデバイス120から、図1のメモリ140にデータをローディングするのに要請される遅延を避ける。
図1のアクセラレーションモジュール145を「さらす」ために追加のPF及び/又はVFを支援するストレージデバイスだけでなく、シングルポート及びデュアルポートストレージデバイスのすべてが使用され得る。
図1の装置105の動作システムがVFを支援すれば、VFが図1のアクセラレーションモジュール145を「さらす」のに使用することができる。
そうでなければ、PFが使用され得る。
図1のプロセッサ110は、図1のアクセラレーションモジュール145と直接通信することができ、そのような通信を支援する発明の実施形態が使用され得る。
そうでなければ、図1のプロセッサ110は、図1のストレージデバイス120に、すべてのアクセラレーションコマンドを送信することができ、図1のアクセラレーションモジュール145がアクセラレーションコマンドを実行するように要請するために、それを、図1のストレージデバイス120に残すことができる。
装置(機械)又は複数の装置(機械)は、少なくとも一部は、他の装置(機械)から受信される指示、バーチャルリアリティ(VR)環境との相互作用、生体フィードバック、又は他の入力信号だけではなく、キーボード、マウスなどのような通常の入力デバイスからの入力により制御され得る。
ここで使用するように、「装置(機械:マシン)」の用語は、単一のマシン、仮想マシン、複数の装置(機械)、複数の仮想マシン又はともに作動するデバイスと通信するように結合されたシステムを広く含むものとして意図する。
例示的な装置(機械)は、例として、自動車、電車、タクシーなどのような個人用や公共交通などの輸送装置(機械)だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルドデバイス、携帯電話、タブレットなどのようなコンピューティングデバイスを含み得る。
装置(機械)又は複数の装置(機械)は、ネットワークインターフェース、モデム又は他の通信結合を介して、のように一つ又はそれより多くのリモート機械(マシン)への一つ又はそれより多くの接続を活用することができる。
装置(機械:マシン)は、イントラネット、インターネット、LAN(local area networks)、(WAN wide area networks)などのような物理的及び/又は論理的ネットワークの手段として、互いに接続することができる。
この分野における熟練した者は、ネットワーク通信が、多様な有線及び/又は無線の近距離又は遠距離キャリア、及び無線周波数(RF)、衛星、マイクロウェーブ、IEEE 802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含むプロトコルを活用することを理解するだろう。
関連したデータは、例えば、RAM、ROMなどのような揮発性及び/又は不揮発性メモリ、他のストレージデバイス、ハードドライブ、フロッピーディスク(登録商標)、光学ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生体ストレージなどを含む、関連したストレージデバイスに格納することができる。
関連したデータは、物理的及び/又は論理ネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形態で伝達され、圧縮された又は暗号化されたフォーマットで使用され得る。
関連したデータは、分散環境でも使用することができ、装置(機械)アクセスに対してローカル及び/又はリモートで格納することができる。
ソフトウェアは、論理的機能を具現するための実行可能なコマンドの順序付けられたリストを含み得、単一若しくは多重のコアプロセッサ、プロセッサ含みシステムのようなデバイス(device)、コマンド実行システム、又は機構(apparatus)と関連した、若しくはこれらによる使用のための任意の「プロセッサ可読媒体」で具現することができる。
ソフトウェアで具現される場合、機能は実在し、非一時的コンピュータ可読媒体上に格納されたり、1つ以上のコマンド又はコードとして伝送されたりすることができる。
ソフトウェアモジュールは、RAM(random access memory)、フラッシュメモリ、ROM(Read Only Memory)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、レジスタ、ハードディスク、リムーバブルディスク、CDROM、又はこの技術分野において知られている任意の他の形態のストレージ媒体であり得る。
前述の説明が具体的な実施形態に集中したが、他の構成もまた考慮される。
具体的には、「本発明の技術的思想の実施形態による」のような説明や、ここで使用した類似のものにもかかわらず、このようなフレーズは、一般的に実施形態の可能性を参照し、本発明の技術的思想を具体的な実施形態の構成に限定することを意図しない。
ここで使用したように、このような用語は、他の実施形態への組み合わせ可能な同一又は相異なる実施形態を参照することができる。
少ない実施形態だけを説明したが、この分野における熟練した者は、本記載の新規な説明及び長所から実質的に逸脱せずに、このような実施形態に多くの修正が可能であることを十分に理解するだろう。
したがって、このようなすべての修正は、請求項において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図する。
前記プロセッサ上で実行中の前記アプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するためのアップストリームインターフェースと、
ストレージデバイスと通信するためのダウンストリームインターフェースと、
ハードウェアを使用して具現されてアクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー(APM-F)を含むアクセラレーションモジュールと、を包含し、
前記ストレージデバイスは、前記アクセラレーションモジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
前記アプリケーションに対するアプリケーションデータを格納するためのストアと、
前記アクセラレーションコマンドを実行するのに前記アクセラレーションプラットフォームマネージャー(APM-F)を補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(APM-S)と、をさらに包含し、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIe(Peripheral Component Interconnect Exchange)バスを介して通信し、
前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにローディングすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
前記アクセラレーションモジュールと前記ストレージデバイスとの間の通信を接続し、前記ダウンストリームインターフェースを含む第2ブリッジ構成要素と、をさらに包含する。
ステートメント3。本発明の一実施形態はステートメント1によるシステムを含み、前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記アクセラレーションモジュールは、前記アップストリームインターフェース及び前記ダウンストリームインタフェースを包含し、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント5。本発明の一実施形態はステートメント3によるシステムを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント7。本発明の一実施形態はステートメント3によるシステムを含み、前記FPGAは、アクセラレーションエンジンと、
前記アクセラレーションエンジンに前記アクセラレーションコマンドをスケジューリングするランタイムスケジューラ(run-time scheduler)と、をさらに含む。
ステートメント8。本発明の一実施形態はステートメント3によるシステムを含み、前記SSDは、FPGAを含む。
前記ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、第1PF、第2PF及び前記FPGAルートポートと関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記SSDから受信した第1アクセラレーションコマンドをインターセプトするように動作し、前記APM-Fにダウンストリームフィルタのアドレス範囲(FAR)と関連する前記第1アクセラレーションコマンドを伝達するように動作し、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、前記プロセッサから受信した第1PCIeトランザクションを、前記SSDに伝達するように動作し、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記第1PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連関連付けられる。
ステートメント11。本発明の一実施形態はステートメント10によるシステムを含み、前記SSDは、前記プロセッサから受信した前記アクセラレーションコマンドを含む、特定のコマンドをインターセプトし、前記アクセラレーションコマンドを生成するために、前記APM-Sをトリガーするために、前記特定のコマンドを前記APM-Sに伝達するホストインターフェースロジック(HIL)と、をさらに含む。
ステートメント13。本発明の一実施形態はステートメント9によるシステムを含み、前記SSDは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
ステートメント15。本発明の一実施形態はステートメント14によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント16。本発明の一実施形態はステートメント15によるシステムを含み、前記サイドバンドバスはI2C(Inter-Integrated Circuit)バス及びSMBus(System Management Bus)を含むセットから得られる。
ステートメント17。本発明の一実施形態はステートメント14によるシステムを含み、前記コントローラは、「PCIe VDM」(Vendor Defined Message)を使用して、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
前記コントローラは、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
ステートメント19。本発明の一実施形態はステートメント9によるシステムを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
前記FPGAはアップストリームポートで前記プロセッサから受信したアップストリームFARと関連していない第3PCIeトランザクションを、前記SSDに伝達するように動作する。
ステートメント22。本発明の一実施形態はステートメント20によるシステムを含み、前記SSDは、前記プロセッサからホストシステムアドレスのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセット及びアップストリームFARとして、前記ホストシステムアドレスの前記ブロックの第2サブセットを選択するように動作する。
ステートメント24。本発明の一実施形態はステートメント22によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARで、前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
ステートメント26。本発明の一実施形態はステートメント25によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント28。本発明の一実施形態はステートメント20によるシステムを含み、前記APM-Fは、前記ダウンストリームポート及び前記SSDの前記エンドポイントを介して前記APM-Sに結果を伝送するように動作し、
前記コントローラは、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
ステートメント30。本発明の一実施形態はステートメント9によるシステムを含み、前記SSDは物理関数(PF)及び仮想関数(VF)を含み、前記PFは前記SSDを「さらす」ために動作し、前記VFは前記FPGAを「さらす」ために動作し、
前記FPGAは、前記アップストリームポートと関連した前記アップストリームフィルタと、をさらに含み、前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトし、前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされない第3PCIeトランザクションを、前記SSDに伝達するように動作する
ステートメント32。本発明の一実施形態はステートメント30によるシステムを含み、前記PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
ステートメント34。本発明の一実施形態はステートメント33によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
ステートメント36。本発明の一実施形態はステートメント33によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
前記アップストリームフィルタは、アップストリームFARと関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント38。本発明の一実施形態はステートメント37によるシステムを含み、前記VFは、前記アップストリームFARとして前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
ステートメント40。本発明の一実施形態はステートメント39によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
ステートメント42。本発明の一実施形態はステートメント39によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
前記アップストリームフィルタは、前記VFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント44。本発明の一実施形態はステートメント43によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
ステートメント46。本発明の一実施形態はステートメント45によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント48。本発明の一実施形態はステートメント30によるシステムを含み、前記APM-Fは、前記のダウンストリームポート及び前記SSDのエンドポイントを介して前記APM-Sに結果を伝送するように動作し、
前記コントローラは、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
ステートメント50。本発明の一実施形態はステートメント9によるシステムを含み、前記SSDは、前記SSDを「さらす」ように動作する第1PF及び前記FPGAを「さらす」ように動作する第2PFを含み、
前記FPGAは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトするように動作して、前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAはアップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされない第3PCIeトランザクションを、前記SSDに伝達する。
ステートメント52。本発明の一実施形態はステートメント50によるシステムを含み、前記第1PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
ステートメント54。本発明の一実施形態はステートメント53によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記サイドバンドバスを利用するように動作する。
ステートメント56。本発明の一実施形態はステートメント53によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
前記アップストリームフィルタは、前記アップストリームFARに関連した前記第2のアクセラレーションコマンドをインターセプトするように動作する。
ステートメント58。本発明の一実施形態はステートメント57によるシステムを含み、前記第2PFが前記アップストリームFARとして前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
ステートメント60。本発明の一実施形態はステートメント59によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
ステートメント62。本発明の一実施形態はステートメント59によるシステムを含み、前記コントローラは、「PCIe VDM」を使用して前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
前記アップストリームフィルタは、前記第2VFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント64。本発明の一実施形態はステートメント63によるシステムを含み、前記コントローラは、前記第2PFの前記識別子で前記アップストリームフィルタをプログラミングするように動作する。
ステートメント66。本発明の一実施形態はステートメント65によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント68。本発明の一実施形態はステートメント50によるシステムを含み、前記APM-Fは、前記ダウンストリームポート及び前記SSDの前記エンドポイントを介して前記APM-Sに結果を伝送するように動作し、
前記コントローラの前記の結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
ステートメント69。本発明の一実施形態はステートメント50によるシステムを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
前記ダウンストリームインターフェイスは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、第1PF、第2PF、及び前記FPGAルートポートと関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信した第1アクセラレーションコマンドをインターセプトするように動作して前記第1アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記第1アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲(FAR)と関連付けられ、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信したPCIeトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられる。
前記ホストシステムアドレスの前記第2ブロックは、少なくとも前記FPGAアドレスの前記ブロックほど大きく、
前記コントローラは、前記ダウンストリームFARのように、前記FPGAアドレスの前記ブロックのサブセットを選択するように動作する。
ステートメント72。本発明の一実施形態はステートメント71によるシステムを含み、前記コントローラは、ダウンストリームフィルタをダウンストリームFARでプログラムするように動作する。
ステートメント74。本発明の一実施形態はステートメント73によるシステムを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント76。本発明の一実施形態はステートメント70によるシステムを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント77。本発明の一実施形態はステートメント70によるシステムを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニターをさらに含む。
前記ダウンストリームインターフェースは、第1構成空間を支援する第1FPGAのルートポート及び第2構成空間を支援する第2FPGAのルートポートを含み、
前記SSDの前記エンドポイントは、前記第1FPGAのルートポートと関連し、
前記SSDは、前記第2のFPGAのルートポートと関連した前記SSDの第2エンドポイントと、をさらに含み、
前記FPGAは、第1PF及び第2PFを含み、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝送するように動作し、
前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記第1FPGAのルートポートで、前記SSDから受信した第2PCIeトランザクションを前記プロセッサに伝達するように動作し、
前記第2のFPGAのルートポートで、前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝達するように動作し、
前記第1PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられる。
ステートメント80。本発明の一実施形態はステートメント78によるシステムを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送する。
ステートメント82。本発明の一実施形態はステートメント78によるシステムを含み、前記アップストリームインターフェースは、第2FPGAのエンドポイントと、をさらに含み、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDのエンドポイントを介して前記SSDに伝達するようにさらに動作し、前記第2FPGAのエンドポイントで、前記プロセッサから受信した前記第2アクセラレーションコマンドを前記APM-Fに伝達するように、さらに動作する。
ステートメント84。本発明の一実施形態はステートメント82によるシステムを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント85。本発明の一実施形態はステートメント82によるシステムを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニターをさらに含む。
前記ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、前記FPGAルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記SSDから受信した第1アクセラレーションコマンドをインターセプトするように動作して、前記APM-Fに前記第1アクセラレーションコマンドを伝達するように動作し、
前記第1アクセラレーションコマンドは、ダウンストリームFARと関連し、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝達するように動作し、
前記第2FPGAのエンドポイントにおいて、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記第1FPGAのルートポートで、前記SSDから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記FPGAエンドポイントを介して前記プロセッサに伝達するように動作し、
前 記第2FPGAのルートポートで、前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝達するように動作する。
ステートメント88。本発明の一実施形態はステートメント86によるシステムを含み、前記SSDは、前記ダウンストリームFARを含むFPGAアドレスのブロックを前記FPGAから要請するように動作し、
前記FPGAは、少なくとも前記FPGAアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを前記第1FPGAエンドポイントに対する前記プロセッサから要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして前記FPGAアドレスの前記ブロックのサブセットを選択するように動作する。
ステートメント90。本発明の一実施形態はステートメント89によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
ステートメント92。本発明の一実施形態はステートメント89によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記「PCIe VDM」を使用するように動作する。
ステートメント94。本発明の一実施形態はステートメント86によるシステムを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニターをさらに含む。
前記アクセラレーションモジュールは、アクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー(APM-F)と、
プロセッサと通信するためのアップストリームインターフェースと、
前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(APM-S)を含むストレージデバイスと通信するためのダウンストリームインターフェースを含み、
前記プロセッサ上でアプリケーションが実行され、
前記アクセラレーションモジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して前記プロセッサ及び前記ストレージデバイスと通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリにアプリケーションのデータをローディングすることなく、前記アプリケーションに対する前記ストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
ステートメント97。本発明の一実施形態はステートメント96によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sは、前記アクセラレーションコマンドとともに使用される前記アプリケーションのデータに関する前記ダウンストリームインターフェースを使用して通信する。
ステートメント99。本発明の一実施形態はステートメント96によるアクセラレーションモジュールを含み、前記FPGAは、アクセラレーションエンジンと、
前記アクセラレーションエンジンで前記アクセラレーションコマンドをスケジューリングするランタイムスケジューラ(run-time scheduler)と、をさらに含む。
前記ダウンストリームインターフェースはダウンストリームポートを含み、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信した第1PCIeトランザクションを前記ストレージデバイスに伝達するように動作し、
前記FPGAは、前記ダウンストリームポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信したアクセラレーションコマンドをインターセプトするように動作して前記APM-Fに前記アクセラレーションコマンドを伝達するように動作し、
前記アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲(FAR)と関連付けられ、
前記FPGAは、ダウンストリームポートで、前記ストレージデバイスから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記プロセッサに伝送するように動作する。
ステートメント102。本発明の一実施形態はステートメント101によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタで前記ダウンストリームFARは、前記サイドバンドバスを介して前記コントローラによってプログラミングされる。
ステートメント104。本発明の一実施形態はステートメント101によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタで前記ダウンストリームFARは「PCIe VDM」(Vendor Defined Message)を使用して、前記コントローラによってプログラミングされる。
ステートメント106。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント107。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトするよう動作し、アップストリームFARと関連付けられる前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAはアップストリームポートで前記プロセッサから受信した前記アップストリームFARと関連していない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
ステートメント110。本発明の一実施形態はステートメント109によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント112。本発明の一実施形態はステートメント109によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記「PCIe VDM」を用いて前記ストレージデバイスによってプログラミングされる。
ステートメント114。本発明の一実施形態はステートメント108によるアクセラレーションモジュールを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント116。ス本発明の一実施形態はステートメント108によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスに割り当てられた非揮発性メモリエクスプレス(NVMe)レジスタを介して前記プロセッサに間接的に「さらさ」れる。
前記FPGAは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、
前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトするよう動作し、前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
前記アップストリームフィルタは、アップストリームFARと関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント119。本発明の一実施形態はステートメント118によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
ステートメント121。本発明の一実施形態はステートメント120によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント123。本発明の一実施形態はステートメント117によるアクセラレーションモジュールを含み、前記第2アクセラレーションコマンドは、前記VFの識別子を含み、
前記アップストリームフィルタは、前記VFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント125。本発明の一実施形態はステートメント124によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
ステートメント127。本発明の一実施形態はステートメント124によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタは「PCIe VDM」を用いて前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
ステートメント129。本発明の一実施形態はステートメント117によるアクセラレーションモジュールを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント131。本発明の一実施形態はステートメント100によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの物理関数(PF)により「さらさ」れ、
前記FPGAは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、
前記アップストリームフィルタは、前記プロセッサから受信した第2アクセラレーションコマンドをインターセプトするよう動作し、前記第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
前記アップストリームフィルタは、アップストリームFARに関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント133。本発明の一実施形態はステートメント132によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
ステートメント135。本発明の一実施形態はステートメント134によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント137。本発明の一実施形態はステートメント131によるアクセラレーションモジュールを含み、前記第2アクセラレーションコマンドは、前記PFの識別子を含み、
前記アップストリームフィルタは、前記PFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント139。ス本発明の一実施形態はステートメント138によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタはサイドバンドバスを使用して、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
ステートメント141。本発明の一実施形態はステートメント138によるアクセラレーションモジュールを含み、前記FPGAの前記アップストリームフィルタは「PCIe VDM」を使用して、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
ステートメント143。本発明の一実施形態はステートメント131によるアクセラレーションモジュールを含み、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント144。本発明の一実施形態はステートメント131によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
前記ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、第1PF、第2PF、及び前記FPGAルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信した第1アクセラレーションコマンドをインターセプトするように動作し、前記第1アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記第1アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲(FAR)と関連付けられ、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信したPCIeトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられる。
前記FPGAは、前記構成空間から前記FPGAアドレスの前記ブロックを割り当てるように動作し、
前記ホストシステムアドレスの前記第1ブロックは、少なくとも前記FPGAアドレスの前記ブロックほど大きい。
ステートメント147。本発明の一実施形態はステートメント146によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタ内で前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
ステートメント149。本発明の一実施形態はステートメント148によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント151。本発明の一実施形態はステートメント145によるアクセラレーションモジュールを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント153。本発明の一実施形態はステートメント145によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニターをさらに含む。
前記ダウンストリームインターフェイスは、第1構成空間を支援する第1FPGAのルートポート及び第2構成空間を支援する第2FPGAのルートポートを含み、
前記SSDの前記エンドポイントは、前記第1FPGAのルートポートと関連し、
前記SSDは、前記第2FPGAのルートポートと関連した前記SSDの第2エンドポイントをさらに含み、
前記FPGAは、第1PF及び第2PFを含み、
前記FPGAは、前記第1PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝送するように動作し、
前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記第1FPGAのルートポートで、前記SSDから受信した第2PCIeトランザクションを前記プロセッサに伝達するよう動作し、
前記第2FPGAのルートポートで、前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝達するように動作する。
ステートメント156。本発明の一実施形態はステートメント154によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント158。本発明の一実施形態はステートメント154によるアクセラレーションモジュールを含み、前記アップストリームインターフェースは、第2FPGAのエンドポイントをさらに含み、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDのエンドポイントを介して前記SSDに伝達するように、さらに動作し、前記第2FPGAのエンドポイントで、前記プロセッサから受信した前記第2アクセラレーションコマンドを前記APM-Fに伝達するように、さらに動作する。
ステートメント160。本発明の一実施形態はステートメント158によるアクセラレーションモジュールを含み、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
ステートメント161。本発明の一実施形態はステートメント158によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記のFPGAのエンドポイントにコピーするための構成モニターをさらに含む。
前記ダウンストリームインターフェースは、構成空間を支援するFPGAのルートポートを含み、
前記FPGAは、前記FPGAルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記SSDから受信した第1アクセラレーションコマンドをインターセプトするように動作して、前記APM-Fに前記第1アクセラレーションコマンドを伝達するように動作し、
前記第1アクセラレーションコマンドは、ダウンストリームFARと関連し、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信した第1PCIeトランザクションを前記第1FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝達するように動作し、
前記第2FPGAのエンドポイントにおいて、前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝達するよう動作し、
前記第1FPGAのルートポートで、前記SSDから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記FPGAエンドポイントを介して前記プロセッサに伝達するよう動作し、
前記第2FPGAのルートポートで、前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝達するように動作する。
前記FPGAは、前記構成空間から前記FPGAアドレスの前記ブロックを割り当てるように動作し、
前記FPGAは、前記第1FPGAのプロセッサから少なくとも前記FPGAアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを要請するように動作する。
ステートメント164。本発明の一実施形態はステートメント163によるアクセラレーションモジュールを含み、前記FPGAの前記ダウンストリームフィルタ内の前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
ステートメント166。本発明の一実施形態はステートメント165によるアクセラレーションモジュールを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント168。本発明の一実施形態はステートメント162によるアクセラレーションモジュールを含み、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント170。本発明の一実施形態はステートメント162によるアクセラレーションモジュールを含み、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記のFPGAのエンドポイントにコピーするための構成モニターをさらに含む。
前記第1ブリッジコンポーネントは、
プロセッサと通信するためのアップストリームインターフェースと、
アクセラレーションモジュール及びストレージデバイスと通信するためのダウンストリームインターフェースを含み、
前記プロセッサ上でアプリケーションが実行され、
前記第1ブリッジ構成要素(コンポーネント)は、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスと通信し、
前記ダウンストリームインターフェースは、前記PCIeトランザクションがアクセラレーションコマンドを含んでいるか否かに応じて前記プロセッサから前記アクセラレーションモジュール又は前記ストレージデバイスにPCIeトランザクションを伝達するように動作する。
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
前記プロセッサ及び前記アクセラレーションモジュールと通信するための第2アップストリームインターフェースと、
前記ストレージデバイスと通信するための第2ダウンストリームインターフェースを含み、
前記第2ブリッジコンポーネントは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスと通信し、
前記第2アップストリームインターフェースは、前記第2PCIeトランザクションが第2アクセラレーションコマンドを含んでいるか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記アクセラレーションモジュールに第2PCIeトランザクションを伝達するように動作する。
前記アップストリームポートに関連したアップストリームフィルターを含み、
前記アップストリームフィルタは、前記プロセッサから受信したアップストリームFARに関連した第2アクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信したアップストリームFARと関連していない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
ステートメント176。本発明の一実施形態はステートメント175によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント178。本発明の一実施形態はステートメント175によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記「PCIe VDM」は、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント180。本発明の一実施形態はステートメント171によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記アップストリームインターフェースは、前記ストレージデバイスの仮想関数(VF)により「さらさ」れ、
前記アップストリームインターフェースは、アップストリームポートと、
前記アップストリームポートと関連したアップストリームフィルタを含み、
前記アップストリームフィルタは、前記アクセラレーションモジュールに対する第2アクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
前記アップストリームフィルタは、アップストリームFARに関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント182。本発明の一実施形態はステートメント181によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
ステートメント184。本発明の一実施形態はステートメント183によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント186。本発明の一実施形態はステートメント180によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第2アクセラレーションコマンドは、前記VFの識別子を包含し、
前記アップストリームフィルタは、前記VFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント188。本発明の一実施形態はステートメント187によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
ステートメント190。本発明の一実施形態はステートメント187によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは「PCIe VDM」を用いて前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
前記アップストリームインターフェースは、アップストリームポートと、
前記アップストリームポートと関連したアップストリームフィルタを含み、
前記アップストリームフィルタは、前記アクセラレーションモジュールに対する第2アクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作し、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
前記アップストリームフィルタは、前記アップストリームFARに関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント193。本発明の一実施形態はステートメント192によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスによってプログラミングされる。
ステートメント195。本発明の一実施形態はステートメント194によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記アップストリームフィルタは、前記PFの前記識別子に関連した前記第2アクセラレーションコマンドをインターセプトするように動作する。
ステートメント198。本発明の一実施形態はステートメント197によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
ステートメント200。本発明の一実施形態はステートメント199によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント201。本発明の一実施形態はステートメント198によるハードウェアを使用して具現される第1ブリッジコンポーネントを含み、前記第1ブリッジコンポーネントの前記アップストリームフィルタは「PCIe VDM」を使用して、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
第1PFと、第2PFを含み、
前記ダウンストリームインターフェースは、前記プロセッサから受信したPCIeトランザクションを前記ストレージデバイスに伝送するように動作して、前記プロセッサから受信した第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作し、
前記PCIeトランザクションは、前記第1PFの第1識別子と関連関連付けられる、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連関連付けられる。
前記ダウンストリームインターフェースは、前記プロセッサから受信した前記第1エンドポイントに関連したPCIeトランザクションを前記ストレージデバイスに伝達するように動作して、前記プロセッサから受信した第2アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するよう動作し、
前記第2アクセラレーションコマンドは、前記第2エンドポイントと関連している。
前記第2ブリッジコンポーネントは、プロセッサとアクセラレーションモジュールと通信するためのアップストリームインターフェイスと、
ストレージデバイスと通信するためのダウンストリームインタフェースを含み、
前記第2ブリッジコンポーネントは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスと通信し、
前記アップストリームインターフェースは、前記PCIeトランザクションがアクセラレーションコマンドを含んでいるか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記アクセラレーションモジュールにPCIeトランザクションを伝達するように動作する。
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲(FAR)に関連するアクセラレーションコマンドを識別するように動作するダウンストリームフィルタを含み、
前記ダウンストリームインターフェースは、前記アクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記プロセッサに伝達するように動作する。
ステートメント210。本発明の一実施形態はステートメント209によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARはサイドバンドバスを介して前記ストレージデバイスによってプログラミングされる。
ステートメント212。本発明の一実施形態はステートメント209によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARは「PCIe VDM」を使用して、前記ストレージデバイスによってプログラミングされる。
前記ルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲(FAR)と関連したアクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信した前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記プロセッサに伝達するように動作する。
ステートメント215。本発明の一実施形態はステートメント214によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARはサイドバンドバスを使用して、前記ストレージデバイスによってプログラミングされる。
ステートメント217。本発明の一実施形態はステートメント214によるハードウェアを使用して具現される第2ブリッジコンポーネントを含み、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARは「PCIe VDM」を使用して、前記ストレージデバイスによってプログラミングされる。
前記ダウンストリームインターフェースは、前記第1ルートポートで、前記ストレージデバイスから受信した第2PCIeトランザクションを前記プロセッサに伝達するように動作し、前記第2ルートポートで、前記ストレージデバイスから受信したアクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作する。
前記ストレージデバイスは、アクセラレーションプラットフォームマネージャー(APM-F)を含むアクセラレーションモジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
アプリケーションに対するアプリケーションデータを格納するストアと、
前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(APM-S)を含み、
前記ストレージデバイス及び前記アクセラレーションモジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して通信し、
前記アクセラレーションモジュールは、プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
ステートメント221。本発明の一実施形態はステートメント220によるストレージデバイスを含み、前記APM-F及び前記APM-Sは、前記アクセラレーションコマンドとともに使用される前記アプリケーションデータに関する前記SSDの前記エンドポイントを使用して通信する。
ステートメント223。ステートメント220によると、本発明の実施形態は、ストレージデバイスを含んでいる。ステートメント220において、前記ストレージデバイスは、前記プロセッサから受信した非揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)を含むPCIeトランザクションをSSDに伝送する。
ステートメント225。本発明の一実施形態はステートメント220によるストレージデバイスを含み、前記SSDはダウンストリームFARに関連したアクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作し、
前記第1PCIeトランザクションは、前記APM-Fのために具現され、
前記SSDは、前記ダウンストリームFARと関連していない第1PCIeトランザクションを、前記アクセラレーションモジュールに伝送するように動作し、
前記第1PCIeトランザクションは、前記プロセッサのために具現される。
ステートメント227。本発明の一実施形態はステートメント226によるストレージデバイスを含み、前記SSDは、前記アクセラレーションコマンドを含む特定のコマンドをインターセプトし、前記アクセラレーションコマンドを生成するために、前記APM-Sをトリガーするために、前記の特定のコマンドを前記APM-Sに伝達するホストインターフェースロジック(HIL)をさらに含む。
ステートメント229。本発明の一実施形態はステートメント225によるストレージデバイスを含み、前記SSDは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
ステートメント231。本発明の一実施形態はステートメント230によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためのサイドバンドバスを使用するように動作する。
ステートメント233。本発明の一実施形態はステートメント230によるストレージデバイスを含み、前記コントローラは、「PCIe VDM」(Vendor Defined Message)を使用して、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント235。本発明の一実施形態はステートメント234によるストレージデバイスを含み、前記コントローラは、前記プロセッサ上で実行中のASMによってアクセス可能な、特定のレジスタ内で前記アップストリームFARに対する情報を格納するように動作する。
ステートメント237。本発明の一実施形態はステートメント229によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
ステートメント239。本発明の一実施形態はステートメント238によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント241。本発明の一実施形態はステートメント225によるストレージデバイスを含み、前記SSDは、前記SSDの前記エンドポイントを介して前記APM-Fから結果を受信するように動作して、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
ステートメント243。本発明の一実施形態はステートメント242によるストレージデバイスを含み、前記PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
ステートメント245。本発明の一実施形態はステートメント244によるストレージデバイスを含み、前記コントローラは、サイドバンドバスを利用して、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント247。本発明の一実施形態はステートメント244によるストレージデバイスを含み、前記コントローラは、「PCIe VDM」を用いて前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント249。ステートメント248によると、本発明の実施形態は、ストレージデバイスを含んでいる。ステートメント248において、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
ステートメント251。本発明の一実施形態はステートメント250によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント253。本発明の一実施形態はステートメント242によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記VFでプログラミングするように動作する。
ステートメント255。本発明の一実施形態はステートメント254によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント257。本発明の一実施形態はステートメント242によるストレージデバイスを含み、前記コントローラは、前記SSDの前記エンドポイントを介して前記APM-Fから結果を受信するように動作して、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
ステートメント259。本発明の一実施形態はステートメント258によるストレージデバイスを含み、前記第1PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
ステートメント261。本発明の一実施形態はステートメント260によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためにサイドバンドバスを利用するように動作する。
ステートメント263。本発明の一実施形態はステートメント260によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記「PCIe VDM」を使用するように動作する。
ステートメント265。本発明の一実施形態はステートメント264によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
ステートメント267。本発明の一実施形態はステートメント266によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント269。本発明の一実施形態はステートメント258によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記第2PFの識別子でプログラミングするように動作する。
ステートメント271。本発明の一実施形態はステートメント270によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント273。本発明の一実施形態はステートメント258によるストレージデバイスを含み、前記コントローラは、前記SSDの前記エンドポイントを介して前記APM-Fから結果を受信するように動作して、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
前記コントローラは、前記ダウンストリームFARのように、前記アクセラレーションモジュールの前記ブロックのサブセットを選択するように動作する。
ステートメント275。本発明の一実施形態はステートメント274によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
ステートメント277。本発明の一実施形態はステートメント276によるストレージデバイスを含み、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント279。本発明の一実施形態はステートメント220によるストレージデバイスを含み、前記アクセラレーションモジュールと通信するための前記SSDの第2エンドポイントをさらに含み、
前記SSDの前記エンドポイントは、前記プロセッサと通信するために使用され、
前記SSDの前記第2エンドポイントは、前記APM-Fと通信するために使用される。
前記システムのアクセラレーション方法は、
アクセラレーションモジュールで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記アクセラレーションモジュールのアクセラレーションプラットフォームマネージャー(APM-F)において、前記PCIeトランザクションを処理するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記PCIeトランザクションを第2デバイスに伝達するステップを含み、
前記アクセラレーションモジュールは、プロセッサと関連したメモリにアプリケーションのデータをローディングすることなく、アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップを含む。
前記FPGAのダウンストリームを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント284。本発明の一実施形態はステートメント282によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント286。本発明の一実施形態はステートメント284によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
ステートメント288。本発明の一実施形態はステートメント282によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームポートを使用して前記第2のPCIeトランザクションの結果を前記プロセッサに伝送するステップをさらに含む。
前記第1PCIeトランザクションが前記FPGAの前記アップストリームポートと関連したアップストリームフィルタアドレス範囲(FAR)内のアドレスに関連するか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2のアクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント291。本発明の一実施形態はステートメント289によるシステムのアクセラレーション方法を含み、前記FPGAにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、
前記アップストリームFARを前記FPGAの前記アップストリームポートと接続するステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント293。本発明の一実施形態はステートメント292によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」はアップストリームFARを含む。
ステートメント295。本発明の一実施形態はステートメント289によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームポートを使用して前記第1 PCIeトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
前記第1PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連するか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント298。本発明の一実施形態はステートメント296によるシステムのアクセラレーション方法を含み、前記第1PCIeトランザクションが前記第2アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記VFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
前記VFの前記識別子を前記FPGAの前記アップストリームポートに接続するステップと、をさらに含む。
ステートメント300。本発明の一実施形態はステートメント299によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記VFの前記識別子を含む。
ステートメント302。本発明の一実施形態はステートメント296によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
前記第1PCIeトランザクションが前記ストレージデバイスによって「さらされる」物理関数(PF)と関連するか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント305。本発明の一実施形態はステートメント303によるシステムのアクセラレーション方法を含み、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
前記PFの前記識別子を前記FPGAの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント307。本発明の一実施形態はステートメント306によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記PFの前記識別子を含む。
ステートメント309。本発明の一実施形態はステートメント303によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
ステートメント310。本発明の一実施形態はステートメント303によるシステムのアクセラレーション方法を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの第1識別子を有するタグを含んでいるか、または前記FPGAの第2PFの第2識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2のデバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップを含む。
前記FPGAで前記第2PCIeトランザクションが、前記FPGAの前記ルートポートに関連したダウンストリームFAR内のアドレスと関連しているか否かを判断することにより、前記第2PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第2PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップと、をさらに含む。
ステートメント314。本発明の一実施形態はステートメント313によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージ装置からサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
ステートメント316。本発明の一実施形態はステートメント311によるシステムのアクセラレーション方法を含み、前記第2アクセラレーションコマンドは、前記プロセッサ上で実行中のASMから由来する。
ステートメント318。本発明の一実施形態はステートメント311によるシステムのアクセラレーション方法を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの第1識別子を有するタグを含んでいるか、又は前記FPGAの第2PFの第2識別子を持つタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを第2ストレージデバイスに伝達するステップを含む。
前記第2PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、または前記FPGAの第2ルートポートで受信されるか否かを判断するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第1のルートポートで受信されたと判断された場合、前記エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第2のルートポートで受信されたと判断された場合、前記FPGAの前記AMP-Fで前記第2PCIeトランザクションを処理するステップと、をさらに含む。
ステートメント322。本発明の一実施形態はステートメント319によるシステムのアクセラレーション方法を含み、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップをさらに含む。
ステートメント323。本発明の一実施形態はステートメント319によるシステムのアクセラレーション方法を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記第1のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記FPGAで前記第1PCIeトランザクションが前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、第1ルートポート及び第2ルートポートを含む前記FPGAの第1ルートポートを使用して前記第1PCIeトランザクションをストレージデバイスに伝達するステップを含む。
前記第2PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断することにより、前記第2のPCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第1ルートポートで受信されたと判断された場合、前記第1エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第2ルートポートで受信されたと判断された場合、前記FPGAの前記AMP-Fで前記第2PCIeトランザクションを処理するステップと、をさらに含む。
ステートメント327。本発明の一実施形態はステートメント324によるシステムのアクセラレーション方法を含み、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
前記FPGAの前記第1のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記アクセラレーションモジュールにおいて、前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションをストレージデバイスに伝達するステップを含む。
前記FPGAで前記第2PCIeトランザクションが前記FPGAのルートポートと関連したダウンストリームFAR内のアドレスと関連するか否かを判断することにより、前記第2PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記第2PCIeトランザクションを前記FPGAの前記APM-Fで処理するステップと、
前記第2PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記FPGAの前記第1エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップと、をさらに含む。
ステートメント332。本発明の一実施形態はステートメント331によるシステムのアクセラレーション方法を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」はダウンストリームFARを含む。
ステートメント334。本発明の一実施形態はステートメント329によるシステムのアクセラレーション方法を含み、前記第1PCIeトランザクションは、前記プロセッサ上で実行中のASMから由来する。
ステートメント336。本発明の一実施形態はステートメント329によるシステムのアクセラレーション方法を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記第1エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記システムのアクセラレーション方法は、第1ブリッジコンポーネントで、プロセッサからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記PCIeトランザクションをストレージデバイスに伝達するステップを含み、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージ装デバイスは、PCIeバスを使用して通信する。
前記ストレージデバイスは、SSDを含む。
ステートメント339。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが第1ブリッジコンポーネントのアップストリームポートに関連したアップストリームFAR内のアドレスと関連しているか否かを判断するステップをさらに含む。
前記アップストリームFARを前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント341。本発明の一実施形態はステートメント340によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記アップストリームFARを含む。
ステートメント343。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連するか否かを判断するステップを含む。
ステートメント345。本発明の一実施形態はステートメント344によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、
前記VFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント347。本発明の一実施形態はステートメント345によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記VFの前記識別子を含む。
ステートメント349。本発明の一実施形態はステートメント348によるシステムのアクセラレーション方法を含み、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」物理関数(PF)と関連するか否かを判断するステップは、前記PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
前記PFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント351。本発明の一実施形態はステートメント350によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びイSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記PFの前記識別子を含む。
ステートメント353。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記第1ブリッジコンポーネントの第1PFの識別子を有するタグを含むか、又は、前記第1ブリッジコンポーネントの第2PFの識別子を有するタグを含むか否かを判断するステップを含む。
前記第1構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
ステートメント355。本発明の一実施形態はステートメント337によるシステムのアクセラレーション方法を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記第1コンポーネントの第1エンドポイントにおいて、前記プロセッサから受信したか否かを判断するステップを含む。
前記第1構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記システムのアクセラレーション方法は、
第2ブリッジコンポーネントでストレージからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記PCIeトランザクションをストレージデバイスに伝達するステップと、を含み、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント359。本発明の一実施形態はステートメント357によるシステムのアクセラレーション方法を含み、前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第2ブリッジコンポーネントにおいて、前記第2PCIeトランザクションが前記第2ブリッジコンポーネントのダウンストリームポートと関連したダウンストリームFAR内のアドレスと関連しているか否かを判断するステップをさらに含む。
前記ダウンストリームFARを前記第2ブリッジコンポーネントの前記ダウンストリームポートと接続するステップと、をさらに含む。
ステートメント361。本発明の一実施形態はステートメント360によるシステムのアクセラレーション方法を含み、前記第2ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
ステートメント363。本発明の一実施形態はステートメント357によるシステムのアクセラレーション方法を含み、前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが第1ルートポイント及び第2ルートポイントを含む前記第2ブリッジコンポーネントの前記第2ルートポートで受信したか否かを判断するステップを含む。
前記システムのアクセラレーション方法は、
ストレージデバイスでアクセラレーションモジュールから第1PCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第1PCIeトランザクションが前記仮想コマンドであると判断された場合、前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップと、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップと、を含み、
プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第1PCIeトランザクションが前記アクセラレーションモジュールの前記APM-Fから由来するか否かを判断するステップを含み、
前記ストレージデバイスのAPM-Sを使用して、第2のPCIeトランザクションを生成するステップは、前記第1PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2のPCIeトランザクションを生成するステップを含み、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第2PCIeトランザクションをストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
ステートメント368。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記第1PCIeトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第1PCIeトランザクションが前記SSDのHILにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップをさらに含む。
ステートメント370。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント372。本発明の一実施形態はステートメント370によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップと、をさらに含む。
ステートメント374。本発明の一実施形態はステートメント373によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」はアップストリームFARを含む。
ステートメント376。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、
前記アクセラレーションモジュールのルートポートを前記アクセラレーションモジュールでプログラミングするステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント378。本発明の一実施形態はステートメント376によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
前記SSDの前記エンドポイントを使用して前記第1PCIeトランザクションの前記の結果を前記プロセッサに伝達するステップと、をさらに含む。
ステートメント380。本発明の一実施形態はステートメント376によるシステムのアクセラレーション方法を含み、前記SSDを「さらさせる」物理関数(PF)を提供するステップと、
前記アクセラレーションモジュールを「さらさせる」仮想関数(VF)を提供するステップと、をさらに含む。
ステートメント382。本発明の一実施形態はステートメント366によるシステムのアクセラレーション方法を含み、前記SSDを露出させる第1PFを提供するステップと、
前記アクセラレーションモジュールを「さらされる」第2PFを提供するステップと、をさらに含む。
ステートメント383。本発明の一実施形態はステートメント382によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記第2のPFの識別子でプログラミングするステップをさらに含む。
前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第2エンドポイントで第1エンドポイント及び前記第2エンドポイントを含むSSDによって受信されるか否かを判断するステップを含み、
前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップは、前記第1PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2PCIeトランザクションを生成するステップを含み、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第2PCIeトランザクションを前記ストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
前記以下の結果とは、
アクセラレーションモジュールで第1デバイスからPCIeトランザクションを受信するステップと、
前記PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記PCIeトランザクションが、前記仮想コマンドであると判断された場合、前記アクセラレーションモジュールのAPM-Fで前記PCIeトランザクションを処理するステップと、
前記PCIeトランザクションが、前記仮想コマンドではないと判断された場合、前記PCIeトランザクションを第2デバイスに伝送するステップを含み、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップを含む。
前記FPGAの前記ダウンストリームプロセッサを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント389。本発明の一実施形態はステートメント387による物品を含み、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記FPGAの前記ダウンストリームポートと接続するステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント391。本発明の一実施形態はステートメント389による物品を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
ステートメント393。本発明の一実施形態はステートメント387による物品を含み、前記FPGAの前記アップストリームポートを使用して前記プロセッサに、前記第2PCIeのトランザクションの結果を伝送するステップをさらに含む。
前記第1PCIeトランザクションが前記FPGAの前記アップストリームポートと関連したアップストリームFAR内の第2アドレスと関連しているか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2のアクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2のアクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント396。本発明の一実施形態はステートメント394による物品を含み、前記FPGAにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、
前記アップストリームFARを前記FPGAの前記アップストリームポートと接続するステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント398。本発明の一実施形態はステートメント396による物品を含み、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」はアップストリームFARを含む。
ステートメント400。本発明の一実施形態はステートメント394による物品を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記プロセッサに伝送するステップをさらに含む。
前記第1PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連しているか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント403。本発明の一実施形態はステートメント401による物品を含み、前記第1PCIeトランザクションが前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記VFの前記識別子を有するタグを含んでいるか否かを判断するステップを含む。
前記ダウンストリームFARを前記FPGAの前記アップストリームポートに接続するステップと、をさらに含む。
ステートメント405。本発明の一実施形態はステートメント404による物品を含み、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記VFの前記識別子を含む。
ステートメント407。本発明の一実施形態はステートメント401による物品を含み、前記FPGAのアップストリームポートを使用して前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップを含む。
前記第1PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連しているか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第1PCIeトランザクションが前記第2アクセラレーションコマンドではないと判断された場合、前記FPGAの前記ダウンストリームポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント410。本発明の一実施形態はステートメント408による物品を含み、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
前記PFの前記識別子を前記FPGAの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント412。本発明の一実施形態はステートメント411による物品を含み、前記FPGAにおいて、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記PFの前記識別子を含む。
ステートメント414。本発明の一実施形態はステートメント408による物品を含み、前記FPGAの前記アップストリームを使用して前記第1PCIeトランザクションの結果を前記プロセッサに伝送するステップをさらに含む。
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの識別子を有するタグを含んでいるか、又は前記FPGAの第2PFの第2識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを第2のストレージデバイスに伝達するステップを含む。
前記FPGAで前記第2PCIeトランザクションが、前記FPGAの前記ルートポートに関連したダウンストリームFAR内のアドレスと関連するか否かを判断することにより、前記第2PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが前記第2のアクセラレーションコマンドであると判断された場合、前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記第2PCIeトランザクションが前記第2のアクセラレーションコマンドではないと判断された場合、前記FPGAの前記エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップを含む。
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップを含む。
ステートメント418。本発明の一実施形態はステートメント417による物品を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
ステートメント420。本発明の一実施形態はステートメント415による物品を含み、前記第2アクセラレーションコマンドは、前記のプロセッサ上で実行中のASMから由来する。
ステートメント422。本発明の一実施形態はステートメント415による物品を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記アクセラレーションモジュールにおいて、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが前記FPGAの第1PFの第1識別子を有するタグを含んでいるか、又は前記FPGAの第2PFの第2識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションを第2ストレージデバイスに伝達するステップを含む。
前記第2PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第1のルートポートで受信されると判断された場合、前記エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第2のルートポートで受信されると判断された場合、前記FPGAの前記AMP-Fで前記第2PCIeトランザクションを処理するステップと、をさらに含む。
ステートメント426。本発明の一実施形態はステートメント423による物品を含み、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップをさらに含む。
ステートメント427。本発明の一実施形態はステートメント423による物品を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記第1のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記FPGAで前記第1PCIeトランザクションが前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるかか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、第1ルートポート及び第2ルートポートを含む前記FPGAの第1ルートポートを使用して前記第1PCIeトランザクションをストレージデバイスに伝達するステップを含む。
前記第2PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断することにより、前記第2PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第1のルートポートで受信されると判断された場合、前記第1エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、
前記第2PCIeトランザクションが、前記FPGAの前記第2ルートポートで受信されると判断された場合、前記FPGAの前記AMP-Fで前記第2PCIeトランザクションを処理するステップと、をさらに含む。
ステートメント431。本発明の一実施形態はステートメント428による物品を含み、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1PCIeのトランザクションの結果を伝送するステップをさらに含む。
ステートメント432。本発明の一実施形態はステートメント401による物品を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記第1ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記第1エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記アクセラレーションモジュールにおいて、前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるかか否かを判断することにより、前記第1PCIeトランザクションが第2アクセラレーションコマンドか否かを判断するステップを含み、
前記PCIeトランザクションを前記第2デバイスに転送するステップは、前記FPGAのルートポートを使用して前記第1PCIeトランザクションをストレージデバイスに伝達するステップを含む。
前記FPGAで前記第2PCIeトランザクションが前記FPGAのルートポートと関連したダウンストリームFAR内のアドレスと関連しているか否かを判断することにより、前記第2PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第2PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記第2PCIeトランザクションを前記FPGAの前記APM-Fで処理するステップと、
前記第2PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記FPGAの前記第1エンドポイントを使用して前記第2PCIeトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
前記ダウンストリームFARを前記FPGAの前記ルートポートと接続するステップと、をさらに含む。
ステートメント436。本発明の一実施形態はステートメント435による物品を含み、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」はダウンストリームFARを含む。
ステートメント438。本発明の一実施形態はステートメント433による物品を含み、前記第1PCIeトランザクションは、前記プロセッサ上で実行中のASMから由来する。
ステートメント440。本発明の一実施形態はステートメント433による物品を含み、前記FPGAの構成モニターを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記第1エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記以下の結果とは、
ストレージデバイスでアクセラレーションモジュールからPCIeトランザクションを受信するステップと、
前記第1PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第1PCIeトランザクションが前記仮想コマンドであると判断された場合、前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップと、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップと、
前記第1PCIeトランザクションが前記仮想コマンドではないと判断された場合、前記ストレージデバイスに格納したデータに対して前記第1PCIeトランザクションを実行するステップと、を含み、
プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第1PCIeトランザクションが前記アクセラレーションモジュールの前記APM-Fから由来するか否かを判断するステップを含み、
前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップは、前記第1PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2PCIeトランザクションを生成するステップを含み、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第2PCIeトランザクションを前記ストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
ステートメント445。本発明の一実施形態はステートメント443による物品を含み、前記第1PCIeトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第1PCIeトランザクションが前記SSDのHILにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップをさらに含む。
ステートメント447。本発明の一実施形態はステートメント443による物品を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント449。本発明の一実施形態はステートメント447による物品を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップと、をさらに含む。
ステートメント451。本発明の一実施形態はステートメント450による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」はアップストリームFARを含む。
ステートメント453。本発明の一実施形態はステートメント443による物品を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、
前記アクセラレーションモジュールのルートポートを前記アクセラレーションモジュールでプログラミングするステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント455。本発明の一実施形態はステートメント453による物品を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、「PCIe VDM」を使用して、前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを含み、
前記「PCIe VDM」はダウンストリームFARを含む。
前記SSDの前記エンドポイントを使用して前記第1PCIeトランザクションの前記結果を前記プロセッサに伝達するステップと、をさらに含む。
ステートメント457。本発明の一実施形態はステートメント443による物品を含み、前記SSDを「さらさせる」物理関数(PF)を提供するステップと、
前記アクセラレーションモジュールを「さらさせる」仮想関数(VF)を提供するステップと、をさらに含む。
ステートメント459。本発明の一実施形態はステートメント443による物品を含み、前記SSDを「さらさせる」第1PFを提供するステップと、
前記アクセラレーションモジュールを「さらされる」第2PFを提供するステップと、をさらに含む。
ステートメント460。本発明の一実施形態はステートメント459による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記第2PFの識別子でプログラミングするステップをさらに含む。
前記第1PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第2エンドポイントで第1エンドポイント及び前記第2エンドポイントを含むSSDによって受信されるか否かを判断するステップを含み、
前記ストレージデバイスのAPM-Sを使用して、第2のPCIeトランザクションを生成するステップは、前記第1PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2のPCIeトランザクションを生成するステップを含み、
前記第2PCIeトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第2PCIeトランザクションを前記ストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
前記以下の結果とは、
第1ブリッジコンポーネントで第1デバイスからPCIeトランザクションを受信するステップと、
前記第1ブリッジコンポーネントで、前記PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記PCIeトランザクションが、前記仮想コマンドであると判断された場合、前記PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、
前記PCIeトランザクションが、前記仮想コマンドではないと判断された場合、前記PCIeトランザクションをストレージデバイスに伝達するステップを含み、
前記プロセッサ、前記第1ブリッジのコンポーネント、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
前記ストレージデバイスは、SSDを含む。
ステートメント464。本発明の一実施形態はステートメント462による物品を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが第1ブリッジコンポーネントのアップストリームポートと関連したアップストリームFAR内のアドレスと関連しているか否かを判断するステップをさらに含む。
前記アップストリームFARを前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント466。本発明の一実施形態はステートメント465による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記アップストリームFARを含む。
ステートメント468。本発明の一実施形態はステートメント462による物品を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」仮想関数(VF)と関連するか否かを判断するステップを含む。
ステートメント470。本発明の一実施形態はステートメント469による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、
前記VFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
ステートメント472。本発明の一実施形態はステートメント470による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスから「PCIe VDM」を受信するステップを含み、
前記「PCIe VDM」は、前記VFの前記識別子を含む。
ステートメント474。本発明の一実施形態はステートメント473による物品を含み、前記PCIeトランザクションが前記ストレージデバイスによって「さらされる」物理関数(PF)と関連するか否かを判断するステップは、前記PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
前記PFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント476。本発明の一実施形態はステートメント475による物品を含み、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記PFの前記識別子を含む。
ステートメント478。本発明の一実施形態はステートメント462による物品を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが前記第1ブリッジコンポーネントの第1PFの識別子を有するタグを含んでいるか、又は前記第1ブリッジコンポーネントの第2PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
前記第1コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
ステートメント480。本発明の一実施形態はステートメント462による物品を含み、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第1PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記第1コンポーネントの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断するステップを含む。
前記第1コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
前記以下の結果とは、
第2ブリッジコンポーネントでストレージデバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記PCIeトランザクションをアクセラレーションモジュールに伝達するステップと、
前記PCIeトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記PCIeトランザクションをプロセッサに伝達するステップを含み、
前記プロセッサ、前記第2ブリッジコンポーネント、前記アクセラレーションモジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
ステートメント484。本発明の一実施形態はステートメント482による物品を含み、前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第2ブリッジコンポーネントにおいて、前記第2PCIeトランザクションが前記第2ブリッジコンポーネントのダウンストリームポートと関連したダウンストリームFAR内のアドレスと関連しているか否かを判断するステップをさらに含む。
前記ダウンストリームFARを前記第2ブリッジコンポーネントの前記ダウンストリームポートと接続するステップと、をさらに含む。
ステートメント486。本発明の一実施形態はステートメント485による物品を含み、前記第2ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを含み、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
前記「PCIe VDM」は、前記ダウンストリームFARを含む。
ステートメント488。本発明の一実施形態はステートメント482による物品を含み、前記第2ブリッジコンポーネントで、前記PCIeトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記PCIeトランザクションが第1ルートポイントおよび第2ルートポイントを含む前記第2ブリッジコンポーネントの前記第2ルートポートで受信されるか否かを判断するステップを含む。
110 プロセッサ
115 デバイスドライバ
120 ストレージデバイス(SSD)
125 アプリケーション
130 アプリケーションサービスマネージャ(ASM)
135 メモリコントローラ
140 メモリ
145 アクセラレーションモジュール(又はFPGA)
205 クロック
210 ネットワークコネクタ
215 バス
220 ユーザーインターフェース
225 入力/出力エンジン
305、1105、1310、1505 エンドポイント
310 ホストインターフェース層(HIL)
315 アクセラレーションプラットフォームマネージャ(APM-S)
320 フラッシュ変換階層(FTL)
325 フラッシュメディア
330 アップストリームポート
335 ダウンストリームポート
340 アクセラレーションプラットフォームマネージャ(APM-F)
345 スケジューラ
350-1、350-2 アクセラレーションエンジン
355 メッセージのメールボックス
360 ダウンストリームフィルタ
365 サイドバンドバス
405、805、810 ブロック
410 サブセット
420 ダウンストリームFAR(Filter Address Range)
505 アップストリームフィルタ
605 アップストリームFAR
705、905、1115、1120 物理機能(関数)(PF)
710 仮想機能(関数)(VF)
715 VFフィルタ
1005、1010、1215,1220、1405、2105、2125、2203、2206、2215、2221,2227,2230 ブロック
1110、1305 ルートポート
1125 構成モニター
1205、1215 メモリアドレスのブロック
1210,1410 アドレスマップ
1905、1910 ブリッジ構成要素(ブリッジコンポーネント)
2005、2020 PCIeトランザクション
2015 アクセラレーションコマンド
2030、2035、2040 結果
Claims (20)
- システムであって、
アプリケーションを実行するプロセッサと、
前記プロセッサ上で実行される前記アプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するためのアップストリームエンドポイントと、
ストレージデバイスと通信するための第1ダウンストリームルートポートと、
前記ストレージデバイスと通信するための第2ダウンストリームルートポートと、
ハードウェアを使用して具現され、アクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー(以下、APM-F)を含むアクセラレーションモジュールと、を有し、
前記ストレージデバイスは、前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第1エンドポイントと、
前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第2エンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
前記アプリケーションに対するアプリケーションデータを格納するためのストレージと、
前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するための前記ストレージデバイスのアクセラレーションプラットフォームマネージャー(以下、APM-S)と、を含み、
前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、PCIe(Peripheral Component Interconnect exchange)バスを介して通信し、
前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにローディング(loading)することなく、前記アプリケーションに対する前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援し、
前記アクセラレーションモジュールは、前記第1ダウンストリームルートポートで前記ストレージデバイスから受信した第3PCIeトランザクションを前記アップストリームエンドポイントを介して前記プロセッサに転送し、前記第2ダウンストリームルートポートの前記ストレージデバイスから受信した第4PCIeトランザクションを前記APM-Fに転送するように動作することを特徴とするシステム。 - 前記プロセッサと前記アクセラレーションモジュールとの間を通信可能に接続(bridging)し、前記アップストリームエンドポイントを含む第1ブリッジコンポーネントと、
前記アクセラレーションモジュールと前記ストレージデバイスとの間を通信可能に接続し、前記第1ダウンストリームルートポート及び前記第2ダウンストリームルートポートを含む第2ブリッジコンポーネントと、をさらに含むことを特徴とする請求項1に記載のシステム。 - 前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記FPGAは、前記アップストリームエンドポイント、前記第1ダウンストリームルートポート、及び前記第2ダウンストリームルートポートを含み、
前記ストレージデバイスは、SSD(SolidStateDrive)を含み、
前記SSDの第1エンドポイントは、前記第1ダウンストリームルートポートに関連付けられ、
前記SSDの第2エンドポイントは、前記第2ダウンストリームルートポートに関連付けられることを特徴とする請求項1に記載のシステム。 - 前記APM-Fは、前記アップストリームエンドポイントを介して前記プロセッサに結果を伝送するように動作することを特徴とする請求項3に記載のシステム。
- 前記FPGAは、前記SSDの第1エンドポイントの機能を、前記アップストリームエンドポイントにコピーするための構成モニターをさらに含むことを特徴とする請求項3に記載のシステム。
- 前記FPGAは、第1物理機能(physical function)(以下、第1PF)、第2物理機能(以下、第2PF)を含み、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記第1ダウンストリームルートポート及び前記SSDの第1エンドポイントを介して前記SSDに伝送し、
前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝送し、
前記第1ダウンストリームルートポートにて前記SSDから受信した第2PCIeトランザクションを前記プロセッサに伝送し、
前記第2ダウンストリームルートポートにて前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝送するように動作し、
前記第1PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられることを特徴とする請求項3に記載のシステム。 - 前記FPGAは、第2アップストリームエンドポイントをさらに含み、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記アップストリームエンドポイントにて前記第1ダウンストリームルートポート及び前記SSDの第1エンドポイントを介して前記SSDに伝送し、
前記第2アップストリームエンドポイントにて前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝送し、
前記第1ダウンストリームルートポートにて前記SSDから受信した第2PCIeトランザクションを、前記アップストリームエンドポイントを介して前記プロセッサに伝送し、
前記第2ダウンストリームルートポートにて前記SSDから受信した第1アクセラレーションコマンドを前記APM-Fに伝送するように動作することを特徴とする請求項3に記載のシステム。 - ハードウェアを利用して具現されたアクセラレーションモジュールであって、
アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー(以下、APM-F)と、
アプリケーションプログラムを実行するプロセッサと通信するためのアップストリームエンドポイントと、
前記アクセラレーションコマンドを実行するのに前記APM-Fを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー(以下、APM-S)を含む前記ストレージデバイスと通信するための第1ダウンストリームルートポート及び第2ダウンストリームルートポートと、
前記アクセラレーションモジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ及び前記ストレージデバイスと通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをローディング(loading)することなく、前記アプリケーションプログラムのための前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援し、
前記アクセラレーションモジュールは、前記第1ダウンストリームルートポートで前記ストレージデバイスから受信した第3PCIeトランザクションを前記アップストリームエンドポイントを介して前記プロセッサに転送し、前記第2ダウンストリームルートポートの前記ストレージデバイスから受信した第4PCIeトランザクションを前記APM-Fに転送するように動作することを特徴とするアクセラレーションモジュール。 - 前記アクセラレーションモジュールは、FPGA(Field Programmable Gate Array)を使用して具現されることを特徴とする請求項8に記載のアクセラレーションモジュール。
- 前記APM-Fは、前記アップストリームエンドポイントを介して前記プロセッサに結果を伝送するように動作することを特徴とする請求項9に記載のアクセラレーションモジュール。
- 前記FPGAは、第1物理機能(physical function)(以下、第1PF)、第2物理機能(以下、第2PF)を含み、
前記FPGAは、前記プロセッサから受信した第1PCIeトランザクションを前記第1ダウンストリームルートポートを介して前記ストレージデバイスに伝送し、
前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝送し、
前記第1ダウンストリームルートポートにて前記ストレージデバイスから受信した第2PCIeトランザクションを前記プロセッサに伝送し、
前記第2ダウンストリームルートポートにて前記ストレージデバイスから受信した第1アクセラレーションコマンドを前記APM-Fに伝送するように動作し、
前記第1PCIeトランザクションは、前記第1PFの第1識別子と関連付けられ、
前記第2アクセラレーションコマンドは、前記第2PFの第2識別子と関連付けられることを特徴とする請求項9に記載のアクセラレーションモジュール。 - 前記FPGAは、前記ストレージデバイスのエンドポイントの機能を前記アップストリームエンドポイントにコピーするための構成モニターをさらに含むことを特徴とする請求項11に記載のアクセラレーションモジュール。
- 前記FPGAは、第2アップストリームエンドポイントを含み、
前記FPGAは、前記アップストリームエンドポイントにて前記プロセッサから受信した第1PCIeトランザクションを、前記第1ダウンストリームルートポートを介して前記ストレージデバイスに伝送し、
前記第2アップストリームエンドポイントにて前記プロセッサから受信した第2アクセラレーションコマンドを前記APM-Fに伝送し、
前記第1ダウンストリームルートポートにて前記ストレージデバイスから受信した第2PCIeトランザクションを、前記アップストリームエンドポイントを介して前記プロセッサに伝送し、
前記第2ダウンストリームルートポートにて前記ストレージデバイスから受信した第1アクセラレーションコマンドを前記APM-Fに伝送するように動作することを特徴とする請求項9に記載のアクセラレーションモジュール。 - 前記FPGAは、前記ストレージデバイスのエンドポイントの機能を前記アップストリームエンドポイントにコピーするための構成モニターをさらに含むことを特徴とする請求項13に記載のアクセラレーションモジュール。
- アクセラレーションモジュールを含むシステムのアクセラレーション方法であって、
前記アクセラレーションモジュールのストレージデバイスから第2PCIeトランザクションを受信するステップと、
前記第2PCIeトランザクションが前記アクセラレーションモジュールの第1ダウンストリームルートポートで受信されたか、前記アクセラレーションモジュールの第2ダウンストリームルートポートで受信されたか、を判断するステップと、
少なくとも部分的には、前記第2PCIeトランザクションが前記アクセラレーションモジュールの前記第1ダウンストリームルートポートで受信されたと判断したことに基づいて、前記アクセラレーションモジュールのアップストリームエンドポイントを使用して前記第2PCIeトランザクションをプロセッサに伝送するステップと、
少なくとも部分的には、前記第2PCIeトランザクションが前記アクセラレーションモジュールの前記第2ダウンストリームルートポートで受信されたと判断したことに基づいて、前記第2PCIeトランザクションを前記アクセラレーションモジュールのAPM-Fで処理するステップと、を有し、
前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをロードすることなく、アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対してアクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、PCIeバスを使用して通信することを特徴とするシステムのアクセラレーション方法。 - 前記アクセラレーションモジュールは、FPGAを用いて具現されることを特徴とする請求項15に記載のシステムのアクセラレーション方法。
- 前記FPGAの前記アップストリームエンドポイントの前記プロセッサから第1PCIeトランザクションを受信するステップと、
前記FPGAで、前記第1PCIeトランザクションが前記FPGAの第1物理機能(physical function)(以下、第1PF)の第1識別子又は前記FPGAの第2物理機能(以下、第2PF)の第2識別子を有するタグを含むか否かを判断することにより、前記第1PCIeトランザクションが、前記アクセラレーションコマンドであるか否かを判断するステップと、
少なくとも部分的には、前記第1PCIeトランザクションが、前記第1PFの前記第1識別子を有する前記タグを含むと判断したことに基づいて、前記アクセラレーションモジュールの前記第1ダウンストリームルートポートを使用して前記第1PCIeトランザクションを前記ストレージデバイスに伝送するステップと、
少なくとも部分的には、前記第1PCIeトランザクションが前記第2PFの前記第2識別子を有する前記タグを含むと判断したことに基づいて、前記第1PCIeトランザクションを前記アクセラレーションモジュールの前記APM-Fで処理するステップと、をさらに有することを特徴とする請求項16に記載のシステムのアクセラレーション方法。 - 前記FPGAの前記アップストリームエンドポイントを使用して前記第1PCIeトランザクションの結果を前記プロセッサに伝送するステップをさらに有することを特徴とする請求項17に記載のシステムのアクセラレーション方法。
- 前記FPGAの構成モニターを用いて、前記FPGAの前記第1ダウンストリームルートポートと通信する前記ストレージデバイスのエンドポイントの構成を決定するステップと、
前記FPGAの前記アップストリームエンドポイントを使用して、前記ストレージデバイスの前記エンドポイントの構成を複製するステップと、をさらに有することを特徴とする請求項17に記載のシステムのアクセラレーション方法。 - 前記FPGAの第2アップストリームエンドポイントにおいて、前記プロセッサから第1PCIeトランザクションを受信するステップと、
前記FPGAの前記APM-Fで、前記第1PCIeトランザクションを処理するステップと、
前記FPGAの第1アップストリームエンドポイントにおいて、前記プロセッサから第3PCIeトランザクションを受信するステップと、
前記アクセラレーションモジュールの前記第1ダウンストリームルートポートを使用して、前記ストレージデバイスに前記第3PCIeトランザクションを伝送するステップと、をさらに有することを特徴とする請求項16に記載のシステムのアクセラレーション方法。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862638904P | 2018-03-05 | 2018-03-05 | |
US62/638,904 | 2018-03-05 | ||
US201862641267P | 2018-03-09 | 2018-03-09 | |
US62/641,267 | 2018-03-09 | ||
US201862642568P | 2018-03-13 | 2018-03-13 | |
US62/642,568 | 2018-03-13 | ||
US16/122,865 | 2018-09-05 | ||
US16/122,865 US10585819B2 (en) | 2018-03-05 | 2018-09-05 | SSD architecture for FPGA based acceleration |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2019153305A JP2019153305A (ja) | 2019-09-12 |
JP2019153305A5 JP2019153305A5 (ja) | 2022-03-04 |
JP7120945B2 true JP7120945B2 (ja) | 2022-08-17 |
Family
ID=67768071
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019034068A Active JP7120943B2 (ja) | 2018-03-05 | 2019-02-27 | Fpgaベースの加速のための新たなssd基本構造 |
JP2019038498A Active JP7252789B2 (ja) | 2018-03-05 | 2019-03-04 | Ssdに対するfpgaベースのアクセラレーションモジュール及びシステムとその動作方法 |
JP2019038574A Active JP7120945B2 (ja) | 2018-03-05 | 2019-03-04 | システム及びそのアクセラレーション方法並びにアクセラレーションモジュール |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019034068A Active JP7120943B2 (ja) | 2018-03-05 | 2019-02-27 | Fpgaベースの加速のための新たなssd基本構造 |
JP2019038498A Active JP7252789B2 (ja) | 2018-03-05 | 2019-03-04 | Ssdに対するfpgaベースのアクセラレーションモジュール及びシステムとその動作方法 |
Country Status (5)
Country | Link |
---|---|
US (4) | US10585819B2 (ja) |
JP (3) | JP7120943B2 (ja) |
KR (2) | KR102427561B1 (ja) |
CN (3) | CN110232037B (ja) |
TW (3) | TWI770358B (ja) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
CN111902804B (zh) | 2018-06-25 | 2024-03-01 | 阿里巴巴集团控股有限公司 | 用于管理存储设备的资源并量化i/o请求成本的系统和方法 |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US10970212B2 (en) | 2019-02-15 | 2021-04-06 | Alibaba Group Holding Limited | Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones |
US11061834B2 (en) | 2019-02-26 | 2021-07-13 | Alibaba Group Holding Limited | Method and system for facilitating an improved storage system by decoupling the controller from the storage medium |
US10891065B2 (en) | 2019-04-01 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
US10860223B1 (en) * | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11074124B2 (en) | 2019-07-23 | 2021-07-27 | Alibaba Group Holding Limited | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11507522B2 (en) * | 2019-12-06 | 2022-11-22 | Advanced Micro Devices, Inc. | Memory request priority assignment techniques for parallel processors |
FR3104280B1 (fr) * | 2019-12-06 | 2021-11-26 | Thales Sa | Systeme electronique securise comportant un processeur et un composant memoire ; composant programmable associe |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11169881B2 (en) | 2020-03-30 | 2021-11-09 | Alibaba Group Holding Limited | System and method for facilitating reduction of complexity and data movement in erasure coding merging on journal and data storage drive |
US11301173B2 (en) | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
KR102365312B1 (ko) | 2021-06-17 | 2022-02-23 | 삼성전자주식회사 | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 |
US20230099831A1 (en) * | 2021-09-24 | 2023-03-30 | Samsung Electronics Co., Ltd. | Systems and methods for near-storage processing in solid state drives |
CN114327281B (zh) * | 2021-12-30 | 2023-12-05 | 深圳忆联信息系统有限公司 | 用于ssd的tcg软硬件加速方法、装置、计算机设备及存储介质 |
US20240095171A1 (en) * | 2022-09-21 | 2024-03-21 | Samsung Electronics Co., Ltd. | Interface for remote memory |
CN115857805B (zh) * | 2022-11-30 | 2023-06-27 | 合肥腾芯微电子有限公司 | 人工智能可计算存储系统 |
US20240311318A1 (en) * | 2023-03-14 | 2024-09-19 | Samsung Electronics Co., Ltd. | Systems and methods for a cache-coherent interconnect protocol storage device |
CN115994107B (zh) * | 2023-03-22 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 存储设备的存取加速系统 |
CN116756070B (zh) * | 2023-08-15 | 2023-10-27 | 无锡沐创集成电路设计有限公司 | PCIe互联系统、数据处理方法、设备、存储介质及产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015166540A1 (ja) | 2014-04-28 | 2015-11-05 | 株式会社日立製作所 | ストレージ装置とそのデータ処理方法及びストレージシステム |
WO2016135875A1 (ja) | 2015-02-25 | 2016-09-01 | 株式会社日立製作所 | 情報処理装置 |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6604158B1 (en) | 1999-03-11 | 2003-08-05 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
EP2511787B1 (en) | 2003-05-23 | 2017-09-20 | IP Reservoir, LLC | Data decompression and search using FPGA devices |
US7606954B2 (en) * | 2005-09-29 | 2009-10-20 | Intel Corporation | Data storage using compression |
US7860930B2 (en) * | 2006-12-19 | 2010-12-28 | International Business Machines Corporation | Communication between host systems using a transaction protocol and shared memories |
US20090307416A1 (en) | 2008-06-04 | 2009-12-10 | Intitio Corporation | Ssd with a controller accelerator |
US9110706B2 (en) | 2009-02-09 | 2015-08-18 | Microsoft Technology Licensing, Llc | General purpose distributed data parallel computing using a high level language |
US9582222B2 (en) * | 2009-04-30 | 2017-02-28 | Western Digital Technologies, Inc. | Pre-cache similarity-based delta compression for use in a data storage system |
US8504750B1 (en) * | 2009-06-23 | 2013-08-06 | Qlogic, Corporation | System and method to process event reporting in an adapter |
TWI407304B (zh) * | 2010-05-26 | 2013-09-01 | Speed up access to data | |
TWI480738B (zh) * | 2010-07-01 | 2015-04-11 | Neodana Inc | 藉由最佳化叢集特定組態之使用的處理種類來分割叢集間之處理 |
TW201230038A (en) * | 2011-01-04 | 2012-07-16 | Key Technology Corp | Control system for composite solid-state drive |
US20120310917A1 (en) | 2011-05-31 | 2012-12-06 | International Business Machines Corporation | Accelerated Join Process in Relational Database Management System |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US20130343181A1 (en) | 2012-06-21 | 2013-12-26 | Jonathan Stroud | Systems and methods of data processing using an fpga-implemented hash function |
US9141529B2 (en) * | 2012-08-14 | 2015-09-22 | OCZ Storage Solutions Inc. | Methods and apparatus for providing acceleration of virtual machines in virtual environments |
US10161993B2 (en) * | 2013-02-21 | 2018-12-25 | Advantest Corporation | Tester with acceleration on memory and acceleration for automatic pattern generation within a FPGA block |
US8909605B1 (en) | 2013-02-28 | 2014-12-09 | Emc Corporation | Method and system for accelerating data movement using change information concerning difference between current and previous data movements |
US9772793B2 (en) | 2013-09-20 | 2017-09-26 | Oracle International Corporation | Data block movement offload to storage systems |
US10324642B2 (en) * | 2013-06-07 | 2019-06-18 | Sanmina Corporation | Peripheral component interconnect express (PCIe) solid state drive (SSD) accelerator |
WO2014207511A1 (fr) * | 2013-06-27 | 2014-12-31 | Genbiotech | Utilisation d'un filtre a centrifuger pour decongeler des cellules |
WO2015081308A2 (en) | 2013-11-26 | 2015-06-04 | Dynavisor, Inc. | Dynamic i/o virtualization |
US9619167B2 (en) | 2013-11-27 | 2017-04-11 | Intel Corporation | System and method for computing message digests |
US10185499B1 (en) | 2014-01-07 | 2019-01-22 | Rambus Inc. | Near-memory compute module |
US9195552B2 (en) * | 2014-02-05 | 2015-11-24 | Futurewei Technologies, Inc. | Per-function downstream port containment |
US20160342545A1 (en) | 2014-02-12 | 2016-11-24 | Hitachi, Ltd. | Data memory device |
US9887008B2 (en) | 2014-03-10 | 2018-02-06 | Futurewei Technologies, Inc. | DDR4-SSD dual-port DIMM device |
US9852779B2 (en) | 2014-03-12 | 2017-12-26 | Futurewei Technologies, Inc. | Dual-port DDR4-DIMMs of SDRAM and NVRAM for SSD-blades and multi-CPU servers |
US10216448B2 (en) | 2014-09-11 | 2019-02-26 | Hitachi, Ltd. | Storage system with read request accelerator having dynamic internal data memory allocation |
US20160094619A1 (en) | 2014-09-26 | 2016-03-31 | Jawad B. Khan | Technologies for accelerating compute intensive operations using solid state drives |
EP3248161A1 (en) * | 2015-01-22 | 2017-11-29 | Greydog Ventures Ltd. | User controlled profiles |
US10898091B2 (en) * | 2015-02-02 | 2021-01-26 | Northwestern University | Systems, methods, and apparatus for esophageal panometry |
US9715351B2 (en) | 2015-02-13 | 2017-07-25 | Red Hat, Inc. | Copy-offload on a device stack |
CN104657308A (zh) * | 2015-03-04 | 2015-05-27 | 浪潮电子信息产业股份有限公司 | 一种用fpga实现的服务器硬件加速的方法 |
US10067893B2 (en) | 2015-04-03 | 2018-09-04 | Futurewei Technologies, Inc. | Acceleration framework with direct data transfer mechanism |
US10025747B2 (en) * | 2015-05-07 | 2018-07-17 | Samsung Electronics Co., Ltd. | I/O channel scrambling/ECC disassociated communication protocol |
US20170091127A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Techniques to Couple with a Storage Device via Multiple Communication Ports |
US9946659B2 (en) | 2015-11-16 | 2018-04-17 | International Business Machines Corporation | Near-memory accelerator for offloading pointer chasing operations from a processing element |
CN105677595A (zh) * | 2016-01-21 | 2016-06-15 | 方一信息科技(上海)有限公司 | 一种同时实现计算加速和pciessd存储的fpga方法 |
US10210121B2 (en) | 2016-01-27 | 2019-02-19 | Quanta Computer Inc. | System for switching between a single node PCIe mode and a multi-node PCIe mode |
KR101923661B1 (ko) * | 2016-04-04 | 2018-11-29 | 주식회사 맴레이 | 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 |
US10282308B2 (en) | 2016-06-23 | 2019-05-07 | Advanced Micro Devices, Inc. | Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems |
US9923755B2 (en) * | 2016-08-01 | 2018-03-20 | Data I/O Corporation | Device programming with system generation |
US9927975B2 (en) | 2016-08-03 | 2018-03-27 | Micron Technology, Inc. | Hybrid memory drives, computer system, and related method for operating a multi-mode hybrid drive |
US10387303B2 (en) | 2016-08-16 | 2019-08-20 | Western Digital Technologies, Inc. | Non-volatile storage system with compute engine to accelerate big data applications |
US10503635B2 (en) | 2016-09-22 | 2019-12-10 | Dell Products, Lp | System and method for adaptive optimization for performance in solid state drives based on segment access frequency |
CN106371773A (zh) * | 2016-11-07 | 2017-02-01 | 北京得瑞领新科技有限公司 | Ssd单元、ssd设备以及基于ssd设备的数据处理方法 |
US10860508B2 (en) * | 2017-05-25 | 2020-12-08 | Western Digital Technologies, Inc. | Offloaded disaggregated storage architecture |
US10719474B2 (en) * | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US10599568B2 (en) | 2018-04-09 | 2020-03-24 | Intel Corporation | Management of coherent links and multi-level memory |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US11940929B2 (en) | 2019-05-24 | 2024-03-26 | Texas Instruments Incorporated | Methods and apparatus to reduce read-modify-write cycles for non-aligned writes |
US11360772B2 (en) | 2020-03-31 | 2022-06-14 | International Business Machines Corporation | Instruction sequence merging and splitting for optimized accelerator implementation |
US11500833B2 (en) | 2020-07-10 | 2022-11-15 | International Business Machines Corporation | Archiving accelerator-only database tables |
-
2018
- 2018-09-05 US US16/122,865 patent/US10585819B2/en active Active
- 2018-09-06 US US16/124,183 patent/US10592443B2/en active Active
- 2018-12-05 KR KR1020180155576A patent/KR102427561B1/ko active IP Right Grant
-
2019
- 2019-01-30 KR KR1020190012295A patent/KR102428317B1/ko active IP Right Grant
- 2019-02-14 TW TW108104966A patent/TWI770358B/zh active
- 2019-02-14 TW TW108104998A patent/TWI772611B/zh active
- 2019-02-14 TW TW108104984A patent/TWI765138B/zh active
- 2019-02-27 JP JP2019034068A patent/JP7120943B2/ja active Active
- 2019-03-04 CN CN201910161298.7A patent/CN110232037B/zh active Active
- 2019-03-04 CN CN201910161732.1A patent/CN110232036B/zh active Active
- 2019-03-04 JP JP2019038498A patent/JP7252789B2/ja active Active
- 2019-03-04 JP JP2019038574A patent/JP7120945B2/ja active Active
- 2019-03-04 CN CN201910161758.6A patent/CN110232034B/zh active Active
-
2020
- 2020-01-24 US US16/752,612 patent/US11132310B2/en active Active
-
2021
- 2021-02-26 US US17/187,735 patent/US11892957B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015166540A1 (ja) | 2014-04-28 | 2015-11-05 | 株式会社日立製作所 | ストレージ装置とそのデータ処理方法及びストレージシステム |
WO2016135875A1 (ja) | 2015-02-25 | 2016-09-01 | 株式会社日立製作所 | 情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200159679A1 (en) | 2020-05-21 |
TWI772611B (zh) | 2022-08-01 |
TW201939294A (zh) | 2019-10-01 |
CN110232037A (zh) | 2019-09-13 |
US20190272240A1 (en) | 2019-09-05 |
KR20190105497A (ko) | 2019-09-17 |
JP2019153305A (ja) | 2019-09-12 |
US11892957B2 (en) | 2024-02-06 |
CN110232034A (zh) | 2019-09-13 |
TW201939269A (zh) | 2019-10-01 |
JP2019153297A (ja) | 2019-09-12 |
US20210182221A1 (en) | 2021-06-17 |
KR102427561B1 (ko) | 2022-08-01 |
JP2019153304A (ja) | 2019-09-12 |
JP7120943B2 (ja) | 2022-08-17 |
US10592443B2 (en) | 2020-03-17 |
KR102428317B1 (ko) | 2022-08-02 |
CN110232036A (zh) | 2019-09-13 |
KR20190105492A (ko) | 2019-09-17 |
TWI770358B (zh) | 2022-07-11 |
CN110232036B (zh) | 2022-08-09 |
US11132310B2 (en) | 2021-09-28 |
TW201939305A (zh) | 2019-10-01 |
TWI765138B (zh) | 2022-05-21 |
CN110232037B (zh) | 2021-11-09 |
US10585819B2 (en) | 2020-03-10 |
CN110232034B (zh) | 2024-07-30 |
US20190272242A1 (en) | 2019-09-05 |
JP7252789B2 (ja) | 2023-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7120945B2 (ja) | システム及びそのアクセラレーション方法並びにアクセラレーションモジュール | |
KR102403653B1 (ko) | Fpga 기반 가속화를 위한 새로운 ssd 구조 | |
TW200901027A (en) | Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine | |
JP2021515318A (ja) | NVMeベースのデータ読み取り方法、装置及びシステム | |
US20230198740A1 (en) | Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device | |
US20230195320A1 (en) | Systems and methods for integrating a compute resource with a storage device | |
CN118916310A (zh) | 主机系统及其方法和加速模块 | |
EP4332747A1 (en) | Systems and methods for integrating a compute resource with a storage device | |
EP4332748A1 (en) | Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device | |
US20240256317A1 (en) | Systems and methods for backend architecture provisioning and emulation | |
CN117648203A (zh) | 多功能装置和用于多功能装置的方法 | |
CN117648052A (zh) | 多功能装置和用于多功能装置的方法 | |
CN115858434A (zh) | 一种计算设备及请求处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220224 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220224 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20220224 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220622 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220705 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220714 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20220726 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220804 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7120945 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |