(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-30
(54)【発明の名称】PCIeデバイスのための仮想ホットプラグシステム及び方法
(51)【国際特許分類】
G06F 3/00 20060101AFI20231023BHJP
G06F 13/42 20060101ALI20231023BHJP
G06F 13/10 20060101ALI20231023BHJP
G06F 13/14 20060101ALI20231023BHJP
【FI】
G06F3/00 B
G06F13/42 310
G06F13/10 330C
G06F13/14 330A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023519360
(86)(22)【出願日】2021-08-19
(85)【翻訳文提出日】2023-05-08
(86)【国際出願番号】 US2021046791
(87)【国際公開番号】W WO2022072082
(87)【国際公開日】2022-04-07
(32)【優先日】2020-09-29
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-06-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】パン, チュアン チョン
(72)【発明者】
【氏名】ホアン, ハン
(72)【発明者】
【氏名】スヤマゴンドル, チャンドラセカール エス.
(57)【要約】
PCIe統合エンドポイントにおける物理機能のプールを管理するための方法は、PCIe接続の統合エンドポイント(IE)のためのトポロジを示す構成命令を受信することと、IE上にトポロジを実装することと、を含む。この方法は、ホットプラグ命令を受信することと、ホットプラグ命令に少なくとも部分的に基づいて、仮想エンドポイント(vEP)を、IE上の仮想ダウンストリームポート(vDSP)に追加するか又は該vDSPから除去することと、を更に含む。
【選択図】
図3
【特許請求の範囲】
【請求項1】
PCIe統合エンドポイントにおける物理機能(「PF」)のプールを管理するための方法であって、
PCIe接続の統合エンドポイント(IE)のためのトポロジを示す構成命令を受信することと、
前記IE上に前記トポロジを実装することと、
ホットプラグ命令を受信することと、
前記ホットプラグ命令に少なくとも部分的に基づいて、仮想エンドポイント(vEP)を、前記IE上の仮想ダウンストリームポート(vDSP)に追加するか又は前記vDSPから除去することと、を含む、方法。
【請求項2】
前記ホットプラグ命令に基づいて、
1つ以上のPFをvEPに追加すること、
1つ以上のPFをvEPから除去すること、又は
PFをvEPに追加することと該vEPから除去することとの任意の組み合わせと、のうちの少なくとも1つを更に含む、請求項1に記載の方法。
【請求項3】
前記構成命令及び前記ホットプラグ命令は、リモート管理エージェントから受信される、請求項1に記載の方法。
【請求項4】
ステータス変更に関して接続されたホストに通知するために、少なくとも1つのPCIe割込みを開始することと、
前記PCIe割込みに応答して、前記ホストから構成要求を受信することと、を更に含む、請求項1に記載の方法。
【請求項5】
前記PCIe IEは、PCIe統合エンドポイントシステムに提供され、前記ホストは、PCIeリンクを介して前記PCIe統合エンドポイントシステムに結合される、請求項1に記載の方法。
【請求項6】
前記ホスト及び前記PCIe統合エンドポイントシステムは、両方ともデータセンタ内に位置する、請求項5に記載の方法。
【請求項7】
前記トポロジは、前記IEに割り当てる仮想ダウンストリームポート(vDSP)の数Kを指定し、それぞれのvDSPは、関連付けられたvEPを有する、請求項1に記載の方法。
【請求項8】
それぞれのvEPは、仮想ダウンストリームポートに結合される、請求項7に記載の方法。
【請求項9】
前記トポロジを実装することは、PFを前記vEPのそれぞれにグループ化することを更に含む、請求項7に記載の方法。
【請求項10】
PFのプールを有するPCIe接続の統合エンドポイント(「IE」)と、
仮想ホットプラグコントローラ(「VHPC」)であって、
前記IEのトポロジを示す構成命令をリモートマネージャから受信し、
前記IE上に前記トポロジを実装し、
前記リモートマネージャからホットプラグ命令を受信し、
前記ホットプラグ命令に基づいて、少なくとも1つのvEPを、前記IEのvDSPに追加するか又は前記vDSPから除去するように構成された、VHPCと、を備える、PCIe統合エンドポイントシステム。
【請求項11】
前記VHPC及び前記ホストに結合され、少なくとも1つのPCIe割込みを前記ホストに通信するように構成されたPCIeアップストリームポートを更に備える、請求項10に記載のシステム。
【請求項12】
前記VHPCは、リモート管理エージェントから前記構成命令を受信する、請求項10に記載のシステム。
【請求項13】
前記VHPCは、前記構成命令及び前記ホットプラグ命令を受信するように構成された入力インターフェースと、前記構成命令に少なくとも部分的に基づいて前記IEのためのトポロジを生成するように構成されたPCIeトポロジマッパと、を含む、請求項10に記載のシステム。
【請求項14】
前記トポロジは、vDSP及び対応するvEPのセットを含み、それぞれのvEPは1つ以上のPFを有する、請求項10に記載のシステム。
【請求項15】
前記VHPCは、
前記構成命令を前記トポロジにマッピングするように構成されたPCIeトポロジマッパと、
実装された前記トポロジに関して、又は、ホットプラグ命令の結果としての前記トポロジにおける任意のvEP接続性変化に関してPCIe接続のホストに通知するために、少なくとも1つのPCIe割込みを生成するように構成されたPCIe割込みジェネレータと、を更に含む、請求項10に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、概して、PCIeデバイスの追加及び除去に関し、特に、PCIeデバイスをホットアド又はホットリムーブするための仮想プラグシステム及び方法に関する。
【背景技術】
【0002】
Peripheral Component Interconnect Express(PCIe)アーキテクチャは、ケーブル、アドインカード、及びモジュールのホットアド及びホットリムーブ(「ホットプラグ」)の両方をネイティブにサポートするように設計されている。PCIeホットプラグサポートは、自己無撞着インフラストラクチャを使用して異なるユーザ/オペレータモデルがサポートされることを可能にする機構の「ツールボックス」を提供する。
【0003】
現代のデータセンタアプリケーションにおいて、適応性は、特に入力/出力(IO)側において重要である。例えば、リンクを介してデータセンタに接続されるSmartNlC又はSmartSSDを使用するとき、PCIeリンクを介して接続する従来の方法は、ホットプラグ機構を使用するPCIeスイッチを介するものである。この方法では、ホットプラグ機構がPCIeスイッチのダウンストリームポートに組み込まれて、1つ以上の物理機能を有するデバイスのホットアド又はホットリムーブのいずれかを行う。上述したSmartNICの例は、システムCPUが通常処理する処理タスクをオフロードするネットワークインターフェースカードであることに留意されたい。smartNICは、それ自体のオンボードプロセッサを使用して、暗号化/復号、ファイアウォール、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、及びハイパーテキスト転送プロトコル(HTTP)処理の任意の組合せを実行することが可能であり得る。
【0004】
従来、PCIeトポロジに従い、実際のPCIeスイッチは、データセンタホストとPCIeデバイスとの間に物理的に配置され、そのため、シリコン設計並びにボード設計の両方にコストが追加される。更に、従来のアプローチはまた、ホストに接続されるデバイスを物理的に追加又は除去するために、例えば、アテンションボタンなどのオンサイトアクションを必要とする。現代の接続環境では、所与のデータセンタ(ホストがある)が、企業のオペレーションセンタがあるマネージャサイトから遠く離れている場合があるので、これは単純に実現可能ではない。したがって、PCIeリンクされたデバイスのリモート構成のための機構が必要とされる。
【0005】
加えて、より多くのアクセラレータに対してより多くの物理機能をホストすることができるFPGAの能力増加により、PCIeスイッチダウンストリームポートに接続するPCIeデバイスなどのホットプラグ機構との固定された関係を事前に割り当てることなく、単一の物理機能又は物理機能のグループを追加又は除去するための動的割り当ても望まれる。
【0006】
必要とされるのは、従来のPCIeホットプラグ機構の制約を克服するためのシステム及び関連する方法である。
【発明の概要】
【0007】
PCIe物理機能(physical function、「PF」)を仮想的にホットアド又はホットリムーブするための方法が本明細書で説明される。PCIe統合エンドポイントシステムも本明細書で説明される。一実施例では、PCIe統合エンドポイントにおける物理機能のプールを管理するための方法は、PCIe接続の統合エンドポイント(integrated endpoint、IE)上のトポロジを示す構成命令を受信することと、IE上にトポロジを実装することと、ホットプラグ命令を受信することと、を含む。本方法は、ホットプラグ命令に少なくとも部分的に基づいて、少なくとも1つの仮想エンドポイント(virtual endpoint、vEP)を、IE上の仮想ダウンストリームポート(virtual downstream port、vDSP)に追加すること、又は該vDSPから除去することを更に含む。
【0008】
別の例では、PCIe統合エンドポイントシステムは、物理機能のプールを有するPCIe接続のIEと、仮想ホットプラグコントローラ(virtual hot plug controller、「VHPC」)とを含む。VHPCは、IE上のトポロジを示す構成命令を受信し、IE上にトポロジを実装するように構成される。VHPCは、ホットプラグ命令を受信し、ホットプラグ命令に応答して、仮想エンドポイント(vEP)をIE上の仮想ダウンストリームポート(vDSP)に追加するか又は該vDSPから除去し、トポロジに関してホストに通知するために少なくとも1つのPCIe割込みを開始するように、更に構成される。
【0009】
開示される技術はまた、以下の非限定的な実施例のうちの1つ以上で説明され得る。開示された技術の他の実施例及び更なる実施例が、本開示の教示から逸脱することなく考案され得る。
【0010】
実施例1.PCIe統合エンドポイントにおける物理機能(「PF」)のプールを管理するための方法であって、PCIe接続の統合エンドポイント(IE)のためのトポロジを示す構成命令を受信することと、IE上にトポロジを実装することと、ホットプラグ命令を受信することと、ホットプラグ命令に少なくとも部分的に基づいて、仮想エンドポイント(vEP)をIE上の仮想ダウンストリームポート(vDSP)に追加するか又は該vDSPから除去することと、を含む、方法。
【0011】
実施例2.ホットプラグ命令に基づいて、1つ以上のPFをvEPに追加すること、1つ以上のPFをvEPから除去すること、又はPFをvEPに追加することと、vEPから除去することとの任意の組合せのうちの少なくとも1つを更に含む、実施例1に記載の方法。
【0012】
実施例3.構成命令及びホットプラグ命令は、リモート管理エージェントから受信される、実施例1に記載の方法。
【0013】
実施例4.ステータス変更に関して接続されたホストに通知するために、少なくとも1つのPCIe割込みを開始することと、PCIe割込みに応答して、ホストから構成要求を受信することと、を更に含む、実施例1に記載の方法。
【0014】
実施例5.少なくとも1つのPCIe割込みを開始することは、MSI又はMSI-X割込みのうちの少なくとも1つをホストに送信して、デバイスドライバをバインドし、エンドポイント及びその割り当てられたPFをホットアドするためにリソースを割り当てること、又は、デバイスドライバをバインド解除し、エンドポイント及びその割り当てられたPFをホットリムーブするためにリソースを解放することの少なくとも1つを行うことを更に含む、実施例4に記載の方法。
【0015】
実施例6.PCIe IEは、PCIe統合エンドポイントシステムに提供され、ホストは、PCIeリンクを介してPCIe統合エンドポイントシステムに結合される、実施例1に記載の方法。
【0016】
実施例7.ホスト及びPCIe統合エンドポイントシステムは、いずれもデータセンタ内に位置する、実施例6に記載の方法。
【0017】
実施例8.PCIe統合エンドポイントシステムは、フィールドプログラマブルゲートアレイ(field programmable gate array、「FPGA」)に実装される、実施例6に記載の方法。
【0018】
実施例9.トポロジは、IEに割り当てる仮想ダウンストリームポート(vDSP)の数Kを指定し、それぞれのvDSPは、関連付けられたvEPを有する、実施例1に記載の方法。
【0019】
実施例10.それぞれのvEPは、仮想ダウンストリームポートに結合される、実施例9に記載の方法。
【0020】
実施例11.トポロジを実装することは、PFをvEPのそれぞれにグループ化することを更に含む、実施例9に記載の方法。
【0021】
実施例12.IEをK個のvDSPに分割するトポロジを実装することを更に含む、実施例9に記載の方法。
【0022】
実施例13.
PFのプールを有するPCIe接続の統合エンドポイント(「IE」)と、
仮想ホットプラグコントローラ(「VHPC」)と、を備えるPCIe統合エンドポイントシステムであって、
VHPCは、IEのためのトポロジを示す構成命令をリモートマネージャから受信し、
IE上にトポロジを実装し、
リモートマネージャからホットプラグ命令を受信し、
ホットプラグ命令に基づいて、少なくとも1つのvEPをIEのvDSPに追加するか又は該vDSPから除去するように構成されている、PCIe統合エンドポイントシステム。
【0023】
実施例14.VHPC及びホストに結合され、少なくとも1つのPCIe割込みをホストに通信するように構成されたPCIeアップストリームポートを更に備える、実施例13に記載のシステム。
【0024】
実施例15.VHPCは、リモート管理エージェントから構成命令を受信する、実施例13に記載のシステム。
【0025】
実施例16.VHPCは、構成命令及びホットプラグ命令を受信するように構成された入力インターフェースと、構成命令に少なくとも部分的に基づいてIEのためのトポロジを生成するように構成されたPCIeトポロジマッパと、を含む、実施例13に記載のシステム。
【0026】
実施例17.トポロジは、vDSP及び対応するvEPのセットを含み、それぞれのvEPは1つ以上のPFを有する、実施例13に記載のシステム。
【0027】
実施例18.トポロジは、vEPのセットにそれぞれ対応し、vEPのセットに結合された仮想ダウンストリームポートのセットを更に含む、実施例17に記載のシステム。
【0028】
実施例19.VHPCは、構成命令をトポロジにマッピングするように構成されたPCIeトポロジマッパと、実装されたトポロジに関して、又はホットプラグ命令の結果としてトポロジ内の任意のvEP接続性変化に関して、PCIe接続のホストに通知するために、少なくとも1つのPCIe割込みを生成するように構成されたPCIe割込みジェネレータと、を更に含む、実施例13に記載のシステム。
【0029】
実施例20.VHPCは、vEPからvDSPへの接続の改訂されたセットに関して接続されたホストに通知するために、少なくとも1つのPCIe割込みを開始し、PCIe割込みに応答してホストから構成要求を受信するように更に構成されている、実施例19に記載のシステム。
【図面の簡単な説明】
【0030】
様々な特徴が、図面を参照して以下に説明される。図面は縮尺通りに描かれている場合も描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、「特許請求の範囲」に記載された発明の網羅的な説明として又は「特許請求の範囲」に記載された発明の範囲を限定するものとして意図されていない。加えて、図示された実施例は、示されたすべての態様又は利点を有する必要はない。特定の実施例に関連して説明される態様又は利点は、必ずしもその実施例に限定されず、そのように図示されていなくても、又はそのように明示的に説明されていなくても、任意の他の実施例において実施され得る。
【
図1】一実施例による、フィールドプログラマブルゲートアレイ(「FPGA」)において提供される例示的なシステムを示す。
【
図2】一実施例による、「ファームウェア介入」方法を示す代替の例示的なFPGA実装形態を示す。
【
図3】一実施例による、PCIe物理機能を仮想的にホットアド又はホットリムーブするための方法のフロー図である。
【
図4】本明細書で説明される例示的なシステムが採用され得る、FPGAの例示的なアーキテクチャを示す。
【0031】
理解を容易にするために、可能な場合には、図面に共通する同一の要素を示すために同一の参照番号が使用されている。一実施形態の要素は、他の実施形態に有益に組み込まれ得ることが企図される。
【発明を実施するための形態】
【0032】
1つ以上の実施例では、PCIeホットプラグ制限は、仮想ホットプラグコントローラを使用して、PCIe統合エンドポイントにおける物理機能のプールを管理することによって解決される。1つ以上の実施例では、仮想ホットプラグコントローラは、実際のスイッチを必要とせずに、リモート構成、動的割り当て、及びPCIe準拠を提供する。結果として、ホスト側に必要な変更はなく、したがって追加コストはない。
【0033】
1つ以上の実施例では、仮想PCIeホットプラグコントローラは、物理スイッチを伴わないネイティブPCIeホットプラグ機構を介するデバイスとして、単一のPCIe物理機能又はPCIe物理機能のグループのいずれかを仮想的にホットアド又はホットリムーブし得る。1つ以上の実施例では、FPGAソフトロジック及び/又はソフトウェア介入を使用して、リモート構成、動的割り当て、及びPCIe準拠が提供され得る。
【0034】
したがって、拡張されたハードウェア能力により、複数の仮想デバイスが単一の物理カード上に提供され、したがって、それぞれがそれ自体のPCIeスイッチを有しない1つ以上の実施例では、仮想ホットプラグコントローラは、物理カード上のそれらの仮想デバイスのいずれかに対するホットプラグ機能をエミュレートする。いくつかの実施例では、デバイスは、IE外の単一のFPGAカード上のソフトロジックによって作製された仮想カードであってもよい。1つ以上の実施例では、それぞれの仮想デバイスは、それ自体のデータムーバー、処理エンジンなどを有するかのように動作する。それぞれの仮想デバイスは、ホスト上のデバイスドライバに結合され、該デバイスドライバによって管理され得るように、IEによって提供される物理機能に関連付けられる。
【0035】
1つ以上の実施例は、ユーザにとって所望され得る複数のデバイスを構築するのに十分なソフトロジックを有する任意のFPGAカード上に実装され得る。したがって、1つ以上の実施例では、同じカードを使用してトポロジを変更する能力が提供される。更に、これらの変更はリモートで行われてもよい。変更を指定する人が物理的にデータセンタに行ってPCIeスイッチ又はカードを追加又は除去する必要がないため、明らかな理由から、この手法はより高速である。
【0036】
図1は、一実施例による、FPGA内に提供された例示的なPCIe統合エンドポイントシステム(integrated endpoint system、「IES」)110を示す。1つ以上の実施例では、PCIe統合エンドポイントシステムは、物理機能のプール152を動的に管理し、物理機能(PF)のプールが割り当てられる仮想デバイスのセットにわたる、PFのいずれかのホットリムーブ又はホットアドを容易にする。
図1を参照すると、例示的なPCIe IES 110は、3つのメインブロックを有する。これらは、PCIeアップストリームポート120と、1つ以上のPCIeダウンストリームポートとして実装される仮想ホットプラグコントローラ(「VHPC」)130と、統合エンドポイント(「IE」)150と、を含む。
【0037】
1つ以上の例において、PCIeアップストリームポート120は、例えばPCIeリンク101などのPCIeリンクを介してホスト105と接続するために使用される。ホスト105は、例えば、データセンタ内の任意のCPUであってもよい。一般に、PCIe IES 110は、物理機能(「PF」)のプールを物理的に実装する単一の物理ボックス又はカードとして理解され得る。しかしながら、必要に応じて、複数の仮想PCIeデバイスにわたってそれらのPFのすべてを割り振てることができる。1つ以上の実施例では、VHPC 130は、ホスト105がPCIe IES 110上の仮想デバイスのいずれかを、その仮想デバイスがフルホットプラグ機能を有する本格的な独立型PCIeデバイスであるかのように扱うように、ホスト105に情報を提供するロジックを含む。これは、従来のように物理的なスイッチがない場合でも同様である。
【0038】
1つ以上の実施例では、VHPC 130内のロジックによってホスト105に提供される情報は、カードをスロットに挿入することによって、又は例えば、カードを物理スロットから除去することによって、デバイスがPCIeリンクにホットアドされるか又はPCIeリンクからホットリムーブされるかのいずれかのときに、従来通りにホストに送信されるタイプのものである。以下で説明するように、1つ以上の実施例では、PFが仮想ダウンストリームポートに仮想的に追加されるか、又は仮想ダウンストリームポートから仮想的に除去され、実際の物理カードが物理スロットに挿入されないか、又は物理スロットから除去されない場合、物理的なホットアド又はホットリムーブのイベントをエミュレートするために、VHPCは、ホストが見る必要がある必須情報を供給する。1つ以上の実施例では、この情報は、仕様に定義されたPCI/PCIe能力を含む。本説明に関連する重要な能力は、ホットアドデバイスが必要とするPFの数及びアドレス空間の数である。このフローは、「デバイス検出」又は「バス列挙」として知られている。
【0039】
1つ以上の実施例では、仮想ホットプラグコントローラ130は、示されるように、それ自体が3つのサブブロックを有してもよい。これらは、例えば、仮想ホットプラグハンドラ139、PCIeトポロジマッパ132、及びPCIe割込みジェネレータ134を含む。仮想ホットプラグハンドラ139は、例えばリモート管理エージェント103からリモートでホットプラグ構成を受信する。リモート管理エージェント103は、ホスト105及びIES 110の両方が物理的に位置するデータセンタから離れた場所にある。リモート管理エージェント103は、例えば、イーサネット接続を介してPCIe統合エンドポイントシステム110に結合されてもよい。
【0040】
引き続き
図1を参照すると、1つ以上の実施例では、リモート管理エージェント103によって送信されるホットプラグ構成命令は、例えば、「add Physical Function #3-6」、又は例えば、「remove Physical Function #21-23」などであり得る。1つ以上の実施例では、リモート管理エージェント103は、vDSP及びvEPを「見る」ことができ、又は「見る」ことができず、後者の場合、単に1つの統合IESカードを見て、PCIeトポロジマッパ132にvEPを生成させ、それらの間でPFを配分させる。どちらの手法がとられるかは、所与の実装形態を処理するトポロジをカード上でどの程度処理する必要があるかによって異なる。一般に、トポロジマッパがより近くかつより高速であることを前提として、トポロジマッパに様々な仮想エンティティを生成及び配分させ、リモート管理エージェントにより高レベルの命令を提供させることが、多くの場合好まれる。しかしながら、完全性を期すために、1つ以上の実施例では、両方の手法が可能である。
【0041】
構成命令を受信すると、VHPC 130は、PCIeトポロジマッパ132を構成し、PCIe割込みジェネレータ134を介してPCIe割込みをトリガして、ホットプラグアクションについてホスト105に通知する。ここで、トポロジ(例えば、IE上にいくつのvDSPを提供するか)は、リセット中に定義され、次のリセットまで固定されたままであると予想されることに留意されたい。トポロジマッパ132は、予め定義されたトポロジに基づいて、リモート管理エージェント103から受信したホットプラグ命令に基づいて、1つ以上のvEP及びそれらのそれぞれのPFを1つ以上のvDSPに追加/除去する。
【0042】
1つ以上の実施例では、PCIeトポロジマッパ132は、PCIeホスト105からの構成要求に応答することによって、現在のトポロジに関してホスト105に通知する。PCIeホスト105は、例えばアドレス空間などのリソースを配置し得るように、トポロジを知る必要があることに留意されたい。また、本明細書で説明される実施例では、すべての構成要求がホストによって送信され、すべてがPCIe定義の構成要求であることにも留意されたい。
【0043】
1つ以上の実施例では、IES 110は、最初にホストから「PCI Express Capabilities Register」のデバイス/ポートタイプフィールドへの構成読み出し要求に応答することによって、ホスト105によってスイッチ(USP)として見られる。その結果、ホスト105は、より多くの構成読み出し要求を送信することによって、ダウンストリームポート及びデバイスを列挙し続ける。
【0044】
引き続き
図1を更に参照すると、PCIeトポロジマッパ132は、受信された構成命令に応答して、物理機能のプール152内の様々なPFを、トポロジ内の様々な仮想エンドポイント(「vEP」)の間で分配し、それぞれのvEPは、トポロジの対応するvDSPに関連付けられる。したがって、特定のトポロジにおけるvEPのそれぞれのセットの間にPFのマッピング189が存在する。2つのそのような例示的なトポロジが
図1に示されており、これらの例示的なトポロジは、物理機能のプール152内に合計N個のPFがあると仮定する。第1のトポロジであるトポロジ1 180は、N個の物理機能すべてを所有する単一のvEPを有する、全体的な「中心性」の1つの極端な事例を示す。単一のvEP 180Bは、単一の仮想ダウンストリームポート(「vDSP」)180Aに接続される。他方の極端では、トポロジN 185は、vEPごとに1つのPF、したがってN個のvEP 185Bの事例を示し、それぞれのvEPは、N個のvDSPの対応するそれぞれのvDSP 185Aに接続されている。示されるように、トポロジN 185は、最大限の「機能の分散」手法を実装している。1つ以上の実施例では、トポロジは、これらの両極端の間の任意のものであり得る。
【0045】
PCIeトポロジマッパ132がそのマッピングを実行し、受信された構成命令に応答してトポロジを生成した後、VHPC 130は、例えばリモート管理エージェント103からホットプラグ命令を受信し得、ホットプラグ命令は、少なくとも1つのvEPをvDSPに追加するか又はvDSPから除去することを示し、VHPC 130は、それに応答して、少なくとも1つのvEPをvDSPに追加するか又はvDSPから除去し得る。ここで、初期構成命令が、どのトポロジが実装されるべきかを決定することが想起される。例えば、
図1を参照すると、それは集中トポロジ180であるか、分散トポロジ185であるか、又はこれら2つのオプションの間の2つの任意の組合せか否かとなる。このように、構成命令は、トポロジ内にいくつのvDSPが存在すべきかを決定する。
【0046】
引き続き
図1を参照すると、ホットプラグ命令を受信したとき、1つ以上のvEPが除去されるか又はvDSPに追加されるが、それによって、ホットプラグ命令の結果として1つ以上のvDSPが現在vEPなしで残されている場合であっても、トポロジ内のvDSPの総数が変わることはない。これは、vDSPへの接続がダングリングされ、vDSPがしばらくの間使用されたままになる可能性があるためである。vDSPの数は、新しい構成命令が受信されるまで一定のままである。
【0047】
ホットプラグ命令の実装に続いて、仮想ホットプラグハンドラ139は、特定のイベントをトリガさせる。例えば、PCIeトポロジマッパ132に、どのvEPがどのvDSPに接続されているかに関してトポロジ内のステータスを更新させ得る。また、例えば、PCIe割込みジェネレータ134に、例えばMSI又はMSI-XなどのPCIe割込みをホストに送信させて、デバイスドライバをバインドし、vEP及びその割り当てられたPFをホットアドするためのリソースを割り当てるか、又はデバイスドライバをバインド解除し、vEP及びその割り当てられたPFをホットリムーブするためのリソースを解放して、リソースが動的に割り当てられ得るようにし得る。1つ以上の実施例では、IEシステムとホストとの間の任意の通信は、PCIeの仕様に忠実に従うことにも留意されたい。したがって、IEシステムは、任意の従来のホストがIEシステムと自然かつ容易に相互運用し得るように、PCIeスイッチの挙動を「模倣」する。
【0048】
最後に、
図1を参照すると、第3のサブブロックは統合エンドポイント(「IE」)150であり、これは物理機能のプール152を有する。このサブブロックは、PCIeトポロジマッパ132から構成を受信し、それに応じて物理機能のプール152からのPFをそれぞれのvEPにグループ化する。
【0049】
1つ以上の実施例では、適応性を達成するために、PCIeトポロジマッパ132サブブロックは、2つの方法を介して実装され得る。第1の方法は、異なるトポロジをロードするために、例えば、FPGAソフトロジックなどのプログラム可能ユニットにおいてPCIeトポロジマッパ132を実装する。これらのソフトロジックとしては、例えば、
図4に示され、以下で説明されるユーザプログラム可能なロジック(CLB、BRAMなど)が挙げられる。
【0050】
したがって、この第1の方法は、異なるビットストリームをロードする従来のFPGA方法を利用する。第2の方法は、ファームウェアカーネルがホスト構成要求に直接応答して様々なトポロジを作成するために、バイパスインターフェースを介してPCIeトポロジマッパ132を実装することである。次に、
図2を参照してこの第2の方法を説明する。
【0051】
図2は、上述の第2の方法、すなわち「ファームウェア介入」方法を示すために、PCIe統合エンドポイントシステム210である例示的なシステムの代替の例示的FPGA実装形態を示す。
図2は、
図1に示された上述のPCIe統合エンドポイントシステム110の3つのサブブロックを、薄い陰影及びその描かれたボックスの周りの異なる線を介して、代替の例示的なFPGAの要素にマッピングする。かかる例示的なFPGAは、
図4に示され、以下で説明される。
【0052】
図2を参照すると、図の右下のキーは、
図1の例の3つのサブブロック、すなわち、PCIeアップストリームポート120、VHPC 130、及びIE 110のうちのどれが、
図2の例示的なFPGAの様々な要素にマッピングされるかを示す。したがって、
図2の左側に点線の境界で示されるPCIeアップストリームポート120は、
図2のPCIeハードブロック121にマッピングされる。ホスト105と通信するのはこの要素である。同様に、実線の境界で薄い陰影のVHPC 130は、同じく薄い陰影及び実線の境界で示されている
図2の8つの要素にマッピングされ、例示的なシステム210の外側及び右側に示されているファームウェアトポロジカーネル141にもマッピングされる。これらの9つのVHPC要素は、全部で131~141のインデックス番号を有する。最後に、破線の境界で示されている統合エンドポイント150は、破線の境界で示されている
図2の7つの要素にマッピングされる。
図2で使用される陰影を考慮すると、VHPC 130及び統合エンドポイント150をそれぞれ実装する要素のグループのそれぞれを含む、様々な要素に容易に気付くことができる。
【0053】
引き続き
図2を参照すると、
図1のPCIeアップストリームポート120サブブロックにマッピングされるシステム210の要素から始まって、
図2にはそのような要素が1つだけ、すなわちPCIeハードブロック121が存在する。PCIeハードブロック121は、ホスト105と通信し、次に説明するシステム210のいくつかの他の要素とも通信する。
【0054】
次に、VHPC 130は、図示のように、9つの別々の要素にマッピングされる。
図2のこれら9つの要素のそれぞれは、薄い陰影を有するブロックとして示され、それぞれのかかるブロックの周りには実線の境界がある。図の上部から始まって、これらは、PCIe割込みジェネレータ134、リクエスタ要求(RQ)MUX 131、コンプリータ完了(CC)MUX 133、コンプリータ要求(CQ)MUX 135、構成バイパス136、vDSPレジスタ137、vDSP処理138、及び仮想ホットプラグハンドラ139を含む。
【0055】
最後に、
図1の統合エンドポイント150サブブロックは、
図2の7つの別個の要素にマッピングされる。これらの要素のそれぞれは、
図2において、破線の境界はあるが、陰影のないブロックとして描かれている。これらの7つの要素は、
図2の上部から始まって、リクエスタ完了(RC)処理151、エラーメッセージ生成153、CC処理155、RCデータパス処理157、CCデータパスレジスタ156、vEPデータパスレジスタ158、及びvEP処理159を含む。
【0056】
図2を前の
図1と比較することによって理解され得るように、
図1のPCIeトポロジマッパは、
図2の例において、2つの部分、すなわち、構成バイパス136及びFWトポロジカーネル141に分割されている。したがって、この例示的な実装形態では、構成要求(ホスト105から送られたPCIeコンプリータ要求(CFG)176)のすべてが、PCIeハードブロック121を介してCQ mux 135に転送され、そこからPCIeコンプリータ要求(構成)用であるリンク176を介して構成バイパス136に転送され、構成バイパス136からファームウェア(「FW」)トポロジカーネル141に転送される。それらは、FWトポロジカーネル141から本質的に同様の経路を通って、すなわちFWトポロジカーネル141から構成バイパス136に戻され、構成バイパス136で受信されると、リンク174を介してCC mux 133に送信され、次いでCC mux 133は、完了信号をPCIeハードブロック121に送信し、PCIeハードブロック121は完了信号をホスト105に転送する。
【0057】
読み出し要求の場合、FWトポロジカーネル141は、構成バイパス136のステータスレジスタからステータスを収集し、ステータスを現在のトポロジにマッピングし、構成バイパス136を介して、CC mux 133へのリンク174に沿って、PCIeハードブロック121を通して、ホスト105に完了を戻す。
【0058】
書き込み要求の場合、FWトポロジカーネル141は、それを現在のトポロジにマッピングし、対応するレジスタに書き込み、ホスト105に完了を戻す。仮想リンク関連レジスタをターゲットとする非データパス関連アクセスの場合、FWトポロジカーネル141は、例えば、それらのレジスタ自体をホストし得、これは、構成バイパス136からステータスを読み出す必要も、構成バイパス136に構成を書き込む必要もないことを意味する。
【0059】
図2に示されるように、構成バイパス136は、vDSPレジスタ141及びvEPデータパスレジスタ158へのレジスタアクセスを有し、仮想ホットプラグハンドラ139と構成情報を交換する。同様に、vDSPレジスタ137及びvEPデータパスレジスタ158は、制御及びステータス情報をvDSP処理138及びvEP処理159と交換する。上述したように、ホスト105からのPCIeコンプリータ要求は、CQ mux 135を介して送信される。これらは、リンク176を介して送信される構成PCIeコンプリータ要求であってもよく、又は例えば、リンク177を介して送信される非構成PCIeコンプリータ要求であってもよい。
【0060】
図2の例示的なシステム210に示されているが、上で明示的に説明されていない任意のリンク又は信号経路は、標準的なPCIeリンク及びプロトコルであり、本開示の焦点であるVHPCの態様に密接に関係しないことに留意されたい。当業者は、ホットプラグ命令に応答する際に使用される標準PCIe構造及びプロトコルを容易に理解する。
【0061】
図3は、一実施例による、PCIe IEにおいてPFのプールを管理するための方法300のフロー図である。方法300は、ブロック310~350を含む。代替の実施例では、方法300は、より多くのブロック又はより少ないブロックを含んでもよい。方法300は、ブロック310で始まり、リモートマネージャからの構成命令が受信され、構成命令は、PCIe接続の統合エンドポイントのトポロジを示す。例えば、命令は、
図1のPCIe統合エンドポイントシステム110が実装されるFPGAで受信され得る。例えば、構成命令は、
図1に更に示されるように、リモート管理エージェント103から受信され得る。最後に、例えば、構成命令は、IEをK個のvDSPに分割するようにPCIe接続の統合エンドポイントに指示し得、Kは、トポロジ1 180に関して示される1から、トポロジN 185に関して示されるある上限Nまでの整数であり、両方とも
図1に示されている。
【0062】
ブロック310から、方法300はブロック320に進み、トポロジがIE内に実装される。例えば、構成命令に従って実装されるトポロジは、利用可能なPFのすべてが関連付けられる単一のvDSPが存在する
図1のトポロジ1 180の事例のように、より集中化されてもよく、又は例えば、トポロジは、それぞれが1つのPFのみを有するN個のvEPが存在する
図1の例示的なトポロジN 185のように、完全に分散化されてもよい。
【0063】
ブロック320から、方法300はブロック330に進み、ホットプラグ命令がリモートマネージャから受信され、ホットプラグ命令は、VHPCに、1つ以上のvEPをvDSPに追加すること、1つ以上のvEPをvDSPから除去すること、又はこれら2つの任意の組合せを実行することを指示する。
【0064】
ブロック340から、方法300はブロック350に進み、改訂されたトポロジに関してPCIe接続のホストに通知するために、少なくとも1つのPCIe割込みが開始される。例えば、PCIe割込みは、
図1のPCIe割込みジェネレータ134から、又は例えば、
図2に示される代替のPCIe統合エンドポイントシステム210のPCIe割込みジェネレータ134から送信され得る。
【0065】
ブロック350から、方法300はブロック360に進み、ブロック350で開始されたPCIe割込みに応答して、構成要求がホストから受信される。1つ以上の実施例では、ホスト105によって送信される構成要求は、標準PCIe構成要求であり、ホストは、DSPにPCIeホットプラグステータス情報をポーリングする。方法300は、ブロック360で終了する。
【0066】
上述のように、1つ以上の実施例では、FPGAソフトロジック及び/又はソフトウェア介入を使用して、リモート構成、動的割り当て、及びPCIe準拠が提供され得る。
図4は、そのように使用され得る例示的なFPGAアーキテクチャを示す。
図4を参照すると、FPGA 400は、マルチギガビットトランシーバ(multi-gigabit transceiver、「MGT」)1、構成可能ロジックブロック(configurable logic block、「CLB」)2、ランダムアクセスメモリブロック(blocks of random access memory、「BRAM」)3、入力/出力ブロック(input/output block、「IOB」)4、構成及びクロッキングロジック(configuration and clocking logic、「CONFIG/CLOCKS」)5、デジタル信号処理ブロック(digital signal processing block、「DSP」)6、専用入力/出力ブロック(「I/O」)7(例えば、構成ポート及びクロックポート)、及びデジタルクロックマネージャ、アナログ-デジタル変換器、システム監視ロジックなどの他のプログラム可能なロジック8を含む多数の異なるプログラム可能なタイルを含む。いくつかのFPGAはまた、専用のプロセッサブロック(processor block、「PROC」)10を含む。FPGA 400は、やはり上述したように、PCIe統合エンドポイントシステム100又はPCIe統合エンドポイントシステム210の1つ以上のインスタンスを含み得る。
【0067】
いくつかのFPGAにおいて、それぞれのプログラム可能なタイルは、
図5の上部に含まれる例によって示されるように、同じタイル内のプログラム可能なロジック要素の入力及び出力端子20への接続を有する少なくとも1つのプログラム可能な相互接続要素(interconnect element、「INT」)11を含み得る。それぞれのプログラム可能な相互接続要素11はまた、同じタイル又は他のタイル(複数可)内の隣接するプログラム可能な相互接続要素の相互接続セグメント22への接続を含み得る。それぞれのプログラム可能な相互接続要素11はまた、ロジックブロック(図示せず)間の汎用ルーティングリソースの相互接続セグメント24への接続を含み得る。汎用ルーティングリソースは、相互接続セグメント(例えば、相互接続セグメント24)のトラックを含むロジックブロック(図示せず)と、相互接続セグメントを接続するためのスイッチブロック(図示せず)との間のルーティングチャネルを含み得る。汎用ルーティングリソースの相互接続セグメント(例えば、相互接続セグメント24)は、1つ以上のロジックブロックにまたがり得る。プログラム可能な相互接続要素11は、汎用ルーティングリソースと共に、図示されるFPGAのためのプログラム可能な相互接続構造(「プログラム可能な相互接続」)を実装する。
【0068】
例示的な実装形態では、CLB2は、ユーザロジックを実装するようにプログラムされ得る構成可能ロジック要素(configurable logic element、「CLE」)12に加え、単一のプログラム可能な相互接続要素(「INT」)11を含み得る。BRAM3は、1つ以上のプログラム可能な相互接続要素に加えて、BRAMロジック要素(BRAM logic element、「BRL」)13を含み得る。典型的に、タイルに含まれる相互接続要素の個数は、タイルの高さによって異なる。描写の実施例では、BRAMタイルの高さは、5個のCLBと同じであるが、他の個数(例えば、4個)も使用可能である。DSPタイル6は、適切な数のプログラム可能な相互接続要素に加えて、DSPロジック要素(DSP logic element、「DSPL」)14を含み得る。IOB4は、例えば、プログラム可能な相互接続要素11の1つのインスタンスに加えて、入力/出力ロジック要素(input/output logic、「IOL」)15の2つのインスタンスを含み得る。当業者には明らかなように、例えば、I/Oロジック要素15に接続された実際のI/Oパッドは、典型的に、入力/出力ロジック要素15の領域に限定されない。
【0069】
描写の実施例では、ダイの中心近くの水平領域(
図5に示されている)は、構成、クロック、及び他の制御ロジックに使用される。この水平領域又は列から延びる垂直列9は、FPGAの幅にわたってクロック及び構成信号を分配するために使用される。
【0070】
図4に示したアーキテクチャを活用したいくつかのFPGAは、FPGAの大部分を作り上げる規則的な柱状構造を中断させる更なるロジックブロックを含む。更なるロジックブロックは、プログラム可能なブロック及び/又は専用ロジックであり得る。例えば、プロセッサブロック10は、CLB及びBRAMのいくつかの列にまたがる。プロセッサブロック10は、単一のマイクロプロセッサから、マイクロプロセッサ(複数可)、メモリコントローラ、周辺機器などの完全なプログラム可能な処理システムに及ぶ様々な構成要素であり得る。
【0071】
図4は、例示的なFPGAアーキテクチャのみを示すことを意図することに留意されたい。例えば、
図4の上部に含まれる、行におけるロジックブロックの個数、行の相対幅、行の個数と順番、行に含まれるロジックブロックのタイプ、そのロジックブロックの相対サイズ、また相互接続/ロジック実装形態は、単に例示的なものである。例えば、実際のFPGAでは、ユーザロジックの効率的な実装を容易にするために、CLBが現れる場所はどこでも、CLBの2つ以上の隣接する行が典型的に含まれるが、隣接するCLB行の数は、FPGAの全体的なサイズに応じて変化する。
【0072】
したがって、拡張されたハードウェア能力により、複数の仮想デバイスが単一の物理カード上に提供され、したがって、それぞれがそれ自体のPCIeスイッチを有しない1つ以上の実施例では、仮想ホットプラグコントローラは、物理カード上のそれらの仮想デバイスのいずれかに対するホットプラグ機能をエミュレートする。そのような実施例では、仮想PCIeホットプラグコントローラは、物理スイッチを伴わないネイティブPCIeホットプラグ機構を介するデバイスとして、単一のPCIe物理機能又はPCIe物理機能グループのいずれかを仮想的にホットアド又はホットリムーブし得る。1つ以上の実施例では、FPGAソフトロジック及び/又はソフトウェア介入を使用して、リモート構成、動的割り当て、及びPCIe準拠が提供され得る。
【0073】
上記は本発明の実施形態を対象としているが、本発明の基本的な範囲から逸脱することなく本発明の他の実施形態及び更なる実施形態を考案することができ、本発明の範囲は以下の「特許請求の範囲」によって決定される。
【国際調査報告】