(57)【特許請求の範囲】
【請求項１】
仮想アドレスから物理アドレスへの変換を管理するコントローラで、特定のデバイスに物理アドレスを選択的に経路設定するステップを含み、前記仮想アドレスが、仮想デバイスによって開始されるデータアクセスオペレーションによって特定されるデータが書き込まれるべきアドレスであり、前記物理アドレスが、前記仮想アドレスに対応する、共有メモリにおけるアドレス指定のために使用されるアドレスであり、前記特定のデバイスが第１のプロセッサを具備し、前記特定のデバイスは仮想デバイスとは異なる、方法。
【請求項２】
仮想アドレスに基づいて、前記物理アドレスを決定するステップであって、前記データアクセスオペレーションは前記仮想アドレスを特定する、ステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記第1のプロセッサが、仮想プロセッサをサポートし、前記仮想プロセッサが前記仮想デバイスに対応し、前記仮想デバイスが、入力/出力(I/O)仮想化プロトコルに従って、前記仮想プロセッサから前記仮想デバイスに1つまたは複数のコマンドを送信することによって前記仮想プロセッサにアクセスできる、請求項1に記載の方法。
【請求項４】
前記コントローラが、入力/出力(I/O)メモリ管理ユニット(MMU)コントローラを備え、前記I/O仮想化プロトコルが、Single Root Input/Output Virtualization(SR-IOV)プロトコルを備える、請求項3に記載の方法。
【請求項５】
前記物理アドレスを経路設定する前に、前記特定のデバイスを識別するステップをさらに含む、請求項1に記載の方法。
【請求項６】
前記特定のデバイスが、前記データアクセスオペレーションに関連するプロセッサ番号、または前記データアクセスに関連するSingle Root Input/Output Virtualization(SR-IOV)に基づいて識別される、請求項5に記載の方法。
【請求項７】
前記物理アドレスを経路設定する前に、前記特定のデバイスを識別するステップをさらに含み、前記物理アドレスが、拡張アドレスであり、前記特定のデバイスが、前記拡張アドレスの少なくとも1ビットに基づいて識別される、請求項1に記載の方法。
【請求項８】
前記データアクセスオペレーションが、書込みオペレーション、読出しオペレーションまたはその組合せを含む、請求項1に記載の方法。
【請求項９】
前記仮想デバイスが、仮想化入力/出力デバイスを備える、請求項1に記載の方法。
【請求項１０】
前記第1のプロセッサが、第1のキャッシュメモリを含み、前記データアクセスオペレーションが、前記第1のキャッシュメモリに対してコヒーレントであり、前記第1のキャッシュメモリが、共有メモリにアクセスできる第2のプロセッサの第2のキャッシュメモリに対して非コヒーレントであり、前記共有メモリが前記第1のプロセッサ及び前記第2のプロセッサによって共有される、請求項1に記載の方法。
【請求項１１】
前記第1のプロセッサがキャッシュメモリを含み、前記第1のプロセッサが、キャッシュメモリ内の、前記物理アドレスに基づいて決定された第1の位置にデータを記憶する、請求項1に記載の方法。
【請求項１２】
前記データが前記キャッシュメモリ内に記憶された後、前記第1のプロセッサが、共有メモリの第2の位置に前記データを送信し、前記第2の位置が前記物理アドレスに対応する、請求項11に記載の方法。
【請求項１３】
前記データアクセスオペレーションが、前記仮想デバイスによって開始される直接メモリアクセス(DMA)読出しオペレーションである、請求項1に記載の方法。
【請求項１４】
仮想化デバイスと、
前記仮想化デバイスにアクセスできる複数のデバイスと、
前記複数のデバイスの各々によって共有されるメモリと、
前記仮想化デバイスおよび前記複数のデバイスの各々に結合されたコントローラとを備え、
前記コントローラが、データを前記複数のデバイスのうちの特定のデバイスに選択的にリダイレクトするように構成され、前記データが、前記仮想化デバイスによって開始されたデータアクセスオペレーションによって特定され、前記特定のデバイスがプロセッサを具備し、前記特定のデバイスが前記仮想化デバイスとは異なる、システム。
【請求項１５】
前記コントローラが、入力/出力(I/O)メモリ管理ユニット(MMU)コントローラを備え、前記データアクセスオペレーションが、仮想アドレスを特定し、物理アドレスが、前記仮想アドレスに基づいて決定され、前記物理アドレスが共有メモリ内の第1の位置に関連し、前記データが、前記特定のデバイスに関連する第2の位置に選択的にリダイレクトされ、前記第2の位置が前記第1の位置と異なる、請求項14に記載のシステム。
【請求項１６】
仮想アドレスから物理アドレスへの変換を管理するための手段と、
特定のデバイスに物理アドレスを選択的に経路設定するための手段であって、前記仮想アドレスが、仮想デバイスによって開始されるデータアクセスオペレーションによって特定されるデータが書き込まれるべきアドレスであり、前記物理アドレスが、前記仮想アドレスに対応する、共有メモリにおけるアドレス指定のために使用されるアドレスであり、前記特定のデバイスがプロセッサを含み、前記特定のデバイスが前記仮想デバイスとは異なる、手段と
を備える、コントローラを備える、装置。
【請求項１７】
前記プロセッサが、データアクセス要求の発生元プロセッサであり、前記データアクセスオペレーションが前記データアクセス要求に基づき、前記コントローラが、前記発生元プロセッサを識別するための手段をさらに含む、請求項16に記載の装置。
【請求項１８】
仮想アドレスおよび物理アドレスを記憶するメモリと、
物理アドレスを、特定のデバイスに選択的に経路設定をするように構成されたリダイレクションユニットであって、前記仮想アドレスが仮想デバイスによって開始されたデータアクセスオペレーションによって特定されるデータが書き込まれるべきアドレスであり、前記物理アドレスが、前記仮想アドレスに対応する、共有メモリにおけるアドレス指定のために使用されるアドレスであり、前記特定のデバイスが、プロセッサを備え、前記特定のデバイスが前記仮想デバイスとは異なる、リダイレクションユニットとを備える、コントローラを備える、装置。
【請求項１９】
前記メモリが、前記仮想アドレスから前記物理アドレスへの変換を管理するためのアドレステーブルを記憶し、前記プロセッサが、データアクセス要求の発生元プロセッサであり、前記データアクセスオペレーションが前記仮想デバイスで受信された前記データアクセス要求に基づき、前記リダイレクションユニットが、前記発生元プロセッサを識別するようにさらに構成された、請求項18に記載の装置。
【請求項２０】
プロセッサにより実行可能な命令を記憶するプロセッサ可読記憶媒体であって、前記命令が、前記プロセッサに、
特定のデバイスから仮想デバイスに送信されるアクセス要求を求めてバスを監視することと、
データを、前記特定のデバイスに選択的にリダイレクトすることであって、前記データが、前記仮想デバイスによって開始されるデータアクセスオペレーションによって特定され、前記特定のデバイスが特定のプロセッサを備え、前記特定のデバイスが、前記仮想デバイスとは異なることとを行わせるために、前記プロセッサによって実行可能である、プロセッサ可読記憶媒体。
【請求項２１】
前記命令が、前記プロセッサに、前記特定のデバイスからの前記アクセス要求を検出させるために、前記プロセッサによってさらに実行可能である、請求項20に記載のプロセッサ可読記憶媒体。
【請求項２２】
前記コントローラで前記データアクセスオペレーションの命令を受信することに続いて、特定のデバイスに物理アドレスを選択的に経路設定するステップをさらに含み、前記データアクセスオペレーションが前記特定のデバイスから前記仮想デバイスに送信されたデータアクセス要求に基づく、請求項１に記載の方法。
【請求項２３】
前記仮想デバイスからの仮想アドレスを前記コントローラで受信するステップであって、前記仮想アドレスが、前記仮想デバイスによって開始される前記データアクセスオペレーションによって特定される、ステップと、
前記仮想アドレスを受信するステップに続いて、前記仮想アドレスを前記物理アドレスに変換するステップと
をさらに含む、請求項22に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、仮想化入力/出力のためのプロセッサローカルコヒーレンシに関する。
【背景技術】
【０００２】
マルチプロセッサコンピュータシステムは、1つまたは複数の入力/出力(I/O)デバイスにアクセスできるマルチプロセッサを含むことができる。いくつかのシステムは、I/O仮想化をサポートすることができる。たとえば、デュアルプロセッサシステムで単一のI/Oデバイスを仮想化すると、単一のI/Oデバイスは、各プロセッサが2つの独立したI/Oデバイスのうちの1つを「所有」する2つの独立したI/Oデバイスに見えるようにすることができる。仮想化は、マルチプロセッサによるI/Oデバイスの共有を容易にする。典型的には、仮想化システムは、完全にコヒーレントに保つことができる。すなわち、マルチプロセッサシステムの各プロセッサが、仮想I/Oデバイスと共有メモリとの間の全てのI/Oオペレーションを追跡することができる。
【０００３】
完全コヒーレンシは、ハードウェアまたはソフトウェアを介して実施され得る。しかし、仮想I/Oデバイスの個数およびプロセッサの個数が増加するにつれて、完全コヒーレントシステムでスケーラビリティの問題が生じ得る。たとえば、プロセッサの各々が、他のプロセッサの各々によって実行される仮想化I/Oデバイスの読出しおよび書込みの各オペレーションを認識するので、プロセッサの個数が増加すると、コヒーレント仮想化I/Oデバイスに関連する複雑さが増す可能性がある。これは、プロセッサの各々で追加のデータ処理を伴う可能性があり、共有資源(たとえば、プロセッサと共有メモリとの間のバス)をさらに消費する可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
仮想化システムでは、仮想I/Oデバイスが、仮想アドレス空間に基づいて動作することができるのに対して、共有メモリ(たとえば、ランダムアクセスメモリ(RAM))は、物理アドレス空間に基づいてアドレス指定をサポートすることができる。こうしたシステムでは、コントローラ(たとえば、I/Oメモリ管理ユニット(MMU)コントローラ)が、仮想I/Oデバイス、プロセッサ(これも、仮想化されて仮想プロセッサとすることができる)および共有メモリに結合され得る。このコントローラは、仮想アドレスと物理アドレスとを変換することができる。完全コヒーレントシステムでは、仮想I/Oデバイスに関連するプロセッサ(たとえば、「発生元(originating)」プロセッサ)が、データアクセス要求を行うと、コントローラは、対応するデータアクセス(たとえば、仮想デバイスによって開始された直接メモリアクセス(DMA)書込みオペレーション)を共有メモリに経路設定することができる。完全コヒーレンシを維持すると、発生元プロセッサを含め全てのプロセッサが、それらの個々のキャッシュをアップデートして書込みオペレーションを反映させることができる。ただし、仮想化システムでは、特定の仮想デバイスによって共有メモリに書き込まれたデータは、対応するプロセッサまたは仮想プロセッサ(たとえば、データアクセス要求を発生させたプロセッサ)によってしかアクセスすることができない。したがって、システムでこうしたデータと全ての他のプロセッサとの間の完全コヒーレンシを維持することは、有用でない場合がある。
【０００５】
本開示のシステムおよび方法に従って、仮想化I/Oのためのプロセッサローカルコヒーレンシが、実施され得る。たとえば、コントローラは、物理アドレスおよびそれに関連するデータを、共有メモリの代わりに発生元(たとえば、要求している)プロセッサに選択的にリダイレクトすることができる。この発生元プロセッサは、データをキャッシュし、続いて共有メモリにデータを記憶することができるが、このシステム中の他のプロセッサは、影響され得ない。Nプロセッサ(Nは1より大きい整数)に対応するN仮想I/Oデバイスを含むシステムでは、各プロセッサが、その対応する仮想I/Oデバイスに対してコヒーレントとすることができるが、他のいずれのプロセッサまたは仮想I/Oデバイスに対してはコヒーレントでなくてよい。
【０００６】
具体的な実施形態では、方法が、デバイスの仮想アドレスから物理アドレスへの変換を管理するコントローラで、物理アドレスを、共有メモリの代わりに発生元デバイスに選択的に経路設定するステップを含む。この物理アドレスは、仮想デバイスからのデータアクセスに対応する。
【０００７】
別の具体的な実施形態では、システムが、仮想化デバイスと、仮想化デバイスへアクセスできる複数のデバイスと、複数のプロセッサの各々によって共有されるメモリと、仮想化デバイスおよび複数のデバイスの各々に結合されるコントローラとを含む。このコントローラが、仮想化デバイスからのデータアクセスに対応する物理アドレス(およびデータ)を、そのメモリの代わりに複数のデバイスのうちの1つに選択的にリダイレクトするように構成される。
【０００８】
別の具体的な実施形態では、装置がコントローラを含む。このコントローラは、デバイスの仮想アドレスから物理アドレスへの変換を管理するための手段、および仮想デバイスからのデータアクセスに対応する物理アドレスを、共有メモリの代わりに発生元デバイスに選択的に経路設定するための手段を含む。
【０００９】
別の具体的な実施形態では、装置がコントローラを含む。このコントローラは、仮想アドレスおよび物理アドレスを記憶するメモリを含む。このコントローラは、仮想デバイスからのデータアクセスに対応する物理アドレスを、共有メモリの代わりに発生元デバイスに選択的に経路設定するように構成されたリダイレクションユニットも含む。
【００１０】
別の具体的な実施形態では、有形のプロセッサ可読媒体が、仮想デバイスへのアクセスを制御するコントローラで、プロセッサによって実行可能な命令を含む。この命令は、プロセッサに、発生元デバイスから仮想化デバイスに送信されるアクセス要求を求めてバスを監視させ、仮想デバイスからのデータ(すなわちアクセス要求に応答したデータ)を、共有メモリの代わりに発生元デバイスに選択的にリダイレクトさせる。
【００１１】
本開示の実施形態の少なくとも1つによって提供される1つの具体的な利点は、システム全体のハードウェアコヒーレンシをデバイス特有の(たとえば、プロセッサ特有の)コヒーレンシに置き換えるので、データスループットが改善されること、また、1つまたは複数の仮想化デバイスおよびマルチプロセッサを含むシステムの電力消費が低減されることである。
【００１２】
本開示の他の態様、利点および特徴は、後続の項の、「図面の簡単な説明」、「発明を実施するための形態」および「特許請求の範囲」を含め本願全体を検討した後、明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】仮想デバイスからのデータアクセスに対応するデータを、共有メモリの代わりに発生元デバイスに経路設定するように操作可能なシステムの具体的な例示的実施形態の図である。
【図２】仮想デバイスからのデータを、共有メモリの代わりに発生元デバイスに経路設定する方法の具体的な例示的実施形態の流れ図である。
【図３】仮想デバイスからのデータを、共有メモリの代わりに発生元デバイスに経路設定する方法の別の具体的な例示的実施形態の流れ図である。
【発明を実施するための形態】
【００１４】
部分的なコヒーレント(たとえば、プロセッサローカルコヒーレント)仮想化入力/出力(I/O)システムは、仮想デバイスからのデータアクセスに対応するデータを、メモリの代わりに対応する発生元デバイス(たとえば、プロセッサ)に経路設定することができる。たとえば、プロセッサが対応する仮想デバイスからデータを要求すると、MMUコントローラは、関連する物理アドレスおよび要求された仮想デバイスからのデータを、共有メモリの代わりに要求しているプロセッサへ経路設定することができる。システム中の他のプロセッサが、この経路設定を認識しないようにすることができる。たとえば、他のプロセッサが、要求されたデータへアクセスできないまたは必要でないことがあるので、他のプロセッサの非コヒーレンシが、許容され、またはある条件下では利点となり得る。
【００１５】
図1は、仮想デバイスからのデータアクセスに対応するデータを、共有メモリの代わりに発生元デバイス(たとえば、発生元プロセッサまたは他のデバイス)に選択的に経路設定するように操作可能なシステム100の具体的な例示的実施形態の図である。システム100は、I/Oデバイス140と通信可能に結合したコントローラ110と、共有メモリ150と、複数のプロセッサ(たとえば、例示的プロセッサ120、130)とを含む。具体的な実施形態では、コントローラ110は、入力/出力(I/O)メモリ管理ユニット(MMU)コントローラとすることができる。あるいは、コントローラが、別の種類のコントローラとすることができる。コントローラ110と、プロセッサ120および130と、I/Oデバイス140と、共有メモリ150との間の結合は、1つまたは複数のハードウェアバス170および通信回路を介してコンピュータシステム中で実施され得る。具体的な実施形態では、共有メモリ150は、ランダムアクセスメモリ(RAM)とすることができる。
【００１６】
図1の具体的な実施形態は、デュアルプロセッサシステムを示すが、2つより多いまたは2つより少ないプロセッサが、システム100中にあってよいことが留意されるべきである。たとえば、システム100は、コンピュータサーバなどのコンピューティングデバイスに含まれることができ、コンピューティングデバイスは、2つより多いプロセッサを含むことができ、仮想化をサポートする単一のプロセッササーバまたはデバイスとすることができる。
【００１７】
プロセッサ120および130は、仮想化をサポートすることができる。たとえば、プロセッサ120および130の各々は、キャッシュ124および134を含むことができ、例示の仮想プロセッサ122および132などの1つまたは複数の仮想プロセッサをサポートすることができる。具体的な実施形態では、各仮想プロセッサ122、132は、基となるプロセッサ120、130で実行される特定のオペレーティングシステムに対応することができる。I/Oデバイス140も、仮想化をサポートすることができる。たとえば、システム100中に「n」プロセッサ120、130があるとき、I/Oデバイス140は、「n」対応仮想デバイス142、144(図1に示す例では、「n」は2に等しい)をサポートすることができる。具体的な実施形態では、各仮想デバイス142、144が、I/O仮想化プロトコルによるコマンドを介してアクセス可能とすることができる。たとえば、仮想デバイス142、144は、Peripheral Component Interconnect Express(PCIe)ハードウェアトポロジー(たとえば、PCIeバスをもつコンピュータシステム)を有するコンピュータシステムで、Single Root I/O Virtualization(SR-IOV)プロトコルに従うコマンドを介してアクセス可能とすることができる。仮想デバイス142、144は、プロセッサ120、130の制御下で、データ読出しおよび/またはデータ書込みオペレーション(たとえば、直接メモリアクセス(DMA)オペレーション)を実行することができる。
【００１８】
コントローラ110は、仮想デバイス142、144へのアクセスを制御することができ、仮想アドレスから物理アドレスへの変換、およびその逆の変換を管理することができる。具体的な実施形態では、コントローラ110は、バス監視ユニット112と、リダイレクションユニット114と、仮想-物理アドレステーブル116とを含むことができる。バス監視ユニット112、リダイレクションユニット114および仮想-物理アドレステーブル116は、専用ハードウェアおよびメモリを使用して、コントローラ110またはその中のプロセッサによって実行可能な命令を使用して、またはその任意の組合せを使用して実施され得る。
【００１９】
バス監視ユニット112は、プロセッサ120、130および/または仮想プロセッサ122、132のいずれかから仮想デバイス142、144に送信されたデータアクセス要求を求めてバス170を監視することができる。たとえば、バス監視ユニット112は、第1のプロセッサ120によって対応する第1の仮想デバイス142に送信されたデータアクセス要求126を検出することができる。データアクセス要求は、データ読出し、データ書込みまたはその任意の組合せのために要求され得る。
【００２０】
リダイレクションユニット114は、物理アドレスおよびデータを、共有メモリ150の代わりにプロセッサ120、130に選択的にリダイレクトするように操作可能とすることができる。たとえば、コントローラ110が、第1のプロセッサ120によって送信されたデータアクセス要求126に応答して、I/Oデバイス140からデータアクセス160を受信すると、データアクセス160が、宛先仮想アドレス162を指定することができ、データ164(たとえば、宛先仮想アドレス162に書き込まれるべきデータ)を含むことができる。リダイレクションユニット114は、仮想-物理アドレステーブル116にアクセスして、宛先仮想アドレス162を、共有メモリ150内の対応する宛先物理アドレスにマッピングすることができる。具体的な実施形態では、共有メモリ150が、「n」仮想デバイス142、144および「n」プロセッサ120、130に対応する「n」パーティション152、154に分割され得る。こうした実施形態では、宛先仮想アドレス162に対応する宛先物理アドレスは、第1のプロセッサ120(たとえば、第1のパーティション152)に対応するパーティション内に配置され得る。
【００２１】
リダイレクションユニット114は、決定された宛先物理アドレスが、経路設定されるべき先の発生元プロセッサ120を識別することもできる。発生元プロセッサ120は、様々な方法に従って識別され得る。例示すると、具体的な実施形態では、データアクセス160が、発生元プロセッサ番号またはSR-IOVデータ(たとえば、SR-IOV標準に従って、1つまたは複数のデータフィールド内に記憶されたSR-IOVデータ)166を含むことができ、リダイレクションユニット114は、こうした情報に基づいて発生元プロセッサ120を識別することができる。別の具体的な実施形態では、システム100は、拡張アドレス空間をサポートすることができる。たとえば、仮想アドレス162および/または物理アドレスが、拡張アドレスとすることができ、発生元プロセッサ120は、拡張アドレスの少なくとも1ビットに基づいて識別され得る。「2B」プロセッサを含むシステムでは、拡張アドレスの「B」ビットが、発生元プロセッサを識別するために使用され得る。発生元プロセッサ120を識別すると同時に、リダイレクションユニット114が、宛先物理アドレスおよびデータ164を、共有メモリ150の代わりに発生元プロセッサ120に経路設定することができる。具体的な実施形態では、データ164が、対応する仮想デバイスによる直接メモリアクセス(DMA)読出しオペレーションに対応することができ、データが対応するローカルキャッシュ内にない場合、対応するプロセッサ(または仮想プロセッサ)は、システムメモリからデータを引き出すことができる。たとえば、データ164が、対応するプロセッサに対して指定され(すなわち、他のプロセッサによってアクセスされない)得るので、データ164は、共有メモリに書き込まれる代わりに対応するプロセッサに選択的に経路設定され、直接的に利用され得る。データが特定のプロセッサに対して指定されると、データは、共有メモリの代わりに特定のプロセッサに選択的に経路設定されて、それによってバス170上の混雑が減少される。代替の実施形態では、図1に示すように、宛先物理アドレスおよびデータ164が、分離接続を介する代わりにバス170を介して発生元プロセッサ120に経路設定され得る。
【００２２】
オペレーション中、バス監視ユニット112は、1つまたは複数のプロセッサ120、130からのデータアクセス要求を検出することができる。たとえば、バス監視ユニット112は、第1のプロセッサ120から第1の仮想デバイス142へのデータアクセス要求126を検出することができ、データアクセス要求126が、I/Oデバイス140からのデータの引き出しに対応する。データアクセス要求126に応答して、仮想デバイス142が、宛先仮想アドレス162と、宛先仮想アドレス162に書き込まれるべきデータ164とを含むデータアクセス160を発することができる。コントローラ110でリダイレクションユニット114は、仮想-物理アドレステーブル116に基づいて、宛先仮想アドレス162を対応する宛先物理アドレスに変換することができ、宛先物理アドレスおよびデータ164を、共有メモリ150の代わりに発生元プロセッサ120に経路設定することができる。
【００２３】
プロセッサ120は、キャッシュ124内の物理アドレスに基づく位置にデータ164を記憶することができる。したがって、仮想デバイス142およびデータアクセス160は、キャッシュ124に対してコヒーレントとすることができる。ただし、キャッシュ124は、共有メモリ150に対して、また他のプロセッサに関連する他のキャッシュ(たとえば、第2のプロセッサ130に関連する第2のキャッシュ134)に対して、非コヒーレントとすることができる。具体的な実施形態では、発生元プロセッサ120は、データ164を共有メモリ150へ転送する責任を負うことができる。たとえば、データ164がキャッシュ124内に記憶された後、発生元プロセッサ120は、データ164(またはデータ164のコピー)を宛先物理アドレスに対応する第1のパーティション152内の位置に経路設定することができる。具体的な実施形態では、システム100により、プロセッサ120からプロセッサ130へのプロセス移動が可能になると、プロセッサ120は、プロセッサ130がデータ164にアクセスできるように、データ164を共有メモリ150へ転送することができる。
【００２４】
具体的な実施形態では、図1のシステム100は、特定のイベントに対するソフトウェア実施コヒーレンシをサポートすることができる。たとえば、図1のシステム100は、仮想デバイス初期化、仮想デバイス破壊、および(たとえば、あるプロセッサから別のプロセッサへの)プロセス移動の場合に、ソフトウェア実施完全コヒーレンシをサポートすることができる。
【００２５】
このように、図1のシステム100は、システム全体の完全コヒーレンシを部分的コヒーレンシに置き換えることができる。たとえば、システム100の各プロセッサデバイス対は、コヒーレントとすることができる。ただし、各プロセッサデバイス対は、完全ハードウェアコヒーレントシステムのように、他のプロセッサデバイス対に対してコヒーレントでなくてよい。したがって、図1のシステム100は、ハードウェアの複雑さを緩和し、バス170上の混雑を減少させ得る。システム全体の完全コヒーレンシを部分的コヒーレンシに置き換えることによって、図1のシステム100は、電力消費の低減を達成することもでき、完全コヒーレントシステムより低いコストで構築または操作され得る。
【００２６】
図2は、データを共有メモリの代わりにプロセッサに経路設定する方法200の特定の例示的実施形態の流れ図である。例示的実施形態では、方法200は、図1のコントローラ110によって実施され得る。
【００２７】
方法200は、202において、デバイスの仮想アドレスから物理アドレスへの変換を管理するコントローラで、仮想デバイスからデータアクセスを受信するステップを含むことができる。データアクセスは、仮想アドレスを指定することができる。たとえば、図1では、コントローラ110が、データアクセス160を第1の仮想デバイス142から受信することができ、データアクセス160は、宛先仮想アドレス162を指定することができる。
【００２８】
方法200は、204において、仮想アドレスに基づいて、データアクセスに対応する物理アドレスを決定するステップも含むことができる。たとえば、図1では、リダイレクションユニット114は、仮想-物理アドレステーブル116に基づいて、宛先仮想アドレス162から宛先物理アドレスを決定することができる。
【００２９】
方法200は、206において、物理アドレスが経路設定される先のプロセッサを識別するステップをさらに含むことができる。識別されたプロセッサは、データアクセスの発生元プロセッサとすることができる。具体的な実施形態では、発生元プロセッサは、プロセッサ番号、SR-IOVデータ、または物理アドレスの1つもしくは複数のビットに基づいて、識別され得る。たとえば、図1では、リダイレクションユニット114が、発生元プロセッサ番号/SR-IOVデータ166に基づいて、または宛先物理アドレスの1つもしくは複数のビットに基づいて、第1のプロセッサ120を発生元プロセッサとして識別することができる。
【００３０】
方法200は、208において、データアクセスに対応する物理アドレスを、共有メモリの代わりにプロセッサに選択的に経路設定するステップを含むことができる。プロセッサは、仮想デバイスに対応する仮想プロセッサをサポートすることができる。たとえば、図1では、リダイレクションユニット114が、宛先物理アドレスおよび対応するデータ164を共有メモリ150の代わりに発生元プロセッサ120に経路設定することができ、発生元プロセッサ120は、第1の仮想デバイス142に対応する第1の仮想プロセッサ122をサポートする。具体的な実施形態では、発生元プロセッサ120が、キャッシュ124内の、物理アドレスに基づいて決定された位置にデータ164を記憶することができ、続いて、データを共有メモリ150の第1のパーティション152へ転送することができる。具体的な実施形態では、データ164が共有メモリ150に記憶された後、データ164は、発生元プロセッサ120以外のプロセッサ(たとえば、第2のプロセッサ130)によってアクセス可能とすることができる。
【００３１】
図3は、仮想化デバイスからのデータを経路設定する方法300の別の具体的な例示的実施形態の流れ図である。例示的実施形態では、方法300は、図1のコントローラ110によって実施され得る。
【００３２】
方法300は、302において、仮想化デバイスへのアクセスを制御するコントローラで、発生元プロセッサから仮想化デバイスへのアクセス要求を求めてバスを監視するステップを含むことができる。たとえば、図1では、コントローラ110のバス監視ユニット112は、データアクセス要求126などのアクセス要求を求めてバス170を監視することができる。発生元プロセッサ120からI/Oデバイス140へのデータアクセス要求126の検出に応答して、コントローラ110は、データアクセス要求126への応答(たとえば、データアクセス160)のために、I/Oデバイス140の通信を監視し始めることができる。
【００３３】
方法300は、304において、仮想化デバイスからのデータを、共有メモリにデータを送信する代わりに、発生元プロセッサに選択的にリダイレクトするステップも含むことができる。例示的実施形態では、共有メモリは、コントローラに結合された複数のプロセッサによって共有され得る。たとえば、図1では、コントローラ110のリダイレクションユニット114は、データ164を共有メモリ150の代わりに発生元プロセッサ120に選択的にリダイレクトすることができる。具体的な実施形態では、方法300は、306において、発生元プロセッサでコントローラによって経路設定されたデータをキャッシュするステップと、続いて発生元プロセッサに割り当てられた共有メモリのパーティション内にデータを記憶するステップとをさらに含むことができる。たとえば、図1では、発生元プロセッサ120が、キャッシュ124内にデータ164を記憶することができ、続いて発生元プロセッサ120に割り当てられた共有メモリ150の第1のパーティション内に記憶するためにデータ164を送信することができる。
【００３４】
図2〜図3の方法200、300は、システム全体の完全コヒーレンシを部分的コヒーレンシの複数の実例に置き換えることができる。たとえば、完全コヒーレントシステムのように、各プロセッサデバイス対(たとえば、図1の第1のプロセッサ120と第1の仮想デバイス142、図1の第2のプロセッサ130と第2の仮想デバイス144)は、内部的にコヒーレントとすることができるが、他のプロセッサデバイス対に対してはコヒーレントでなくてよい。したがって、図2〜図3の方法200、300は、仮想化システム(たとえば、SR-IOV標準による仮想化デバイスを有するコンピュータサーバ)で、ハードウェアの複雑さの緩和、バス上の混雑の減少、電力消費の低減を達成することができる。
【００３５】
説明した実施形態と併せて、デバイスの仮想アドレスから物理アドレスへの変換を管理する手段を有するコントローラを含む装置を開示する。たとえば、変換を管理するための手段は、図1の1つまたは複数のコントローラ110と、図1のリダイレクションユニット114と、デバイスの仮想アドレスから物理アドレスへの変換を管理するように構成された1つまたは複数の他のデバイスと、またはその任意の組合せを含むことができる。
【００３６】
コントローラは、物理アドレスおよび仮想デバイスからのデータアクセスに対応するデータを、共有メモリの代わりにプロセッサに経路設定するための手段も含むことができる。たとえば、経路設定のための手段は、図1の1つまたは複数のコントローラ110、図1のリダイレクションユニット114、物理アドレスを共有メモリの代わりにプロセッサに経路設定するように構成された1つまたは複数の他のデバイス、またはその任意の組合せを含むことができる。
【００３７】
当業者には、本明細書中で開示された実施形態に関して説明した様々な例示的な論理ブロック、構成、モジュール、回路およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または双方の組合せとして実施され得ることがさらに理解されるであろう。様々な例示的な構成部品、ブロック、構成、モジュール、回路およびステップについて、その機能性の点から概括して上記で説明してきた。こうした機能性が、ハードウェアとして実施されるかソフトウェアとして実施されるかは、特定用途およびシステム全体に課された設計制約条件によって決まる。当業者は、各特定用途ごとの様々な方式で説明した機能性を実施することができるが、こうした実施の決定は、本開示の範囲から逸脱させるものとして解釈されるべきではない。
【００３８】
本明細書中で開示された実施形態に関して説明した方法またはアルゴリズムのステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはその2つの組合せで直接的に実現され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読出し専用メモリ(ROM)、プログラマブル読出し専用メモリ(PROM)、消去可能プログラマブル読出し専用メモリ(EPROM)、電気的消去可能プログラマブル読出し専用メモリ(EEPROM)、レジスタ、ハードディスク、取り出し可能ディスク、コンパクトディスク読出し専用メモリ(CD-ROM)、または当技術分野で周知の任意の他の形状の記憶媒体に属することができる。代表的な固定型の(たとえば、有形の)記憶媒体は、プロセッサが、記憶媒体からの情報を読み出し、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。別法では、記憶媒体は、プロセッサに必須である。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)に属することができる。ASICは、コンピューティングデバイスまたはユーザ端末に属することができる。別法では、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末中の個別構成部品として属することができる。
【００３９】
開示した実施形態についての以上の説明により、当業者は開示した実施形態を作製または使用することが可能となる。これら実施形態の種々の変更形態は、当業者には容易に明らかになり、本明細書中で規定された原理は、本開示の範囲から逸脱することなく他の実施形態に適用され得る。したがって、本開示は、本明細書中に示した実施形態に限定されるものではないが、後続の特許請求の範囲によって規定される原理および新規な特徴と一致し得る最大の範囲で与えられるものである。
【符号の説明】
【００４０】
100  システム
110  コントローラ
112  バス監視ユニット
114  リダイレクションユニット
116  仮想-物理アドレステーブル
120  プロセッサ、発生元プロセッサ
122  仮想プロセッサ
124  キャッシュ
126  データアクセス要求
130  プロセッサ
132  仮想プロセッサ
134  キャッシュ
140  I/Oデバイス
142  仮想デバイス、第1の仮想デバイス
144  仮想デバイス
150  共有メモリ
152  nパーティション、第1のパーティション
154  nパーティション
160  データアクセス
162  宛先仮想アドレス
164  データ
166  発生元プロセッサ番号/SR-IOVデータ
170  ハードウェアバス、バス
200  方法
300  方法
【図１】
0005841255.tif 000002
【図２】
0005841255.tif 000003
【図３】
0005841255.tif 000004