(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-03-09
(54)【発明の名称】PCIe周辺機器共有
(51)【国際特許分類】
G06F 13/10 20060101AFI20230302BHJP
G06F 13/36 20060101ALI20230302BHJP
G06F 13/38 20060101ALI20230302BHJP
G06F 13/42 20060101ALI20230302BHJP
【FI】
G06F13/10 330C
G06F13/36 310E
G06F13/38 350
G06F13/42 310
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022541245
(86)(22)【出願日】2020-12-28
(85)【翻訳文提出日】2022-09-02
(86)【国際出願番号】 US2020067114
(87)【国際公開番号】W WO2021138236
(87)【国際公開日】2021-07-08
(32)【優先日】2020-10-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-01-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】スリラマクリシュナン ゴヴィンダラジャン
(72)【発明者】
【氏名】キション ヴィジェイ アブラハム イスラエル ヴィジャイポンラジ
(72)【発明者】
【氏名】ミヒル ナレンドラ モディ
(72)【発明者】
【氏名】ジェイソン エイテイー ジョーンズ
(57)【要約】
周辺機器プロキシサブシステム(306)は、共有されるべきルートコントローラ(312、316)とシングルルートI/O仮想化(SR-IOV)周辺機器デバイス(308)とを有する各々複数のホスト(302、304)間に配置される。周辺機器プロキシサブシステム(306)は、SR-IOV周辺機器デバイス(308)のエンドポイント(320)に結合するためのルートコントローラ(318)とホスト(302、304)のルートコントローラ(312、316)に結合するための複数エンドポイント(310、314)を提供する。周辺機器プロキシサブシステムは、SR-IOV周辺機器デバイスの仮想機能を必要に応じて複数エンドポイント(310、314)にマッピングして、仮想機能がホストに割り当てられ得る。SR-IOV周辺機器デバイスの仮想機能は物理機能又は仮想機能として適切なホスト(302、304)に提示される。
【特許請求の範囲】
【請求項1】
周辺機器プロキシサブシステムであって、
周辺機器デバイスPCIe(Peripheral Component Interconnect Express)エンドポイントに接続するためのサブシステムPCIe(Peripheral Component Interconnect Express)ルートコントローラと、
第1のホストの第1のPCIeルートコントローラに結合するための第1のサブシステムPCIeエンドポイントであって、前記第1のサブシステムPCIeエンドポイントが、第1の物理機能を前記第1のPCIeルートコントローラに提示し、前記第1の物理機能が、第1の周辺機器デバイス仮想機能にマッピングされる、前記第1のサブシステムPCIeエンドポイントと、
第2のホストの第2のPCIeルートコントローラに結合するための第2のサブシステムPCIeエンドポイントであって、前記第2のサブシステムPCIeエンドポイントが、第2の物理機能を前記第2のPCIeルートコントローラに提示し、前記第2の物理機能が、第2の周辺機器デバイス仮想機能にマッピングされる、前記第2のサブシステムPCIeエンドポイントと、
PCIeメモリトランザクションをルーティングするためのルーティングメカニズムと、
を含み、
前記PCIeメモリトランザクションが、前記仮想機能が前記第1の物理機能にマッピングされるか又は前記第2の物理機能にマッピングされるかに基づいて、前記サブシステムPCIeルートコントローラと、前記第1のサブシステムPCIeエンドポイント及び前記第2のサブシステムPCIeエンドポイントのうちの対応するエンドポイントとの間で、前記第1の周辺機器デバイス仮想機能及び前記第2の周辺機器デバイス仮想機能のうちから選択される仮想機能のためのものである、
周辺機器プロキシサブシステム。
【請求項2】
請求項1に記載の周辺機器プロキシサブシステムであって、
前記第1の物理機能が、PCIe周辺機器デバイスの物理機能構成空間からのデータを提供するための構成空間と、前記第1の物理機能にマッピングされた前記第1の周辺機器デバイス仮想機能の仮想機能構成空間とを有し、
前記第2の物理機能が、前記PCIe周辺機器デバイスの前記物理機能構成空間からのデータを提供するための構成空間と、前記第2の物理機能にマッピングされた前記第2の周辺機器デバイス仮想機能の前記仮想機能構成空間とを有する、
周辺機器プロキシサブシステム。
【請求項3】
請求項1に記載の周辺機器プロキシサブシステムであって、
前記ルーティングメカニズムが、前記サブシステムPCIeルートコントローラと、前記第1及び第2のサブシステムPCIeエンドポイントとの間に結合された周辺機器仮想化ユニット(PVU)を含み、
前記PVUが、トランザクション内のメモリアドレスをPCIe周辺機器デバイスから内部メモリアドレスに翻訳し、前記第1及び第2の周辺機器デバイス仮想機能と、前記トランザクションを発信する前記PCIe周辺機器デバイス仮想機能とのマッピングに基づいて、前記第1のサブシステムPCIeエンドポイント又は前記第2のサブシステムPCIeエンドポイントに前記トランザクションをルーティングするためのものである、
周辺機器プロキシサブシステム。
【請求項4】
請求項3に記載の周辺機器プロキシサブシステムであって、
前記ルーティングメカニズムが、前記PCIe周辺機器デバイスからのトランザクションにおけるリクエスタIDを仮想IDに翻訳するための仮想IDマップ論理を含み、
前記PVUが、メモリアドレスを翻訳する際に仮想IDを利用する、
周辺機器プロキシサブシステム。
【請求項5】
請求項1に記載の周辺機器プロキシサブシステムであって、
前記第1及び第2のサブシステムPCIeエンドポイントが、ベースアドレスレジスタ(BAR)を含み、
前記第1及び第2の周辺機器デバイス仮想機能が各々BARを含み、
前記ルーティングメカニズムが、前記第1及び第2のエンドポイントのBARを、前記第1及び第2の周辺機器デバイス仮想機能のBARに書き込まれるべき第1及び第2の内部メモリアドレスに導く、
周辺機器プロキシサブシステム。
【請求項6】
請求項1に記載の周辺機器プロキシサブシステムであって、
前記第1及び第2の周辺機器デバイス仮想機能が、メッセージ信号割り込み(MSI:Message Signaled Interrupts)を利用し、
前記ルーティングメカニズムが、前記サブシステムPCIeルートコントローラと、前記周辺機器デバイス仮想機能がマッピングされる前記第1又は第2のサブシステムPCIeエンドポイントとの間で、前記第1の周辺機器デバイス仮想機能及び前記第2の周辺機器デバイス仮想機能のうちから選択される周辺機器デバイス仮想機能からMSIトランザクションをルーティングする、
周辺機器プロキシサブシステム。
【請求項7】
請求項1に記載の周辺機器プロキシサブシステムであって、
前記第1のサブシステムPCIeエンドポイントが、仮想機能を第1のホストのPCIeルートコントローラに提示し、前記第1のサブシステムPCIeエンドポイント仮想機能が、第3のPCIe周辺機器デバイス仮想機能にマッピングされる、
周辺機器プロキシサブシステム。
【請求項8】
コンピュータシステムであって、
第1のPCIe(Peripheral Component Interconnect Express)ルートコントローラを備える第1のホストと、
第2のPCIeルートコントローラを備える第2のホストと、
周辺機器デバイスPCIeエンドポイントを有する周辺機器デバイスと、
周辺機器プロキシサブシステムと、
を含み、
前記周辺機器プロキシサブシステムが、
前記周辺機器デバイスPCIeエンドポイントに接続されたサブシステムPCIeルートコントローラと、
前記第1のホストの前記第1のPCIeルートコントローラに結合された第1のPCIeエンドポイントであって、前記第1のPCIeエンドポイントが、前記第1のPCIeルートコントローラに第1の物理機能を提示し、前記第1の物理機能が第1の周辺機器デバイス仮想機能にマッピングされる、前記第1のPCIeエンドポイントと、
前記第2のホストの前記第2のPCIeルートコントローラに結合された第2のPCIeエンドポイントであって、前記第2のPCIeエンドポイントが、前記第2のPCIeルートコントローラに第2の物理機能を提示し、前記第2の物理機能が、第2の周辺機器デバイス仮想機能にマッピングされる、前記第2のPCIeエンドポイントと、
PCIeメモリトランザクションをルーティングするためのルーティングメカニズムと、
を含み、
前記PCIeメモリトランザクションが、前記第1の物理機能又は前記第2の物理機能のうちの選択された1つにマッピングされている仮想機能に基づいて、前記サブシステムPCIeルートコントローラと、前記第1及び第2のPCIeエンドポイントのうちの対応するエンドポイントとの間で、前記第1の周辺機器デバイス仮想機能及び前記第2の周辺機器デバイス仮想機能のうちから選択された仮想機能のためのものである、
コンピュータシステム。
【請求項9】
請求項8に記載のコンピュータシステムであって、
前記周辺機器デバイスが、前記物理機能及び各仮想機能のための構成空間を有し、
前記第1の物理機能が、前記周辺機器デバイスの物理機能構成空間からのデータを提供するための構成空間と、前記第1の物理機能にマッピングされた前記第1の周辺機器仮想機能の仮想機能構成空間とを有し、
前記第2の物理機能が、前記周辺機器デバイスの物理機能構成空間からのデータを提供するための構成空間と、前記第2の物理機能にマッピングされた前記第2の周辺機器仮想機能の仮想機能構成空間とを有する、
コンピュータシステム。
【請求項10】
請求項8に記載のコンピュータシステムであって、
前記ルーティングメカニズムが、前記ルートコントローラと前記第1及び第2のPCIeエンドポイントとの間に結合された周辺機器仮想化ユニット(PVU)を含み、
前記PVUが、前記周辺機器デバイスからのトランザクションにおけるメモリアドレスを内部メモリアドレスに翻訳し、前記第1及び第2の周辺機器デバイス仮想機能と、前記トランザクションを発信する前記周辺機器デバイス仮想機能とのマッピングに基づいて、前記第1のPCIeエンドポイント又は前記第2のPCIeエンドポイントに前記トランザクションをルーティングするためのものである、
コンピュータシステム。
【請求項11】
請求項10に記載のコンピュータシステムであって、
前記ルーティングメカニズムが、前記周辺機器デバイスからのトランザクションにおけるリクエスタIDを仮想IDに翻訳する仮想IDマップ論理を含み、
前記PVUが、メモリアドレスを翻訳する際に前記仮想IDを利用する、
コンピュータシステム。
【請求項12】
請求項8に記載のコンピュータシステムであって、
前記第1及び第2のPCIeエンドポイントが、ベースアドレスレジスタ(BAR)を含み、
前記第1及び第2の周辺機器デバイス仮想機能が各々BARを含み、
前記ルーティングメカニズムが、前記第1及び第2のPCIeエンドポイントBARを、前記第1及び第2の周辺機器デバイス仮想機能BARに書き込まれるべき第1及び第2の内部メモリアドレスに向ける、
コンピュータシステム。
【請求項13】
請求項8に記載のコンピュータシステムであって、
前記第1及び第2の周辺機器デバイス仮想機能が、メッセージ信号割り込み(MSI:Message Signaled Interrupts)を利用し、
前記ルーティングメカニズムが、前記PCIeルートコントローラと、前記周辺機器デバイス仮想機能がマッピングされる前記第1又は第2のPCIeエンドポイントとの間で、周辺機器デバイス仮想機能からMSIトランザクションをルーティングする、
コンピュータシステム。
【請求項14】
請求項8に記載のコンピュータシステムであって、
前記周辺機器デバイスが第3の仮想機能を有し、
前記第1のPCIeエンドポイントが、前記第1のホストの前記第1のPCIeルートコントローラに仮想機能を提示し、前記第1のPCIeエンドポイント仮想機能が前記第3の仮想機能にマッピングされる、
コンピュータシステム。
【請求項15】
周辺機器プロキシサブシステムを動作させる方法を一つ又は複数のプロセッサに実施させるためのプログラムを格納する非一時的メモリメモリであって、前記周辺機器プロキシサブシステムが、
周辺機器デバイスPCIe(Peripheral Component Interconnect Express)エンドポイントに結合するためのサブシステムPCIeルートコントローラと、
第1のホストの第1のPCIeルートコントローラに結合するための第1のPCIeエンドポイントと、
第2のホストの第2のPCIeルートコントローラに結合するための第2のPCIeエンドポイントと、
前記サブシステムPCIeルートコントローラと前記第1及び第2のPCIeエンドポイントとの間でPCIeメモリトランザクションをルーティングするためのルーティングメカニズムと、
を含み、
前記方法が、
第1の物理機能を前記第1のPCIeルートコントローラに提示するように前記第1のPCIeエンドポイントを構成することであって、前記第1の物理機能が第1の周辺機器デバイス仮想機能にマッピングされることと、
第2の物理機能を前記第2のPCIeルートコントローラに提示するように前記第2のPCIeエンドポイントを構成することであって、前記第2の物理機能が、第2の周辺機器デバイス仮想機能にマッピングされることと、
前記第1及び第2の周辺機器デバイス仮想機能のうちから選択された仮想機能に向けられている前記PCIeメモリトランザクションに基づいて、前記サブシステムPCIeルートコントローラと、前記第1及び第2のPCIeエンドポイントの選択されたエンドポイントとの間で、PCIeメモリトランザクションをルーティングするように前記ルーティングメカニズムを構成することと、
を含む、
非一時的メモリ。
【請求項16】
請求項15に記載の非一時的メモリであって、
前記第1の物理機能が構成空間を有し
第2の物理機能が構成空間を有し、
前記方法が更に、
前記第1の物理機能構成空間を、周辺機器デバイス物理機能構成空間からのデータで構成することであって、前記第1の周辺機器デバイス仮想機能の前記仮想機能構成空間が、前記第1の物理機能にマッピングされることと、
前記第2の物理機能構成空間を、前記周辺機器デバイス物理機能構成空間からのデータで構成することであって、前記第2の周辺機器デバイス仮想機能の前記仮想機能構成空間が、前記第2の物理機能にマッピングされることと、
を含む、
非一時的メモリ。
【請求項17】
請求項15に記載の非一時的メモリであって、
前記ルーティングメカニズムが、前記サブシステムPCIeルートコントローラと前記第1及び第2のPCIeエンドポイントとの間に結合された周辺機器仮想化ユニット(PVU)を含み、
前記PVUが、周辺機器デバイスからのメモリトランザクション内のメモリアドレスを内部メモリアドレスに翻訳し、前記第1及び第2の周辺機器デバイス仮想機能と、前記メモリトランザクションを発信する前記周辺機器デバイス仮想機能とのマッピングに基づいて、前記第1のPCIeエンドポイント又は前記第2のPCIeエンドポイントに前記メモリトランザクションをルーティングするためのものであり、
前記方法が更に、
前記第1及び第2の周辺機器デバイス仮想機能に対して内部アドレスを割り当てることと、
ホストメモリアドレスから、前記メモリトランザクション内の前記第1及び第2の周辺機器デバイス仮想機能に対する前記割り当てられた内部アドレスに翻訳するように前記PVUを構成することと、
前記第1及び第2の周辺機器デバイス仮想機能の前記第1及び第2のサブシステムPCIeエンドポイントへのマッピングに基づいて、前記第1又は第2のサブシステムPCIeエンドポイントに前記メモリトランザクションをルーティングするように前記PVUを構成することと、
を含む、
非一時的メモリ。
【請求項18】
請求項15に記載の周辺機器プロキシサブシステムであって、
前記第1及び第2のPCIeエンドポイントが、ベースアドレスレジスタ(BAR)を含み、
前記第1及び第2のPCIe周辺機器デバイス仮想機能が各々BARを含み、
前記方法が更に、前記第1及び第2のエンドポイントPCIeエンドポイントBARを、前記第1及び第2のPCIe周辺機器デバイス仮想機能のBARに書き込まれるべき第1及び第2の内部メモリアドレスに向けることを含む、
周辺機器プロキシサブシステム。
【請求項19】
請求項15に記載の周辺機器プロキシサブシステムであって、
前記第1及び第2の周辺機器デバイス仮想機能が、メッセージ信号割り込み(MSI:Message Signaled Interrupts)を利用し、
前記ルーティングメカニズムが、前記ルートコントローラと前記第1又は第2のPCIeエンドポイントとの間で、シングルルートI/O仮想化(SR‐IOV)PCIe周辺機器デバイスの仮想機能からMSIトランザクションをルーティングし、
前記方法が更に、前記サブシステムPCIeルートコントローラと、前記SR‐IOV PCIe周辺機器デバイス仮想機能がマッピングされている前記第1及び第2のPCIeエンドポイントとの間でMSIトランザクションをルーティングするように前記ルーティングメカニズムを構成することを含む、
周辺機器プロキシサブシステム。
【請求項20】
請求項15に記載の周辺機器プロキシサブシステムであって、
前記方法が、仮想機能を第3のPCIeルートコントローラに提示するように前記第1のPCIeエンドポイントを構成することを更に含み、前記第1の周辺機器デバイス仮想機能が前記第3の仮想機能にマッピングされる、
周辺機器プロキシサブシステム。
【発明の詳細な説明】
【技術分野】
【0001】
処理能力の向上に対する需要はとどまるところを知らない。車両が自律的になり、工業プロセスがますますニューラルネットワーキングに依存するようになるにつれて、より上位レベルの処理能力の必要性が衰えることはない。高性能コンピューティングシステムをシステムオンチップ(SOC)に統合する際に著しい進歩があったが、そのような統合には依然として限界がある。また、種々のSOC間で周辺機器デバイスを共有する必要もある。SOCはイーサネット能力を含み得、PCIe(登録商標)(Peripheral Component Interconnect Express)ポートを有し得るが、SOCの外部の周辺機器デバイスを共有することには多くの課題がある。共有のためのイーサネットの使用は、関与するデバイスのための著しいオーバーヘッドの問題を有し、複雑なシステム構成を有する。PCIeはシステム間で周辺機器デバイスを個々のルートコントローラと共有する能力を有するが、その共有は周辺機器デバイス及び介在する構成要素に多くの困難をもたらす。これらの困難は共有PCIe周辺機器デバイスの可用性及び配備を制限し、結果として、高性能SOCと共有される周辺機器デバイスとを組み合わせることがより困難になっている。
【発明の概要】
【0002】
各々がルートコントローラを有する複数のホストと、共有されるシングルルートI/O仮想化(SR-IOV)周辺機器デバイスデバイスとの間に、周辺機器プロキシサブシステムが配置される。周辺機器プロキシサブシステムは、SR-IOV周辺機器デバイスのエンドポイントに接続するためのルートコントローラと、ホストのルートコントローラに接続するための複数のエンドポイントとを提供する。周辺機器プロキシサブシステムは、SR-IOV周辺機器デバイスの仮想機能を必要に応じて複数のエンドポイントにマッピングして、仮想機能をホストに割り当てることができる。SR-IOV周辺機器デバイスの物理機能は、周辺機器プロキシデバイスによって管理されて、所望の数の仮想機能をイネーブルする。周辺機器プロキシサブシステムはまた、所望に応じて、多機能周辺機器デバイスの個々の物理機能を周辺機器プロキシサブシステム内の複数のエンドポイントにマッピングして、個々の機能がホストに割り当てられることを可能にし得る。SR-IOV周辺機器デバイスの仮想デバイス又は多機能周辺機器デバイスの個々の物理デバイスは、物理デバイス又は仮想デバイスとして適切なホストに提示される。
【0003】
これにより、SR-IOV周辺機器デバイス又は多機能周辺機器デバイスをマルチルートIO仮想化(MR-IOV)周辺機器デバイスとして機能させることができ、見つけることが困難なMR-IOV周辺機器デバイス又はマルチルートアウェア(MRA)スイッチを必要とすることなく、マルチルートドメインを開発することができる。
【図面の簡単な説明】
【0004】
種々の例の詳細な説明のため、ここで、添付の図面を参照する。
【0005】
【
図1】PCIeを用いて2つの周辺機器デバイスを共有する2つのホストの高レベルブロック図である。
【0006】
【0007】
【
図3】SR-IOV周辺機器を共有するための一例のブロック図である。
【0008】
【
図4】
図2に従った、より複雑な例のブロック図である。
【0009】
【
図5】
図3に従った、より複雑な例のブロック図である。
【0010】
【
図6】
図3の周辺機器プロキシデバイスの動作のフローチャートである。
【0011】
【
図7】
図3の例におけるPCIeレジスタの一例を図示するブロック図である。
【0012】
【
図8】
図3の例における周辺機器デバイスからホストへのデータ転送動作の一例を図示するブロック図である。
【0013】
【
図9】
図3の例における、ホストから周辺機器デバイスへのデータ転送動作の一例を図示するブロック図である。
【0014】
【
図10】
図3の例におけるMSI動作の一例を図示するブロック図である。
【0015】
【
図11】例示システムの考えられる構成を図示する図である。
【0016】
【
図12】
図3の周辺機器プロキシサブシステムの一例のハードウェアブロック図である。
【0017】
【
図13】SOCの一例のハードウェアブロック図である。
【発明を実施するための形態】
【0018】
ここで
図1を参照すると、PCIeスイッチ106に接続されたホスト1 102及びホスト2 104を有する構成の一例であるコンピュータシステム100が示されており、次いで、PCIeスイッチ106に接続されたPCIe NVM Express(商標)(NVMe(商標))メモリ108及びPCIe 25Gイーサネットネットワークコントローラ110を有する。この構成は、理想的には、ホスト1 102及びホスト2 104が、共有メモリストレージのためにNVMeメモリ108にアクセスし、25Gイーサネットネットワークコントローラ110を利用して、外部システムに高速でアクセスすることを可能にする。しかしながら、実際にはこのような構成は、
図1に見られるようなシンプルなものではない。PCIeデバイスを複数のルートコントローラで共有できるため、問題が発生する。ホスト1 102及びホスト2 104などのホストは、PCIeツリー又はネットワークの最上位として機能するためのPCIeルートコントローラを有する。PCIeは、周辺機器デバイスを共有する2つの方法を提供する。第1の方法は、シングルルートIO仮想化(SR-IOV)と呼ばれる。第2の方法は、マルチルートIO仮想化(MR-IOV)と呼ばれ、デバイスはマルチルートアウェア(MRA)である。SR-IOVは、単一PCIeルートコントローラを介して動作する物理プロセッサチップ上に含まれる複数の仮想機械とホストオペレーティングシステム又はハイパーバイザが、共有周辺機器デバイスにアクセスすることを可能にする。共有周辺機器デバイスは、PCIeインタフェースで物理機能及び複数の仮想機能レジスタセットを提示する。仮想機械又はコアの各々は一つ又は複数の仮想機能を割り当てられ、物理機能はオペレーティングシステム又はハイパーバイザに割り当てられる。ただし、SR-IOVは、各々がPCIeルートコントローラを含む2つのホストが同じPCIe周辺機器デバイスを共有する必要がある場合には役立たない。複数のルートコントローラを備えた複数のホストがPCIe周辺機器デバイスを共有する場合、介在するPCIeスイッチもMR-IOVに準拠していれば、MR-IOV周辺機器デバイスを用いることができる。SR-IOV対応周辺機器デバイスは多数存在するが、MR-IOV対応周辺機器デバイスは非常に少なく、MR-IOVスイッチは非常に少ない。これは、デバイス周辺機器デバイス及びスイッチの各々に必要とされる複雑さが増すためである。MR-IOVに準拠するためには、MRA PCIeスイッチがトランザクションを適切にルーティングするためにホストによって用いられるアドレス空間を認識していなければならない。MR-IOV準拠の周辺機器デバイスは、基本機能を提供し、複数の仮想エンドポイントを提示するために、より複雑なインタフェースを有し得、各仮想エンドポイントは、物理機能と仮想機能の両方を有する。これらの付加的な要件は、MR-IOV準拠スイッチ及び周辺機器デバイスの可用性を制限している。
【0019】
図2は、MR-IOVに準拠するMRA PCIeスイッチ206に接続されたホスト1 202及びホスト2 204を含むコンピュータシステム200の例である。SR-IOV周辺機器デバイス208が、MRA PCIeスイッチ206に接続される。このSR-IOV周辺機器デバイス208は、2つのホスト202、204のうちの1つによってのみ利用することができる。MR-IOV周辺機器デバイス210が、MRA PCIeスイッチ206に接続され、両方のホスト202、204によって利用され得る。SR-IOV周辺機器デバイス208は、エンドポイント(EP)PCIeインタフェースEP0 217において、物理機能(PF)ゼロ(PF0)212と、2つの仮想機能(VF)VF1 214及びVF2 216とを提示する。対照的に、MR-IOV周辺機器デバイス210は、EP1 219において、MR-IOV周辺機器デバイス210及び2つの仮想エンドポイント(VEP)、VEP2 218及びVEP3 220の複数のルート特徴を管理するために用いられる基本機能(BF)244を提示する。VEP2 218はPF0 222を提示し、VEP3 220はPF1 224及びVF1 226を提示する。図示の実施例では、例示のホスト1 202がSR-IOV周辺機器デバイス208の制御を有し、PF0 212と相互作用するための例示のモジュール228、VF1 214と相互作用するためのモジュール230、及びVF2 216と相互作用するためのモジュール232を有する。ホスト1 202はまた、VEP2 218の制御を有し、PF0 222と相互作用するためのモジュール236を有する。ホスト2 204は、VEP3 220の制御を有し、VF1 226と相互作用するためのPF1 224、及び242と相互作用するためのモジュール240を有する。MRA PCIeスイッチ206は、マルチルートPCIマネージャ(MR-PCIM)246を含み、これは、示された例ではMR-IOV周辺機器デバイス210だけでマルチルートトポロジー内の仮想階層の発見及び構成を担当する。MRA PCIeスイッチ206は、ホスト1 202及びホスト2 204がちょうどSR-IOV、多機能又は単一機能周辺機器デバイスを見るようにマルチルート態様を管理する。
【0020】
図3は、SR-IOV周辺機器デバイスを共有するために個々のルートコントローラを多数のホストに提供する一例のコンピュータシステム300を図示する。ホスト1 302及びホスト2 304は、周辺機器プロキシサブシステム306に接続される。周辺機器プロキシサブシステム306は、SR-IOV周辺機器デバイス308に接続される。
図3の周辺機器プロキシサブシステム306は、PCIeエンドポイントインタフェースEP2 310を提供して、ホスト1 302のルートコントローラ(RC)インタフェースRC1 312と協働する。周辺機器プロキシサブシステム306はまた、ホスト2 304のルートコントローラPCIeインタフェースRC2 316と協働するために、PCIeエンドポイントインタフェースEP3 314を提供する。周辺機器プロキシサブシステム306は、ルートコントローラPCIeインタフェースRC3 318を提供し、ルートコントローラPCIeインタフェースRC3 318は、PF0 321、VF1 322、及びVF2 324を含むSR-IOV周辺機器デバイス308上のPCIeエンドポイントインタフェースEP320と協働する。これらは、周辺機器プロキシサブシステム306内のRC3 318によって制御される。周辺機器プロキシサブシステム306は、PF0 321、328と相互作用するため、VF1 322及び330と相互作用するため、及びVF2 324と相互作用するためのモジュール326を有する。周辺機器プロキシサブシステム306は、RC1 312に結合されたEP2 310においてPF0’332と示されるPF0 321の第1のクローン化されたインスタンスを提示する。
図3の例では、PF0’332は、周辺機器プロキシサブシステム306によってPCIeエンドポイント物理機能として提示される周辺機器デバイス308のVF1 322である。同様に、EP3 314は、PF0”334と示されるPF0 312の第2のクローン化されたインスタンスを提示し、これは
図3の例では周辺機器デバイス308のVF2 324である。このように、周辺機器デバイス308の仮想機能は、クローン化されたインスタンスPF0’332及びPF0”334の間で任意に分割することができ、物理機能のクローン化されたインスタンスの各々は、仮想機能の独立したサブセットを提示する。
【0021】
周辺機器プロキシサブシステム306は種々のマネージャモジュールを含む。ポリシーマネージャ336が、取り付けられた周辺機器デバイスの特定の物理機能及び仮想機能のための構成割当て情報を、様々な取り付けられたホストに格納する。構成マネージャ338が、周辺機器デバイス308のPF0 321の構成を管理する物理機能マネージャ340を含む。エンドポイントマネージャ342が、構成マネージャ338に含まれており、エンドポイント管理機能の残りを実施して、ホストが共有周辺機器デバイスを識別し、共有周辺機器デバイスによって割り込まれることを可能にする。マップ及び転送モジュール344が、周辺機器プロキシサブシステム306に含まれるメモリマッピング及びデータの転送ルーティングを管理する。
【0022】
図4は、より複雑なマルチルートPCIeシステム400の例を図示する。ホスト1 402及びホスト2 404が、MRA PCIeスイッチ406に接続される。MR-IOV周辺機器デバイス408が、MRA PCIeスイッチ406に接続され、2つの仮想エンドポイントVEP2 410及びVEP3 412を提示する。この組み合わせはマルチルートドメイン414を作成する。非MRA PCIeスイッチ416が、MRA PCIeスイッチ406に接続され、それをSR-IOV周辺機器デバイス418及び単一機能周辺機器デバイス420に接続している。MR-IOV周辺機器デバイス408はホスト1 402とホスト2 404との間で共有され、一方、SR-IOV周辺機器デバイス410及び単一機能周辺機器デバイス420は、マルチルートアウェアではないので、ホスト1 402又はホスト2 404のいずれかに割り当てられる。
【0023】
図5は、周辺機器プロキシサブシステムを含むより複雑なシステム450の例である。ホスト1 452は第1のPCIeスイッチ456に接続され、PCIeスイッチ456はマルチルートアウェアではない。ホスト2 454は第2のPCIeスイッチ458に接続される。PCIeスイッチ456は周辺機器プロキシサブシステム462のPCIeエンドポイントインタフェースEP2 460に接続され、一方、PCIeスイッチ458はPCIeエンドポイントインタフェースEP3 464に接続される。周辺機器プロキシサブシステム462のルートコントローラインタフェースRC3 466は、PCIeスイッチ468に接続される。第1のSR-IOV周辺機器デバイス470が、PCIeスイッチ468に接続される。第2のSR-IOV周辺機器デバイス472も、PCIeスイッチ468に接続される。このデバイスの集合は共に、システム450内のマルチルートドメイン474を形成する。これを
図4のマルチルートドメイン414と対照させると、マルチルートドメイン474内のホストデバイス、スイッチデバイス、又は周辺機器デバイスのいずれもマルチルートアウェアデバイスではないことに留意されたい。しかしながら、周辺機器プロキシサブシステム462は、より一般的に利用可能なSR-IOV周辺機器デバイス及び通常のPCIeスイッチが用いられることを可能にし、依然としてマルチルート動作が提供される。単一機能周辺機器デバイス476がPCIeスイッチ456に接続され、一方、単一機能周辺機器デバイス478がPCIeスイッチ458に接続され、単一機能周辺機器デバイス480がPCIeスイッチ468に接続される。この構成では、SR-IOV周辺機器デバイス470、472の仮想機能は、ホスト452と454との間で共有され得る。単一機能周辺機器デバイス480は、ホスト1 452又はホスト2 454のいずれかによって利用され得る。単一機能周辺機器デバイス476はホスト1 452専用であり、単一機能周辺機器デバイス478はホスト2 454専用である。周辺機器プロキシサブシステム462を用いることで、マルチルートドメイン474が、より一般的に利用可能なSR-IOVデバイス及び非マルチルートアウェアスイッチを用いて、マルチルートアウェアデバイスを使用せずにつくられる。
【0024】
ここで
図6を参照すると、
図3の周辺機器プロキシサブシステム306の初期化の一例が図示されている。動作602において、RC3 318とEP320との間のハードウェアリンクネゴシエーションが実施される。動作604において、周辺機器プロキシサブシステム306に存在するPCIeソフトウェアスタックが、PF0 321を列挙(enumerate)する。動作606において、物理機能マネージャ340内のPCIeドライバが、SR-IOV周辺機器デバイス308が構成され得るように、PF0 321に結合される。動作608において、ポリシーマネージャ336は、SR-IOV周辺機器デバイス308内のイネーブルする仮想機能の数を決定する。動作610において、物理機能マネージャ340は、仮想機能のこの数をPF0 321の周辺機器デバイスレジスタに書き込む。動作612において、PCIソフトウェアスタックは、EP0 320の仮想機能を列挙する。動作614において、エンドポイントマネージャ342内のPCIeエンドポイント機能ドライバが、EP2 310及びEP3 314に結合されて、適切な仮想機能構成空間データを用いて、ホスト1 302及びホスト2 304に接続されたエンドポイントインスタンスの初期化を可能にする。動作616において、ポリシーマネージャ336は、ホストに接続されたエンドポイントインスタンスと、各エンドポイントインスタンスが初期化されるべき仮想機能とを決定する。いくつかの例では、物理機能はまた、管理のみを超える機能を提供し、そういった場合、物理機能はまた、エンドポイントインスタンスにマッピングされ得る。更に他の例において、以下で説明するように、周辺機器デバイスがエンドポイントインスタンスに直接割り当てられる。動作618において、エンドポイントマネージャ342は、仮想機能構成空間データ、及び/又は、物理機能のそういった機能を提供するために用いられる物理機能構成空間の関連部分を用いて、エンドポイントインスタンスを初期化する。例えば、VF1 322がEP2 310にマッピングされる場合、VF1 322構成空間データ内の値がEP2 310にコピーされて、PF0’332又は仮想機能などの適切なクローン化された機能のための構成空間データとして提示される。基本的な物理機能データのマッピングについては後述する。動作620において、マップ及び転送モジュール344は、メモリトランザクション内のメモリアドレスの翻訳を実施し、それらのメモリトランザクションを、SR-IOV周辺機器デバイス308内の仮想機能からEP2 310又はEP3 314のいずれかに転送するように、周辺機器プロキシサブシステム306内の様々な翻訳ルックアサイドバッファ(TLB)及びトランザクションフォワーダを構成する。動作622において、RC1 312とEP2 310との間、及び、RC2 316とEP3 314との間で、ハードウェアリンクネゴシエーションが実施される。動作624において、通常のソフトウェア実行がRC1 312及びRC2 316において開始する。これにより、周辺機器プロキシサブシステム306が初期化され、動作の準備が整う。
【0025】
周辺機器プロキシサブシステム306内のルーティングメカニズムが、SR-IOV周辺機器デバイス308内の仮想機能VF1 322及びVF2 324から、それぞれ、一方の方向にホスト302及びホスト2 304に、また、SR-IOV周辺機器デバイス308内のホスト302及びホスト2 304から、それぞれ、他方の方向にVF1 322及びVF2 324にトランザクションが転送される方式を提供する。周辺機器プロキシサブシステムは、トランザクションが、SR-IOV周辺機器デバイス308内の仮想機能VF1 322及びVF2 324から、それぞれ、ホスト1 302及びホスト2 304に転送されるように、ルーティングメカニズム内の周辺機器仮想化ユニット(PVU)(812)、仮想IDマップ論理810、並びに、アウトバウンドアドレス翻訳ユニット818及び820を提供する。周辺機器プロキシサブシステムは、SR-IOV周辺機器デバイス308において、トランザクションが、ホスト1 302及びホスト2 304から、それぞれ、VF1 322及びVF2 324に転送されるルーティングメカニズムにおいて、ベースアドレスレジスタ、インバウンド及びアウトバウンドアドレス翻訳ユニット(後述する)を提供する。
【0026】
図7は、エンドポイントマネージャ342によって実施されるレジスタ構成を図示する。周辺機器プロキシサブシステムのクローン化されたインスタンスPF0’332及びPF0”334と、共有されるデバイスの対応するPF0 321とに含まれるレジスタが図示されている。エンドポイントマネージャ342は、エンドポイントインスタンスEP2 310及びEP3 314の構成空間を初期化する。エンドポイントマネージャ342は、PF0’332及びPF0”334のデバイス識別能力を、EP0 320の拡張構成空間における標準構成空間ヘッダー及びSR-IOV能力からの値で初期化する。エンドポイントマネージャ342は、必要に応じて工程618で動作が実施されるように、MSI能力を除いてEP0 320内のPF0 321の能力に依存するPF0’332及びPF0”334内に存在する他のいかなる能力も初期化する必要はない。MSI能力に関しては、所望の割り込みベクトルの数を示す複数メッセージ能力フィールドなどの或るフィールドが、マッピングされているSR-IOV周辺機器デバイス308のそれぞれの物理機能又は仮想機能に基づいて初期化される。ルートコントローラに提示されている物理機能が仮想機能からマッピングされている場合、VF構成空間データは、工程618で提示されているPF構成空間にコピーされていることになる。
【0027】
図8は、SR-IOV周辺機器デバイス308からホスト1 302及びホスト2 304へのPCIメモリ転送を図示する。VF1 322及びVF2 324が列挙されるとき、内部アドレスは予約されるか又は割り当てられる。ホスト1 302のPCIeドライバは、メモリバッファMEM(A)802を含み、ホスト2 304のPCIeドライバは、メモリバッファMEM(B)804を含む。ホスト1 302及びホスト2 304内のPCIeドライバは、VF1 322のそれぞれのバッファアドレスレジスタ806及びVF2 324のバッファアドレスレジスタ808内のそれらのメモリバッファMEM(A)802及びMEM(B)804のバッファアドレスを初期化する。そのため、VF1 322は、メモリバッファMEM(A)802へのアクセスを含み、VF2 324は、メモリバッファMEM(B)804へのアクセスを含む。現在既知のホストアドレスを用いて、TLB814及びTLB816内のエントリは、ホストアドレスから、予約された内部アドレス及び宛先エンドポイントに翻訳するようにプログラムすることができる。同様に、アウトバウンドアドレス翻訳ユニット818及び820は、内部アドレスからホストアドレスに翻訳し直すようにプログラムされる。上記の工程は、初期化工程であり、トランザクション毎に実施する必要はない。VF1 322及びVF2 324は各々、初期化動作中につくられたリクエスタIDを有する。リクエスタID(ReqID)は、特定のPF又はVFを識別するためにトランザクションにおいて用いられる。PF又はVFがメモリトランザクションを提供するとき、メモリトランザクションは、リクエスタID及びホストメモリアドレスを含む。例えば、VF1 322からのメモリトランザクションが、01×01のリクエスタIDと、バッファメモリMEM(A)802内のアドレスとを含む。周辺機器プロキシサブシステム306は、仮想IDマップ論理810を含む。仮想IDマップ論理810は、トランザクション内のリクエスタIDをVFから仮想ID(virtID)に変換し、トランザクションをPVU812に転送する。PVU812は、virtID又はVF毎に1つ、TLB814及び816を含む。TLB814及び816内のエントリは、トランザクション内のメモリアドレスを周辺機器プロキシサブシステム306の内部アドレスに変換し、指定されたエンドポイントにトランザクションを提供する。virtIDに基づくTLBの選択、及び、指定されたエンドポイントへの変換されたトランザクションの提供は、トランザクションを適切なエンドポイントにルーティングするように共に作用する。TLB814は、VF1 322に対応するvirtIDOのための翻訳ルックアサイドバッファエントリを含み、一方、TLB816は、VF2 324に対応するvirtID 1のための翻訳ルックアサイドバッファエントリを含む。PVU812が仮想IDマップ論理810からトランザクションを受け取ると、virtIDを用いて適切なTLB814又は816が選択される。TLB814、816は、トランザクション内のホストアドレスを、関連するエンドポイントEP2 310又はEP3 314のための周辺機器プロキシサブシステム306内部アウトバウンドアドレスに翻訳する。変換されたアドレスを有するトランザクションは、PF0’332内のそれぞれのアウトバウンドアドレス翻訳ユニット(ATU)818又はPF0”334内のアウトバウンドATU820に提供される。PF0’332内のアウトバウンドATU818又はPF0”334内のアウトバウンドATU820は、内部アウトバウンドアドレスを、特定のホストへのトランザクションの提供のために適切なホストアドレスに翻訳し直し、内部アドレスに基づいて特定の機能のための適切なReqIDを提供する。この最終的なトランザクションアドレス翻訳の後、トランザクションは、ホスト1 302のためにEP2 310からRC1 312に、又はホスト2 304のためにEP3 314からRC2316に提供される。
【0028】
要約すると、周辺機器デバイス308からホスト1 302又はホスト2 304へのメモリ動作の場合、周辺機器デバイス308は、PF0 321、VF1 322、又はVF2 324などの適切な機能のReqID、及びホストメモリアドレスを備えるトランザクションを提供する。ReqIDは、仮想IDマップ論理810においてvirtIDに変換される。PVU812内のTLBが、ホストメモリアドレスを内部アウトバウンドメモリアドレスに翻訳する。アウトバウンドATUが、内部アウトバウンドメモリアドレスをホストメモリアドレスに翻訳し直し、トランザクションはホストに提供される。このようにして、クローン化された物理機能PF0’332及びPF0”334の各々は、それぞれのホストに対して、それぞれのホストにのみ割り当てられた別個の独立したSR-IOV周辺機器デバイスの機能であるように見える。
【0029】
図9は、ホストから周辺機器デバイスへのメモリ転送動作を図示する。初期化時に、各仮想機能は、インバウンドATUを用いて、そのベースアドレスレジスタ(BAR)を内部メモリアドレスにマッピングする。VF1 322は、インバウンドATU903を用いて周辺機器デバイス308の内部メモリ位置アクセス(A)916にマッピングするBAR907を有する。VF2 324は、インバウンドATU903を用いて内部メモリ位置アクセス(B)918にマッピングするBAR909を有する。次に、仮想機能のルートコントローラエニュメレーションの間、メモリが、アウトバウンドアドレス空間から割り当てられ、仮想機能において初期化される。RC3 318は、アウトバウンドアドレス空間906内のVF1 BAR907に対してメモリブロック908を割り当てる。RC3 318は、アウトバウンドアドレス空間906内のVF2 BAR909に対してメモリブロック910を割り当てる。RC3 318は、メモリブロック908をBAR907にアクセスするように、及びメモリブロック910をBAR909にアクセスするように設定する。次に、EP2 310はインバウンドATU930を用い、EP3 314はインバウンドATU932を用いて、それらのベースアドレスレジスタ902、904をアウトバウンドアドレスブロック908、910にマッピングする。これに続いて、ホスト1 302及びホスト2 304は、それぞれ、MEM(C)912及びMEM(D)914をホスト発信メモリバッファに割り当て、PF0’ 332 BAR902及びPF0’ 334 BAR904内のこれらのアドレスを初期化する。これにより、周辺機器プロキシサブシステム306及び周辺機器デバイス308の初期化が完了して、メモリ書き込みトランザクションが受信される。
【0030】
書き込み動作を実施するために、ホスト1 302はRC1 312を用い、MEM(C)912にマッピングされたアドレスを用いてメモリトランザクションをEP2 310に提供する。EP2 310は、トランザクションを取得し、ホスト1 302のアドレスを、VF1 322に対して割り当てられたメモリブロック908内の内部アドレスに翻訳し、トランザクションをRC318に提供する。RC3 318は、EP0 320にトランザクションを提供する。インバウンドATU903は、BAR907に従ってアドレスを翻訳し、指定されたメモリ位置アクセス(A)916にトランザクションを提供する。同様に、ホスト2 304は、RC2 316を用い、MEM(D)914にマッピングされたアドレスを用いてEP3 314にメモリトランザクションを提供する。EP3 314は、トランザクションを取得し、ホスト2 304のアドレスを、VF2 324に対して割り当てられたメモリブロック910内の内部アドレスに翻訳し、RC3 318にトランザクションを提供する。RC3 318は、EP0 320にトランザクションを提供する。インバウンドATU903は、BAR909に従ってアドレスを翻訳し、指定されたメモリ位置アクセス(B)918にトランザクションを提供する。周辺機器デバイスの仮想機能のBARへの内部アドレスのマッピング、及び、それらの内部アドレスへのインバウンドATUのマッピングは、周辺機器デバイストランザクションへのホストを、周辺機器デバイス内の適切な物理機能又は仮想機能へルーティングするように作用する。
【0031】
PCIeはメッセージ信号割り込み(MSI:Message Signaled Interrupts)を用いる。MSIを用いて、割り込みメッセージがホストメモリ位置に提供される。
図10は、MSI動作の1つの例を図示する。ホスト1 302は、MSI使用のために予約されたメモリブロックMSI(P)1006を有し、ホスト2 304は、MSI使用のために予約されたメモリブロックMSI(Q)1008を有する。EP2 310は、アウトバウンドMSIメモリブロック(X)1002を含み、EP3 314は、アウトバウンドMSIメモリブロック(Y)1004を含む。アウトバウンドMSIメモリブロック(X)1002及び(Y)1004のアドレスは、それぞれ、VF1 322及びVF2 324のMSIレジスタにプログラムされる。ホスト1 302は、メモリブロックMSI(P)1006のアドレスをPF0’332のMSIレジスタにプログラムし、一方、ホスト2 304は、メモリブロックMSI(Q)1008のアドレスをPF0”334のMSIレジスタにプログラムする。これで初期化動作が完了する。VF1 322又はVF2 324がMSIトランザクションを送ることを所望するとき、仮想機能は、トランザクションに、そのリクエスタID、及び、それぞれ、アウトバウンドMSIメモリブロック(X)1002又は(Y)1004において予約されたアドレスを提供する。仮想IDマップ論理810は、リクエスタIDを仮想IDにマッピングし、トランザクションをPVU812に提供する。PVU812は、MSIアドレスを内部アウトバウンドアドレスに翻訳し、必要に応じて、MSIトランザクションをルーティングする。アウトバウンドATU818、820は、内部アウトバウンドMSIアドレスをホストメモリブロックMSI(P)1006又はMSI(Q)1008に翻訳し、EP2 310又はEP3 314は、ホスト1 302又はホスト2 304にトランザクションを提供する。
【0032】
図11は、周辺機器プロキシサブシステム306のエンドポイントへの、ひいてはホストへの物理機能及び仮想機能のマッピングの柔軟性を図示する。第1の例では、周辺機器プロキシサブシステム306はPF0 321を管理し、VF1 322はPF0’332にマッピングされ、VF2 324はPF0”にマッピングされ、VF3 1108はPCIeエンドポイント310のVF1 1104にマッピングされる。これにより、SR-IOV周辺機器デバイス308のMR-IOV動作が提供される。第2の例では、PF0 321は周辺機器プロキシサブシステム306によって管理され、VF1 322はPF0’としてマッピングされ、VF2 324はPF1 1102としてマッピングされ、VF3 1008はPF2(図示せず)としてマッピングされる。これによりすべての仮想機能が物理機能としてホスト1 302にマッピングされ、その結果、周辺機器デバイス308は多機能PCIeエンドポイントであるように見える。第3の例では、PF0 321は周辺機器プロキシサブシステム306によって管理され、VF1 322はPF0’332にマッピングされ、VF2 324はVF1 1004にマッピングされ、VF3 1008はVF2 1106にマッピングされる。これにより、ホスト1 302内の異なる仮想機械が、SR-IOV動作において通常であるように3つの仮想機能を利用することができる。第4の例では、SR-IOV周辺機器デバイス308はEP2 310に直接割り当てられ、その結果、PF0 321はPF0’332にマッピングされ、VF1 322はVF1 1104にマッピングされ、VF2 324はVF2 1106にマッピングされ、VF3 1108はPCIeエンドポイント310のVF3(図示せず)にマッピングされる。マッピングにおけるこの柔軟性は、PVU812によって実施されるルーティング、及び、周辺機器デバイスメモリ転送及びMSI動作のためのTLB、並びに、所望の機能を提示するためのPF及びVF構成空間データのコピーと関連したホストメモリ転送動作のための内部メモリ空間割り振り及びBAR値によって達成される。これらは、周辺機器プロキシサブシステム306を用いて物理機能及び仮想機能をマッピングする柔軟性の4つの例に過ぎず、他のマッピングも容易に実施することができる。
【0033】
図12は、
図3のものなどの周辺機器プロキシサブシステム306のハードウェアブロック図である。ARM R5Fコアなどのプロセッサ1202は、周辺機器プロキシサブシステム306における基本的な処理機能を提供する。SRAM1204が、動作メモリとして提供され、周辺機器プロキシサブシステム306の内部の様々なデバイスによって用いられるメモリブロックとして機能する。SPI 1208、UART1210及びI2C 212などの種々のI/Oポートが存在し、システム内の他のデバイスとの外部通信及びそれらによる管理を可能にする。代替的に、周辺機器プロキシサブシステム306の管理は、エンドポイントのうちの1つにおいて提示されるPFの拡張機能を介して実施され得る。不揮発性(NV)RAMインタフェース1214が、周辺機器プロキシサブシステム306の機能を提供するために用いられるファームウェアモジュールを含む非一時的NVRAM1216に接続される。例えば、ポリシーマネージャ336、その物理機能マネージャ340及びエンドポイントマネージャ342を備える構成マネージャ338、並びに、マップ及び転送モジュール344は、プロセッサ1202によって実行されるNVRAM1216に含まれる。オペレーティングシステム及び/又はハイパーバイザ1217が、前述のPCIeソフトウェアスタック1219と同様に、NVRAM1216に格納される。
【0034】
第1のPCIeエンドポイント1222が、EP2 310などのエンドポイントとして作用し、アウトバウンドATU818、アウトバウンドMSIメモリ1002、MSI能力レジスタ1010、インバウンドATU930、及びベースアドレスレジスタ902を含む。第2のPCIeエンドポイント1224が、EP3 314などの第2のエンドポイントとして作用するように提供され、アウトバウンドATU820、アウトバウンドMSIメモリ1004、MSI能力レジスタ1012、インバウンドATU932、及びベースアドレスレジスタ904を含む。
【0035】
PCIeルートコントローラ1218が、PCIeエンドポイント1222、1224に接続されたホスト間でSR-IOV周辺機器デバイスが共有されるようにするためのルートコントローラとして作用するために存在する。PCIeルートコントローラ1218の一例はRC3 318である。PCIeルートコントローラ1218は、様々な仮想機能ベースアドレスレジスタ空間を含むアウトバウンドアドレス空間1220を含む。仮想IDマップ論理810は、必要に応じて様々な仮想ID TLB814及び816などを備えるPVU812と同様に、提供される。周辺機器プロキシサブシステム306上には、種々の図面に示される2つのエンドポイント及び1つのルートコントローラよりも多くのエンドポイント及びルートコントローラが存在することができる。各ルートコントローラ及びエンドポイントは、上記のように動作する。
【0036】
複数のSR-IOV周辺機器デバイスを、周辺機器プロキシサブシステム306のルートコントローラに接続することができ、各々、上述のようにマッピングされ、管理される。
【0037】
図13は、ホスト1 302及びホスト2 304を形成することができる例示のSoC500のブロック図である。ARM(登録商標)A72又はA53コアなどの一連のより強力なマイクロプロセッサ502が、SoC500の主要な汎用処理ブロックを形成し、一方で、デジタルシグナルプロセッサ(DSP)504が特殊な計算能力を提供する。ARM R5Fコアなどのよりシンプルなマイクロプロセッサ506が、SoC500における一般的な制御能力を提供する。高速相互接続508が、マイクロプロセッサ502、DSP504、及びマイクロプロセッサ506をSoC500内の種々のその他の構成要素に接続する。例えば、オンボードメモリ又はRAM512を含む共有メモリコントローラ510が、SoC500のためのオンボードRAMとして作用するように高速相互接続508に接続される。DDRメモリコントローラシステム514が、高速相互接続508に接続され、外部DRAMメモリへの外部メモリインタフェースとして作用する。ビデオ加速モジュール516及びレーダ処理加速器(PAC)モジュール518が、同様に高速相互接続508に接続される。ビジョン処理加速器モジュール520が、深さ及び動きPACモジュール522と同様に、高速相互接続508に接続される。グラフィックス加速モジュール524が高速相互接続508に接続される。ディスプレイサブシステム526が、高速相互接続508に接続され、変換ロジック528及び出力論理530を含み、適切な場合、様々なビデオモニタとの動作及びそれらへの接続を可能にする。DMAコントローラ、メモリ管理ユニット、汎用I/O、メールボックスなどのアイテムを含むシステムサービスブロック532が、通常のSoC500動作のために提供される。シリアル接続モジュール534が、高速相互接続508に接続され、SoCにおいて通常の各種モジュールを含む。車両接続モジュール536が、PCIeブロック538、USBブロック540、及びイーサネット(登録商標)スイッチ542などの外部通信インタフェースのための相互接続を提供する。捕捉/MIPIモジュール544が、4レーンCSI-2準拠送信ブロック546と、4レーンCSI-2受信モジュール及びハブとを含む。CSI-2受信モジュール及びハブに関する更なる詳細は後述する。
【0038】
MCUアイランド560が、二次サブシステムとして提供され、エネルギーを節約するために他の構成要素がパワーダウンされるとき、統合SoC500の動作を取り扱う。1つ又は複数のARM R5Fコアなどのプロセッサ562が、マスタとして動作し、絶縁インタフェース561を介して高速相互接続508に結合される。MCU汎用IO(GPIO)ブロック564がスレーブとして動作する。MCU RAM566が、MCU ARMプロセッサ562のためのローカルメモリとして作用するように設けられる。付加的な外部通信インタフェースであるCANバスブロック568が、車両内の従来のCANバス環境との動作を可能にするように接続される。イーサネットMAC(媒体アクセス制御)ブロック570が、車両における更なる接続性のために提供される。不揮発性メモリ(NVM)が、外部NVRAMインタフェース569を介してMCU ARMプロセッサに接続される。
【0039】
これは例示のホスト構成であり、多くの他のホスト構成を利用することができる。
【0040】
上記の例では、ホストメモリアドレスを内部メモリアドレスに翻訳するため、ReqIDをvirtID及びTLBに翻訳するためにvirtIDマップ論理を用いることについて説明したが、他の例では、ReqIDを用いて周辺機器デバイスからホストにトランザクションをルーティングし、virtIDマップ論理を必要とされない。更に他の例では、内部メモリ空間は用いられず、TLBは必要とされない。
【0041】
上述した例では、周辺機器デバイス308において、各VFに対してTLBが設けられている。別の例では、単一のTLBのみが提供されるが、そのTLBは、ルックアップ値としてReqID又はvirtIDを含み、出力値として所望のエンドポイントを提供するように拡張される。
【0042】
「結合する」という用語は本明細書全体を通じて用いられている。この用語は、本明細書の記載と一貫した機能的な関係を可能にする、接続、通信、又は信号経路を包含し得る。例えば、デバイスAが或る行為を行なうためにデバイスBを制御するための信号を生成する場合、第1の例において、デバイスAはデバイスBに結合されるか、又は第2の例において、介在構成要素CがデバイスAとデバイスBとの間の機能関係を実質的に変化させない場合に、デバイスBがデバイスAによって生成される制御信号を介してデバイスAによって制御されるように、デバイスAは介在構成要素Cを介してデバイスBに結合される。
【0043】
本発明の特許請求の範囲内で、説明した例示の実施例に改変が成され得、他の実施例が可能である。
【国際調査報告】