(57)【要約】【課題】ＳＳＤからメモリへのデータのロードを加速できるＳＳＤシステムを提供する。【解決手段】アプリを実行するＣＰＵ、ＣＰＵ上で実行中のアプリが使うデータを格納するメモリ、ＣＰＵとの通信向けのアップストリームＩ／Ｆ、格納装置との通信向けのダウンストリームＩ／Ｆ、及びハードウェア的に具現されて加速コマンドを実行する加速プラットフォームマネージャ［ＡＰＦＭ］を含む加速モジュールを有し、格納装置は、加速モジュールと通信するための格納装置のエンドポイント、格納装置の動作を管理するためのコントローラ、アプリに対するアプリデータを格納するためのストア、及び加速コマンドを実行する際に加速モジュールの［ＡＰＦＭ］を補助する格納装置の［ＡＰＦＭ］を有し、ＣＰＵ、加速モジュール、及び格納装置は、ＰＣＩｅバスを介して通信し、加速モジュールは、格納装置上のアプリデータに対しメモリにロードせず加速コマンドを遂行する。【選択図】図１
2019153297.tif 000002
【特許請求の範囲】
【請求項１】
ＳＤＤ（ソリッドステートドライブ）システムであって、
アプリケーションを実行するプロセッサと、
前記プロセッサ上で実行中の前記アプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するためのアップストリームインタフェースと、
ストレージデバイスと通信するためのダウンストリームインタフェースと、
ハードウェアを使用して具現されて加速コマンドを実行するための加速モジュールの加速プラットフォームマネージャ（ＡＰＭ−Ｆ）を含む加速モジュールと、を包含し、
前記ストレージデバイスは、
前記加速モジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
前記アプリケーションに対するアプリケーションデータを格納するためのストアと、
前記加速コマンドを実行する際に前記加速モジュールの加速プラットフォームマネージャ（ＡＰＭ−Ｆ）を補助するためのストレージデバイスの加速プラットフォームマネージャ（ＡＰＭ−Ｓ）と、をさらに包含し、
前記プロセッサ、前記加速モジュール、及び前記ストレージデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを介して通信し、
前記加速モジュールは、前記アプリケーションデータを前記メモリにローディングすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する、ことを特徴とするシステム。
【請求項２】
前記プロセッサと前記加速モジュールとの間の通信を連結（ｂｒｉｄｇｉｎｇ）し、前記アップストリームインタフェースを含む第１ブリッジコンポーネントと、
前記加速モジュールと前記ストレージデバイスとの間の通信を連結し、前記ダウンストリームインタフェースを含む第２ブリッジコンポーネントと、をさらに包含する、ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記加速モジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、フィールドプログラマブルゲートアレイ）を使用して具現され、
前記加速モジュールは、前記アップストリームインタフェース及び前記ダウンストリームインタフェースを包含し、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ、ソリッドステートドライブ）を包含する、ことを特徴とする請求項１に記載のシステム。
【請求項４】
前記アップストリームインタフェースは、前記ＦＰＧＡのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援する前記ＦＰＧＡのルートポートを包含し、
前記ＦＰＧＡは、第１ＰＦ（物理機能）、第２ＰＦ（物理機能）及び前記ＦＰＧＡルートポートと関連されたダウンストリームフィルタ（ＤＳＦ）を包含し、
前記ダウンストリームフィルタは、前記ＳＳＤから受信された第１加速コマンドをインタセプトするように動作して、前記ＡＰＭ−ＦへダウンストリームＦＡＲ（フィルタアドレスレンジ）と関連される前記第１加速コマンドを伝達するように動作し、
前記ＦＰＧＡは、前記第１ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作して前記第２ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作して、前記プロセッサから受信された第１ＰＣＩｅトランザクションを、前記ＳＳＤに伝達するように動作して、前記プロセッサから受信された第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１ＰＣＩｅトランザクションは、前記第１ＰＦの第１識別子と関連され、
前記第２加速コマンドは、前記第２ＰＦの第２識別子と関連される、ことを特徴とする請求項３に記載のシステム。
【請求項５】
前記ＳＳＤは、前記ＦＰＧＡから前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックを要請するように動作し、
前記ホストシステムアドレスの前記第２ブロックは、少なくとも前記ＦＰＧＡアドレスの前記ブロックと同じ大きさを有し、
前記コントローラは、前記ダウンストリームＦＡＲとして、前記ＦＰＧＡアドレスの前記ブロックのサブセットを選択するように動作する、ことを特徴とする請求項４に記載のシステム。
【請求項６】
前記コントローラは、前記ダウンストリームフィルタを、前記ダウンストリームＦＡＲを用いてプログラミングするように動作する、ことを特徴とする請求項５に記載のシステム。
【請求項７】
前記加速モジュールの加速プラットフォームマネージャ（ＡＰＭ−Ｆ）は、前記ＦＰＧＡの前記エンドポイントを介して前記プロセッサに結果を伝送するように動作する、ことを特徴とする請求項４に記載のシステム。
【請求項８】
ＳＤＤ（ソリッドステートドライブ）システムにおいてハードウェアを利用して具現された加速モジュールであって、
加速コマンドを実行するための加速モジュールの加速プラットフォームマネージャ（ＡＰＭ−Ｆ）と、
プロセッサと通信するためのアップストリームインタフェースと、
前記加速コマンドを実行する際に前記ＡＰＭ−Ｆを補助するためのストレージデバイスの加速プラットフォームマネージャ（ＡＰＭ−Ｓ）を含むストレージデバイスと通信するためのダウンストリームインタフェースと、を包含し、
前記プロセッサ上でアプリケーションが実行され、
前記加速モジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、前記プロセッサ及び前記ストレージデバイスと通信し、
前記加速モジュールは、前記プロセッサと関連されたメモリにアプリケーションのデータをローディングすることなく、前記アプリケーションに対する前記ストレージデバイス上の前記アプリケーションのデータに対して前記加速コマンドを遂行することを支援する、ことを特徴とする加速モジュール。
【請求項９】
前記加速モジュールは、ＦＰＧＡを使用して具現される、ことを特徴とする請求項８に記載の加速モジュール。
【請求項１０】
前記アップストリームインタフェースは、前記ＦＰＧＡのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援する前記ＦＰＧＡのルートポートを包含し、
前記ＦＰＧＡは、第１ＰＦ（物理機能）、第２ＰＦ（物理機能）、及び前記ＦＰＧＡルートポートと関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信された第１加速コマンドをインタセプトするように動作して前記第１加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１加速コマンドは、ダウンストリームＦＡＲ（フィルタアドレスレンジ）と関連付けられ、
前記ＦＰＧＡは、前記第１ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作して、前記第２ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、
前記ＦＰＧＡは、前記プロセッサから受信されたＰＣＩｅトランザクションを前記ストレージデバイスに伝達するように動作して、前記プロセッサから受信された第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＰＣＩｅトランザクションは、前記第１ＰＦの第１識別子と関連付けられ、
前記第２加速コマンドは、前記第２ＰＦの第２識別子に関連付けられる、ことを特徴とする請求項９に記載の加速モジュール。
【請求項１１】
前記ＦＰＧＡは、前記ＦＰＧＡから前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックに対する要請を前記ストレージデバイスから受信するように動作し、
前記ＦＰＧＡは、前記構成空間から前記ＦＰＧＡアドレスの前記ブロックを割り当てるように動作し、
前記ホストシステムアドレスの前記第１ブロックは、少なくとも前記ＦＰＧＡアドレスの前記ブロックと同じ大きさを有する、ことを特徴とする請求項１０に記載の加速モジュール。
【請求項１２】
前記ＦＰＧＡの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる、ことを特徴とする請求項１１に記載の加速モジュール。
【請求項１３】
前記ＡＰＭ−Ｆは、前記ＦＰＧＡの前記エンドポイントを介して前記プロセッサに結果を伝送するように動作する、ことを特徴とする請求項１０に記載の加速モジュール。
【請求項１４】
前記ＦＰＧＡは、前記ストレージデバイスのエンドポイントの性能を前記のＦＰＧＡの前記エンドポイントにコピーするための構成モニタをさらに包含する、ことを特徴とする請求項１３に記載の加速モジュール。
【請求項１５】
ＳＤＤ（ソリッドステートドライブ）システムにおいてハードウェアを利用して具現された加速モジュールの方法であって、
前記加速モジュールにおいて第１デバイスからＰＣＩｅトランザクションを受信するステップと、
前記加速モジュールにおいて、前記ＰＣＩｅトランザクションが加速コマンドであるか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記加速コマンドであるとの判断に少なくとも部分的に基づいて、前記加速モジュールの加速プラットフォームマネージャ（ＡＰＭ−Ｆ）において前記ＰＣＩｅトランザクションを処理するステップと、
前記ＰＣＩｅトランザクションが、前記加速コマンドではないとの判断に少なくとも部分的に基づいて、前記ＰＣＩｅトランザクションを第２デバイスに伝達するステップを包含し、
前記加速モジュールは、プロセッサと関連されたメモリにアプリケーションプログラムに対するアプリケーションデータをローディングすることなく、ストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援し、
前記プロセッサ、前記加速モジュール、及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する、ことを特徴とする方法。
【請求項１６】
前記加速モジュールは、ＦＰＧＡを用いて具現される、ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記加速モジュールにおいて、前記第１デバイスから前記ＰＣＩｅトランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１ＰＣＩｅトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記ＰＣＩｅトランザクションが、前記加速コマンドであるか否かを判断するステップは、前記第１ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップを包含する、ことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第２ＰＣＩｅトランザクションを受信するステップと、
前記第２ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記ルートポートと関連されたダウンストリームＦＡＲ（フィルタアドレスレンジ）内のアドレスに関連されるか否かを、前記ＦＰＧＡにおいて判断することにより、前記第２ＰＣＩｅトランザクションが第２加速コマンドであるか否かを判断するステップと、
前記第２ＰＣＩｅトランザクションが前記第２加速コマンドであるとの判断に少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆ（加速モジュールの加速プラットフォームマネージャ）において、前記第１ＰＣＩｅトランザクションを処理するステップと、
前記第２ＰＣＩｅトランザクションが前記第２加速コマンドではないとの判断に少なくとも部分的に基づいて、前記ＦＰＧＡの前記エンドポイントを使用して前記第２ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、をさらに包含する、ことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと連結するステップと、をさらに包含する、ことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記ＦＰＧＡの前記エンドポイントを使用して前記第１ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップと、をさらに包含する、ことを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージデバイスに関し、さらに詳しくは、追加のハードウェアを使用してソリッドステートドライブ（ＳＳＤ）の性能を加速（以下、アクセラレーションともいう）することに関する。
【背景技術】
【０００２】
従来の方法でストレージデバイスを使用するのが非効率的な場合がある。例として、データベースでクエリ（ｑｕｅｒｙ、検索要求）の実行を必要とする場合が考慮される。従来の解決策は、データベースをコンピュータのメモリにロードし、データベースのメモリ内コピーに対してクエリを遂行した後、結果を処理するものである。データベースが相対的に小さい場合、この方式が妥当であり得るものの、クエリの結果がデータベースの一つの記録を識別するために、数千、数百万以上の記録を含むデータベースをローディングするのは非常に非効率的である。クエリを遂行するために膨大な量のデータをメモリに移動しなければならず、その際、通常は既にメモリに格納されていた他のデータを移動する必要がある。クエリが完了されると、殆どのデータが必要でないので、クエリが完了された後に、殆どのデータは削除される。データベースに対して繰り返しクエリが遂行されなければならないとき、この問題は拡大され得る。つまり、各クエリはその度に、データベ−スが新たにメモリにローディングされることを要求するからである。
【０００３】
ストレージデバイスに関連される動作を加速する方法が必要である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国登録特許第９６１９１６７Ｂ２号公報
【特許文献２】米国登録特許第９８９８３１２Ｂ２号公報
【特許文献３】米国公開特許第２０１３０３４３１８１Ａ１号公報
【特許文献４】米国公開特許第２０１５０２５４００３Ａ１号公報
【特許文献５】米国公開特許第２０１６００９４６１９Ａ１号公報
【特許文献６】米国公開特許第２０１７０１７７２７０Ａ１号公報
【特許文献７】米国公開特許第２０１８００５２７６６Ａ１号公報
【特許文献８】米国公開特許第２０１８００８１５６９Ａ１号公報
【非特許文献】
【０００５】
【非特許文献１】ＪＵＮ，  Ｓａｎｇ−Ｗｏｏ，  “Ｓｃａｌａｂｌｅ  Ｍｕｌｔｉ−Ａｃｃｅｓｓ  Ｆｌａｓｈ  Ｓｔｏｒｅ  ｆｏｒ  Ｂｉｇ  Ｄａｔａ  Ａｎａｌｙｔｉｃｓ”，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２０１４  ＡＣＭ／ＳＩＧＤＡ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ，  ＡＣＭ  ２０１４，  ｆｏｕｎｄ  ｖｉａ  Ｇｏｏｇｌｅ  Ｓｃｈｏｌａｒ  （ｕｒｌ：ｈｔｔｐｓ：／／ｄｓｐａｃｅ．ｍｉｔ．ｅｄｕ／ｂｉｔｓｔｒｅａｍ／ｈａｎｄｌｅ／１７２１．１／８７９４７／８８０４１５１２０−ＭＩＴ．ｐｄｆ；ｓｅｑｕｅｎｃｅ＝２），  Ｆｅｂｒｕａｒｙ  ２０１４，  ４９  ｐａｇｅｓ．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本開示の目的は、ＳＳＤからメモリへのデータのロードを加速して、その際に発生する遅延を回避して低コスト、低消費電力のＳＳＤを具現できる、ＦＰＧＡベースの加速モジュールを含むＳＳＤシステム、その加速モジュール、及びその加速方法に係る基本構造（ａｒｃｈｉｔｅｃｔｕｒｅ）、を提供することにある。
【課題を解決するための手段】
【０００７】
一実施例に係るＳＳＤシステムは、アプリケーションを実行するプロセッサと、プロセッサ上で実行中のアプリケーションによって使用されるデータを格納するメモリと、プロセッサと通信するためのアップストリームインタフェースと、ストレージデバイスと通信するためのダウンストリームインタフェースと、加速モジュールとを包含できる。
加速モジュールはハードウェアを使用して具現されて加速コマンドを実行するための加速モジュールの加速プラットフォームマネージャ（ＡＰＭ−Ｆ）を包含できる。
ストレージデバイスは、加速モジュールと通信するためのストレージデバイスのエンドポイントと、ストレージデバイスの動作を管理するためのコントローラと、アプリケーションに対するアプリケーションデータを格納するためのストアと、加速コマンドを実行する際に加速モジュールの加速プラットフォームマネージャ（ＡＰＭ−Ｆ）を補助するためのストレージデバイスの加速プラットフォームマネージャ（ＡＰＭ−Ｓ）と、をさらに包含できる。
プロセッサ、加速モジュール、及びストレージデバイスはＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを介して通信できる。
加速モジュールは、アプリケーションデータをメモリにロード（ｌｏａｄ）せずに、アプリケーションのためのストレージデバイス上のアプリケーションデータに対する加速コマンドの遂行を支援できる。
【０００８】
他の実施例は、ハードウェアを利用して具現された加速モジュールを提供するが、加速モジュールは加速コマンドを実行するための加速モジュールの加速プラットフォームマネージャ（ＡＰＭ−Ｆ）と、プロセッサと通信するためのアップストリームインタフェースと、及び加速コマンドを実行する際にＡＰＭ−Ｆを補助するためのストレージデバイスの加速プラットフォームマネージャ（ＡＰＭ−Ｓ）を含むストレージデバイスと通信するためのダウンストリームインタフェースと、を包含できる。
プロセッサ上でアプリケーションが実行され得る。加速モジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、プロセッサ及びストレージデバイスと通信できる。
加速モジュールは、プロセッサと関連されたメモリにアプリケーションデータをロードせずに、アプリケーションに対するストレージデバイス上のアプリケーションのデータに対して加速コマンドの遂行を支援できる。
【０００９】
他の実施例は、方法を提供するが、方法は加速モジュールにおいて第１デバイスからＰＣＩｅトランザクションを受信するステップと、加速モジュールにおいてＰＣＩｅトランザクションが加速コマンドか否かを判断するステップと、ＰＣＩｅトランザクションが加速コマンドであるとの判断に少なくとも部分的に基づいて、加速モジュールの加速プラットフォームマネージャにおいてＰＣＩｅトランザクションを処理するステップと、ＰＣＩｅトランザクションが加速コマンドではないとの判断に少なくとも部分的に基づいて、ＰＣＩｅトランザクションを第２デバイスに伝達するステップを含み得る。
加速モジュールは、プロセッサと関連されたメモリにアプリケーションプログラムに対するアプリケーションデータをロードすることなく、ストレージデバイス上のアプリケーションデータに対する加速コマンドの遂行を支援できる。プロセッサ、加速モジュール、及びストレージデバイスは、ＰＣＩｅバスを使用して通信できる。
【発明の効果】
【００１０】
本明細書で開示されている実施例によれば、加速モジュールが、アプリケーションデータをメモリにロード（ｌｏａｄ）せずに、アプリケーションのためのストレージデバイス上のアプリケーションデータに対する加速コマンドの遂行を支援できるので、ＳＳＤからメモリにデータをロードする際に発生する遅延を回避できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の一実施例に基づいてストレージデバイス上の加速される動作を支援するマシン（ｍａｃｈｉｎｅ）を示している。
【図２】図２は、図１のマシンの追加的な細部事項を示している。
【図３】図３は、本発明の第１実施例に基づいて、図１の加速モジュールの構成及び図１のストレージデバイスを示している。
【図４】図４は、本発明の第１実施例に基づいて、図１のシステムで、コマンドを加速するためのメモリ使用を示している。
【図５】図５は、本発明の第２実施例に基づいて、図１の加速モジュールの構成を図示する。
【図６】図６は、本発明の第２実施例に基づいて、図１のシステムで、コマンドを加速するためのメモリ使用を図示する。
【図７】図７は、本発明の第３実施例に基づいて、図１の加速モジュールの構成要素及び図１のストレージデバイスを図示する。
【図８】図８は、本発明の第３実施例に基づいて、図１のシステムで、コマンドを加速するためのメモリ使用を示す。
【図９】図９は、本発明の第４実施例に基づいて、図１の加速モジュールの構成要素及び図１のストレージデバイスを示す。
【図１０】図１０は、本発明の第４実施例に基づいて、図１のシステムで、コマンドを加速するためのメモリ使用を示す。
【図１１】図１１は、本発明の第５実施例に基づいて、図１の加速モジュールの構成要素及び図１のストレージデバイスを示す。
【図１２】図１２は、本発明の第５実施例に基づいて、図１のシステムで、コマンドを加速するためのメモリ使用を図示する。
【図１３】図１３は、本発明の第６実施例に基づいて、図１の加速モジュールの構成要素及び図１のストレージデバイスを図示する。
【図１４】図１４は、本発明の第６実施例に基づいて、図１のシステムで、コマンドを加速するためのメモリ使用量を示している。
【図１５】図１５は、本発明の第７実施例に基づいて、図１の加速モジュールの構成要素及び図１のストレージデバイスを示している。
【図１６】図１６は、本発明の第７実施例に基づいて、図１のシステムで、コマンドを加速するためのメモリ使用を示している。
【図１７】図１７は、本発明の第８実施例に基づいて、図１の加速モジュールの構成要素及び図１のストレージデバイスを示している。
【図１８】図１８は、本発明の第８実施例に基づいて、図１のシステムで、コマンドを加速するためのメモリ使用を示している。
【図１９】図１９は、本発明の実施例に基づいて、図１のシステムの構成及び図１の加速モジュールとの通信を管理するブリッジングコンポーネント（ｂｒｉｄｇｉｎｇ  ｃｏｍｐｏｎｅｎｔｓ）を示している。
【図２０】本発明の実施例に基づいて、図１のプロセッサ、図１の加速モジュール、図１のストレージデバイス間の通信の前半部を示している。
【図２１】本発明の実施例に基づいて、図１のプロセッサ、図１の加速モジュール、図１のストレージデバイス間の通信の後半部を示している。
【図２２】本発明の実施例に基づいてＰＣＩｅトランザクションを処理するための、図１の加速モジュールに対する例示的な手順のフローチャートである。
【図２３】本発明の実施例に基づいてＰＣＩｅトランザクションを処理するための、図１の加速モジュールに対する例示的な手順のより詳細なフローチャートの前段部である。
【図２４】本発明の実施例に基づいてＰＣＩｅトランザクションを処理するための、図１の加速モジュールに対する例示的な手順のより詳細なフローチャートの中段部である。
【図２５】本発明の実施例に基づいてＰＣＩｅトランザクションを処理するための、図１の加速モジュールに対する例示的な手順のより詳細なフローチャートの後段部である。
【図２６】本発明の実施例に基づいてＰＣＩｅトランザクションが加速コマンドを含む図１のプロセッサから来ているか否かを判断するために、加速モジュールに対する例示的な手順のフローチャートの前段部を示す。
【図２７】本発明の実施例に基づいてＰＣＩｅトランザクションが加速コマンドを含む図１のプロセッサから来ているか否かを判断するために、加速モジュールに対する例示的な手順のフローチャートの後段部を示す。
【図２８】本発明の実施例に基づいて、ＰＣＩｅトランザクションが加速コマンドを含む図１のストレージデバイスから来ているか否かを判断するために、加速モジュールに対する例示的な手順のフローチャートを示す。
【図２９】本発明の実施例に基づいて、ＰＣＩｅトランザクションが加速コマンドを含む図１のプロセッサから来ているか否かを判断するための、第１ブリッジングコンポーネントの例示的な手順のフローチャートを示す。
【図３０】本発明の実施例に基づいて、ＰＣＩｅトランザクションが加速コマンドを含む図１のストレージデバイスから来ているか否かを判断するための、図１９の第２ブリッジングコンポーネントの例示的な手順のフローチャートを示す。
【図３１】、本発明の実施例に基づいて、図１のストレージデバイスがＰＣＩｅトランザクションを処理するための例示的な手順のフローチャートの前段部を示す。
【図３２】、本発明の実施例に基づいて、図１のストレージデバイスがＰＣＩｅトランザクションを処理するための例示的な手順のフローチャートの中段部を示す。
【図３３】、本発明の実施例に基づいて、図１のストレージデバイスがＰＣＩｅトランザクションを処理するための例示的な手順のフローチャートの後段部を示す。
【図３４】本発明の実施例に基づいて、図１のストレージデバイスが、図１の加速モジュールから出て来るＰＣＩｅトランザクションが加速コマンドを包含するか否かを判断するための、例示的な手順のフローチャートの前半部を示す。
【図３５】本発明の実施例に基づいて、図１のストレージデバイスが、図１の加速モジュールから出て来るＰＣＩｅトランザクションが加速コマンドを包含するか否かを判断するための、例示的な手順のフローチャートの後半部を示す。
【発明を実施するための形態】
【００１２】
本発明の技術的思想の実施例が参照され、それらの例が添付された図面に示される。後述される詳細な説明で、多様な特定の詳細が、本発明の技術的思想に対する十分な理解を助けるために提供される。しかし、この分野における通常の技術を有する者は、このような特定の詳細がなくても、本発明の技術的思想を具現できる。他の例として、よく知られている方法、手順、コンポーネント、回路、及びネットワークは実施例の側面を不必要に曖昧にしないように詳細には説明されない。
【００１３】
ここで、第１、第２などのような用語が多様なエレメント（要素、構成要素）を説明するために使用されるが、このようなエレメントは、このような用語によって限定されない。このような用語は、一つのエレメントを他の一つのエレメントと区別するためにだけ使用される。例として、本発明の技術的思想の範囲から逸脱せずに、第１モジュールは、第２モジュールと命名され得る。同様に、第２モジュールは、第１モジュールと命名され得る。
【００１４】
本発明の技術的思想の説明で使用される用語は、特定の実施例を説明するための目的でのみ使用され、本発明の技術的思想を限定する意図はない。本発明の技術的思想の説明及び添付された請求項において使用されるように、コンテキスト（ｃｏｎｔｅｘｔ）上明確に明示しない限り単数表現は複数表現も、また含むと意図される。「及び／又は」の用語は、一つ又はそれより多くの関連された項目の任意かつ全ての可能な組み合わせを含むと参照される。「包含する（ｃｏｍｐｒｉｓｅｓ）」及び／又は「包含する（ｃｏｍｐｒｉｓｉｎｇ）」の用語は、詳細な説明において使用された際に言及された特性、整数、ステップ、動作、エレメント、及び／又はコンポーネントの存在を明示し、一つ又はそれより多くの他の特性、整数、ステップ、動作、エレメント、コンポーネント、及び／又はそれらのグループの存在又は追加を排除しない。図面の構成及び特性は、必ずしも実際の比率に比例しない。
【００１５】
本発明の実施例は、特定のデータ処理機能を加速するためにＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が使用されているＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）又は他のストレージデバイスの基本構造を提案する。ＦＰＧＡデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）ホストインタフェースを提供するＳＳＤの前に又は横に配置される。ホストトランザクション（ｈｏｓｔ  ｔｒａｎｓａｃｔｉｏｎｓ）がＦＰＧＡ  ＰＣＩｅインタフェースで受信されると、ＰＣＩｅトランザクションは、バックエンドＳＳＤコントローラ（ｂａｃｋｅｎｄ  ＳＳＤ  ｃｏｎｔｒｏｌｌｅｒ）に伝達される。「ＳＳＤ」及び「ＳＳＤコントローラ」という用語は、明示された場合を除いては、一般的に同じ意味で使用される。
バックエンドＳＳＤはＰＣＩｅエンドポイント及び不揮発性メモリエクスプレス（ＮＶＭｅ）コントローラを具現する。従って、ホストは、直接ＮＶＭｅプロトコルをバックエンドＳＳＤに伝達する。つまり、ＦＰＧＡを介してホストからバックエンドＳＳＤに連結されるＰＣＩｅインタフェースは通過（ｐａｓｓ−ｔｈｒｏｕｇｈ）特性である。ＳＳＤは直接メモリアクセス（ＤＭＡ）を介してホストシステムメモリとのデータ伝送を遂行する。ＦＰＧＡダウンストリームポート（ＤＳＰ）は、ＰＣＩｅトランザクションフィルタとして使用されるメモリのフィルタドレス範囲（ＦＡＲ）でプログラミングされる。  ＤＳＰは、ＦＡＲウィンドウに属する全てのＰＣＩｅトランザクションをフィルタリングして、それらをＦＰＧＡのロジック及びメモリに伝達する。プログラミングされたＦＡＲウィンドウに属していない全てのＰＣＩｅトランザクションは、ホストシステムのメモリに属し、ホストに直接伝達される。ＳＳＤコントローラは、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）メカニズム又はＩ２Ｃ／ＳＭバスのような他のサイドバンドバスを使用するＦＰＧＡで適切なＦＡＲウィンドウをプログラムする。ＳＳＤコントローラは、ＰＣＩｅ  ＢＡＲ（Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ、ベースアドレスレジスタ）を介してホストにアドレス範囲のブロックを要請する。ホストのＢＩＯＳが要請されたアドレスブロックをＳＳＤコントローラに割り当てた後、ＳＳＤコントローラは、ＦＰＧＡ  ＤＳＰでそのアドレス範囲のサブセットをＦＡＲウィンドウでプログラムする。ＤＳＰにプログラムされたアドレスの範囲は、ＳＳＤコントローラとＦＰＧＡとが通信し合うために使用される。つまり、ホストがアドレスブロックを割り当てると、ＳＳＤとＦＰＧＡがＰＣＩｅ階層で互いに又は他のＰＣＩｅデバイスを干渉せずにホストトランザクションとＰＣＩｅバスを共有できる。ＳＳＤコントローラは、共有ＰＣＩｅバスを介してＦＡＲウィンドウを使用してＦＰＧＡに加速コマンドとデータを提供できる。ＦＰＧＡ又はホストが共有ＰＣＩｅバス及び前記のアドレス範囲を使用してＳＳＤコントローラから加速のためのデータを要請することもできる。ＦＰＧＡは、同じメカニズムを使用して加速の結果をＳＳＤコントローラに再び提供することもできる。提案された基本構造及びメカニズムは、低コスト及びＦＰＧＡデバイスを使用しているＳＳＤベースのアプリケーション加速のための低消費電力の解決策を具現できる。
【００１６】
提案された解決策の細部事項
【００１７】
基本的なアイディアは、ＦＰＧＡ及びＳＳＤ（及び／又は他のストレージデバイス）がホストと通信しながら（別のデバイスとして又は単一のデバイスに統合して）集合的に作動するというものである。以下、説明において、ストレージデバイスはＳＳＤを意味する。３つのトラフィックストリームがある。
【００１８】
１）ホストからストレージデバイスに。ホストからストレージデバイスへの通信は、ＦＰＧＡ具現に応じてＦＰＧＡを介してストレージデバイスのＥＰに伝送される全てのトラフィックをアップストリームポート（ＵＳＰ）又はエンドポイント（ＥＰ）からダウンストリームポート（ＤＳＰ）、ルートポート又はルート複合ポート（ＲＰ）に単純に伝送することにより、ＦＰＧＡによって管理される。ＦＰＧＡは、ホストとストレージデバイスとの間のＮＶＭｅ通信を支援するために、ストレージデバイスによってホストにさらされる物理機能を包含できる。
【００１９】
２）ＦＰＧＡに対する加速コマンドの通信。本発明の幾つかの実施例で、加速コマンドは、次の方式で処理される。つまり、加速サービスマネージャ（ＡＳＭ）がホスト上で実行され得る。ＡＳＭは、ストレージデバイス（ＡＰＭ−Ｓとして識別される）とＦＰＧＡ（ＡＰＭ−Ｆとして識別される）の両方の一部として構成を包含できるＡＰＭ（Ａｃｃｅｌｅｒａｔｉｏｎ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｒ）と通信できる。ホスト上のＡＳＭは、加速コマンド及び関連情報をＳＳＤに伝送するためにＮＶＭｅプロトコルを使用できる。その次にＳＳＤは、ＦＰＧＡと関連された加速オーケストレーター（ｏｒｃｈｅｓｔｒａｔｏｒ）のように動作する。ＡＰＭ−Ｓによって許容される全ての加速コマンドは、独占のインタフェースを使用してＡＰＭ−Ｆに適切なコマンドを提供するために使用される。独占のインタフェースは、アドレス空間のウィンドウを使用して容易になる。このアドレス空間ウィンドウは、ストレージデバイスの要請に応じて、ホストメモリアドレスマップ内に割り当てられ得る（部分的には、ストレージデバイスとホストとの間のＮＶＭｅプロトコルを使用して通信を容易にするために）。適切なアドレス空間でアドレスを使用するコマンドは、ホストやストレージデバイスから別のモジュールに直接通信する代わりに、ＡＰＭ−Ｆによる処理のためにＦＰＧＡによってフィルタリングされ得る。フィルタリングは、コマンドと関連されたタグを使用したり、ＰＣＩｅメッセージベースのフィルタリングを使用して遂行されたりすることもできる。このフィルタリングは、ＦＰＧＡをストレージデバイスに連結するＤＳＰ／ＲＰに連結されたフィルタによって遂行され得る。
【００２０】
３）データの加速及び処理のために、データをフェッチ（ｆｅｔｃｈ）するためのＦＰＧＡとＳＳＤとの間の通信。本発明の幾つかの実施例で、加速は次の方法で行われる。つまり、ＦＰＧＡが加速処理のためにデータのフェッチを要請するとき、ＦＰＧＡは上で議論された通り、ストレージデバイスとＦＰＧＡとの通信のために使用されるホストのメモリアドレスマップ内に割り当てられたアドレス空間を使用して要請を送り得る。
【００２１】
ＤＳＰフィルタ基本構造
【００２２】
この基本構造は、加速されたデータを処理するために、ＦＰＧＡと共有できるホストとＳＳＤとの間のＰＣＩｅバスによる方法を提供する。論理的に言って、ＦＰＧＡは、ホストとＳＳＤコントローラとの間に動作可能に配置される。ホストは、ＦＰＧＡのアップストリームポート（ＵＳＰ）に連結され、ＳＳＤは、ＦＰＧＡのダウンストリームポート（ＤＳＰ）に連結される。ホスト及び／又はＳＳＤに連結するために使用されるＰＣＩｅバスは、ｘ４、ｘ８レーン（ｌａｎｅｓ）又はその他の所望の幅であり得る。ＦＰＧＡ  ＵＳＰ及びＤＳＰポートは、２方向の両方でＰＣＩｅトランザクション（つまり、トランザクション階層パケット（ＴＬＰｓ））を伝達する。ＰＣＩｅ  ＴＬＰの例は、構成の読み取り、構成の書き込み、メモリの読み取り及びメモリの書き込みである。従って、ホストは、ＳＳＤと直接通信する。ＦＰＧＡ上のＤＳＰポートは、プログラムされたフィルタのアドレス範囲（ＦＡＲ）をベースにしたＳＳＤコントローラから出てくる全てのＰＣＩｅトランザクションをフィルタリングするロジックを有する。遮断されたＳＳＤコントローラＰＣＩｅトランザクションは、加速プラットフォームマネージャ（Ａｃｃｅｌｅｒａｔｉｏｎ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｒ）−ＦＰＧＡ（ＡＰＭ−Ｆ）ブロックに伝達される。ＡＰＭ−Ｆモジュールは、ＳＳＤコントローラと通信する。ＡＰＭ−Ｆモジュールは、ＳＳＤコントローラからの加速プラットフォームマネージャ・ＳＳＤ（ＡＰＭ−Ｓ）ファームウェアからデータ及び加速コマンドを受信する。その後にＡＰＭ−Ｆモジュールは、受信された加速コマンド及びデータをランタイム（ＲＴ）スケジューラに提供する。ＲＴスケジューラは、データ処理を遂行するために、適切な加速エンジンを順番にプログラムする。
【００２３】
ＦＰＧＡの使用は、１つの可能な具現を示すが、ＦＰＧＡ以外の具現が使用され得る。ＦＰＧＡは、ストレージデバイス内に具現され得る。ＦＰＧＡは、ホストメモリにデータをフェッチした後、ホストでデータを処理するよりは、ストレージデバイスに近く遂行されうる、加速されたデータの処理を支援する。データをフェッチする代わりに、ストレージデバイス／ＦＰＧＡは、クエリを受信して処理を局部的に行い得る。
【００２４】
ＳＳＤコントローラは、ＰＣＩｅの伝送を使用してＮＶＭｅプロトコル処理ロジックを具現する。ＰＣＩｅ構成の一部として、ＳＳＤコントローラは、それ自体の用途のため、ホストシステムアドレスマップのブロックを要請する。ＳＳＤコントローラは、ＮＶＭｅプロトコルを支援するために、一般的に必要なものよりも大きなブロックを要請する。ストレージデバイスとＦＰＧＡとの間の通信を管理するために追加の空間の一部又は全部が使用され得る。例として、ＮＶＭｅプロトコルは６４ＫＢのアドレス空間が必要になり得る。提案された基本構造でＳＳＤコントローラは、１０ＭＢアドレスブロックを要請できる。ＳＳＤコントローラは、ホストに関して透明な方法（Ｈｏｓｔ＿Ｔｒａｎｓｐａｒｅｎｔ＿Ｍａｎｎｅｒ）でＦＰＧＡと通信するために割り当てられたアドレスマップの一部を使用する。ＳＳＤ−ＦＰＧＡ通信のために予約のシステムアドレスマップのサブセットをフィルタアドレス範囲（ＦＡＲ）と称する。その後にＳＳＤコントローラは、ＦＰＧＡ  ＤＳＰでＦＡＲウィンドウをプログラムする。ＳＳＤコントローラは、ＦＰＧＡのＦＡＲウィンドウをプログラミングするために、Ｉ２ＣバスやＳＭバスなどのサイドバンドバスを使用できる。ＳＳＤコントローラは、ＦＰＧＡのＦＡＲウィンドウをプログラミングするためにＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅｓ、ベンダ定義メッセージ）を使用することもできる。
【００２５】
ホストインタフェースロジック（ＨＩＬ）モジュールは、ＮＶＭｅプロトコルを具現して、ホスト上で実行中のＮＶＭｅドライバと通信する。ＨＩＬモジュールは、一般的なホストＮＶＭｅコマンドを実行するためにＦＴＬ（Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌａｙｅｒ）と相互作用する。さらに、ＨＩＬモジュールは、ホスト側から受信した特定の加速コマンドを遮断し、それらをＡＰＭ−Ｓモジュールに伝達する。ＡＰＭ−Ｓは、ファームウェア又はファームウェア＋ハードウェアとして具現され得る。ＡＰＭ−Ｓモジュールは、特定の加速コマンドを処理した後、加速コマンドとデータをＦＰＧＡ上のＡＰＭ−Ｆモジュールに送るために準備できる。ＡＰＭ−Ｓモジュールは、加速情報をＦＰＧＡに送るためにＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ）アドレスを使用する。ＡＰＭ−ＳとＡＰＭ−Ｆとの間の通信は、メッセージをベースにできる。このようなＡＰＭ−ＳとＡＰＭ−Ｆとの間の通信のために、多様な方法を使用できる。
【００２６】
提案された基本構造及びメカニズムは、ＦＰＧＡベースの加速を可能にするために、ＳＳＤコントローラが、ホストＰＣＩｅバスの共有を可能にする。本発明の実施例は、ＳＳＤでＦＰＧＡを使用するアプリケーションの加速化のための低コスト及び低消費電力の解決策を提供する。
【００２７】
ＤＳＰ＋ＵＳＰフィルタ基本構造
【００２８】
この基本構造で、ＦＰＧＡは間接的な方式でホストに表示される。ＦＰＧＡとＳＳＤとの間の通信は、提案されたソリューション１と同じように維持される。ＳＳＤコントローラは、ホストから大きなシステムのアドレス空間を要請できる。ＳＳＤコントローラは、割り当てられたアドレスブロックを３つのウィンドウに分割できる。一番目のウィンドウは、ＮＶＭｅ  Ｃｏｎｔｒｏｌｌｅｒレジスタのアドレス空間のために使用される。２番目のウィンドウは、前述したように、ＦＰＧＡとＳＳＤとの間の通信のために使用される。三番目のウィンドウは、ホストとＦＰＧＡとの間の通信のためのものである。ホストは、特定のＮＶＭｅレジスタからＦＰＧＡデバイスの位置を発見できる。  ＳＳＤコントローラは、ＦＰＧＡデバイスの位置を知るために、ホストアプリケーションによって読み出される特定のレジスタの三番目のウィンドウを広告できる。  ＳＳＤコントローラは、ＵＳＰがこのようなトランザクションをフィルタリングできるよう、同じアドレスウィンドウでＵＳＰをプログラミングすることもできる。ＵＳＰは、三番目ウィンドウのアドレス空間に属するホストの全てのトランザクションをフィルタリングしてＦＰＧＡ加速ロジックに伝達できる。このメカニズムは、加速コマンド及びデータをＦＰＧＡに通信するためにホスト上の加速サービスマネージャ（ＡＳＭ）によって使用され得る。
【００２９】
従って、本発明の幾つかの実施例で、フィルタリングはまた、ホストからＦＰＧＡによって受信されたトラフィックに基づいて遂行され得る。つまり、ホストは加速コマンド／データをＦＰＧＡに送ることもできる。ＦＰＧＡのＤＳＰ又はＦＰＧＡのＲＰに連結されたものと類似したフィルタが、ＦＰＧＡのＵＳＰ又はＦＰＧＡのＥＰにも連結され得る。ホストは、ストレージデバイスによって要請されたアドレス空間のアドレスを使用できる。ホスト・ＦＰＧＡ通信のためにホストによって使用されたアドレスは、ホスト（言い替えるが、要請されたアドレス空間は、ＮＶＭｅ通信に必要な空間より大きい可能性がある）又はホストのメモリアドレスマップ内の別のアドレス空間の一部（仮想機能又は２番目の物理機能の何れか１つ又は両方に対して、２つの中で１つはストレージデバイスによってホストにさらされる）とのＮＶＭｅ通信のためにストレージデバイスによって要請されたアドレス空間の一部であり得る。ＵＳＰ又はＥＰ及びＤＳＰ又はＲＰにおいてフィルタリングは、ホストメモリアドレスマップ内の別のアドレス範囲を使用して遂行され得るので、ホストが必要に応じてストレージデバイス又はＦＰＧＡにコマンドを送り得ることに留意しよう（ストレージデバイスがＦＰＧＡと通信するように許諾する間にも必要である）。
【００３０】
アドレス空間の一部が、ホストとＦＰＧＡとの間の通信を支援する本発明の幾つかの実施例で、ＦＰＧＡは、ホストに直接見えない可能性がある。この場合には、ホスト上のＡＳＭは、ホストＦＰＧＡの通信に使用されるアドレスの範囲を識別するためのＮＶＭｅアドレス空間の特定のレジスタに記録されたアドレスにアクセスすることにより、ＦＰＧＡを「発見」できる。ＡＳＭは、ＰＣＩｅデバイステーブルを介してストレージデバイスを検索でき、ＮＶＭｅアドレス空間のどのレジスタがホスト・ＦＰＧＡ通信アドレス空間に対するポインタを格納するかがわかる。
【００３１】
ＶＦ＋ＤＳＰフィルタ基本構造
【００３２】
このＦＰＧＡ＋ＳＳＤの基本構造で、ＳＳＤは一つの物理機能（ＰＦ）と１つの仮想機能（ＶＦ）をホストに対して露出する。ＳＳＤコントローラは、ＰＦを介して露出される。ＶＦは、ＦＰＧＡを露出するために使用される。ＰＦクラスコードは、大容量ストレージデバイスを示し得る一方、ＶＦクラスコードは、ＦＰＧＡを識別するために設定され得る。ＳＳＤコントローラのＰＦは、大規模システムメモリのアドレスブロックを要請してＦＰＧＡのアドレス指定ブロックのサブセットがＦＰＧＡ  ＤＳＰを通してＦＰＧＡとＳＳＤとのの間の通信に使用され得、ＳＳＤコントローラＶＦは、ＦＰＧＡ  ＵＳＰを介してＦＰＧＡとホストとの間の通信のために、それ自体のメモリアドレスブロックを要請できる。
【００３３】
ＦＰＧＡ  ＵＳＰは、ＰＣＩｅトランザクションフィルタとして使用され得る、他のメモリのフィルタドレス範囲及び／又はＶＦタグ（ＦＡＲ−ＵＳＰ）でプログラムされ得る。ＵＳＰは、ＦＡＲウィンドウ及び／又はＶＦに属する全てのＰＣＩｅトランザクションに属する全てのＰＣＩｅトランザクションをフィルタリングでき、これをＦＰＧＡの加速ロジック及びメモリに伝達できる。プログラミングされたＦＡＲ−ＵＳＰウィンドウに属していない全てのＰＣＩｅトランザクション又はＶＦに属していないトランザクションはＳＳＤに属し、ＳＳＤに直接伝達され得る。ＳＳＤコントローラは、この情報を通信するために、ＰＣＩｅ  ＶＤＭメカニズム又はＩ２Ｃ／ＳＭバスのような他のサイドバンドバスを使用する適切なＦＡＲ−ＵＳＰウィンドウをプログラムできる。
【００３４】
このＦＡＲアドレスウィンドウは、ホスト上で実行中のＡＳＭソフトウェアがＡＰＭ−Ｆとの通信を可能にする。つまり、ＦＰＧＡはホストに直接見え得る。ＡＳＭソフトウェアは加速オーケストレーションコマンドとデータをＦＰＧＡに送るために、このＰＣＩｅアドレス範囲を使用できる。その後に、ＡＰＭ−Ｆは、受信された加速コマンド及びデータをランタイム（ＲＴ）スケジューラに提供できる。ＲＴスケジューラは、データ処理を遂行するために、適切な加速エンジンを順番にプログラミングする。なお、ＡＰＭ−Ｆは、ホストメモリ又はＳＳＤストアからデータをフェッチできる。
【００３５】
ＰＦ＋ＤＳＰフィルタ基本構造
【００３６】
このＦＰＧＡ＋ＳＳＤの基本構造は、ＶＦを使用する代わりに第２ＰＦを使用してＦＰＧＡをホストに対して露出することを除いて、提案されたソリューション３と類似する。ＳＳＤコントローラは、２つの物理機能をホストに露出する。第１ＰＦはＳＳＤコントローラのために使用されて、第２ＰＦはＦＰＧＡのために使用され得る。第２ＰＦの基本アドレスは、ＦＰＧＡのＦＡＲ−ＵＳＰでプログラミングされ得る。従って、ＵＳＰは、第２ＰＦに対しプログラムされたアドレス範囲（ＦＡＲ−ＵＳＰ）にあるホストから来る全てのトランザクションをフィルタリングでき、それらをＦＰＧＡに伝達できる。このメカニズムは、ＦＰＧＡと通信するためホスト上で実行中のＡＳＭにより使用され得る。
【００３７】
仮想機能又は（第２）物理機能をホストに対して露出することにより、ホスト・ＦＰＧＡ通信のためのアドレス空間がホスト（ストレージデバイスによって又はＦＰＧＡによって）から要求され得る。仮想機能又は第２の物理的機能が露出された場合、ＵＳＰ／ＥＰのフィルタは、ホスト・ＦＩＦＩ通信に割り当てられたアドレスの範囲に基づいて、又は露出された仮想機能や露出された第２の物理的機能（例えば、フィルタ番号又は他のタグによって）をフィルタリングできる。（仮想機能は、オペレーティングシステム（以下、ＯＳと略する）の支援を要求する。そして第２の実際の機能が具現されたり、支援されたりする場合、第２の物理的機能を露出することは、仮想機能の使用に対する代替の解決策を提案する。）
【００３８】
ＰＦ＋ＲＰフィルタ基本構造
【００３９】
このＦＰＧＡ  ＳＳＤ基本構造で、ＦＰＧＡ  ＰＣＩｅポートは、ＵＳＰ及びＤＳＰではない、ＥＰ（ｅｎｄｐｏｉｎｔ）及びＲＰ（ｒｏｏｔ  ｐｏｒｔ）である。ＵＳＰ／ＤＳＰとＥＰ／ＲＰポートとの違いは、ＥＰ／ＲＰの両方がそれら自体のＰＣＩｅ構成空間を有する反面、ＵＳＰ／ＤＳＰポートはそうではないというのである。本発明のこのような実施例による基本構造で、ＦＰＧＡは２つのＰＦをホストに露出できる（ＰＦ／ＶＦを提供するＳＳＤがＦＰＧＡを露出するよりは、ＦＰＧＡがそれ自身のＰＦをホストに対して露出することに注目する）。ＳＳＤ  ＥＰは、ＦＰＧＡ上のＲＰに連結され得る。第１ＦＰＧＡ  ＥＰ  ＰＦは、ホストをＳＳＤに直接連結するために使用できる反面、第２ＦＰＧＡ  ＥＰ  ＰＦは、ホストをＦＰＧＡに連結するために使用され得る。このメカニズムは、ＦＰＧＡと通信するためにホストで実行中のＡＳＭにより使用され得る。ＳＳＤ−ＦＰＧＡ通信はＦＰＧＡ  ＲＰとＳＳＤ  ＥＰの間でアドレス空間マップの一部を使用できる。本発明の幾つかの実施例で、第１ＦＰＧＡ（ＰＦ）は、大規模なアドレス空間を要求でき、ＢＩＯＳ割り当てられたアドレスウィンドウは、ＳＳＤコントローラ（ＥＰ）にマッピング又は変換され得る。このアドレス空間の一部は、ローカルＦＰＧＡ−ＳＳＤ通信のために使用され得る。本発明の他の実施例で、第２ＦＰＧＡ  ＥＰのために割り当てられたアドレス空間の部分は、ＦＰＧＡとＳＳＤコントローラの間の通信のために使用され得る。
【００４０】
ＰＦ＋デュアルポートＳＳＤの基本構造
【００４１】
このＦＰＧＡ−ＳＳＤの基本構造で、デュアルポートＳＳＤはＦＰＧＡとともに使用される。この基本構造で、ＦＰＧＡ（言い換えると、ＦＰＧＡはＰＦ／ＶＦを提供するＳＳＤがＦＰＧＡを露出するよりは、それ自身のＰＦを露出する）は、２つのＰＦをホストに露出できる。  ＳＳＤ  ＥＰは、ＦＰＧＡ上のＲＰに連結され得る。第１ＦＰＧＡ  ＥＰ  ＰＦは、ホストをＳＳＤに直接連結するために使用され得る。第２ＦＰＧＡ  ＥＰ  ＰＦのために来る、全てのホストのトランザクションは、ＦＰＧＡ加速ロジックに伝達され得る。ホスト上で実行中のＡＳＭソフトウェアは、ＦＰＧＡと通信するための第２ＦＰＧＡ  ＥＰ  ＰＦを使用できる。
【００４２】
ＦＰＧＡ−ＳＳＤ通信（加速処理用）のために、ＳＳＤの第２ＰＣＩｅ  ＥＰが使用され得る。従って、ＦＰＧＡはＳＳＤに連結された２つのＲＰを有する。ＳＳＤの第１ＥＰポートは、一般的なホストストレージアクセスのためにホストとの通信に使用され得る。ＳＳＤの第２ＥＰは処理のためにＦＰＧＡに必要な全てのデータを伝送するために使用され得る。
【００４３】
言及したように、ストレージデバイスが２つの（又は潜在的にもっと多くの）のポートを支援できる本発明の実施例で、ＦＰＧＡは、ストレージデバイス上の２つのＥＰと通信するために２つのＲＰを支援できる。このような本発明の実施例で、ＦＰＧＡ上の一つのＲＰ（及びそれに対応するストレージデバイス上のＥＰ）は、ストレージデバイスとホストとの間の通信を管理するために使用でき、ＦＰＧＡ上の他のＲＰ（及びそれに対応するストレージデバイス上のＥＰ）は、ストレージデバイスとＦＰＧＡの間の通信を管理するために使用され得る（加速コマンド又はデータのための）。本発明の斯かる実施例で、ＦＰＧＡ上のＲＰは、２つのアドレスマップ（各ＲＰごとに１つずつ）を支援できる。従って、ホストとストレージデバイスの間の通信を支援するＲＰのためのアドレスマップは、ＮＶＭｅコマンドのために割り当てられた空間を含み得、他のアドレスマップ（加速コマンド／データの通信を管理するＲＰのための）は、全的に通信のために作られ得る。本発明の斯かる実施例で、ホストメモリアドレスマップは、ホストが加速コマンドをストレージデバイスに通信するように意図された任意のアドレス空間を省略できるが、これは、斯かる全てのコマンドがホストからＦＰＧＡに伝達され得るからである（アドレス空間を介してＦＰＧＡの要請が、斯かる通信のためのホストのメモリアドレスマップ内に割り当てられる）。その後に、ＦＰＧＡはコマンドを処理し、ＦＰＧＡとストレージデバイスの間の通信専用に指定された第２のＲＰのメモリアドレスマップを使用して、必要に応じて、コマンド／データをストレージデバイスに伝達できる。
【００４４】
ＥＰ／ＲＰが、ＦＰＧＡでＵＳＰ／ＤＳＰの代わりに使用される場合、ＥＰ／ＲＰはＰＣＩｅ構成空間を支援でき、ＦＰＧＡは、その物理機能をホストに対して直接露出できる（このような機能をストレージデバイスに残すのではなく）。ＦＰＧＡによって露出された一つの物理機能は、ホストからストレージデバイスへの通信を指示するために使用され得る。他の物理機能は、ホストとＦＰＧＡの間の通信に使用され得る。本発明の斯かる実施例で、ストレージデバイスがこのような要求を発生するのではなく、ＦＰＧＡは、ホストから割り当てられるアドレス空間を要求できる。
【００４５】
ＥＰ／ＲＰは、それら自体のメモリマップを支援することもできる。従って、ＦＰＧＡは、ホストのメモリアドレスマップを使用してホストと通信でき、ＦＰＧＡはストレージデバイスと通信するために使用される、それ自体のメモリアドレスマップを支援できる。本発明の斯かる実施例で、ＦＰＧＡは、ホストからストレージデバイスへの通信を支援するために、ホストのメモリアドレスマップに割り当てられた空間を要請でき（ＦＰＧＡを介して発生する、そのような通信により）、追加の空間は、ホストからＦＰＧＡへの通信をサポートするために、ホストのメモリアドレスマップに割り当てられる。ＦＰＧＡのメモリアドレスマップは、ホストからストレージデバイスへコマンドを通信してＦＰＧＡとストレージデバイスの間で加速コマンド／データを通信するためのそれ自体の空間の割り当てを含み得る。ＦＰＧＡは、ホストとストレージデバイスの間の通信のために使用されるアドレス空間を、ＦＰＧＡとストレージデバイス（同一サイズであるべき）との間の通信のために使用されるアドレス空間に変換できる。
【００４６】
ＦＰＧＡが、ＥＰ／ＲＰを含む場合、ホストは、ＦＰＧＡを直接見る。これは、ＰＣＩｅ機能がＦＰＧＡによって露出される問題を提起する。ＦＰＧＡは、ストレージデバイスと同じＰＣＩｅ機能を露出しなければならない。従って、ＦＰＧＡには、ストレージデバイスのＳＳＤコントローラＥＰ  ＰＣＩｅ構成をマッチングするためにＦＰＧＡのＥＰ  ＰＣＩｅ構成を設定するＰＣＩｅ構成モニタを含み得る。なお、ホストがＦＰＧＡのＥＰのＰＣＩｅ構成を変更する場合、ストレージデバイスのＥＰのＰＣＩｅ構成は、同様に修正され得る。
【００４７】
本発明の実施例は、全体の機能が維持されるのならば、ＦＰＧＡ内で記述されたような構成／機能を多数の個別エレメントに分割することを支援できる。ＦＰＧＡ構成は、ハードウェア、ソフトウェア／ファームウェア又はこの２つの組み合わせを使用して具現され得る。
【００４８】
図１には、機械１０５が示されている。機械１０５は、プロセッサ１１０を含み得る。プロセッサ１１０は、任意の多様なプロセッサであり得る。つまり、例として、Ｉｎｔｅｌ  Ｘｅｏｎ、Ｃｅｌｅｒｏｎ、Ｉｔａｎｉｕｍ、Ａｔｏｍプロセッサ、ＡＭＤ  Ｏｐｔｅｒｏｎプロセッサ、又はＡＲＭプロセッサなどである。図１は、機械１０５内の単一のプロセッサ１１０を示しているが、機械１０５は、各々、単一のコア又はマルチコアプロセッサであり得る任意の数のプロセッサを含み得、任意の所望の組み合わせで混合され得る。プロセッサ１１０は、ストレージデバイス１２０へのアクセスを支援できるデバイスドライバ１１５を実行でき、相異なるデバイスドライバは、デバイス１０５の他の構成に対するアクセスを支援できる。この明細書の全般にかけて、ストレージデバイス１２０は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）のストレージデバイス１２０のように説明され得るが、ストレージデバイス１２０は、以下の本発明の実施例で説明された、加速化されたコマンドを支援する任意の他のタイプのストレージデバイスであり得る。プロセッサ１１０はまた、加速コマンドを含む任意のアプリケーションであり得るアプリケーション１２５及びストレージデバイス１２０上に格納されたデータに対して遂行される加速コマンドを伝送するために使用できるアプリケーションサービスマネージャ（ＡＳＭ）１３０を実行できる。
【００４９】
機械１０５はまた、メインメモリ１４０へのアクセスを管理するために使用できるメモリコントローラ１３５を含み得る。メモリ１４０は、フラッシュメモリ、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、永久ランダムアクセスメモリ、強誘電体ランダムアクセスメモリ（ＦＲＡＭ（登録商標））、又は磁気ランダムアクセスメモリ（ＭＲＡＭ）などのような不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）のような任意の他のタイプのメモリであり得る。
【００５０】
機械１０５はまた、加速モジュール１４５を含み得る。加速モジュール１４５は、ストレージデバイス１２０に格納されたデータに対して、プロセッサ１１０によって要請された加速コマンドを遂行することにより、プロセッサ１１０を補助できる。加速モジュール１４５は、ファームウェア単独又はハードウェアとファームウェアを組み合わせて使用して具現され得る。この明細書の全般にかけて、加速モジュール１４５は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）１４５として説明されるであろうが、加速モジュール１４５は、以下の本発明の実施例で説明されているように加速コマンドを支援する任意の他のタイプの加速モジュールであり得る。例として、加速モジュール１４５は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＳＳＤのＩＳＣ（Ｉｎ−Ｓｔｏｒａｇｅ  Ｃｏｍｐｕｔｉｎｇ）能力又は他の態様で具現されるか、又は、使用できる。
【００５１】
なお、図１は、機械１０５をサーバ（スタンドアロン又はラックサーバであり得る）として図示してあるが、本発明の実施例は、任意の所望のタイプの機械１０５を制限なしに含み得る。例として、機械１０５は、デスクトップ、ラップトップコンピュータ、又は本発明の実施例から利益を獲得できる任意の他の機械に代替され得る。機械１０５は、また、特殊化されたポータブルコンピューティングマシンに、タブレットコンピュータに、スマートポ及び他のコンピューティングマシン（ｍａｃｈｉｎｅ、機械）を含み得る。なお、図１は、ストレージデバイス１２０、アプリケーション１２５、及びＡＳＭ１３０を含む機械１０５を図示するが、本発明の実施例は、別のマシンで、それらの構成を有できる。例として、ストレージデバイス１２０は、１つ以上のネットワーク（有線、無線、グローバルなど）を経由するネットワーク連結を介して機械１０５（及びアプリケーション１２５及びＡＳＭ１３０）に連結されたサーバにインストールされ得る。
【００５２】
図１に示された構成の特定の方式にかかわらず、「ホスト」、「ホストマシン」又は「ホストプロセッサ」という用語は、プロセッサ１１０を記述するために使用され得る。これにより、プロセッサ１１０を本発明に係る他の構成部品と区別できる。
【００５３】
図１の構成部品の間には、本発明の実施例に関心のある３つのトラフィックストリームが存在する（本発明の実施例とは関係のない他のトラフィックストリームも当然有り得る）。
【００５４】
１）ホストからストレージデバイス１２０へ。
ホスト（プロセッサ１１０）がストレージデバイス１２０に通信を送り得る。本発明の実施例で、このような全てのトラフィックは、加速モジュール１４５を通過し、加速モジュール１４５によってストレージデバイス１２０に到達することから遮断されてはならない。斯かるトラフィックの実施例は、ストレージデバイス１２０からデータを読み出すための、及び／又はストレージデバイス１２０にデータを記録するためのコマンドを含み得る。つまり、ストレージデバイス１２０によって提供される他のコマンドもこのようなトラフィックに含まれ得る。
【００５５】
２）ＡＳＭ１３０から加速モジュール１４５へ。
ＡＳＭ１３０は、特定の加速コマンドが遂行されるように要請できる。何れにせよ、本発明の特定の実施例にかかわらず、加速モジュール１４５は、ＡＳＭ１３０から加速コマンドを受信しなければならない。
【００５６】
３）加速モジュール１４５からストレージデバイス１３０へ。
加速コマンドを遂行するために、加速モジュール１４５は、ストレージデバイス１３０からデータをフェッチ又は受信する必要が有り得る。
【００５７】
図２は図１の機械の追加的な細部事項を示している。図２で、典型的に、機械１０５は、機械１０５の構成要素の動作を調整するために使用され得るメモリコントローラ１３５及びクロック２０５を包含できる１つ以上のプロセッサ１１０を含む。なお、プロセッサ１１０は、例として、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）又は媒体を保存する他の状態を包含できるメモリ１４０に連結され得る。プロセッサ１１０はまた、ストレージデバイス１２０に、及び、例えばイーサネット（登録商標）コネクタ又は無線コネクタであり得るネットワークコネクタ２１０に連結され得る。プロセッサ１１０はまた、バス２１５に連結され得、これには、他の構成要素の中で、ユーザインタフェース２２０及び入力／出力エンジン２２５を使用して管理され得る入力／出力インタフェースポートが取り付けられ得る。
【００５８】
第１実施例
【００５９】
図３は、本発明の第１実施例に基づいて、図１のＳＳＤ１２０及び図２のＦＰＧＡ１４５の構成要素を示している。図３において、プロセッサ１１０、ＦＰＧＡ１４５、及びＳＳＤ１２０は、互いに通信することが示されている。図３において、プロセッサ１１０、ＦＰＧＡ１４５、及びＳＳＤ１２０は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）バスを介して通信できる。ＰＣＩｅバスは、任意の数のレーンを使用できる。つまり、典型的な例は、ｘ４及びｘ８であるが、本発明の実施例は、任意の他の所望の数のレーンを使用できる。この通信は、不揮発性メモリエクスプレス（ＮＶＭｅ）プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット（ＴＬＰ）であり得るＰＣＩｅトランザクションを包含できるが、本発明の実施例は、他のエンコーディングを使用する通信又は他のプロトコルのコマンドを包含するように拡張され得る。
【００６０】
ＳＳＤ１２０は、エンドポイント（ＥＰ）３０５、ホストインタフェース層（ＨＩＬ）３１０、ＳＳＤ加速プラットフォーム管理者（ＡＰＭ−Ｓ）３１５、及びフラッシュ変換階層（ＦＴＬ）３２０からなるＳＳＤコントローラ３７０、並びにフラッシュメディア３２５を含み得る。エンドポイント３０５は、ＳＳＤ１２０がＰＣＩｅ通信を受信して伝送する論理的又は物理的な連結ポイントであり得る。ＳＳＤ１２０がエンドポイント３０５でプロセッサ１１０からＰＣＩｅトランザクションを受信する場合（ＦＰＧＡ１４５を介して）、ＳＳＤ１２０は、ＰＣＩｅトランザクションをＨＩＬ３１０に伝達できる。その後に、ＨＩＬ３１０は、ＰＣＩｅトランザクションが加速コマンドを含むかどうかを判断できる。
ＰＣＩｅトランザクションが加速コマンドを含む場合、ＨＩＬは処理のためにＰＣＩｅトランザクション（又はＰＣＩｅトランザクションから圧縮解除（ｕｎｐａｃｋ、解凍）された加速コマンドそのもの）をＡＰＭ−Ｓ（３１５）に伝送できる。ＡＰＭ−Ｓ（３１５）は、ファームウェア単独又はハードウェアとファームウェアの組み合わせを使用して具現され得る。
そうでない場合、即ち、ＰＣＩｅトランザクションが加速コマンドを含まない場合、ＨＩＬ３１０は、ＦＴＬ３２０にＰＣＩｅトランザクション（又は圧縮解除されたＮＶＭｅコマンド）を伝達でき、ＦＴＬは、図１のアプリケーション１２５によって使用される論理ブロックアドレス（ＬＢＡ）を物理ブロックアドレス（ＰＢＡ）に変換し、フラッシュメディア３２５に格納されたデータにアクセスできる。
【００６１】
ＡＰＭ−Ｓ（３１５）が処理できる、基本的に２つのタイプの加速コマンドがある。加速コマンドの第１タイプは、プロセッサ１１０からの特定のコマンドであり得る。本発明の第１実施例で、ＦＰＧＡ１４５は、プロセッサ１１０に見えない可能性がある。つまり、プロセッサ１１０は、その通信を全てＳＳＤ１２０に伝送する。プロセッサ１１０が、アプリケーションデータに対して加速コマンドが遂行されることを所望する場合、プロセッサ１１０は、特定のコマンドをＳＳＤ１２０に伝達できる。
プロセッサ１１０は、ＳＳＤ１２０に、該特定のコマンド／加速コマンドをトンネリングするためにＮＶＭｅコマンドを使用できる。  ＨＩＬ３１０は、ＡＰＭ−Ｓ（３１５）に伝達され得る、この特定のコマンドをインタセプトできる。その後に、ＡＰＭ−Ｓ（３１５）は、該特定のコマンドに応答して加速コマンドを生成でき、該特定のコマンドは該加速コマンドを遂行するためにＦＰＧＡ１４５に返送され得る。この特定のコマンドは、例として、実行されるべき加速コマンドの特定のタイプ及び該加速コマンドが遂行されるべきデータをエンコーディングできる。
【００６２】
ＡＰＭ−Ｓ（３１５）が処理できる加速コマンドの第２のタイプは、データを包含し得る。例として、ＦＰＧＡ１４５は、フラッシュメディア３２５に直接アクセスしない場合があり、従って、加速コマンドが遂行されるデータを受信せずに加速コマンドを遂行できない。従って、ＡＰＭ−Ｓ（３１５）は、ＦＰＧＡ１４５から問題のデータを要請する加速コマンドを受信できる。その後、ＡＰＭ−Ｓ（３１５）は、ＦＰＧＡ１４５が加速コマンドを遂行できるようにするために、要求されたデータにアクセスし、それをＦＰＧＡ１４５に返し得る。
【００６３】
図３において、ＳＳＤ１２０は、ＳＳＤで使用するのに適したＦＴＬ３２０及びフラッシュメディア３２５を含むとして示されている。ＳＳＤ１２０は、代替ストレージデバイスに置き換えられると、これらの構成要素は、ストレージデバイスのタイプに適した代替の構成要素に置き換えられ得る。例として、ＳＳＤ１２０は、ハードディスクドライブに置き換えられると、フラッシュメディア３２５は、ハードディスクプラッタに置き換えられ得る。データアクセスを支援するために追加の構成要素がまた含まれ得る。つまり、ハードディスクドライブストレージデバイスの例を続けると、ストレージデバイスはまた、適切な読み取り／書き込みヘッドを含み得る。
【００６４】
ＦＰＧＡ１４５がプロセッサ１１０とＳＳＤ１２０との間の通信をインタセプトする前に、ＳＳＤ１２０は、プロセッサ１１０からホストメモリアドレスのブロックを要求できる。ホストメモリシステムアドレスのブロックに対する、このような要求は、ＰＣＩｅトランザクションを使用するとき、一般的であり、スタートアップのとき又は後で遂行され得る。それに応答して、プロセッサ１１０（又は図１の機械１０５の基本的な入力／出力システム（ＢＩＯＳ））は、ＳＳＤ１２０による使用のために、ホストメモリシステムアドレスのブロックを割り当て得る。その後、ホストマシンは、このホストメモリシステムアドレスのブロックが、図１の機械１０５で他のデバイスによって利用できないことを知るようになる。
【００６５】
図４は、本発明の第１実施例に基づいて、図１のシステムで、コマンドを加速するためのメモリ使用を示している。図４で、ＳＳＤ１２０は、ホストメモリシステムアドレスのブロックを要請できる。プロセッサ１１０とＳＳＤ１２０との間のＮＶＭｅ通信を支援するために必要なメモリの量は比較的少ない−例えば、６４ＫＢ−が、ＳＳＤ１２０は、はるかに大きいブロック−例えば、１０ＭＢ以上−を要求できる。それに応答して、プロセッサ１１０は、ホストメモリシステムのアドレスブロック４０５を返し得る。ブロック４０５の一端は、ＢＡＲ（Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）に格納され得、ＳＳＤ１２０がＢＡＲ（そして要請されたブロックのサイズのＳＳＤ１２０の情報（ｋｎｏｗｌｅｄｇｅ）とともに）に基づいて、ブロック４０５を判断できるようになる。
【００６６】
一旦ＳＳＤ１２０が、どのようなアドレスがブロック４０５に在るかを知れば、ＳＳＤ１２０は、ブロック４０５をそれ自身の使用のために、相異なる領域に分け得る。ブロック４０５の１つのサブセット４１０は、ＮＶＭｅ通信のために使用され得る。他のサブセット４１５は、使用されないまま残され得る。ダウンストリームＦＡＲ（Ｆｉｌｔｅｒ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ、フィルタアドレスレンジ）４２０（任意のフィルタリングがプロセッサ１１０からのダウンストリームに対して行われるので、「ダウンストリーム」を付加する）と称される第３サブセットは、ＳＳＤ１２０とＦＰＧＡ１４５との間の通信のために専用され得る。ダウンストリームＦＡＲ４２０は、ＳＳＤ１２０及びＦＰＧＡ１４５の両方で使用できることに注目する。何れか１つは問題のＰＣＩｅトランザクションが加速コマンドを含むことを示すために、ダウンストリームＦＡＲ４２０内のアドレスを使用できる。
【００６７】
図３に戻って、ＳＳＤ１２０がダウンストリームＦＡＲ４２０内のアドレスを使用して通信を伝送すると、ＦＰＧＡ１４５は、ダウンストリームポート３３５で通信を受信し、通信をインタセプトし、その通信をプロセッサ１１０に伝達せずに、むしろ局部的に処理できる。
ＳＳＤ１２０からダウンストリームポート３３５でＦＰＧＡ１４５によって受信された、ダウンストリームＦＡＲ４２０を含んでいない任意の通信は、アップストリームポート３３０を介してＦＰＧＡ１４５によりプロセッサ１１０に伝達され得る（ＦＰＧＡ１４５がアップストリームポート３３０で、プロセッサ１１０から受信する任意の通信は、ダウンストリームポート３３５を介して自動的にＳＳＤ１２０に伝達され得る）。
【００６８】
ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との間の通信をインタセプトできるように、プロセッサ１１０とＳＳＤ１２０の間に位置できる。このように通信をインタセプトすることにより、ＦＰＧＡ１４５は、ＳＳＤ１２０によって要請された加速コマンドを遂行できる。
【００６９】
加速コマンドを遂行するために、ＦＰＧＡ１４５は、アップストリームポート３３０、ダウンストリームポート３３５、ＦＰＧＡ加速プラットフォームマネージャ（ＡＰＭ−Ｆ）３４０、スケジューラ３４５、及び加速エンジン（３５０−１及び３５０−２）を含み得る。アップストリームポート３３０は、プロセッサ１１０と通信するために使用され得る。ダウンストリームポート３３５は、ＳＳＤ１２０と通信するために使用できる。ＡＰＭ−Ｆ（３４０）は、ＦＰＧＡ１４５がインタセプトした任意の加速コマンドを受信することに対する責任がある。
斯かる加速コマンドは、メッセージのメールボックス３５５を使用してダウンストリームポート３３５からメッセージとして受信され得るが、本発明の実施例は、ＡＰＭ−Ｆが加速コマンドを受信するための他のメカニズムに拡張され得る。一度加速コマンドが受信されると、ＡＰＭ−Ｆ（３４０）は、加速コマンドを処理できる。例として、ＦＰＧＡ１４５が加速コマンドを遂行できる、十分な情報を有する場合、ＡＰＭ−Ｆ（３４０）は、加速コマンドを加速エンジン（３５０−１及び３５０−２）のような任意の利用可能な加速エンジンでスケジューリングできるスケジューラ（「ランタイムスケジューラ」とも称され得る）３４５に加速コマンドを手渡し（ｐａｓｓ）得る。
一方、図３は、２つの加速エンジン（３５０−１、３５０−２）を図示するが、本発明の実施例は、任意の所望の数の加速エンジンを含み得る。つまり、図３に示された２つは単に例示的な目的のためである。代案的に、ＦＰＧＡ１４５が加速コマンドを遂行するための追加情報を必要とする場合、例えば、加速コマンドが遂行されるべきデータをＦＰＧＡ１４５が必要とする場合、ＡＰＭ−Ｆ（３４０）は、ＰＣＩｅトランザクションを、必要なデータを要請するＳＳＤ１２０に送るなどの他の動作をとり得る。
【００７０】
特定のＰＣＩｅトランザクションが、加速コマンドを含むか否かを判断するために、ＦＰＧＡ１４５は、ダウンストリームポート３３５に関連されたダウンストリームフィルタ３６０を含み得る。ダウンストリームフィルタ３６０は、加速コマンドを包含できる、ＳＳＤ１２０から発行されたＰＣＩｅトランザクションを識別できる。これは任意の所望の方式で遂行され得る。本発明の幾つかの実施例で、ＳＳＤ１２０は、図４のダウンストリームＦＡＲ４２０を用いてダウンストリームフィルタ３６０をプログラミングできる。
その後、ダウンストリームフィルタ３６０が、図４のダウンストリームＦＡＲ４２０内のアドレスを使用するＰＣＩｅトランザクションを識別するとき、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションを、加速コマンドを含むものと識別し、ＰＣＩｅトランザクションをインタセプトできる。ＳＳＤ１２０は、任意の所望の方式でダウンストリームフィルタ３６０をプログラミングできる。例として、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をプログラミングするために、内部の集積回路バス（Ｉ２Ｃバス）、又はシステム管理バス（ＳＭバス）のようなサイドバンドバス３６５を使用できる。また、ＳＳＤ１２０は、ダウンストリームフィルタ３６０をプログラミングするために、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用できる。ＳＳＤ１２０はまた、ダウンストリームフィルタ３６０をプログラミングするために他のメカニズムを使用できる。
【００７１】
図３において、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との双方との通信を可能にする部品を含むとして示されている。つまり、具体的には、アップストリームポート３３０、ダウンストリームポート３３５及びダウンストリームフィルタ３６０である。ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との双方と通信する幾つかのメカニズムを必要とするが、本発明の実施例は、通信要素をＦＰＧＡ１４５から分離できる。
例として、ダウンストリームポート３３５とダウンストリームフィルタ３６０は、（ここで後者は、ＳＳＤ１２０から受信された何れのＰＣＩｅトランザクションが加速コマンドを含むことを識別し、従ってプロセッサ１２０に伝達する代わりにＡＰＭ−Ｆ（３４０）にリダイレクトする責任がある）、ＦＰＧＡ１４５とＳＳＤ１２０との間のブリッジ構成要素（図３に図示せず）に配置され得る。これらのブリッジの構成要素は、ＦＰＧＡ１４５及びＳＳＤ１２０と通信するために必要なので、この場合、ＦＰＧＡ１４５は相変わらずダウンストリームポート３３５（又はブリッジ構成要素との通信を可能にする代案的な構造（ｓｔｒｕｃｔｕｒｅ））を含むが、ダウンストリームフィルタ３６０は、ＦＰＧＡ１４５から除去され得る。
【００７２】
前述した本発明の第１実施例は、プロセッサ／ＦＰＧＡ／ＳＳＤの具現の可能な組み合わせを示す。以下で、本発明の他の実施例として説明される他の具現もまた可能である。特定の構成の動作（例として、ＡＰＭ−Ｆ（３４０）、スケジューラ３４５及び加速エンジン（３５０−１及び３５０−２）の動作）の間に差異がない場合、それらの動作の繰り返しの説明は、後続の本発明の実施例では省略される。
【００７３】
第２実施例
【００７４】
図５は、本発明の第２実施例に基づいて、図１のＦＰＧＡ１４５及び図１のＳＳＤ１２０の構成要素を示す。本発明の第２実施例は、アップストリームポート（ＵＳＰ）３３０が、フィルタ、即ち、アップストリームフィルタ５０５を包含することを除いては、本発明の第１実施例と類似する。アップストリームフィルタ５０５は、ダウンストリームフィルタ３６０と類似の方式で、プロセッサ１１０（アップストリームポート３３０を介して受信された）から来るＰＣＩｅトランザクションをフィルタリングできる。
例として、ＳＳＤ１２０は、図４のダウンストリームＦＡＲ３６５と同様に、アップストリームＦＡＲを定義でき、サイドバンドバス３６５、ＰＣＩｅ、ＶＤＭ、又は任意の他のメカニズムを介してアップストリームＦＡＲを用いてアップストリームフィルタ５０５をプログラミングする。その後に、ＦＰＧＡ１４５がアップストリームポート３３０で、プロセッサ１１０からＰＣＩｅトランザクションを受信するとき、アップストリームフィルタ５０５は、アップストリームフィルタ５０５がアップストリームＦＡＲ内のアドレスを包含するかを見るためにＰＣＩｅトランザクションを検査できる。もしそうならば、該ＰＣＩｅトランザクションは加速コマンドであり、ＦＰＧＡ１４５は、該ＰＣＩｅトランザクションをＳＳＤ１２０に伝達せず、むしろ、プロセッサのために該ＰＣＩｅトランザクションをＡＰＭ−Ｆ（３４０）にルーティングできる。
【００７５】
本発明の第２実施例に基づいて、図６は、図１のシステムでコマンドを加速するためのメモリ使用を示している。本発明の第１実施例でのように、ＳＳＤ１２０は、ＳＳＤ１２０がＮＶＭｅコマンドを支援するために必要なアドレスの範囲よりも、大きいホストシステムメモリアドレスのブロックを要請でき、そのＢＡＲに応答してブロック４０５を受信できる。その後に、ＳＳＤ１２０は、ＮＶＭｅ通信のためにブロック４０５の１つのサブセット４１０を維持でき、他のサブセット４１５は、未使用のまま残され得る。第３サブセットは、ダウンストリームＦＡＲ（４２０）として別に設定され得、第４サブセットは、アップストリームＦＡＲ（６０５）として別に設定され得る。
【００７６】
図５に戻ると、本発明の第２実施例で、プロセッサ１１０は、ＦＰＧＡ１４５が発見可能なデバイスではないので、相変わらずＦＰＧＡ１４５を直接「見（ｓｅｅ）」ない。しかし、ＳＳＤ１２０は、アップストリームＦＡＲ６０５のベースアドレスをＮＶＭｅ通信のためのサブセット４１０内の特定のレジスタにプログラミングすることにより、アップストリームＦＡＲ（６０５）をプロセッサ１１０に報らせ得る。ＮＶＭｅ通信のためのサブセット４１０から、この特定のレジスタを読み出す場合、プロセッサ１１０は、アップストリームＦＡＲ（６０５）を認識するようになり得る。その後に、プロセッサ１１０は、ＳＳＤ１２０のＡＰＭ−Ｓ（３１５）に特定のコマンドを伝送する代わりに、加速コマンドをＦＰＧＡ１４５に伝送できる（アップストリームポート３３０を介して）。
【００７７】
図３でのように図５において、ＦＰＧＡ（１４５）は、プロセッサ１１０とＳＳＤ１２０との通信を可能にする部品を含んでいるとして示されている。つまり、具体的には、アップストリームポート３３０、アップストリームフィルタ５０５、ダウンストリームポート３３５、及びダウンストリームフィルタ３６０を含んでいる。図３に示された本発明の実施例と同様に、ＰＣＩｅトランザクションのフィルタリングと関連された構成要素は、ＦＰＧＡ１４５から除去され得る。
従って、本発明の第２実施例で、アップストリームポート３３０及びアップストリームフィルタ３３５は、第１ブリッジ構成要素及びダウンストリームポート３３５に配置され得、ダウンストリームフィルタ３６０は、各々が図５の相異なる構成要素を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置され得る。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得、（その場合、ＦＰＧＡ１４５は、他のソース（ｓｏｕｒｃｅ）からの通信のために、それ自体のフィルタリングを処理する）、又は、ＰＣＩｅトランザクションのソースに関係なく、単一のブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用され得る。
【００７８】
第３実施例
【００７９】
図７は本発明の第３実施例に基づいて、図１のＦＰＧＡ１４５及び図１のＳＳＤ１２０の構成要素を示している。本発明の第３実施例で、ＳＳＤ１２０は、物理機能（ＰＦ）７０５及び仮想機能（ＶＦ）７１０を含む（本発明の第３実施例は、本発明の他の実施例がＰＦ及び／又はＶＦを含んでいないことを意味するのではなく、単に本発明の第３実施例と同じ方式で使用されないことを意味する）。ＰＦ７０５は、ＳＳＤ１２０によって提供される機能のような単一のリソースを示す。ＶＦ７１０は、ＰＦと関連されるが、「仮想化」された機能を示す。つまり、与えられたＰＦに対し１つ以上のＶＦが有り得る。
しかし、ＳＳＤ１２０の仮想機能を表現する代わりに、ＶＦ７１０は、ＦＰＧＡ１４５を「露出」できる。つまり、ＶＦ７１０は、ＦＰＧＡ１４５の機能を示し得る。（ＶＦ７１０は、相変わらずＦＰＧＡ１４５の一部ではなく、ＳＳＤ１２０の一部である。しかし、ＦＰＧＡ１４５を露出するための専用ＶＦ７１０を使用すれば、ＶＦ７１０と関連された任意のメモリアドレスは、他のデバイスと衝突しないであろう。）ＰＣＩｅデバイスが羅列されとき、ＰＦ及びＶＦがプロセッサ１１０によって発見され得るので、プロセッサ１１０は、ＶＦ７１０を介してＦＰＧＡ１４５を間接的に発見できるが、それ自身が直接発見することはできない。
【００８０】
本発明の第３実施例に基づいて、図８は、図１のシステムで加速コマンドに係るメモリの使用を示している。本発明の第１実施例でのように、ＳＳＤ１２０は、ＳＳＤ１２０がＮＶＭｅコマンドを支援する必要のあるアドレスの範囲よりも大きいホストシステムメモリアドレスのブロックを要請できる。しかし、ＳＳＤ１２０は、実際には更に、ホストシステムのメモリアドレスの２つの相異なるブロックを要請できる。つまり、ＰＦ７０５に対するブロック８０５及びＶＦ７１０に対するブロック８１０である。
ダウンストリームＦＡＲ４２０は、ＰＦ７０５に対するブロック８０５のサブセットとして選択され得る。よって、アップストリームＦＡＲ６０５は、ＶＦ７１０に対するブロック８１０の全体であり得る。なお、アップストリームＦＡＲ６０５は、単にブロック８１０のサブセットとして選択され得る。しかし、ブロック８１０は、ＶＦ７１０による専用となり、ＶＦ７１０はＦＰＧＡ１４５を効果的に露出する以外の他の目的を有し得ないので、アップストリームＦＡＲ６０５の一部として使用されていないブロック８１０の任意のメモリアドレスは、無駄になり得る。ＳＳＤ１２０が、各ブロックに対し割り当てられたアドレスの範囲を知り得るようにするため、ブロック（８０５及び８１０）の各々は、別個のＢＡＲを有する。
【００８１】
図７に戻ると、本発明の第２実施例と同様に、アップストリームポート３３０は、またフィルタを含む。つまり、ＶＦフィルタ７１５である。ＶＦフィルタ７１５は、ダウンストリームフィルタ３６０と類似の方式で、プロセッサ１１０から来る（アップストリームポート３３０を介して受信された）ＰＣＩｅトランザクションをフィルタリングできる。例として、ＳＳＤ１２０は、サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ、又は任意の他のメカニズムを介してアップストリームＦＡＲ６０５を用いてＶＦフィルタ７１５をプログラムできる。
その後に、ＦＰＧＡ１４５がアップストリームポート３３０で、プロセッサ１１０からＰＣＩｅトランザクションを受信するとき、ＶＦフィルタ７１５は、該ＰＣＩｅトランザクションがアップストリームＦＡＲ６０５内のアドレスを包含するか否かを知るためにＰＣＩｅトランザクションを検査できる。もしそうなら、該ＰＣＩｅトランザクションは加速コマンドであり、ＦＰＧＡ１４５は、該ＰＣＩｅトランザクションをＳＳＤ１２０に伝達せず、むしろ、プロセッサのために該ＰＣＩｅトランザクションをＡＰＭ−Ｆ（３４０）にルーティングできる。
【００８２】
代案として、ＳＳＤ１２０は、ＶＦ７１０の識別子でＶＦフィルタ７１５をプログラムできる。ＶＦフィルタ７１５は、アップストリームポート３３０で、プロセッサ１１０から受信されたＰＣＩｅトランザクションを検査して、それがＶＦ７１０の識別子を包含するか否かを知り得る。ＰＣＩｅトランザクションがＶＦ７１０の識別子を包含すると、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションをＳＳＤ１２０に伝達せず、むしろ、プロセッサのためにＰＣＩｅトランザクションをＡＰＭ−Ｆ（３４０）にルーティングできる。
【００８３】
図７において、本発明の前の実施例でのように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、アップストリームポート３３０、ＶＦフィルタ７１５、ダウンストリームポート３３５、及びダウンストリームフィルタ３６０である。前に示された、本発明の実施例でのように、ＰＣＩｅトランザクションのフィルタリングと関連された構成要素は、ＦＰＧＡ１４５から除去され得る。
従って、本発明の第３実施例で、アップストリームポート３３０及びＶＦフィルタ７１５は、第１ブリッジ構成要素に配置され得、ダウンストリームポート３３５及びダウンストリームフィルタ３６０は、各々が図７の相異なる構成要素を有するＰＣＩｅトランザクションのフィルタリングを処理する第２ブリッジ構成要素に配置できる。選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得、（その場合、ＦＰＧＡ１４５は、他のソースからの通信のために、それ自体のフィルタリングを処理する）、又は、ＰＣＩｅトランザクションのソースに関係なく、単一のブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタを処理するために使用され得る。
【００８４】
第４実施例
【００８５】
ＦＰＧＡ１４５を露出するためにＶＦ７１０を使用する問題の１つは、ＶＦの使用がプロセッサ１１０のホストオペレーティングシステム（以下、ＯＳと略する）からの支援を要求できるという点である。一部のＯＳは、ＶＦをサポートするが、全てのＯＳがＶＦを支援しているわけではなく、ＶＦの支援は、ＯＳに対しそれ自体独自の複雑さを伴う。本発明の第４の実施例は、ＶＦの使用に伴う、この困難に立ち向かう。
【００８６】
図９は、本発明の第４実施例に基づいて、図１のＦＰＧＡ１４５及び図１のＳＳＤ１２０の構成を示している。本発明の第３実施例とは対照的に、本発明の第４実施例では、ＳＳＤ１２０は、２つのＰＦ（７０５、９０５）を含む。（本発明の第３実施例の場合と同様に、本発明の第４実施例は、本発明の他の実施例がＰＦ及び／又はＶＦを包含していないことを意味しない。）ＰＦ７０５は、ＳＳＤ１２０によって提供される機能のような単一のリソースを示し続ける。一方、ＰＦ９０５は、ＦＰＧＡ１４５を露出する。つまり、ＰＣＩｅデバイスが列挙されるときにＰＦがプロセッサ１１０によって発見され得るので、プロセッサ１１０は、ＦＰＧＡ１４５自身を直接発見できないけれども、ＰＦ９０５を介してＦＰＧＡ１４５を間接的に発見できる。
【００８７】
本発明の第４実施例に基づいて、図１０は、図３のシステムでコマンドを加速するためのメモリ使用を示している。本発明の第３実施例の場合と同様に、ＳＳＤ１２０は、ホストシステムのメモリアドレスの２つの相異なるブロックを要求できる。つまり、ＰＦ７０５に対するブロック１００５及びＰＦ９０５に対するブロック１０１０である。ダウンストリームＦＡＲ４２０は、ＰＦ７０５に対するブロック１００５のサブセットとして選択され得る。そしてアップストリームＦＡＲ６０５は、ＰＦ９０５に対するブロック１０１０の全体であり得る。（つまり、アップストリームＦＡＲ６０５は、ブロック１０１０のサブセットとして選択され得る。しかし、ブロック１０１０は、ＰＦ９０５による専用となり、ＰＦ９０５は、ＦＰＧＡ１４５を効果的に露出すること以外の他の目的を有し得ないので、アップストリームＦＡＲ６０５の一部として使用されていないブロック１０１０の任意のメモリアドレスは、無駄になり得る。）ＳＳＤ１２０が、各ブロックに対し割り当てられたアドレスの範囲を知り得るようにするため、ブロック（１００５及び１０１０）の各々は、個々のＢＡＲを有する。
【００８８】
図９に戻ると、本発明の第３実施例と同様に、アップストリームポート３３０はまた、フィルタを含む。つまり、ＰＦフィルタ７１５である。
（ＰＦフィルタ７１５は、動作中の図７のＶＦフィルタ７１５と実質的に同一であり、名前の変更は、ＰＦフィルタ７１５がＶＦフィルタ７１５とは異なるように動作する故ではなく、むしろ、ＦＰＧＡ１４５を露出するために使用される機能のタイプと関連付けるためである。ＰＦフィルタ７１５は、ダウンストリームフィルタ３６０と類似の方式で、プロセッサ１１０（アップストリームポート３３０を介して受信された）から来るＰＣＩｅトランザクションをフィルタリングできる。例として、ＳＳＤ１２０は、サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ、又は任意の他のメカニズムを使用してアップストリームＦＡＲ６０５でＶＦフィルタ７１５をプログラムできる。その後に、ＦＰＧＡ１４５がアップストリームポート３３０で、プロセッサ１１０からＰＣＩｅトランザクションを受信するとき、ＰＦフィルタ７１５は、ＰＣＩｅトランザクションがアップストリームＦＡＲ６０５にアドレスを包含するかを知るためにＰＣＩｅトランザクションを検査できる。もしそうならば、該ＰＣＩｅトランザクションは加速コマンドであり、ＦＰＧＡ１４５は、該ＰＣＩｅトランザクションをＳＳＤ１２０に伝達せず、むしろ、プロセッサのために該ＰＣＩｅトランザクションをＡＰＭ−Ｆ（３４０）にルーティングできる。
【００８９】
代案として、ＳＳＤ１２０は、ＰＦ９０５の識別子でＰＦフィルタ７１５をプログラムできる。ＰＦフィルタ７１５は、アップストリームポート３３０で、プロセッサ１１０から受信されたＰＣＩｅトランザクションを検査して、それがＰＦ９０５の識別子を包含するかを知り得る。該ＰＣＩｅトランザクションがＰＦ９０５の識別子を包含すると、ＦＰＧＡ１４５は、該ＰＣＩｅトランザクションをＳＳＤ１２０に伝達せず、むしろ、プロセッサのために該ＰＣＩｅトランザクションをＡＰＭ−Ｆ（３４０）にルーティングできる。
【００９０】
図９において、本発明の前の実施例の場合と同様に、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、アップストリームポート３３０、ＰＦフィルタ７１５、ダウンストリームポート３３５、及びダウンストリームフィルタ３６０である。前に示された、本発明の実施例と同様に、ＰＣＩｅトランザクションのフィルタリングと関連される部品（構成要素）は、ＦＰＧＡ１４５から除去され得る。
従って、本発明の第４実施例で、アップストリームポート３３０及びＰＦフィルタ７１５は、第１ブリッジ構成要素に配置され得、一方、ダウンストリームポート３３５及びダウンストリームフィルタ３６０は、第２ブリッジ構成要素に配置され得、各々は、図９の相異なる構成要素を有するＰＣＩｅトランザクションのフィルタリングを処理する。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得（その場合、ＦＰＧＡ１４５は、他のソースからの通信のために、それ自体のフィルタリングを処理する）、又は、ＰＣＩｅトランザクションのソースに関係なく、単一のブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用され得る。
【００９１】
第５実施例
【００９２】
本発明の第４実施例は、本発明の第３実施例の場合と同様にＶＦを使用する困難に立ち向かった。しかし、本発明の第４実施例を使用するためには、ＳＳＤ１２０は、ＦＰＧＡ１４５により専用されているＰＦ９０５を提供する必要がある。全てのＳＳＤ（又は、より一般的には、ストレージデバイス）がＦＰＧＡ１４５により専用され得る利用可能なＰＦを有しない。本発明の第５実施例は、ＳＳＤ１２０が多重のＰＦを提供する必要がない解決策を提供する。
【００９３】
図１１は、本発明の第５実施例に基づいて、図１のＦＰＧＡ１４５及び図１のＳＳＤ１２０の構成要素を示している。図１１において、ＳＳＤ１２０は、ＰＦ及びＶＦを提供必要のない図３及び図５で示される構造（ｓｔｒｕｃｔｕｒｅ）に戻る。（再言すると、ＳＳＤ１２０がＰＦ及び／又はＶＦを提供してはならない（ｍａｙ＿ｎｏｔ）、と言っているのではなく、単に、ＳＳＤ１２０が追加のＰＦ及び／又はＶＦの提供を要求されていない（ｎｏｔ＿ｒｅｑｕｉｒｅｄ）、と言っているに過ぎない。）
【００９４】
本発明の第１乃至第４実施例と比較すると、本発明の第５実施例では、ＦＰＧＡ１４５は、多少異なる。図３、５、７、及び９の場合のアップストリームポート（ＵＳＰ）３３０及びダウンストリームポート（ＤＳＰ）３３５の代わりに、ＦＰＧＡ１４５は、エンドポイント（ＥＰ）１１０５及びルートポート（ＲＰ）１１１０（用語「ポート」は、「ルートポート」と交換可能に使用され得る）を含み得る。図３、５、７、及び９のアップストリームポート（ＵＳＰ）３３０及びダウンストリームポート（ＤＳＰ）３３５は、スイッチとみなされる、つまり、それらは実効的に通過デバイス（ｐａｓｓ−ｔｈｒｏｕｇｈ  ｄｅｖｉｃｅｓ）であるのに対して、エンドポイント（ＥＰ）１１０５及びルートポート（ＲＰ）１１１０は、ＰＣＩｅの列挙を介して発見され得る通信のための終端点（ｔｅｒｍｉｎａｔｉｏｎ  ｐｏｉｎｔｓ）である。
この事実は、エンドポイント（ＥＰ）１１０５及びルートポート（ＲＰ）１１１０が、図１２を参照して以下に説明されるように、それら自身のＰＣＩｅの構成空間を含むことを意味する。しかし、エンドポイント（ＥＰ）１１０５及びルートポート（ＲＰ）１１１０は、通信のための終端点なので、プロセッサ１１０及びＳＳＤ１２０は、通信を相互に向けるよりも、各々のエンドポイント（ＥＰ）１１０５及びルートポート（ＲＰ）１１１０にそれらの通信を指示する。
【００９５】
エンドポイント１１０５は、２つのＰＦ（１１１５及び１１２０）を含み得る（又は選択的に、１つのＰＦ及び１つのＶＦを含み得る。つまり、重要なのは、エンドポイント１１０５が互いに区別され得る、２つの機能を含むということである）。プロセッサ１１０がエンドポイント１１０５にＰＣＩｅトランザクションを伝送するとき、プロセッサ１１０は、どのＰＦがアドレスされるかを特定できる。
前記した本発明の第３及び第４実施例の場合と同様に、エンドポイント１１０５は、ＰＦを識別するＰＣＩｅトランザクションに含まれているタグによって、又はＰＣＩｅトランザクションと関連されたアドレスによって（再言すると、図１２を参照して下記に説明される）、どのＰＦがアドレスされるかを識別できる。ＰＦ１１１５を識別するＰＣＩｅトランザクションは、ＳＳＤ１２０を目的地とすると見なされ得、ルートポート１１１０を介してＦＰＧＡ１４５によってＳＳＤ１２０に伝送され得る。ＰＦ１１２０を識別するＰＣＩｅトランザクションは、加速コマンドを含むものと見なされ得、ＡＰＭ−Ｆ（３４０）にルーティングされ得る。
【００９６】
ルートポート１１１０は、ダウンストリームフィルタ３６０を含み得る。ダウンストリームフィルタ３６０は、図３、５、７、９、及び１１のダウンストリームフィルタ３６０と同様に動作する。つまり、唯一の重要な違いは、ダウンストリームフィルタが、ホストシステムメモリアドレスに基づいてフィルタリングするのではなく、下記にで図１２を参照して説明されているように、ＦＰＧＡメモリアドレスに基づいてフィルタリングする点である。ダウンストリームフィルタ３６０は、サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ、又は任意の他の所望のメカニズムを使用してＳＳＤ１２０によってダウンストリームＦＡＲ４１０を用いてプログラムされ得る。
【００９７】
ＦＰＧＡ１４５はまた、構成モニタ１１２５を含み得る。ＦＰＧＡ１４５は、ＳＳＤ１２０を代替するのではなく単に追加の機能を提供する故に、そしてＦＰＧＡ１４５がプロセッサ１１０とＳＳＤ１２０との間に挿入される故に、プロセッサ１１０がＳＳＤ１２０によって提供される機能を知り得るのは重要である。より具体的には、ＦＰＧＡ１４５は、ＳＳＤ１２０のＰＣＩｅ構成空間とマッチする性能を周知させなければならない。その目的を達成するために、構成モニタ１１２５は、ＳＳＤ１２０のＰＣＩｅ構成空間を複製し、それによりＳＳＤ１２０が提示するのと同じＰＣＩｅ構成をプロセッサ１１０に提供できる。
【００９８】
図１２は、本発明の第５実施形態に基づいて、図３のシステムでコマンドを加速するためのメモリ使用を示している。図１２において、ＳＳＤ１２０は、最早、プロセッサ１１０と直接通信していないので、ホストシステムのメモリアドレスのブロックを要求しない。代わりに、ＳＳＤ１２０は、ルートポート１１１０のための構成空間を含むＦＰＧＡメモリアドレスマップ１２１０からＦＰＧＡメモリアドレスのブロック１２０５を要請する。ＦＰＧＡメモリアドレスのブロック１２０５は、プロセッサ１１０とのＮＶＭｅ通信のためのサブセット４１０、及びダウンストリームＦＡＲ４２０を包含できる。
【００９９】
ＦＰＧＡ１４５が無い場合に予想されるように、プロセッサ１１０がＳＳＤ１２０と通信できるメカニズムを提供するため、ＦＰＧＡ１４５は、プロセッサ１１０からホストシステムのメモリアドレスを要請できる。
【０１００】
ＦＰＧＡ１４５のＳＳＤ１２０によって要請されたように、ブロック１２０５を並行するために、ＦＰＧＡ１４５は、ＰＦ１１１５のために、少なくともブロック１２０５と同じ大きさのブロック１２１５を求め得る（従って、ＳＳＤ１２０がプロセッサ１１０からブロック１２１５を要請したかのように見える）。ブロック１２１５でアドレスを使用するＰＣＩｅトランザクションが、ホストとＳＳＤ１２０との間の通信のためのものであるがＦＰＧＡ１４５を通過していることを反映するために、ブロック１２１５は、図１２で「ホスト−ＦＰＧＡ−ＳＳＤ」と表示される。
ＦＰＧＡ１４５は、プロセッサ１１０が、加速コマンドについてＡＰＭ−Ｆ（３４０）と通信するためのメカニズムを提供しつつ、ＰＦ１１２０のためのブロック１２２０を要請できる。ブロック（１２１５及び１２２０）は、各々２つの分離されたＢＡＲにより識別され得る。本発明の他の実施例で、ＦＰＧＡ１４５とＳＳＤ１２０との間の通信を容易にするために、ダウンストリームＦＡＲ４２０としてブロック１２０５の一部分を使用可能である。
【０１０１】
本発明の前述の実施例の場合と同様に、図１１において、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、エンドポイント１１０５、ＰＦ（１１１５及び１１２０）、ルートポート１１１０及びダウンストリームフィルタ３６０である。前に示された本発明の実施例と同様に、ＰＣＩｅトランザクションのフィルタリングと関連された構成要素は、ＦＰＧＡ１４５から除去され得る。
従って、本発明の第５実施例で、エンドポイント１１０５及びＰＦ（１１１５と１１２０）は、第１ブリッジ構成要素に配置され得、一方、ルートポート１１１０及びダウンストリームフィルタ３６０は、第２ブリッジ構成要素に配置され得、各々は、図１１の相異なる構成要素を有するＰＣＩｅトランザクションのフィルタリングを処理する。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得、（その場合、ＦＰＧＡ１４５は、他のソース（ｓｏｕｒｃｅ）からの通信のために、それ自体のフィルタリングを処理する）、又は、ＰＣＩｅトランザクションのソースに関係なく、単一のブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用され得る。
【０１０２】
第６実施例
【０１０３】
本発明の前述の第５実施例は、従来のＰＣＩｅトランザクション（プロセッサ１１０とＳＳＤ１２０との間の）から加速コマンド（ＳＳＤ１２０とＦＰＧＡ１４５との間の）を分離するために、依然としてダウンストリームフィルタ３６０に依存していた。ダウンストリームフィルタ３６０は、本発明の第６実施例におけるようにＳＳＤ１２０が第２エンドポイントを含む場合に除去され得る。
【０１０４】
図１３は、本発明の第６実施形態に基づいて、図１のＦＰＧＡ１４５及び図１のＳＳＤ１２０の構成を示している。図１３で、ＦＰＧＡ１４５は、図１１の実施例で示された１つのルートポート１１１０ではなく、２つのルートポート（１１１０及び１３０５）を含む。ルートポート１１１０は、プロセッサ１１０から発生する従来のＰＣＩｅトランザクションに使用され得る。ルートポート１３０５は、ＳＳＤ１２０とＦＰＧＡ１４５との間で交換される加速コマンド及びデータのために使用され得る。
【０１０５】
加速コマンドは、相異なるルートポート（１１１０及び１３０５）を使用しているプロセッサ１１０から発生する従来のＰＣＩｅトランザクションから自然に分離されるので、図３、５、７、９、及び１１に存在したダウンストリームフィルタ３６０が必要ではない。この事実は、丁度、ＳＳＤ１２０が図５、７及び９のアップストリームフィルタ（５０５及び７１５）をプログラミングする負担を免除される（ｒｅｌｉｅｖｅｄ）ように、ＳＳＤ１２０がＦＰＧＡ３６０内のダウンストリームフィルタ３６０をプログラミングする負担を免除される、ことを意味する。
（何故なら、図１１及び１３におけるＦＰＧＡ１４５は、関連されたＰＦに基づき、従来のＰＣＩｅトランザクションと加速コマンドとを峻別できるからである）。この利点に対するオフセットは、ＳＳＤ１２０が、各々ＦＰＧＡ１４５のルートポート（１１１０及び１３０５）と通信するために２つのエンドポイント（３０５及び１３１０）を要することである。
【０１０６】
ＳＳＤ１２０は、本発明の第６実施例で、２つのエンドポイント（３０５及び１３１０）を含んでいるので、エンドポイント（３０５及び１３１０）の各々は、ＦＰＧＡ１４５から、それ自身のメモリアドレスブロックを要請できる。さらに、ルートポート（１１１０及び１３０５）の各々は、それ自身の構成空間を含んでいるので、ＳＳＤ１２０のエンドポイント（３０５及び１３１０）は、相異なる構成空間からメモリアドレスのブロックを要請できる。図１４は、このようなシナリオを示している。
【０１０７】
図１４は、図１のシステムで、コマンドを加速するためのメモリ使用を示している。図１４でＳＳＤ１２０のエンドポイント３０５は、ルートポート１１１０のための構成空間を含むＦＰＧＡメモリアドレスマップ１（１２１０）からブロック１４０５を要請できる。しかし、従来のＰＣＩｅトランザクション（プロセッサ１１０とＳＳＤ１２０との間）と加速コマンド（ＦＰＧＡ１４５とＳＳＤ１２０との間）は、ＦＰＧＡ上の相異なるルートポート及びＳＳＤ１２０上の相異なるエンドポイントの使用により自然に分離されるが、ＳＳＤ１２０は、ダウンストリームＦＡＲを含むのに十分な大きさのブロック１４０５を要請する必要がない。従って、ブロック１４０５は、ＦＰＧＡ１４５が無い場合の大きさがあれば十分である。つまり、プロセッサ１１０とＳＳＤ１２０との間のＮＶＭｅ通信を支援するのに十分な大きさがあればよい。ブロック１４０５は、ＢＡＲによって識別され得る。
【０１０８】
ＳＳＤ１２０のエンドポイント１３１０は、ＦＰＧＡメモリアドレスマップ２（１４１０）から、それ自身のメモリアドレスブロックを要請できる。しかし、ルートポート１３０５及びエンドポイント１３１０は、本発明の第６実施例で加速コマンドを交換するために使用されるので、アドレスマップ１４１０の全体が、斯かるＰＣＩｅトランザクションのために使用され得る。つまり、エンドポイント１３１０がＦＰＧＡメモリアドレスマップ２（１４１０）のただの小さいブロックを要請する必要はない。
【０１０９】
本発明の第５実施例でのように、ＰＦ１１１５は、プロセッサ１１０とＳＳＤ１２０との間で交換されるＰＣＩｅトランザクションを管理するために、ホストシステムメモリアドレスマップ１４０上のメモリアドレスブロック１２１５を要請できる。よって、メモリアドレスブロック１２１５は、少なくともブロック１４０５程大きいはずである。同様に、ＰＦ１１２０は、プロセッサ１１０とＦＰＧＡ１４５との間で交換される加速コマンドを管理するために、ホストシステムメモリアドレスマップ１４０上のメモリアドレスブロック１２２０を要請できる。メモリアドレスブロック（１２１５及び１２２０）は、各々ＢＡＲによって識別され得る。
【０１１０】
本発明の前述の実施例と同様に、図１３で、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、エンドポイント１１０５、  ＰＦ（１１１５及び１１２０）、ルートポート（１１１０、１３０５）である。前に示された本発明の実施例と同様に、ＰＣＩｅトランザクションのフィルタリングと関連された構成は、ＦＰＧＡ１４５から除去され得る。
従って、本発明の第６実施例で、エンドポイント１１０５及びＰＦ（１１１５と１１２０）は第１ブリッジ構成要素に配置され得、一方、ルートポート（１１１０と１３０５）は第２ブリッジ構成要素に配置され得、各々は、図１３の相異なる構成要素を有するＰＣＩｅトランザクションのフィルタリングを処理する。
選択的に、このようなブリッジ構成要素の中で単に一つだけが使用され得、（その場合、ＦＰＧＡ１４５は、他のソース（ｓｏｕｒｃｅ）からの通信のために、それ自体のフィルタリングを処理する）、又は、ＰＣＩｅトランザクションのソースに関係なく、単一のブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用され得る。
【０１１１】
第７実施例
【０１１２】
本発明の上述の第１〜第６実施例では、ＦＰＧＡ１４５が、単一のアップストリームポート３３０（図５、７及び９）又は単一のエンドポイント１１０５（図１１及び１３）を使用するとして示された。しかし、ＦＰＧＡ１４５が、本発明の第６実施例におけるＳＳＤ１２０のように、多重のエンドポイントを包含していない理由はない。本発明の第７及び第８実施例は、ＦＰＧＡ１４５が多重のエンドポイントを使用して、どのように動作できるかを示している。
【０１１３】
図１５は、本発明の第７実施例に基づいて、図１のＦＰＧＡ１４５と、図１のＳＳＤ１２０の構成を示している。本発明の第７実施例は、ＦＰＧＡ１４５が２つのエンドポイント（１１０５及び１５０５）を含むことを除いては、本発明の第６実施例と類似する。
【０１１４】
ＳＳＤ１２０のエンドポイント（３０５及び１３１０）が、従来のホストツーＳＳＤ  ＰＣＩｅトランザクション（ｈｏｓｔ−ｔｏ−ＳＳＤ  ＰＣＩｅ  ｔｒａｎｓａｃｔｉｏｎｓ）及びＦＰＧＡツーＳＳＤ加速コマンド（ＦＰＧＡ−ｔｏ−ＳＳＤ  ａｃｃｅｌｅｒａｔｉｏｎ  ｉｎｓｔｒｕｃｔｉｏｎｓ）を区別するために使用されているように、ＦＰＧＡ１４５のエンドポイント（１１０５及び１５０５）は、従来のホストツーＳＳＤ  ＰＣＩｅトランザクション及びＦＰＧＡツーＳＳＤ加速コマンドを区別するために使用され得る。エンドポイント１１０５で受信されたＰＣＩｅトランザクションは、従来のＰＣＩｅトランザクションと見なされ得、ＳＳＤ１２０に伝送される反面（ルートポート１１１０を介して）、エンドポイント１５０５で受信されたＰＣＩｅトランザクションは加速コマンドと見なされ得、処理のためにＡＰＭ−Ｆ（３４０）に伝達され得る。
【０１１５】
本発明の第７実施例に基づいて、図１６は、図１のシステムで、コマンドを加速するためのメモリ使用を示している。全ての意図及び目的に対して、本発明の第７実施例によるメモリの使用は、第６実施形態によるメモリ使用と同じである。ＦＰＧＡ１４５のルートポート（１１１０及び１３０５）は、各々それ自身の構成空間を提供し、ＳＳＤ１２０のエンドポイント３０５は、ＢＡＲによって識別されるＦＰＧＡアドレスマップ１（１２１０）からメモリアドレスのブロック１４０５を要請できる（本発明の第６実施例でのように、ＳＳＤ１２０のエンドポイント１３１０は、ＦＰＧＡアドレスマップ２（１４１０）からメモリアドレスのブロック１４０５を要請でき、ＳＳＤ１２０のエンドポイント１３１０は、ＳＳＤツーＦＰＧＡ通信のためのＦＰＧＡアドレスマップ２（１４１０）の全体を使用できる）。エンドポイント（１１０５及び１５０５）は、プロセッサ１１０とＳＳＤ１２０との間で交換されるＰＣＩｅトランザクションを管理するために、ホストシステムのメモリアドレスのブロック（１２１５及び１２２０）を要請できる。よって、ブロック１２１５は、少なくともブロック１４０５と同じ大きさを有し得る。ブロック（１２１５及び１２２０）は、各々ＢＡＲによって識別され得る。
【０１１６】
図１５において、本発明の前述の実施例でのように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、エンドポイント（１１０５、１５０５）、及びルートポート（１１１０、１３０５）である。前述の本発明の実施例でのように、ＰＣＩｅトランザクションのフィルタリングと関連された構成は、ＦＰＧＡ１４５から除去され得る。
従って、本発明の第７実施例で、エンドポイント（１１０５、１５０５）は第１ブリッジ構成要素に配置され得、一方、ルートポート（１１１０、１３０５）は第２ブリッジ構成要素に配置され得、各々は、図１５の相異なる構成要素を有するＰＣＩｅトランザクションのフィルタリングを処理する。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得、（その場合、ＦＰＧＡ１４５は、他のソースからの通信のために、それ自体のフィルタリングを処理する）、又は、ＰＣＩｅトランザクションのソースに関係なく、単一のブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用され得る。
【０１１７】
第８実施例
【０１１８】
図１７は、本発明の第８実施例に基づいて、図１のＦＰＧＡ１４５と、図１のＳＳＤ１２０の構成を示している。本発明の第８実施例は、ＦＰＧＡ１４５が２つのエンドポイント（１１０５、１５０５）を含むことを除いては、本発明の第５実施例と類似する。再言すると、ＦＰＧＡ１４５のエンドポイント（１１０５、１５０５）は、従来のホスト−ＳＳＤ  ＰＣＩｅトランザクションと、ホストツーＦＰＧＡ加速コマンドとを区別するために使用され得る。ＦＰＧＡ１４５のエンドポイント１１０５で受信されたＰＣＩｅトランザクションは、従来のＰＣＩｅトランザクションと見なされ得、ＳＳＤ１２０に伝送される反面（ルートポート１１１０を介して）、ＦＰＧＡ１４５のエンドポイント１５０５で受信されたＰＣＩｅトランザクションは加速コマンドと見なされ得、処理のためにＡＰＭ−Ｆ（３４０）に伝達され得る。
【０１１９】
本発明の第８実施例に基づいて、図１８は、図１のシステムで、コマンドを加速するためのメモリ使用を示している。本発明の第８実施例によるメモリの使用は、第５実施例によるメモリ使用と同じである。ルートポート１１１０がＦＰＧＡ１４５の唯一のルートポートである場合、ＳＳＤ１２０のエンドポイント３０５は、ダウンストリームＦＡＲ４２０を包含できるＦＰＧＡメモリアドレスマップ１２１０からメモリアドレスブロック１２０５を要請できる。ＢＡＲによって識別されるエンドポイント１１０５が、少なくともメモリアドレスブロック１２０５と同じ大きさのメモリアドレスブロック１２１５を要求しつつ、ＦＰＧＡ１４５のエンドポイント（１１０５、１５０５）は、ホストシステムのメモリアドレスマップ１４０からメモリアドレスブロック（１２１５、１２２０）を要求できる。エンドポイント（１１０５、１５０５）は、プロセッサ１１０とＳＳＤ１２０との間で交換されるＰＣＩｅトランザクションを管理するために、ホストシステムのメモリアドレスのブロック（１２１５及び１２２０）を要請できる。メモリアドレスブロック１２１５は、少なくともメモリアドレスブロック１４０５と同一の大きさを有し得る。メモリアドレスブロック（１２１５、１２２０）は、各々２つの分離されたＢＡＲにより識別され得る。本発明の他の実施例で、ＦＰＧＡ１４５とＳＳＤ１２０との間の通信を容易にするために、ダウンストリームＦＡＲ４２０としてブメモリアドレスロック１２２０の一部分を使用可能である。
【０１２０】
図１７において、本発明の前述の実施例でのように、ＦＰＧＡ１４５は、プロセッサ１１０とＳＳＤ１２０との双方との通信を可能にする部品を含むとして示されている。つまり、具体的に、エンドポイント（１１０５、１５０５）、ルートポート１１１０、及びダウンストリームフィルタ３６０である。前述の本発明の実施例でのように、ＰＣＩｅトランザクションのフィルタリングと関連された構成は、ＦＰＧＡ１４５から除去され得る。
従って、本発明の第８実施例で、エンドポイント（１１０５、１５０５）は第１ブリッジ構成要素に配置され得、一方、ルートポート１１１０及びダウンストリームフィルタ３６０は第２ブリッジ構成要素に配置され得、各々は、図１７の相異なる構成要素を有するＰＣＩｅトランザクションのフィルタリングを処理する。
選択的に、斯かるブリッジ構成要素の中で単に一つだけが使用され得（その場合、ＦＰＧＡ１４５は、他のソースからの通信のために、それ自体のフィルタリングを処理する）、又は、ＰＣＩｅトランザクションのソースに関係なく、単一のブリッジ構成要素がＦＰＧＡ１４５に対する全てのフィルタリングを処理するために使用され得る。
【０１２１】
本発明の様々な実施例を参照して、前述したように、ＦＰＧＡ１４５のアップストリームインタフェース及び／又はダウンストリームインタフェースの一部であると記述されるフィルタリング機能は、ＦＰＧＡ１４５から分離され得、他の構成によって処理され得る。本発明の実施例に応じて、図１９は、図１の加速モジュール１４５を代えてフィルタリング機能を処理できるブリッジ構成要素を示している。
【０１２２】
図１９において、２つのブリッジ構成要素（１９０５及び１９１０）が示されている。ブリッジ構成要素１９０５は、プロセッサ１１０から受信されたＰＣＩｅトランザクションのフィルタリングを処理できる反面、ブリッジ構成要素１９１０は、ＳＳＤ１２０から受信されたＰＣＩｅトランザクションのフィルタリングを処理できる。ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションが加速コマンドを包含しているか否かに応じて、ＰＣＩｅトランザクションをＦＰＧＡ１４５又はＳＳＤ１２０の何れか一つに伝送できる。同様に、ブリッジ構成要素１９１０は、ＰＣＩｅトランザクションが加速コマンドを包含しているか否かに応じて、ＰＣＩｅトランザクションをＦＰＧＡ１４５又はプロセッサ１１０の何れか一つに伝送できる。
ＦＰＧＡ１４５のアップストリーム及びダウンストリームインタフェースの一部として図示されたのと類似の具現であるので、ブリッジ構成要素（１９０５及び１９１０）の特定の具現は、図１９に示されない。
【０１２３】
本発明の幾つかの実施例で、ブリッジ構成要素（１９０５及び１９１０）の両方が使用され得る。本発明の他の実施例で、１つのブリッジ構成要素（１９０５又は１９１０）のみ使用され、他のブリッジ構成要素の機能は、潜在的にＦＰＧＡ１４５とともに残り得る。他の実施例で、ブリッジ構成要素（１９０５及び１９１０）の両方は、分離された構成ではない、単一の構成に含まれ得る。
【０１２４】
本発明の様々な実施例が説明されたので、プロセッサ１１０、ＦＰＧＡ１４５、及びＳＳＤ１２０の間のデータの流れが説明され得る。本明細書の残りの部分で、全てのフィルタリング機能は、ＦＰＧＡ１４５に帰属するが、図１９のブリッジ構成要素（１９０５及び／又は１９１０）にフィルタリングが移動され得る時期と方法は明白でならなければならない。本発明の実施例に応じて、図２０及び図２１は、図１のプロセッサ１１０、図１のＦＰＧＡ１４５、及び図１のＳＳＤ１２０の間の通信を示している。図２０で、本発明の第１実施例（そして多分（ｐｏｓｓｉｂｌｙ）、本発明の他の実施例）によるデータの流れが示されている。プロセッサ１１０は、ＰＣＩｅトランザクション２００５をＳＳＤ１２０に伝送できる（ＦＰＧＡを介して）。その後に、ＡＰＭ−Ｓ（３１５）は、ＳＳＤ１２０がＦＰＧＡ１４５に伝送できるＰＣＩｅトランザクション２０２０に含まれ得る加速コマンド２０１５を生成できる。なお、図２０で示されるように、ＦＰＧＡ１４５及びＳＳＤ１２０は、加速データを交換できる。
【０１２５】
加速コマンド２０１）の完了時に、ＦＰＧＡ１４５は、プロセッサ１１０に結果２０３５を伝達できるＳＳＤ１２０に結果２０３０を送り返し得る。選択的に、ＦＰＧＡ１４５は、ＳＳＤ１２０から来る結果２０３５をシミュレーションしながら、その結果２０４０をプロセッサ１１０に直接伝送できる。
【０１２６】
対照的に、図２１で（本発明の第２乃至第８実施例に適用可能な）、プロセッサ１１０は、加速コマンド２０４５をＰＣＩｅトランザクション２００５としてＦＰＧＡ１４５に直接伝送できる。ＦＰＧＡ１４５及びＳＳＤ１２０は、図２１で示されたように、加速データを交換できる。最後に、ＦＰＧＡ１４５は、結果２０４０を再びプロセッサ１１０に送り得る。
【０１２７】
図２２は、本発明の実施例に基づいてＦＰＧＡ１４５がＰＣＩｅトランザクションを処理するための例示的な手順のフローチャートを示す。図２２は、高いレベルのビュー（ｖｉｅｗ）を提供する。よって、以後の図面は、ＦＰＧＡ１４５の動作に対しより詳細な例示的なフローチャートを提供する。図２２で、ブロック２１０５において、ＦＰＧＡ１４５は、デバイスからのＰＣＩｅトランザクションを受信できる。斯かるＰＣＩｅトランザクションは、図２０〜図２１のＰＣＩｅトランザクション（２０１５又は２０４５）の何れか１つであり得るし、デバイスは、プロセッサ１１０又はＳＳＤ１２０であり得る。ブロック２１１０で、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションが加速コマンドを包含しているか否かを判断できる。ブロック２１１５で、ＦＰＧＡ１４５は、ＰＣＩｅトランザクションが加速コマンドを包含するかを知るために検査できる。もしそうなら、ブロック２１２０で加速コマンドは、ＡＰＭ−Ｆ（３４０）によって処理され得る。そうでない場合には、ブロック２１２５で、ＰＣＩｅトランザクションは、他のデバイスに伝達され得る（ＰＣＩｅトランザクションがプロセッサ１１０から受信された場合、ＰＣＩｅトランザクションはＳＳＤ１２０に伝達され得、その逆も可能である）。ＡＰＭ−Ｆ（３４０）による加速コマンドの処理は、加速コマンドによって処理されるアプリケーションデータを受信するためにＳＳＤ１２０と通信することを包含できることに注目する。
【０１２８】
本発明の実施例に基づいて、図２３〜図２５は、ＦＰＧＡ１４５がＰＣＩｅトランザクションを処理する際の、より詳細な例示的な手順のフローチャートを示す。図２３において、ブロック２２０３で、ＦＰＧＡ１４５は、ＳＳＤ１２０からのダウンストリームＦＡＲ４２０を受信できる。ブロック２２０６で、ＦＰＧＡ１４５は、ダウンストリームＦＡＲ４２０をダウンストリームフィルタ３６０と関連付け得る。
ＳＳＤ１２０がサイドバンドバス３６５を介してダウンストリームＦＡＲ４２０をダウンストリームフィルタ３６０でプログラミングする場合、この関係は、自動的に発生できるか、又は、この関係は、ＦＰＧＡ１４５による積極的ステップを必要とし得る（例として、ＳＳＤ１２０がダウンストリームＦＡＲ４２０を含むＦＰＧＡ１４５にＰＣＩｅ  ＶＤＭを伝送する場合）。破線２２０９で示されたように、本発明の幾つかの実施例で、ブロック（２２０３及び２２０６）は、スキップされることに注目する。本発明の幾つかの実施例で、ダウンストリームＦＡＲ４２０は、ＦＰＧＡ１４５それ自体によって提供され得る。
【０１２９】
ブロック２２１２で、ＦＰＧＡ１４５は、ＳＳＤ１２０からアップストリームＦＡＲ６０５を受信でき、ブロック２２１５で、ＦＰＧＡ１４５は、アップストリームポート３３０と、アップストリームＦＡＲ６０５を関連付け得る。ＳＳＤ１２０がサイドバンドバス３６５を介してアップストリームＦＡＲ６０５をアップストリームフィルタ５０５でプログラミングする場合、この関係は、自動的に発生できたり、この関係は、ＦＰＧＡ１４５によって活性ステップを要求したりできる（例として、ＳＳＤ１２０がアップストリームＦＡＲ６０５を含むＦＰＧＡ１４５にＰＣＩｅ  ＶＤＭを伝送する場合）。本発明の幾つかの実施例で、アップストリームＦＡＲ６０５は、ＦＰＧＡ１４５それ自体によって提供され得る。
【０１３０】
別の方法として、ブロック２２１８で、ＦＰＧＡ１４５は、ＦＰＧＡ１４５を露出するために使用されるＰＦ又はＶＦの識別子をＳＳＤ１２０から受信でき、ブロック２２２１のＦＰＧＡ１４５は、  ＰＦ／ＶＦの識別子をアップストリームフィルタ３３０と関連付け得る。言い換えれば、ＳＳＤ１２０がサイドバンドバス３６５を介してＰＦ／ＶＦの識別子をアップストリームフィルタ５０５でプログラミングする場合は、この関係は、自動的に発生できるか、又は、ＦＰＧＡ１４５によって活性ステップを要求できる（例として、ＳＳＤ１２０がＰＦ／ＶＦの識別子を含むＦＰＧＡ１４５にＰＣＩｅ  ＶＤＭを伝送する場合）。
【０１３１】
破線２２２４に示されたように、本発明の幾つかの実施例で、ブロック（２２１２、２２１５、２２１８、及び２２２１）は、スキップされ得る。
【０１３２】
ブロック２２２７で、構成モニタ１１２５は、ＳＳＤ１２０のエンドポイント３０５の構成を判断でき、ブロック２２３０で構成モジュール１１２５は、ＦＰＧＡ１４５のエンドポイント１１０５でその構成を複製でき、そうすることでＳＳＤ１２０と同じ機能をプロセッサ１１０に提供できる。本発明の幾つかの実施例で、ブロック（２２１２、２２１５、２２１８、及び２２２１）は、破線２２３３で示されたようにスキップ（ｓｋｉｐ）され得る。
【０１３３】
一旦ＦＰＧＡ１４５が適切に構成されると、ブロック２２３６（図２４）でＦＰＧＡ１４５は、プロセッサ１１０から図２１のＰＣＩｅトランザクション２００５を受信できる（本発明の実施例に基づいて、アップストリームポート３３０又はエンドポイント１１０５を介して）。ブロック２２３９で、ＦＰＧＡ１４５は、図２１のＰＣＩｅトランザクション２００５が図２１の加速コマンド２０４５を包含しているか否かを判断できる。もしそうなら、ブロック２２４２でも２２Ｂの加速コマンド２０４５を処理でき、ブロック２２４５でＡＰＭ−Ｆ（３４０）は、プロセッサ１１０に図２１の結果２０４０を送信できる。そうでなければ、図２１のＰＣＩｅトランザクション２００５が図２１の加速コマンド２０４５を包含していない場合、ブロック２２４８で、ＦＰＧＡ１４５は、図２１のＰＣＩｅトランザクション２００５をＳＳＤ１２０に伝送できる（本発明の実施例に基づいて、ダウンストリームポート３３５又はルートポート１１１０を介して）。
【０１３４】
ブロック２２５１（図２４）において、ＦＰＧＡ１４５は、図２０のＰＣＩｅトランザクション２０２０を受信できる（本発明の実施例に依存して決まるが、ダウンストリームポート３３５又はルートポート１１１０を介して）。ブロック２２５４で、ＦＰＧＡ１４５は、図２０のＰＣＩｅトランザクション２０２０が図２０の加速コマンド２０１５を包含しているか否かを判断できる。
【０１３５】
図２０のＰＣＩｅトランザクション２０２０が図２０の加速コマンド２０１５を含む場合、ブロック２２５７で、ＡＰＭ−Ｆ（３４０）は、図２０の加速コマンド２０１５を処理でき、ブロック２２６０で、ＡＰＭ−Ｆ（３４０）は、図２０の結果２０４０をＳＳＤ１２０に伝送できる。そうでなければ、図２０のＰＣＩｅトランザクション２０２０が加速コマンド２０１５を含んでいない場合、ブロック２２６３で、ＦＰＧＡ１４５は、図２０のＰＣＩｅトランザクション２０２をプロセッサ１１０に伝送できる（発明の実施例に依存するが、アップストリームポート３３０又はエンドポイント１１０５を介して）。
【０１３６】
本発明の実施例に基づいて、図２６〜図２７は、プロセッサ１１０から来る図２１のＰＣＩｅトランザクション２００５が図２１の加速コマンド２０４５を含むか否かを、ＦＰＧＡ１４５が判断する際の例示的な手順のフローチャートを示す。図２６〜図２７は、個別的に、又は集合的に使用され得る（本発明の実施例に依存して決まる）３つの可能なテストを示している。一つ以上のテストを使用する本発明の実施例で、何れかの個々のテストが満足される場合、図２１のＰＣＩｅトランザクション２００５は、図２１の加速コマンド２０４５を含むものと判断され得る。
図２６において、ブロック２３０５で、ＦＰＧＡ１４５は、図２１のＰＣＩｅトランザクション２００５に関連されたアドレスがアップストリームＦＡＲ６０５でのアドレスを含んでいるか否かを判断できる。ブロック２３１５で、図２１のＰＣＩｅトランザクション２００５がアップストリームフィルタ７１５と関連されたるＰＦ又はＶＦの識別子を含むと、ＦＰＧＡ１４５は、判断できる。ブロック２３１５で、ＦＰＧＡ１４５は、エンドポイント１５０５のような加速コマンド専用のポートで図２１のＰＣＩｅトランザクション２００５が受信される場合、ＦＰＧＡ１４５は、判断できる。
これらのテストの何れかの結果が、図２１のＰＣＩｅトランザクション２００５が図２１の加速コマンド２０４５を含むことを示すと、ブロック２３２０（図２７）において、ＦＰＧＡ１４５は、図２１のＰＣＩｅトランザクション２００５が図２１の加速コマンド２０４５を含むと知る。そうでなければ、ブロック２３２０のＦＰＧＡ１４５は、図２１のＰＣＩｅトランザクション２００５が図２１の加速コマンド２０４５を含まないと知る。
【０１３７】
本発明の実施例に基づいて、図２８は、図２０のＰＣＩｅトランザクション２０２０がＳＳＤ１２０から来る図２０の加速コマンド２０１５を含むか否かを、ＦＰＧＡ１４５が判断する際の例示的な手順のフローチャートを示す。図２８は、個別的に又は集合的に使用され得る（本発明の実施例に依存して決まる）２つの可能なテストを示している。一つ以上のテストを使用する本発明の実施例で、何れかの個別のテストが満足される場合、図２０のＰＣＩｅトランザクション２０２０は、図２０の加速コマンド２０１５を含むものと判断され得る。
図２８において、ブロック２４０５で、ＦＰＧＡ１４５は、図２０のＰＣＩｅトランザクション２０２０に関連されたアドレスがダウンストリームＦＡＲ４２０内のアドレスを含んでいるか否かを判断できる。ブロック２４１０において、ループポート１３０５のような加速コマンド専用のポートで図２０のＰＣＩｅトランザクション２０２０が受信される場合、ＦＰＧＡ１４５は、判断できる。これらのテストの結果の何れかが、図２０のＰＣＩｅトランザクション２０２０が図２０の加速コマンド２０１５を含むことを示すと、ブロック２４１５でＦＰＧＡ１４５は、図２０のＰＣＩｅトランザクション２０２０が図２０の加速コマンド２０１５を含むと知る。従って、そうでなければ、ブロック２４２０においてＦＰＧＡ１４５は、図２０のＰＣＩｅトランザクション２０２０が図２０の加速コマンド２０１５を包含しないと知る。
【０１３８】
本発明の実施例に基づいて、図２９は、図１のプロセッサ１１０から来るＰＣＩｅトランザクション２０２０が加速コマンドを含むか否かを、図１９の第１ブリッジ構成要素１９０５が判断する際の例示的な手順のフローチャートを示す。図２９において、ブロック２５０５で、第１ブリッジ構成要素１９０５は、図１のプロセッサ１１０からＰＣＩｅトランザクションを受信できる。ブロック２５１０において、第１ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションが加速コマンドであるか否かを判断できる。もしそうなら、ブロック２５１５において、第１ブリッジ構成要素１９０５は、ＰＣＩｅトランザクション／加速コマンドを図１のＦＰＧＡ１４５に伝送できる。しかし、そうでなければ、ブロック２５２０において、第１ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションを図１のＳＳＤ１２０に伝達できる。
【０１３９】
本発明の実施例に基づいて、図３０は、図１のストレージデバイス１２０から来るＰＣＩｅトランザクションが加速コマンドを含むか否かを、図１９の第２ブリッジ構成要素１９１０が判断する際の例示的な手順のフローチャートを示す。図３０において、ブロック２６０５で、第２ブリッジ構成要素１９０５は、図１のＳＳＤ１２０からＰＣＩｅトランザクションを受信できる。ブロック２６１０において、第２ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションが加速コマンドであるか否かを判断できる。もしそうなら、ブロック２６１５において、第２ブリッジ構成要素１９０５は、ＰＣＩｅトランザクション／加速コマンドを図１のＦＰＧＡ１４５に伝送できる。しかし、そうでなければ、ブロック２６２０において、第２ブリッジ構成要素１９０５は、ＰＣＩｅトランザクションを図１のプロセッサ１１０に伝達できる。
【０１４０】
本発明の実施例に基づいて、図３１〜図３３は、ＳＳＤ１２０がＰＣＩｅトランザクションを処理する際の例示的な手順のフローチャートを示す。図３１のブロック２７０５においてＳＳＤ１２０は、メモリアドレスのブロックを要請できる。ＳＳＤ１２０は、本発明の第１乃至第４の実施例でのように、ホストシステムメモリから又は本発明の第５乃至第８の実施例でのようにＦＰＧＡ１４５のルートポートの構成空間からメモリアドレスのブロックを要請できる。サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ又は任意の他の所望のメカニズムを使用して、ブロック２７１０においてＳＳＤ１２０は、ダウンストリームＦＡＲ４２０として使用するためのメモリアドレスのブロックのサブセットを選択でき、ブロック２７１５においてＳＳＤ１２０は、ダウンストリームフィルタ３６０を、ダウンストリームＦＡＲ４２０を用いてプログラミングできる。本発明の幾つかの実施例で、ブロック２７０５乃至２７１５は、破線２７２０に示されたようにスキップされ得ることに注目する（破線２７２０は、また、図３２に図示された幾つかのブロックもスキップする）。
【０１４１】
図３２において、ブロック２７２５でＳＳＤ１２０は、サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ又は任意の他の所望のメカニズムを使用して、アップストリームＦＡＲ６０５のように使用するためのメモリアドレスのブロックのサブセットを選択でき、ブロック２７３０でのＳＳＤ１２０は、ダウンストリームフィルタ３６０を、ダウンストリームＦＡＲ４２０を用いてプログラミングできる。選択的に、ブロック２７３５で、ＳＳＤ１２０は、ＰＦ７０５を使用してそれ自身の能力を露出できる。その後にブロック２７４０でＳＳＤ１２０は、サイドバンドバス３６５、ＰＣＩｅ  ＶＤＭ又は任意の他の所望のメカニズムを使用して、ＦＰＧＡ１４５を露出するためにＰＦ９０５又はＶＦ７１０を使用でき、ブロック２７４５でＳＳＤ１２０は、ダウンストリームフィルタ３６０を、ＰＦ９０５又はＶＦ７１０の識別子を用いてプログラムできる。本発明の幾つかの実施例で、ブロック（２７２５乃至２７４５）は、破線２７５０で示されたようにスキップされうることに注目する。
【０１４２】
ブロック２７５５において、ＳＳＤ１２０は、ＦＰＧＡ１４５からＰＣＩｅトランザクションを受信できる。このＰＣＩｅトランザクションは、図２０のＰＣＩｅトランザクション２００５、又は（プロセッサ１１０からＦＰＧＡ１４５によって伝達される（ｆｏｒｗａｒｄｅｄ））図２０及び図２１のＰＣＩｅトランザクション２０２５であり得る。ＰＣＩｅトランザクションのソースに関係なく、ブロック２７６０（図３３）において、ＨＩＬ３１０は、ＰＣＩｅトランザクションが加速コマンドを含むかを判断できる。
もしそうなら、ブロック２７６５で、ＨＩＬ３１０は、ＰＣＩｅトランザクション（又は圧縮解除された加速コマンド）を処理するためにＡＰＭ−Ｓ（３１５）に伝送できる。ＡＰＭ−Ｓ（３１５）は、加速コマンドへの応答を生成でき、これは、図２０の加速コマンド２０２５、又は（ＰＣＩｅトランザクションがプロセッサ１１０から由来された場合）加速データ２０２５であり得る（ＰＣＩｅトランザクションがＦＰＧＡ１４５のＡＰＭ−Ｆ（３４０）から由来した場合）。何れの場合でも、ブロック２７７０で、ＡＰＭ−Ｓ（３１５）は、応答をＦＰＧＡ１４５に伝送できる。
【０１４３】
一方、ＰＣＩｅトランザクションが加速コマンドではなければ、ブロック２７７５でのＳＳＤ１２０は、ＰＣＩｅトランザクションが図２０の結果２０３０であるかを判断できる。もしそうなら、ブロック２７８０で、ＳＳＤ１２０は、図２０の結果２０３５をプロセッサ１１０に伝送できる（ＳＳＤ１２０及びＦＰＧＡ１４５のエンドポイント３０５を介して）。ＰＣＩｅトランザクションが図２０の結果２０３０ではなければ、ブロック２７８５でのＳＳＤ１２０は、通常の場合のようにＳＳＤ１２０に格納されたデータに対してＰＣＩｅトランザクションを処理できる。
【０１４４】
図３４〜図３５は、本発明の実施例に基づいてＦＰＧＡ１４５から出てくるＰＣＩｅトランザクションが加速コマンドを包含しているか否かを、ＳＳＤ１２０が判断するための例示的な手順のフローチャートを示す。
【０１４５】
本発明の実施例に基づいて、図３４〜図３５は、個別的に又は集合的に使用され得る３つの可能なテストを示している。一つ以上のテストを使用する本発明の実施例で、何れかの個別テストが満足される場合、図２０のＰＣＩｅトランザクションは加速コマンド２０１５を含むものと判断され得る。図３４において、ブロック２８０５で、ＳＳＤ１２０は、ＰＣＩｅトランザクション２０２０がプロセッサ１１０からの特定のコマンド（ＳＳＤ１２０がＦＰＧＡ１４５に加速コマンドを開始しなければならないことを示す）を含んでいるか否かを判断できる。
ブロック２８１０で、ＳＳＤ１２０は、ＰＣＩｅトランザクションがＡＰＭ−Ｆ（３４０）から由来するか否かを判断できる。これは、ＡＰＭ−Ｆ（３４０）が図２０及び図２１の加速データ２０２５を要請している場合か、又は、ＡＰＭ−Ｆ（３４０）が、図２０の結果２０３０をＳＳＤ１２０に伝送している場合に発生し得る。ブロック２８１０のテストは、任意の所望の方式で遂行され得る。つまり、例として、ＰＣＩｅトランザクションは、ＰＣＩｅトランザクションが加速コマンドであることを示すタグを包含するか、又は、ＰＣＩｅトランザクションがダウンストリーム内のアドレスと関連付けられる方式で遂行され得る。
ブロック２８１５で、ＳＳＤ１２０は、ＰＣＩｅトランザクションがエンドポイント１３１０などの加速コマンド専用のポートで受信されるかを判断できる。これらのテストの結果の中の何れかがＰＣＩｅトランザクションに加速コマンドが含まれていることを示すと、ブロック２８２０（図３５）で、ＳＳＤ１２０は、ＰＣＩｅトランザクションが加速コマンドを包含していると知る。そうでない場合、ブロック２８２５で、ＳＳＤ１２０は、ＰＣＩｅトランザクションが加速コマンドを含まないと知る。
【０１４６】
図２２乃至図３５において、本発明の幾つかの実施例が示される。しかし、当業者は、ブロックの順序を変更し、ブロックを省略し、又は図面に図示されていない連結を包含することにより、本発明の他の実施例も可能であることを認識するはずである。加えて、特定の動作が特定の構成によって実行されるものとして説明されるが、本発明の実施例は、説明された動作を遂行する他の構成を支援できる。フローチャートのこのような全ての変形は、明示的に記述されているか否かに係らず本発明の実施例であるのでと見做される。
【０１４７】
本発明の実施例は、従来技術に比べて技術的な利点を提供する。図１の機械１０５へ、図１の加速モジュール１４５を導入することにより、図１のプロセッサ１１０は、図１の加速モジュール１４５によって遂行可能な作業をオフロード（ｏｆｆｌｏａｄ）できる。斯かるコマンドは、典型的には廃棄され得る多くの量のデータを処理することを含んでいるので、図１のメモリ１４０の幾つかの空間を明け渡す必要性を回避するだけでなく、図１の加速モジュール１４５に作業をオフロードすることは、図１のストレージデバイス１２０から、図１のメモリ１４０にデータをローディングするのに必要な遅延を避ける。
【０１４８】
なお、本発明の多様な実施例は、相異なるタイプの図１のストレージデバイス１２０）の使用を支援する。図１の加速モジュール１４５を露出するために追加のＰＦ及び／又はＶＦを支援するストレージデバイスだけでなく、単一ポート及びデュアルポートストレージデバイスの全てが使用され得る。
【０１４９】
本発明の多様な実施例は、異なる性能を提供するプロセッサを使用することを追加でサポートする。図１の機械１０５のＯＳがＶＦを支援すれば、ＶＦが図１の加速モジュール１４５を露出するのに使用され得る。そうでなければ、ＰＦが使用され得る。図１のプロセッサ１１０は、図１の加速モジュール１４５と直接通信でき、そのような通信を支援する発明の実施例が使用され得る。そうでなければ、図１のプロセッサ１１０は、図１のストレージデバイス１２０に、全ての加速コマンドを送信でき、図１の加速モジュール１４５に対して加速コマンドを遂行するように要請することを、図１のストレージデバイス１２０に任しし得る。
【０１５０】
下の説明は、本発明の技術的思想の幾つかの側面が具現される適切な機械又は複数の機械の簡単で一般的な説明を提供しようとする。機械又は複数の機械は、少なくともその一部は、他の機械から受信される指示、バーチャルリアリティ（ＶＲ）環境との相互作用、生体フィードバック、又は他の入力信号だけではなく、キーボード、マウスなどの通常の入力デバイスからの入力により制御され得る。ここで使用されるように、「機械（マシン）」の用語は、単一のマシン、仮想マシン、複数の機械、複数の仮想マシン、又は協同して作動するデバイスと通信するように結合されたシステムを広く含むものと意図される。例示的な機械は、例として、自動車、電車、タクシーなどのような個人用や公共交通などの輸送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルドデバイス、携帯電話、タブレットなどのようなコンピューティングデバイスを含み得る。
【０１５１】
単数又は複数の機械は、プログラム可能な又はプログラム不可能な論理デバイス、アレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、エンベデッドコンピュータ、スマートカードのようなエンベデッドコントローラを含み得る。単数又は複数の機械は、ネットワークインタフェース、モデム、又は他の通信結合を介して一つ又はそれより多くのリモート機械（マシン）への一つ又はそれより多くの連結を活用できる。機械（マシン）は、イントラネット、インタネット、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）などの物理的及び／又は論理的ネットワークの手段により、互いに連結され得る。この分野における熟練した者は、ネットワーク通信が、多様な有線及び／又は無線の近距離又は遠距離キャリア、及び無線周波数（ＲＦ）、衛星、マイクロウェーブ、ＩＥＥＥ  ８０２．１１、ブルートゥース（登録商標）、光学、赤外線、ケーブル、レーザーなどを含むプロトコルを活用することを理解するだろう。
【０１５２】
本発明の技術的思想の実施例は、機械によってアクセスされる際に機械が作業を遂行したり、抽象データ型又は低レベルのハードウェアコンテキストを定義することを誘発する機能、プロシージャ、データ構造（ｓｔｒｕｃｔｕｒｅｓ）、アプリケーションなどを含む関連されたデータを参照したり又は協力したりして説明され得る。関連されたデータは、例えば、ＲＡＭ、ＲＯＭなどのような揮発性及び／又は不揮発性メモリ、他のストレージデバイス、ハードドライブ、フロッピーディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生体ストレージなどを含む、関連されたストレージデバイスに格納され得る。関連されたデータは、物理的及び／又は論理ネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形態で伝達され、圧縮された又は暗号化されたフォーマットで使用され得る。関連されたデータは、分散環境で使用され得、機械アクセスに対してローカル及び／又はリモートで格納され得る。
【０１５３】
本発明の技術的思想の実施例は、一つ又はそれより多くのプロセッサによって実行可能であり、ここで説明されたように、本発明の技術的思想のエレメントを行うようにするコマンドを含んで実在する非一時的機械読み出し媒体を包含できる。
【０１５４】
前で説明された方法の多様な動作は、多様なハードウェア及び／又はソフトウェア構成、回路、及び／又は複数のモジュールのような動作を遂行できる任意の適切な手段によって遂行され得る。ソフトウェアは、論理的機能を具現するための実行可能なコマンドの順序付けられたリストを包含でき、単一若しくは多重のコアプロセッサ、プロセッサ含みシステムのようなデバイス（ｄｅｖｉｃｅ）、コマンド実行システム、又は機構（ａｐｐａｒａｔｕｓ）と関連した若しくはこれらによる使用のための任意の「プロセッサ可読媒体」で具現され得る。
【０１５５】
本明細書に開示された実施例に関連して説明された方法、アルゴリズム及び機能のブロック、又はステップは、ハードウェア、プロセッサによって実行中のソフトウェアモジュール、又はそれらの組み合わせで直接具現され得る。ソフトウェアで具現される場合、機能は実在し、非一時的コンピュータ可読媒体上に格納されたり、１つ以上のコマンド又はコードとして伝送されたりできる。ソフトウェアモジュールは、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、フラッシュメモリ、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ  ＲＯＭ、又はこの技術分野において知られている任意の他の形態のストレージ媒体であり得る。
【０１５６】
図示された実施例を参照して説明された本発明の技術的思想の原則を有していると、図示された実施例は、このような原則から逸脱せずに、配列及び細部事項で修正され得、必要な任意の方法で組み合わせられることが理解されるだろう。前の説明が具体的な実施例に集中したが、他の構成もまた考慮される。具体的に、「本発明の技術的思想の実施例による」などの表現乃至類似の表現がここで使用されているけれども、このようなフレーズは、一般的に実施例の可能性を参照するだけであって、本発明の技術的思想を具体的な実施例の構成に限定することを意図しない。ここで使用されるように、このような用語は、他の実施例への組み合わせ可能な同一又は相異なる実施例を参照できる。
【０１５７】
前に説明した実施例は、本発明の技術的思想を、それらに限定するものと解釈されない。少ない実施例だけを説明したが、この分野における熟練した者は、本記載の新規な説明及び長所から実質的に逸脱せずに、このような実施例に多くの修正が可能であることを十分に理解するだろう。従って、このような全ての修正は、請求項において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図される。
【０１５８】
本発明の実施例は制限なしに次の説明へ拡張され得る。
【０１５９】
説明１。本発明の実施例は、システムを含む。システムは、
アプリケーションを実行するプロセッサと、
前記プロセッサ上で実行中の前記アプリケーションによって使用されるデータを格納するメモリと、
前記プロセッサと通信するためのアップストリームインタフェースと、
ストレージデバイスと通信するためのダウンストリームインタフェースと、
ハードウェアを使用して具現されて加速コマンドを実行するための加速プラットフォームマネージャ（ＡＰＭ−Ｆ）を含む加速モジュールと、を包含し、
前記ストレージデバイスは、
前記加速モジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
前記アプリケーションに対するアプリケーションデータを格納するためのストアと、
前記加速コマンドを実行するのに前記加速プラットフォームマネージャ（ＡＰＭ−Ｆ）を補助するためのストレージデバイスの加速プラットフォームマネージャ（ＡＰＭ−Ｓ）と、をさらに包含し、
前記プロセッサ、前記加速モジュール及び前記ストレージデバイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを介して通信し、
前記加速モジュールは、前記アプリケーションデータを前記メモリにローディングすることなく、前記アプリケーションのための前記ストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
【０１６０】
説明２。説明１によれば、本発明の実施例は、システムを含む。説明１において、
前記プロセッサと前記加速モジュールとの間の通信を連結（ｂｒｉｄｇｉｎｇ）し、前記アップストリームインタフェースを含む第１ブリッジ構成要素と、及び
前記加速モジュールと前記ストレージデバイスとの間の通信を連結し、前記ダウンストリームインタフェースを含む第２ブリッジ構成要素と、をさらに包含する。
【０１６１】
説明３。説明１によれば、本発明の実施例は、システムを含む。説明１において、
前記加速モジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記加速モジュールは、前記アップストリームインタフェース及び前記ダウンストリームインタフェースを包含し、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０１６２】
説明４。説明３によれば、本発明の実施例は、システムを含む。説明３において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓは、前記加速コマンドとともに使用される前記アプリケーションデータに関する、前記ダウンストリームインタフェース及び前記ＳＳＤの前記エンドポイントを使用して通信する。
【０１６３】
説明５。説明３によれば、本発明の実施例は、システムを含む。説明３において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０１６４】
説明６。説明３によれば、本発明の実施例は、システムを含む。説明３において、前記プロセッサは、非揮発性メモリエクスプレス（ＮＶＭｅ）プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット（ＴＬＰ）を含むＰＣＩｅトランザクションをＳＳＤに伝送する。
【０１６５】
説明７。説明３によれば、本発明の実施例は、システムを含む。システムにおいて、前記ＦＰＧＡは、
加速エンジンと、
前記加速エンジンに前記加速コマンドをスケジューリングするランタイムスケジューラ（ｒｕｎ−ｔｉｍｅ  ｓｃｈｅｄｕｌｅｒ）と、をさらに含む。
【０１６６】
説明８。説明３によれば、本発明の実施例は、システムを含む。説明３において、前記ＳＳＤは、ＦＰＧＡを含む。
【０１６７】
説明９。説明３によれば、本発明の実施例は、システムを含む。説明３において、
前記アップストリームインタフェースは、ＦＰＧＡのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するＦＰＧＡのルートポートを包含し、
前記ＦＰＧＡは、第１  ＰＦ、第２  ＰＦ及び前記ＦＰＧＡルートポートと関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ＳＳＤから受信された第１加速コマンドをインタセプトするように動作し、前記ＡＰＭ−Ｆにダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連される前記第１加速コマンドを伝達するように動作し、
前記ＦＰＧＡは、前記第１  ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、前記第２  ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、前記プロセッサから受信された第１  ＰＣＩｅトランザクションを、前記ＳＳＤに伝達するように動作し、前記プロセッサから受信された第２加速コマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記第１  ＰＣＩｅトランザクションは、前記第１  ＰＦの第１識別子と関連され、
前記第２加速コマンドは、前記第２  ＰＦの第２識別子と関連される。
【０１６８】
説明１０。説明９によると、本発明の実施例は、システムを含む。説明９において、前記加速コマンドは、前記ＡＰＭ−Ｓによって生成される。
【０１６９】
説明１１。説明１０によると、本発明の実施例は、システムを含む。説明１０において、前記ＳＳＤは、前記プロセッサから受信された前記加速コマンドを含む、特定のコマンドをインタセプトし、前記加速コマンドを生成するために、前記ＡＰＭ−Ｓをトリガーするために、前記特定のコマンドを前記ＡＰＭ−Ｓに伝達するホストインタフェースロジック（ＨＩＬ）と、をさらに含む。
【０１７０】
説明１２。説明１１によると、本発明の実施例は、システムを含む。説明１０において、前記特定のコマンドは、前記のプロセッサ上で実行中の加速サービスマネージャ（ＡＳＭ）から由来する。
【０１７１】
説明１３。説明９によると、本発明の実施例は、システムを含む。説明９において、
前記ＳＳＤは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
【０１７２】
説明１４。説明１３によると、本発明の実施例は、システムを含む。説明１３において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０１７３】
説明１５．説明１４によると、本発明の実施例は、システムを含む。説明１４において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用するように動作する。
【０１７４】
説明１６．説明１５によると、本発明の実施例は、システムを含む。説明１５において、前記サイドバンドバスはＩ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス及びＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）を含むセットから得られる。
【０１７５】
説明１７。説明１４によると、本発明の実施例は、システムを含む。説明１４において、前記コントローラは、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用して、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０１７６】
説明１８。説明９によると、本発明の実施例は、システムを含む。説明９において、前記ＡＰＭ−Ｆは、前記のダウンストリームポート及び前記ＳＳＤのエンドポイントを介して前記ＡＰＭ−Ｓに結果を送信するように動作し、
前記コントローラは、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
【０１７７】
説明１９。説明９によると、本発明の実施例は、システムを含む。説明９において、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０１７８】
説明２０。説明９によると、本発明の実施例は、システムを含む。説明９において、前記ＦＰＧＡは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、前記アップストリームフィルタは、前記プロセッサから受信された第２加速コマンドをインタセプトするように動作し、前記アップストリームＦＡＲと関連されている前記第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡはアップストリームポートで前記プロセッサから受信されたアップストリームＦＡＲと関連されていない第３ＰＣＩｅトランザクションを、前記ＳＳＤに伝達するように動作する。
【０１７９】
説明２１。説明２０によると、本発明の実施例は、システムを含む。説明２０において、前記第２加速コマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０１８０】
説明２２。説明２０によると、本発明の実施例は、システムを含む。説明２０において、前記ＳＳＤは、前記プロセッサからホストシステムアドレスのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第１サブセット及びアップストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第２サブセットを選択するように動作する。
【０１８１】
説明２３。説明２２によると、本発明の実施例は、システムを含む。説明２２において、ホストシステムのアドレスのブロックが、前記プロセッサ上で実行中のＡＳＭによってアクセス可能な特定のレジスタを包含し、前記特定のレジスタは、前記アップストリームＦＡＲを識別する。
【０１８２】
説明２４。説明２２によると、本発明の実施例は、システムを含む。説明２２において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲで、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０１８３】
説明２５。説明２４によると、本発明の実施例は、システムを含む。説明２４において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲで、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０１８４】
説明２６。説明２５によると、本発明の実施例は、システムを含む。説明２５において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０１８５】
説明２７。説明２４によると、本発明の実施例は、システムを含む。説明２４において、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して前記ダウンストリームフィルタを前記ダウンストリームＦＡＲで、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０１８６】
説明２８。説明２０によると、本発明の実施例は、システムが含む。説明２０において、
前記ＡＰＭ−Ｆは、前記ダウンストリームポート及び前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｓに結果を伝送するように動作し、
前記コントローラは、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
【０１８７】
説明２９。説明２０によると、本発明の実施例は、システムを含む。説明２０において、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０１８８】
説明３０．説明９によると、本発明の実施例は、システムが含む。説明９において、
前記ＳＳＤは物理機能（ＰＦ）及び仮想機能（ＶＦ）を包含し、前記ＰＦは前記ＳＳＤを露出するために動作し、前記ＶＦは前記ＦＰＧＡを露出するために動作し、
前記ＦＰＧＡは、前記アップストリームポートと関連された前記アップストリームフィルタと、をさらに包含し、前記アップストリームフィルタは、前記プロセッサから受信された第２加速コマンドをインタセプトし、前記第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡは、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされない第３ＰＣＩｅトランザクションを、前記ＳＳＤに伝達するように動作する
【０１８９】
説明３１。説明３０によると、本発明の実施例は、システムを含む。説明３０において、前記第２加速コマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０１９０】
説明３２。説明３０によると、本発明の実施例は、システムを含む。説明３０において、
前記ＰＦは、前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第１サブセットを選択するように動作する。
【０１９１】
説明３３。説明３２によると、本発明の実施例は、システムを含む。説明３２において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０１９２】
説明３４。説明３３によると、本発明の実施例は、システムを含む。説明３３において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０１９３】
説明３５。説明３４によると、本発明の実施例は、システムを含む。説明３４において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０１９４】
説明３６。説明３３によると、本発明の実施例は、システムを含む。説明３３において、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０１９５】
説明３７。説明３０によると、本発明の実施例は、システムを含む。説明３０において、
前記第２加速コマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、アップストリームＦＡＲと関連された前記第２加速コマンドをインタセプトするように動作する。
【０１９６】
説明３８。説明３７によると、本発明の実施例は、システムを含む。説明３７において、前記ＶＦは、前記アップストリームＦＡＲとして前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作する。
【０１９７】
説明３９。説明３８によると、本発明の実施例は、システムを含む。説明３８において、前記コントローラは、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０１９８】
説明４０。説明３９によると、本発明の実施例は、システムを含む。説明３９において、前記コントローラは、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０１９９】
説明４１。説明４０によると、本発明の実施例は、システムを含む。説明４０において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２００】
説明４２。説明３９によると、本発明の実施例は、システムを含む。説明３９において、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０２０１】
説明４３。説明３０によると、本発明の実施例は、システムを含む。説明３０において、
前記第２加速コマンドは、前記ＶＦの識別子を包含し、
前記アップストリームフィルタは、前記ＶＦの前記識別子に関連された前記第２加速コマンドをインタセプトするように動作する。
【０２０２】
説明４４。説明４３によると、本発明の実施例は、システムを含む。説明４３において、前記コントローラは、前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするように動作する。
【０２０３】
説明４５。説明４４によると、本発明の実施例は、システムを含む。説明４４において、前記コントローラは、前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするためにサイドバンドバスを使用するように動作する。
【０２０４】
説明４６。説明４５によると、本発明の実施例は、システムを含む。説明４５において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２０５】
説明４７。説明４４によると、本発明の実施例は、システムを含む。説明４４において、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするように動作する。
【０２０６】
説明４８。説明３０によると、本発明の実施例は、システムを含む。説明３０において、
前記ＡＰＭ−Ｆは、前記のダウンストリームポート及び前記ＳＳＤのエンドポイントを介して前記ＡＰＭ−Ｓに結果を伝送するように動作し、
前記コントローラは、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
【０２０７】
説明４９。説明３０によると、本発明の実施例は、システムを含む。説明３０において、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０２０８】
説明５０。説明９によると、本発明の実施例は、システムを含む。説明９において、
前記ＳＳＤは、前記ＳＳＤを露出するように動作する第１ＰＦ及び前記ＦＰＧＡを露出するように動作する第２ＰＦを包含し、
前記ＦＰＧＡは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、前記アップストリームフィルタは、前記プロセッサから受信された第２加速コマンドをインタセプトするように動作して、前記第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡはアップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされない第３ＰＣＩｅトランザクションを、前記ＳＳＤに伝達する。
【０２０９】
説明５１。説明５０によると、本発明の実施例は、システムを含む。説明５０において、前記第２加速コマンドが、前記プロセッサ上で実行中のＡＳＭから由来する。
【０２１０】
説明５２。説明５０によると、本発明の実施例は、システムを含む。説明５０において、
前記第１  ＰＦは、前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第１サブセットを選択するように動作する。
【０２１１】
説明５３。説明５２によると、本発明の実施例は、システムを含む。説明５２において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０２１２】
説明５４。説明５３によると、本発明の実施例は、システムを含む。説明５３において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記サイドバンドバスを利用するように動作する。
【０２１３】
説明５５。説明５４によると、本発明の実施例は、システムを含む。説明５４において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２１４】
説明５６。説明５３によると、本発明の実施例は、システムを含む。説明５３において、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするように動作する。
【０２１５】
説明５７。説明５０によると、本発明の実施例は、システムを含む。説明５０において、
前記第２加速コマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、前記アップストリームＦＡＲに関連した前記第２の加速コマンドをインタセプトするように動作する。
【０２１６】
説明５８。説明５７によると、本発明の実施例は、システムを含む。説明５７において、前記第２ＰＦが前記アップストリームＦＡＲとして前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作する。
【０２１７】
説明５９。説明５８によると、本発明の実施例は、システムを含む。説明５８において、前記コントローラは、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０２１８】
説明６０。明５９によると、本発明の実施例は、システムを含む。説明５９において、前記コントローラは、前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０２１９】
説明６１。説明６０によると、本発明の実施例は、システムを含む。説明６０において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２２０】
説明６２。説明５９によると、本発明の実施例は、システムを含む。説明５９において、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して前記アップストリームフィルタを前記ＶＦの前記識別子でプログラミングするように動作する。
【０２２１】
説明６３。説明５０によると、本発明の実施例は、システムを含む。説明５０において、
前記第２加速コマンドは、前記第２  ＶＦの識別子を包含し、
前記アップストリームフィルタは、前記第２ＶＦの前記識別子に関連された前記第２加速コマンドをインタセプトするように動作する。
【０２２２】
説明６４。説明６３によると、本発明の実施例は、システムを含む。説明６３において、前記コントローラは、前記第２  ＰＦの前記識別子で前記アップストリームフィルタをプログラミングするように動作する。
【０２２３】
説明６５。説明６４によると、本発明の実施例は、システムを含む。説明６４において、前記コントローラは、前記第２  ＰＦの前記識別子で前記アップストリームフィルタをプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０２２４】
説明６６。説明６５によると、本発明の実施例は、システムを含む。説明６５において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２２５】
説明６７。説明６４によると、本発明の実施例は、システムを含む。説明６４において、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して前記アップストリームフィルタを前記第２ＰＦの前記識別子でプログラミングするように動作する。
【０２２６】
説明６８。説明５０によると、本発明の実施例は、システムを含む。説明５０において、
前記ＡＰＭ−Ｆは、前記ダウンストリームポート及び前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｓに結果を伝送するように動作し、
前記コントローラの前記の結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝達するように動作する。
【０２２７】
説明６９。説明５０によると、本発明の実施例は、システムを含む。説明５０において、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０２２８】
説明７０。説明３によれば、本発明の実施例は、システムを含む。説明３において、
前記アップストリームインタフェースは、ＦＰＧＡのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するＦＰＧＡのルートポートを包含し、
前記ＦＰＧＡは、第１  ＰＦ、第２  ＰＦ、及び前記ＦＰＧＡルートポートと関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信された第１加速コマンドをインタセプトするように動作して前記第１加速コマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記第１加速コマンドは、ダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連付けられ、
前記ＦＰＧＡは、前記第１  ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、前記第２  ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、
前記ＦＰＧＡは、前記プロセッサから受信されたＰＣＩｅトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信された第２加速コマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記ＰＣＩｅトランザクションは、前記第１  ＰＦの第１識別子と関連付けられ、
前記第２加速コマンドは、前記第２  ＰＦの第２識別子と関連付けられる。
【０２２９】
説明７１。説明７０によると、本発明の実施例は、システムを含む。説明７０において、
前記ＳＳＤは、前記ＦＰＧＡから前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックを要請するように動作し、
前記ホストシステムアドレスの前記第２ブロックは、少なくとも前記ＦＰＧＡアドレスの前記ブロックほど大きく、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記ＦＰＧＡアドレスの前記ブロックのサブセットを選択するように動作する。
【０２３０】
説明７３。説明７２によると、本発明の実施例は、システムを含む。説明７２において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０２３１】
説明７４。説明７３によると、本発明の実施例は、システムを含む。説明７３において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２３２】
説明７５。説明７２によると、本発明の実施例は、システムを含む。説明７２において、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０２３３】
説明７６。説明７０によると、本発明の実施例は、システムを含む。説明７０において、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
【０２３４】
説明７７。説明７０によると、本発明の実施例は、システムを含む。説明７０において、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニタと、をさらに包含する。
【０２３５】
説明７８。説明３によれば、本発明の実施例は、システムを含む。説明３において、
前記アップストリームインタフェースは、ＦＰＧＡのエンドポイントを包含し、
前記ダウンストリームインタフェースは、第１構成空間を支援する第１  ＦＰＧＡのルートポート及び第２構成空間を支援する第２  ＦＰＧＡのルートポートを包含し、
前記ＳＳＤの前記エンドポイントは、前記第１  ＦＰＧＡのルートポートと関連し、
前記ＳＳＤは、前記第２のＦＰＧＡのルートポートと関連された前記ＳＳＤの第２エンドポイントと、をさらに包含し、
前記ＦＰＧＡは、第１  ＰＦ及び第２  ＰＦを包含し、
前記ＦＰＧＡは、前記第１  ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作して前記第２  ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、
前記ＦＰＧＡは、
前記プロセッサから受信された第１  ＰＣＩｅトランザクションを前記第１  ＦＰＧＡのルートポート及び前記ＳＳＤの前記エンドポイントを介して前記ＳＳＤに伝送するように動作し、
前記プロセッサから受信された第２加速コマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記第１  ＦＰＧＡのルートポートで、前記ＳＳＤから受信された第２ＰＣＩｅトランザクションを前記プロセッサに伝達するように動作し、
前記第２のＦＰＧＡのルートポートで、前記ＳＳＤから受信された第１加速コマンドを前記ＡＰＭ−Ｆに伝達するように動作し、
前記第１  ＰＣＩｅトランザクションは、前記第１  ＰＦの第１識別子と関連付けられ、
前記第２加速コマンドは、前記第２  ＰＦの第２識別子と関連付けられる。
【０２３６】
説明７９。説明７８によると、本発明の実施例は、システムを含む。説明７８において、前記第２加速コマンドは、前記ＡＰＭ−Ｓによって生成される。
【０２３７】
説明８０。説明７８によると、本発明の実施例は、システムを含む。説明３３において、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送する。
【０２３８】
説明８１。説明７８によると、本発明の実施例は、システムを含む。説明３３において、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニタと、をさらに含む。
【０２３９】
説明８２。説明７８によると、本発明の実施例は、システムを含む。説明７８において、
前記アップストリームインタフェースは、第２  ＦＰＧＡのエンドポイントと、をさらに包含し、
前記ＦＰＧＡは、前記ＦＰＧＡエンドポイントにおいて、前記プロセッサから受信された第１  ＰＣＩｅトランザクションを前記第１  ＦＰＧＡのルートポート及び前記ＳＳＤのエンドポイントを介して前記ＳＳＤに伝達するようにさらに動作し、前記第２  ＦＰＧＡのエンドポイントで、前記プロセッサから受信された前記第２加速コマンドを前記ＡＰＭ−Ｆに伝達するように、さらに動作する。
【０２４０】
説明８３。説明８２によると、本発明の実施例は、システムを含む。説明８２において、前記第２加速コマンドは、前記ＡＰＭ−Ｓによって生成される。
【０２４１】
説明８４。説明８２によると、本発明の実施例は、システムを含む。説明８２において、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
【０２４２】
説明８５。説明８２によると、本発明の実施例は、システムを含む。説明８２において、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニタと、をさらに包含する。
【０２４３】
説明８６。説明３によれば、本発明の実施例は、システムを含む。説明３において、
前記アップストリームインタフェースは、第１  ＦＰＧＡエンドポイント及び第２  ＦＰＧＡのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するＦＰＧＡのルートポートを包含し、
前記ＦＰＧＡは、前記ＦＰＧＡルートポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ＳＳＤから受信された第１加速コマンドをインタセプトするように動作して、前記ＡＰＭ−Ｆに前記第１加速コマンドを伝達するように動作し、
前記第１加速コマンドは、ダウンストリームＦＡＲと関連し、
前記ＦＰＧＡは、
前記ＦＰＧＡエンドポイントにおいて、前記プロセッサから受信された第１  ＰＣＩｅトランザクションを前記第１  ＦＰＧＡのルートポート及び前記ＳＳＤの前記エンドポイントを介して前記ＳＳＤに伝達するように動作し、
前記第２ＦＰＧＡのエンドポイントにおいて、前記プロセッサから受信された第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１  ＦＰＧＡのルートポートで、前記ＳＳＤから受信された前記ダウンストリームＦＡＲと関連されていない第２ＰＣＩｅトランザクションを、前記ＦＰＧＡエンドポイントを介して前記プロセッサに伝達するように動作し、
前記第２ＦＰＧＡのルートポートで、前記ＳＳＤから受信された第１加速コマンドを前記ＡＰＭ−Ｆに伝達するように動作する。
【０２４４】
説明８７。説明８６によると、本発明の実施例は、システムを含む。説明８６において、前記第２加速コマンドは、前記ＡＰＭ−Ｓによって生成される。
【０２４５】
説明８８。説明８６によると、本発明の実施例は、システムを含む。説明８６において、
前記ＳＳＤは、前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックを前記ＦＰＧＡから要請するように動作し、
前記ＦＰＧＡは、少なくとも前記ＦＰＧＡアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを前記第１  ＦＰＧＡエンドポイントに対する前記プロセッサから要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして前記ＦＰＧＡアドレスの前記ブロックのサブセットを選択するように動作する。
【０２４６】
説明８９。説明８８によると、本発明の実施例は、システムを含む。説明８８において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０２４７】
説明９０。説明８９によると、本発明の実施例は、システムを含む。説明８９において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記サイドバンドバスを使用するように動作する。
【０２４８】
説明９１。説明９０によると、本発明の実施例は、システムを含む。説明９０において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２４９】
説明９２。説明８９によると、本発明の実施例は、システムが含む。説明８９において、前記コントローラは、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記ＰＣＩｅ  ＶＤＭを使用するように動作する。
【０２５０】
説明９３。説明８６によると、本発明の実施例は、システムを含む。説明８６において、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送する。
【０２５１】
説明９４。説明８６によると、本発明の実施例は、システムを含む。説明８６において、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニタと、をさらに含む。
【０２５２】
説明９５。本発明の実施例は、加速モジュールを含む。加速モジュールは、
加速コマンドを実行するための加速プラットフォームマネージャ（ＡＰＭ−Ｆ）と、
プロセッサと通信するためのアップストリームインタフェースと、
前記加速コマンドを実行するのに前記ＡＰＭ−Ｆを補助するためのストレージデバイスの加速プラットフォームマネージャ（ＡＰＭ−Ｓ）を含むストレージデバイスと通信するためのダウンストリームインタフェースを包含し、
前記プロセッサ上でアプリケーションが実行され、
前記加速モジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して前記プロセッサ及び前記ストレージデバイスと通信し、
前記加速モジュールは、前記プロセッサと関連されたメモリにアプリケーションのデータをローディングすることなく、前記アプリケーションに対する前記ストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
【０２５３】
説明９６。説明９５によると、本発明の実施例は、加速モジュールを含む。説明９５において、前記加速モジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現される。
【０２５４】
説明９７。説明９６によると、本発明の実施例は、加速モジュールを含む。説明９６において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓは、前記加速コマンドとともに使用される前記アプリケーションのデータに関する前記ダウンストリームインタフェースを使用して通信する。
【０２５５】
説明９８。説明９６によると、本発明の実施例は、加速モジュールを含む。説明９６において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０２５６】
説明９９。説明９６によると、本発明の実施例は、加速モジュールを含む。説明９６において、前記ＦＰＧＡは、
加速エンジンと、
前記加速エンジンで前記加速コマンドをスケジューリングするランタイムスケジューラ（ｒｕｎ−ｔｉｍｅ  ｓｃｈｅｄｕｌｅｒ）と、をさらに含む。
【０２５７】
説明１００。説明９６によると、本発明の実施例は、加速モジュールを含む。説明９６において、
前記アップストリームインタフェースはアップストリームポートを包含し、
前記ダウンストリームインタフェースはダウンストリームポートを包含し、
前記ＦＰＧＡは、前記アップストリームポートで前記プロセッサから受信された第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するように動作し、
前記ＦＰＧＡは、前記ダウンストリームポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信された加速コマンドをインタセプトするように動作して前記ＡＰＭ−Ｆに前記加速コマンドを伝達するように動作し、
前記加速コマンドは、ダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連付けられ、
前記ＦＰＧＡは、ダウンストリームポートで、前記ストレージデバイスから受信された前記ダウンストリームＦＡＲと関連していない第２ＰＣＩｅトランザクションを前記プロセッサに伝送するように動作する。
【０２５８】
説明１０１。説明１００によると、本発明の実施例は、加速モジュールを含む。説明１００において、前記ＦＰＧＡの前記ダウンストリームフィルタで前記ダウンストリームＦＡＲは、前記コントローラによってプログラミングされる。
【０２５９】
説明１０２。説明１０１によると、本発明の実施例は、加速モジュールを含む。説明１０１において、前記ＦＰＧＡの前記ダウンストリームフィルタで前記ダウンストリームＦＡＲは、前記サイドバンドバスを介して前記コントローラによってプログラミングされる。
【０２６０】
説明１０３。説明１０２によると、本発明の実施例は、加速モジュールを含む。説明１０２において、前記サイドバンドバスはＩ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス及びＳＭ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）バスを含むセットから得られる。
【０２６１】
説明１０４。説明１０１によると、本発明の実施例は、加速モジュールを含む。説明１０１において、前記ＦＰＧＡの前記ダウンストリームフィルタで前記ダウンストリームＦＡＲはＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用して、前記コントローラによってプログラミングされる。
【０２６２】
説明１０５。説明１００によると、本発明の実施例は、加速モジュールを含んでいる。説明１００において、前記ＡＰＭ−Ｆは、前記ダウンストリームポートを介して前記ストレージデバイスのＡＭＰ−Ｓに結果を伝送するように動作する。
【０２６３】
説明１０６。説明１００によると、本発明の実施例は、加速モジュールを含む。説明１００において、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０２６４】
説明１０７。説明１００によると、本発明の実施例は、加速モジュールを含む。説明１００において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０２６５】
説明１０８。説明１００によると、本発明の実施例は、加速モジュールを含む。説明１００において、
前記ＦＰＧＡは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、
前記アップストリームフィルタは、前記プロセッサから受信された第２加速コマンドをインタセプトするよう動作し、アップストリームＦＡＲと関連付けられる前記第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡはアップストリームポートで前記プロセッサから受信された前記アップストリームＦＡＲと関連されていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０２６６】
説明１０９。説明１０８によると、本発明の実施例は、加速モジュールを含む。説明１０８において、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０２６７】
説明１１０。説明１０９によると、本発明の実施例は、加速モジュールを含む。説明１０９において、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０２６８】
説明１１１。説明１１０によると、本発明の実施例は、加速モジュールを含む。説明１１０において、前記サイドバンドバスはＩ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス及びＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）を含むセットから得られる。
【０２６９】
説明１１２。説明１０９によると、本発明の実施例は、加速モジュールを含む。説明１０９において、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ＰＣＩｅ  ＶＤＭを用いて前記ストレージデバイスによってプログラミングされる。
【０２７０】
説明１１３。説明１０８によると、本発明の実施例は、加速モジュールを含む。説明１０８において、前記ＡＰＭ−Ｆは、前記ダウンストリームポートを介して前記ストレージデバイスのＡＭＰ−Ｓへ結果を伝送するように動作する。
【０２７１】
説明１１４。説明１０８によると、本発明の実施例は、加速モジュールを含む。説明１０８において、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０２７２】
説明１１５。説明１０８によると、本発明の実施例は、加速モジュールを含む。説明１０８において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０２７３】
説明１１６。説明１０８によると、本発明の実施例は、加速モジュールを含む。説明１０８において、前記ＦＰＧＡは、前記ストレージデバイスに割り当てられた非揮発性メモリエクスプレス（ＮＶＭｅ）レジスタを介して前記プロセッサに対して間接的に露出される。
【０２７４】
説明１１７。説明１００によると、本発明の実施例は、加速モジュールを含む。説明１００において、
前記ＦＰＧＡは、前記ストレージデバイスの仮想機能（ＶＦ）により露出され、
前記ＦＰＧＡは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、
前記アップストリームフィルタは、前記プロセッサから受信された第２加速コマンドをインタセプトするよう動作し、前記第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡは、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０２７５】
説明１１８。説明１１７によると、本発明の実施例は、加速モジュールを含む。説明１１７において、
前記第２加速コマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、アップストリームＦＡＲと関連された前記第２加速コマンドをインタセプトするように動作する。
【０２７６】
説明１１９。説明１１８によると、本発明の実施例は、加速モジュールを含む。説明１１８において、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０２７７】
説明１２０。説明１１９によると、本発明の実施例は、加速モジュールを含む。説明１１９において、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０２７８】
説明１２１。説明１２０によると、本発明の実施例は、加速モジュールを含む。説明１２０において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２７９】
説明１２２。説明１１９によると、本発明の実施例は、加速モジュールを含む。説明１１９において、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲはＰＣＩｅ  ＶＤＭを使用して、前記ストレージデバイスによってプログラミングされる。
【０２８０】
説明１２３。説明１１７によると、本発明の実施例は、加速モジュールを含む。説明１１７において、
前記第２加速コマンドは、前記ＶＦの識別子を包含し、
前記アップストリームフィルタは、前記ＶＦの前記識別子に関連された前記第２加速コマンドをインタセプトするように動作する。
【０２８１】
説明１２４。説明１２３によると、本発明の実施例は、加速モジュールを含む。説明１２３において、前記ＦＰＧＡの前記アップストリームフィルタは、前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０２８２】
説明１２５。説明１２４によると、本発明の実施例は、加速モジュールを含む。説明１２４において、前記ＦＰＧＡの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０２８３】
説明１２６。説明１２５によると、本発明の実施例は、加速モジュールを含む。説明１２５において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２８４】
説明１２７。説明１２４によると、本発明の実施例は、加速モジュールを含む。説明１２４において、前記ＦＰＧＡの前記アップストリームフィルタはＰＣＩｅ  ＶＤＭを用いて前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０２８５】
説明１２８。説明１１７によると、本発明の実施例は、加速モジュールを含む。説明１１７において、前記ＡＰＭ−Ｆは、前記ダウンストリームポートを介して前記ストレージデバイスの前記ＡＭＰ−Ｓへ結果を伝送するように動作する。
【０２８６】
説明１２９。説明１１７によると、本発明の実施例は、加速モジュールを含む。説明１１７において、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０２８７】
説明１３０。説明１１７によると、本発明の実施例は、加速モジュールを含む。説明１１７において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０２８８】
説明１３１。説明１００によると、本発明の実施例は、加速モジュールを含む。説明１００において、
前記ＦＰＧＡは、前記ストレージデバイスの物理機能（ＰＦ）により露出され、
前記ＦＰＧＡは、前記アップストリームポートと関連されたアップストリームフィルタと、をさらに包含し、
前記アップストリームフィルタは、前記プロセッサから受信された第２加速コマンドをインタセプトするよう動作し、前記第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＦＰＧＡは、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０２８９】
説明１３２。説明１３１によると、本発明の実施例は、加速モジュールを含む。説明１３１において、
前記第２加速コマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、アップストリームＦＡＲに関連された前記第２加速コマンドをインタセプトするように動作する。
【０２９０】
説明１３３。説明１３２によると、本発明の実施例は、加速モジュールを含む。説明１３２において、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０２９１】
説明１３４。説明１３３によると、本発明の実施例は、加速モジュールを含む。説明１３３において、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０２９２】
説明１３５。説明１３４によると、本発明の実施例は、加速モジュールを含む。説明１３４において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２９３】
説明１３６。説明１３３によると、本発明の実施例は、加速モジュールを含む。説明１３３において、前記ＦＰＧＡの前記アップストリームフィルタ内で前記アップストリームＦＡＲはＰＣＩｅ  ＶＤＭを使用して、前記ストレージデバイスによってプログラミングされる。
【０２９４】
説明１３７。説明１３１によると、本発明の実施例は、加速モジュールを含む。説明１３１において、
前記第２加速コマンドは、前記ＰＦの識別子を包含し、
前記アップストリームフィルタは、前記ＰＦの前記識別子に関連された前記第２加速コマンドをインタセプトするように動作する。
【０２９５】
説明１３８。説明１３７によると、本発明の実施例は、加速モジュールを含む。説明１３７において、前記ＦＰＧＡの前記アップストリームフィルタは、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０２９６】
説明１３９。説明１３８によると、本発明の実施例は、加速モジュールを含む。説明１３８において、前記ＦＰＧＡの前記アップストリームフィルタはサイドバンドバスを使用して、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０２９７】
説明１４０。説明１３９によると、本発明の実施例は、加速モジュールを含む。説明１３９において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０２９８】
説明１４１。説明１３８によると、本発明の実施例は、加速モジュールを含む。説明１３８において、前記ＦＰＧＡの前記アップストリームフィルタはＰＣＩｅ  ＶＤＭを使用して、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０２９９】
説明１４２。説明１３１によると、本発明の実施例は、加速モジュールを含む。説明１３１において、前記ＡＰＭ−Ｆは、前記ダウンストリームポートを介して前記ＡＰＭ−Ｓへ結果を伝送するように動作する。
【０３００】
説明１４３。説明１３１によると、本発明の実施例は、加速モジュールを含む。説明１３１において、前記ＡＰＭ−Ｆは、前記アップストリームポートを介して前記プロセッサに結果を伝送するように動作する。
【０３０１】
説明１４４。説明１３１によると、本発明の実施例は、加速モジュールを含む。説明１３１において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０３０２】
説明１４５。説明９６によると、本発明の実施例は、加速モジュールを含む。説明９６において、
前記アップストリームインタフェースは、ＦＰＧＡのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するＦＰＧＡのルートポートを包含し、
前記ＦＰＧＡは、第１  ＰＦ、第２  ＰＦ、及び前記ＦＰＧＡルートポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信された第１加速コマンドをインタセプト  するように動作し、前記第１加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１加速コマンドは、ダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連付けられ、
前記ＦＰＧＡは、前記第１  ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、前記第２  ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、
前記ＦＰＧＡは、前記プロセッサから受信されたＰＣＩｅトランザクションを前記ストレージデバイスに伝達するように動作し、前記プロセッサから受信された第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記ＰＣＩｅトランザクションは、前記第１  ＰＦの第１識別子と関連付けられ、
前記第２加速コマンドは、前記第２  ＰＦの第２識別子と関連付けられる。
【０３０３】
説明１４６。説明１４５によると、本発明の実施例は、加速モジュールを含む。説明１４５において、
前記ＦＰＧＡは、前記ＦＰＧＡから前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックに対する要請を前記ストレージデバイスから受信するように動作し、
前記ＦＰＧＡは、前記構成空間から前記ＦＰＧＡアドレスの前記ブロックを割り当てるように動作し、
前記ホストシステムアドレスの前記第１ブロックは、少なくとも前記ＦＰＧＡアドレスの前記ブロックほど大きい。
【０３０４】
説明１４７。説明１４６によると、本発明の実施例は、加速モジュールを含む。説明１４６において、前記ＦＰＧＡの前記ダウンストリームフィルタ内で前記ダウンストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０３０５】
説明１４８。説明１４７によると、本発明の実施例は、加速モジュールを含む。説明１４７において、前記ＦＰＧＡの前記ダウンストリームフィルタ内で前記ダウンストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０３０６】
説明１４９。説明１４８によると、本発明の実施例は、加速モジュールを含む。説明１４８において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３０７】
説明１５０。説明１４７によると、本発明の実施例は、加速モジュールを含む。説明１４７において、前記ＦＰＧＡの前記ダウンストリームフィルタ内で前記ダウンストリームＦＡＲは、前記ＰＣＩｅ  ＶＤＭを用いて前記ストレージデバイスによってプログラミングされる。
【０３０８】
説明１５１。説明１４５によると、本発明の実施例は、加速モジュールを含む。説明１４５において、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
【０３０９】
説明１５２。説明１４５によると、本発明の実施例は、加速モジュールを含んでいる。説明１４５において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０３１０】
説明１５３。説明１４５によると、本発明の実施例は、加速モジュールを含む。説明１４５において、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記ＦＰＧＡのエンドポイントにコピーするための構成モニタと、をさらに包含する。
【０３１１】
説明１５４。説明９６によると、本発明の実施例は、加速モジュールを含む。説明９６において、
前記アップストリームインタフェースは、ＦＰＧＡのエンドポイントを包含し、
前記ダウンストリームインタフェースは、第１構成空間を支援する第１  ＦＰＧＡのルートポート及び第２構成空間を支援する第２  ＦＰＧＡのルートポートを包含し、
前記ＳＳＤの前記エンドポイントは、前記第１  ＦＰＧＡのルートポートと関連し、
前記ＳＳＤは、前記第２ＦＰＧＡのルートポートと関連された前記ＳＳＤの第２エンドポイントと、をさらに包含し、
前記ＦＰＧＡは、第１  ＰＦ及び第２  ＰＦを包含し、
前記ＦＰＧＡは、前記第１  ＰＦに対する前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作して前記第２  ＰＦに対する前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作し、
前記ＦＰＧＡは、
前記プロセッサから受信された第１  ＰＣＩｅトランザクションを前記第１  ＦＰＧＡのルートポート及び前記ＳＳＤの前記エンドポイントを介して前記ＳＳＤに伝送するように動作し、
前記プロセッサから受信された第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１  ＦＰＧＡのルートポートで、前記ＳＳＤから受信された第２ＰＣＩｅトランザクションを前記プロセッサに伝達するよう動作し、
前記第２ＦＰＧＡのルートポートで、前記ＳＳＤから受信された第１加速コマンドを前記ＡＰＭ−Ｆに伝達するように動作する。
【０３１２】
説明１５５。説明１５４によると、本発明の実施例は、加速モジュールを含む。説明１５４において、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送する。
【０３１３】
説明１５６。説明１５４によると、本発明の実施例は、加速モジュールを含む。説明１５４において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０３１４】
説明１５７。説明１５４によると、本発明の実施例は、加速モジュールを含む。説明１５４において、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記のＦＰＧＡのエンドポイントにコピーするための構成モニタと、をさらに含む。
【０３１５】
説明１５８。説明１５４によると、本発明の実施例は、加速モジュールを含む。説明１５４において、
前記アップストリームインタフェースは、第２  ＦＰＧＡのエンドポイントと、をさらに包含し、
前記ＦＰＧＡは、前記ＦＰＧＡエンドポイントにおいて、前記プロセッサから受信された第１  ＰＣＩｅトランザクションを前記第１  ＦＰＧＡのルートポート及び前記ＳＳＤのエンドポイントを介して前記ＳＳＤに伝達するように、さらに動作し、前記第２  ＦＰＧＡのエンドポイントで、前記プロセッサから受信された前記第２加速コマンドを前記ＡＰＭ−Ｆに伝達するように、さらに動作する。
【０３１６】
説明１５９。説明１５８によると、本発明の実施例は、加速モジュールを含む。説明１５８において、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
【０３１７】
説明１６０。説明１５８によると、本発明の実施例は、加速モジュールを含む。説明１５８において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０３１８】
説明１６１。説明１５８によると、本発明の実施例は、加速モジュールを含む。説明１５８において、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記のＦＰＧＡのエンドポイントにコピーするための構成モニタと、をさらに含む。
【０３１９】
説明１６２。説明９６によると、本発明の実施例は、加速モジュールを含む。説明９６において、
前記アップストリームインタフェースは、第１  ＦＰＧＡエンドポイント及び第２  ＦＰＧＡのエンドポイントを包含し、
前記ダウンストリームインタフェースは、構成空間を支援するＦＰＧＡのルートポートを包含し、
前記ＦＰＧＡは、前記ＦＰＧＡルートポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ＳＳＤから受信された第１加速コマンドをインタセプトするように動作して、前記ＡＰＭ−Ｆに前記第１加速コマンドを伝達するように動作し、
前記第１加速コマンドは、ダウンストリームＦＡＲと関連し、
前記ＦＰＧＡは、
前記ＦＰＧＡエンドポイントにおいて、前記プロセッサから受信された第１  ＰＣＩｅトランザクションを、前記第１  ＦＰＧＡのルートポート及び前記ＳＳＤの前記エンドポイントを介して前記ＳＳＤに伝達するように動作し、
前記第２ＦＰＧＡのエンドポイントにおいて、前記プロセッサから受信された第２加速コマンドを前記ＡＰＭ−Ｆに伝達するよう動作し、
前記第１  ＦＰＧＡのルートポートで、前記ＳＳＤから受信された前記ダウンストリームＦＡＲと関連されていない第２ＰＣＩｅトランザクションを前記ＦＰＧＡエンドポイントを介して前記プロセッサに伝達するよう動作し、
前記第２ＦＰＧＡのルートポートで、前記ＳＳＤから受信された第１加速コマンドを前記ＡＰＭ−Ｆに伝達するように動作する。
【０３２０】
説明１６３。説明１６２によると、本発明の実施例は、加速モジュールを含む。説明１６２において、
前記ＦＰＧＡは、前記ＦＰＧＡから前記ダウンストリームＦＡＲを含むＦＰＧＡアドレスのブロックの要請を前記ストレージデバイスから受信するように動作し、
前記ＦＰＧＡは、前記構成空間から前記ＦＰＧＡアドレスの前記ブロックを割り当てるように動作し、
前記ＦＰＧＡは、前記第１  ＦＰＧＡのプロセッサから少なくとも前記ＦＰＧＡアドレスの前記ブロックほど大きなホストシステムアドレスのブロックを要請するように動作する。
【０３２１】
説明１６４。説明１６３によると、本発明の実施例は、加速モジュールを含む。説明１６３において、前記ＦＰＧＡの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０３２２】
説明１６５。説明１６４によると、本発明の実施例は、加速モジュールを含む。説明１６４において、前記ＦＰＧＡの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲはサイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０３２３】
説明１６６。説明１６５によると、本発明の実施例は、加速モジュールを含む。説明１６５において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３２４】
説明１６７。説明１６４によると、本発明の実施例は、加速モジュールを含む。説明１６４において、前記ＦＰＧＡの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲはＰＣＩｅ  ＶＤＭを用いて前記ストレージデバイスによってプログラミングされる。
【０３２５】
説明１６８。説明１６２によると、本発明の実施例は、加速モジュールを含む。説明１６２において、前記ＡＰＭ−Ｆは、前記ＦＰＧＡのエンドポイントを介して前記プロセッサに結果を伝送するように動作する。
【０３２６】
説明１６９。説明１６２によると、本発明の実施例は、加速モジュールを含む。説明１６２において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０３２７】
説明１７０。説明１６２によると、本発明の実施例は、加速モジュールを含む。説明１６２において、前記ＦＰＧＡは、前記ストレージデバイスの前記エンドポイントの性能を前記のＦＰＧＡのエンドポイントにコピーするための構成モニタと、をさらに含む。
【０３２８】
説明１７１。本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネント（構成要素）を含んでいる。第１ブリッジコンポーネントは、
プロセッサと通信するためのアップストリームインタフェースと、
加速モジュール及びストレージデバイスと通信するためのダウンストリームインタフェースを包含し、
前記プロセッサ上でアプリケーションが実行され、
前記第１ブリッジ構成要素（コンポーネント）は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、前記プロセッサ、前記加速モジュール及び前記ストレージデバイスと通信し、
前記ダウンストリームインタフェースは、前記ＰＣＩｅトランザクションが加速コマンドを包含しているか否かに応じて前記プロセッサから前記加速モジュール又は前記ストレージデバイスにＰＣＩｅトランザクションを伝達するように動作する。
【０３２９】
説明１７２。説明１７１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネント（構成要素）を含んでいる。
説明１７１において、
前記加速モジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０３３０】
説明１７３。説明１７１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７１において、第２ブリッジコンポーネントを包含し、前記第２ブリッジコンポーネントは、
前記プロセッサ及び前記加速モジュールと通信するための第２アップストリームインタフェースと、及び
前記ストレージデバイスと通信するための第２ダウンストリームインタフェースを包含し、
前記第２ブリッジコンポーネントは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、前記プロセッサ、前記加速モジュール及び前記ストレージデバイスと通信し、
前記第２アップストリームインタフェースは、前記第２ＰＣＩｅトランザクションが第２加速コマンドを包含しているか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記加速モジュールに第２  ＰＣＩｅトランザクションを伝達するように動作する。
【０３３１】
説明１７４。説明１７１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７１において、前記アップストリームインタフェースは、
アップストリームポートと、及び
前記アップストリームポートに関連されたアップストリームフィルタを包含し、
前記アップストリームフィルタは、前記プロセッサから受信されたアップストリームＦＡＲに関連された第２加速コマンドを識別するように動作し、
前記ダウンストリームインタフェースは、前記第２加速コマンドを前記加速モジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信されたアップストリームＦＡＲと関連されていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０３３２】
説明１７５。説明１７４によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７４において、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０３３３】
説明１７６。説明１７５によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７５において、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０３３４】
説明１７７。説明１７６によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７６において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３３５】
説明１７８。説明１７５によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７５において、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記ＰＣＩｅ  ＶＤＭは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０３３６】
説明１７９。説明１７４によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７４において、前記ＦＰＧＡは、前記ストレージデバイスに割り当てられた非揮発性メモリエクスプレス（ＮＶＭｅ）レジスタを介して前記プロセッサに対して間接的に露出される。
【０３３７】
説明１８０。説明１７１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７１において、
前記アップストリームインタフェースは、前記ストレージデバイスの仮想機能（ＶＦ）により露出され、
前記アップストリームインタフェースは、
アップストリームポートと、
前記アップストリームポートと関連されたアップストリームフィルタを包含し、
前記アップストリームフィルタは、前記加速モジュールに対する第２加速コマンドを識別するように動作し、
前記ダウンストリームインタフェースは、前記第２加速コマンドを前記加速モジュールに伝達するように動作し、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０３３８】
説明１８１。説明１８０によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８０において、
前記第２加速コマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、アップストリームＦＡＲに関連された前記第２加速コマンドをインタセプトするように動作する。
【０３３９】
説明１８２。説明１８１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８１において、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０３４０】
説明１８３。説明１８２によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８２において、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記サイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０３４１】
説明１８４。説明１８３によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８３において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３４２】
説明１８５。説明１８２によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８２において、前記第１ブリッジコンポーネントの前記アップストリームフィルタ内で前記アップストリームＦＡＲは、前記ＰＣＩｅ  ＶＤＭを用いて前記ストレージデバイスによってプログラミングされる。
【０３４３】
説明１８６。説明１８０によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８０において、
前記第２加速コマンドは、前記ＶＦの識別子を包含し、
前記アップストリームフィルタは、前記ＶＦの前記識別子に関連された前記第２加速コマンドをインタセプトするように動作する。
【０３４４】
説明１８７。説明１８６によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８６において、前記第１ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０３４５】
説明１８８。説明１８７によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８７において、前記第１ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０３４６】
説明１８９。説明１８８によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８８において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３４７】
説明１９０。説明１８７によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１８７において、前記第１ブリッジコンポーネントの前記アップストリームフィルタはＰＣＩｅ  ＶＤＭを用いて前記ストレージデバイスにより前記ＶＦの前記識別子でプログラミングされる。
【０３４８】
説明１９１。説明１７１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７１において、
前記アップストリームインタフェースは、前記ストレージデバイスの物理機能（ＰＦ）により露出され、
前記アップストリームインタフェースは、
アップストリームポートと、
前記アップストリームポートと関連されたアップストリームフィルタを包含し、
前記アップストリームフィルタは、前記加速モジュールに対する第２加速コマンドを識別するように動作し、
前記ダウンストリームインタフェースは、前記第２加速コマンドを前記加速モジュールに伝送するように動作し、前記アップストリームポートで前記プロセッサから受信された前記アップストリームフィルタによってインタセプトされていない第３ＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作する。
【０３４９】
説明１９２。説明１９１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９１において、
前記第２加速コマンドは、前記アップストリームＦＡＲと関連し、
前記アップストリームフィルタは、前記アップストリームＦＡＲに関連された前記第２加速コマンドをインタセプトするように動作する。
【０３５０】
説明１９３。説明１９２によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９２において、前記第１ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスによってプログラミングされる。
【０３５１】
説明１９４。説明１９３によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９３において、前記第１ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスによってプログラミングされる。
【０３５２】
説明１９５。説明１９４によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９４において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３５３】
説明１９６。説明１９３によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９３において、前記第１ブリッジコンポーネントの前記アップストリームフィルタはＰＣＩｅ  ＶＤＭを用いて前記ストレージデバイスによってプログラミングされる。
【０３５４】
説明１９７。説明１９１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９１において、
前記第２加速コマンドは、前記ＰＦの識別子を包含し、
前記アップストリームフィルタは、前記ＰＦの前記識別子に関連された前記第２加速コマンドをインタセプトするように動作する。
【０３５５】
説明１９８。説明１９７によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９７において、前記第１ブリッジコンポーネントの前記アップストリームフィルタは、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０３５６】
説明１９９。説明１９８によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９８において、前記第１ブリッジコンポーネントの前記アップストリームフィルタはサイドバンドバスを利用して前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０３５７】
説明２００。説明１９９によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９９において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３５８】
説明２０１。説明１９８によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１９８において、前記第１ブリッジコンポーネントの前記アップストリームフィルタはＰＣＩｅ  ＶＤＭを使用して、前記ストレージデバイスにより前記ＰＦの前記識別子でプログラミングされる。
【０３５９】
説明２０２。説明１７１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７１において、
前記アップストリームインタフェースは、
エンドポイントと、
第１  ＰＦと、及び
第２  ＰＦを包含し、
前記ダウンストリームインタフェースは、前記プロセッサから受信されたＰＣＩｅトランザクションを前記ストレージデバイスに伝送するように動作して、前記プロセッサから受信された第２加速コマンドを前記加速モジュールに伝送するように動作し、
前記ＰＣＩｅトランザクションは、前記第１  ＰＦの第１識別子と関連し、
前記第２加速コマンドは、前記第２  ＰＦの第２識別子と関連する。
【０３６０】
説明２０３。説明２０２によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明２０２において、前記第１ブリッジコンポーネントは、前記ストレージデバイスの前記エンドポイントの性能を前記のエンドポイントにコピーするための構成モニタと、をさらに含む。
【０３６１】
説明２０４。説明１７１によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明１７１において、
前記アップストリームインタフェースは、
第１エンドポイントと、
第２エンドポイントを包含し、
前記ダウンストリームインタフェースは、前記プロセッサから受信された前記第１エンドポイントに関連されたＰＣＩｅトランザクションを前記ストレージデバイスに伝達するように動作して、前記プロセッサから受信された第２加速コマンドを前記加速モジュールに伝達するよう動作し、
前記第２加速コマンドは、前記第２エンドポイントと関連している。
【０３６２】
説明２０５。説明２０４によると、本発明の実施例は、ハードウェアを使用して具現される第１ブリッジコンポーネントを含んでいる。説明２０４において、前記第１ブリッジコンポーネントは、前記ストレージデバイスの前記エンドポイントの性能を前記第１エンドポイントにコピーするための構成モニタと、をさらに含む。
【０３６３】
説明２０６。本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。第２ブリッジコンポーネントは、
プロセッサと加速モジュールと通信するためのアップストリームインタフェースと、
ストレージデバイスと通信するためのダウンストリームインタフェースを包含し、
前記第１ブリッジコンポーネントは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して、前記プロセッサ、前記加速モジュール及び前記ストレージデバイスと通信し、
前記アップストリームインタフェースは、前記ＰＣＩｅトランザクションが加速コマンドを包含しているか否かに応じて前記ストレージデバイスから前記プロセッサ又は前記加速モジュールにＰＣＩｅトランザクションを伝達するように動作する。
【０３６４】
説明２０７。説明２０６によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２０６において、
前記加速モジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０３６５】
説明２０８。説明２０６によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２０６において、
ダウンストリームインタフェースは、
ダウンストリームポートと、及び
前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲（ＦＡＲ）に関連される加速コマンドを識別するように動作するダウンストリームフィルタを包含し、
前記ダウンストリームインタフェースは、前記加速コマンドを前記加速モジュールに伝送するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信された前記ダウンストリームＦＡＲと関連されていない第２ＰＣＩｅトランザクションを前記プロセッサに伝達するように動作する。
【０３６６】
説明２０９。説明２０８によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２０８において、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０３６７】
説明２１０。説明２０９によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２０９において、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲはサイドバンドバスを介して前記ストレージデバイスによってプログラミングされる。
【０３６８】
説明２１１。説明２１０によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２１０において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３６９】
説明２１２。説明２０９によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２０９において、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲはＰＣＩｅ  ＶＤＭを使用して、前記ストレージデバイスによってプログラミングされる。
【０３７０】
説明２１３。説明２０６によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２０６において、
ダウンストリームインタフェースは、
ルートポートと、
前記ルートポートに関連されたダウンストリームフィルタを包含し、
前記ダウンストリームフィルタは、前記ストレージデバイスから受信したダウンストリームフィルタのアドレス範囲（ＦＡＲ）と関連された加速コマンドを識別するように動作し、
前記ダウンストリームインタフェースは、前記加速コマンドを前記加速モジュールに伝達するように動作して、前記ダウンストリームポートで、前記ストレージデバイスから受信された前記ダウンストリームＦＡＲと関連されていない第２ＰＣＩｅトランザクションを前記プロセッサに伝達するように動作する。
【０３７１】
説明２１４。説明２１３によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２１３において、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲは、前記ストレージデバイスによってプログラミングされる。
【０３７２】
説明２１５。説明２１４によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２１４において、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲはサイドバンドバスを使用して、前記ストレージデバイスによってプログラミングされる。
【０３７３】
説明２１６。説明２１５によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２１５において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３７４】
説明２１７。説明２１４によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２１４において、前記第２ブリッジコンポーネントの前記ダウンストリームフィルタ内の前記ダウンストリームＦＡＲはＰＣＩｅ  ＶＤＭを使用して、前記ストレージデバイスによってプログラミングされる。
【０３７５】
説明２１８。説明２０６によると、本発明の実施例は、ハードウェアを使用して具現される第２ブリッジコンポーネントを含んでいる。説明２０６において、
ダウンストリームインタフェースは、
第１ルートポートと、
第２ルートポートを包含し、
前記ダウンストリームインタフェースは、前記第１ルートポートで、前記ストレージデバイスから受信された第２ＰＣＩｅトランザクションを前記プロセッサに伝達するように動作し、前記第２ルートポートで、前記ストレージデバイスから受信された加速コマンドを前記加速モジュールに伝送するように動作する。
【０３７６】
説明２１９。本発明の実施例は、ストレージデバイスを含む。ストレージデバイスは、
加速プラットフォームマネージャ（ＡＰＭ−Ｆ）を含む加速モジュールと通信するための前記ストレージデバイスのエンドポイントと、
前記ストレージデバイスの動作を管理するためのコントローラと、
アプリケーションに対するアプリケーションデータを格納するストアと、及び
前記加速コマンドを実行するのに前記ＡＰＭ−Ｆを補助するためのストレージデバイスの加速プラットフォームマネージャ（ＡＰＭ−Ｓ）を包含し、
前記ストレージデバイス及び前記加速モジュールは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）バスを使用して通信し、
前記加速モジュールは、プロセッサと関連されたメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
【０３７７】
説明２２０。説明２１９によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２１９において、前記ストレージデバイスは、ＳＳＤを含む。
【０３７８】
説明２２１。説明２２０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２０において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓは、前記加速コマンドとともに使用される前記アプリケーションデータに関する前記ＳＳＤの前記エンドポイントを使用して通信する。
【０３７９】
説明２２２。説明２２０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２０において、前記ＡＰＭ−Ｆ及び前記ＡＰＭ−Ｓはメッセージを使用して通信する。
【０３８０】
説明２２３。説明２２０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２０において、前記ストレージデバイスは、前記プロセッサから受信された非揮発性メモリエクスプレス（ＮＶＭｅ）プロトコルを使用してコマンドをエンコーディングするトランザクション階層パケット（ＴＬＰ）を含むＰＣＩｅトランザクションをＳＳＤに伝送する。
【０３８１】
説明２２４。説明２２０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２０において、前記ＳＳＤは、前記加速モジュールを含む。
【０３８２】
説明２２５。説明２２０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２０において、
前記ＳＳＤはダウンストリームＦＡＲに関連された加速コマンドを前記加速モジュールに伝送するように動作し、
前記第１  ＰＣＩｅトランザクションは、前記ＡＰＭ−Ｆのために具現され、
前記ＳＳＤは、前記ダウンストリームＦＡＲと関連されていない第１  ＰＣＩｅトランザクションを、前記加速モジュールに伝送するように動作し、
前記第１  ＰＣＩｅトランザクションは、前記プロセッサのために具現される。
【０３８３】
説明２２６。説明２２５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２５において、前記加速モジュールは、ＡＰＭ−Ｓによって生成される。
【０３８４】
説明２２７。説明２２６によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２６において、前記ＳＳＤは、前記加速コマンドを含む特定のコマンドをインタセプトし、前記加速コマンドを生成するために、前記ＡＰＭ−Ｓをトリガーするために、前記の特定のコマンドを前記ＡＰＭ−Ｓに伝達するホストインタフェースロジック（ＨＩＬ）と、をさらに含む。
【０３８５】
説明２２８。説明２２７によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２７において、前記特定のコマンドは、前記のプロセッサ上で実行中の加速サービスマネージャ（ＡＳＭ）から由来する。
【０３８６】
説明２２９。説明２２５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２５において、
前記ＳＳＤは、前記プロセッサから前記ホストシステムのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記ホストシステムのブロックのサブセットを選択するように動作する。
【０３８７】
説明２３０。説明２２９によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２９において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０３８８】
説明２３１。説明２３０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２３０において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするためのサイドバンドバスを使用するように動作する。
【０３８９】
説明２３２。説明２３１によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２３１において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３９０】
説明２３３。説明２３０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２３０において、前記コントローラは、ＰＣＩｅ  ＶＤＭ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅ）を使用して、前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０３９１】
説明２３４。説明２２９によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２９において、前記コントローラは、前記アップストリームＦＡＲのように、前記ホストシステムメモリの前記ブロックの第２サブセットを選択するように動作する。
【０３９２】
説明２３５。説明２３４によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２３４において、前記コントローラは、前記プロセッサ上で実行中のＡＳＭによってアクセス可能な、特定のレジスタ内で前記アップストリームＦＡＲに対する情報を格納するように動作する。
【０３９３】
説明２３６。説明２３５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２３５において、前記特定のレジスタは、前記ホストシステムアドレスの前記ブロック内にある。
【０３９４】
説明２３７。説明２２９よると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２９において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０３９５】
説明２３８。説明２３７によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２３７において、前記コントローラは、サイドバンドバスを使用して、前記加速モジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０３９６】
説明２３９。説明２３８によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２３８において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０３９７】
説明２４０。説明２３７によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２３７において、前記コントローラは、ＰＣＩｅ  ＶＤＭを使用して、前記加速モジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０３９８】
説明２４１。説明２２５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２５において、前記ＳＳＤは、前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｆから結果を受信するように動作して、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
【０３９９】
説明２４２。説明２２５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２５において、前記ＳＳＤは物理機能（ＰＦ）と仮想機能（ＶＦ）を包含し、前記ＰＦは、前記ＳＳＤを露出するように動作し、前記ＶＦは、前記加速モジュールを露出するように動作する。
【０４００】
説明２４３。説明２４２によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４２において、
前記ＰＦは、前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲとして、前記ホストシステムアドレスの前記ブロックの第１サブセットを選択するように動作する。
【０４０１】
説明２４４。説明２４３によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４３において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０４０２】
説明２４５。説明２４４によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４４において、前記コントローラは、サイドバンドバスを利用して、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０４０３】
説明２４６。説明２４５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４５において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４０４】
説明２４７。説明２４４によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４４において、前記コントローラは、ＰＣＩｅ  ＶＤＭを用いて前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０４０５】
説明２４８。説明２４２によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４２において、前記ＶＦは、前記アップストリームＦＡＲのように、前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作する。
【０４０６】
説明２４９。説明２４８によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４８において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０４０７】
説明２５０。説明２４９によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４９において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするためのサイドバンドバスを使用するように動作する。
【０４０８】
説明２５１。説明２５０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２５０において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４０９】
説明２５２。説明２４９によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４９において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記アップストリームＦＡＲでプログラミングするためのＰＣＩｅ  ＶＤＭを使用するように動作する。
【０４１０】
説明２５３。説明２４２によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４２において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記ＶＦでプログラミングするように動作する。
【０４１１】
説明２５４。説明２５３によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２５３において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記ＶＦでプログラミングするためのサイドバンドバスを使用するように動作する。
【０４１２】
説明２５５。説明２５４によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２５４において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４１３】
説明２５６。説明２５３によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２５３において、前記コントローラは、前記加速モジュールのアップストリームフィルタを前記ＶＦでプログラミングするためにＰＣＩｅ  ＶＤＭを使用するように動作する。
【０４１４】
説明２５７。説明２４２によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２４２において、前記コントローラは、前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｆから結果を受信するように動作して、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
【０４１５】
説明２５８。説明２２５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２５において、前記ＳＳＤは、前記ＳＳＤを露出するように動作する第１ＰＦ及び前記ＦＰＧＡを露出するように動作する第２ＰＦを含む。
【０４１６】
説明２５９。説明２５８によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２５８において、
前記第１  ＰＦは、前記プロセッサからホストシステムアドレスの第１ブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの第１サブセットを選択するように動作する。
【０４１７】
説明２６０。説明２５９によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２５９において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０４１８】
説明２６１。説明２６０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２６０において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを利用するように動作する。
【０４１９】
説明２６２。説明２６１によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２６１において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４２０】
説明２６３。説明２６０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２６０において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするために、前記ＰＣＩｅ  ＶＤＭを使用するように動作する。
【０４２１】
説明２６４。説明２５８によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２５８において、前記第２ＰＦが前記アップストリームＦＡＲのように、前記プロセッサからホストシステムアドレスの第２ブロックを要請するように動作する。
【０４２２】
説明２６５。説明２６４によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２６４において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするように動作する。
【０４２３】
説明２６６。説明２６５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２６５において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするためにサイドバンドバスを使用するように動作する。
【０４２４】
説明２６７。説明２６６によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２６６において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４２５】
説明２６。説明２６５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２６５において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記アップストリームＦＡＲでプログラミングするためにＰＣＩｅ  ＶＤＭを使用するように動作する。
【０４２６】
説明２６９。説明２５８によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２５８において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記第２ＰＦの識別子でプログラミングするように動作する。
【０４２７】
説明２７０。説明２６９によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２６９において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記第２ＰＦの識別子でプログラミングするためにサイドバンドバスを使用するように動作する。
【０４２８】
説明２７１。説明２７０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２７０において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４２９】
説明２７２。説明２６９によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２６９において、前記コントローラは、前記加速モジュールの前記アップストリームフィルタを前記第２ＰＦの識別子でプログラミングするためにＰＣＩｅ  ＶＤＭを使用するように動作する。
【０４３０】
説明２７３。説明２５８によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２５８において、前記コントローラは、前記ＳＳＤの前記エンドポイントを介して前記ＡＰＭ−Ｆから結果を受信するように動作して、前記結果を前記ＳＳＤの前記エンドポイントを介して前記プロセッサに伝送するように動作する。
【０４３１】
説明２７４。説明２２５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２５において、
前記ＳＳＤは、前記プロセッサから加速モジュールのブロックを要請するように動作し、
前記コントローラは、前記ダウンストリームＦＡＲのように、前記加速モジュールの前記ブロックのサブセットを選択するように動作する。
【０４３２】
説明２７５。説明２７４によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２７４において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするように動作する。
【０４３３】
説明２７６。説明２７５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２７５において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするためにサイドバンドバスを使用するように動作する。
【０４３４】
説明２７７。説明２７６によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２７６において、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４３５】
説明２７８。説明２７５によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２７５において、前記コントローラは、前記加速モジュールの前記ダウンストリームフィルタを前記ダウンストリームＦＡＲでプログラミングするためにＰＣＩｅ  ＶＤＭを使用するように動作する。
【０４３６】
説明２７９。説明２２０によると、本発明の実施例は、ストレージデバイスを含んでいる。説明２２０において、前記加速モジュールと通信するための前記ＳＳＤの第２エンドポイントと、をさらに包含し、
前記ＳＳＤの前記エンドポイントは、前記プロセッサと通信するために使用され、
前記ＳＳＤの前記第２エンドポイントは、前記ＡＰＭ−Ｆと通信するために使用される。
【０４３７】
説明２８０。本発明の実施例は、方法を含んでいる。方法は、
加速モジュールで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、
前記加速モジュールにおいて、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記加速コマンドであることを判断することについて、少なくとも部分的に基づいて、前記加速モジュールの加速プラットフォームマネージャ（ＡＰＭ−Ｆ）において、前記ＰＣＩｅトランザクションを処理するステップと、及び
前記ＰＣＩｅトランザクションが、前記加速コマンドではないことを判断することに少なくとも部分的に基づいて、前記ＰＣＩｅトランザクションを第２デバイスに伝達するステップを包含し、
前記加速モジュールは、プロセッサと関連されたメモリにアプリケーションのデータをローディングすることなく、アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援し、
前記プロセッサ、前記加速モジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０４３８】
説明２８１。説明２８０によると、本発明の実施例は、方法を含んでいる。説明２８０において、前記加速モジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて具現される。
【０４３９】
説明２８２。説明２８１によると、本発明の実施例は、方法を含んでいる。説明２８１において、
前記加速モジュールにおいて、前記第１デバイスから前記ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１  ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップを含む。
【０４４０】
説明２８３。説明２８２によると、本発明の実施例は、方法を含んでいる。説明２８２において、
前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第１  ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡのダウンストリームを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０４４１】
説明２８４。説明２８２によると、本発明の実施例は、方法を含んでいる。説明２８２において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと連結するステップと、をさらに含む。
【０４４２】
説明２８５。説明２８４によると、本発明の実施例は、方法を含んでいる。説明２８４において、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４４３】
説明２８６。説明２８４によると、本発明の実施例は、方法を含んでいる。説明２８４において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭはダウンストリームＦＡＲを含む。
【０４４４】
説明２８７。説明２８２によると、本発明の実施例は、方法を含んでいる。説明２８２において、前記ＦＰＧＡの前記ダウンストリームを使用して前記第２のＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
【０４４５】
説明２８８。説明２８２によると、本発明の実施例は、方法を含んでいる。説明２８２において、前記ＦＰＧＡの前記アップストリームポートを使用して前記第２のＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
【０４４６】
説明２８９。説明２８２によると、本発明の実施例は、方法を含んでいる。説明２８２において、
前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、
前記第１  ＰＣＩｅトランザクションが前記ＦＰＧＡの前記アップストリームポートと関連されたアップストリームフィルタドレス範囲（ＦＡＲ）内のアドレスに関連されるか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップと、
前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドであることを判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１  ＰＣＩｅトランザクションを処理するステップと、及び
前記第１  ＰＣＩｅトランザクションが前記第２の加速コマンドではないことを判断することに少なくとも部分的に基づいて、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０４４７】
説明２９０。説明２８９によると、本発明の実施例は、方法を含んでいる。説明２８９において、前記第２加速コマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０４４８】
説明２９１。説明２８９によると、本発明の実施例は、方法を含んでいる。説明２８９において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップと、及び
前記アップストリームＦＡＲを前記ＦＰＧＡの前記アップストリームポートと連結するステップと、をさらに含む。
【０４４９】
説明２９２。説明２９１によると、本発明の実施例は、方法を含んでいる。説明２９１において、前記ＦＰＧＡで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４５０】
説明２９３。説明２９２によると、本発明の実施例は、方法を含んでいる。説明２９２において、前記ＦＰＧＡで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭはアップストリームＦＡＲを含む。
【０４５１】
説明２９４。説明２８９によると、本発明の実施例は、方法を含んでいる。説明２８９において、前記ＦＰＧＡの前記アップストリームを使用して前記第１  ＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
【０４５２】
説明２９５。２８９によると、本発明の実施例は、方法を含んでいる。説明２８９において、前記ＦＰＧＡの前記アップストリームポートを使用して前記第１  ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む方法。
【０４５３】
説明２９６。説明２８２によると、本発明の実施例は、方法を含んでいる。説明２８２において、
前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、
前記第１  ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される仮想機能（ＶＦ）と関連されるか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップと、
前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドであることを判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１  ＰＣＩｅトランザクションを処理するステップと、
前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドではないことを判断することに少なくとも部分的に基づいて、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０４５４】
説明２９７。説明２９６によると、本発明の実施例は、方法を含んでいる。説明２９６において、前記第２加速コマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０４５５】
説明２９８。説明２９６によると、本発明の実施例は、方法を含んでいる。説明２８０において、前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＶＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０４５６】
説明２９９。説明２９８によると、本発明の実施例は、方法を含んでいる。説明２８０において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップと、及び
前記ＶＦの前記識別子を前記ＦＰＧＡの前記アップストリームポートに連結するステップと、をさらに含む。
【０４５７】
説明３００。０説明２９９によると、本発明の実施例は、方法を含んでいる。説明２９９において、前記ＦＰＧＡで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＶＦの前記識別子を受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４５８】
説明３０１。説明２９９によると、本発明の実施例は、方法を含んでいる。説明２９９において、前記ＦＰＧＡで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ＶＦの前記識別子を含む。
【０４５９】
説明３０２。説明２９６によると、本発明の実施例は、方法を含んでいる。説明２９６において、前記ＦＰＧＡの前記アップストリームを使用して前記第１  ＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
【０４６０】
説明３０３。説明２８２よると、本発明の実施例は、方法を含んでいる。説明２８０において、
前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、
前記第１  ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される物理機能（ＰＦ）と関連されるか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップと、
前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドであることを判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１  ＰＣＩｅトランザクションを処理するステップと、及び
前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドではないことを判断することに少なくとも部分的に基づいて、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０４６１】
説明３０４。説明３０３によると、本発明の実施例は、方法を含んでいる。説明３０３において、前記第２加速コマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０４６２】
説明３０５。説明３０３によると、本発明の実施例は、方法を含んでいる。説明３０３において、前記ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０４６３】
説明３０６。説明３０５によると、本発明の実施例は、方法を含んでいる。説明３０５において、
前記ストレージデバイスから、前記ＦＰＧＡにおいて、前記ＰＦの前記識別子を受信するステップと、及び
前記ＰＦの前記識別子を前記ＦＰＧＡの前記アップストリームポートと連結するステップと、をさらに含む。
【０４６４】
説明３０７。説明３０６によると、本発明の実施例は、方法を含んでいる。説明３０６において、前記ＦＰＧＡで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＰＦの前記識別子を受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４６５】
説明３０８。説明３０６によると、本発明の実施例は、方法を含んでいる。説明３０６において、前記ＦＰＧＡで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ＰＦの前記識別子を含む。
【０４６６】
説明３０９。説明３０３によると、本発明の実施例は、方法を含んでいる。説明３０３において、前記ＦＰＧＡの前記アップストリームを使用して前記第１  ＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
【０４６７】
説明３１０。説明３０３によると、本発明の実施例は、方法を含んでいる。説明３０３において、前記ＦＰＧＡの前記アップストリームを使用して前記第１  ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
【０４６８】
説明３１１。説明２８１によると、本発明の実施例は、方法を含んでいる。説明２８１において、
ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１  ＰＦの第１識別子を有するタグを含んでいるか、又は前記ＦＰＧＡの第２  ＰＦの第２識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２のデバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップを含む。
【０４６９】
説明３１２。説明３１１によると、本発明の実施例は、方法を含んでいる。説明３１１において、
前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡで前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記ルートポートに関連されたダウンストリームＦＡＲ内のアドレスと関連されているか否かを判断することにより、前記第２ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップと、
前記第２  ＰＣＩｅトランザクションが前記第２加速コマンドであると判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１  ＰＣＩｅトランザクションを処理するステップと、及び
前記第２  ＰＣＩｅトランザクションが前記第２加速コマンドではないと判断することに少なくとも部分的に基づいて、前記ＦＰＧＡの前記エンドポイントを使用して前記第２  ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
【０４７０】
説明３１３。説明３１２によると、本発明の実施例は、方法を含んでいる。説明３１２において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、及び
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと連結するステップと、をさらに含む。
【０４７１】
説明３１４。説明３１３によると、本発明の実施例は、方法を含んでいる。説明３１３において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージ装置からサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４７２】
説明３１５。説明３１３によると、本発明の実施例は、方法を含んでいる。説明３１３において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ダウンストリームＦＡＲを含む。
【０４７３】
説明３１６。説明３１１によると、本発明の実施例は、方法を含んでいる。説明３１１において、前記第２加速コマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０４７４】
説明３１７。説明３１１によると、本発明の実施例は、方法を含んでいる。説明３１１において、前記ＦＰＧＡのエンドポイントを使用して、前記プロセッサに、前記第１  ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０４７５】
説明３１８。説明３１１によると、本発明の実施例は、方法を含んでいる。説明３１１において、
前記ＦＰＧＡの構成モニタを使用して、前記ＦＰＧＡの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０４７６】
説明３１９。説明２８１によると、本発明の実施例は、方法を含んでいる。説明２８１において、
ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１  ＰＦの第１識別子を有するタグを含んでいるか、又は前記ＦＰＧＡの第２  ＰＦの第２識別子を持つタグを含んでいるか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１  ＰＣＩｅトランザクションを第２ストレージデバイスに伝達するステップを含む。
【０４７７】
説明３２０。説明３１９によると、本発明の実施例は、方法を含んでいる。説明３１９において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、
前記第２  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ルートポートで受信されるか、又は前記ＦＰＧＡの第２ルートポートで受信されるか否かを判断するステップと、
前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第１のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記エンドポイントを使用して前記第２  ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、及び
前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第２のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＭＰ−Ｆで前記第２  ＰＣＩｅトランザクションを処理するステップと、をさらに含む。
【０４７８】
説明３２１。説明３１９によると、本発明の実施例は、方法を含んでいる。説明３１９において、前記第２加速コマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０４７９】
説明３２２。説明３１９によると、本発明の実施例は、方法を含んでいる。説明３１９において、前記ＦＰＧＡのエンドポイントを使用して、前記プロセッサに、前記第１  ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０４８０】
説明３２３。説明３１９によると、本発明の実施例は、方法を含んでいる。説明３１９において、
前記ＦＰＧＡの構成モニタを使用して、前記ＦＰＧＡの前記第１のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記ＦＰＧＡの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０４８１】
説明３２４。説明２８１によると、本発明の実施例は、方法を含んでいる。説明２８１において、
ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記ＦＰＧＡで前記第１  ＰＣＩｅトランザクションが前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記ＦＰＧＡの第１エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、第１ルートポート及び第２ルートポートを含む前記ＦＰＧＡの第１ルートポートを使用して前記第１  ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含む。
【０４８２】
説明３２５。説明３２４によると、本発明の実施例は、方法を含んでいる。説明３２４において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、
前記第２  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ルートポートで受信されるか、又は前記ＦＰＧＡの第２ルートポートで受信されるか否かを判断することにより、前記第２のＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップと、
前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第１ルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記第１エンドポイントを使用して前記第２  ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、及び
前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第２ルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＭＰ−Ｆで前記第２  ＰＣＩｅトランザクションを処理するステップと、をさらに含む。
【０４８３】
説明３２６。説明３２４によると、本発明の実施例は、方法を含んでいる。説明３２４において、前記第２加速コマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０４８４】
説明３２７。説明３２４によると、本発明の実施例は、方法を含んでいる。説明３２４において、前記ＦＰＧＡの第２エンドポイントを使用して、前記プロセッサに、前記第１  ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０４８５】
説明３２８。説明３２４によると、本発明の実施例は、方法を含んでいる。説明３２４において、
前記ＦＰＧＡの構成モニタを使用して、前記ＦＰＧＡの前記第１ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記ＦＰＧＡの前記第１のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０４８６】
説明３２９。説明２８１によると、本発明の実施例は、方法を含んでいる。説明２８１において、
ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記第１  ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記ＦＰＧＡの第１エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１  ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含む。
【０４８７】
説明３３０。説明３２９によると、本発明の実施例は、方法を含んでいる。説明３２９において、
前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡで前記第２  ＰＣＩｅトランザクションが前記ＦＰＧＡのルートポートと関連されたダウンストリームＦＡＲ内のアドレスと関連されるか否かを判断することにより、前記第２ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップと、
前記第２  ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断することに、少なくとも部分的に基づいて、前記第２  ＰＣＩｅトランザクションを前記ＦＰＧＡの前記ＡＰＭ−Ｆで処理するステップと、及び
前記第２  ＰＣＩｅトランザクションが、前記加速コマンドではないか判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記第１エンドポイントを使用して前記第２  ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
【０４８８】
説明３３１。説明３３０によると、本発明の実施例は、方法を含んでいる。説明３３０において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、及び
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと連結するステップと、をさらに含む。
【０４８９】
説明３３２。説明３３１によると、本発明の実施例は、方法を含んでいる。説明３３１において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４９０】
説明３３３。説明３３１によると、本発明の実施例は、方法を含んでいる。説明３３１において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭはダウンストリームＦＡＲを含む。
【０４９１】
説明３３４。説明３２９によると、本発明の実施例は、方法を含んでいる。説明３２９において、前記第１  ＰＣＩｅトランザクションは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０４９２】
説明３３５。説明３２９によると、本発明の実施例は、方法を含んでいる。説明３２９において、前記ＦＰＧＡの第２エンドポイントを使用して、前記プロセッサに、前記第１  ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０４９３】
説明３３６。説明３２９によると、本発明の実施例は、方法を含んでいる。説明３２９において、
前記ＦＰＧＡの構成モニタを使用して、前記ＦＰＧＡの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記ＦＰＧＡの前記第１エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０４９４】
説明３３７。本発明の実施例は、方法を含んでいる。方法は、
第１ブリッジコンポーネントで、プロセッサからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、
前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記加速コマンドであると判断することについて、少なくとも部分的に基づいて、前記ＰＣＩｅトランザクションを加速モジュールに伝達するステップと、及び
前記ＰＣＩｅトランザクションが、前記加速コマンドではないと判断することに少なくとも部分的に基づいて、前記ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを包含し、
前記プロセッサ、前記加速モジュール及び前記ストレージ装デバイスは、ＰＣＩｅバスを使用して通信する。
【０４９５】
説明３３８。説明３３７によると、本発明の実施例は、方法を含んでいる。説明３３７において、
前記加速モジュールは、ＦＰＧＡを使用して具現され、
前記ストレージデバイスは、ＳＳＤを含む。
【０４９６】
説明３３９。説明３３７によると、本発明の実施例は、方法を含んでいる。説明３３７において、
前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが第１ブリッジコンポーネントのアップストリームポートに関連されたアップストリームＦＡＲ内のアドレスと関連されているか否かを判断するステップと、をさらに含む。
【０４９７】
説明３４０。説明３３９によると、本発明の実施例は、方法を含んでいる。説明３３９において、
前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップと、及び
前記アップストリームＦＡＲを前記第１ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む。
【０４９８】
説明３４１。説明３４０によると、本発明の実施例は、方法を含んでいる。説明３４０において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０４９９】
説明３４２。説明３４０によると、本発明の実施例は、方法を含んでいる。説明３４０において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記アップストリームＦＡＲを含む。
【０５００】
説明３４３。説明３３７によると、本発明の実施例は、方法を含んでいる。説明３３７において、
前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される仮想機能（ＶＦ）と関連されるか否かを判断するステップを含む。
【０５０１】
説明３４４。説明３４３によると、本発明の実施例は、方法を含んでいる。説明３４３において、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される仮想機能（ＶＦ）と関連されるか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ＶＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０５０２】
説明３４５。説明３４４によると、本発明の実施例は、方法を含んでいる。説明３４４において、
前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップと、及び
前記ＶＦの前記識別子を前記第１ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む。
【０５０３】
説明３４６。説明３４５によると、本発明の実施例は、方法を含んでいる。説明３４５において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＶＦの前記識別子を受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５０４】
説明３４７。説明３４５によると、本発明の実施例は、方法を含んでいる。説明３４５において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ＶＦの前記識別子を含む。
【０５０５】
説明３４８。説明３３７によると、本発明の実施例は、方法を含んでいる。説明３３７において、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される物理機能（ＰＦ）と関連されるか否かを判断するステップを含む。
【０５０６】
説明３４９。説明３４８によると、本発明の実施例は、方法を含んでいる。説明３４８において、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される物理機能（ＰＦ）と関連されるか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０５０７】
説明３５０。説明３４９によると、本発明の実施例は、方法を含んでいる。説明３４９において、
前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップと、及び
前記ＰＦの前記識別子を前記第１ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む。
【０５０８】
説明３５１。説明３５０によると、本発明の実施例は、方法を含んでいる。説明３５０において、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＰＦの前記識別子を受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びイＳＭバスを含むセットから得られる。
【０５０９】
説明３５２。説明３５０によると、本発明の実施例は、方法を含んでいる。説明３５０において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ＰＦの前記識別子を含む。
【０５１０】
説明３５３。説明３３７によると、本発明の実施例は、方法を含んでいる。説明３３７において、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記第１ブリッジコンポーネントの第１  ＰＦの識別子を有するタグを包含するか、又は、前記第１ブリッジコンポーネントの第２  ＰＦの識別子を有するタグを包含するか否かを判断するステップを含む。
【０５１１】
説明３５４。説明３５３によると、本発明の実施例は、方法を含んでいる。説明３５３において、
前記第１ブリッジ構成要素の構成モニタを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記第１構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０５１２】
説明３５５。説明３３７によると、本発明の実施例は、方法を含んでいる。説明３３７において、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記第１コンポーネントの第１エンドポイントにおいて、前記プロセッサから受信されるか否かを判断するステップを含む。
【０５１３】
説明３５６。説明３５５によると、本発明の実施例は、方法を含んでいる。説明３５５において、
前記第１ブリッジ構成要素の構成モニタを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第１構成要素のエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０５１４】
説明３５７。本発明の実施例は、方法を含んでいる。方法は、
第２ブリッジコンポーネントでストレージからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、
前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記加速コマンドであると判断することについて、少なくとも部分的に基づいて、前記ＰＣＩｅトランザクションを加速モジュールに伝達するステップと、及び
前記ＰＣＩｅトランザクションが、前記加速コマンドではないと判断することに少なくとも部分的に基づいて、前記ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを包含し、
前記プロセッサ、前記加速モジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０５１５】
説明３５８。説明３５７によると、本発明の実施例は、方法を含んでいる。説明３５７において、
前記加速モジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０５１６】
説明３５９。説明３５７によると、本発明の実施例は、方法を含んでいる。説明３５７において、
前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記第２ブリッジコンポーネントにおいて、前記第２  ＰＣＩｅトランザクションが前記第２ブリッジコンポーネントのダウンストリームポートと関連されたダウンストリームＦＡＲ内のアドレスと関連されているか否かを判断するステップと、をさらに含む。
【０５１７】
説明３６０。説明３５９によると、本発明の実施例は、方法を含んでいる。説明３５９において、
前記第２ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、及び
前記ダウンストリームＦＡＲを前記第２ブリッジコンポーネントの前記ダウンストリームポートと連結するステップと、をさらに含む。
【０５１８】
説明３６１。説明３６０によると、本発明の実施例は、方法を含んでいる。説明３６０において、前記第２ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記第２ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５１９】
説明３６２。説明３６０によると、本発明の実施例は、方法を含んでいる。説明３６０において、前記第２のブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ダウンストリームＦＡＲを含む。
【０５２０】
説明３６３。説明３５７によると、本発明の実施例は、方法を含んでいる。説明３５７において、前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが第１ルートポイント及び第２ルートポイントを含む前記第２ブリッジコンポーネントの前記第２ルートポートで受信されるか否かを判断するステップを含む。
【０５２１】
説明３６４。本発明の実施例は、方法を含んでいる。方法は、
ストレージデバイスで加速モジュールから第１  ＰＣＩｅトランザクションを受信するステップと、
前記第１  ＰＣＩｅトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第１  ＰＣＩｅトランザクションが前記仮想コマンドであるかを判断することに、少なくとも部分的に基づいて、
前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２  ＰＣＩｅトランザクションを生成するステップと、及び
前記第２  ＰＣＩｅトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップを包含し、
プロセッサ、前記加速モジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信し、
前記加速モジュールは、前記プロセッサと関連されたメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
【０５２２】
説明３６５。説明３６４によると、本発明の実施例は、方法を含んでいる。説明３６４において、前記ストレージデバイスは、ＳＳＤである。
【０５２３】
説明３６６。説明３６５によると、本発明の実施例は、方法を含んでいる。説明３６５において、
ストレージデバイスの加速モジュールから第１  ＰＣＩｅトランザクションを受信するステップは、前記ＳＳＤのエンドポイントにおいて、前記加速モジュールから前記第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記第１  ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第１  ＰＣＩｅトランザクションが前記加速モジュールの前記ＡＰＭ−Ｆから由来するか否かを判断するステップを包含し、
前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２のＰＣＩｅトランザクションを生成するステップは、前記第１  ＰＣＩｅトランザクションに応答して、前記ＳＳＤのＡＰＭ−Ｓにより、前記第２のＰＣＩｅトランザクションを生成するステップを包含し、
前記第２  ＰＣＩｅトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップは、前記第２  ＰＣＩｅトランザクションをストレージデバイスの前記エンドポイントから前記加速モジュールに伝送するステップを含む。
【０５２４】
説明３６７。説明３６６によると、本発明の実施例は、方法を含んでいる。説明３６６において、前記第１  ＰＣＩｅトランザクションは、前記プロセッサから由来され、特定のコマンドを含む。
【０５２５】
説明３６８。説明３６６によると、本発明の実施例は、方法を含んでいる。説明３６６において、前記第１  ＰＣＩｅトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＳＳＤのＨＩＬにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップと、をさらに含む。
【０５２６】
説明３６０。説明３６８によると、本発明の実施例は、方法を含んでいる。説明３６８において、前記特定のコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０５２７】
説明３７０。説明３６６によると、本発明の実施例は、方法を含んでいる。説明３６６において、
前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップと、をさらに含む。
【０５２８】
説明３７１。説明３７０によると、本発明の実施例は、方法を含んでいる。説明３７０において、前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５２９】
説明３７２。説明３７０によると、本発明の実施例は、方法を含んでいる。説明３７０において、前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用して、前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップを包含し、前記ＰＣＩｅ  ＶＤＭはダウンストリームＦＡＲを含む。
【０５３０】
説明３７３。説明３７０によると、本発明の実施例は、方法を含んでいる。説明３７０において、
アップストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの第２サブセットを選択するステップと、及び
前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップと、をさらに含む。
【０５３１】
説明３７４。説明３７３によると、本発明の実施例は、方法を含んでいる。説明３７３において、前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５３２】
説明３７５。説明３７３によると、本発明の実施例は、方法を含んでいる。説明３７３において、前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用して、前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップを包含し、前記ＰＣＩｅ  ＶＤＭはアップストリームＦＡＲを含む。
【０５３３】
説明３７６。説明３６６によると、本発明の実施例は、方法を含んでいる。説明３６６において、
前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、及び
前記加速モジュールのルートポートを前記加速モジュールでプログラミングするステップと、をさらに含む。
【０５３４】
説明３７７。説明３７６によると、本発明の実施例は、方法を含んでいる。説明３７６において、前記加速モジュールのルートポートを前記ダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールの前記ルートポートを前記ダウンストリームＦＡＲでプログラミングするステップを包含し、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５３５】
説明３７８。説明３７６によると、本発明の実施例は、方法を含んでいる。説明３７６において、前記加速モジュールのルートポートを前記ダウンストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用して、前記加速モジュールの前記ルートポートを前記ダウンストリームＦＡＲでプログラミングするステップを包含し、前記ＰＣＩｅ  ＶＤＭはダウンストリームＦＡＲを含む。
【０５３６】
説明３７９。説明３６６によると、本発明の実施例は、方法を含んでいる。説明３６６において、
前記ＳＳＤの前記エンドポイントから前記加速モジュールから前記第１  ＰＣＩｅトランザクションの結果を受信するステップと、及び
前記ＳＳＤの前記エンドポイントを使用して前記第１  ＰＣＩｅトランザクションの前記の結果を前記プロセッサに伝達するステップと、をさらに含む。
【０５３７】
説明３８０。説明３７６によると、本発明の実施例は、方法を含んでいる。説明３７６において、
前記ＳＳＤを露出する物理機能（ＰＦ）を提供するステップと、
前記加速モジュールを露出する仮想機能（ＶＦ）を提供するステップと、をさらに含む。
【０５３８】
説明３８１。説明３８０によると、本発明の実施例は、方法を含んでいる。説明３８０において、前記加速モジュールのアップストリームポートを前記ＶＦの識別子でプログラミングするステップと、をさらに含む。
【０５３９】
説明３８２。説明３６６によると、本発明の実施例は、方法を含んでいる。説明３６６において、
前記ＳＳＤを露出する第１  ＰＦを提供するステップと、及び
前記加速モジュールを露出する第２  ＰＦを提供するステップと、をさらに含む。
【０５４０】
説明３８３。説明３８２によると、本発明の実施例は、方法を含んでいる。説明３８２において、前記加速モジュールのアップストリームポートを前記第２のＰＦの識別子でプログラミングするステップと、をさらに含む。
【０５４１】
説明３８４。説明３６５によると、本発明の実施例は、方法を含んでいる。説明３６５において、
ストレージデバイスの加速モジュールから第１  ＰＣＩｅトランザクションを受信するステップは、前記ＳＳＤのエンドポイントにおいて、前記加速モジュールから前記第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記第１  ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが第２エンドポイントで第１エンドポイント及び前記第２エンドポイントを含むＳＳＤによって受信されるか否かを判断するステップを包含し、
前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２ＰＣＩｅトランザクションを生成するステップは、前記第１  ＰＣＩｅトランザクションに応答して、前記ＳＳＤのＡＰＭ−Ｓにより、前記第２ＰＣＩｅトランザクションを生成するステップを包含し、
前記第２  ＰＣＩｅトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップは、前記第２  ＰＣＩｅトランザクションを前記ストレージデバイスの前記エンドポイントから前記加速モジュールに伝送するステップを含む。
【０５４２】
説明３８５。本発明の一実施例は、機械によって実行されるコマンドが格納されて非揮発性の記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含む。その結果は、
加速モジュールで第１デバイスからＰＣＩｅトランザクションを受信するステップと、
前記ＰＣＩｅトランザクションが仮想コマンドであるか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記仮想コマンドであるかを判断することに、少なくとも部分的に基づいて前記加速モジュールのＡＰＭ−Ｆで前記ＰＣＩｅトランザクションを処理するステップと、
前記ＰＣＩｅトランザクションが、前記仮想コマンドであるが否かを判断することに、少なくとも部分的に基づいて前記ＰＣＩｅトランザクションを第２デバイスに伝送するステップを包含し、
前記加速モジュールは、前記プロセッサと関連されたメモリに、前記アプリケーションデータをローディングすることなく、前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援し、
前記プロセッサ、前記加速モジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０５４３】
説明３８６。説明３８５によると、本発明の実施例は、物品を含む。説明３８５において、前記加速モジュールは、ＦＰＧＡを使用して具現される。
【０５４４】
説明３８７。説明３８６によると、本発明の実施例は、物品を含んでいる。説明３８６において、
前記ＦＰＧＡで前記第１デバイスから前記ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１  ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップを含む。
【０５４５】
説明３８８。説明３８７によると、本発明の実施例は、物品を含んでいる。説明３８７において、
前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、及び
前記ＦＰＧＡの前記ダウンストリームプロセッサを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０５４６】
説明３８９。説明３８７によると、本発明の実施例は、物品を含んでいる。説明３８７において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、及び
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ダウンストリームポートと連結するステップと、をさらに含む方法。
【０５４７】
説明３９０。説明３８９によると、本発明の実施例は、物品を含んでいる。説明３８９において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５４８】
説明３９１。説明３８９によると、本発明の実施例は、物品を含んでいる。説明３８９において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ダウンストリームＦＡＲを含む。
【０５４９】
説明３９２。説明３８７によると、本発明の実施例は、物品を含んでいる。説明３８７において、前記ＦＰＧＡの前記ダウンストリームポートを使用して、前記ストレージデバイスに前記第２ＰＣＩｅのトランザクションの結果を送信するステップと、をさらに含む。
【０５５０】
説明３９３。説明３８７によると、本発明の実施例は、物品を含んでいる。説明３８７において、前記ＦＰＧＡの前記アップストリームポートを使用して前記プロセッサに、前記第２  ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０５５１】
説明３９４。説明３８７によると、本発明の実施例は、物品を含んでいる。説明３８７において、
前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、
前記第１  ＰＣＩｅトランザクションが前記ＦＰＧＡの前記アップストリームポートと関連されたアップストリームＦＡＲ内の第２アドレスと関連されているか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップと、
前記第１  ＰＣＩｅトランザクションが前記第２の加速コマンドであると判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１  ＰＣＩｅトランザクションを処理するステップと、及び
前記第１  ＰＣＩｅトランザクションが前記第２の加速コマンドではないと判断することに少なくとも部分的に基づいて、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０５５２】
説明３９５。説明３９４によると、本発明の実施例は、物品を含んでいる。説明３９４において、前記第２加速コマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０５５３】
説明３９６。説明３９４によると、本発明の実施例は、物品を含んでいる。説明３９４において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップと、及び
前記アップストリームＦＡＲを前記ＦＰＧＡの前記アップストリームポートと連結するステップと、をさらに含む。
【０５５４】
説明３９７。説明３９６によると、本発明の実施例は、物品を含んでいる。説明３９６において、前記ＦＰＧＡで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５５５】
説明３９８。説明３９６によると、本発明の実施例は、物品を含んでいる。説明３９６において、前記ＦＰＧＡで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭはアップストリームＦＡＲを含む。
【０５５６】
説明３９９。説明３９４によると、本発明の実施例は、物品を含んでいる。説明３９４において、前記ＦＰＧＡの前記アップストリームを使用して前記第１  ＰＣＩｅトランザクションの結果を前記ストレージデバイスに伝送するステップと、をさらに含む。
【０５５７】
説明４００。説明３９４によると、本発明の実施例は、物品を含んでいる。説明３９４において、前記ＦＰＧＡの前記アップストリームを使用して前記第１  ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
【０５５８】
説明４０１。説明３８７によると、本発明の実施例は、物品を含んでいる。説明３８７において、
前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、
前記第１  ＰＣＩｅトランザクションが前記ストレージデバイスによって露出する仮想機能（ＶＦ）と関連されているか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップと、
前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドであると判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１  ＰＣＩｅトランザクションを処理するステップと、及び
前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドではないと判断することに少なくとも部分的に基づいて、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０５５９】
説明４０２。説明４０１によると、本発明の実施例は、物品を含んでいる。説明４０１において、前記第２加速コマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０５６０】
説明４０３。説明４０１によると、本発明の実施例は、物品を含んでいる。説明４０１において、前記第１  ＰＣＩｅトランザクションが前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＶＦの前記識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０５６１】
説明４０４。説明４０３によると、本発明の実施例は、物品を含んでいる。説明４０３において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップと、及び
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記アップストリームポートに連結するステップと、をさらに含む方法。
【０５６２】
説明４０５。説明４０４によると、本発明の実施例は、物品を含んでいる。説明４０４において、前記ＦＰＧＡで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＶＦの前記識別子を受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５６３】
説明４０６。説明４０４によると、本発明の実施例は、物品を含んでいる。説明４０４において、前記ＦＰＧＡで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ＶＦの前記識別子を含む。
【０５６４】
説明４０７。説明４０１によると、本発明の実施例は、物品を含んでいる。説明４０１において、前記ＦＰＧＡのアップストリームポートを使用して前記プロセッサに、前記第１  ＰＣＩｅのトランザクションの結果を伝送するステップを含む。
【０５６５】
説明４０８。説明３８７によると、本発明の実施例は、物品を含んでいる。説明３８７において、
前記ＦＰＧＡの前記アップストリームポートで前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップと、
前記第１  ＰＣＩｅトランザクションが前記ストレージデバイスによって露出する仮想機能（ＶＦ）と関連されているか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップと、
前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドであると判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１  ＰＣＩｅトランザクションを処理するステップと、及び
前記第１  ＰＣＩｅトランザクションが前記第２加速コマンドではないと判断することに少なくとも部分的に基づいて、前記ＦＰＧＡの前記ダウンストリームポートを使用して前記第１  ＰＣＩｅトランザクションを前記ストレージデバイスに伝達するステップと、をさらに含む。
【０５６６】
説明４０９。説明４０８によると、本発明の実施例は、物品を含んでいる。説明４０８において、前記第２加速コマンドは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０５６７】
説明４１０。説明４０８によると、本発明の実施例は、物品を含んでいる。説明４０８において、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０５６８】
説明４１１。説明４１０によると、本発明の実施例は、物品を含んでいる。説明４１０において、
前記ストレージデバイスから、前記ＦＰＧＡにおいて、前記ＰＦの前記識別子を受信するステップと、及び
前記ＰＦの前記識別子を前記ＦＰＧＡの前記アップストリームポートと連結するステップと、をさらに含む。
【０５６９】
説明４１２。説明４１１によると、本発明の実施例は、物品を含んでいる。説明４１１において、前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＰＦの前記識別子を受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５７０】
説明４１３。説明４１１によると、本発明の実施例は、物品を含んでいる。説明４１１において、前記ＦＰＧＡで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ＰＦの前記識別子を含む。
【０５７１】
説明４１４。説明４０８によると、本発明の実施例は、物品を含んでいる。説明４０８において、前記ＦＰＧＡの前記アップストリームを使用して前記第１  ＰＣＩｅトランザクションの結果を前記プロセッサに伝送するステップと、をさらに含む。
【０５７２】
説明４１５。説明３８６によると、本発明の実施例は、物品を含んでいる。説明３８６において、
ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１  ＰＦの識別子を有するタグを含んでいるか、又は前記ＦＰＧＡの第２  ＰＦの第２識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１  ＰＣＩｅトランザクションを第２のストレージデバイスに伝達するステップを含む。
【０５７３】
説明４１６。説明４１５によると、本発明の実施例は、物品を含んでいる。説明４１５において、
前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡで前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記ルートポートに関連されたダウンストリームＦＡＲ内のアドレスと関連されるか否かを判断することにより、前記第２ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップと、
前記第２  ＰＣＩｅトランザクションが前記第２の加速コマンドであると判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＰＭ−Ｆで、前記第１  ＰＣＩｅトランザクションを処理するステップと、及び
前記第２  ＰＣＩｅトランザクションが前記第２の加速コマンドではないと判断することに少なくとも部分的に基づいて、前記ＦＰＧＡの前記エンドポイントを使用して前記第２  ＰＣＩｅトランザクションを前記プロセッサに伝達するステップを含む。
【０５７４】
説明４１７。説明４１６によると、本発明の実施例は、物品を含んでいる。説明４１６において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、及び
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと連結するステップを含む。
【０５７５】
説明４１８。説明４１７によると、本発明の実施例は、物品を含んでいる。説明４１７において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５７６】
説明４１９。説明４１７によると、本発明の実施例は、物品を含んでいる。説明４１７において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ダウンストリームＦＡＲを含む。
【０５７７】
説明４２０。説明４１５によると、本発明の実施例は、物品を含んでいる。説明４１５において、前記第２加速コマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０５７８】
説明４２１。説明４１５によると、本発明の実施例は、物品を含んでいる。説明４１５において、前記ＦＰＧＡのエンドポイントを使用して、前記プロセッサに、前記第１  ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０５７９】
説明４２２。説明４１５によると、本発明の実施例は、物品を含んでいる。説明４１５において、
前記ＦＰＧＡの構成モニタを使用して、前記ＦＰＧＡの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記ＦＰＧＡのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０５８０】
説明４２３。説明３８６によると、本発明の実施例は、物品を含んでいる。説明３８６において、
ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡのエンドポイントにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１  ＰＦの第１識別子を有するタグを含んでいるか、又は前記ＦＰＧＡの第２  ＰＦの第２識別子を有するタグを含んでいるか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、前記ＦＰＧＡのルートポートを使用して前記第１  ＰＣＩｅトランザクションを第２ストレージデバイスに伝達するステップを含む。
【０５８１】
説明４２４。説明４２３によると、本発明の実施例は、物品を含んでいる。説明４２３において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、
前記第２  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ルートポートで受信されるか、又は前記ＦＰＧＡの第２ルートポートで受信されるか否かを判断するステップと、
前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第１のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記エンドポイントを使用して前記第２  ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、及び
前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第２のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＭＰ−Ｆで前記第２  ＰＣＩｅトランザクションを処理するステップと、をさらに含む。
【０５８２】
説明４２５。説明４２３によると、本発明の実施例は、物品を含んでいる。説明４２３において、前記第２加速コマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０５８３】
説明４２６。説明４２３によると、本発明の実施例は、物品を含んでいる。説明４２３において、前記ＦＰＧＡのエンドポイントを使用して、前記プロセッサに、前記第１  ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０５８４】
説明４２７。説明４２３によると、本発明の実施例は、物品を含んでいる。説明４２３において、
前記ＦＰＧＡの構成モニタを使用して、前記ＦＰＧＡの前記第１のルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記ＦＰＧＡの前記エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０５８５】
説明４２８。説明３８６によると、本発明の実施例は、物品を含んでいる。説明３８６において、
ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記ＦＰＧＡで前記第１  ＰＣＩｅトランザクションが前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記ＦＰＧＡの第１エンドポイントにおいて、前記プロセッサから受信されるかか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに伝達するステップは、第１ルートポート及び第２ルートポートを含む前記ＦＰＧＡの第１ルートポートを使用して前記第１  ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含む。
【０５８６】
説明４２９。説明４２８によると、本発明の実施例は、物品を含んでいる。説明４２８において、
前記ＦＰＧＡにおいて、前記記憶装置から第２  ＰＣＩｅトランザクションを受信するステップと、
前記第２  ＰＣＩｅトランザクションが前記ＦＰＧＡの第１ルートポートで受信されるか、又は前記ＦＰＧＡの第２ルートポートで受信されるか否かを判断することにより、前記第２ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップと、
前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第１のルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記第１エンドポイントを使用して前記第２  ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、及び
前記第２  ＰＣＩｅトランザクションが、前記ＦＰＧＡの前記第２ルートポートで受信されるかを判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記ＡＭＰ−Ｆで前記第２  ＰＣＩｅトランザクションを処理するステップと、をさらに含む。
【０５８７】
説明４３０。説明４２８によると、本発明の実施例は、物品を含んでいる。説明４２８において、前記第２加速コマンドは、前記のプロセッサ上で実行中のＡＳＭに由来する。
【０５８８】
説明４３１。説明４２８によると、本発明の実施例は、物品を含んでいる。説明４２８において、前記ＦＰＧＡの第２エンドポイントを使用して、前記プロセッサに、前記第１  ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０５８９】
説明４３２。説明４２８によると、本発明の実施例は、物品を含んでいる。説明４２８において、
前記ＦＰＧＡの構成モニタを使用して、前記ＦＰＧＡの前記第１ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記ＦＰＧＡの前記第１エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０５９０】
説明４３３。説明３８６によると、本発明の実施例は、物品を含んでいる。説明３８６において、
ＦＰＧＡで第１デバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップは、前記ＦＰＧＡにおいて、前記プロセッサから第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記加速モジュールにおいて、前記第１  ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記ＦＰＧＡの第１エンドポイントにおいて、前記プロセッサから受信されるか否かを判断することにより、前記第１  ＰＣＩｅトランザクションが第２加速コマンドか否かを判断するステップを包含し、
前記ＰＣＩｅトランザクションを前記第２デバイスに転送するステップは、前記ＦＰＧＡのルートポートを使用して前記第１  ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを含む。
【０５９１】
説明４３４。説明４３３によると、本発明の実施例は、物品を含んでいる。説明４３３において、
前記ＦＰＧＡの前記ルートポートで、前記ストレージデバイスから第２  ＰＣＩｅトランザクションを受信するステップと、
前記ＦＰＧＡで前記第２  ＰＣＩｅトランザクションが前記ＦＰＧＡのルートポートと関連されたダウンストリームＦＡＲ内のアドレスと関連されているか否かを判断することにより、前記第２ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップと、
前記第２  ＰＣＩｅトランザクションが、前記加速コマンドであるかを判断することに、少なくとも部分的に基づいて、前記第２  ＰＣＩｅトランザクションを前記ＦＰＧＡの前記ＡＰＭ−Ｆで処理するステップと、及び
前記第２  ＰＣＩｅトランザクションが、前記加速コマンドではないか判断することに、少なくとも部分的に基づいて、前記ＦＰＧＡの前記第１エンドポイントを使用して前記第２  ＰＣＩｅトランザクションを前記プロセッサに伝達するステップと、をさらに含む。
【０５９２】
説明４３５。説明４３４によると、本発明の実施例は、物品を含んでいる。説明４３４において、
前記ＦＰＧＡにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、及び
前記ダウンストリームＦＡＲを前記ＦＰＧＡの前記ルートポートと連結するステップと、をさらに含む。
【０５９３】
説明４３６。説明４３５によると、本発明の実施例は、物品を含んでいる。説明４３５において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ＦＰＧＡにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０５９４】
説明４３７。説明４３５によると、本発明の実施例は、物品を含んでいる。説明４３５において、前記ＦＰＧＡで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭはダウンストリームＦＡＲを含む。
【０５９５】
説明４３８。説明４３３によると、本発明の実施例は、物品を含んでいる。説明４３３において、前記第１  ＰＣＩｅトランザクションは、前記プロセッサ上で実行中のＡＳＭから由来する。
【０５９６】
説明４３９。説明４３３によると、本発明の実施例は、物品を含んでいる。説明４３３において、前記ＦＰＧＡの第２エンドポイントを使用して、前記プロセッサに、前記第１  ＰＣＩｅのトランザクションの結果を伝送するステップと、をさらに含む。
【０５９７】
説明４４０。説明４３３によると、本発明の実施例は、物品を含んでいる。説明４３３において、
前記ＦＰＧＡの構成モニタを使用して、前記ＦＰＧＡの前記ルートポートと通信する前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、及び
前記ＦＰＧＡの前記第１エンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０５９８】
説明４４１。本発明の一実施例は、機械によって実行されるコマンドが格納された非揮発性の記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含んでいる。その結果は、
ストレージデバイスで加速モジュールからＰＣＩｅトランザクションを受信するステップと、
前記第１  ＰＣＩｅトランザクションが仮想コマンドであるか否かを判断するステップと、
前記第１  ＰＣＩｅトランザクションが前記仮想コマンドであるかを判断することに、少なくとも部分的に基づいて、前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２ＰＣＩｅトランザクションを生成するステップと、
前記第２  ＰＣＩｅトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップと、
前記第１  ＰＣＩｅトランザクションが前記仮想コマンドではないかを判断することに、少なくとも部分的に基づいて前記ストレージデバイスに格納されたデータに対して前記第１  ＰＣＩｅトランザクションを実行するステップを包含し、
プロセッサ、前記加速モジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信し、
前記加速モジュールは、前記プロセッサと関連されたメモリに、前記アプリケーションデータをローディングすることなく、前記のプロセッサ上で実行中の前記アプリケーションに対するストレージデバイス上の前記アプリケーションデータに対する前記加速コマンドを遂行することを支援する。
【０５９９】
説明４４２。説明４４１によると、本発明の実施例は、物品を含んでいる。説明４４１において、前記ストレージデバイスはＳＳＤである。
【０６００】
説明４４３。説明４４２によると、本発明の実施例は、物品を含んでいる。説明４４２において、
ストレージデバイスの加速モジュールから第１  ＰＣＩｅトランザクションを受信するステップは、前記ＳＳＤエンドポイントにおいて、前記加速モジュールから前記第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記第１  ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションがプロセッサからの特定のコマンドを含んでいるか、又は前記第１  ＰＣＩｅトランザクションが前記加速モジュールの前記ＡＰＭ−Ｆから由来するか否かを判断するステップを包含し、
前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２ＰＣＩｅトランザクションを生成するステップは、前記第１  ＰＣＩｅトランザクションに応答して、前記ＳＳＤのＡＰＭ−Ｓにより、前記第２ＰＣＩｅトランザクションを生成するステップを包含し、
前記第２  ＰＣＩｅトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップは、前記第２  ＰＣＩｅトランザクションを前記ストレージデバイスの前記エンドポイントから前記加速モジュールに伝送するステップを含む。
【０６０１】
説明４４４。説明４４３によると、本発明の実施例は、物品を含んでいる。説明４４３において、前記第１  ＰＣＩｅトランザクションは、前記プロセッサから由来して、特定のコマンドを含む。
【０６０２】
説明４４５。説明４４３によると、本発明の実施例は、物品を含んでいる。説明４４３において、前記第１  ＰＣＩｅトランザクションが前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが前記ＳＳＤのＨＩＬにより前記プロセッサから特定のコマンドを含んでいるか否かを判断するステップと、をさらに含む。
【０６０３】
説明４４６。説明４４５によると、本発明の実施例は、物品を含んでいる。説明４４５において、前記特定のコマンドは、前記のプロセッサ上で実行中のＡＳＭから由来する。
【０６０４】
説明４４７。説明４４３によると、本発明の実施例は、物品を含んでいる。説明４４３において、
前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックのサブセットを選択するステップと、
前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップと、をさらに含む。
【０６０５】
説明４４８。説明４４７によると、本発明の実施例は、物品を含んでいる。説明４４７において、前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０６０６】
説明４４９。説明４４７によると、本発明の実施例は、物品を含んでいる。説明４４７において、前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用して、前記加速モジュールのダウンストリームポートを前記ダウンストリームＦＡＲでプログラミングするステップを包含し、前記ＰＣＩｅ  ＶＤＭはダウンストリームＦＡＲを含む。
【０６０７】
説明４５０。説明４４７によると、本発明の実施例は、物品を含んでいる。説明４４７において、
アップストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの第２サブセットを選択するステップと、
前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップと。をさらに含む。
【０６０８】
説明４５１。説明４５０によると、本発明の実施例は、物品を含んでいる。説明４５０において、前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０６０９】
説明４５２。説明４５０によると、本発明の実施例は、物品を含んでいる。説明４５０において、前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用して、前記加速モジュールのアップストリームポートを前記アップストリームＦＡＲでプログラミングするステップを包含し、前記ＰＣＩｅ  ＶＤＭはアップストリームＦＡＲを含む。
【０６１０】
説明４５３。説明４４３によると、本発明の実施例は、物品を含んでいる。説明４４３において、
前記プロセッサからホストシステムアドレスのブロックを要請するステップと、
ダウンストリームＦＡＲのように、前記ホストシステムアドレスの前記ブロックの前記サブセットを選択するステップと、
前記加速モジュールのルートポートを前記加速モジュールでプログラミングするステップと、をさらに含む。
【０６１１】
説明４５４。説明４５３によると、本発明の実施例は、物品を含んでいる。説明４５３において、前記加速モジュールのルートポートを前記ダウンストリームＦＡＲでプログラミングするステップは、サイドバンドバスを介して前記加速モジュールの前記ルートポートを前記ダウンストリームＦＡＲでプログラミングするステップを包含し、前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０６１２】
説明４５５。説明４５３によると、本発明の実施例は、物品を含んでいる。説明４５３において、前記加速モジュールのルートポートを前記ダウンストリームＦＡＲでプログラミングするステップは、ＰＣＩｅ  ＶＤＭを使用して、前記加速モジュールの前記ルートポートを前記ダウンストリームＦＡＲでプログラミングするステップを包含し、前記ＰＣＩｅ  ＶＤＭはダウンストリームＦＡＲを含む。
【０６１３】
説明４５６。説明４４３によると、本発明の実施例は、物品を含んでいる。説明４４３において、前記ＳＳＤの前記エンドポイントで、前記加速モジュールから前記第１  ＰＣＩｅトランザクションの結果を受信するステップと、
前記ＳＳＤの前記エンドポイントを使用して前記第１  ＰＣＩｅトランザクションの前記結果を前記プロセッサに伝達するステップと、をさらに含む。
【０６１４】
説明４５７。説明４４３によると、本発明の実施例は、物品を含んでいる。説明４４３において、
前記ＳＳＤを露出する物理機能（ＰＦ）を提供するステップと、
前記加速モジュールを露出する仮想機能（ＶＦ）を提供するステップと、をさらに含む。
【０６１５】
説明４５８。説明４５７によると、本発明の実施例は、物品を含んでいる。説明４５７において、前記加速モジュールのアップストリームポートを前記ＶＦの識別子でプログラミングするステップと、をさらに含む。
【０６１６】
説明４５９。説明４４３によると、本発明の実施例は、物品を含んでいる。説明４４３において、
前記ＳＳＤを露出する第１  ＰＦを提供するステップと、
前記加速モジュールを露出する第２  ＰＦを提供するステップと、をさらに含む。
【０６１７】
説明４６０。説明４５９によると、本発明の実施例は、物品を含んでいる。説明４５９において、前記加速モジュールのアップストリームポートを前記第２ＰＦの識別子でプログラミングするステップと、をさらに含む。
【０６１８】
説明４６１。説明４４２によると、本発明の実施例は、物品を含んでいる。説明４４２において、
ストレージデバイスの加速モジュールから第１  ＰＣＩｅトランザクションを受信するステップは、前記ＳＳＤのエンドポイントにおいて、前記加速モジュールから前記第１  ＰＣＩｅトランザクションを受信するステップを包含し、
前記第１  ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが第２エンドポイントで第１エンドポイント及び前記第２エンドポイントを含むＳＳＤによって受信されるか否かを判断するステップを包含し、
前記ストレージデバイスのＡＰＭ−Ｓを使用して、第２のＰＣＩｅトランザクションを生成するステップは、前記第１  ＰＣＩｅトランザクションに応答して、前記ＳＳＤのＡＰＭ−Ｓにより、前記第２のＰＣＩｅトランザクションを生成するステップを包含し、
前記第２  ＰＣＩｅトランザクションを前記ストレージデバイスから前記加速モジュールに伝送するステップは、前記第２  ＰＣＩｅトランザクションを前記ストレージデバイスの前記エンドポイントから前記加速モジュールに伝送するステップを含む。
【０６１９】
説明４６２。本発明の一実施例は、機械によって実行されるコマンドが格納されて非揮発性の記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含んでいる。その結果は、
第１ブリッジコンポーネントで第１デバイスからＰＣＩｅトランザクションを受信するステップと、
前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが仮想コマンドであるかど否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記仮想コマンドであるかを判断することに、少なくとも部分的に基づいて前記ＰＣＩｅトランザクションを加速モジュールに伝達するステップと、
前記ＰＣＩｅトランザクションが、前記仮想コマンドではないかを判断することに、少なくとも部分的に基づいて前記ＰＣＩｅトランザクションをストレージデバイスに伝達するステップを包含し、
前記プロセッサ、前記第１ブリッジのコンポーネント、前記加速モジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０６２０】
説明４６３。説明４６２によると、本発明の実施例は、物品を含んでいる。説明４６２において、
前記加速モジュールは、ＦＰＧＡを使用して具現され、
前記ストレージデバイスは、ＳＳＤを含む。
【０６２１】
説明４６４。説明４６２によると、本発明の実施例は、物品を含んでいる。説明４６２において、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが第１ブリッジコンポーネントのアップストリームポートと関連されたアップストリームＦＡＲ内のアドレスと関連されているか否かを判断するステップと、をさらに含む。
【０６２２】
説明４６５。説明４６４によると、本発明の実施例は、物品を含んでいる。説明４６４において、
前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップと、
前記アップストリームＦＡＲを前記第１ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む。
【０６２３】
説明４６６。説明４６５によると、本発明の実施例は、物品を含んでいる。説明４６５において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記アップストリームＦＡＲを受信するステップを包含し、  
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０６２４】
説明４６７。説明４６５によると、本発明の実施例は、物品を含んでいる。説明４６５において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記アップストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記アップストリームＦＡＲを含む。
【０６２５】
説明４６８。説明４６２によると、本発明の実施例は、物品を含んでいる。説明４６２において、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される仮想機能（ＶＦ）と関連されるか否かを判断するステップを含む。
【０６２６】
説明４６９。説明４６８によると、本発明の実施例は、物品を含んでいる。説明４６８において、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される仮想機能（ＶＦ）と関連されるか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ＶＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０６２７】
説明４７０。説明４６９によると、本発明の実施例は、物品を含んでいる。説明４６９において、
前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップと、
前記ＶＦの前記識別子を前記第１ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む方法。
【０６２８】
説明４７１。説明４７０によると、本発明の実施例は、物品を含んでいる。説明４７０において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＶＦの前記識別子を受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０６２９】
説明４７２。説明４７０によると、本発明の実施例は、物品を含んでいる。説明４７０において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＶＦの前記識別子を受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ＶＦの前記識別子を含む。
【０６３０】
説明４７３。説明４６２によると、本発明の実施例は、物品を含んでいる。説明４６２において、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される物理機能（ＰＦ）と関連されるか否かを判断するステップを含む。
【０６３１】
説明４７４。説明４７３によると、本発明の実施例は、物品を含んでいる。説明４７３において、前記ＰＣＩｅトランザクションが前記ストレージデバイスによって露出される物理機能（ＰＦ）と関連されるか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０６３２】
説明４７５。説明４７４によると、本発明の実施例は、物品を含んでいる。説明４７４において、
前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップと、
前記ＰＦの前記識別子を前記第１ブリッジコンポーネントの前記アップストリームポートと連結するステップと、をさらに含む方法。
【０６３３】
説明４７６。説明４７５によると、本発明の実施例は、物品を含んでいる。説明４７５において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記第１ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ＰＦの前記識別子を受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０６３４】
説明４７７。説明４７５によると、本発明の実施例は、物品を含んでいる。説明４７５において、前記第１ブリッジコンポーネントで、前記ストレージデバイスから前記ＰＦの前記識別子を受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ＰＦの前記識別子を含む。
【０６３５】
説明４７８。説明４６２によると、本発明の実施例は、物品を含んでいる。説明４６２において、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが前記第１ブリッジコンポーネントの第１  ＰＦの識別子を有するタグを含んでいるか、又は前記第１ブリッジコンポーネントの第２  ＰＦの識別子を有するタグを含んでいるか否かを判断するステップを含む。
【０６３６】
説明４７９。説明４７８によると、本発明の実施例は、物品を含んでいる。説明４７８において、
前記第１ブリッジコンポーネントの構成モニタを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第１コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０６３７】
説明４８０。説明４６２によると、本発明の実施例は、物品を含んでいる。説明４６２において、前記第１ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが、前記加速コマンドか否かを判断するステップは、前記第１  ＰＣＩｅトランザクションが第１エンドポイント及び第２エンドポイントを含む前記第１コンポーネントの第１エンドポイントにおいて、前記プロセッサから受信されるか否かを判断するステップを含む。
【０６３８】
説明４８１。説明４８０によると、本発明の実施例は、物品を含んでいる。説明４８０において、
前記第１ブリッジコンポーネントの構成モニタを使用して、前記ストレージデバイスの前記エンドポイントの構成を判断するステップと、
前記第１コンポーネントのエンドポイントを使用して、前記ストレージデバイス上の前記エンドポイントの前記構成をコピーするステップと、をさらに含む。
【０６３９】
説明４８２。本発明の一実施例は、機械によって実行されるコマンドが格納されて非揮発性の記憶媒体を含む物品（ａｒｔｉｃｌｅ）を含んでいる。その結果は、
第２ブリッジコンポーネントでストレージデバイスからＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｃｈａｎｇｅ）トランザクションを受信するステップと、
前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップと、
前記ＰＣＩｅトランザクションが、前記加速コマンドであると判断することについて、少なくとも部分的に基づいて、前記ＰＣＩｅトランザクションを加速モジュールに伝達するステップと、
前記ＰＣＩｅトランザクションが、前記加速コマンドではないと判断することに少なくとも部分的に基づいて、前記ＰＣＩｅトランザクションをプロセッサに伝達するステップを包含し、
前記プロセッサ、前記第２ブリッジコンポーネント、前記加速モジュール及び前記ストレージデバイスは、ＰＣＩｅバスを使用して通信する。
【０６４０】
説明４８３。説明４８２によると、本発明の実施例は、物品を含んでいる。説明４８２において、
前記加速モジュールは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を使用して具現され、
前記ストレージデバイスは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【０６４１】
説明４８４。説明４８２によると、本発明の実施例は、物品を含んでいる。説明４８２において、前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記第２ブリッジコンポーネントにおいて、前記第２  ＰＣＩｅトランザクションが前記第２ブリッジコンポーネントのダウンストリームポートと関連されたダウンストリームＦＡＲ内のアドレスと関連されているか否かを判断するステップと、をさらに含む。
【０６４２】
説明４８５。説明４８４によると、本発明の実施例は、物品を含んでいる。説明４８４において、
前記第２ブリッジコンポーネントにおいて、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップと、
前記ダウンストリームＦＡＲを前記第２ブリッジコンポーネントの前記ダウンストリームポートと連結するステップと、をさらに含む。
【０６４３】
説明４８６。説明４８５によると、本発明の実施例は、物品を含んでいる。説明４８５において、前記第２ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記第２ブリッジコンポーネントにおいて、前記ストレージデバイスからサイドバンドバスを介して前記ダウンストリームＦＡＲを受信するステップを包含し、
前記サイドバンドバスはＩ２Ｃバス及びＳＭバスを含むセットから得られる。
【０６４４】
説明４８７。説明４８５によると、本発明の実施例は、物品を含んでいる。説明４８５において、前記第２ブリッジコンポーネントで、前記ストレージデバイスから前記ダウンストリームＦＡＲを受信するステップは、前記ストレージデバイスからＰＣＩｅ  ＶＤＭを受信するステップを包含し、
前記ＰＣＩｅ  ＶＤＭは、前記ダウンストリームＦＡＲを含む。
【０６４５】
説明４８８。説明４８２によると、本発明の実施例は、物品を含んでいる。説明４８２において、前記第２ブリッジコンポーネントで、前記ＰＣＩｅトランザクションが加速コマンドか否かを判断するステップは、前記ＰＣＩｅトランザクションが第１ルートポイント及び第２ルートポイントを含む前記第２ブリッジコンポーネントの前記第２ルートポートで受信されるか否かを判断するステップを含む。
【０６４６】
結論として、本明細書に記述された実施例の多様な変更の観点から、この詳細な説明及び添付された資料は、単に例示的なものとして意図されており、本発明の範囲を制限するものとはみなされてはならない。従って、本発明として請求されるのは、後述する請求の範囲、その均等物の範囲及び思想内に有り得る全ての変形である
【産業上の利用可能性】
【０６４７】
本発明は、ＦＰＧＡベースの低コスト、低消費電力を必要とするＳＳＤ性能の加速化のためのシステムに有用である。
【符号の説明】
【０６４８】
１０５      機械（又はマシン）
１１０      プロセッサ
１１５      デバイスドライバ
１２０      ＳＳＤ、ストレージデバイス
１２５      アプリケーション
１３０      アプリケーションサービスマネージャ（ＡＳＭ）
１３５      メモリコントローラ
１４０      主メモリ
１４５      加速モジュール（又はＦＰＧＡ）
２０５      クロック
２１０      ネットワークコネクタ
２１５      バス
２２０      ユーザインタフェース
２２５      Ｉ／Ｏエンジン
３０５、１１０５、１３１０、１５０５      エンドポイント（ＥＰ）
３１０      ホストインタフェース層（ＨＩＬ）
３１５      ＳＳＤ加速プラットフォームマネージャ（ＡＰＭ−Ｓ）
３２０      フラッシュ変換階層（ＦＴＬ）
３２５      フラッシュメディア
３３０      アップストリームポート（ＵＳＰ）
３３５      ダウンストリームポート（ＤＳＰ）
３４０      ＦＰＧＡ加速プラットフォームマネージャ（ＡＰＭ−Ｆ）
３４５      スケジューラ
３５０−１、３５０−２      加速エンジン
３５５      メッセージメールボックス
３６０      ダウンストリームフィルタ（ＤＳＦ）
３６５      サイドバンドバス（Ｉ２Ｃバス、又はＳＭバス）
３７０      ＳＳＤコントローラ
４０５、８０５、８１０      ブロック
４１０      サブセット（ＮＶＭｅ向け）
４１５      他のサブセット４２０      サブセット、ダウンストリームＦＡＲ（フィルタアドレスレンジ）
５０５      アップストリームフィルタ（ＵＳＦ）
６０５      サブセット、アップストリームＦＡＲ（フィルタアドレスレンジ）
７０５、９０５、１１１５、１１２０      物理機能（ＰＦ、ｐｈｙｓｉｃａｌ＿ｆｕｎｃｔｉｏｎ）
７１０      仮想機能（ＶＦ、ｖｉｒｔｕａｌ＿ｆｕｎｃｔｉｏｎ））
７１５      ＶＦフィルタ、ＰＦフィルタ
１００５、１０１０、１２１５，１２２０、１４０５、２１０５、２１２５、２２０３、２２０６、２２１５、２２２１，２２２７，２２３０など      ブロック
１１１０、１３０５      ルートポート（ＲＰ）
１１２５      構成モニタ、構成モジュール
１２０５、１２１５、１２２０、１４０５      メモリアドレスのブロック
１２１０      ＦＰＧＡメモリアドレスマップ１
１４１０      ＦＰＧＡメモリアドレスマップ２
１９０５、１９１０      ブリッジ構成要素（ブリッジコンポーネント）
２００５、２０２０      ＰＣＩｅトランザクション
２０１５      加速コマンド
２０３０、２０３５、２０４０      結果
ＢＡＲ      ベースアドレスレジスタ（Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）
ＦＴＬ      Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌａｙｅｒ
ＨＩＬ      ホストインタフェースロジック
ＯＳ      オペレーティングシステム
ＲＴ      ランタイム
ＴＬＰ      トランザクション階層パケット（ＰＣＩｅトランザクション）
ＶＤＭ      ベンダ定義メッセージ（Ｖｅｎｄｏｒ  Ｄｅｆｉｎｅｄ  Ｍｅｓｓａｇｅｓ）
【図１】
2019153297.tif 000003
【図２】
2019153297.tif 000004
【図３】
2019153297.tif 000005
【図４】
2019153297.tif 000006
【図５】
2019153297.tif 000007
【図６】
2019153297.tif 000008
【図７】
2019153297.tif 000009
【図８】
2019153297.tif 000010
【図９】
2019153297.tif 000011
【図１０】
2019153297.tif 000012
【図１１】
2019153297.tif 000013
【図１２】
2019153297.tif 000014
【図１３】
2019153297.tif 000015
【図１４】
2019153297.tif 000016
【図１５】
2019153297.tif 000017
【図１６】
2019153297.tif 000018
【図１７】
2019153297.tif 000019
【図１８】
2019153297.tif 000020
【図１９】
2019153297.tif 000021
【図２０】
2019153297.tif 000022
【図２１】
2019153297.tif 000023
【図２２】
2019153297.tif 000024
【図２３】
2019153297.tif 000025
【図２４】
2019153297.tif 000026
【図２５】
2019153297.tif 000027
【図２６】
2019153297.tif 000028
【図２７】
2019153297.tif 000029
【図２８】
2019153297.tif 000030
【図２９】
2019153297.tif 000031
【図３０】
2019153297.tif 000032
【図３１】
2019153297.tif 000033
【図３２】
2019153297.tif 000034
【図３３】
2019153297.tif 000035
【図３４】
2019153297.tif 000036
【図３５】
2019153297.tif 000037