JP7120943B2 - Fpgaベースの加速のための新たなssd基本構造 - Google Patents

Fpgaベースの加速のための新たなssd基本構造 Download PDF

Info

Publication number
JP7120943B2
JP7120943B2 JP2019034068A JP2019034068A JP7120943B2 JP 7120943 B2 JP7120943 B2 JP 7120943B2 JP 2019034068 A JP2019034068 A JP 2019034068A JP 2019034068 A JP2019034068 A JP 2019034068A JP 7120943 B2 JP7120943 B2 JP 7120943B2
Authority
JP
Japan
Prior art keywords
fpga
description
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
Application number
JP2019034068A
Other languages
English (en)
Other versions
JP2019153297A (ja
JP2019153297A5 (ja
Inventor
ピー カチャレ,ラムダス
ウァーレィ,フレッド
ロジャーズ,ハリー
ウゥー,ウェンタオ
サブラマニヤン,ナガラジャン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019153297A publication Critical patent/JP2019153297A/ja
Publication of JP2019153297A5 publication Critical patent/JP2019153297A5/ja
Application granted granted Critical
Publication of JP7120943B2 publication Critical patent/JP7120943B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the program performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI 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)
  • Stored Programmes (AREA)
  • Air Bags (AREA)

Description

本発明は、ストレージデバイスに関し、さらに詳しくは、追加のハードウェアを使用してソリッドステートドライブ(SSD)の性能を加速(以下、アクセラレーションともいう)することに関する。
従来の方法でストレージデバイスを使用するのが非効率的な場合がある。例として、データベースでクエリ(query、検索要求)の実行を必要とする場合が考慮される。従来の解決策は、データベースをコンピュータのメモリにロードし、データベースのメモリ内コピーに対してクエリを遂行した後、結果を処理するものである。データベースが相対的に小さい場合、この方式が妥当であり得るものの、クエリの結果がデータベースの一つの記録を識別するために、数千、数百万以上の記録を含むデータベースをローディングするのは非常に非効率的である。クエリを遂行するために膨大な量のデータをメモリに移動しなければならず、その際、通常は既にメモリに格納されていた他のデータを移動する必要がある。クエリが完了されると、殆どのデータが必要でないので、クエリが完了された後に、殆どのデータは削除される。データベースに対して繰り返しクエリが遂行されなければならないとき、この問題は拡大され得る。つまり、各クエリはその度に、データベ-スが新たにメモリにローディングされることを要求するからである。
ストレージデバイスに関連される動作を加速する方法が必要である。
米国登録特許第9619167B2号公報 米国登録特許第9898312B2号公報 米国公開特許第20130343181A1号公報 米国公開特許第20150254003A1号公報 米国公開特許第20160094619A1号公報 米国公開特許第20170177270A1号公報 米国公開特許第20180052766A1号公報 米国公開特許第20180081569A1号公報
JUN, Sang-Woo, "Scalable Multi-Access Flash Store for Big Data Analytics", Proceedings of the 2014 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays, ACM 2014, found via Google Scholar (url:https://dspace.mit.edu/bitstream/handle/1721.1/87947/880415120-MIT.pdf;sequence=2), February 2014, 49 pages.
本開示の目的は、SSDからメモリへのデータのロードを加速して、その際に発生する遅延を回避して低コスト、低消費電力のSSDを具現できる、FPGAベースの加速モジュールを含むSSDシステム、その加速モジュール、及びその加速方法に係る基本構造(architecture)、を提供することにある。
一実施例に係るSSDシステムは、アプリケーションを実行するプロセッサと、プロセッサ上で実行中のアプリケーションによって使用されるデータを格納するメモリと、プロセッサと通信するためのアップストリームインタフェースと、ストレージデバイスと通信するためのダウンストリームインタフェースと、加速モジュールとを包含できる。
加速モジュールはハードウェアを使用して具現されて加速コマンドを実行するための加速モジュールの加速プラットフォームマネージャ(APM-F)を包含できる。
ストレージデバイスは、加速モジュールと通信するためのストレージデバイスのエンドポイントと、ストレージデバイスの動作を管理するためのコントローラと、アプリケーションに対するアプリケーションデータを格納するためのストアと、加速コマンドを実行する際に加速モジュールの加速プラットフォームマネージャ(APM-F)を補助するためのストレージデバイスの加速プラットフォームマネージャ(APM-S)と、をさらに包含できる。
プロセッサ、加速モジュール、及びストレージデバイスはPCIe(Peripheral Component Interconnect Exchange)バスを介して通信できる。
加速モジュールは、アプリケーションデータをメモリにロード(load)せずに、アプリケーションのためのストレージデバイス上のアプリケーションデータに対する加速コマンドの遂行を支援できる。
他の実施例は、ハードウェアを利用して具現された加速モジュールを提供するが、加速モジュールは加速コマンドを実行するための加速モジュールの加速プラットフォームマネージャ(APM-F)と、プロセッサと通信するためのアップストリームインタフェースと、及び加速コマンドを実行する際にAPM-Fを補助するためのストレージデバイスの加速プラットフォームマネージャ(APM-S)を含むストレージデバイスと通信するためのダウンストリームインタフェースと、を包含できる。
プロセッサ上でアプリケーションが実行され得る。加速モジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、プロセッサ及びストレージデバイスと通信できる。
加速モジュールは、プロセッサと関連されたメモリにアプリケーションデータをロードせずに、アプリケーションに対するストレージデバイス上のアプリケーションのデータに対して加速コマンドの遂行を支援できる。
他の実施例は、方法を提供するが、方法は加速モジュールにおいて第1デバイスからPCIeトランザクションを受信するステップと、加速モジュールにおいてPCIeトランザクションが加速コマンドか否かを判断するステップと、PCIeトランザクションが加速コマンドであるとの判断に少なくとも部分的に基づいて、加速モジュールの加速プラットフォームマネージャにおいてPCIeトランザクションを処理するステップと、PCIeトランザクションが加速コマンドではないとの判断に少なくとも部分的に基づいて、PCIeトランザクションを第2デバイスに伝達するステップを含み得る。
加速モジュールは、プロセッサと関連されたメモリにアプリケーションプログラムに対するアプリケーションデータをロードすることなく、ストレージデバイス上のアプリケーションデータに対する加速コマンドの遂行を支援できる。プロセッサ、加速モジュール、及びストレージデバイスは、PCIeバスを使用して通信できる。
本明細書で開示されている実施例によれば、加速モジュールが、アプリケーションデータをメモリにロード(load)せずに、アプリケーションのためのストレージデバイス上のアプリケーションデータに対する加速コマンドの遂行を支援できるので、SSDからメモリにデータをロードする際に発生する遅延を回避できる。
図1は、本発明の一実施例に基づいてストレージデバイス上の加速される動作を支援するマシン(machine)を示している。 図2は、図1のマシンの追加的な細部事項を示している。 図3は、本発明の第1実施例に基づいて、図1の加速モジュールの構成及び図1のストレージデバイスを示している。 図4は、本発明の第1実施例に基づいて、図1のシステムで、コマンドを加速するためのメモリ使用を示している。 図5は、本発明の第2実施例に基づいて、図1の加速モジュールの構成を図示する。 図6は、本発明の第2実施例に基づいて、図1のシステムで、コマンドを加速するためのメモリ使用を図示する。 図7は、本発明の第3実施例に基づいて、図1の加速モジュールの構成要素及び図1のストレージデバイスを図示する。 図8は、本発明の第3実施例に基づいて、図1のシステムで、コマンドを加速するためのメモリ使用を示す。 図9は、本発明の第4実施例に基づいて、図1の加速モジュールの構成要素及び図1のストレージデバイスを示す。 図10は、本発明の第4実施例に基づいて、図1のシステムで、コマンドを加速するためのメモリ使用を示す。 図11は、本発明の第5実施例に基づいて、図1の加速モジュールの構成要素及び図1のストレージデバイスを示す。 図12は、本発明の第5実施例に基づいて、図1のシステムで、コマンドを加速するためのメモリ使用を図示する。 図13は、本発明の第6実施例に基づいて、図1の加速モジュールの構成要素及び図1のストレージデバイスを図示する。 図14は、本発明の第6実施例に基づいて、図1のシステムで、コマンドを加速するためのメモリ使用量を示している。 図15は、本発明の第7実施例に基づいて、図1の加速モジュールの構成要素及び図1のストレージデバイスを示している。 図16は、本発明の第7実施例に基づいて、図1のシステムで、コマンドを加速するためのメモリ使用を示している。 図17は、本発明の第8実施例に基づいて、図1の加速モジュールの構成要素及び図1のストレージデバイスを示している。 図18は、本発明の第8実施例に基づいて、図1のシステムで、コマンドを加速するためのメモリ使用を示している。 図19は、本発明の実施例に基づいて、図1のシステムの構成及び図1の加速モジュールとの通信を管理するブリッジングコンポーネント(bridging components)を示している。 本発明の実施例に基づいて、図1のプロセッサ、図1の加速モジュール、図1のストレージデバイス間の通信の前半部を示している。 本発明の実施例に基づいて、図1のプロセッサ、図1の加速モジュール、図1のストレージデバイス間の通信の後半部を示している。 本発明の実施例に基づいてPCIeトランザクションを処理するための、図1の加速モジュールに対する例示的な手順のフローチャートである。 本発明の実施例に基づいてPCIeトランザクションを処理するための、図1の加速モジュールに対する例示的な手順のより詳細なフローチャートの前段部である。 本発明の実施例に基づいてPCIeトランザクションを処理するための、図1の加速モジュールに対する例示的な手順のより詳細なフローチャートの中段部である。 本発明の実施例に基づいてPCIeトランザクションを処理するための、図1の加速モジュールに対する例示的な手順のより詳細なフローチャートの後段部である。 本発明の実施例に基づいてPCIeトランザクションが加速コマンドを含む図1のプロセッサから来ているか否かを判断するために、加速モジュールに対する例示的な手順のフローチャートの前段部を示す。 本発明の実施例に基づいてPCIeトランザクションが加速コマンドを含む図1のプロセッサから来ているか否かを判断するために、加速モジュールに対する例示的な手順のフローチャートの後段部を示す。 本発明の実施例に基づいて、PCIeトランザクションが加速コマンドを含む図1のストレージデバイスから来ているか否かを判断するために、加速モジュールに対する例示的な手順のフローチャートを示す。 本発明の実施例に基づいて、PCIeトランザクションが加速コマンドを含む図1のプロセッサから来ているか否かを判断するための、第1ブリッジングコンポーネントの例示的な手順のフローチャートを示す。 本発明の実施例に基づいて、PCIeトランザクションが加速コマンドを含む図1のストレージデバイスから来ているか否かを判断するための、図19の第2ブリッジングコンポーネントの例示的な手順のフローチャートを示す。 、本発明の実施例に基づいて、図1のストレージデバイスがPCIeトランザクションを処理するための例示的な手順のフローチャートの前段部を示す。 、本発明の実施例に基づいて、図1のストレージデバイスがPCIeトランザクションを処理するための例示的な手順のフローチャートの中段部を示す。 、本発明の実施例に基づいて、図1のストレージデバイスがPCIeトランザクションを処理するための例示的な手順のフローチャートの後段部を示す。 本発明の実施例に基づいて、図1のストレージデバイスが、図1の加速モジュールから出て来るPCIeトランザクションが加速コマンドを包含するか否かを判断するための、例示的な手順のフローチャートの前半部を示す。 本発明の実施例に基づいて、図1のストレージデバイスが、図1の加速モジュールから出て来るPCIeトランザクションが加速コマンドを包含するか否かを判断するための、例示的な手順のフローチャートの後半部を示す。
本発明の技術的思想の実施例が参照され、それらの例が添付された図面に示される。後述される詳細な説明で、多様な特定の詳細が、本発明の技術的思想に対する十分な理解を助けるために提供される。しかし、この分野における通常の技術を有する者は、このような特定の詳細がなくても、本発明の技術的思想を具現できる。他の例として、よく知られている方法、手順、コンポーネント、回路、及びネットワークは実施例の側面を不必要に曖昧にしないように詳細には説明されない。
ここで、第1、第2などのような用語が多様なエレメント(要素、構成要素)を説明するために使用されるが、このようなエレメントは、このような用語によって限定されない。このような用語は、一つのエレメントを他の一つのエレメントと区別するためにだけ使用される。例として、本発明の技術的思想の範囲から逸脱せずに、第1モジュールは、第2モジュールと命名され得る。同様に、第2モジュールは、第1モジュールと命名され得る。
本発明の技術的思想の説明で使用される用語は、特定の実施例を説明するための目的でのみ使用され、本発明の技術的思想を限定する意図はない。本発明の技術的思想の説明及び添付された請求項において使用されるように、コンテキスト(context)上明確に明示しない限り単数表現は複数表現も、また含むと意図される。「及び/又は」の用語は、一つ又はそれより多くの関連された項目の任意かつ全ての可能な組み合わせを含むと参照される。「包含する(comprises)」及び/又は「包含する(comprising)」の用語は、詳細な説明において使用された際に言及された特性、整数、ステップ、動作、エレメント、及び/又はコンポーネントの存在を明示し、一つ又はそれより多くの他の特性、整数、ステップ、動作、エレメント、コンポーネント、及び/又はそれらのグループの存在又は追加を排除しない。図面の構成及び特性は、必ずしも実際の比率に比例しない。
本発明の実施例は、特定のデータ処理機能を加速するためにFPGA(Field Programmable Gate Array)が使用されているSSD(Solid State Drive)又は他のストレージデバイスの基本構造を提案する。FPGAデバイスは、PCIe(Peripheral Component Interconnect Express)ホストインタフェースを提供するSSDの前に又は横に配置される。ホストトランザクション(host transactions)がFPGA PCIeインタフェースで受信されると、PCIeトランザクションは、バックエンドSSDコントローラ(backend SSD controller)に伝達される。「SSD」及び「SSDコントローラ」という用語は、明示された場合を除いては、一般的に同じ意味で使用される。
バックエンドSSDはPCIeエンドポイント及び不揮発性メモリエクスプレス(NVMe)コントローラを具現する。従って、ホストは、直接NVMeプロトコルをバックエンドSSDに伝達する。つまり、FPGAを介してホストからバックエンドSSDに連結されるPCIeインタフェースは通過(pass-through)特性である。SSDは直接メモリアクセス(DMA)を介してホストシステムメモリとのデータ伝送を遂行する。FPGAダウンストリームポート(DSP)は、PCIeトランザクションフィルタとして使用されるメモリのフィルタドレス範囲(FAR)でプログラミングされる。 DSPは、FARウィンドウに属する全てのPCIeトランザクションをフィルタリングして、それらをFPGAのロジック及びメモリに伝達する。プログラミングされたFARウィンドウに属していない全てのPCIeトランザクションは、ホストシステムのメモリに属し、ホストに直接伝達される。SSDコントローラは、PCIe VDM(Vendor Defined Message)メカニズム又はI2C/SMバスのような他のサイドバンドバスを使用するFPGAで適切なFARウィンドウをプログラムする。SSDコントローラは、PCIe BAR(Base Address Register、ベースアドレスレジスタ)を介してホストにアドレス範囲のブロックを要請する。ホストのBIOSが要請されたアドレスブロックをSSDコントローラに割り当てた後、SSDコントローラは、FPGA DSPでそのアドレス範囲のサブセットをFARウィンドウでプログラムする。DSPにプログラムされたアドレスの範囲は、SSDコントローラとFPGAとが通信し合うために使用される。つまり、ホストがアドレスブロックを割り当てると、SSDとFPGAがPCIe階層で互いに又は他のPCIeデバイスを干渉せずにホストトランザクションとPCIeバスを共有できる。SSDコントローラは、共有PCIeバスを介してFARウィンドウを使用してFPGAに加速コマンドとデータを提供できる。FPGA又はホストが共有PCIeバス及び前記のアドレス範囲を使用してSSDコントローラから加速のためのデータを要請することもできる。FPGAは、同じメカニズムを使用して加速の結果をSSDコントローラに再び提供することもできる。提案された基本構造及びメカニズムは、低コスト及びFPGAデバイスを使用しているSSDベースのアプリケーション加速のための低消費電力の解決策を具現できる。
提案された解決策の細部事項
基本的なアイディアは、FPGA及びSSD(及び/又は他のストレージデバイス)がホストと通信しながら(別のデバイスとして又は単一のデバイスに統合して)集合的に作動するというものである。以下、説明において、ストレージデバイスはSSDを意味する。3つのトラフィックストリームがある。
1)ホストからストレージデバイスに。ホストからストレージデバイスへの通信は、FPGA具現に応じてFPGAを介してストレージデバイスのEPに伝送される全てのトラフィックをアップストリームポート(USP)又はエンドポイント(EP)からダウンストリームポート(DSP)、ルートポート又はルート複合ポート(RP)に単純に伝送することにより、FPGAによって管理される。FPGAは、ホストとストレージデバイスとの間のNVMe通信を支援するために、ストレージデバイスによってホストにさらされる物理機能を包含できる。
2)FPGAに対する加速コマンドの通信。本発明の幾つかの実施例で、加速コマンドは、次の方式で処理される。つまり、加速サービスマネージャ(ASM)がホスト上で実行され得る。ASMは、ストレージデバイス(APM-Sとして識別される)とFPGA(APM-Fとして識別される)の両方の一部として構成を包含できるAPM(Acceleration Platform Manager)と通信できる。ホスト上のASMは、加速コマンド及び関連情報をSSDに伝送するためにNVMeプロトコルを使用できる。その次にSSDは、FPGAと関連された加速オーケストレーター(orchestrator)のように動作する。APM-Sによって許容される全ての加速コマンドは、独占のインタフェースを使用してAPM-Fに適切なコマンドを提供するために使用される。独占のインタフェースは、アドレス空間のウィンドウを使用して容易になる。このアドレス空間ウィンドウは、ストレージデバイスの要請に応じて、ホストメモリアドレスマップ内に割り当てられ得る(部分的には、ストレージデバイスとホストとの間のNVMeプロトコルを使用して通信を容易にするために)。適切なアドレス空間でアドレスを使用するコマンドは、ホストやストレージデバイスから別のモジュールに直接通信する代わりに、APM-Fによる処理のためにFPGAによってフィルタリングされ得る。フィルタリングは、コマンドと関連されたタグを使用したり、PCIeメッセージベースのフィルタリングを使用して遂行されたりすることもできる。このフィルタリングは、FPGAをストレージデバイスに連結するDSP/RPに連結されたフィルタによって遂行され得る。
3)データの加速及び処理のために、データをフェッチ(fetch)するためのFPGAとSSDとの間の通信。本発明の幾つかの実施例で、加速は次の方法で行われる。つまり、FPGAが加速処理のためにデータのフェッチを要請するとき、FPGAは上で議論された通り、ストレージデバイスとFPGAとの通信のために使用されるホストのメモリアドレスマップ内に割り当てられたアドレス空間を使用して要請を送り得る。
DSPフィルタ基本構造
この基本構造は、加速されたデータを処理するために、FPGAと共有できるホストとSSDとの間のPCIeバスによる方法を提供する。論理的に言って、FPGAは、ホストとSSDコントローラとの間に動作可能に配置される。ホストは、FPGAのアップストリームポート(USP)に連結され、SSDは、FPGAのダウンストリームポート(DSP)に連結される。ホスト及び/又はSSDに連結するために使用されるPCIeバスは、x4、x8レーン(lanes)又はその他の所望の幅であり得る。FPGA USP及びDSPポートは、2方向の両方でPCIeトランザクション(つまり、トランザクション階層パケット(TLPs))を伝達する。PCIe TLPの例は、構成の読み取り、構成の書き込み、メモリの読み取り及びメモリの書き込みである。従って、ホストは、SSDと直接通信する。FPGA上のDSPポートは、プログラムされたフィルタのアドレス範囲(FAR)をベースにしたSSDコントローラから出てくる全てのPCIeトランザクションをフィルタリングするロジックを有する。遮断されたSSDコントローラPCIeトランザクションは、加速プラットフォームマネージャ(Acceleration Platform Manager)-FPGA(APM-F)ブロックに伝達される。APM-Fモジュールは、SSDコントローラと通信する。APM-Fモジュールは、SSDコントローラからの加速プラットフォームマネージャ・SSD(APM-S)ファームウェアからデータ及び加速コマンドを受信する。その後にAPM-Fモジュールは、受信された加速コマンド及びデータをランタイム(RT)スケジューラに提供する。RTスケジューラは、データ処理を遂行するために、適切な加速エンジンを順番にプログラムする。
FPGAの使用は、1つの可能な具現を示すが、FPGA以外の具現が使用され得る。FPGAは、ストレージデバイス内に具現され得る。FPGAは、ホストメモリにデータをフェッチした後、ホストでデータを処理するよりは、ストレージデバイスに近く遂行されうる、加速されたデータの処理を支援する。データをフェッチする代わりに、ストレージデバイス/FPGAは、クエリを受信して処理を局部的に行い得る。
SSDコントローラは、PCIeの伝送を使用してNVMeプロトコル処理ロジックを具現する。PCIe構成の一部として、SSDコントローラは、それ自体の用途のため、ホストシステムアドレスマップのブロックを要請する。SSDコントローラは、NVMeプロトコルを支援するために、一般的に必要なものよりも大きなブロックを要請する。ストレージデバイスとFPGAとの間の通信を管理するために追加の空間の一部又は全部が使用され得る。例として、NVMeプロトコルは64KBのアドレス空間が必要になり得る。提案された基本構造でSSDコントローラは、10MBアドレスブロックを要請できる。SSDコントローラは、ホストに関して透明な方法(Host_Transparent_Manner)でFPGAと通信するために割り当てられたアドレスマップの一部を使用する。SSD-FPGA通信のために予約のシステムアドレスマップのサブセットをフィルタアドレス範囲(FAR)と称する。その後にSSDコントローラは、FPGA DSPでFARウィンドウをプログラムする。SSDコントローラは、FPGAのFARウィンドウをプログラミングするために、I2CバスやSMバスなどのサイドバンドバスを使用できる。SSDコントローラは、FPGAのFARウィンドウをプログラミングするためにPCIe VDM(Vendor Defined Messages、ベンダ定義メッセージ)を使用することもできる。
ホストインタフェースロジック(HIL)モジュールは、NVMeプロトコルを具現して、ホスト上で実行中のNVMeドライバと通信する。HILモジュールは、一般的なホストNVMeコマンドを実行するためにFTL(Flash Translation Layer)と相互作用する。さらに、HILモジュールは、ホスト側から受信した特定の加速コマンドを遮断し、それらをAPM-Sモジュールに伝達する。APM-Sは、ファームウェア又はファームウェア+ハードウェアとして具現され得る。APM-Sモジュールは、特定の加速コマンドを処理した後、加速コマンドとデータをFPGA上のAPM-Fモジュールに送るために準備できる。APM-Sモジュールは、加速情報をFPGAに送るためにFAR(Filter Address Range)アドレスを使用する。APM-SとAPM-Fとの間の通信は、メッセージをベースにできる。このようなAPM-SとAPM-Fとの間の通信のために、多様な方法を使用できる。
提案された基本構造及びメカニズムは、FPGAベースの加速を可能にするために、SSDコントローラが、ホストPCIeバスの共有を可能にする。本発明の実施例は、SSDでFPGAを使用するアプリケーションの加速化のための低コスト及び低消費電力の解決策を提供する。
DSP+USPフィルタ基本構造
この基本構造で、FPGAは間接的な方式でホストに表示される。FPGAとSSDとの間の通信は、提案されたソリューション1と同じように維持される。SSDコントローラは、ホストから大きなシステムのアドレス空間を要請できる。SSDコントローラは、割り当てられたアドレスブロックを3つのウィンドウに分割できる。一番目のウィンドウは、NVMe Controllerレジスタのアドレス空間のために使用される。2番目のウィンドウは、前述したように、FPGAとSSDとの間の通信のために使用される。三番目のウィンドウは、ホストとFPGAとの間の通信のためのものである。ホストは、特定のNVMeレジスタからFPGAデバイスの位置を発見できる。 SSDコントローラは、FPGAデバイスの位置を知るために、ホストアプリケーションによって読み出される特定のレジスタの三番目のウィンドウを広告できる。 SSDコントローラは、USPがこのようなトランザクションをフィルタリングできるよう、同じアドレスウィンドウでUSPをプログラミングすることもできる。USPは、三番目ウィンドウのアドレス空間に属するホストの全てのトランザクションをフィルタリングしてFPGA加速ロジックに伝達できる。このメカニズムは、加速コマンド及びデータをFPGAに通信するためにホスト上の加速サービスマネージャ(ASM)によって使用され得る。
従って、本発明の幾つかの実施例で、フィルタリングはまた、ホストからFPGAによって受信されたトラフィックに基づいて遂行され得る。つまり、ホストは加速コマンド/データをFPGAに送ることもできる。FPGAのDSP又はFPGAのRPに連結されたものと類似したフィルタが、FPGAのUSP又はFPGAのEPにも連結され得る。ホストは、ストレージデバイスによって要請されたアドレス空間のアドレスを使用できる。ホスト・FPGA通信のためにホストによって使用されたアドレスは、ホスト(言い替えるが、要請されたアドレス空間は、NVMe通信に必要な空間より大きい可能性がある)又はホストのメモリアドレスマップ内の別のアドレス空間の一部(仮想機能又は2番目の物理機能の何れか1つ又は両方に対して、2つの中で1つはストレージデバイスによってホストにさらされる)とのNVMe通信のためにストレージデバイスによって要請されたアドレス空間の一部であり得る。USP又はEP及びDSP又はRPにおいてフィルタリングは、ホストメモリアドレスマップ内の別のアドレス範囲を使用して遂行され得るので、ホストが必要に応じてストレージデバイス又はFPGAにコマンドを送り得ることに留意しよう(ストレージデバイスがFPGAと通信するように許諾する間にも必要である)。
アドレス空間の一部が、ホストとFPGAとの間の通信を支援する本発明の幾つかの実施例で、FPGAは、ホストに直接見えない可能性がある。この場合には、ホスト上のASMは、ホストFPGAの通信に使用されるアドレスの範囲を識別するためのNVMeアドレス空間の特定のレジスタに記録されたアドレスにアクセスすることにより、FPGAを「発見」できる。ASMは、PCIeデバイステーブルを介してストレージデバイスを検索でき、NVMeアドレス空間のどのレジスタがホスト・FPGA通信アドレス空間に対するポインタを格納するかがわかる。
VF+DSPフィルタ基本構造
このFPGA+SSDの基本構造で、SSDは一つの物理機能(PF)と1つの仮想機能(VF)をホストに対して露出する。SSDコントローラは、PFを介して露出される。VFは、FPGAを露出するために使用される。PFクラスコードは、大容量ストレージデバイスを示し得る一方、VFクラスコードは、FPGAを識別するために設定され得る。SSDコントローラのPFは、大規模システムメモリのアドレスブロックを要請してFPGAのアドレス指定ブロックのサブセットがFPGA DSPを通してFPGAとSSDとのの間の通信に使用され得、SSDコントローラVFは、FPGA USPを介してFPGAとホストとの間の通信のために、それ自体のメモリアドレスブロックを要請できる。
FPGA USPは、PCIeトランザクションフィルタとして使用され得る、他のメモリのフィルタドレス範囲及び/又はVFタグ(FAR-USP)でプログラムされ得る。USPは、FARウィンドウ及び/又はVFに属する全てのPCIeトランザクションに属する全てのPCIeトランザクションをフィルタリングでき、これをFPGAの加速ロジック及びメモリに伝達できる。プログラミングされたFAR-USPウィンドウに属していない全てのPCIeトランザクション又はVFに属していないトランザクションはSSDに属し、SSDに直接伝達され得る。SSDコントローラは、この情報を通信するために、PCIe VDMメカニズム又はI2C/SMバスのような他のサイドバンドバスを使用する適切なFAR-USPウィンドウをプログラムできる。
このFARアドレスウィンドウは、ホスト上で実行中のASMソフトウェアがAPM-Fとの通信を可能にする。つまり、FPGAはホストに直接見え得る。ASMソフトウェアは加速オーケストレーションコマンドとデータをFPGAに送るために、このPCIeアドレス範囲を使用できる。その後に、APM-Fは、受信された加速コマンド及びデータをランタイム(RT)スケジューラに提供できる。RTスケジューラは、データ処理を遂行するために、適切な加速エンジンを順番にプログラミングする。なお、APM-Fは、ホストメモリ又はSSDストアからデータをフェッチできる。
PF+DSPフィルタ基本構造
このFPGA+SSDの基本構造は、VFを使用する代わりに第2PFを使用してFPGAをホストに対して露出することを除いて、提案されたソリューション3と類似する。SSDコントローラは、2つの物理機能をホストに露出する。第1PFはSSDコントローラのために使用されて、第2PFはFPGAのために使用され得る。第2PFの基本アドレスは、FPGAのFAR-USPでプログラミングされ得る。従って、USPは、第2PFに対しプログラムされたアドレス範囲(FAR-USP)にあるホストから来る全てのトランザクションをフィルタリングでき、それらをFPGAに伝達できる。このメカニズムは、FPGAと通信するためホスト上で実行中のASMにより使用され得る。
仮想機能又は(第2)物理機能をホストに対して露出することにより、ホスト・FPGA通信のためのアドレス空間がホスト(ストレージデバイスによって又はFPGAによって)から要求され得る。仮想機能又は第2の物理的機能が露出された場合、USP/EPのフィルタは、ホスト・FIFI通信に割り当てられたアドレスの範囲に基づいて、又は露出された仮想機能や露出された第2の物理的機能(例えば、フィルタ番号又は他のタグによって)をフィルタリングできる。(仮想機能は、オペレーティングシステム(以下、OSと略する)の支援を要求する。そして第2の実際の機能が具現されたり、支援されたりする場合、第2の物理的機能を露出することは、仮想機能の使用に対する代替の解決策を提案する。)
PF+RPフィルタ基本構造
このFPGA SSD基本構造で、FPGA PCIeポートは、USP及びDSPではない、EP(endpoint)及びRP(root port)である。USP/DSPとEP/RPポートとの違いは、EP/RPの両方がそれら自体のPCIe構成空間を有する反面、USP/DSPポートはそうではないというのである。本発明のこのような実施例による基本構造で、FPGAは2つのPFをホストに露出できる(PF/VFを提供するSSDがFPGAを露出するよりは、FPGAがそれ自身のPFをホストに対して露出することに注目する)。SSD EPは、FPGA上のRPに連結され得る。第1FPGA EP PFは、ホストをSSDに直接連結するために使用できる反面、第2FPGA EP PFは、ホストをFPGAに連結するために使用され得る。このメカニズムは、FPGAと通信するためにホストで実行中のASMにより使用され得る。SSD-FPGA通信はFPGA RPとSSD EPの間でアドレス空間マップの一部を使用できる。本発明の幾つかの実施例で、第1FPGA(PF)は、大規模なアドレス空間を要求でき、BIOS割り当てられたアドレスウィンドウは、SSDコントローラ(EP)にマッピング又は変換され得る。このアドレス空間の一部は、ローカルFPGA-SSD通信のために使用され得る。本発明の他の実施例で、第2FPGA EPのために割り当てられたアドレス空間の部分は、FPGAとSSDコントローラの間の通信のために使用され得る。
PF+デュアルポートSSDの基本構造
このFPGA-SSDの基本構造で、デュアルポートSSDはFPGAとともに使用される。この基本構造で、FPGA(言い換えると、FPGAはPF/VFを提供するSSDがFPGAを露出するよりは、それ自身のPFを露出する)は、2つのPFをホストに露出できる。 SSD EPは、FPGA上のRPに連結され得る。第1FPGA EP PFは、ホストをSSDに直接連結するために使用され得る。第2FPGA EP PFのために来る、全てのホストのトランザクションは、FPGA加速ロジックに伝達され得る。ホスト上で実行中のASMソフトウェアは、FPGAと通信するための第2FPGA EP PFを使用できる。
FPGA-SSD通信(加速処理用)のために、SSDの第2PCIe EPが使用され得る。従って、FPGAはSSDに連結された2つのRPを有する。SSDの第1EPポートは、一般的なホストストレージアクセスのためにホストとの通信に使用され得る。SSDの第2EPは処理のためにFPGAに必要な全てのデータを伝送するために使用され得る。
言及したように、ストレージデバイスが2つの(又は潜在的にもっと多くの)のポートを支援できる本発明の実施例で、FPGAは、ストレージデバイス上の2つのEPと通信するために2つのRPを支援できる。このような本発明の実施例で、FPGA上の一つのRP(及びそれに対応するストレージデバイス上のEP)は、ストレージデバイスとホストとの間の通信を管理するために使用でき、FPGA上の他のRP(及びそれに対応するストレージデバイス上のEP)は、ストレージデバイスとFPGAの間の通信を管理するために使用され得る(加速コマンド又はデータのための)。本発明の斯かる実施例で、FPGA上のRPは、2つのアドレスマップ(各RPごとに1つずつ)を支援できる。従って、ホストとストレージデバイスの間の通信を支援するRPのためのアドレスマップは、NVMeコマンドのために割り当てられた空間を含み得、他のアドレスマップ(加速コマンド/データの通信を管理するRPのための)は、全的に通信のために作られ得る。本発明の斯かる実施例で、ホストメモリアドレスマップは、ホストが加速コマンドをストレージデバイスに通信するように意図された任意のアドレス空間を省略できるが、これは、斯かる全てのコマンドがホストからFPGAに伝達され得るからである(アドレス空間を介してFPGAの要請が、斯かる通信のためのホストのメモリアドレスマップ内に割り当てられる)。その後に、FPGAはコマンドを処理し、FPGAとストレージデバイスの間の通信専用に指定された第2のRPのメモリアドレスマップを使用して、必要に応じて、コマンド/データをストレージデバイスに伝達できる。
EP/RPが、FPGAでUSP/DSPの代わりに使用される場合、EP/RPはPCIe構成空間を支援でき、FPGAは、その物理機能をホストに対して直接露出できる(このような機能をストレージデバイスに残すのではなく)。FPGAによって露出された一つの物理機能は、ホストからストレージデバイスへの通信を指示するために使用され得る。他の物理機能は、ホストとFPGAの間の通信に使用され得る。本発明の斯かる実施例で、ストレージデバイスがこのような要求を発生するのではなく、FPGAは、ホストから割り当てられるアドレス空間を要求できる。
EP/RPは、それら自体のメモリマップを支援することもできる。従って、FPGAは、ホストのメモリアドレスマップを使用してホストと通信でき、FPGAはストレージデバイスと通信するために使用される、それ自体のメモリアドレスマップを支援できる。本発明の斯かる実施例で、FPGAは、ホストからストレージデバイスへの通信を支援するために、ホストのメモリアドレスマップに割り当てられた空間を要請でき(FPGAを介して発生する、そのような通信により)、追加の空間は、ホストからFPGAへの通信をサポートするために、ホストのメモリアドレスマップに割り当てられる。FPGAのメモリアドレスマップは、ホストからストレージデバイスへコマンドを通信してFPGAとストレージデバイスの間で加速コマンド/データを通信するためのそれ自体の空間の割り当てを含み得る。FPGAは、ホストとストレージデバイスの間の通信のために使用されるアドレス空間を、FPGAとストレージデバイス(同一サイズであるべき)との間の通信のために使用されるアドレス空間に変換できる。
FPGAが、EP/RPを含む場合、ホストは、FPGAを直接見る。これは、PCIe機能がFPGAによって露出される問題を提起する。FPGAは、ストレージデバイスと同じPCIe機能を露出しなければならない。従って、FPGAには、ストレージデバイスのSSDコントローラEP PCIe構成をマッチングするためにFPGAのEP PCIe構成を設定するPCIe構成モニタを含み得る。なお、ホストがFPGAのEPのPCIe構成を変更する場合、ストレージデバイスのEPのPCIe構成は、同様に修正され得る。
本発明の実施例は、全体の機能が維持されるのならば、FPGA内で記述されたような構成/機能を多数の個別エレメントに分割することを支援できる。FPGA構成は、ハードウェア、ソフトウェア/ファームウェア又はこの2つの組み合わせを使用して具現され得る。
図1には、機械105が示されている。機械105は、プロセッサ110を含み得る。プロセッサ110は、任意の多様なプロセッサであり得る。つまり、例として、Intel Xeon、Celeron、Itanium、Atomプロセッサ、AMD Opteronプロセッサ、又はARMプロセッサなどである。図1は、機械105内の単一のプロセッサ110を示しているが、機械105は、各々、単一のコア又はマルチコアプロセッサであり得る任意の数のプロセッサを含み得、任意の所望の組み合わせで混合され得る。プロセッサ110は、ストレージデバイス120へのアクセスを支援できるデバイスドライバ115を実行でき、相異なるデバイスドライバは、デバイス105の他の構成に対するアクセスを支援できる。この明細書の全般にかけて、ストレージデバイス120は、SSD(Solid State Drive)のストレージデバイス120のように説明され得るが、ストレージデバイス120は、以下の本発明の実施例で説明された、加速化されたコマンドを支援する任意の他のタイプのストレージデバイスであり得る。プロセッサ110はまた、加速コマンドを含む任意のアプリケーションであり得るアプリケーション125及びストレージデバイス120上に格納されたデータに対して遂行される加速コマンドを伝送するために使用できるアプリケーションサービスマネージャ(ASM)130を実行できる。
機械105はまた、メインメモリ140へのアクセスを管理するために使用できるメモリコントローラ135を含み得る。メモリ140は、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、永久ランダムアクセスメモリ、強誘電体ランダムアクセスメモリ(FRAM(登録商標))、又は磁気ランダムアクセスメモリ(MRAM)などのような不揮発性ランダムアクセスメモリ(NVRAM)のような任意の他のタイプのメモリであり得る。
機械105はまた、加速モジュール145を含み得る。加速モジュール145は、ストレージデバイス120に格納されたデータに対して、プロセッサ110によって要請された加速コマンドを遂行することにより、プロセッサ110を補助できる。加速モジュール145は、ファームウェア単独又はハードウェアとファームウェアを組み合わせて使用して具現され得る。この明細書の全般にかけて、加速モジュール145は、FPGA(Field Programmable Gate Array)145として説明されるであろうが、加速モジュール145は、以下の本発明の実施例で説明されているように加速コマンドを支援する任意の他のタイプの加速モジュールであり得る。例として、加速モジュール145は、ASIC(Application-Specific Integrated Circuit)、GPU(Graphics Processing Unit)、SSDのISC(In-Storage Computing)能力又は他の態様で具現されるか、又は、使用できる。
なお、図1は、機械105をサーバ(スタンドアロン又はラックサーバであり得る)として図示してあるが、本発明の実施例は、任意の所望のタイプの機械105を制限なしに含み得る。例として、機械105は、デスクトップ、ラップトップコンピュータ、又は本発明の実施例から利益を獲得できる任意の他の機械に代替され得る。機械105は、また、特殊化されたポータブルコンピューティングマシンに、タブレットコンピュータに、スマートポ及び他のコンピューティングマシン(machine、機械)を含み得る。なお、図1は、ストレージデバイス120、アプリケーション125、及びASM130を含む機械105を図示するが、本発明の実施例は、別のマシンで、それらの構成を有できる。例として、ストレージデバイス120は、1つ以上のネットワーク(有線、無線、グローバルなど)を経由するネットワーク連結を介して機械105(及びアプリケーション125及びASM130)に連結されたサーバにインストールされ得る。
図1に示された構成の特定の方式にかかわらず、「ホスト」、「ホストマシン」又は「ホストプロセッサ」という用語は、プロセッサ110を記述するために使用され得る。これにより、プロセッサ110を本発明に係る他の構成部品と区別できる。
図1の構成部品の間には、本発明の実施例に関心のある3つのトラフィックストリームが存在する(本発明の実施例とは関係のない他のトラフィックストリームも当然有り得る)。
1)ホストからストレージデバイス120へ。
ホスト(プロセッサ110)がストレージデバイス120に通信を送り得る。本発明の実施例で、このような全てのトラフィックは、加速モジュール145を通過し、加速モジュール145によってストレージデバイス120に到達することから遮断されてはならない。斯かるトラフィックの実施例は、ストレージデバイス120からデータを読み出すための、及び/又はストレージデバイス120にデータを記録するためのコマンドを含み得る。つまり、ストレージデバイス120によって提供される他のコマンドもこのようなトラフィックに含まれ得る。
2)ASM130から加速モジュール145へ。
ASM130は、特定の加速コマンドが遂行されるように要請できる。何れにせよ、本発明の特定の実施例にかかわらず、加速モジュール145は、ASM130から加速コマンドを受信しなければならない。
3)加速モジュール145からストレージデバイス130へ。
加速コマンドを遂行するために、加速モジュール145は、ストレージデバイス130からデータをフェッチ又は受信する必要が有り得る。
図2は図1の機械の追加的な細部事項を示している。図2で、典型的に、機械105は、機械105の構成要素の動作を調整するために使用され得るメモリコントローラ135及びクロック205を包含できる1つ以上のプロセッサ110を含む。なお、プロセッサ110は、例として、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)又は媒体を保存する他の状態を包含できるメモリ140に連結され得る。プロセッサ110はまた、ストレージデバイス120に、及び、例えばイーサネット(登録商標)コネクタ又は無線コネクタであり得るネットワークコネクタ210に連結され得る。プロセッサ110はまた、バス215に連結され得、これには、他の構成要素の中で、ユーザインタフェース220及び入力/出力エンジン225を使用して管理され得る入力/出力インタフェースポートが取り付けられ得る。
第1実施例
図3は、本発明の第1実施例に基づいて、図1のSSD120及び図2のFPGA145の構成要素を示している。図3において、プロセッサ110、FPGA145、及びSSD120は、互いに通信することが示されている。図3において、プロセッサ110、FPGA145、及びSSD120は、PCIe(Peripheral Component Interconnect Express)バスを介して通信できる。PCIeバスは、任意の数のレーンを使用できる。つまり、典型的な例は、x4及びx8であるが、本発明の実施例は、任意の他の所望の数のレーンを使用できる。この通信は、不揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)であり得るPCIeトランザクションを包含できるが、本発明の実施例は、他のエンコーディングを使用する通信又は他のプロトコルのコマンドを包含するように拡張され得る。
SSD120は、エンドポイント(EP)305、ホストインタフェース層(HIL)310、SSD加速プラットフォーム管理者(APM-S)315、及びフラッシュ変換階層(FTL)320からなるSSDコントローラ370、並びにフラッシュメディア325を含み得る。エンドポイント305は、SSD120がPCIe通信を受信して伝送する論理的又は物理的な連結ポイントであり得る。SSD120がエンドポイント305でプロセッサ110からPCIeトランザクションを受信する場合(FPGA145を介して)、SSD120は、PCIeトランザクションをHIL310に伝達できる。その後に、HIL310は、PCIeトランザクションが加速コマンドを含むかどうかを判断できる。
PCIeトランザクションが加速コマンドを含む場合、HILは処理のためにPCIeトランザクション(又はPCIeトランザクションから圧縮解除(unpack、解凍)された加速コマンドそのもの)をAPM-S(315)に伝送できる。APM-S(315)は、ファームウェア単独又はハードウェアとファームウェアの組み合わせを使用して具現され得る。
そうでない場合、即ち、PCIeトランザクションが加速コマンドを含まない場合、HIL310は、FTL320にPCIeトランザクション(又は圧縮解除されたNVMeコマンド)を伝達でき、FTLは、図1のアプリケーション125によって使用される論理ブロックアドレス(LBA)を物理ブロックアドレス(PBA)に変換し、フラッシュメディア325に格納されたデータにアクセスできる。
APM-S(315)が処理できる、基本的に2つのタイプの加速コマンドがある。加速コマンドの第1タイプは、プロセッサ110からの特定のコマンドであり得る。本発明の第1実施例で、FPGA145は、プロセッサ110に見えない可能性がある。つまり、プロセッサ110は、その通信を全てSSD120に伝送する。プロセッサ110が、アプリケーションデータに対して加速コマンドが遂行されることを所望する場合、プロセッサ110は、特定のコマンドをSSD120に伝達できる。
プロセッサ110は、SSD120に、該特定のコマンド/加速コマンドをトンネリングするためにNVMeコマンドを使用できる。 HIL310は、APM-S(315)に伝達され得る、この特定のコマンドをインタセプトできる。その後に、APM-S(315)は、該特定のコマンドに応答して加速コマンドを生成でき、該特定のコマンドは該加速コマンドを遂行するためにFPGA145に返送され得る。この特定のコマンドは、例として、実行されるべき加速コマンドの特定のタイプ及び該加速コマンドが遂行されるべきデータをエンコーディングできる。
APM-S(315)が処理できる加速コマンドの第2のタイプは、データを包含し得る。例として、FPGA145は、フラッシュメディア325に直接アクセスしない場合があり、従って、加速コマンドが遂行されるデータを受信せずに加速コマンドを遂行できない。従って、APM-S(315)は、FPGA145から問題のデータを要請する加速コマンドを受信できる。その後、APM-S(315)は、FPGA145が加速コマンドを遂行できるようにするために、要求されたデータにアクセスし、それをFPGA145に返し得る。
図3において、SSD120は、SSDで使用するのに適したFTL320及びフラッシュメディア325を含むとして示されている。SSD120は、代替ストレージデバイスに置き換えられると、これらの構成要素は、ストレージデバイスのタイプに適した代替の構成要素に置き換えられ得る。例として、SSD120は、ハードディスクドライブに置き換えられると、フラッシュメディア325は、ハードディスクプラッタに置き換えられ得る。データアクセスを支援するために追加の構成要素がまた含まれ得る。つまり、ハードディスクドライブストレージデバイスの例を続けると、ストレージデバイスはまた、適切な読み取り/書き込みヘッドを含み得る。
FPGA145がプロセッサ110とSSD120との間の通信をインタセプトする前に、SSD120は、プロセッサ110からホストメモリアドレスのブロックを要求できる。ホストメモリシステムアドレスのブロックに対する、このような要求は、PCIeトランザクションを使用するとき、一般的であり、スタートアップのとき又は後で遂行され得る。それに応答して、プロセッサ110(又は図1の機械105の基本的な入力/出力システム(BIOS))は、SSD120による使用のために、ホストメモリシステムアドレスのブロックを割り当て得る。その後、ホストマシンは、このホストメモリシステムアドレスのブロックが、図1の機械105で他のデバイスによって利用できないことを知るようになる。
図4は、本発明の第1実施例に基づいて、図1のシステムで、コマンドを加速するためのメモリ使用を示している。図4で、SSD120は、ホストメモリシステムアドレスのブロックを要請できる。プロセッサ110とSSD120との間のNVMe通信を支援するために必要なメモリの量は比較的少ない-例えば、64KB-が、SSD120は、はるかに大きいブロック-例えば、10MB以上-を要求できる。それに応答して、プロセッサ110は、ホストメモリシステムのアドレスブロック405を返し得る。ブロック405の一端は、BAR(Base Address Register)に格納され得、SSD120がBAR(そして要請されたブロックのサイズのSSD120の情報(knowledge)とともに)に基づいて、ブロック405を判断できるようになる。
一旦SSD120が、どのようなアドレスがブロック405に在るかを知れば、SSD120は、ブロック405をそれ自身の使用のために、相異なる領域に分け得る。ブロック405の1つのサブセット410は、NVMe通信のために使用され得る。他のサブセット415は、使用されないまま残され得る。ダウンストリームFAR(Filter Address Range、フィルタアドレスレンジ)420(任意のフィルタリングがプロセッサ110からのダウンストリームに対して行われるので、「ダウンストリーム」を付加する)と称される第3サブセットは、SSD120とFPGA145との間の通信のために専用され得る。ダウンストリームFAR420は、SSD120及びFPGA145の両方で使用できることに注目する。何れか1つは問題のPCIeトランザクションが加速コマンドを含むことを示すために、ダウンストリームFAR420内のアドレスを使用できる。
図3に戻って、SSD120がダウンストリームFAR420内のアドレスを使用して通信を伝送すると、FPGA145は、ダウンストリームポート335で通信を受信し、通信をインタセプトし、その通信をプロセッサ110に伝達せずに、むしろ局部的に処理できる。
SSD120からダウンストリームポート335でFPGA145によって受信された、ダウンストリームFAR420を含んでいない任意の通信は、アップストリームポート330を介してFPGA145によりプロセッサ110に伝達され得る(FPGA145がアップストリームポート330で、プロセッサ110から受信する任意の通信は、ダウンストリームポート335を介して自動的にSSD120に伝達され得る)。
FPGA145は、プロセッサ110とSSD120との間の通信をインタセプトできるように、プロセッサ110とSSD120の間に位置できる。このように通信をインタセプトすることにより、FPGA145は、SSD120によって要請された加速コマンドを遂行できる。
加速コマンドを遂行するために、FPGA145は、アップストリームポート330、ダウンストリームポート335、FPGA加速プラットフォームマネージャ(APM-F)340、スケジューラ345、及び加速エンジン(350-1及び350-2)を含み得る。アップストリームポート330は、プロセッサ110と通信するために使用され得る。ダウンストリームポート335は、SSD120と通信するために使用できる。APM-F(340)は、FPGA145がインタセプトした任意の加速コマンドを受信することに対する責任がある。
斯かる加速コマンドは、メッセージのメールボックス355を使用してダウンストリームポート335からメッセージとして受信され得るが、本発明の実施例は、APM-Fが加速コマンドを受信するための他のメカニズムに拡張され得る。一度加速コマンドが受信されると、APM-F(340)は、加速コマンドを処理できる。例として、FPGA145が加速コマンドを遂行できる、十分な情報を有する場合、APM-F(340)は、加速コマンドを加速エンジン(350-1及び350-2)のような任意の利用可能な加速エンジンでスケジューリングできるスケジューラ(「ランタイムスケジューラ」とも称され得る)345に加速コマンドを手渡し(pass)得る。
一方、図3は、2つの加速エンジン(350-1、350-2)を図示するが、本発明の実施例は、任意の所望の数の加速エンジンを含み得る。つまり、図3に示された2つは単に例示的な目的のためである。代案的に、FPGA145が加速コマンドを遂行するための追加情報を必要とする場合、例えば、加速コマンドが遂行されるべきデータをFPGA145が必要とする場合、APM-F(340)は、PCIeトランザクションを、必要なデータを要請するSSD120に送るなどの他の動作をとり得る。
特定のPCIeトランザクションが、加速コマンドを含むか否かを判断するために、FPGA145は、ダウンストリームポート335に関連されたダウンストリームフィルタ360を含み得る。ダウンストリームフィルタ360は、加速コマンドを包含できる、SSD120から発行されたPCIeトランザクションを識別できる。これは任意の所望の方式で遂行され得る。本発明の幾つかの実施例で、SSD120は、図4のダウンストリームFAR420を用いてダウンストリームフィルタ360をプログラミングできる。
その後、ダウンストリームフィルタ360が、図4のダウンストリームFAR420内のアドレスを使用するPCIeトランザクションを識別するとき、FPGA145は、PCIeトランザクションを、加速コマンドを含むものと識別し、PCIeトランザクションをインタセプトできる。SSD120は、任意の所望の方式でダウンストリームフィルタ360をプログラミングできる。例として、SSD120は、ダウンストリームフィルタ360をプログラミングするために、内部の集積回路バス(ICバス)、又はシステム管理バス(SMバス)のようなサイドバンドバス365を使用できる。また、SSD120は、ダウンストリームフィルタ360をプログラミングするために、PCIe VDM(Vendor Defined Message)を使用できる。SSD120はまた、ダウンストリームフィルタ360をプログラミングするために他のメカニズムを使用できる。
図3において、FPGA145は、プロセッサ110とSSD120との双方との通信を可能にする部品を含むとして示されている。つまり、具体的には、アップストリームポート330、ダウンストリームポート335及びダウンストリームフィルタ360である。FPGA145は、プロセッサ110とSSD120との双方と通信する幾つかのメカニズムを必要とするが、本発明の実施例は、通信要素をFPGA145から分離できる。
例として、ダウンストリームポート335とダウンストリームフィルタ360は、(ここで後者は、SSD120から受信された何れのPCIeトランザクションが加速コマンドを含むことを識別し、従ってプロセッサ120に伝達する代わりにAPM-F(340)にリダイレクトする責任がある)、FPGA145とSSD120との間のブリッジ構成要素(図3に図示せず)に配置され得る。これらのブリッジの構成要素は、FPGA145及びSSD120と通信するために必要なので、この場合、FPGA145は相変わらずダウンストリームポート335(又はブリッジ構成要素との通信を可能にする代案的な構造(structure))を含むが、ダウンストリームフィルタ360は、FPGA145から除去され得る。
前述した本発明の第1実施例は、プロセッサ/FPGA/SSDの具現の可能な組み合わせを示す。以下で、本発明の他の実施例として説明される他の具現もまた可能である。特定の構成の動作(例として、APM-F(340)、スケジューラ345及び加速エンジン(350-1及び350-2)の動作)の間に差異がない場合、それらの動作の繰り返しの説明は、後続の本発明の実施例では省略される。
第2実施例
図5は、本発明の第2実施例に基づいて、図1のFPGA145及び図1のSSD120の構成要素を示す。本発明の第2実施例は、アップストリームポート(USP)330が、フィルタ、即ち、アップストリームフィルタ505を包含することを除いては、本発明の第1実施例と類似する。アップストリームフィルタ505は、ダウンストリームフィルタ360と類似の方式で、プロセッサ110(アップストリームポート330を介して受信された)から来るPCIeトランザクションをフィルタリングできる。
例として、SSD120は、図4のダウンストリームFAR365と同様に、アップストリームFARを定義でき、サイドバンドバス365、PCIe、VDM、又は任意の他のメカニズムを介してアップストリームFARを用いてアップストリームフィルタ505をプログラミングする。その後に、FPGA145がアップストリームポート330で、プロセッサ110からPCIeトランザクションを受信するとき、アップストリームフィルタ505は、アップストリームフィルタ505がアップストリームFAR内のアドレスを包含するかを見るためにPCIeトランザクションを検査できる。もしそうならば、該PCIeトランザクションは加速コマンドであり、FPGA145は、該PCIeトランザクションをSSD120に伝達せず、むしろ、プロセッサのために該PCIeトランザクションをAPM-F(340)にルーティングできる。
本発明の第2実施例に基づいて、図6は、図1のシステムでコマンドを加速するためのメモリ使用を示している。本発明の第1実施例でのように、SSD120は、SSD120がNVMeコマンドを支援するために必要なアドレスの範囲よりも、大きいホストシステムメモリアドレスのブロックを要請でき、そのBARに応答してブロック405を受信できる。その後に、SSD120は、NVMe通信のためにブロック405の1つのサブセット410を維持でき、他のサブセット415は、未使用のまま残され得る。第3サブセットは、ダウンストリームFAR(420)として別に設定され得、第4サブセットは、アップストリームFAR(605)として別に設定され得る。
図5に戻ると、本発明の第2実施例で、プロセッサ110は、FPGA145が発見可能なデバイスではないので、相変わらずFPGA145を直接「見(see)」ない。しかし、SSD120は、アップストリームFAR605のベースアドレスをNVMe通信のためのサブセット410内の特定のレジスタにプログラミングすることにより、アップストリームFAR(605)をプロセッサ110に報らせ得る。NVMe通信のためのサブセット410から、この特定のレジスタを読み出す場合、プロセッサ110は、アップストリームFAR(605)を認識するようになり得る。その後に、プロセッサ110は、SSD120のAPM-S(315)に特定のコマンドを伝送する代わりに、加速コマンドをFPGA145に伝送できる(アップストリームポート330を介して)。
図3でのように図5において、FPGA(145)は、プロセッサ110とSSD120との通信を可能にする部品を含んでいるとして示されている。つまり、具体的には、アップストリームポート330、アップストリームフィルタ505、ダウンストリームポート335、及びダウンストリームフィルタ360を含んでいる。図3に示された本発明の実施例と同様に、PCIeトランザクションのフィルタリングと関連された構成要素は、FPGA145から除去され得る。
従って、本発明の第2実施例で、アップストリームポート330及びアップストリームフィルタ335は、第1ブリッジ構成要素及びダウンストリームポート335に配置され得、ダウンストリームフィルタ360は、各々が図5の相異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置され得る。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得、(その場合、FPGA145は、他のソース(source)からの通信のために、それ自体のフィルタリングを処理する)、又は、PCIeトランザクションのソースに関係なく、単一のブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用され得る。
第3実施例
図7は本発明の第3実施例に基づいて、図1のFPGA145及び図1のSSD120の構成要素を示している。本発明の第3実施例で、SSD120は、物理機能(PF)705及び仮想機能(VF)710を含む(本発明の第3実施例は、本発明の他の実施例がPF及び/又はVFを含んでいないことを意味するのではなく、単に本発明の第3実施例と同じ方式で使用されないことを意味する)。PF705は、SSD120によって提供される機能のような単一のリソースを示す。VF710は、PFと関連されるが、「仮想化」された機能を示す。つまり、与えられたPFに対し1つ以上のVFが有り得る。
しかし、SSD120の仮想機能を表現する代わりに、VF710は、FPGA145を「露出」できる。つまり、VF710は、FPGA145の機能を示し得る。(VF710は、相変わらずFPGA145の一部ではなく、SSD120の一部である。しかし、FPGA145を露出するための専用VF710を使用すれば、VF710と関連された任意のメモリアドレスは、他のデバイスと衝突しないであろう。)PCIeデバイスが羅列されとき、PF及びVFがプロセッサ110によって発見され得るので、プロセッサ110は、VF710を介してFPGA145を間接的に発見できるが、それ自身が直接発見することはできない。
本発明の第3実施例に基づいて、図8は、図1のシステムで加速コマンドに係るメモリの使用を示している。本発明の第1実施例でのように、SSD120は、SSD120がNVMeコマンドを支援する必要のあるアドレスの範囲よりも大きいホストシステムメモリアドレスのブロックを要請できる。しかし、SSD120は、実際には更に、ホストシステムのメモリアドレスの2つの相異なるブロックを要請できる。つまり、PF705に対するブロック805及びVF710に対するブロック810である。
ダウンストリームFAR420は、PF705に対するブロック805のサブセットとして選択され得る。よって、アップストリームFAR605は、VF710に対するブロック810の全体であり得る。なお、アップストリームFAR605は、単にブロック810のサブセットとして選択され得る。しかし、ブロック810は、VF710による専用となり、VF710はFPGA145を効果的に露出する以外の他の目的を有し得ないので、アップストリームFAR605の一部として使用されていないブロック810の任意のメモリアドレスは、無駄になり得る。SSD120が、各ブロックに対し割り当てられたアドレスの範囲を知り得るようにするため、ブロック(805及び810)の各々は、別個のBARを有する。
図7に戻ると、本発明の第2実施例と同様に、アップストリームポート330は、またフィルタを含む。つまり、VFフィルタ715である。VFフィルタ715は、ダウンストリームフィルタ360と類似の方式で、プロセッサ110から来る(アップストリームポート330を介して受信された)PCIeトランザクションをフィルタリングできる。例として、SSD120は、サイドバンドバス365、PCIe VDM、又は任意の他のメカニズムを介してアップストリームFAR605を用いてVFフィルタ715をプログラムできる。
その後に、FPGA145がアップストリームポート330で、プロセッサ110からPCIeトランザクションを受信するとき、VFフィルタ715は、該PCIeトランザクションがアップストリームFAR605内のアドレスを包含するか否かを知るためにPCIeトランザクションを検査できる。もしそうなら、該PCIeトランザクションは加速コマンドであり、FPGA145は、該PCIeトランザクションをSSD120に伝達せず、むしろ、プロセッサのために該PCIeトランザクションをAPM-F(340)にルーティングできる。
代案として、SSD120は、VF710の識別子でVFフィルタ715をプログラムできる。VFフィルタ715は、アップストリームポート330で、プロセッサ110から受信されたPCIeトランザクションを検査して、それがVF710の識別子を包含するか否かを知り得る。PCIeトランザクションがVF710の識別子を包含すると、FPGA145は、PCIeトランザクションをSSD120に伝達せず、むしろ、プロセッサのためにPCIeトランザクションをAPM-F(340)にルーティングできる。
図7において、本発明の前の実施例でのように、FPGA145は、プロセッサ110とSSD120との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、アップストリームポート330、VFフィルタ715、ダウンストリームポート335、及びダウンストリームフィルタ360である。前に示された、本発明の実施例でのように、PCIeトランザクションのフィルタリングと関連された構成要素は、FPGA145から除去され得る。
従って、本発明の第3実施例で、アップストリームポート330及びVFフィルタ715は、第1ブリッジ構成要素に配置され得、ダウンストリームポート335及びダウンストリームフィルタ360は、各々が図7の相異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する第2ブリッジ構成要素に配置できる。選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得、(その場合、FPGA145は、他のソースからの通信のために、それ自体のフィルタリングを処理する)、又は、PCIeトランザクションのソースに関係なく、単一のブリッジ構成要素がFPGA145に対する全てのフィルタを処理するために使用され得る。
第4実施例
FPGA145を露出するためにVF710を使用する問題の1つは、VFの使用がプロセッサ110のホストオペレーティングシステム(以下、OSと略する)からの支援を要求できるという点である。一部のOSは、VFをサポートするが、全てのOSがVFを支援しているわけではなく、VFの支援は、OSに対しそれ自体独自の複雑さを伴う。本発明の第4の実施例は、VFの使用に伴う、この困難に立ち向かう。
図9は、本発明の第4実施例に基づいて、図1のFPGA145及び図1のSSD120の構成を示している。本発明の第3実施例とは対照的に、本発明の第4実施例では、SSD120は、2つのPF(705、905)を含む。(本発明の第3実施例の場合と同様に、本発明の第4実施例は、本発明の他の実施例がPF及び/又はVFを包含していないことを意味しない。)PF705は、SSD120によって提供される機能のような単一のリソースを示し続ける。一方、PF905は、FPGA145を露出する。つまり、PCIeデバイスが列挙されるときにPFがプロセッサ110によって発見され得るので、プロセッサ110は、FPGA145自身を直接発見できないけれども、PF905を介してFPGA145を間接的に発見できる。
本発明の第4実施例に基づいて、図10は、図3のシステムでコマンドを加速するためのメモリ使用を示している。本発明の第3実施例の場合と同様に、SSD120は、ホストシステムのメモリアドレスの2つの相異なるブロックを要求できる。つまり、PF705に対するブロック1005及びPF905に対するブロック1010である。ダウンストリームFAR420は、PF705に対するブロック1005のサブセットとして選択され得る。そしてアップストリームFAR605は、PF905に対するブロック1010の全体であり得る。(つまり、アップストリームFAR605は、ブロック1010のサブセットとして選択され得る。しかし、ブロック1010は、PF905による専用となり、PF905は、FPGA145を効果的に露出すること以外の他の目的を有し得ないので、アップストリームFAR605の一部として使用されていないブロック1010の任意のメモリアドレスは、無駄になり得る。)SSD120が、各ブロックに対し割り当てられたアドレスの範囲を知り得るようにするため、ブロック(1005及び1010)の各々は、個々のBARを有する。
図9に戻ると、本発明の第3実施例と同様に、アップストリームポート330はまた、フィルタを含む。つまり、PFフィルタ715である。
(PFフィルタ715は、動作中の図7のVFフィルタ715と実質的に同一であり、名前の変更は、PFフィルタ715がVFフィルタ715とは異なるように動作する故ではなく、むしろ、FPGA145を露出するために使用される機能のタイプと関連付けるためである。PFフィルタ715は、ダウンストリームフィルタ360と類似の方式で、プロセッサ110(アップストリームポート330を介して受信された)から来るPCIeトランザクションをフィルタリングできる。例として、SSD120は、サイドバンドバス365、PCIe VDM、又は任意の他のメカニズムを使用してアップストリームFAR605でVFフィルタ715をプログラムできる。その後に、FPGA145がアップストリームポート330で、プロセッサ110からPCIeトランザクションを受信するとき、PFフィルタ715は、PCIeトランザクションがアップストリームFAR605にアドレスを包含するかを知るためにPCIeトランザクションを検査できる。もしそうならば、該PCIeトランザクションは加速コマンドであり、FPGA145は、該PCIeトランザクションをSSD120に伝達せず、むしろ、プロセッサのために該PCIeトランザクションをAPM-F(340)にルーティングできる。
代案として、SSD120は、PF905の識別子でPFフィルタ715をプログラムできる。PFフィルタ715は、アップストリームポート330で、プロセッサ110から受信されたPCIeトランザクションを検査して、それがPF905の識別子を包含するかを知り得る。該PCIeトランザクションがPF905の識別子を包含すると、FPGA145は、該PCIeトランザクションをSSD120に伝達せず、むしろ、プロセッサのために該PCIeトランザクションをAPM-F(340)にルーティングできる。
図9において、本発明の前の実施例の場合と同様に、FPGA145は、プロセッサ110とSSD120との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、アップストリームポート330、PFフィルタ715、ダウンストリームポート335、及びダウンストリームフィルタ360である。前に示された、本発明の実施例と同様に、PCIeトランザクションのフィルタリングと関連される部品(構成要素)は、FPGA145から除去され得る。
従って、本発明の第4実施例で、アップストリームポート330及びPFフィルタ715は、第1ブリッジ構成要素に配置され得、一方、ダウンストリームポート335及びダウンストリームフィルタ360は、第2ブリッジ構成要素に配置され得、各々は、図9の相異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得(その場合、FPGA145は、他のソースからの通信のために、それ自体のフィルタリングを処理する)、又は、PCIeトランザクションのソースに関係なく、単一のブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用され得る。
第5実施例
本発明の第4実施例は、本発明の第3実施例の場合と同様にVFを使用する困難に立ち向かった。しかし、本発明の第4実施例を使用するためには、SSD120は、FPGA145により専用されているPF905を提供する必要がある。全てのSSD(又は、より一般的には、ストレージデバイス)がFPGA145により専用され得る利用可能なPFを有しない。本発明の第5実施例は、SSD120が多重のPFを提供する必要がない解決策を提供する。
図11は、本発明の第5実施例に基づいて、図1のFPGA145及び図1のSSD120の構成要素を示している。図11において、SSD120は、PF及びVFを提供必要のない図3及び図5で示される構造(structure)に戻る。(再言すると、SSD120がPF及び/又はVFを提供してはならない(may_not)、と言っているのではなく、単に、SSD120が追加のPF及び/又はVFの提供を要求されていない(not_required)、と言っているに過ぎない。)
本発明の第1乃至第4実施例と比較すると、本発明の第5実施例では、FPGA145は、多少異なる。図3、5、7、及び9の場合のアップストリームポート(USP)330及びダウンストリームポート(DSP)335の代わりに、FPGA145は、エンドポイント(EP)1105及びルートポート(RP)1110(用語「ポート」は、「ルートポート」と交換可能に使用され得る)を含み得る。図3、5、7、及び9のアップストリームポート(USP)330及びダウンストリームポート(DSP)335は、スイッチとみなされる、つまり、それらは実効的に通過デバイス(pass-through devices)であるのに対して、エンドポイント(EP)1105及びルートポート(RP)1110は、PCIeの列挙を介して発見され得る通信のための終端点(termination points)である。
この事実は、エンドポイント(EP)1105及びルートポート(RP)1110が、図12を参照して以下に説明されるように、それら自身のPCIeの構成空間を含むことを意味する。しかし、エンドポイント(EP)1105及びルートポート(RP)1110は、通信のための終端点なので、プロセッサ110及びSSD120は、通信を相互に向けるよりも、各々のエンドポイント(EP)1105及びルートポート(RP)1110にそれらの通信を指示する。
エンドポイント1105は、2つのPF(1115及び1120)を含み得る(又は選択的に、1つのPF及び1つのVFを含み得る。つまり、重要なのは、エンドポイント1105が互いに区別され得る、2つの機能を含むということである)。プロセッサ110がエンドポイント1105にPCIeトランザクションを伝送するとき、プロセッサ110は、どのPFがアドレスされるかを特定できる。
前記した本発明の第3及び第4実施例の場合と同様に、エンドポイント1105は、PFを識別するPCIeトランザクションに含まれているタグによって、又はPCIeトランザクションと関連されたアドレスによって(再言すると、図12を参照して下記に説明される)、どのPFがアドレスされるかを識別できる。PF1115を識別するPCIeトランザクションは、SSD120を目的地とすると見なされ得、ルートポート1110を介してFPGA145によってSSD120に伝送され得る。PF1120を識別するPCIeトランザクションは、加速コマンドを含むものと見なされ得、APM-F(340)にルーティングされ得る。
ルートポート1110は、ダウンストリームフィルタ360を含み得る。ダウンストリームフィルタ360は、図3、5、7、9、及び11のダウンストリームフィルタ360と同様に動作する。つまり、唯一の重要な違いは、ダウンストリームフィルタが、ホストシステムメモリアドレスに基づいてフィルタリングするのではなく、下記にで図12を参照して説明されているように、FPGAメモリアドレスに基づいてフィルタリングする点である。ダウンストリームフィルタ360は、サイドバンドバス365、PCIe VDM、又は任意の他の所望のメカニズムを使用してSSD120によってダウンストリームFAR410を用いてプログラムされ得る。
FPGA145はまた、構成モニタ1125を含み得る。FPGA145は、SSD120を代替するのではなく単に追加の機能を提供する故に、そしてFPGA145がプロセッサ110とSSD120との間に挿入される故に、プロセッサ110がSSD120によって提供される機能を知り得るのは重要である。より具体的には、FPGA145は、SSD120のPCIe構成空間とマッチする性能を周知させなければならない。その目的を達成するために、構成モニタ1125は、SSD120のPCIe構成空間を複製し、それによりSSD120が提示するのと同じPCIe構成をプロセッサ110に提供できる。
図12は、本発明の第5実施形態に基づいて、図3のシステムでコマンドを加速するためのメモリ使用を示している。図12において、SSD120は、最早、プロセッサ110と直接通信していないので、ホストシステムのメモリアドレスのブロックを要求しない。代わりに、SSD120は、ルートポート1110のための構成空間を含むFPGAメモリアドレスマップ1210からFPGAメモリアドレスのブロック1205を要請する。FPGAメモリアドレスのブロック1205は、プロセッサ110とのNVMe通信のためのサブセット410、及びダウンストリームFAR420を包含できる。
FPGA145が無い場合に予想されるように、プロセッサ110がSSD120と通信できるメカニズムを提供するため、FPGA145は、プロセッサ110からホストシステムのメモリアドレスを要請できる。
FPGA145のSSD120によって要請されたように、ブロック1205を並行するために、FPGA145は、PF1115のために、少なくともブロック1205と同じ大きさのブロック1215を求め得る(従って、SSD120がプロセッサ110からブロック1215を要請したかのように見える)。ブロック1215でアドレスを使用するPCIeトランザクションが、ホストとSSD120との間の通信のためのものであるがFPGA145を通過していることを反映するために、ブロック1215は、図12で「ホスト-FPGA-SSD」と表示される。
FPGA145は、プロセッサ110が、加速コマンドについてAPM-F(340)と通信するためのメカニズムを提供しつつ、PF1120のためのブロック1220を要請できる。ブロック(1215及び1220)は、各々2つの分離されたBARにより識別され得る。本発明の他の実施例で、FPGA145とSSD120との間の通信を容易にするために、ダウンストリームFAR420としてブロック1205の一部分を使用可能である。
本発明の前述の実施例の場合と同様に、図11において、FPGA145は、プロセッサ110とSSD120との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、エンドポイント1105、PF(1115及び1120)、ルートポート1110及びダウンストリームフィルタ360である。前に示された本発明の実施例と同様に、PCIeトランザクションのフィルタリングと関連された構成要素は、FPGA145から除去され得る。
従って、本発明の第5実施例で、エンドポイント1105及びPF(1115と1120)は、第1ブリッジ構成要素に配置され得、一方、ルートポート1110及びダウンストリームフィルタ360は、第2ブリッジ構成要素に配置され得、各々は、図11の相異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得、(その場合、FPGA145は、他のソース(source)からの通信のために、それ自体のフィルタリングを処理する)、又は、PCIeトランザクションのソースに関係なく、単一のブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用され得る。
第6実施例
本発明の前述の第5実施例は、従来のPCIeトランザクション(プロセッサ110とSSD120との間の)から加速コマンド(SSD120とFPGA145との間の)を分離するために、依然としてダウンストリームフィルタ360に依存していた。ダウンストリームフィルタ360は、本発明の第6実施例におけるようにSSD120が第2エンドポイントを含む場合に除去され得る。
図13は、本発明の第6実施形態に基づいて、図1のFPGA145及び図1のSSD120の構成を示している。図13で、FPGA145は、図11の実施例で示された1つのルートポート1110ではなく、2つのルートポート(1110及び1305)を含む。ルートポート1110は、プロセッサ110から発生する従来のPCIeトランザクションに使用され得る。ルートポート1305は、SSD120とFPGA145との間で交換される加速コマンド及びデータのために使用され得る。
加速コマンドは、相異なるルートポート(1110及び1305)を使用しているプロセッサ110から発生する従来のPCIeトランザクションから自然に分離されるので、図3、5、7、9、及び11に存在したダウンストリームフィルタ360が必要ではない。この事実は、丁度、SSD120が図5、7及び9のアップストリームフィルタ(505及び715)をプログラミングする負担を免除される(relieved)ように、SSD120がFPGA360内のダウンストリームフィルタ360をプログラミングする負担を免除される、ことを意味する。
(何故なら、図11及び13におけるFPGA145は、関連されたPFに基づき、従来のPCIeトランザクションと加速コマンドとを峻別できるからである)。この利点に対するオフセットは、SSD120が、各々FPGA145のルートポート(1110及び1305)と通信するために2つのエンドポイント(305及び1310)を要することである。
SSD120は、本発明の第6実施例で、2つのエンドポイント(305及び1310)を含んでいるので、エンドポイント(305及び1310)の各々は、FPGA145から、それ自身のメモリアドレスブロックを要請できる。さらに、ルートポート(1110及び1305)の各々は、それ自身の構成空間を含んでいるので、SSD120のエンドポイント(305及び1310)は、相異なる構成空間からメモリアドレスのブロックを要請できる。図14は、このようなシナリオを示している。
図14は、図1のシステムで、コマンドを加速するためのメモリ使用を示している。図14でSSD120のエンドポイント305は、ルートポート1110のための構成空間を含むFPGAメモリアドレスマップ1(1210)からブロック1405を要請できる。しかし、従来のPCIeトランザクション(プロセッサ110とSSD120との間)と加速コマンド(FPGA145とSSD120との間)は、FPGA上の相異なるルートポート及びSSD120上の相異なるエンドポイントの使用により自然に分離されるが、SSD120は、ダウンストリームFARを含むのに十分な大きさのブロック1405を要請する必要がない。従って、ブロック1405は、FPGA145が無い場合の大きさがあれば十分である。つまり、プロセッサ110とSSD120との間のNVMe通信を支援するのに十分な大きさがあればよい。ブロック1405は、BARによって識別され得る。
SSD120のエンドポイント1310は、FPGAメモリアドレスマップ2(1410)から、それ自身のメモリアドレスブロックを要請できる。しかし、ルートポート1305及びエンドポイント1310は、本発明の第6実施例で加速コマンドを交換するために使用されるので、アドレスマップ1410の全体が、斯かるPCIeトランザクションのために使用され得る。つまり、エンドポイント1310がFPGAメモリアドレスマップ2(1410)のただの小さいブロックを要請する必要はない。
本発明の第5実施例でのように、PF1115は、プロセッサ110とSSD120との間で交換されるPCIeトランザクションを管理するために、ホストシステムメモリアドレスマップ140上のメモリアドレスブロック1215を要請できる。よって、メモリアドレスブロック1215は、少なくともブロック1405程大きいはずである。同様に、PF1120は、プロセッサ110とFPGA145との間で交換される加速コマンドを管理するために、ホストシステムメモリアドレスマップ140上のメモリアドレスブロック1220を要請できる。メモリアドレスブロック(1215及び1220)は、各々BARによって識別され得る。
本発明の前述の実施例と同様に、図13で、FPGA145は、プロセッサ110とSSD120との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、エンドポイント1105、 PF(1115及び1120)、ルートポート(1110、1305)である。前に示された本発明の実施例と同様に、PCIeトランザクションのフィルタリングと関連された構成は、FPGA145から除去され得る。
従って、本発明の第6実施例で、エンドポイント1105及びPF(1115と1120)は第1ブリッジ構成要素に配置され得、一方、ルートポート(1110と1305)は第2ブリッジ構成要素に配置され得、各々は、図13の相異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する。
選択的に、このようなブリッジ構成要素の中で単に一つだけが使用され得、(その場合、FPGA145は、他のソース(source)からの通信のために、それ自体のフィルタリングを処理する)、又は、PCIeトランザクションのソースに関係なく、単一のブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用され得る。
第7実施例
本発明の上述の第1~第6実施例では、FPGA145が、単一のアップストリームポート330(図5、7及び9)又は単一のエンドポイント1105(図11及び13)を使用するとして示された。しかし、FPGA145が、本発明の第6実施例におけるSSD120のように、多重のエンドポイントを包含していない理由はない。本発明の第7及び第8実施例は、FPGA145が多重のエンドポイントを使用して、どのように動作できるかを示している。
図15は、本発明の第7実施例に基づいて、図1のFPGA145と、図1のSSD120の構成を示している。本発明の第7実施例は、FPGA145が2つのエンドポイント(1105及び1505)を含むことを除いては、本発明の第6実施例と類似する。
SSD120のエンドポイント(305及び1310)が、従来のホストツーSSD PCIeトランザクション(host-to-SSD PCIe transactions)及びFPGAツーSSD加速コマンド(FPGA-to-SSD acceleration instructions)を区別するために使用されているように、FPGA145のエンドポイント(1105及び1505)は、従来のホストツーSSD PCIeトランザクション及びFPGAツーSSD加速コマンドを区別するために使用され得る。エンドポイント1105で受信されたPCIeトランザクションは、従来のPCIeトランザクションと見なされ得、SSD120に伝送される反面(ルートポート1110を介して)、エンドポイント1505で受信されたPCIeトランザクションは加速コマンドと見なされ得、処理のためにAPM-F(340)に伝達され得る。
本発明の第7実施例に基づいて、図16は、図1のシステムで、コマンドを加速するためのメモリ使用を示している。全ての意図及び目的に対して、本発明の第7実施例によるメモリの使用は、第6実施形態によるメモリ使用と同じである。FPGA145のルートポート(1110及び1305)は、各々それ自身の構成空間を提供し、SSD120のエンドポイント305は、BARによって識別されるFPGAアドレスマップ1(1210)からメモリアドレスのブロック1405を要請できる(本発明の第6実施例でのように、SSD120のエンドポイント1310は、FPGAアドレスマップ2(1410)からメモリアドレスのブロック1405を要請でき、SSD120のエンドポイント1310は、SSDツーFPGA通信のためのFPGAアドレスマップ2(1410)の全体を使用できる)。エンドポイント(1105及び1505)は、プロセッサ110とSSD120との間で交換されるPCIeトランザクションを管理するために、ホストシステムのメモリアドレスのブロック(1215及び1220)を要請できる。よって、ブロック1215は、少なくともブロック1405と同じ大きさを有し得る。ブロック(1215及び1220)は、各々BARによって識別され得る。
図15において、本発明の前述の実施例でのように、FPGA145は、プロセッサ110とSSD120との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、エンドポイント(1105、1505)、及びルートポート(1110、1305)である。前述の本発明の実施例でのように、PCIeトランザクションのフィルタリングと関連された構成は、FPGA145から除去され得る。
従って、本発明の第7実施例で、エンドポイント(1105、1505)は第1ブリッジ構成要素に配置され得、一方、ルートポート(1110、1305)は第2ブリッジ構成要素に配置され得、各々は、図15の相異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得、(その場合、FPGA145は、他のソースからの通信のために、それ自体のフィルタリングを処理する)、又は、PCIeトランザクションのソースに関係なく、単一のブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用され得る。
第8実施例
図17は、本発明の第8実施例に基づいて、図1のFPGA145と、図1のSSD120の構成を示している。本発明の第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実施例に基づいて、図18は、図1のシステムで、コマンドを加速するためのメモリ使用を示している。本発明の第8実施例によるメモリの使用は、第5実施例によるメモリ使用と同じである。ルートポート1110がFPGA145の唯一のルートポートである場合、SSD120のエンドポイント305は、ダウンストリームFAR420を包含できるFPGAメモリアドレスマップ1210からメモリアドレスブロック1205を要請できる。BARによって識別されるエンドポイント1105が、少なくともメモリアドレスブロック1205と同じ大きさのメモリアドレスブロック1215を要求しつつ、FPGA145のエンドポイント(1105、1505)は、ホストシステムのメモリアドレスマップ140からメモリアドレスブロック(1215、1220)を要求できる。エンドポイント(1105、1505)は、プロセッサ110とSSD120との間で交換されるPCIeトランザクションを管理するために、ホストシステムのメモリアドレスのブロック(1215及び1220)を要請できる。メモリアドレスブロック1215は、少なくともメモリアドレスブロック1405と同一の大きさを有し得る。メモリアドレスブロック(1215、1220)は、各々2つの分離されたBARにより識別され得る。本発明の他の実施例で、FPGA145とSSD120との間の通信を容易にするために、ダウンストリームFAR420としてブメモリアドレスロック1220の一部分を使用可能である。
図17において、本発明の前述の実施例でのように、FPGA145は、プロセッサ110とSSD120との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、エンドポイント(1105、1505)、ルートポート1110、及びダウンストリームフィルタ360である。前述の本発明の実施例でのように、PCIeトランザクションのフィルタリングと関連された構成は、FPGA145から除去され得る。
従って、本発明の第8実施例で、エンドポイント(1105、1505)は第1ブリッジ構成要素に配置され得、一方、ルートポート1110及びダウンストリームフィルタ360は第2ブリッジ構成要素に配置され得、各々は、図17の相異なる構成要素を有するPCIeトランザクションのフィルタリングを処理する。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得(その場合、FPGA145は、他のソースからの通信のために、それ自体のフィルタリングを処理する)、又は、PCIeトランザクションのソースに関係なく、単一のブリッジ構成要素がFPGA145に対する全てのフィルタリングを処理するために使用され得る。
本発明の様々な実施例を参照して、前述したように、FPGA145のアップストリームインタフェース及び/又はダウンストリームインタフェースの一部であると記述されるフィルタリング機能は、FPGA145から分離され得、他の構成によって処理され得る。本発明の実施例に応じて、図19は、図1の加速モジュール145を代えてフィルタリング機能を処理できるブリッジ構成要素を示している。
図19において、2つのブリッジ構成要素(1905及び1910)が示されている。ブリッジ構成要素1905は、プロセッサ110から受信されたPCIeトランザクションのフィルタリングを処理できる反面、ブリッジ構成要素1910は、SSD120から受信されたPCIeトランザクションのフィルタリングを処理できる。ブリッジ構成要素1905は、PCIeトランザクションが加速コマンドを包含しているか否かに応じて、PCIeトランザクションをFPGA145又はSSD120の何れか一つに伝送できる。同様に、ブリッジ構成要素1910は、PCIeトランザクションが加速コマンドを包含しているか否かに応じて、PCIeトランザクションをFPGA145又はプロセッサ110の何れか一つに伝送できる。
FPGA145のアップストリーム及びダウンストリームインタフェースの一部として図示されたのと類似の具現であるので、ブリッジ構成要素(1905及び1910)の特定の具現は、図19に示されない。
本発明の幾つかの実施例で、ブリッジ構成要素(1905及び1910)の両方が使用され得る。本発明の他の実施例で、1つのブリッジ構成要素(1905又は1910)のみ使用され、他のブリッジ構成要素の機能は、潜在的にFPGA145とともに残り得る。他の実施例で、ブリッジ構成要素(1905及び1910)の両方は、分離された構成ではない、単一の構成に含まれ得る。
本発明の様々な実施例が説明されたので、プロセッサ110、FPGA145、及びSSD120の間のデータの流れが説明され得る。本明細書の残りの部分で、全てのフィルタリング機能は、FPGA145に帰属するが、図19のブリッジ構成要素(1905及び/又は1910)にフィルタリングが移動され得る時期と方法は明白でならなければならない。本発明の実施例に応じて、図20及び図21は、図1のプロセッサ110、図1のFPGA145、及び図1のSSD120の間の通信を示している。図20で、本発明の第1実施例(そして多分(possibly)、本発明の他の実施例)によるデータの流れが示されている。プロセッサ110は、PCIeトランザクション2005をSSD120に伝送できる(FPGAを介して)。その後に、APM-S(315)は、SSD120がFPGA145に伝送できるPCIeトランザクション2020に含まれ得る加速コマンド2015を生成できる。なお、図20で示されるように、FPGA145及びSSD120は、加速データを交換できる。
加速コマンド201)の完了時に、FPGA145は、プロセッサ110に結果2035を伝達できるSSD120に結果2030を送り返し得る。選択的に、FPGA145は、SSD120から来る結果2035をシミュレーションしながら、その結果2040をプロセッサ110に直接伝送できる。
対照的に、図21で(本発明の第2乃至第8実施例に適用可能な)、プロセッサ110は、加速コマンド2045をPCIeトランザクション2005としてFPGA145に直接伝送できる。FPGA145及びSSD120は、図21で示されたように、加速データを交換できる。最後に、FPGA145は、結果2040を再びプロセッサ110に送り得る。
図22は、本発明の実施例に基づいてFPGA145がPCIeトランザクションを処理するための例示的な手順のフローチャートを示す。図22は、高いレベルのビュー(view)を提供する。よって、以後の図面は、FPGA145の動作に対しより詳細な例示的なフローチャートを提供する。図22で、ブロック2105において、FPGA145は、デバイスからのPCIeトランザクションを受信できる。斯かるPCIeトランザクションは、図20~図21のPCIeトランザクション(2015又は2045)の何れか1つであり得るし、デバイスは、プロセッサ110又はSSD120であり得る。ブロック2110で、FPGA145は、PCIeトランザクションが加速コマンドを包含しているか否かを判断できる。ブロック2115で、FPGA145は、PCIeトランザクションが加速コマンドを包含するかを知るために検査できる。もしそうなら、ブロック2120で加速コマンドは、APM-F(340)によって処理され得る。そうでない場合には、ブロック2125で、PCIeトランザクションは、他のデバイスに伝達され得る(PCIeトランザクションがプロセッサ110から受信された場合、PCIeトランザクションはSSD120に伝達され得、その逆も可能である)。APM-F(340)による加速コマンドの処理は、加速コマンドによって処理されるアプリケーションデータを受信するためにSSD120と通信することを包含できることに注目する。
本発明の実施例に基づいて、図23~図25は、FPGA145がPCIeトランザクションを処理する際の、より詳細な例示的な手順のフローチャートを示す。図23において、ブロック2203で、FPGA145は、SSD120からのダウンストリームFAR420を受信できる。ブロック2206で、FPGA145は、ダウンストリームFAR420をダウンストリームフィルタ360と関連付け得る。
SSD120がサイドバンドバス365を介してダウンストリームFAR420をダウンストリームフィルタ360でプログラミングする場合、この関係は、自動的に発生できるか、又は、この関係は、FPGA145による積極的ステップを必要とし得る(例として、SSD120がダウンストリームFAR420を含むFPGA145にPCIe VDMを伝送する場合)。破線2209で示されたように、本発明の幾つかの実施例で、ブロック(2203及び2206)は、スキップされることに注目する。本発明の幾つかの実施例で、ダウンストリームFAR420は、FPGA145それ自体によって提供され得る。
ブロック2212で、FPGA145は、SSD120からアップストリームFAR605を受信でき、ブロック2215で、FPGA145は、アップストリームポート330と、アップストリームFAR605を関連付け得る。SSD120がサイドバンドバス365を介してアップストリームFAR605をアップストリームフィルタ505でプログラミングする場合、この関係は、自動的に発生できたり、この関係は、FPGA145によって活性ステップを要求したりできる(例として、SSD120がアップストリームFAR605を含むFPGA145にPCIe VDMを伝送する場合)。本発明の幾つかの実施例で、アップストリームFAR605は、FPGA145それ自体によって提供され得る。
別の方法として、ブロック2218で、FPGA145は、FPGA145を露出するために使用されるPF又はVFの識別子をSSD120から受信でき、ブロック2221のFPGA145は、 PF/VFの識別子をアップストリームフィルタ330と関連付け得る。言い換えれば、SSD120がサイドバンドバス365を介してPF/VFの識別子をアップストリームフィルタ505でプログラミングする場合は、この関係は、自動的に発生できるか、又は、FPGA145によって活性ステップを要求できる(例として、SSD120がPF/VFの識別子を含むFPGA145にPCIe VDMを伝送する場合)。
破線2224に示されたように、本発明の幾つかの実施例で、ブロック(2212、2215、2218、及び2221)は、スキップされ得る。
ブロック2227で、構成モニタ1125は、SSD120のエンドポイント305の構成を判断でき、ブロック2230で構成モジュール1125は、FPGA145のエンドポイント1105でその構成を複製でき、そうすることでSSD120と同じ機能をプロセッサ110に提供できる。本発明の幾つかの実施例で、ブロック(2212、2215、2218、及び2221)は、破線2233で示されたようにスキップ(skip)され得る。
一旦FPGA145が適切に構成されると、ブロック2236(図24)でFPGA145は、プロセッサ110から図21のPCIeトランザクション2005を受信できる(本発明の実施例に基づいて、アップストリームポート330又はエンドポイント1105を介して)。ブロック2239で、FPGA145は、図21のPCIeトランザクション2005が図21の加速コマンド2045を包含しているか否かを判断できる。もしそうなら、ブロック2242でも22Bの加速コマンド2045を処理でき、ブロック2245でAPM-F(340)は、プロセッサ110に図21の結果2040を送信できる。そうでなければ、図21のPCIeトランザクション2005が図21の加速コマンド2045を包含していない場合、ブロック2248で、FPGA145は、図21のPCIeトランザクション2005をSSD120に伝送できる(本発明の実施例に基づいて、ダウンストリームポート335又はルートポート1110を介して)。
ブロック2251(図24)において、FPGA145は、図20のPCIeトランザクション2020を受信できる(本発明の実施例に依存して決まるが、ダウンストリームポート335又はルートポート1110を介して)。ブロック2254で、FPGA145は、図20のPCIeトランザクション2020が図20の加速コマンド2015を包含しているか否かを判断できる。
図20のPCIeトランザクション2020が図20の加速コマンド2015を含む場合、ブロック2257で、APM-F(340)は、図20の加速コマンド2015を処理でき、ブロック2260で、APM-F(340)は、図20の結果2040をSSD120に伝送できる。そうでなければ、図20のPCIeトランザクション2020が加速コマンド2015を含んでいない場合、ブロック2263で、FPGA145は、図20のPCIeトランザクション202をプロセッサ110に伝送できる(発明の実施例に依存するが、アップストリームポート330又はエンドポイント1105を介して)。
本発明の実施例に基づいて、図26~図27は、プロセッサ110から来る図21のPCIeトランザクション2005が図21の加速コマンド2045を含むか否かを、FPGA145が判断する際の例示的な手順のフローチャートを示す。図26~図27は、個別的に、又は集合的に使用され得る(本発明の実施例に依存して決まる)3つの可能なテストを示している。一つ以上のテストを使用する本発明の実施例で、何れかの個々のテストが満足される場合、図21のPCIeトランザクション2005は、図21の加速コマンド2045を含むものと判断され得る。
図26において、ブロック2305で、FPGA145は、図21のPCIeトランザクション2005に関連されたアドレスがアップストリームFAR605でのアドレスを含んでいるか否かを判断できる。ブロック2315で、図21のPCIeトランザクション2005がアップストリームフィルタ715と関連されたるPF又はVFの識別子を含むと、FPGA145は、判断できる。ブロック2315で、FPGA145は、エンドポイント1505のような加速コマンド専用のポートで図21のPCIeトランザクション2005が受信される場合、FPGA145は、判断できる。
これらのテストの何れかの結果が、図21のPCIeトランザクション2005が図21の加速コマンド2045を含むことを示すと、ブロック2320(図27)において、FPGA145は、図21のPCIeトランザクション2005が図21の加速コマンド2045を含むと知る。そうでなければ、ブロック2320のFPGA145は、図21のPCIeトランザクション2005が図21の加速コマンド2045を含まないと知る。
本発明の実施例に基づいて、図28は、図20のPCIeトランザクション2020がSSD120から来る図20の加速コマンド2015を含むか否かを、FPGA145が判断する際の例示的な手順のフローチャートを示す。図28は、個別的に又は集合的に使用され得る(本発明の実施例に依存して決まる)2つの可能なテストを示している。一つ以上のテストを使用する本発明の実施例で、何れかの個別のテストが満足される場合、図20のPCIeトランザクション2020は、図20の加速コマンド2015を含むものと判断され得る。
図28において、ブロック2405で、FPGA145は、図20のPCIeトランザクション2020に関連されたアドレスがダウンストリームFAR420内のアドレスを含んでいるか否かを判断できる。ブロック2410において、ループポート1305のような加速コマンド専用のポートで図20のPCIeトランザクション2020が受信される場合、FPGA145は、判断できる。これらのテストの結果の何れかが、図20のPCIeトランザクション2020が図20の加速コマンド2015を含むことを示すと、ブロック2415でFPGA145は、図20のPCIeトランザクション2020が図20の加速コマンド2015を含むと知る。従って、そうでなければ、ブロック2420においてFPGA145は、図20のPCIeトランザクション2020が図20の加速コマンド2015を包含しないと知る。
本発明の実施例に基づいて、図29は、図1のプロセッサ110から来るPCIeトランザクション2020が加速コマンドを含むか否かを、図19の第1ブリッジ構成要素1905が判断する際の例示的な手順のフローチャートを示す。図29において、ブロック2505で、第1ブリッジ構成要素1905は、図1のプロセッサ110からPCIeトランザクションを受信できる。ブロック2510において、第1ブリッジ構成要素1905は、PCIeトランザクションが加速コマンドであるか否かを判断できる。もしそうなら、ブロック2515において、第1ブリッジ構成要素1905は、PCIeトランザクション/加速コマンドを図1のFPGA145に伝送できる。しかし、そうでなければ、ブロック2520において、第1ブリッジ構成要素1905は、PCIeトランザクションを図1のSSD120に伝達できる。
本発明の実施例に基づいて、図30は、図1のストレージデバイス120から来るPCIeトランザクションが加速コマンドを含むか否かを、図19の第2ブリッジ構成要素1910が判断する際の例示的な手順のフローチャートを示す。図30において、ブロック2605で、第2ブリッジ構成要素1905は、図1のSSD120からPCIeトランザクションを受信できる。ブロック2610において、第2ブリッジ構成要素1905は、PCIeトランザクションが加速コマンドであるか否かを判断できる。もしそうなら、ブロック2615において、第2ブリッジ構成要素1905は、PCIeトランザクション/加速コマンドを図1のFPGA145に伝送できる。しかし、そうでなければ、ブロック2620において、第2ブリッジ構成要素1905は、PCIeトランザクションを図1のプロセッサ110に伝達できる。
本発明の実施例に基づいて、図31~図33は、SSD120がPCIeトランザクションを処理する際の例示的な手順のフローチャートを示す。図31のブロック2705においてSSD120は、メモリアドレスのブロックを要請できる。SSD120は、本発明の第1乃至第4の実施例でのように、ホストシステムメモリから又は本発明の第5乃至第8の実施例でのようにFPGA145のルートポートの構成空間からメモリアドレスのブロックを要請できる。サイドバンドバス365、PCIe VDM又は任意の他の所望のメカニズムを使用して、ブロック2710においてSSD120は、ダウンストリームFAR420として使用するためのメモリアドレスのブロックのサブセットを選択でき、ブロック2715においてSSD120は、ダウンストリームフィルタ360を、ダウンストリームFAR420を用いてプログラミングできる。本発明の幾つかの実施例で、ブロック2705乃至2715は、破線2720に示されたようにスキップされ得ることに注目する(破線2720は、また、図32に図示された幾つかのブロックもスキップする)。
図32において、ブロック2725でSSD120は、サイドバンドバス365、PCIe VDM又は任意の他の所望のメカニズムを使用して、アップストリームFAR605のように使用するためのメモリアドレスのブロックのサブセットを選択でき、ブロック2730でのSSD120は、ダウンストリームフィルタ360を、ダウンストリームFAR420を用いてプログラミングできる。選択的に、ブロック2735で、SSD120は、PF705を使用してそれ自身の能力を露出できる。その後にブロック2740でSSD120は、サイドバンドバス365、PCIe VDM又は任意の他の所望のメカニズムを使用して、FPGA145を露出するためにPF905又はVF710を使用でき、ブロック2745でSSD120は、ダウンストリームフィルタ360を、PF905又はVF710の識別子を用いてプログラムできる。本発明の幾つかの実施例で、ブロック(2725乃至2745)は、破線2750で示されたようにスキップされうることに注目する。
ブロック2755において、SSD120は、FPGA145からPCIeトランザクションを受信できる。このPCIeトランザクションは、図20のPCIeトランザクション2005、又は(プロセッサ110からFPGA145によって伝達される(forwarded))図20及び図21のPCIeトランザクション2025であり得る。PCIeトランザクションのソースに関係なく、ブロック2760(図33)において、HIL310は、PCIeトランザクションが加速コマンドを含むかを判断できる。
もしそうなら、ブロック2765で、HIL310は、PCIeトランザクション(又は圧縮解除された加速コマンド)を処理するためにAPM-S(315)に伝送できる。APM-S(315)は、加速コマンドへの応答を生成でき、これは、図20の加速コマンド2025、又は(PCIeトランザクションがプロセッサ110から由来された場合)加速データ2025であり得る(PCIeトランザクションがFPGA145のAPM-F(340)から由来した場合)。何れの場合でも、ブロック2770で、APM-S(315)は、応答をFPGA145に伝送できる。
一方、PCIeトランザクションが加速コマンドではなければ、ブロック2775でのSSD120は、PCIeトランザクションが図20の結果2030であるかを判断できる。もしそうなら、ブロック2780で、SSD120は、図20の結果2035をプロセッサ110に伝送できる(SSD120及びFPGA145のエンドポイント305を介して)。PCIeトランザクションが図20の結果2030ではなければ、ブロック2785でのSSD120は、通常の場合のようにSSD120に格納されたデータに対してPCIeトランザクションを処理できる。
図34~図35は、本発明の実施例に基づいてFPGA145から出てくるPCIeトランザクションが加速コマンドを包含しているか否かを、SSD120が判断するための例示的な手順のフローチャートを示す。
本発明の実施例に基づいて、図34~図35は、個別的に又は集合的に使用され得る3つの可能なテストを示している。一つ以上のテストを使用する本発明の実施例で、何れかの個別テストが満足される場合、図20のPCIeトランザクションは加速コマンド2015を含むものと判断され得る。図34において、ブロック2805で、SSD120は、PCIeトランザクション2020がプロセッサ110からの特定のコマンド(SSD120がFPGA145に加速コマンドを開始しなければならないことを示す)を含んでいるか否かを判断できる。
ブロック2810で、SSD120は、PCIeトランザクションがAPM-F(340)から由来するか否かを判断できる。これは、APM-F(340)が図20及び図21の加速データ2025を要請している場合か、又は、APM-F(340)が、図20の結果2030をSSD120に伝送している場合に発生し得る。ブロック2810のテストは、任意の所望の方式で遂行され得る。つまり、例として、PCIeトランザクションは、PCIeトランザクションが加速コマンドであることを示すタグを包含するか、又は、PCIeトランザクションがダウンストリーム内のアドレスと関連付けられる方式で遂行され得る。
ブロック2815で、SSD120は、PCIeトランザクションがエンドポイント1310などの加速コマンド専用のポートで受信されるかを判断できる。これらのテストの結果の中の何れかがPCIeトランザクションに加速コマンドが含まれていることを示すと、ブロック2820(図35)で、SSD120は、PCIeトランザクションが加速コマンドを包含していると知る。そうでない場合、ブロック2825で、SSD120は、PCIeトランザクションが加速コマンドを含まないと知る。
図22乃至図35において、本発明の幾つかの実施例が示される。しかし、当業者は、ブロックの順序を変更し、ブロックを省略し、又は図面に図示されていない連結を包含することにより、本発明の他の実施例も可能であることを認識するはずである。加えて、特定の動作が特定の構成によって実行されるものとして説明されるが、本発明の実施例は、説明された動作を遂行する他の構成を支援できる。フローチャートのこのような全ての変形は、明示的に記述されているか否かに係らず本発明の実施例であるのでと見做される。
本発明の実施例は、従来技術に比べて技術的な利点を提供する。図1の機械105へ、図1の加速モジュール145を導入することにより、図1のプロセッサ110は、図1の加速モジュール145によって遂行可能な作業をオフロード(offload)できる。斯かるコマンドは、典型的には廃棄され得る多くの量のデータを処理することを含んでいるので、図1のメモリ140の幾つかの空間を明け渡す必要性を回避するだけでなく、図1の加速モジュール145に作業をオフロードすることは、図1のストレージデバイス120から、図1のメモリ140にデータをローディングするのに必要な遅延を避ける。
なお、本発明の多様な実施例は、相異なるタイプの図1のストレージデバイス120)の使用を支援する。図1の加速モジュール145を露出するために追加のPF及び/又はVFを支援するストレージデバイスだけでなく、単一ポート及びデュアルポートストレージデバイスの全てが使用され得る。
本発明の多様な実施例は、異なる性能を提供するプロセッサを使用することを追加でサポートする。図1の機械105のOSがVFを支援すれば、VFが図1の加速モジュール145を露出するのに使用され得る。そうでなければ、PFが使用され得る。図1のプロセッサ110は、図1の加速モジュール145と直接通信でき、そのような通信を支援する発明の実施例が使用され得る。そうでなければ、図1のプロセッサ110は、図1のストレージデバイス120に、全ての加速コマンドを送信でき、図1の加速モジュール145に対して加速コマンドを遂行するように要請することを、図1のストレージデバイス120に任しし得る。
下の説明は、本発明の技術的思想の幾つかの側面が具現される適切な機械又は複数の機械の簡単で一般的な説明を提供しようとする。機械又は複数の機械は、少なくともその一部は、他の機械から受信される指示、バーチャルリアリティ(VR)環境との相互作用、生体フィードバック、又は他の入力信号だけではなく、キーボード、マウスなどの通常の入力デバイスからの入力により制御され得る。ここで使用されるように、「機械(マシン)」の用語は、単一のマシン、仮想マシン、複数の機械、複数の仮想マシン、又は協同して作動するデバイスと通信するように結合されたシステムを広く含むものと意図される。例示的な機械は、例として、自動車、電車、タクシーなどのような個人用や公共交通などの輸送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルドデバイス、携帯電話、タブレットなどのようなコンピューティングデバイスを含み得る。
単数又は複数の機械は、プログラム可能な又はプログラム不可能な論理デバイス、アレイ、ASIC(Application Specific Integrated Circuit)、エンベデッドコンピュータ、スマートカードのようなエンベデッドコントローラを含み得る。単数又は複数の機械は、ネットワークインタフェース、モデム、又は他の通信結合を介して一つ又はそれより多くのリモート機械(マシン)への一つ又はそれより多くの連結を活用できる。機械(マシン)は、イントラネット、インタネット、LAN(local area networks)、WAN(wide area networks)などの物理的及び/又は論理的ネットワークの手段により、互いに連結され得る。この分野における熟練した者は、ネットワーク通信が、多様な有線及び/又は無線の近距離又は遠距離キャリア、及び無線周波数(RF)、衛星、マイクロウェーブ、IEEE 802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含むプロトコルを活用することを理解するだろう。
本発明の技術的思想の実施例は、機械によってアクセスされる際に機械が作業を遂行したり、抽象データ型又は低レベルのハードウェアコンテキストを定義することを誘発する機能、プロシージャ、データ構造(structures)、アプリケーションなどを含む関連されたデータを参照したり又は協力したりして説明され得る。関連されたデータは、例えば、RAM、ROMなどのような揮発性及び/又は不揮発性メモリ、他のストレージデバイス、ハードドライブ、フロッピーディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生体ストレージなどを含む、関連されたストレージデバイスに格納され得る。関連されたデータは、物理的及び/又は論理ネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形態で伝達され、圧縮された又は暗号化されたフォーマットで使用され得る。関連されたデータは、分散環境で使用され得、機械アクセスに対してローカル及び/又はリモートで格納され得る。
本発明の技術的思想の実施例は、一つ又はそれより多くのプロセッサによって実行可能であり、ここで説明されたように、本発明の技術的思想のエレメントを行うようにするコマンドを含んで実在する非一時的機械読み出し媒体を包含できる。
前で説明された方法の多様な動作は、多様なハードウェア及び/又はソフトウェア構成、回路、及び/又は複数のモジュールのような動作を遂行できる任意の適切な手段によって遂行され得る。ソフトウェアは、論理的機能を具現するための実行可能なコマンドの順序付けられたリストを包含でき、単一若しくは多重のコアプロセッサ、プロセッサ含みシステムのようなデバイス(device)、コマンド実行システム、又は機構(apparatus)と関連した若しくはこれらによる使用のための任意の「プロセッサ可読媒体」で具現され得る。
本明細書に開示された実施例に関連して説明された方法、アルゴリズム及び機能のブロック、又はステップは、ハードウェア、プロセッサによって実行中のソフトウェアモジュール、又はそれらの組み合わせで直接具現され得る。ソフトウェアで具現される場合、機能は実在し、非一時的コンピュータ可読媒体上に格納されたり、1つ以上のコマンド又はコードとして伝送されたりできる。ソフトウェアモジュールは、RAM(random access memory)、フラッシュメモリ、ROM(Read Only Memory)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、レジスタ、ハードディスク、リムーバブルディスク、CD ROM、又はこの技術分野において知られている任意の他の形態のストレージ媒体であり得る。
図示された実施例を参照して説明された本発明の技術的思想の原則を有していると、図示された実施例は、このような原則から逸脱せずに、配列及び細部事項で修正され得、必要な任意の方法で組み合わせられることが理解されるだろう。前の説明が具体的な実施例に集中したが、他の構成もまた考慮される。具体的に、「本発明の技術的思想の実施例による」などの表現乃至類似の表現がここで使用されているけれども、このようなフレーズは、一般的に実施例の可能性を参照するだけであって、本発明の技術的思想を具体的な実施例の構成に限定することを意図しない。ここで使用されるように、このような用語は、他の実施例への組み合わせ可能な同一又は相異なる実施例を参照できる。
前に説明した実施例は、本発明の技術的思想を、それらに限定するものと解釈されない。少ない実施例だけを説明したが、この分野における熟練した者は、本記載の新規な説明及び長所から実質的に逸脱せずに、このような実施例に多くの修正が可能であることを十分に理解するだろう。従って、このような全ての修正は、請求項において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図される。
本発明の実施例は制限なしに次の説明へ拡張され得る。
説明1。本発明の実施例は、システムを含む。システムは、
アプリケーションを実行するプロセッサと、
前記プロセッサ上で実行中の前記アプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するためのアップストリームインタフェースと、
ストレージデバイスと通信するためのダウンストリームインタフェースと、
ハードウェアを使用して具現されて加速コマンドを実行するための加速プラットフォームマネージャ(APM-F)を含む加速モジュールと、を包含し、
前記ストレージデバイスは、
前記加速モジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
前記アプリケーションに対するアプリケーションデータを格納するためのストアと、
前記加速コマンドを実行するのに前記加速プラットフォームマネージャ(APM-F)を補助するためのストレージデバイスの加速プラットフォームマネージャ(APM-S)と、をさらに包含し、
前記プロセッサ、前記加速モジュール及び前記ストレージデバイスは、PCIe(Peripheral Component Interconnect Exchange)バスを介して通信し、
前記加速モジュールは、前記アプリケーションデータを前記メモリにローディングすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
説明2。説明1によれば、本発明の実施例は、システムを含む。説明1において、
前記プロセッサと前記加速モジュールとの間の通信を連結(bridging)し、前記アップストリームインタフェースを含む第1ブリッジ構成要素と、及び
前記加速モジュールと前記ストレージデバイスとの間の通信を連結し、前記ダウンストリームインタフェースを含む第2ブリッジ構成要素と、をさらに包含する。
説明3。説明1によれば、本発明の実施例は、システムを含む。説明1において、
前記加速モジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記加速モジュールは、前記アップストリームインタフェース及び前記ダウンストリームインタフェースを包含し、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
説明4。説明3によれば、本発明の実施例は、システムを含む。説明3において、前記APM-F及び前記APM-Sは、前記加速コマンドとともに使用される前記アプリケーションデータに関する、前記ダウンストリームインタフェース及び前記SSDの前記エンドポイントを使用して通信する。
説明5。説明3によれば、本発明の実施例は、システムを含む。説明3において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明6。説明3によれば、本発明の実施例は、システムを含む。説明3において、前記プロセッサは、非揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)を含むPCIeトランザクションをSSDに伝送する。
説明7。説明3によれば、本発明の実施例は、システムを含む。システムにおいて、前記FPGAは、
加速エンジンと、
前記加速エンジンに前記加速コマンドをスケジューリングするランタイムスケジューラ(run-time scheduler)と、をさらに含む。
説明8。説明3によれば、本発明の実施例は、システムを含む。説明3において、前記SSDは、FPGAを含む。
説明9。説明3によれば、本発明の実施例は、システムを含む。説明3において、
前記アップストリームインタフェースは、FPGAのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するFPGAのルートポートを包含し、
前記FPGAは、第1 PF、第2 PF及び前記FPGAルートポートと関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記SSDから受信された第1加速コマンドをインタセプトするように動作し、前記APM-Fにダウンストリームフィルタのアドレス範囲(FAR)と関連される前記第1加速コマンドを伝達するように動作し、
前記FPGAは、前記第1 PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2 PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、前記プロセッサから受信された第1 PCIeトランザクションを、前記SSDに伝達するように動作し、前記プロセッサから受信された第2加速コマンドを前記APM-Fに伝達するように動作し、
前記第1 PCIeトランザクションは、前記第1 PFの第1識別子と関連され、
前記第2加速コマンドは、前記第2 PFの第2識別子と関連される。
説明10。説明9によると、本発明の実施例は、システムを含む。説明9において、前記加速コマンドは、前記APM-Sによって生成される。
説明11。説明10によると、本発明の実施例は、システムを含む。説明10において、前記SSDは、前記プロセッサから受信された前記加速コマンドを含む、特定のコマンドをインタセプトし、前記加速コマンドを生成するために、前記APM-Sをトリガーするために、前記特定のコマンドを前記APM-Sに伝達するホストインタフェースロジック(HIL)と、をさらに含む。
説明12。説明11によると、本発明の実施例は、システムを含む。説明10において、前記特定のコマンドは、前記のプロセッサ上で実行中の加速サービスマネージャ(ASM)から由来する。
説明13。説明9によると、本発明の実施例は、システムを含む。説明9において、
前記SSDは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
説明14。説明13によると、本発明の実施例は、システムを含む。説明13において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明15.説明14によると、本発明の実施例は、システムを含む。説明14において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためにサイドバンドバスを使用するように動作する。
説明16.説明15によると、本発明の実施例は、システムを含む。説明15において、前記サイドバンドバスはI2C(Inter-Integrated Circuit)バス及びSMBus(System Management Bus)を含むセットから得られる。
説明17。説明14によると、本発明の実施例は、システムを含む。説明14において、前記コントローラは、PCIe VDM(Vendor Defined Message)を使用して、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明18。説明9によると、本発明の実施例は、システムを含む。説明9において、前記APM-Fは、前記のダウンストリームポート及び前記SSDのエンドポイントを介して前記APM-Sに結果を送信するように動作し、
前記コントローラは、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
説明19。説明9によると、本発明の実施例は、システムを含む。説明9において、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
説明20。説明9によると、本発明の実施例は、システムを含む。説明9において、前記FPGAは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、前記アップストリームフィルタは、前記プロセッサから受信された第2加速コマンドをインタセプトするように動作し、前記アップストリームFARと関連されている前記第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記FPGAはアップストリームポートで前記プロセッサから受信されたアップストリームFARと関連されていない第3PCIeトランザクションを、前記SSDに伝達するように動作する。
説明21。説明20によると、本発明の実施例は、システムを含む。説明20において、前記第2加速コマンドは、前記プロセッサ上で実行中のASMから由来する。
説明22。説明20によると、本発明の実施例は、システムを含む。説明20において、前記SSDは、前記プロセッサからホストシステムアドレスのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセット及びアップストリームFARとして、前記ホストシステムアドレスの前記ブロックの第2サブセットを選択するように動作する。
説明23。説明22によると、本発明の実施例は、システムを含む。説明22において、ホストシステムのアドレスのブロックが、前記プロセッサ上で実行中のASMによってアクセス可能な特定のレジスタを包含し、前記特定のレジスタは、前記アップストリームFARを識別する。
説明24。説明22によると、本発明の実施例は、システムを含む。説明22において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARで、前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明25。説明24によると、本発明の実施例は、システムを含む。説明24において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARで、前記アップストリームフィルタを前記アップストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
説明26。説明25によると、本発明の実施例は、システムを含む。説明25において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明27。説明24によると、本発明の実施例は、システムを含む。説明24において、前記コントローラは、PCIe VDMを使用して前記ダウンストリームフィルタを前記ダウンストリームFARで、前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明28。説明20によると、本発明の実施例は、システムが含む。説明20において、
前記APM-Fは、前記ダウンストリームポート及び前記SSDの前記エンドポイントを介して前記APM-Sに結果を伝送するように動作し、
前記コントローラは、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
説明29。説明20によると、本発明の実施例は、システムを含む。説明20において、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
説明30.説明9によると、本発明の実施例は、システムが含む。説明9において、
前記SSDは物理機能(PF)及び仮想機能(VF)を包含し、前記PFは前記SSDを露出するために動作し、前記VFは前記FPGAを露出するために動作し、
前記FPGAは、前記アップストリームポートと関連された前記アップストリームフィルタと、をさらに包含し、前記アップストリームフィルタは、前記プロセッサから受信された第2加速コマンドをインタセプトし、前記第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされない第3PCIeトランザクションを、前記SSDに伝達するように動作する
説明31。説明30によると、本発明の実施例は、システムを含む。説明30において、前記第2加速コマンドは、前記プロセッサ上で実行中のASMから由来する。
説明32。説明30によると、本発明の実施例は、システムを含む。説明30において、
前記PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
説明33。説明32によると、本発明の実施例は、システムを含む。説明32において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明34。説明33によると、本発明の実施例は、システムを含む。説明33において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
説明35。説明34によると、本発明の実施例は、システムを含む。説明34において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明36。説明33によると、本発明の実施例は、システムを含む。説明33において、前記コントローラは、PCIe VDMを使用して前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明37。説明30によると、本発明の実施例は、システムを含む。説明30において、
前記第2加速コマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、アップストリームFARと関連された前記第2加速コマンドをインタセプトするように動作する。
説明38。説明37によると、本発明の実施例は、システムを含む。説明37において、前記VFは、前記アップストリームFARとして前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
説明39。説明38によると、本発明の実施例は、システムを含む。説明38において、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明40。説明39によると、本発明の実施例は、システムを含む。説明39において、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
説明41。説明40によると、本発明の実施例は、システムを含む。説明40において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明42。説明39によると、本発明の実施例は、システムを含む。説明39において、前記コントローラは、PCIe VDMを使用して前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明43。説明30によると、本発明の実施例は、システムを含む。説明30において、
前記第2加速コマンドは、前記VFの識別子を包含し、
前記アップストリームフィルタは、前記VFの前記識別子に関連された前記第2加速コマンドをインタセプトするように動作する。
説明44。説明43によると、本発明の実施例は、システムを含む。説明43において、前記コントローラは、前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
説明45。説明44によると、本発明の実施例は、システムを含む。説明44において、前記コントローラは、前記アップストリームフィルタを前記VFの前記識別子でプログラミングするためにサイドバンドバスを使用するように動作する。
説明46。説明45によると、本発明の実施例は、システムを含む。説明45において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明47。説明44によると、本発明の実施例は、システムを含む。説明44において、前記コントローラは、PCIe VDMを使用して前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
説明48。説明30によると、本発明の実施例は、システムを含む。説明30において、
前記APM-Fは、前記のダウンストリームポート及び前記SSDのエンドポイントを介して前記APM-Sに結果を伝送するように動作し、
前記コントローラは、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
説明49。説明30によると、本発明の実施例は、システムを含む。説明30において、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
説明50。説明9によると、本発明の実施例は、システムを含む。説明9において、
前記SSDは、前記SSDを露出するように動作する第1PF及び前記FPGAを露出するように動作する第2PFを包含し、
前記FPGAは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、前記アップストリームフィルタは、前記プロセッサから受信された第2加速コマンドをインタセプトするように動作して、前記第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記FPGAはアップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされない第3PCIeトランザクションを、前記SSDに伝達する。
説明51。説明50によると、本発明の実施例は、システムを含む。説明50において、前記第2加速コマンドが、前記プロセッサ上で実行中のASMから由来する。
説明52。説明50によると、本発明の実施例は、システムを含む。説明50において、
前記第1 PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
説明53。説明52によると、本発明の実施例は、システムを含む。説明52において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明54。説明53によると、本発明の実施例は、システムを含む。説明53において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記サイドバンドバスを利用するように動作する。
説明55。説明54によると、本発明の実施例は、システムを含む。説明54において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明56。説明53によると、本発明の実施例は、システムを含む。説明53において、前記コントローラは、PCIe VDMを使用して前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
説明57。説明50によると、本発明の実施例は、システムを含む。説明50において、
前記第2加速コマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、前記アップストリームFARに関連した前記第2の加速コマンドをインタセプトするように動作する。
説明58。説明57によると、本発明の実施例は、システムを含む。説明57において、前記第2PFが前記アップストリームFARとして前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
説明59。説明58によると、本発明の実施例は、システムを含む。説明58において、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明60。明59によると、本発明の実施例は、システムを含む。説明59において、前記コントローラは、前記アップストリームフィルタを前記アップストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
説明61。説明60によると、本発明の実施例は、システムを含む。説明60において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明62。説明59によると、本発明の実施例は、システムを含む。説明59において、前記コントローラは、PCIe VDMを使用して前記アップストリームフィルタを前記VFの前記識別子でプログラミングするように動作する。
説明63。説明50によると、本発明の実施例は、システムを含む。説明50において、
前記第2加速コマンドは、前記第2 VFの識別子を包含し、
前記アップストリームフィルタは、前記第2VFの前記識別子に関連された前記第2加速コマンドをインタセプトするように動作する。
説明64。説明63によると、本発明の実施例は、システムを含む。説明63において、前記コントローラは、前記第2 PFの前記識別子で前記アップストリームフィルタをプログラミングするように動作する。
説明65。説明64によると、本発明の実施例は、システムを含む。説明64において、前記コントローラは、前記第2 PFの前記識別子で前記アップストリームフィルタをプログラミングするために、前記サイドバンドバスを使用するように動作する。
説明66。説明65によると、本発明の実施例は、システムを含む。説明65において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明67。説明64によると、本発明の実施例は、システムを含む。説明64において、前記コントローラは、PCIe VDMを使用して前記アップストリームフィルタを前記第2PFの前記識別子でプログラミングするように動作する。
説明68。説明50によると、本発明の実施例は、システムを含む。説明50において、
前記APM-Fは、前記ダウンストリームポート及び前記SSDの前記エンドポイントを介して前記APM-Sに結果を伝送するように動作し、
前記コントローラの前記の結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
説明69。説明50によると、本発明の実施例は、システムを含む。説明50において、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
説明70。説明3によれば、本発明の実施例は、システムを含む。説明3において、
前記アップストリームインタフェースは、FPGAのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するFPGAのルートポートを包含し、
前記FPGAは、第1 PF、第2 PF、及び前記FPGAルートポートと関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信された第1加速コマンドをインタセプトするように動作して前記第1加速コマンドを前記APM-Fに伝達するように動作し、
前記第1加速コマンドは、ダウンストリームフィルタのアドレス範囲(FAR)と関連付けられ、
前記FPGAは、前記第1 PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2 PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信されたPCIeトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信された第2加速コマンドを前記APM-Fに伝達するように動作し、
前記PCIeトランザクションは、前記第1 PFの第1識別子と関連付けられ、
前記第2加速コマンドは、前記第2 PFの第2識別子と関連付けられる。
説明71。説明70によると、本発明の実施例は、システムを含む。説明70において、
前記SSDは、前記FPGAから前記ダウンストリームFARを含むFPGAアドレスのブロックを要請するように動作し、
前記ホストシステムアドレスの前記第2ブロックは、少なくとも前記FPGAアドレスの前記ブロックほど大きく、
前記コントローラは、前記ダウンストリームFARのように、前記FPGAアドレスの前記ブロックのサブセットを選択するように動作する。
説明73。説明72によると、本発明の実施例は、システムを含む。説明72において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明74。説明73によると、本発明の実施例は、システムを含む。説明73において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明75。説明72によると、本発明の実施例は、システムを含む。説明72において、前記コントローラは、PCIe VDMを使用して前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明76。説明70によると、本発明の実施例は、システムを含む。説明70において、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
説明77。説明70によると、本発明の実施例は、システムを含む。説明70において、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニタと、をさらに包含する。
説明78。説明3によれば、本発明の実施例は、システムを含む。説明3において、
前記アップストリームインタフェースは、FPGAのエンドポイントを包含し、
前記ダウンストリームインタフェースは、第1構成空間を支援する第1 FPGAのルートポート及び第2構成空間を支援する第2 FPGAのルートポートを包含し、
前記SSDの前記エンドポイントは、前記第1 FPGAのルートポートと関連し、
前記SSDは、前記第2のFPGAのルートポートと関連された前記SSDの第2エンドポイントと、をさらに包含し、
前記FPGAは、第1 PF及び第2 PFを包含し、
前記FPGAは、前記第1 PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作して前記第2 PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、
前記プロセッサから受信された第1 PCIeトランザクションを前記第1 FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝送するように動作し、
前記プロセッサから受信された第2加速コマンドを前記APM-Fに伝達するように動作し、
前記第1 FPGAのルートポートで、前記SSDから受信された第2PCIeトランザクションを前記プロセッサに伝達するように動作し、
前記第2のFPGAのルートポートで、前記SSDから受信された第1加速コマンドを前記APM-Fに伝達するように動作し、
前記第1 PCIeトランザクションは、前記第1 PFの第1識別子と関連付けられ、
前記第2加速コマンドは、前記第2 PFの第2識別子と関連付けられる。
説明79。説明78によると、本発明の実施例は、システムを含む。説明78において、前記第2加速コマンドは、前記APM-Sによって生成される。
説明80。説明78によると、本発明の実施例は、システムを含む。説明33において、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送する。
説明81。説明78によると、本発明の実施例は、システムを含む。説明33において、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニタと、をさらに含む。
説明82。説明78によると、本発明の実施例は、システムを含む。説明78において、
前記アップストリームインタフェースは、第2 FPGAのエンドポイントと、をさらに包含し、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信された第1 PCIeトランザクションを前記第1 FPGAのルートポート及び前記SSDのエンドポイントを介して前記SSDに伝達するようにさらに動作し、前記第2 FPGAのエンドポイントで、前記プロセッサから受信された前記第2加速コマンドを前記APM-Fに伝達するように、さらに動作する。
説明83。説明82によると、本発明の実施例は、システムを含む。説明82において、前記第2加速コマンドは、前記APM-Sによって生成される。
説明84。説明82によると、本発明の実施例は、システムを含む。説明82において、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
説明85。説明82によると、本発明の実施例は、システムを含む。説明82において、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニタと、をさらに包含する。
説明86。説明3によれば、本発明の実施例は、システムを含む。説明3において、
前記アップストリームインタフェースは、第1 FPGAエンドポイント及び第2 FPGAのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するFPGAのルートポートを包含し、
前記FPGAは、前記FPGAルートポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記SSDから受信された第1加速コマンドをインタセプトするように動作して、前記APM-Fに前記第1加速コマンドを伝達するように動作し、
前記第1加速コマンドは、ダウンストリームFARと関連し、
前記FPGAは、
前記FPGAエンドポイントにおいて、前記プロセッサから受信された第1 PCIeトランザクションを前記第1 FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝達するように動作し、
前記第2FPGAのエンドポイントにおいて、前記プロセッサから受信された第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記第1 FPGAのルートポートで、前記SSDから受信された前記ダウンストリームFARと関連されていない第2PCIeトランザクションを、前記FPGAエンドポイントを介して前記プロセッサに伝達するように動作し、
前記第2FPGAのルートポートで、前記SSDから受信された第1加速コマンドを前記APM-Fに伝達するように動作する。
説明87。説明86によると、本発明の実施例は、システムを含む。説明86において、前記第2加速コマンドは、前記APM-Sによって生成される。
説明88。説明86によると、本発明の実施例は、システムを含む。説明86において、
前記SSDは、前記ダウンストリームFARを含むFPGAアドレスのブロックを前記FPGAから要請するように動作し、
前記FPGAは、少なくとも前記FPGAアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを前記第1 FPGAエンドポイントに対する前記プロセッサから要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして前記FPGAアドレスの前記ブロックのサブセットを選択するように動作する。
説明89。説明88によると、本発明の実施例は、システムを含む。説明88において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明90。説明89によると、本発明の実施例は、システムを含む。説明89において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記サイドバンドバスを使用するように動作する。
説明91。説明90によると、本発明の実施例は、システムを含む。説明90において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明92。説明89によると、本発明の実施例は、システムが含む。説明89において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記PCIe VDMを使用するように動作する。
説明93。説明86によると、本発明の実施例は、システムを含む。説明86において、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送する。
説明94。説明86によると、本発明の実施例は、システムを含む。説明86において、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニタと、をさらに含む。
説明95。本発明の実施例は、加速モジュールを含む。加速モジュールは、
加速コマンドを実行するための加速プラットフォームマネージャ(APM-F)と、
プロセッサと通信するためのアップストリームインタフェースと、
前記加速コマンドを実行するのに前記APM-Fを補助するためのストレージデバイスの加速プラットフォームマネージャ(APM-S)を含むストレージデバイスと通信するためのダウンストリームインタフェースを包含し、
前記プロセッサ上でアプリケーションが実行され、
前記加速モジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して前記プロセッサ及び前記ストレージデバイスと通信し、
前記加速モジュールは、前記プロセッサと関連されたメモリにアプリケーションのデータをローディングすることなく、前記アプリケーションに対する前記ストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
説明96。説明95によると、本発明の実施例は、加速モジュールを含む。説明95において、前記加速モジュールは、FPGA(Field Programmable Gate Array)を使用して具現される。
説明97。説明96によると、本発明の実施例は、加速モジュールを含む。説明96において、前記APM-F及び前記APM-Sは、前記加速コマンドとともに使用される前記アプリケーションのデータに関する前記ダウンストリームインタフェースを使用して通信する。
説明98。説明96によると、本発明の実施例は、加速モジュールを含む。説明96において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明99。説明96によると、本発明の実施例は、加速モジュールを含む。説明96において、前記FPGAは、
加速エンジンと、
前記加速エンジンで前記加速コマンドをスケジューリングするランタイムスケジューラ(run-time scheduler)と、をさらに含む。
説明100。説明96によると、本発明の実施例は、加速モジュールを含む。説明96において、
前記アップストリームインタフェースはアップストリームポートを包含し、
前記ダウンストリームインタフェースはダウンストリームポートを包含し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信された第1 PCIeトランザクションを前記ストレージデバイスに伝達するように動作し、
前記FPGAは、前記ダウンストリームポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信された加速コマンドをインタセプトするように動作して前記APM-Fに前記加速コマンドを伝達するように動作し、
前記加速コマンドは、ダウンストリームフィルタのアドレス範囲(FAR)と関連付けられ、
前記FPGAは、ダウンストリームポートで、前記ストレージデバイスから受信された前記ダウンストリームFARと関連していない第2PCIeトランザクションを前記プロセッサに伝送するように動作する。
説明101。説明100によると、本発明の実施例は、加速モジュールを含む。説明100において、前記FPGAの前記ダウンストリームフィルタで前記ダウンストリームFARは、前記コントローラによってプログラミングされる。
説明102。説明101によると、本発明の実施例は、加速モジュールを含む。説明101において、前記FPGAの前記ダウンストリームフィルタで前記ダウンストリームFARは、前記サイドバンドバスを介して前記コントローラによってプログラミングされる。
説明103。説明102によると、本発明の実施例は、加速モジュールを含む。説明102において、前記サイドバンドバスはI2C(Inter-Integrated Circuit)バス及びSM(System Management Bus)バスを含むセットから得られる。
説明104。説明101によると、本発明の実施例は、加速モジュールを含む。説明101において、前記FPGAの前記ダウンストリームフィルタで前記ダウンストリームFARはPCIe VDM(Vendor Defined Message)を使用して、前記コントローラによってプログラミングされる。
説明105。説明100によると、本発明の実施例は、加速モジュールを含んでいる。説明100において、前記APM-Fは、前記ダウンストリームポートを介して前記ストレージデバイスのAMP-Sに結果を伝送するように動作する。
説明106。説明100によると、本発明の実施例は、加速モジュールを含む。説明100において、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
説明107。説明100によると、本発明の実施例は、加速モジュールを含む。説明100において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明108。説明100によると、本発明の実施例は、加速モジュールを含む。説明100において、
前記FPGAは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、
前記アップストリームフィルタは、前記プロセッサから受信された第2加速コマンドをインタセプトするよう動作し、アップストリームFARと関連付けられる前記第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記FPGAはアップストリームポートで前記プロセッサから受信された前記アップストリームFARと関連されていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
説明109。説明108によると、本発明の実施例は、加速モジュールを含む。説明108において、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
説明110。説明109によると、本発明の実施例は、加速モジュールを含む。説明109において、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
説明111。説明110によると、本発明の実施例は、加速モジュールを含む。説明110において、前記サイドバンドバスはI2C(Inter-Integrated Circuit)バス及びSMBus(System Management Bus)を含むセットから得られる。
説明112。説明109によると、本発明の実施例は、加速モジュールを含む。説明109において、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記PCIe VDMを用いて前記ストレージデバイスによってプログラミングされる。
説明113。説明108によると、本発明の実施例は、加速モジュールを含む。説明108において、前記APM-Fは、前記ダウンストリームポートを介して前記ストレージデバイスのAMP-Sへ結果を伝送するように動作する。
説明114。説明108によると、本発明の実施例は、加速モジュールを含む。説明108において、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
説明115。説明108によると、本発明の実施例は、加速モジュールを含む。説明108において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明116。説明108によると、本発明の実施例は、加速モジュールを含む。説明108において、前記FPGAは、前記ストレージデバイスに割り当てられた非揮発性メモリエクスプレス(NVMe)レジスタを介して前記プロセッサに対して間接的に露出される。
説明117。説明100によると、本発明の実施例は、加速モジュールを含む。説明100において、
前記FPGAは、前記ストレージデバイスの仮想機能(VF)により露出され、
前記FPGAは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、
前記アップストリームフィルタは、前記プロセッサから受信された第2加速コマンドをインタセプトするよう動作し、前記第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
説明118。説明117によると、本発明の実施例は、加速モジュールを含む。説明117において、
前記第2加速コマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、アップストリームFARと関連された前記第2加速コマンドをインタセプトするように動作する。
説明119。説明118によると、本発明の実施例は、加速モジュールを含む。説明118において、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
説明120。説明119によると、本発明の実施例は、加速モジュールを含む。説明119において、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
説明121。説明120によると、本発明の実施例は、加速モジュールを含む。説明120において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明122。説明119によると、本発明の実施例は、加速モジュールを含む。説明119において、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARはPCIe VDMを使用して、前記ストレージデバイスによってプログラミングされる。
説明123。説明117によると、本発明の実施例は、加速モジュールを含む。説明117において、
前記第2加速コマンドは、前記VFの識別子を包含し、
前記アップストリームフィルタは、前記VFの前記識別子に関連された前記第2加速コマンドをインタセプトするように動作する。
説明124。説明123によると、本発明の実施例は、加速モジュールを含む。説明123において、前記FPGAの前記アップストリームフィルタは、前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
説明125。説明124によると、本発明の実施例は、加速モジュールを含む。説明124において、前記FPGAの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
説明126。説明125によると、本発明の実施例は、加速モジュールを含む。説明125において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明127。説明124によると、本発明の実施例は、加速モジュールを含む。説明124において、前記FPGAの前記アップストリームフィルタはPCIe VDMを用いて前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
説明128。説明117によると、本発明の実施例は、加速モジュールを含む。説明117において、前記APM-Fは、前記ダウンストリームポートを介して前記ストレージデバイスの前記AMP-Sへ結果を伝送するように動作する。
説明129。説明117によると、本発明の実施例は、加速モジュールを含む。説明117において、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
説明130。説明117によると、本発明の実施例は、加速モジュールを含む。説明117において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明131。説明100によると、本発明の実施例は、加速モジュールを含む。説明100において、
前記FPGAは、前記ストレージデバイスの物理機能(PF)により露出され、
前記FPGAは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、
前記アップストリームフィルタは、前記プロセッサから受信された第2加速コマンドをインタセプトするよう動作し、前記第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記FPGAは、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
説明132。説明131によると、本発明の実施例は、加速モジュールを含む。説明131において、
前記第2加速コマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、アップストリームFARに関連された前記第2加速コマンドをインタセプトするように動作する。
説明133。説明132によると、本発明の実施例は、加速モジュールを含む。説明132において、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
説明134。説明133によると、本発明の実施例は、加速モジュールを含む。説明133において、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
説明135。説明134によると、本発明の実施例は、加速モジュールを含む。説明134において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明136。説明133によると、本発明の実施例は、加速モジュールを含む。説明133において、前記FPGAの前記アップストリームフィルタ内で前記アップストリームFARはPCIe VDMを使用して、前記ストレージデバイスによってプログラミングされる。
説明137。説明131によると、本発明の実施例は、加速モジュールを含む。説明131において、
前記第2加速コマンドは、前記PFの識別子を包含し、
前記アップストリームフィルタは、前記PFの前記識別子に関連された前記第2加速コマンドをインタセプトするように動作する。
説明138。説明137によると、本発明の実施例は、加速モジュールを含む。説明137において、前記FPGAの前記アップストリームフィルタは、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
説明139。説明138によると、本発明の実施例は、加速モジュールを含む。説明138において、前記FPGAの前記アップストリームフィルタはサイドバンドバスを使用して、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
説明140。説明139によると、本発明の実施例は、加速モジュールを含む。説明139において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明141。説明138によると、本発明の実施例は、加速モジュールを含む。説明138において、前記FPGAの前記アップストリームフィルタはPCIe VDMを使用して、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
説明142。説明131によると、本発明の実施例は、加速モジュールを含む。説明131において、前記APM-Fは、前記ダウンストリームポートを介して前記APM-Sへ結果を伝送するように動作する。
説明143。説明131によると、本発明の実施例は、加速モジュールを含む。説明131において、前記APM-Fは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
説明144。説明131によると、本発明の実施例は、加速モジュールを含む。説明131において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明145。説明96によると、本発明の実施例は、加速モジュールを含む。説明96において、
前記アップストリームインタフェースは、FPGAのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するFPGAのルートポートを包含し、
前記FPGAは、第1 PF、第2 PF、及び前記FPGAルートポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信された第1加速コマンドをインタセプト するように動作し、前記第1加速コマンドを前記APM-Fに伝達するよう動作し、
前記第1加速コマンドは、ダウンストリームフィルタのアドレス範囲(FAR)と関連付けられ、
前記FPGAは、前記第1 PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、前記第2 PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、前記プロセッサから受信されたPCIeトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信された第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記PCIeトランザクションは、前記第1 PFの第1識別子と関連付けられ、
前記第2加速コマンドは、前記第2 PFの第2識別子と関連付けられる。
説明146。説明145によると、本発明の実施例は、加速モジュールを含む。説明145において、
前記FPGAは、前記FPGAから前記ダウンストリームFARを含むFPGAアドレスのブロックに対する要請を前記ストレージデバイスから受信するように動作し、
前記FPGAは、前記構成空間から前記FPGAアドレスの前記ブロックを割り当てるように動作し、
前記ホストシステムアドレスの前記第1ブロックは、少なくとも前記FPGAアドレスの前記ブロックほど大きい。
説明147。説明146によると、本発明の実施例は、加速モジュールを含む。説明146において、前記FPGAの前記ダウンストリームフィルタ内で前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
説明148。説明147によると、本発明の実施例は、加速モジュールを含む。説明147において、前記FPGAの前記ダウンストリームフィルタ内で前記ダウンストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
説明149。説明148によると、本発明の実施例は、加速モジュールを含む。説明148において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明150。説明147によると、本発明の実施例は、加速モジュールを含む。説明147において、前記FPGAの前記ダウンストリームフィルタ内で前記ダウンストリームFARは、前記PCIe VDMを用いて前記ストレージデバイスによってプログラミングされる。
説明151。説明145によると、本発明の実施例は、加速モジュールを含む。説明145において、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
説明152。説明145によると、本発明の実施例は、加速モジュールを含んでいる。説明145において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明153。説明145によると、本発明の実施例は、加速モジュールを含む。説明145において、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記FPGAのエンドポイントにコピーするための構成モニタと、をさらに包含する。
説明154。説明96によると、本発明の実施例は、加速モジュールを含む。説明96において、
前記アップストリームインタフェースは、FPGAのエンドポイントを包含し、
前記ダウンストリームインタフェースは、第1構成空間を支援する第1 FPGAのルートポート及び第2構成空間を支援する第2 FPGAのルートポートを包含し、
前記SSDの前記エンドポイントは、前記第1 FPGAのルートポートと関連し、
前記SSDは、前記第2FPGAのルートポートと関連された前記SSDの第2エンドポイントと、をさらに包含し、
前記FPGAは、第1 PF及び第2 PFを包含し、
前記FPGAは、前記第1 PFに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作して前記第2 PFに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
前記FPGAは、
前記プロセッサから受信された第1 PCIeトランザクションを前記第1 FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝送するように動作し、
前記プロセッサから受信された第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記第1 FPGAのルートポートで、前記SSDから受信された第2PCIeトランザクションを前記プロセッサに伝達するよう動作し、
前記第2FPGAのルートポートで、前記SSDから受信された第1加速コマンドを前記APM-Fに伝達するように動作する。
説明155。説明154によると、本発明の実施例は、加速モジュールを含む。説明154において、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送する。
説明156。説明154によると、本発明の実施例は、加速モジュールを含む。説明154において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明157。説明154によると、本発明の実施例は、加速モジュールを含む。説明154において、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記のFPGAのエンドポイントにコピーするための構成モニタと、をさらに含む。
説明158。説明154によると、本発明の実施例は、加速モジュールを含む。説明154において、
前記アップストリームインタフェースは、第2 FPGAのエンドポイントと、をさらに包含し、
前記FPGAは、前記FPGAエンドポイントにおいて、前記プロセッサから受信された第1 PCIeトランザクションを前記第1 FPGAのルートポート及び前記SSDのエンドポイントを介して前記SSDに伝達するように、さらに動作し、前記第2 FPGAのエンドポイントで、前記プロセッサから受信された前記第2加速コマンドを前記APM-Fに伝達するように、さらに動作する。
説明159。説明158によると、本発明の実施例は、加速モジュールを含む。説明158において、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
説明160。説明158によると、本発明の実施例は、加速モジュールを含む。説明158において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明161。説明158によると、本発明の実施例は、加速モジュールを含む。説明158において、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記のFPGAのエンドポイントにコピーするための構成モニタと、をさらに含む。
説明162。説明96によると、本発明の実施例は、加速モジュールを含む。説明96において、
前記アップストリームインタフェースは、第1 FPGAエンドポイント及び第2 FPGAのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するFPGAのルートポートを包含し、
前記FPGAは、前記FPGAルートポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記SSDから受信された第1加速コマンドをインタセプトするように動作して、前記APM-Fに前記第1加速コマンドを伝達するように動作し、
前記第1加速コマンドは、ダウンストリームFARと関連し、
前記FPGAは、
前記FPGAエンドポイントにおいて、前記プロセッサから受信された第1 PCIeトランザクションを、前記第1 FPGAのルートポート及び前記SSDの前記エンドポイントを介して前記SSDに伝達するように動作し、
前記第2FPGAのエンドポイントにおいて、前記プロセッサから受信された第2加速コマンドを前記APM-Fに伝達するよう動作し、
前記第1 FPGAのルートポートで、前記SSDから受信された前記ダウンストリームFARと関連されていない第2PCIeトランザクションを前記FPGAエンドポイントを介して前記プロセッサに伝達するよう動作し、
前記第2FPGAのルートポートで、前記SSDから受信された第1加速コマンドを前記APM-Fに伝達するように動作する。
説明163。説明162によると、本発明の実施例は、加速モジュールを含む。説明162において、
前記FPGAは、前記FPGAから前記ダウンストリームFARを含むFPGAアドレスのブロックの要請を前記ストレージデバイスから受信するように動作し、
前記FPGAは、前記構成空間から前記FPGAアドレスの前記ブロックを割り当てるように動作し、
前記FPGAは、前記第1 FPGAのプロセッサから少なくとも前記FPGAアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを要請するように動作する。
説明164。説明163によると、本発明の実施例は、加速モジュールを含む。説明163において、前記FPGAの前記ダウンストリームフィルタ内の前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
説明165。説明164によると、本発明の実施例は、加速モジュールを含む。説明164において、前記FPGAの前記ダウンストリームフィルタ内の前記ダウンストリームFARはサイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
説明166。説明165によると、本発明の実施例は、加速モジュールを含む。説明165において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明167。説明164によると、本発明の実施例は、加速モジュールを含む。説明164において、前記FPGAの前記ダウンストリームフィルタ内の前記ダウンストリームFARはPCIe VDMを用いて前記ストレージデバイスによってプログラミングされる。
説明168。説明162によると、本発明の実施例は、加速モジュールを含む。説明162において、前記APM-Fは、前記FPGAのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
説明169。説明162によると、本発明の実施例は、加速モジュールを含む。説明162において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明170。説明162によると、本発明の実施例は、加速モジュールを含む。説明162において、前記FPGAは、前記ストレージデバイスの前記エンドポイントの性能を前記のFPGAのエンドポイントにコピーするための構成モニタと、をさらに含む。
説明171。本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネント(構成要素)を含んでいる。第1ブリッジコンポーネントは、
プロセッサと通信するためのアップストリームインタフェースと、
加速モジュール及びストレージデバイスと通信するためのダウンストリームインタフェースを包含し、
前記プロセッサ上でアプリケーションが実行され、
前記第1ブリッジ構成要素(コンポーネント)は、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ、前記加速モジュール及び前記ストレージデバイスと通信し、
前記ダウンストリームインタフェースは、前記PCIeトランザクションが加速コマンドを包含しているか否かに応じて前記プロセッサから前記加速モジュール又は前記ストレージデバイスにPCIeトランザクションを伝達するように動作する。
説明172。説明171によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネント(構成要素)を含んでいる。
説明171において、
前記加速モジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
説明173。説明171によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明171において、第2ブリッジコンポーネントを包含し、前記第2ブリッジコンポーネントは、
前記プロセッサ及び前記加速モジュールと通信するための第2アップストリームインタフェースと、及び
前記ストレージデバイスと通信するための第2ダウンストリームインタフェースを包含し、
前記第2ブリッジコンポーネントは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ、前記加速モジュール及び前記ストレージデバイスと通信し、
前記第2アップストリームインタフェースは、前記第2PCIeトランザクションが第2加速コマンドを包含しているか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記加速モジュールに第2 PCIeトランザクションを伝達するように動作する。
説明174。説明171によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明171において、前記アップストリームインタフェースは、
アップストリームポートと、及び
前記アップストリームポートに関連されたアップストリームフィルタを包含し、
前記アップストリームフィルタは、前記プロセッサから受信されたアップストリームFARに関連された第2加速コマンドを識別するように動作し、
前記ダウンストリームインタフェースは、前記第2加速コマンドを前記加速モジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信されたアップストリームFARと関連されていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
説明175。説明174によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明174において、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
説明176。説明175によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明175において、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
説明177。説明176によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明176において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明178。説明175によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明175において、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記PCIe VDMは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
説明179。説明174によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明174において、前記FPGAは、前記ストレージデバイスに割り当てられた非揮発性メモリエクスプレス(NVMe)レジスタを介して前記プロセッサに対して間接的に露出される。
説明180。説明171によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明171において、
前記アップストリームインタフェースは、前記ストレージデバイスの仮想機能(VF)により露出され、
前記アップストリームインタフェースは、
アップストリームポートと、
前記アップストリームポートと関連されたアップストリームフィルタを包含し、
前記アップストリームフィルタは、前記加速モジュールに対する第2加速コマンドを識別するように動作し、
前記ダウンストリームインタフェースは、前記第2加速コマンドを前記加速モジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
説明181。説明180によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明180において、
前記第2加速コマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、アップストリームFARに関連された前記第2加速コマンドをインタセプトするように動作する。
説明182。説明181によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明181において、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記ストレージデバイスによってプログラミングされる。
説明183。説明182によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明182において、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
説明184。説明183によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明183において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明185。説明182によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明182において、前記第1ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームFARは、前記PCIe VDMを用いて前記ストレージデバイスによってプログラミングされる。
説明186。説明180によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明180において、
前記第2加速コマンドは、前記VFの識別子を包含し、
前記アップストリームフィルタは、前記VFの前記識別子に関連された前記第2加速コマンドをインタセプトするように動作する。
説明187。説明186によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明186において、前記第1ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
説明188。説明187によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明187において、前記第1ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
説明189。説明188によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明188において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明190。説明187によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明187において、前記第1ブリッジコンポーネントの前記アップストリームフィルタはPCIe VDMを用いて前記ストレージデバイスにより前記VFの前記識別子でプログラミングされる。
説明191。説明171によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明171において、
前記アップストリームインタフェースは、前記ストレージデバイスの物理機能(PF)により露出され、
前記アップストリームインタフェースは、
アップストリームポートと、
前記アップストリームポートと関連されたアップストリームフィルタを包含し、
前記アップストリームフィルタは、前記加速モジュールに対する第2加速コマンドを識別するように動作し、
前記ダウンストリームインタフェースは、前記第2加速コマンドを前記加速モジュールに伝送するように動作し、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされていない第3PCIeトランザクションを前記ストレージデバイスに伝送するように動作する。
説明192。説明191によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明191において、
前記第2加速コマンドは、前記アップストリームFARと関連し、
前記アップストリームフィルタは、前記アップストリームFARに関連された前記第2加速コマンドをインタセプトするように動作する。
説明193。説明192によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明192において、前記第1ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスによってプログラミングされる。
説明194。説明193によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明193において、前記第1ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
説明195。説明194によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明194において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明196。説明193によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明193において、前記第1ブリッジコンポーネントの前記アップストリームフィルタはPCIe VDMを用いて前記ストレージデバイスによってプログラミングされる。
説明197。説明191によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明191において、
前記第2加速コマンドは、前記PFの識別子を包含し、
前記アップストリームフィルタは、前記PFの前記識別子に関連された前記第2加速コマンドをインタセプトするように動作する。
説明198。説明197によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明197において、前記第1ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
説明199。説明198によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明198において、前記第1ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
説明200。説明199によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明199において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明201。説明198によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明198において、前記第1ブリッジコンポーネントの前記アップストリームフィルタはPCIe VDMを使用して、前記ストレージデバイスにより前記PFの前記識別子でプログラミングされる。
説明202。説明171によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明171において、
前記アップストリームインタフェースは、
エンドポイントと、
第1 PFと、及び
第2 PFを包含し、
前記ダウンストリームインタフェースは、前記プロセッサから受信されたPCIeトランザクションを前記ストレージデバイスに伝送するように動作して、前記プロセッサから受信された第2加速コマンドを前記加速モジュールに伝送するように動作し、
前記PCIeトランザクションは、前記第1 PFの第1識別子と関連し、
前記第2加速コマンドは、前記第2 PFの第2識別子と関連する。
説明203。説明202によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明202において、前記第1ブリッジコンポーネントは、前記ストレージデバイスの前記エンドポイントの性能を前記のエンドポイントにコピーするための構成モニタと、をさらに含む。
説明204。説明171によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明171において、
前記アップストリームインタフェースは、
第1エンドポイントと、
第2エンドポイントを包含し、
前記ダウンストリームインタフェースは、前記プロセッサから受信された前記第1エンドポイントに関連されたPCIeトランザクションを前記ストレージデバイスに伝達するように動作して、前記プロセッサから受信された第2加速コマンドを前記加速モジュールに伝達するよう動作し、
前記第2加速コマンドは、前記第2エンドポイントと関連している。
説明205。説明204によると、本発明の実施例は、ハードウェアを使用して具現される第1ブリッジコンポーネントを含んでいる。説明204において、前記第1ブリッジコンポーネントは、前記ストレージデバイスの前記エンドポイントの性能を前記第1エンドポイントにコピーするための構成モニタと、をさらに含む。
説明206。本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。第2ブリッジコンポーネントは、
プロセッサと加速モジュールと通信するためのアップストリームインタフェースと、
ストレージデバイスと通信するためのダウンストリームインタフェースを包含し、
前記第1ブリッジコンポーネントは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して、前記プロセッサ、前記加速モジュール及び前記ストレージデバイスと通信し、
前記アップストリームインタフェースは、前記PCIeトランザクションが加速コマンドを包含しているか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記加速モジュールにPCIeトランザクションを伝達するように動作する。
説明207。説明206によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明206において、
前記加速モジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
説明208。説明206によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明206において、
ダウンストリームインタフェースは、
ダウンストリームポートと、及び
前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲(FAR)に関連される加速コマンドを識別するように動作するダウンストリームフィルタを包含し、
前記ダウンストリームインタフェースは、前記加速コマンドを前記加速モジュールに伝送するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信された前記ダウンストリームFARと関連されていない第2PCIeトランザクションを前記プロセッサに伝達するように動作する。
説明209。説明208によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明208において、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
説明210。説明209によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明209において、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARはサイドバンドバスを介して前記ストレージデバイスによってプログラミングされる。
説明211。説明210によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明210において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明212。説明209によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明209において、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARはPCIe VDMを使用して、前記ストレージデバイスによってプログラミングされる。
説明213。説明206によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明206において、
ダウンストリームインタフェースは、
ルートポートと、
前記ルートポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲(FAR)と関連された加速コマンドを識別するように動作し、
前記ダウンストリームインタフェースは、前記加速コマンドを前記加速モジュールに伝達するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信された前記ダウンストリームFARと関連されていない第2PCIeトランザクションを前記プロセッサに伝達するように動作する。
説明214。説明213によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明213において、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる。
説明215。説明214によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明214において、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARはサイドバンドバスを使用して、前記ストレージデバイスによってプログラミングされる。
説明216。説明215によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明215において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明217。説明214によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明214において、前記第2ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームFARはPCIe VDMを使用して、前記ストレージデバイスによってプログラミングされる。
説明218。説明206によると、本発明の実施例は、ハードウェアを使用して具現される第2ブリッジコンポーネントを含んでいる。説明206において、
ダウンストリームインタフェースは、
第1ルートポートと、
第2ルートポートを包含し、
前記ダウンストリームインタフェースは、前記第1ルートポートで、前記ストレージデバイスから受信された第2PCIeトランザクションを前記プロセッサに伝達するように動作し、前記第2ルートポートで、前記ストレージデバイスから受信された加速コマンドを前記加速モジュールに伝送するように動作する。
説明219。本発明の実施例は、ストレージデバイスを含む。ストレージデバイスは、
加速プラットフォームマネージャ(APM-F)を含む加速モジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
アプリケーションに対するアプリケーションデータを格納するストアと、及び
前記加速コマンドを実行するのに前記APM-Fを補助するためのストレージデバイスの加速プラットフォームマネージャ(APM-S)を包含し、
前記ストレージデバイス及び前記加速モジュールは、PCIe(Peripheral Component Interconnect Exchange)バスを使用して通信し、
前記加速モジュールは、プロセッサと関連されたメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
説明220。説明219によると、本発明の実施例は、ストレージデバイスを含んでいる。説明219において、前記ストレージデバイスは、SSDを含む。
説明221。説明220によると、本発明の実施例は、ストレージデバイスを含んでいる。説明220において、前記APM-F及び前記APM-Sは、前記加速コマンドとともに使用される前記アプリケーションデータに関する前記SSDの前記エンドポイントを使用して通信する。
説明222。説明220によると、本発明の実施例は、ストレージデバイスを含んでいる。説明220において、前記APM-F及び前記APM-Sはメッセージを使用して通信する。
説明223。説明220によると、本発明の実施例は、ストレージデバイスを含んでいる。説明220において、前記ストレージデバイスは、前記プロセッサから受信された非揮発性メモリエクスプレス(NVMe)プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット(TLP)を含むPCIeトランザクションをSSDに伝送する。
説明224。説明220によると、本発明の実施例は、ストレージデバイスを含んでいる。説明220において、前記SSDは、前記加速モジュールを含む。
説明225。説明220によると、本発明の実施例は、ストレージデバイスを含んでいる。説明220において、
前記SSDはダウンストリームFARに関連された加速コマンドを前記加速モジュールに伝送するように動作し、
前記第1 PCIeトランザクションは、前記APM-Fのために具現され、
前記SSDは、前記ダウンストリームFARと関連されていない第1 PCIeトランザクションを、前記加速モジュールに伝送するように動作し、
前記第1 PCIeトランザクションは、前記プロセッサのために具現される。
説明226。説明225によると、本発明の実施例は、ストレージデバイスを含んでいる。説明225において、前記加速モジュールは、APM-Sによって生成される。
説明227。説明226によると、本発明の実施例は、ストレージデバイスを含んでいる。説明226において、前記SSDは、前記加速コマンドを含む特定のコマンドをインタセプトし、前記加速コマンドを生成するために、前記APM-Sをトリガーするために、前記の特定のコマンドを前記APM-Sに伝達するホストインタフェースロジック(HIL)と、をさらに含む。
説明228。説明227によると、本発明の実施例は、ストレージデバイスを含んでいる。説明227において、前記特定のコマンドは、前記のプロセッサ上で実行中の加速サービスマネージャ(ASM)から由来する。
説明229。説明225によると、本発明の実施例は、ストレージデバイスを含んでいる。説明225において、
前記SSDは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
説明230。説明229によると、本発明の実施例は、ストレージデバイスを含んでいる。説明229において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明231。説明230によると、本発明の実施例は、ストレージデバイスを含んでいる。説明230において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためのサイドバンドバスを使用するように動作する。
説明232。説明231によると、本発明の実施例は、ストレージデバイスを含んでいる。説明231において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明233。説明230によると、本発明の実施例は、ストレージデバイスを含んでいる。説明230において、前記コントローラは、PCIe VDM(Vendor Defined Message)を使用して、前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明234。説明229によると、本発明の実施例は、ストレージデバイスを含んでいる。説明229において、前記コントローラは、前記アップストリームFARのように、前記ホストシステムメモリの前記ブロックの第2サブセットを選択するように動作する。
説明235。説明234によると、本発明の実施例は、ストレージデバイスを含んでいる。説明234において、前記コントローラは、前記プロセッサ上で実行中のASMによってアクセス可能な、特定のレジスタ内で前記アップストリームFARに対する情報を格納するように動作する。
説明236。説明235によると、本発明の実施例は、ストレージデバイスを含んでいる。説明235において、前記特定のレジスタは、前記ホストシステムアドレスの前記ブロック内にある。
説明237。説明229よると、本発明の実施例は、ストレージデバイスを含んでいる。説明229において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明238。説明237によると、本発明の実施例は、ストレージデバイスを含んでいる。説明237において、前記コントローラは、サイドバンドバスを使用して、前記加速モジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明239。説明238によると、本発明の実施例は、ストレージデバイスを含んでいる。説明238において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明240。説明237によると、本発明の実施例は、ストレージデバイスを含んでいる。説明237において、前記コントローラは、PCIe VDMを使用して、前記加速モジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明241。説明225によると、本発明の実施例は、ストレージデバイスを含んでいる。説明225において、前記SSDは、前記SSDの前記エンドポイントを介して前記APM-Fから結果を受信するように動作して、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
説明242。説明225によると、本発明の実施例は、ストレージデバイスを含んでいる。説明225において、前記SSDは物理機能(PF)と仮想機能(VF)を包含し、前記PFは、前記SSDを露出するように動作し、前記VFは、前記加速モジュールを露出するように動作する。
説明243。説明242によると、本発明の実施例は、ストレージデバイスを含んでいる。説明242において、
前記PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARとして、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
説明244。説明243によると、本発明の実施例は、ストレージデバイスを含んでいる。説明243において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明245。説明244によると、本発明の実施例は、ストレージデバイスを含んでいる。説明244において、前記コントローラは、サイドバンドバスを利用して、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明246。説明245によると、本発明の実施例は、ストレージデバイスを含んでいる。説明245において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明247。説明244によると、本発明の実施例は、ストレージデバイスを含んでいる。説明244において、前記コントローラは、PCIe VDMを用いて前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明248。説明242によると、本発明の実施例は、ストレージデバイスを含んでいる。説明242において、前記VFは、前記アップストリームFARのように、前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
説明249。説明248によると、本発明の実施例は、ストレージデバイスを含んでいる。説明248において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明250。説明249によると、本発明の実施例は、ストレージデバイスを含んでいる。説明249において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするためのサイドバンドバスを使用するように動作する。
説明251。説明250によると、本発明の実施例は、ストレージデバイスを含んでいる。説明250において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明252。説明249によると、本発明の実施例は、ストレージデバイスを含んでいる。説明249において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記アップストリームFARでプログラミングするためのPCIe VDMを使用するように動作する。
説明253。説明242によると、本発明の実施例は、ストレージデバイスを含んでいる。説明242において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記VFでプログラミングするように動作する。
説明254。説明253によると、本発明の実施例は、ストレージデバイスを含んでいる。説明253において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記VFでプログラミングするためのサイドバンドバスを使用するように動作する。
説明255。説明254によると、本発明の実施例は、ストレージデバイスを含んでいる。説明254において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明256。説明253によると、本発明の実施例は、ストレージデバイスを含んでいる。説明253において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記VFでプログラミングするためにPCIe VDMを使用するように動作する。
説明257。説明242によると、本発明の実施例は、ストレージデバイスを含んでいる。説明242において、前記コントローラは、前記SSDの前記エンドポイントを介して前記APM-Fから結果を受信するように動作して、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
説明258。説明225によると、本発明の実施例は、ストレージデバイスを含んでいる。説明225において、前記SSDは、前記SSDを露出するように動作する第1PF及び前記FPGAを露出するように動作する第2PFを含む。
説明259。説明258によると、本発明の実施例は、ストレージデバイスを含んでいる。説明258において、
前記第1 PFは、前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックの第1サブセットを選択するように動作する。
説明260。説明259によると、本発明の実施例は、ストレージデバイスを含んでいる。説明259において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明261。説明260によると、本発明の実施例は、ストレージデバイスを含んでいる。説明260において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためにサイドバンドバスを利用するように動作する。
説明262。説明261によると、本発明の実施例は、ストレージデバイスを含んでいる。説明261において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明263。説明260によると、本発明の実施例は、ストレージデバイスを含んでいる。説明260において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするために、前記PCIe VDMを使用するように動作する。
説明264。説明258によると、本発明の実施例は、ストレージデバイスを含んでいる。説明258において、前記第2PFが前記アップストリームFARのように、前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作する。
説明265。説明264によると、本発明の実施例は、ストレージデバイスを含んでいる。説明264において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記アップストリームFARでプログラミングするように動作する。
説明266。説明265によると、本発明の実施例は、ストレージデバイスを含んでいる。説明265において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記アップストリームFARでプログラミングするためにサイドバンドバスを使用するように動作する。
説明267。説明266によると、本発明の実施例は、ストレージデバイスを含んでいる。説明266において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明26。説明265によると、本発明の実施例は、ストレージデバイスを含んでいる。説明265において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記アップストリームFARでプログラミングするためにPCIe VDMを使用するように動作する。
説明269。説明258によると、本発明の実施例は、ストレージデバイスを含んでいる。説明258において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記第2PFの識別子でプログラミングするように動作する。
説明270。説明269によると、本発明の実施例は、ストレージデバイスを含んでいる。説明269において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記第2PFの識別子でプログラミングするためにサイドバンドバスを使用するように動作する。
説明271。説明270によると、本発明の実施例は、ストレージデバイスを含んでいる。説明270において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明272。説明269によると、本発明の実施例は、ストレージデバイスを含んでいる。説明269において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記第2PFの識別子でプログラミングするためにPCIe VDMを使用するように動作する。
説明273。説明258によると、本発明の実施例は、ストレージデバイスを含んでいる。説明258において、前記コントローラは、前記SSDの前記エンドポイントを介して前記APM-Fから結果を受信するように動作して、前記結果を前記SSDの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
説明274。説明225によると、本発明の実施例は、ストレージデバイスを含んでいる。説明225において、
前記SSDは、前記プロセッサから加速モジュールのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームFARのように、前記加速モジュールの前記ブロックのサブセットを選択するように動作する。
説明275。説明274によると、本発明の実施例は、ストレージデバイスを含んでいる。説明274において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするように動作する。
説明276。説明275によると、本発明の実施例は、ストレージデバイスを含んでいる。説明275において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためにサイドバンドバスを使用するように動作する。
説明277。説明276によると、本発明の実施例は、ストレージデバイスを含んでいる。説明276において、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明278。説明275によると、本発明の実施例は、ストレージデバイスを含んでいる。説明275において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームFARでプログラミングするためにPCIe VDMを使用するように動作する。
説明279。説明220によると、本発明の実施例は、ストレージデバイスを含んでいる。説明220において、前記加速モジュールと通信するための前記SSDの第2エンドポイントと、をさらに包含し、
前記SSDの前記エンドポイントは、前記プロセッサと通信するために使用され、
前記SSDの前記第2エンドポイントは、前記APM-Fと通信するために使用される。
説明280。本発明の実施例は、方法を含んでいる。方法は、
加速モジュールで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記加速モジュールにおいて、前記PCIeトランザクションが加速コマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記加速コマンドであることを判断することについて、少なくとも部分的に基づいて、前記加速モジュールの加速プラットフォームマネージャ(APM-F)において、前記PCIeトランザクションを処理するステップと、及び
前記PCIeトランザクションが、前記加速コマンドではないことを判断することに少なくとも部分的に基づいて、前記PCIeトランザクションを第2デバイスに伝達するステップを包含し、
前記加速モジュールは、プロセッサと関連されたメモリにアプリケーションのデータをローディングすることなく、アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援し、
前記プロセッサ、前記加速モジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
説明281。説明280によると、本発明の実施例は、方法を含んでいる。説明280において、前記加速モジュールは、FPGA(Field Programmable Gate Array)を用いて具現される。
説明282。説明281によると、本発明の実施例は、方法を含んでいる。説明281において、
前記加速モジュールにおいて、前記第1デバイスから前記PCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記PCIeトランザクションが、前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記FPGAの第1 PFの識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップを含む。
説明283。説明282によると、本発明の実施例は、方法を含んでいる。説明282において、
前記FPGAの前記ルートポートで、前記ストレージデバイスから第1 PCIeトランザクションを受信するステップと、
前記FPGAのダウンストリームを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
説明284。説明282によると、本発明の実施例は、方法を含んでいる。説明282において、
前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記FPGAの前記ルートポートと連結するステップと、をさらに含む。
説明285。説明284によると、本発明の実施例は、方法を含んでいる。説明284において、前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明286。説明284によると、本発明の実施例は、方法を含んでいる。説明284において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMはダウンストリームFARを含む。
説明287。説明282によると、本発明の実施例は、方法を含んでいる。説明282において、前記FPGAの前記ダウンストリームを使用して前記第2のPCIeトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
説明288。説明282によると、本発明の実施例は、方法を含んでいる。説明282において、前記FPGAの前記アップストリームポートを使用して前記第2のPCIeトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
説明289。説明282によると、本発明の実施例は、方法を含んでいる。説明282において、
前記FPGAの前記アップストリームポートで前記プロセッサから第1 PCIeトランザクションを受信するステップと、
前記第1 PCIeトランザクションが前記FPGAの前記アップストリームポートと関連されたアップストリームフィルタドレス範囲(FAR)内のアドレスに関連されるか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップと、
前記第1 PCIeトランザクションが前記第2加速コマンドであることを判断することに、少なくとも部分的に基づいて、前記FPGAの前記APM-Fで、前記第1 PCIeトランザクションを処理するステップと、及び
前記第1 PCIeトランザクションが前記第2の加速コマンドではないことを判断することに少なくとも部分的に基づいて、前記FPGAの前記ダウンストリームポートを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
説明290。説明289によると、本発明の実施例は、方法を含んでいる。説明289において、前記第2加速コマンドは、前記のプロセッサ上で実行中のASMから由来する。
説明291。説明289によると、本発明の実施例は、方法を含んでいる。説明289において、
前記FPGAにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、及び
前記アップストリームFARを前記FPGAの前記アップストリームポートと連結するステップと、をさらに含む。
説明292。説明291によると、本発明の実施例は、方法を含んでいる。説明291において、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明293。説明292によると、本発明の実施例は、方法を含んでいる。説明292において、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMはアップストリームFARを含む。
説明294。説明289によると、本発明の実施例は、方法を含んでいる。説明289において、前記FPGAの前記アップストリームを使用して前記第1 PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
説明295。289によると、本発明の実施例は、方法を含んでいる。説明289において、前記FPGAの前記アップストリームポートを使用して前記第1 PCIeトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む方法。
説明296。説明282によると、本発明の実施例は、方法を含んでいる。説明282において、
前記FPGAの前記アップストリームポートで前記プロセッサから第1 PCIeトランザクションを受信するステップと、
前記第1 PCIeトランザクションが前記ストレージデバイスによって露出される仮想機能(VF)と関連されるか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップと、
前記第1 PCIeトランザクションが前記第2加速コマンドであることを判断することに、少なくとも部分的に基づいて、前記FPGAの前記APM-Fで、前記第1 PCIeトランザクションを処理するステップと、
前記第1 PCIeトランザクションが前記第2加速コマンドではないことを判断することに少なくとも部分的に基づいて、前記FPGAの前記ダウンストリームポートを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
説明297。説明296によると、本発明の実施例は、方法を含んでいる。説明296において、前記第2加速コマンドは、前記プロセッサ上で実行中のASMから由来する。
説明298。説明296によると、本発明の実施例は、方法を含んでいる。説明280において、前記第1 PCIeトランザクションが前記第2加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記VFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
説明299。説明298によると、本発明の実施例は、方法を含んでいる。説明280において、
前記FPGAにおいて、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、及び
前記VFの前記識別子を前記FPGAの前記アップストリームポートに連結するステップと、をさらに含む。
説明300。0説明299によると、本発明の実施例は、方法を含んでいる。説明299において、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明301。説明299によると、本発明の実施例は、方法を含んでいる。説明299において、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記VFの前記識別子を含む。
説明302。説明296によると、本発明の実施例は、方法を含んでいる。説明296において、前記FPGAの前記アップストリームを使用して前記第1 PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
説明303。説明282よると、本発明の実施例は、方法を含んでいる。説明280において、
前記FPGAの前記アップストリームポートで前記プロセッサから第1 PCIeトランザクションを受信するステップと、
前記第1 PCIeトランザクションが前記ストレージデバイスによって露出される物理機能(PF)と関連されるか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップと、
前記第1 PCIeトランザクションが前記第2加速コマンドであることを判断することに、少なくとも部分的に基づいて、前記FPGAの前記APM-Fで、前記第1 PCIeトランザクションを処理するステップと、及び
前記第1 PCIeトランザクションが前記第2加速コマンドではないことを判断することに少なくとも部分的に基づいて、前記FPGAの前記ダウンストリームポートを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
説明304。説明303によると、本発明の実施例は、方法を含んでいる。説明303において、前記第2加速コマンドは、前記のプロセッサ上で実行中のASMから由来する。
説明305。説明303によると、本発明の実施例は、方法を含んでいる。説明303において、前記PCIeトランザクションが、前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
説明306。説明305によると、本発明の実施例は、方法を含んでいる。説明305において、
前記ストレージデバイスから、前記FPGAにおいて、前記PFの前記識別子を受信するステップと、及び
前記PFの前記識別子を前記FPGAの前記アップストリームポートと連結するステップと、をさらに含む。
説明307。説明306によると、本発明の実施例は、方法を含んでいる。説明306において、前記FPGAで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明308。説明306によると、本発明の実施例は、方法を含んでいる。説明306において、前記FPGAで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記PFの前記識別子を含む。
説明309。説明303によると、本発明の実施例は、方法を含んでいる。説明303において、前記FPGAの前記アップストリームを使用して前記第1 PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
説明310。説明303によると、本発明の実施例は、方法を含んでいる。説明303において、前記FPGAの前記アップストリームを使用して前記第1 PCIeトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
説明311。説明281によると、本発明の実施例は、方法を含んでいる。説明281において、
FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記PCIeトランザクションが、前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記FPGAの第1 PFの第1識別子を有するタグを含んでいるか、又は前記FPGAの第2 PFの第2識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2のデバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップを含む。
説明312。説明311によると、本発明の実施例は、方法を含んでいる。説明311において、
前記FPGAの前記ルートポートで、前記ストレージデバイスから第2 PCIeトランザクションを受信するステップと、
前記FPGAで前記第2 PCIeトランザクションが、前記FPGAの前記ルートポートに関連されたダウンストリームFAR内のアドレスと関連されているか否かを判断することにより、前記第2PCIeトランザクションが第2加速コマンドか否かを判断するステップと、
前記第2 PCIeトランザクションが前記第2加速コマンドであると判断することに、少なくとも部分的に基づいて、前記FPGAの前記APM-Fで、前記第1 PCIeトランザクションを処理するステップと、及び
前記第2 PCIeトランザクションが前記第2加速コマンドではないと判断することに少なくとも部分的に基づいて、前記FPGAの前記エンドポイントを使用して前記第2 PCIeトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
説明313。説明312によると、本発明の実施例は、方法を含んでいる。説明312において、
前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、及び
前記ダウンストリームFARを前記FPGAの前記ルートポートと連結するステップと、をさらに含む。
説明314。説明313によると、本発明の実施例は、方法を含んでいる。説明313において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージ装置からサイドバンドバスを介して前記ダウンストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明315。説明313によると、本発明の実施例は、方法を含んでいる。説明313において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記ダウンストリームFARを含む。
説明316。説明311によると、本発明の実施例は、方法を含んでいる。説明311において、前記第2加速コマンドは、前記プロセッサ上で実行中のASMから由来する。
説明317。説明311によると、本発明の実施例は、方法を含んでいる。説明311において、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1 PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
説明318。説明311によると、本発明の実施例は、方法を含んでいる。説明311において、
前記FPGAの構成モニタを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明319。説明281によると、本発明の実施例は、方法を含んでいる。説明281において、
FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記PCIeトランザクションが、前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記FPGAの第1 PFの第1識別子を有するタグを含んでいるか、又は前記FPGAの第2 PFの第2識別子を持つタグを含んでいるか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1 PCIeトランザクションを第2ストレージデバイスに伝達するステップを含む。
説明320。説明319によると、本発明の実施例は、方法を含んでいる。説明319において、
前記FPGAにおいて、前記ストレージデバイスから第2 PCIeトランザクションを受信するステップと、
前記第2 PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断するステップと、
前記第2 PCIeトランザクションが、前記FPGAの前記第1のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記エンドポイントを使用して前記第2 PCIeトランザクションを前記プロセッサに伝達するステップと、及び
前記第2 PCIeトランザクションが、前記FPGAの前記第2のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記FPGAの前記AMP-Fで前記第2 PCIeトランザクションを処理するステップと、をさらに含む。
説明321。説明319によると、本発明の実施例は、方法を含んでいる。説明319において、前記第2加速コマンドは、前記のプロセッサ上で実行中のASMから由来する。
説明322。説明319によると、本発明の実施例は、方法を含んでいる。説明319において、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1 PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
説明323。説明319によると、本発明の実施例は、方法を含んでいる。説明319において、
前記FPGAの構成モニタを使用して、前記FPGAの前記第1のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記FPGAの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明324。説明281によると、本発明の実施例は、方法を含んでいる。説明281において、
FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記FPGAで前記第1 PCIeトランザクションが前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、第1ルートポート及び第2ルートポートを含む前記FPGAの第1ルートポートを使用して前記第1 PCIeトランザクションをストレージデバイスに伝達するステップを含む。
説明325。説明324によると、本発明の実施例は、方法を含んでいる。説明324において、
前記FPGAにおいて、前記ストレージデバイスから第2 PCIeトランザクションを受信するステップと、
前記第2 PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断することにより、前記第2のPCIeトランザクションが、前記加速コマンドか否かを判断するステップと、
前記第2 PCIeトランザクションが、前記FPGAの前記第1ルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記第1エンドポイントを使用して前記第2 PCIeトランザクションを前記プロセッサに伝達するステップと、及び
前記第2 PCIeトランザクションが、前記FPGAの前記第2ルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記FPGAの前記AMP-Fで前記第2 PCIeトランザクションを処理するステップと、をさらに含む。
説明326。説明324によると、本発明の実施例は、方法を含んでいる。説明324において、前記第2加速コマンドは、前記のプロセッサ上で実行中のASMから由来する。
説明327。説明324によると、本発明の実施例は、方法を含んでいる。説明324において、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1 PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
説明328。説明324によると、本発明の実施例は、方法を含んでいる。説明324において、
前記FPGAの構成モニタを使用して、前記FPGAの前記第1ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記FPGAの前記第1のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明329。説明281によると、本発明の実施例は、方法を含んでいる。説明281において、
FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記第1 PCIeトランザクションが加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1 PCIeトランザクションをストレージデバイスに伝達するステップを含む。
説明330。説明329によると、本発明の実施例は、方法を含んでいる。説明329において、
前記FPGAの前記ルートポートで、前記ストレージデバイスから第2 PCIeトランザクションを受信するステップと、
前記FPGAで前記第2 PCIeトランザクションが前記FPGAのルートポートと関連されたダウンストリームFAR内のアドレスと関連されるか否かを判断することにより、前記第2PCIeトランザクションが、前記加速コマンドか否かを判断するステップと、
前記第2 PCIeトランザクションが、前記加速コマンドか否かを判断することに、少なくとも部分的に基づいて、前記第2 PCIeトランザクションを前記FPGAの前記APM-Fで処理するステップと、及び
前記第2 PCIeトランザクションが、前記加速コマンドではないか判断することに、少なくとも部分的に基づいて、前記FPGAの前記第1エンドポイントを使用して前記第2 PCIeトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
説明331。説明330によると、本発明の実施例は、方法を含んでいる。説明330において、
前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、及び
前記ダウンストリームFARを前記FPGAの前記ルートポートと連結するステップと、をさらに含む。
説明332。説明331によると、本発明の実施例は、方法を含んでいる。説明331において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明333。説明331によると、本発明の実施例は、方法を含んでいる。説明331において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMはダウンストリームFARを含む。
説明334。説明329によると、本発明の実施例は、方法を含んでいる。説明329において、前記第1 PCIeトランザクションは、前記プロセッサ上で実行中のASMから由来する。
説明335。説明329によると、本発明の実施例は、方法を含んでいる。説明329において、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1 PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
説明336。説明329によると、本発明の実施例は、方法を含んでいる。説明329において、
前記FPGAの構成モニタを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記FPGAの前記第1エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明337。本発明の実施例は、方法を含んでいる。方法は、
第1ブリッジコンポーネントで、プロセッサからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記第1ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記加速コマンドであると判断することについて、少なくとも部分的に基づいて、前記PCIeトランザクションを加速モジュールに伝達するステップと、及び
前記PCIeトランザクションが、前記加速コマンドではないと判断することに少なくとも部分的に基づいて、前記PCIeトランザクションをストレージデバイスに伝達するステップを包含し、
前記プロセッサ、前記加速モジュール及び前記ストレージ装デバイスは、PCIeバスを使用して通信する。
説明338。説明337によると、本発明の実施例は、方法を含んでいる。説明337において、
前記加速モジュールは、FPGAを使用して具現され、
前記ストレージデバイスは、SSDを含む。
説明339。説明337によると、本発明の実施例は、方法を含んでいる。説明337において、
前記第1ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが第1ブリッジコンポーネントのアップストリームポートに関連されたアップストリームFAR内のアドレスと関連されているか否かを判断するステップと、をさらに含む。
説明340。説明339によると、本発明の実施例は、方法を含んでいる。説明339において、
前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、及び
前記アップストリームFARを前記第1ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む。
説明341。説明340によると、本発明の実施例は、方法を含んでいる。説明340において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明342。説明340によると、本発明の実施例は、方法を含んでいる。説明340において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記アップストリームFARを含む。
説明343。説明337によると、本発明の実施例は、方法を含んでいる。説明337において、
前記第1ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって露出される仮想機能(VF)と関連されるか否かを判断するステップを含む。
説明344。説明343によると、本発明の実施例は、方法を含んでいる。説明343において、前記PCIeトランザクションが前記ストレージデバイスによって露出される仮想機能(VF)と関連されるか否かを判断するステップは、前記PCIeトランザクションが前記VFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
説明345。説明344によると、本発明の実施例は、方法を含んでいる。説明344において、
前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、及び
前記VFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む。
説明346。説明345によると、本発明の実施例は、方法を含んでいる。説明345において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明347。説明345によると、本発明の実施例は、方法を含んでいる。説明345において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記VFの前記識別子を含む。
説明348。説明337によると、本発明の実施例は、方法を含んでいる。説明337において、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって露出される物理機能(PF)と関連されるか否かを判断するステップを含む。
説明349。説明348によると、本発明の実施例は、方法を含んでいる。説明348において、前記PCIeトランザクションが前記ストレージデバイスによって露出される物理機能(PF)と関連されるか否かを判断するステップは、前記PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
説明350。説明349によると、本発明の実施例は、方法を含んでいる。説明349において、
前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記PFの前記識別子を受信するステップと、及び
前記PFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む。
説明351。説明350によると、本発明の実施例は、方法を含んでいる。説明350において、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びイSMバスを含むセットから得られる。
説明352。説明350によると、本発明の実施例は、方法を含んでいる。説明350において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記PFの前記識別子を含む。
説明353。説明337によると、本発明の実施例は、方法を含んでいる。説明337において、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが前記第1ブリッジコンポーネントの第1 PFの識別子を有するタグを包含するか、又は、前記第1ブリッジコンポーネントの第2 PFの識別子を有するタグを包含するか否かを判断するステップを含む。
説明354。説明353によると、本発明の実施例は、方法を含んでいる。説明353において、
前記第1ブリッジ構成要素の構成モニタを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記第1構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明355。説明337によると、本発明の実施例は、方法を含んでいる。説明337において、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが、前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記第1コンポーネントの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断するステップを含む。
説明356。説明355によると、本発明の実施例は、方法を含んでいる。説明355において、
前記第1ブリッジ構成要素の構成モニタを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第1構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明357。本発明の実施例は、方法を含んでいる。方法は、
第2ブリッジコンポーネントでストレージからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記第2ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記加速コマンドであると判断することについて、少なくとも部分的に基づいて、前記PCIeトランザクションを加速モジュールに伝達するステップと、及び
前記PCIeトランザクションが、前記加速コマンドではないと判断することに少なくとも部分的に基づいて、前記PCIeトランザクションをストレージデバイスに伝達するステップを包含し、
前記プロセッサ、前記加速モジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
説明358。説明357によると、本発明の実施例は、方法を含んでいる。説明357において、
前記加速モジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
説明359。説明357によると、本発明の実施例は、方法を含んでいる。説明357において、
前記第2ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記第2ブリッジコンポーネントにおいて、前記第2 PCIeトランザクションが前記第2ブリッジコンポーネントのダウンストリームポートと関連されたダウンストリームFAR内のアドレスと関連されているか否かを判断するステップと、をさらに含む。
説明360。説明359によると、本発明の実施例は、方法を含んでいる。説明359において、
前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、及び
前記ダウンストリームFARを前記第2ブリッジコンポーネントの前記ダウンストリームポートと連結するステップと、をさらに含む。
説明361。説明360によると、本発明の実施例は、方法を含んでいる。説明360において、前記第2ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明362。説明360によると、本発明の実施例は、方法を含んでいる。説明360において、前記第2のブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記ダウンストリームFARを含む。
説明363。説明357によると、本発明の実施例は、方法を含んでいる。説明357において、前記第2ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが第1ルートポイント及び第2ルートポイントを含む前記第2ブリッジコンポーネントの前記第2ルートポートで受信されるか否かを判断するステップを含む。
説明364。本発明の実施例は、方法を含んでいる。方法は、
ストレージデバイスで加速モジュールから第1 PCIeトランザクションを受信するステップと、
前記第1 PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第1 PCIeトランザクションが前記仮想コマンドであるかを判断することに、少なくとも部分的に基づいて、
前記ストレージデバイスのAPM-Sを使用して、第2 PCIeトランザクションを生成するステップと、及び
前記第2 PCIeトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップを包含し、
プロセッサ、前記加速モジュール及び前記ストレージデバイスは、PCIeバスを使用して通信し、
前記加速モジュールは、前記プロセッサと関連されたメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
説明365。説明364によると、本発明の実施例は、方法を含んでいる。説明364において、前記ストレージデバイスは、SSDである。
説明366。説明365によると、本発明の実施例は、方法を含んでいる。説明365において、
ストレージデバイスの加速モジュールから第1 PCIeトランザクションを受信するステップは、前記SSDのエンドポイントにおいて、前記加速モジュールから前記第1 PCIeトランザクションを受信するステップを包含し、
前記第1 PCIeトランザクションが加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第1 PCIeトランザクションが前記加速モジュールの前記APM-Fから由来するか否かを判断するステップを包含し、
前記ストレージデバイスのAPM-Sを使用して、第2のPCIeトランザクションを生成するステップは、前記第1 PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2のPCIeトランザクションを生成するステップを包含し、
前記第2 PCIeトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップは、前記第2 PCIeトランザクションをストレージデバイスの前記エンドポイントから前記加速モジュールに伝送するステップを含む。
説明367。説明366によると、本発明の実施例は、方法を含んでいる。説明366において、前記第1 PCIeトランザクションは、前記プロセッサから由来され、特定のコマンドを含む。
説明368。説明366によると、本発明の実施例は、方法を含んでいる。説明366において、前記第1 PCIeトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第1 PCIeトランザクションが前記SSDのHILにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップと、をさらに含む。
説明360。説明368によると、本発明の実施例は、方法を含んでいる。説明368において、前記特定のコマンドは、前記のプロセッサ上で実行中のASMから由来する。
説明370。説明366によると、本発明の実施例は、方法を含んでいる。説明366において、
前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップと、をさらに含む。
説明371。説明370によると、本発明の実施例は、方法を含んでいる。説明370において、前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明372。説明370によると、本発明の実施例は、方法を含んでいる。説明370において、前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、PCIe VDMを使用して、前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを包含し、前記PCIe VDMはダウンストリームFARを含む。
説明373。説明370によると、本発明の実施例は、方法を含んでいる。説明370において、
アップストリームFARのように、前記ホストシステムアドレスの前記ブロックの第2サブセットを選択するステップと、及び
前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップと、をさらに含む。
説明374。説明373によると、本発明の実施例は、方法を含んでいる。説明373において、前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明375。説明373によると、本発明の実施例は、方法を含んでいる。説明373において、前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、PCIe VDMを使用して、前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを包含し、前記PCIe VDMはアップストリームFARを含む。
説明376。説明366によると、本発明の実施例は、方法を含んでいる。説明366において、
前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、及び
前記加速モジュールのルートポートを前記加速モジュールでプログラミングするステップと、をさらに含む。
説明377。説明376によると、本発明の実施例は、方法を含んでいる。説明376において、前記加速モジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを包含し、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明378。説明376によると、本発明の実施例は、方法を含んでいる。説明376において、前記加速モジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、PCIe VDMを使用して、前記加速モジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを包含し、前記PCIe VDMはダウンストリームFARを含む。
説明379。説明366によると、本発明の実施例は、方法を含んでいる。説明366において、
前記SSDの前記エンドポイントから前記加速モジュールから前記第1 PCIeトランザクションの結果を受信するステップと、及び
前記SSDの前記エンドポイントを使用して前記第1 PCIeトランザクションの前記の結果を前記プロセッサに伝達するステップと、をさらに含む。
説明380。説明376によると、本発明の実施例は、方法を含んでいる。説明376において、
前記SSDを露出する物理機能(PF)を提供するステップと、
前記加速モジュールを露出する仮想機能(VF)を提供するステップと、をさらに含む。
説明381。説明380によると、本発明の実施例は、方法を含んでいる。説明380において、前記加速モジュールのアップストリームポートを前記VFの識別子でプログラミングするステップと、をさらに含む。
説明382。説明366によると、本発明の実施例は、方法を含んでいる。説明366において、
前記SSDを露出する第1 PFを提供するステップと、及び
前記加速モジュールを露出する第2 PFを提供するステップと、をさらに含む。
説明383。説明382によると、本発明の実施例は、方法を含んでいる。説明382において、前記加速モジュールのアップストリームポートを前記第2のPFの識別子でプログラミングするステップと、をさらに含む。
説明384。説明365によると、本発明の実施例は、方法を含んでいる。説明365において、
ストレージデバイスの加速モジュールから第1 PCIeトランザクションを受信するステップは、前記SSDのエンドポイントにおいて、前記加速モジュールから前記第1 PCIeトランザクションを受信するステップを包含し、
前記第1 PCIeトランザクションが加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが第2エンドポイントで第1エンドポイント及び前記第2エンドポイントを含むSSDによって受信されるか否かを判断するステップを包含し、
前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップは、前記第1 PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2PCIeトランザクションを生成するステップを包含し、
前記第2 PCIeトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップは、前記第2 PCIeトランザクションを前記ストレージデバイスの前記エンドポイントから前記加速モジュールに伝送するステップを含む。
説明385。本発明の一実施例は、機械によって実行されるコマンドが格納されて非揮発性の記憶媒体を含む物品(article)を含む。その結果は、
加速モジュールで第1デバイスからPCIeトランザクションを受信するステップと、
前記PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記PCIeトランザクションが、前記仮想コマンドであるかを判断することに、少なくとも部分的に基づいて前記加速モジュールのAPM-Fで前記PCIeトランザクションを処理するステップと、
前記PCIeトランザクションが、前記仮想コマンドであるが否かを判断することに、少なくとも部分的に基づいて前記PCIeトランザクションを第2デバイスに伝送するステップを包含し、
前記加速モジュールは、前記プロセッサと関連されたメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援し、
前記プロセッサ、前記加速モジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
説明386。説明385によると、本発明の実施例は、物品を含む。説明385において、前記加速モジュールは、FPGAを使用して具現される。
説明387。説明386によると、本発明の実施例は、物品を含んでいる。説明386において、
前記FPGAで前記第1デバイスから前記PCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記PCIeトランザクションが、前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記FPGAの第1 PFの識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップを含む。
説明388。説明387によると、本発明の実施例は、物品を含んでいる。説明387において、
前記FPGAの前記アップストリームポートで前記プロセッサから第1 PCIeトランザクションを受信するステップと、及び
前記FPGAの前記ダウンストリームプロセッサを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
説明389。説明387によると、本発明の実施例は、物品を含んでいる。説明387において、
前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、及び
前記ダウンストリームFARを前記FPGAの前記ダウンストリームポートと連結するステップと、をさらに含む方法。
説明390。説明389によると、本発明の実施例は、物品を含んでいる。説明389において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明391。説明389によると、本発明の実施例は、物品を含んでいる。説明389において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記ダウンストリームFARを含む。
説明392。説明387によると、本発明の実施例は、物品を含んでいる。説明387において、前記FPGAの前記ダウンストリームポートを使用して、前記ストレージデバイスに前記第2PCIeのトランザクションの結果を送信するステップと、をさらに含む。
説明393。説明387によると、本発明の実施例は、物品を含んでいる。説明387において、前記FPGAの前記アップストリームポートを使用して前記プロセッサに、前記第2 PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
説明394。説明387によると、本発明の実施例は、物品を含んでいる。説明387において、
前記FPGAの前記アップストリームポートで前記プロセッサから第1 PCIeトランザクションを受信するステップと、
前記第1 PCIeトランザクションが前記FPGAの前記アップストリームポートと関連されたアップストリームFAR内の第2アドレスと関連されているか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップと、
前記第1 PCIeトランザクションが前記第2の加速コマンドであると判断することに、少なくとも部分的に基づいて、前記FPGAの前記APM-Fで、前記第1 PCIeトランザクションを処理するステップと、及び
前記第1 PCIeトランザクションが前記第2の加速コマンドではないと判断することに少なくとも部分的に基づいて、前記FPGAの前記ダウンストリームポートを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
説明395。説明394によると、本発明の実施例は、物品を含んでいる。説明394において、前記第2加速コマンドは、前記のプロセッサ上で実行中のASMから由来する。
説明396。説明394によると、本発明の実施例は、物品を含んでいる。説明394において、
前記FPGAにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、及び
前記アップストリームFARを前記FPGAの前記アップストリームポートと連結するステップと、をさらに含む。
説明397。説明396によると、本発明の実施例は、物品を含んでいる。説明396において、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明398。説明396によると、本発明の実施例は、物品を含んでいる。説明396において、前記FPGAで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMはアップストリームFARを含む。
説明399。説明394によると、本発明の実施例は、物品を含んでいる。説明394において、前記FPGAの前記アップストリームを使用して前記第1 PCIeトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
説明400。説明394によると、本発明の実施例は、物品を含んでいる。説明394において、前記FPGAの前記アップストリームを使用して前記第1 PCIeトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
説明401。説明387によると、本発明の実施例は、物品を含んでいる。説明387において、
前記FPGAの前記アップストリームポートで前記プロセッサから第1 PCIeトランザクションを受信するステップと、
前記第1 PCIeトランザクションが前記ストレージデバイスによって露出する仮想機能(VF)と関連されているか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップと、
前記第1 PCIeトランザクションが前記第2加速コマンドであると判断することに、少なくとも部分的に基づいて、前記FPGAの前記APM-Fで、前記第1 PCIeトランザクションを処理するステップと、及び
前記第1 PCIeトランザクションが前記第2加速コマンドではないと判断することに少なくとも部分的に基づいて、前記FPGAの前記ダウンストリームポートを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
説明402。説明401によると、本発明の実施例は、物品を含んでいる。説明401において、前記第2加速コマンドは、前記プロセッサ上で実行中のASMから由来する。
説明403。説明401によると、本発明の実施例は、物品を含んでいる。説明401において、前記第1 PCIeトランザクションが前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記VFの前記識別子を有するタグを含んでいるか否かを判断するステップを含む。
説明404。説明403によると、本発明の実施例は、物品を含んでいる。説明403において、
前記FPGAにおいて、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、及び
前記ダウンストリームFARを前記FPGAの前記アップストリームポートに連結するステップと、をさらに含む方法。
説明405。説明404によると、本発明の実施例は、物品を含んでいる。説明404において、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明406。説明404によると、本発明の実施例は、物品を含んでいる。説明404において、前記FPGAで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記VFの前記識別子を含む。
説明407。説明401によると、本発明の実施例は、物品を含んでいる。説明401において、前記FPGAのアップストリームポートを使用して前記プロセッサに、前記第1 PCIeのトランザクションの結果を伝送するステップを含む。
説明408。説明387によると、本発明の実施例は、物品を含んでいる。説明387において、
前記FPGAの前記アップストリームポートで前記プロセッサから第1 PCIeトランザクションを受信するステップと、
前記第1 PCIeトランザクションが前記ストレージデバイスによって露出する仮想機能(VF)と関連されているか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップと、
前記第1 PCIeトランザクションが前記第2加速コマンドであると判断することに、少なくとも部分的に基づいて、前記FPGAの前記APM-Fで、前記第1 PCIeトランザクションを処理するステップと、及び
前記第1 PCIeトランザクションが前記第2加速コマンドではないと判断することに少なくとも部分的に基づいて、前記FPGAの前記ダウンストリームポートを使用して前記第1 PCIeトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
説明409。説明408によると、本発明の実施例は、物品を含んでいる。説明408において、前記第2加速コマンドは、前記プロセッサ上で実行中のASMから由来する。
説明410。説明408によると、本発明の実施例は、物品を含んでいる。説明408において、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
説明411。説明410によると、本発明の実施例は、物品を含んでいる。説明410において、
前記ストレージデバイスから、前記FPGAにおいて、前記PFの前記識別子を受信するステップと、及び
前記PFの前記識別子を前記FPGAの前記アップストリームポートと連結するステップと、をさらに含む。
説明412。説明411によると、本発明の実施例は、物品を含んでいる。説明411において、前記FPGAにおいて、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明413。説明411によると、本発明の実施例は、物品を含んでいる。説明411において、前記FPGAで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記PFの前記識別子を含む。
説明414。説明408によると、本発明の実施例は、物品を含んでいる。説明408において、前記FPGAの前記アップストリームを使用して前記第1 PCIeトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
説明415。説明386によると、本発明の実施例は、物品を含んでいる。説明386において、
FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記PCIeトランザクションが、前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記FPGAの第1 PFの識別子を有するタグを含んでいるか、又は前記FPGAの第2 PFの第2識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1 PCIeトランザクションを第2のストレージデバイスに伝達するステップを含む。
説明416。説明415によると、本発明の実施例は、物品を含んでいる。説明415において、
前記FPGAの前記ルートポートで、前記ストレージデバイスから第2 PCIeトランザクションを受信するステップと、
前記FPGAで前記第2 PCIeトランザクションが、前記FPGAの前記ルートポートに関連されたダウンストリームFAR内のアドレスと関連されるか否かを判断することにより、前記第2PCIeトランザクションが第2加速コマンドか否かを判断するステップと、
前記第2 PCIeトランザクションが前記第2の加速コマンドであると判断することに、少なくとも部分的に基づいて、前記FPGAの前記APM-Fで、前記第1 PCIeトランザクションを処理するステップと、及び
前記第2 PCIeトランザクションが前記第2の加速コマンドではないと判断することに少なくとも部分的に基づいて、前記FPGAの前記エンドポイントを使用して前記第2 PCIeトランザクションを前記プロセッサに伝達するステップを含む。
説明417。説明416によると、本発明の実施例は、物品を含んでいる。説明416において、
前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、及び
前記ダウンストリームFARを前記FPGAの前記ルートポートと連結するステップを含む。
説明418。説明417によると、本発明の実施例は、物品を含んでいる。説明417において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明419。説明417によると、本発明の実施例は、物品を含んでいる。説明417において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記ダウンストリームFARを含む。
説明420。説明415によると、本発明の実施例は、物品を含んでいる。説明415において、前記第2加速コマンドは、前記のプロセッサ上で実行中のASMから由来する。
説明421。説明415によると、本発明の実施例は、物品を含んでいる。説明415において、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1 PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
説明422。説明415によると、本発明の実施例は、物品を含んでいる。説明415において、
前記FPGAの構成モニタを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記FPGAのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明423。説明386によると、本発明の実施例は、物品を含んでいる。説明386において、
FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAのエンドポイントにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記PCIeトランザクションが、前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが前記FPGAの第1 PFの第1識別子を有するタグを含んでいるか、又は前記FPGAの第2 PFの第2識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1 PCIeトランザクションを第2ストレージデバイスに伝達するステップを含む。
説明424。説明423によると、本発明の実施例は、物品を含んでいる。説明423において、
前記FPGAにおいて、前記ストレージデバイスから第2 PCIeトランザクションを受信するステップと、
前記第2 PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断するステップと、
前記第2 PCIeトランザクションが、前記FPGAの前記第1のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記エンドポイントを使用して前記第2 PCIeトランザクションを前記プロセッサに伝達するステップと、及び
前記第2 PCIeトランザクションが、前記FPGAの前記第2のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記FPGAの前記AMP-Fで前記第2 PCIeトランザクションを処理するステップと、をさらに含む。
説明425。説明423によると、本発明の実施例は、物品を含んでいる。説明423において、前記第2加速コマンドは、前記のプロセッサ上で実行中のASMから由来する。
説明426。説明423によると、本発明の実施例は、物品を含んでいる。説明423において、前記FPGAのエンドポイントを使用して、前記プロセッサに、前記第1 PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
説明427。説明423によると、本発明の実施例は、物品を含んでいる。説明423において、
前記FPGAの構成モニタを使用して、前記FPGAの前記第1のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記FPGAの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明428。説明386によると、本発明の実施例は、物品を含んでいる。説明386において、
FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記FPGAで前記第1 PCIeトランザクションが前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるかか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2デバイスに伝達するステップは、第1ルートポート及び第2ルートポートを含む前記FPGAの第1ルートポートを使用して前記第1 PCIeトランザクションをストレージデバイスに伝達するステップを含む。
説明429。説明428によると、本発明の実施例は、物品を含んでいる。説明428において、
前記FPGAにおいて、前記記憶装置から第2 PCIeトランザクションを受信するステップと、
前記第2 PCIeトランザクションが前記FPGAの第1ルートポートで受信されるか、又は前記FPGAの第2ルートポートで受信されるか否かを判断することにより、前記第2PCIeトランザクションが、前記加速コマンドか否かを判断するステップと、
前記第2 PCIeトランザクションが、前記FPGAの前記第1のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記第1エンドポイントを使用して前記第2 PCIeトランザクションを前記プロセッサに伝達するステップと、及び
前記第2 PCIeトランザクションが、前記FPGAの前記第2ルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記FPGAの前記AMP-Fで前記第2 PCIeトランザクションを処理するステップと、をさらに含む。
説明430。説明428によると、本発明の実施例は、物品を含んでいる。説明428において、前記第2加速コマンドは、前記のプロセッサ上で実行中のASMに由来する。
説明431。説明428によると、本発明の実施例は、物品を含んでいる。説明428において、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1 PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
説明432。説明428によると、本発明の実施例は、物品を含んでいる。説明428において、
前記FPGAの構成モニタを使用して、前記FPGAの前記第1ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記FPGAの前記第1エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明433。説明386によると、本発明の実施例は、物品を含んでいる。説明386において、
FPGAで第1デバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップは、前記FPGAにおいて、前記プロセッサから第1 PCIeトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記第1 PCIeトランザクションが加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記FPGAの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第1 PCIeトランザクションが第2加速コマンドか否かを判断するステップを包含し、
前記PCIeトランザクションを前記第2デバイスに転送するステップは、前記FPGAのルートポートを使用して前記第1 PCIeトランザクションをストレージデバイスに伝達するステップを含む。
説明434。説明433によると、本発明の実施例は、物品を含んでいる。説明433において、
前記FPGAの前記ルートポートで、前記ストレージデバイスから第2 PCIeトランザクションを受信するステップと、
前記FPGAで前記第2 PCIeトランザクションが前記FPGAのルートポートと関連されたダウンストリームFAR内のアドレスと関連されているか否かを判断することにより、前記第2PCIeトランザクションが、前記加速コマンドか否かを判断するステップと、
前記第2 PCIeトランザクションが、前記加速コマンドであるかを判断することに、少なくとも部分的に基づいて、前記第2 PCIeトランザクションを前記FPGAの前記APM-Fで処理するステップと、及び
前記第2 PCIeトランザクションが、前記加速コマンドではないか判断することに、少なくとも部分的に基づいて、前記FPGAの前記第1エンドポイントを使用して前記第2 PCIeトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
説明435。説明434によると、本発明の実施例は、物品を含んでいる。説明434において、
前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、及び
前記ダウンストリームFARを前記FPGAの前記ルートポートと連結するステップと、をさらに含む。
説明436。説明435によると、本発明の実施例は、物品を含んでいる。説明435において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記FPGAにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明437。説明435によると、本発明の実施例は、物品を含んでいる。説明435において、前記FPGAで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMはダウンストリームFARを含む。
説明438。説明433によると、本発明の実施例は、物品を含んでいる。説明433において、前記第1 PCIeトランザクションは、前記プロセッサ上で実行中のASMから由来する。
説明439。説明433によると、本発明の実施例は、物品を含んでいる。説明433において、前記FPGAの第2エンドポイントを使用して、前記プロセッサに、前記第1 PCIeのトランザクションの結果を伝送するステップと、をさらに含む。
説明440。説明433によると、本発明の実施例は、物品を含んでいる。説明433において、
前記FPGAの構成モニタを使用して、前記FPGAの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記FPGAの前記第1エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明441。本発明の一実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品(article)を含んでいる。その結果は、
ストレージデバイスで加速モジュールからPCIeトランザクションを受信するステップと、
前記第1 PCIeトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第1 PCIeトランザクションが前記仮想コマンドであるかを判断することに、少なくとも部分的に基づいて、前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップと、
前記第2 PCIeトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップと、
前記第1 PCIeトランザクションが前記仮想コマンドではないかを判断することに、少なくとも部分的に基づいて前記ストレージデバイスに格納されたデータに対して前記第1 PCIeトランザクションを実行するステップを包含し、
プロセッサ、前記加速モジュール及び前記ストレージデバイスは、PCIeバスを使用して通信し、
前記加速モジュールは、前記プロセッサと関連されたメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
説明442。説明441によると、本発明の実施例は、物品を含んでいる。説明441において、前記ストレージデバイスはSSDである。
説明443。説明442によると、本発明の実施例は、物品を含んでいる。説明442において、
ストレージデバイスの加速モジュールから第1 PCIeトランザクションを受信するステップは、前記SSDエンドポイントにおいて、前記加速モジュールから前記第1 PCIeトランザクションを受信するステップを包含し、
前記第1 PCIeトランザクションが加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第1 PCIeトランザクションが前記加速モジュールの前記APM-Fから由来するか否かを判断するステップを包含し、
前記ストレージデバイスのAPM-Sを使用して、第2PCIeトランザクションを生成するステップは、前記第1 PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2PCIeトランザクションを生成するステップを包含し、
前記第2 PCIeトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップは、前記第2 PCIeトランザクションを前記ストレージデバイスの前記エンドポイントから前記加速モジュールに伝送するステップを含む。
説明444。説明443によると、本発明の実施例は、物品を含んでいる。説明443において、前記第1 PCIeトランザクションは、前記プロセッサから由来して、特定のコマンドを含む。
説明445。説明443によると、本発明の実施例は、物品を含んでいる。説明443において、前記第1 PCIeトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第1 PCIeトランザクションが前記SSDのHILにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップと、をさらに含む。
説明446。説明445によると、本発明の実施例は、物品を含んでいる。説明445において、前記特定のコマンドは、前記のプロセッサ上で実行中のASMから由来する。
説明447。説明443によると、本発明の実施例は、物品を含んでいる。説明443において、
前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップと、をさらに含む。
説明448。説明447によると、本発明の実施例は、物品を含んでいる。説明447において、前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明449。説明447によると、本発明の実施例は、物品を含んでいる。説明447において、前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップは、PCIe VDMを使用して、前記加速モジュールのダウンストリームポートを前記ダウンストリームFARでプログラミングするステップを包含し、前記PCIe VDMはダウンストリームFARを含む。
説明450。説明447によると、本発明の実施例は、物品を含んでいる。説明447において、
アップストリームFARのように、前記ホストシステムアドレスの前記ブロックの第2サブセットを選択するステップと、
前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップと。をさらに含む。
説明451。説明450によると、本発明の実施例は、物品を含んでいる。説明450において、前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明452。説明450によると、本発明の実施例は、物品を含んでいる。説明450において、前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップは、PCIe VDMを使用して、前記加速モジュールのアップストリームポートを前記アップストリームFARでプログラミングするステップを包含し、前記PCIe VDMはアップストリームFARを含む。
説明453。説明443によると、本発明の実施例は、物品を含んでいる。説明443において、
前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームFARのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、
前記加速モジュールのルートポートを前記加速モジュールでプログラミングするステップと、をさらに含む。
説明454。説明453によると、本発明の実施例は、物品を含んでいる。説明453において、前記加速モジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを包含し、前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明455。説明453によると、本発明の実施例は、物品を含んでいる。説明453において、前記加速モジュールのルートポートを前記ダウンストリームFARでプログラミングするステップは、PCIe VDMを使用して、前記加速モジュールの前記ルートポートを前記ダウンストリームFARでプログラミングするステップを包含し、前記PCIe VDMはダウンストリームFARを含む。
説明456。説明443によると、本発明の実施例は、物品を含んでいる。説明443において、前記SSDの前記エンドポイントで、前記加速モジュールから前記第1 PCIeトランザクションの結果を受信するステップと、
前記SSDの前記エンドポイントを使用して前記第1 PCIeトランザクションの前記結果を前記プロセッサに伝達するステップと、をさらに含む。
説明457。説明443によると、本発明の実施例は、物品を含んでいる。説明443において、
前記SSDを露出する物理機能(PF)を提供するステップと、
前記加速モジュールを露出する仮想機能(VF)を提供するステップと、をさらに含む。
説明458。説明457によると、本発明の実施例は、物品を含んでいる。説明457において、前記加速モジュールのアップストリームポートを前記VFの識別子でプログラミングするステップと、をさらに含む。
説明459。説明443によると、本発明の実施例は、物品を含んでいる。説明443において、
前記SSDを露出する第1 PFを提供するステップと、
前記加速モジュールを露出する第2 PFを提供するステップと、をさらに含む。
説明460。説明459によると、本発明の実施例は、物品を含んでいる。説明459において、前記加速モジュールのアップストリームポートを前記第2PFの識別子でプログラミングするステップと、をさらに含む。
説明461。説明442によると、本発明の実施例は、物品を含んでいる。説明442において、
ストレージデバイスの加速モジュールから第1 PCIeトランザクションを受信するステップは、前記SSDのエンドポイントにおいて、前記加速モジュールから前記第1 PCIeトランザクションを受信するステップを包含し、
前記第1 PCIeトランザクションが加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが第2エンドポイントで第1エンドポイント及び前記第2エンドポイントを含むSSDによって受信されるか否かを判断するステップを包含し、
前記ストレージデバイスのAPM-Sを使用して、第2のPCIeトランザクションを生成するステップは、前記第1 PCIeトランザクションに応答して、前記SSDのAPM-Sにより、前記第2のPCIeトランザクションを生成するステップを包含し、
前記第2 PCIeトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップは、前記第2 PCIeトランザクションを前記ストレージデバイスの前記エンドポイントから前記加速モジュールに伝送するステップを含む。
説明462。本発明の一実施例は、機械によって実行されるコマンドが格納されて非揮発性の記憶媒体を含む物品(article)を含んでいる。その結果は、
第1ブリッジコンポーネントで第1デバイスからPCIeトランザクションを受信するステップと、
前記第1ブリッジコンポーネントで、前記PCIeトランザクションが仮想コマンドであるかど否かを判断するステップと、
前記PCIeトランザクションが、前記仮想コマンドであるかを判断することに、少なくとも部分的に基づいて前記PCIeトランザクションを加速モジュールに伝達するステップと、
前記PCIeトランザクションが、前記仮想コマンドではないかを判断することに、少なくとも部分的に基づいて前記PCIeトランザクションをストレージデバイスに伝達するステップを包含し、
前記プロセッサ、前記第1ブリッジのコンポーネント、前記加速モジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
説明463。説明462によると、本発明の実施例は、物品を含んでいる。説明462において、
前記加速モジュールは、FPGAを使用して具現され、
前記ストレージデバイスは、SSDを含む。
説明464。説明462によると、本発明の実施例は、物品を含んでいる。説明462において、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが第1ブリッジコンポーネントのアップストリームポートと関連されたアップストリームFAR内のアドレスと関連されているか否かを判断するステップと、をさらに含む。
説明465。説明464によると、本発明の実施例は、物品を含んでいる。説明464において、
前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスから前記アップストリームFARを受信するステップと、
前記アップストリームFARを前記第1ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む。
説明466。説明465によると、本発明の実施例は、物品を含んでいる。説明465において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明467。説明465によると、本発明の実施例は、物品を含んでいる。説明465において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記アップストリームFARを含む。
説明468。説明462によると、本発明の実施例は、物品を含んでいる。説明462において、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって露出される仮想機能(VF)と関連されるか否かを判断するステップを含む。
説明469。説明468によると、本発明の実施例は、物品を含んでいる。説明468において、前記PCIeトランザクションが前記ストレージデバイスによって露出される仮想機能(VF)と関連されるか否かを判断するステップは、前記PCIeトランザクションが前記VFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
説明470。説明469によると、本発明の実施例は、物品を含んでいる。説明469において、
前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップと、
前記VFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む方法。
説明471。説明470によると、本発明の実施例は、物品を含んでいる。説明470において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記VFの前記識別子を受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明472。説明470によると、本発明の実施例は、物品を含んでいる。説明470において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記VFの前記識別子を受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記VFの前記識別子を含む。
説明473。説明462によると、本発明の実施例は、物品を含んでいる。説明462において、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが前記ストレージデバイスによって露出される物理機能(PF)と関連されるか否かを判断するステップを含む。
説明474。説明473によると、本発明の実施例は、物品を含んでいる。説明473において、前記PCIeトランザクションが前記ストレージデバイスによって露出される物理機能(PF)と関連されるか否かを判断するステップは、前記PCIeトランザクションが前記PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
説明475。説明474によると、本発明の実施例は、物品を含んでいる。説明474において、
前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記PFの前記識別子を受信するステップと、
前記PFの前記識別子を前記第1ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む方法。
説明476。説明475によると、本発明の実施例は、物品を含んでいる。説明475において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記第1ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記PFの前記識別子を受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明477。説明475によると、本発明の実施例は、物品を含んでいる。説明475において、前記第1ブリッジコンポーネントで、前記ストレージデバイスから前記PFの前記識別子を受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記PFの前記識別子を含む。
説明478。説明462によると、本発明の実施例は、物品を含んでいる。説明462において、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが前記第1ブリッジコンポーネントの第1 PFの識別子を有するタグを含んでいるか、又は前記第1ブリッジコンポーネントの第2 PFの識別子を有するタグを含んでいるか否かを判断するステップを含む。
説明479。説明478によると、本発明の実施例は、物品を含んでいる。説明478において、
前記第1ブリッジコンポーネントの構成モニタを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第1コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明480。説明462によると、本発明の実施例は、物品を含んでいる。説明462において、前記第1ブリッジコンポーネントで、前記PCIeトランザクションが、前記加速コマンドか否かを判断するステップは、前記第1 PCIeトランザクションが第1エンドポイント及び第2エンドポイントを含む前記第1コンポーネントの第1エンドポイントにおいて、前記プロセッサから受信されるか否かを判断するステップを含む。
説明481。説明480によると、本発明の実施例は、物品を含んでいる。説明480において、
前記第1ブリッジコンポーネントの構成モニタを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第1コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
説明482。本発明の一実施例は、機械によって実行されるコマンドが格納されて非揮発性の記憶媒体を含む物品(article)を含んでいる。その結果は、
第2ブリッジコンポーネントでストレージデバイスからPCIe(Peripheral Component Interconnect Exchange)トランザクションを受信するステップと、
前記第2ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップと、
前記PCIeトランザクションが、前記加速コマンドであると判断することについて、少なくとも部分的に基づいて、前記PCIeトランザクションを加速モジュールに伝達するステップと、
前記PCIeトランザクションが、前記加速コマンドではないと判断することに少なくとも部分的に基づいて、前記PCIeトランザクションをプロセッサに伝達するステップを包含し、
前記プロセッサ、前記第2ブリッジコンポーネント、前記加速モジュール及び前記ストレージデバイスは、PCIeバスを使用して通信する。
説明483。説明482によると、本発明の実施例は、物品を含んでいる。説明482において、
前記加速モジュールは、FPGA(Field Programmable Gate Array)を使用して具現され、
前記ストレージデバイスは、SSD(Solid State Drive)を含む。
説明484。説明482によると、本発明の実施例は、物品を含んでいる。説明482において、前記第2ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記第2ブリッジコンポーネントにおいて、前記第2 PCIeトランザクションが前記第2ブリッジコンポーネントのダウンストリームポートと関連されたダウンストリームFAR内のアドレスと関連されているか否かを判断するステップと、をさらに含む。
説明485。説明484によると、本発明の実施例は、物品を含んでいる。説明484において、
前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
前記ダウンストリームFARを前記第2ブリッジコンポーネントの前記ダウンストリームポートと連結するステップと、をさらに含む。
説明486。説明485によると、本発明の実施例は、物品を含んでいる。説明485において、前記第2ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記第2ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームFARを受信するステップを包含し、
前記サイドバンドバスはI2Cバス及びSMバスを含むセットから得られる。
説明487。説明485によると、本発明の実施例は、物品を含んでいる。説明485において、前記第2ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームFARを受信するステップは、前記ストレージデバイスからPCIe VDMを受信するステップを包含し、
前記PCIe VDMは、前記ダウンストリームFARを含む。
説明488。説明482によると、本発明の実施例は、物品を含んでいる。説明482において、前記第2ブリッジコンポーネントで、前記PCIeトランザクションが加速コマンドか否かを判断するステップは、前記PCIeトランザクションが第1ルートポイント及び第2ルートポイントを含む前記第2ブリッジコンポーネントの前記第2ルートポートで受信されるか否かを判断するステップを含む。
結論として、本明細書に記述された実施例の多様な変更の観点から、この詳細な説明及び添付された資料は、単に例示的なものとして意図されており、本発明の範囲を制限するものとはみなされてはならない。従って、本発明として請求されるのは、後述する請求の範囲、その均等物の範囲及び思想内に有り得る全ての変形である
本発明は、FPGAベースの低コスト、低消費電力を必要とするSSD性能の加速化のためのシステムに有用である。
105 機械(又はマシン)
110 プロセッサ
115 デバイスドライバ
120 SSD、ストレージデバイス
125 アプリケーション
130 アプリケーションサービスマネージャ(ASM)
135 メモリコントローラ
140 主メモリ
145 加速モジュール(又はFPGA)
205 クロック
210 ネットワークコネクタ
215 バス
220 ユーザインタフェース
225 I/Oエンジン
305、1105、1310、1505 エンドポイント(EP)
310 ホストインタフェース層(HIL)
315 SSD加速プラットフォームマネージャ(APM-S)
320 フラッシュ変換階層(FTL)
325 フラッシュメディア
330 アップストリームポート(USP)
335 ダウンストリームポート(DSP)
340 FPGA加速プラットフォームマネージャ(APM-F)
345 スケジューラ
350-1、350-2 加速エンジン
355 メッセージメールボックス
360 ダウンストリームフィルタ(DSF)
365 サイドバンドバス(ICバス、又はSMバス)
370 SSDコントローラ
405、805、810 ブロック
410 サブセット(NVMe向け)
415 他のサブセット420 サブセット、ダウンストリームFAR(フィルタアドレスレンジ)
505 アップストリームフィルタ(USF)
605 サブセット、アップストリームFAR(フィルタアドレスレンジ)
705、905、1115、1120 物理機能(PF、physical_function)
710 仮想機能(VF、virtual_function))
715 VFフィルタ、PFフィルタ
1005、1010、1215,1220、1405、2105、2125、2203、2206、2215、2221,2227,2230など ブロック
1110、1305 ルートポート(RP)
1125 構成モニタ、構成モジュール
1205、1215、1220、1405 メモリアドレスのブロック
1210 FPGAメモリアドレスマップ1
1410 FPGAメモリアドレスマップ2
1905、1910 ブリッジ構成要素(ブリッジコンポーネント)
2005、2020 PCIeトランザクション
2015 加速コマンド
2030、2035、2040 結果
BAR ベースアドレスレジスタ(Base Address Register)
FTL Flash Translation Layer
HIL ホストインタフェースロジック
OS オペレーティングシステム
RT ランタイム
TLP トランザクション階層パケット(PCIeトランザクション)
VDM ベンダ定義メッセージ(Vendor Defined Messages)

Claims (20)

  1. アプリケーションを実行するプロセッサと、
    前記プロセッサ上で実行中の前記アプリケーションに関連したデータを格納するメモリと、
    前記プロセッサと通信するための第1インタフェースと、
    ストレージデバイスと通信するための第2インタフェースと、
    ハードウェアを使用して具現されて加速コマンドを実行するための第1加速マネージャを含む加速モジュールと、
    前記ストレージデバイスとを備え、
    前記ストレージデバイスは、
    前記加速モジュールと通信するための前記ストレージデバイスの第3インタフェースと、
    前記ストレージデバイスの動作を管理するためのコントローラと、
    前記アプリケーションに対するアプリケーションデータを格納するためのストアと、
    前記加速コマンドを実行する際に前記第1加速マネージャを補助するための第2加速マネージャと、を含み、
    前記プロセッサ、前記加速モジュール、及び前記ストレージデバイスは、少なくとも1つのバスを介して通信し、
    前記加速モジュールは、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する、ことを特徴とするシステム。
  2. 前記プロセッサと前記加速モジュールとの間の通信を連結(bridging)し、前記第1インタフェースを含む第1ブリッジコンポーネントと、
    前記加速モジュールと前記ストレージデバイスとの間の通信を連結し、前記第2インタフェースを含む第2ブリッジコンポーネントと、をさらに備える、ことを特徴とする請求項1に記載のシステム。
  3. 前記加速モジュールは、FPGA(Field Programmable Gate Array、フィールドプログラマブルゲートアレイ)を使用して具現され、
    前記加速モジュールは、前記第1インタフェース及び前記第2インタフェースを包含し、
    前記ストレージデバイスは、SSD(Solid State Drive、ソリッドステートドライブ)を包含する、ことを特徴とする請求項1に記載のシステム。
  4. 前記第2インタフェースは、構成空間を支援し、
    前記FPGAは、第4インタフェース、第5インタフェース、及び前記第2インタフェースと関連されたダウンストリームフィルタ(DSF)を包含し、
    前記ダウンストリームフィルタは、前記SSDから受信された第1加速コマンドをインタセプトするように動作して、前記第1加速マネージャへダウンストリームFAR(フィルタアドレスレンジ)と関連される前記第1加速コマンドを伝達するように動作し、
    前記FPGAは、前記第4インタフェースに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作して前記第5インタフェースに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作して、前記プロセッサから受信された第1トランザクションを、前記SSDに伝達するように動作して、前記プロセッサから受信された第2加速コマンドを前記第1加速マネージャに伝達するよう動作し、
    前記第1トランザクションは、前記第4インタフェースの第1識別子と関連され、
    前記第2加速コマンドは、前記第5インタフェースの第2識別子と関連される、ことを特徴とする請求項3に記載のシステム。
  5. 前記SSDは、前記FPGAから前記ダウンストリームFARを含むFPGAアドレスのブロックを要請するように動作し、
    前記ホストシステムアドレスの前記第2ブロックは、少なくとも前記FPGAアドレスのブロックと同じ大きさを有し、
    前記コントローラは、前記ダウンストリームFARとして、前記FPGAアドレスのブロックのサブセットを選択するように動作する、ことを特徴とする請求項4に記載のシステム。
  6. 前記コントローラは、前記ダウンストリームフィルタを、前記ダウンストリームFARを用いてプログラミングするように動作する、ことを特徴とする請求項5に記載のシステム。
  7. 前記第1加速マネージャは、前記第1インタフェースを介して前記プロセッサに結果を伝送するように動作する、ことを特徴とする請求項4に記載のシステム。
  8. ハードウェアを利用して具現された加速モジュールであって、
    加速コマンドを実行するための第1加速マネージャと、
    アプリケーションを実行するプロセッサと通信するための第1インタフェースと、
    前記加速コマンドを実行する際に前記第1加速マネージャを補助するための第2加速マネージャを含むストレージデバイスと通信するための第2インタフェースと、を備え、
    前記加速モジュールは、少なくとも1つのバスを使用して、前記プロセッサ及び前記ストレージデバイスと通信し、
    前記加速モジュールは、前記アプリケーションに対する前記ストレージデバイス上のアプリケーションデータに対して前記加速コマンドを遂行することを支援する、ことを特徴とする加速モジュール。
  9. 前記加速モジュールは、FPGAを使用して具現される、ことを特徴とする請求項8に記載の加速モジュール。
  10. 前記第2インタフェースは、構成空間を支援し、
    前記FPGAは、第4インタフェース、第5インタフェース、及び前記第2インタフェースと関連されたダウンストリームフィルタを包含し、
    前記ダウンストリームフィルタは、前記ストレージデバイスから受信された第1加速コマンドをインタセプトするように動作して前記第1加速コマンドを前記第1加速マネージャに伝達するよう動作し、
    前記第1加速コマンドは、ダウンストリームFAR(フィルタアドレスレンジ)と関連付けられ、
    前記FPGAは、前記第4インタフェースに対する前記プロセッサからホストシステムアドレスの第1ブロックを要請するように動作して、前記第5インタフェースに対する前記プロセッサからホストシステムアドレスの第2ブロックを要請するように動作し、
    前記FPGAは、前記プロセッサから受信されたトランザクションを前記ストレージデバイスに伝達するように動作して、前記プロセッサから受信された第2加速コマンドを前記第1加速マネージャに伝達するよう動作し、
    前記トランザクションは、前記第4インタフェースの第1識別子と関連付けられ、
    前記第2加速コマンドは、前記第5インタフェースの第2識別子に関連付けられる、ことを特徴とする請求項9に記載の加速モジュール。
  11. 前記FPGAは、前記FPGAから前記ダウンストリームFARを含むFPGAアドレスのブロックに対する要請を前記ストレージデバイスから受信するように動作し、前記FPGAは、前記構成空間から前記FPGAアドレスのブロックを割り当てるように動作し、前記ホストシステムアドレスの第1ブロックは、少なくとも前記FPGAアドレスのブロックと同じ大きさを有する、ことを特徴とする請求項10に記載の加速モジュール。
  12. 前記FPGAの前記ダウンストリームフィルタ内の前記ダウンストリームFARは、前記ストレージデバイスによってプログラミングされる、ことを特徴とする請求項11に記載の加速モジュール。
  13. 前記第1加速マネージャは、前記第1インタフェースを介して前記プロセッサに結果を伝送するように動作する、ことを特徴とする請求項10に記載の加速モジュール。
  14. 前記FPGAは、前記ストレージデバイスの第3インタフェースの性能を前記第1インタフェースにコピーするための構成モニタをさらに包含する、ことを特徴とする請求項10に記載の加速モジュール。
  15. 加速モジュールにおいて第1デバイスからトランザクションを受信するステップと、
    前記加速モジュールにおいて、前記トランザクションが加速コマンドであるか否かを判断するステップと、
    前記トランザクションが、前記加速コマンドであるとの判断に少なくとも部分的に基づいて、前記加速モジュールの加速マネージャにおいて前記トランザクションを処理するステップと、
    前記トランザクションが、前記加速コマンドではないとの判断に少なくとも部分的に基づいて、前記トランザクションを第2デバイスに伝達するステップを包含し、
    前記加速モジュールは、アプリケーションプログラムのためのストレージデバイス上のアプリケーションデータに対する前記加速コマンドを遂行することを支援し、
    ロセッサ、前記加速モジュール、及び前記ストレージデバイスは、少なくとも1つのバスを使用して通信する、ことを特徴とする方法。
  16. 前記加速モジュールは、FPGAを用いて具現される、ことを特徴とする請求項15に記載の方法。
  17. FPGAにおいて第1デバイスからトランザクションを受信するステップは、前記FPGAの第3インタフェースにおいて、前記プロセッサから第1トランザクションを受信するステップを包含し、
    前記加速モジュールにおいて、前記トランザクションが、加速コマンドであるか否かを判断するステップは、前記第1トランザクションが前記FPGAの第4インタフェースの識別子を有するタグを含んでいるか否かを判断するステップを包含し、前記トランザクションを第2デバイスに伝達するステップは、前記FPGAのルートポートを使用して前記第1トランザクションを前記ストレージデバイスに伝達するステップを包含する、ことを特徴とする請求項16に記載の方法。
  18. 前記FPGAの前記ルートポートで、前記ストレージデバイスから第2トランザクションを受信するステップと、
    前記第2トランザクションが、前記FPGAの前記ルートポートと関連されたダウンストリームFAR(フィルタアドレスレンジ)内のアドレスに関連されるか否かを、前記FPGAにおいて判断することにより、前記第2トランザクションが第2加速コマンドであるか否かを判断するステップと、
    前記第2トランザクションが前記第2加速コマンドであるとの判断に少なくとも部分的に基づいて、前記FPGAの前記加速マネージャにおいて、前記第1トランザクションを処理するステップと、
    前記第2トランザクションが前記第2加速コマンドではないとの判断に少なくとも部分的に基づいて、前記FPGAの前記第3インタフェースを使用して前記第2トランザクションを前記プロセッサに伝達するステップと、をさらに包含する、ことを特徴とする請求項17に記載の方法。
  19. 前記FPGAにおいて、前記ストレージデバイスから前記ダウンストリームFARを受信するステップと、
    前記ダウンストリームFARを前記FPGAの前記ルートポートと連結するステップと、をさらに包含する、ことを特徴とする請求項18に記載の方法。
  20. 前記FPGAの前記第3インタフェースを使用して前記第1トランザクションの結果を前記プロセッサに伝送するステップと、をさらに包含する、ことを特徴とする請求項17に記載の方法。
JP2019034068A 2018-03-05 2019-02-27 Fpgaベースの加速のための新たなssd基本構造 Active JP7120943B2 (ja)

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 US10585819B2 (en) 2018-03-05 2018-09-05 SSD architecture for FPGA based acceleration
US16/122,865 2018-09-05

Publications (3)

Publication Number Publication Date
JP2019153297A JP2019153297A (ja) 2019-09-12
JP2019153297A5 JP2019153297A5 (ja) 2022-02-15
JP7120943B2 true JP7120943B2 (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基本構造
JP2019038574A Active JP7120945B2 (ja) 2018-03-05 2019-03-04 システム及びそのアクセラレーション方法並びにアクセラレーションモジュール
JP2019038498A Active JP7252789B2 (ja) 2018-03-05 2019-03-04 Ssdに対するfpgaベースのアクセラレーションモジュール及びシステムとその動作方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2019038574A Active JP7120945B2 (ja) 2018-03-05 2019-03-04 システム及びそのアクセラレーション方法並びにアクセラレーションモジュール
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) CN110232034B (ja)
TW (3) TWI772611B (ja)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
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
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
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
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
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
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
FR3104280B1 (fr) * 2019-12-06 2021-11-26 Thales Sa Systeme electronique securise comportant un processeur et un composant memoire ; composant programmable associe
US11507522B2 (en) * 2019-12-06 2022-11-22 Advanced Micro Devices, Inc. Memory request priority assignment techniques for parallel processors
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
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
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
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
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
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
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
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
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
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
EP4254207A4 (en) * 2020-12-21 2024-01-10 Huawei Technologies Co., Ltd. DATA PROCESSING DEVICE AND METHOD AND ASSOCIATED DEVICE
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
EP4105771B1 (en) 2021-06-17 2025-04-02 Samsung Electronics Co., Ltd. Computational storage device
KR102365312B1 (ko) 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
US12210470B2 (en) * 2021-08-03 2025-01-28 Samsung Electronics Co., Ltd. Systems, methods, and apparatus to identify functions for computational devices
KR20230037906A (ko) 2021-09-10 2023-03-17 삼성전자주식회사 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템
US12293097B2 (en) 2021-09-24 2025-05-06 Samsung Electronics Co., Ltd. Systems and methods for near-storage processing in solid state drives
US20230198740A1 (en) * 2021-12-21 2023-06-22 Samsung Electronics Co., Ltd. Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device
CN114327281B (zh) * 2021-12-30 2023-12-05 深圳忆联信息系统有限公司 用于ssd的tcg软硬件加速方法、装置、计算机设备及存储介质
US12169636B2 (en) 2022-01-10 2024-12-17 Korea Advanced Institute Of Science And Technology Computational SSD accelerating deep learning service on large-scale graphs
US12346257B2 (en) 2022-09-07 2025-07-01 Samsung Electronics Co., Ltd. Systems and methods for processing storage transactions
US12566703B2 (en) * 2022-09-21 2026-03-03 Samsung Electronics Co., Ltd. Remote access solution for compute express link (CXL) memory interface configured to send information regarding a capacity, a latency, or bandwidth of memory via interface
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
US12541326B2 (en) 2023-03-16 2026-02-03 Samsung Electronics Co., Ltd. Device cache engine for a cache-coherent interconnect memory expansion
CN115994107B (zh) * 2023-03-22 2023-07-14 苏州浪潮智能科技有限公司 存储设备的存取加速系统
CN116756070B (zh) * 2023-08-15 2023-10-27 无锡沐创集成电路设计有限公司 PCIe互联系统、数据处理方法、设备、存储介质及产品
CN121029426A (zh) * 2025-10-28 2025-11-28 苏州元脑智能科技有限公司 集成背板的数据处理方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120144098A1 (en) 2009-04-30 2012-06-07 Velobit, Inc. Multiple locality-based caching in a data storage system
US20150149695A1 (en) 2013-11-27 2015-05-28 Jawad B. Khan System and method for computing message digests
US20150220409A1 (en) 2014-02-05 2015-08-06 Futurewei Technologies, Inc. Per-Function Downstream Port Containment
US20180052766A1 (en) 2016-08-16 2018-02-22 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications

Family Cites Families (51)

* Cited by examiner, † Cited by third party
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
CA2759064C (en) 2003-05-23 2017-04-04 Washington University Intellegent data storage and processing 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
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
US10185499B1 (en) 2014-01-07 2019-01-22 Rambus Inc. Near-memory compute module
WO2015121912A1 (ja) 2014-02-12 2015-08-20 株式会社日立製作所 データ記憶装置
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
JP6181860B2 (ja) 2014-04-28 2017-08-16 株式会社日立製作所 ストレージ装置とそのデータ処理方法及びストレージシステム
WO2016038710A1 (ja) 2014-09-11 2016-03-17 株式会社日立製作所 ストレージシステム
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
WO2016126701A1 (en) * 2015-02-02 2016-08-11 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
US10467176B2 (en) 2015-02-25 2019-11-05 Hitachi, Ltd. Information processing apparatus
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
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
US12147353B2 (en) 2019-05-24 2024-11-19 Texas Instruments Incorporated Methods and apparatus for read-modify-write support in multi-banked data RAM cache for bank arbitration
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120144098A1 (en) 2009-04-30 2012-06-07 Velobit, Inc. Multiple locality-based caching in a data storage system
US20150149695A1 (en) 2013-11-27 2015-05-28 Jawad B. Khan System and method for computing message digests
US20150220409A1 (en) 2014-02-05 2015-08-06 Futurewei Technologies, Inc. Per-Function Downstream Port Containment
US20180052766A1 (en) 2016-08-16 2018-02-22 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications

Also Published As

Publication number Publication date
CN110232034A (zh) 2019-09-13
US20200159679A1 (en) 2020-05-21
KR20190105492A (ko) 2019-09-17
JP2019153304A (ja) 2019-09-12
TW201939269A (zh) 2019-10-01
KR20190105497A (ko) 2019-09-17
JP7120945B2 (ja) 2022-08-17
JP2019153297A (ja) 2019-09-12
CN110232037B (zh) 2021-11-09
CN110232037A (zh) 2019-09-13
CN110232036B (zh) 2022-08-09
JP2019153305A (ja) 2019-09-12
US11892957B2 (en) 2024-02-06
US20190272240A1 (en) 2019-09-05
JP7252789B2 (ja) 2023-04-05
TW201939305A (zh) 2019-10-01
KR102428317B1 (ko) 2022-08-02
US20190272242A1 (en) 2019-09-05
US11132310B2 (en) 2021-09-28
TW201939294A (zh) 2019-10-01
US20210182221A1 (en) 2021-06-17
TWI772611B (zh) 2022-08-01
CN110232036A (zh) 2019-09-13
CN110232034B (zh) 2024-07-30
KR102427561B1 (ko) 2022-08-01
US10585819B2 (en) 2020-03-10
US10592443B2 (en) 2020-03-17
TWI765138B (zh) 2022-05-21
TWI770358B (zh) 2022-07-11

Similar Documents

Publication Publication Date Title
JP7120943B2 (ja) Fpgaベースの加速のための新たなssd基本構造
US20240119014A1 (en) Novel ssd architecture for fpga based acceleration
JP2015537310A (ja) データ処理システム及びデータ処理方法
TW202101951A (zh) 輕量橋接器電路以及用於多實體功能模擬的方法及物品
JP2021515318A (ja) NVMeベースのデータ読み取り方法、装置及びシステム
CN115858434A (zh) 一种计算设备及请求处理方法
US20230198740A1 (en) Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device
EP4332748B1 (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
CN114327248A (zh) 存储节点、存储设备及网络芯片
EP4332747B1 (en) Systems and methods for integrating a compute resource with a storage device
CN112131166B (zh) 轻量桥接器电路及其操作方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220204

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220204

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220711

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: 7120943

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250