JP2014529829A - 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム - Google Patents

仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム Download PDF

Info

Publication number
JP2014529829A
JP2014529829A JP2014528694A JP2014528694A JP2014529829A JP 2014529829 A JP2014529829 A JP 2014529829A JP 2014528694 A JP2014528694 A JP 2014528694A JP 2014528694 A JP2014528694 A JP 2014528694A JP 2014529829 A JP2014529829 A JP 2014529829A
Authority
JP
Japan
Prior art keywords
processor
virtual
data
controller
data access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014528694A
Other languages
English (en)
Other versions
JP5841255B2 (ja
Inventor
クリストファー・エドワード・クーブ
ルシアン・コドレシュ
エリック・ジェームズ・プロンドケ
ブライアン・シー・バイヤードルファー
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2014529829A publication Critical patent/JP2014529829A/ja
Application granted granted Critical
Publication of JP5841255B2 publication Critical patent/JP5841255B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

方法は、デバイスの仮想アドレスから物理アドレスへの変換を管理するコントローラで、物理アドレスを、共有メモリの代わりに発生元デバイスに選択的に経路設定するステップを含む。この物理アドレスは、仮想デバイスからのデータアクセスに対応する。この方法は、仮想化入力/出力を実施するコンピューティングシステムで、ローカルコヒーレンシを提供することができる。

Description

本開示は、一般に、仮想化入力/出力のためのプロセッサローカルコヒーレンシに関する。
マルチプロセッサコンピュータシステムは、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 方法

Claims (23)

  1. デバイスの仮想アドレスから物理アドレスへの変換を管理するコントローラで、仮想デバイスからのデータアクセスに対応する物理アドレスを、共有メモリの代わりに発生元デバイスに選択的に経路設定するステップを含む方法。
  2. 前記仮想デバイスから、仮想アドレスを指定する前記データアクセスを受信するステップと、
    前記仮想アドレスに基づいて、前記データアクセスに対応する前記物理アドレスを決定するステップとをさらに含む、請求項1に記載の方法。
  3. 前記発生元デバイスが、前記仮想デバイスに対応する仮想プロセッサをサポートするプロセッサを備え、前記仮想デバイスが、I/O仮想化プロトコルに従って、前記仮想プロセッサから前記仮想デバイスにコマンドを送信することによって前記仮想プロセッサにアクセスできる、請求項1に記載の方法。
  4. 前記コントローラが、入力/出力(I/O)メモリ管理ユニット(MMU)コントローラを備え、前記I/O仮想化プロトコルが、Single Root Input/Output Virtualization(SR-IOV)プロトコルを備える、請求項3に記載の方法。
  5. 前記物理アドレスを経路設定する前に、前記発生元デバイスを識別するステップをさらに含む、請求項1に記載の方法。
  6. プロセッサが、前記データアクセスに関連するプロセッサ番号に基づいて識別される、請求項5に記載の方法。
  7. プロセッサが、前記データアクセスに関連するSingle Root Input/Output Virtualization(SR-IOV)データに基づいて識別される、請求項5に記載の方法。
  8. 前記物理アドレスが、拡張アドレスであり、プロセッサが、前記拡張アドレスの少なくとも1ビットに基づいて識別される、請求項5に記載の方法。
  9. 前記データアクセスが、書込み、読出しまたはその任意の組合せを含む、請求項1に記載の方法。
  10. 前記仮想デバイスが、仮想化入力/出力デバイスを備える、請求項1に記載の方法。
  11. 前記発生元デバイスが、キャッシュメモリを含むプロセッサを備え、前記仮想デバイスからの前記データアクセスが、前記プロセッサの前記キャッシュメモリに対してコヒーレントである、請求項1に記載の方法。
  12. 前記キャッシュメモリが、前記共有メモリにアクセスできる第2のプロセッサの第2のキャッシュメモリに対して非コヒーレントである、請求項11に記載の方法。
  13. 前記データアクセスに対応するデータを、前記プロセッサに選択的に経路設定するステップをさらに含み、前記プロセッサが、キャッシュメモリ内の、前記物理アドレスに基づいて決定された位置に前記データを記憶する、請求項11に記載の方法。
  14. 前記データが前記キャッシュメモリ内に記憶された後、前記プロセッサが、前記物理アドレスに対応する前記共有メモリの位置に前記データを送信する、請求項13に記載の方法。
  15. 前記データアクセスが、前記仮想デバイスによる直接メモリアクセス(DMA)読出しオペレーションを備える、請求項13に記載の方法。
  16. 仮想化デバイスと、
    前記仮想化デバイスにアクセスできる複数のデバイスと、
    前記複数のデバイスの各々によって共有されるメモリと、
    前記仮想化デバイスおよび前記複数のデバイスの各々に結合されたコントローラとを備え、
    前記コントローラが、前記仮想化デバイスからのデータアクセスに対応するデータを前記メモリの代わりに前記複数のデバイスのうちの1つに選択的にリダイレクトするように構成された、システム。
  17. 前記コントローラが、入力/出力(I/O)メモリ管理ユニット(MMU)コントローラを備え、前記データアクセスが、前記データと仮想アドレスとを備える、請求項16に記載のシステム。
  18. デバイスの仮想アドレスから物理アドレスへの変換を管理するための手段と、
    仮想デバイスからのデータアクセスに対応する物理アドレスを、共有メモリの代わりに発生元デバイスに選択的に経路設定するための手段とを含むコントローラを備える、装置。
  19. 前記発生元デバイスが、前記データアクセスの発生元プロセッサを備え、前記コントローラが、前記発生元プロセッサを識別するための手段をさらに含む、請求項18に記載の装置。
  20. 仮想アドレスおよび物理アドレスを記憶するメモリと、
    仮想デバイスからのデータアクセスに対応する物理アドレスを、共有メモリの代わりに発生元デバイスに選択的に経路設定をするように構成されたリダイレクションユニットとを含む、コントローラを備える、装置。
  21. 前記メモリが、仮想アドレスから物理アドレスへの変換を管理するためのアドレステーブルを記憶し、前記発生元デバイスが、前記データアクセスの発生元プロセッサを備え、前記リダイレクションユニットが、前記発生元プロセッサを識別するようにさらに構成された、請求項20に記載の装置。
  22. プロセッサにより実行可能な命令を記憶するプロセッサ可読記憶媒体であって、前記命令が、前記プロセッサに、
    仮想デバイスへのアクセスを制御するコントローラで、
    発生元デバイスから前記仮想デバイスに送信されるアクセス要求を求めてバスを監視させ、
    仮想デバイスからのデータを、共有メモリの代わりに前記発生元デバイスに選択的にリダイレクトさせるために、前記プロセッサによって実行可能である、プロセッサ可読記憶媒体。
  23. 前記命令が、前記プロセッサに、前記発生元デバイスからの前記データに関連するアクセス要求を検出させるために、前記プロセッサによってさらに実行可能である、請求項22に記載のプロセッサ可読記憶媒体。
JP2014528694A 2011-09-01 2012-09-04 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム Expired - Fee Related JP5841255B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/223,347 2011-09-01
US13/223,347 US8656137B2 (en) 2011-09-01 2011-09-01 Computer system with processor local coherency for virtualized input/output
PCT/US2012/053682 WO2013033709A1 (en) 2011-09-01 2012-09-04 Computer system with processor local coherency for virtualized input/output

Publications (2)

Publication Number Publication Date
JP2014529829A true JP2014529829A (ja) 2014-11-13
JP5841255B2 JP5841255B2 (ja) 2016-01-13

Family

ID=46852401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014528694A Expired - Fee Related JP5841255B2 (ja) 2011-09-01 2012-09-04 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム

Country Status (6)

Country Link
US (1) US8656137B2 (ja)
EP (1) EP2751698B1 (ja)
JP (1) JP5841255B2 (ja)
KR (1) KR101558427B1 (ja)
CN (1) CN103782282B (ja)
WO (1) WO2013033709A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015179477A (ja) * 2014-03-19 2015-10-08 富士ゼロックス株式会社 印刷制御システム

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103152394B (zh) * 2013-02-06 2016-09-28 华为技术有限公司 数据存取系统、内存共享设备及数据读取方法
US9218291B2 (en) * 2013-07-25 2015-12-22 International Business Machines Corporation Implementing selective cache injection
US9766916B2 (en) * 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
AU2014203218B2 (en) * 2014-06-13 2016-08-25 Canon Kabushiki Kaisha Memory configuration for inter-processor communication in an MPSoC
US9772962B2 (en) 2015-05-28 2017-09-26 Red Hat Israel, Ltd. Memory sharing for direct memory access by a device assigned to a guest operating system
US9720846B2 (en) * 2015-05-28 2017-08-01 Red Hat Israel, Ltd. Memory swap for direct memory access by a device assigned to a guest operating system
US9886210B2 (en) * 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
FR3048526B1 (fr) * 2016-03-07 2023-01-06 Kalray Instruction atomique de portee limitee a un niveau de cache intermediaire
KR20180041037A (ko) * 2016-10-13 2018-04-23 삼성전자주식회사 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법
CN109313426B (zh) * 2016-10-21 2021-10-08 株式会社东芝 控制器
KR101718695B1 (ko) * 2016-12-28 2017-03-22 비콤시스템주식회사 가상화 기반 컨트롤러가 탑재된 빌딩자동제어 장치
CN109460373B (zh) * 2017-09-06 2022-08-26 阿里巴巴集团控股有限公司 一种数据共享方法、终端设备和存储介质
WO2019124450A1 (ja) * 2017-12-20 2019-06-27 日本電気株式会社 入出力実行装置、デバイス仮想化システム、入出力実行方法、および、記録媒体
US11429526B2 (en) * 2018-10-15 2022-08-30 Texas Instruments Incorporated Credit aware central arbitration for multi-endpoint, multi-core system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008102930A (ja) * 2006-10-17 2008-05-01 Internatl Business Mach Corp <Ibm> データ処理システム内でシステム・イメージとローカルに接続された外部記憶装置との間の動作を実行するための方法、コンピュータ・プログラム、および装置(キャッシュされたアドレス変換を使用して入出力アダプタと通信するための装置および方法)
US7617377B2 (en) * 2006-10-17 2009-11-10 International Business Machines Corporation Splitting endpoint address translation cache management responsibilities between a device driver and device driver services

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2819982B2 (ja) 1993-03-18 1998-11-05 株式会社日立製作所 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
US7620955B1 (en) * 2001-06-08 2009-11-17 Vmware, Inc. High-performance virtual machine networking
US20060112226A1 (en) 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7609649B1 (en) * 2005-04-26 2009-10-27 Cisco Technology, Inc. Methods and apparatus for improving network based virtualization performance
US7702826B2 (en) 2005-12-28 2010-04-20 Intel Corporation Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices
US7426627B2 (en) * 2006-03-10 2008-09-16 Microsoft Corporation Selective address translation for a resource such as a hardware device
US7774556B2 (en) * 2006-11-04 2010-08-10 Virident Systems Inc. Asymmetric memory migration in hybrid main memory
KR20100084605A (ko) * 2007-05-31 2010-07-27 더 유니버시티 오브 레딩 프로세서
US7904692B2 (en) * 2007-11-01 2011-03-08 Shrijeet Mukherjee Iommu with translation request management and methods for managing translation requests
US8250254B2 (en) 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
US20100217937A1 (en) 2009-02-20 2010-08-26 Arm Limited Data processing apparatus and method
US9405700B2 (en) * 2010-11-04 2016-08-02 Sonics, Inc. Methods and apparatus for virtualization in an integrated circuit
US9921967B2 (en) * 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008102930A (ja) * 2006-10-17 2008-05-01 Internatl Business Mach Corp <Ibm> データ処理システム内でシステム・イメージとローカルに接続された外部記憶装置との間の動作を実行するための方法、コンピュータ・プログラム、および装置(キャッシュされたアドレス変換を使用して入出力アダプタと通信するための装置および方法)
US7617377B2 (en) * 2006-10-17 2009-11-10 International Business Machines Corporation Splitting endpoint address translation cache management responsibilities between a device driver and device driver services

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND201100070019; Fernando Vazquez: '詳説 KVMの最新仮想化技術' 日経Linux 第13巻第4号, 20110308, pp. 156-162, 日経BP社 *
JPN6015011167; Fernando Vazquez: '詳説 KVMの最新仮想化技術' 日経Linux 第13巻第4号, 20110308, pp. 156-162, 日経BP社 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015179477A (ja) * 2014-03-19 2015-10-08 富士ゼロックス株式会社 印刷制御システム

Also Published As

Publication number Publication date
KR20140069079A (ko) 2014-06-09
EP2751698A1 (en) 2014-07-09
JP5841255B2 (ja) 2016-01-13
US20130061020A1 (en) 2013-03-07
CN103782282B (zh) 2016-06-01
WO2013033709A1 (en) 2013-03-07
KR101558427B1 (ko) 2015-10-12
CN103782282A (zh) 2014-05-07
US8656137B2 (en) 2014-02-18
EP2751698B1 (en) 2016-03-23

Similar Documents

Publication Publication Date Title
JP5841255B2 (ja) 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム
US10762137B1 (en) Page table search engine
CN104951239B (zh) 高速缓存驱动器、主机总线适配器及其使用的方法
JP2017537404A (ja) メモリアクセス方法、スイッチ、およびマルチプロセッサシステム
JP2024524135A (ja) システムがサポートする計算エンティティによって共有される物理メモリをオーバーサブスクライブすることによるシステム内のメモリ削減
TWI785320B (zh) 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法
WO2023200502A1 (en) Direct swap caching with zero line optimizations
US10225344B2 (en) High-performance key-value store using a coherent attached bus
US10929302B2 (en) MMIO addressing using a translation table
JP2019175427A (ja) コンピュータシステム及びその動作方法
US11860783B2 (en) Direct swap caching with noisy neighbor mitigation and dynamic address range assignment
US10901917B1 (en) Address scrambling for storage class memory
US8627016B2 (en) Maintaining data coherence by using data domains
US20160217076A1 (en) Speculative cache reading using shared buffer
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
US10909044B2 (en) Access control device, access control method, and recording medium containing access control program
US20200285579A1 (en) Programmable data delivery to a system of shared processing elements with shared memory
JP2020087409A (ja) データ処理システム
US20240338330A1 (en) Apparatus and method for supporting data input/output operation based on a data attribute in a shared memory device or a memory expander
US10853293B2 (en) Switch-based inter-device notational data movement system
US20240126469A1 (en) Apparatus and method for controlling a pooled memory device or a memory expander
TW202340931A (zh) 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取
TW202344971A (zh) 使用整合記憶體池化及直接交換快取的系統及方法
JP6351387B2 (ja) 情報処理装置、プログラムおよび記録媒体
CN118511151A (zh) 具有集成存储器池化和直接交换高速缓存的系统和方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150323

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150917

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151019

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151112

R150 Certificate of patent or registration of utility model

Ref document number: 5841255

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees