(57)【要約】【課題】追加のハードウェアを使用してストレージデバイスのパフォーマンスをアクセラレーションさせることができるシステム及びそのアクセラレーション方法並びにアクセラレーションモジュールを提供する。【解決手段】本発明によるシステムは、アプリケーションを実行するプロセッサと、前記プロセッサ上で実行される前記アプリケーションによって使用されるデータを格納するメモリと、前記プロセッサと通信するためのアップストリームポートと、ストレージデバイスと通信するための第１ダウンストリームルートポートと、前記ストレージデバイスと通信するための第２ダウンストリームルートポートと、ハードウェアを使用して具現され、アクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャーを含むアクセラレーションモジュールと、を有する。【選択図】  図１
2019153305.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
アプリケーションを実行するプロセッサと、
前記プロセッサ上で実行される前記アプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するためのアップストリームポートと、
ストレージデバイスと通信するための第１ダウンストリームルートポートと、
前記ストレージデバイスと通信するための第２ダウンストリームルートポートと、
ハードウェアを使用して具現され、アクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー（以下、ＡＰＭ−Ｆ）を含むアクセラレーションモジュールと、を有し、
前記ストレージデバイスは、前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第１エンドポイントと、
前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第２エンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
前記アプリケーションに対するアプリケーションデータを格納するためのストアと、
前記アクセラレーションコマンドを実行するのに前記ＡＰＭ−Ｆを補助するための前記ストレージデバイスのアクセラレーションプラットフォームマネージャー（以下、ＡＰＭ−Ｓ）と、を含み、
前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｃｈａｎｇｅ）バスを介して通信し、
前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにローディング（ｌｏａｄｉｎｇ）することなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援することを特徴とするシステム。
【請求項２】
前記プロセッサと前記アクセラレーションモジュールとの間の通信可能に接続（ｂｒｉｄｇｉｎｇ）し、前記アップストリームポートを含む第１ブリッジコンポーネントと、
前記アクセラレーションモジュールと前記ストレージデバイスとの間の通信可能に接続し、前記第１ダウンストリームルートポート及び前記第２ダウンストリームルートポートを含む第２ブリッジコンポーネントと、をさらに含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記ＦＰＧＡは、前記アップストリームポート、前記第１ダウンストリームルートポート、及び前記第２ダウンストリームルートポートを含み、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含み、
前記ＳＳＤの第１エンドポイントは、前記第１ダウンストリームルートポートと接続し、
前記ＳＳＤの第２エンドポイントは、前記第２ダウンストリームルートポートと接続することを特徴とする請求項１に記載のシステム。
【請求項４】
前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作することを特徴とする請求項３に記載のシステム。
【請求項５】
前記ＦＰＧＡは、前記ＳＳＤの第１エンドポイントの機能を、前記アップストリームポートにコピーする構成モニターを含むことを特徴とする請求項３に記載のシステム。
【請求項６】
前記ＦＰＧＡは、第１物理機能（ｐｈｙｓｉｃａｌ  ｆｕｎｃｔｉｏｎ）（以下、第１ＰＦ）、第２物理機能（以下、第２ＰＦ）を含み、
前記ＦＰＧＡは、前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記第１ダウンストリームルートポート及び前記ＳＳＤの第１エンドポイントを介して前記ＳＳＤに伝送し、
前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝送し、
前記第１ダウンストリームルートポートにて前記ＳＳＤから受信した第２ＰＣＩｅトランザクションを前記プロセッサに伝送し、
前記第２ダウンストリームルートポートにて前記ＳＳＤから受信した第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝送するように動作し、
前記第１ＰＣＩｅトランザクションは、前記第１ＰＦの第１識別子と関連付けられ、
前記第２アクセラレーションコマンドは、前記第２ＰＦの第２識別子と関連付けられることを特徴とする請求項３に記載のシステム。
【請求項７】
前記ＦＰＧＡは、第２アップストリームポートをさらに含み、
前記ＦＰＧＡは、前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記アップストリームポートにて前記第１ダウンストリームルートポート及び前記ＳＳＤの第１エンドポイントを介して前記ＳＳＤに伝送し、
前記第２アップストリームポートにて前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝送し、
前記第１ダウンストリームルートポートにて前記ＳＳＤから受信した第２ＰＣＩｅトランザクションを前記アップストリームポートを介して前記プロセッサに伝送し、
前記第２ダウンストリームルートポートにて前記ＳＳＤから受信した第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝送するように動作することを特徴とする請求項３に記載のシステム。
【請求項８】
ハードウェアを利用して具現されたアクセラレーションモジュールであって、
アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー（以下、ＡＰＭ−Ｆ）と、
プロセッサと通信するためのアップストリームインターフェースと、
前記アクセラレーションコマンドを実行するのに前記ＡＰＭ−Ｆを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー（以下、ＡＰＭ−Ｓ）を含む前記ストレージデバイスと通信するための第１ダウンストリームインターフェースと、
前記アクセラレーションコマンドを実行するのに前記ＡＰＭ−Ｆを補助するための前記ＡＰＭ−Ｓを含む前記ストレージデバイスと通信するための第２ダウンストリームインターフェースと、を有し、
前記プロセッサ上でアプリケーションが実行され、
前記アクセラレーションモジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、前記プロセッサ及び前記ストレージデバイスと通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをローディング（ｌｏａｄｉｎｇ）することなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援することを特徴とするアクセラレーションモジュール。
【請求項９】
前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現されることを特徴とする請求項８に記載のアクセラレーションモジュール。
【請求項１０】
前記ＡＰＭ−Ｆは、前記アップストリームインターフェースを介して前記プロセッサに結果を伝送するように動作することを特徴とする請求項８に記載のアクセラレーションモジュール。
【請求項１１】
前記ＦＰＧＡは、第１物理機能（ｐｈｙｓｉｃａｌ  ｆｕｎｃｔｉｏｎ）（以下、第１ＰＦ）、第２物理機能（以下、第２ＰＦ）を含み、
前記ＦＰＧＡは、前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記第１ダウンストリームインターフェースを介して前記ストレージデバイスに伝送し、
前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝送し、
前記第１ダウンストリームインターフェースにて前記ストレージデバイスから受信した第２ＰＣＩｅトランザクションを前記プロセッサに伝送し、
前記第２ダウンストリームインターフェースにて前記ストレージデバイスから受信した第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝送するように動作し、
前記第１ＰＣＩｅトランザクションは、前記第１ＰＦの第１識別子と関連付けられ、
前記第２アクセラレーションコマンドは、前記第２ＰＦの第２識別子と関連付けられることを特徴とする請求項９に記載のアクセラレーションモジュール。
【請求項１２】
前記ＦＰＧＡは、前記ストレージデバイスのエンドポイントの機能を前記アップストリームインターフェースにコピーする構成モニターをさらに含むことを特徴とする請求項１１に記載のアクセラレーションモジュール。
【請求項１３】
前記ＦＰＧＡは、第２アップストリームインターフェースを含み、
前記ＦＰＧＡは、前記アップストリームインターフェースにて前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記第１ダウンストリームインターフェースを介して前記ストレージデバイスに伝送し、
前記第２アップストリームインターフェースにて前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝送し、
前記第１ダウンストリームインターフェースにて前記ストレージデバイスから受信した第２ＰＣＩｅトランザクションを前記アップストリームインターフェースを介して前記プロセッサに伝送し、
前記第２ダウンストリームインターフェースにて前記ストレージデバイスから受信した第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝送するように動作することを特徴とする請求項９に記載のアクセラレーションモジュール。
【請求項１４】
前記ＦＰＧＡは、前記ストレージデバイスのエンドポイントの機能を前記アップストリームインターフェースにコピーする構成モニターをさらに含むことを特徴とする請求項１３に記載のアクセラレーションモジュール。
【請求項１５】
アクセラレーションモジュールを含むシステムのアクセラレーション方法であって、
前記アクセラレーションモジュールにてストレージデバイスから第１ＰＣＩｅトランザクションを受信するステップと、
前記第１ＰＣＩｅトランザクションが前記アクセラレーションモジュールの第１ダウンストリームルートポートで受信されるか、前記アクセラレーションモジュールの第２ダウンストリームルートポートで受信されるか、を判断するステップと、
前記第１ＰＣＩｅトランザクションが前記アクセラレーションモジュールの前記第１ダウンストリームルートポートで受信されたと判断された場合、前記アクセラレーションモジュールのアップストリームポートを使用して前記第１ＰＣＩｅトランザクションをプロセッサに伝送するステップと、
前記第１ＰＣＩｅトランザクションが前記アクセラレーションモジュールの前記第２ダウンストリームルートポートで受信されたと判断された場合、前記第１ＰＣＩｅトランザクションを前記アクセラレーションモジュールのＡＰＭ−Ｆで処理するステップと、を有し、
前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをロードすることなく、アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対してアクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信することを特徴とするシステムのアクセラレーション方法。
【請求項１６】
前記アクセラレーションモジュールは、ＦＰＧＡを用いて具現されることを特徴とする請求項１５に記載のシステムのアクセラレーション方法。
【請求項１７】
前記ＦＰＧＡの前記アップストリームポートにおいて、
前記プロセッサから第２ＰＣＩｅトランザクションを受信するステップと、
前記第２ＰＣＩｅトランザクションが前記ＦＰＧＡの第１物理機能（ｐｈｙｓｉｃａｌ  ｆｕｎｃｔｉｏｎ）（以下、第１ＰＦ）の第１識別子又は前記ＦＰＧＡの第２物理機能（以下、第２ＰＦ）の第２識別子を有するタグを含むか否かを判断することにより、前記第２ＰＣＩｅトランザクションが、前記アクセラレーションコマンドであるか否かを前記ＦＰＧＡで判断するステップと、
前記第２ＰＣＩｅトランザクションが、前記第１ＰＦの前記第１識別子を有する前記タグを含むと判断された場合、前記アクセラレーションモジュールの前記第１ダウンストリームルートポートを使用して前記第２ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するステップと、
前記第２ＰＣＩｅトランザクションが前記第２ＰＦの前記第２識別子を有する前記タグを含むと判断された場合、前記第２ＰＣＩｅトランザクションを前記アクセラレーションモジュールの前記ＡＰＭ−Ｆで処理するステップと、を有することを特徴とする請求項１６に記載のシステムのアクセラレーション方法。
【請求項１８】
前記ＦＰＧＡの前記アップストリームポートを使用して前記第２ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップをさらに含むことを特徴とする請求項１７に記載のシステムのアクセラレーション方法。
【請求項１９】
前記ＦＰＧＡの構成モニターを用いて、前記ＦＰＧＡの前記第１ダウンストリームルートポートと通信する前記ストレージデバイスのエンドポイントの構成を決定するステップと、
前記ＦＰＧＡの前記アップストリームポートを使用して、前記ストレージデバイスの前記エンドポイントの構成を複製するステップと、をさらに含むことを特徴とする請求項１７に記載のシステムのアクセラレーション方法。
【請求項２０】
前記ＦＰＧＡの第１アップストリームのエンドポイントにおいて、前記プロセッサから第３ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第３ＰＣＩｅトランザクションを処理するステップと、
前記ＦＰＧＡの第２アップストリームポートにおいて、前記プロセッサから第４ＰＣＩｅトランザクションを受信するステップと、
前記アクセラレーションモジュールの前記第１ダウンストリームルートポートを使用して、前記ストレージデバイスに前記第４ＰＣＩｅトランザクションを伝送するステップと、をさらに含むことを特徴とする請求項１６に記載のシステムのアクセラレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージデバイスに関し、特に、追加のハードウェアを使用してソリッドステートドライブ（ＳＳＤ）のパフォーマンスをアクセラレーションさせることができるシステム及びそのアクセラレーション方法並びにアクセラレーションモジュールに関する。
【背景技術】
【０００２】
従来の方法においてストレージデバイスを使用するのが非効率的な場合がある。
例として、データベースでクエリの実行を必要とする場合が考慮される。
従来の解決策としては、データベースをコンピュータのメモリにロードし、データベースのメモリ内のコピーに対してクエリを実行した後、結果を処理するものである。
【０００３】
これは、データベースが相対的に小さい場合、この方式が合理的であり得るものの、クエリの結果がデータベースの一つの記録を識別するために、数千、数百万以上の記録を含むデータベースをローディングするのは非常に非効率的である。
クエリを実行するために膨大な量のデータをメモリに移動しなければならず、既にメモリに格納された他のデータを代替する可能性がある。
クエリが完了されると、ほとんどのデータが必要でないので、クエリが完了された後に、ほとんどのデータは削除される。
【０００４】
つまり、データベースに対して繰り返しクエリが実行されなければならないとき、問題が拡大する可能性がある。
つまり、各クエリは、メモリに再びローディングされるデータベースを要求する可能性がある。
従って、ストレージデバイスに関連する動作をアクセラレーションする方法が必要となっており、その開発が課題となっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第９６１９１６７号明細書
【特許文献２】米国特許第９８９８３１２号明細書
【特許文献３】米国特許出願公開第２０１３０３４３１８１号明細書
【特許文献４】米国特許出願公開第２０１５０２５４００３号明細書
【特許文献５】米国特許出願公開第２０１６００９４６１９号明細書
【特許文献６】米国特許出願公開第２０１７０１７７２７０号明細書
【特許文献７】米国特許出願公開第２０１８００５２７６６号明細書
【特許文献８】米国特許出願公開第２０１８００８１５６９号明細書
【非特許文献】
【０００６】
【非特許文献１】ＪＵＮ，Ｓａｎｇ−Ｗｏｏ，“Ｓｃａｌａｂｌｅ  Ｍｕｌｔｉ−Ａｃｃｅｓｓ  Ｆｌａｓｈ  Ｓｔｏｒｅ  ｆｏｒ  Ｂｉｇ  Ｄａｔａ  Ａｎａｌｙｔｉｃｓ”，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２０１４  ＡＣＭ／ＳＩＧＤＡ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ，ＡＣＭ  ２０１４，ｆｏｕｎｄ  ｖｉａ  Ｇｏｏｇｌｅ  Ｓｃｈｏｌａｒ（ｕｒｌ：ｈｔｔｐｓ：／／ｄｓｐａｃｅ．ｍｉｔ．ｅｄｕ／ｂｉｔｓｔｒｅａｍ／ｈａｎｄｌｅ／１７２１．１／８７９４７／８８０４１５１２０−ＭＩＴ．ｐｄｆ；ｓｅｑｕｅｎｃｅ＝２），Ｆｅｂｒｕａｒｙ  ２０１４，４９ｐａｇｅｓ．
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は上記従来のストレージデバイスにおける課題点に鑑みてなされたものであって、本発明の目的は、追加のハードウェアを使用してストレージデバイス（ＳＳＤ）のパフォーマンスをアクセラレーションさせることができるシステム及びそのアクセラレーション方法並びにアクセラレーションモジュールを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた本発明によるシステムは、アプリケーションを実行するプロセッサと、前記プロセッサ上で実行される前記アプリケーションによって使用されるデータを格納するメモリと、前記プロセッサと通信するためのアップストリームポートと、ストレージデバイスと通信するための第１ダウンストリームルートポートと、前記ストレージデバイスと通信するための第２ダウンストリームルートポートと、ハードウェアを使用して具現され、アクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー（以下、ＡＰＭ−Ｆ）を含むアクセラレーションモジュールと、を有し、前記ストレージデバイスは、前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第１エンドポイントと、前記アクセラレーションモジュールと通信するための前記ストレージデバイスの第２エンドポイントと、前記ストレージデバイスの動作を管理するためのコントローラと、前記アプリケーションに対するアプリケーションデータを格納するためのストアと、前記アクセラレーションコマンドを実行するのに前記ＡＰＭ−Ｆを補助するための前記ストレージデバイスのアクセラレーションプラットフォームマネージャー（以下、ＡＰＭ−Ｓ）と、を含み、前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｃｈａｎｇｅ）バスを介して通信し、前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにローディング（ｌｏａｄｉｎｇ）することなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援することを特徴とする。
【０００９】
上記目的を達成するためになされた本発明によるアクセラレーションモジュールは、ハードウェアを利用して具現されたアクセラレーションモジュールであって、アクセラレーションコマンドを実行するアクセラレーションプラットフォームマネージャー（以下、ＡＰＭ−Ｆ）と、プロセッサと通信するためのアップストリームインターフェースと、前記アクセラレーションコマンドを実行するのに前記ＡＰＭ−Ｆを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー（以下、ＡＰＭ−Ｓ）を含む前記ストレージデバイスと通信するための第１ダウンストリームインターフェースと、前記アクセラレーションコマンドを実行するのに前記ＡＰＭ−Ｆを補助するための前記ＡＰＭ−Ｓを含む前記ストレージデバイスと通信するための第２ダウンストリームインターフェースと、を有し、前記プロセッサ上でアプリケーションが実行され、前記アクセラレーションモジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、前記プロセッサ及び前記ストレージデバイスと通信し、前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをローディング（ｌｏａｄｉｎｇ）することなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対して前記アクセラレーションコマンドを実行することを支援することを特徴とする。
【００１０】
上記目的を達成するためになされた本発明によるシステムのアクセラレーション方法は、アクセラレーションモジュールを含むシステムのアクセラレーション方法であって、前記アクセラレーションモジュールにてストレージデバイスから第１ＰＣＩｅトランザクションを受信するステップと、前記第１ＰＣＩｅトランザクションが前記アクセラレーションモジュールの第１ダウンストリームルートポートで受信されるか、前記アクセラレーションモジュールの第２ダウンストリームルートポートで受信されるか、を判断するステップと、前記第１ＰＣＩｅトランザクションが前記アクセラレーションモジュールの前記第１ダウンストリームルートポートで受信されたと判断された場合、前記アクセラレーションモジュールのアップストリームポートを使用して前記第１ＰＣＩｅトランザクションをプロセッサに伝送するステップと、前記第１ＰＣＩｅトランザクションが前記アクセラレーションモジュールの前記第２ダウンストリームルートポートで受信されたと判断された場合、前記第１ＰＣＩｅトランザクションを前記アクセラレーションモジュールのＡＰＭ−Ｆで処理するステップと、を有し、前記アクセラレーションモジュールは、前記プロセッサと関連するメモリにアプリケーションデータをロードすることなく、アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対してアクセラレーションコマンドを実行することを支援し、前記プロセッサ、前記アクセラレーションモジュール、及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信することを特徴とする。
【発明の効果】
【００１１】
本発明に係るシステム及びそのアクセラレーション方法並びにアクセラレーションモジュールによれば、追加のハードウェアを使用してデータがロード（ｌｏａｄ）可能なアクセラレーションモジュールを提供できる。
従って、例えば、ＳＳＤからデータをロードするのに発生する遅延を回避することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態によるストレージデバイス上のアクセラレーションされる動作を支援する装置を示すブロック図である。
【図２】図１の装置の追加的な細部事項を示すブロック図である。
【図３】本発明の第１の実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
【図４】本発明の第１実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【図５】本発明の第２実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
【図６】本発明の第２実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【図７】本発明の第３実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
【図８】本発明の第３実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【図９】本発明の第４実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
【図１０】本発明の第４実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【図１１】本発明の第５実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
【図１２】本発明の第５実施形態に基づいて、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【図１３】本発明の第６実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
【図１４】本発明の第６実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【図１５】本発明の第７実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
【図１６】本発明の第７実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である
【図１７】本発明の第８実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
【図１８】本発明の第８実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
【図１９】本発明の実施形態による、図１のアクセラレーションモジュールとの通信を管理するブリッジ構成要素を有する図１のシステムの構成要素を示すブロック図である。
【図２０Ａ】本発明の実施形態による、図１のプロセッサ、図１のアクセラレーションモジュール、図１のストレージデバイス間の通信を説明するための図である。
【図２０Ｂ】本発明の実施形態による、図１のプロセッサ、図１のアクセラレーションモジュール、図１のストレージデバイス間の通信を説明するための図である。
【図２１】本発明の実施形態によるＰＣＩｅトランザクションを処理するための、図１のアクセラレーションモジュールに対する例示的な手順を説明するためのフローチャートである。
【図２２Ａ】本発明の実施形態によるＰＣＩｅトランザクションを処理するための、図１のアクセラレーションモジュールに対する例示的な手順を説明するためのより詳細なフローチャートである。
【図２２Ｂ】本発明の実施形態によるＰＣＩｅトランザクションを処理するための、図１のアクセラレーションモジュールに対する例示的な手順を説明するためのより詳細なフローチャートである。
【図２２Ｃ】本発明の実施形態によるＰＣＩｅトランザクションを処理するための、図１のアクセラレーションモジュールに対する例示的な手順を説明するためのより詳細なフローチャートである。
【図２３Ａ】本発明の実施形態によるＰＣＩｅトランザクションがアクセラレーションコマンドを含む図１のプロセッサから来ているか否かを判断するために、アクセラレーションモジュールに対する例示的な手順を説明するためのフローチャートである。
【図２３Ｂ】本発明の実施形態によるＰＣＩｅトランザクションがアクセラレーションコマンドを含む図１のプロセッサから来ているか否かを判断するために、アクセラレーションモジュールに対する例示的な手順を説明するためのフローチャートである。
【図２４】本発明の実施形態による、ＰＣＩｅトランザクションがアクセラレーションコマンドを含む図１のストレージデバイスから来ているか否かを判断するために、アクセラレーションモジュールに対する例示的な手順を説明するためのフローチャートである。
【図２５】本発明の実施形態に基づいて、ＰＣＩｅトランザクションがアクセラレーションコマンドを含む図１のプロセッサから来ているか否かを判断するための、第１ブリッジ構成要素の例示的な手順のフローチャートを示す。
【図２６】本発明の実施形態による、ＰＣＩｅトランザクションがアクセラレーションコマンドを含む図１のストレージデバイスから来ているか否かを判断するための、図１９の第２ブリッジ構成要素の例示的な手順を説明するためのフローチャートである。
【図２７Ａ】本発明の実施形態による、図１のストレージデバイスがＰＣＩｅトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
【図２７Ｂ】本発明の実施形態による、図１のストレージデバイスがＰＣＩｅトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
【図２７Ｃ】本発明の実施形態による、図１のストレージデバイスがＰＣＩｅトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
【図２８Ａ】本発明の実施形態による、図１のストレージデバイスが、図１のアクセラレーションモジュールから出て来るＰＣＩｅトランザクションがアクセラレーションコマンドを含んでいるか否かを判断するための、例示的な手順を説明するためのフローチャートである。
【図２８Ｂ】本発明の実施形態による、図１のストレージデバイスが、図１のアクセラレーションモジュールから出て来るＰＣＩｅトランザクションがアクセラレーションコマンドを含んでいるか否かを判断するための、例示的な手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
次に、本発明に係るシステム及びそのアクセラレーション方法並びにアクセラレーションモジュールを実施するための形態の具体例を図面を参照しながら説明する。
【００１４】
後述する詳細な説明で、多様な特定の詳細が、本発明の技術的思想に対する十分な理解を助けるために提供する。
しかし、この分野における通常の技術を有する者は、このような特定の詳細がなくても、本発明の技術的思想を具現することができる。
他の例として、よく知られている方法、手順、コンポーネント、回路及びネットワークは実施形態の側面を不必要に曖昧にしないために詳細に説明しない。
【００１５】
ここで、第１、第２などのような用語が多様なエレメントを説明するために使用するが、このような要素は、このような用語によって限定されない。
このような用語は、一つのエレメントを他の一つのエレメントと区別するためにだけ使用される。
例として、本発明の技術的思想の範囲から逸脱せずに、第１モジュールは、第２モジュールと命名されることができる。
同様に、第２モジュールは、第１モジュールと命名されることができる。
【００１６】
本発明の技術的思想の説明で使用する用語は、特定の実施形態を説明するための目的でのみ使用され、本発明の技術的思想を限定することと意図しない。
本発明の技術的思想の説明及び添付した請求項において使用したように、コンテキスト（ｃｏｎｔｅｘｔ）で明確に明示されなければ単数表現は複数表現も、また含めるものと意図する。
「及び／又は」の用語は、一つ又はそれより多くの関連された項目の任意かつすべての可能な組み合わせを含むものと参照される。
「包含する（含む）（ｃｏｍｐｒｉｓｅｓ）」及び／又は「包含する（含む）（ｃｏｍｐｒｉｓｉｎｇ）」の用語は、詳細な説明で使用した際に言及された特性、整数、ステップ、動作、エレメント、及び／又はコンポーネントの存在を明示し、一つ又はそれより多くの他の特性、整数、ステップ、動作、エレメント、コンポーネント及び／又はそれらのグループの存在又は追加を排除しない。
図面の構成及び特性は、不可欠に実際の比率に比例しない。
【００１７】
本発明の実施形態は、特定のデータ処理機能をアクセラレーションするためにＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が使用されているＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）又は他のストレージデバイスの構造を提案する。
ＦＰＧＡデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）ホストインターフェースを提供するＳＳＤの前に又は横に配置される。
ホストトランザクション（ｈｏｓｔ  ｔｒａｎｓａｃｔｉｏｎｓ）が「ＦＰＧＡ  ＰＣＩｅ」インターフェースで受信されると、ＰＣＩｅトランザクションは、バックエンドＳＳＤコントローラ（ｂａｃｋｅｎｄ  ＳＳＤ  ｃｏｎｔｒｏｌｌｅｒ）に伝達される。
「ＳＳＤ」及び「ＳＳＤコントローラ」という用語は、明示された場合を除いては、一般的に同じ意味で使用される。
【００１８】
バックエンドＳＳＤは、ＰＣＩｅエンドポイント及び不揮発性メモリエクスプレス（ＮＶＭｅ）コントローラを具現する。
したがって、ホストは、直接ＮＶＭｅプロトコルをバックエンドＳＳＤに伝達する。
つまり、ＦＰＧＡを介してホストからバックエンドＳＳＤに接続されるＰＣＩｅインターフェースは、通過（ｐａｓｓ−ｔｈｒｏｕｇｈ）特性である。
ＳＳＤは、直接メモリアクセス（ＤＭＡ）を介してホストシステムメモリとのデータ伝送を実行する。
ＦＰＧＡダウンストリームポート（ＤＳＰ）は、ＰＣＩｅトランザクションフィルタとして使用されるメモリのフィルタアドレス範囲（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ：ＦＡＲ）でプログラミングされる。
ＤＳＰは、ＦＡＲウィンドウに属するすべてのＰＣＩｅトランザクションをフィルタリングして、それらをＦＰＧＡのロジック及びメモリに伝達する。
【００１９】
プログラミングされたＦＡＲウィンドウに属していないすべてのＰＣＩｅトランザクションは、ホストシステムのメモリに属し、ホストに直接伝達される。
ＳＳＤコントローラは、「ＰＣＩｅ  ＶＤＭ」（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）メカニズム、又は「Ｉ２Ｃ／ＳＭ」バスのような他のサイドバンドバスを使用するＦＰＧＡで適切なＦＡＲウィンドウをプログラムする。
ＳＳＤコントローラは、「ＰＣＩｅ  ＢＡＲ」（Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）を介してホストにアドレス範囲のブロックを要請する。
ホストのＢＩＯＳが要請されたアドレスブロックをＳＳＤコントローラに割り当てた後、ＳＳＤコントローラは、「ＦＰＧＡ  ＤＳＰ」でそのアドレス範囲のサブセットをＦＡＲウィンドウでプログラムする。
【００２０】
ＤＳＰにプログラムされたアドレスの範囲は、ＳＳＤコントローラとＦＰＧＡとが通信し合うために使用される。
つまり、ホストがアドレスブロックを割り当てると、ＳＳＤとＦＰＧＡがＰＣＩｅ階層で互いに、又は他のＰＣＩｅデバイスを干渉せずにホストトランザクションとＰＣＩｅバスを共有することができる。
ＳＳＤコントローラは、共有ＰＣＩｅバスを介してＦＡＲウィンドウを使用してＦＰＧＡにアクセラレーションコマンドとデータを提供することができる。
ＦＰＧＡ又はホストが共有ＰＣＩｅバス及び前記のアドレス範囲を使用してＳＳＤコントローラからアクセラレーションのためのデータを要請することもできる。
ＦＰＧＡは、同じメカニズムを使用してアクセラレーションの結果をＳＳＤコントローラに再び提供することもできる。
提案された構造及びメカニズムは、低コスト及びＦＰＧＡデバイスを使用しているＳＳＤベースのアプリケーションアクセラレーションのための低消費電力の解決策を具現することができる。
【００２１】
≪提案された解決策の細部事項≫
基本的なアイディアは、ＦＰＧＡ及びＳＳＤ（及び／又は他のストレージデバイス）がホストと通信しながら（別のデバイスとして又は単一のデバイスに統合して）集合的に作動するというものである。
以下、説明において、ストレージデバイスはＳＳＤを意味する。
３つのトラフィックストリームがある。
【００２２】
１）ホストからストレージデバイスに。
ホストからストレージデバイスへの通信は、ＦＰＧＡ具現に応じてＦＰＧＡを介してストレージデバイスのＥＰに伝送されるすべてのトラフィックをアップストリームポート（ＵＳＰ）又はエンドポイント（ＥＰ）からダウンストリームポート（ＤＳＰ）、ルートポート又はルート複合ポート（ＲＰ）に単純に伝送することにより、ＦＰＧＡによって管理される。
ＦＰＧＡは、ホストとストレージデバイスとの間のＮＶＭｅ通信を支援するために、ストレージデバイスによってホストにさらされる物理関数を含み得る。
【００２３】
２）ＦＰＧＡに対するアクセラレーションコマンドの通信。
本発明のいくつかの実施形態で、アクセラレーションコマンドは、次の方式で処理される。
つまり、アクセラレーションサービスマネージャー（Ａｃｃｅｌｅｒａｔｉｏｎ  Ｓｅｒｖｉｃｅ  Ｍａｎａｇｅｒ：ＡＳＭ）が、ホスト上で実行され得る。
ＡＳＭは、ストレージデバイス（ＡＰＭ−Ｓとして識別される）とＦＰＧＡ（ＡＰＭ−Ｆとして識別される）の両方の一部として構成を含み得るＡＰＭ（Ａｃｃｅｌｅｒａｔｉｏｎ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｒ）と通信することができる。
ホスト上のＡＳＭは、アクセラレーションコマンド及び関連情報をＳＳＤに伝送するためにＮＶＭｅプロトコルを使用することができる。
その次にＳＳＤは、ＦＰＧＡと関連したアクセラレーションオーケストレーター（ｏｒｃｈｅｓｔｒａｔｏｒ）のように動作する。
ＡＰＭ−Ｓによって許容されるすべてのアクセラレーションコマンドは、独占の（ｐｒｏｐｒｉｅｔａｒｙ）インターフェースを使用してＡＰＭ−Ｆに適切なコマンドを提供するために使用される。
独占のインターフェースは、アドレス空間のウィンドウを使用して容易になる。
【００２４】
このアドレス空間ウィンドウは、ストレージデバイスの要請に応じて、ホストメモリアドレスマップ内に割り当てることができる（部分的には、ストレージデバイスとホストとの間のＮＶＭｅプロトコルを使用して通信を容易にするために）。
適切なアドレス空間でアドレスを使用するコマンドは、ホストやストレージデバイスから別のモジュールに直接通信する代わりに、ＡＰＭ−Ｆによる処理のためにＦＰＧＡによってフィルタリングされ得る。
フィルタリングは、コマンドと関連したタグを使用したり、ＰＣＩｅメッセージベースのフィルタリングを使用して実行されたりすることもできる。
このフィルタリングは、ＦＰＧＡをストレージデバイスに接続するＤＳＰ／ＲＰに接続されたフィルタによって実行され得る。
【００２５】
３）データのアクセラレーション及び処理のために、データをフェッチ（ｆｅｔｃｈ）するためのＦＰＧＡとＳＳＤとの間の通信。
本発明のいくつかの実施形態で、アクセラレーションは次の方法で行われる。
つまり、ＦＰＧＡがアクセラレーション処理のためにデータのフェッチを要請するとき、ＦＰＧＡは上述で議論された通り、ストレージデバイスとＦＰＧＡとの通信のために使用されるホストのメモリアドレスマップ内に割り当てられたアドレス空間を使用して要請を送ることができる。
【００２６】
≪ＤＳＰフィルタ構造≫
この構造は、アクセラレーションされたデータを処理するために、ＦＰＧＡと共有できるホストとＳＳＤとの間のＰＣＩｅバスによる方法を提供する。
論理的に言って、ＦＰＧＡは、ホストとＳＳＤコントローラとの間に動作可能に配置される。
ホストは、ＦＰＧＡのアップストリームポート（ＵＳＰ）に接続され、ＳＳＤは、ＦＰＧＡのダウンストリームポート（ＤＳＰ）に接続される。
【００２７】
ホスト及び／又はＳＳＤに接続するために使用されるＰＣＩｅバスは、ｘ４、ｘ８レーン（ｌａｎｅｓ）又はその他所望の幅であり得る。
ＦＰＧＡのＵＳＰ及びＤＳＰポートは、２方向の両方でＰＣＩｅトランザクション（つまり、トランザクション階層パケット（ＴＬＰｓ））を伝達する。
「ＰＣＩｅ  ＴＬＰ」の例は、構成の読み取り、構成の書き込み、メモリの読み取り及びメモリの書き込みである。
したがって、ホストは、ＳＳＤと直接通信する。
ＦＰＧＡ上のＤＳＰポートは、プログラムされたフィルタのアドレス範囲（ＦＡＲ）をベースにしたＳＳＤコントローラから出てくるすべてのＰＣＩｅトランザクションをフィルタリングするロジックを有する。
【００２８】
遮断されたＳＳＤコントローラＰＣＩｅトランザクションは、アクセラレーションプラットフォームマネージャー（Ａｃｃｅｌｅｒａｔｉｏｎ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｒ）−ＦＰＧＡ（ＡＰＭ−Ｆ）ブロックに伝達される。
ＡＰＭ−Ｆモジュールは、ＳＳＤコントローラと通信する。
ＡＰＭ−Ｆモジュールは、ＳＳＤコントローラからのアクセラレーションプラットフォームマネージャー・ＳＳＤ（ＡＰＭ−Ｓ）ファームウェアからデータ及びアクセラレーションコマンドを受信する。
その後にＡＰＭ−Ｆモジュールは、受信されたアクセラレーションコマンド及びデータをランタイム（ＲＴ）スケジューラに提供する。
ＲＴスケジューラは、データ処理を実行するために、適切なアクセラレーションエンジンを順番にプログラムする。
【００２９】
ＦＰＧＡの使用は、１つの可能な具現を示すが、ＦＰＧＡ以外の具現も使用することができる。
ＦＰＧＡは、ストレージデバイス内に具現され得る。
ＦＰＧＡは、ホストメモリにデータをフェッチした後、ホストでデータを処理するよりは、ストレージデバイスに近く実行されうる、アクセラレーションされたデータの処理を支援する。
データをフェッチする代わりに、ストレージデバイス／ＦＰＧＡは、クエリを受信して処理を局所的（ｌｏｃａｌｌｙ）に行うことができる。
【００３０】
ＳＳＤコントローラは、ＰＣＩｅの伝送を使用してＮＶＭｅプロトコル処理ロジックを具現する。
ＰＣＩｅ構成の一部として、ＳＳＤコントローラは、それ自体の用途のため、ホストシステムアドレスマップのブロックを要請する。
ＳＳＤコントローラは、ＮＶＭｅプロトコルを支援するために、一般的に必要なものよりも大きなブロックを要請する。
ストレージデバイスとＦＰＧＡとの間の通信を管理するために追加の空間の一部又は全部が使用され得る。
例として、ＮＶＭｅプロトコルは、６４ＫＢのアドレス空間が必要になり得る。
提案された構造でＳＳＤコントローラは、１０ＭＢアドレスブロックを要請することができる。
【００３１】
ＳＳＤコントローラは、ホスト透明のある方法（ｈｏｓｔ  ｔｒａｎｓｐａｒｅｎｔ  ｍａｎｎｅｒ）でＦＰＧＡと通信するために割り当てられたアドレスマップの一部を使用する。
ＳＳＤ−ＦＰＧＡ通信のために予約のシステムアドレスマップのサブセットをフィルタアドレス範囲（ＦＡＲ）と称する。
その後にＳＳＤコントローラは、「ＦＰＧＡ  ＤＳＰ」でＦＡＲウィンドウをプログラムする。
ＳＳＤコントローラは、ＦＰＧＡのＦＡＲウィンドウをプログラミングするために、Ｉ２ＣバスやＳＭバスのようなサイドバンドバスを使用することができる。
ＳＳＤコントローラは、ＦＰＧＡのＦＡＲウィンドウをプログラミングするために「ＰＣＩｅ  ＶＤＭ」（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅｓ）を使用することもできる。
【００３２】
ホストインターフェースロジック（ＨＩＬ）モジュールは、ＮＶＭｅプロトコルを具現して、ホスト上で実行中のＮＶＭｅドライバと通信する。
ＨＩＬモジュールは、一般的なホストＮＶＭｅコマンドを実行するためにＦＴＬ（Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌａｙｅｒ）と相互作用する。
さらに、ＨＩＬモジュールは、ホスト側から受信した特定のアクセラレーションコマンドを遮断し、それらをＡＰＭ−Ｓモジュールに伝達する。
ＡＰＭ−Ｓは、ファームウェア又はファームウェア＋ハードウェアとして具現することができる。
ＡＰＭ−Ｓモジュールは、特定のアクセラレーションコマンドを処理した後、アクセラレーションコマンドとデータをＦＰＧＡ上のＡＰＭ−Ｆモジュールに送るために準備する。
ＡＰＭ−Ｓモジュールは、アクセラレーション情報をＦＰＧＡに送るためにＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）アドレスを使用する。
ＡＰＭ−ＳとＡＰＭ−Ｆとの間の通信は、メッセージをベースにすることができる。
このようなＡＰＭ−ＳとＡＰＭ−Ｆとの間の通信のために、多様な方法を使用することができる。
【００３３】
提案した構造及びメカニズムは、ＦＰＧＡベースのアクセラレーションを可能にするために、ＳＳＤコントローラが、ホストＰＣＩｅバスの共有を可能にする。
本発明の実施形態は、ＳＳＤでＦＰＧＡを使用するアプリケーションのアクセラレーション化のための低コスト及び低消費電力の解決策を提供する。
【００３４】
≪ＤＳＰ＋ＵＳＰフィルタ構造≫
この構造で、ＦＰＧＡは間接的な方式でホストに表示される。
ＦＰＧＡとＳＳＤとの間の通信は、提案したソリューション１と同じように維持される。
ＳＳＤコントローラは、ホストから大きなシステムのアドレス空間を要請する。
ＳＳＤコントローラは、割り当てられたアドレスブロックを３つのウィンドウに分割する。
一番目のウィンドウは、「ＮＶＭｅ  Ｃｏｎｔｒｏｌｌｅｒ」レジスタのアドレス空間のために使用される。
二番目のウィンドウは、前述したように、ＦＰＧＡとＳＳＤとの間の通信のために使用される。
三番目のウィンドウは、ホストとＦＰＧＡとの間の通信のためのものである。
【００３５】
ホストは、特定のＮＶＭｅレジスタからＦＰＧＡデバイスの位置を発見することができる。
ＳＳＤコントローラは、ＦＰＧＡデバイスの位置を知るために、ホストアプリケーションによって読み出される特定のレジスタの三番目のウィンドウを広告することができる。
ＳＳＤコントローラは、ＵＳＰがこのようなトランザクションをフィルタリングすることができるよう、同じアドレスウィンドウでＵＳＰをプログラミングすることもできる。
ＵＳＰは、三番目ウィンドウのアドレス空間に属するホストのすべてのトランザクションをフィルタリングしてＦＰＧＡアクセラレーションロジックに伝達する。
このメカニズムは、ホスト上のアクセラレーションサービスマネージャー（ＡＳＭ）がアクセラレーションコマンド及びデータをＦＰＧＡに伝送するために使用することができる。
【００３６】
したがって、本発明のいくつかの実施形態で、フィルタリングはまた、ホストからＦＰＧＡによって受信されたトラフィックに基づいて実行することができる。
つまり、ホストは、アクセラレーションコマンド／データをＦＰＧＡに送ることもできる。
ＦＰＧＡのＤＳＰ又はＦＰＧＡのＲＰに接続されたものと類似したフィルタが、ＦＰＧＡのＵＳＰ又はＦＰＧＡのＥＰにも接続することができる。
ホストは、ストレージデバイスによって要請されたアドレス空間のアドレスを使用することができる。
ホスト−ＦＰＧＡ通信のためにホストによって使用されたアドレスは、ホスト（言い替えるが、要請されたアドレス空間は、ＮＶＭｅ通信に必要な空間より大きい可能性がある）又はホストのメモリアドレスマップ内の別のアドレス空間の一部（仮想関数又は二番目の物理関数のいずれか１つ又は両方に対して、２つの中で１つはストレージデバイスによってホストにさらされる（ｅｘｐｏｓｅｄ））とのＮＶＭｅ通信のためにストレージデバイスによって要請されたアドレス空間の一部であり得る。
【００３７】
ＵＳＰ又はＥＰ、及びＤＳＰ又はＲＰにおいて、フィルタリングは、ホストメモリアドレスマップ内の別のアドレス範囲を使用して実行することができるので、ホストが必要に応じてストレージデバイス又はＦＰＧＡにコマンドを送ることができることに留意する必要がある（ストレージデバイスがＦＰＧＡと通信するように許諾する間にも必要である）。
【００３８】
アドレス空間の一部が、ホストとＦＰＧＡとの間の通信を支援する本発明のいくつかの可能性があるで、ＦＰＧＡは、ホストに直接見えない可能性がある。
この場合には、ホスト上のＡＳＭは、ホスト−ＦＰＧＡの通信に使用されるアドレスの範囲を識別するためのＮＶＭｅアドレス空間の特定のレジスタに記録されたアドレスにアクセスすることにより、ＦＰＧＡを「発見」することができる。
ＡＳＭは、ＰＣＩｅデバイステーブルを介してストレージデバイスを検索することができ、ＮＶＭｅアドレス空間のどのレジスタがホスト−ＦＰＧＡ通信アドレス空間に対するポインタを格納するかがわかる。
【００３９】
≪ＶＦ＋ＤＳＰフィルタ構造≫
このＦＰＧＡ＋ＳＳＤの構造で、ＳＳＤは一つの物理関数（機能）（ｐｈｙｓｉｃａｌ  ｆｕｎｃｔｉｏｎ：ＰＦ）と１つの仮想関数（ｖｉｒｔｕａｌ  ｆｕｎｃｔｉｏｎ：ＶＦ）をホストに「さらす（曝す）」（ｅｘｐｏｓｅ、以下、見えるようにするの意味で用いる）。
ＳＳＤコントローラは、ＰＦを介してさらされる。
ＶＦは、ＦＰＧＡをさらすために使用される。
【００４０】
ＰＦクラスコードは、大容量ストレージデバイスを示すことができる一方、ＶＦクラスコードは、ＦＰＧＡを識別するために設定することができる。
ＳＳＤコントローラのＰＦは、大規模システムメモリのアドレスブロックを要請してＦＰＧＡのアドレス指定ブロックのサブセットが「ＦＰＧＡ  ＤＳＰ」を通してＦＰＧＡとＳＳＤとのの間の通信に使用することができ、ＳＳＤコントローラＶＦは、「ＦＰＧＡ  ＵＳＰ」を介してＦＰＧＡとホストとの間の通信のために、それ自体のメモリアドレスブロックを要請することができる。
【００４１】
「ＦＰＧＡ  ＵＳＰ」は、ＰＣＩｅトランザクションフィルタとして使用することができる、他のメモリのフィルタアドレス範囲及び／又はＶＦタグ（ＦＡＲ−ＵＳＰ）でプログラムされ得る。
ＵＳＰは、ＦＡＲウィンドウ及び／又はＶＦに属するすべてのＰＣＩｅトランザクションに属するすべてのＰＣＩｅトランザクションをフィルタリングすることができ、これをＦＰＧＡのアクセラレーションロジック及びメモリに伝達することができる。
プログラミングされたＦＡＲ−ＵＳＰウィンドウに属していないすべてのＰＣＩｅトランザクション又はＶＦに属していないトランザクションは、ＳＳＤに属し、ＳＳＤに直接伝達され得る。
ＳＳＤコントローラは、この情報を通信するために、「ＰＣＩｅ  ＶＤＭ」メカニズム又はＩ２Ｃ／ＳＭバスのような他のサイドバンドバスを使用する適切なＦＡＲ−ＵＳＰウィンドウをプログラムすることができる。
【００４２】
このＦＡＲアドレスウィンドウは、ホスト上で実行中のＡＳＭソフトウェアがＡＰＭ−Ｆとの通信を可能にする。
つまり、ＦＰＧＡはホストに直接見えることができる。
ＡＳＭソフトウェアは、アクセラレーションオーケストレーションコマンドとデータをＦＰＧＡに送るために、このＰＣＩｅアドレス範囲を使用することができる。
その後に、ＡＰＭ−Ｆは、受信したアクセラレーションコマンド及びデータをランタイム（ＲＴ）スケジューラに提供する。
ＲＴスケジューラは、データ処理を実行するために、適切なアクセラレーションエンジンを順番にプログラミングする。
なお、ＡＰＭ−Ｆは、ホストメモリ又はＳＳＤストアからデータをフェッチすることができる。
【００４３】
≪ＰＦ＋ＤＳＰフィルタ構造≫
このＦＰＧＡ＋ＳＳＤの構造は、ＶＦを使用する代わりに、第２ＰＦを使用してＦＰＧＡをホストに「さらす」ことを除いて提案したソリューション３と類似する。
ＳＳＤコントローラは、２つの物理関数（機能）をホストに「さらす」。
第１ＰＦは、ＳＳＤコントローラのために使用され、第２ＰＦはＦＰＧＡのために使用される。
第２ＰＦの基本アドレスは、ＦＰＧＡのＦＡＲ−ＵＳＰでプログラミングすることができる。
したがって、ＵＳＰは、第２ＰＦに対しプログラムされたアドレス範囲（ＦＡＲ−ＵＳＰ）にあるホストから来るすべてのトランザクションをフィルタリングすることができ、それらをＦＰＧＡに伝達することができる。
このメカニズムは、ＦＰＧＡと通信するためホスト上で実行中のＡＳＭにより使用され得る。
【００４４】
仮想関数（機能）又は（第２）物理関数（機能）をホストに「さらす」ことにより、ホスト−ＦＰＧＡ通信のためのアドレス空間がホスト（ストレージデバイスによって又はＦＰＧＡによって）から要求され得る。
仮想関数（機能）又は第２の物理的関数（機能）が「さらされた」場合、ＵＳＰ／ＥＰのフィルタは、ホスト−ＦＩＦＩ通信に割り当てられたアドレスの範囲に基づいて、又は「さらされた」仮想関数（機能）や「さらされた」第２の物理的関数（機能）（例えば、フィルタ番号又は他のタグによって）をフィルタリングすることができる。（仮想関数（機能）は、オペレーティングシステムの支援を要求する。そして第２の実際の関数（機能）が具現されたり、支援されたりする場合、第２の物理的関数（機能）を「さらす」ことは、仮想関数の使用に対する代替の解決策を提案する。）
【００４５】
≪ＰＦ＋ＲＰフィルター構造≫
この「ＦＰＧＡ  ＳＳＤ」構造で、「ＦＰＧＡ  ＰＣＩｅ」ポートは、ＵＳＰ及びＤＳＰではない、ＥＰ（ｅｎｄｐｏｉｎｔ）及びＲＰ（ｒｏｏｔ  ｐｏｒｔ）である。
ＵＳＰ／ＤＳＰとＥＰ／ＲＰポートとの違いは、ＥＰ／ＲＰの両方がそれら自体のＰＣＩｅ構成空間を有する反面、ＵＳＰ／ＤＳＰポートはそうではないということである。
本発明のこのような実施形態による構造で、ＦＰＧＡは２つのＰＦをホストに「さらす」ことができる（ＰＦ／ＶＦを提供するＳＳＤがＦＰＧＡを「さらす」よりは、ＦＰＧＡがそれ自身のＰＦをホストに「さらす」ことに注目する）。
【００４６】
「ＳＳＤ  ＥＰ」は、ＦＰＧＡ上のＲＰに接続することができる。
「第１ＦＰＧＡ  ＥＰ／ＰＦ」は、ホストをＳＳＤに直接接続するために使用することができる反面、「第２ＦＰＧＡ  ＥＰ／ＰＦ」は、ホストをＦＰＧＡに接続するために使用することができる。
このメカニズムは、ＦＰＧＡと通信するためにホストで実行中のＡＳＭにより使用することができる。
ＳＳＤ−ＦＰＧＡ通信は「ＦＰＧＡ  ＲＰ」と「ＳＳＤ  ＥＰ」の間でアドレス空間マップの一部を使用することができる。
本発明のいくつかの実施形態で、第１ＦＰＧＡ（ＰＦ）は、大規模なアドレス空間を要求することができ、ＢＩＯＳ割り当てられたアドレスウィンドウは、ＳＳＤコントローラ（ＥＰ）にマッピング又は変換することができる。
このアドレス空間の一部は、ローカルＦＰＧＡ−ＳＳＤ通信のために使用することができる。
本発明の他の実施形態で、「第２ＦＰＧＡ  ＥＰ」のために割り当てられたアドレス空間の部分は、ＦＰＧＡとＳＳＤコントローラの間の通信のために使用することができる。
【００４７】
≪ＰＦ＋デュアルポートＳＳＤの構造≫
このＦＰＧＡ−ＳＳＤの構造で、デュアルポートＳＳＤは、ＦＰＧＡとともに使用される。
この構造で、ＦＰＧＡ（言い換えると、ＦＰＧＡはＰＦ／ＶＦを提供するＳＳＤがＦＰＧＡを「さらす」よりは、それ自身のＰＦを「さらす」）は、二つのＰＦをホストに「さらす」ことができる。
「ＳＳＤ  ＥＰ」は、ＦＰＧＡ上のＲＰに接続することができる。
「第１ＦＰＧＡ  ＥＰ／ＰＦ」は、ホストをＳＳＤに直接接続するために使用することができる。
「第２ＦＰＧＡ  ＥＰ／ＰＦ」のために来る、すべてのホストのトランザクションは、ＦＰＧＡアクセラレーションロジックに伝達することができる。
ホスト上で実行中のＡＳＭソフトウェアは、ＦＰＧＡと通信するための「第２ＦＰＧＡ  ＥＰ／ＰＦ」を使用することができる。
【００４８】
ＦＰＧＡ−ＳＳＤ通信（アクセラレーション処理用）のために、ＳＳＤの「第２ＰＣＩｅ  ＥＰ」を使用することができる。
したがって、ＦＰＧＡはＳＳＤに接続された二つのＲＰを有する。
ＳＳＤの第１ＥＰポートは、一般的なホストストレージアクセスのためにホストとの通信に使用することができる。
ＳＳＤの第２ＥＰは、処理のためにＦＰＧＡに必要なすべてのデータを伝送するために使用することができる。
【００４９】
言及したように、ストレージデバイスが２つの（又は潜在的にもっと多くの）のポートを支援できる本発明の実施形態で、ＦＰＧＡは、ストレージデバイス上の２つのＥＰと通信するために２つのＲＰを支援することができる。
このような本発明の実施形態で、ＦＰＧＡ上の一つのＲＰ（及びそれに対応するストレージデバイス上のＥＰ）は、ストレージデバイスとホストとの間の通信を管理するために使用することができ、ＦＰＧＡ上の他のＲＰ（及びそれに対応するストレージデバイス上のＥＰ）は、ストレージデバイスとＦＰＧＡの間の通信を管理するために使用することができる（アクセラレーションコマンド又はデータのための）。
本発明の斯かる実施形態で、ＦＰＧＡ上のＲＰは、２つのアドレスマップ（各ＲＰごとに１つずつ）を支援することができる。
したがって、ホストとストレージデバイスの間の通信を支援するＲＰのためのアドレスマップは、ＮＶＭｅコマンドのために割り当てられた空間を含むことができ、他のアドレスマップ（アクセラレーションコマンド／データの通信を管理するＲＰのための）は、全的に通信のために作られ得る。
【００５０】
本発明の斯かる実施形態で、ホストメモリアドレスマップは、ホストがアクセラレーションコマンドをストレージデバイスに通信するように意図された任意のアドレス空間を省略することができるが、これは、斯かるすべてのコマンドがホストからＦＰＧＡに伝達されることができるからである（アドレス空間を介してＦＰＧＡの要請が、斯かる通信のためのホストのメモリアドレスマップ内に割り当てられる）。
その後に、ＦＰＧＡはコマンドを処理し、ＦＰＧＡとストレージデバイスの間の通信専用に指定された第２のＲＰのメモリアドレスマップを使用して、必要に応じて、コマンド／データをストレージデバイスに伝達することができる。
【００５１】
ＥＰ／ＲＰが、ＦＰＧＡでＵＳＰ／ＤＳＰの代わりに使用される場合、ＥＰ／ＲＰはＰＣＩｅ構成空間を支援することができ、ＦＰＧＡは、それの物理関数（機能）をホストに直接「さらす」ことができる（このような機能をストレージデバイスに残すことにより）。
ＦＰＧＡによって「さらされた」一つの物理関数（機能）は、ホストからストレージデバイスへの通信を指示するために使用することができる。
他の物理関数（機能）は、ホストとＦＰＧＡの間の通信に使用することができる。
本発明の斯かる実施形態で、ストレージデバイスがこのような要求を発生させることにより、ＦＰＧＡは、ホストから割り当てられるアドレス空間を要求することができる。
【００５２】
ＥＰ／ＲＰは、それら自体のメモリマップを支援することもできる。
したがって、ＦＰＧＡは、ホストのメモリアドレスマップを使用してホストと通信することができ、ＦＰＧＡはストレージデバイスと通信するために使用される、それ自体のメモリアドレスマップを支援することができる。
本発明の斯かる実施形態で、ＦＰＧＡは、ホストからストレージデバイスへの通信を支援するために、ホストのメモリアドレスマップに割り当てられた空間を要請することができ（ＦＰＧＡを介して発生する、そのような通信により）、追加の空間は、ホストからＦＰＧＡへの通信をサポートするために、ホストのメモリアドレスマップに割り当てられる。
ＦＰＧＡのメモリアドレスマップは、ホストからストレージデバイスへコマンドを通信してＦＰＧＡとストレージデバイスの間でアクセラレーションコマンド／データを通信するためのそれ自体の空間の割り当てを含むことができる。
ＦＰＧＡは、ホストとストレージデバイスの間の通信のために使用されるアドレス空間を、ＦＰＧＡとストレージデバイス（同一サイズであるべき）との間の通信のために使用されるアドレス空間に変換することができる。
【００５３】
ＦＰＧＡが、ＥＰ／ＲＰを含む場合、ホストは、ＦＰＧＡを直接「見る」。
これは、ＰＣＩｅ機能がＦＰＧＡによって「さらされる」問題を提起する。
ＦＰＧＡは、ストレージデバイスと同じＰＣＩｅ機能を「さらさ」なければならない。
したがって、ＦＰＧＡには、ストレージデバイスの「ＳＳＤコントローラＥＰ  ＰＣＩｅ」構成をマッチングするために「ＦＰＧＡのＥＰ  ＰＣＩｅ」構成を設定するＰＣＩｅ構成モニタを含み得る。
なお、ホストがＦＰＧＡのＥＰのＰＣＩｅ構成を変更する場合、ストレージデバイスのＥＰのＰＣＩｅ構成は、同様に修正され得る。
【００５４】
本発明の実施形態は、全体の機能が維持されるのならば、ＦＰＧＡ内で記述されたような構成／機能を複数の個別エレメントに分割することを支援できる。
ＦＰＧＡ構成は、ハードウェア、ソフトウェア／ファームウェア、又はこの２つの組み合わせを使用して具現することができる。
【００５５】
図１は、本発明の一実施形態によるストレージデバイス上のアクセラレーションされる動作を支援する装置１０５を示すブロック図である。
装置１０５は、プロセッサ１１０を含む。
プロセッサ１１０は、任意の多様なプロセッサであり得る。
つまり、例として、Ｉｎｔｅｌ（登録商標）  Ｘｅｏｎ（登録商標）、Ｃｅｌｅｒｏｎ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、Ａｔｏｍ（登録商標）プロセッサ、ＡＭＤ（登録商標）  Ｏｐｔｅｒｏｎ（登録商標）プロセッサ、又はＡＲＭ（登録商標）プロセッサなどである。
【００５６】
図１は、装置１０５内の単一のプロセッサ１１０を示し、装置１０５は、それぞれ、単一のコア又はマルチコアプロセッサであり得る任意の数のプロセッサを含むことができ、任意の所望の組み合わせで混合することができる。
プロセッサ１１０は、ストレージデバイス１２０へのアクセスを支援できるデバイスドライバ１１５を実行することができ、相異なるデバイスドライバは、デバイス１０５の他の構成に対するアクセスを支援することができる。
この明細書の全般にかけて、ストレージデバイス１２０は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）のストレージデバイス１２０のように説明するが、ストレージデバイス１２０は、以下の本発明の実施形態で説明する、アクセラレーション化されたコマンドを支援する任意の他のタイプのストレージデバイスであり得る。
プロセッサ１１０は、また、アクセラレーションコマンドを含む任意のアプリケーションであり得るアプリケーション１２５及びストレージデバイス１２０上に格納されたデータに対して実行されるアクセラレーションコマンドを伝送するために使用できるアプリケーションサービスマネージャ（ＡＳＭ）１３０を実行することができる。
【００５７】
装置１０５は、また、（メイン）メモリ１４０へのアクセスを管理するために使用することができるメモリコントローラ１３５を含む。
メモリ１４０は、フラッシュメモリ、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、永久ランダムアクセスメモリ、強誘電体ランダムアクセスメモリ（ＦＲＡＭ（登録商標））、又は磁気ランダムアクセスメモリ（ＭＲＡＭ）などのような不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）のような任意の他のタイプのメモリであり得る。
【００５８】
装置１０５は、また、アクセラレーションモジュール１４５を含む。
アクセラレーションモジュール１４５は、ストレージデバイス１２０に格納されたデータに対して、プロセッサ１１０によって要請されたアクセラレーションコマンドを実行することにより、プロセッサ１１０を補助する。
アクセラレーションモジュール１４５は、ファームウェア単独又はハードウェアとファームウェアを組み合わせて使用して具現することができる。
この明細書の全般にかけて、アクセラレーションモジュール１４５は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）１４５のように説明するが、アクセラレーションモジュール１４５は、以下の本発明の実施形態で説明するようにアクセラレーションコマンドを支援する任意の他のタイプのアクセラレーションモジュールでもあり得る。
例として、アクセラレーションモジュール１４５は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＳＳＤのＩＳＣ（Ｉｎ−Ｓｔｏｒａｇｅ  Ｃｏｍｐｕｔｉｎｇ）能力又は他の具現として具現したり、使用したりすることができる。
【００５９】
なお、図１は、装置１０５をサーバ（スタンドアロン又はラックサーバであり得る）のように示すが、本発明の実施形態は、任意の所望のタイプの装置１０５を制限なしに含むことができる。
例として、装置１０５は、デスクトップ、ラップトップコンピュータ、又は本発明の実施形態から利益を得ることができる任意の他の装置に代替することができる。
装置１０５は、また、特殊化されたポータブルコンピューティングマシンに、タブレットコンピュータに、スマートフォン、及び他のコンピューティングマシン（ｍａｃｈｉｎｅ：機械）を含むことができる。
なお、図１は、ストレージデバイス１２０、アプリケーション１２５、及びＡＳＭ（アクセラレーションサービスマネージャー）１３０を含む装置１０５を示すが、本発明の実施形態は、別のマシンで、それらの構成を有することができる。
例として、ストレージデバイス１２０は、１つ以上のネットワーク（有線、無線、グローバルなど）を通過するネットワーク接続を介して装置１０５（及びアプリケーション１２５及びＡＳＭ１３０）に接続されたサーバにインストールすることができる。
【００６０】
図１に示した構成の特定の方式にかかわらず、「ホスト」、「ホストマシン」又は「ホストプロセッサ」という用語は、装置１０５を記述するために使用することができる。
これは、プロセッサ１１０を独創的な概念の他の構成と区別し得る。
【００６１】
図１の構成の中で、本発明の実施形態に関連のある３つのトラフィックストリームが存在する（本発明の実施形態とは関係のない他のトラフィックストリームが有り得る）。
１）ホストからストレージデバイス１２０まで。
ホスト（プロセッサ１１０）がストレージデバイス１２０に通信を送ることができる。
本発明の実施形態で、このようなすべてのトラフィックは、アクセラレーションモジュール１４５を通過し、アクセラレーションモジュール１４５によってストレージデバイス１２０に到達することから遮断されてはならない。
斯かるトラフィックの実施形態は、ストレージデバイス１２０からデータを読み出すための、及び／又はストレージデバイス１２０にデータを記録するためのコマンドを含み得る。
つまり、ストレージデバイス１２０によって提供される他のコマンドもこのようなトラフィックに含まれ得る。
【００６２】
２）ＡＳＭ１３０からアクセラレーションモジュール１４５まで。
ＡＳＭ１３０は、特定のアクセラレーションコマンドが実行されるように要請する。
いずれにせよ、本発明の特定の実施形態にかかわらず、アクセラレーションモジュール１４５は、ＡＳＭ１３０からアクセラレーションコマンドを受信しなければならない。
【００６３】
３）アクセラレーションモジュール１４５からストレージデバイス１３０まで。
アクセラレーションコマンドを実行するために、アクセラレーションモジュール１４５は、ストレージデバイス１３０からデータをフェッチまたは受信する必要が有り得る。
【００６４】
図２は、図１の装置の追加的な細部事項を示している。
図２で、典型的に、装置１０５の追加的な事項は、装置１０５の構成要素の動作を調整するために使用され得る、メモリコントローラ１３５及びクロック２０５を含む１つ以上のプロセッサ１１０を含む。
なお、プロセッサ１１０は、例として、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）又は媒体を保存する他の状態を含むメモリ１４０に接続することができる。
プロセッサ１１０は、また、ストレージデバイス１２０及び、例としてイーサネット（登録商標）コネクタ又は無線コネクタであり得るネットワークコネクタ２１０に接続され得る。
プロセッサ１１０は、また、バス２１５に接続され得、これには、他の構成要素の中で、ユーザーインターフェース２２０及び入力／出力エンジン２２５を使用して管理され得る入力／出力インターフェースポートを取り付けることができる。
≪第１実施形態≫
【００６５】
図３は、本発明の第１実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
図３において、プロセッサ１１０、アクセラレーションモジュール（以下、ＦＰＧＡとして説明）１４５とＳＳＤ１２０は、通信すること示している。
図３において、プロセッサ１１０、ＦＰＧＡ１４５及びＳＳＤ１２０は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）バスを介して通信する。
ＰＣＩｅバスは、任意の数のレーンを使用することができる。
つまり、典型的な例は、ｘ４及びｘ８であるが、本発明の実施形態は、任意の他の所望の数のレーンを使用することができる。
この通信は、不揮発性メモリエクスプレス（ＮＶＭｅ）プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット（ＴＬＰ）であり得るＰＣＩｅトランザクションを含むが、本発明の実施形態は、他のエンコーディングを使用する通信又は他のプロトコルのコマンドを含むために拡張することができる。
【００６６】
ＳＳＤ１２０は、エンドポイント（ＥＰ）３０５、ホストインターフェース層（ＨＩＬ）３１０、アクセラレーションプラットフォームマネージャ（ＡＰＭ−Ｓ）３１５、フラッシュ変換階層（ＦＴＬ）３２０、及びフラッシュメディア３２５を含む。
エンドポイント３０５は、ＳＳＤ１２０がＰＣＩｅ通信を受信して伝送する論理的又は物理的な接続ポイントであり得る。
ＳＳＤ１２０がエンドポイント３０５でプロセッサ１１０からＰＣＩｅトランザクションを受信する場合（ＦＰＧＡ１４５を介して）、ＳＳＤ１２０は、ＰＣＩｅトランザクションをＨＩＬ３１０に伝達する。
その後に、ＨＩＬ３１０は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むかどうかを判断する。
ＰＣＩｅトランザクションがアクセラレーションコマンドを含む場合、ＨＩＬは処理のためにＰＣＩｅトランザクション（又はＰＣＩｅトランザクションから圧縮解除されたアクセラレーションコマンドそのもの）をＡＰＭ−Ｓ３１５に伝送する。
つまり、「ＡＰＭ−Ｓ」３１５は、ファームウェア単独又はハードウェアとファームウェアの組み合わせを使用して具現することができる。
そうでなければ、ＨＩＬ３１０は、ＦＴＬ３２０にＰＣＩｅトランザクション（又は圧縮解除されたＮＶＭｅコマンド）を伝達し、ＦＴＬは、図１のアプリケーション１２５によって使用される論理ブロックアドレス（ＬＢＡ）を物理ブロックアドレス（ＰＢＡ）に変換し、フラッシュメディア３２５に格納されたデータにアクセスする。
【００６７】
「ＡＰＭ−Ｓ」３１５が処理することができる、基本的に２つのタイプのアクセラレーションコマンドがある。
アクセラレーションコマンドの第１タイプは、プロセッサ１１０からの特定のコマンドであり得る。
本発明の第１実施形態で、ＦＰＧＡ１４５は、プロセッサ１１０に見えない可能性がある。
つまり、プロセッサ１１０は、すべてのそれの通信をＳＳＤ１２０に伝送する。
プロセッサ１１０が、アプリケーションデータで実行されるためにアクセラレーションコマンドを所望する場合、プロセッサ１１０は、特定のコマンドをＳＳＤ１２０に伝達する。
プロセッサ１１０は、ＳＳＤ１２０に、特定のコマンド／アクセラレーションコマンドをトンネリングするためにＮＶＭｅコマンドを使用する。
ＨＩＬ３１０は、「ＡＰＭ−Ｓ」３１５に伝達することができる、特定のコマンドをインターセプトする。
その後に、「ＡＰＭ−Ｓ」３１５は、アクセラレーションコマンドを実行するためにＦＰＧＡ１４５に再び伝送される特定のコマンドに応答してアクセラレーションコマンドを生成する。
この特定のコマンドは、例として、実行されるアクセラレーションコマンドの特定のタイプ及びアクセラレーションコマンドのオペレーションが実行されるデータをエンコーディングする。
【００６８】
「ＡＰＭ−Ｓ」３１５が処理できるアクセラレーションコマンドの第２のタイプは、データを含む。
例として、ＦＰＧＡ１４５は、フラッシュメディア３２５に直接アクセスしていない可能性があり、したがって、アクセラレーションコマンドが実行されるデータを受信せずにアクセラレーションコマンドを実行することができない。
したがって、「ＡＰＭ−Ｓ」３１５は、ＦＰＧＡ１４５から問題のデータを要請するアクセラレーションコマンドを受信する。
その後、「ＡＰＭ−Ｓ」３１５は、ＦＰＧＡ１４５がアクセラレーションコマンドを実行できるようにするために、要求されたデータにアクセスし、それをＦＰＧＡ１４５に返す。
【００６９】
図３において、ＳＳＤ１２０は、ＳＳＤで使用するのに適したＦＴＬ３２０及びフラッシュメディア３２５を含むものと示している。
ＳＳＤ１２０は、代替ストレージデバイスに置き換えると、これらの構成要素は、ストレージデバイスのタイプに適した代替の構成要素に置き換えることができる。
例として、ＳＳＤ１２０は、ハードディスクドライブに置き換えると、フラッシュメディア３２５は、ハードディスクプラッタに置き換えることができる。
データアクセスを支援するために追加の構成要素がまた含まれ得る。
つまり、ハードディスクドライブストレージデバイスの例を続けると、ストレージデバイスは、また、適切な読み取り／書き込みヘッドを含み得る。
【００７０】
ＦＰＧＡ１４５がプロセッサ１１０とＳＳＤ１２０との間の通信をインターセプトする前に、ＳＳＤ１２０は、プロセッサ１１０からホストメモリアドレスのブロックを要求する。
ホストメモリシステムアドレスのブロックに対する、このような要求は、ＰＣＩｅトランザクションを使用するとき、一般的であり、スタートアップのとき、又は後で実行され得る。
それに応答して、プロセッサ１１０（又は図１の装置１０５の基本的な入力／出力システム（ＢＩＯＳ））は、ＳＳＤ１２０による使用のために、ホストメモリシステムアドレスのブロックを割り当てる。
その後、ホストマシンは、このホストメモリシステムアドレスのブロックが、図１の装置１０５で他のデバイスによって利用できないことを知る。
【００７１】
図４は、本発明の第１実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用説明するための図である。
図４で、ＳＳＤ１２０は、ホストメモリシステムアドレスのブロックを要請する。
プロセッサ１１０とＳＳＤ１２０との間のＮＶＭｅ通信を支援するために必要なメモリの量は比較的少ないが、例として、（６４ＫＢ−）ＳＳＤ１２０は、はるかに大きいブロック、例として１０ＭＢ以上を要求する。
それに応答して、プロセッサ１１０は、ホストメモリシステムのアドレスブロック４０５を返す。
ブロック４０５の一端は、ＢＡＲ（Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）に格納され、ＳＳＤ１２０がＢＡＲ（そして要請されたブロックのサイズのＳＳＤ１２０の情報（ｋｎｏｗｌｅｄｇｅ）とともに）に基づいて、ブロック４０５を判断する。
【００７２】
一旦ＳＳＤ１２０が、どのようなアドレスがブロック４０５に在るかを知れば、ＳＳＤ１２０は、ブロック４０５をそれ自身の使用のために、相異なる領域に分けることができる。
ブロック４０５の１つのサブセット４１０は、ＮＶＭｅ通信のために使用される。
他のサブセット４１５は、使用されないまま残され得る。
（ダウンストリーム）ＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）４２０（任意のフィルタリングがプロセッサ１１０からのダウンストリームで行われるので、「ダウンストリーム」）と称される第３サブセットは、ＳＳＤ１２０とＦＰＧＡ１４５との間の通信のための専用に使用される。
ダウンストリームＦＡＲ４２０は、ＳＳＤ１２０及びＦＰＧＡ１４５の両方で使用できることに注目する。
いずれか１つは、問題のＰＣＩｅトランザクションがアクセラレーションコマンドを含むことを示すために、ダウンストリームＦＡＲ４２０でアドレスを使用する。
【００７３】
図３に戻って、ＳＳＤ１２０がダウンストリームＦＡＲ４２０でアドレスを使用して通信を伝送すると、ＦＰＧＡ１４５は、ダウンストリームポート３３５で通信を受信し、通信をインターセプトし、その通信をプロセッサ１１０に伝達するよりは局部（局所）的に処理する。
ダウンストリームＦＡＲ４２０を含んでいないＳＳＤ１２０からのダウンストリームポート３３５でＦＰＧＡ１４５によって、プロセッサ１１０が受信する任意の通信は、アップストリームポート３３０を介してＦＰＧＡ１４５によりプロセッサ１１０に伝達される（ＦＰＧＡ１４５がアップストリームポート３３０で、プロセッサ１１０から受信する任意の通信は、ダウンストリームポート３３５を介して自動的にＳＳＤ１２０に伝達される）。
【００７４】
ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との間の通信をインターセプトできるように、プロセッサ１１０とＳＳＤ１２０の間に位置する。
このような通信をインターセプトすることにより、ＦＰＧＡ１４５は、ＳＳＤ１２０によって要請されたアクセラレーションコマンドを実行する。
【００７５】
アクセラレーションコマンドを実行するために、ＦＰＧＡ１４５は、アップストリームポート３３０、ダウンストリームポート３３５、アクセラレーションプラットフォームマネージャ（ＡＰＭ−Ｆ）３４０、スケジューラ３４５、及びアクセラレーションエンジン（３５０−１及び３５０−２）を含む。
アップストリームポート３３０は、プロセッサ１１０と通信するために使用する。
ダウンストリームポート３３５は、ＳＳＤ１２０と通信するために使用する。
「ＡＰＭ−Ｆ」３４０は、ＦＰＧＡ１４５がインターセプトした任意のアクセラレーションコマンドを受信することに対する責任がある。
斯かるアクセラレーションコマンドは、メッセージのメールボックス３５５を使用してダウンストリームポート３３５からメッセージのように受信するが、本発明の実施形態は、ＡＰＭ−Ｆがアクセラレーションコマンドを受信するための他のメカニズムに拡張され得る。
【００７６】
一度アクセラレーションコマンドを受信すると、「ＡＰＭ−Ｆ」３４０は、アクセラレーションコマンドを処理する。
例として、ＦＰＧＡ１４５がアクセラレーションコマンドを実行できる、十分な情報を有する場合、「ＡＰＭ−Ｆ」３４０は、アクセラレーションコマンドをアクセラレーションエンジン（３５０−１及び３５０−２）のような任意の利用可能なアクセラレーションエンジンでスケジューリングすることができるスケジューラ３４５（「ランタイムスケジューラ」と称され得る）にアクセラレーションコマンドを通過させる。
一方、図３は、２つのアクセラレーションエンジン（３５０−１、３５０−２）を示すが、本発明の実施形態は、任意の所望の数のアクセラレーションエンジンを含むことができる。
つまり、図３に示した２つは、単に例示的な目的のためのものである。
代案的に、ＦＰＧＡ１４５がアクセラレーションコマンドを実行するための追加情報を必要とする場合、つまり例として、ＦＰＧＡ１４５は、アクセラレーションコマンドが実行されるデータを必要とし、「ＡＰＭ−Ｆ」３４０は、ＰＣＩｅトランザクションを、必要なデータを要請するＳＳＤ１２０に送るような他の動作をとる。
【００７７】
特定のＰＣＩｅトランザクションが、アクセラレーションコマンドを含むか否かを判断するために、ＦＰＧＡ１４５は、ダウンストリームポート３３５に関連したダウンストリームフィルタ３６０を含む。
ダウンストリームフィルタ３６０は、アクセラレーションコマンドを含むＳＳＤ１２０から発行されたＰＣＩｅトランザクションを識別する。
これは所望する方式で実行することができる。
本発明のいくつかの実施形態で、ＳＳＤ１２０は、図４のダウンストリームＦＡＲ４２０でダウンストリームフィルタ３６０をプログラミングすることができる。
その後、ダウンストリームフィルタ３６０が、図４のダウンストリームＦＡＲ４２０でアドレスを使用するＰＣＩｅトランザクションを識別するとき、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションを、アクセラレーションコマンドを含むものと識別し、ＰＣＩｅトランザクションをインターセプトする。
【００７８】
ＳＳＤ１２０は、任意の所望の方式でダウンストリームフィルタ３６０をプログラミングすることができる。
例として、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をプログラミングするために、内部の集積回路バス（Ｉ２Ｃバス）、又はシステム管理バス（ＳＭバス）のようなサイドバンドバス３６５を使用することができる。
また、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をプログラミングするために、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用することができる。
ＳＳＤ１２０は、また、ダウンストリームフィルタ３６０をプログラミングするために他のメカニズムを使用することができる。
【００７９】
図３において、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものと示している。
つまり、具体的には、アップストリームポート３３０、ダウンストリームポート３３５、及びダウンストリームフィルタ３６０である。
ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０と通信するいくつかのメカニズムを必要とするが、本発明の実施形態は、通信要素をＦＰＧＡ１４５から分離することができる。
例として、ダウンストリームポート３３５とダウンストリームフィルタ３６０は、つまり、プロセッサ１２０に伝達される代わりにアクセラレーションコマンドを含むＳＳＤ１２０から受信したＰＣＩｅトランザクションを識別すること（及び「ＡＰＭ−Ｆ」３４０にリダイレクトする必要があり）に対する責任のある後者であり、ＦＰＧＡ１４５とＳＳＤ１２０との間のブリッジの構成要素（図３に図示せず）に配置される。
これらのブリッジの構成要素は、ＦＰＧＡ１４５とＳＳＤ１２０と通信するために必要なので、ＦＰＧＡ１４５は、相変わらずダウンストリームポート３３５（又はブリッジ構成要素との通信を可能にする代案的な構造）を含むが、その後にダウンストリームフィルタ３６０は、ＦＰＧＡ１４５から除去される。
【００８０】
前述した本発明の第１実施形態は、プロセッサ／ＦＰＧＡ／ＳＳＤの具現の可能な組み合わせを示す。
以下で、本発明の他の実施形態として説明する他の具現もまた可能である。
特定の構成の動作（例として、「ＡＰＭ−Ｆ」３４０、スケジューラ３４５、及びアクセラレーションエンジン（３５０−１及び３５０−２）の動作）の間に差異がない場合、それらの動作の繰り返しの説明は、後続の本発明の実施形態で省略する。
【００８１】
≪第２実施形態≫
図５は、本発明の第２実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
本発明の第２実施形態は、アップストリームポート３３０が、フィルタも含むことを除いては、本発明の第１実施形態と類似する。
つまり、アップストリームフィルタ５０５である。
【００８２】
アップストリームフィルタ５０５は、ダウンストリームフィルタ３６０と類似の方式で、プロセッサ１１０（アップストリームポート３３０を介して受信された）から来るＰＣＩｅトランザクションをフィルタリングする。
例として、ＳＳＤ１２０は、図４のダウンストリームＦＡＲ３６５と同様に、アップストリームＦＡＲを定義することができ、サイドバンドバス３６５、ＰＣＩｅ、ＶＤＭ、又は任意の他のメカニズムを使用してアップストリームＦＡＲでアップストリームフィルタ５０５をプログラミングする。
その後に、ＦＰＧＡ１４５がアップストリームポート３３０で、プロセッサ１１０からＰＣＩｅトランザクションを受信するとき、アップストリームフィルタ５０５は、アップストリームフィルタ５０５がアップストリームＦＡＲでアドレスを含むかを見るために、ＰＣＩｅトランザクションを検査する。
もしそうなら、ＰＣＩｅトランザクションはアクセラレーションコマンドであり、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に伝達するよりも、プロセッサのためのＰＣＩｅトランザクションを「ＡＰＭ−Ｆ」３４０に伝送する。
【００８３】
本発明の第２実施形態に基づいて、図６は、図１のシステムでコマンドをアクセラレーションするためのメモリ使用を説明するための図である。
本発明の第１実施形態でのように、ＳＳＤ１２０は、ＳＳＤ１２０がＮＶＭｅコマンドを支援するために必要なアドレスの範囲よりも、大きいホストシステムメモリアドレスのブロックを要請でき、それのＢＡＲに応答してブロック４０５を受信する。
その後に、ＳＳＤ１２０は、ＮＶＭｅ通信のためにブロック４０５の１つのサブセット４１０を維持し、他のサブセット４１５は、未使用とし、第３サブセットは、ダウンストリームＦＡＲ４２０のように別に設定することができ、第４サブセットは、アップストリームＦＡＲ６０５のように別に設定することができる。
【００８４】
図５に戻ると、本発明の第２実施形態で、プロセッサ１１０は、ＦＰＧＡ１４５が発見可能なデバイスではないので、相変わらずＦＰＧＡ１４５を直接「見（ｓｅｅ）」ない。
しかし、ＳＳＤ１２０は、アップストリームＦＡＲ６０５のベースアドレスをＮＶＭｅ通信のためのサブセット４１０内の特定のレジスタにプログラミングすることにより、アップストリームＦＡＲ６０５のプロセッサ１１０を知らせる。
ＮＶＭｅ通信のためのサブセット４１０から、この特定のレジスタを読み出す場合、プロセッサ１１０は、アップストリームＦＡＲ６０５を認識するようになる。
その後に、プロセッサ１１０は、ＳＳＤ１２０の「ＡＰＭ−Ｓ」３１５に、特定のコマンドを伝送する代わりにアクセラレーションコマンドをＦＰＧＡ１４５に伝送する（アップストリームポート３３０を介して）。
【００８５】
図３でのように図５において、ＦＰＧＡ（１４５）は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含んでいるものと示している。
つまり、具体的には、アップストリームポート３３０、アップストリームフィルタ５０５、ダウンストリームポート３３５、及びダウンストリームフィルタ３６０である。
図３に示した本発明の実施形態と同様に、ＰＣＩｅトランザクションのフィルタリングと関連した構成要素は、ＦＰＧＡ１４５から除去することができる。
したがって、本発明の第２実施形態で、アップストリームポート３３０及びアップストリームフィルタ５０５は、第１ブリッジ構成要素及びダウンストリームポート３３５に配置することができ、ダウンストリームポート３３５ダウンストリームフィルタ３６０は、第２ブリッジ構成要素に配置することができ、それぞれは図５の相異なる構成要素を有するＰＣＩｅトランザクションのフィルタリングを処理する。
又、ＰＣＩｅトランザクションのソースに関係なしに、斯かるブリッジ構成要素の中で単に一つだけを使用することができ、（他のソース（ｓｏｕｒｃｅ）からの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５とともに）、シングルブリッジ構成要素がＦＰＧＡ１４５に対するすべてのフィルタリングを処理するために使用される。
【００８６】
≪第３実施形態≫
図７は、本発明の第３実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
本発明の第３の実施形態で、ＳＳＤ１２０は、物理機能（関数）（ＰＦ）７０５及び仮想機能（関数）（ＶＦ）７１０を含む（本発明の第３実施形態は、本発明の他の実施形態がＰＦ及び／又はＶＦを含んでいないことを意味するのではなく、単に本発明の第３実施形態と同じ方式で使用されないことを意味する）。
ＰＦ７０５は、ＳＳＤ１２０によって提供される機能のような単一のリソースを示す。
ＶＦ７１０は、ＰＦと関連するが、「仮想化」された機能を示す。
つまり、与えられたＰＦに対し１つ以上のＶＦが有り得る。
しかし、ＳＳＤ１２０の仮想機能を表現する代わりに、ＶＦ７１０は、ＦＰＧＡ１４５を「さらす（ｅｘｐｏｓｅ）」することができる。
つまり、ＶＦ７１０は、ＦＰＧＡ１４５の機能を示す。（ＶＦ７１０は、相変わらずＦＰＧＡ１４５の一部ではなく、ＳＳＤ１２０の一部である。しかし、ＦＰＧＡ１４５を露出させるための専用ＶＦ７１０を使用すれば、ＶＦ７１０と関連した任意のメモリアドレスは、他のデバイスと衝突しない。）
ＰＣＩｅデバイスが列挙（ｅｎｕｍｅｒａｔｅ）されるとき、ＰＦ及びＶＦがプロセッサ１１０によって発見され得るので、プロセッサ１１０は、ＶＦ７１０を介してＦＰＧＡ１４５を間接的に発見することができるが、それ自身が直接発見することはできない。
【００８７】
図８は、本発明の第３実施形態による、図１のシステムでコマンドをアクセラレーションするためのメモリ使用を説明するための図である。
本発明の第１実施形態でのように、ＳＳＤ１２０は、ＳＳＤ１２０がＮＶＭｅコマンドを支援する必要のあるアドレスの範囲よりも大きいホストシステムメモリアドレスのブロックを要請する。
しかし、ＳＳＤ１２０は、実際にホストシステムのメモリアドレスの２つの相異なるブロックを要請する。
つまり、ＰＦ７０５に対するブロック８０５及びＶＦ７１０に対するブロック８１０である。
ダウンストリームＦＡＲ４２０は、ＰＦ７０５に対するブロック８０５のサブセットとして選択される。
よって、アップストリームＦＡＲ６０５は、ＶＦ７１０に対するブロック８１０の全体であり得る。（アップストリームＦＡＲ６０５は、単にブロック８１０のサブセットとして選択され得る。しかし、ブロック８１０は、ＶＦ７１０による使用のために専用され、ＶＦ７１０はＦＰＧＡ１４５を効果的に「さらす」こと以外の他の目的を有し得ないので、アップストリームＦＡＲ６０５の一部として使用されていないブロック８１０の任意のメモリアドレスは、無駄になる可能性がある。）
ＳＳＤ１２０が、各ブロックに対し割り当てられたアドレスの範囲を知ることができるようにする間、ブロック（８０５及び８１０）のそれぞれは、個々のＢＡＲを有する。
【００８８】
図７に戻ると、本発明の第２実施形態と同様に、アップストリームポート３３０は、またフィルタを含む。
つまり、ＶＦフィルタ７１５である。
ＶＦフィルタ７１５は、ダウンストリームフィルタ３６０と類似の方式で、プロセッサ１１０（アップストリームポート３３０を介して受信した）から来るＰＣＩｅトランザクションをフィルタリングする。
例として、ＳＳＤ１２０は、サイドバンドバス３６５、「ＰＣＩｅ  ＶＤＭ」、又は任意の他のメカニズムを使用してアップストリームＦＡＲ６０５でＶＦフィルタ７１５をプログラムする。
その後に、ＦＰＧＡ１４５がアップストリームポート３３０で、プロセッサ１１０からＰＣＩｅトランザクションを受信するとき、ＶＦフィルタ７１５は、ＰＣＩｅトランザクションがアップストリームＦＡＲ６０５でアドレスを含むかどうかを知るためにＰＣＩｅトランザクションを検査する。
もしそう（含む）なら、ＰＣＩｅトランザクションはアクセラレーションコマンドであり、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に伝達するより、プロセッサのためにＰＣＩｅトランザクションを「ＡＰＭ−Ｆ」３４０に伝送する。
【００８９】
代案として、ＳＳＤ１２０は、ＶＦ７１０の識別子でＶＦフィルタ７１５をプログラムすることができる。
ＶＦフィルタ７１５は、アップストリームポート３３０で、プロセッサ１１０から受信したＰＣＩｅトランザクションを検査して、それがＶＦ７１０の識別子を含むかどうかを知ることができる。
ＰＣＩｅトランザクションがＶＦ７１０の識別子を含むと、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に伝達するよりは、プロセッサのためＰＣＩｅトランザクションを「ＡＰＭ−Ｆ」３４０に伝送する。
【００９０】
図７において、本発明の前の実施形態でのように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０の通信を可能にする部分を含むものとして示している。
つまり、具体的には、アップストリームポート３３０、ＶＦフィルタ７１５、ダウンストリームポート３３５及びダウンストリームフィルタ３６０である。
前に示した、本発明の実施形態でのように、ＰＣＩｅトランザクションのフィルタリングと関連した構成要素は、ＦＰＧＡ１４５から除去することができる。
したがって、本発明の第３実施形態で、アップストリームポート３３０及びＶＦフィルタ７１５は、第１ブリッジ構成要素に配置することができ、ダウンストリームポート３３５及びダウンストリームフィルタ３６０は、それぞれが図７の相異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置することができる。
二者択一的に、ＰＣＩｅトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、（他のソースからの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５とともに）、又は、単一のブリッジ構成要素がＦＰＧＡ１４５に対するすべてのフィルタを処理するために使用することができる。
【００９１】
≪第４実施形態≫
ＦＰＧＡ１４５を「さらす」ためにＶＦ７１０を使用する問題の１つは、ＶＦを使用することがプロセッサ１１０のホストの動作システムからの支援を要求できるというものである。
一部のオペレーティングシステムは、ＶＦをサポートするが、すべてのオペレーティングシステムがＶＦを支援しているわけではなく、ＶＦを支援しているのは、オペレーティングシステムに対しそれ自体の複雑さを伴う。
本発明の第４実施形態は、ＶＦを使用する困難さを解決する。
【００９２】
図９は、本発明の第４実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
本発明の第３実施形態とは対照的に、本発明の第４実施形態では、ＳＳＤ１２０は、２つのＰＦ（７０５、９０５）を含む。（本発明の第３実施形態でのように、本発明の第４実施形態は、本発明の他の実施形態がＰＦ及び／又はＶＦを含んでいないことを意味しない。）
ＰＦ７０５は、ＳＳＤ１２０によって提供される機能のような単一のリソースを示し続ける。
一方、ＰＦ９０５は、ＦＰＧＡ１４５を「さらさせる」。
つまり、ＰＣＩｅデバイスが列挙されるとき、ＰＦがプロセッサ１１０によって発見され得るので、プロセッサ１１０は、それ自身を直接発見できないとしても、ＰＦ９０５を介してＦＰＧＡ１４５を間接的に発見できる。
【００９３】
図１０は、本発明の第４実施形態による、図３のシステムでコマンドをアクセラレーション化するためのメモリ使用を説明するための図である。
本発明の第３実施形態でのように、ＳＳＤ１２０は、ホストシステムのメモリアドレスの二つの相異なるブロックを要求する。
つまり、ＰＦ７０５に対するブロック１００５及びＰＦ９０５に対するブロック１０１０である。
ダウンストリームＦＡＲ４２０は、ＰＦ７０５に対するブロック１００５のサブセットとして選択される。
そしてアップストリームＦＡＲ６０５は、ＰＦ９０５に対するブロック１０１０の全体であり得る。（つまり、アップストリームＦＡＲ６０５は、ブロック１０１０のサブセットとして選択され得る。しかし、ブロック１０１０は、ＰＦ９０５による使用のために専用されＰＦ９０５は、ＦＰＧＡ１４５を効果的に「さらす」こと以外の他の目的を有し得ないので、アップストリームＦＡＲ６０５の一部として使用されていないブロック１０１０の任意のメモリアドレスは、無駄になる可能性がある。）
ＳＳＤ１２０が、各ブロックに対し割り当てられたアドレスの範囲を知ることができるようにする間、ブロック（１００５及び１０１０）のそれぞれは、個々のＢＡＲを有する。
【００９４】
図９に戻ると、本発明の第３実施形態と同様に、アップストリームポート３３０は、また、フィルタを含む。
つまり、ＰＦフィルタ７１５（ＰＦフィルタ７１５は、動作中の図７のＶＦフィルタ７１５と実質的に同一であり、名前の変更はＰＦフィルタ７１５がＶＦフィルタ７１５とは異なるように動作するため、ＦＰＧＡ１４５を「さらす」ために使用される関数のタイプと、さらに関連がある）である。
ＰＦフィルタ７１５は、ダウンストリームフィルタ３６０と類似の方式で、プロセッサ１１０（アップストリームポート３３０を介して受信した）から来るＰＣＩｅトランザクションをフィルタリングする。
例として、ＳＳＤ１２０は、サイドバンドバス３６５、「ＰＣＩｅ  ＶＤＭ」、又は任意の他のメカニズムを使用してアップストリームＦＡＲ６０５でＶＦフィルタ７１５をプログラムする。
その後に、ＦＰＧＡ１４５がアップストリームポート３３０で、プロセッサ１１０からＰＣＩｅトランザクションを受信するとき、ＰＦフィルタ７１５は、ＰＣＩｅトランザクションがアップストリームＦＡＲ６０５にアドレスを含むかどうかを知るためにＰＣＩｅトランザクションを検査する。
もしそう（含む）なら、ＰＣＩｅトランザクションはアクセラレーションコマンドであり、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に伝達するよりは、プロセッサのためＰＣＩｅトランザクションを「ＡＰＭ−Ｆ」３４０に伝送する。
【００９５】
代案として、ＳＳＤ１２０は、ＰＦ９０５の識別子でＰＦフィルタ７１５をプログラムすることができる。
ＰＦフィルタ７１５は、アップストリームポート３３０で、プロセッサ１１０から受信したＰＣＩｅトランザクションを検査して、それがＰＦ９０５の識別子を含むかどうかを知ることができる。
ＰＣＩｅトランザクションがＰＦ９０５の識別子を含むと、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に伝達するよりは、プロセッサのためＰＣＩｅトランザクションを「ＡＰＭ−Ｆ」３４０に伝送する。
【００９６】
図９において、本発明の前の実施形態でのように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０の通信を可能にする部分を含むものとして示している。
つまり、具体的には、アップストリームポート３３０、ＰＦフィルタ７１５、ダウンストリームポート３３５及びダウンストリームフィルタ３６０である。
前に示した、本発明の実施形態でのように、ＰＣＩｅトランザクションのフィルタリングと関連する構成要素は、ＦＰＧＡ１４５から除去することができる。
したがって、本発明の第４実施形態で、アップストリームポート３３０及びＰＦフィルタ７１５は、第１ブリッジ構成要素に配置することができ、ダウンストリームポート３３５及びダウンストリームフィルタ３６０は、それぞれが図９の相異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置することができる。
二者択一的に、ＰＣＩｅトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ（他のソースからの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５とともに）、又は、単一のブリッジ構成要素がＦＰＧＡ１４５に対するすべてのフィルタリングを処理するために使用することができる。
【００９７】
≪第５実施形態≫
本発明の第４実施形態は、本発明の第３実施形態でのようにＶＦを使用することの難しさを扱う。
しかし、本発明の第４実施形態を使用するためには、ＳＳＤ１２０は、ＦＰＧＡ１４５の使用のために専用されているＰＦ９０５を提供する必要がある。
すべてのＳＳＤ（又は、より一般的には、ストレージデバイス）がＦＰＧＡ１４５の使用のために専用され得る利用可能なＰＦを有しない。
本発明の第５実施形態は、ＳＳＤ１２０が多数のＰＦを提供する必要がない解決策を提供する。
【００９８】
図１１は、本発明の第５実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
図１１において、ＳＳＤ１２０は、ＰＦ及びＶＦを提供することが必要のない図３及び図５で示される構造に戻る。（つまり、ＳＳＤ１２０は、ＰＦ及び／又はＶＦを提供しなくてもよく、ＳＳＤ１２０は、追加のＰＦ及び／又はＶＦを提供する必要がない。）
【００９９】
本発明の第１〜第４実施形態と比較すると、本発明の第５実施形態で、ＦＰＧＡ１４５は、多少異なる。
図３、５、７、９でのようなアップストリームポート３３０及びダウンストリームポート３３５の代わりに、ＦＰＧＡ１４５は、エンドポイント１１０５及びルートポート１１１０（本明細書では、用語「ポート」は、「ルートポート」と交換可能に使用するものとする。）を含む。
図３、５、７、９のアップストリームポート３３０及びダウンストリームポート３３５は、スイッチとみなされるが、つまり、それらは効果的に通過デバイス（ｐａｓｓ−ｔｈｒｏｕｇｈ  ｄｅｖｉｃｅｓ）であり、エンドポイント１１０５及びルートポート１１１０は、ＰＣＩｅの列挙を介して発見され得る通信のための終端点（ｔｅｒｍｉｎａｔｉｏｎ  ｐｏｉｎｔｓ）である。
この事実は、エンドポイント１１０５及びルートポート１１１０が、図１２を参照して、以下に説明する、それら自身のＰＣＩｅの構成空間を含むことを意味する。
しかし、エンドポイント１１０５及びルートポート１１１０は、通信のための終端点なので、プロセッサ１１０及びＳＳＤ１２０は、通信を相互に指示するよりも、それぞれのエンドポイント１１０５及びルートポート１１１０にそれらの通信を行う。
【０１００】
エンドポイント１１０５は、２つのＰＦ（１１１５及び１１２０）を含む（又は、二者択一的に、一つのＰＦ及び１つのＶＦ。つまり、重要なのは、エンドポイント１１０５が互いに区別されることができる、２つの機能を含むということである）。
プロセッサ１１０がエンドポイント１１０５にＰＣＩｅトランザクションを伝送するとき、プロセッサ１１０は、どのＰＦのアドレスが指定されるかを特定する。
前述した本発明の第３及び第４実施形態と同様に、エンドポイント１１０５は、ＰＦを識別するＰＣＩｅトランザクションに含まれているタグ、又はＰＣＩｅトランザクション（言い直すが、下から図１２を参照して説明する）と関連したアドレスによってＰＦがアドレス指定されるかどうかを識別する。
ＰＦ１１１５を識別するＰＣＩｅトランザクションは、ＳＳＤ１２０のために予定のものと見なすことができ、ルートポート１１１０を介してＦＰＧＡ１４５によってＳＳＤ１２０に伝送され得る。
ＰＦ１１２０を識別するＰＣＩｅトランザクションは、アクセラレーションコマンドを含むものと見なすことができ、「ＡＰＭ−Ｆ」３４０に伝送される。
【０１０１】
ルートポート１１１０は、ダウンストリームフィルタ３６０を含む。
ダウンストリームフィルタ３６０は、図３、５、７、９、１１のダウンストリームフィルタ３６０と同様に動作する。
つまり、唯一の重要な違いは、ダウンストリームフィルタが、ホストシステムメモリアドレスに基づいてフィルタリングするのではなく、以下で図１２を参照して説明するように、ＦＰＧＡメモリアドレスに基づいてフィルタリングするものである。
ダウンストリームフィルタ３６０は、サイドバンドバス３６５、「ＰＣＩｅ  ＶＤＭ」、又は任意の他の望みのメカニズムを使用してＳＳＤ１２０によってダウンストリームＦＡＲ４１０でプログラムされる。
【０１０２】
ＦＰＧＡ１４５は、また、構成モニター１１２５を含む。
ＦＰＧＡ１４５は、ＳＳＤ１２０を代替するのではなく、単に追加の機能を提供するため、そしてＦＰＧＡ１４５がプロセッサ１１０とＳＳＤ１２０との間に挿入されるので、プロセッサ１１０がＳＳＤ１２０によって提供される機能を知ることができるのは重要である。
より具体的には、ＦＰＧＡ１４５は、ＳＳＤ１２０のＰＣＩｅ構成空間とマッチする性能を知らせなければならない。
その目的を達成するために、それに応じてＳＳＤ１２０が提示するのと同じＰＣＩｅ構成をプロセッサ１１０に提供しつつ、そのために、構成モニター１１２５は、ＳＳＤ１２０のＰＣＩｅ構成空間を複製する。
【０１０３】
図１２は、本発明の第５実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
図１２において、ＳＳＤ１２０は、これ以上のプロセッサ１１０と直接通信していないため、ＳＳＤ１２０は、ホストシステムのメモリアドレスのブロックを要求しない。
代わりに、ＳＳＤ１２０は、ルートポート１１１０のための構成空間を含むアドレスマップ１２１０からＦＰＧＡメモリアドレスのブロック１２０５を要請する。
ブロック１２０５は、プロセッサ１１０とダウンストリームＦＡＲ４２０とのＮＶＭｅ通信のためのサブセット４１０を含む。
ブロック１２０５は、ＢＡＲにより識別される。
【０１０４】
ＦＰＧＡ１４５なしで予想するように、ＳＳＤ１２０と通信できるプロセッサ１１０によってメカニズムを提供するため、ＦＰＧＡ１４５は、プロセッサ１１０からホストシステムのメモリアドレスを要請する。
ＦＰＧＡ１４５のＳＳＤ１２０によって要請されたように、ブロック１２０５を並行するために、ＦＰＧＡ１４５は、ＰＦ１１１５のために、少なくともブロック１２０５と同じ大きさのブロック１２１５を求める（したがって、ＳＳＤ１２０がプロセッサ１１０からブロック１２１５を要請したかのように見える）。
【０１０５】
ブロック１２１５でアドレスを使用するＰＣＩｅトランザクションが、ホストとＳＳＤ１２０との間の通信のためのものであるが、ＦＰＧＡ１４５を通過していることを反映するために、ブロック１２１５は、図１２で「ホスト−ＦＰＧＡ−ＳＳＤ」で表示される。
ＦＰＧＡ１４５は、アクセラレーションコマンドについて「ＡＰＭ−Ｆ」３４０と通信するために、プロセッサ１１０のためのメカニズムを提供しつつ、ＰＦ１１２０のためのブロック１２２０を要請する。
ブロック（１２１５及び１２２０）は、それぞれ２つの分離されたＢＡＲにより識別され得る。
本発明の他の実施形態で、ＦＰＧＡ１４５とＳＳＤ１２０との間の通信を容易にするために、ダウンストリームＦＡＲ４２０のようにブロック１２２０の一部分を使用することが可能である。
【０１０６】
本発明の前述の実施形態でのように、図１１において、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示している。
つまり、具体的には、エンドポイント１１０５、ＰＦ（１１１５及び１１２０）、ルートポート１１１０、及びダウンストリームフィルタ３６０である。
前に示した本発明の実施形態と同様に、ＰＣＩｅトランザクションのフィルタリングと関連した構成は、ＦＰＧＡ１４５から除去することができる。
したがって、本発明の第５実施形態で、エンドポイント１１０５、ＰＦ（１１１５及び１１２０）は、第１ブリッジ構成要素及びルートポート１１１０に配置することができ、ルートポート１１１０及びダウンストリームフィルタ３６０は、それぞれが、図１１の相異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置することができる。
二者択一的に、ＰＣＩｅトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、（他のソース（ｓｏｕｒｃｅ）からの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５とともに）、単一のブリッジ構成要素がＦＰＧＡ１４５に対するすべてのフィルタリングを処理するために使用することができる。
【０１０７】
≪第６実施形態≫
本発明の第５実施形態は、従来のＰＣＩｅトランザクション（プロセッサ１１０とＳＳＤ１２０との間の）からアクセラレーションコマンド（ＳＳＤ１２０とＦＰＧＡ１４５との間の）を分離するために、相変わらずダウンストリームフィルタ３６０に依存する。
ダウンストリームフィルタ３６０は、本発明の第６実施形態でのようにＳＳＤ１２０が第２エンドポイントを含む場合に除去することができる。
【０１０８】
図１３は、本発明の第６実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
図１３で、ＦＰＧＡは、図１１の実施形態で示した１つのルートポート１１１０ではなく、２つのルートポート（１１１０及び１３０５）を含む。
ルートポート１１１０は、プロセッサ１１０から発生する従来のＰＣＩｅトランザクションで使用され得る。
ルートポート１３０５は、ＳＳＤ１２０とＦＰＧＡ１４５との間で交換されるアクセラレーションコマンド及びデータのために使用することができる。
【０１０９】
アクセラレーションコマンドは、相異なるルートポート（１１１０及び１３０５）を使用しているプロセッサ１１０から発生する従来のＰＣＩｅトランザクションから自然に分離されるので、図３、５、７、９、１１のダウンストリームフィルタ３６０が必要ではない。
この事実は、ＳＳＤ１２０が、図５、７、９のアップストリームフィルタ（５０５及び７１５）をプログラミングするための負担を軽減してくれるように、ＳＳＤ１２０がＦＰＧＡ３６０でダウンストリームフィルタ３６０をプログラミングの負担を軽減してくれるということを意味する（図１１及び１３にＦＰＧＡ１４５は、従来のＰＣＩｅトランザクションに関連したＰＦに基づいたアクセラレ−ションコマンドを区別することができる）。
この利点に対するオフセットは、ＳＳＤ１２０が、それぞれＦＰＧＡ１４５のルートポート（１１１０及び１３０５）と通信するために二つのエンドポイント（３０５及び１３１０）を含むことである。
【０１１０】
ＳＳＤ１２０は、本発明の第６実施形態で、２つのエンドポイント（３０５及び１３１０）を含んでいるので、エンドポイント（３０５及び１３１０）のそれぞれは、ＦＰＧＡ１４５から、それ自身のメモリアドレスブロックを要請することができる。
さらに、ルートポート（１１１０及び１３０５）のそれぞれは、それ自身の構成空間を含んでいるので、ＳＳＤ１２０のエンドポイント（３０５及び１３１０）は、相異なる構成空間からメモリアドレスのブロックを要請することができる。
図１４は、このようなシナリオを示している。
【０１１１】
図１４は、本発明の第６実施形態で、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
図１４でＳＳＤ１２０のエンドポイント３０５は、ルートポート１１１０のための構成空間を含むアドレスマップ１２１０からブロック１４０５を要請する。
しかし、従来のＰＣＩｅトランザクション（プロセッサ１１０とＳＳＤ１２０との間）とアクセラレーションコマンド（ＦＰＧＡ１４５とＳＳＤ１２０との間）は、ＳＳＤ１２０上の相異なるエンドポイントの使用により自然に分離されるが、ＳＳＤ１２０は、ダウンストリームＦＡＲを含むのに十分な大きさのためにブロック１４０５を要請する必要がない。
したがって、ブロック１４０５は、ＦＰＧＡ１４５なしに大きくなる必要がある。
つまり、プロセッサ１１０とＳＳＤ１２０との間のＮＶＭｅ通信を支援するのに十分な大きさのことである。
ブロック１４０５は、ＢＡＲによって識別され得る。
【０１１２】
ＳＳＤ１２０のエンドポイント１３１０は、アドレスマップ１４１０から、それ自身のメモリアドレスブロックを要請する。
しかし、ルートポート１３０５及びエンドポイント１３１０は、本発明の第６実施形態でアクセラレーションコマンドを交換するために使用されるので、アドレスマップ１４１０の全体が、斯かるＰＣＩｅトランザクションのために使用され得る。
つまり、エンドポイント１３１０が、アドレスマップ１４１０のただの小さいブロックを要請する必要はない。
【０１１３】
本発明の第５実施形態でのように、ＰＦ１１１５は、プロセッサ１１０とＳＳＤ１２０との間で交換されるＰＣＩｅトランザクションを管理するために、ホストシステムのメモリアドレスのブロック１２１５を要請する。
よって、ブロック１２１５は、少なくともブロック１４０５程大きいはずである。
同様に、ＰＦ１１２０は、プロセッサ１１０とＦＰＧＡ１４５との間で交換されるアクセラレーションコマンドを管理するために、ホストシステムのメモリアドレスのブロック１２２０を要請する。
ブロック（１２１５及び１２２０）は、それぞれＢＡＲによって識別され得る。
【０１１４】
本発明の前の実施形態でのように、図１３で、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示している。
つまり、具体的には、エンドポイント１１０５、ＰＦ（１１１５及び１１２０）、ルートポート（１１１０、１３０５）である。
前に示した本発明の実施形態と同様に、ＰＣＩｅトランザクションのフィルタリングと関連した構成は、ＦＰＧＡ１４５から除去することができる。
したがって、本発明の第６実施形態で、エンドポイント１１０５、ＰＦ（１１１５及び１１２０）は、第１ブリッジ構成要素に配置することができ、ルートポートに（１１１０、１３０５）は、それぞれが図１３の相異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置することができる。
二者択一的に、ＰＣＩｅトランザクションのソースに関係なく、このようなブリッジ構成要素の中で単に一つだけが使用することができ、（他のソース（ｓｏｕｒｃｅ）からの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５とともに）、単一のブリッジ構成要素がＦＰＧＡ１４５に対するすべてのフィルタリングを処理するために使用することができる。
【０１１５】
≪第７実施形態≫
本発明の最初の第６実施形態で、ＦＰＧＡ１４５は、単一のアップストリームポート３３０（図５、７、９）又は単一のエンドポイント１１０５（図１１及び１３で）を使用して示している。
しかし、ＦＰＧＡ１４５が、本発明の第６実施形態におけるＳＳＤ１２０のように、多数のエンドポイントを包含していない理由はない。
本発明の第７及び第８実施形態は、ＦＰＧＡ１４５が多重のエンドポイントを使用して、どのように動作できるかを示す。
【０１１６】
図１５は、本発明の第７実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
本発明の第７実施形態は、ＦＰＧＡ１４５が２つのエンドポイント（１１０５及び１５０５）を含むことを除いては、本発明の第６実施形態と類似する。
【０１１７】
ＳＳＤ１２０のエンドポイント（３０５及び１３１０）が、従来の「ホスト−ＳＳＤ  ＰＣＩｅトランザクション」（ｈｏｓｔ−ｔｏ−ＳＳＤ  ＰＣＩｅ  ｔｒａｎｓａｃｔｉｏｎｓ）及び「ＦＰＧＡ−ＳＳＤアクセラレーションコマンド」（ＦＰＧＡ−ｔｏ−ＳＳＤ  ａｃｃｅｌｅｒａｔｉｏｎ  ｉｎｓｔｒｕｃｔｉｏｎｓ）を区別するために使用しているように、ＦＰＧＡ１４５のエンドポイント（１１０５及び１５０５）は、従来の「ホスト−ＳＳＤ  ＰＣＩｅトランザクション」及び「ＦＰＧＡ−ＳＳＤアクセラレーションコマンド」を区別するために使用することができる。
エンドポイント１１０５で受信したＰＣＩｅトランザクションは、従来のＰＣＩｅトランザクションと見なすことができ、ＳＳＤ１２０に伝送される一方（ルートポート１１１０を介して）、エンドポイント１５０５で受信したＰＣＩｅトランザクションはアクセラレーションコマンドと見なすことができ、処理のために「ＡＰＭ−Ｆ」３４０に伝達される。
【０１１８】
図１６は、本発明の第７実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
すべての意図及び目的のために、本発明の第７実施形態によるメモリの使用は、第６実施形態によるメモリ使用と同じである。
ＦＰＧＡ１４５のルートポート（１１１０及び１３０５）は、それぞれそれ自身の構成空間を提供して、ＳＳＤ１２０のエンドポイント３０５は、ＢＡＲによって識別されるアドレスマップ１２１０からブロック１４０５を要請する（本発明の第６実施形態でのように、ＳＳＤ１２０のエンドポイント１３１０は、アドレスマップ１４１０からブロック１４０５を要請できたり、ＳＳＤ１２０のエンドポイント１３１０は、ＳＳＤ−ＦＰＧＡ通信のためのアドレスマップ１４１０の全体を使用できたりする）。
エンドポイント（１１０５及び１５０５）は、プロセッサ１１０とＳＳＤ１２０との間で交換されるＰＣＩｅトランザクションを管理するために、ホストシステムのメモリアドレスのブロック（１２１５及び１２２０）を要請する。
よって、ブロック１２１５は、少なくともブロック１４０５だけ大きくなれる。
ブロック（１２１５及び１２２０）は、それぞれＢＡＲによって識別され得る。
【０１１９】
図１５において、本発明の前の実施形態でのように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示している。
つまり、具体的には、エンドポイント（１１０５、１５０５）、及びルートポート（１１１０及び１３０５）である。
前に示した、本発明の実施形態でのように、ＰＣＩｅトランザクションのフィルタリングと関連した構成は、ＦＰＧＡ１４５から除去することができる。
したがって、本発明の第７実施形態で、エンドポイント（１１０５、１５０５）は、第１ブリッジ構成要素に配置することができ、ルートポート（１１１０及び１３０５）は、それぞれが図１５の相異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置することができる。
二者択一的に、ＰＣＩｅトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、（他のソースからの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５とともに）、又は、単一のブリッジ構成要素がＦＰＧＡ１４５に対するすべてのフィルタリングを処理するために使用することができる。
【０１２０】
≪第８実施形態≫
図１７は、本発明の第８実施形態による、図１のアクセラレーションモジュール及び図１のストレージデバイスの構成要素を示すブロック図である。
本発明の第８実施形態は、ＦＰＧＡ１４５が２つのエンドポイント（１１０５及び１５０５）を含むことを除いては、本発明の第５実施形態と類似する。
言い換えれば、ＦＰＧＡ１４５のエンドポイント（１１０５及び１５０５）は、従来の「ホストＳＳＤ  ＰＣＩｅトランザクション」及び「ホスト−ＦＰＧＡアクセラレーションコマンド」を区別するために使用される。
ＦＰＧＡ１４５のエンドポイント１１０５で受信したＰＣＩｅトランザクションは、従来のＰＣＩｅトランザクションと見なすことができ、ＳＳＤ１２０に伝送される一方（ルートポート１１１０を介して）、ＦＰＧＡ１４５のエンドポイント１５０５で受信したＰＣＩｅトランザクションはアクセラレーションコマンドと見なすことができ、処理のために「ＡＰＭ−Ｆ」３４０に伝達される。
【０１２１】
図１８は、本発明の第８実施形態による、図１のシステムで、コマンドをアクセラレーションするためのメモリ使用を説明するための図である。
本発明の第８実施形態によるメモリの使用は、第５実施形態によるメモリ使用と同じである。
ルートポート１１１０がＦＰＧＡ１４５の唯一のルートポートである場合、ＳＳＤ１２０のエンドポイント３０５は、ダウンストリームＦＡＲ４２０を含み得るアドレスマップ１２１０からブロック１２０５を要請する。
ＢＡＲによって識別されるエンドポイント１１０５が、少なくともブロック１２０５と同じ大きさのブロック１２１５を要求しつつ、ＦＰＧＡ１４５のエンドポイント（１１０５、１５０５）は、ホストシステムのメモリアドレスからブロック（１２１５、１２２０）を要求する。
エンドポイント（１１０５及び１５０５）は、プロセッサ１１０とＳＳＤ１２０との間で交換されるＰＣＩｅトランザクションを管理するために、ホストシステムのメモリアドレスのブロック（１２１５及び１２２０）を要請する。
ブロック１２１５は、少なくともブロック１４０５だけ大きくなれる。
ブロック（１２１５及び１２２０）は、それぞれ２つの分離されたＢＡＲにより識別される。
本発明の他の実施形態で、ＦＰＧＡ１４５とＳＳＤ１２０との間の通信を容易にするために、ダウンストリームＦＡＲ４２０のようにブロック１２２０の部分を使用することが可能である。
【０１２２】
図１７において、本発明の前の実施形態でのように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部分を含むものとして示している。
つまり、具体的には、エンドポイント（１１０５、１５０５）、ルートポート１１１０及びダウンストリームフィルタ３６０である。
前に示した、本発明の実施形態でのように、ＰＣＩｅトランザクションのフィルタリングと関連した構成は、ＦＰＧＡ１４５から除去することができる。
したがって、本発明の第８実施形態で、エンドポイント（１１０５、１５０５）は、第１ブリッジ構成要素に配置することができ、ルートポート１１１０及びダウンストリームフィルタ３６０は、それぞれが、図１７の相異なる構成を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置することができる。
二者択一的に、ＰＣＩｅトランザクションのソースに関係なく、斯かるブリッジ構成要素の中で単に一つだけが使用することができ、（他のソースからの通信のために、それ自体のフィルタリングを処理するＦＰＧＡ１４５とともに）、又は、単一のブリッジ構成要素がＦＰＧＡ１４５に対するすべてのフィルタリングを処理するために使用することができる。
【０１２３】
本発明の様々な実施形態を参照して、前述したように、ＦＰＧＡ１４５のアップストリームインターフェース及び／又はダウンストリームインターフェースの一部であると記述されるフィルタリング機能は、ＦＰＧＡ１４５から分離することができ、他の構成によって処理され得る。
本発明の実施形態に応じて、図１９は、図１のアクセラレーションモジュール１４５を代えてフィルタリング機能を処理できるブリッジ構成要素を示している。
【０１２４】
図１９は、本発明の実施形態による、図１のアクセラレーションモジュールとの通信を管理するブリッジ構成要素を有する図１のシステムの構成要素を示すブロック図である。
図１９において、２つのブリッジ構成要素（１９０５及び１９１０）を示す。
ブリッジ構成要素１９０５は、プロセッサ１１０から受信したＰＣＩｅトランザクションのフィルタリングを処理する一方、ブリッジ構成要素１９１０は、ＳＳＤ１２０から受信したＰＣＩｅトランザクションのフィルタリングを処理する。
ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かに応じて、ＰＣＩｅトランザクションをＰＣＩ１４５又はＳＳＤ１２０のいずれか一つに伝送する。
同様に、ブリッジ構成要素１９１０は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むか否かに応じて、ＰＣＩｅトランザクションをＦＰＧＡ１４５又はプロセッサ１１０のいずれか一つに伝送する。
ＦＰＧＡ１４５のアップストリーム及びダウンストリームインターフェースの一部として図に示したものと類似の具現と同様に、ブリッジ構成要素（１９０５及び１９１０）の特定の具現は、図１９に示さない。
【０１２５】
本発明のいくつかの実施形態で、ブリッジ構成要素（１９０５及び１９１０）の両方が使用され得る。
本発明の他の実施形態で、１つのブリッジ構成要素（１９０５又は１９１０）のみ使用され、他のブリッジ構成要素の機能は、潜在的にＦＰＧＡ１４５とともに残り得る。
他の実施形態で、ブリッジ構成要素（１９０５及び１９１０）の両方は、分離された構成ではない、単一の構成に含まれ得る。
【０１２６】
本発明の様々な実施形態を説明したので、プロセッサ１１０、ＦＰＧＡ１４５、及びＳＳＤ１２０の間のデータの流れを説明することができる。
本明細書の残りの部分で、すべてのフィルタリング機能は、ＦＰＧＡ１４５から起因するが、図１９のブリッジ構成要素（１９０５及び／又は１９１０）にフィルタリングが移動することができる時期と方法が明確にならなければならない。
【０１２７】
図２０Ａ及び図２０Ｂは、本発明の実施形態による、図１のプロセッサ、図１のアクセラレーションモジュール、図１のストレージデバイス間の通信を説明するための図である。
図２０Ａで、本発明の第１実施形態（そして、できる限り、本発明の他の実施形態）によるデータの流れを示す。
プロセッサ１１０は、ＰＣＩｅトランザクション２００５をＳＳＤ１２０に伝送する（ＦＰＧＡを介して）。
その後に、「ＡＰＭ−Ｓ」３１５は、ＳＳＤ１２０がＦＰＧＡ１４５に伝送できるＰＣＩｅトランザクション２０２０に含まれ得るアクセラレーションコマンド２０１５を生成する。
なお、図２０Ａで示すように、ＦＰＧＡ１４５及びＳＳＤ１２０は、アクセラレーションデータを交換する。
【０１２８】
アクセラレーションコマンド２０１５の完了時に、ＦＰＧＡ１４５は、プロセッサ１１０に結果２０３５を伝達できるＳＳＤ１２０に結果２０３０を送り返す。
二者択一的に、ＦＰＧＡ１４５は、ＳＳＤ１２０から来る結果２０３５をシミュレーションしながら、その結果２０４０をプロセッサ１１０に直接伝送し得る。
【０１２９】
対照的に、図２０Ｂで（本発明の第２乃至第８実施形態に適用可能な）、プロセッサ１１０は、アクセラレーションコマンド２０４５をＰＣＩｅトランザクション２００５としてＦＰＧＡ１４５に直接伝送する。
ＦＰＧＡ１４５及びＳＳＤ１２０は、図２０Ｂで示すように、アクセラレーションデータを交換する。
最後に、ＦＰＧＡ１４５は、結果２０４０を再びプロセッサ１１０に送る。
【０１３０】
図２１は、本発明の実施形態によるＦＰＧＡ１４５がＰＣＩｅトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
図２１は、高いレベルのビュー（ｈｉｇｈ−ｌｅｖｅｌ  ｖｉｅｗ）を提供する。
よって、以後の図では、ＦＰＧＡ１４５の動作に対しより詳細な例示的なフローチャートを提供する。
【０１３１】
図２１で、ステップＳ２１０５において、ＦＰＧＡ１４５は、デバイスからのＰＣＩｅトランザクションを受信する。
斯かるＰＣＩｅトランザクションは、図２０Ａ、図２０ＢのＰＣＩｅトランザクション（２０１５又は２０４５）のいずれか１つであり得るし、デバイスは、プロセッサ１１０又はＳＳＤ１２０であり得る。
ステップＳ２１１０で、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含んでいるか否かを判断する。
ステップＳ２１１５で、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含むかどうかを知るために検査する。
もしそうなら（「はい」方向）、ステップＳ２１２０でアクセラレーションコマンドは、「ＡＰＭ−Ｆ」３４０によって処理される。
そうでない場合（「いいえ」方向）には、ステップＳ２１２５で、ＰＣＩｅトランザクションは、他のデバイスに伝達される（ＰＣＩｅトランザクションがプロセッサ１１０から受信した場合、ＰＣＩｅトランザクションはＳＳＤ１２０に伝達され得、その逆も可能である）。
「ＡＰＭ−Ｆ」３４０によるアクセラレーションコマンドを処理するのはアクセラレーションコマンドによって処理されるアプリケーションデータを受信するためにＳＳＤ１２０と通信することを含み得ることに注目する。
【０１３２】
図２２Ａ〜図２２Ｃは、本発明の実施形態による、ＰＣＩｅトランザクションを処理するためにＦＰＧＡ１４５に対して、より詳細な例示的な手順を説明するためのフローチャートである。
【０１３３】
図２２Ａにおいて、ステップＳ２２０３で、ＦＰＧＡ１４５は、ＳＳＤ１２０からのダウンストリームＦＡＲ４２０を受信する。
ステップＳ２２０６で、ＦＰＧＡ１４５は、ダウンストリームＦＡＲ４２０をダウンストリームフィルタ３６０と関連付ける（ａｓｓｏｃｉａｔｅ）。
ＳＳＤ１２０がサイドバンドバス３６５を介してダウンストリームＦＡＲ４２０をダウンストリームフィルタ３６０でプログラミングする場合、この関係は、自動的に発生することができたり、また、この関係は、ＦＰＧＡ１４５によって活性ステップを要求したりし得る（例として、ＳＳＤ１２０がダウンストリームＦＡＲ４２０を含むＦＰＧＡ１４５に「ＰＣＩｅ  ＶＤＭ」を伝送する場合）。
点線２２０９で示すように、本発明のいくつかの実施形態で、ステップＳ２２０３及びステップＳ２２０６は、スキップされることに注目する。
本発明のいくつかの実施形態で、ダウンストリームＦＡＲ４２０は、ＦＰＧＡ１４５それ自体によって提供され得る。
【０１３４】
ステップＳ２２１２で、ＦＰＧＡ１４５は、ＳＳＤ１２０からアップストリームＦＡＲ６０５を受信し、ステップＳ２２１５で、ＦＰＧＡ１４５は、アップストリームポート３３０と、アップストリームＦＡＲ６０５を関連付ける。
ＳＳＤ１２０がサイドバンドバス３６５を介してアップストリームＦＡＲ６０５をアップストリームフィルタ５０５でプログラミングする場合、この関係は、自動的に発生することができたり、また、この関係は、ＦＰＧＡ１４５によって活性ステップを要求したりすることができる（例として、ＳＳＤ１２０がアップストリームＦＡＲ６０５を含むＦＰＧＡ１４５に「ＰＣＩｅ  ＶＤＭ」を伝送する場合）。
本発明のいくつかの実施形態で、アップストリームＦＡＲ６０５は、ＦＰＧＡ１４５それ自体によって提供され得る。
【０１３５】
二者択一的に、ステップＳ２２１８で、ＦＰＧＡ１４５は、ＦＰＧＡ１４５を「さらす」ために使用されるＰＦ又はＶＦの識別子をＳＳＤ１２０から受信し、ステップＳ２２２１で、ＦＰＧＡ１４５は、ＰＦ／ＶＦの識別子をアップストリームフィルタ３３０と関連付ける。
言い換えれば、ＳＳＤ１２０がサイドバンドバス３６５を介してＰＦ／ＶＦの識別子をアップストリームフィルタ５０５でプログラミングする場合は、この関係は、自動的に発生することができたり、また、この関係は、ＦＰＧＡ１４５によって活性ステップを要求したりすることができる（例として、ＳＳＤ１２０がＰＦ／ＶＦの識別子を含むＦＰＧＡ１４５に「ＰＣＩｅ  ＶＤＭ」を伝送する場合）。
点線２２２４に示すように、本発明のいくつかの実施形態で、ステップＳ２２１２、ステップＳ２２１５、ステップＳ２２１８、ステップＳ２２２１は、スキップすることができる。
【０１３６】
ステップＳ２２２７で、構成モニター１１２５は、ＳＳＤ１２０のエンドポイント３０５の構成を判断し、ステップＳ２２３０で構成モジュール１１２５は、ＦＰＧＡ１４５のエンドポイント１１０５でその構成を複製し、そうすることでＳＳＤ１２０と同じ機能をプロセッサ１１０に提供する。
本発明のいくつかの実施形態で、ステップＳ２２１２、ステップＳ２２１５、ステップＳ２２１８、ステップＳ２２２１は、点線２２３３で示すようにスキップすることができる。
【０１３７】
一旦ＦＰＧＡ１４５が適切に構成されると、ステップＳ２２３６（図２２Ｂ参照）でＦＰＧＡ１４５は、プロセッサ１１０から図２０ＢのＰＣＩｅトランザクション２００５を受信する（本発明実施形態による、アップストリームポート３３０又はエンドポイント１１０５を介して）。
ステップＳ２２３９で、ＦＰＧＡ１４５は、図２０ＢのＰＣＩｅトランザクション２００５が図２０Ｂのアクセラレーションコマンド２０４５を含んでいるか否かを判断する。
もしそうなら（「はい」方向）、ステップＳ２２４２で、図２０Ｂのアクセラレーションコマンド２０４５を処理することができ、ステップＳ２２４５で、「ＡＰＭ−Ｆ」３４０は、プロセッサ１１０に図２０Ｂの結果２０４０を送信する。
そうでなければ（「いいえ」方向）、図２０ＢのＰＣＩｅトランザクション２００５が図２０Ｂのアクセラレーションコマンド２０４５を含んでいない場合、ステップＳ２２４８で、ＦＰＧＡ１４５は、図２０ＢのＰＣＩｅトランザクション２００５をＳＳＤ１２０に伝送する（本発明の実施形態による、ダウンストリームポート３３５又はルートポート１１１０を介して）。
【０１３８】
ステップＳ２２５１（図２２Ｃ）で、ＦＰＧＡ１４５は、図２０ＡのＰＣＩｅトランザクション２０２０を受信する（本発明の実施形態による、ダウンストリームポート３３５又はルートポート１１１０によって）。
ステップＳ２２５４で、ＦＰＧＡ１４５は、図２０ＡのＰＣＩｅトランザクション２０２０が図２０Ａのアクセラレーションコマンド２０１５を含んでいるか否かを判断する。
【０１３９】
図２０ＡのＰＣＩｅトランザクション２０２０が図２０Ａのアクセラレーションコマンド２０１５を含む場合（「はい」方向）、ステップＳ２２５７で、「ＡＰＭ−Ｆ」３４０は、図２２のアクセラレーションコマンド２０１を処理し、ステップＳ２２６０で、「ＡＰＭ−Ｆ」３４０は、図２０Ａの結果２０４０をＳＳＤ１２０に伝送する。
そうでなければ（「いいえ」方向）、図２０ＡのＰＣＩｅトランザクション２０２０がアクセラレーションコマンド２０１５を含んでいない場合、ステップＳ２２６３で、ＦＰＧＡ１４５は、図２０ＡのＰＣＩｅトランザクション２０２をプロセッサ１１０に伝送する（発明の実施形態による、アップストリームポート３３０又はエンドポイント１１０５を介して）。
【０１４０】
図２３Ａ、２３Ｂは、本発明の実施形態による、図２０ＢのＰＣＩｅトランザクション２００５が図２０Ｂのアクセラレーションコマンド２０４５を含むプロセッサ１１０から来ているか否かを判断するためにＦＰＧＡ１４５についての例示的な手順を説明するためのフローチャートである。
本発明の実施形態による、図２３Ａ及び２３Ｂは、個別的に又は集合的に使用することができる３つの可能なテストを示している。
一つ以上のテストを使用する本発明の実施形態で、個々のテストが満足される場合、図２０ＢのＰＣＩｅトランザクション２００５は、図２０Ｂのアクセラレーションコマンド２０４５を含むものと判断される。
【０１４１】
図２３Ａにおいて、ステップＳ２３０５で、ＦＰＧＡ１４５は、図２０ＢのＰＣＩｅトランザクション２００５に関連したアドレスがアップストリームＦＡＲ６０５でのアドレスを含んでいるか否かを判断する。
ステップＳ２３１０で、ＦＰＧＡ１４５は、図２０ＢのＰＣＩｅトランザクション２００５がアップストリームフィルタ７１５と関連したＰＦ又はＶＦの識別子を含むかどうかを判断する。
ステップＳ２３１５で、ＦＰＧＡ１４５は、エンドポイント１５０５のようなアクセラレーションコマンド専用のポートで図２０ＢのＰＣＩｅトランザクション２００５が受信されるかどうかを判断する。
【０１４２】
これらのテストの任意の結果が、図２０ＢのＰＣＩｅトランザクション２００５が図２０Ｂのアクセラレーションコマンド２０４５を含むことを示すと、ステップＳ２３２０（図２３Ｂ参照）において、ＦＰＧＡ１４５は、図２０ＢのＰＣＩｅトランザクション２００５が図２０Ｂのアクセラレーションコマンド２０４５を含むことを知る（ｋｎｏｗ）。
そうでなければ、ステップＳ２３２５で、ＦＰＧＡ１４５は、図２０ＢのＰＣＩｅトランザクション２００５が図２０Ｂのアクセラレーションコマンド２０４５を含んでいないことを知る。
【０１４３】
図２４は、本発明の実施形態による、図２０ＡのＰＣＩｅトランザクション２０２０が図２０Ａのアクセラレーションコマンド２０１５を含むＳＳＤ１２０から来ているか否かを判断するためにＦＰＧＡ１４５に対する例示的な手順を説明するためのフローチャートである。
本発明の実施形態に基づいて、図２４は、個別的に又は集合的に使用することのできる３つの可能なテストを示している。
一つ以上のテストを使用する本発明の実施形態で、どのようなテストでも満足される場合、図２０ＡのＰＣＩｅトランザクション２０２０は、図２０Ａのアクセラレーションコマンド２０１５を含むものと判断される。
【０１４４】
図２４において、ステップＳ２４０５で、ＦＰＧＡ１４５は、図２０ａＡのＰＣＩｅトランザクション２０２０に関連したアドレスがダウンストリームＦＡＲ４２０でのアドレスを含んでいるか否かを判断する。
ステップＳ２４１０において、ＦＰＧＡ１４５は、ループポート１３０５のようなアクセラレーションコマンド専用のポートで図２０ＡのＰＣＩｅトランザクション２０２０が受信されたどうか判断する。
これらのテストの任意の結果が、図２０ＡのＰＣＩｅトランザクション２０２０が図２０Ａのアクセラレーションコマンド２０１５を含むものであることを示すと（「はい」方向）、ステップＳ２４１５で、ＦＰＧＡ１４５は、図２０ＡのＰＣＩｅトランザクション２０２０が図２０Ａのアクセラレーションコマンド２０１５を含むことを知る。
従って、そうでなければ（「いいえ」方向）、ステップＳ２４２０で、ＦＰＧＡ１４５は、図２０ＡのＰＣＩｅトランザクション２０２０が図２０Ａのアクセラレーションコマンド２０１５を含んでいないことを知る。
【０１４５】
図２５は、本発明の実施形態による、ＰＣＩｅトランザクション２０２０がアクセラレーションコマンドを含む、図１のプロセッサ１１０から来ているか否かを判断するための図１９の第１ブリッジ構成要素１９０５ついての例示的な手を説明するためのフローチャートである。
【０１４６】
図２５において、ステップＳ２５０５で、第１ブリッジ構成要素１９０５は、図１のプロセッサ１１０からＰＣＩｅトランザクションを受信する。
ステップＳ２５１０で、第１ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断する。
もしそうなら（「はい」方向）、ステップＳ２５１５において、第１ブリッジ構成要素１９０５は、ＰＣＩｅトランザクション／アクセラレーションコマンドを図１のＦＰＧＡ１４５に伝達する。
しかし、そうでなければ（「いいえ」方向）、ステップＳ２５２０において、第１ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションを図１のＳＳＤ１２０に伝達する。
【０１４７】
図２６は、本発明の実施形態による、ＰＣＩｅトランザクションがアクセラレーションコマンドを含む、図１のストレージデバイス１２０から来ているか否かを判断するための図１９の第２ブリッジ構成要素１９１０についての例示的な手順を説明するためのフローチャートである。
図２６において、ステップＳ２６０５で、第２ブリッジ構成要素１９０５は、図１のＳＳＤ１２０からＰＣＩｅトランザクションを受信する。
ステップＳ２６１０で、第２ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションがアクセラレーションコマンドであるか否かを判断する。
もしそうなら（「はい」方向）、ステップＳ２６１５において、第２ブリッジ構成要素１９０５は、ＰＣＩｅトランザクション／アクセラレーションコマンドを図１のＦＰＧＡ１４５に伝達する。
しかし、そうでなければ（「いいえ」方向）、ステップＳ２６２０において、第２ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションを図１のＳＳＤ１２０に伝達する。
【０１４８】
図２７Ａ〜図２７Ｃは、本発明の実施形態による、ＳＳＤ１２０がＰＣＩｅトランザクションを処理するための例示的な手順を説明するためのフローチャートである。
【０１４９】
図２７Ａにおいて、ステップＳ２７０５で、ＳＳＤ１２０は、メモリアドレスのブロックを要請する。
ＳＳＤ１２０は、本発明の第１〜第４の実施形態でのように、ホストシステムメモリから、又は本発明の第５〜第８の実施形態でのようにＦＰＧＡ１４５のルートポートの構成空間からメモリアドレスのブロックを要請する。
サイドバンドバス３６５、「ＰＣＩｅ  ＶＤＭ」又は任意の他の望みのメカニズムを使用して、ステップＳ２７１０で、ＳＳＤ１２０は、ダウンストリームＦＡＲ４２０のように使用するためのメモリアドレスのブロックのサブセットを選択し、ステップＳ２７１５で、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をダウンストリームＦＡＲ４２０でプログラミングする。
本発明のいくつかの実施形態で、ステップＳ２７０５〜Ｓ２７１５は、点線２７２０に示すようにスキップすることができることに注目する（点線２７２０、また図２７Ｂに示すいくつかのブロックを省略する）。
【０１５０】
サイドバンドバス３６５、「ＰＣＩｅ  ＶＤＭ」又は任意の他の望みのメカニズムを使用して、ステップＳ２７２５（図２７Ｂ）で、ＳＳＤ１２０は、アップストリームＦＡＲ６０５のように使用するためのメモリアドレスのブロックのサブセットを選択し、ステップＳ２７３０で、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をダウンストリームＦＡＲ４２０でプログラミングする。
二者択一的に、ステップＳ２７３５で、ＳＳＤ１２０は、ＰＦ７０５を使用してそれ自身の能力を「さらす」。
その後に、サイドバンドバス３６５、「ＰＣＩｅ  ＶＤＭ」又は任意の他の望みのメカニズムを使用して、ステップＳ２７４０で、ＳＳＤ１２０は、ＦＰＧＡ１４５を「さらす」ためにＰＦ９０５又はＶＦ７１０を使用し、ステップＳ２７４５で、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をＰＦ９０５又はＶＦ７１０の識別子でプログラムする。
本発明のいくつかの実施形態でステップＳ２７２５〜Ｓ２７４５）は、点線２７５０で示すようにスキップされ得ることに注目する。
【０１５１】
ステップＳ２７５５で、ＳＳＤ１２０は、ＦＰＧＡ１４５からＰＣＩｅトランザクションを受信する。
このＰＣＩｅトランザクションは、図２０ＡのＰＣＩｅトランザクション２００５、又は（プロセッサ１１０からＦＰＧＡ１４５によって伝達される（ｆｏｒｗａｒｄｅｄ））図２０Ａ及び図２０ＢのＰＣＩｅトランザクション２０２５であり得る。
【０１５２】
ＰＣＩｅトランザクションのソースに関係なく、ステップＳ２７６０（図２７Ｃ参照）で、ＨＩＬ３１０は、ＰＣＩｅトランザクションがアクセラレーションコマンドかどうかを判断する。
もしそうなら（「はい」方向）、ステップＳ２７６５で、ＨＩＬ３１０は、ＰＣＩｅトランザクション（又は圧縮解除されたアクセラレーションコマンド）を処理するために「ＡＰＭ−Ｓ」３１５に伝送する。
「ＡＰＭ−Ｓ」３１５は、アクセラレーションコマンドへの応答を生成し、これは、図２０Ａのアクセラレーションコマンド２０２５、又は（ＰＣＩｅトランザクションがプロセッサ１１０から由来された場合）アクセラレーションデータ２０２５であり得る（ＰＣＩｅトランザクションがＦＰＧＡ１４５の「ＡＰＭ−Ｆ」３４０から由来した場合）。
いずれの場合でも、ステップＳ２７７０で、「ＡＰＭ−Ｓ」３１５は、応答をＦＰＧＡ１４５に伝送する。
【０１５３】
一方、ＰＣＩｅトランザクションがアクセラレーションコマンドではなければ（「いいえ」方向）、ステップＳ２７７５で、ＳＳＤ１２０は、ＰＣＩｅトランザクションが図２０の結果２０３０であるかを判断する。
もしそうなら（「はい」方向）、ステップＳ２７８０で、ＳＳＤ１２０は、図２０Ａの結果２０３５をプロセッサ１１０に伝送する（ＳＳＤ１２０及びＦＰＧＡ１４５のエンドポイント３０５を介して）。
ＰＣＩｅトランザクションが図２０Ａの結果２０３０ではなければ（「いいえ」方向）、ステップＳ２７８５で、ＳＳＤ１２０は、通常の場合のようにＳＳＤ１２０に格納されたデータに対してＰＣＩｅトランザクションを処理する。
【０１５４】
図２８Ａ、図２８Ｂは、本発明の実施形態によるＳＳＤ１２０がＦＰＧＡ１４５から出てくるＰＣＩｅトランザクションがアクセラレーションコマンドを含んでいるか否かを判断するための例示的な手順を説明するためのフローチャートである。
本発明の実施形態に基づいて、図２８Ａ及び２８Ｂは、個別的に又は集合的に使用することができる３つの可能なテストを示している。
一つ以上のテストを使用する本発明の実施形態で、いくつかのテストで満足される場合、図２０ＡのＰＣＩｅトランザクションはアクセラレーションコマンド２０１５を含むものと判断される。
【０１５５】
図２８Ａにおいて、ステップＳ２８０５で、ＳＳＤ１２０は、ＰＣＩｅトランザクション２０２０がプロセッサ１１０（ＳＳＤ１２０がＦＰＧＡ１４５にアクセラレーションコマンドを開始しなければならないことを示す）からの特定のコマンドを含んでいるか否かを判断する。
ステップＳ２８１０で、ＳＳＤ１２０は、ＰＣＩｅトランザクションが「ＡＰＭ−Ｆ」３４０から由来するのかどうかを判断し、これは「ＡＰＭ−Ｆ」３４０が図２０Ａ及び図２０Ｂのアクセラレーションデータ２０２５を要請したり、「ＡＰＭ−Ｆ」３４０が、図２０Ａの結果２０３０をＳＳＤ１２０に伝送したりする場合に発生する。
ステップＳ２８１０のテストは、任意の所望の方式で実行することができる。
つまり、例として、ＰＣＩｅトランザクションは、ＰＣＩｅトランザクションがアクセラレーションコマンドであることを示すためのタグを含んだり、ＰＣＩｅトランザクションはダウンストリームのアドレスと関連したりする。
ステップＳ２８１５で、ＳＳＤ１２０は、ＰＣＩｅトランザクションがエンドポイント１３１０のようなアクセラレーションコマンド専用のポートで受信されるか否かを判断する。
【０１５６】
これらのテストの結果の中のいずれかのものがＰＣＩｅトランザクションがアクセラレーションコマンドが含まれていることを示すと（「はい」方向）、ステップＳ２８２０（図２８Ｂ参照）で、ＳＳＤ１２０は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含んでいることを知る。
そうでない場合（「いいえ」方向）、ステップＳ２８２５で、ＳＳＤ１２０は、ＰＣＩｅトランザクションがアクセラレーションコマンドを含んでいないことを知る。
【０１５７】
図２１〜２８Ｂにおいて、本発明のいくつかの実施形態を示した。
しかし、当業者は、ステップの順序を変更したり、ステップを省略したり、又は図面に示していない接続を含んだりすることにより、本発明の他の実施形態も可能であることを認識するはずである。
加えて、特定の動作が特定の構成によって実行されるものとして説明したが、本発明の実施形態は、説明した動作を実行する他の構成を支援することができる。
フローチャートのこのようなすべての変形は、明示的に記述されていようとなかろうと本発明の実施形態だと見なされる。
【０１５８】
本発明の実施形態は、従来技術に比べて技術的な利点を提供する。
図１の装置１０５へ、図１のアクセラレーションモジュール１４５を導入することにより、図１のプロセッサ１１０は、図１のアクセラレーションモジュール１４５によって実行可能な作業をオフロード（ｏｆｆｌｏａｄ）することができる。
斯かるコマンドは、典型的には、廃棄することができる多くの量のデータを処理することを含んでいるので、図１のメモリ１４０のいくつかの空間を自由にする必要性を回避するだけでなく、図１のアクセラレーションモジュール１４５に作業をオフロードすることは、データを図１のストレージデバイス１２０から、図１のメモリ１４０にデータをローディングするのに要請される遅延を避ける。
【０１５９】
なお、本発明の多様な実施形態は、図１の相異なるタイプののストレージデバイス１２０）を使用することを支援する。
図１のアクセラレーションモジュール１４５を「さらす」ために追加のＰＦ及び／又はＶＦを支援するストレージデバイスだけでなく、シングルポート及びデュアルポートストレージデバイスのすべてが使用され得る。
【０１６０】
本発明の多様な実施形態は、異なる性能を提供するプロセッサを使用することを追加的にサポートする。
図１の装置１０５の動作システムがＶＦを支援すれば、ＶＦが図１のアクセラレーションモジュール１４５を「さらす」のに使用することができる。
そうでなければ、ＰＦが使用され得る。
図１のプロセッサ１１０は、図１のアクセラレーションモジュール１４５と直接通信することができ、そのような通信を支援する発明の実施形態が使用され得る。
そうでなければ、図１のプロセッサ１１０は、図１のストレージデバイス１２０に、すべてのアクセラレーションコマンドを送信することができ、図１のアクセラレーションモジュール１４５がアクセラレーションコマンドを実行するように要請するために、それを、図１のストレージデバイス１２０に残すことができる。
【０１６１】
下の説明は、本発明の技術的思想のいくつかの側面が具現される適切な装置（機械）又は複数の装置（機械）の簡単で一般的な説明を提供しようとする。
装置（機械）又は複数の装置（機械）は、少なくとも一部は、他の装置（機械）から受信される指示、バーチャルリアリティ（ＶＲ）環境との相互作用、生体フィードバック、又は他の入力信号だけではなく、キーボード、マウスなどのような通常の入力デバイスからの入力により制御され得る。
ここで使用するように、「装置（機械：マシン）」の用語は、単一のマシン、仮想マシン、複数の装置（機械）、複数の仮想マシン又はともに作動するデバイスと通信するように結合されたシステムを広く含むものとして意図する。
例示的な装置（機械）は、例として、自動車、電車、タクシーなどのような個人用や公共交通などの輸送装置（機械）だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルドデバイス、携帯電話、タブレットなどのようなコンピューティングデバイスを含み得る。
【０１６２】
装置（機械）又は複数の装置（機械）は、プログラム可能な又はプログラム不可能な論理デバイス、アレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、エンベデッドコンピュータ、スマートカードのようなエンベデッドコントローラを含むことができる。
装置（機械）又は複数の装置（機械）は、ネットワークインターフェース、モデム又は他の通信結合を介して、のように一つ又はそれより多くのリモート機械（マシン）への一つ又はそれより多くの接続を活用することができる。
装置（機械：マシン）は、イントラネット、インターネット、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）、（ＷＡＮ  ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）などのような物理的及び／又は論理的ネットワークの手段として、互いに接続することができる。
この分野における熟練した者は、ネットワーク通信が、多様な有線及び／又は無線の近距離又は遠距離キャリア、及び無線周波数（ＲＦ）、衛星、マイクロウェーブ、ＩＥＥＥ  ８０２．１１、ブルートゥース（登録商標）、光学、赤外線、ケーブル、レーザーなどを含むプロトコルを活用することを理解するだろう。
【０１６３】
本発明の技術的思想の実施形態は、装置（機械）によってアクセスされる際に装置（機械）が作業を実行したり、抽象データ型又は低レベルのハードウェアコンテキストを定義することを誘発する関数、プロシージャ、データ構造、アプリケーションなどを含む関連したデータを参照したり又は協力したりして説明することができる。
関連したデータは、例えば、ＲＡＭ、ＲＯＭなどのような揮発性及び／又は不揮発性メモリ、他のストレージデバイス、ハードドライブ、フロッピーディスク（登録商標）、光学ストレージ、テープ、フラッシュメモリ、メモリスティック（登録商標）、デジタルビデオディスク、生体ストレージなどを含む、関連したストレージデバイスに格納することができる。
関連したデータは、物理的及び／又は論理ネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形態で伝達され、圧縮された又は暗号化されたフォーマットで使用され得る。
関連したデータは、分散環境でも使用することができ、装置（機械）アクセスに対してローカル及び／又はリモートで格納することができる。
【０１６４】
本発明の技術的思想の実施形態は、一つ又はそれより多くのプロセッサによって実行可能であり、ここで説明したように、本発明の技術的思想の要素を行うようにするコマンドを含んで実在する非一時的装置（機械）（コンピュータ）読み出し媒体を含み得る。
【０１６５】
前述で説明した方法の多様な動作は、多様なハードウェア及び／又はソフトウェア構成、回路、及び／又は複数のモジュールのような動作を実行できる任意の適切な手段によって実行することができる。
ソフトウェアは、論理的機能を具現するための実行可能なコマンドの順序付けられたリストを含み得、単一若しくは多重のコアプロセッサ、プロセッサ含みシステムのようなデバイス（ｄｅｖｉｃｅ）、コマンド実行システム、又は機構（ａｐｐａｒａｔｕｓ）と関連した、若しくはこれらによる使用のための任意の「プロセッサ可読媒体」で具現することができる。
【０１６６】
本明細書に開示した実施形態に関連して説明した方法、アルゴリズム及び機能のブロック、又はステップは、ハードウェア、プロセッサによって実行中のソフトウェアモジュール、又はそれらの組み合わせで直接具現することができる。
ソフトウェアで具現される場合、機能は実在し、非一時的コンピュータ可読媒体上に格納されたり、１つ以上のコマンド又はコードとして伝送されたりすることができる。
ソフトウェアモジュールは、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、フラッシュメモリ、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、レジスタ、ハードディスク、リムーバブルディスク、ＣＤＲＯＭ、又はこの技術分野において知られている任意の他の形態のストレージ媒体であり得る。
【０１６７】
図に示した実施形態を参照して説明された本発明の技術的思想の原則を有していると、図に示した実施形態は、このような原則から逸脱せずに、配列及び細部事項で修正されることができ、必要な任意の方法で組み合わせられることが理解されるだろう。
前述の説明が具体的な実施形態に集中したが、他の構成もまた考慮される。
具体的には、「本発明の技術的思想の実施形態による」のような説明や、ここで使用した類似のものにもかかわらず、このようなフレーズは、一般的に実施形態の可能性を参照し、本発明の技術的思想を具体的な実施形態の構成に限定することを意図しない。
ここで使用したように、このような用語は、他の実施形態への組み合わせ可能な同一又は相異なる実施形態を参照することができる。
【０１６８】
前述に説明した実施形態は、本発明の技術的思想を、それらに限定するものと解釈されない。
少ない実施形態だけを説明したが、この分野における熟練した者は、本記載の新規な説明及び長所から実質的に逸脱せずに、このような実施形態に多くの修正が可能であることを十分に理解するだろう。
したがって、このようなすべての修正は、請求項において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図する。
【０１６９】
本発明の実施形態は、制限なしに次のステートメント（Ｓｔａｔｅｍｅｎｔ）へ拡張することができる。
【０１７０】
ステートメント１。本発明の実施形態は、システムを含む。前記システムは、アプリケーションを実行するプロセッサと、
前記プロセッサ上で実行中の前記アプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するためのアップストリームインターフェースと、
ストレージデバイスと通信するためのダウンストリームインターフェースと、
ハードウェアを使用して具現されてアクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を含むアクセラレーションモジュールと、を包含し、
前記ストレージデバイスは、前記アクセラレーションモジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
前記アプリケーションに対するアプリケーションデータを格納するためのストアと、
前記アクセラレーションコマンドを実行するのに前記アクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）と、をさらに包含し、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを介して通信し、
前記アクセラレーションモジュールは、前記アプリケーションデータを前記メモリにローディングすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【０１７１】
ステートメント２。本発明の一実施形態はステートメント１によるシステムを含み、前記プロセッサと前記アクセラレーションモジュールとの間の通信を接続（ｂｒｉｄｇｉｎｇ）し、前記アップストリームインターフェースを含む第１ブリッジ構成要素と、
前記アクセラレーションモジュールと前記ストレージデバイスとの間の通信を接続し、前記ダウンストリームインターフェースを含む第２ブリッジ構成要素と、をさらに包含する。
ステートメント３。本発明の一実施形態はステートメント１によるシステムを含み、前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記アクセラレーションモジュールは、前記アップストリームインターフェース及び前記ダウンストリームインタフェースを包含し、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０１７２】
ステートメント４。本発明の一実施形態はステートメント３によるシステムを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓは、前記アクセラレーションコマンドとともに使用される前記アプリケーションデータに関する、前記ダウンストリームインターフェース及び前記ＳＳＤの前記エンドポイントを使用して通信する。
ステートメント５。本発明の一実施形態はステートメント３によるシステムを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０１７３】
ステートメント６。本発明の一実施形態はステートメント３によるシステムを含み、前記プロセッサは、非揮発性メモリエクスプレス（ＮＶＭｅ）プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット（ＴＬＰ）を含むＰＣＩｅトランザクションをＳＳＤに伝送する。
ステートメント７。本発明の一実施形態はステートメント３によるシステムを含み、前記ＦＰＧＡは、アクセラレーションエンジンと、
前記アクセラレーションエンジンに前記アクセラレーションコマンドをスケジューリングするランタイムスケジューラ（ｒｕｎ−ｔｉｍｅ  ｓｃｈｅｄｕｌｅｒ）と、をさらに含む。
ステートメント８。本発明の一実施形態はステートメント３によるシステムを含み、前記ＳＳＤは、ＦＰＧＡを含む。
【０１７４】
ステートメント９。本発明の一実施形態はステートメント３によるシステムを含み、前記アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、
前記ダウンストリームインターフェースは、構成空間を支援するＦＰＧＡのルートポートを含み、
前記ＦＰＧＡは、第１ＰＦ、第２ＰＦ及び前記ＦＰＧＡルートポートと関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ＳＳＤから受信した第１アクセラレーションコマンドをインターセプトするように動作し、前記ＡＰＭ−Ｆにダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連する前記第１アクセラレーションコマンドを伝達するように動作し、
前記ＦＰＧＡは、前記第１ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、前記第２ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、前記プロセッサから受信した第１ＰＣＩｅトランザクションを、前記ＳＳＤに伝達するように動作し、前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記第１ＰＣＩｅトランザクションは、前記第１ＰＦの第１識別子と関連付けられ、
前記第２アクセラレーションコマンドは、前記第２ＰＦの第２識別子と関連関連付けられる。
【０１７５】
ステートメント１０。本発明の一実施形態はステートメント９によるシステムを含み、前記アクセラレーションコマンドは、前記ＡＰＭ−Ｓによって生成される。
ステートメント１１。本発明の一実施形態はステートメント１０によるシステムを含み、前記ＳＳＤは、前記プロセッサから受信した前記アクセラレーションコマンドを含む、特定のコマンドをインターセプトし、前記アクセラレーションコマンドを生成するために、前記ＡＰＭ−Ｓをトリガーするために、前記特定のコマンドを前記ＡＰＭ−Ｓに伝達するホストインターフェースロジック（ＨＩＬ）と、をさらに含む。
【０１７６】
ステートメント１２。本発明の一実施形態はステートメント１１によるシステムを含み、前記特定のコマンドは、前記のプロセッサ上で実行中のアクセラレーションサービスマネージャー（ＡＳＭ）から由来する。
ステートメント１３。本発明の一実施形態はステートメント９によるシステムを含み、前記ＳＳＤは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
【０１７７】
ステートメント１４。本発明の一実施形態はステートメント１３によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
ステートメント１５。本発明の一実施形態はステートメント１４によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント１６。本発明の一実施形態はステートメント１５によるシステムを含み、前記サイドバンドバスはＩ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス及びＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）を含むセットから得られる。
ステートメント１７。本発明の一実施形態はステートメント１４によるシステムを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用して、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０１７８】
ステートメント１８。本発明の一実施形態はステートメント９によるシステムを含み、前記ＡＰＭ−Ｆは、前記のダウンストリームポート及び前記ＳＳＤのエンドポイントを介して前記ＡＰＭ−Ｓに結果を送信するように動作し、
前記コントローラは、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
ステートメント１９。本発明の一実施形態はステートメント９によるシステムを含み、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０１７９】
ステートメント２０。本発明の一実施形態はステートメント９によるシステムを含み、前記ＦＰＧＡは、前記アップストリームポートと関連したアップストリームフィルタと、をさらに含み、前記アップストリームフィルタは、前記プロセッサから受信した第２アクセラレーションコマンドをインターセプトするように動作し、前記アップストリームＦＡＲと関連している前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡはアップストリームポートで前記プロセッサから受信したアップストリームＦＡＲと関連していない第３ＰＣＩｅトランザクションを、前記ＳＳＤに伝達するように動作する。
【０１８０】
ステートメント２１。本発明の一実施形態はステートメント２０によるシステムを含み、前記第２アクセラレーションコマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
ステートメント２２。本発明の一実施形態はステートメント２０によるシステムを含み、前記ＳＳＤは、前記プロセッサからホストシステムアドレスのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第１サブセット及びアップストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第２サブセットを選択するように動作する。
【０１８１】
ステートメント２３。ス本発明の一実施形態はステートメント２２によるシステムを含み、ホストシステムのアドレスのブロックが、前記プロセッサ上で実行中のＡＳＭによってアクセス可能な特定のレジスタを含み、前記特定のレジスタは、前記アップストリームＦＡＲを識別する。
ステートメント２４。本発明の一実施形態はステートメント２２によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲで、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０１８２】
ステートメント２５。本発明の一実施形態はステートメント２４によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲで、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
ステートメント２６。本発明の一実施形態はステートメント２５によるシステムを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０１８３】
ステートメント２７。本発明の一実施形態はステートメント２４によるシステムを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」を使用して前記ダウンストリームフィルタを前記ダウンストリームＦＡＲで、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
ステートメント２８。本発明の一実施形態はステートメント２０によるシステムを含み、前記ＡＰＭ−Ｆは、前記ダウンストリームポート及び前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｓに結果を伝送するように動作し、
前記コントローラは、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
【０１８４】
ステートメント２９。本発明の一実施形態はステートメント２０によるシステムを含み、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント３０。本発明の一実施形態はステートメント９によるシステムを含み、前記ＳＳＤは物理関数（ＰＦ）及び仮想関数（ＶＦ）を含み、前記ＰＦは前記ＳＳＤを「さらす」ために動作し、前記ＶＦは前記ＦＰＧＡを「さらす」ために動作し、
前記ＦＰＧＡは、前記アップストリームポートと関連した前記アップストリームフィルタと、をさらに含み、前記アップストリームフィルタは、前記プロセッサから受信した第２アクセラレーションコマンドをインターセプトし、前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡは、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされない第３ＰＣＩｅトランザクションを、前記ＳＳＤに伝達するように動作する
【０１８５】
ステートメント３１。本発明の一実施形態はステートメント３０によるシステムを含み、前記第２アクセラレーションコマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
ステートメント３２。本発明の一実施形態はステートメント３０によるシステムを含み、前記ＰＦは、前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第１サブセットを選択するように動作する。
【０１８６】
ステートメント３３。本発明の一実施形態はステートメント３２によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
ステートメント３４。本発明の一実施形態はステートメント３３によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０１８７】
ステートメント３５。本発明の一実施形態はステートメント３４によるシステムを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント３６。本発明の一実施形態はステートメント３３によるシステムを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」を使用して前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０１８８】
ステートメント３７。本発明の一実施形態はステートメント３０によるシステムを含み、前記第２アクセラレーションコマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、アップストリームＦＡＲと関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
ステートメント３８。本発明の一実施形態はステートメント３７によるシステムを含み、前記ＶＦは、前記アップストリームＦＡＲとして前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作する。
【０１８９】
ステートメント３９。本発明の一実施形態はステートメント３８によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
ステートメント４０。本発明の一実施形態はステートメント３９によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０１９０】
ステートメント４１。本発明の一実施形態はステートメント４０によるシステムを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント４２。本発明の一実施形態はステートメント３９によるシステムを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」を使用して前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０１９１】
ステートメント４３。本発明の一実施形態はステートメント３０によるシステムを含み、前記第２アクセラレーションコマンドは、前記ＶＦの識別子を含み、
前記アップストリームフィルタは、前記ＶＦの前記識別子に関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
ステートメント４４。本発明の一実施形態はステートメント４３によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするように動作する。
【０１９２】
ステートメント４５。本発明の一実施形態はステートメント４４によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント４６。本発明の一実施形態はステートメント４５によるシステムを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０１９３】
ステートメント４７。本発明の一実施形態はステートメント４４によるシステムを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」を使用して前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするように動作する。
ステートメント４８。本発明の一実施形態はステートメント３０によるシステムを含み、前記ＡＰＭ−Ｆは、前記のダウンストリームポート及び前記ＳＳＤのエンドポイントを介して前記ＡＰＭ−Ｓに結果を伝送するように動作し、
前記コントローラは、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
【０１９４】
ステートメント４９。本発明の一実施形態はステートメント３０によるシステムを含み、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント５０。本発明の一実施形態はステートメント９によるシステムを含み、前記ＳＳＤは、前記ＳＳＤを「さらす」ように動作する第１ＰＦ及び前記ＦＰＧＡを「さらす」ように動作する第２ＰＦを含み、
前記ＦＰＧＡは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、前記アップストリームフィルタは、前記プロセッサから受信した第２アクセラレーションコマンドをインターセプトするように動作して、前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡはアップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされない第３ＰＣＩｅトランザクションを、前記ＳＳＤに伝達する。
【０１９５】
ステートメント５１。本発明の一実施形態はステートメント５０によるシステムを含み、前記第２アクセラレーションコマンドが、前記プロセッサ上で実行中のＡＳＭから由来する。
ステートメント５２。本発明の一実施形態はステートメント５０によるシステムを含み、前記第１ＰＦは、前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第１サブセットを選択するように動作する。
【０１９６】
ステートメント５３。本発明の一実施形態はステートメント５２によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
ステートメント５４。本発明の一実施形態はステートメント５３によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記サイドバンドバスを利用するように動作する。
【０１９７】
ステートメント５５。本発明の一実施形態はステートメント５４によるシステムを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント５６。本発明の一実施形態はステートメント５３によるシステムを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」を使用して前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするように動作する。
【０１９８】
ステートメント５７。本発明の一実施形態はステートメント５０によるシステムを含み、前記第２アクセラレーションコマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、前記アップストリームＦＡＲに関連した前記第２のアクセラレーションコマンドをインターセプトするように動作する。
ステートメント５８。本発明の一実施形態はステートメント５７によるシステムを含み、前記第２ＰＦが前記アップストリームＦＡＲとして前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作する。
【０１９９】
ステートメント５９。本発明の一実施形態はステートメント５８によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
ステートメント６０。本発明の一実施形態はステートメント５９によるシステムを含み、前記コントローラは、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０２００】
ステートメント６１。本発明の一実施形態はステートメント６０によるシステムを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント６２。本発明の一実施形態はステートメント５９によるシステムを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」を使用して前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするように動作する。
【０２０１】
ステートメント６３。本発明の一実施形態はステートメント５０によるシステムを含み、前記第２アクセラレーションコマンドは、前記第２ＶＦの識別子を含み、
前記アップストリームフィルタは、前記第２ＶＦの前記識別子に関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
ステートメント６４。本発明の一実施形態はステートメント６３によるシステムを含み、前記コントローラは、前記第２ＰＦの前記識別子で前記アップストリームフィルタをプログラミングするように動作する。
【０２０２】
ステートメント６５。本発明の一実施形態はステートメント６４によるシステムを含み、前記コントローラは、前記第２ＰＦの前記識別子で前記アップストリームフィルタをプログラミングするために、前記サイドバンドバスを使用するように動作する。
ステートメント６６。本発明の一実施形態はステートメント６５によるシステムを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２０３】
ステートメント６７。本発明の一実施形態はステートメント６４によるシステムを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」を使用して前記アップストリームフィルタを前記第２ＰＦの前記識別子でプログラミングするように動作する。
ステートメント６８。本発明の一実施形態はステートメント５０によるシステムを含み、前記ＡＰＭ−Ｆは、前記ダウンストリームポート及び前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｓに結果を伝送するように動作し、
前記コントローラの前記の結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
ステートメント６９。本発明の一実施形態はステートメント５０によるシステムを含み、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０２０４】
ステートメント７０。本発明の一実施形態はステートメント３によるシステムを含み、前記アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、
前記ダウンストリームインターフェイスは、構成空間を支援するＦＰＧＡのルートポートを含み、
前記ＦＰＧＡは、第１ＰＦ、第２ＰＦ、及び前記ＦＰＧＡルートポートと関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信した第１アクセラレーションコマンドをインターセプトするように動作して前記第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記第１アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連付けられ、
前記ＦＰＧＡは、前記第１ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、前記第２ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、
前記ＦＰＧＡは、前記プロセッサから受信したＰＣＩｅトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記ＰＣＩｅトランザクションは、前記第１ＰＦの第１識別子と関連付けられ、
前記第２アクセラレーションコマンドは、前記第２ＰＦの第２識別子と関連付けられる。
【０２０５】
ステートメント７１。本発明の一実施形態はステートメント７０によるシステムを含み、前記ＳＳＤは、前記ＦＰＧＡから前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックを要請するように動作し、
前記ホストシステムアドレスの前記第２ブロックは、少なくとも前記ＦＰＧＡアドレスの前記ブロックほど大きく、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記ＦＰＧＡアドレスの前記ブロックのサブセットを選択するように動作する。
ステートメント７２。本発明の一実施形態はステートメント７１によるシステムを含み、前記コントローラは、ダウンストリームフィルタをダウンストリームＦＡＲでプログラムするように動作する。
【０２０６】
ステートメント７３。本発明の一実施形態はステートメント７２によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
ステートメント７４。本発明の一実施形態はステートメント７３によるシステムを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２０７】
ステートメント７５。本発明の一実施形態はステートメント７２によるシステムを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」を使用して前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
ステートメント７６。本発明の一実施形態はステートメント７０によるシステムを含み、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント７７。本発明の一実施形態はステートメント７０によるシステムを含み、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニターをさらに含む。
【０２０８】
ステートメント７８。本発明の一実施形態はステートメント３によるシステムを含み、前記アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、
前記ダウンストリームインターフェースは、第１構成空間を支援する第１ＦＰＧＡのルートポート及び第２構成空間を支援する第２ＦＰＧＡのルートポートを含み、
前記ＳＳＤの前記エンドポイントは、前記第１ＦＰＧＡのルートポートと関連し、
前記ＳＳＤは、前記第２のＦＰＧＡのルートポートと関連した前記ＳＳＤの第２エンドポイントと、をさらに含み、
前記ＦＰＧＡは、第１ＰＦ及び第２ＰＦを含み、
前記ＦＰＧＡは、前記第１ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、前記第２ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、
前記ＦＰＧＡは、前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記第１ＦＰＧＡのルートポート及び前記ＳＳＤの前記エンドポイントを介して前記ＳＳＤに伝送するように動作し、
前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記第１ＦＰＧＡのルートポートで、前記ＳＳＤから受信した第２ＰＣＩｅトランザクションを前記プロセッサに伝達するように動作し、
前記第２のＦＰＧＡのルートポートで、前記ＳＳＤから受信した第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記第１ＰＣＩｅトランザクションは、前記第１ＰＦの第１識別子と関連付けられ、
前記第２アクセラレーションコマンドは、前記第２ＰＦの第２識別子と関連付けられる。
【０２０９】
ステートメント７９。本発明の一実施形態はステートメント７８によるシステムを含み、前記第２アクセラレーションコマンドは、前記ＡＰＭ−Ｓによって生成される。
ステートメント８０。本発明の一実施形態はステートメント７８によるシステムを含み、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送する。
【０２１０】
ステートメント８１。本発明の一実施形態はステートメント７８によるシステムを含み、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニターをさらに含む。
ステートメント８２。本発明の一実施形態はステートメント７８によるシステムを含み、前記アップストリームインターフェースは、第２ＦＰＧＡのエンドポイントと、をさらに含み、
前記ＦＰＧＡは、前記ＦＰＧＡエンドポイントにおいて、前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記第１ＦＰＧＡのルートポート及び前記ＳＳＤのエンドポイントを介して前記ＳＳＤに伝達するようにさらに動作し、前記第２ＦＰＧＡのエンドポイントで、前記プロセッサから受信した前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように、さらに動作する。
【０２１１】
ステートメント８３。本発明の一実施形態はステートメント８２によるシステムを含み、前記第２アクセラレーションコマンドは、前記ＡＰＭ−Ｓによって生成される。
ステートメント８４。本発明の一実施形態はステートメント８２によるシステムを含み、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント８５。本発明の一実施形態はステートメント８２によるシステムを含み、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニターをさらに含む。
【０２１２】
ステートメント８６。本発明の一実施形態はステートメント３によるシステムを含み、前記アップストリームインターフェースは、第１ＦＰＧＡエンドポイント及び第２ＦＰＧＡのエンドポイントを含み、
前記ダウンストリームインターフェースは、構成空間を支援するＦＰＧＡのルートポートを含み、
前記ＦＰＧＡは、前記ＦＰＧＡルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ＳＳＤから受信した第１アクセラレーションコマンドをインターセプトするように動作して、前記ＡＰＭ−Ｆに前記第１アクセラレーションコマンドを伝達するように動作し、
前記第１アクセラレーションコマンドは、ダウンストリームＦＡＲと関連し、
前記ＦＰＧＡは、前記ＦＰＧＡエンドポイントにおいて、前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記第１ＦＰＧＡのルートポート及び前記ＳＳＤの前記エンドポイントを介して前記ＳＳＤに伝達するように動作し、
前記第２ＦＰＧＡのエンドポイントにおいて、前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１ＦＰＧＡのルートポートで、前記ＳＳＤから受信した前記ダウンストリームＦＡＲと関連していない第２ＰＣＩｅトランザクションを前記ＦＰＧＡエンドポイントを介して前記プロセッサに伝達するように動作し、
前  記第２ＦＰＧＡのルートポートで、前記ＳＳＤから受信した第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように動作する。
【０２１３】
ステートメント８７。本発明の一実施形態はステートメント８６によるシステムを含み、前記第２アクセラレーションコマンドは、前記ＡＰＭ−Ｓによって生成される。
ステートメント８８。本発明の一実施形態はステートメント８６によるシステムを含み、前記ＳＳＤは、前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックを前記ＦＰＧＡから要請するように動作し、
前記ＦＰＧＡは、少なくとも前記ＦＰＧＡアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを前記第１ＦＰＧＡエンドポイントに対する前記プロセッサから要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして前記ＦＰＧＡアドレスの前記ブロックのサブセットを選択するように動作する。
【０２１４】
ステートメント８９。本発明の一実施形態はステートメント８８によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
ステートメント９０。本発明の一実施形態はステートメント８９によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０２１５】
ステートメント９１。本発明の一実施形態はステートメント９０によるシステムを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント９２。本発明の一実施形態はステートメント８９によるシステムを含み、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記「ＰＣＩｅ  ＶＤＭ」を使用するように動作する。
【０２１６】
ステートメント９３。ステートメント８６によると、本発明の実施形態は、システムを含む。ステートメント８６において、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送する。
ステートメント９４。本発明の一実施形態はステートメント８６によるシステムを含み、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニターをさらに含む。
【０２１７】
ステートメント９５。本発明の実施形態は、アクセラレーションモジュールを含む。
前記アクセラレーションモジュールは、アクセラレーションコマンドを実行するためのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）と、
プロセッサと通信するためのアップストリームインターフェースと、
前記アクセラレーションコマンドを実行するのに前記ＡＰＭ−Ｆを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）を含むストレージデバイスと通信するためのダウンストリームインターフェースを含み、
前記プロセッサ上でアプリケーションが実行され、
前記アクセラレーションモジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して前記プロセッサ及び前記ストレージデバイスと通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリにアプリケーションのデータをローディングすることなく、前記アプリケーションに対する前記ストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【０２１８】
ステートメント９６。本発明の一実施形態はステートメント９５によるアクセラレーションモジュールを含み、前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現される。
ステートメント９７。本発明の一実施形態はステートメント９６によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓは、前記アクセラレーションコマンドとともに使用される前記アプリケーションのデータに関する前記ダウンストリームインターフェースを使用して通信する。
【０２１９】
ステートメント９８。本発明の一実施形態はステートメント９６によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
ステートメント９９。本発明の一実施形態はステートメント９６によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、アクセラレーションエンジンと、
前記アクセラレーションエンジンで前記アクセラレーションコマンドをスケジューリングするランタイムスケジューラ（ｒｕｎ−ｔｉｍｅ  ｓｃｈｅｄｕｌｅｒ）と、をさらに含む。
【０２２０】
ステートメント１００。本発明の一実施形態はステートメント９６によるアクセラレーションモジュールを含み、前記アップストリームインターフェースはアップストリームポートを含み、
前記ダウンストリームインターフェースはダウンストリームポートを含み、
前記ＦＰＧＡは、前記アップストリームポートで前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するように動作し、
前記ＦＰＧＡは、前記ダウンストリームポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信したアクセラレーションコマンドをインターセプトするように動作して前記ＡＰＭ−Ｆに前記アクセラレーションコマンドを伝達するように動作し、
前記アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連付けられ、
前記ＦＰＧＡは、ダウンストリームポートで、前記ストレージデバイスから受信した前記ダウンストリームＦＡＲと関連していない第２ＰＣＩｅトランザクションを前記プロセッサに伝送するように動作する。
【０２２１】
ステートメント１０１。本発明の一実施形態はステートメント１００によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記ダウンストリームフィルタで前記ダウンストリームＦＡＲは、前記コントローラによってプログラミングされる。
ステートメント１０２。本発明の一実施形態はステートメント１０１によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記ダウンストリームフィルタで前記ダウンストリームＦＡＲは、前記サイドバンドバスを介して前記コントローラによってプログラミングされる。
【０２２２】
ステートメント１０３。本発明の一実施形態はステートメント１０２によるアクセラレーションモジュールを含み、前記サイドバンドバスはＩ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス及びＳＭ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）バスを含むセットから得られる。
ステートメント１０４。本発明の一実施形態はステートメント１０１によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記ダウンストリームフィルタで前記ダウンストリームＦＡＲは「ＰＣＩｅ  ＶＤＭ」（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用して、前記コントローラによってプログラミングされる。
【０２２３】
ステートメント１０５。本発明の一実施形態はステートメント１００によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記ダウンストリームポートを介して前記ストレージデバイスのＡＭＰ−Ｓに結果を伝送するように動作する。
ステートメント１０６。本発明の一実施形態はステートメント１００によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント１０７。本発明の一実施形態はステートメント１００によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０２２４】
ステートメント１０８。本発明の一実施形態はステートメント１００によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、
前記アップストリームフィルタは、前記プロセッサから受信した第２アクセラレーションコマンドをインターセプトするよう動作し、アップストリームＦＡＲと関連付けられる前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡはアップストリームポートで前記プロセッサから受信した前記アップストリームＦＡＲと関連していない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０２２５】
ステートメント１０９。本発明の一実施形態はステートメント１０８によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
ステートメント１１０。本発明の一実施形態はステートメント１０９によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０２２６】
ステートメント１１１。本発明の一実施形態はステートメント１１０によるアクセラレーションモジュールを含み、前記サイドバンドバスはＩ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス及びＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）を含むセットから得られる。
ステートメント１１２。本発明の一実施形態はステートメント１０９によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記「ＰＣＩｅ  ＶＤＭ」を用いて前記ストレージデバイスによってプログラミングされる。
【０２２７】
ステートメント１１３。本発明の一実施形態はステートメント１０８によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記ダウンストリームポートを介して前記ストレージデバイスのＡＭＰ−Ｓへ結果を伝送するように動作する。
ステートメント１１４。本発明の一実施形態はステートメント１０８によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０２２８】
ステートメント１１５。本発明の一実施形態はステートメント１０８によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
ステートメント１１６。ス本発明の一実施形態はステートメント１０８によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記ストレージデバイスに割り当てられた非揮発性メモリエクスプレス（ＮＶＭｅ）レジスタを介して前記プロセッサに間接的に「さらさ」れる。
【０２２９】
ステートメント１１７。本発明の一実施形態はステートメント１００によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記ストレージデバイスの仮想機能（ＶＦ）により「さらさ」れ、
前記ＦＰＧＡは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、
前記アップストリームフィルタは、前記プロセッサから受信した第２アクセラレーションコマンドをインターセプトするよう動作し、前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡは、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０２３０】
ステートメント１１８。本発明の一実施形態はステートメント１１７によるアクセラレーションモジュールを含み、前記第２アクセラレーションコマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、アップストリームＦＡＲと関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
ステートメント１１９。本発明の一実施形態はステートメント１１８によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０２３１】
ステートメント１２０。本発明の一実施形態はステートメント１１９によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント１２１。本発明の一実施形態はステートメント１２０によるアクセラレーションモジュールを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２３２】
ステートメント１２２。本発明の一実施形態はステートメント１１９によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは「ＰＣＩｅ  ＶＤＭ」を使用して、前記ストレージデバイスによってプログラミングされる。
ステートメント１２３。本発明の一実施形態はステートメント１１７によるアクセラレーションモジュールを含み、前記第２アクセラレーションコマンドは、前記ＶＦの識別子を含み、
前記アップストリームフィルタは、前記ＶＦの前記識別子に関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
【０２３３】
ステートメント１２４。本発明の一実施形態はステートメント１２３によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタは、前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
ステートメント１２５。本発明の一実施形態はステートメント１２４によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０２３４】
ステートメント１２６。本発明の一実施形態はステートメント１２５によるアクセラレーションモジュールを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント１２７。本発明の一実施形態はステートメント１２４によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタは「ＰＣＩｅ  ＶＤＭ」を用いて前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０２３５】
ステートメント１２８。本発明の一実施形態はステートメント１１７によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記ダウンストリームポートを介して前記ストレージデバイスの前記ＡＭＰ−Ｓへ結果を伝送するように動作する。
ステートメント１２９。本発明の一実施形態はステートメント１１７によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０２３６】
ステートメント１３０。本発明の一実施形態はステートメント１１７によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
ステートメント１３１。本発明の一実施形態はステートメント１００によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記ストレージデバイスの物理関数（ＰＦ）により「さらさ」れ、
前記ＦＰＧＡは、前記アップストリームポートと関連したアップストリームフィルタをさらに含み、
前記アップストリームフィルタは、前記プロセッサから受信した第２アクセラレーションコマンドをインターセプトするよう動作し、前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡは、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０２３７】
ステートメント１３２。本発明の一実施形態はステートメント１３１によるアクセラレーションモジュールを含み、前記第２アクセラレーションコマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、アップストリームＦＡＲに関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
ステートメント１３３。本発明の一実施形態はステートメント１３２によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０２３８】
ステートメント１３４。本発明の一実施形態はステートメント１３３によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント１３５。本発明の一実施形態はステートメント１３４によるアクセラレーションモジュールを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２３９】
ステートメント１３６。本発明の一実施形態はステートメント１３３によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは「ＰＣＩｅ  ＶＤＭ」を使用して、前記ストレージデバイスによってプログラミングされる。
ステートメント１３７。本発明の一実施形態はステートメント１３１によるアクセラレーションモジュールを含み、前記第２アクセラレーションコマンドは、前記ＰＦの識別子を含み、
前記アップストリームフィルタは、前記ＰＦの前記識別子に関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
【０２４０】
ステートメント１３８。本発明の一実施形態はステートメント１３７によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタは、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
ステートメント１３９。ス本発明の一実施形態はステートメント１３８によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタはサイドバンドバスを使用して、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０２４１】
ステートメント１４０。本発明の一実施形態はステートメント１３９によるアクセラレーションモジュールを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント１４１。本発明の一実施形態はステートメント１３８によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記アップストリームフィルタは「ＰＣＩｅ  ＶＤＭ」を使用して、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０２４２】
ステートメント１４２。本発明の一実施形態はステートメント１３１によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記ダウンストリームポートを介して前記ＡＰＭ−Ｓへ結果を伝送するように動作する。
ステートメント１４３。本発明の一実施形態はステートメント１３１によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
ステートメント１４４。本発明の一実施形態はステートメント１３１によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０２４３】
ステートメント１４５。本発明の一実施形態はステートメント９６によるアクセラレーションモジュールを含み、前記アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、
前記ダウンストリームインターフェースは、構成空間を支援するＦＰＧＡのルートポートを含み、
前記ＦＰＧＡは、第１ＰＦ、第２ＰＦ、及び前記ＦＰＧＡルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信した第１アクセラレーションコマンドをインターセプトするように動作し、前記第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１アクセラレーションコマンドは、ダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連付けられ、
前記ＦＰＧＡは、前記第１ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、前記第２ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、
前記ＦＰＧＡは、前記プロセッサから受信したＰＣＩｅトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＰＣＩｅトランザクションは、前記第１ＰＦの第１識別子と関連付けられ、
前記第２アクセラレーションコマンドは、前記第２ＰＦの第２識別子と関連付けられる。
【０２４４】
ステートメント１４６。本発明の一実施形態はステートメント１４５によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記ＦＰＧＡから前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックに対する要請を前記ストレージデバイスから受信するように動作し、
前記ＦＰＧＡは、前記構成空間から前記ＦＰＧＡアドレスの前記ブロックを割り当てるように動作し、
前記ホストシステムアドレスの前記第１ブロックは、少なくとも前記ＦＰＧＡアドレスの前記ブロックほど大きい。
ステートメント１４７。本発明の一実施形態はステートメント１４６によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記ダウンストリームフィルタ内で前記ダウンストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０２４５】
ステートメント１４８。本発明の一実施形態はステートメント１４７によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記ダウンストリームフィルタ内で前記ダウンストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント１４９。本発明の一実施形態はステートメント１４８によるアクセラレーションモジュールを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２４６】
ステートメント１５０。本発明の一実施形態はステートメント１４７によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記ダウンストリームフィルタ内で前記ダウンストリームＦＡＲは、前記「ＰＣＩｅ  ＶＤＭ」を用いて前記ストレージデバイスによってプログラミングされる。
ステートメント１５１。本発明の一実施形態はステートメント１４５によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
【０２４７】
ステートメント１５２。本発明の一実施形態はステートメント１４５によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
ステートメント１５３。本発明の一実施形態はステートメント１４５によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニターをさらに含む。
【０２４８】
ステートメント１５４。本発明の一実施形態はステートメント９６によるアクセラレーションモジュールを含み、前記アップストリームインターフェースは、ＦＰＧＡのエンドポイントを含み、
前記ダウンストリームインターフェイスは、第１構成空間を支援する第１ＦＰＧＡのルートポート及び第２構成空間を支援する第２ＦＰＧＡのルートポートを含み、
前記ＳＳＤの前記エンドポイントは、前記第１ＦＰＧＡのルートポートと関連し、
前記ＳＳＤは、前記第２ＦＰＧＡのルートポートと関連した前記ＳＳＤの第２エンドポイントをさらに含み、
前記ＦＰＧＡは、第１ＰＦ及び第２ＰＦを含み、
前記ＦＰＧＡは、前記第１ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、前記第２ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、
前記ＦＰＧＡは、前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記第１ＦＰＧＡのルートポート及び前記ＳＳＤの前記エンドポイントを介して前記ＳＳＤに伝送するように動作し、
前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１ＦＰＧＡのルートポートで、前記ＳＳＤから受信した第２ＰＣＩｅトランザクションを前記プロセッサに伝達するよう動作し、
前記第２ＦＰＧＡのルートポートで、前記ＳＳＤから受信した第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように動作する。
【０２４９】
ステートメント１５５。本発明の一実施形態はステートメント１５４によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送する。
ステートメント１５６。本発明の一実施形態はステートメント１５４によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０２５０】
ステートメント１５７。本発明の一実施形態はステートメント１５４によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記のＦＰＧＡのエンドポイントにコピーするための構成モニターをさらに含む。
ステートメント１５８。本発明の一実施形態はステートメント１５４によるアクセラレーションモジュールを含み、前記アップストリームインターフェースは、第２ＦＰＧＡのエンドポイントをさらに含み、
前記ＦＰＧＡは、前記ＦＰＧＡエンドポイントにおいて、前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記第１ＦＰＧＡのルートポート及び前記ＳＳＤのエンドポイントを介して前記ＳＳＤに伝達するように、さらに動作し、前記第２ＦＰＧＡのエンドポイントで、前記プロセッサから受信した前記第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように、さらに動作する。
【０２５１】
ステートメント１５９。本発明の一実施形態はステートメント１５８によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
ステートメント１６０。本発明の一実施形態はステートメント１５８によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
ステートメント１６１。本発明の一実施形態はステートメント１５８によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記のＦＰＧＡのエンドポイントにコピーするための構成モニターをさらに含む。
【０２５２】
ステートメント１６２。本発明の一実施形態はステートメント９６によるアクセラレーションモジュールを含み、前記アップストリームインターフェースは、第１ＦＰＧＡエンドポイント及び第２ＦＰＧＡのエンドポイントを含み、
前記ダウンストリームインターフェースは、構成空間を支援するＦＰＧＡのルートポートを含み、
前記ＦＰＧＡは、前記ＦＰＧＡルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ＳＳＤから受信した第１アクセラレーションコマンドをインターセプトするように動作して、前記ＡＰＭ−Ｆに前記第１アクセラレーションコマンドを伝達するように動作し、
前記第１アクセラレーションコマンドは、ダウンストリームＦＡＲと関連し、
前記ＦＰＧＡは、前記ＦＰＧＡエンドポイントにおいて、前記プロセッサから受信した第１ＰＣＩｅトランザクションを前記第１ＦＰＧＡのルートポート及び前記ＳＳＤの前記エンドポイントを介して前記ＳＳＤに伝達するように動作し、
前記第２ＦＰＧＡのエンドポイントにおいて、前記プロセッサから受信した第２アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１ＦＰＧＡのルートポートで、前記ＳＳＤから受信した前記ダウンストリームＦＡＲと関連していない第２ＰＣＩｅトランザクションを前記ＦＰＧＡエンドポイントを介して前記プロセッサに伝達するよう動作し、
前記第２ＦＰＧＡのルートポートで、前記ＳＳＤから受信した第１アクセラレーションコマンドを前記ＡＰＭ−Ｆに伝達するように動作する。
【０２５３】
ステートメント１６３。本発明の一実施形態はステートメント１６２によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記ＦＰＧＡから前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックの要請を前記ストレージデバイスから受信するように動作し、
前記ＦＰＧＡは、前記構成空間から前記ＦＰＧＡアドレスの前記ブロックを割り当てるように動作し、
前記ＦＰＧＡは、前記第１ＦＰＧＡのプロセッサから少なくとも前記ＦＰＧＡアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを要請するように動作する。
ステートメント１６４。本発明の一実施形態はステートメント１６３によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０２５４】
ステートメント１６５。本発明の一実施形態はステートメント１６４によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲはサイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント１６６。本発明の一実施形態はステートメント１６５によるアクセラレーションモジュールを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２５５】
ステートメント１６７。本発明の一実施形態はステートメント１６４によるアクセラレーションモジュールを含み、前記ＦＰＧＡの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは「ＰＣＩｅ  ＶＤＭ」を用いて前記ストレージデバイスによってプログラミングされる。
ステートメント１６８。本発明の一実施形態はステートメント１６２によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
【０２５６】
ステートメント１６９。本発明の一実施形態はステートメント１６２によるアクセラレーションモジュールを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
ステートメント１７０。本発明の一実施形態はステートメント１６２によるアクセラレーションモジュールを含み、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記のＦＰＧＡのエンドポイントにコピーするための構成モニターをさらに含む。
【０２５７】
ステートメント１７１。本発明の実施形態は、ハードウェアを使用して具現される第１ブリッジコンポーネント（構成要素）を含んでいる。
前記第１ブリッジコンポーネントは、
プロセッサと通信するためのアップストリームインターフェースと、
アクセラレーションモジュール及びストレージデバイスと通信するためのダウンストリームインターフェースを含み、
前記プロセッサ上でアプリケーションが実行され、
前記第１ブリッジ構成要素（コンポーネント）は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスと通信し、
前記ダウンストリームインターフェースは、前記ＰＣＩｅトランザクションがアクセラレーションコマンドを含んでいるか否かに応じて前記プロセッサから前記アクセラレーションモジュール又は前記ストレージデバイスにＰＣＩｅトランザクションを伝達するように動作する。
【０２５８】
ステートメント１７２。本発明の一実施形態はステートメント１７１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０２５９】
ステートメント１７３。本発明の一実施形態はステートメント１７１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、第２ブリッジコンポーネントを含み、前記第２ブリッジコンポーネントは、
前記プロセッサ及び前記アクセラレーションモジュールと通信するための第２アップストリームインターフェースと、
前記ストレージデバイスと通信するための第２ダウンストリームインターフェースを含み、
前記第２ブリッジコンポーネントは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスと通信し、
前記第２アップストリームインターフェースは、前記第２ＰＣＩｅトランザクションが第２アクセラレーションコマンドを含んでいるか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記アクセラレーションモジュールに第２ＰＣＩｅトランザクションを伝達するように動作する。
【０２６０】
ステートメント１７４。本発明の一実施形態はステートメント１７１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記アップストリームインターフェースは、アップストリームポートと、
前記アップストリームポートに関連したアップストリームフィルターを含み、
前記アップストリームフィルタは、前記プロセッサから受信したアップストリームＦＡＲに関連した第２アクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記第２アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信したアップストリームＦＡＲと関連していない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０２６１】
ステートメント１７５。本発明の一実施形態はステートメント１７４によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
ステートメント１７６。本発明の一実施形態はステートメント１７５によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０２６２】
ステートメント１７７。本発明の一実施形態はステートメント１７６によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント１７８。本発明の一実施形態はステートメント１７５によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記「ＰＣＩｅ  ＶＤＭ」は、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０２６３】
ステートメント１７９。本発明の一実施形態はステートメント１７４によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記ＦＰＧＡは、前記ストレージデバイスに割り当てられた非揮発性メモリエクスプレス（ＮＶＭｅ）レジスタを介して前記プロセッサに間接的に「さらさ」れる。
ステートメント１８０。本発明の一実施形態はステートメント１７１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記アップストリームインターフェースは、前記ストレージデバイスの仮想関数（ＶＦ）により「さらさ」れ、
前記アップストリームインターフェースは、アップストリームポートと、
前記アップストリームポートと関連したアップストリームフィルタを含み、
前記アップストリームフィルタは、前記アクセラレーションモジュールに対する第２アクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記第２アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０２６４】
ステートメント１８１。本発明の一実施形態はステートメント１８０によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第２アクセラレーションコマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、アップストリームＦＡＲに関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
ステートメント１８２。本発明の一実施形態はステートメント１８１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０２６５】
ステートメント１８３。本発明の一実施形態はステートメント１８２によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント１８４。本発明の一実施形態はステートメント１８３によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２６６】
ステートメント１８５。本発明の一実施形態はステートメント１８２によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記「ＰＣＩｅ  ＶＤＭ」を用いて前記ストレージデバイスによってプログラミングされる。
ステートメント１８６。本発明の一実施形態はステートメント１８０によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第２アクセラレーションコマンドは、前記ＶＦの識別子を包含し、
前記アップストリームフィルタは、前記ＶＦの前記識別子に関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
【０２６７】
ステートメント１８７。本発明の一実施形態はステートメント１８６によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
ステートメント１８８。本発明の一実施形態はステートメント１８７によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０２６８】
ステートメント１８９。本発明の一実施形態はステートメント１８８によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント１９０。本発明の一実施形態はステートメント１８７によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタは「ＰＣＩｅ  ＶＤＭ」を用いて前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０２６９】
ステートメント１９１。本発明の一実施形態はステートメント１７１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記アップストリームインターフェースは、前記ストレージデバイスの物理関数（ＰＦ）により「さらさ」れ、
前記アップストリームインターフェースは、アップストリームポートと、
前記アップストリームポートと関連したアップストリームフィルタを含み、
前記アップストリームフィルタは、前記アクセラレーションモジュールに対する第２アクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記第２アクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作し、前記アップストリームポートで前記プロセッサから受信した前記アップストリームフィルタによってインターセプトされていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０２７０】
ステートメント１９２。本発明の一実施形態はステートメント１９１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第２アクセラレーションコマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、前記アップストリームＦＡＲに関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
ステートメント１９３。本発明の一実施形態はステートメント１９２によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスによってプログラミングされる。
【０２７１】
ステートメント１９４。本発明の一実施形態はステートメント１９３によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
ステートメント１９５。本発明の一実施形態はステートメント１９４によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２７２】
ステートメント１９６。本発明の一実施形態はステートメント１９３によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタは「ＰＣＩｅ  ＶＤＭ」を用いて前記ストレージデバイスによってプログラミングされる。
【０２７３】
ステートメント１９７。本発明の一実施形態はステートメント１９１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第２アクセラレーションコマンドは、前記ＰＦの識別子を含み、
前記アップストリームフィルタは、前記ＰＦの前記識別子に関連した前記第２アクセラレーションコマンドをインターセプトするように動作する。
ステートメント１９８。本発明の一実施形態はステートメント１９７によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０２７４】
ステートメント１９９。本発明の一実施形態はステートメント１９８によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
ステートメント２００。本発明の一実施形態はステートメント１９９によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント２０１。本発明の一実施形態はステートメント１９８によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントの前記アップストリームフィルタは「ＰＣＩｅ  ＶＤＭ」を使用して、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０２７５】
ステートメント２０２。本発明の一実施形態はステートメント１７１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記アップストリームインターフェースは、エンドポイントと、
第１ＰＦと、第２ＰＦを含み、
前記ダウンストリームインターフェースは、前記プロセッサから受信したＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作して、前記プロセッサから受信した第２アクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作し、
前記ＰＣＩｅトランザクションは、前記第１ＰＦの第１識別子と関連関連付けられる、
前記第２アクセラレーションコマンドは、前記第２ＰＦの第２識別子と関連関連付けられる。
【０２７６】
ステートメント２０３。本発明の一実施形態はステートメント２０２によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントは、前記ストレージデバイスの前記エンドポイントの性能を前記のエンドポイントにコピーするための構成モニターと、をさらに含む。
【０２７７】
ステートメント２０４。本発明の一実施形態はステートメント１７１によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記アップストリームインターフェースは、第１エンドポイントと、第２エンドポイントを含み、
前記ダウンストリームインターフェースは、前記プロセッサから受信した前記第１エンドポイントに関連したＰＣＩｅトランザクションを前記ストレージデバイスに伝達するように動作して、前記プロセッサから受信した第２アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するよう動作し、
前記第２アクセラレーションコマンドは、前記第２エンドポイントと関連している。
【０２７８】
ステートメント２０５。本発明の一実施形態はステートメント２０４によるハードウェアを使用して具現される第１ブリッジコンポーネントを含み、前記第１ブリッジコンポーネントは、前記ストレージデバイスの前記エンドポイントの性能を前記第１エンドポイントにコピーするための構成モニターをさらに含む。
【０２７９】
ステートメント２０６。本発明の実施形態は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。
前記第２ブリッジコンポーネントは、プロセッサとアクセラレーションモジュールと通信するためのアップストリームインターフェイスと、
ストレージデバイスと通信するためのダウンストリームインタフェースを含み、
前記第２ブリッジコンポーネントは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスと通信し、
前記アップストリームインターフェースは、前記ＰＣＩｅトランザクションがアクセラレーションコマンドを含んでいるか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記アクセラレーションモジュールにＰＣＩｅトランザクションを伝達するように動作する。
【０２８０】
ステートメント２０７。本発明の一実施形態はステートメント２０６によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０２８１】
ステートメント２０８。本発明の一実施形態はステートメント２０６によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、ダウンストリームインターフェースは、ダウンストリームポートと、
前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲（ＦＡＲ）に関連するアクセラレーションコマンドを識別するように動作するダウンストリームフィルタを含み、
前記ダウンストリームインターフェースは、前記アクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信した前記ダウンストリームＦＡＲと関連していない第２ＰＣＩｅトランザクションを前記プロセッサに伝達するように動作する。
【０２８２】
ステートメント２０９。本発明の一実施形態はステートメント２０８によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
ステートメント２１０。本発明の一実施形態はステートメント２０９によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲはサイドバンドバスを介して前記ストレージデバイスによってプログラミングされる。
【０２８３】
ステートメント２１１。本発明の一実施形態はステートメント２１０によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント２１２。本発明の一実施形態はステートメント２０９によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは「ＰＣＩｅ  ＶＤＭ」を使用して、前記ストレージデバイスによってプログラミングされる。
【０２８４】
ステートメント２１３。本発明の一実施形態はステートメント２０６によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、ダウンストリームインターフェースは、ルートポートと、
前記ルートポートに関連したダウンストリームフィルタを含み、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連したアクセラレーションコマンドを識別するように動作し、
前記ダウンストリームインターフェースは、前記アクセラレーションコマンドを前記アクセラレーションモジュールに伝達するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信した前記ダウンストリームＦＡＲと関連していない第２ＰＣＩｅトランザクションを前記プロセッサに伝達するように動作する。
【０２８５】
ステートメント２１４。本発明の一実施形態はステートメント２１３によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
ステートメント２１５。本発明の一実施形態はステートメント２１４によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲはサイドバンドバスを使用して、前記ストレージデバイスによってプログラミングされる。
【０２８６】
ステートメント２１６。本発明の一実施形態はステートメント２１５によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント２１７。本発明の一実施形態はステートメント２１４によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは「ＰＣＩｅ  ＶＤＭ」を使用して、前記ストレージデバイスによってプログラミングされる。
【０２８７】
ステートメント２１８。本発明の一実施形態はステートメント２０６によるハードウェアを使用して具現される第２ブリッジコンポーネントを含み、ダウンストリームインターフェースは、第１ルートポートと、第２ルートポートを含み、
前記ダウンストリームインターフェースは、前記第１ルートポートで、前記ストレージデバイスから受信した第２ＰＣＩｅトランザクションを前記プロセッサに伝達するように動作し、前記第２ルートポートで、前記ストレージデバイスから受信したアクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作する。
【０２８８】
ステートメント２１９。本発明の実施形態は、ストレージデバイスを含む。
前記ストレージデバイスは、アクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）を含むアクセラレーションモジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
アプリケーションに対するアプリケーションデータを格納するストアと、
前記アクセラレーションコマンドを実行するのに前記ＡＰＭ−Ｆを補助するためのストレージデバイスのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｓ）を含み、
前記ストレージデバイス及び前記アクセラレーションモジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して通信し、
前記アクセラレーションモジュールは、プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【０２８９】
ステートメント２２０。本発明の一実施形態はステートメント２１９によるストレージデバイスを含み、前記ストレージデバイスは、ＳＳＤを含む。
ステートメント２２１。本発明の一実施形態はステートメント２２０によるストレージデバイスを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓは、前記アクセラレーションコマンドとともに使用される前記アプリケーションデータに関する前記ＳＳＤの前記エンドポイントを使用して通信する。
【０２９０】
ステートメント２２２。本発明の一実施形態はステートメント２２０によるストレージデバイスを含み、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
ステートメント２２３。ステートメント２２０によると、本発明の実施形態は、ストレージデバイスを含んでいる。ステートメント２２０において、前記ストレージデバイスは、前記プロセッサから受信した非揮発性メモリエクスプレス（ＮＶＭｅ）プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット（ＴＬＰ）を含むＰＣＩｅトランザクションをＳＳＤに伝送する。
【０２９１】
ステートメント２２４。本発明の一実施形態はステートメント２２０によるストレージデバイスを含み、前記ＳＳＤは、前記アクセラレーションモジュールを含む。
ステートメント２２５。本発明の一実施形態はステートメント２２０によるストレージデバイスを含み、前記ＳＳＤはダウンストリームＦＡＲに関連したアクセラレーションコマンドを前記アクセラレーションモジュールに伝送するように動作し、
前記第１ＰＣＩｅトランザクションは、前記ＡＰＭ−Ｆのために具現され、
前記ＳＳＤは、前記ダウンストリームＦＡＲと関連していない第１ＰＣＩｅトランザクションを、前記アクセラレーションモジュールに伝送するように動作し、
前記第１ＰＣＩｅトランザクションは、前記プロセッサのために具現される。
【０２９２】
ステートメント２２６。本発明の一実施形態はステートメント２２５によるストレージデバイスを含み、前記アクセラレーションモジュールは、ＡＰＭ−Ｓによって生成される。
ステートメント２２７。本発明の一実施形態はステートメント２２６によるストレージデバイスを含み、前記ＳＳＤは、前記アクセラレーションコマンドを含む特定のコマンドをインターセプトし、前記アクセラレーションコマンドを生成するために、前記ＡＰＭ−Ｓをトリガーするために、前記の特定のコマンドを前記ＡＰＭ−Ｓに伝達するホストインターフェースロジック（ＨＩＬ）をさらに含む。
【０２９３】
ステートメント２２８。本発明の一実施形態はステートメント２２７によるストレージデバイスを含み、前記特定のコマンドは、前記のプロセッサ上で実行中のアクセラレーションサービスマネージャー（ＡＳＭ）から由来する。
ステートメント２２９。本発明の一実施形態はステートメント２２５によるストレージデバイスを含み、前記ＳＳＤは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
【０２９４】
ステートメント２３０。本発明の一実施形態はステートメント２２９によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
ステートメント２３１。本発明の一実施形態はステートメント２３０によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするためのサイドバンドバスを使用するように動作する。
【０２９５】
ステートメント２３２。本発明の一実施形態はステートメント２３１によるストレージデバイスを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント２３３。本発明の一実施形態はステートメント２３０によるストレージデバイスを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用して、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０２９６】
ステートメント２３４。本発明の一実施形態はステートメント２２９によるストレージデバイスを含み、前記コントローラは、前記アップストリームＦＡＲのように、前記ホストシステムメモリの前記ブロックの第２サブセットを選択するように動作する。
ステートメント２３５。本発明の一実施形態はステートメント２３４によるストレージデバイスを含み、前記コントローラは、前記プロセッサ上で実行中のＡＳＭによってアクセス可能な、特定のレジスタ内で前記アップストリームＦＡＲに対する情報を格納するように動作する。
【０２９７】
ステートメント２３６。本発明の一実施形態はステートメント２３５によるストレージデバイスを含み、前記特定のレジスタは、前記ホストシステムアドレスの前記ブロック内にある。
ステートメント２３７。本発明の一実施形態はステートメント２２９によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０２９８】
ステートメント２３８。本発明の一実施形態はステートメント２３７によるストレージデバイスを含み、前記コントローラは、サイドバンドバスを使用して、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
ステートメント２３９。本発明の一実施形態はステートメント２３８によるストレージデバイスを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２９９】
ステートメント２４０。本発明の一実施形態はステートメント２３７によるストレージデバイスを含み、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
ステートメント２４１。本発明の一実施形態はステートメント２２５によるストレージデバイスを含み、前記ＳＳＤは、前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｆから結果を受信するように動作して、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
【０３００】
ステートメント２４２。本発明の一実施形態はステートメント２２５によるストレージデバイスを含み、前記ＳＳＤは物理関数（ＰＦ）と仮想関数（ＶＦ）を包含し、前記ＰＦは、前記ＳＳＤを露出させるように動作し、前記ＶＦは、前記アクセラレーションモジュールを露出させるように動作する。
ステートメント２４３。本発明の一実施形態はステートメント２４２によるストレージデバイスを含み、前記ＰＦは、前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第１サブセットを選択するように動作する。
【０３０１】
ステートメント２４４。本発明の一実施形態はステートメント２４３によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
ステートメント２４５。本発明の一実施形態はステートメント２４４によるストレージデバイスを含み、前記コントローラは、サイドバンドバスを利用して、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０３０２】
ステートメント２４６。本発明の一実施形態はステートメント２４５によるストレージデバイスを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント２４７。本発明の一実施形態はステートメント２４４によるストレージデバイスを含み、前記コントローラは、「ＰＣＩｅ  ＶＤＭ」を用いて前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０３０３】
ステートメント２４８。本発明の一実施形態はステートメント２４２によるストレージデバイスを含み、前記ＶＦは、前記アップストリームＦＡＲのように、前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作する。
ステートメント２４９。ステートメント２４８によると、本発明の実施形態は、ストレージデバイスを含んでいる。ステートメント２４８において、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０３０４】
ステートメント２５０。本発明の一実施形態はステートメント２４９によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするためのサイドバンドバスを使用するように動作する。
ステートメント２５１。本発明の一実施形態はステートメント２５０によるストレージデバイスを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３０５】
ステートメント２５２。本発明の一実施形態はステートメント２４９によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするための「ＰＣＩｅ  ＶＤＭ」を使用するように動作する。
ステートメント２５３。本発明の一実施形態はステートメント２４２によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記ＶＦでプログラミングするように動作する。
【０３０６】
ステートメント２５４。本発明の一実施形態はステートメント２５３によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記ＶＦでプログラミングするためのサイドバンドバスを使用するように動作する。
ステートメント２５５。本発明の一実施形態はステートメント２５４によるストレージデバイスを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３０７】
ステートメント２５６。本発明の一実施形態はステートメント２５３によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールのアップストリームフィルタを前記ＶＦでプログラミングするために「ＰＣＩｅ  ＶＤＭ」を使用するように動作する。
ステートメント２５７。本発明の一実施形態はステートメント２４２によるストレージデバイスを含み、前記コントローラは、前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｆから結果を受信するように動作して、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
【０３０８】
ステートメント２５８。本発明の一実施形態はステートメント２２５によるストレージデバイスを含み、前記ＳＳＤは、前記ＳＳＤを露出させるように動作する第１ＰＦ及び前記ＦＰＧＡを露出させるように動作する第２ＰＦを含む。
ステートメント２５９。本発明の一実施形態はステートメント２５８によるストレージデバイスを含み、前記第１ＰＦは、前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの第１サブセットを選択するように動作する。
【０３０９】
ステートメント２６０。本発明の一実施形態はステートメント２５９によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
ステートメント２６１。本発明の一実施形態はステートメント２６０によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを利用するように動作する。
【０３１０】
ステートメント２６２。本発明の一実施形態はステートメント２６１によるストレージデバイスを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント２６３。本発明の一実施形態はステートメント２６０によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記「ＰＣＩｅ  ＶＤＭ」を使用するように動作する。
【０３１１】
ステートメント２６４。本発明の一実施形態はステートメント２５８によるストレージデバイスを含み、前記第２ＰＦが前記アップストリームＦＡＲのように、前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作する。
ステートメント２６５。本発明の一実施形態はステートメント２６４によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０３１２】
ステートメント２６６。本発明の一実施形態はステートメント２６５によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント２６７。本発明の一実施形態はステートメント２６６によるストレージデバイスを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３１３】
ステートメント２６。本発明の一実施形態はステートメント２６５によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするために「ＰＣＩｅ  ＶＤＭ」を使用するように動作する。
ステートメント２６９。本発明の一実施形態はステートメント２５８によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記第２ＰＦの識別子でプログラミングするように動作する。
【０３１４】
ステートメント２７０。本発明の一実施形態はステートメント２６９によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記第２ＰＦの識別子でプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント２７１。本発明の一実施形態はステートメント２７０によるストレージデバイスを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３１５】
ステートメント２７２。本発明の一実施形態はステートメント２６９によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記アップストリームフィルタを前記第２ＰＦの識別子でプログラミングするために「ＰＣＩｅ  ＶＤＭ」を使用するように動作する。
ステートメント２７３。本発明の一実施形態はステートメント２５８によるストレージデバイスを含み、前記コントローラは、前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｆから結果を受信するように動作して、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
【０３１６】
ステートメント２７４。本発明の一実施形態はステートメント２２５によるストレージデバイスを含み、前記ＳＳＤは、前記プロセッサからアクセラレーションモジュールのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記アクセラレーションモジュールの前記ブロックのサブセットを選択するように動作する。
ステートメント２７５。本発明の一実施形態はステートメント２７４によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０３１７】
ステートメント２７６。本発明の一実施形態はステートメント２７５によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用するように動作する。
ステートメント２７７。本発明の一実施形態はステートメント２７６によるストレージデバイスを含み、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３１８】
ステートメント２７８。本発明の一実施形態はステートメント２７５によるストレージデバイスを含み、前記コントローラは、前記アクセラレーションモジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために「ＰＣＩｅ  ＶＤＭ」を使用するように動作する。
ステートメント２７９。本発明の一実施形態はステートメント２２０によるストレージデバイスを含み、前記アクセラレーションモジュールと通信するための前記ＳＳＤの第２エンドポイントをさらに含み、
前記ＳＳＤの前記エンドポイントは、前記プロセッサと通信するために使用され、
前記ＳＳＤの前記第２エンドポイントは、前記ＡＰＭ−Ｆと通信するために使用される。
【０３１９】
ステートメント２８０。本発明の実施形態は、システムのアクセラレーション方法を含んでいる。
前記システムのアクセラレーション方法は、
アクセラレーションモジュールで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、
前記アクセラレーションモジュールにおいて、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記アクセラレーションモジュールのアクセラレーションプラットフォームマネージャー（ＡＰＭ−Ｆ）において、前記ＰＣＩｅトランザクションを処理するステップと、
前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記ＰＣＩｅトランザクションを第２デバイスに伝達するステップを含み、
前記アクセラレーションモジュールは、プロセッサと関連したメモリにアプリケーションのデータをローディングすることなく、アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０３２０】
ステートメント２８１。本発明の一実施形態はステートメント２８０によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現される。
【０３２１】
ステートメント２８２。本発明の一実施形態はステートメント２８１によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールにおいて、前記第１デバイスから前記ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップを含む。
【０３２２】
ステートメント２８３。本発明の一実施形態はステートメント２８２によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第１ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡのダウンストリームを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント２８４。本発明の一実施形態はステートメント２８２によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと接続するステップと、をさらに含む。
【０３２３】
ステートメント２８５。本発明の一実施形態はステートメント２８４によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント２８６。本発明の一実施形態はステートメント２８４によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はダウンストリームＦＡＲを含む。
【０３２４】
ステートメント２８７。本発明の一実施形態はステートメント２８２によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記ダウンストリームを使用して前記第２のＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
ステートメント２８８。本発明の一実施形態はステートメント２８２によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記アップストリームポートを使用して前記第２のＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップをさらに含む。
【０３２５】
ステートメント２８９。本発明の一実施形態はステートメント２８２によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップと、
前記第１ＰＣＩｅトランザクションが前記ＦＰＧＡの前記アップストリームポートと関連したアップストリームフィルタアドレス範囲（ＦＡＲ）内のアドレスに関連するか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、
前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドであると判断された場合、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１ＰＣＩｅトランザクションを処理するステップと、
前記第１ＰＣＩｅトランザクションが前記第２のアクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０３２６】
ステートメント２９０。本発明の一実施形態はステートメント２８９によるシステムのアクセラレーション方法を含み、前記第２アクセラレーションコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
ステートメント２９１。本発明の一実施形態はステートメント２８９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップと、
前記アップストリームＦＡＲを前記ＦＰＧＡの前記アップストリームポートと接続するステップと、をさらに含む。
【０３２７】
ステートメント２９２。本発明の一実施形態はステートメント２９１によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント２９３。本発明の一実施形態はステートメント２９２によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はアップストリームＦＡＲを含む。
【０３２８】
ステートメント２９４。本発明の一実施形態はステートメント２８９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記アップストリームを使用して前記第１ＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
ステートメント２９５。本発明の一実施形態はステートメント２８９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記アップストリームポートを使用して前記第１  ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
【０３２９】
ステートメント２９６。本発明の一実施形態はステートメント２８２によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップと、
前記第１ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」仮想関数（ＶＦ）と関連するか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、
前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドであると判断された場合、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１ＰＣＩｅトランザクションを処理するステップと、
前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０３３０】
ステートメント２９７。本発明の一実施形態はステートメント２９６によるシステムのアクセラレーション方法を含み、前記第２アクセラレーションコマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
ステートメント２９８。本発明の一実施形態はステートメント２９６によるシステムのアクセラレーション方法を含み、前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＶＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０３３１】
ステートメント２９９。本発明の一実施形態はステートメント２９８によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップと、
前記ＶＦの前記識別子を前記ＦＰＧＡの前記アップストリームポートに接続するステップと、をさらに含む。
ステートメント３００。本発明の一実施形態はステートメント２９９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＶＦの前記識別子を受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３３２】
ステートメント３０１。本発明の一実施形態はステートメント２９９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ＶＦの前記識別子を含む。
ステートメント３０２。本発明の一実施形態はステートメント２９６によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記アップストリームを使用して前記第１ＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
【０３３３】
ステートメント３０３。本発明の一実施形態はステートメント２８２によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップと、
前記第１ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」物理関数（ＰＦ）と関連するか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、
前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドであると判断された場合、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１ＰＣＩｅトランザクションを処理するステップと、
前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０３３４】
ステートメント３０４。本発明の一実施形態はステートメント３０３によるシステムのアクセラレーション方法を含み、前記第２アクセラレーションコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
ステートメント３０５。本発明の一実施形態はステートメント３０３によるシステムのアクセラレーション方法を含み、前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０３３５】
ステートメント３０６。本発明の一実施形態はステートメント３０５によるシステムのアクセラレーション方法を含み、前記ストレージデバイスから、前記ＦＰＧＡにおいて、前記ＰＦの前記識別子を受信するステップと、
前記ＰＦの前記識別子を前記ＦＰＧＡの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント３０７。本発明の一実施形態はステートメント３０６によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＰＦの前記識別子を受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３３６】
ステートメント３０８。本発明の一実施形態はステートメント３０６によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ＰＦの前記識別子を含む。
ステートメント３０９。本発明の一実施形態はステートメント３０３によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記アップストリームを使用して前記第１ＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
ステートメント３１０。本発明の一実施形態はステートメント３０３によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記アップストリームを使用して前記第１ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
【０３３７】
ステートメント３１１。本発明の一実施形態はステートメント２８１によるシステムのアクセラレーション方法を含み、ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ＰＦの第１識別子を有するタグを含んでいるか、または前記ＦＰＧＡの第２ＰＦの第２識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２のデバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップを含む。
【０３３８】
ステートメント３１２。本発明の一実施形態はステートメント３１１によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第２ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡで前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記ルートポートに関連したダウンストリームＦＡＲ内のアドレスと関連しているか否かを判断することにより、前記第２ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、
前記第２ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドであると判断された場合、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１ＰＣＩｅトランザクションを処理するステップと、
前記第２ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記エンドポイントを使用して前記第２ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
【０３３９】
ステートメント３１３。本発明の一実施形態はステートメント３１２によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと接続するステップと、をさらに含む。
ステートメント３１４。本発明の一実施形態はステートメント３１３によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージ装置からサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３４０】
ステートメント３１５。本発明の一実施形態はステートメント３１３によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ダウンストリームＦＡＲを含む。
ステートメント３１６。本発明の一実施形態はステートメント３１１によるシステムのアクセラレーション方法を含み、前記第２アクセラレーションコマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０３４１】
ステートメント３１７。本発明の一実施形態はステートメント３１１によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡのエンドポイントを使用して、前記プロセッサに、前記第１ＰＣＩｅのトランザクションの結果を伝送するステップをさらに含む。
ステートメント３１８。本発明の一実施形態はステートメント３１１によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの構成モニターを使用して、前記ＦＰＧＡの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０３４２】
ステートメント３１９。本発明の一実施形態はステートメント２８１によるシステムのアクセラレーション方法を含み、ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ＰＦの第１識別子を有するタグを含んでいるか、又は前記ＦＰＧＡの第２ＰＦの第２識別子を持つタグを含んでいるか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１ＰＣＩｅトランザクションを第２ストレージデバイスに伝達するステップを含む。
【０３４３】
ステートメント３２０。本発明の一実施形態はステートメント３１９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから第２ＰＣＩｅトランザクションを受信するステップと、
前記第２ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ルートポートで受信されるか、または前記ＦＰＧＡの第２ルートポートで受信されるか否かを判断するステップと、
前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第１のルートポートで受信されたと判断された場合、前記エンドポイントを使用して前記第２ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、
前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第２のルートポートで受信されたと判断された場合、前記ＦＰＧＡの前記ＡＭＰ−Ｆで前記第２ＰＣＩｅトランザクションを処理するステップと、をさらに含む。
【０３４４】
ステートメント３２１。本発明の一実施形態はステートメント３１９によるシステムのアクセラレーション方法を含み、前記第２アクセラレーションコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
ステートメント３２２。本発明の一実施形態はステートメント３１９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡのエンドポイントを使用して、前記プロセッサに、前記第１ＰＣＩｅのトランザクションの結果を伝送するステップをさらに含む。
ステートメント３２３。本発明の一実施形態はステートメント３１９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの構成モニターを使用して、前記ＦＰＧＡの前記第１のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０３４５】
ステートメント３２４。本発明の一実施形態はステートメント２８１によるシステムのアクセラレーション方法を含み、ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを含み、
前記ＦＰＧＡで前記第１ＰＣＩｅトランザクションが前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記ＦＰＧＡの第１エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、第１ルートポート及び第２ルートポートを含む前記ＦＰＧＡの第１ルートポートを使用して前記第１ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含む。
【０３４６】
ステートメント３２５。本発明の一実施形態はステートメント３２４によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから第２ＰＣＩｅトランザクションを受信するステップと、
前記第２ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ルートポートで受信されるか、又は前記ＦＰＧＡの第２ルートポートで受信されるか否かを判断することにより、前記第２のＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第１ルートポートで受信されたと判断された場合、前記第１エンドポイントを使用して前記第２ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、
前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第２ルートポートで受信されたと判断された場合、前記ＦＰＧＡの前記ＡＭＰ−Ｆで前記第２ＰＣＩｅトランザクションを処理するステップと、をさらに含む。
【０３４７】
ステートメント３２６。本発明の一実施形態はステートメント３２４によるシステムのアクセラレーション方法を含み、前記第２アクセラレーションコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
ステートメント３２７。本発明の一実施形態はステートメント３２４によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの第２エンドポイントを使用して、前記プロセッサに、前記第１ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０３４８】
ステートメント３２８。本発明の一実施形態はステートメント３２４によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの構成モニターを使用して、前記ＦＰＧＡの前記第１ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡの前記第１のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０３４９】
ステートメント３２９。本発明の一実施形態はステートメント２８１によるシステムのアクセラレーション方法を含み、ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記第１ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記ＦＰＧＡの第１エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含む。
【０３５０】
ステートメント３３０。本発明の一実施形態はステートメント３２９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第２ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡで前記第２ＰＣＩｅトランザクションが前記ＦＰＧＡのルートポートと関連したダウンストリームＦＡＲ内のアドレスと関連するか否かを判断することにより、前記第２ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第２ＰＣＩｅトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記第２ＰＣＩｅトランザクションを前記ＦＰＧＡの前記ＡＰＭ−Ｆで処理するステップと、
前記第２ＰＣＩｅトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記第１エンドポイントを使用して前記第２ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
【０３５１】
ステートメント３３１。本発明の一実施形態はステートメント３３０によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと接続するステップと、をさらに含む。
ステートメント３３２。本発明の一実施形態はステートメント３３１によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３５２】
ステートメント３３３。本発明の一実施形態はステートメント３３１によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はダウンストリームＦＡＲを含む。
ステートメント３３４。本発明の一実施形態はステートメント３２９によるシステムのアクセラレーション方法を含み、前記第１ＰＣＩｅトランザクションは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０３５３】
ステートメント３３５。本発明の一実施形態はステートメント３２９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの第２エンドポイントを使用して、前記プロセッサに、前記第１ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
ステートメント３３６。本発明の一実施形態はステートメント３２９によるシステムのアクセラレーション方法を含み、前記ＦＰＧＡの構成モニターを使用して、前記ＦＰＧＡの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡの前記第１エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０３５４】
ステートメント３３７。本発明の実施形態は、システムのアクセラレーション方法を含んでいる。
前記システムのアクセラレーション方法は、第１ブリッジコンポーネントで、プロセッサからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、
前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記ＰＣＩｅトランザクションをアクセラレーションモジュールに伝達するステップと、
前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含み、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージ装デバイスは、ＰＣＩｅバスを使用して通信する。
【０３５５】
ステートメント３３８。本発明の一実施形態はステートメント３３７によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールは、ＦＰＧＡを使用して具現され、
前記ストレージデバイスは、ＳＳＤを含む。
ステートメント３３９。本発明の一実施形態はステートメント３３７によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが第１ブリッジコンポーネントのアップストリームポートに関連したアップストリームＦＡＲ内のアドレスと関連しているか否かを判断するステップをさらに含む。
【０３５６】
ステートメント３４０。本発明の一実施形態はステートメント３３９によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップと、
前記アップストリームＦＡＲを前記第１ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント３４１。本発明の一実施形態はステートメント３４０によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３５７】
ステートメント３４２。本発明の一実施形態はステートメント３４０によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記アップストリームＦＡＲを含む。
ステートメント３４３。本発明の一実施形態はステートメント３３７によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」仮想関数（ＶＦ）と関連するか否かを判断するステップを含む。
【０３５８】
ステートメント３４４。本発明の一実施形態はステートメント３４３によるシステムのアクセラレーション方法を含み、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」仮想関数（ＶＦ）と関連するか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ＶＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
ステートメント３４５。本発明の一実施形態はステートメント３４４によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップと、
前記ＶＦの前記識別子を前記第１ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
【０３５９】
ステートメント３４６。本発明の一実施形態はステートメント３４５によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＶＦの前記識別子を受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント３４７。本発明の一実施形態はステートメント３４５によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ＶＦの前記識別子を含む。
【０３６０】
ステートメント３４８。本発明の一実施形態はステートメント３３７によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」物理関数（ＰＦ）と関連するか否かを判断するステップを含む。
ステートメント３４９。本発明の一実施形態はステートメント３４８によるシステムのアクセラレーション方法を含み、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」物理関数（ＰＦ）と関連するか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０３６１】
ステートメント３５０。本発明の一実施形態はステートメント３４９によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップと、
前記ＰＦの前記識別子を前記第１ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント３５１。本発明の一実施形態はステートメント３５０によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＰＦの前記識別子を受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びイＳＭバスを含むセットから得られる。
【０３６２】
ステートメント３５２。本発明の一実施形態はステートメント３５０によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ＰＦの前記識別子を含む。
ステートメント３５３。本発明の一実施形態はステートメント３３７によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記第１ブリッジコンポーネントの第１ＰＦの識別子を有するタグを含むか、又は、前記第１ブリッジコンポーネントの第２ＰＦの識別子を有するタグを含むか否かを判断するステップを含む。
【０３６３】
ステートメント３５４。本発明の一実施形態はステートメント３５３によるシステムのアクセラレーション方法を含み、前記第１ブリッジ構成要素の構成モニターを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第１構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
ステートメント３５５。本発明の一実施形態はステートメント３３７によるシステムのアクセラレーション方法を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記第１コンポーネントの第１エンドポイントにおいて、前記プロセッサから受信したか否かを判断するステップを含む。
【０３６４】
ステートメント３５６。本発明の一実施形態はステートメント３５５によるシステムのアクセラレーション方法を含み、前記第１ブリッジ構成要素の構成モニターを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第１構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０３６５】
ステートメント３５７。本発明の実施形態は、システムのアクセラレーション方法を含んでいる。
前記システムのアクセラレーション方法は、
第２ブリッジコンポーネントでストレージからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、
前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記ＰＣＩｅトランザクションをアクセラレーションモジュールに伝達するステップと、
前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記ＰＣＩｅトランザクションをストレージデバイスに伝達するステップと、を含み、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０３６６】
ステートメント３５８。本発明の一実施形態はステートメント３５７によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
ステートメント３５９。本発明の一実施形態はステートメント３５７によるシステムのアクセラレーション方法を含み、前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第２ブリッジコンポーネントにおいて、前記第２ＰＣＩｅトランザクションが前記第２ブリッジコンポーネントのダウンストリームポートと関連したダウンストリームＦＡＲ内のアドレスと関連しているか否かを判断するステップをさらに含む。
【０３６７】
ステートメント３６０。本発明の一実施形態はステートメント３５９によるシステムのアクセラレーション方法を含み、前記第２ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記第２ブリッジコンポーネントの前記ダウンストリームポートと接続するステップと、をさらに含む。
ステートメント３６１。本発明の一実施形態はステートメント３６０によるシステムのアクセラレーション方法を含み、前記第２ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記第２ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３６８】
ステートメント３６２。本発明の一実施形態はステートメント３６０によるシステムのアクセラレーション方法を含み、前記第２のブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ダウンストリームＦＡＲを含む。
ステートメント３６３。本発明の一実施形態はステートメント３５７によるシステムのアクセラレーション方法を含み、前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが第１ルートポイント及び第２ルートポイントを含む前記第２ブリッジコンポーネントの前記第２ルートポートで受信したか否かを判断するステップを含む。
【０３６９】
ステートメント３６４。本発明の実施形態は、システムのアクセラレーション方法を含んでいる。
前記システムのアクセラレーション方法は、
ストレージデバイスでアクセラレーションモジュールから第１ＰＣＩｅトランザクションを受信するステップと、
前記第１ＰＣＩｅトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第１ＰＣＩｅトランザクションが前記仮想コマンドであると判断された場合、前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２ＰＣＩｅトランザクションを生成するステップと、
前記第２ＰＣＩｅトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップと、を含み、
プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【０３７０】
ステートメント３６５。本発明の一実施形態はステートメント３６４によるシステムのアクセラレーション方法を含み、前記ストレージデバイスは、ＳＳＤである。
【０３７１】
ステートメント３６６。本発明の一実施形態はステートメント３６５によるシステムのアクセラレーション方法を含み、ストレージデバイスのアクセラレーションモジュールから第１ＰＣＩｅトランザクションを受信するステップは、前記ＳＳＤのエンドポイントにおいて、前記アクセラレーションモジュールから前記第１ＰＣＩｅトランザクションを受信するステップを含み、
前記第１ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第１ＰＣＩｅトランザクションが前記アクセラレーションモジュールの前記ＡＰＭ−Ｆから由来するか否かを判断するステップを含み、
前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２のＰＣＩｅトランザクションを生成するステップは、前記第１ＰＣＩｅトランザクションに応答して、前記ＳＳＤのＡＰＭ−Ｓにより、前記第２のＰＣＩｅトランザクションを生成するステップを含み、
前記第２ＰＣＩｅトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第２ＰＣＩｅトランザクションをストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
【０３７２】
ステートメント３６７。本発明の一実施形態はステートメント３６６によるシステムのアクセラレーション方法を含み、前記第１ＰＣＩｅトランザクションは、前記プロセッサから由来され、特定のコマンドを含む。
ステートメント３６８。本発明の一実施形態はステートメント３６６によるシステムのアクセラレーション方法を含み、前記第１ＰＣＩｅトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＳＳＤのＨＩＬにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップをさらに含む。
【０３７３】
ステートメント３６９。本発明の一実施形態はステートメント３６８によるシステムのアクセラレーション方法を含み、前記特定のコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
ステートメント３７０。本発明の一実施形態はステートメント３６６によるシステムのアクセラレーション方法を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップと、をさらに含む。
【０３７４】
ステートメント３７１。本発明の一実施形態はステートメント３７０によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント３７２。本発明の一実施形態はステートメント３７０によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップは、「ＰＣＩｅ  ＶＤＭ」を使用して、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はダウンストリームＦＡＲを含む。
【０３７５】
ステートメント３７３。本発明の一実施形態はステートメント３７０によるシステムのアクセラレーション方法を含み、アップストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの第２サブセットを選択するステップと、
前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップと、をさらに含む。
ステートメント３７４。本発明の一実施形態はステートメント３７３によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３７６】
ステートメント３７５。本発明の一実施形態はステートメント３７３によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップは、「ＰＣＩｅ  ＶＤＭ」を使用して、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はアップストリームＦＡＲを含む。
ステートメント３７６。本発明の一実施形態はステートメント３６６によるシステムのアクセラレーション方法を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、
前記アクセラレーションモジュールのルートポートを前記アクセラレーションモジュールでプログラミングするステップと、をさらに含む。
【０３７７】
ステートメント３７７。本発明の一実施形態はステートメント３７６によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームＦＡＲでプログラミングするステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント３７８。本発明の一実施形態はステートメント３７６によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームＦＡＲでプログラミングするステップは、「ＰＣＩｅ  ＶＤＭ」を使用して、前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームＦＡＲでプログラミングするステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はダウンストリームＦＡＲを含む。
【０３７８】
ステートメント３７９。本発明の一実施形態はステートメント３６６によるシステムのアクセラレーション方法を含み、前記ＳＳＤの前記エンドポイントから前記アクセラレーションモジュールから前記第１ＰＣＩｅトランザクションの結果を受信するステップと、
前記ＳＳＤの前記エンドポイントを使用して前記第１ＰＣＩｅトランザクションの前記の結果を前記プロセッサに伝達するステップと、をさらに含む。
ステートメント３８０。本発明の一実施形態はステートメント３７６によるシステムのアクセラレーション方法を含み、前記ＳＳＤを「さらさせる」物理関数（ＰＦ）を提供するステップと、
前記アクセラレーションモジュールを「さらさせる」仮想関数（ＶＦ）を提供するステップと、をさらに含む。
【０３７９】
ステートメント３８１。本発明の一実施形態はステートメント３８０によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記ＶＦの識別子でプログラミングするステップをさらに含む。
ステートメント３８２。本発明の一実施形態はステートメント３６６によるシステムのアクセラレーション方法を含み、前記ＳＳＤを露出させる第１ＰＦを提供するステップと、
前記アクセラレーションモジュールを「さらされる」第２ＰＦを提供するステップと、をさらに含む。
ステートメント３８３。本発明の一実施形態はステートメント３８２によるシステムのアクセラレーション方法を含み、前記アクセラレーションモジュールのアップストリームポートを前記第２のＰＦの識別子でプログラミングするステップをさらに含む。
【０３８０】
ステートメント３８４。本発明の一実施形態はステートメント３６５によるシステムのアクセラレーション方法を含み、ストレージデバイスのアクセラレーションモジュールから第１ＰＣＩｅトランザクションを受信するステップは、前記ＳＳＤのエンドポイントにおいて、前記アクセラレーションモジュールから前記第１ＰＣＩｅトランザクションを受信するステップを含み、
前記第１ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが第２エンドポイントで第１エンドポイント及び前記第２エンドポイントを含むＳＳＤによって受信されるか否かを判断するステップを含み、
前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２ＰＣＩｅトランザクションを生成するステップは、前記第１ＰＣＩｅトランザクションに応答して、前記ＳＳＤのＡＰＭ−Ｓにより、前記第２ＰＣＩｅトランザクションを生成するステップを含み、
前記第２ＰＣＩｅトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第２ＰＣＩｅトランザクションを前記ストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
【０３８１】
ステートメント３８５。本発明の一実施形態は、非揮発性記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含み、非揮発性記憶媒体は、装置（機械：マシン）によって実行されたときに以下の結果となる命令を記憶しており、
前記以下の結果とは、
アクセラレーションモジュールで第１デバイスからＰＣＩｅトランザクションを受信するステップと、
前記ＰＣＩｅトランザクションが仮想コマンドであるか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記仮想コマンドであると判断された場合、前記アクセラレーションモジュールのＡＰＭ−Ｆで前記ＰＣＩｅトランザクションを処理するステップと、
前記ＰＣＩｅトランザクションが、前記仮想コマンドではないと判断された場合、前記ＰＣＩｅトランザクションを第２デバイスに伝送するステップを含み、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援し、
前記プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０３８２】
ステートメント３８６。本発明の一実施形態はステートメント３８５による物品を含み、前記アクセラレーションモジュールは、ＦＰＧＡを使用して具現される。
【０３８３】
ステートメント３８７。本発明の一実施形態はステートメント３８６による物品を含み、前記ＦＰＧＡで前記第１デバイスから前記ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップを含む。
【０３８４】
ステートメント３８８。本発明の一実施形態はステートメント３８７による物品を含み、前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡの前記ダウンストリームプロセッサを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
ステートメント３８９。本発明の一実施形態はステートメント３８７による物品を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ダウンストリームポートと接続するステップと、をさらに含む。
【０３８５】
ステートメント３９０。本発明の一実施形態はステートメント３８９による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント３９１。本発明の一実施形態はステートメント３８９による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ダウンストリームＦＡＲを含む。
【０３８６】
ステートメント３９２。本発明の一実施形態はステートメント３８７による物品を含み、前記ＦＰＧＡの前記ダウンストリームポートを使用して、前記ストレージデバイスに前記第２ＰＣＩｅのトランザクションの結果を送信するステップをさらに含む。
ステートメント３９３。本発明の一実施形態はステートメント３８７による物品を含み、前記ＦＰＧＡの前記アップストリームポートを使用して前記プロセッサに、前記第２ＰＣＩｅのトランザクションの結果を伝送するステップをさらに含む。
【０３８７】
ステートメント３９４。本発明の一実施形態はステートメント３８７による物品を含み、前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップと、
前記第１ＰＣＩｅトランザクションが前記ＦＰＧＡの前記アップストリームポートと関連したアップストリームＦＡＲ内の第２アドレスと関連しているか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、
前記第１ＰＣＩｅトランザクションが前記第２のアクセラレーションコマンドであると判断された場合、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１ＰＣＩｅトランザクションを処理するステップと、
前記第１ＰＣＩｅトランザクションが前記第２のアクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０３８８】
ステートメント３９５。本発明の一実施形態はステートメント３９４による物品を含み、前記第２アクセラレーションコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
ステートメント３９６。本発明の一実施形態はステートメント３９４による物品を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップと、
前記アップストリームＦＡＲを前記ＦＰＧＡの前記アップストリームポートと接続するステップと、をさらに含む。
【０３８９】
ステートメント３９７。本発明の一実施形態はステートメント３９６による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント３９８。本発明の一実施形態はステートメント３９６による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はアップストリームＦＡＲを含む。
【０３９０】
ステートメント３９９。本発明の一実施形態はステートメント３９４による物品を含み、前記ＦＰＧＡの前記アップストリームを使用して前記第１ＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップをさらに含む。
ステートメント４００。本発明の一実施形態はステートメント３９４による物品を含み、前記ＦＰＧＡの前記アップストリームを使用して前記第１ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップをさらに含む。
【０３９１】
ステートメント４０１。本発明の一実施形態はステートメント３８７による物品を含み、前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップと、
前記第１ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」仮想関数（ＶＦ）と関連しているか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、
前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドであると判断された場合、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１ＰＣＩｅトランザクションを処理するステップと、
前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０３９２】
ステートメント４０２。本発明の一実施形態はステートメント４０１による物品を含み、前記第２アクセラレーションコマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
ステートメント４０３。本発明の一実施形態はステートメント４０１による物品を含み、前記第１ＰＣＩｅトランザクションが前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＶＦの前記識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０３９３】
ステートメント４０４。本発明の一実施形態はステートメント４０３による物品を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記アップストリームポートに接続するステップと、をさらに含む。
ステートメント４０５。本発明の一実施形態はステートメント４０４による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＶＦの前記識別子を受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３９４】
ステートメント４０６。本発明の一実施形態はステートメント４０４による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ＶＦの前記識別子を含む。
ステートメント４０７。本発明の一実施形態はステートメント４０１による物品を含み、前記ＦＰＧＡのアップストリームポートを使用して前記プロセッサに、前記第１ＰＣＩｅのトランザクションの結果を伝送するステップを含む。
【０３９５】
ステートメント４０８。本発明の一実施形態はステートメント３８７による物品を含み、前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップと、
前記第１ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」仮想関数（ＶＦ）と関連しているか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、
前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドであると判断された場合、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１ＰＣＩｅトランザクションを処理するステップと、
前記第１ＰＣＩｅトランザクションが前記第２アクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０３９６】
ステートメント４０９。本発明の一実施形態はステートメント４０８による物品を含み、前記第２アクセラレーションコマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
ステートメント４１０。本発明の一実施形態はステートメント４０８による物品を含み、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０３９７】
ステートメント４１１。本発明の一実施形態はステートメント４１０による物品を含み、前記ストレージデバイスから、前記ＦＰＧＡにおいて、前記ＰＦの前記識別子を受信するステップと、
前記ＰＦの前記識別子を前記ＦＰＧＡの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント４１２。本発明の一実施形態はステートメント４１１による物品を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＰＦの前記識別子を受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３９８】
ステートメント４１３。本発明の一実施形態はステートメント４１１による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ＰＦの前記識別子を含む。
ステートメント４１４。本発明の一実施形態はステートメント４０８による物品を含み、前記ＦＰＧＡの前記アップストリームを使用して前記第１ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップをさらに含む。
【０３９９】
ステートメント４１５。本発明の一実施形態はステートメント３８６による物品を含み、ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ＰＦの識別子を有するタグを含んでいるか、又は前記ＦＰＧＡの第２ＰＦの第２識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１ＰＣＩｅトランザクションを第２のストレージデバイスに伝達するステップを含む。
【０４００】
ステートメント４１６。本発明の一実施形態はステートメント４１５による物品を含み、前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第２ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡで前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記ルートポートに関連したダウンストリームＦＡＲ内のアドレスと関連するか否かを判断することにより、前記第２ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップと、
前記第２ＰＣＩｅトランザクションが前記第２のアクセラレーションコマンドであると判断された場合、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１ＰＣＩｅトランザクションを処理するステップと、
前記第２ＰＣＩｅトランザクションが前記第２のアクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記エンドポイントを使用して前記第２ＰＣＩｅトランザクションを前記プロセッサに伝達するステップを含む。
【０４０１】
ステートメント４１７。本発明の一実施形態はステートメント４１６による物品を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと接続するステップを含む。
ステートメント４１８。本発明の一実施形態はステートメント４１７による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４０２】
ステートメント４１９。本発明の一実施形態はステートメント４１７による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ダウンストリームＦＡＲを含む。
ステートメント４２０。本発明の一実施形態はステートメント４１５による物品を含み、前記第２アクセラレーションコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０４０３】
ステートメント４２１。本発明の一実施形態はステートメント４１５による物品を含み、前記ＦＰＧＡのエンドポイントを使用して、前記プロセッサに、前記第１ＰＣＩｅのトランザクションの結果を伝送するステップをさらに含む。
ステートメント４２２。本発明の一実施形態はステートメント４１５による物品を含み、前記ＦＰＧＡの構成モニターを使用して、前記ＦＰＧＡの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０４０４】
ステートメント４２３。本発明の一実施形態はステートメント３８６による物品を含み、ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ＰＦの第１識別子を有するタグを含んでいるか、又は前記ＦＰＧＡの第２ＰＦの第２識別子を有するタグを含んでいるか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１ＰＣＩｅトランザクションを第２ストレージデバイスに伝達するステップを含む。
【０４０５】
ステートメント４２４。本発明の一実施形態はステートメント４２３による物品を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから第２ＰＣＩｅトランザクションを受信するステップと、
前記第２ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ルートポートで受信されるか、又は前記ＦＰＧＡの第２ルートポートで受信されるか否かを判断するステップと、
前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第１のルートポートで受信されると判断された場合、前記エンドポイントを使用して前記第２ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、
前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第２のルートポートで受信されると判断された場合、前記ＦＰＧＡの前記ＡＭＰ−Ｆで前記第２ＰＣＩｅトランザクションを処理するステップと、をさらに含む。
【０４０６】
ステートメント４２５。本発明の一実施形態はステートメント４２３による物品を含み、前記第２アクセラレーションコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
ステートメント４２６。本発明の一実施形態はステートメント４２３による物品を含み、前記ＦＰＧＡのエンドポイントを使用して、前記プロセッサに、前記第１ＰＣＩｅのトランザクションの結果を伝送するステップをさらに含む。
ステートメント４２７。本発明の一実施形態はステートメント４２３による物品を含み、前記ＦＰＧＡの構成モニターを使用して、前記ＦＰＧＡの前記第１のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０４０７】
ステートメント４２８。本発明の一実施形態はステートメント３８６による物品を含み、ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを含み、
前記ＦＰＧＡで前記第１ＰＣＩｅトランザクションが前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記ＦＰＧＡの第１エンドポイントにおいて、前記プロセッサから受信されるかか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、第１ルートポート及び第２ルートポートを含む前記ＦＰＧＡの第１ルートポートを使用して前記第１ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含む。
【０４０８】
ステートメント４２９。本発明の一実施形態はステートメント４２８による物品を含み、前記ＦＰＧＡにおいて、記憶装置から第２ＰＣＩｅトランザクションを受信するステップと、
前記第２ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ルートポートで受信されるか、又は前記ＦＰＧＡの第２ルートポートで受信されるか否かを判断することにより、前記第２ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第１のルートポートで受信されると判断された場合、前記第１エンドポイントを使用して前記第２ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、
前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第２ルートポートで受信されると判断された場合、前記ＦＰＧＡの前記ＡＭＰ−Ｆで前記第２ＰＣＩｅトランザクションを処理するステップと、をさらに含む。
【０４０９】
ステートメント４３０。本発明の一実施形態はステートメント４２８による物品を含み、前記第２アクセラレーションコマンドは、前記のプロセッサ上で実行中のＡＳＭ由来する。
ステートメント４３１。本発明の一実施形態はステートメント４２８による物品を含み、前記ＦＰＧＡの第２エンドポイントを使用して、前記プロセッサに、前記第１ＰＣＩｅのトランザクションの結果を伝送するステップをさらに含む。
ステートメント４３２。本発明の一実施形態はステートメント４０１による物品を含み、前記ＦＰＧＡの構成モニターを使用して、前記ＦＰＧＡの前記第１ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡの前記第１エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０４１０】
ステートメント４３３。本発明の一実施形態はステートメント３８６による物品を含み、ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを含み、
前記アクセラレーションモジュールにおいて、前記第１ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記ＦＰＧＡの第１エンドポイントにおいて、前記プロセッサから受信されるかか否かを判断することにより、前記第１ＰＣＩｅトランザクションが第２アクセラレーションコマンドか否かを判断するステップを含み、
前記ＰＣＩｅトランザクションを前記第２デバイスに転送するステップは、前記ＦＰＧＡのルートポートを使用して前記第１ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含む。
【０４１１】
ステートメント４３４。本発明の一実施形態はステートメント４３３による物品を含み、前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第２ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡで前記第２ＰＣＩｅトランザクションが前記ＦＰＧＡのルートポートと関連したダウンストリームＦＡＲ内のアドレスと関連しているか否かを判断することにより、前記第２ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップと、
前記第２ＰＣＩｅトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記第２ＰＣＩｅトランザクションを前記ＦＰＧＡの前記ＡＰＭ−Ｆで処理するステップと、
前記第２ＰＣＩｅトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記ＦＰＧＡの前記第１エンドポイントを使用して前記第２ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
【０４１２】
ステートメント４３５。本発明の一実施形態はステートメント４３４による物品を含み、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと接続するステップと、をさらに含む。
ステートメント４３６。本発明の一実施形態はステートメント４３５による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４１３】
ステートメント４３７。本発明の一実施形態はステートメント４３５による物品を含み、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はダウンストリームＦＡＲを含む。
ステートメント４３８。本発明の一実施形態はステートメント４３３による物品を含み、前記第１ＰＣＩｅトランザクションは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０４１４】
ステートメント４３９。本発明の一実施形態はステートメント４３３による物品を含み、前記ＦＰＧＡの第２エンドポイントを使用して、前記プロセッサに、前記第１ＰＣＩｅのトランザクションの結果を伝送するステップをさらに含む。
ステートメント４４０。本発明の一実施形態はステートメント４３３による物品を含み、前記ＦＰＧＡの構成モニターを使用して、前記ＦＰＧＡの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡの前記第１エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０４１５】
ステートメント４４１。本発明の一実施形態は、非一時的記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含み、非一時的記憶媒体は、装置（機械：マシン）によって実行されたときに以下の結果となる命令を記憶しており、
前記以下の結果とは、
ストレージデバイスでアクセラレーションモジュールからＰＣＩｅトランザクションを受信するステップと、
前記第１ＰＣＩｅトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第１ＰＣＩｅトランザクションが前記仮想コマンドであると判断された場合、前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２ＰＣＩｅトランザクションを生成するステップと、
前記第２ＰＣＩｅトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップと、
前記第１ＰＣＩｅトランザクションが前記仮想コマンドではないと判断された場合、前記ストレージデバイスに格納したデータに対して前記第１ＰＣＩｅトランザクションを実行するステップと、を含み、
プロセッサ、前記アクセラレーションモジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信し、
前記アクセラレーションモジュールは、前記プロセッサと関連したメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記アクセラレーションコマンドを実行することを支援する。
【０４１６】
ステートメント４４２。本発明の一実施形態はステートメント４４１による物品を含み、前記ストレージデバイスはＳＳＤである。
【０４１７】
ステートメント４４３。本発明の一実施形態はステートメント４４２による物品を含み、ストレージデバイスのアクセラレーションモジュールから第１ＰＣＩｅトランザクションを受信するステップは、前記ＳＳＤエンドポイントにおいて、前記アクセラレーションモジュールから前記第１ＰＣＩｅトランザクションを受信するステップを含み、
前記第１ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第１ＰＣＩｅトランザクションが前記アクセラレーションモジュールの前記ＡＰＭ−Ｆから由来するか否かを判断するステップを含み、
前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２ＰＣＩｅトランザクションを生成するステップは、前記第１ＰＣＩｅトランザクションに応答して、前記ＳＳＤのＡＰＭ−Ｓにより、前記第２ＰＣＩｅトランザクションを生成するステップを含み、
前記第２ＰＣＩｅトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第２ＰＣＩｅトランザクションを前記ストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
【０４１８】
ステートメント４４４。本発明の一実施形態はステートメント４４３による物品を含み、前記第１ＰＣＩｅトランザクションは、前記プロセッサから由来して、特定のコマンドを含む。
ステートメント４４５。本発明の一実施形態はステートメント４４３による物品を含み、前記第１ＰＣＩｅトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＳＳＤのＨＩＬにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップをさらに含む。
【０４１９】
ステートメント４４６。本発明の一実施形態はステートメント４４５による物品を含み、前記特定のコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
ステートメント４４７。本発明の一実施形態はステートメント４４３による物品を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップと、をさらに含む。
【０４２０】
ステートメント４４８。本発明の一実施形態はステートメント４４７による物品を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント４４９。本発明の一実施形態はステートメント４４７による物品を含み、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップは、「ＰＣＩｅ  ＶＤＭ」を使用して、前記アクセラレーションモジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はダウンストリームＦＡＲを含む。
【０４２１】
ステートメント４５０。本発明の一実施形態はステートメント４４７による物品を含み、アップストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの第２サブセットを選択するステップと、
前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップと、をさらに含む。
ステートメント４５１。本発明の一実施形態はステートメント４５０による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４２２】
ステートメント４５２。本発明の一実施形態はステートメント４５０による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップは、「ＰＣＩｅ  ＶＤＭ」を使用して、前記アクセラレーションモジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はアップストリームＦＡＲを含む。
ステートメント４５３。本発明の一実施形態はステートメント４４３による物品を含み、前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、
前記アクセラレーションモジュールのルートポートを前記アクセラレーションモジュールでプログラミングするステップと、をさらに含む。
【０４２３】
ステートメント４５４。本発明の一実施形態はステートメント４５３による物品を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームＦＡＲでプログラミングするステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント４５５。本発明の一実施形態はステートメント４５３による物品を含み、前記アクセラレーションモジュールのルートポートを前記ダウンストリームＦＡＲでプログラミングするステップは、「ＰＣＩｅ  ＶＤＭ」を使用して、前記アクセラレーションモジュールの前記ルートポートを前記ダウンストリームＦＡＲでプログラミングするステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」はダウンストリームＦＡＲを含む。
【０４２４】
ステートメント４５６。本発明の一実施形態はステートメント４４３による物品を含み、前記ＳＳＤの前記エンドポイントで、前記アクセラレーションモジュールから前記第１ＰＣＩｅトランザクションの結果を受信するステップと、
前記ＳＳＤの前記エンドポイントを使用して前記第１ＰＣＩｅトランザクションの前記結果を前記プロセッサに伝達するステップと、をさらに含む。
ステートメント４５７。本発明の一実施形態はステートメント４４３による物品を含み、前記ＳＳＤを「さらさせる」物理関数（ＰＦ）を提供するステップと、
前記アクセラレーションモジュールを「さらさせる」仮想関数（ＶＦ）を提供するステップと、をさらに含む。
【０４２５】
ステートメント４５８。本発明の一実施形態はステートメント４５７による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記ＶＦの識別子でプログラミングするステップをさらに含む。
ステートメント４５９。本発明の一実施形態はステートメント４４３による物品を含み、前記ＳＳＤを「さらさせる」第１ＰＦを提供するステップと、
前記アクセラレーションモジュールを「さらされる」第２ＰＦを提供するステップと、をさらに含む。
ステートメント４６０。本発明の一実施形態はステートメント４５９による物品を含み、前記アクセラレーションモジュールのアップストリームポートを前記第２ＰＦの識別子でプログラミングするステップをさらに含む。
【０４２６】
ステートメント４６１。本発明の一実施形態はステートメント４４２による物品を含み、ストレージデバイスのアクセラレーションモジュールから第１ＰＣＩｅトランザクションを受信するステップは、前記ＳＳＤのエンドポイントにおいて、前記アクセラレーションモジュールから前記第１ＰＣＩｅトランザクションを受信するステップを含み、
前記第１ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが第２エンドポイントで第１エンドポイント及び前記第２エンドポイントを含むＳＳＤによって受信されるか否かを判断するステップを含み、
前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２のＰＣＩｅトランザクションを生成するステップは、前記第１ＰＣＩｅトランザクションに応答して、前記ＳＳＤのＡＰＭ−Ｓにより、前記第２のＰＣＩｅトランザクションを生成するステップを含み、
前記第２ＰＣＩｅトランザクションを前記ストレージデバイスから前記アクセラレーションモジュールに伝送するステップは、前記第２ＰＣＩｅトランザクションを前記ストレージデバイスの前記エンドポイントから前記アクセラレーションモジュールに伝送するステップを含む。
【０４２７】
ステートメント４６２。本発明の一実施形態は、本発明の一実施形態は、非一時的記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含み、非一時的記憶媒体は、装置（機械：マシン）によって実行されたときに以下の結果となる命令を記憶しており、
前記以下の結果とは、
第１ブリッジコンポーネントで第１デバイスからＰＣＩｅトランザクションを受信するステップと、
前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが仮想コマンドであるか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記仮想コマンドであると判断された場合、前記ＰＣＩｅトランザクションをアクセラレーションモジュールに伝達するステップと、
前記ＰＣＩｅトランザクションが、前記仮想コマンドではないと判断された場合、前記ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含み、
前記プロセッサ、前記第１ブリッジのコンポーネント、前記アクセラレーションモジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０４２８】
ステートメント４６３。本発明の一実施形態はステートメント４６２による物品を含み、前記アクセラレーションモジュールは、ＦＰＧＡを使用して具現され、
前記ストレージデバイスは、ＳＳＤを含む。
ステートメント４６４。本発明の一実施形態はステートメント４６２による物品を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが第１ブリッジコンポーネントのアップストリームポートと関連したアップストリームＦＡＲ内のアドレスと関連しているか否かを判断するステップをさらに含む。
【０４２９】
ステートメント４６５。本発明の一実施形態はステートメント４６４による物品を含み、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップと、
前記アップストリームＦＡＲを前記第１ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント４６６。本発明の一実施形態はステートメント４６５による物品を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４３０】
ステートメント４６７。本発明の一実施形態はステートメント４６５による物品を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記アップストリームＦＡＲを含む。
ステートメント４６８。本発明の一実施形態はステートメント４６２による物品を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」仮想関数（ＶＦ）と関連するか否かを判断するステップを含む。
【０４３１】
ステートメント４６９。本発明の一実施形態はステートメント４６８による物品を含み、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」仮想関数（ＶＦ）と関連するか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ＶＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
ステートメント４７０。本発明の一実施形態はステートメント４６９による物品を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップと、
前記ＶＦの前記識別子を前記第１ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
【０４３２】
ステートメント４７１。本発明の一実施形態はステートメント４７０による物品を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＶＦの前記識別子を受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
ステートメント４７２。本発明の一実施形態はステートメント４７０による物品を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ＶＦの前記識別子を含む。
【０４３３】
ステートメント４７３。本発明の一実施形態はステートメント４６２による物品を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」物理関数（ＰＦ）と関連するか否かを判断するステップを含む。
ステートメント４７４。本発明の一実施形態はステートメント４７３による物品を含み、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって「さらされる」物理関数（ＰＦ）と関連するか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０４３４】
ステートメント４７５。本発明の一実施形態はステートメント４７４による物品を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップと、
前記ＰＦの前記識別子を前記第１ブリッジコンポーネントの前記アップストリームポートと接続するステップと、をさらに含む。
ステートメント４７６。本発明の一実施形態はステートメント４７５による物品を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＰＦの前記識別子を受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４３５】
ステートメント４７７。本発明の一実施形態はステートメント４７５による物品を含み、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ＰＦの前記識別子を含む。
ステートメント４７８。本発明の一実施形態はステートメント４６２による物品を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記第１ブリッジコンポーネントの第１ＰＦの識別子を有するタグを含んでいるか、又は前記第１ブリッジコンポーネントの第２ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０４３６】
ステートメント４７９。本発明の一実施形態はステートメント４７８による物品を含み、前記第１ブリッジコンポーネントの構成モニターを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第１コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
ステートメント４８０。本発明の一実施形態はステートメント４６２による物品を含み、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記第１コンポーネントの第１エンドポイントにおいて、前記プロセッサから受信されるか否かを判断するステップを含む。
【０４３７】
ステートメント４８１。本発明の一実施形態はステートメント４８０による物品を含み、前記第１ブリッジコンポーネントの構成モニターを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第１コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０４３８】
ステートメント４８２。本発明の一実施形態は、非揮発性記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含み、非揮発性記憶媒体は、装置（機械：マシン）によって実行されたときに以下の結果となる命令を記憶しており、
前記以下の結果とは、
第２ブリッジコンポーネントでストレージデバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、
前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドであると判断された場合、前記ＰＣＩｅトランザクションをアクセラレーションモジュールに伝達するステップと、
前記ＰＣＩｅトランザクションが、前記アクセラレーションコマンドではないと判断された場合、前記ＰＣＩｅトランザクションをプロセッサに伝達するステップを含み、
前記プロセッサ、前記第２ブリッジコンポーネント、前記アクセラレーションモジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０４３９】
ステートメント４８３。本発明の一実施形態はステートメント４８２による物品を含み、前記アクセラレーションモジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
ステートメント４８４。本発明の一実施形態はステートメント４８２による物品を含み、前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記第２ブリッジコンポーネントにおいて、前記第２ＰＣＩｅトランザクションが前記第２ブリッジコンポーネントのダウンストリームポートと関連したダウンストリームＦＡＲ内のアドレスと関連しているか否かを判断するステップをさらに含む。
【０４４０】
ステートメント４８５。本発明の一実施形態はステートメント４８４による物品を含み、前記第２ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記第２ブリッジコンポーネントの前記ダウンストリームポートと接続するステップと、をさらに含む。
ステートメント４８６。本発明の一実施形態はステートメント４８５による物品を含み、前記第２ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記第２ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを含み、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４４１】
ステートメント４８７。本発明の一実施形態はステートメント４８５による物品を含み、前記第２ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスから「ＰＣＩｅ  ＶＤＭ」を受信するステップを含み、
前記「ＰＣＩｅ  ＶＤＭ」は、前記ダウンストリームＦＡＲを含む。
ステートメント４８８。本発明の一実施形態はステートメント４８２による物品を含み、前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションがアクセラレーションコマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが第１ルートポイントおよび第２ルートポイントを含む前記第２ブリッジコンポーネントの前記第２ルートポートで受信されるか否かを判断するステップを含む。
【０４４２】
結論として、本明細書に記述した実施形態の多様な変更の観点から、この詳細なステートメント及び添付した資料は、単に例示的なものとして意図されており、本発明の範囲を制限するものとはみなされてはならない。したがって、本発明として請求されるのは、後述する請求の範囲、その均等物の範囲及び思想内に有り得るすべての変形である
【産業上の利用可能性】
【０４４３】
本発明は、ＦＰＧＡベースの低コスト、低消費電力を必要とするＳＳＤ性能のアクセラレーション化のためのシステムに好適に使用可能である。
【符号の説明】
【０４４４】
１０５    装置（デバイス）（又はマシン）
１１０    プロセッサ
１１５    デバイスドライバ
１２０    ストレージデバイス（ＳＳＤ）
１２５    アプリケーション
１３０    アプリケーションサービスマネージャ（ＡＳＭ）
１３５    メモリコントローラ
１４０    メモリ
１４５    アクセラレーションモジュール（又はＦＰＧＡ）
２０５    クロック
２１０    ネットワークコネクタ
２１５    バス
２２０    ユーザーインターフェース
２２５    入力／出力エンジン
３０５、１１０５、１３１０、１５０５    エンドポイント
３１０    ホストインターフェース層（ＨＩＬ）
３１５    アクセラレーションプラットフォームマネージャ（ＡＰＭ−Ｓ）
３２０    フラッシュ変換階層（ＦＴＬ）
３２５    フラッシュメディア
３３０    アップストリームポート
３３５    ダウンストリームポート
３４０    アクセラレーションプラットフォームマネージャ（ＡＰＭ−Ｆ）
３４５    スケジューラ
３５０−１、３５０−２    アクセラレーションエンジン
３５５    メッセージのメールボックス
３６０    ダウンストリームフィルタ
３６５    サイドバンドバス
４０５、８０５、８１０    ブロック
４１０    サブセット
４２０    ダウンストリームＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）
５０５    アップストリームフィルタ
６０５    アップストリームＦＡＲ
７０５、９０５、１１１５、１１２０    物理機能（関数）（ＰＦ）
７１０    仮想機能（関数）（ＶＦ）
７１５    ＶＦフィルタ
１００５、１０１０、１２１５，１２２０、１４０５、２１０５、２１２５、２２０３、２２０６、２２１５、２２２１，２２２７，２２３０    ブロック
１１１０、１３０５    ルートポート
１１２５    構成モニター
１２０５、１２１５    メモリアドレスのブロック
１２１０，１４１０    アドレスマップ
１９０５、１９１０    ブリッジ構成要素（ブリッジコンポーネント）
２００５、２０２０    ＰＣＩｅトランザクション
２０１５    アクセラレーションコマンド
２０３０、２０３５、２０４０    結果
【図１】
2019153305.tif 000003
【図２】
2019153305.tif 000004
【図３】
2019153305.tif 000005
【図４】
2019153305.tif 000006
【図５】
2019153305.tif 000007
【図６】
2019153305.tif 000008
【図７】
2019153305.tif 000009
【図８】
2019153305.tif 000010
【図９】
2019153305.tif 000011
【図１０】
2019153305.tif 000012
【図１１】
2019153305.tif 000013
【図１２】
2019153305.tif 000014
【図１３】
2019153305.tif 000015
【図１４】
2019153305.tif 000016
【図１５】
2019153305.tif 000017
【図１６】
2019153305.tif 000018
【図１７】
2019153305.tif 000019
【図１８】
2019153305.tif 000020
【図１９】
2019153305.tif 000021
【図２０Ａ】
2019153305.tif 000022
【図２０Ｂ】
2019153305.tif 000023
【図２１】
2019153305.tif 000024
【図２２Ａ】
2019153305.tif 000025
【図２２Ｂ】
2019153305.tif 000026
【図２２Ｃ】
2019153305.tif 000027
【図２３Ａ】
2019153305.tif 000028
【図２３Ｂ】
2019153305.tif 000029
【図２４】
2019153305.tif 000030
【図２５】
2019153305.tif 000031
【図２６】
2019153305.tif 000032
【図２７Ａ】
2019153305.tif 000033
【図２７Ｂ】
2019153305.tif 000034
【図２７Ｃ】
2019153305.tif 000035
【図２８Ａ】
2019153305.tif 000036
【図２８Ｂ】
2019153305.tif 000037