(57)【要約】      （修正有）【課題】ＦＰＧＡベースのアクセラレーションのための低コスト、低消費電力のＳＳＤ構造を有するアクセラレーションモジュール及びシステムとその動作方法を提供する。【解決手段】システムは、アプリケーションを実行するプロセッサと、プロセッサ上で実行中のアプリケーションが使用するデータを格納するメモリと、プロセッサと通信するためのアップストリームポートと、ストレージデバイスと通信するためのダウンストリームポートと、ハードウェアを用いて具現され、第１アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を含むアクセラレーションモジュール１４５と、ダウンストリームポートに関連付けられ、ストレージデバイスから受信される第１アクセラレーションコマンドをインターセプトし、第１アクセラレーションコマンドをＡＰＭ−Ｆに伝送するダウンストリームフィルタ３６０と、を備える。【選択図】図３
2019153304.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実行するプロセッサと、
前記プロセッサ上で実行中のアプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するためのアップストリームポートと、
ストレージデバイスと通信するためのダウンストリームポートと、
ハードウェアを用いて具現され、第１アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を含むアクセラレーションモジュールと、
前記ダウンストリームポートに関連付けられ、前記ストレージデバイスから受信される前記第１アクセラレーションコマンドをインターセプトして前記第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに配信するダウンストリームフィルタと、を備え、
前記ストレージデバイスは、
前記アクセラレーションモジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するコントローラと、
前記アプリケーションのためのアプリケーションデータを格納するストレージと、
前記第１アクセラレーションコマンドを実行する際に前記アクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を補助するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）と、を含み、
前記第１アクセラレーションコマンドは、ダウンストリームＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）に関連付けられ、
前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを介して通信し、
前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにロードすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対して前記第１アクセラレーションコマンドを実行することを支援することを特徴とするシステム。
【請求項２】
前記プロセッサと前記アクセラレーションモジュールとの間の通信をブリッジ（ｂｒｉｄｇｉｎｇ）し、前記アップストリームポートを含む第１ブリッジ構成要素と、
前記アクセラレーションモジュールと前記ストレージデバイスとの間の通信をブリッジし、前記ダウンストリームポート及び前記ダウンストリームフィルタを含む第２ブリッジ構成要素と、を更に含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現され、
前記ＦＰＧＡは、前記アップストリームポート、前記ダウンストリームポート、及び前記ダウンストリームフィルタを含み、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送することを特徴とする請求項３に記載のシステム。
【請求項５】
前記コントローラは、前記ダウンストリームＦＡＲを有する前記ダウンストリームフィルタをプログラミングすることを特徴とする請求項３に記載のシステム。
【請求項６】
前記ＡＰＭ−Ｆは、前記ＳＳＤの前記エンドポイント及び前記ダウンストリームポートを介して結果を前記ＡＰＭ−Ｓに伝送し、
前記コントローラは、前記ＳＳＤの前記エンドポイントを介して前記結果を前記プロセッサに伝送することを特徴とする請求項３に記載のシステム。
【請求項７】
前記ＦＰＧＡは、前記アップストリームポートに関連付けられたアップストリームフィルタを更に含み、
前記アップストリームフィルタは、前記プロセッサから受信された第２アクセラレーションコマンドをインターセプトして前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに配信し、
前記第２アクセラレーションコマンドは、アップストリームＦＡＲに関連付けられ、
前記ＦＰＧＡは、前記プロセッサから受信された前記アップストリームＦＡＲに関連付けられていないＰＣＩｅトランザクションを前記アップストリームポートから前記ＳＳＤに伝送することを特徴とする請求項３に記載のシステム。
【請求項８】
前記コントローラは、前記ダウンストリームＦＡＲを有する前記ダウンストリームフィルタ及び前記アップストリームＦＡＲを有する前記アップストリームフィルタをプログラミングすることを特徴とする請求項７に記載のシステム。
【請求項９】
ハードウェアを用いて具現されたアクセラレーションモジュールであって、
第１アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）と、
アプリケーションを実行中のプロセッサと通信するためのアップストリームポートと、
前記第１アクセラレーションコマンドを実行する際に前記ＡＰＭ−Ｆを補助するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）を含むストレージデバイスと通信するためのダウンストリームポートと、
前記ダウンストリームポートに関連付けられ、前記ストレージデバイスから受信される前記第１アクセラレーションコマンドをインターセプトして前記第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに配信するダウンストリームフィルタと、を備え、
前記第１アクセラレーションコマンドは、ダウンストリームＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）に関連付けられ、
前記アクセラレーションモジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して前記プロセッサ及び前記ストレージデバイスと通信し、
前記アクセラレーションモジュールは、前記プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対して前記第１アクセラレーションコマンドを実行することを支援することを特徴とするアクセラレーションモジュール。
【請求項１０】
前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送することを特徴とする請求項９に記載のアクセラレーションモジュール。
【請求項１１】
前記アクセラレーションモジュールは、ＦＰＧＡを用いて具現され、
前記ＡＰＭ−Ｆは、前記ダウンストリームポートを介して前記ストレージデバイスの前記ＡＰＭ−Ｓに結果を伝送することを特徴とする請求項９に記載のアクセラレーションモジュール。
【請求項１２】
前記アクセラレーションモジュールは、ＦＰＧＡを用いて具現され、
前記アクセラレーションモジュールは、前記ストレージデバイスに割り当てられたＮＶＭｅレジスタを介して前記プロセッサに間接的に露出されることを特徴とする請求項９に記載のアクセラレーションモジュール。
【請求項１３】
前記ＦＰＧＡは、前記アップストリームポートに関連付けられたアップストリームフィルタと、を更に含み、
前記アップストリームフィルタは、前記プロセッサから受信された第２アクセラレーションコマンドをインターセプトして前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに配信し、
前記第２アクセラレーションコマンドは、アップストリームＦＡＲに関連付けられ、
前記ＦＰＧＡは、前記プロセッサから受信された前記アップストリームＦＡＲに関連付けられていないＰＣＩｅトランザクションを前記アップストリームポートから前記ストレージデバイスに伝送することを特徴とする請求項１２に記載のアクセラレーションモジュール。
【請求項１４】
ストレージデバイスに対するアクセラレーションのための動作方法であって、
アクセラレーションモジュールのダウンストリームポートで前記ストレージデバイスから第１  ＰＣＩｅトランザクションを受信するステップと、
前記第１  ＰＣＩｅトランザクションが前記アクセラレーションモジュールのダウンストリームポートに関連付けられたダウンストリームＦＡＲ内の第１アドレスに関連付けられているか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第１アクセラレーションコマンドであるか否かを前記アクセラレーションモジュールで判断するステップと、
前記第１  ＰＣＩｅトランザクションが第１アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、前記第１  ＰＣＩｅトランザクションを前記アクセラレーションモジュールのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）で処理するステップと、
前記第１  ＰＣＩｅトランザクションが第１アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、前記アクセラレーションモジュールのアップストリームポートを使用して前記第１  ＰＣＩｅトランザクションをプロセッサに配信するステップと、を有し、
前記アクセラレーションモジュールは、前記プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対して前記第１アクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信することを特徴とする方法。
【請求項１５】
前記アクセラレーションモジュールは、ＦＰＧＡを用いて具現されることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記ＦＰＧＡの前記アップストリームポートを使用して前記第１  ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップ、を更に含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記ＦＰＧＡで前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ダウンストリームポートに関連付けるステップと、を更に含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１  ＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップを更に含むことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第２  ＰＣＩｅトランザクションを受信するステップと、
前記第２  ＰＣＩｅトランザクションが前記ＦＰＧＡの前記アップストリームポートに関連付けられたアップストリームＦＡＲ内の第２アドレスに関連付けられているか否かを判断することにより、前記第２  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであるか否かを判断するステップと、
前記第２  ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆで前記第２  ＰＣＩｅトランザクションを処理するステップと、
前記第２  ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、前記第２  ＰＣＩｅトランザクションを前記ＦＰＧＡの前記ダウンストリームポートを使用して前記ストレージデバイスに配信するステップと、を更に含むことを特徴とする請求項１５に記載の方法。
【請求項２０】
前記アップストリームＦＡＲを前記ストレージデバイスから前記ＦＰＧＡで受信するステップと、
前記アップストリームＦＡＲを前記ＦＰＧＡの前記アップストリームポートに関連付けるステップと、を更に含むことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージデバイスに関し、より詳しくは、追加のハードウェアを用いてソリッドステートドライブ（ＳＳＤ）のパフォーマンスをアクセラレーションするモジュール及びシステムとその動作方法に関する。
【背景技術】
【０００２】
従来の方法でストレージデバイスを使用することが非効率的な場合がある。例として、データベースでクエリの実行を必要とする場合が考慮される。従来の解決策は、データベースをコンピュータのメモリにロードし、データベースのメモリ内のコピーに対してクエリを実行した後、結果を処理するものである。データベースが相対的に小さい場合、この方式が合理的であるものの、クエリの結果がデータベースの一つの記録を識別するために、数千、数百万以上の記録を含むデータベースをロードすることは非常に非効率的である。クエリを実行するために膨大な量のデータをメモリに移動しなければならず、既にメモリに格納された他のデータを代替する必要がある。クエリが完了すると殆どのデータが必要でないため、クエリが完了された後に殆どのデータは削除される。データベースに対して繰り返しクエリが実行されなければならない場合に問題が拡大する。即ち、各クエリは、メモリに再びロードされるデータベースを要求する。
【０００３】
ストレージデバイスに関連付けられる動作をアクセラレーションする方法が必要である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第９６１９１６７号明細書
【特許文献２】米国特許第９８９８３１２号明細書
【特許文献３】米国特許出願公開第２０１３０３４３１８１号明細書
【特許文献４】米国特許出願公開第２０１５０２５４００３号明細書
【特許文献５】米国特許出願公開第２０１６００９４６１９号明細書
【特許文献６】米国特許出願公開第２０１７０１７７２７０号明細書
【特許文献７】米国特許出願公開第２０１８００５２７６６号明細書
【特許文献８】米国特許出願公開第２０１８００８１５６９号明細書
【非特許文献】
【０００５】
【非特許文献１】ＪＵＮ，  Ｓａｎｇ−Ｗｏｏ，  “Ｓｃａｌａｂｌｅ  Ｍｕｌｔｉ−Ａｃｃｅｓｓ  Ｆｌａｓｈ  Ｓｔｏｒｅ  ｆｏｒ  Ｂｉｇ  Ｄａｔａ  Ａｎａｌｙｔｉｃｓ”，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２０１４  ＡＣＭ／ＳＩＧＤＡ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ，  ＡＣＭ  ２０１４，  ｆｏｕｎｄ  ｖｉａ  Ｇｏｏｇｌｅ  Ｓｃｈｏｌａｒ  （ｕｒｌ：ｈｔｔｐｓ：／／ｄｓｐａｃｅ．ｍｉｔ．ｅｄｕ／ｂｉｔｓｔｒｅａｍ／ｈａｎｄｌｅ／１７２１．１／８７９４７／８８０４１５１２０−ＭＩＴ．ｐｄｆ；ｓｅｑｕｅｎｃｅ＝２），  Ｆｅｂｒｕａｒｙ  ２０１４，  ４９  ｐａｇｅｓ．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ＦＰＧＡベースのアクセラレーションのためのＳＳＤ構造を有するアクセラレーションモジュール及びシステムとその動作方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明の一態様によるシステムは、アプリケーションを実行するプロセッサと、前記プロセッサ上で実行中のアプリケーションによって使用されるデータを格納するメモリと、前記プロセッサと通信するためのアップストリームポートと、ストレージデバイスと通信するためのダウンストリームポートと、ハードウェアを用いて具現され、第１アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を含むアクセラレーションモジュールと、前記ダウンストリームポートに関連付けられ、前記ストレージデバイスから受信される前記第１アクセラレーションコマンドをインターセプトして前記第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに配信するダウンストリームフィルタと、を備え、前記ストレージデバイスは、前記アクセラレーションモジュールと通信するための前記ストレージデバイスのエンドポイントと、前記ストレージデバイスの動作を管理するコントローラと、前記アプリケーションのためのアプリケーションデータを格納するストレージと、前記第１アクセラレーションコマンドを実行する際に前記アクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を補助するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）と、を含み、前記第１アクセラレーションコマンドは、ダウンストリームＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）に関連付けられ、前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを介して通信し、前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにロード（ｌｏａｄ）することなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対して前記第１アクセラレーションコマンドを実行することを支援する。
【０００８】
上記目的を達成するためになされた本発明の一態様によるハードウェアを用いて具現されたアクセラレーションモジュールは、第１アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）と、アプリケーションを実行中のプロセッサと通信するためのアップストリームポートと、前記第１アクセラレーションコマンドを実行する際に前記ＡＰＭ−Ｆを補助するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）を含むストレージデバイスと通信するためのダウンストリームポートと、前記ダウンストリームポートに関連付けられ、前記ストレージデバイスから受信される前記第１アクセラレーションコマンドをインターセプトして前記第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに配信するダウンストリームフィルタと、を備え、前記第１アクセラレーションコマンドは、ダウンストリームＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）に関連付けられ、前記アクセラレーションモジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して前記プロセッサ及び前記ストレージデバイスと通信し、前記アクセラレーションモジュールは、前記プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータ対して前記第１アクセラレーションコマンドを実行することを支援する。
【０００９】
上記目的を達成するためになされた本発明の一態様によるストレージデバイスに対するアクセラレーションのための動作方法は、アクセラレーションモジュールのダウンストリームポートで前記ストレージデバイスから第１  ＰＣＩｅトランザクションを受信するステップと、前記第１  ＰＣＩｅトランザクションが前記アクセラレーションモジュールのダウンストリームポートに関連付けられたダウンストリームＦＡＲ内の第１アドレスに関連付けられているか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第１アクセラレーションコマンドであるか否かを前記アクセラレーションモジュールで判断するステップと、前記第１  ＰＣＩｅトランザクションが第１アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、前記第１  ＰＣＩｅトランザクションを前記アクセラレーションモジュールのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）で処理するステップと、前記第１  ＰＣＩｅトランザクションが第１アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、前記アクセラレーションモジュールのアップストリームポートを使用して前記第１  ＰＣＩｅトランザクションをプロセッサに配信するステップと、を有し、前記アクセラレーションモジュールは、前記プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対して前記第１アクセラレーションコマンドを実行することを支援し、前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【発明の効果】
【００１０】
本発明によれば、データがロード（ｌｏａｄ）可能なアクセラレーションモジュールを提供することができる。従って、本発明はＳＳＤからデータをロードする際に発生する遅延を回避することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施例によるストレージデバイス上のアクセラレーション動作を支援する機械（又はマシン）を示す図である。
【図２】図１の機械の追加的な細部構成を示す図である。
【図３】本発明の第１実施例による図１のアクセラレーションモジュール及び図１のストレージデバイスの構成を示す図である。
【図４】本発明の第１実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。
【図５】本発明の第２実施例による図１のアクセラレーションモジュール及び図１のストレージデバイスの構成を示す図である。
【図６】本発明の第２実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。
【図７】本発明の第３実施例による図１のアクセラレーションモジュール及び図１のストレージデバイスの構成を示す図である。
【図８】本発明の第３実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。
【図９】本発明の第４実施例による図１のアクセラレーションモジュール及び図１のストレージデバイスの構成を示す図である。
【図１０】本発明の第４実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。
【図１１】本発明の第５実施例による図１のアクセラレーションモジュール及び図１のストレージデバイスの構成を示す図である。
【図１２】本発明の第５実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。
【図１３】本発明の第６実施例による図１のアクセラレーションモジュール及び図１のストレージデバイスの構成を示す図である。
【図１４】本発明の第６実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。
【図１５】本発明の第７実施例による図１のアクセラレーションモジュール及び図１のストレージデバイスの構成を示す図である。
【図１６】本発明の第７実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。
【図１７】本発明の第８実施例による図１のアクセラレーションモジュール及び図１のストレージデバイスの構成を示す図である。
【図１８】本発明の第８実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。
【図１９】本発明の一実施例による図１のシステムの構成及び図１のアクセラレーションモジュールとの通信を管理するブリッジ構成要素（ｂｒｉｄｇｉｎｇ  ｃｏｍｐｏｎｅｎｔｓ）を示す図である。
【図２０ａ】本発明の一実施例による図１のプロセッサ、図１のアクセラレーションモジュール、図１のストレージデバイス間の通信を示す図である。
【図２０ｂ】本発明の一実施例による図１のプロセッサ、図１のアクセラレーションモジュール、図１のストレージデバイス間の通信を示す図である。
【図２１】本発明の一実施例によるＰＣＩｅトランザクションを処理するための図１のアクセラレーションモジュールの例示的な手順のフローチャートである。
【図２２ａ】本発明の一実施例によるＰＣＩｅトランザクションを処理するための図１のアクセラレーションモジュールの例示的な手順のより詳細なフローチャートである。
【図２２ｂ】本発明の一実施例によるＰＣＩｅトランザクションを処理するための図１のアクセラレーションモジュールの例示的な手順のより詳細なフローチャートである。
【図２２ｃ】本発明の一実施例によるＰＣＩｅトランザクションを処理するための図１のアクセラレーションモジュールの例示的な手順のより詳細なフローチャートである。
【図２３ａ】本発明の一実施例による図２０ｂのＰＣＩｅトランザクションが図２０ｂのアクセラレーションコマンドを含む図１のプロセッサから来るか否かを判断するためのアクセラレーションモジュールの例示的な手順のフローチャートである。
【図２３ｂ】本発明の一実施例による図２０ｂのＰＣＩｅトランザクションが図２０ｂのアクセラレーションコマンドを含む図１のプロセッサから来ているか否かを判断するためのアクセラレーションモジュールの例示的な手順のフローチャートである。
【図２４】本発明の一実施例による図２０ａのＰＣＩｅトランザクションが図２０ａのアクセラレーションコマンドを含む図１のストレージデバイスから来るか否かを判断するためのアクセラレーションモジュールの例示的な手順のフローチャートである。
【図２５】本発明の一実施例によるＰＣＩｅトランザクションがアクセラレーションコマンドを含む図１のプロセッサから来るか否かを判断するための図１９の第１ブリッジ構成要素の例示的な手順のフローチャートである。
【図２６】本発明の一実施例によるＰＣＩｅトランザクションがアクセラレーションコマンドを含む図１のストレージデバイスから来るか否かを判断するための図１９の第２ブリッジ構成要素の例示的な手順のフローチャートである。
【図２７ａ】本発明の一実施例による図１のストレージデバイスがＰＣＩｅトランザクションを処理するための例示的な手順のフローチャートである。
【図２７ｂ】本発明の一実施例による図１のストレージデバイスがＰＣＩｅトランザクションを処理するための例示的な手順のフローチャートである。
【図２７ｃ】本発明の一実施例による図１のストレージデバイスがＰＣＩｅトランザクションを処理するための例示的な手順のフローチャートである。
【図２８ａ】本発明の一実施例による図１のストレージデバイスが図１のアクセラレーションモジュールから来るＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かを判断するための例示的な手順のフローチャートである。
【図２８ｂ】本発明の一実施例による図１のストレージデバイスが図１のアクセラレーションモジュールから来るＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かを判断するための例示的な手順のフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳細な説明で、多様な特定の詳細な説明を、本発明の技術的思想に対する十分な理解を助けるために提供する。しかし、この分野における通常の技術を有する者は、このような特定の詳細な説明がなくても、本発明の技術的思想を具現することができる。他の例として、よく知られている方法、手順、コンポーネント、回路、及びネットワークは実施例の側面を不必要に曖昧にしないために詳細に説明しない。
【００１３】
ここで、第１、第２などのような用語を多様なエレメントを説明するために使用するが、このような要素は、このような用語によって限定されない。このような用語は、一つのエレメントを他の一つのエレメントと区別するためにのみ使用される。例として、本発明の技術的思想の範囲から逸脱せずに、第１モジュールは、第２モジュールと命名される。同様に、第２モジュールは、第１モジュールと命名される。
【００１４】
本明細書の詳細な説明で使用する用語は、特定の実施例を説明するための目的でのみ使用され、本発明の技術的思想を限定するものと意図されない。本発明の技術的思想の説明及び請求項において使用されるように、コンテキスト（ｃｏｎｔｅｘｔ）で明確に明示されない場合、単数表現は複数表現もまた含むものと意図される。「及び／又は」の用語は、一つ又はそれより多くの関連する項目の任意且つ全ての可能な組み合わせを含むものとして参照される。「含む（ｃｏｍｐｒｉｓｅｓ）」及び／又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」の用語は、詳細な説明で使用する際に言及する特性、整数、ステップ、動作、エレメント、及び／又はコンポーネントの存在を明示し、一つ又はそれより多くの他の特性、整数、ステップ、動作、エレメント、コンポーネント及び／又はそれらのグループの存在又は追加を排除しない。図面の構成及び特性は、不可欠に実際の比率に比例しない。
【００１５】
本発明の実施例は、特定のデータ処理機能をアクセラレーションするためにＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が使用されるＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）又は他のストレージデバイスの構造を提案する。ＦＰＧＡデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）ホストインターフェースを提供するＳＳＤの前又は横に配置される。ホストトランザクション（ｈｏｓｔ  ｔｒａｎｓａｃｔｉｏｎｓ）がＦＰＧＡ  ＰＣＩｅインターフェースで受信されると、ＰＣＩｅトランザクションは、バックエンドＳＳＤコントローラ（ｂａｃｋｅｎｄ  ＳＳＤ  ｃｏｎｔｒｏｌｌｅｒ）に伝達される。「ＳＳＤ」及び「ＳＳＤコントローラ」という用語は、明示された場合を除いては、一般的に同じ意味で使用される。バックエンドＳＳＤはＰＣＩｅエンドポイント及び不揮発性メモリエクスプレス（ＮＶＭｅ）コントローラを具現する。従って、ホストは、直接ＮＶＭｅプロトコルをバックエンドＳＳＤに伝達する。即ち、ＦＰＧＡを介してホストからバックエンドＳＳＤに連結されるＰＣＩｅインターフェースは通過（ｐａｓｓ−ｔｈｒｏｕｇｈ）特性である。ＳＳＤは直接メモリアクセス（ＤＭＡ）を介してホストシステムメモリとのデータ伝送を遂行する。ＦＰＧＡダウンストリームポート（ＤＳＰ）は、ＰＣＩｅトランザクションフィルタとして使用されるメモリのフィルタアドレス範囲（ＦＡＲ）でプログラミングされる。ＤＳＰは、ＦＡＲウィンドウに属する全てのＰＣＩｅトランザクションをフィルタリングして、それらをＦＰＧＡのロジック及びメモリに伝達する。プログラミングされたＦＡＲウィンドウに属さない全てのＰＣＩｅトランザクションは、ホストシステムのメモリに属し、ホストに直接伝達される。ＳＳＤコントローラは、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）メカニズム又はＩ２Ｃ／ＳＭバスのような他のサイドバンドバスを使用するＦＰＧＡで適切なＦＡＲウィンドウをプログラムする。ＳＳＤコントローラは、ＰＣＩｅ  ＢＡＲ（Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）を介してホストにアドレス範囲のブロックを要請する。ホストのＢＩＯＳが要請されたアドレスブロックをＳＳＤコントローラに割り当てた後、ＳＳＤコントローラは、ＦＰＧＡ  ＤＳＰでそのアドレス範囲のサブセットをＦＡＲウィンドウでプログラムする。ＤＳＰにプログラムされたアドレスの範囲は、ＳＳＤコントローラとＦＰＧＡとが通信し合うために使用される。即ち、ホストがアドレスブロックを割り当てると、ＳＳＤとＦＰＧＡとがＰＣＩｅ階層で互いに又は他のＰＣＩｅデバイスに干渉せずにホストトランザクションとＰＣＩｅバスを共有する。ＳＳＤコントローラは、共有ＰＣＩｅバスを介してＦＡＲウィンドウを使用してＦＰＧＡにアクセラレーションコマンド及びデータを提供する。ＦＰＧＡ又はホストが共有ＰＣＩｅバス及び上記アドレス範囲を使用してＳＳＤコントローラからアクセラレーションのためのデータを要請することもできる。ＦＰＧＡは、同じメカニズムを使用してアクセラレーションの結果をＳＳＤコントローラに再び提供すること���できる。提案された構造及びメカニズムは、低コスト及びＦＰＧＡデバイスを使用するＳＳＤベースのアプリケーションアクセラレーションのための低消費電力の解決策を具現する。
【００１６】
提案された解決策の細部事項
【００１７】
基本的なアイディアは、ＦＰＧＡ及びＳＳＤ（及び／又は他のストレージデバイス）がホストと通信しながら（別のデバイスとして又はシングルデバイスに統合して）集合的に作動するというものである。以下の説明において、ストレージデバイスはＳＳＤを意味する。３つのトラフィックストリームがある。
【００１８】
１）ホストからストレージデバイスに。ホストからストレージデバイスへの通信は、ＦＰＧＡ具現に応じてＦＰＧＡを介してストレージデバイスのＥＰに配信される全てのトラフィックをアップストリームポート（ＵＳＰ）又はエンドポイント（ＥＰ）からダウンストリームポート（ＤＳＰ）に、又はルートポート又はルート複合ポート（ＲＰ）に単純に伝送することにより、ＦＰＧＡによって管理される。ＦＰＧＡは、ホストとストレージデバイスとの間のＮＶＭｅ通信を支援するために、ストレージデバイスによってホストにさらされる物理関数を含む。
【００１９】
２）ＦＰＧＡに対するアクセラレーションコマンドの通信。本発明のいくつかの実施例で、アクセラレーションコマンドは、次の方式で処理される。即ち、アクセラレーションサービスマネージャー（ＡＳＭ）がホスト上で実行される。ＡＳＭは、ストレージデバイス（ＡＰＭ−Ｓとして識別される）とＦＰＧＡ（ＡＰＭ−Ｆとして識別される）の両方の一部としての構成を含むＡＰＭ（Ａｃｃｅｌｅｒａｔｉｏｎ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｒ）と通信する。ホスト上のＡＳＭは、アクセラレーションコマンド及び関連情報をＳＳＤに伝送するためにＮＶＭｅプロトコルを使用する。その次にＳＳＤは、ＦＰＧＡに関連付けられたアクセラレーションオーケストレーター（ｏｒｃｈｅｓｔｒａｔｏｒ）のように動作する。ＡＰＭ−Ｓによって許容される全てのアクセラレーションコマンドは、専有のインターフェースを用いてＡＰＭ−Ｆに適切なコマンドを提供するために使用される。専有のインターフェースは、アドレス空間のウィンドウを使用して容易になる。このアドレス空間ウィンドウは、ストレージデバイスの要請に応じて、ホストメモリアドレスマップ内に割り当てられる（部分的には、ストレージデバイスとホストとの間のＮＶＭｅプロトコルを使用して通信を容易にするために）。適切なアドレス空間でアドレスを使用するコマンドは、ホストやストレージデバイスから別のモジュールに直接通信する代わりに、ＡＰＭ−Ｆによる処理のためにＦＰＧＡによってフィルタリングされる。フィルタリングは、コマンドに関連付けられたタグを使用するか、又はＰＣＩｅメッセージベースのフィルタリングを使用して遂行される。このフィルタリングは、ＦＰＧＡをストレージデバイスに連結するＤＳＰ／ＲＰに連結されたフィルタによって遂行される。
【００２０】
３）データのアクセラレーション及び処理のためのデータをフェッチ（ｆｅｔｃｈ）するＦＰＧＡとＳＳＤとの間の通信。本発明のいくつかの実施例で、アクセラレーションは次の方法で行われる。即ち、ＦＰＧＡがアクセラレーション処理のためにデータのフェッチを要請するとき、ＦＰＧＡは、上述した通り、ストレージデバイスとＦＰＧＡとの通信のために使用されるホストのメモリアドレスマップ内に割り当てられたアドレス空間を使用して要請を送る。
【００２１】
ＤＳＰフィルタ構造
【００２２】
この構造は、アクセラレーションされたデータを処理するために、ＦＰＧＡと共有するホストとＳＳＤとの間のＰＣＩｅバスによる方法を提供する。論理的に言うと、ＦＰＧＡは、ホストとＳＳＤコントローラとの間に動作可能に配置される。ホストはＦＰＧＡのアップストリームポート（ＵＳＰ）に連結され、ＳＳＤはＦＰＧＡのダウンストリームポート（ＤＳＰ）に連結される。ホスト及び／又はＳＳＤに連結するために使用されるＰＣＩｅバスは、ｘ４、ｘ８レーン（ｌａｎｅｓ）、又はその他の望みの幅である。ＦＰＧＡ  ＵＳＰ及びＤＳＰポートは、２方向の両方でＰＣＩｅトランザクション（即ち、トランザクション階層パケット（ＴＬＰｓ））を伝達する。ＰＣＩｅ  ＴＬＰの例は、構成の読み取り、構成の書き込み、メモリの読み取り、及びメモリの書き込みである。従って、ホストは、ＳＳＤと直接通信する。ＦＰＧＡ上のＤＳＰポートは、プログラムされたフィルタのアドレス範囲（ＦＡＲ）をベースにしたＳＳＤコントローラから来る全てのＰＣＩｅトランザクションをフィルタリングするロジックを有する。遮断されたＳＳＤコントローラのＰＣＩｅトランザクションは、アクセラレーションプラットフォームマネージャー（Ａｃｃｅｌｅｒａｔｉｏｎ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｒ）−ＦＰＧＡ（ＡＰＭ−Ｆ）ブロックに伝達される。ＡＰＭ−Ｆモジュールは、ＳＳＤコントローラと通信する。ＡＰＭ−Ｆモジュールは、ＳＳＤコントローラからのアクセラレーションプラットフォームマネージャー−ＳＳＤ（ＡＰＭ−Ｓ）ファームウェアからデータ及びアクセラレーションコマンドを受信する。その後にＡＰＭ−Ｆモジュールは、受信されたアクセラレーションコマンド及びデータをランタイム（ＲＴ）スケジューラに提供する。ＲＴスケジューラは、データ処理を遂行するために、適切なアクセラレーションエンジンを順番にプログラムする。
【００２３】
ＦＰＧＡの使用は、１つの可能な具現を示すが、ＦＰＧＡ以外の具現が使用される。ＦＰＧＡは、ストレージデバイス内に具現される。ＦＰＧＡは、ホストメモリにデータをフェッチした後、ホストでデータを処理するのではなく、ストレージデバイスに近く遂行されるアクセラレーションされたデータの処理を支援する。データをフェッチする代わりに、ストレージデバイス／ＦＰＧＡは、クエリを受信して処理を局部的に行う。
【００２４】
ＳＳＤコントローラは、ＰＣＩｅの伝送を使用してＮＶＭｅプロトコル処理ロジックを具現する。ＰＣＩｅ構成の一部として、ＳＳＤコントローラは、それ自体の用途のため、ホストシステムアドレスマップのブロックを要請する。ＳＳＤコントローラは、ＮＶＭｅプロトコルを支援するために、一般的に必要なものよりも大きなブロックを要請する。ストレージデバイスとＦＰＧＡとの間の通信を管理するために追加の空間の一部又は全部が使用される。例として、ＮＶＭｅプロトコルは６４ＫＢのアドレス空間が必要になる。提案された構造で、ＳＳＤコントローラは、１０ＭＢアドレスブロックを要請する。ＳＳＤコントローラは、ホスト透過なある方法でＦＰＧＡと通信するために割り当てられたアドレスマップの一部を使用する。ＳＳＤ−ＦＰＧＡ通信のための予約のシステムアドレスマップのサブセットをフィルタアドレス範囲（ＦＡＲ）と称する。その後にＳＳＤコントローラは、ＦＰＧＡ  ＤＳＰでＦＡＲウィンドウをプログラムする。ＳＳＤコントローラは、ＦＰＧＡのＦＡＲウィンドウをプログラミングするために、Ｉ２ＣバスやＳＭバスのようなサイドバンドバスを使用する。ＳＳＤコントローラは、ＦＰＧＡのＦＡＲウィンドウをプログラミングするためにＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅｓ）を使用することもできる。
【００２５】
ホストインターフェースロジック（ＨＩＬ）モジュールは、ＮＶＭｅプロトコルを具現して、ホスト上で実行中のＮＶＭｅドライバと通信する。ＨＩＬモジュールは、一般的なホストＮＶＭｅコマンドを実行するためにＦＴＬ（Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌａｙｅｒ）と相互作用する。更に、ＨＩＬモジュールは、ホスト側から受信した特定のアクセラレーションコマンドを遮断し、それらをＡＰＭ−Ｓモジュールに伝達する。ＡＰＭ−Ｓは、ファームウェア又はファームウェア＋ハードウェアとして具現される。ＡＰＭ−Ｓモジュールは、特定のアクセラレーションコマンドを処理した後、アクセラレーションコマンド及びデータをＦＰＧＡ上のＡＰＭ−Ｆモジュールに送るために準備する。ＡＰＭ−Ｓモジュールは、アクセラレーション情報をＦＰＧＡに送るためにＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）アドレスを使用する。ＡＰＭ−ＳとＡＰＭ−Ｆとの間の通信は、メッセージをベースにすることができる。このようなＡＰＭ−ＳとＡＰＭ−Ｆとの間の通信のために、多様な方法を使用することができる。
【００２６】
提案された構造及びメカニズムは、ＦＰＧＡベースのアクセラレーションを可能にするために、ＳＳＤコントローラがホストＰＣＩｅバスの共有を可能にする。本発明の実施例は、ＳＳＤでＦＰＧＡを使用するアプリケーションのアクセラレーション化のための低コスト及び低消費電力の解決策を提供する。
【００２７】
ＤＳＰ＋ＵＳＰフィルタ構造
【００２８】
この構造で、ＦＰＧＡは間接的な方式でホストに可視化される。ＦＰＧＡとＳＳＤとの間の通信は、提案されたソリューション１と同じように維持される。ＳＳＤコントローラは、ホストから大きなシステムのアドレス空間が要請される。ＳＳＤコントローラは、割り当てられたアドレスブロックを３つのウィンドウに分割する。一番目のウィンドウは、ＮＶＭｅ  Ｃｏｎｔｒｏｌｌｅｒレジスタのアドレス空間のために使用される。二番目のウィンドウは、上述したように、ＦＰＧＡとＳＳＤとの間の通信のために使用される。三番目のウィンドウは、ホストとＦＰＧＡとの間の通信のためのものである。ホストは、特定のＮＶＭｅレジスタからＦＰＧＡデバイスの位置を発見する。ＳＳＤコントローラは、ＦＰＧＡデバイスの位置を知るために、ホストアプリケーションによって読み出される特定のレジスタの三番目のウィンドウを公表する。ＳＳＤコントローラは、ＵＳＰがこのようなトランザクションをフィルタリングすることができるように同じアドレスウィンドウでＵＳＰをプログラミングすることもできる。ＵＳＰは、三番目のウィンドウのアドレス空間に属するホストの全てのトランザクションをフィルタリングしてＦＰＧＡアクセラレーションロジックに伝達する。このメカニズムは、アクセラレーションコマンド及びデータをＦＰＧＡに通信するためにホスト上のアクセラレーションサービスマネージャー（ＡＳＭ）によって使用される。
【００２９】
従って、本発明のいくつかの実施例で、フィルタリングは、また、ホストからＦＰＧＡによって受信されたトラフィックに基づいて遂行される。即ち、ホストはアクセラレーションコマンド／データをＦＰＧＡに送ることもできる。ＦＰＧＡのＤＳＰ又はＦＰＧＡのＲＰに連結されたものと類似したフィルタが、ＦＰＧＡのＵＳＰ又はＦＰＧＡのＥＰにも連結される。ホストは、ストレージデバイスによって要請されたアドレス空間のアドレスを使用する。ホスト−ＦＰＧＡ通信のためにホストによって使用されたアドレスは、ホスト（言い替えると、要請されたアドレス空間は、ＮＶＭｅ通信に必要な空間よりも大きい可能性がある）又はホストのメモリアドレスマップ内の別のアドレス空間の一部（仮想関数又は二番目の物理関数のいずれか１つ又は両方に対して、２つの中の１つはストレージデバイスによってホストにさらされる）とのＮＶＭｅ通信のためにストレージデバイスによって要請されたアドレス空間の一部である。ＵＳＰ又はＥＰ及びＤＳＰ又はＲＰにおいて、フィルタリングは、ホストメモリアドレスマップ内の別のアドレス範囲を使用して遂行されるため、ホストが必要に応じてストレージデバイス又はＦＰＧＡにコマンドを送ることに留意する（ストレージデバイスがＦＰＧＡと通信するように許諾する間にも必要である）。
【００３０】
アドレス空間の一部が、ホストとＦＰＧＡとの間の通信を支援する本発明のいくつかの実施例で、ＦＰＧＡは、ホストに直接見えない可能性がある。この場合、ホスト上のＡＳＭは、ホスト−ＦＰＧＡの通信に使用されるアドレスの範囲を識別するためのＮＶＭｅアドレス空間の特定のレジスタに記録されたアドレスにアクセスすることにより、ＦＰＧＡを「発見」することができる。ＡＳＭは、ＰＣＩｅデバイステーブルを介してストレージデバイスを検索することで、ＮＶＭｅアドレス空間のどのレジスタがホスト−ＦＰＧＡ通信アドレス空間に対するポインタを格納するかがわかる。
【００３１】
ＶＦ＋ＤＳＰフィルタ構造
【００３２】
このＦＰＧＡ＋ＳＳＤの構造で、ＳＳＤは一つの物理関数（ＰＦ）と１つの仮想関数（ＶＦ）をホストに露出させる。ＳＳＤコントローラは、ＰＦを介してさらされる。ＶＦは、ＦＰＧＡを露出させるために使用される。ＰＦクラスコードは大容量ストレージデバイスを示す一方、ＶＦクラスコードはＦＰＧＡを識別するために設定される。ＳＳＤコントローラのＰＦは大規模システムメモリのアドレスブロックを要請してＦＰＧＡのアドレス指定ブロックのサブセットがＦＰＧＡ  ＤＳＰを通してＦＰＧＡとＳＳＤとのの間の通信に使用され、ＳＳＤコントローラＶＦはＦＰＧＡ  ＵＳＰを介してＦＰＧＡとホストとの間の通信のためにそれ自体のメモリアドレスブロックを要請する。
【００３３】
ＦＰＧＡ  ＵＳＰは、ＰＣＩｅトランザクションフィルタとして使用される他のメモリのフィルタアドレス範囲及び／又はＶＦタグ（ＦＡＲ−ＵＳＰ）でプログラムされる。ＵＳＰは、ＦＡＲウィンドウ及び／又はＶＦに属する全てのＰＣＩｅトランザクションに属する全てのＰＣＩｅトランザクションをフィルタリングし、これをＦＰＧＡのアクセラレーションロジック及びメモリに伝達する。プログラミングされたＦＡＲ−ＵＳＰウィンドウに属さない全てのＰＣＩｅトランザクション又はＶＦに属さないトランザクションは、ＳＳＤに属し、ＳＳＤに直接伝達される。ＳＳＤコントローラは、この情報を通信するために、ＰＣＩｅ  ＶＤＭメカニズム又はＩ２Ｃ／ＳＭバスのような他のサイドバンドバスを使用する適切なＦＡＲ−ＵＳＰウィンドウをプログラムする。
【００３４】
このＦＡＲアドレスウィンドウは、ホスト上で実行中のＡＳＭソフトウェアがＡＰＭ−Ｆとの通信を可能にする。即ち、ＦＰＧＡはホストから直接見ることができる。ＡＳＭソフトウェアは、アクセラレーションオーケストレーションコマンド及びデータをＦＰＧＡに送るためにＰＣＩｅアドレス範囲を使用する。その後、ＡＰＭ−Ｆは、受信されたアクセラレーションコマンド及びデータをランタイム（ＲＴ）スケジューラに提供する。ＲＴスケジューラは、データ処理を遂行するために適切なアクセラレーションエンジンを順番にプログラミングする。なお、ＡＰＭ−Ｆは、ホストメモリ又はＳＳＤストレージからデータをフェッチする。
【００３５】
ＰＦ＋ＤＳＰフィルタ構造
【００３６】
このＦＰＧＡ＋ＳＳＤの構造は、ＶＦを使用する代わりに第２  ＰＦを使用してＦＰＧＡをホストに露出させることを除いて、提案されたソリューション３と類似する。ＳＳＤコントローラは、２つの物理関数をホストに露出させる。第１  ＰＦはＳＳＤコントローラのために使用され、第２  ＰＦはＦＰＧＡのために使用される。第２  ＰＦの基本アドレスは、ＦＰＧＡのＦＡＲ−ＵＳＰでプログラミングされる。従って、ＵＳＰは、第２ＰＦに対しプログラムされたアドレス範囲（ＦＡＲ−ＵＳＰ）にあるホストから来る全てのトランザクションをフィルタリングしてそれらをＦＰＧＡに伝達する。このメカニズムは、ＦＰＧＡと通信するためにホスト上で実行中のＡＳＭにより使用される。
【００３７】
仮想関数又は（第２）物理関数をホストに露出させることにより、ホスト−ＦＰＧＡ通信のためのアドレス空間がホスト（ストレージデバイスによって又はＦＰＧＡによって）から要求される。仮想関数又は第２の物理的関数が露出された場合、ＵＳＰ／ＥＰのフィルタは、ホスト−ＦＩＦＩ通信に割り当てられたアドレスの範囲に基づいて、又は露出された仮想関数や露出された第２の物理的関数（例えば、フィルタ番号又は他のタグによって）をフィルタリングする。（仮想関数は、オペレーティングシステムの支援を要求する。そして第２の実際の関数が具現されるか又は支援される場合、第２の物理的関数を露出することは、仮想関数の使用に対する代替の解決策を提案する。）
【００３８】
ＰＦ＋ＲＰフィルタ構造
【００３９】
このＦＰＧＡ  ＳＳＤ構造で、ＦＰＧＡ  ＰＣＩｅポートは、ＵＳＰ及びＤＳＰではないＥＰ（ｅｎｄｐｏｉｎｔ）及びＲＰ（ｒｏｏｔ  ｐｏｒｔ）である。ＵＳＰ／ＤＳＰとＥＰ／ＲＰポートとの違いは、ＥＰ／ＲＰの両方がそれら自体のＰＣＩｅ構成空間を有する反面、ＵＳＰ／ＤＳＰポートはそうではないというものである。本発明のこのような実施例による構造で、ＦＰＧＡは２つのＰＦをホストに露出させる（ＰＦ／ＶＦを提供するＳＳＤがＦＰＧＡを露出させるのではなく、ＦＰＧＡがそれ自身のＰＦをホストに露出させることに注目する）。ＳＳＤ  ＥＰは、ＦＰＧＡ上のＲＰに連結される。第１ＦＰＧＡ  ＥＰ  ＰＦは、ホストをＳＳＤに直接連結するために使用される反面、第２ＦＰＧＡ  ＥＰ  ＰＦは、ホストをＦＰＧＡに連結するために使用される。このメカニズムは、ＦＰＧＡと通信するためにホストで実行中のＡＳＭにより使用される。ＳＳＤ−ＦＰＧＡ通信はＦＰＧＡ  ＲＰとＳＳＤ  ＥＰとの間でアドレス空間マップの一部を使用する。本発明のいくつかの実施例で、ＦＰＧＡの第１  ＰＦは、大規模なアドレス空間を要求し、ＢＩＯＳで割り当てられたアドレスウィンドウは、ＳＳＤコントローラ（ＥＰ）にマッピング又は変換される。このアドレス空間の一部は、ローカルＦＰＧＡ−ＳＳＤ通信のために使用される。本発明の他の実施例で、第２ＦＰＧＡ  ＥＰのために割り当てられたアドレス空間の部分は、ＦＰＧＡとＳＳＤコントローラとの間の通信のために使用される。
【００４０】
ＰＦ＋デュアルポートＳＳＤの構造
【００４１】
このＦＰＧＡ−ＳＳＤの構造で、デュアルポートＳＳＤはＦＰＧＡと共に使用される。この構造で、ＦＰＧＡ（言い換えると、ＦＰＧＡは、ＰＦ／ＶＦを提供するＳＳＤがＦＰＧＡを露出させるのではなく、それ自身のＰＦを露出させる）は、二つのＰＦをホストに露出させる。ＳＳＤ  ＥＰは、ＦＰＧＡ上のＲＰに連結される。第１ＦＰＧＡ  ＥＰ  ＰＦは、ホストをＳＳＤに直接連結するために使用される。第２ＦＰＧＡ  ＥＰ  ＰＦのために来る全てのホストのトランザクションは、ＦＰＧＡアクセラレーションロジックに伝達される。ホスト上で実行中のＡＳＭソフトウェアは、ＦＰＧＡと通信するための第２ＦＰＧＡ  ＥＰ  ＰＦを使用する。
【００４２】
ＦＰＧＡ−ＳＳＤ通信（アクセラレーション処理用）のために、ＳＳＤの第２ＰＣＩｅ  ＥＰが使用される。従って、ＦＰＧＡはＳＳＤに連結された二つのＲＰを有する。ＳＳＤの第１  ＥＰポートは、一般的なホストストレージアクセスのためにホストとの通信に使用される。ＳＳＤの第２  ＥＰは処理のためにＦＰＧＡに必要な全てのデータを伝送するために使用される。
【００４３】
言及したように、ストレージデバイスが２つの（又は潜在的により多くの）のポートを支援する本発明の実施例で、ＦＰＧＡは、ストレージデバイス上の２つのＥＰと通信するために２つのＲＰを支援する。このような本発明の実施例で、ＦＰＧＡ上の一つのＲＰ（及びそれに対応するストレージデバイス上のＥＰ）はストレージデバイスとホストとの間の通信を管理するために使用され、ＦＰＧＡ上の他のＲＰ（及びそれに対応するストレージデバイス上のＥＰ）はストレージデバイスとＦＰＧＡとの間の通信を管理するために使用される（アクセラレーションコマンド又はデータのための）。本発明のこのような実施例で、ＦＰＧＡ上のＲＰは、２つのアドレスマップ（各ＲＰ毎に１つずつ）を支援する。従って、ホストとストレージデバイスとの間の通信を支援するＲＰのためのアドレスマップは、ＮＶＭｅコマンドのために割り当てられた空間を含み、他のアドレスマップ（アクセラレーションコマンド／データの通信を管理するＲＰのための）は、全体的に通信のために作られる。本発明のこのような実施例で、ホストメモリアドレスマップは、ホストがアクセラレーションコマンドをストレージデバイスに通信するように意図された任意のアドレス空間を省略することができるが、これは、このような全てのコマンドがホストからＦＰＧＡに伝達されるためである（アドレス空間を介してＦＰＧＡの要請が、このような通信のためのホストのメモリアドレスマップ内に割り当てられる）。その後に、ＦＰＧＡは、コマンドを処理し、ＦＰＧＡとストレージデバイスとの間の通信専用に指定された第２のＲＰのメモリアドレスマップを使用して、必要に応じてコマンド／データをストレージデバイスに伝達する。
【００４４】
ＥＰ／ＲＰがＦＰＧＡでＵＳＰ／ＤＳＰの代わりに使用される場合、ＥＰ／ＲＰはＰＣＩｅ構成空間を支援し、ＦＰＧＡはその物理関数をホストに直接露出させる（このような機能をストレージデバイスに残すよりも）。ＦＰＧＡによって露出された一つの物理関数は、ホストからストレージデバイスへの通信を指示するために使用される。他の物理関数は、ホストとＦＰＧＡとの間の通信に使用される。本発明のこのような実施例で、ストレージデバイスがこのような要求を発生させるよりも、ＦＰＧＡはホストから割り当てられるアドレス空間を要求する。
【００４５】
ＥＰ／ＲＰは、それら自体のメモリマップを支援することもできる。従って、ＦＰＧＡはホストのメモリアドレスマップを使用してホストと通信し、ＦＰＧＡはストレージデバイスと通信するために使用されるそれ自体のメモリアドレスマップを支援する。本発明のこのような実施例で、ＦＰＧＡは、ホストからストレージデバイスへの通信を支援するために、ホストのメモリアドレスマップに割り当てられた空間を要請し（ＦＰＧＡを介して発生するそのような通信により）、追加の空間は、ホストからＦＰＧＡへの通信をサポートするために、ホストのメモリアドレスマップに割り当てられる。ＦＰＧＡのメモリアドレスマップは、ホストからストレージデバイスへコマンドを通信してＦＰＧＡとストレージデバイスとの間でアクセラレーションコマンド／データを通信するためのそれ自体の空間の割り当てを含む。ＦＰＧＡは、ホストとストレージデバイスとの間の通信のために使用されるアドレス空間を、ＦＰＧＡとストレージデバイス（同一サイズであるべき）との間の通信のために使用されるアドレス空間に変換する。
【００４６】
ＦＰＧＡが、ＥＰ／ＲＰを含む場合、ホストは、ＦＰＧＡを直接見る。これは、ＰＣＩｅ機能がＦＰＧＡによって露出される問題を提起する。ＦＰＧＡは、ストレージデバイスと同じＰＣＩｅ機能を露出させなければならない。従って、ＦＰＧＡは、ストレージデバイスのＳＳＤコントローラのＥＰのＰＣＩｅ構成をマッチングするためにＦＰＧＡのＥＰのＰＣＩｅ構成を設定するＰＣＩｅ構成モニターを含む。なお、ホストがＦＰＧＡのＥＰのＰＣＩｅ構成を変更する場合、ストレージデバイスのＥＰのＰＣＩｅ構成は、同様に修正される。
【００４７】
本発明の実施例は、全体の機能が維持されるならば、ＦＰＧＡ内で記述されたような構成／機能を多数の個別エレメントに分割することを支援する。ＦＰＧＡ構成は、ハードウェア、ソフトウェア／ファームウェア、又はこの２つの組み合わせを使用して具現される。
【００４８】
図１は、本発明の一実施例によるストレージデバイス上のアクセラレーション動作を支援する機械（又はマシン）１０５を示す図である。機械１０５は、プロセッサ１１０を含む。プロセッサ１１０は、任意の多様なプロセッサである。即ち、例として、Ｉｎｔｅｌ  Ｘｅｏｎ（登録商標）、Ｃｅｌｅｒｏｎ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、Ａｔｏｍ（登録商標）プロセッサ、ＡＭＤ  Ｏｐｔｅｒｏｎ（登録商標）プロセッサ、ＡＲＭプロセッサなどである。図１は、機械１０５内のシングルプロセッサ１１０を示し、機械１０５は、それぞれシングルコア又はマルチコアプロセッサである任意の数のプロセッサを含み、任意の所望の組み合わせで混合される。プロセッサ１１０は、ストレージデバイス１２０へのアクセスを支援するデバイスドライバ１１５を実行し、異なるデバイスドライバは、デバイスの他の構成に対するアクセスを支援する。本明細書の全般に亘り、ストレージデバイス１２０は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）のストレージデバイス１２０として説明するが、ストレージデバイス１２０は、以下の本発明の実施例で説明するアクセラレーション化されたコマンドを支援する任意の他のタイプのストレージデバイスであり得る。プロセッサ１１０は、またアクセラレーションコマンドを含む任意のアプリケーションであるアプリケーション１２５及びストレージデバイス１２０に格納されたデータ上で遂行されるアクセラレーションコマンドを伝送するために使用されるアプリケーションサービスマネージャ（ＡＳＭ）１３０を実行する。
【００４９】
機械１０５は、またメインメモリ１４０へのアクセスを管理するために使用されるメモリコントローラ１３５を含む。メモリ１４０は、フラッシュメモリ、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、永久ランダムアクセスメモリ、強誘電体ランダムアクセスメモリ（ＦｅＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）などのような不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）のような任意の他のタイプのメモリであり得る。
【００５０】
機械１０５は、またアクセラレーションモジュール１４５を含む。アクセラレーションモジュール１４５は、ストレージデバイス１２０に格納されたデータ上で、プロセッサ１１０によって要請されたアクセラレーションコマンドを遂行することにより、プロセッサ１１０を補助する。アクセラレーションモジュール１４５は、ファームウェア単独又はハードウェアとファームウェアとを組み合わせて使用して具現される。本明細書の全般に亘り、アクセラレーションモジュール１４５は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）１４５として説明するが、アクセラレーションモジュール１４５は、以下の本発明の実施例で説明するようにアクセラレーションコマンドを支援する任意の他のタイプのアクセラレーションモジュールであり得る。例として、アクセラレーションモジュール１４５は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＳＳＤのＩＳＣ（Ｉｎ−Ｓｔｏｒａｇｅ  Ｃｏｍｐｕｔｉｎｇ）能力、又は他の構成として具現されるか又は使用される。
【００５１】
なお、図１は、機械１０５をサーバ（スタンドアロン又はラックサーバである）のように図示するが、本発明の実施例は、任意の所望のタイプの機械１０５を制限なしに含む。例として、機械１０５は、デスクトップ、ラップトップコンピュータ、又は本発明の実施例から利益を得る任意の他の機械に代替される。機械１０５は、また特殊化されたポータブルコンピューティングマシン、タブレットコンピュータ、スマートフォン、及び他のコンピューティングマシン（ｍａｃｈｉｎｅ：機械）を含む。なお、図１は、ストレージデバイス１２０、アプリケーション１２５、及びＡＳＭ１３０を含む機械１０５を図示するが、本発明の実施例は、別のマシンで、それらの構成を有することができる。例として、ストレージデバイス１２０は、１つ以上のネットワーク（有線、無線、グローバルなど）を通過するネットワーク連結を介して機械１５０（及びアプリケーション１２５及びＡＳＭ１３０）に連結されたサーバにインストールされる。
【００５２】
図１に示した構成の特定の方式に拘らず、「ホスト」、「ホストマシン」、又は「ホストプロセッサ」という用語は、機械１０５を記述するために使用される。これは、プロセッサ１１０を独創的な概念の他の構成と区別する。
【００５３】
図１の構成の中で、本発明の実施例に関心のある３つのトラフィックストリームが存在する（本発明の実施例とは関係のない他のトラフィックストリームが有る）。
【００５４】
１）ホストからストレージデバイス１２０まで。ホスト（プロセッサ１１０）がストレージデバイス１２０に通信を送る。本発明の実施例で、このような全てのトラフィックは、アクセラレーションモジュール１４５を通過し、アクセラレーションモジュール１４５によってストレージデバイス１２０に到達することから遮断されてはならない。このようなトラフィックの実施例は、ストレージデバイス１２０からデータを読み出すための、及び／又はストレージデバイス１２０にデータを記録するためのコマンドを含む。即ち、ストレージデバイス１２０によって提供される他のコマンドもこのようなトラフィックに含まれる。
【００５５】
２）ＡＳＭ１３０からアクセラレーションモジュール１４５まで。ＡＳＭ１３０は、特定のアクセラレーションコマンドが遂行されるように要請する。いずれにせよ、本発明の特定の実施例に拘わらず、アクセラレーションモジュール１４５は、ＡＳＭ１３０からアクセラレーションコマンドを受信しなければならない。
【００５６】
３）アクセラレーションモジュール１４５からストレージデバイス１３０まで。アクセラレーションコマンドを遂行するために、アクセラレーションモジュール１４５は、ストレージデバイス１３０からデータをフェッチ又は受信する必要が有る。
【００５７】
図２は、図１の機械の追加的な細部構成を示す図である。図２で、典型的に、機械１０５は、デバイス１０５の構成要素の動作を調整するために使用されるメモリコントローラ１３５及びクロック２０５を含む１つ以上のプロセッサ１１０を含む。なお、プロセッサ１１０は、例としてランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、又は媒体を保存する他の状態を含むメモリ１４０に連結される。プロセッサ１１０は、またストレージデバイス１２０、及び例としてイーサネット（登録商標）コネクタ又は無線コネクタであるネットワークコネクタ２１０に連結される。プロセッサ１１０は、またバス２１５に連結され、これには他の構成要素の中のユーザーインターフェース２２０及び入力／出力エンジン２２５を使用して管理される入力／出力インターフェースポートが取り付けられる。
【００５８】
第１実施例
【００５９】
図３は、本発明の第１実施例による図１のアクセラレーションモジュール（ＦＰＧＡ）１４５及び図１のストレージデバイス（ＳＳＤ）１２０の構成を示す図である。図３において、プロセッサ１１０、ＦＰＧＡ１４５、及びＳＳＤ１２０は、通信することを示す。図３において、プロセッサ１１０、ＦＰＧＡ１４５、及びＳＳＤ１２０は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）バスを介して通信する。ＰＣＩｅバスは、任意の数のレーンが使用される。即ち、典型的な例は、ｘ４及びｘ８であるが、本発明の実施例は、任意の他の所望の数のレーンを使用する。この通信は、不揮発性メモリエクスプレス（ＮＶＭｅ）プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット（ＴＬＰ）であるＰＣＩｅトランザクションを含むが、本発明の実施例は、他のエンコーディングを使用する通信又は他のプロトコルのコマンドを含むために拡張される。
【００６０】
ＳＳＤ１２０は、エンドポイント（ＥＰ）３０５、ホストインターフェース階層（ＨＩＬ）３１０、ＳＳＤアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）３１５、フラッシュ変換階層（ＦＴＬ）３２０、及びフラッシュメディア３２５を含む。エンドポイント３０５は、ＳＳＤ１２０がＰＣＩｅ通信を受信して伝送する論理的又は物理的な連結ポイントである。ＳＳＤ１２０がエンドポイント３０５でプロセッサ１１０からＰＣＩｅトランザクションを受信すると（ＦＰＧＡ１４５を介して）、ＳＳＤ１２０は、ＰＣＩｅトランザクションをＨＩＬ３１０に配信する。その後、ＨＩＬ３１０は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かを判断する。ＰＣＩｅトランザクションがアクセラレーションコマンドを含む場合、ＨＩＬは処理のためにＰＣＩｅトランザクション（又はＰＣＩｅトランザクションから圧縮解除されたアクセラレーションコマンドそのもの）をＡＰＭ−Ｓ３１５に伝送する。即ち、ＡＰＭ−Ｓ３１５は、ファームウェア単独、又はハードウェアとファームウェアとの組み合わせを使用して具現される。そうでない場合、ＨＩＬ３１０はＦＴＬ３２０にＰＣＩｅトランザクション（又は圧縮解除されたＮＶＭｅコマンド）を配信し、ＦＴＬは、図１のアプリケーション１２５によって使用される論理ブロックアドレス（ＬＢＡ）を物理ブロックアドレス（ＰＢＡ）に変換してフラッシュメディア３２５に格納されたデータにアクセスする。
【００６１】
ＡＰＭ−Ｓ３１５が処理する基本的に２つのタイプのアクセラレーションコマンドがある。アクセラレーションコマンドの第１タイプは、プロセッサ１１０からの特定のコマンドである。本発明の第１実施例で、ＦＰＧＡ１４５は、プロセッサ１１０に見えない可能性がある。即ち、プロセッサ１１０は、全てのその通信をＳＳＤ１２０に伝送する。プロセッサ１１０がアプリケーションデータ上で遂行されるアクセラレーションコマンドを所望する場合、プロセッサ１１０は、特定のコマンドをＳＳＤ１２０に伝達する。プロセッサ１１０は、ＳＳＤ１２０に特定のコマンド／アクセラレーションコマンドをトンネリングするためにＮＶＭｅコマンドを使用する。ＨＩＬ３１０は、ＡＰＭ−Ｓ３１５に配信される特定のコマンドをインターセプトする。その後に、ＡＰＭ−Ｓ３１５は、アクセラレーションコマンドを遂行するためにＦＰＧＡ１４５に再び伝送される特定のコマンドに応答してアクセラレーションコマンドを生成する。この特定のコマンドは、例として、実行されるアクセラレーションコマンドの特定のタイプ及びアクセラレーションコマンドのオペレーションが遂行されるデータをエンコーディングする。
【００６２】
ＡＰＭ−Ｓ３１５が処理するアクセラレーションコマンドの第２のタイプは、データを含む。例として、ＦＰＧＡ１４５は、フラッシュメディア３２５に直接アクセスしない可能性があり、従って、アクセラレーションコマンドが遂行されるデータを受信せずにアクセラレーションコマンドを遂行することができない。従って、ＡＰＭ−Ｓ３１５は、ＦＰＧＡ１４５から問題のデータを要請するアクセラレーションコマンドを受信する。その後、ＡＰＭ−Ｓ３１５は、ＦＰＧＡ１４５がアクセラレーションコマンドを遂行するために要求されたデータにアクセスし、それをＦＰＧＡ１４５に返す。
【００６３】
図３において、ＳＳＤ１２０は、ＳＳＤで使用するのに適したＦＴＬ３２０及びフラッシュメディア３２５を含むものとして示される。ＳＳＤ１２０は、代替ストレージデバイスに置き換えられ、これらの構成要素は、ストレージデバイスのタイプに適した代替の構成要素に置き換えられる。例として、ＳＳＤ１２０は、ハードディスクドライブに置き換えられ、フラッシュメディア３２５は、ハードディスクプラッタに置き換えられる。データアクセスを支援するために追加の構成要素が更に含まれる。即ち、ハードディスクドライブのストレージデバイスの例を続けると、ストレージデバイスは、更に適切な読み取り／書き込みヘッドを含む。
【００６４】
ＦＰＧＡ１４５がプロセッサ１１０とＳＳＤ１２０との間の通信をインターセプトする前に、ＳＳＤ１２０は、プロセッサ１１０からホストメモリアドレスのブロックを要求する。ホストメモリシステムアドレスのブロックに対するこのような要求は、ＰＣＩｅトランザクションを使用するときに一般的であり、スタートアップのとき又は後に遂行される。それに応答して、プロセッサ１１０（又は図１の機械１０５の基本的な入力／出力システム（ＢＩＯＳ））は、ＳＳＤ１２０による使用のためにホストメモリシステムアドレスのブロックを割り当てる。その後、ホストマシンは、このホストメモリシステムアドレスのブロックが、図１の機械１０５で他のデバイスによって利用できないことを知る。
【００６５】
図４は、本発明の第１実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。図４で、ＳＳＤ１２０は、ホストメモリシステムアドレスのブロックを要請する。プロセッサ１１０とＳＳＤ１２０との間のＮＶＭｅ通信を支援するために必要なメモリの量は比較的少ないが、例として６４ＫＢ−ＳＳＤ１２０は、はるかに大きいブロック、例として１０ＭＢ以上を要求する。それに応答して、プロセッサ１１０は、ホストメモリシステムのアドレスブロック４０５を返す。ブロック４０５の一端は、ＢＡＲ（Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）に格納され、ＳＳＤ１２０がＢＡＲ（そして要請されたブロックのサイズのＳＳＤ１２０の情報（ｋｎｏｗｌｅｄｇｅ）と共に）に基づいて、ブロック４０５を判断する。
【００６６】
一旦ＳＳＤ１２０が、どのようなアドレスがブロック４０５に在るかを知ると、ＳＳＤ１２０は、ブロック４０５をそれ自身の使用のために異なる領域に分ける。ブロック４０５の１つのサブセット４１０は、ＮＶＭｅ通信のために使用される。他のサブセット４１５は、使用されないまま残される。ダウンストリームＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）４２０（任意のフィルタリングがプロセッサ１１０からのダウンストリームで行われるため、「ダウンストリーム」）と称される第３サブセットは、ＳＳＤ１２０とＦＰＧＡ１４５との間の通信のための専用に使用される。ダウンストリームＦＡＲ４２０は、ＳＳＤ１２０及びＦＰＧＡ１４５の両方で使用されることに注目する。ＳＳＤ１２０及びＦＰＧＡ１４５のいずれか１つは、問題のＰＣＩｅトランザクションがアクセラレーションコマンドを含むことを示すダウンストリームＦＡＲ４２０内のアドレスを使用する。
【００６７】
図３に戻って、ＳＳＤ１２０がダウンストリームＦＡＲ４２０内のアドレスを使用して通信を伝送すると、ＦＰＧＡ１４５は、ダウンストリームポート３３５で通信を受信して通信をインターセプトし、その通信をプロセッサ１１０に伝達するのではなく局部的に処理する。ダウンストリームＦＡＲ４２０を含まないＳＳＤ１２０からのダウンストリームポート３３５でＦＰＧＡ１４５によってプロセッサ１１０に受信される任意の通信は、アップストリームポート３３０を介してＦＰＧＡ１４５によりプロセッサ１１０に配信される（ＦＰＧＡ１４５がアップストリームポート３３０でプロセッサ１１０から受信する任意の通信は、ダウンストリームポート３３５を介して自動的にＳＳＤ１２０に配信される）。
【００６８】
ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との間の通信をインターセプトすることができるように、プロセッサ１１０とＳＳＤ１２０との間に位置する。このような通信をインターセプトすることにより、ＦＰＧＡ１４５は、ＳＳＤ１２０によって要請されたアクセラレーションコマンドを遂行する。
【００６９】
アクセラレーションコマンドを遂行するために、ＦＰＧＡ１４５は、アップストリームポート３３０、ダウンストリームポート３３５、ＦＰＧＡアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）３４０、スケジューラ３４５、及びアクセラレーションエンジン（３５０−１及び３５０−２）を含む。アップストリームポート３３０は、プロセッサ１１０と通信するために使用される。ダウンストリームポート３３５は、ＳＳＤ１２０と通信するために使用される。ＡＰＭ−Ｆ３４０は、ＦＰＧＡ１４５がインターセプトした任意のアクセラレーションコマンドを受信することに対する責任がある。このようなアクセラレーションコマンドは、メッセージメールボックス３５５を使用してダウンストリームポート３３５からメッセージのように受信されるが、本発明の実施例は、ＡＰＭ−Ｆがアクセラレーションコマンドを受信するための他のメカニズムに拡張され得る。一度アクセラレーションコマンドが受信されると、ＡＰＭ−Ｆ３４０は、アクセラレーションコマンドを処理する。例として、ＦＰＧＡ１４５がアクセラレーションコマンドを遂行する十分な情報を有する場合、ＡＰＭ−Ｆ３４０は、アクセラレーションコマンドをアクセラレーションエンジン（３５０−１及び３５０−２）のような任意の利用可能なアクセラレーションエンジンでスケジューリングするスケジューラ３４５（「ランタイムスケジューラ」と称される）にアクセラレーションコマンドを通過させる。一方、図３は、２つのアクセラレーションエンジン（３５０−１、３５０−２）を図示するが、本発明の実施例は、任意の所望の数のアクセラレーションエンジンを含むことができる。即ち、図３に示した二つは単に例示的な目的のためのものである。代案的に、ＦＰＧＡ１４５がアクセラレーションコマンドを遂行するための追加情報を必要とする場合、即ち、例として、ＦＰＧＡ１４５はアクセラレーションコマンドが遂行されるデータを必要とし、ＡＰＭ−Ｆ３４０は、ＰＣＩｅトランザクションを、必要なデータを要請するＳＳＤ１２０に送るというような他の動作をとる。
【００７０】
特定のＰＣＩｅトランザクションが、アクセラレーションコマンドを含むか否かを判断するために、ＦＰＧＡ１４５は、ダウンストリームポート３３５に関連付けられたダウンストリームフィルタ３６０を含む。ダウンストリームフィルタ３６０は、アクセラレーションコマンドを含むＳＳＤ１２０から発行されたＰＣＩｅトランザクションを識別する。これは所望の方式で遂行される。本発明のいくつかの実施例で、ＳＳＤ１２０は、図４のダウンストリームＦＡＲ４２０でダウンストリームフィルタ３６０をプログラミングする。その後、ダウンストリームフィルタ３６０が、図４のダウンストリームＦＡＲ４２０内のアドレスを使用するＰＣＩｅトランザクションを識別すると、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションを、アクセラレーションコマンドを含むものとして識別し、ＰＣＩｅトランザクションをインターセプトする。ＳＳＤ１２０は、任意の所望の方式でダウンストリームフィルタ３６０をプログラミングする。例として、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をプログラミングするために、内部の集積回路バス（Ｉ２Ｃバス）又はシステム管理バス（ＳＭバス）のようなサイドバンドバス３６５を使用する。また、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をプログラミングするために、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用する。ＳＳＤ１２０は、またダウンストリームフィルタ３６０をプログラミングするために他のメカニズムを使用することができる。
【００７１】
図３において、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示している。即ち、具体的に、アップストリームポート３３０、ダウンストリームポート３３５、及びダウンストリームフィルタ３６０である。ＦＰＧＡ１４５は、プロセッサ１１０及びＳＳＤ１２０と通信するいくつかのメカニズムを必要とするが、本発明の実施例は、通信要素をＦＰＧＡ１４５から分離する。例として、ダウンストリームポート３３５とダウンストリームフィルタ３６０は、即ち、プロセッサ１２０に配信される代わりにアクセラレーションコマンドを含むＳＳＤ１２０から受信されたＰＣＩｅトランザクションを識別すること（及びＡＰＭ−Ｆ  ３４０にリダイレクトする必要があり）に対する責任のある後者であり、ＦＰＧＡ１４５とＳＳＤ１２０との間のブリッジ構成要素（図３に図示せず）に配置される。これらのブリッジ構成要素は、ＦＰＧＡ１４５及びＳＳＤ１２０と通信するために必要なため、ＦＰＧＡ１４５は、依然としてダウンストリームポート３３５（又はブリッジ構成要素との通信を可能にする代案的な構造）を含むが、その後にダウンストリームフィルタ３６０は、ＦＰＧＡ１４５から除去される。
【００７２】
上述した本発明の第１実施例は、プロセッサ／ＦＰＧＡ／ＳＳＤの具現の可能な組み合わせを示す。以下で、本発明の他の実施例として説明する他の具現もまた可能である。特定の構成の動作（例として、ＡＰＭ−Ｆ３４０、スケジューラ３４５、及びアクセラレーションエンジン（３５０−１及び３５０−２）の動作）の間に差異がない場合、それらの動作の繰り返しの説明は、後続の本発明の実施例で省略される。
【００７３】
第２実施例
【００７４】
図５は、本発明の第２実施例による図１のアクセラレーションモジュール（ＦＰＧＡ）１４５及び図１のストレージデバイス（ＳＳＤ）１２０の構成を示す図である。本発明の第２実施例は、アップストリームポート３３０がフィルタも含むことを除いては、本発明の第１実施例と類似する。即ち、アップストリームフィルタ５０５である。アップストリームフィルタ５０５は、ダウンストリームフィルタ３６０と類似の方式で、プロセッサ１１０（アップストリームポート３３０を介して受信された）から来るＰＣＩｅトランザクションをフィルタリングする。例として、ＳＳＤ１２０は、図４のダウンストリームＦＡＲ３６５と同様にアップストリームＦＡＲを定義し、サイドバンドバス３６５、ＰＣＩｅ、ＶＤＭ、又は任意の他のメカニズムを使用してアップストリームＦＡＲでアップストリームフィルタ５０５をプログラミングする。その後、ＦＰＧＡ１４５がアップストリームポート３３０でプロセッサ１１０からＰＣＩｅトランザクションを受信すると、アップストリームフィルタ５０５は、アップストリームフィルタ５０５がアップストリームＦＡＲ内にアドレスを含むか否かを見るためにＰＣＩｅトランザクションを検査する。そうである場合、ＰＣＩｅトランザクションはアクセラレーションコマンドであり、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に配信するのではなく、プロセッサのためのＰＣＩｅトランザクションをＡＰＭ−Ｆ３４０にルーティングする。
【００７５】
図６は、本発明の第２実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。本発明の第１実施例のように、ＳＳＤ１２０は、ＳＳＤ１２０がＮＶＭｅコマンドを支援するために必要なアドレスの範囲よりも大きいホストシステムメモリアドレスのブロックを要請し、そのＢＡＲに応答してブロック４０５を受信する。その後、ＳＳＤ１２０は、ＮＶＭｅ通信のためにブロック４０５の１つのサブセット４１０を維持し、他のサブセット４１５は未使用にされ、第３サブセットはダウンストリームＦＡＲ４２０として別に設定され、第４サブセットはアップストリームＦＡＲ６０５として別に設定される。
【００７６】
図５に戻ると、本発明の第２実施例で、プロセッサ１１０は、ＦＰＧＡ１４５が発見可能なデバイスではないため、依然としてＦＰＧＡ１４５を直接「見（ｓｅｅ）」ない。しかし、ＳＳＤ１２０は、アップストリームＦＡＲ６０５のベースアドレスをＮＶＭｅ通信のためのサブセット４１０内の特定のレジスタにプログラミングすることにより、アップストリームＦＡＲ６０５をプロセッサ１１０に知らせることができる。ＮＶＭｅ通信のためのサブセット４１０から、この特定のレジスタを読み出すと、プロセッサ１１０は、アップストリームＦＡＲ６０５を認識する。その後、プロセッサ１１０は、ＳＳＤ１２０のＡＰＭ−Ｓ３１５に特定のコマンドを伝送する代わりにアクセラレーションコマンドをＦＰＧＡ１４５に伝送する（アップストリームポート３３０を介して）。
【００７７】
図５において、図３のように、ＦＰＧＡ（１４５）は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示される。即ち、具体的に、アップストリームポート３３０、アップストリームフィルタ５０５、ダウンストリームポート３３５、及びダウンストリームフィルタ３６０である。図３に示した本発明の実施例と同様に、ＰＣＩｅトランザクションのフィルタリングに関連付けられた構成要素は、ＦＰＧＡ１４５から除去される。従って、本発明の第２実施例で、アップストリームポート３３０及びアップストリームフィルタ３３５は、第１ブリッジ構成要素及びダウンストリームポート３３５に配置され、ダウンストリームポート３３５及びダウンストリームフィルタ３６０は、第２ブリッジ構成要素に配置され、それぞれが図５の異なる構成要素を有するＰＣＩｅトランザクションのフィルタリングを処理する。また、ＰＣＩｅトランザクションのソースに関係なく、このようなブリッジ構成要素の中の単に一つのみが使用されるか（他のソース（ｓｏｕｒｃｅ）からの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５と共に）、又はシングルブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用される。
【００７８】
第３実施例
【００７９】
図７は、本発明の第３実施例による図１のアクセラレーションモジュール（ＦＰＧＡ）１４５及び図１のストレージデバイス（ＳＳＤ）１２０の構成を示す図である。本発明の第３の実施例で、ＳＳＤ１２０は、物理機能（ＰＦ）７０５及び仮想機能（ＶＦ）７１０を含む（本発明の第３実施例は、本発明の他の実施例がＰＦ及び／又はＶＦを含まないことを意味するのではなく、単に本発明の第３実施例と同じ方式で使用されないことを意味する）。ＰＦ７０５は、ＳＳＤ１２０によって提供される機能のようなシングルリソースを示す。ＶＦ７１０は、ＰＦに関連付けられるが、「仮想化」された機能を示す。即ち、与えられたＰＦに対して１つ以上のＶＦが有る。しかし、ＳＳＤ１２０の仮想機能を表現する代わりに、ＶＦ７１０は、ＦＰＧＡ１４５を「露出」する。即ち、ＶＦ７１０は、ＦＰＧＡ１４５の機能を示す。（ＶＦ７１０は、依然としてＦＰＧＡ１４５の一部ではなく、ＳＳＤ１２０の一部である。しかし、ＦＰＧＡ１４５を露出させるための専用ＶＦ７１０を使用すると、ＶＦ７１０に関連付けられた任意のメモリアドレスは、他のデバイスと衝突しない。）ＰＣＩｅデバイスが列挙されている場合、ＰＦ及びＶＦがプロセッサ１１０によって発見されるため、プロセッサ１１０は、それ自身を直接発見することができなくても、ＶＦ７１０を介してＦＰＧＡ１４５を間接的に発見することができる。
【００８０】
図８は、本発明の第３実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。本発明の第１実施例のように、ＳＳＤ１２０は、ＳＳＤ１２０がＮＶＭｅコマンドを支援する必要のあるアドレスの範囲よりも大きいホストシステムメモリアドレスのブロックを要請する。しかし、ＳＳＤ１２０は、実際にはホストシステムのメモリアドレスの２つの異なるブロックを要請する。即ち、ＰＦ７０５に対するブロック８０５及びＶＦ７１０に対するブロック８１０である。ダウンストリームＦＡＲ４２０は、ＰＦ７０５に対するブロック８０５のサブセットとして選択される。従って、アップストリームＦＡＲ６０５は、ＶＦ７１０に対するブロック８１０の全体である。（アップストリームＦＡＲ６０５は、単にブロック８１０のサブセットとして選択される。しかし、ブロック８１０は、ＶＦ７１０による使用のために専用されて、ＶＦ７１０はＦＰＧＡ１４５を効果的に露出させること以外の他の目的を有さないため、アップストリームＦＡＲ６０５の一部として使用されないブロック８１０の任意のメモリアドレスは、無駄になる。）ＳＳＤ１２０が、各ブロックに対して割り当てられたアドレスの範囲を知るようにする間、ブロック（８０５及び８１０）のそれぞれは、個々のＢＡＲを有する。
【００８１】
図７に戻ると、本発明の第２実施例と同様に、アップストリームポート３３０は、更にフィルタを含む。即ち、ＶＦフィルタ７１５である。ＶＦフィルタ７１５は、ダウンストリームフィルタ３６０と類似の方式で、プロセッサ１１０（アップストリームポート３３０を介して受信された）から来るＰＣＩｅトランザクションをフィルタリングする。例として、ＳＳＤ１２０は、サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ、又は任意の他のメカニズムを使用してアップストリームＦＡＲ６０５でＶＦフィルタ７１５をプログラムする。その後に、ＦＰＧＡ１４５がアップストリームポート３３０でプロセッサ１１０からＰＣＩｅトランザクションを受信すると、ＶＦフィルタ７１５は、ＰＣＩｅトランザクションがアップストリームＦＡＲ６０５内のアドレスを含むか否かを知るためにＰＣＩｅトランザクションを検査する。そうである場合、ＰＣＩｅトランザクションはアクセラレーションコマンドであり、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に配信するのではなく、プロセッサのためのＰＣＩｅトランザクションをＡＰＭ−Ｆ３４０にルーティングする。
【００８２】
代案として、ＳＳＤ１２０は、ＶＦ７１０の識別子でＶＦフィルタ７１５をプログラムする。ＶＦフィルタ７１５は、アップストリームポート３３０でプロセッサ１１０から受信されたＰＣＩｅトランザクションを検査し、それがＶＦ７１０の識別子を含むか否かを知る。ＰＣＩｅトランザクションがＶＦ７１０の識別子を含む場合、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に配信するのではなく、プロセッサのためのＰＣＩｅトランザクションをＡＰＭ−Ｆ３４０にルーティングする。
【００８３】
図７において、本発明の上記実施例のように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示される。即ち、具体的に、アップストリームポート３３０、ＶＦフィルタ７１５、ダウンストリームポート３３５、及びダウンストリームフィルタ３６０である。上述した本発明の実施例のように、ＰＣＩｅトランザクションのフィルタリングに関連付けられた構成要素は、ＦＰＧＡ１４５から除去される。従って、本発明の第３実施例で、アップストリームポート３３０及びＶＦフィルタ７１５は第１ブリッジ構成要素に配置され、ダウンストリームポート３３５及びダウンストリームフィルタ３６０は、それぞれが図７の異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置される。代替的に、ＰＣＩｅトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるか（他のソースからの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５と共に）、又はシングルブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタを処理するために使用される。
【００８４】
第４実施例
【００８５】
ＦＰＧＡ１４５を露出させるためにＶＦ７１０を使用する問題の１つは、ＶＦを使用することがプロセッサ１１０のホストの動作システムからの支援を要求するというものである。一部のオペレーティングシステムは、ＶＦをサポートするが、全てのオペレーティングシステムがＶＦを支援するわけではなく、ＶＦを支援するのは、オペレーティングシステムに対してそれ自体の複雑さを伴う。本発明の第４実施例はＶＦを使用する問題点を解決する。
【００８６】
図９は、本発明の第４実施例による図１のアクセラレーションモジュール（ＦＰＧＡ）１４５及び図１のストレージデバイス（ＳＳＤ）１２０の構成を示す図である。本発明の第３実施例とは対照的に、本発明の第４実施例で、ＳＳＤ１２０は、２つのＰＦ（７０５、９０５）を含む。（本発明の第３実施例のように、本発明の第４実施例は、本発明の他の実施例がＰＦ及び／又はＶＦを含まないことを意味しない。）ＰＦ７０５は、ＳＳＤ１２０によって提供される機能のようなシングルリソースを示し続ける。一方、ＰＦ９０５は、ＦＰＧＡ１４５を露出させる。即ち、ＰＣＩｅデバイスが列挙されるときにＰＦがプロセッサ１１０によって発見されるため、プロセッサ１１０は、それ自身を直接発見することができなくても、ＰＦ９０５を介してＦＰＧＡ１４５を間接的に発見することができる。
【００８７】
図１０は、本発明の第４実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。本発明の第３実施例のように、ＳＳＤ１２０は、ホストシステムのメモリアドレスの二つの異なるブロックを要求する。即ち、ＰＦ７０５に対するブロック１００５及びＰＦ９０５に対するブロック１０１０である。ダウンストリームＦＡＲ４２０は、ＰＦ７０５に対するブロック１００５のサブセットとして選択される。そしてアップストリームＦＡＲ６０５は、ＰＦ９０５に対するブロック１０１０の全体である。（即ち、アップストリームＦＡＲ６０５は、ブロック１０１０のサブセットとして選択される。しかし、ブロック１０１０はＰＦ９０５による使用のために専用されて、ＰＦ９０５はＦＰＧＡ１４５を効果的に露出させること以外の他の目的を有さないため、アップストリームＦＡＲ６０５の一部として使用されないブロック１０１０の任意のメモリアドレスは無駄になる。）ＳＳＤ１２０が、各ブロックに対して割り当てられたアドレスの範囲を知るようにする間、ブロック（１００５及び１０１０）のそれぞれは、個々のＢＡＲを有する。
【００８８】
図９に戻ると、本発明の第３実施例と同様に、アップストリームポート３３０は、更にフィルタを含む。即ち、ＰＦフィルタ７１５（ＰＦフィルタ７１５は、動作中の図７のＶＦフィルタ７１５と実質的に同一であり、名前の変更はＰＦフィルタ７１５がＶＦフィルタ７１５とは異なるように動作するため、ＦＰＧＡ１４５を露出させるために使用される機能のタイプに更に関連がある）である。ＰＦフィルタ７１５は、ダウンストリームフィルタ３６０と類似の方式で、プロセッサ１１０（アップストリームポート３３０を介して受信された）から来るＰＣＩｅトランザクションをフィルタリングする。例として、ＳＳＤ１２０は、サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ、又は任意の他のメカニズムを使用してアップストリームＦＡＲ６０５でＶＦフィルタ７１５をプログラムする。その後に、ＦＰＧＡ１４５がアップストリームポート３３０でプロセッサ１１０からＰＣＩｅトランザクションを受信すると、ＰＦフィルタ７１５は、ＰＣＩｅトランザクションがアップストリームＦＡＲ６０５にアドレスを含むか否かを知るためにＰＣＩｅトランザクションを検査する。そうである場合、ＰＣＩｅトランザクションはアクセラレーションコマンドであり、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に配信するのではなく、プロセッサのためのＰＣＩｅトランザクションをＡＰＭ−Ｆ３４０にルーティングする。
【００８９】
代案として、ＳＳＤ１２０は、ＰＦ９０５の識別子でＰＦフィルタ７１５をプログラムする。ＰＦフィルタ７１５は、アップストリームポート３３０でプロセッサ１１０から受信されたＰＣＩｅトランザクションを検査し、それがＰＦ９０５の識別子を含むか否かを知る。ＰＣＩｅトランザクションがＰＦ９０５の識別子を含む場合、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に配信するのではなく、プロセッサのためのＰＣＩｅトランザクションをＡＰＭ−Ｆ３４０にルーティングする。
【００９０】
図９において、本発明の上記実施例のように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示される。即ち、具体的に、アップストリームポート３３０、ＰＦフィルタ７１５、ダウンストリームポート３３５、及びダウンストリームフィルタ３６０である。上述した本発明の実施例のように、ＰＣＩｅトランザクションのフィルタリングに関連付けられた構成要素は、ＦＰＧＡ１４５から除去される。従って、本発明の第４実施例で、アップストリームポート３３０及びＰＦフィルタ７１５は第１ブリッジ構成要素に配置され、ダウンストリームポート３３５及びダウンストリームフィルタ３６０は、それぞれが図９の異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置される。代替的に、ＰＣＩｅトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるか（他のソースからの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５と共に）、又はシングルブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用される。
【００９１】
第５実施例
【００９２】
本発明の第４実施例は、本発明の第３実施例のようにＶＦを使用することの難しさを扱う。しかし、本発明の第４実施例を使用するために、ＳＳＤ１２０は、ＦＰＧＡ１４５の使用のために専用されるＰＦ９０５を提供する必要がある。全てのＳＳＤ（又は、より一般的には、ストレージデバイス）がＦＰＧＡ１４５の使用のために専用される利用可能なＰＦを有しない。本発明の第５実施例は、ＳＳＤ１２０が多数のＰＦを提供する必要がない解決策を提供する。
【００９３】
図１１は、本発明の第５実施例による図１のアクセラレーションモジュール（ＦＰＧＡ）１４５及び図１のストレージデバイス（ＳＳＤ）１２０の構成を示す図である。図１１において、ＳＳＤ１２０は、ＰＦ及びＶＦを提供することが必要のない図３及び図５で示した構造に戻る。（即ち、ＳＳＤ１２０は、ＰＦ及び／又はＶＦを提供しなくてもよく、ＳＳＤ１２０は、追加のＰＦ及び／又はＶＦを提供する必要がない。）
【００９４】
本発明の第１〜第４実施例と比較すると、本発明の第５実施例で、ＦＰＧＡ１４５は多少異なる。図３、５、７、及び９のようなアップストリームポート３３０及びダウンストリームポート３３５の代わりに、ＦＰＧＡ１４５は、エンドポイント１１０５及びルートポート１１１０（用語「ポート」は、「ルートポート」と交換可能に使用される）を含む。図３、５、７、及び９のアップストリームポート３３０及びダウンストリームポート３３５は、スイッチとみなされ、即ちそれらは効果的に通過デバイス（ｐａｓｓ−ｔｈｒｏｕｇｈ  ｄｅｖｉｃｅｓ）であり、エンドポイント１１０５及びルートポート１１１０は、ＰＣＩｅの列挙を介して発見される通信のための終端点（ｔｅｒｍｉｎａｔｉｏｎ  ｐｏｉｎｔｓ）である。この事実は、エンドポイント１１０５及びルートポート１１１０が、図１２を参照して以下に説明するそれら自身のＰＣＩｅの構成空間を含むことを意味する。しかし、エンドポイント１１０５及びルートポート１１１０は、通信のための終端点であるため、プロセッサ１１０及びＳＳＤ１２０は、通信を相互に指示するよりも、それぞれのエンドポイント１１０５及びルートポート１１１０にそれらの通信を指示する。
【００９５】
エンドポイント１１０５は、２つのＰＦ（１１１５及び１１２０）を含む（又は代替的に、一つのＰＦ及び１つのＶＦ。即ち、重要なのは、エンドポイント１１０５が互いに区別される２つの機能を含むということである）。プロセッサ１１０がエンドポイント１１０５にＰＣＩｅトランザクションを伝送すると、プロセッサ１１０は、どのＰＦのアドレスが指定されるかを特定する。上述した本発明の第３及び第４実施例と同様に、エンドポイント１１０５は、ＰＦを識別するＰＣＩｅトランザクションに含まれるタグ、又はＰＣＩｅトランザクション（即ち、下記の図１２を参照して説明する）に関連付けられたアドレスによってどのＰＦがアドレス指定されるかを識別する。ＰＦ１１１５を識別するＰＣＩｅトランザクションは、ＳＳＤ１２０のために予定のものと見なされ、ルートポート１１１０を介してＦＰＧＡ１４５によってＳＳＤ１２０に伝送される。ＰＦ１１２０を識別するＰＣＩｅトランザクションは、アクセラレーションコマンドを含むものと見なされ、ＡＰＭ−Ｆ３４０にルーティングされる。
【００９６】
ルートポート１１１０は、ダウンストリームフィルタ３６０を含む。ダウンストリームフィルタ３６０は、図３、５、７、９、及び１１のダウンストリームフィルタ３６０と同様に動作する。即ち、唯一の重要な違いは、ダウンストリームフィルタが、ホストシステムメモリアドレスに基づいてフィルタリングするのではなく、下記の図１２を参照して説明するように、ＦＰＧＡメモリアドレスに基づいてフィルタリングするものである。ダウンストリームフィルタ３６０は、サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ、又は任意の他の望みのメカニズムを使用してＳＳＤ１２０によってダウンストリームＦＡＲ４１０でプログラムされる。
【００９７】
ＦＰＧＡ１４５は、更に構成モニター１１２５を含む。ＦＰＧＡ１４５は、ＳＳＤ１２０を代替するのではなく単に追加の機能を提供するため、そしてＦＰＧＡ１４５がプロセッサ１１０とＳＳＤ１２０との間に挿入されるため、プロセッサ１１０がＳＳＤ１２０によって提供される機能を知ることは重要である。より具体的に、ＦＰＧＡ１４５は、ＳＳＤ１２０のＰＣＩｅ構成空間にマッチする性能を知らせなければならない。その目的を達成するために、それに応じてＳＳＤ１２０が提示するのと同じＰＣＩｅ構成をプロセッサ１１０に提供し、そのために構成モニター１１２５はＳＳＤ１２０のＰＣＩｅ構成空間を複製する。
【００９８】
図１２は、本発明の第５実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図であり、ＦＰＧＡ１４５及びＳＳＤ１２０の構成を示す。図１２において、ＳＳＤ１２０は、これ以上プロセッサ１１０と直接通信しないため、ＳＳＤ１２０は、ホストシステムのメモリアドレスのブロックを要求しない。代わりに、ＳＳＤ１２０は、ルートポート１１１０のための構成空間を含むアドレスマップ１２１０からＦＰＧＡメモリアドレスのブロック１２０５を要請する。ブロック１２０５は、プロセッサ１１０とダウンストリームＦＡＲ４２０とのＮＶＭｅ通信のためのサブセット４１０を含む。
【００９９】
ＦＰＧＡ１４５なしで予想されるように、ＳＳＤ１２０と通信するプロセッサ１１０によってメカニズムを提供するため、ＦＰＧＡ１４５は、プロセッサ１１０からホストシステムのメモリアドレスを要請する。
【０１００】
ＦＰＧＡ１４５のＳＳＤ１２０によって要請された並列のブロック１２０５に対して、ＦＰＧＡ１４５は、ＰＦ１１１５のための少なくともブロック１２０５と同じ大きさのブロック１２１５を求める（従って、ＳＳＤ１２０がプロセッサ１１０からブロック１２１５を要請したかのように見える）。ブロック１２１５でアドレスを使用するＰＣＩｅトランザクションは、ホストとＳＳＤ１２０との間の通信のためのものであるが、ＦＰＧＡ１４５を通過していることを反映するために、ブロック１２１５は、図１２で「ホスト−ＦＰＧＡ−ＳＳＤ」で示される。ＦＰＧＡ１４５は、アクセラレーションコマンドについてＡＰＭ−Ｆ３４０と通信するプロセッサ１１０のためのメカニズムを提供し、ＰＦ１１２０のためのブロック１２２０を要請する。ブロック（１２１５及び１２２０）は、それぞれ２つの分離されたＢＡＲにより識別される。本発明の他の実施例で、ＦＰＧＡ１４５とＳＳＤ１２０との間の通信を容易にするために、ダウンストリームＦＡＲ４２０のようにブロック１２２０の一部分を使用することが可能である。
【０１０１】
図１１において、本発明の上記実施例のように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示される。即ち、具体的に、エンドポイント１１０５、ＰＦ（１１１５及び１１２０）、ルートポート１１１０、及びダウンストリームフィルタ３６０である。上述した本発明の実施例と同様に、ＰＣＩｅトランザクションのフィルタリングに関連付けられた構成要素は、ＦＰＧＡ１４５から除去される。従って、本発明の第５実施例で、エンドポイント１１０５、ＰＦ（１１１５及び１１２０）は第１ブリッジ構成要素及びルートポート１１１０に配置され、ルートポート１１１０及びダウンストリームフィルタ３６０は、それぞれが図１１の異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置される。代替的に、ＰＣＩｅトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるか（他のソース（ｓｏｕｒｃｅ）からの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５と共に）、又はシングルブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用される。
【０１０２】
第６実施例
【０１０３】
本発明の第５実施例は、従来のＰＣＩｅトランザクション（プロセッサ１１０とＳＳＤ１２０との間の）からアクセラレーションコマンド（ＳＳＤ１２０とＦＰＧＡ１４５との間の）を分離するために、依然としてダウンストリームフィルタ３６０に依存する。ダウンストリームフィルタ３６０は、下記本発明の第６実施例のようにＳＳＤ１２０が第２エンドポイントを含む場合に除去される。
【０１０４】
図１３は、本発明の第６実施例による図１のアクセラレーションモジュール（ＦＰＧＡ）１４５及び図１のストレージデバイス（ＳＳＤ）１２０の構成を示す図である。図１３で、ＦＰＧＡは、図１１の実施例で示した１つのルートポート１１１０ではなく、２つのルートポート（１１１０及び３０５）を含む。ルートポート１１１０は、プロセッサ１１０から発生する従来のＰＣＩｅトランザクションに使用される。ルートポート１３０５は、ＳＳＤ１２０とＦＰＧＡ１４５との間で交換されるアクセラレーションコマンド及びデータのために使用される。
【０１０５】
アクセラレーションコマンドは、異なるルートポート（１１１０及び１３０５）を使用するプロセッサ１１０から発生する従来のＰＣＩｅトランザクションから自然に分離されるため、図３、５、７、９、及び１１のダウンストリームフィルタ３６０が必要ではない。この事実は、ＳＳＤ１２０が、図５、７、及び９のアップストリームフィルター（５０５及び７１５）をプログラミングするための負担を軽減するように、ＳＳＤ１２０がＦＰＧＡ１４５でダウンストリームフィルタ３６０をプログラミングする負担を軽減するということを意味する（図１１及び１３でＦＰＧＡ１４５は、従来のＰＣＩｅトランザクションに関連付けられたＰＦに基づいたアクセラレ−ションコマンドを区別する）。この利点に対する相殺は、ＳＳＤ１２０が、それぞれＦＰＧＡ１４５のルートポート（１１１０及び１３０５）と通信するために二つのエンドポイント（３０５及び１３１０）を含むことである。
【０１０６】
ＳＳＤ１２０は、本発明の第６実施例で、２つのエンドポイント（３０５及び１３１０）を含むため、エンドポイント（３０５及び１３１０）のそれぞれは、ＦＰＧＡ１４５から、それ自身のメモリアドレスブロックを要請する。更に、ルートポート（１１１０及び１３０５）のそれぞれがそれ自身の構成空間を含むため、ＳＳＤ１２０のエンドポイント（３０５及び１３１０）は、異なる構成空間からメモリアドレスのブロックを要請する。図１４は、このようなシナリオを示す。
【０１０７】
図１４は、本発明の第６実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。図１４でＳＳＤ１２０のエンドポイント３０５は、ルートポート１１１０のための構成空間を含むアドレスマップ１２１０からブロック１４０５を要請する。しかし、従来のＰＣＩｅトランザクション（プロセッサ１１０とＳＳＤ１２０との間）とアクセラレーションコマンド（ＦＰＧＡ１４５とＳＳＤ１２０との間）とは、ＦＰＧＡ上の異なるルートポート及びＳＳＤ１２０上の異なるエンドポイントの使用により自然に分離されるため、ＳＳＤ１２０は、ダウンストリームＦＡＲを含むのに十分な大きさのブロック１４０５を要請する必要がない。従って、ブロック１４０５は、ＦＰＧＡ１４５がない場合と同じ大きさであればよい。即ち、プロセッサ１１０とＳＳＤ１２０との間のＮＶＭｅ通信を支援するのに十分な大きさであればよい。ブロック１４０５は、ＢＡＲによって識別される。
【０１０８】
ＳＳＤ１２０のエンドポイント１３１０は、アドレスマップ１４１０から、それ自身のメモリアドレスブロックを要請する。しかし、ルートポート１３０５及びエンドポイント１３１０は、本発明の第６実施例で単にアクセラレーションコマンドを交換するために使用されるため、アドレスマップ１４１０の全体が、このようなＰＣＩｅトランザクションのために使用される。即ち、エンドポイント１３１０がアドレスマップ１４１０の小さいブロックを単に要請する必要はない。
【０１０９】
本発明の第５実施例のように、ＰＦ１１１５は、プロセッサ１１０とＳＳＤ１２０との間で交換されるＰＣＩｅトランザクションを管理するために、ホストシステムのメモリアドレスのブロック１２１５を要請する。従って、ブロック１２１５は、少なくともブロック１４０５と同じ大きさである。同様に、ＰＦ１１２０は、プロセッサ１１０とＦＰＧＡ１４５との間で交換されるアクセラレーションコマンドを管理するために、ホストシステムのメモリアドレスのブロック１２２０を要請する。ブロック（１２１５及び１２２０）は、それぞれＢＡＲによって識別される。
【０１１０】
図１３において、本発明の上記実施例のように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示される。即ち、具体的に、エンドポイント１１０５、ＰＦ（１１１５及び１１２０）、ルートポート（１１１０、１３０５）である。上述した本発明の実施例と同様に、ＰＣＩｅトランザクションのフィルタリングに関連付けられた構成は、ＦＰＧＡ１４５から除去される。従って、本発明の第６実施例で、エンドポイント１１０５、ＰＦ（１１１５及び１１２０）は、第１ブリッジ構成要素に配置され、ルートポート（１１１０、１３０５）は、それぞれが図１３の異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置される。代替的に、ＰＣＩｅトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるか（他のソース（ｓｏｕｒｃｅ）からの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５と共に）、又はシングルブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用される。
【０１１１】
第７実施例
【０１１２】
本発明の最初の第６実施例で、ＦＰＧＡ１４５は、シングルアップストリームポート３３０（図５、７、及び９）又はシングルエンドポイント１１０５（図１１及び１３で）を使用して示される。しかし、ＦＰＧＡ１４５が、本発明の第６実施例におけるＳＳＤ１２０のように、多数のエンドポイントを含まない理由はない。本発明の第７及び第８実施例は、ＦＰＧＡ１４５が多重のエンドポイントを使用してどのように動作するかを示す。
【０１１３】
図１５は、本発明の第７実施例による図１のアクセラレーションモジュール（ＦＰＧＡ）１４５及び図１のストレージデバイス（ＳＳＤ）１２０の構成を示す図である。本発明の第７実施例は、ＦＰＧＡ１４５が２つのエンドポイント（１１０５及び１５０５）を含むことを除いては、本発明の第６実施例と類似する。
【０１１４】
ＳＳＤ１２０のエンドポイント（３０５及び１３１０）が従来のホスト−ＳＳＤ  ＰＣＩｅトランザクション（ｈｏｓｔ−ｔｏ−ＳＳＤ  ＰＣＩｅ  ｔｒａｎｓａｃｔｉｏｎｓ）及びＦＰＧＡ−ＳＳＤアクセラレーションコマンド（ＦＰＧＡ−ｔｏ−ＳＳＤ  ａｃｃｅｌｅｒａｔｉｏｎ  ｉｎｓｔｒｕｃｔｉｏｎｓ）を区別するために使用されるように、ＦＰＧＡ１４５のエンドポイント（１１０５及び１５０５）は、従来のホスト−ＳＳＤ  ＰＣＩｅトランザクション及びＦＰＧＡ−ＳＳＤアクセラレーションコマンドを区別するために使用される。エンドポイント１１０５で受信されたＰＣＩｅトランザクションは、従来のＰＣＩｅトランザクションと見なされ、ＳＳＤ１２０に伝送される反面（ルートポート１１１０を介して）、エンドポイント１５０５で受信されたＰＣＩｅトランザクションはアクセラレーションコマンドと見なされ、処理のためにＡＰＭ−Ｆ３４０に伝達される。
【０１１５】
図１６は、本発明の第７実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。全ての意図及び目的のために、本発明の第７実施例によるメモリの使用は、第６実施例によるメモリ使用と同じである。ＦＰＧＡ１４５のルートポート（１１１０及び１３０５）はそれぞれそれ自身の構成空間を提供し、ＳＳＤ１２０のエンドポイント３０５はＢＡＲによって識別されるアドレスマップ１２１０からブロック１４０５を要請する（本発明の第６実施例のように、ＳＳＤ１２０のエンドポイント１３１０は、アドレスマップ１４１０からブロック１４０５を要請するか、或いはＳＳＤ１２０のエンドポイント１３１０は、ＳＳＤ−ＦＰＧＡ通信のためのアドレスマップ１４１０の全体を使用する）。エンドポイント（１１０５及び１５０５）は、プロセッサ１１０とＳＳＤ１２０との間で交換されるＰＣＩｅトランザクションを管理するために、ホストシステムのメモリアドレスのブロック（１２１５及び１２２０）を要請する。従って、ブロック１２１５は、少なくともブロック１４０５と同じ大きさである。ブロック（１２１５及び１２２０）は、それぞれＢＡＲによって識別される。
【０１１６】
図１５において、本発明の上記実施例のように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示される。即ち、具体的に、エンドポイント（１１０５、１５０５）及びルートポート（１１１０及び１３０５）である。上述した本発明の実施例のように、ＰＣＩｅトランザクションのフィルタリングに関連付けられた構成は、ＦＰＧＡ１４５から除去される。従って、本発明の第７実施例で、エンドポイント（１１０５、１５０５）は、第１ブリッジ構成要素に配置され、ルートポート（１１１０及び１３０５）は、それぞれが図１５の異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置される。代替的に、ＰＣＩｅトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるるか（他のソースからの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５と共に）、又はシングルブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用される。
【０１１７】
第８実施例
【０１１８】
図１７は、本発明の第８実施例による図１のアクセラレーションモジュール（ＦＰＧＡ）１４５及び図１のストレージデバイス（ＳＳＤ）１２０の構成を示す図である。本発明の第８実施例は、ＦＰＧＡ１４５が２つのエンドポイント（１１０５及び１５０５）を含むことを除いては、本発明の第５実施例と類似する。言い換えると、ＦＰＧＡ１４５のエンドポイント（１１０５及び１５０５）は、従来のホスト−ＳＳＤ  ＰＣＩｅトランザクション及びホスト−ＦＰＧＡアクセラレーションコマンドを区別するために使用される。ＦＰＧＡ１４５のエンドポイント１１０５で受信されたＰＣＩｅトランザクションは、従来のＰＣＩｅトランザクションと見なされ、ＳＳＤ１２０に伝送される反面（ルートポート１１１０を介して）、ＦＰＧＡ１４５のエンドポイント１５０５で受信されたＰＣＩｅトランザクションはアクセラレーションコマンドと見なされ、処理のためにＡＰＭ−Ｆ３４０に伝達される。
【０１１９】
図１８は、本発明の第８実施例による図１のシステムにおけるコマンドをアクセラレーションするためのメモリ使用を示す図である。本発明の第８実施例によるメモリの使用は、第５実施例によるメモリ使用と同じである。ルートポート１１１０がＦＰＧＡ１４５の唯一のルートポートである場合、ＳＳＤ１２０のエンドポイント３０５は、ダウンストリームＦＡＲ４２０を含むアドレスマップ１２１０からブロック１２０５を要請する。ＢＡＲによって識別されるエンドポイント１１０５が少なくともブロック１２０５と同じ大きさのブロック１２１５を要求し、ＦＰＧＡ１４５のエンドポイント（１１０５、１５０５）がホストシステムのメモリアドレスからブロック（１２１５、１２２０）を要求する。エンドポイント（１１０５及び１５０５）は、プロセッサ１１０とＳＳＤ１２０との間で交換されるＰＣＩｅトランザクションを管理するために、ホストシステムのメモリアドレスのブロック（１２１５及び１２２０）を要請する。ブロック１２１５は、少なくともブロック１２０５と同じ大きさである。ブロック（１２１５及び１２２０）は、それぞれ２つの分離されたＢＡＲにより識別される。本発明の他の実施例で、ＦＰＧＡ１４５とＳＳＤ１２０との間の通信を容易にするために、ダウンストリームＦＡＲ４２０のようにブロック１２２０の部分を使用することも可能である。
【０１２０】
図１７において、本発明の上記実施例のように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示される。即ち、具体的に、エンドポイント（１１０５、１５０５）、ルートポート１１１０、及びダウンストリームフィルタ３６０である。上述した本発明の実施例のように、ＰＣＩｅトランザクションのフィルタリングに関連付けられた構成要素は、ＦＰＧＡ１４５から除去される。従って、本発明の第８実施例で、エンドポイント（１１０５、１５０５）は、第１ブリッジ構成要素に配置され、ルートポート１１１０及びダウンストリームフィルタ３６０は、それぞれが図１７の異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置される。代替的に、ＰＣＩｅトランザクションのソースに関係なく、このようなブリッジ構成要素の中の一つのみが使用されるか（他のソースからの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５と共に）、又はシングルブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用される。
【０１２１】
本発明の様々な実施例を参照して上述したように、ＦＰＧＡ１４５のアップストリームインターフェース及び／又はダウンストリームインターフェースの一部であるとして記述したフィルタリング機能は、ＦＰＧＡ１４５から分離されて他の構成によって処理され得る。
【０１２２】
図１９は、本発明の一実施例による図１のシステムの構成及び図１のアクセラレーションモジュールとの通信を管理するブリッジン構成要素（ｂｒｉｄｇｉｎｇ  ｃｏｍｐｏｎｅｎｔｓ）を示す図であり、図１のアクセラレーションモジュール１４５に代えてフィルタリング機能を処理するブリッジ構成要素を示す。図１９において、２つのブリッジ構成要素（１９０５及び１９１０）が示される。ブリッジ構成要素１９０５は、プロセッサ１１０から受信されたＰＣＩｅトランザクションのフィルタリングを処理する反面、ブリッジ構成要素１９１０は、ＳＳＤ１２０から受信されたＰＣＩｅトランザクションのフィルタリングを処理する。ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かに応じて、ＰＣＩｅトランザクションをＦＰＧＡ１４５又はＳＳＤ１２０のいずれか一つに伝送する。同様に、ブリッジ構成要素１９１０は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かに応じて、ＰＣＩｅトランザクションをＦＰＧＡ１４５又はプロセッサ１１０のいずれか一つに伝送する。ＦＰＧＡ１４５のアップストリーム及びダウンストリームインターフェースの一部として図示したものと類似の具現と同様に、ブリッジ構成要素（１９０５及び１９１０）の特定の具現は、図１９に示さない。
【０１２３】
本発明のいくつかの実施例で、ブリッジ構成要素（１９０５及び１９１０）の両方が使用される。本発明の他の実施例で、１つのブリッジ構成要素（１９０５又は１９１０）のみが使用され、他のブリッジ構成要素の機能は、潜在的にＦＰＧＡ１４５と共に残る。他の実施例で、ブリッジ構成要素（１９０５及び１９１０）の両方は、分離された構成ではない単一の構成に含まれる。
【０１２４】
本発明の様々な実施例を説明したため、プロセッサ１１０、ＦＰＧＡ１４５、及びＳＳＤ１２０間のデータの流れを説明することができる。本明細書の残りの部分で、全てのフィルタリング機能は、ＦＰＧＡ１４５から起因するが、図１９のブリッジ構成要素（１９０５及び／又は１９１０）にフィルタリングが移動する時期と方法が明確にならなければならない。
図２０ａ及び図２０ｂは、本発明の一実施例による図１のプロセッサ、図１のアクセラレーションモジュール（ＦＰＧＡ）１４５、及び図１のストレージデバイス（ＳＳＤ）１２０間の通信を示す図である。図２０ａに、本発明の第１実施例（そして、できる限り本発明の他の実施例）によるデータの流れを示す。プロセッサ１１０は、ＰＣＩｅトランザクション２００５をＳＳＤ１２０に配信する（ＦＰＧＡを介して）。その後に、ＡＰＭ−Ｓ３１５は、ＳＳＤ１２０がＦＰＧＡ１４５に伝送するＰＣＩｅトランザクション２０２０に含まれるアクセラレーションコマンド２０１５を生成する。なお、図２０ａに示すように、ＦＰＧＡ１４５とＳＳＤ１２０とは、アクセラレーションデータを交換する。
【０１２５】
アクセラレーションコマンド２０１５の完了時に、ＦＰＧＡ１４５は、プロセッサ１１０に結果２０３５を伝達するＳＳＤ１２０に結果２０３０を送り返す。代替的に、ＦＰＧＡ１４５は、ＳＳＤ１２０から来る結果２０３５をシミュレーションしながら、その結果２０４０をプロセッサ１１０に直接伝送することができる。
【０１２６】
対照的に、図２０ｂで（本発明の第２〜第８実施例に適用可能な）、プロセッサ１１０は、アクセラレーションコマンド２０４５をＰＣＩｅトランザクション２００５としてＦＰＧＡ１４５に直接伝送する。ＦＰＧＡ１４５とＳＳＤ１２０とは、図２０ｂに示したように、アクセラレーションデータを交換する。最後に、ＦＰＧＡ１４５は、結果２０４０をプロセッサ１１０に送り返す。
【０１２７】
図２１は、本発明の一実施例によるＰＣＩｅトランザクションを処理するための図１のアクセラレーションモジュール（ＦＰＧＡ）１４５の例示的な手順のフローチャートである。図２１は、高いレベルのビュー（ｖｉｅｗ）を提供する。従って、以後の図面は、ＦＰＧＡ１４５の動作に対してより詳細な例示的なフローチャートを提供する。図２１において、ブロック２１０５で、ＦＰＧＡ１４５は、デバイスからのＰＣＩｅトランザクションを受信する。このようなＰＣＩｅトランザクションは、図２０ａ及び図２０ｂのＰＣＩｅトランザクション（２０１５又は２０４５）のいずれか１つであり、デバイスは、プロセッサ１１０又はＳＳＤ１２０である。ブロック２１１０で、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かを判断する。ブロック２１１５で、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かを知るために検査する。そうである場合、ブロック２１２０で、アクセラレーションコマンドは、ＡＰＭ−Ｆ３４０によって処理される。そうでない場合、ブロック２１２５で、ＰＣＩｅトランザクションは、他のデバイスに配信される（ＰＣＩｅトランザクションがプロセッサ１１０から受信された場合、ＰＣＩｅトランザクションはＳＳＤ１２０に配信されるが、その逆も可能である）。ＡＰＭ−Ｆ３４０によるアクセラレーションコマンドを処理することは、アクセラレーションコマンドによって処理されるアプリケーションデータを受信するためにＳＳＤ１２０と通信することを含むことに注目する。
【０１２８】
図２２ａ〜図２２ｃは、本発明の一実施例によるＰＣＩｅトランザクションを処理するための図１のアクセラレーションモジュール（ＦＰＧＡ）１４５の例示的な手順のより詳細なフローチャートである。図２２ａにおいて、ブロック２２０３で、ＦＰＧＡ１４５は、ＳＳＤ１２０からのダウンストリームＦＡＲ４２０を受信する。ブロック２２０６で、ＦＰＧＡ１４５は、ダウンストリームＦＡＲ４２０をダウンストリームフィルタ３６０に関連付ける。ＳＳＤ１２０がサイドバンドバス３６５を介してダウンストリームＦＡＲ４２０をダウンストリームフィルタ３６０内にプログラミングする場合、この関係は自動的に発生するか、又はこの関係はＦＰＧＡ１４５によって活性ステップを要求する（例として、ＳＳＤ１２０がダウンストリームＦＡＲ４２０を含むＦＰＧＡ１４５にＰＣＩｅ  ＶＤＭを伝送する場合）。点線２２０９で示すように、本発明のいくつかの実施例で、ブロック（２２０３及び２２０６）は、スキップされることに注目する。本発明のいくつかの実施例で、ダウンストリームＦＡＲ４２０は、ＦＰＧＡ１４５それ自体によって提供される。
【０１２９】
ブロック２２１２で、ＦＰＧＡ１４５は、ＳＳＤ１２０からアップストリームＦＡＲ６０５を受信し、ブロック２２１５で、ＦＰＧＡ１４５は、アップストリームポート３３０とアップストリームＦＡＲ６０５とを関連付ける。ＳＳＤ１２０がサイドバンドバス３６５を介してアップストリームＦＡＲ６０５をアップストリームフィルタ５０５内にプログラミングする場合、この関係は自動的に発生するか、又はこの関係はＦＰＧＡ１４５によって活性ステップを要求する（例として、ＳＳＤ１２０がアップストリームＦＡＲ６０５を含むＦＰＧＡ１４５にＰＣＩｅ  ＶＤＭを伝送する場合）。本発明のいくつかの実施例で、アップストリームＦＡＲ６０５は、ＦＰＧＡ１４５それ自体によって提供される。
【０１３０】
代替的に、ブロック２２１８で、ＦＰＧＡ１４５は、ＦＰＧＡ１４５を露出させるために使用されるＰＦ又はＶＦの識別子をＳＳＤ１２０から受信し、ブロック２２２１で、ＦＰＧＡ１４５は、ＰＦ／ＶＦの識別子をアップストリームフィルタ３３０に関連付ける。言い換えると、ＳＳＤ１２０がサイドバンドバス３６５を介してＰＦ／ＶＦの識別子をアップストリームフィルタ５０５内にプログラミングする場合、この関係は自動的に発生するか、又はこの関係はＦＰＧＡ１４５によって活性ステップを要求する（例として、ＳＳＤ１２０がＰＦ／ＶＦの識別子を含むＦＰＧＡ１４５にＰＣＩｅ  ＶＤＭを伝送する場合）。
【０１３１】
点線２２２４に示したように、本発明のいくつかの実施例で、ブロック（２２１２、２２１５、２２１８、及び２２２１）は、スキップされる。
【０１３２】
ブロック２２２７で、構成モニター１１２５は、ＳＳＤ１２０のエンドポイント３０５の構成を判断し、ブロック２２３０で、構成モニター１１２５は、ＦＰＧＡ１４５のエンドポイント１１０５でその構成を複製し、そうすることでＳＳＤ１２０と同じ機能をプロセッサ１１０に提供する。本発明のいくつかの実施例で、ブロック（２２２７及び２２３０）は、点線２２３３で示したようにスキップ（ｓｋｉｐ）される。
【０１３３】
一旦ＦＰＧＡ１４５が適切に構成されると、ブロック２２３６（図２２ｂ）で、ＦＰＧＡ１４５は、プロセッサ１１０から図２０ｂのＰＣＩｅトランザクション２００５を受信する（本発明の実施例に基づいて、アップストリームポート３３０又はエンドポイント１１０５を介して）。ブロック２２３９で、ＦＰＧＡ１４５は、図２０ｂのＰＣＩｅトランザクション２００５が図２０ｂのアクセラレーションコマンド２０４５を含むか否かを判断する。そうである場合、ブロック２２４２で、図２２ｂのアクセラレーションコマンド２０４５を処理し、ブロック２２４５で、ＡＰＭ−Ｆ３４０は、プロセッサ１１０に図２０ｂの結果２０４０を送信する。そうでなく、図２０ｂのＰＣＩｅトランザクション２００５が図２０ｂのアクセラレーションコマンド２０４５を含まない場合、ブロック２２４８で、ＦＰＧＡ１４５は、図２０ｂのＰＣＩｅトランザクション２００５をＳＳＤ１２０に配信する（本発明の実施例に基づいて、ダウンストリームポート３３５又はルートポート１１１０を介して）。
【０１３４】
ブロック２２５１（図２２ｃ）で、ＦＰＧＡ１４５は、図２０ａのＰＣＩｅトランザクション２０２０を受信する（本発明の実施例によるダウンストリームポート３３５又はルートポート１１１０を介して）。ブロック２２５４で、ＦＰＧＡ１４５は、図２０ａのＰＣＩｅトランザクション２０２０が図２０ａのアクセラレーションコマンド２０１５を含むか否かを判断する。
【０１３５】
図２０ａのＰＣＩｅトランザクション２０２０が図２０ａのアクセラレーションコマンド２０１５を含む場合、ブロック２２５７で、ＡＰＭ−Ｆ３４０は、図２２ｃのアクセラレーションコマンド２０１を処理し、ブロック２２６０で、ＡＰＭ−Ｆ３４０は、図２０ａの結果２０４０をＳＳＤ１２０に伝送する。そうでなく、図２０ａのＰＣＩｅトランザクション２０２０がアクセラレーションコマンド２０１５を含まない場合、ブロック２２６３で、ＦＰＧＡ１４５は、図２０ａのＰＣＩｅトランザクション２０２をプロセッサ１１０に伝送する（発明の実施例によるアップストリームポート３３０又はエンドポイント１１０５を介して）。
【０１３６】
図２３ａ及び２３ｂは、本発明の一実施例による図２０ｂのＰＣＩｅトランザクション２００５が図２０ｂのアクセラレーションコマンド２０４５を含む図１のプロセッサ１１０から来るか否かを判断するためのアクセラレーションモジュール（ＦＰＧＡ）１４５の例示的な手順のフローチャートである。本実施例による図２３ａ及び２３ｂは、個別的に又は集合的に使用される３つの可能なテストを示す。一つ以上のテストを使用する本実施例で個々のテストが満足される場合、図２０ｂのＰＣＩｅトランザクション２００５は、図２０ｂのアクセラレーションコマンド２０４５を含むものと判断される。図２３ａにおいて、ブロック２３０５で、ＦＰＧＡ１４５は、図２０ｂのＰＣＩｅトランザクション２００５に関連付けられたアドレスがアップストリームＦＡＲ６０５内のアドレスを含むか否かを判断する。ブロック２３１０で、ＦＰＧＡ１４５は、図２０ｂのＰＣＩｅトランザクション２００５がアップストリームフィルタ７１５に関連付けられたＰＦ又はＶＦの識別子を含むか否かを判断する。ブロック２３１５で、ＦＰＧＡ１４５は、図２０ｂのＰＣＩｅトランザクション２００５がエンドポイント１５０５のようなアクセラレーションコマンド専用のポートで受信されるか否かを判断する。これらのテストの任意の結果、図２０ｂのＰＣＩｅトランザクション２００５が図２０ｂのアクセラレーションコマンド２０４５を含むことを示す場合、ブロック２３２０（図２３ｂ）で、ＦＰＧＡ１４５は、図２０ｂのＰＣＩｅトランザクション２００５が図２０ｂのアクセラレーションコマンド２０４５を含むことを知っている。そうでない場合、ブロック２３２５で、ＦＰＧＡ１４５は、図２０ｂのＰＣＩｅトランザクション２００５が図２０ｂのアクセラレーションコマンド２０４５を含まないことを知っている。
【０１３７】
図２４は、本発明の一実施例による図２０ａのＰＣＩｅトランザクション２０２０が図２０ａのアクセラレーションコマンド２０１５を含む図１のストレージデバイス（ＳＳＤ）１２０から来るか否かを判断するためのアクセラレーションモジュール（ＦＰＧＡ）１４５の例示的な手順のフローチャートである。本実施例による図２４は、個別的に又は集合的に使用される３つの可能なテストを示す。一つ以上のテストを使用する本実施例で、どのようなテストも満足される場合、図２０ａのＰＣＩｅトランザクション２０２０は、図２０ａのアクセラレーションコマンド２０１５を含むものと判断される。図２４において、ブロック２４０５で、ＦＰＧＡ１４５は、図２０ａのＰＣＩｅトランザクション２０２０に関連付けられたアドレスがダウンストリームＦＡＲ４２０内のアドレスを含むか否かを判断する。ブロック２４１０で、ＦＰＧＡ１４５は、図２０ａのＰＣＩｅトランザクション２０２０がルートポート１３０５のようなアクセラレーションコマンド専用のポートで受信されるか否かを判断する。これらのテストの任意の結果、図２０ａのＰＣＩｅトランザクション２０２０が図２０ａのアクセラレーションコマンド２０１５を含むことを示す場合、ブロック２４１５で、ＦＰＧＡ１４５は、図２０ａのＰＣＩｅトランザクション２０２０が図２０ａのアクセラレーションコマンド２０１５を含むことを知っている。従って、そうでない場合、ブロック２４２０で、ＦＰＧＡ１４５は、図２０ａのＰＣＩｅトランザクション２０２０が図２０ａのアクセラレーションコマンド２０１５を含まないことを知っている。
【０１３８】
図２５は、本発明の一実施例によるＰＣＩｅトランザクション２０２０がアクセラレーションコマンドを含む図１のプロセッサ１１０から来るか否かを判断するための図１９の第１ブリッジ構成要素１９０５の例示的な手順のフローチャートである。図２５において、ブロック２５０５で、第１ブリッジ構成要素１９０５は、図１のプロセッサ１１０からＰＣＩｅトランザクションを受信する。ブロック２５１０で、第１ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断する。そうである場合、ブロック２５１５で、第１ブリッジ構成要素１９０５は、ＰＣＩｅトランザクション／アクセラレーションコマンドを図１のＦＰＧＡ１４５に伝送する。しかし、そうでない場合、ブロック２５２０で、第１ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションを図１のＳＳＤ１２０に伝達する。
【０１３９】
図２６は、本発明の一実施例によるＰＣＩｅトランザクションがアクセラレーションコマンドを含む図１のストレージデバイス１２０から来るか否かを判断するための図１９の第２ブリッジ構成要素１９１０の例示的な手順のフローチャートである。図２６において、ブロック２６０５で、第２ブリッジ構成要素１９１０は、図１のＳＳＤ１２０からＰＣＩｅトランザクションを受信する。ブロック２６１０で、第２ブリッジ構成要素１９１０は、ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断する。そうである場合、ブロック２６１５で、第２ブリッジ構成要素１９１０は、ＰＣＩｅトランザクション／アクセラレーションコマンドを図１のＦＰＧＡ１４５に伝送する。しかし、そうでない場合、ブロック２６２０で、第２ブリッジ構成要素１９１０は、ＰＣＩｅトランザクションを図１のプロセッサ１１０に伝達する。
【０１４０】
図２７ａ〜図２７ｃは、本発明の一実施例による図１のストレージデバイス（ＳＳＤ）１２０がＰＣＩｅトランザクションを処理するための例示的な手順のフローチャートである。図２７ａにおいて、ブロック２７０５で、ＳＳＤ１２０は、メモリアドレスのブロックを要請する。ＳＳＤ１２０は、本発明の第１〜第４実施例のようにホストシステムメモリから、又は本発明の第５〜第８実施例のようにＦＰＧＡ１４５のルートポートの構成空間からメモリアドレスのブロックを要請する。サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ、又は任意の他の望みのメカニズムを使用して、ブロック２７１０で、ＳＳＤ１２０は、ダウンストリームＦＡＲ４２０として使用するためのメモリアドレスのブロックのサブセットを選択し、ブロック２７１５で、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をダウンストリームＦＡＲ４２０でプログラミングする。本発明のいくつかの実施例で、ブロック（２７０５〜２７１５）は、点線２７２０に示したようにスキップされることに注目する（点線２７２０、また図２７ｂに示したいくつかのブロックを省略する）。
【０１４１】
サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ、又は任意の他の望みのメカニズムを使用して、ブロック２７２５（図２７ｂ）で、ＳＳＤ１２０は、アップストリームＦＡＲ６０５として使用するためのメモリアドレスのブロックのサブセットを選択し、ブロック２７３０で、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をダウンストリームＦＡＲ４２０でプログラミングする。代替的に、ブロック２７３５で、ＳＳＤ１２０は、ＰＦ７０５を使用してそれ自身の能力を露出させる。その後に、サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ、又は任意の他の望みのメカニズムを使用して、ブロック２７４０で、ＳＳＤ１２０は、ＦＰＧＡ１４５を露出させるためにＰＦ９０５又はＶＦ７１０を使用し、ブロック２７４５で、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をＰＦ９０５又はＶＦ７１０の識別子でプログラムする。本発明のいくつかの実施例で、ブロック（２７２５〜２７４５）は、点線２７５０で示したようにスキップされることに注目する。
【０１４２】
ブロック２７５５で、ＳＳＤ１２０は、ＦＰＧＡ１４５からＰＣＩｅトランザクションを受信する。このＰＣＩｅトランザクションは、図２０ａのＰＣＩｅトランザクション２００５であるか、又は（プロセッサ１１０からＦＰＧＡ１４５によって伝達される（ｆｏｒｗａｒｄｅｄ））図２０ａ及び図２０ｂのＰＣＩｅトランザクション２０２５である。ＰＣＩｅトランザクションのソースに関係なく、ブロック２７６０（図２７ｃ）で、ＨＩＬ３１０は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かを判断する。そうである場合、ブロック２７６５で、ＨＩＬ３１０は、ＰＣＩｅトランザクション（又は圧縮解除されたアクセラレーションコマンド）を、処理のためにＡＰＭ−Ｓ３１５に伝送する。ＡＰＭ−Ｓ３１５は、アクセラレーションコマンドへの応答を生成し、これは、図２０ａのアクセラレーションコマンド２０２５、又は（ＰＣＩｅトランザクションがプロセッサ１１０から由来する場合）アクセラレーションデータ２０２５である（ＰＣＩｅトランザクションがＦＰＧＡ１４５のＡＰＭ−Ｆ３４０から生じた場合）。いずれの場合でも、ブロック２７７０で、ＡＰＭ−Ｓ３１５は、応答をＦＰＧＡ１４５に伝送する。
【０１４３】
一方、ＰＣＩｅトランザクションがアクセラレーションコマンドではない場合、ブロック２７７５で、ＳＳＤ１２０は、ＰＣＩｅトランザクションが図２０ａの結果２０３０であるか否かを判断する。そうである場合、ブロック２７８０で、ＳＳＤ１２０は、図２０ａの結果２０３５をプロセッサ１１０に伝送する（ＳＳＤ１２０及びＦＰＧＡ１４５のエンドポイント３０５を介して）。ＰＣＩｅトランザクションが図２０ａの結果２０３０ではない場合、ブロック２７８５で、ＳＳＤ１２０は、通常の場合としてＳＳＤ１２０に格納されたデータのＰＣＩｅトランザクションを処理する。
【０１４４】
図２８ａ及び図２８ｂは、本発明の一実施例による図１のストレージデバイス（ＳＳＤ）１２０が図１のアクセラレーションモジュール（ＦＰＧＡ）１４５から来るＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かを判断するための例示的な手順のフローチャートである。
【０１４５】
本実施例による図２８ａ及び２８ｂは、個別的に又は集合的に使用される３つの可能なテストを示す。一つ以上のテストを使用する本実施例で個々のテストが満足される場合、図２０ａのＰＣＩｅトランザクションは、アクセラレーションコマンド２０１５を含むものと判断される。図２８ａにおいて、ブロック２８０５で、ＳＳＤ１２０は、ＰＣＩｅトランザクション２０２０がプロセッサ１１０（ＳＳＤ１２０がＦＰＧＡ１４５にアクセラレーションコマンドを開始しなければならないことを示す）からの特定のコマンドを含むか否かを判断する。ブロック２８１０で、ＳＳＤ１２０は、ＰＣＩｅトランザクションがＡＰＭ−Ｆ３４０から生じるのか否かを判断し、これはＡＰＭ−Ｆ３４０が図２０ａ及び図２０ｂのアクセラレーションデータ２０２５を要請するか、又はＡＰＭ−Ｆ３４０が図２０ａの結果２０３０をＳＳＤ１２０に伝送する場合に発生する。ブロック２８１０のテストは、任意の所望の方式で遂行される。即ち、例として、ＰＣＩｅトランザクションはＰＣＩｅトランザクションがアクセラレーションコマンドであることを示すためのタグを含むか、又はＰＣＩｅトランザクションはダウンストリームのアドレスに関連付けられる。ブロック２８１５で、ＳＳＤ１２０は、ＰＣＩｅトランザクションがエンドポイント１３１０のようなアクセラレーションコマンド専用のポートで受信されるか否かを判断する。これらのテストの任意の結果、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むことを示す場合、ブロック２８２０（図２８ｂ）で、ＳＳＤ１２０は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むことを知っている。そうでない場合、ブロック２８２５で、ＳＳＤ１２０は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含まないことを知っている。
【０１４６】
図２１〜２８ｂにおいて、本発明のいくつかの実施例を示した。しかし、当業者は、ブロックの順序を変更したり、ブロックを省略したり、又は図面に図示されていない連結を含んだりすることにより、本発明の他の実施例も可能であることを認識するはずである。加えて、特定の動作が特定の構成によって実行されるものとして説明したが、本発明の実施例は、説明した動作を遂行する他の構成を支援することができる。フローチャートのこのような全ての変形は、明示的に記述されているであろうとなかろうと本発明の実施例と見なされる。
【０１４７】
本発明の実施例は、従来技術に比べて技術的な利点を提供する。図１の機械１０５に図１のアクセラレーションモジュール１４５を導入することにより、図１のプロセッサ１１０は、図１のアクセラレーションモジュール１４５によって遂行可能な作業を軽減（ｏｆｆｌｏａｄ）することができる。このようなコマンドは、通常廃棄される多くの量のデータを処理することを含むため、図１のメモリ１４０のいくつかの空間を自由にする必要性を回避するだけでなく、図１のアクセラレーションモジュール１４５に対する作業を軽減することは、図１のストレージデバイス１２０から図１のメモリ１４０にデータをロードするのに要請される遅延を避けることができる。
【０１４８】
なお、本発明の多様な実施例は、図１の異なるタイプのストレージデバイス１２０）を使用することを支援する。図１のアクセラレーションモジュール１４５を露出させるために追加のＰＦ及び／又はＶＦを支援するストレージデバイスだけでなく、シングルポート及びデュアルポートストレージデバイスの全てが使用される。
【０１４９】
本発明の多様な実施例は、異なる性能を提供するプロセッサを使用することを更に支援する。図１の機械１０５の動作システムがＶＦを支援する場合、ＶＦが図１のアクセラレーションモジュール１４５を露出させるのに使用される。そうでない場合、ＰＦが使用される。図１のプロセッサ１１０は、図１のアクセラレーションモジュール１４５と直接通信し、そのような通信を支援する本発明の実施例が使用される。そうでない場合、図１のプロセッサ１１０は、図１のストレージデバイス１２０に全てのアクセラレーションコマンドを送信し、図１のアクセラレーションモジュール１４５がアクセラレーションコマンドを遂行するように要請するために、それを図１のストレージデバイス１２０に残す。
【０１５０】
下記の説明は、本発明の技術的思想のいくつかの側面が具現される適切な機械又は複数の機械の簡単で一般的な説明を提供する。機械又は複数の機械の少なくとも一部は、他の機械から受信される指示、バーチャルリアリティ（ＶＲ）環境との相互作用、生体フィードバック、又は他の入力信号だけではなく、キーボード、マウスなどのような通常の入力デバイスからの入力により制御される。ここで使用されるように、「機械（マシン）」の用語は、単一のマシン、仮想マシン、複数の機械、複数の仮想マシン、又は共に作動するデバイスと通信するように結合されたシステムを広く含むものと意図される。例示的な機械は、例として、自動車、電車、タクシーなどのような個人用や公共交通などの輸送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルドデバイス、携帯電話、タブレットなどのようなコンピューティングデバイスを含む。
【０１５１】
機械又は複数の機械は、プログラム可能な又はプログラム不可能な論理デバイス、アレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、エンベデッドコンピュータ、スマートカードのようなエンベデッドコントローラを含む。機械又は複数の機械は、ネットワークインターフェース、モデム又は他の通信結合を介するように一つ又はそれより多くのリモート機械（マシン）への一つ又はそれより多くの連結を活用する。機械（マシン）は、イントラネット、インターネット、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）、（ＷＡＮ  ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）などのような物理的及び／又は論理的ネットワークの手段として互いに連結される。この分野における熟練した者は、ネットワーク通信が、多様な有線及び／又は無線の近距離又は遠距離キャリア、及び無線周波数（ＲＦ）、衛星、マイクロウェーブ、ＩＥＥＥ８０２．１１、ブルートゥース（登録商標）、光学、赤外線、ケーブル、レーザーなどを含むプロトコルを活用することを理解するだろう。
【０１５２】
本発明の技術的思想の実施例は、機械によってアクセスされる際に機械が作業を遂行したり、抽象データ型又は低レベルのハードウェアコンテキストを定義することを誘発する機能、プロシージャ、データ構造、アプリケーションなどを含む関連するデータを参照したり又は協力したりして説明される。関連するデータは、例えばＲＡＭ、ＲＯＭなどのような揮発性及び／又は不揮発性メモリ、他のストレージデバイス、ハードドライブ、フロッピー（登録商標）ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック（登録商標）、デジタルビデオディスク、生体ストレージなどを含む関連するストレージデバイスに格納される。関連するデータは、物理的及び／又は論理ネットワークを含む伝送環境を経て、パケット、シリアルデータ、パラレルデータ、伝送信号などの形態で伝達され、圧縮された又は暗号化されたフォーマットで使用される。関連するデータは、分散環境で使用され、機械アクセスに対してローカル及び／又はリモートで格納される。
【０１５３】
本発明の技術的思想の実施例は、一つ又はそれより多くのプロセッサによって実行可能であり、ここで説明したように、本発明の技術的思想のエレメントを行うようにするコマンドを含んで実在する非一時的機械読み出し媒体を含む。
【０１５４】
上述した方法の多様な動作は、多様なハードウェア及び／又はソフトウェア構成、回路、及び／又は複数のモジュールのような動作を遂行する任意の適切な手段によって遂行される。ソフトウェアは、論理的機能を具現するための実行可能なコマンドの順序付けられたリストを含み、シングル若しくはマルチコアプロセッサ、プロセッサを含むシステムのようなデバイス（ｄｅｖｉｃｅ）、コマンド実行システム、又は機構（ａｐｐａｒａｔｕｓ）に関連するか若しくはこれらの使用のための任意の「プロセッサ可読媒体」で具現される。
【０１５５】
本明細書に開示した実施例に関連して説明した方法、アルゴリズム、及び機能のブロック又はステップは、ハードウェア、プロセッサによって実行中のソフトウェアモジュール、又はそれらの組み合わせで直接具現される。ソフトウェアで具現される場合、機能は実在し、非一時的コンピュータ読み取り可能な記録媒体上に格納されたり、１つ以上のコマンド又はコードとして伝送されたりする。ソフトウェアモジュールは、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、フラッシュメモリ、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ  ＲＯＭ、又はこの技術分野において知られている任意の他の形態のストレージ媒体である。
【０１５６】
図示した実施例を参照して説明した本発明の技術的思想の原則を有する場合、図示した実施例は、このような原則から逸脱せずに配列及び細部事項で修正され、必要な任意の方法で組み合わせられることが理解される。上記の説明は具体的な実施例に集中したが、他の構成もまた考慮される。具体的に、「本発明の技術的思想の実施例による」のような説明や、ここで使用した類似のものにも拘らず、このようなフレーズは、一般的に実施例の可能性を参照し、本発明の技術的思想を具体的な実施例の構成に限定することを意図しない。ここで使用したように、このような用語は、他の実施例への組み合わせ可能な同一又は異なる実施例を参照する。
【０１５７】
上述した実施例は、本発明の技術的思想を、それらに限定するものと解釈されない。少ない実施例だけを説明したが、この分野における熟練した者は、本明細書に記載の新規な説明及び長所から実質的に逸脱せずに、このような実施例に多くの修正が可能であることを十分に理解するだろう。従って、このような全ての修正は、請求項において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図される。
【０１５８】
本発明の実施例は制限なしに次のステートメントに拡張される。
【０１５９】
ステートメント１。本発明の実施例は、システムを含む。システムは、アプリケーションを実行するプロセッサと、プロセッサ上で実行中のアプリケーションによって使用されるデータを格納するメモリと、プロセッサと通信するためのアップストリームインターフェース（アップストリームポート）と、ストレージデバイスと通信するためのダウンストリームインターフェース（ダウンストリームポート）と、ハードウェアを用いて具現され、アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を含むアクセラレーションモジュールと、を備え、ストレージデバイスは、アクセラレーションモジュールと通信するためのストレージデバイスのエンドポイントと、ストレージデバイスの動作を管理するコントローラと、アプリケーションのためのアプリケーションデータを格納するストレージと、アクセラレーションコマンドを実行する際にアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を補助するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）と、を含み、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを介して通信し、アクセラレーションモジュールは、アプリケーションデータをメモリにロードすることなく、アプリケーションのためのストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
【０１６０】
ステートメント２。本発明の実施例は、ステートメント１によるシステムを含む。システムは、プロセッサとアクセラレーションモジュールとの間の通信をブリッジ（ｂｒｉｄｇｉｎｇ）し、アップストリームインターフェースを含む第１ブリッジ構成要素と、アクセラレーションモジュールとストレージデバイスとの間の通信をブリッジし、ダウンストリームインターフェースを含む第２ブリッジ構成要素と、を更に含む。
【０１６１】
ステートメント３。本発明の実施例は、ステートメント１によるシステムを含む。アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現され、アクセラレーションモジュールは、アップストリームインターフェース及びダウンストリームインターフェースを含み、ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０１６２】
ステートメント４。本発明の実施例は、ステートメント３によるシステムを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、アクセラレーションコマンドと共に用いられるアプリケーションデータに関するダウンストリームインターフェース及びＳＳＤのエンドポイントを用いて通信する。
【０１６３】
ステートメント５。本発明の実施例は、ステートメント３によるシステムを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、メッセージを使用して通信する。
【０１６４】
ステートメント６。本発明の実施例は、ステートメント３によるシステムを含む。プロセッサは、非揮発性メモリエクスプレス（ＮＶＭｅ）プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット（ＴＬＰ）を含むＰＣＩｅトランザクションをＳＳＤに伝送する。
【０１６５】
ステートメント７。本発明の実施例は、ステートメント３によるシステムを含む。ＦＰＧＡは、アクセラレーションエンジンと、アクセラレーションエンジンにアクセラレーションコマンドをスケジューリングするランタイムスケジューラ（ｒｕｎ−ｔｉｍｅ  ｓｃｈｅｄｕｌｅｒ）と、を更に含む。
【０１６６】
ステートメント８。本発明の実施例は、ステートメント３によるシステムを含む。ＳＳＤは、ＦＰＧＡを含む。
【０１６７】
ステートメント９。本発明の実施例は、ステートメント３によるシステムを含む。アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するＦＰＧＡのルートポートを含み、ＦＰＧＡは、第１  ＰＦ、第２  ＰＦ、及びＦＰＧＡルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、ＳＳＤから受信された第１アクセラレーションコマンドをインターセプトしてＡＰＭ−Ｆにダウンストリームフィルタのアドレス範囲（ＦＡＲ）に関連付けられた第１アクセラレーションコマンドを伝達し、ＦＰＧＡは、第１  ＰＦに対するプロセッサからホストシステムアドレスの第１ブロックを要請して、第２  ＰＦに対するプロセッサからホストシステムアドレスの第２ブロックを要請し、プロセッサから受信された第１  ＰＣＩｅトランザクションをＳＳＤに伝達し、プロセッサから受信された第２アクセラレーションコマンドをＡＰＭ−Ｆに配信し、第１  ＰＣＩｅトランザクションは、第１  ＰＦの第１識別子に関連付けられ、第２アクセラレーションコマンドは、第２  ＰＦの第２識別子に関連付けられる。
【０１６８】
ステートメント１０。本発明の実施例は、ステートメント９によるシステムを含む。アクセラレーションコマンドは、ＡＰＭ−Ｓによって生成される。
【０１６９】
ステートメント１１。本発明の実施例は、ステートメント１０によるシステムを含む。ＳＳＤは、プロセッサから受信されたアクセラレーションコマンドを含む特定のコマンドをインターセプトしてアクセラレーションコマンドを生成するＡＰＭ−Ｓをトリガーする特定のコマンドをＡＰＭ−Ｓに伝達するホストインターフェースロジック（ＨＩＬ）を更に含む。
【０１７０】
ステートメント１２。本発明の実施例は、ステートメント１１によるシステムを含む。特定のコマンドは、プロセッサ上で実行中のアクセラレーションサービスマネージャー（ＡＳＭ）から生じる。
【０１７１】
ステートメント１３。本発明の実施例は、ステートメント９によるシステムを含む。ＳＳＤは、プロセッサからホストシステムアドレスのブロックを要請し、コントローラは、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックのサブセットを選択する。
【０１７２】
ステートメント１４。本発明の実施例は、ステートメント１３によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０１７３】
ステートメント１５．本発明の実施例は、ステートメント１４によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０１７４】
ステートメント１６．本発明の実施例は、ステートメント１５によるシステムを含む。サイドバンドバスは、Ｉ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス及びＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）を含むセットから成る。
【０１７５】
ステートメント１７。本発明の実施例は、ステートメント１４によるシステムを含む。コントローラは、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用してダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０１７６】
ステートメント１８。本発明の実施例は、ステートメント９によるシステムを含む。ＡＰＭ−Ｆは、ダウンストリームポート及びＳＳＤのエンドポイントを介してＡＰＭ−Ｓに結果を送信し、コントローラは、結果をＳＳＤのエンドポイントを介してプロセッサに伝達する。
【０１７７】
ステートメント１９。本発明の実施例は、ステートメント９によるシステムを含む。ＡＰＭ−Ｆは、アップストリームポートを介してプロセッサに結果を伝送する。
【０１７８】
ステートメント２０。本発明の実施例は、ステートメント９によるシステムを含む。ＦＰＧＡは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第２アクセラレーションコマンドをインターセプトしてアップストリームＦＡＲに関連付けられた第２アクセラレーションコマンドをＡＰＭ−Ｆに配信し、ＦＰＧＡは、アップストリームポートでプロセッサから受信されたアップストリームＦＡＲに関連付けられていない第３  ＰＣＩｅトランザクションをＳＳＤに伝達する。
【０１７９】
ステートメント２１。本発明の実施例は、ステートメント２０によるシステムを含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０１８０】
ステートメント２２。本発明の実施例は、ステートメント２０によるシステムを含む。ＳＳＤは、プロセッサからホストシステムアドレスのブロックを要請し、コントローラは、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックの第１サブセット、及びアップストリームＦＡＲとしてホストシステムアドレスのブロックの第２サブセットを選択する。
【０１８１】
ステートメント２３。本発明の実施例は、ステートメント２２によるシステムを含む。ホストシステムアドレスのブロックは、プロセッサ上で実行中のＡＳＭによってアクセス可能な特定のレジスタを含み、特定のレジスタは、アップストリームＦＡＲを識別する。
【０１８２】
ステートメント２４。本発明の実施例は、ステートメント２２によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングし、アップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０１８３】
ステートメント２５。本発明の実施例は、ステートメント２４によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングし、アップストリームフィルタをアップストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０１８４】
ステートメント２６。本発明の実施例は、ステートメント２５によるシステムを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０１８５】
ステートメント２７。本発明の実施例は、ステートメント２４によるシステムを含む。コントローラは、ＰＣＩｅ  ＶＤＭを使用してダウンストリームフィルタをダウンストリームＦＡＲでプログラミングし、アップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０１８６】
ステートメント２８。本発明の実施例は、ステートメント２０によるシステムを含む。ＡＰＭ−Ｆは、ダウンストリームポート及びＳＳＤのエンドポイントを介してＡＰＭ−Ｓに結果を伝送し、コントローラは、結果をＳＳＤのエンドポイントを介してプロセッサに伝達する。
【０１８７】
ステートメント２９。本発明の実施例は、ステートメント２０によるシステムを含む。ＡＰＭ−Ｆは、アップストリームポートを介してプロセッサに結果を伝送する。
【０１８８】
ステートメント３０。本発明の実施例は、ステートメント９によるシステムを含む。ＳＳＤは、物理関数（ＰＦ）及び仮想関数（ＶＦ）を含み、ＰＦは、ＳＳＤを露出させ、ＶＦは、ＦＰＧＡを露出させ、ＦＰＧＡは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第２アクセラレーションコマンドをインターセプトして第２アクセラレーションコマンドをＡＰＭ−Ｆに配信し、ＦＰＧＡは、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされない第３  ＰＣＩｅトランザクションをＳＳＤに伝達する。
【０１８９】
ステートメント３１。本発明の実施例は、ステートメント３０によるシステムを含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０１９０】
ステートメント３２。本発明の実施例は、ステートメント３０によるシステムを含む。ＰＦは、プロセッサからホストシステムアドレスの第１ブロックを要請し、コントローラは、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックの第１サブセットを選択する。
【０１９１】
ステートメント３３。本発明の実施例は、ステートメント３２によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０１９２】
ステートメント３４。本発明の実施例は、ステートメント３３によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０１９３】
ステートメント３５。本発明の実施例は、ステートメント３４によるシステムを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０１９４】
ステートメント３６。本発明の実施例は、ステートメント３３によるシステムを含む。コントローラは、ＰＣＩｅ  ＶＤＭを使用してダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０１９５】
ステートメント３７。本発明の実施例は、ステートメント３０によるシステムを含む。第２アクセラレーションコマンドは、アップストリームＦＡＲに関連付けられ、アップストリームフィルタは、アップストリームＦＡＲに関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０１９６】
ステートメント３８。本発明の実施例は、ステートメント３７によるシステムを含む。ＶＦは、アップストリームＦＡＲとしてプロセッサからホストシステムアドレスの第２ブロックを要請する。
【０１９７】
ステートメント３９。本発明の実施例は、ステートメント３８によるシステムを含む。コントローラは、アップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０１９８】
ステートメント４０。本発明の実施例は、ステートメント３９によるシステムを含む。コントローラは、アップストリームフィルタをアップストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０１９９】
ステートメント４１。本発明の実施例は、ステートメント４０によるシステムを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２００】
ステートメント４２。本発明の実施例は、ステートメント３９によるシステムを含む。コントローラは、ＰＣＩｅ  ＶＤＭを使用してアップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０２０１】
ステートメント４３。本発明の実施例は、ステートメント３０によるシステムを含む。第２アクセラレーションコマンドは、ＶＦの識別子を含み、アップストリームフィルタは、ＶＦの識別子に関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０２０２】
ステートメント４４。本発明の実施例は、ステートメント４３によるシステムを含む。コントローラは、アップストリームフィルタをＶＦの識別子でプログラミングする。
【０２０３】
ステートメント４５。本発明の実施例は、ステートメント４４によるシステムを含む。コントローラは、アップストリームフィルタをＶＦの識別子でプログラミングするためにサイドバンドバスを使用する。
【０２０４】
ステートメント４６。本発明の実施例は、ステートメント４５によるシステムを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２０５】
ステートメント４７。本発明の実施例は、ステートメント４４によるシステムを含む。コントローラは、ＰＣＩｅ  ＶＤＭを使用してアップストリームフィルタをＶＦの識別子でプログラミングする。
【０２０６】
ステートメント４８。本発明の実施例は、ステートメント３０によるシステムを含む。ＡＰＭ−Ｆは、ダウンストリームポート及びＳＳＤのエンドポイントを介してＡＰＭ−Ｓに結果を伝送し、コントローラは、結果をＳＳＤのエンドポイントを介してプロセッサに伝達する。
【０２０７】
ステートメント４９。本発明の実施例は、ステートメント３０によるシステムを含む。ＡＰＭ−Ｆは、アップストリームポートを介してプロセッサに結果を伝送する。
【０２０８】
ステートメント５０。本発明の実施例は、ステートメント９によるシステムを含む。ＳＳＤは、ＳＳＤを露出させる第１  ＰＦ及びＦＰＧＡを露出させる第２  ＰＦを含み、ＦＰＧＡは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第２アクセラレーションコマンドをインターセプトして第２アクセラレーションコマンドをＡＰＭ−Ｆに配信し、ＦＰＧＡは、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされない第３  ＰＣＩｅトランザクションをＳＳＤに伝達する。
【０２０９】
ステートメント５１。本発明の実施例は、ステートメント５０によるシステムを含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０２１０】
ステートメント５２。本発明の実施例は、ステートメント５０によるシステムを含む。第１  ＰＦは、プロセッサからホストシステムアドレスの第１ブロックを要請し、コントローラは、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックの第１サブセットを選択する。
【０２１１】
ステートメント５３。本発明の実施例は、ステートメント５２によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０２１２】
ステートメント５４。本発明の実施例は、ステートメント５３によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０２１３】
ステートメント５５。本発明の実施例は、ステートメント５４によるシステムを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２１４】
ステートメント５６。本発明の実施例は、ステートメント５３によるシステムを含む。コントローラは、ＰＣＩｅ  ＶＤＭを使用してアップストリームフィルタをＶＦの識別子でプログラミングする。
【０２１５】
ステートメント５７。本発明の実施例は、ステートメント５０によるシステムを含む。第２アクセラレーションコマンドは、アップストリームＦＡＲに関連付けられ、アップストリームフィルタは、アップストリームＦＡＲに関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０２１６】
ステートメント５８。本発明の実施例は、ステートメント５７によるシステムを含む。第２  ＰＦは、アップストリームＦＡＲとしてプロセッサからホストシステムアドレスの第２ブロックを要請する。
【０２１７】
ステートメント５９。本発明の実施例は、ステートメント５８によるシステムを含む。コントローラは、アップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０２１８】
ステートメント６０。本発明の実施例は、ステートメント５９によるシステムを含む。コントローラは、アップストリームフィルタをアップストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０２１９】
ステートメント６１。本発明の実施例は、ステートメント６０によるシステムを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２２０】
ステートメント６２。本発明の実施例は、ステートメント５９によるシステムを含む。コントローラは、ＰＣＩｅ  ＶＤＭを使用してアップストリームフィルタをＶＦの識別子でプログラミングする。
【０２２１】
ステートメント６３。本発明の実施例は、ステートメント５０によるシステムを含む。第２アクセラレーションコマンドは、第２  ＶＦの識別子を含み、アップストリームフィルタは、第２  ＶＦの識別子に関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０２２２】
ステートメント６４。本発明の実施例は、ステートメント６３によるシステムを含む。コントローラは、第２  ＰＦの識別子でアップストリームフィルタをプログラミングする。
【０２２３】
ステートメント６５。本発明の実施例は、ステートメント６４によるシステムを含む。コントローラは、第２  ＰＦの識別子でアップストリームフィルタをプログラミングするためにサイドバンドバスを使用する。
【０２２４】
ステートメント６６。本発明の実施例は、ステートメント６５によるシステムを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２２５】
ステートメント６７。本発明の実施例は、ステートメント６４によるシステムを含む。コントローラは、ＰＣＩｅ  ＶＤＭを使用してアップストリームフィルタを第２  ＰＦの識別子でプログラミングする。
【０２２６】
ステートメント６８。本発明の実施例は、ステートメント５０によるシステムを含む。ＡＰＭ−Ｆは、ダウンストリームポート及びＳＳＤのエンドポイントを介してＡＰＭ−Ｓに結果を伝送し、コントローラの結果をＳＳＤのエンドポイントを介してプロセッサに伝達する。
【０２２７】
ステートメント６９。本発明の実施例は、ステートメント５０によるシステムを含む。ＡＰＭ−Ｆは、アップストリームポートを介してプロセッサに結果を伝送する。
【０２２８】
ステートメント７０。本発明の実施例は、ステートメント３によるシステムを含む。アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するＦＰＧＡのルートポートを含み、ＦＰＧＡは、第１  ＰＦ、第２  ＰＦ、及びＦＰＧＡのルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、ストレージデバイスから受信された第１アクセラレーションコマンドをインターセプトして第１アクセラレーションコマンドをＡＰＭ−Ｆに配信し、第１アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲（ＦＡＲ）に関連付けられ、ＦＰＧＡは、第１  ＰＦに対するプロセッサからホストシステムアドレスの第１ブロックを要請して、第２  ＰＦに対するプロセッサからホストシステムアドレスの第２ブロックを要請し、ＦＰＧＡは、プロセッサから受信されたＰＣＩｅトランザクションをストレージデバイスに伝達し、プロセッサから受信された第２アクセラレーションコマンドをＡＰＭ−Ｆに伝達し、ＰＣＩｅトランザクションは、第１  ＰＦの第１識別子に関連付けられ、第２アクセラレーションコマンドは、第２  ＰＦの第２識別子に関連付けられる。
【０２２９】
ステートメント７１。本発明の実施例は、ステートメント７０によるシステムを含む。ＳＳＤは、ＦＰＧＡからダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックを要請し、ホストシステムアドレスの第２ブロックは、少なくともＦＰＧＡアドレスのブロックと同じ大きさであり、コントローラは、ダウンストリームＦＡＲとしてＦＰＧＡアドレスのブロックのサブセットを選択する。
ステートメント７２。本発明の実施例は、ステートメント７１によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０２３０】
ステートメント７３。本発明の実施例は、ステートメント７２によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０２３１】
ステートメント７４。本発明の実施例は、ステートメント７３によるシステムを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２３２】
ステートメント７５。本発明の実施例は、ステートメント７２によるシステムを含む。コントローラは、ＰＣＩｅ  ＶＤＭを使用してダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０２３３】
ステートメント７６。本発明の実施例は、ステートメント７０によるシステムを含む。ＡＰＭ−Ｆは、ＦＰＧＡのエンドポイントを介してプロセッサに結果を伝送する。
【０２３４】
ステートメント７７。本発明の実施例は、ステートメント７０によるシステムを含む。ＦＰＧＡは、ストレージデバイスのエンドポイントの性能をＦＰＧＡのエンドポイントにコピーする構成モニターを更に含む。
【０２３５】
ステートメント７８。本発明の実施例は、ステートメント３によるシステムを含む。アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、ダウンストリームインターフェースは、第１構成空間を支援するＦＰＧＡの第１ルートポート及び第２構成空間を支援するＦＰＧＡの第２ルートポートを含み、ＳＳＤのエンドポイントは、ＦＰＧＡの第１ルートポートに関連付けられ、ＳＳＤは、ＦＰＧＡの第２ルートポートに関連付けられたＳＳＤの第２エンドポイントを更に含み、ＦＰＧＡは、第１  ＰＦ及び第２  ＰＦを含み、ＦＰＧＡは、第１  ＰＦに対するプロセッサからホストシステムアドレスの第１ブロックを要請して、第２  ＰＦに対するプロセッサからホストシステムアドレスの第２ブロックを要請し、ＦＰＧＡは、プロセッサから受信された第１  ＰＣＩｅトランザクションをＦＰＧＡの第１ルートポート及びＳＳＤのエンドポイントを介してＳＳＤに伝送し、プロセッサから受信された第２アクセラレーションコマンドをＡＰＭ−Ｆに伝達し、ＦＰＧＡの第１ルートポートでＳＳＤから受信された第２  ＰＣＩｅトランザクションをプロセッサに伝達し、ＦＰＧＡの第２ルートポートでＳＳＤから受信された第１アクセラレーションコマンドをＡＰＭ−Ｆに伝達し、第１  ＰＣＩｅトランザクションは、第１  ＰＦの第１識別子に関連付けられ、第２アクセラレーションコマンドは、第２  ＰＦの第２識別子に関連付けられる。
【０２３６】
ステートメント７９。本発明の実施例は、ステートメント７８によるシステムを含む。第２アクセラレーションコマンドは、ＡＰＭ−Ｓによって生成される。
【０２３７】
ステートメント８０。本発明の実施例は、ステートメント７８によるシステムを含む。ＡＰＭ−Ｆは、ＦＰＧＡのエンドポイントを介してプロセッサに結果を伝送する。
【０２３８】
ステートメント８１。本発明の実施例は、ステートメント７８によるシステムを含む。ＦＰＧＡは、ストレージデバイスのエンドポイントの性能をＦＰＧＡのエンドポイントにコピーする構成モニターを更に含む。
【０２３９】
ステートメント８２。本発明の実施例は、ステートメント７８によるシステムを含む。アップストリームインターフェースは、ＦＰＧＡの第２エンドポイントを更に含み、ＦＰＧＡは、ＦＰＧＡのエンドポイントでプロセッサから受信された第１  ＰＣＩｅトランザクションをＦＰＧＡの第１ルートポート及びＳＳＤのエンドポイントを介してＳＳＤに伝達し、ＦＰＧＡの第２エンドポイントでプロセッサから受信された第２アクセラレーションコマンドをＡＰＭ−Ｆに伝達する。
【０２４０】
ステートメント８３。本発明の実施例は、ステートメント８２によるシステムを含む。第２アクセラレーションコマンドは、ＡＰＭ−Ｓによって生成される。
【０２４１】
ステートメント８４。本発明の実施例は、ステートメント８２によるシステムを含む。ＡＰＭ−Ｆは、ＦＰＧＡのエンドポイントを介してプロセッサに結果を伝送する。
【０２４２】
ステートメント８５。本発明の実施例は、ステートメント８２によるシステムを含む。ＦＰＧＡは、ストレージデバイスのエンドポイントの性能をＦＰＧＡのエンドポイントにコピーする構成モニターを更に含む。
【０２４３】
ステートメント８６。本発明の実施例は、ステートメント３によるシステムを含む。アップストリームインターフェースは、ＦＰＧＡの第１エンドポイント及びＦＰＧＡの第２エンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するＦＰＧＡのルートポートを含み、ＦＰＧＡは、ＦＰＧＡのルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、ＳＳＤから受信された第１アクセラレーションコマンドをインターセプトしてＡＰＭ−Ｆに第１アクセラレーションコマンドを配信し、第１アクセラレーションコマンドは、ダウンストリームＦＡＲに関連付けられ、ＦＰＧＡは、ＦＰＧＡエンドポイントでプロセッサから受信された第１  ＰＣＩｅトランザクションをＦＰＧＡのルートポート及びＳＳＤのエンドポイントを介してＳＳＤに伝達し、ＦＰＧＡの第２エンドポイントでプロセッサから受信された第２アクセラレーションコマンドをＡＰＭ−Ｆに伝達し、ＦＰＧＡの第１ルートポートでＳＳＤから受信されたダウンストリームＦＡＲに関連付けられていない第２  ＰＣＩｅトランザクションを、ＦＰＧＡのエンドポイントを介してプロセッサに伝達し、ＦＰＧＡの第２ルートポートでＳＳＤから受信された第１アクセラレーションコマンドをＡＰＭ−Ｆに伝達する。
【０２４４】
ステートメント８７。本発明の実施例は、ステートメント８６によるシステムを含む。第２アクセラレーションコマンドは、ＡＰＭ−Ｓによって生成される。
【０２４５】
ステートメント８８。本発明の実施例は、ステートメント８６によるシステムを含む。ＳＳＤは、ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックをＦＰＧＡから要請し、ＦＰＧＡは、少なくともＦＰＧＡアドレスのブロックと同じ大きさのホストシステムアドレスのブロックをＦＰＧＡの第１エンドポイントに対するプロセッサから要請し、コントローラは、ダウンストリームＦＡＲとしてＦＰＧＡアドレスのブロックのサブセットを選択する。
【０２４６】
ステートメント８９。本発明の実施例は、ステートメント８８によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０２４７】
ステートメント９０。本発明の実施例は、ステートメント８９によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０２４８】
ステートメント９１。本発明の実施例は、ステートメント９０によるシステムを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２４９】
ステートメント９２。本発明の実施例は、ステートメント８９によるシステムを含む。コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにＰＣＩｅ  ＶＤＭを使用する。
【０２５０】
ステートメント９３。本発明の実施例は、ステートメント８６によるシステムを含む。ＡＰＭ−Ｆは、ＦＰＧＡのエンドポイントを介してプロセッサに結果を伝送する。
【０２５１】
ステートメント９４。本発明の実施例は、ステートメント８６によるシステムを含む。ＦＰＧＡは、ストレージデバイスのエンドポイントの性能をＦＰＧＡのエンドポイントにコピーする構成モニターを更に含む。
【０２５２】
ステートメント９５。本発明の実施例は、アクセラレーションモジュールを含む。アクセラレーションモジュールは、アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）と、アプリケーションを実行中のプロセッサと通信するためのアップストリームインターフェース（アップストリームポート）と、アクセラレーションコマンドを実行する際にＡＰＭ−Ｆを補助するアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）を含むストレージデバイスと通信するためのダウンストリームインターフェース（ダウンストリームポート）と、を備え、アクセラレーションモジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用してプロセッサ及びストレージデバイスと通信し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、アプリケーションのためのストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
【０２５３】
ステートメント９６。本発明の実施例は、ステートメント９５によるアクセラレーションモジュールを含む。アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現される。
【０２５４】
ステートメント９７。本発明の実施例は、ステートメント９６によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、アクセラレーションコマンドと共に使用されるアプリケーションデータに関するダウンストリームインターフェースを使用して通信する。
【０２５５】
ステートメント９８。本発明の実施例は、ステートメント９６によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとはメッセージを使用して通信する。
【０２５６】
ステートメント９９。本発明の実施例は、ステートメント９６によるアクセラレーションモジュールを含む。ＦＰＧＡは、アクセラレーションエンジンと、アクセラレーションエンジンでアクセラレーションコマンドをスケジューリングするランタイムスケジューラ（ｒｕｎ−ｔｉｍｅ  ｓｃｈｅｄｕｌｅｒ）と、を更に含む。
【０２５７】
ステートメント１００。本発明の実施例は、ステートメント９６によるアクセラレーションモジュールを含む。アップストリームインターフェースは、アップストリームポートを含み、ダウンストリームインターフェースは、ダウンストリームポートを含み、ＦＰＧＡは、アップストリームポートでプロセッサから受信された第１  ＰＣＩｅトランザクションをストレージデバイスに伝達し、ＦＰＧＡは、ダウンストリームポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、ストレージデバイスから受信されたアクセラレーションコマンドをインターセプトしてＡＰＭ−Ｆにアクセラレーションコマンドを配信し、アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲（ＦＡＲ）に関連付けられ、ＦＰＧＡは、ダウンストリームポートでストレージデバイスから受信されたダウンストリームＦＡＲに関連付けられていない第２  ＰＣＩｅトランザクションをプロセッサに伝送する。
【０２５８】
ステートメント１０１。本発明の実施例は、ステートメント１００によるアクセラレーションモジュールを含む。ＦＰＧＡのダウンストリームフィルタでダウンストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０２５９】
ステートメント１０２。本発明の実施例は、ステートメント１０１によるアクセラレーションモジュールを含む。ＦＰＧＡのダウンストリームフィルタでダウンストリームＦＡＲは、サイドバンドバスを介してストレージデバイスによってプログラミングされる。
【０２６０】
ステートメント１０３。本発明の実施例は、ステートメント１０２によるアクセラレーションモジュールを含む。サイドバンドバスは、Ｉ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス及びＳＭ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）バスを含むセットから成る。
【０２６１】
ステートメント１０４。本発明の実施例は、ステートメント１０１によるアクセラレーションモジュールを含む。ＦＰＧＡのダウンストリームフィルタでダウンストリームＦＡＲは、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用して、ストレージデバイスによってプログラミングされる。
【０２６２】
ステートメント１０５。本発明の実施例は、ステートメント１００によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、ダウンストリームポートを介してストレージデバイスのＡＭＰ−Ｓに結果を伝送する。
【０２６３】
ステートメント１０６。本発明の実施例は、ステートメント１００によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、アップストリームポートを介してプロセッサに結果を伝送する。
【０２６４】
ステートメント１０７。本発明の実施例は、ステートメント１００によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとはメッセージを使用して通信する。
【０２６５】
ステートメント１０８。本発明の実施例は、ステートメント１００によるアクセラレーションモジュールを含む。ＦＰＧＡは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第２アクセラレーションコマンドをインターセプトしてアップストリームＦＡＲに関連付けられた第２アクセラレーションコマンドをＡＰＭ−Ｆに配信し、ＦＰＧＡは、アップストリームポートでプロセッサから受信されたアップストリームＦＡＲに関連付けられていない第３  ＰＣＩｅトランザクションをストレージデバイスに伝送する。
【０２６６】
ステートメント１０９。本発明の実施例は、ステートメント１０８によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタ内でアップストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０２６７】
ステートメント１１０。本発明の実施例は、ステートメント１０９によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタ内でアップストリームＦＡＲは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０２６８】
ステートメント１１１。本発明の実施例は、ステートメント１１０によるアクセラレーションモジュールを含む。サイドバンドバスは、Ｉ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス及びＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）を含むセットから成る。
【０２６９】
ステートメント１１２。本発明の実施例は、ステートメント１０９によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタ内でアップストリームＦＡＲは、ＰＣＩｅ  ＶＤＭを用いてストレージデバイスによってプログラミングされる。
【０２７０】
ステートメント１１３。本発明の実施例は、ステートメント１０８によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、ダウンストリームポートを介してストレージデバイスのＡＭＰ−Ｓに結果を伝送する。
【０２７１】
ステートメント１１４。本発明の実施例は、ステートメント１０８によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、アップストリームポートを介してプロセッサに結果を伝送する。
【０２７２】
ステートメント１１５。本発明の実施例は、ステートメント１０８によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとはメッセージを使用して通信する。
【０２７３】
ステートメント１１６。本発明の実施例は、ステートメント１０８によるアクセラレーションモジュールを含む。ＦＰＧＡは、ストレージデバイスに割り当てられた非揮発性メモリエクスプレス（ＮＶＭｅ）レジスタを介してプロセッサに間接的に露出される。
【０２７４】
ステートメント１１７。本発明の実施例は、ステートメント１００によるアクセラレーションモジュールを含む。ＦＰＧＡは、ストレージデバイスの仮想機能（ＶＦ）により露出され、ＦＰＧＡは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第２アクセラレーションコマンドをインターセプトして第２アクセラレーションコマンドをＡＰＭ−Ｆに配信し、ＦＰＧＡは、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされていない第３  ＰＣＩｅトランザクションをストレージデバイスに伝送する。
【０２７５】
ステートメント１１８。本発明の実施例は、ステートメント１１７によるアクセラレーションモジュールを含む。第２アクセラレーションコマンドは、アップストリームＦＡＲに関連付けられ、アップストリームフィルタは、アップストリームＦＡＲに関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０２７６】
ステートメント１１９。本発明の実施例は、ステートメント１１８によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタ内でアップストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０２７７】
ステートメント１２０。本発明の実施例は、ステートメント１１９によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタ内でアップストリームＦＡＲは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０２７８】
ステートメント１２１。本発明の実施例は、ステートメント１２０によるアクセラレーションモジュールを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２７９】
ステートメント１２２。本発明の実施例は、ステートメント１１９によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタ内でアップストリームＦＡＲは、ＰＣＩｅ  ＶＤＭを使用してストレージデバイスによってプログラミングされる。
【０２８０】
ステートメント１２３。本発明の実施例は、ステートメント１１７によるアクセラレーションモジュールを含む。第２アクセラレーションコマンドは、ＶＦの識別子を含み、アップストリームフィルタは、ＶＦの識別子に関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０２８１】
ステートメント１２４。本発明の実施例は、ステートメント１２３によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタは、ストレージデバイスによりＶＦの識別子でプログラミングされる。
【０２８２】
ステートメント１２５。本発明の実施例は、ステートメント１２４によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによりＶＦの識別子でプログラミングされる。
【０２８３】
ステートメント１２６。本発明の実施例は、ステートメント１２５によるアクセラレーションモジュールを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２８４】
ステートメント１２７。本発明の実施例は、ステートメント１２４によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタは、ＰＣＩｅ  ＶＤＭを用いてストレージデバイスによりＶＦの識別子でプログラミングされる。
【０２８５】
ステートメント１２８。本発明の実施例は、ステートメント１１７によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、ダウンストリームポートを介してストレージデバイスのＡＭＰ−Ｓに結果を伝送する。
【０２８６】
ステートメント１２９。本発明の実施例は、ステートメント１１７によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、アップストリームポートを介してプロセッサに結果を伝送する。
【０２８７】
ステートメント１３０。本発明の実施例は、ステートメント１１７によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、メッセージを使用して通信する。
【０２８８】
ステートメント１３１。本発明の実施例は、ステートメント１００によるアクセラレーションモジュールを含む。ＦＰＧＡは、ストレージデバイスの物理関数（ＰＦ）により露出され、ＦＰＧＡは、アップストリームポートに関連付けられたアップストリームフィルタを更に含み、アップストリームフィルタは、プロセッサから受信された第２アクセラレーションコマンドをインターセプトして第２アクセラレーションコマンドをＡＰＭ−Ｆに配信し、ＦＰＧＡは、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされていない第３  ＰＣＩｅトランザクションをストレージデバイスに伝送する。
【０２８９】
ステートメント１３２。本発明の実施例は、ステートメント１３１によるアクセラレーションモジュールを含む。第２アクセラレーションコマンドは、アップストリームＦＡＲに関連付けられ、アップストリームフィルタは、アップストリームＦＡＲに関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０２９０】
ステートメント１３３。本発明の実施例は、ステートメント１３２によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタ内でアップストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０２９１】
ステートメント１３４。本発明の実施例は、ステートメント１３３によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタ内でアップストリームＦＡＲは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０２９２】
ステートメント１３５。本発明の実施例は、ステートメント１３４によるアクセラレーションモジュールを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２９３】
ステートメント１３６。本発明の実施例は、ステートメント１３３によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタ内でアップストリームＦＡＲは、ＰＣＩｅ  ＶＤＭを使用してストレージデバイスによってプログラミングされる。
【０２９４】
ステートメント１３７。本発明の実施例は、ステートメント１３１によるアクセラレーションモジュールを含む。第２アクセラレーションコマンドは、ＰＦの識別子を含み、アップストリームフィルタは、ＰＦの識別子に関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０２９５】
ステートメント１３８。本発明の実施例は、ステートメント１３７によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタは、ストレージデバイスによりＰＦの識別子でプログラミングされる。
【０２９６】
ステートメント１３９。本発明の実施例は、ステートメント１３８によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによりＰＦの識別子でプログラミングされる。
【０２９７】
ステートメント１４０。本発明の実施例は、ステートメント１３９によるアクセラレーションモジュールを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０２９８】
ステートメント１４１。本発明の実施例は、ステートメント１３８によるアクセラレーションモジュールを含む。ＦＰＧＡのアップストリームフィルタは、ＰＣＩｅ  ＶＤＭを使用してストレージデバイスによりＰＦの識別子でプログラミングされる。
【０２９９】
ステートメント１４２。本発明の実施例は、ステートメント１３１によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、ダウンストリームポートを介してＡＰＭ−Ｓに結果を伝送する。
【０３００】
ステートメント１４３。本発明の実施例は、ステートメント１３１によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、アップストリームポートを介してプロセッサに結果を伝送する。
【０３０１】
ステートメント１４４。本発明の実施例は、ステートメント１３１によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、メッセージを使用して通信する。
【０３０２】
ステートメント１４５。本発明の実施例は、ステートメント９６によるアクセラレーションモジュールを含む。アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するＦＰＧＡのルートポートを含み、ＦＰＧＡは、第１  ＰＦ、第２  ＰＦ、及びＦＰＧＡのルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、ストレージデバイスから受信された第１アクセラレーションコマンドをインターセプトして第１アクセラレーションコマンドをＡＰＭ−Ｆに配信し、第１アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲（ＦＡＲ）に関連付けられ、ＦＰＧＡは、第１  ＰＦに対するプロセッサからホストシステムアドレスの第１ブロックを要請して、第２  ＰＦに対するプロセッサからホストシステムアドレスの第２ブロックを要請し、ＦＰＧＡは、プロセッサから受信されたＰＣＩｅトランザクションをストレージデバイスに伝達し、プロセッサから受信された第２アクセラレーションコマンドをＡＰＭ−Ｆに伝達し、ＰＣＩｅトランザクションは、第１  ＰＦの第１識別子に関連付けられ、第２アクセラレーションコマンドは、第２  ＰＦの第２識別子に関連付けられる。
【０３０３】
ステートメント１４６。本発明の実施例は、ステートメント１４５によるアクセラレーションモジュールを含む。ＦＰＧＡは、ＦＰＧＡからダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックに対する要請をストレージデバイスから受信し、ＦＰＧＡは、構成空間からＦＰＧＡアドレスのブロックを割り当て、ホストシステムアドレスの第１ブロックは、少なくともＦＰＧＡアドレスのブロックと同じ大きさである。
【０３０４】
ステートメント１４７。本発明の実施例は、ステートメント１４６によるアクセラレーションモジュールを含む。ＦＰＧＡのダウンストリームフィルタ内でダウンストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０３０５】
ステートメント１４８。本発明の実施例は、ステートメント１４７によると、アクセラレーションモジュールを含む。ＦＰＧＡのダウンストリームフィルタ内でダウンストリームＦＡＲは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０３０６】
ステートメント１４９。本発明の実施例は、ステートメント１４８によるアクセラレーションモジュールを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３０７】
ステートメント１５０。本発明の実施例は、ステートメント１４７によるアクセラレーションモジュールを含む。ＦＰＧＡのダウンストリームフィルタ内でダウンストリームＦＡＲは、ＰＣＩｅ  ＶＤＭを用いてストレージデバイスによってプログラミングされる。
【０３０８】
ステートメント１５１。本発明の実施例は、ステートメント１４５によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、ＦＰＧＡのエンドポイントを介してプロセッサに結果を伝送する。
【０３０９】
ステートメント１５２。本発明の実施例は、ステートメント１４５によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、メッセージを使用して通信する。
【０３１０】
ステートメント１５３。本発明の実施例は、ステートメント１４５によるアクセラレーションモジュールを含む。ＦＰＧＡは、ストレージデバイスのエンドポイントの性能をＦＰＧＡのエンドポイントにコピーする構成モニターを更に含む。
【０３１１】
ステートメント１５４。本発明の実施例は、ステートメント９６によるアクセラレーションモジュールを含む。アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、ダウンストリームインターフェースは、第１構成空間を支援するＦＰＧＡの第１ルートポート及び第２構成空間を支援するＦＰＧＡの第２ルートポートを含み、ＳＳＤのエンドポイントは、ＦＰＧＡの第１ルートポートに関連付けられ、ＳＳＤは、ＦＰＧＡの第２ルートポートに関連付けられたＳＳＤの第２エンドポイントを更に含み、ＦＰＧＡは、第１  ＰＦ及び第２  ＰＦを含み、ＦＰＧＡは、第１  ＰＦに対するプロセッサからホストシステムアドレスの第１ブロックを要請して、第２  ＰＦに対するプロセッサからホストシステムアドレスの第２ブロックを要請し、ＦＰＧＡは、プロセッサから受信された第１  ＰＣＩｅトランザクションをＦＰＧＡの第１ルートポート及びＳＳＤのエンドポイントを介してＳＳＤに伝送し、プロセッサから受信された第２アクセラレーションコマンドをＡＰＭ−Ｆに伝達し、ＦＰＧＡの第１ルートポートでＳＳＤから受信された第２  ＰＣＩｅトランザクションをプロセッサに伝達し、ＦＰＧＡの第２ルートポートでＳＳＤから受信された第１アクセラレーションコマンドをＡＰＭ−Ｆに伝達する。
【０３１２】
ステートメント１５５。本発明の実施例は、ステートメント１５４によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、ＦＰＧＡのエンドポイントを介してプロセッサに結果を伝送する。
【０３１３】
ステートメント１５６。本発明の実施例は、ステートメント１５４によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、メッセージを使用して通信する。
【０３１４】
ステートメント１５７。本発明の実施例は、ステートメント１５４によるアクセラレーションモジュールを含む。ＦＰＧＡは、ストレージデバイスのエンドポイントの性能をＦＰＧＡのエンドポイントにコピーする構成モニターを更に含む。
【０３１５】
ステートメント１５８。本発明の実施例は、ステートメント１５４によるアクセラレーションモジュールを含む。アップストリームインターフェースは、ＦＰＧＡの第２エンドポイントを更に含み、ＦＰＧＡは、ＦＰＧＡエンドポイントでプロセッサから受信された第１  ＰＣＩｅトランザクションをＦＰＧＡの第１ルートポート及びＳＳＤのエンドポイントを介してＳＳＤに伝達し、ＦＰＧＡの第２エンドポイントでプロセッサから受信された第２アクセラレーションコマンドをＡＰＭ−Ｆに伝達する。
【０３１６】
ステートメント１５９。本発明の実施例は、ステートメント１５８によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、ＦＰＧＡのエンドポイントを介してプロセッサに結果を伝送する。
【０３１７】
ステートメント１６０。本発明の実施例は、ステートメント１５８によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、メッセージを使用して通信する。
【０３１８】
ステートメント１６１。本発明の実施例は、ステートメント１５８によるアクセラレーションモジュールを含む。ＦＰＧＡは、ストレージデバイスのエンドポイントの性能をＦＰＧＡのエンドポイントにコピーする構成モニターを更に含む。
【０３１９】
ステートメント１６２。本発明の実施例は、ステートメント９６によるアクセラレーションモジュールを含む。アップストリームインターフェースは、ＦＰＧＡの第１エンドポイント及びＦＰＧＡの第２エンドポイントを含み、ダウンストリームインターフェースは、構成空間を支援するＦＰＧＡのルートポートを含み、ＦＰＧＡは、ＦＰＧＡのルートポートに関連付けられたダウンストリームフィルタを含み、ダウンストリームフィルタは、ＳＳＤから受信された第１アクセラレーションコマンドをインターセプトしてＡＰＭ−Ｆに第１アクセラレーションコマンドを配信し、第１アクセラレーションコマンドは、ダウンストリームＦＡＲに関連付けられ、ＦＰＧＡは、ＦＰＧＡエンドポイントでプロセッサから受信された第１  ＰＣＩｅトランザクションをＦＰＧＡの第１ルートポート及びＳＳＤのエンドポイントを介してＳＳＤに伝達し、ＦＰＧＡの第２エンドポイントでプロセッサから受信された第２アクセラレーションコマンドをＡＰＭ−Ｆに伝達し、ＦＰＧＡの第１ルートポートでＳＳＤから受信されたダウンストリームＦＡＲに関連付けられていない第２  ＰＣＩｅトランザクションを、ＦＰＧＡエンドポイントを介してプロセッサに伝達し、ＦＰＧＡの第２ルートポートでＳＳＤから受信された第１アクセラレーションコマンドをＡＰＭ−Ｆに伝達する。
【０３２０】
ステートメント１６３。本発明の実施例は、ステートメント１６２によるアクセラレーションモジュールを含む。ＦＰＧＡは、ＦＰＧＡからダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックの要請をストレージデバイスから受信し、ＦＰＧＡは、構成空間からＦＰＧＡアドレスのブロックを割り当て、ＦＰＧＡは、ＦＰＧＡの第１エンドポイントに対してプロセッサから少なくともＦＰＧＡアドレスのブロックと同じ大きさのホストシステムアドレスのブロックを要請する。
【０３２１】
ステートメント１６４。本発明の実施例は、ステートメント１６３によるアクセラレーションモジュールを含む。ＦＰＧＡのダウンストリームフィルタ内のダウンストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０３２２】
ステートメント１６５。本発明の実施例は、ステートメント１６４によるアクセラレーションモジュールを含む。ＦＰＧＡのダウンストリームフィルタ内のダウンストリームＦＡＲは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０３２３】
ステートメント１６６。本発明の実施例は、ステートメント１６５によるアクセラレーションモジュールを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３２４】
ステートメント１６７。本発明の実施例は、ステートメント１６４によるアクセラレーションモジュールを含む。ＦＰＧＡのダウンストリームフィルタ内のダウンストリームＦＡＲは、ＰＣＩｅ  ＶＤＭを用いてストレージデバイスによってプログラミングされる。
【０３２５】
ステートメント１６８。本発明の実施例は、ステートメント１６２によるアクセラレーションモジュールを含む。ＡＰＭ−Ｆは、ＦＰＧＡのエンドポイントを介してプロセッサに結果を伝送する。
【０３２６】
ステートメント１６９。本発明の実施例は、ステートメント１６２によるアクセラレーションモジュールを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、メッセージを使用して通信する。
【０３２７】
ステートメント１７０。本発明の実施例は、ステートメント１６２によるアクセラレーションモジュールを含む。ＦＰＧＡは、ストレージデバイスのエンドポイントの性能をＦＰＧＡのエンドポイントにコピーする構成モニターを更に含む。
【０３２８】
ステートメント１７１。本発明の実施例は、ハードウェアを用いて具現される第１ブリッジコンポーネント（構成要素）を含む。第１ブリッジコンポーネントは、アプリケーションを実行中のプロセッサと通信するためのアップストリームインターフェースと、アクセラレーションモジュール及びストレージデバイスと通信するためのダウンストリームインターフェースと、を備え、第１ブリッジ構成要素（コンポーネント）は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用してプロセッサ、アクセラレーションモジュール、及びストレージデバイスと通信し、ダウンストリームインターフェースは、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かに応じてプロセッサからアクセラレーションモジュール又はストレージデバイスにＰＣＩｅトランザクションを配信する。
【０３２９】
ステートメント１７２。本発明の実施例は、ステートメント１７１による第１ブリッジコンポーネント（構成要素）を含む。アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現され、ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０３３０】
ステートメント１７３。本発明の実施例は、ステートメント１７１による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）は、第２ブリッジコンポーネント（構成要素）を更に含み、第２ブリッジ構成要素（コンポーネント）は、プロセッサ及びアクセラレーションモジュールと通信するための第２アップストリームインターフェースと、ストレージデバイスと通信するための第２ダウンストリームインターフェースと、を含み、第２ブリッジ構成要素（コンポーネント）は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用してプロセッサ、アクセラレーションモジュール、及びストレージデバイスと通信し、第２アップストリームインターフェースは、第２  ＰＣＩｅトランザクションが第２アクセラレーションコマンドを含むか否かに応じてストレージデバイスからプロセッサ又はアクセラレーションモジュールに第２  ＰＣＩｅトランザクションを配信する。
【０３３１】
ステートメント１７４。本発明の実施例は、ステートメント１７１による第１ブリッジコンポーネントを含む。アップストリームインターフェースは、アップストリームポートと、アップストリームポートに関連付けられたアップストリームフィルタと、を含み、アップストリームフィルタは、プロセッサから受信されたアップストリームＦＡＲに関連付けられた第２アクセラレーションコマンドを識別し、ダウンストリームインターフェースは、第２アクセラレーションコマンドをアクセラレーションモジュールに伝達し、アップストリームポートでプロセッサから受信されたアップストリームＦＡＲに関連付けられていない第３  ＰＣＩｅトランザクションをストレージデバイスに伝送する。
【０３３２】
ステートメント１７５。本発明の実施例は、ステートメント１７４による第１ブリッジコンポーネントを含む。第１ブリッジコンポーネントのアップストリームフィルタ内でアップストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０３３３】
ステートメント１７６。本発明の実施例は、ステートメント１７５による第１ブリッジコンポーネントを含む。第１ブリッジコンポーネントのアップストリームフィルタ内でアップストリームＦＡＲは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０３３４】
ステートメント１７７。本発明の実施例は、ステートメント１７６による第１ブリッジコンポーネントを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３３５】
ステートメント１７８。本発明の実施例は、ステートメント１７５による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタ内でＰＣＩｅ  ＶＤＭは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０３３６】
ステートメント１７９。本発明の実施例は、ステートメント１７４による第１ブリッジコンポーネントを含む。ＦＰＧＡは、ストレージデバイスに割り当てられた非揮発性メモリエクスプレス（ＮＶＭｅ）レジスタを介してプロセッサに間接的に露出される。
【０３３７】
ステートメント１８０。本発明の実施例は、ステートメント１７１による第１ブリッジコンポーネントを含む。アップストリームインターフェースは、ストレージデバイスの仮想関数（ＶＦ）により露出され、アップストリームインターフェースは、アップストリームポートと、アップストリームポートに関連付けられたアップストリームフィルタと、を含み、アップストリームフィルタは、アクセラレーションモジュールに対する第２アクセラレーションコマンドを識別し、ダウンストリームインターフェースは、第２アクセラレーションコマンドをアクセラレーションモジュールに伝達し、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされていない第３  ＰＣＩｅトランザクションをストレージデバイスに伝送する。
【０３３８】
ステートメント１８１。本発明の実施例は、ステートメント１８０による第１ブリッジコンポーネントを含む。第２アクセラレーションコマンドは、アップストリームＦＡＲに関連付けられ、アップストリームフィルタは、アップストリームＦＡＲに関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０３３９】
ステートメント１８２。本発明の実施例は、ステートメント１８１による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタ内でアップストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０３４０】
ステートメント１８３。本発明の実施例は、ステートメント１８２による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタ内でアップストリームＦＡＲは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０３４１】
ステートメント１８４。本発明の実施例は、ステートメント１８３による第１ブリッジコンポーネントを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３４２】
ステートメント１８５。本発明の実施例は、ステートメント１８２による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタ内でアップストリームＦＡＲは、ＰＣＩｅ  ＶＤＭを使用してストレージデバイスによってプログラミングされる。
【０３４３】
ステートメント１８６。本発明の実施例は、ステートメント１８０による第１ブリッジコンポーネントを含む。第２アクセラレーションコマンドは、ＶＦの識別子を含み、アップストリームフィルタは、ＶＦの識別子に関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０３４４】
ステートメント１８７。本発明の実施例は、ステートメント１８６による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタは、ストレージデバイスによりＶＦの識別子でプログラミングされる。
【０３４５】
ステートメント１８８。本発明の実施例は、ステートメント１８７による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによりＶＦの識別子でプログラミングされる。
【０３４６】
ステートメント１８９。本発明の実施例は、ステートメント１８８による第１ブリッジコンポーネントを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３４７】
ステートメント１９０。本発明の実施例は、ステートメント１８７による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタは、ＰＣＩｅ  ＶＤＭを使用してストレージデバイスによりＶＦの識別子でプログラミングされる。
【０３４８】
ステートメント１９１。本発明の実施例は、ステートメント１７１による第１ブリッジコンポーネントを含む。アップストリームインターフェースは、ストレージデバイスの物理関数（ＰＦ）により露出され、アップストリームインターフェースは、アップストリームポートと、アップストリームポートに関連付けられたアップストリームフィルタと、を含み、アップストリームフィルタは、アクセラレーションモジュールに対する第２アクセラレーションコマンドを識別し、ダウンストリームインターフェースは、第２アクセラレーションコマンドをアクセラレーションモジュールに伝送し、アップストリームポートでプロセッサから受信されたアップストリームフィルタによってインターセプトされていない第３  ＰＣＩｅトランザクションをストレージデバイスに伝送する。
【０３４９】
ステートメント１９２。本発明の実施例は、ステートメント１９１による第１ブリッジコンポーネントを含む。第２アクセラレーションコマンドは、アップストリームＦＡＲに関連付けられ、アップストリームフィルタは、アップストリームＦＡＲに関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０３５０】
ステートメント１９３。本発明の実施例は、ステートメント１９２による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタは、ストレージデバイスによってプログラミングされる。
【０３５１】
ステートメント１９４。本発明の実施例は、ステートメント１９３による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０３５２】
ステートメント１９５。本発明の実施例は、ステートメント１９４による第１ブリッジコンポーネントを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３５３】
ステートメント１９６。本発明の実施例は、ステートメント１９３による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタは、ＰＣＩｅ  ＶＤＭを用いてストレージデバイスによってプログラミングされる。
【０３５４】
ステートメント１９７。本発明の実施例は、ステートメント１９１による第１ブリッジコンポーネントを含む。第２アクセラレーションコマンドは、ＰＦの識別子を含み、アップストリームフィルタは、ＰＦの識別子に関連付けられた第２アクセラレーションコマンドをインターセプトする。
【０３５５】
ステートメント１９８。本発明の実施例は、ステートメント１９７による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタは、ストレージデバイスによりＰＦの識別子でプログラミングされる。
【０３５６】
ステートメント１９９。本発明の実施例は、ステートメント１９８による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタは、サイドバンドバスを使用してストレージデバイスによりＰＦの識別子でプログラミングされる。
【０３５７】
ステートメント２００。本発明の実施例は、ステートメント１９９による第１ブリッジコンポーネントを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３５８】
ステートメント２０１。本発明の実施例は、ステートメント１９８による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）のアップストリームフィルタは、ＰＣＩｅ  ＶＤＭを使用してストレージデバイスによりＰＦの識別子でプログラミングされる。
【０３５９】
ステートメント２０２。本発明の実施例は、ステートメント１７１による第１ブリッジコンポーネントを含む。アップストリームインターフェースは、エンドポイント、第１  ＰＦ、及び第２  ＰＦを含み、ダウンストリームインターフェースは、プロセッサから受信されたＰＣＩｅトランザクションをストレージデバイスに伝送して、プロセッサから受信された第２アクセラレーションコマンドをアクセラレーションモジュールに伝送し、ＰＣＩｅトランザクションは、第１  ＰＦの第１識別子に関連付けられ、第２アクセラレーションコマンドは、第２  ＰＦの第２識別子に関連付けられる。
【０３６０】
ステートメント２０３。本発明の実施例は、ステートメント２０２による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）は、ストレージデバイスのエンドポイントの性能をエンドポイントにコピーする構成モニターを更に含む。
【０３６１】
ステートメント２０４。本発明の実施例は、ステートメント１７１による第１ブリッジコンポーネントを含む。アップストリームインターフェースは、第１エンドポイントと、第２エンドポイントと、を含み、ダウンストリームインターフェースは、プロセッサから受信された第１エンドポイントに関連付けられたＰＣＩｅトランザクションをストレージデバイスに伝達して、プロセッサから受信された第２アクセラレーションコマンドをアクセラレーションモジュールに伝達し、第２アクセラレーションコマンドは、第２エンドポイントに関連付けられる。
【０３６２】
ステートメント２０５。本発明の実施例は、ステートメント２０４による第１ブリッジコンポーネントを含む。第１ブリッジ構成要素（コンポーネント）は、ストレージデバイスのエンドポイントの性能を第１エンドポイントにコピーする構成モニターを更に含む。
【０３６３】
ステートメント２０６。本発明の実施例は、ハードウェアを用いて具現される第２ブリッジコンポーネント（構成要素）を含む。第２ブリッジコンポーネントは、アクセラレーションモジュールと通信するためのアップストリームインターフェースと、ストレージデバイスと通信するためのダウンストリームインターフェースと、を備え、第２ブリッジ構成要素（コンポーネント）は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用してプロセッサ、アクセラレーションモジュール、及びストレージデバイスと通信し、アップストリームインターフェースは、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かに応じてストレージデバイスからプロセッサ又はアクセラレーションモジュールにＰＣＩｅトランザクションを配信する。
【０３６４】
ステートメント２０７。本発明の実施例は、ステートメント２０６による第２ブリッジコンポーネントを含む。アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現され、ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０３６５】
ステートメント２０８。本発明の実施例は、ステートメント２０６による第２ブリッジコンポーネントを含む。ダウンストリームインターフェースは、ダウンストリームポートと、ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲（ＦＡＲ）に関連付けられたアクセラレーションコマンドを識別するダウンストリームフィルタと、を含み、ダウンストリームインターフェースは、アクセラレーションコマンドをアクセラレーションモジュールに伝送して、ダウンストリームポートでストレージデバイスから受信されたダウンストリームＦＡＲに関連付けられていない第２  ＰＣＩｅトランザクションをプロセッサに伝達する。
【０３６６】
ステートメント２０９。本発明の実施例は、ステートメント２０８による第２ブリッジコンポーネントを含む。第２ブリッジ構成要素（コンポーネント）のダウンストリームフィルタ内のダウンストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０３６７】
ステートメント２１０。本発明の実施例は、ステートメント２０９による第２ブリッジコンポーネントを含む。第２ブリッジ構成要素（コンポーネント）のダウンストリームフィルタ内のダウンストリームＦＡＲは、サイドバンドバスを介してストレージデバイスによってプログラミングされる。
【０３６８】
ステートメント２１１。本発明の実施例は、ステートメント２１０による第２ブリッジコンポーネントを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３６９】
ステートメント２１２。本発明の実施例は、ステートメント２０９による第２ブリッジコンポーネントを含む。第２ブリッジ構成要素（コンポーネント）のダウンストリームフィルタ内のダウンストリームＦＡＲは、ＰＣＩｅ  ＶＤＭを使用してストレージデバイスによってプログラミングされる。
【０３７０】
ステートメント２１３。本発明の実施例は、ステートメント２０６による第２ブリッジコンポーネントを含む。ダウンストリームインターフェースは、ルートポートと、ルートポートに関連付けられたダウンストリームフィルタと、を含み、ダウンストリームフィルタは、ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲（ＦＡＲ）に関連付けられたアクセラレーションコマンドを識別し、ダウンストリームインターフェースは、アクセラレーションコマンドをアクセラレーションモジュールに伝達して、ダウンストリームポートでストレージデバイスから受信されたダウンストリームＦＡＲに関連付けられていない第２  ＰＣＩｅトランザクションをプロセッサに伝達する。
【０３７１】
ステートメント２１４。本発明の実施例は、ステートメント２１３による第２ブリッジコンポーネントを含む。第２ブリッジ構成要素（コンポーネント）のダウンストリームフィルタ内のダウンストリームＦＡＲは、ストレージデバイスによってプログラミングされる。
【０３７２】
ステートメント２１５。本発明の実施例は、ステートメント２１４による第２ブリッジコンポーネントを含む。第２ブリッジ構成要素（コンポーネント）のダウンストリームフィルタ内のダウンストリームＦＡＲは、サイドバンドバスを使用してストレージデバイスによってプログラミングされる。
【０３７３】
ステートメント２１６。本発明の実施例は、ステートメント２１５による第２ブリッジコンポーネントを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３７４】
ステートメント２１７。本発明の実施例は、ステートメント２１４による第２ブリッジコンポーネントを含む。第２ブリッジ構成要素（コンポーネント）のダウンストリームフィルタ内のダウンストリームＦＡＲは、ＰＣＩｅ  ＶＤＭを使用してストレージデバイスによってプログラミングされる。
【０３７５】
ステートメント２１８。本発明の実施例は、ステートメント２０６による第２ブリッジコンポーネントを含む。ダウンストリームインターフェースは、第１ルートポートと、第２ルートポートと、を含み、ダウンストリームインターフェースは、第１ルートポートでストレージデバイスから受信された第２  ＰＣＩｅトランザクションをプロセッサに伝達し、第２ルートポートでストレージデバイスから受信されたアクセラレーションコマンドをアクセラレーションモジュールに伝送する。
【０３７６】
ステートメント２１９。本発明の実施例は、ストレージデバイスを含む。ストレージデバイスは、アクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を含むアクセラレーションモジュールと通信するためのストレージデバイスのエンドポイントと、ストレージデバイスの動作を管理するコントローラと、アプリケーションに対するアプリケーションデータを格納するストレージと、アクセラレーションコマンドを実行する際にＡＰＭ−Ｆを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）と、を備え、ストレージデバイス及びアクセラレーションモジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して通信し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、アプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
【０３７７】
ステートメント２２０。本発明の実施例は、ステートメント２１９によるストレージデバイスを含む。ストレージデバイスは、ＳＳＤを含む。
【０３７８】
ステートメント２２１。本発明の実施例は、ステートメント２２０によるストレージデバイスを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、アクセラレーションコマンドと共に使用されるアプリケーションデータに関するＳＳＤのエンドポイントを使用して通信する。
【０３７９】
ステートメント２２２。本発明の実施例は、ステートメント２２０によるストレージデバイスを含む。ＡＰＭ−ＦとＡＰＭ−Ｓとは、メッセージを使用して通信する。
【０３８０】
ステートメント２２３。本発明の実施例は、ステートメント２２０によるストレージデバイスを含む。ストレージデバイスは、プロセッサから受信された非揮発性メモリエクスプレス（ＮＶＭｅ）プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット（ＴＬＰ）を含むＰＣＩｅトランザクションをＳＳＤに伝送する。
【０３８１】
ステートメント２２４。本発明の実施例は、ステートメント２２０によるストレージデバイスを含む。ＳＳＤは、アクセラレーションモジュールを含む。
【０３８２】
ステートメント２２５。本発明の実施例は、ステートメント２２０によるストレージデバイスを含む。ＳＳＤは、ダウンストリームＦＡＲに関連付けられたアクセラレーションコマンドをアクセラレーションモジュールに伝送し、第１  ＰＣＩｅトランザクションは、ＡＰＭ−Ｆのために具現され、ＳＳＤは、ダウンストリームＦＡＲに関連付けられていない第１  ＰＣＩｅトランザクションをアクセラレーションモジュールに伝送し、第１  ＰＣＩｅトランザクションは、プロセッサのために具現される。
【０３８３】
ステートメント２２６。本発明の実施例は、ステートメント２２５によるストレージデバイスを含む。アクセラレーションモジュールは、ＡＰＭ−Ｓによって生成される。
【０３８４】
ステートメント２２７。本発明の実施例は、ステートメント２２６によるストレージデバイスを含む。ＳＳＤは、アクセラレーションコマンドを含む特定のコマンドをインターセプトしてアクセラレーションコマンドを生成するＡＰＭ−Ｓをトリガーする特定のコマンドをＡＰＭ−Ｓに伝達するホストインターフェースロジック（ＨＩＬ）を更に含む。
【０３８５】
ステートメント２２８。本発明の実施例は、ステートメント２２７によるストレージデバイスを含む。特定のコマンドは、プロセッサ上で実行中のアクセラレーションサービスマネージャー（ＡＳＭ）から生じる。
【０３８６】
ステートメント２２９。本発明の実施例は、ステートメント２２５によるストレージデバイスを含む。ＳＳＤは、プロセッサからホストシステムのブロックを要請し、コントローラは、ダウンストリームＦＡＲとしてホストシステムのブロックのサブセットを選択する。
【０３８７】
ステートメント２３０。本発明の実施例は、ステートメント２２９によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０３８８】
ステートメント２３１。本発明の実施例は、ステートメント２３０によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためのサイドバンドバスを使用する。
【０３８９】
ステートメント２３２。本発明の実施例は、ステートメント２３１によるストレージデバイスを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３９０】
ステートメント２３３。本発明の実施例は、ステートメント２３０によるストレージデバイスを含む。コントローラは、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用してダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０３９１】
ステートメント２３４。本発明の実施例は、ステートメント２２９によるストレージデバイスを含む。コントローラは、アップストリームＦＡＲとしてホストシステムアドレスのブロックの第２サブセットを選択する。
【０３９２】
ステートメント２３５。本発明の実施例は、ステートメント２３４によるストレージデバイスを含む。コントローラは、プロセッサ上で実行中のＡＳＭによってアクセス可能な特定のレジスタ内でアップストリームＦＡＲに対する情報を格納する。
【０３９３】
ステートメント２３６。本発明の実施例は、ステートメント２３５によるストレージデバイスを含む。特定のレジスタは、ホストシステムアドレスのブロック内にある。
【０３９４】
ステートメント２３７。本発明の実施例は、ステートメント２２９よるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０３９５】
ステートメント２３８。本発明の実施例は、ステートメント２３７によるストレージデバイスを含む。コントローラは、サイドバンドバスを使用してアクセラレーションモジュールのアップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０３９６】
ステートメント２３９。本発明の実施例は、ステートメント２３８によるストレージデバイスを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０３９７】
ステートメント２４０。本発明の実施例は、ステートメント２３７によるストレージデバイスを含む。コントローラは、ＰＣＩｅ  ＶＤＭを使用してアクセラレーションモジュールのアップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０３９８】
ステートメント２４１。本発明の実施例は、ステートメント２２５によるストレージデバイスを含む。ＳＳＤは、ＳＳＤのエンドポイントを介してＡＰＭ−Ｆから結果を受信して、結果をＳＳＤのエンドポイントを介してプロセッサに伝送する。
【０３９９】
ステートメント２４２。本発明の実施例は、ステートメント２２５によるストレージデバイスを含む。ＳＳＤは、物理関数（ＰＦ）及び仮想関数（ＶＦ）を含み、ＰＦは、ＳＳＤを露出させ、ＶＦは、アクセラレーションモジュールを露出させる。
【０４００】
ステートメント２４３。本発明の実施例は、ステートメント２４２によるストレージデバイスを含む。ＰＦは、プロセッサからホストシステムアドレスの第１ブロックを要請し、コントローラは、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックの第１サブセットを選択する。
【０４０１】
ステートメント２４４。本発明の実施例は、ステートメント２４３によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０４０２】
ステートメント２４５。本発明の実施例は、ステートメント２４４によるストレージデバイスを含む。コントローラは、サイドバンドバスを使用してアクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０４０３】
ステートメント２４６。本発明の実施例は、ステートメント２４５によるストレージデバイスを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４０４】
ステートメント２４７。本発明の実施例は、ステートメント２４４によるストレージデバイスを含む。コントローラは、ＰＣＩｅ  ＶＤＭを用いてアクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０４０５】
ステートメント２４８。本発明の実施例は、ステートメント２４２によるストレージデバイスを含む。ＶＦは、アップストリームＦＡＲとしてプロセッサからホストシステムアドレスの第２ブロックを要請する。
【０４０６】
ステートメント２４９。本発明の実施例は、ステートメント２４８によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０４０７】
ステートメント２５０。本発明の実施例は、ステートメント２４９によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームＦＡＲでプログラミングするためのサイドバンドバスを使用する。
【０４０８】
ステートメント２５１。本発明の実施例は、ステートメント２５０によるストレージデバイスを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４０９】
ステートメント２５２。本発明の実施例は、ステートメント２４９によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームＦＡＲでプログラミングするためのＰＣＩｅ  ＶＤＭを使用する。
【０４１０】
ステートメント２５３。本発明の実施例は、ステートメント２４２によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをＶＦの識別子でプログラミングする。
【０４１１】
ステートメント２５４。本発明の実施例は、ステートメント２５３によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをＶＦの識別子でプログラミングするためのサイドバンドバスを使用する。
【０４１２】
ステートメント２５５。本発明の実施例は、ステートメント２５４によるストレージデバイスを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４１３】
ステートメント２５６。本発明の実施例は、ステートメント２５３によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをＶＦの識別子でプログラミングするためにＰＣＩｅ  ＶＤＭを使用する。
【０４１４】
ステートメント２５７。本発明の実施例は、ステートメント２４２によるストレージデバイスを含む。コントローラは、ＳＳＤのエンドポイントを介してＡＰＭ−Ｆから結果を受信して、結果をＳＳＤのエンドポイントを介してプロセッサに伝送する。
【０４１５】
ステートメント２５８。本発明の実施例は、ステートメント２２５によるストレージデバイスを含む。ＳＳＤは、ＳＳＤを露出させる第１  ＰＦ及びＦＰＧＡを露出させる第２  ＰＦを含む。
【０４１６】
ステートメント２５９。本発明の実施例は、ステートメント２５８によるストレージデバイスを含む。第１  ＰＦは、プロセッサからホストシステムアドレスの第１ブロックを要請し、コントローラは、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックの第１サブセットを選択する。
【０４１７】
ステートメント２６０。本発明の実施例は、ステートメント２５９によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０４１８】
ステートメント２６１。本発明の実施例は、ステートメント２６０によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０４１９】
ステートメント２６２。本発明の実施例は、ステートメント２６１によるストレージデバイスを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４２０】
ステートメント２６３。本発明の実施例は、ステートメント２６０によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにＰＣＩｅ  ＶＤＭを使用する。
【０４２１】
ステートメント２６４。本発明の実施例は、ステートメント２５８によるストレージデバイスを含む。第２  ＰＦがアップストリームＦＡＲとしてプロセッサからホストシステムアドレスの第２ブロックを要請する。
【０４２２】
ステートメント２６５。本発明の実施例は、ステートメント２６４によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームＦＡＲでプログラミングする。
【０４２３】
ステートメント２６６。本発明の実施例は、ステートメント２６５によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０４２４】
ステートメント２６７。本発明の実施例は、ステートメント２６６によるストレージデバイスを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４２５】
ステートメント２６８。本発明の実施例は、ステートメント２６５によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタをアップストリームＦＡＲでプログラミングするためにＰＣＩｅ  ＶＤＭを使用する。
【０４２６】
ステートメント２６９。本発明の実施例は、ステートメント２５８によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタを第２  ＰＦの識別子でプログラミングする。
【０４２７】
ステートメント２７０。本発明の実施例は、ステートメント２６９によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのアップストリームフィルタを第２  ＰＦの識別子でプログラミングするためにサイドバンドバスを使用する。
【０４２８】
ステートメント２７１。ステートメント２７０によると、本発明の実施例は、ストレージデバイスを含む。ステートメント２７０において、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４２９】
ステートメント２７２。ステートメント２６９によると、本発明の実施例は、ストレージデバイスを含む。ステートメント２６９において、コントローラは、アクセラレーションモジュールのアップストリームフィルタを第２  ＰＦの識別子でプログラミングするためにＰＣＩｅ  ＶＤＭを使用する。
【０４３０】
ステートメント２７３。本発明の実施例は、ステートメント２５８によるストレージデバイスを含む。コントローラは、ＳＳＤのエンドポイントを介してＡＰＭ−Ｆから結果を受信して、結果をＳＳＤのエンドポイントを介してプロセッサに伝送する。
【０４３１】
ステートメント２７４。本発明の実施例は、ステートメント２２５によるストレージデバイスを含む。ＳＳＤは、プロセッサからアクセラレーションモジュールのブロックを要請し、コントローラは、ダウンストリームＦＡＲとしてアクセラレーションモジュールのブロックのサブセットを選択する。
【０４３２】
ステートメント２７５。本発明の実施例は、ステートメント２７４によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングする。
【０４３３】
ステートメント２７６。本発明の実施例は、ステートメント２７５によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用する。
【０４３４】
ステートメント２７７。本発明の実施例は、ステートメント２７６によるストレージデバイスを含む。サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４３５】
ステートメント２７８。本発明の実施例は、ステートメント２７５によるストレージデバイスを含む。コントローラは、アクセラレーションモジュールのダウンストリームフィルタをダウンストリームＦＡＲでプログラミングするためにＰＣＩｅ  ＶＤＭを使用する。
【０４３６】
ステートメント２７９。本発明の実施例は、ステートメント２２０によるストレージデバイスを含む。ストレージデバイスは、アクセラレーションモジュールと通信するためのＳＳＤの第２エンドポイントを更に含み、ＳＳＤのエンドポイントは、プロセッサと通信するために使用され、ＳＳＤの第２エンドポイントは、ＡＰＭ−Ｆと通信するために使用される。
【０４３７】
ステートメント２８０。本発明の実施例は、方法を含む。方法は、アクセラレーションモジュールで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、アクセラレーションモジュールでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、アクセラレーションモジュールのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）でＰＣＩｅトランザクションを処理するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションを第２デバイスに配信するステップと、を有し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、アプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援し、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０４３８】
ステートメント２８１。本発明の実施例は、ステートメント２８０による方法を含む。アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現される。
【０４３９】
ステートメント２８２。本発明の実施例は、ステートメント２８１による方法を含む。アクセラレーションモジュールで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡのエンドポイントでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、アクセラレーションモジュールでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＦＰＧＡの第１  ＰＦの識別子を有するタグを含むか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、ＦＰＧＡのルートポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップを含む。
【０４４０】
ステートメント２８３。本発明の実施例は、ステートメント２８２による方法を含む。方法は、ＦＰＧＡのアップストリームポートでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、ＦＰＧＡのダウンストリームポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップと、を更に含む。
【０４４１】
ステートメント２８４。本発明の実施例は、ステートメント２８２による方法を含む。方法は、ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップと、ダウンストリームＦＡＲをＦＰＧＡのダウンストリームポートに連結するステップと、を更に含む。
【０４４２】
ステートメント２８５。本発明の実施例は、ステートメント２８４による方法を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してダウンストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４４３】
ステートメント２８６。本発明の実施例は、ステートメント２８４による方法を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０４４４】
ステートメント２８７。本発明の実施例は、ステートメント２８２による方法を含む。方法は、ＦＰＧＡのダウンストリームポートを使用して第２  ＰＣＩｅトランザクションの結果をストレージデバイスに伝送するステップを更に含む。
【０４４５】
ステートメント２８８。本発明の実施例は、ステートメント２８２による方法を含む。方法は、ＦＰＧＡのアップストリームポートを使用して第２  ＰＣＩｅトランザクションの結果をプロセッサに伝送するステップを更に含む。
【０４４６】
ステートメント２８９。本発明の実施例は、ステートメント２８２による方法を含む。方法は、ＦＰＧＡのアップストリームポートでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、第１  ＰＣＩｅトランザクションがＦＰＧＡのアップストリームポートに関連付けられたアップストリームフィルタアドレス範囲（ＦＡＲ）内の第２アドレスに関連付けられているか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＰＭ−Ｆで第１  ＰＣＩｅトランザクションを処理するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡのダウンストリームポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップと、を更に含む。
【０４４７】
ステートメント２９０。本発明の実施例は、ステートメント２８９による方法を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０４４８】
ステートメント２９１。本発明の実施例は、ステートメント２８９による方法を含む。方法は、ＦＰＧＡでストレージデバイスからアップストリームＦＡＲを受信するステップと、アップストリームＦＡＲをＦＰＧＡのアップストリームポートに連結するステップと、を更に含む。
【０４４９】
ステートメント２９２。本発明の実施例は、ステートメント２９１による方法を含む。ＦＰＧＡでストレージデバイスからアップストリームＦＡＲを受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してアップストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４５０】
ステートメント２９３。本発明の実施例は、ステートメント２９２による方法を含む。ＦＰＧＡでストレージデバイスからアップストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、アップストリームＦＡＲを含む。
【０４５１】
ステートメント２９４。本発明の実施例は、ステートメント２８９による方法を含む。方法は、ＦＰＧＡのアップストリームポートを使用して第１  ＰＣＩｅトランザクションの結果をストレージデバイスに伝送するステップを更に含む。
【０４５２】
ステートメント２９５。本発明の実施例は、ステートメント２８９による方法を含む。方法は、ＦＰＧＡのアップストリームポートを使用して第１  ＰＣＩｅトランザクションの結果をプロセッサに伝送するステップを更に含む。
【０４５３】
ステートメント２９６。本発明の実施例は、ステートメント２８２による方法を含む。方法は、ＦＰＧＡのアップストリームポートでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、第１  ＰＣＩｅトランザクションがストレージデバイスによって露出される仮想関数（ＶＦ）に関連付けられているか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであるか否かを判断するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＰＭ−Ｆで第１  ＰＣＩｅトランザクションを処理するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡのダウンストリームポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップと、を更に含む。
【０４５４】
ステートメント２９７。本発明の実施例は、ステートメント２９６による方法を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０４５５】
ステートメント２９８。本発明の実施例は、ステートメント２９６による方法を含む。第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであるか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＶＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０４５６】
ステートメント２９９。本発明の実施例は、ステートメント２９８による方法を含む。方法は、ＦＰＧＡでストレージデバイスからＶＦの識別子を受信するステップと、ＶＦの識別子をＦＰＧＡのアップストリームポートに連結するステップと、を更に含む。
【０４５７】
ステートメント３００。本発明の実施例は、ステートメント２９９による方法を含む。ＦＰＧＡでストレージデバイスからＶＦの識別子を受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してＶＦの識別子を受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４５８】
ステートメント３０１。本発明の実施例は、ステートメント２９９による方法を含む。ＦＰＧＡでストレージデバイスからＶＦの識別子を受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ＶＦの識別子を含む。
【０４５９】
ステートメント３０２。本発明の実施例は、ステートメント２９６による方法を含む。方法は、ＦＰＧＡのアップストリームポートを使用して第１  ＰＣＩｅトランザクションの結果をプロセッサに伝送するステップを更に含む。
【０４６０】
ステートメント３０３。本発明の実施例は、ステートメント２８２よる方法を含む。方法は、ＦＰＧＡのアップストリームポートでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、第１  ＰＣＩｅトランザクションがストレージデバイスによって露出される物理関数（ＰＦ）に関連付けられているか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであるか否かを判断するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＰＭ−Ｆで第１  ＰＣＩｅトランザクションを処理するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡのダウンストリームポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップと、を更に含む。
【０４６１】
ステートメント３０４。本発明の実施例は、ステートメント３０３による方法を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０４６２】
ステートメント３０５。本発明の実施例は、ステートメント３０３による方法を含む。第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＰＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０４６３】
ステートメント３０６。本発明の実施例は、ステートメント３０５による方法を含む。方法は、ＦＰＧＡでストレージデバイスからＰＦの識別子を受信するステップと、ＰＦの識別子をＦＰＧＡのアップストリームポートに連結するステップと、を更に含む。
【０４６４】
ステートメント３０７。本発明の実施例は、ステートメント３０６による方法を含む。ＦＰＧＡでストレージデバイスからＰＦの識別子を受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してＰＦの識別子を受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４６５】
ステートメント３０８。本発明の実施例は、ステートメント３０６による方法を含む。ＦＰＧＡでストレージデバイスからＰＦの識別子を受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ＰＦの識別子を含む。
【０４６６】
ステートメント３０９。本発明の実施例は、ステートメント３０３による方法を含む。方法は、ＦＰＧＡのアップストリームを使用して第１  ＰＣＩｅトランザクションの結果をストレージデバイスに伝送するステップを更に含む。
【０４６７】
ステートメント３１０。本発明の実施例は、ステートメント３０３による方法を含む。方法は、ＦＰＧＡのアップストリームを使用して第１  ＰＣＩｅトランザクションの結果をプロセッサに伝送するステップを更に含む。
【０４６８】
ステートメント３１１。本発明の実施例は、ステートメント２８１による方法を含む。ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡのエンドポイントでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、アクセラレーションモジュールでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＦＰＧＡの第１  ＰＦの第１識別子を有するタグを含むか、又はＦＰＧＡの第２  ＰＦの第２識別子を有するタグを含むか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、ＦＰＧＡのルートポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップを含む。
【０４６９】
ステートメント３１２。本発明の実施例は、ステートメント３１１による方法を含む。方法は、ＦＰＧＡのルートポートでストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、ＦＰＧＡで第２  ＰＣＩｅトランザクションがＦＰＧＡのルートポートに関連付けられたダウンストリームＦＡＲ内のアドレスに関連付けられているか否かを判断することにより、第２  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、第２  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＰＭ−Ｆで第１  ＰＣＩｅトランザクションを処理するステップと、第２  ＰＣＩｅトランザクションが第２アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡのエンドポイントを使用して第２  ＰＣＩｅトランザクションをプロセッサに配信するステップと、を更に含む。
【０４７０】
ステートメント３１３。本発明の実施例は、ステートメント３１２による方法を含む。方法は、ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップと、ダウンストリームＦＡＲをＦＰＧＡのルートポートに連結するステップと、を更に含む。
【０４７１】
ステートメント３１４。本発明の実施例は、ステートメント３１３による方法を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してダウンストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４７２】
ステートメント３１５。本発明の実施例は、ステートメント３１３による方法を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０４７３】
ステートメント３１６。本発明の実施例は、ステートメント３１１による方法を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０４７４】
ステートメント３１７。本発明の実施例は、ステートメント３１１による方法を含む。方法は、ＦＰＧＡのエンドポイントを使用してプロセッサに第１  ＰＣＩｅのトランザクションの結果を伝送するステップを更に含む。
【０４７５】
ステートメント３１８。本発明の実施例は、ステートメント３１１による方法を含む。方法は、ＦＰＧＡの構成モニターを使用してＦＰＧＡのルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、ＦＰＧＡのエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０４７６】
ステートメント３１９。本発明の実施例は、ステートメント２８１による方法を含む。ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡのエンドポイントでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、アクセラレーションモジュールでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＦＰＧＡの第１  ＰＦの第１識別子を有するタグを含むか、又はＦＰＧＡの第２  ＰＦの第２識別子を有するタグを含むか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、ＦＰＧＡのルートポートを使用して第１  ＰＣＩｅトランザクションを第２ストレージデバイスに配信するステップを含む。
【０４７７】
ステートメント３２０。本発明の実施例は、ステートメント３１９による方法を含む。方法は、ＦＰＧＡでストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第１ルートポートで受信されるか又はＦＰＧＡの第２ルートポートで受信されるか否かを判断するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第１のルートポートで受信されると判断することに少なくとも部分的に基づいて、エンドポイントを使用して第２  ＰＣＩｅトランザクションをプロセッサに配信するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第２のルートポートで受信されると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＭＰ−Ｆで第２  ＰＣＩｅトランザクションを処理するステップと、を更に含む。
【０４７８】
ステートメント３２１。本発明の実施例は、ステートメント３１９による方法を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０４７９】
ステートメント３２２。本発明の実施例は、ステートメント３１９による方法を含む。方法は、ＦＰＧＡのエンドポイントを使用してプロセッサに第１  ＰＣＩｅのトランザクションの結果を伝送するステップを更に含む。
【０４８０】
ステートメント３２３。本発明の実施例は、ステートメント３１９による方法を含む。方法は、ＦＰＧＡの構成モニターを使用してＦＰＧＡの第１のルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、ＦＰＧＡのエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０４８１】
ステートメント３２４。本発明の実施例は、ステートメント２８１による方法を含む。ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、ＦＰＧＡで第１  ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含むＦＰＧＡの第１エンドポイントでプロセッサから受信されるか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、第１ルートポート及び第２ルートポートを含むＦＰＧＡの第１ルートポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップを含む。
【０４８２】
ステートメント３２５。本発明の実施例は、ステートメント３２４による方法を含む。方法は、ＦＰＧＡでストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第１ルートポートで受信されるか又はＦＰＧＡの第２ルートポートで受信されるか否かを判断することにより、第２  ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第１のルートポートで受信されると判断することに少なくとも部分的に基づいて、第１エンドポイントを使用して第２  ＰＣＩｅトランザクションをプロセッサに配信するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第２ルートポートで受信されると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＭＰ−Ｆで第２  ＰＣＩｅトランザクションを処理するステップと、を更に含む。
【０４８３】
ステートメント３２６。本発明の実施例は、ステートメント３２４による方法を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０４８４】
ステートメント３２７。本発明の実施例は、ステートメント３２４による方法を含む。方法は、ＦＰＧＡの第２エンドポイントを使用してプロセッサに第１  ＰＣＩｅのトランザクションの結果を伝送するステップを更に含む。
【０４８５】
ステートメント３２８。本発明の実施例は、ステートメント３２４による方法を含む。方法は、ＦＰＧＡの構成モニターを使用してＦＰＧＡの第１ルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、ＦＰＧＡの第１エンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０４８６】
ステートメント３２９。本発明の実施例は、ステートメント２８１による方法を含む。ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、アクセラレーションモジュールで第１  ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含むＦＰＧＡの第１エンドポイントでプロセッサから受信されるか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、ＦＰＧＡのルートポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップを含む。
【０４８７】
ステートメント３３０。本発明の実施例は、ステートメント３２９による方法を含む。方法は、ＦＰＧＡのルートポートでストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、ＦＰＧＡで第２  ＰＣＩｅトランザクションがＦＰＧＡのルートポートに関連付けられたダウンストリームＦＡＲ内のアドレスに関連付けられているか否かを判断することにより、第２  ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップと、第２  ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、第２  ＰＣＩｅトランザクションをＦＰＧＡのＡＰＭ−Ｆで処理するステップと、第２  ＰＣＩｅトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡの第１エンドポイントを使用して第２  ＰＣＩｅトランザクションをプロセッサに配信するステップと、を更に含む。
【０４８８】
ステートメント３３１。本発明の実施例は、ステートメント３３０による方法を含む。方法は、ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップと、ダウンストリームＦＡＲをＦＰＧＡのルートポートに連結するステップと、を更に含む。
【０４８９】
ステートメント３３２。本発明の実施例は、ステートメント３３１による方法を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してダウンストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４９０】
ステートメント３３３。本発明の実施例は、ステートメント３３１による方法を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０４９１】
ステートメント３３４。本発明の実施例は、ステートメント３２９による方法を含む。第１  ＰＣＩｅトランザクションは、プロセッサ上で実行中のＡＳＭから生じる。
【０４９２】
ステートメント３３５。本発明の実施例は、ステートメント３２９による方法を含む。方法は、ＦＰＧＡの第２エンドポイントを使用してプロセッサに第１  ＰＣＩｅのトランザクションの結果を伝送するステップを更に含む。
【０４９３】
ステートメント３３６。本発明の実施例は、ステートメント３２９による方法を含む。方法は、ＦＰＧＡの構成モニターを使用してＦＰＧＡのルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、ＦＰＧＡの第１エンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０４９４】
ステートメント３３７。本発明の実施例は、方法を含む。方法は、第１ブリッジ（構成要素）コンポーネントでプロセッサからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、第１ブリッジ（構成要素）コンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションをアクセラレーションモジュールに伝達するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションをストレージデバイスに伝達するステップと、を有し、プロセッサ、第１ブリッジコンポーネント、アクセラレーションモジュール、及びストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０４９５】
ステートメント３３８。本発明の実施例は、ステートメント３３７による方法を含む。アクセラレーションモジュールは、ＦＰＧＡを用いて具現され、ストレージデバイスは、ＳＳＤを含む。
【０４９６】
ステートメント３３９。本発明の実施例は、ステートメント３３７による方法を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、ＰＣＩｅトランザクションが第１ブリッジコンポーネントのアップストリームポートに関連付けられたアップストリームＦＡＲ内のアドレスに関連付けられているか否かを判断するステップを更に含む。
【０４９７】
ステートメント３４０。本発明の実施例は、ステートメント３３９による方法を含む。方法は、第１ブリッジコンポーネントでストレージデバイスからアップストリームＦＡＲを受信するステップと、アップストリームＦＡＲを第１ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
【０４９８】
ステートメント３４１。本発明の実施例は、ステートメント３４０による方法を含む。第１ブリッジコンポーネントでストレージデバイスからアップストリームＦＡＲを受信するステップは、第１ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してアップストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０４９９】
ステートメント３４２。本発明の実施例は、ステートメント３４０による方法を含む。第１ブリッジコンポーネントでストレージデバイスからアップストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、アップストリームＦＡＲを含む。
【０５００】
ステートメント３４３。本発明の実施例は、ステートメント３３７による方法を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、ＰＣＩｅトランザクションがストレージデバイスによって露出される仮想関数（ＶＦ）に関連付けられているか否かを判断するステップを含む。
【０５０１】
ステートメント３４４。本発明の実施例は、ステートメント３４３による方法を含む。ＰＣＩｅトランザクションがストレージデバイスによって露出される仮想関数（ＶＦ）に関連付けられているか否かを判断するステップは、ＰＣＩｅトランザクションがＶＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０５０２】
ステートメント３４５。本発明の実施例は、ステートメント３４４による方法を含む。方法は、第１ブリッジコンポーネントでストレージデバイスからＶＦの識別子を受信するステップと、ＶＦの識別子を第１ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
【０５０３】
ステートメント３４６。本発明の実施例は、ステートメント３４５による方法を含む。第１ブリッジコンポーネントでストレージデバイスからＶＦの識別子を受信するステップは、第１ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してＶＦの識別子を受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５０４】
ステートメント３４７。本発明の実施例は、ステートメント３４５による方法を含む。第１ブリッジコンポーネントでストレージデバイスからＶＦの識別子を受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ＶＦの識別子を含む。
【０５０５】
ステートメント３４８。本発明の実施例は、ステートメント３３７による方法を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、ＰＣＩｅトランザクションがストレージデバイスによって露出される物理関数（ＰＦ）に関連付けられているか否かを判断するステップを含む。
【０５０６】
ステートメント３４９。本発明の実施例は、ステートメント３４８による方法を含む。ＰＣＩｅトランザクションがストレージデバイスによって露出される物理関数（ＰＦ）に関連付けられているか否かを判断するステップは、ＰＣＩｅトランザクションがＰＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０５０７】
ステートメント３５０。本発明の実施例は、ステートメント３４９による方法を含む。方法は、第１ブリッジコンポーネントでストレージデバイスからＰＦの識別子を受信するステップと、ＰＦの識別子を第１ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
【０５０８】
ステートメント３５１。本発明の実施例は、ステートメント３５０による方法を含む。第１ブリッジコンポーネントでストレージデバイスからＰＦの識別子を受信するステップは、第１ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してＰＦの識別子を受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びイＳＭバスを含むセットから成る。
【０５０９】
ステートメント３５２。本発明の実施例は、ステートメント３５０による方法を含む。第１ブリッジコンポーネントでストレージデバイスからＰＦの識別子を受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ＰＦの識別子を含む。
【０５１０】
ステートメント３５３。本発明の実施例は、ステートメント３３７による方法を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、ＰＣＩｅトランザクションが第１ブリッジコンポーネントの第１  ＰＦの識別子を有するタグを含むか、又は第１ブリッジコンポーネントの第２  ＰＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０５１１】
ステートメント３５４。本発明の実施例は、ステートメント３５３による方法を含む。方法は、第１ブリッジ構成要素の構成モニターを使用してストレージデバイスのエンドポイントの構成を判断するステップと、第１構成要素のエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０５１２】
ステートメント３５５。本発明の実施例は、ステートメント３３７による方法を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む第１コンポーネントの第１エンドポイントでプロセッサから受信されるか否かを判断するステップを含む。
【０５１３】
ステートメント３５６。本発明の実施例は、ステートメント３５５による方法を含む。方法は、第１ブリッジ構成要素の構成モニターを使用してストレージデバイスのエンドポイントの構成を判断するステップと、第１構成要素のエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０５１４】
ステートメント３５７。本発明の実施例は、方法を含む。方法は、第２ブリッジ（構成要素）コンポーネントでストレージからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、第２ブリッジ（構成要素）コンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションをアクセラレーションモジュールに伝達するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションをプロセッサに伝達するステップと、を有し、プロセッサ、アクセラレーションモジュール、第２ブリッジコンポーネント、及びストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０５１５】
ステートメント３５８。本発明の実施例は、ステートメント３５７による方法を含む。アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現され、ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０５１６】
ステートメント３５９。本発明の実施例は、ステートメント３５７による方法を含む。第２ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第２ブリッジコンポーネントで第２  ＰＣＩｅトランザクションが第２ブリッジコンポーネントのダウンストリームポートに関連付けられたダウンストリームＦＡＲ内のアドレスに関連付けられているか否かを判断するステップを更に含む。
【０５１７】
ステートメント３６０。本発明の実施例は、ステートメント３５９による方法を含む。方法は、第２ブリッジコンポーネントでストレージデバイスからダウンストリームＦＡＲを受信するステップと、ダウンストリームＦＡＲを第２ブリッジコンポーネントのダウンストリームポートに連結するステップと、を更に含む。
【０５１８】
ステートメント３６１。本発明の実施例は、ステートメント３６０による方法を含む。第２ブリッジコンポーネントでストレージデバイスからダウンストリームＦＡＲを受信するステップは、第２ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してダウンストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５１９】
ステートメント３６２。本発明の実施例は、ステートメント３６０による方法を含む。第２ブリッジコンポーネントでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０５２０】
ステートメント３６３。本発明の実施例は、ステートメント３５７による方法を含む。第２ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、ＰＣＩｅトランザクションが第１ルートポート及び第２ルートポートを含む第２ブリッジコンポーネントの第２ルートポートで受信されるか否かを判断するステップを含む。
【０５２１】
ステートメント３６４。本発明の実施例は、方法を含む。方法は、ストレージデバイスでアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップと、第１  ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、第１  ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ストレージデバイスのＡＰＭ−Ｓを使用して第２  ＰＣＩｅトランザクションを生成するステップと、第２  ＰＣＩｅトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップと、を有し、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、ＰＣＩｅバスを使用して通信し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、プロセッサ上で実行中のアプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
【０５２２】
ステートメント３６５。本発明の実施例は、ステートメント３６４による方法を含む。ストレージデバイスは、ＳＳＤである。
【０５２３】
ステートメント３６６。本発明の実施例は、ステートメント３６５による方法を含む。ストレージデバイスのアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップは、ＳＳＤのエンドポイントでアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップを含み、第１  ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第１  ＰＣＩｅトランザクションがプロセッサからの特定のコマンドを含むか、又は第１  ＰＣＩｅトランザクションがアクセラレーションモジュールのＡＰＭ−Ｆから生じるか否かを判断するステップを含み、ストレージデバイスのＡＰＭ−Ｓを使用して第２のＰＣＩｅトランザクションを生成するステップは、第１  ＰＣＩｅトランザクションに応答してＳＳＤのＡＰＭ−Ｓにより第２のＰＣＩｅトランザクションを生成するステップを含み、第２  ＰＣＩｅトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップは、第２  ＰＣＩｅトランザクションをストレージデバイスのエンドポイントからアクセラレーションモジュールに伝送するステップを含む。
【０５２４】
ステートメント３６７。本発明の実施例は、ステートメント３６６による方法を含む。第１  ＰＣＩｅトランザクションは、プロセッサから生じて、特定のコマンドを含む。
【０５２５】
ステートメント３６８。本発明の実施例は、ステートメント３６６による方法を含む。第１  ＰＣＩｅトランザクションがプロセッサから特定のコマンドを含むか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＳＳＤのＨＩＬによりプロセッサから特定のコマンドを含むか否かを判断するステップを更に含む。
【０５２６】
ステートメント３６９。本発明の実施例は、ステートメント３６８による方法を含む。特定のコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０５２７】
ステートメント３７０。本発明の実施例は、ステートメント３６６による方法を含む。方法は、プロセッサからホストシステムアドレスのブロックを要請するステップと、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックのサブセットを選択するステップと、アクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップと、を更に含む。
【０５２８】
ステートメント３７１。本発明の実施例は、ステートメント３７０による方法を含む。アクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５２９】
ステートメント３７２。本発明の実施例は、ステートメント３７０による方法を含む。アクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用してアクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０５３０】
ステートメント３７３。本発明の実施例は、ステートメント３７０による方法を含む。方法は、アップストリームＦＡＲとしてホストシステムアドレスのブロックの第２サブセットを選択するステップと、アクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップと、を更に含む。
【０５３１】
ステートメント３７４。本発明の実施例は、ステートメント３７３による方法を含む。アクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５３２】
ステートメント３７５。本発明の実施例は、ステートメント３７３による方法を含む。アクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用してアクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップを含み、ＰＣＩｅ  ＶＤＭは、アップストリームＦＡＲを含む。
【０５３３】
ステートメント３７６。本発明の実施例は、ステートメント３６６による方法を含む。方法は、プロセッサからホストシステムアドレスのブロックを要請するステップと、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックのサブセットを選択するステップと、アクセラレーションモジュールのルートポートをアクセラレーションモジュールでプログラミングするステップと、を更に含む。
【０５３４】
ステートメント３７７。本発明の実施例は、ステートメント３７６による方法を含む。アクセラレーションモジュールのルートポートをダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのルートポートをダウンストリームＦＡＲでプログラミングするステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５３５】
ステートメント３７８。本発明の実施例は、ステートメント３７６による方法を含む。アクセラレーションモジュールのルートポートをダウンストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用してアクセラレーションモジュールのルートポートをダウンストリームＦＡＲでプログラミングするステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０５３６】
ステートメント３７９。本発明の実施例は、ステートメント３６６による方法を含む。方法は、ＳＳＤのエンドポイントでアクセラレーションモジュールから第１  ＰＣＩｅトランザクションの結果を受信するステップと、ＳＳＤのエンドポイントを使用して第１  ＰＣＩｅトランザクションの結果をプロセッサに伝達するステップと、を更に含む。
【０５３７】
ステートメント３８０。本発明の実施例は、ステートメント３７６による方法を含む。方法は、ＳＳＤを露出させる物理関数（ＰＦ）を提供するステップと、アクセラレーションモジュールを露出させる仮想関数（ＶＦ）を提供するステップと、を更に含む。
【０５３８】
ステートメント３８１。本発明の実施例は、ステートメント３８０による方法を含む。方法は、アクセラレーションモジュールのアップストリームポートをＶＦの識別子でプログラミングするステップを更に含む。
【０５３９】
ステートメント３８２。本発明の実施例は、ステートメント３６６による方法を含む。方法は、ＳＳＤを露出させる第１  ＰＦを提供するステップと、アクセラレーションモジュールを露出させる第２  ＰＦを提供するステップと、を更に含む。
【０５４０】
ステートメント３８３。本発明の実施例は、ステートメント３８２による方法を含む。方法は、アクセラレーションモジュールのアップストリームポートを第２  ＰＦの識別子でプログラミングするステップを更に含む。
【０５４１】
ステートメント３８４。本発明の実施例は、ステートメント３６５による方法を含む。ストレージデバイスのアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップは、ＳＳＤのエンドポイントでアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップを含み、第１  ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第１  ＰＣＩｅトランザクションが第２エンドポイントで第１エンドポイント及び第２エンドポイントを含むＳＳＤによって受信されるか否かを判断するステップを含み、ストレージデバイスのＡＰＭ−Ｓを使用して第２  ＰＣＩｅトランザクションを生成するステップは、第１  ＰＣＩｅトランザクションに応答してＳＳＤのＡＰＭ−Ｓにより第２  ＰＣＩｅトランザクションを生成するステップを含み、第２  ＰＣＩｅトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップは、第２  ＰＣＩｅトランザクションをストレージデバイスのエンドポイントからアクセラレーションモジュールに伝送するステップを含む。
【０５４２】
ステートメント３８５。本発明の一実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含む。その結果は、アクセラレーションモジュールで第１デバイスからＰＣＩｅトランザクションを受信するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、アクセラレーションモジュールのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）でＰＣＩｅトランザクションを処理するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションを第２デバイスに配信するステップと、を有し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、アプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援し、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０５４３】
ステートメント３８６。本発明の実施例は、ステートメント３８５による物品を含む。アクセラレーションモジュールは、ＦＰＧＡを使用して具現される。
【０５４４】
ステートメント３８７。本発明の実施例は、ステートメント３８６による物品を含む。ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡのエンドポイントでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、アクセラレーションモジュールでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＦＰＧＡの第１  ＰＦの識別子を有するタグを含むか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、ＦＰＧＡのルートポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップを含む。
【０５４５】
ステートメント３８８。本発明の実施例は、ステートメント３８７による物品を含む。その結果は、ＦＰＧＡのアップストリームポートでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、ＦＰＧＡのダウンストリームポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップと、を更に含む。
【０５４６】
ステートメント３８９。本発明の実施例は、ステートメント３８７による物品を含む。その結果は、ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップと、ダウンストリームＦＡＲをＦＰＧＡのダウンストリームポートに連結するステップと、を更に含む。
【０５４７】
ステートメント３９０。本発明の実施例は、ステートメント３８９による物品を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してダウンストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５４８】
ステートメント３９１。本発明の実施例は、ステートメント３８９による物品を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０５４９】
ステートメント３９２。本発明の実施例は、ステートメント３８７による物品を含む。その結果は、ＦＰＧＡのダウンストリームポートを使用してストレージデバイスに第２  ＰＣＩｅのトランザクションの結果を送信するステップを更に含む。
【０５５０】
ステートメント３９３。本発明の実施例は、ステートメント３８７による物品を含む。その結果は、ＦＰＧＡのアップストリームポートを使用してプロセッサに第２  ＰＣＩｅトランザクションの結果を伝送するステップを更に含む。
【０５５１】
ステートメント３９４。本発明の実施例は、ステートメント３８７による物品を含む。その結果は、ＦＰＧＡのアップストリームポートでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、第１  ＰＣＩｅトランザクションがＦＰＧＡのアップストリームポートに関連付けられたアップストリームフィルタアドレス範囲（ＦＡＲ）内の第２アドレスに関連付けられているか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＰＭ−Ｆで第１  ＰＣＩｅトランザクションを処理するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡのダウンストリームポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップと、を更に含む。
【０５５２】
ステートメント３９５。本発明の実施例は、ステートメント３９４による物品を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０５５３】
ステートメント３９６。本発明の実施例は、ステートメント３９４による物品を含む。その結果は、ＦＰＧＡでストレージデバイスからアップストリームＦＡＲを受信するステップと、アップストリームＦＡＲをＦＰＧＡのアップストリームポートに連結するステップと、を更に含む。
【０５５４】
ステートメント３９７。本発明の実施例は、ステートメント３９６による物品を含む。ＦＰＧＡでストレージデバイスからアップストリームＦＡＲを受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してアップストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５５５】
ステートメント３９８。本発明の実施例は、ステートメント３９６による物品を含む。ＦＰＧＡでストレージデバイスからアップストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、アップストリームＦＡＲを含む。
【０５５６】
ステートメント３９９。本発明の実施例は、ステートメント３９４による物品を含む。その結果は、ＦＰＧＡのアップストリームポートを使用して第１  ＰＣＩｅトランザクションの結果をストレージデバイスに伝送するステップを更に含む。
【０５５７】
ステートメント４００。本発明の実施例は、ステートメント３９４による物品を含む。その結果は、ＦＰＧＡのアップストリームポートを使用して第１  ＰＣＩｅトランザクションの結果をプロセッサに伝送するステップを更に含む。
【０５５８】
ステートメント４０１。本発明の実施例は、ステートメント３８７による物品を含む。その結果は、ＦＰＧＡのアップストリームポートでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、第１  ＰＣＩｅトランザクションがストレージデバイスによって露出される仮想関数（ＶＦ）に関連付けられているか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであるか否かを判断するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＰＭ−Ｆで第１  ＰＣＩｅトランザクションを処理するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡのダウンストリームポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップと、を更に含む。
【０５５９】
ステートメント４０２。本発明の実施例は、ステートメント４０１による物品を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０５６０】
ステートメント４０３。本発明の実施例は、ステートメント４０１による物品を含む。第１  ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＶＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０５６１】
ステートメント４０４。本発明の実施例は、ステートメント４０３による物品を含む。その結果は、ＦＰＧＡでストレージデバイスからＶＦの識別子を受信するステップと、ＶＦの識別子をＦＰＧＡのアップストリームポートに連結するステップと、を更に含む。
【０５６２】
ステートメント４０５。本発明の実施例は、ステートメント４０４による物品を含む。ＦＰＧＡでストレージデバイスからＶＦの識別子を受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してＶＦの識別子を受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５６３】
ステートメント４０６。本発明の実施例は、ステートメント４０４による物品を含む。ＦＰＧＡでストレージデバイスからＶＦの識別子を受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ＶＦの識別子を含む。
【０５６４】
ステートメント４０７。本発明の実施例は、ステートメント４０１による物品を含む。その結果は、ＦＰＧＡのアップストリームポートを使用してプロセッサに第１  ＰＣＩｅのトランザクションの結果を伝送するステップを含む。
【０５６５】
ステートメント４０８。本発明の実施例は、ステートメント３８７による物品を含む。その結果は、ＦＰＧＡのアップストリームポートでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、第１  ＰＣＩｅトランザクションがストレージデバイスによって露出される物理関数（ＰＦ）に関連付けられているか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであるか否かを判断するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＰＭ−Ｆで第１  ＰＣＩｅトランザクションを処理するステップと、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡのダウンストリームポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップと、を更に含む。
【０５６６】
ステートメント４０９。本発明の実施例は、ステートメント４０８による物品を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０５６７】
ステートメント４１０。本発明の実施例は、ステートメント４０８による物品を含む。第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＰＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０５６８】
ステートメント４１１。本発明の実施例は、ステートメント４１０による物品を含む。その結果は、ＦＰＧＡでストレージデバイスからＰＦの識別子を受信するステップと、ＰＦの識別子をＦＰＧＡのアップストリームポートに連結するステップと、を更に含む。
【０５６９】
ステートメント４１２。本発明の実施例は、ステートメント４１１による物品を含む。ＦＰＧＡでストレージデバイスからＰＦの識別子を受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してＰＦの識別子を受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５７０】
ステートメント４１３。本発明の実施例は、ステートメント４１１による物品を含む。ＦＰＧＡでストレージデバイスからＰＦの識別子を受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ＰＦの識別子を含む。
【０５７１】
ステートメント４１４。本発明の実施例は、ステートメント４０８による物品を含む。その結果は、ＦＰＧＡのアップストリームを使用して第１  ＰＣＩｅトランザクションの結果をプロセッサに伝送するステップを更に含む。
【０５７２】
ステートメント４１５。本発明の実施例は、ステートメント３８６による物品を含む。ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡのエンドポイントでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、アクセラレーションモジュールでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＦＰＧＡの第１  ＰＦの識別子を有するタグを含むか、又はＦＰＧＡの第２  ＰＦの第２識別子を有するタグを含むか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、ＦＰＧＡのルートポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップを含む。
【０５７３】
ステートメント４１６。本発明の実施例は、ステートメント４１５による物品を含む。その結果は、ＦＰＧＡのルートポートでストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、ＦＰＧＡで第２  ＰＣＩｅトランザクションがＦＰＧＡのルートポートに関連付けられたダウンストリームＦＡＲ内のアドレスに関連付けられているか否かを判断することにより、第２  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、第２  ＰＣＩｅトランザクションが第２アクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＰＭ−Ｆで第１  ＰＣＩｅトランザクションを処理するステップと、第２  ＰＣＩｅトランザクションが第２アクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡのエンドポイントを使用して第２  ＰＣＩｅトランザクションをプロセッサに配信するステップと、を更に含む。
【０５７４】
ステートメント４１７。本発明の実施例は、ステートメント４１６による物品を含む。その結果は、ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップと、ダウンストリームＦＡＲをＦＰＧＡのルートポートに連結するステップと、を更に含む。
【０５７５】
ステートメント４１８。本発明の実施例は、ステートメント４１７による物品を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してダウンストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５７６】
ステートメント４１９。本発明の実施例は、ステートメント４１７による物品を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０５７７】
ステートメント４２０。本発明の実施例は、ステートメント４１５による物品を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０５７８】
ステートメント４２１。本発明の実施例は、ステートメント４１５による物品を含む。その結果は、ＦＰＧＡのエンドポイントを使用してプロセッサに第１  ＰＣＩｅのトランザクションの結果を伝送するステップを更に含む。
【０５７９】
ステートメント４２２。本発明の実施例は、ステートメント４１５による物品を含む。その結果は、ＦＰＧＡの構成モニターを使用してＦＰＧＡのルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、ＦＰＧＡのエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０５８０】
ステートメント４２３。本発明の実施例は、ステートメント３８６による物品を含む。ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡのエンドポイントでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、アクセラレーションモジュールでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＦＰＧＡの第１  ＰＦの第１識別子を有するタグを含むか、又はＦＰＧＡの第２  ＰＦの第２識別子を有するタグを含むか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、ＦＰＧＡのルートポートを使用して第１  ＰＣＩｅトランザクションを第２ストレージデバイスに配信するステップを含む。
【０５８１】
ステートメント４２４。本発明の実施例は、ステートメント４２３による物品を含む。その結果は、ＦＰＧＡでストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第１ルートポートで受信されるか又はＦＰＧＡの第２ルートポートで受信されるか否かを判断するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第１のルートポートで受信されると判断することに少なくとも部分的に基づいて、エンドポイントを使用して第２  ＰＣＩｅトランザクションをプロセッサに配信するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第２のルートポートで受信されると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＭＰ−Ｆで第２  ＰＣＩｅトランザクションを処理するステップと、を更に含む。
【０５８２】
ステートメント４２５。本発明の実施例は、ステートメント４２３による物品を含む。第２アクセラレーションコマンドは、のプロセッサ上で実行中のＡＳＭから生じる。
【０５８３】
ステートメント４２６。本発明の実施例は、ステートメント４２３による物品を含む。その結果は、ＦＰＧＡのエンドポイントを使用してプロセッサに第１  ＰＣＩｅのトランザクションの結果を伝送するステップを更に含む。
【０５８４】
ステートメント４２７。本発明の実施例は、ステートメント４２３による物品を含む。その結果は、ＦＰＧＡの構成モニターを使用してＦＰＧＡの第１のルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、ＦＰＧＡのエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０５８５】
ステートメント４２８。本発明の実施例は、ステートメント３８６による物品を含む。ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、ＦＰＧＡで第１  ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含むＦＰＧＡの第１エンドポイントでプロセッサから受信されるか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、第１ルートポート及び第２ルートポートを含むＦＰＧＡの第１ルートポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップを含む。
【０５８６】
ステートメント４２９。本発明の実施例は、ステートメント４２８による物品を含む。その結果は、ＦＰＧＡでストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第１ルートポートで受信されるか又はＦＰＧＡの第２ルートポートで受信されるか否かを判断することにより、第２  ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第１のルートポートで受信されると判断することに少なくとも部分的に基づいて、第１エンドポイントを使用して第２  ＰＣＩｅトランザクションをプロセッサに配信するステップと、第２  ＰＣＩｅトランザクションがＦＰＧＡの第２ルートポートで受信されると判断することに少なくとも部分的に基づいて、ＦＰＧＡのＡＭＰ−Ｆで第２  ＰＣＩｅトランザクションを処理するステップと、を更に含む。
【０５８７】
ステートメント４３０。本発明の実施例は、ステートメント４２８による物品を含む。第２アクセラレーションコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０５８８】
ステートメント４３１。本発明の実施例は、ステートメント４２８による物品を含む。その結果は、ＦＰＧＡの第２エンドポイントを使用してプロセッサに第１  ＰＣＩｅのトランザクションの結果を伝送するステップを更に含む。
【０５８９】
ステートメント４３２。本発明の実施例は、ステートメント４２８による物品を含む。その結果は、ＦＰＧＡの構成モニターを使用してＦＰＧＡの第１ルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、ＦＰＧＡの第１エンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０５９０】
ステートメント４３３。本発明の実施例は、ステートメント３８６による物品を含む。ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、ＦＰＧＡでプロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、アクセラレーションモジュールで第１  ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含むＦＰＧＡの第１エンドポイントでプロセッサから受信されるか否かを判断することにより、第１  ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップを含み、ＰＣＩｅトランザクションを第２デバイスに配信するステップは、ＦＰＧＡのルートポートを使用して第１  ＰＣＩｅトランザクションをストレージデバイスに配信するステップを含む。
【０５９１】
ステートメント４３４。本発明の実施例は、ステートメント４３３による物品を含む。その結果は、ＦＰＧＡのルートポートでストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、ＦＰＧＡで第２  ＰＣＩｅトランザクションがＦＰＧＡのルートポートに関連付けられたダウンストリームＦＡＲ内のアドレスに関連付けられているか否かを判断することにより、第２  ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップと、第２  ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、第２  ＰＣＩｅトランザクションをＦＰＧＡのＡＰＭ−Ｆで処理するステップと、第２  ＰＣＩｅトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＦＰＧＡの第１エンドポイントを使用して第２  ＰＣＩｅトランザクションをプロセッサに配信するステップと、を更に含む。
【０５９２】
ステートメント４３５。本発明の実施例は、ステートメント４３４による物品を含む。その結果は、ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップと、ダウンストリームＦＡＲをＦＰＧＡのルートポートに連結するステップと、を更に含む。
【０５９３】
ステートメント４３６。本発明の実施例は、ステートメント４３５による物品を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ＦＰＧＡでストレージデバイスからサイドバンドバスを介してダウンストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０５９４】
ステートメント４３７。本発明の実施例は、ステートメント４３５による物品を含む。ＦＰＧＡでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０５９５】
ステートメント４３８。本発明の実施例は、ステートメント４３３による物品を含む。第１  ＰＣＩｅトランザクションは、プロセッサ上で実行中のＡＳＭから生じる。
【０５９６】
ステートメント４３９。本発明の実施例は、ステートメント４３３による物品を含む。その結果は、ＦＰＧＡの第２エンドポイントを使用してプロセッサに第１  ＰＣＩｅのトランザクションの結果を伝送するステップを更に含む。
【０５９７】
ステートメント４４０。本発明の実施例は、ステートメント４３３による物品を含む。その結果は、ＦＰＧＡの構成モニターを使用してＦＰＧＡのルートポートと通信するストレージデバイスのエンドポイントの構成を判断するステップと、ＦＰＧＡの第１エンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０５９８】
ステートメント４４１。本発明の実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含む。その結果は、ストレージデバイスでアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップと、第１  ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、第１  ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ストレージデバイスのＡＰＭ−Ｓを使用して第２  ＰＣＩｅトランザクションを生成するステップと、第２  ＰＣＩｅトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップと、第１  ＰＣＩｅトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ストレージデバイスに格納されたデータに対して第１  ＰＣＩｅトランザクションを実行するステップと、を有し、プロセッサ、アクセラレーションモジュール、及びストレージデバイスは、ＰＣＩｅバスを使用して通信し、アクセラレーションモジュールは、プロセッサに関連付けられたメモリにアプリケーションデータをロードすることなく、プロセッサ上で実行中のアプリケーションに対するストレージデバイス上のアプリケーションデータに対してアクセラレーションコマンドを実行することを支援する。
【０５９９】
ステートメント４４２。本発明の実施例は、ステートメント４４１による物品を含む。ストレージデバイスは、ＳＳＤである。
【０６００】
ステートメント４４３。本発明の実施例は、ステートメント４４２による物品を含む。ストレージデバイスのアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップは、ＳＳＤのエンドポイントでアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップを含み、第１  ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第１  ＰＣＩｅトランザクションがプロセッサからの特定のコマンドを含むか、又は第１  ＰＣＩｅトランザクションがアクセラレーションモジュールのＡＰＭ−Ｆから生じるか否かを判断するステップを含み、ストレージデバイスのＡＰＭ−Ｓを使用して第２  ＰＣＩｅトランザクションを生成するステップは、第１  ＰＣＩｅトランザクションに応答してＳＳＤのＡＰＭ−Ｓにより第２  ＰＣＩｅトランザクションを生成するステップを含み、第２  ＰＣＩｅトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップは、第２  ＰＣＩｅトランザクションをストレージデバイスのエンドポイントからアクセラレーションモジュールに伝送するステップを含む。
【０６０１】
ステートメント４４４。本発明の実施例は、ステートメント４４３による物品を含む。第１  ＰＣＩｅトランザクションは、プロセッサから生じて、特定のコマンドを含む。
【０６０２】
ステートメント４４５。本発明の実施例は、ステートメント４４３による物品を含む。第１  ＰＣＩｅトランザクションがプロセッサから特定のコマンドを含むか否かを判断するステップは、第１  ＰＣＩｅトランザクションがＳＳＤのＨＩＬによりプロセッサから特定のコマンドを含むか否かを判断するステップを更に含む。
【０６０３】
ステートメント４４６。本発明の実施例は、ステートメント４４５による物品を含む。特定のコマンドは、プロセッサ上で実行中のＡＳＭから生じる。
【０６０４】
ステートメント４４７。本発明の実施例は、ステートメント４４３による物品を含む。その結果は、プロセッサからホストシステムアドレスのブロックを要請するステップと、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックのサブセットを選択するステップと、アクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップと、を更に含む。
【０６０５】
ステートメント４４８。本発明の実施例は、ステートメント４４７による物品を含む。アクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０６０６】
ステートメント４４９。本発明の実施例は、ステートメント４４７による物品を含む。アクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用してアクセラレーションモジュールのダウンストリームポートをダウンストリームＦＡＲでプログラミングするステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０６０７】
ステートメント４５０。本発明の実施例は、ステートメント４４７による物品を含む。その結果は、アップストリームＦＡＲとしてホストシステムアドレスのブロックの第２サブセットを選択するステップと、アクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップと、を更に含む。
【０６０８】
ステートメント４５１。本発明の実施例は、ステートメント４５０による物品を含む。アクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０６０９】
ステートメント４５２。本発明の実施例は、ステートメント４５０による物品を含む。アクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用してアクセラレーションモジュールのアップストリームポートをアップストリームＦＡＲでプログラミングするステップを含み、ＰＣＩｅ  ＶＤＭは、アップストリームＦＡＲを含む。
【０６１０】
ステートメント４５３。本発明の実施例は、ステートメント４４３による物品を含む。その結果は、プロセッサからホストシステムアドレスのブロックを要請するステップと、ダウンストリームＦＡＲとしてホストシステムアドレスのブロックのサブセットを選択するステップと、アクセラレーションモジュールのルートポートをアクセラレーションモジュールでプログラミングするステップと、を更に含む。
【０６１１】
ステートメント４５４。本発明の実施例は、ステートメント４５３による物品を含む。アクセラレーションモジュールのルートポートをダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介してアクセラレーションモジュールのルートポートをダウンストリームＦＡＲでプログラミングするステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０６１２】
ステートメント４５５。本発明の実施例は、ステートメント４５３による物品を含む。アクセラレーションモジュールのルートポートをダウンストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用してアクセラレーションモジュールのルートポートをダウンストリームＦＡＲでプログラミングするステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０６１３】
ステートメント４５６。本発明の実施例は、ステートメント４４３による物品を含む。その結果は、ＳＳＤのエンドポイントでアクセラレーションモジュールから第１  ＰＣＩｅトランザクションの結果を受信するステップと、ＳＳＤのエンドポイントを使用して第１  ＰＣＩｅトランザクションの結果をプロセッサに伝達するステップと、を更に含む。
【０６１４】
ステートメント４５７。本発明の実施例は、ステートメント４４３による物品を含む。その結果は、ＳＳＤを露出させる物理関数（ＰＦ）を提供するステップと、アクセラレーションモジュールを露出させる仮想関数（ＶＦ）を提供するステップと、を更に含む。
【０６１５】
ステートメント４５８。本発明の実施例は、ステートメント４５７による物品を含む。その結果は、アクセラレーションモジュールのアップストリームポートをＶＦの識別子でプログラミングするステップを更に含む。
【０６１６】
ステートメント４５９。本発明の実施例は、ステートメント４４３による物品を含む。その結果は、ＳＳＤを露出させる第１  ＰＦを提供するステップと、アクセラレーションモジュールを露出させる第２  ＰＦを提供するステップと、を更に含む。
【０６１７】
ステートメント４６０。本発明の実施例は、ステートメント４５９による物品を含む。その結果は、アクセラレーションモジュールのアップストリームポートを第２  ＰＦの識別子でプログラミングするステップを更に含む。
【０６１８】
ステートメント４６１。本発明の実施例は、ステートメント４４２による物品を含む。ストレージデバイスのアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップは、ＳＳＤのエンドポイントでアクセラレーションモジュールから第１  ＰＣＩｅトランザクションを受信するステップを含み、第１  ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第１  ＰＣＩｅトランザクションが第２エンドポイントで第１エンドポイント及び第２エンドポイントを含むＳＳＤによって受信されるか否かを判断するステップを含み、ストレージデバイスのＡＰＭ−Ｓを使用して第２  ＰＣＩｅトランザクションを生成するステップは、第１  ＰＣＩｅトランザクションに応答してＳＳＤのＡＰＭ−Ｓにより第２  ＰＣＩｅトランザクションを生成するステップを含み、第２  ＰＣＩｅトランザクションをストレージデバイスからアクセラレーションモジュールに伝送するステップは、第２  ＰＣＩｅトランザクションをストレージデバイスのエンドポイントからアクセラレーションモジュールに伝送するステップを含む。
【０６１９】
ステートメント４６２。本発明の一実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含む。その結果は、第１ブリッジ（構成要素）コンポーネントでプロセッサからＰＣＩｅトランザクションを受信するステップと、第１ブリッジ（構成要素）コンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションをアクセラレーションモジュールに伝達するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションをストレージデバイスに伝達するステップと、を有し、プロセッサ、第１ブリッジコンポーネント、アクセラレーションモジュール、及びストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０６２０】
ステートメント４６３。本発明の実施例は、ステートメント４６２による物品を含む。アクセラレーションモジュールは、ＦＰＧＡを用いて具現され、ストレージデバイスは、ＳＳＤを含む。
【０６２１】
ステートメント４６４。本発明の実施例は、ステートメント４６２による物品を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、ＰＣＩｅトランザクションが第１ブリッジコンポーネントのアップストリームポートに関連付けられたアップストリームＦＡＲ内のアドレスに関連付けられているか否かを判断するステップを更に含む。
【０６２２】
ステートメント４６５。本発明の実施例は、ステートメント４６４による物品を含む。その結果は、第１ブリッジコンポーネントでストレージデバイスからアップストリームＦＡＲを受信するステップと、アップストリームＦＡＲを第１ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
【０６２３】
ステートメント４６６。本発明の実施例は、ステートメント４６５による物品を含む。第１ブリッジコンポーネントでストレージデバイスからアップストリームＦＡＲを受信するステップは、第１ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してアップストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０６２４】
ステートメント４６７。本発明の実施例は、ステートメント４６５による物品を含む。第１ブリッジコンポーネントでストレージデバイスからアップストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、アップストリームＦＡＲを含む。
【０６２５】
ステートメント４６８。本発明の実施例は、ステートメント４６２による物品を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、ＰＣＩｅトランザクションがストレージデバイスによって露出される仮想関数（ＶＦ）に関連付けられているか否かを判断するステップを含む。
【０６２６】
ステートメント４６９。本発明の実施例は、ステートメント４６８による物品を含む。ＰＣＩｅトランザクションがストレージデバイスによって露出される仮想関数（ＶＦ）に関連付けられているか否かを判断するステップは、ＰＣＩｅトランザクションがＶＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０６２７】
ステートメント４７０。本発明の実施例は、ステートメント４６９による物品を含む。その結果は、第１ブリッジコンポーネントでストレージデバイスからＶＦの識別子を受信するステップと、ＶＦの識別子を第１ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
【０６２８】
ステートメント４７１。本発明の実施例は、ステートメント４７０による物品を含む。第１ブリッジコンポーネントでストレージデバイスからＶＦの識別子を受信するステップは、第１ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してＶＦの識別子を受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０６２９】
ステートメント４７２。本発明の実施例は、ステートメント４７０による物品を含む。第１ブリッジコンポーネントでストレージデバイスからＶＦの識別子を受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ＶＦの識別子を含む。
【０６３０】
ステートメント４７３。本発明の実施例は、ステートメント４６２による物品を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、ＰＣＩｅトランザクションがストレージデバイスによって露出される物理関数（ＰＦ）に関連付けられているか否かを判断するステップを含む。
【０６３１】
ステートメント４７４。本発明の実施例は、ステートメント４７３による物品を含む。ＰＣＩｅトランザクションがストレージデバイスによって露出される物理関数（ＰＦ）に関連付けられているか否かを判断するステップは、ＰＣＩｅトランザクションがＰＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０６３２】
ステートメント４７５。本発明の実施例は、ステートメント４７４による物品を含む。その結果は、第１ブリッジコンポーネントでストレージデバイスからＰＦの識別子を受信するステップと、ＰＦの識別子を第１ブリッジコンポーネントのアップストリームポートに連結するステップと、を更に含む。
【０６３３】
ステートメント４７６。本発明の実施例は、ステートメント４７５による物品を含む。第１ブリッジコンポーネントでストレージデバイスからＰＦの識別子を受信するステップは、第１ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してＰＦの識別子を受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０６３４】
ステートメント４７７。本発明の実施例は、ステートメント４７５による物品を含む。第１ブリッジコンポーネントでストレージデバイスからＰＦの識別子を受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ＰＦの識別子を含む。
【０６３５】
ステートメント４７８。本発明の実施例は、ステートメント４６２による物品を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、ＰＣＩｅトランザクションが第１ブリッジコンポーネントの第１  ＰＦの識別子を有するタグを含むか、又は第１ブリッジコンポーネントの第２  ＰＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０６３６】
ステートメント４７９。本発明の実施例は、ステートメント４７８による物品を含む。その結果は、第１ブリッジ構成要素の構成モニターを使用してストレージデバイスのエンドポイントの構成を判断するステップと、第１構成要素のエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０６３７】
ステートメント４８０。本発明の実施例は、ステートメント４６２による物品を含む。第１ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む第１コンポーネントの第１エンドポイントでプロセッサから受信されるか否かを判断するステップを含む。
【０６３８】
ステートメント４８１。本発明の実施例は、ステートメント４８０による物品を含む。その結果は、第１ブリッジ構成要素の構成モニターを使用してストレージデバイスのエンドポイントの構成を判断するステップと、第１構成要素のエンドポイントを使用してストレージデバイス上のエンドポイントの構成をコピーするステップと、を更に含む。
【０６３９】
ステートメント４８２。本発明の一実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含む。その結果は、第２ブリッジ（構成要素）コンポーネントでストレージデバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、第２ブリッジ（構成要素）コンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドであると判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションをアクセラレーションモジュールに伝達するステップと、ＰＣＩｅトランザクションがアクセラレーションコマンドでないと判断することに少なくとも部分的に基づいて、ＰＣＩｅトランザクションをプロセッサに伝達するステップを含み、プロセッサ、アクセラレーションモジュール、第２ブリッジコンポーネント、及びストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０６４０】
ステートメント４８３。本発明の実施例は、ステートメント４８２による物品を含む。アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現され、ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０６４１】
ステートメント４８４。本発明の実施例は、ステートメント４８２による物品を含む。第２ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、第２ブリッジコンポーネントで第２  ＰＣＩｅトランザクションが第２ブリッジコンポーネントのダウンストリームポートに関連付けられたダウンストリームＦＡＲ内のアドレスに関連付けられているか否かを判断するステップを更に含む。
【０６４２】
ステートメント４８５。本発明の実施例は、ステートメント４８４による物品を含む。その結果は、第２ブリッジコンポーネントでストレージデバイスからダウンストリームＦＡＲを受信するステップと、ダウンストリームＦＡＲを第２ブリッジコンポーネントのダウンストリームポートに連結するステップと、を更に含む。
【０６４３】
ステートメント４８６。本発明の実施例は、ステートメント４８５による物品を含む。第２ブリッジコンポーネントでストレージデバイスからダウンストリームＦＡＲを受信するステップは、第２ブリッジコンポーネントでストレージデバイスからサイドバンドバスを介してダウンストリームＦＡＲを受信するステップを含み、サイドバンドバスは、Ｉ２Ｃバス及びＳＭバスを含むセットから成る。
【０６４４】
ステートメント４８７。本発明の実施例は、ステートメント４８５による物品を含む。第２ブリッジコンポーネントでストレージデバイスからダウンストリームＦＡＲを受信するステップは、ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを含み、ＰＣＩｅ  ＶＤＭは、ダウンストリームＦＡＲを含む。
【０６４５】
ステートメント４８８。本発明の実施例は、ステートメント４８２による物品を含む。第２ブリッジコンポーネントでＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断するステップは、ＰＣＩｅトランザクションが第１ルートポート及び第２ルートポートを含む第２ブリッジコンポーネントの第２ルートポートで受信されるか否かを判断するステップを含む。
【０６４６】
以上、本発明の実施例について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【産業上の利用可能性】
【０６４７】
本発明は、ＦＰＧＡベースの低コスト、低消費電力を必要とするＳＳＤ性能のアクセラレーション化のためのシステムに有用である。
【符号の説明】
【０６４８】
１０５    機械（又はマシン）
１１０    プロセッサ
１１５    デバイスドライバ
１２０    （ＳＳＤ）ストレージデバイス
１２５    アプリケーション
１３０    アプリケーションサービスマネージャ（ＡＳＭ）
１３５    メモリコントローラ
１４０    （メイン）メモリ
１４５    アクセラレーションモジュール（又はＦＰＧＡ）
２０５    クロック
２１０    ネットワークコネクタ
２１５    バス
２２０    ユーザーインターフェース
２２５    Ｉ／Ｏ（入力／出力）エンジン
３０５、１１０５、１３１０、１５０５    エンドポイント（ＥＰ）
３１０    ホストインターフェース階層（ＨＩＬ）
３１５    アクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）
３２０    フラッシュ変換階層（ＦＴＬ）
３２５    フラッシュメディア
３３０    アップストリームポート（ＵＳＰ）
３３５    ダウンストリームポート（ＤＳＰ）
３４０    アクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）
３４５    スケジューラ
３５０    アクセラレーションエンジン
３５５    メッセージメールボックス
３６０    ダウンストリームフィルタ
３６５    サイドバンドバス
３７０    （ＳＳＤ）コントローラ
４０５、８０５、８１０、１００５、１０１０、１２１５，１２２０、１４０５、２１０５、２１２５、２２０３、２２０６、２２１５、２２２１、２２２７、２２３０    ブロック
４１０、４１５    サブセット
４２０    ダウンストリームＦＡＲ（フィルタアドレス範囲）
５０５    （アップストリーム）フィルタ
６０５    アップストリームＦＡＲ
７０５、９０５、１１１５、１１２０    物理機能（ＰＦ：ｐｈｙｓｉｃａｌ  ｆｕｎｃｔｉｏｎ）
７１０    仮想機能（ＶＦ：ｖｉｒｔｕａｌ  ｆｕｎｃｔｉｏｎ）
７１５    ＶＦフィルタ
１１１０、１３０５    ルートポート（ＲＰ）
１１２５    構成モニター
１２０５、１２１５    メモリアドレスのブロック
１２１０，１４１０    アドレスマップ
１９０５、１９１０    ブリッジ構成要素（ブリッジコンポーネント）
２００５、２０２０    ＰＣＩｅトランザクション
２０１５    アクセラレーションコマンド
２０３０、２０３５、２０４０    結果
【図１】
2019153304.tif 000003
【図２】
2019153304.tif 000004
【図３】
2019153304.tif 000005
【図４】
2019153304.tif 000006
【図５】
2019153304.tif 000007
【図６】
2019153304.tif 000008
【図７】
2019153304.tif 000009
【図８】
2019153304.tif 000010
【図９】
2019153304.tif 000011
【図１０】
2019153304.tif 000012
【図１１】
2019153304.tif 000013
【図１２】
2019153304.tif 000014
【図１３】
2019153304.tif 000015
【図１４】
2019153304.tif 000016
【図１５】
2019153304.tif 000017
【図１６】
2019153304.tif 000018
【図１７】
2019153304.tif 000019
【図１８】
2019153304.tif 000020
【図１９】
2019153304.tif 000021
【図２０ａ】
2019153304.tif 000022
【図２０ｂ】
2019153304.tif 000023
【図２１】
2019153304.tif 000024
【図２２ａ】
2019153304.tif 000025
【図２２ｂ】
2019153304.tif 000026
【図２２ｃ】
2019153304.tif 000027
【図２３ａ】
2019153304.tif 000028
【図２３ｂ】
2019153304.tif 000029
【図２４】
2019153304.tif 000030
【図２５】
2019153304.tif 000031
【図２６】
2019153304.tif 000032
【図２７ａ】
2019153304.tif 000033
【図２７ｂ】
2019153304.tif 000034
【図２７ｃ】
2019153304.tif 000035
【図２８ａ】
2019153304.tif 000036
【図２８ｂ】
2019153304.tif 000037