JP2012128807A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2012128807A
JP2012128807A JP2010282158A JP2010282158A JP2012128807A JP 2012128807 A JP2012128807 A JP 2012128807A JP 2010282158 A JP2010282158 A JP 2010282158A JP 2010282158 A JP2010282158 A JP 2010282158A JP 2012128807 A JP2012128807 A JP 2012128807A
Authority
JP
Japan
Prior art keywords
memory area
data
page
fifo
information
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
JP2010282158A
Other languages
English (en)
Other versions
JP5573649B2 (ja
Inventor
Takashi Miyoshi
貴史 三吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010282158A priority Critical patent/JP5573649B2/ja
Priority to US13/323,167 priority patent/US8924624B2/en
Publication of JP2012128807A publication Critical patent/JP2012128807A/ja
Application granted granted Critical
Publication of JP5573649B2 publication Critical patent/JP5573649B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

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

Abstract

【課題】DMAライトによるゲスト物理メモリの変更内容の保持に必要なハードウェア資源を少なくする。
【解決手段】1以上の仮想機械507を実現する仮想機械実現手段501と、前記仮想機械に割り当てられる第1のメモリ領域508のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、入出力装置510から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なうデータ転送手段502と、前記入出力装置から、前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出する検出手段503と、検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第1のメモリ領域に関する更新情報を第1記憶部511に記憶する登録手段504と、前記第1記憶部に記憶される更新情報を出力する出力手段505と、を備える。
【選択図】図5

Description

本発明は、1以上の仮想機械を実現する情報処理装置に関する。
従来、情報処理装置としてのサーバ上で複数のVM(Virtual Machine:仮想機械)といわれる仮想的なサーバを動作させるサーバ仮想化技術が知られている。
図1は、サーバ仮想化技術の概要を示す図である。
サーバ101では、VMM(Virtual Machine Monitor)102と呼ばれるソフトウェアを動作させている。このVMM102は、サーバ101のメモリやIO(Input/Output:入出力)などに関するハードウェア資源を管理する。また、VMM102は、各VM#0〜#2に対して各VMが必要とするハードウェア資源をエミュレート(模倣)して提供する。
複数のVMを動作させる場合、複数のVMがサーバ101に備わる物理メモリの同一アドレスの記憶領域を重複して使用しないように、メモリの排他制御が行なわれる。この排他制御は、VMM102のメモリ管理によって行なわれる。
図2は、VMM102によるメモリ管理の概要を示す図である。
VMが認識するメモリは、ゲスト物理メモリと呼ばれる。このゲスト物理メモリは、VMからは連続するメモリ領域として把握される。一方、VMM102から見るとゲスト物理メモリはVM毎に存在する別々のメモリ空間として把握される。
図2は、VM#0とVM#1の2つのVMがVMM102上で動作している場合のゲスト物理メモリを示している。この場合、VM#0のゲスト物理メモリ#0とVM#1のゲスト物理メモリ#1の2つのゲスト物理メモリが存在する。
例えば、アドレスXは、ゲスト物理メモリ#0および#1にそれぞれ1つずつ存在する。このアドレスXをそのままサーバ101に備わる実メモリ、すなわちホスト物理メモリに割り当てると競合が発生する。
そこで、VMM102は、ゲスト物理メモリ#0のアドレスXをホスト物理メモリのアドレスZに割り当て、ゲスト物理メモリ#1のアドレスXをホスト物理メモリのアドレスYに割り当てる。このように、VMM102は、ホスト物理メモリを別々のホスト物理メモリに割り当てることにより、メモリの競合を回避する。
VMがDMA(Direct Memory Access)を起動する場合にも同様のメモリ管理が必要となる。
例えば、VM#0が、DMA転送により、ゲスト物理メモリ#0のアドレスXにデータを書き込む場合を考える。なお、DMA転送により所定のメモリ領域にデータを書き込むことを「DMAライト」という。また、DMA転送によるデータの書き込み先を示すメモリアドレスを「DMAアドレス」という。
この場合、VM#0がIOアダプタにDMAアドレスとしてアドレスXを設定すると、DMAライトはホスト物理メモリのアドレスXに対して行われる。ホスト物理メモリのアドレスXはゲスト物理メモリ#0のアドレスXとは無関係のメモリ領域であるため、メモリ破壊が引き起こされる。メモリ破壊が引き起こされた場合には、システムにパニックが発生し、その後システムが停止する。
したがって、VM#0によるDMAライトの実行は、以下のような手順で行なわれる。
(1)VM#0は、IOアダプタに対して、ゲスト物理メモリ#0のアドレスXへのDMAライトを要求する。
(2)VMM102は、VM#0のDMAライトの要求をトラップし、ゲスト物理メモリ#0のアドレスXをホスト物理メモリのバッファ領域のアドレスWに変換する。そして、VMM102は、変換したアドレスWをIOアダプタのDMAアドレス設定レジスタに設定する。
(3)VM#0は、IOアダプタに対してDMA開始を指示する。
(4)IOアダプタは、アドレスWに対してDMAライトを実行する。
(5)DMAライトが完了すると、IOアダプタは、DMA完了割り込みによりDMAライトの完了を通知する。
(6)VMM102は、ホスト物理メモリのアドレスWに格納されたデータをゲスト物理メモリ#0のアドレスXにコピーする。
(7)VMM102は、DMA完了割り込みによりVM#0にDMAライトの完了を通知する。
(8)VM#0は、ゲスト物理メモリ#0のアドレスXからデータを取り出す。
サーバ仮想化に関する機能の一つに、ライブ・マイグレーション(Live Migration)という技術がある。このライブ・マイグレーションとは、あるサーバで稼働中のVMを、別のサーバに動作を停止することなく当該動作を移行させる技術である。
図3は、ライブ・マイグレーションの概要を示す図である。
ライブ・マイグレーションは、図3に示すように、2台のサーバ#0および#1と、サーバ#0および#1が共有するストレージ320と、サーバ#0および#1が接続するネットワーク330と、を備える環境で行うことが可能である。ライブ・マイグレーションは、以下のような手順で行なわれる。
(1)移動先サーバ#1で動作するVMM311は、VM312を用意する。
(2)移動元VM302が業務を継続している状態で、移動元VMM301は、移動元VM302が使用しているメモリ内容を移動先VM310に転送する。この処理を「プレ・コピー」という。
(3)移動元VM302の業務を一時的に停止し、移動元VMM301は、移動元VM302が使用しているメモリ内容を移動先VM310に転送する。この処理を「ストップ・アンド・コピー」という。
(4)移動先VMM311からの指示に応じて、移動先VM312は業務を再開する。
上述のように、プレ・コピーやストップ・アンド・コピーなどのメモリ・コピーはすべてVMMが行なう。VMMがメモリ・コピーを実行できるのは、VMMがホスト物理メモリを管理しているからである。
VMMは、CPU(Central Processing Unit)からホスト物理メモリへのライト処理だけでなくDMAライトについても介在し、移動元VMのメモリ・データの変更分を検出する。
IO仮想化技術としてIOMMU(Input/Output Memory Management Unit)という技術がある。このIOMMUは、上述のようなVMM介在によるメモリアクセスのオーバーヘッドを軽減することで高速化を図る技術である。
IOMMUは、IOアダプタとホスト物理メモリとに接続し、ゲスト物理メモリアドレスとホスト物理メモリアドレスの変換を実施するメモリ管理ユニットである。
IOMMUを実装すると、図4に示すように、IO装置からVMのゲスト物理メモリに直接DMAを実行することが可能となる。この技術を使用すると、DMAによるゲスト物理メモリへのアクセスの際に、VMMが介在する必要がなくなる。また、VMMがホスト物理メモリ−ゲスト物理メモリ間でのデータコピーを行なう必要もなくなる。
しかし、上述のように、IOMMUを使用すると、DMAアクセス時にVMMは介在しないことになる。この場合、VMMは、DMAライトによるゲスト物理メモリの更新を把握できないので、VMMは、メモリ・コピーを正しく実行することができない。そのため、例えば、図4に示したIOMMUを実装したサーバに、DMAライトによるゲスト物理メモリの変更内容を保持させるなどして対応していた。
上記技術に関連して、仮想マシン間で、DMAなど、物理アドレスに対していくらかのアクセスができるようにしながら、ゲストからホストへの物理アドレスの参照に使用される参照テーブルからの物理アドレス空間のパージなどを可能にする方法およびシステムが知られている。
特開2006−252554号公報
しかし、図4に示したIOMMUを実装したサーバに、DMAライトによるゲスト物理メモリの変更内容を保持させる場合、DMAライトによるゲスト物理メモリの変更内容を保持させるために大容量の記憶装置が必要となる。すなわち、IOMMUを実装したサーバでライブ・マイグレーションを実行するには、大量のハードウェア資源が必要となる。
1つの側面では、本発明は、少ないハードウェア資源でライブ・マイグレーションを実行できる情報処理装置を提供することを目的とする。
1つの態様によれば、本情報処理装置は、以下の手段を備える。
仮想機械実現手段は、ハードウェア資源を管理することにより、1以上の仮想機械を実現する。
データ転送手段は、前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換する。そして、データ転送手段は、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なう。
検出手段は、前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出する。
登録手段は、検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を第1記憶部に記憶する。
出力手段は、前記第1記憶部に記憶される更新情報を出力する。
1つの態様では、少ないハードウェア資源でライブ・マイグレーションを実行することが可能となる。
サーバ仮想化技術の概要を示す図である。 VMMによるメモリ管理の概要を示す図である。 ライブ・マイグレーションの概要を示す図である。 IOMMUについて説明する図である。 情報処理装置を説明する図である。 情報処理装置の構成例を示す図である。 ノース・ブリッジにおけるDMA処理の動作を説明する図である。 PCIeスイッチにおけるDMA処理の動作を説明する図である。 パケット検出部の構成例を示す図である。 FIFO#0の構成例を示す図である。 DMAパケットのヘッダの構成例を示す図である。 ダーティ・ページ管理ユニットによるダーティ・ページ情報の登録処理を示すフローチャートである。 ダーティ・ページ管理ユニットによるダーティ・ページ情報の出力処理を示すフローチャートである。 本実施例に係るライブ・マイグレーションの概要を説明する図である。 本実施例に係るライブ・マイグレーションの概要を示すフローチャートである。 プレ・コピーの具体的な処理を示すフローチャートである。 ストップ・アンド・コピーの具体的な処理を示すフローチャートである。 条件1を用いたパケット検出部の具体例を示す図である。 図18に示したパケット検出部の処理を示すフローチャートである。 条件2を用いたパケット検出部の具体例を示す図である。 図20に示したパケット検出部の処理を示すフローチャートである。 ライブ・マイグレーション時におけるSID記憶部へのSID設定処理を示すフローチャートである。 条件3を用いたパケット検出部の具体例を示す図である。 図23に示したパケット検出部の処理を示すフローチャートである。 条件4を用いたパケット検出部の具体例を示す図である。 図25に示したパケット検出部の処理を示すフローチャートである。 条件5を用いたパケット検出部の具体例を示す図である。 図27に示したパケット検出部の処理を示すフローチャートである。 条件1および2を用いたパケット検出部の具体例を示す図である。 図29に示したパケット検出部の処理を示すフローチャートである。 条件2および3を用いたパケット検出部の具体例を示す図である。 図31に示したパケット検出部の処理を示すフローチャートである。 条件2および4を用いたパケット検出部の具体例を示す図である。 図33に示したパケット検出部の処理を示すフローチャートである。 条件2および5を用いたパケット検出部の具体例を示す図である。 図35に示したパケット検出部の処理を示すフローチャートである。 条件3を用いたパケット検出部を実現する場合に使用するFIFOの構成例を示す図である。 条件5を用いたパケット検出部を実現する場合に使用するFIFOの構成例を示す図である。
以下、本実施形態の一例について、図5〜図38に基づいて説明する。なお、以下に説明する実施形態はあくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図ではない。すなわち、本実施形態は、その趣旨を逸脱しない範囲で、各実施例を組み合わせるなど種々変形して実施することができる。
図5は、本実施例に係る情報処理装置500を説明する図である。
情報処理装置500は、仮想機械実現手段501と、データ転送手段502と、検出手段503と、登録手段504と、出力手段505と、を備える。
仮想機械実現手段501は、ハードウェア資源506を管理することにより、1または2以上の仮想機械507を実現する。仮想機械実現手段501は、情報処理装置500に含まれるCPUに所定のプログラム命令を実行させることによって実現することができる。ハードウェア資源506には、情報処理装置500に備わるメモリや、I/Oなどに関するハードウェアを含むことができる。なお、図5では、第1のメモリ領域508とハードウェア資源506とを別々に記載しているが、第1のメモリ領域508はハードウェア資源506に含むこともできる。
データ転送手段502は、仮想機械507に割り当てられる第1のメモリ領域508のアドレスと、第1のメモリ領域508の実メモリである第2のメモリ領域のアドレスと、を相互に変換する。これにより、データ転送手段502は、入出力装置510から仮想機械507に割り当てられる第1のメモリ領域508に直接的にデータ転送を行なう。このようなデータ転送は、例えば、IOMMUなどを利用して実現することができる。なお、入出力装置510は、情報処理装置500と通信可能に接続する外部装置509とのデータの入出力を制御する装置である。
検出手段503は、入出力装置510から仮想機械507に割り当てられる第1のメモリ領域508に直接的にデータ転送されるデータを検出する。
登録手段504は、検出手段503により検出したデータが一定の条件を満たす場合に、検出手段503が検出したデータにより変更される第1のメモリ領域508に関する更新情報を生成し、更新情報を第1記憶部511に記憶する。更新情報には、検出手段503が検出したデータにより変更される第1のメモリ領域508のアドレスと、データの出力元の出力もとのユニットを識別する識別情報と、を含むことができる。
出力手段505は、第1記憶部511に記憶される更新情報を出力する。
以上のように、登録手段504は、検出手段503が検出したデータにより変更される第1のメモリ領域508に関する更新情報を第1記憶部511に記憶する。そして、出力手段505は、第1記憶部511に記憶される更新情報を出力する。
したがって、情報処理装置500で動作する仮想機械507は、データ転送手段502によって、入出力装置510から仮想機械507に割り当てられる第1のメモリ領域508に直接的にデータ転送されたメモリ領域の更新情報を得ることが可能となる。
その結果、入出力装置510から、仮想機械507に割り当てられる第1のメモリ領域508に直接的にデータ転送するデータ転送手段502を備える情報処理装置500であっても、仮想機械507のライブ・マイグレーションを実行することが可能となる。
また、登録手段504は、検出手段503により検出したデータが一定の条件を満たす場合にだけ更新情報を生成し、更新情報を第1記憶部511に記憶する。その結果、第1記憶部511を実現するためのハードウェア資源を少なくすることができる。
以上のように、入出力装置510から第1のメモリ領域508に直接的にデータ転送するデータ転送手段502を備える情報処理装置500であっても、少ないハードウェア資源で仮想機械507のライブ・マイグレーションを実行することが可能となる。
その他の実施例
図6は、情報処理装置600の構成例を示す図である。
情報処理装置600は、演算処理装置としてのCPU610および611と、主記憶装置としてのメモリ620と、メモリ制御装置としてのノース・ブリッジ630と、を備える。又、情報処理装置600は、入出力制御装置としてのIOアダプタ640、641および642と、PCIeスイッチ(PCI Express Switch)650と、を備える。
CPU610および611は、メモリ620に展開されるプログラムを実行する演算処理装置である。CPU610および611は、所定のプログラムを実行することにより、サーバの仮想化を実現する。また、CPU610および611は、ストレージ#0や#1などから所定のプログラムを読み出して実行することにより、本実施例に係るライブ・マイグレーションを実現する。
なお、サーバの仮想化に必要なハードウェア資源やメモリ等管理などの技術については従来技術を利用することができる。
メモリ620は、CPU610および611が実行するプログラムやデータを記憶する揮発性メモリである。例えば、RAM(Random Access Memory)などがメモリ620として使用される。なお、必要に応じて不揮発性メモリを使用してもよい。
ノース・ブリッジ630は、CPU610および611と、メモリ620およびPCIeスイッチ650と接続している。ノース・ブリッジ630は、CPU610および611と、メモリ620やPCIeスイッチ650と、が相互に通信可能となるようにデータ転送路を制御する。
また、ノース・ブリッジ630は、IOMMU631と、IOテーブル記憶部632と、を備える。
IOMMU631は、ゲスト物理メモリのアドレスとホスト物理メモリのアドレスとの変換を実施するなどのメモリ管理を行なうメモリ管理ユニットである。以下、ゲスト物理メモリのアドレスを「ゲスト物理アドレス」といい、「GPA(Guest Physical Address)」と略記する。また、ホスト物理メモリのアドレスを「ホスト物理アドレス」といい、「HPA(Host Physical Address)」と略記する。
IOテーブル記憶部632は、IOMMU631がGPAとHPAの変換を行なうときに使用するIOテーブルを記憶する記憶装置である。例えば、キャッシュメモリなどがIOテーブル記憶部632として使用される。IOテーブルについては、図7で説明する。
IOアダプタ640、641および642は、情報処理装置600と接続するIO装置とのインタフェースである。DMAを行なうDMA回路は、各IOアダプタ640、641および642に備わる。IO装置とは、例えば、図6に示すデータを記憶するストレージ#0、#1やネットワークと接続するネットワーク機器などの入出力装置である。
PCIeスイッチ650は、ノース・ブリッジ630、IOアダプタ640、641および642と接続している。また、PCIeスイッチ650は、ノース・ブリッジ630とIOアダプタ640、641および642との間を結ぶデータ転送路の切り替え制御などを行なう。情報処理装置600は、データ転送路にシリアル転送インタフェースの規格である「PCI Express 2.0」を使用している。
また、PCIeスイッチ650は、ダーティ・ページ管理ユニット651と、ダーティ・ページ記憶部652と、を備える。
ダーティ・ページ管理ユニット651は、IOアダプタ640、641または642からメモリ620に、DMAライトによって転送されるデータとしてのパケットを検出する。そして、ダーティ・ページ管理ユニット651は、DMAライトによって追加、変更または更新等されたデータに関する情報をページ単位でダーティ・ページ記憶部652に記憶する。
以下、DMAライトによって追加、変更または更新等されたページ単位のデータを、「ダーティ・ページ」という。また、ダーティ・ページに関する情報を、「ダーティ・ページ情報」という。
ダーティ・ページ記憶部652は、ダーティ・ページ情報を記憶する記憶装置である。例えば、スタティックRAMなどがダーティ・ページ記憶部652として使用される。
情報処理装置600は、ライブ・マイグレーションを実施するために情報処理装置601とネットワークを介して接続している。また、情報処理装置600と情報処理装置601は、ストレージ#0および#1を共有する。
情報処理装置601は、CPU660および661と、メモリ670と、ノース・ブリッジ680と、IOアダプタ690、691および692と、PCIeスイッチ700と、を備える。
CPU660、661、メモリ670およびノース・ブリッジ680は、CPU610、611、メモリ620およびノース・ブリッジ630と、同様の機能を有する。また、IOアダプタ690、691、692およびPCIeスイッチ700は、IOアダプタ640、641、642およびPCIeスイッチ650と、同様の機能を有する。
ただし、ノース・ブリッジ680には、IOMMU631およびIOテーブル記憶部632を備えなくてもよい。同様に、PCIeスイッチ700には、ダーティ・ページ管理ユニット651およびダーティ・ページ記憶部652を備えなくてもよい。
情報処理装置600と接続する情報処理装置601は、図3で示した一般的なライブ・マイグレーションが実行可能であればよい。
図6に示した構成は、本実施例に係る情報処理装置600の一例である。したがって、図6に示す構成に情報処理装置600の構成を限定する趣旨ではない。例えば、CPUの数やIOアダプタの数、情報処理装置600を構成する各ユニットの配置などを図6に示すものに限定する趣旨ではない。
また、情報処理装置600は、CDやDVDなどの可搬記憶媒体を駆動する媒体駆動装置643を備えてもよい。本実施例に係るライブ・マイグレーションをCDやDVDなどの可搬記憶媒体に記憶した場合、CPU610および611は、媒体駆動装置643を介して可搬記憶媒体から所定のプログラムを読み出して実行することにより、本実施例に係るライブ・マイグレーションを実現する。
図7は、ノース・ブリッジ630におけるDMA処理の動作を説明する図である。
DMAパケット710および711は、DMA処理によりIOアダプタ640、641または642から所定の転送先に転送されるデータとしてのパケットである。
IOテーブル720は、IOテーブル記憶部632に記憶されるIOテーブルを示している。IOテーブル720は、GPAとHPAのアドレス変換テーブルである。IOテーブル720は、GPAとソースIDとを含むアドレスに対応するHPAを定義する。ソースIDとは、パケットの転送元のユニットを識別するID(Identification Data)である。以下では、ソースIDを「SID(Source ID)」と略記する。
IOテーブル720は、後述するページテーブル730のエントリのうち頻繁に使用する一部のエントリをキャッシュ(一時保持)するものである。
ページテーブル730は、GPAとHPAのアドレス変換テーブルである。ページテーブル730は、GPAに対応するHPAを定義している。
IOMMU631は、DMAパケット710を検出すると、検出したDMAパケット710のヘッダから、GPAとSIDとを取得する。
すると、IOMMU631は、IOテーブル720を参照する。そして、IOMMU631は、DMAパケット710から取得したGPAとSIDとを含むアドレスが、IOテーブル720に登録されているか否かを判別する。
DMAパケット710から取得したGPAとSIDとを含むアドレスが登録されている場合、IOMMU631は、そのGPAとSIDとを含むアドレスに対応するHPAを取得する。
そして、IOMMU631は、DMAパケット710のヘッダに設定されている転送先を示すGPAを、IOテーブル720から取得したHPAに変更する。
一方、DMAパケット710から取得したGPAとSIDとを含むアドレスがIOテーブル720に登録されていない場合、IOMMU631は、メモリ620に格納されているページテーブル730を参照する。
そして、IOMMU631は、ページテーブル730のアドレスであって、DMAパケット710から取得したGPAと同一のアドレスに登録されているHPAを取得する。
そして、IOMMU631は、DMAパケット710のヘッダに設定されている転送先を示すGPAを、ページテーブル730から取得したHPAに変更する。
以上のようにして転送先のアドレスがGPAからHPAに変換されたDMAパケット711は、メモリ620に出力される。
図8は、PCIeスイッチ650におけるDMA処理の動作を説明する図である。
ダーティ・ページ管理ユニット651は、制御I/F(Interface)部810と、パケット検出部820と、ライトポインタ830と、リードポインタ840と、を備える。
なお、ダーティ・ページ管理ユニット651の動作の理解を容易にするために、図8では、ダーティ・ページ管理ユニット651の中にダーティ・ページ記憶部652を記載している。
ダーティ・ページ記憶部652は、FIFO(First In First Out:先入れ先出しメモリ)を実現するメモリ#0および#1を備える。以下、FIFOを実現するメモリ#0および#1をそれぞれ「FIFO#0」、「FIFO#1」という。
制御I/F部810は、ダーティ・ページ管理ユニット651のインタフェースである。VMM102は、制御I/F部810を介してFIFO#0または#1に記憶されているダーティ・ページ情報を取得する。
制御I/F部810は、ステータスレジスタ811と、データレジスタ812と、コントロールレジスタ813と、を備える。
ステータスレジスタ811は、VMM102などのソフトウェアからリード/ライトが可能なレジスタである。ステータスレジスタ811は、以下のような状態表示ビットを備える。
オーバーフロー情報ビット#0:FIFO#0がオーバーフローを起こしたことを示す。
オーバーフロー情報ビット#1:FIFO#1がオーバーフローを起こしたことを示す。
有効データカウント#0:FIFO#0において、ライトポインタ830が示すアドレスとリードポインタ840が示すアドレスとの差をダーティ・ページ情報のサイズで除した値を示す。まだ読み出していないダーティ・ページ情報がFIFO#0にどれだけ残っているかを示す。
有効データカウント#1:FIFO#1において、ライトポインタが示すアドレスとリードポインタが示すアドレスとの差をダーティ・ページ情報のサイズで除した値を示す。まだ読み出していないダーティ・ページ情報がFIFO#1にどれだけ残っているかを示す。
データレジスタ812は、VMM102などのソフトウェアからリードが可能なレジスタである。FIFO#0または#1に記憶されているデータをVMM102から読み出すために使用するレジスタである。
データレジスタ812は、コントロールレジスタ813のリードセレクトビットで指定したFIFO#0または#1から読み出されたダーティ・ページ情報がセットされる。ダーティ・ページ管理ユニット651は、データレジスタ812に格納されているダーティ・ページ情報がリードされると同時に、リードポインタ840に、次のダーティ・ページ情報が記憶されるアドレスに設定する。
コントロールレジスタ813は、VMM102などのソフトウェアからリード/ライトが可能なレジスタである。コントロールレジスタ813は、以下のような制御ビットを備える。
スタートビット:FIFO#0または#1へのダーティ・ページ情報の登録を開始する。
ストップビット:FIFO#0または#1へのダーティ・ページ情報の登録を停止する。
クリアビット :FIFO#0または#1のポインタを0に戻し、FIFO#0または#1を空の状態にする。空の状態とは、FIFOに登録されているダーティ・ページ情報がない状態である。
ライトセレクトビット:2つのFIFO#0または#1のどちらにダーティ・ページ情報を登録するかを選択する。
リードセレクトビット:2つのFIFO#0または#1のどちらからダーティ・ページ情報を読み出すかを選択する。
パケット検出部820は、コントロールレジスタ813のスタートビットが「1」に設定されている間、PCIeスイッチ650に入力されるDMAライトパケット850を検出する。そして、パケット検出部820は、検出したDMAライトパケット850のヘッダから、GPAとSIDを取得する。さらに、パケット検出部820は、取得したGPAからページ部を取得する。以下、GPAから取得したページ部のデータを「GPAページ」という。GPAページについては、図10で後述する。さらに、パケット検出部820は、GPAページとSIDとを含むデータをダーティ・ページ情報として、選択中のFIFO#0または#1に書き込む。同時に、パケット検出部820は、ライトポインタ830に、次にダーティ・ページ情報を記憶する領域のアドレスを設定する。
ここで、FIFO#0および#1は、オーバーフローを避けるために、サイズを大きくする必要がある。例えば、DMA性能が10Gbps、FIFO#0と#1との切り替え時間が1msの場合、約1万エントリのダーティ・ページ情報を記憶できる巨大なFIFOが必要となる。大量のハードウェア資源が必要となる。
さらに、FIFOのサイズを大きくした場合でも、DMAライトが大量に発生すると、容易にFIFOがオーバーフローしてしまう可能性が増大する。CPUがFIFOに記憶されているダーティ・ページ情報を読み出す速度よりも、DMA転送の速度、すなわち、パケット検出部820がDMAライトを検出してダーティ・ページ情報をFIFOに書き込む速度の方が高速だからである。
そこで、本実施例に係るパケット検出部820は、取得したGPAページとSIDの一方または両方が、特定の条件を満たすか否かを判別する。そして、特定の条件を満たす場合、パケット検出部820は、GPAページとSIDとを含むデータをダーティ・ページ情報として、選択中のFIFO#0または#1に書き込む。同時に、パケット検出部820は、ライトポインタ830に、次にダーティ・ページ情報を記憶する領域のアドレスを設定する。
ライトポインタ830は、FIFO#0または#1へ最後に書き込まれたダーティ・ページ情報のアドレスを示す。本実施例では、図8に示すように、FIFO#0用とFIFO#1用とにそれぞれライトポインタ830が備えられている。
リードポインタ840は、FIFO#0または#1から最後に読み出されたダーティ・ページ情報のアドレスを示す。本実施例では、図8に示すように、FIFO#0用とFIFO#1用とにそれぞれリードポインタ840を備える。
なお、FIFO#0が選択されている場合には、FIFO#0についてのライトポインタおよびリードポインタがライトポインタ830およびリードポインタ840に格納される。
同様に、FIFO#1が選択されている場合には、FIFO#1についてのライトポインタおよびリードポインタがライトポインタ830およびリードポインタ840に格納される。
図9は、パケット検出部820の構成例を示す図である。なお、図9に記載のFIFO#Nは、選択中のFIFO#0または#1を示す。同様に、図18、図20、図23、図25、図27、図29、図31、図33および図35に記載のFIFO#Nも、選択中のFIFO#0または#1を示す。
パケット検出部820は、FIFO制御部901と、判定部902と、を備える。
FIFO制御部901は、制御I/F部810に含まれるコントロールレジスタ813のスタートビットが「1」に設定されている間、DMAライトパケット850を検出する。そして、FIFO制御部901は、検出したDMAライトパケット850のヘッダから、GPAページとSIDを取得する。
FIFO制御部901は、ダーティ・ページ情報を、選択中のFIFO#0または#1に書き込む必要がある、との判定結果を判定部902から得る。この場合、FIFO制御部901は、DMAライトパケット850から取得したGPAページとSIDとを含むデータを、ダーティ・ページ情報として、選択中のFIFO#0または#1に書き込む。同時に、FIFO制御部901は、ライトポインタ830に、次にダーティ・ページ情報を記憶する領域のアドレスを設定する。
また、FIFO制御部901は、ダーティ・ページ情報を、選択中のFIFO#0または#1に書き込む必要がない、との判定結果を判定部902から得る。この場合、FIFO制御部901は、ダーティ・ページ情報の、選択中のFIFO#0または#1への書き込みは行わない。
判定部902は、DMAライトパケット850から取得したGPAページとSIDの一方または両方が、特定の条件を満たすか否かを判別する。特定の条件を満たす場合、判定部902は、ダーティ・ページ情報を、選択中のFIFO#0または#1に書き込む必要があると判断し、その旨をFIFO制御部901に通知する。
また、特定の条件を満たさない場合、判定部902は、ダーティ・ページ情報を、選択中のFIFO#0または#1に書き込む必要がないと判断し、その旨をFIFO制御部901に通知する。
判定部902が使用する「特定の条件」として、下記「条件1」〜「条件5」や、下記「条件1」〜「条件5」の組み合わせなど、様々な条件を用いることができる。
条件1:DMAライトパケット850から取得したDMAアドレスが、選択中のFIFO#0または#1に最後に書き込まれたDMAアドレスと異なる場合だけ、ダーティ・ページ情報を、選択中のFIFO#0または#1に書き込む。条件1を用いた場合のパケット検出部820の具体例については、図18および図19で後述する。
条件2:DMAライトパケット850の送信元のユニットが、ライブ・マイグレーションの対象である場合だけ、ダーティ・ページ情報を、選択中のFIFO#0または#1に書き込む。条件2を用いた場合のパケット検出部820の具体例については、図20〜図22で後述する。
条件3:DMAライトが、選択中のFIFO#0または#1に最後に書き込まれたDMAアドレスを先頭アドレスとしたアクセスであって、複数ページをまたぐ連続アクセスでない場合だけ、ダーティ・ページ情報を、選択中のFIFO#0または#1に書き込む。条件3を用いた場合のパケット検出部820の具体例については、図23および図24で後述する。
条件4:DMAライトパケット850から取得したDMAアドレスが、選択中のFIFO#0または#1に書き込まれた複数のDMAアドレスのいずれとも異なる場合だけ、ダーティ・ページ情報を、選択中のFIFO#0または#1に書き込む。条件4を用いた場合のパケット検出部820の具体例については、図25および図26で後述する。
条件5:DMAライトパケット850から取得したDMAアドレスが、選択中のFIFO#0または#1に書き込まれた複数のDMAアドレスのいずれとも一定範囲内にない場合だけ、ダーティ・ページ情報を、選択中のFIFO#0または#1に書き込む。条件5を用いた場合のパケット検出部820の具体例については、図27および図28で後述する。
また、上記「条件1」〜「条件5」を組み合わせて使用した場合のパケット検出部820の具体例については、図29〜図38で後述する。
図10は、FIFO#0の構成例を示す図である。なお、図10には、FIFO#0についてのみ示すが、FIFO#1についても同様の構成である。
FIFO#0は、DMAパケットの送信元のIOアダプタを示すSIDと、そのDMAパケットの転送先を示すGPAのGPAページと、を備える。PCI Expressの場合、SIDは、DMAパケットの送信元のバス番号と、そのDMAパケットの送信元のファンクション番号と、を含む。
本実施例では、1ページのサイズを例えば4KBとする。この場合、64ビット幅のアドレスデータの下位12ビットは同一ページ内のアドレスを表す。したがって、本実施例では、GPAのうち、ビット63〜12までのデータを含むGPA[63:12]、すなわちGPAページをFIFO#0に登録する。
GPAに32ビット長のデータを使用する場合、GPAのビット63〜32に「0」を補完した64ビット長のアドレスデータについてのGPAページをFIFO#0に登録する。
上述のSID、GPAページは、DMAパケットのヘッダから取得することができる。
図11は、DMAパケットのヘッダの構成例を示している。本実施例では、PCIeスイッチ650を使用しているので、DMAパケットのヘッダは規格「PCI Express 2.0」に準じる。
図11の(1)に示すDMAパケットのヘッダ1101は、GPAに32ビット幅のアドレスデータを使用する場合のDMAパケットのヘッダの構成例を示す。また、図11の(2)に示すDMAパケットのヘッダ1102は、GPAに64ビット幅のアドレスデータを使用する場合のDMAパケットのヘッダの構成例を示す。
「R」は、リザーブ領域である。常に「0」が設定される。
「Fmt(Format)」は、ペイロードに格納されたデータの有無、ヘッダ長を示す2ビット幅のデータである。
「Type」は、パケットのタイプを示す5ビット幅のデータである。
「TC(Transaction Class)」は、パケットの優先度を示す3ビット幅のデータである。
「TD(TLP(Transaction Layer Packet) Digest)」は、エラーチェック符号であるECRC(Extended Cyclical Redundancy Check)の有無を示す1ビット幅のデータである。
「EP(Error Poisoned)」は、ペイロードに格納されたデータが壊れている可能性を示す1ビット幅のデータである。
「Attr(Attributes)」は、パケットの順序やプロトコルに関する補足情報を示す2ビット幅のデータである。
「AT(Address Translation)」は、アドレス変換に関する補足情報を示す2ビット幅のデータである。
「Length」は、ペイロードに格納されているデータのデータ長を示す10ビット幅のデータである。
「バス番号」は、DMAパケットの送信元のバス番号を示す8ビット幅のデータである。
「ファンクション番号」は、DMAパケットの送信元のファンクション番号を示す8ビット幅のデータである。
「Tag」は、DMAパケットの管理番号を示す8ビット幅のデータである。
「Last DW BE」は、Last DW Byteの有効・無効を示す4ビット幅のデータである。
「1st DW BE」は、1st DW Byteの有効・無効を示す4ビット幅のデータである。
「アドレス」は、30ビット幅または62ビット幅のアドレスデータである。
図12は、ダーティ・ページ管理ユニット651によるダーティ・ページ情報の登録処理を示すフローチャートである。なお、図12中に記載のFIFOは、FIFO#0または#1のうち、コントロールレジスタ813のライトセレクトビットに設定されたFIFOのことを示す。
VMM102などのソフトウェアが、ダーティ・ページ管理ユニット651に備わるコントロールレジスタ813のスタートビットを「1」に設定すると、ダーティ・ページ管理ユニット651は、ダーティ・ページ情報の登録処理を開始する(ステップS1200)。
ステップS1201において、パケット検出部820は、IOアダプタ640、641または642などのIOアダプタからPCIeスイッチ650に入力したDMAパケットのヘッダを参照する。
そして、パケット検出部820は、DMAパケットのヘッダから「Fmt」と「Type」を取得する。
パケット検出部820は、IOアダプタからメモリ620に転送され、Fmt=10(2進数)またはFmt=11(2進数)、かつType=00000(2進数)であるDMAライトパケットを検出すると、ステップS1202に移行する(ステップS1201 YES)。
なお、Fmt=10(2進数)の場合、GPAに32ビット幅のアドレスデータを使用するDMAパケットであることを示している。また、Fmt=11(2進数)の場合、GPAに64ビット幅のアドレスデータを使用するDMAパケットであることを示している。
また、Type=00000(2進数)は、DMAライトパケットであることを示している。
パケット検出部820は、PCIeスイッチ650に入力したDMAパケットが、DMAライトパケットでないと判断すると、ステップS1201を再度実行する(ステップS1201 NO)。
ステップS1202において、パケット検出部820は、ライトポインタ830が指すアドレスとリードポインタ840が指すアドレスとの差が、FIFOのサイズにダーティ・ページ情報のサイズを除した値に等しいか否かにより、FIFOがFullか否かを判別する。
ライトポインタ830が指すアドレスとリードポインタ840が指すアドレスとの差が0の場合、パケット検出部820は、FIFOがFullと判断する(ステップS1202 YES)。この場合、パケット検出部820は、処理をステップS1203に移行する。
ステップS1203において、パケット検出部820は、ステータスレジスタ811のオーバーフロー情報ビットに「1」を設定すると、処理をステップS1209に移行する。そして、ダーティ・ページ管理ユニット651は、ダーティ・ページ情報の登録処理を終了する。
ステップS1202において、ライトポインタ830が指すアドレスとリードポインタ840が指すアドレスとの差がFIFOのサイズにダーティ・ページ情報のサイズを除した値に等しくない場合、パケット検出部820は、FIFOがFullでないと判断する(ステップS1202 NO)。この場合、パケット検出部820は、処理をステップS1204に移行する。
ステップS1204において、パケット検出部820は、DMAライトパケットのヘッダからSIDとGPAを取得する。そして、パケット検出部820は、GPAからGPAページを取得する。
ステップS1205において、パケット検出部820は、ステップS1204で取得したSIDおよびGPAページのいずれか一方または両方に基づいて、FIFOへのダーティ・ページ情報の書き込みが必要か否かを判定する。FIFOへのダーティ・ページ情報の書き込みは不要と判定した場合(ステップS1205 NO)、パケット検出部820は、ダーティ・ページ情報の登録処理を終了する(ステップS1209)。
また、FIFOへのダーティ・ページ情報の書き込みが必要と判定した場合(ステップS1205 YES)、パケット検出部820は、処理をステップS1206に移行する。この場合、パケット検出部820は、ライトポインタ830が示すFIFOのアドレスに、ステップS1204で取得したSIDとGPAページとを含むデータをダーティ・ページ情報として登録する。
ステップS1207において、パケット検出部820は、ダーティ・ページ情報を格納する領域サイズだけ、ライトポインタ830に格納されているアドレスをインクリメントする。
ステップS1208において、パケット検出部820は、制御I/F部810に備わるコントロールレジスタ813を参照する。そして、コントロールレジスタ813のストップビットに「1」が設定されている場合(ステップS1208 YES)、パケット検出部820は、処理をステップS1209に移行する。そして、ダーティ・ページ管理ユニット651は、ダーティ・ページ情報の登録処理を終了する。
ステップS1208において、コントロールレジスタ813のストップビットが「1」でない場合、パケット検出部820は、処理をステップS1201に移行する(ステップS1208 NO)。
図13は、ダーティ・ページ管理ユニット651によるダーティ・ページ情報の出力処理を示すフローチャートである。なお、図13中に記載のFIFOは、FIFO#0または#1のうち、コントロールレジスタ813のリードセレクトビットに設定されたFIFOのことを示す。
ステップS1301において、VMM102などのソフトウェアが、ダーティ・ページ管理ユニット651に備わるデータレジスタ812からダーティ・ページ情報を読み出すと、制御I/F部810は、処理をステップS1302に移行する。
ステップS1302において、制御I/F部810は、ダーティ・ページ情報を格納する領域サイズだけ、リードポインタ840に格納されているアドレスをインクリメントする。
ステップS1303において、制御I/F部810は、リードポインタ840が示すFIFOのアドレスからダーティ・ページ情報を取得し、データレジスタ812にラッチする。
以上の処理が終了すると、制御I/F部810は、処理をステップS1304に移行する。そして、制御I/F部810は、ダーティ・ページ情報の出力処理を終了する。
図14は、本実施例に係るライブ・マイグレーションの概要を説明する図である。
図14に示す情報処理システム1400は、サーバ#0と、サーバ#0とネットワークを介して互いに通信可能に接続するサーバ#1と、サーバ#0とサーバ#1とが共有するストレージ#0および#1と、を備える。
サーバ#0は、図6に示した情報処理装置600である。また、サーバ#0は、図6に示した情報処理装置601である。
サーバ#0ではVMM#0が動作する。VMM#0は、VM#0およびVM#1を実現する。一方、サーバ#1ではVMM#1が動作する。また、VM#0はストレージ#0を専有し、VM#1はストレージ#1を専有する。
以上の状態において、サーバ#0で動作するVMM#0が実現するVM#0を、サーバ#1で動作するVMM#1上に移動するライブ・マイグレーションを行なう場合について以下に説明する。
図15は、本実施例に係るライブ・マイグレーションの概要を示すフローチャートである。
ステップS1501において、VMM#0は、VM#0の移動先であるVMM#1に対して、新たなVMに割り当てるメモリ領域の確保を要求する。以下、VMに割り当てるメモリ領域を「VM領域」という。
一方、VMM#1からVM領域確保の要求を受けると、VMM#1は、サーバ#1に備わるメモリの所定の領域にVM領域を確保する。そして、サーバ#1は、サーバ#0に対してVM領域の確保が完了したことを通知する。
サーバ#1からVM領域の確保が完了した旨の通知を受けると、サーバ#0は、処理をステップS1502に移行する。
ステップS1502において、VMM#0は、ある時点において、移動の対象であるVM#0に割り当てられているホスト物理メモリの領域に格納されているデータを取得する。この、ある時点(チェックポイント時点)においてVMに割り当てられているホスト物理メモリの領域に格納されているデータを「スナップショット」という。
ステップS1503において、VMM#0は、ダーティ・ページ管理ユニット651のコントロールレジスタ813のスタートビットを「1」に設定し、ダーティ・ページ情報の記録を開始する。
ステップS1504において、VMM#0は、ステップS1502で取得したスナップショットを、VM#0の移動先のサーバ#1に備わるメモリの所定の領域であって、ステップS1501で確保したVM領域に、メモリ・コピーする。
ステップS1505において、VMM#0は、ダーティ・ページ管理ユニット651から制御I/F部810のステータスレジスタ811の有効データカウントを介して、残りのダーティ・ページ情報数を取得する。そして、VMM#0は、残りのダーティ・ページ情報数とあらかじめ決められた閾値とを比較する。
残りのダーティ・ページ情報数が閾値より大きい場合(ステップS1505 YES)、VMM#0は、処理をステップS1506に移行する。また、残りのダーティ・ページ情報数が閾値以下の場合(ステップS1505 NO)、VMM#0は、処理をステップS1507に移行する。
ステップS1506において、VMM#0は、ダーティ・ページ管理ユニット651から制御I/F部810のデータレジスタ812を介して、ダーティ・ページ記憶部652に現在までに登録されている全てのダーティ・ページ情報を取得する。
そして、VMM#0は、取得したダーティ・ページ情報に含まれるGPAページをHPAに変換する。
そして、VMM#0は、サーバ#0に備わるメモリから、変換したHPAに格納されているデータを取得する。VMM#0は、取得したデータを、VM#0の移動先のサーバ#1に備わるメモリの領域であって、ステップS1501で確保したVM領域に、メモリ・コピーする。
メモリ・コピーを実行すると、VMM#0は、処理をステップS1505に移行する。
以上に説明したステップS1502〜S1506の処理が「プレ・コピー」である。プレ・コピーは、VM#0が業務を継続中に行なわれる。したがって、プレ・コピー中もVMM#0は、IOMMU631を介して、ストレージ#0に対するリード/ライト処理を行なう。そのため、以下のストップ・アンド・コピーが必要となる。
ステップS1507において、VMM#0は、VM#0の業務を停止する。
ステップS1508において、VMM#0は、ステップS1506と同様の処理を実行する。
以上に説明したステップS1507〜S1508の処理が「ストップ・アンド・コピー」である。
ステップS1509において、VMM#0は、VM#0の移動先のサーバ#1で動作しているVMM#1に、メモリ・コピーの完了を通知する。
ステップS1510において、VMM#0からメモリ・コピーの完了通知を受けると、VMM#1は、VMM#1上でVM#0の業務を開始させる。VMM#1上でVM#0が業務を再開すると、VMM#1は、処理をステップS1511に移行する。そして、VMM#0および#1は、ライブ・マイグレーションを終了する。
図16は、プレ・コピーの具体的な処理を示すフローチャートである。
ステップS1601において、VMM#0は、制御I/F部810に備わるコントロールレジスタ813のクリアビットに「1」を設定することにより、FIFO#0および#1を初期化する。
また、VMM#0は、コントロールレジスタ813のライトセレクトビットを「0」に設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#0に設定する。同様に、VMM#0は、コントロールレジスタ813のリードセレクトビットを「0」に設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#0に設定する。
ステップS1602において、VMM#0は、ダーティ・ページ管理ユニット651に備わるコントロールレジスタ813のスタートビットを「1」に設定することにより、ダーティ・ページ情報の記録を開始する。
ステップS1603において、VMM#0は、メモリ・コピーを実行する。このステップS1603では、図15に示したステップS1502〜S1504で説明したメモリ・コピー処理が行なわれる。
ステップS1604において、VMM#0は、一定時間ウェイト状態に移行する。一定時間経過すると、VMM#0は、処理をステップS1605に移行する。
ステップS1605において、VMM#0は、制御I/F部810に備わるコントロールレジスタ813のライトセレクトビットに「0」または「1」を設定することにより、ダーティ・ページ情報を記録するFIFOを変更する。
例えば、現在選択中のFIFOがFIFO#0の場合、VMM#0は、コントロールレジスタ813のライトセレクトビットに「1」を設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#1に変更する。
同様に、現在選択中のFIFOがFIFO#1の場合、VMM#0は、コントロールレジスタ813のライトセレクトビットに「0」を設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#0に変更する。
ステップS1606において、VMM#0は、制御I/F部810に備わるステータスレジスタ811を読み出す。
ステップS1607において、VMM#0は、現在選択中のFIFOのオーバーフロー情報ビットが「1」に設定されているか否かを判別する。
現在選択中のFIFOのオーバーフロー情報ビットが「1」に設定されている場合(ステップS1607 YES)、VMM#0は、処理をステップS1608に移行する。この場合、VMM#0は、実行中のライブ・マイグレーションを中断、または最初からやり直す。
ステップS1607において、現在選択中のFIFOのオーバーフロー情報ビットが「0」に設定されている場合(ステップS1607 NO)、VMM#0は、処理をステップS1609に移行する。
ステップS1609において、VMM#0は、ステータスレジスタ811の有効データカウントに設定されている数だけデータレジスタ812を読み出し、ダーティ・ページ情報を取得する。
ステップS1610において、VMM#0は、ステップS1609で読み出したダーティ・ページ情報のうち、SIDがストレージ#0を示すダーティ・ページ情報のみを抽出する。ステップS1610または後述するS1507の処理で抽出するダーティ・ページ情報を「コピー対象ダーティ・ページ情報」という。
ステップS1611において、VMM#0は、コピー対象ダーティ・ページ情報に含まれるGPAページを、ページテーブル730にしたがって、HPAに変換する。この変換されたHPAもページを示す。ページの単位は、GPAページと同じである。
なお、図23で後述するように、条件3を用いたパケット検出部820を実現する場合、ダーティ・ページ情報には、カウント値が含まれる。この場合、コピー対象ダーティ・ページ情報に含まれるGPAページをXとすると、VMM#0は、XからX+カウント値までのGPAページをHPAに変換する。例えば、コピー対象ダーティ・ページ情報に含まれるGPAページが0x100、カウント値が2の場合、VMM#0は、0x100、0x101および0x102のGPAページをHPAに変換する。
また、図27で後述するように、条件5を用いたパケット検出部820を実現する場合、ダーティ・ページ情報には、拡張サイズが含まれる。この場合、VMM#0は、コピー対象ダーティ・ページ情報に含まれるGPAページを、拡張サイズが示すページ単位に変換する。そして、VMM#0は、変換された値をHPAに変換する。例えば、コピー対象ダーティ・ページ情報に含まれるGPAページの拡張サイズが8KBの場合、VMM#0は、GPAページの下位0〜12ビットをマスクした値をHPAに変換する。
ステップS1612において、VMM#0は、ステップS1611で変換されたHPAが示すページの範囲に格納されているデータを、サーバ#0に備わるメモリ620から取得する。そして、VMM#0は、取得したデータを、VM#0の移動先であるVMM#1に転送する。
一方、VMM#1は、VMM#0からデータを受信すると、受信したデータを図15に示したステップS1501の処理で確保したVM領域に格納する。
ステップS1613において、VMM#0は、制御I/F部810に備わるコントロールレジスタ813のリードセレクトビットに「0」または「1」を設定することにより、ダーティ・ページ情報を読み出すFIFOを変更する。
例えば、現在選択中のFIFOがFIFO#0の場合、VMM#0は、コントロールレジスタ813のリードセレクトビットに「1」を設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#1に変更する。
同様に、現在選択中のFIFOがFIFO#1の場合、VMM#0は、コントロールレジスタ813のリードセレクトビットに「0」を設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#0に変更する。
ステップS1614において、VMM#0は、プレ・コピーの完了条件を満たしているか否かを判別する。このステップS1614の処理では、図15に示したステップS1505の処理が行なわれる。
プレ・コピーの完了条件が満たされていると判断した場合(ステップS1614 YES)、VMM#0は、処理をステップS1615に移行する。この場合、VMM#0は、プレ・コピーを終了する。
また、プレ・コピーの完了条件を満たされていないと判断した場合(ステップS1614 NO)、VMM#0は、処理をステップS1604に移行する。
図17は、ストップ・アンド・コピーの具体的な処理を示すフローチャートである。
図16に示したプレ・コピーが完了すると、VMM#0は、ストップ・アンド・コピー処理を開始する。VMM#0は、VM#0の業務を停止すると、処理をステップS1701に移行する(ステップS1700)。
ステップS1701において、VMM#0は、一定時間ウェイト状態に移行する。DMAライト処理が完全に停止するまでの待つためである。一定時間経過すると、VMM#0は、処理をステップS1702に移行する。
ステップS1702において、VMM#0は、制御I/F部810に備わるコントロールレジスタ813のライトセレクトビットに「0」または「1」を設定することにより、ダーティ・ページ情報を記録するFIFOを変更する。
例えば、現在選択中のFIFOがFIFO#0の場合、VMM#0は、コントロールレジスタ813のライトセレクトビットに「1」を設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#1に変更する。
同様に、現在選択中のFIFOがFIFO#1の場合、VMM#0は、コントロールレジスタ813のライトセレクトビットに「0」を設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#0に変更する。
ステップS1703において、VMM#0は、制御I/F部810に備わるステータスレジスタ811を読み出す。そして、VMM#0は、現在選択中のFIFOのオーバーフロー情報ビットが「1」に設定されているか否かを判別する。
ステップS1704において、VMM#0は、現在選択中のFIFOのオーバーフロー情報ビットが「1」に設定されている場合(ステップS1704 YES)、VMM#0は、処理をステップS1705に移行する。この場合、VMM#0は、ライブ・マイグレーションを中断、または最初からやり直す。
ステップS1704において、現在選択中のFIFOのオーバーフロー情報ビットが「0」に設定されている場合(ステップS1704 NO)、VMM#0は、処理をステップS1706に移行する。
ステップS1706において、VMM#0は、ステータスレジスタ811の有効データカウントに設定されている数だけデータレジスタ812を読み出し、ダーティ・ページ情報を取得する。
ステップS1707において、VMM#0は、ステップS1706で読み出したダーティ・ページ情報のうち、ダーティ・ページ情報に含まれるSIDがストレージ#0を示すコピー対象ダーティ・ページ情報を抽出する。
ステップS1708において、VMM#0は、ステップS1611と同様に、コピー対象ダーティ・ページ情報に含まれるGPAページを、ページテーブル730にしたがって、HPAに変換する。この変換されたHPAもページを示す。ページの単位は、GPAページと同じである。
ステップS1709において、VMM#0は、制御I/F部810に備わるステータスレジスタ811の有効データカウントビットから、FIFOにデータページ情報があるか否かを判別する。
ステータスレジスタ811の有効データカウントが「0」の場合(ステップS1709 YES)、VMM#0は、FIFOがemptyと判断し、処理をステップS1710に移行する。
ステップS1710において、VMM#0は、ステップS1708で変換されたHPAが示すページの範囲に格納されているデータを、サーバ#0に備わるメモリ620から取得する。そして、VMM#0は、取得したデータを、VM#0の移動先であるVMM#1に転送する。
一方、VMM#1は、VMM#0からデータを受信すると、受信したデータを図15に示したステップS1501の処理で確保したVM領域に格納する。
VMM#1へのデータ転送が完了すると、VMM#0は、処理をステップS1711に移行する。そして、VMM#0は、ストップ・アンド・コピーを終了する(ステップS1711)。
一方、ステップS1709において、ステータスレジスタ811の有効データカウントが「0」でない場合(ステップS1709 NO)、VMM#0は、FIFOがemptyでないと判断し、処理をステップS1712に移行する。
ステップS1712において、VMM#0は、制御I/F部810に備わるコントロールレジスタ813のリードセレクトビットに「0」または「1」を設定することにより、ダーティ・ページ情報を読み出すFIFOを変更する。
例えば、現在選択中のFIFOがFIFO#0の場合、VMM#0は、コントロールレジスタ813のリードセレクトビットに「1」を設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#1に変更する。
同様に、現在選択中のFIFOがFIFO#1の場合、VMM#0は、コントロールレジスタ813のリードセレクトビットに「0」を設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#0に変更する。
ダーティ・ページ情報を読み出すFIFOを変更すると、VMM#0は、処理をステップS1701に移行する。
(パケット検出部820の具体例)
図18は、条件1を用いたパケット検出部820の具体例を示す図である。以下、条件1を用いたパケット検出部820を「パケット検出部1800」という。
パケット検出部1800は、FIFO制御部901と、判定部1810と、を備える。
判定部1810は、ページ記憶部1811と、比較部1812と、を備える。
ページ記憶部1811は、DMAライトパケット850のヘッダから取得したGPAページを記憶するレジスタである。比較部1812は、DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部1811に記憶されているGPAページと、を比較する。
DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部1811に記憶されているGPAページと、が一致しない場合、比較部1812は、FIFOにダーティ・ページ情報を登録する必要があると判断する。この場合、比較部1812は、FIFO制御部901に対して、FIFOにダーティ・ページ情報を登録する必要がある旨を通知する。そして、比較部1812は、DMAライトパケット850のヘッダから取得したGPAページをページ記憶部1811に記憶する。
DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部1811に記憶されているGPAページと、が一致する場合、比較部1812は、FIFOにダーティ・ページ情報を登録する必要がないと判断する。この場合、比較部1812は、FIFO制御部901に対して、FIFOにダーティ・ページ情報を登録する必要がない旨を通知する。
図19は、パケット検出部1800の処理を示すフローチャートである。図19に示す処理は、図12に示したステップS1204〜S1206に対応する処理である。
図12に示したステップS1204に処理が移行すると、パケット検出部1800は、以下の処理を開始する(ステップS1900)。
ステップS1901において、パケット検出部1800は、DMAライトパケットのヘッダからSIDとGPAを取得する。そして、パケット検出部1800は、GPAからGPAページを取得する。
ステップS1902において、パケット検出部1800は、ステップS1901で取得したGPAページと、ページ記憶部1811に記憶されているGPAページと、を比較する。
ステップS1901で取得したGPAページと、ページ記憶部1811に記憶されているGPAページと、が一致する場合(ステップS1902 YES)、パケット検出部1800は、ダーティ・ページ情報をFIFOに登録することなく、処理をステップS1905に移行する。
また、ステップS1901で取得したGPAページと、ページ記憶部1811に記憶されているGPAページと、が一致しない場合(ステップS1902 NO)、パケット検出部1800は、処理をステップS1903に移行する。この場合、パケット検出部1800は、ステップS1901で取得したSIDとGPAページを含むダーティ・ページ情報をFIFOに登録する(ステップS1903)。
ステップS1904において、パケット検出部1800は、ステップS1901で取得したGPAページをページ記憶部1811に記憶する。そして、パケット検出部1800は、処理をステップS1905に移行する。
以上の処理が終了すると、パケット検出部1800は、図12に示したステップS1207から処理を開始する。
(パケット検出部820のその他の具体例)
図20は、条件2を用いたパケット検出部820の具体例を示す図である。以下、条件2を用いたパケット検出部820を「パケット検出部2000」という。
パケット検出部2000は、FIFO制御部901と、判定部2010と、を備える。
判定部2010は、SID記憶部2011と、比較部2012と、を備える。
SID記憶部2011は、ライブ・マイグレーションの対象となるユニットのSIDを記憶するレジスタである。
制御I/F部810のコントロールレジスタ813に所定の値が入力されると、FIFO制御部901は、データレジスタ812に記憶されているSIDを、SID記憶部2011に記憶する。このようにして、SIDは、あらかじめSID記憶部2011に記憶しておくことができる。
比較部2012は、DMAライトパケット850のヘッダから取得したSIDと、SID記憶部2011に記憶されているSIDと、を比較する。
そして、DMAライトパケット850のヘッダから取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致しない場合、比較部2012は、FIFOにダーティ・ページ情報を登録する必要があると判断する。この場合、比較部2012は、FIFO制御部901に対して、FIFOにダーティ・ページ情報を登録する必要がある旨を通知する。そして、比較部2012は、DMAライトパケット850のヘッダから取得したSIDをSID記憶部2011に記憶する。
また、DMAライトパケット850のヘッダから取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致する場合、比較部2012は、FIFOにダーティ・ページ情報を登録する必要がないと判断する。この場合、比較部2012は、FIFO制御部901に対して、FIFOにダーティ・ページ情報を登録する必要がない旨を通知する。
図21は、パケット検出部2000の処理を示すフローチャートである。図21に示す処理は、図12に示したステップS1204〜S1206に対応する処理である。
図12に示したステップS1204に処理が移行すると、パケット検出部2000は、以下の処理を開始する(ステップS2100)。
ステップS2101において、パケット検出部2000は、DMAライトパケットのヘッダからSIDとGPAを取得する。また、パケット検出部2000は、GPAからGPAページを取得する。
ステップS2102において、パケット検出部2000は、ステップS2101で取得したSIDと、SID記憶部2011に記憶されているSIDと、を比較する。
ステップS2101で取得したSIDと、SID記憶部2011に記憶されているSIDと、が異なる場合(ステップS2102 NO)、パケット検出部2000は、ダーティ・ページ情報をFIFOに登録することなく、処理をステップS2104に移行する。
また、ステップS2101で取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致する場合(ステップS2102 YES)、パケット検出部2000は、処理をステップS2103に移行する。この場合、パケット検出部2000は、ステップS2101で取得したSIDとGPAページを含むダーティ・ページ情報をFIFOに登録する(ステップS2103)。そして、パケット検出部2000は、処理をステップS2104に移行する。
以上の処理が終了すると、パケット検出部2000は、図12に示したステップS1207から処理を開始する。
図22は、ライブ・マイグレーション時におけるSID記憶部2011へのSID設定処理を示すフローチャートである。なお、図22に示すステップS2202〜SS2210は、図15に示したステップS1501〜S1509と同様なので、説明は省略する。
ステップS2201において、VMM#0は、ライブ・マイグレーションの指示を受けると、ライブ・マイグレーションによる移動の対象であるVM#0と接続しているデバイス、すなわち、移動対象デバイスのSIDを、SID記憶部2011に記憶する。
VMM#0は、例えば、以下のようにして、移動対象デバイスのSIDを、SID記憶部2011に記憶する。
まず、VMM#0は、制御I/F部810のデータレジスタ812にSIDを設定する。そして、VMM#0は、コントロールレジスタ813に所定の値を入力する。すると、FIFO制御部901は、データレジスタ812に記憶されているSIDを、SID記憶部2011する。
ステップS2201〜S2210の処理が完了すると、VMM#0は、ステップS2201の処理でSID記憶部2011に記憶したSIDをクリアする。この場合、例えば、VMM#0が、コントロールレジスタ813に所定の値を入力すると、FIFO制御部901が、データレジスタ812に記憶されているSIDをクリアするようにすることができる。
ステップS2212において、VMM#0からメモリ・コピーの完了通知を受けると、VMM#1は、VMM#1上でVM#0の業務を開始させる。VMM#1上でVM#0が業務を再開すると、VMM#1は、処理をステップS2213に移行する。そして、VMM#0および#1は、ライブ・マイグレーションを終了する。
(パケット検出部820のその他の具体例)
図23は、条件3を用いたパケット検出部820の具体例を示す図である。以下、条件3を用いたパケット検出部820を「パケット検出部2300」という。
パケット検出部2300を実現する場合、FIFOに登録するダーティ・ページ情報には、SIDと、GPAページと、カウント値と、を含んだダーティ・ページ情報を使用する必要がある。カウント値は、ダーティ・ページ情報に含まれるGPAページから何ページまで連続してアクセスがあったかを示す値である。カウント値を使用することにより、複数ページをまたぐ連続アクセスを、1つのエントリでFIFOに記憶することができる。
パケット検出部2300は、FIFO制御部2310と、判定部2320と、を備える。
FIFO制御部2310は、図9で説明した機能に加えて、判定部2310の指示にしたがって、最後にFIFOに登録されたダーティ・ページ情報に含まれるカウント値を、1だけインクリメントした値に更新する。
判定部2320は、ページ記憶部2321と、比較部2322と、比較部2323と、を備える。
ページ記憶部2321は、DMAライトパケット850のヘッダから取得したGPAページを記憶するレジスタである。
比較部2322は、DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部2321に記憶されているGPAページと、を比較する。
DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部2321に記憶されているGPAページと、が一致する場合、比較部2322は、FIFOにダーティ・ページ情報を登録する必要がないと判断する。この場合、比較部2322は、FIFO制御部2310に対して、FIFOにダーティ・ページ情報を登録する必要がない旨を通知する。
また、DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部2321に記憶されているGPAページと、が一致しない場合、比較部2322は、その旨を比較部2323に通知する。
比較部2323は、DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部2321に記憶されているGPAページを1ページだけインクリメントした値と、を比較する。
DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部2321に記憶されているGPAページに1ページだけインクリメントした値と、が一致する場合、比較部2323は、FIFOに登録したダーティ・ページ情報の更新が必要と判断する。この場合の更新とは、最後にFIFOに登録したダーティ・ページ情報に含まれるカウント値を1だけインクリメントすることである。比較部2323は、FIFOに登録したダーティ・ページ情報の更新をFIFO制御部2310に指示する。そして、比較部2323は、DMAライトパケット850のヘッダから取得したGPAページをページ記憶部2321に記憶する。
また、DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部2321に記憶されているGPAページを1ページだけインクリメントした値と、が一致しない場合、比較部2323は、FIFOにダーティ・ページ情報を登録する必要があると判断する。ただし、比較部2322から、DMAライトパケット850のヘッダから取得したGPAページと、ページ記憶部2321に記憶されているGPAページと、が一致しない旨の通知を受けた場合に限る。この場合、比較部2323は、FIFO制御部2310に対して、FIFOにダーティ・ページ情報を登録する必要がある旨を通知する。また、比較部2323は、DMAライトパケット850のヘッダから取得したGPAページをページ記憶部2321に記憶する。
図24は、パケット検出部2300の処理を示すフローチャートである。図24に示す処理は、図12に示したステップS1204〜S1206に対応する処理である。
図12に示したステップS1204に処理が移行すると、パケット検出部2300は、以下の処理を開始する(ステップS2400)。
ステップS2401において、パケット検出部2300は、DMAライトパケットのヘッダからSIDとGPAを取得する。そして、パケット検出部2300は、GPAからGPAページを取得する。
ステップS2402において、パケット検出部2300は、ステップS2401で取得したGPAページと、ページ記憶部2321に記憶されているGPAページと、を比較する。
ステップS2401で取得したGPAページと、ページ記憶部2321に記憶されているGPAページと、が一致する場合(ステップS2402 YES)、パケット検出部2300は、ダーティ・ページ情報をFIFOに登録することなく、処理をステップS2407に移行する。
また、ステップS2401で取得したGPAページと、ページ記憶部2321に記憶されているGPAページと、が一致しない場合(ステップS2402 NO)、パケット検出部2300は、処理をステップS2403に移行する。この場合、パケット検出部2300は、パケット検出部2300は、ステップS2401で取得したGPAページと、ページ記憶部2321に記憶されているGPAページを1ページだけインクリメントした値と、を比較する。
ステップS2401で取得したGPAページと、ページ記憶部2321に記憶されているGPAページを1ページだけインクリメントした値と、が一致する場合(ステップS2403 YES)、パケット検出部2300は、処理をステップS2404に移行する。この場合、パケット検出部2300は、FIFOに最後に登録されたダーティ・ページ情報に含まれるカウント値を1だけインクリメントする(ステップS2404)。そして、パケット検出部2300は、処理をステップS2406に移行する。
また、ステップS2401で取得したGPAページと、ページ記憶部2321に記憶されているGPAページを1ページだけインクリメントした値と、が一致しない場合(ステップS2403 NO)、パケット検出部2300は、処理をステップS2405に移行する。この場合、パケット検出部2300は、ステップS2401で取得したSIDおよびGPAページと、初期値が0に設定されたカウント値と、を含むダーティ・ページ情報をFIFOに登録する(ステップS2405)。そして、パケット検出部2300は、処理をステップS2406に移行する。
ステップS2406において、パケット検出部2300は、ステップS2401で取得したGPAページをページ記憶部2321に記憶する。そして、パケット検出部2300は、処理をステップS2407に移行する。
以上の処理が終了すると、パケット検出部2300は、図12に示したステップS1207から処理を開始する。
(パケット検出部820のその他の具体例)
図25は、条件4を用いたパケット検出部820の具体例を示す図である。以下、条件4を用いたパケット検出部820を「パケット検出部2500」という。図25には、説明の都合で、FIFO#NにGPAページのみを記載しているが、図25に示す構成にFIFO#Nを限定する趣旨ではない。
パケット検出部2500は、FIFO制御部901と、判定部2510と、を備える。
判定部2510は、キャッシュメモリ2511と、キャッシュ制御回路2512と、を備える。
キャッシュメモリ2511は、DMAライトパケット850のヘッダから取得したGPAページを記憶するキャッシュメモリである。キャッシュメモリ2511には、複数のGPAページを格納することができる。なお、図25に示すキャッシュメモリ2511には、3つのGPAページX、YおよびZを記憶するキャッシュメモリを示しているが、図25に示す構成にキャッシュメモリ2511の構成を限定する趣旨ではない。
キャッシュ制御回路2512は、キャッシュメモリ2511を参照し、DMAライトパケット850のヘッダから取得したGPAページと一致するGPAページを検索する。
DMAライトパケット850のヘッダから取得したGPAページと一致するGPAページを検出すると、キャッシュ制御回路2512は、FIFOにダーティ・ページ情報を登録する必要がないと判断する。この場合、キャッシュ制御回路2512は、FIFO制御部901に対して、FIFOにダーティ・ページ情報を登録する必要がない旨を通知する。
また、DMAライトパケット850のヘッダから取得したGPAページと一致するGPAページを検出しない場合、キャッシュ制御回路2512は、FIFOにダーティ・ページ情報を登録する必要があると判断する。この場合、キャッシュ制御回路2512は、FIFO制御部901に対して、FIFOにダーティ・ページ情報を登録する必要がある旨を通知する。そして、キャッシュメモリ2511に空きエントリがあれば、キャッシュ制御回路2512は、空きエントリに、DMAライトパケット850のヘッダから取得したGPAページを記憶する。また、キャッシュメモリ2511に空きエントリがなければ、キャッシュ制御回路2512は、参照されていない期間が最も長いエントリに、DMAライトパケット850のヘッダから取得したGPAページを記憶する。
図26は、パケット検出部2500の処理を示すフローチャートである。図26に示す処理は、図12に示したステップS1204〜S1206に対応する処理である。
図12に示したステップS1204に処理が移行すると、パケット検出部2500は、以下の処理を開始する(ステップS2600)。
ステップS2601において、パケット検出部2500は、DMAライトパケットのヘッダからSIDとGPAを取得する。そして、パケット検出部2500は、GPAからGPAページを取得する。
ステップS2602において、パケット検出部2500は、キャッシュメモリ2511を参照し、ステップS2601で取得したGPAページと一致するGPAページを検索する。
ステップS2601で取得したGPAページと一致するGPAページを検出した場合(ステップS2602 YES)、パケット検出部2500は、ダーティ・ページ情報をFIFOに登録することなく、処理をステップS2607に移行する。
また、ステップS2601で取得したGPAページと一致するGPAページを検出しない場合(ステップS2602 NO)、パケット検出部2500は、処理をステップS2603に移行する。この場合、パケット検出部2500は、キャッシュメモリ2511に空きエントリがあるか否かを判別する(ステップS2603)。
キャッシュメモリ2511に空きエントリがある場合(ステップS2603 YES)、パケット検出部2500は、ステップS2601で取得したGPAページを、空きエントリに記憶する(ステップS2604)。そして、パケット検出部2500は、処理をステップS2606に移行する。
キャッシュメモリ2511に空きエントリがない場合(ステップS2603 NO)、パケット検出部2500は、処理をステップS2605に移行する。この場合、パケット検出部2500は、ステップS2601で取得したGPAページを、キャッシュメモリ2511に含まれるエントリのうち、参照されていない期間が最も長いエントリに記憶する(ステップS2604)。そして、パケット検出部2500は、処理をステップS2606に移行する。
ステップS2606において、パケット検出部2500は、ダーティ・ページ情報をFIFOに登録する。そして、パケット検出部2500は、処理をステップS2607に移行する。
以上の処理が終了すると、パケット検出部2500は、図12に示したステップS1207から処理を開始する。
(パケット検出部820のその他の具体例)
図27は、条件5を用いたパケット検出部820の具体例を示す図である。以下、条件5を用いたパケット検出部820を「パケット検出部2700」という。図27には、説明の都合で、FIFO#NにはSIDの記載を省略しているが、図27に示す構成にFIFO#Nを限定する趣旨ではない。
パケット検出部2700を実現する場合、FIFOに登録するダーティ・ページ情報には、SIDと、GPAページと、拡張サイズと、を含むダーティ・ページ情報を使用する。この拡張サイズは、ダーティ・ページ情報に含まれるGPAページのページサイズの拡張に使用する情報である。GPAページのページサイズを拡張することで、1つのダーティ・ページ情報に、より広い範囲の、変更されたメモリ領域を含ませることができる。したがって、図7に示したメモリ620の管理などのメモリシステムに使用するページサイズを拡張するものではない。拡張サイズの指定には、「0」、「1」、「2」、・・・などの数値を使用することができる。この場合、「0」は、ダーティ・ページ情報の含まれるGPAページのページサイズを4KBに拡張することを示している。同様に、「1」は、ダーティ・ページ情報に含まれるGPAページのページサイズを8KB、「2」は、ダーティ・ページ情報に含まれるGPAページのページサイズを16KBに拡張することを示している。
パケット検出部2700は、FIFO制御部2710と、判定部2720と、を備える。
FIFO制御部2710は、図9で説明した機能に加えて、判定部2720の指示にしたがって、FIFOに登録されているダーティ・ページ情報に含まれる拡張サイズを変更する。
判定部2720は、キャッシュメモリ2721と、キャッシュ制御回路2722と、を備える。
キャッシュメモリ2721は、DMAライトパケット850のヘッダから取得したGPAページを、その拡張サイズとともに記憶するキャッシュメモリである。キャッシュメモリ2721には、複数のGPAページを格納することができる。例えば、図27には、GPAページ「X」が拡張サイズの設定値「2」とともにキャッシュメモリ2721に記憶されている。これは、GPAページ「X」のページサイズを8KBに拡張することを示している。
なお、図27に示すキャッシュメモリ2721には、3つのGPAページX、YおよびZを記憶するキャッシュメモリを示しているが、図27に示す構成にキャッシュメモリ2721の構成を限定する趣旨ではない。
キャッシュ制御回路2722は、キャッシュメモリ2721を参照する。そして、キャッシュ制御回路2722は、DMAライトパケット850のヘッダから取得したGPAページの下位nビットをマスクした値と、キャッシュメモリ2721に記憶されているGPAページの下位nビットをマスクした値と、を比較する。そして、キャッシュ制御回路2722は、DMAライトパケット850のヘッダから取得したGPAページの下位nビットをマスクした値と、キャッシュメモリ2721に記憶されているGPAページの下位nビットをマスクした値と、が一致したGPAページを検出する。このとき、キャッシュ制御回路2722は、DMAライトパケット850のヘッダから取得したGPAページがキャッシュメモリ2721にヒットしたと判断する。nを大きくすると、キャッシュメモリ2721にヒットしたと判断されるGPAページの範囲が大きくなる。なお、nは1以上の整数とする。nは、拡張サイズとの関係を考慮して決定することができる。例えば、4KB、8KBおよび16KBを拡張サイズに使用する場合、nを「2」などとすることができる。
DMAライトパケット850のヘッダから取得したGPAページがキャッシュメモリ2721にヒットすると、キャッシュ制御回路2722は、DMAライトパケット850のヘッダから取得したGPAページと、キャッシュメモリ2721にヒットしたGPAページと、の差を求める。求めた差が、キャッシュメモリ2721にヒットしたGPAページの拡張サイズ以上に大きい場合、キャッシュ制御回路2722は、キャッシュメモリ2721にヒットしたGPAページの拡張サイズをより大きいページサイズに更新する。同様に、キャッシュ制御回路2722は、FIFOに記憶されているダーティ・ページ情報であって、キャッシュメモリ2721にヒットしたGPAページを含むダーティ・ページ情報に含まれる拡張サイズも更新する。
また、DMAライトパケット850のヘッダから取得したGPAページがキャッシュメモリ2721にヒットしない場合、キャッシュ制御回路2722は、DMAライトパケット850のヘッダから取得したGPAページをキャッシュメモリ2721に記憶する。このとき、キャッシュ制御回路2722は、DMAライトパケット850のヘッダから取得したGPAページと、拡張サイズと、を関連付けて記憶する。本実施例では、拡張サイズの初期値として4KBを用いるので、拡張サイズの設定値として「0」が設定される。
図28は、パケット検出部2700の処理を示すフローチャートである。図28に示す処理は、図12に示したステップS1204〜S1206に対応する処理である。
図12に示したステップS1204に処理が移行すると、パケット検出部2700は、以下の処理を開始する(ステップS2800)。
ステップS2801において、パケット検出部2700は、DMAライトパケット850のヘッダからSIDとGPAを取得する。そして、パケット検出部2700は、GPAからGPAページを取得する。
ステップS2802において、パケット検出部2700は、ステップS2801で取得したGPAページの下位nビットをマスクした値と、キャッシュメモリ2721に記憶されているGPAページの下位nビットをマスクした値と、を比較する。そして、パケット検出部2700は、ステップS2801で取得したGPAページの下位nビットをマスクした値と、キャッシュメモリ2721に記憶されているGPAページの下位nビットをマスクした値と、が一致したGPAページを検出する。このとき、パケット検出部2700は、ステップS2801で取得したGPAページがキャッシュメモリ2721にヒットしたと判断する。
ステップS2801で取得したGPAページがキャッシュメモリ2721にヒットした場合(ステップS2802 YES)、パケット検出部2700は、処理をステップS2803に移行する。この場合、パケット検出部2700は、ステップS2801で取得したGPAページと、キャッシュメモリ2721にヒットしたGPAページと、の差を算出する(ステップS2803)。
ステップS2801で取得したGPAページと、キャッシュメモリ2721にヒットしたGPAページと、の差が、キャッシュメモリ2721にヒットしたGPAページの拡張サイズより小さい場合(ステップS2804 YES)、パケット検出部2700は、処理をステップS2811に移行する。
ステップS2801で取得したGPAページと、キャッシュメモリ2721にヒットしたGPAページと、の差が、キャッシュメモリ2721にヒットしたGPAページの拡張サイズ以上の場合(ステップS2804 NO)、パケット検出部2700は、処理をステップS2805に移行する。この場合、パケット検出部2700は、ヒットしたGPAページと関連付けられてキャッシュメモリ2721に記憶されている拡張サイズを、ステップS2803で算出した差より大きい拡張サイズに更新する(ステップS2805)。本実施例では、4KB、8KB、16KB、・・・を拡張サイズに使用する。したがって、例えば、ステップS2803で算出した差が7KBの場合、拡張サイズを8KBに更新する。
ステップS2806において、パケット検出部2700は、FIFOに記憶されている、キャッシュメモリ2721にヒットしたGPAページを含むダーティ・ページ情報に含まれる拡張サイズを、ステップS2805で更新した拡張サイズと同じ拡張サイズに更新する。そして、パケット検出部2700は、処理をステップS2811に移行する。
一方、ステップS2801で取得したGPAページがキャッシュメモリ2721にヒットしない場合(ステップS2802 NO)、パケット検出部2700は、処理をステップS2807に移行する。この場合、パケット検出部2700は、キャッシュメモリ2721に空きエントリがあるか否かを判別する(ステップS2807)。
キャッシュメモリ2721に空きエントリがある場合(ステップS2807 YES)、パケット検出部2700は、ステップS2801で取得したGPAページを空きエントリに記憶する(ステップS2808)。このとき、パケット検出部2700は、ステップS2801で取得したGPAページと、初期値として4KBに設定された拡張サイズと、を関連付けて記憶する。そして、パケット検出部2700は、処理をステップS2810に移行する。
また、キャッシュメモリ2721に空きエントリがない場合(ステップS2807 NO)、パケット検出部2700は、処理をステップS2809に移行する。この場合、パケット検出部2700は、ステップS2801で取得したGPAページを、キャッシュメモリ2721に含まれるエントリのうち、参照されていない期間が最も長いエントリに記憶する(ステップS2809)。この場合も、パケット検出部2700は、ステップS2801で取得したGPAページと、初期値として4KBに設定された拡張サイズと、を関連付けて記憶する。そして、パケット検出部2700は、処理をステップS2810に移行する。
ステップS2810において、パケット検出部2700は、ダーティ・ページ情報をFIFOに登録する。このとき、パケット検出部2700は、ダーティ・ページ情報に含まれる拡張サイズに、初期値として4KBを設定する。そして、パケット検出部2700は、処理をステップS2811に移行する。
以上の処理が終了すると、パケット検出部2700は、図12に示したステップS1207から処理を開始する。
(パケット検出部820のその他の具体例)
図29は、条件1および2を用いたパケット検出部820の具体例を示す図である。以下、条件1および2を用いたパケット検出部820を「パケット検出部2900」という。
パケット検出部2900は、FIFO制御部2910と、判定部2920と、を備える。また、判定部2920は、図18に示した判定部1810と、図20に示した判定部2010と、を備える。
FIFO制御部2910は、判定部2010から、DMAライトパケット850のヘッダから取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致しない旨の通知を受ける。この場合、FIFO制御部2910は、図18で説明したように、判定部1810の判定結果にしたがって、FIFOにダーティ・ページ情報を登録する。
図30は、パケット検出部2900の処理を示すフローチャートである。図30に示す処理は図12に示したステップS1204〜S1206に対応する。
図12に示したステップS1204に処理が移行すると、パケット検出部2900は、以下の処理を開始する(ステップS3000)。
ステップS3001において、パケット検出部2900は、DMAライトパケットのヘッダからSIDとGPAを取得する。そして、パケット検出部2900は、GPAからGPAページを取得する。
ステップS3002において、パケット検出部2900は、ステップS3001で取得したSIDと、SID記憶部2011に記憶されているSIDと、を比較する。
ステップS3001で取得したSIDと、SID記憶部2011に記憶されているSIDと、が異なる場合(ステップS3002 NO)、パケット検出部2900は、ダーティ・ページ情報をFIFOに登録することなく、処理をステップS3006に移行する。
また、ステップS3001で取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致する場合(ステップS3002 YES)、パケット検出部2900は、処理をステップS3003に移行する。ステップS3003〜S3006の処理は、図19に示したステップS1902〜S1905と同じなので説明を省略する。
以上の処理が終了すると、パケット検出部2900は、図12に示したステップS1207から処理を開始する。
(パケット検出部820のその他の具体例)
図31は、条件2および3を用いたパケット検出部820の具体例を示す図である。以下、条件2および3を用いたパケット検出部820を「パケット検出部3100」という。
パケット検出部3100は、FIFO制御部3110と、判定部3120と、を備える。また、判定部3120は、図20に示した判定部2010と、図23に示した判定部2320と、を備える。
FIFO制御部3110は、判定部2010から、DMAライトパケット850のヘッダから取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致しない旨の通知を受ける。この場合、FIFO制御部3110は、図23で説明したように、判定部2320の判定結果にしたがって、FIFOにダーティ・ページ情報を登録する。
図32は、パケット検出部3100の処理を示すフローチャートである。図32に示す処理は図12に示したステップS1204〜S1206に対応する。
図12に示したステップS1204に処理が移行すると、パケット検出部3100は、以下の処理を開始する(ステップS3200)。
ステップS3201において、パケット検出部3100は、DMAライトパケットのヘッダからSIDとGPAを取得する。そして、パケット検出部3100は、GPAからGPAページを取得する。
ステップS3202において、パケット検出部3100は、ステップS3201で取得したSIDと、SID記憶部2011に記憶されているSIDと、を比較する。
ステップS3201で取得したSIDと、SID記憶部2011に記憶されているSIDと、が異なる場合(ステップS3202 NO)、パケット検出部3100は、ダーティ・ページ情報をFIFOに登録することなく、処理をステップS3208に移行する。
また、ステップS3201で取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致する場合(ステップS3202 YES)、パケット検出部3100は、処理をステップS3203に移行する。ステップS3203〜S3208の処理は、図24に示したステップS2402〜S2407と同じなので説明を省略する。
以上の処理が終了すると、パケット検出部3100は、図12に示したステップS1207から処理を開始する。
(パケット検出部820のその他の具体例)
図33は、条件2および4を用いたパケット検出部820の具体例を示す図である。以下、条件2および4を用いたパケット検出部820を「パケット検出部3300」という。
パケット検出部3300は、FIFO制御部3310と、判定部3320と、を備える。また、判定部3320は、図20に示した判定部2010と、図25に示した判定部2510と、を備える。
FIFO制御部3310は、判定部2010から、DMAライトパケット850のヘッダから取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致しない旨の通知を受ける。この場合、FIFO制御部3310は、図25で説明したように、判定部2510の判定結果にしたがって、FIFOにダーティ・ページ情報を登録する。
図34は、パケット検出部3300の処理を示すフローチャートである。図34に示す処理は図12に示したステップS1204〜S1206に対応する。
図12に示したステップS1204に処理が移行すると、パケット検出部3300は、以下の処理を開始する(ステップS3400)。
ステップS3401において、パケット検出部3300は、DMAライトパケットのヘッダからSIDとGPAを取得する。そして、パケット検出部3300は、GPAからGPAページを取得する。
ステップS3402において、パケット検出部3300は、ステップS3401で取得したSIDと、SID記憶部2011に記憶されているSIDと、を比較する。
ステップS3401で取得したSIDと、SID記憶部2011に記憶されているSIDと、が異なる場合(ステップS3402 NO)、パケット検出部3300は、ダーティ・ページ情報をFIFOに登録することなく、処理をステップS3408に移行する。
また、ステップS3401で取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致する場合(ステップS3402 YES)、パケット検出部3300は、処理をステップS3403に移行する。ステップS3403〜S3408の処理は、図26に示したステップS2602〜S2607と同じなので説明を省略する。
以上の処理が終了すると、パケット検出部3300は、図12に示したステップS1207から処理を開始する。
(パケット検出部820のその他の具体例)
図35は、条件2および5を用いたパケット検出部820の具体例を示す図である。以下、条件2および5を用いたパケット検出部820を「パケット検出部3500」という。図35には、説明を簡単にするために、FIFO#NにはSIDの記載を省略しているが、図35に示す構成にFIFO#Nを限定する趣旨ではない。
パケット検出部3500は、FIFO制御部3510と、判定部3520と、を備える。また、判定部3520は、図20に示した判定部2010と、図27に示した判定部2720と、を備える。
FIFO制御部3510は、判定部2010から、DMAライトパケット850のヘッダから取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致しない旨の通知を受ける。この場合、FIFO制御部3510は、図27で説明したように、判定部2720の判定結果にしたがって、FIFOにダーティ・ページ情報を登録する。
図36は、パケット検出部3500の処理を示すフローチャートである。図36に示す処理は図12に示したステップS1204〜S1206に対応する。
図12に示したステップS1204に処理が移行すると、パケット検出部3500は、以下の処理を開始する(ステップS3600)。
ステップS3601において、パケット検出部3500は、DMAライトパケットのヘッダからSIDとGPAを取得する。そして、パケット検出部3500は、GPAからGPAページを取得する。
ステップS3602において、パケット検出部3500は、ステップS3601で取得したSIDと、SID記憶部2011に記憶されているSIDと、を比較する。
ステップS3601で取得したSIDと、SID記憶部2011に記憶されているSIDと、が異なる場合(ステップS3602 NO)、パケット検出部3500は、ダーティ・ページ情報をFIFOに登録することなく、処理をステップS3612に移行する。
また、ステップS3601で取得したSIDと、SID記憶部2011に記憶されているSIDと、が一致する場合(ステップS3602 YES)、パケット検出部3500は、処理をステップS3603に移行する。ステップS3603〜S3612の処理は、図28に示したステップS2802〜S2611と同じなので説明を省略する。
以上の処理が終了すると、パケット検出部3500は、図12に示したステップS1207から処理を開始する。
なお、条件3を用いたパケット検出部820、例えば、パケット検出部2300やパケット検出部3100を実現する場合、FIFOには、図37に示す構成のFIFOを用いることができる。図37に示すFIFOは、図10に示したFIFOに含まれる各エントリに、カウント値を記憶する8ビットの領域を追加したものである。ただし、図37に示すFIFOの構成は、単なる一例であって、FIFOの構成を図37に示す構成に限定する趣旨ではない。
また、条件5を用いたパケット検出部820、例えば、パケット検出部2700やパケット検出部3500を実現する場合、FIFOには、図38に示す構成のFIFOを用いることができる。図38に示すFIFOは、図10に示したFIFOに含まれる各エントリに、拡張サイズを記憶する4ビットの領域を追加したものである。ただし、図38に示すFIFOの構成は、単なる一例であって、FIFOの構成を図38に示す構成に限定する趣旨ではない。
以上に説明したように、ダーティ・ページ管理ユニット651は、IOアダプタ640、641および642からメモリ620に転送されるDMAパケットがPCIeスイッチ650を通過すると、そのDMAパケットをパケット検出部820によって検出する。
そして、検出したDMAパケットがDMAライトパケットである場合、ダーティ・ページ管理ユニット651は、DMAパケットのヘッダからゲスト物理メモリとSIDを取得し、ダーティ・ページ情報としてFIFO#0または#1に登録する。
また、ダーティ・ページ管理ユニット651は、CPU610または611、すなわちCPU610または611が実現するVMMとの制御I/F部810を備え、VMMからの要求に応じてFIFO#0または#1に登録されているダーティ・ページ情報を出力する。
その結果、情報処理装置600で動作しているVMMは、ダーティ・ページ情報から、IOMMU631を利用したDMAライトによって追加、変更または更新等されたメモリ620上のデータを取得することが可能となる。
そして、DMAライトによって追加、変更または更新等されたメモリ620上のデータを取得することが可能となったことにより、図15〜図17に示したプレ・コピーおよびストップ・アンド・コピーが可能となる。その結果、IOMMUを使用する場合であってもライブ・マイグレーションを実行することが可能となる。
また、情報処理装置600は、ダーティ・ページ記憶部652として、FIFO#0および#1の2つのFIFOを備える。そして、一方のFIFOが書込み対象の場合、他方のFIFOを読み出し対象とすることにより、1つのFIFOに対して読み込み処理と書込み処理が競合することを回避することが可能となる。その結果、FIFOへのダーティ・ページ情報の登録処理と、FIFOからのダーティ・ページ情報の読み出し処理と、を効率的に行なうことができる。
また、パケット検出部1800は、最後にFIFOに記憶した、ダーティ・ページ情報に含まれるGPAページを、ページ記憶部1811に保持する。そして、パケット検出部1800は、ページ記憶部1811に記憶されているGPAページと一致しないGPAページをDMAライトパケット850から取得した場合にだけ、FIFOにダーティ・ページ情報を記憶する。
これにより、パケット検出部1800は、DMAライトが同一ページに対して連続して行われている間の、FIFOの消費を抑えることができる。
例えば、大容量データの転送では、複数のDMAアクセスが連続アドレスに対して行われる。この場合、一般に、DMAアクセスの範囲は、ページサイズより小さいので、同一ページに対するDMAアクセスが連続して発生することになる。このような場合であっても、パケット検出部1800は、FIFOの消費量を抑えることが可能となる。
また、パケット検出部2000は、ライブ・マイグレーションの対象となるユニットのSIDをSID記憶部2011に保持する。そして、パケット検出部2000は、SID記憶部2011に記憶されているSIDと一致するSIDが設定されたDMAパケットを検出した場合だけ、FIFOにダーティ・ページ情報を記憶する。
これにより、パケット検出部2000は、複数のユニットから同時にDMAアクセスが行われた場合でも、ライブ・マイグレーションの対象となるユニットからのDMAアクセスだけを抽出することができる。その結果、パケット検出部2000は、ライブ・マイグレーションの対象となるユニットからのDMAアクセスについてのダーティ・ページ情報だけをFIFOに記憶することができる。この場合、パケット検出部2000は、ライブ・マイグレーションの対象以外のユニットからのDMAアクセスがあった場合には、FIFOが消費されないことになる。
また、パケット検出部2300は、SIDと、GPAページと、そのGPAページから何ページDMAアクセスが連続して行われたかを示すカウント値と、を含むダーティ・ページ情報をFIFOに記憶する。
そして、パケット検出部2300は、最後にFIFOに記憶されたダーティ・ページ情報に含まれるGPAページにカウント値を加えたページの次のページへのDMAアクセスを検出する。この場合、パケット検出部2300は、新たなダーティ・ページ情報をFIFOに記憶することはせずに、ダーティ・ページ情報に含まれるカウント値をインクリメントする。
これにより、パケット検出部2300は、DMAライトが複数のページ境界をまたいで行われる連続アクセスの場合でも、FIFOの消費を抑えることができる。
例えば、I/Oアダプタに割当てられるメモリ上のDMA空間は、一般に、連続した複数のページに割り当てられる。このようなDMA空間に対して複数のページ境界をまたいで連続アクセスが行われる場合であっても、パケット検出部2300は、FIFOの消費量を抑えることが可能となる。
また、パケット検出部2500は、FIFOに記憶した複数のダーティ・ページ情報それぞれに含まれるGPAページを、キャッシュメモリ2511に保持する。そして、パケット検出部2500は、キャッシュメモリ2511に記憶されているいずれのGPAページとも一致しないGPAページを、DMAライトパケット850から取得した場合にだけ、FIFOにダーティ・ページ情報を記憶する。
これにより、パケット検出部2500は、複数のI/Oアダプタを介して、複数のDMAアクセスが行われる場合でも、それぞれのDMAアクセスについて、DMAライトが同一ページに連続して行われている間の、FIFOの消費を抑えることができる。
DMAアクセスには局所性がある。特にGPGPU(General Purpose computing on Graphics Processing Units)などの演算装置によるメモリ転送では、プログラムの性質により局所性が顕著になる場合が多い。GPGPUなど複数のユニットが、各ユニットと接続するI/Oアダプタを介してDMAアクセスを行う場合でも、パケット検出部2500は、それぞれのDMAアクセスについて、DMAライトが同一ページに連続して行われている間の、FIFOの消費を抑えられる。
また、DMAライトパケット850から取得したGPAページが、キャッシュメモリ2721に記憶されているGPAページと一定範囲内にある場合、パケット検出部2700は、ダーティ・ページ情報をFIFOに記憶しない。
ただし、パケット検出部2700は、DMAライトパケット850から取得したGPAページと、キャッシュメモリ2721に記憶されているGPAページと、の差が、キャッシュメモリ2721に記憶されているGPAページの拡張サイズ以上の場合を検出する。この場合、パケット検出部2700は、キャッシュメモリ2721に記憶されているGPAページの拡張サイズを、DMAライトパケット850から取得したGPAページが含まれるサイズに更新する。そして、この拡張サイズの更新を、パケット検出部2700は、FIFOに記憶されているダーティ・ページ情報にも反映する。
このように、パケット検出部2700は、DMAライトパケット850から取得したGPAページが、FIFOに記憶したダーティ・ページ情報に含まれるGPAページと、一定範囲内にある場合には、ダーティ・ページ情報をFIFOに記憶しない。その結果、パケット検出部2700は、FIFOに記憶しているダーティ・ページ情報に含まれるGPAページを含む一定範囲内でDMAライトが行われる場合には、FIFOの消費を抑えることができる。
また、DMAライトパケット850から取得したGPAページと、キャッシュメモリ2721に記憶されているGPAページと、の差に応じて、拡張サイズが更新されるので、GPGPUなどアクセスパターンが不規則なDMAアクセスでも、FIFOの消費を抑える。
また、パケット検出部2900は、ライブ・マイグレーションの対象となるユニットからのDMAアクセスについてのダーティ・ページ情報だけをFIFOへの記憶の対象とする。そして、パケット検出部2900は、ページ記憶部1811に記憶されているGPAページと一致しないGPAページをDMAライトパケット850から取得した場合にだけ、FIFOにダーティ・ページ情報を記憶する。
これにより、ライブ・マイグレーションの対象となるユニット以外のユニットからのDMAライトが行われる場合、パケット検出部2900は、FIFOの消費を抑えることができる。また、ライブ・マイグレーションの対象となるユニットからのDMAライトが、同一ページに対して連続して行われない間、パケット検出部2900は、FIFOの消費を抑えることができる。
また、パケット検出部3100は、ライブ・マイグレーションの対象となるユニットからのDMAアクセスについてのダーティ・ページ情報だけをFIFOへの記憶の対象とする。ただし、パケット検出部3100は、最後にFIFOに記憶されたダーティ・ページ情報に含まれるGPAページにカウント値を加えたページの次のページへのDMAアクセスを検出する。このとき、パケット検出部3100は、新たなダーティ・ページ情報をFIFOに記憶することはせずに、ダーティ・ページ情報に含まれるカウント値をインクリメントする。
これにより、ライブ・マイグレーションの対象となるユニット以外のユニットからのDMAライトが行われる場合、パケット検出部3100は、FIFOの消費を抑えることができる。また、ライブ・マイグレーションの対象となるユニットからのDMAライトが複数のページ境界をまたいで行われる連続アクセスの場合、パケット検出部3100は、FIFOの消費を抑えることができる。
また、パケット検出部3300は、ライブ・マイグレーションの対象となるユニットからのDMAアクセスについてのダーティ・ページ情報だけをFIFOへの記憶の対象とする。そして、パケット検出部3300は、キャッシュメモリ2511に記憶されているいずれのGPAページとも一致しないGPAページを、DMAライトパケット850から取得した場合にだけ、FIFOにダーティ・ページ情報を記憶する。
これにより、ライブ・マイグレーションの対象となるユニット以外のユニットからのDMAライトが行われる場合、パケット検出部3300は、FIFOの消費を抑えることができる。また、ライブ・マイグレーションの対象となる複数のユニットそれぞれから、複数のDMAアクセスが行われる場合でも、それぞれのDMAアクセスについて、DMAライトが同一ページに連続して行われている間、パケット検出部3300は、FIFOの消費を抑える。
また、パケット検出部3500は、ライブ・マイグレーションの対象となるユニットからのDMAアクセスについてのダーティ・ページ情報だけをFIFOへの記憶の対象とする。ただし、DMAライトパケット850から取得したGPAページが、キャッシュメモリ2721に記憶されているGPAページと一定範囲内にある場合、パケット検出部3500は、ダーティ・ページ情報をFIFOに記憶しない。
これにより、ライブ・マイグレーションの対象となるユニット以外のユニットからのDMAライトが行われる場合、パケット検出部3500は、FIFOの消費を抑えることができる。また、ライブ・マイグレーションの対象となるユニットからのDMAライトが、FIFOに記憶しているダーティ・ページ情報に含まれるGPAページを含む一定範囲内で行われる場合、パケット検出部3500は、FIFOの消費を抑えることができる。
以上に説明したように、本実施例に係るパケット検出部820を使用すると、情報処理装置600は、IOMMUを使用する場合であっても、少ないハードウェア資源でライブ・マイグレーションを実行することが可能となる。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ハードウェア資源を管理することにより、1以上の仮想機械を実現する仮想機械実現手段と、
前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なうデータ転送手段と、
前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出する検出手段と、
検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を第1記憶部に記憶する登録手段と、
前記第1記憶部に記憶される更新情報を出力する出力手段と、
を備えることを特徴とする情報処理装置。
(付記2)
検出したデータにより変更される前記第1のメモリ領域と、最後に変更された前記第1のメモリ領域を記憶する第2記憶部に記憶した前記第1のメモリ領域と、が異なる場合、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記1に記載の情報処理装置。
(付記3)
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合、前記更新情報を生成して該更新情報を前記第1記憶部に記憶する、
ことを特徴とする付記1に記載の情報処理装置。
(付記4)
前記登録手段は、前記検出手段により検出したデータにより変更される前記第1のメモリ領域を含むページと、前記第2記憶部に記憶した前記第1のメモリ領域を含むページの次のページと、が異なる場合、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記2に記載の情報処理装置。
(付記5)
前記更新情報は、前記検出手段により検出したデータにより変更された前記第1のメモリ領域のページ数を計数した計数情報を含み、
前記登録手段は、前記検出手段により検出したデータにより変更される前記第1のメモリ領域を含むページと、前記第2域記憶部に記憶した前記第1のメモリ領域を含むページの次のページと、が同一の場合、前記更新情報に含まれる計数情報が示す計数値に1を加算するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記2に記載の情報処理装置。
(付記6)
前記登録手段は、過去に変更された複数の前記第1のメモリ領域を前記第2記憶部に記憶し、前記検出手段により検出したデータにより変更される前記第1のメモリ領域が、前記第2記憶部に記憶した前記第1のメモリ領域のいずれかとも異なる場合に、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記2に記載の情報処理装置。
(付記7)
検出したデータにより変更される前記第1のメモリ領域と一定範囲内の前記第1のメモリ領域が、前記第2記憶部に含まれない場合、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記6に記載の情報処理装置。
(付記8)
前記更新情報は、変更された前記第1のメモリ領域を含むページのサイズを拡張する拡張情報を含み、
検出したデータにより変更される前記第1のメモリ領域と一定範囲内の前記第1のメモリ領域が前記第2記憶部に含まれる場合、該第2記憶部に含まれる前記第1のメモリ領域についての前記更新情報の拡張情報を、前記検出手段により検出したデータにより変更される前記第1のメモリ領域を含むページのサイズに更新する、
ことを特徴とする付記6に記載の情報処理装置。
(付記9)
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第1のメモリ領域と、最後に変更された前記第1のメモリ領域を記憶する第2記憶部に記憶した前記第1のメモリ領域と、が異なる場合、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記1に記載の情報処理装置。
(付記10)
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第1のメモリ領域を含むページと、前記第2記憶部に記憶した前記第1のメモリ領域を含むページの次のページと、が異なる場合、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記9に記載の情報処理装置。
(付記11)
前記更新情報は、前記検出手段により検出したデータにより変更された前記第1のメモリ領域のページ数を計数した計数情報を含み、
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第1のメモリ領域を含むページと、前記第2記憶部に記憶した前記第1のメモリ領域を含むページの次のページと、が同一の場合、前記更新情報に含まれる計数情報が示す計数値に1を加算するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記9に記載の情報処理装置。
(付記12)
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、過去に変更された複数の前記第1のメモリ領域を前記第2記憶部に記憶し、前記検出手段により検出したデータにより変更される前記第1のメモリ領域が、前記第2記憶部に記憶した前記第1のメモリ領域のいずれかとも異なる場合に、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記9に記載の情報処理装置。
(付記13)
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第1のメモリ領域と一定範囲内の前記第1のメモリ領域が、前記第2記憶部に含まれない場合、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
ことを特徴とする付記12に記載の情報処理装置。
(付記14)
前記更新情報は、変更された前記第1のメモリ領域を含むページのサイズを拡張する拡張情報を含み、
前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合であって、前記検出手段により検出したデータにより変更される前記第1のメモリ領域と一定範囲内の前記第1のメモリ領域が前記第2記憶部に含まれる場合、該第2記憶部に含まれる前記第1のメモリ領域についての前記更新情報の拡張情報を、前記検出手段により検出したデータにより変更される前記第1のメモリ領域を含むページのサイズに更新する、
ことを特徴とする付記12に記載の情報処理装置。
(付記15)
前記検出手段が検出するデータは、前記仮想機械からの指示により、前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送され、前記第1のメモリ領域に書き込まれるデータである、
ことを特徴とする付記1に記載の情報処理装置。
(付記16)
前記更新情報は、前記データを転送した前記入出力装置を識別する識別情報と、前記データの転送先である前記第1のメモリ領域のアドレスと、を含む情報である、
ことを特徴とする付記1に記載の情報処理装置。
(付記17)
前記第1記憶部は、第1の記憶手段と第2の記憶手段と、を備え、
互いに独立して更新情報の記憶または読み出しが可能である、
ことを特徴とする付記1に記載の情報処理装置。
(付記18)
ハードウェア資源を管理することにより、1以上の仮想機械を実現するステップと、
前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なうステップと、
前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出するステップと、
検出したデータが一定の条件を満たす場合に、前記検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を第1記憶部に記憶するステップと、
前記第1記憶部に記憶される更新情報を出力するステップと、
を備えることを特徴とする情報処理装置の仮想化方法。
(付記19)
ハードウェア資源を管理することにより、1以上の仮想機械を実現する仮想機械実現手段と、
前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なうデータ転送手段と、
移動対象の前記仮想機械に割り当てられる第1のメモリ領域に格納されるデータを取得して移動先に転送するメモリ領域転送手段と、
前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出する検出手段と、
検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を第1記憶部に記憶する登録手段と、
前記第1記憶部から更新情報を取得する更新情報取得手段と、
前記更新情報取得手段により取得した更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第1のメモリ領域において前記検出手段により検出したデータにより変更された更新データを、前記移動先に転送する更新データ転送手段と、
を備えることを特徴とする情報処理装置。
(付記20)
前記更新データ転送手段は、
前記第1記憶部に記憶される更新情報の数が一定値以下になるまで、前記更新データを前記移動先に転送する第1の更新データ転送手段と、
前記移動対象の前記仮想機械の動作を停止した後に、前記更新データを前記移動先に転送する第2の更新データ転送手段と、
を備える、
ことを特徴とする付記19に記載の情報処理装置。
(付記21)
第1の情報処理装置により実現する仮想機械を、前記第1の情報処理装置と通信可能に接続する第2の情報処理装置に移動させるマイグレーション方法において、
ハードウェア資源を管理することにより、1または2以上の前記仮想機械を実現するステップと、
前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なうステップと、
移動対象の前記仮想機械に割り当てられる第1のメモリ領域に格納されるデータを取得して前記第2の情報処理装置に転送するステップと、
前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出するステップと、
検出したデータが一定の条件を満たす場合に、前記検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を第1記憶部に記憶するステップと、
前記第1記憶部から更新情報を取得するステップと、
前記更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第1のメモリ領域において前記検出したデータにより変更された更新データを、前記第2の情報処理装置に転送するステップと、
を備えることを特徴とするマイグレーション方法。
(付記22)
演算処理装置を有する第1の情報処理装置により実現する仮想機械を、前記第1の情報処理装置と通信可能に接続する第2の情報処理装置に移動させるマイグレーション用プログラムにおいて、
ハードウェア資源を管理することにより、1以上の仮想機械を実現する仮想機械実現処理と、
前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なうデータ転送処理と、
移動対象の前記仮想機械に割り当てられる第1のメモリ領域に格納されるデータを取得して前記第1の情報処理装置に転送するメモリ領域転送処理と、
前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出する転送データ検出処理と、
検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を第1記憶部に記憶する更新情報登録処理と、
前記第1記憶部から更新情報を取得する更新情報取得処理と、
前記更新情報取得処理により取得した更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第1のメモリ領域において前記転送データ検出処理により検出したデータにより変更された更新データを、前記第1の情報処理装置に転送する更新データ転送処理と、
を前記演算処理装置に実行させることを特徴とするプログラム。
650 PCIe−スイッチ
651 ダーティ・ページ管理ユニット
810 制御I/F部
820 パケット検出部
830 ライトポインタ
840 リードポインタ
850 DMAライトパケット
901 FIFO制御部
902 判定部

Claims (8)

  1. ハードウェア資源を管理することにより、1以上の仮想機械を実現する仮想機械実現手段と、
    前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なうデータ転送手段と、
    前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出する検出手段と、
    検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を第1記憶部に記憶する登録手段と、
    前記第1記憶部に記憶される更新情報を出力する出力手段と、
    を備えることを特徴とする情報処理装置。
  2. 検出したデータにより変更される前記第1のメモリ領域と、最後に変更された前記第1のメモリ領域を記憶する第2記憶部に記憶した前記第1のメモリ領域と、が異なる場合、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記登録手段は、前記検出手段により検出したデータを出力した前記外部装置と、前記外部装置を識別する識別情報を記憶する外部装置記憶手段に記憶された識別情報が示す前記外部装置と、が同じ場合、前記更新情報を生成して該更新情報を前記第1記憶部に記憶する、
    ことを特徴とする請求項1に記載の情報処理装置。
  4. 前記更新情報は、前記検出手段により検出したデータにより変更された前記第1のメモリ領域のページ数を計数した計数情報を含み、
    検出したデータにより変更される前記第1のメモリ領域を含むページと、前記第2記憶部に記憶した前記第1のメモリ領域を含むページの次のページと、が同一の場合、前記更新情報に含まれる計数情報が示す計数値に1を加算するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
    ことを特徴とする請求項2に記載の情報処理装置。
  5. 前記登録手段は、過去に変更された複数の前記第1のメモリ領域を前記第2記憶部に記憶し、前記検出手段により検出したデータにより変更される前記第1のメモリ領域が、前記第2記憶部に記憶した前記第1のメモリ領域のいずれかとも異なる場合に、前記更新情報を生成して該更新情報を前記第1記憶部に記憶するとともに、前記変更される前記第1のメモリ領域を前記第2記憶部に記憶する、
    ことを特徴とする請求項2に記載の情報処理装置。
  6. 前記更新情報は、変更された前記第1のメモリ領域を含むページのサイズを拡張する拡張情報を含み、
    検出したデータにより変更される前記第1のメモリ領域と一定範囲内の前記第1のメモリ領域が前記第2記憶部に含まれる場合、該第2記憶部に含まれる前記第1のメモリ領域についての前記更新情報の拡張情報を、前記検出手段により検出したデータにより変更される前記第1のメモリ領域を含むページのサイズに更新する、
    ことを特徴とする請求項5に記載の情報処理装置。
  7. ハードウェア資源を管理することにより、1以上の仮想機械を実現するステップと、
    前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なうステップと、
    前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出するステップと、
    検出したデータが一定の条件を満たす場合に、前記検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を第1記憶部に記憶するステップと、
    前記第1記憶部に記憶される更新情報を出力するステップと、
    を備えることを特徴とする情報処理装置の仮想化方法。
  8. ハードウェア資源を管理することにより、1以上の仮想機械を実現する仮想機械実現手段と、
    前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送を行なうデータ転送手段と、
    移動対象の前記仮想機械に割り当てられる第1のメモリ領域に格納されるデータを取得して移動先に転送するメモリ領域転送手段と、
    前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接的にデータ転送されるデータを検出する検出手段と、
    検出したデータが一定の条件を満たす場合に、該検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を第1記憶部に記憶する登録手段と、
    前記第1記憶部から更新情報を取得する更新情報取得手段と、
    前記更新情報取得手段により取得した更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第1のメモリ領域において前記検出手段により検出したデータにより変更された更新データを、前記移動先に転送する更新データ転送手段と、
    を備えることを特徴とする情報処理装置。
JP2010282158A 2010-12-17 2010-12-17 情報処理装置 Expired - Fee Related JP5573649B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010282158A JP5573649B2 (ja) 2010-12-17 2010-12-17 情報処理装置
US13/323,167 US8924624B2 (en) 2010-12-17 2011-12-12 Information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010282158A JP5573649B2 (ja) 2010-12-17 2010-12-17 情報処理装置

Publications (2)

Publication Number Publication Date
JP2012128807A true JP2012128807A (ja) 2012-07-05
JP5573649B2 JP5573649B2 (ja) 2014-08-20

Family

ID=46235984

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010282158A Expired - Fee Related JP5573649B2 (ja) 2010-12-17 2010-12-17 情報処理装置

Country Status (2)

Country Link
US (1) US8924624B2 (ja)
JP (1) JP5573649B2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
CN107071088B (zh) 2011-08-17 2020-06-05 Nicira股份有限公司 逻辑l3路由
US9058199B2 (en) 2012-05-31 2015-06-16 Red Hat Israel, Ltd. Pre-warming destination for fast live migration
US9110704B2 (en) 2012-05-31 2015-08-18 Red Hat Israel, Ltd. Pre-warming of multiple destinations for fast live migration
US9201679B2 (en) * 2012-05-31 2015-12-01 Red Hat Israel, Ltd. Multiple destination live migration
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9483414B2 (en) 2013-11-25 2016-11-01 Red Hat Israel, Ltd. Ordered memory pages transmission in virtual machine live migration
US9436751B1 (en) * 2013-12-18 2016-09-06 Google Inc. System and method for live migration of guest
CN103890728B (zh) 2013-12-31 2015-12-30 华为技术有限公司 虚拟机热迁移的方法和服务器
CN108205506B (zh) * 2013-12-31 2021-11-19 华为技术有限公司 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机系统
US10268605B1 (en) * 2014-04-30 2019-04-23 Altera Corporation Hybrid architecture for signal processing and signal processing accelerator
US9489273B2 (en) * 2014-06-23 2016-11-08 Vmware, Inc. Using stretched storage to optimize disaster recovery
US9442792B2 (en) 2014-06-23 2016-09-13 Vmware, Inc. Using stretched storage to optimize disaster recovery
US9361145B1 (en) * 2014-06-27 2016-06-07 Amazon Technologies, Inc. Virtual machine state replication using DMA write records
CN107924328B (zh) * 2015-09-25 2023-06-06 英特尔公司 选择虚拟机进行迁移的技术
CN108880898B (zh) * 2018-06-29 2020-09-08 新华三技术有限公司 主备容器系统切换方法及装置
US11461263B2 (en) * 2020-04-06 2022-10-04 Samsung Electronics Co., Ltd. Disaggregated memory server
US20210374056A1 (en) 2020-05-28 2021-12-02 Samsung Electronics Co., Ltd. Systems and methods for scalable and coherent memory devices
US12223347B2 (en) * 2021-01-28 2025-02-11 Microsoft Technology Licensing, Llc Volatile memory acquisition
US11436112B1 (en) * 2021-05-17 2022-09-06 Vmware, Inc. Remote direct memory access (RDMA)-based recovery of dirty data in remote memory
CN116069695B (zh) * 2021-11-03 2025-10-28 迈络思科技有限公司 使用外围设备进行存储器访问跟踪
GB2642750A (en) * 2024-07-19 2026-01-21 Advanced Risc Mach Ltd Input/output memory management unit

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009217608A (ja) * 2008-03-11 2009-09-24 Hitachi Ltd 仮想計算機システム及びその制御方法
JP2010039685A (ja) * 2008-08-04 2010-02-18 Hitachi Ltd 複合型計算機及び複合型計算機の制御方法
WO2010116402A1 (ja) * 2009-03-30 2010-10-14 富士通株式会社 情報処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US8001543B2 (en) * 2005-10-08 2011-08-16 International Business Machines Corporation Direct-memory access between input/output device and physical memory within virtual machine environment
US7613898B2 (en) * 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8146082B2 (en) * 2009-03-25 2012-03-27 Vmware, Inc. Migrating virtual machines configured with pass-through devices
US8954959B2 (en) * 2010-09-16 2015-02-10 Red Hat Israel, Ltd. Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009217608A (ja) * 2008-03-11 2009-09-24 Hitachi Ltd 仮想計算機システム及びその制御方法
JP2010039685A (ja) * 2008-08-04 2010-02-18 Hitachi Ltd 複合型計算機及び複合型計算機の制御方法
WO2010116402A1 (ja) * 2009-03-30 2010-10-14 富士通株式会社 情報処理装置

Also Published As

Publication number Publication date
JP5573649B2 (ja) 2014-08-20
US8924624B2 (en) 2014-12-30
US20120159101A1 (en) 2012-06-21

Similar Documents

Publication Publication Date Title
JP5573649B2 (ja) 情報処理装置
US9367459B2 (en) Scheduling method and multi-core processor system
JP5911985B2 (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
US12541464B2 (en) Secure memory access in a virtualized computing environment
US7877436B2 (en) Mechanism to provide reliability through packet drop detection
KR20230047191A (ko) 컴퓨터 디바이스, 이상 처리 방법 및 인터럽트 처리 방법
US20090164991A1 (en) Computer virtualization apparatus and program and method therefor
US9448934B2 (en) Affinity group access to global data
US10983833B2 (en) Virtualized and synchronous access to hardware accelerators
KR20220061983A (ko) 입출력 메모리 관리 유닛으로부터 게스트 운영 시스템으로의 인터럽트 제공
US12561243B2 (en) Multi-ring shared, traversable, and dynamic advanced database
WO2010116402A1 (ja) 情報処理装置
EP4170492B1 (en) System and interrupt processing method
CN118210622B (zh) 一种内存分配方法及计算设备
US10198365B2 (en) Information processing system, method and medium
KR20220001016A (ko) 게스트 운영체제에 입출력 메모리 관리 유닛 레지스터 복사본을 제공하는 방법
US20170277632A1 (en) Virtual computer system control method and virtual computer system
US10649814B2 (en) Device, method, and medium for executing a computing process within an accessed monitoring region
CN115485668A (zh) 存储器页标记作为基于处理器的执行跟踪的日志记录线索
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
CN117076105A (zh) 一种脏页确定方法及计算设备
CN107832097B (zh) 数据加载方法及装置
US9158701B2 (en) Process-specific views of large frame pages with variable granularity
KR101512716B1 (ko) 가상 스토리지 이미지 경량화 시스템 및 가상 스토리지 이미지 경량화 시스템의 입출력 방법 및 가상 스토리지 이미지 생성 방법
JP5811211B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140514

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: 20140603

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140616

R150 Certificate of patent or registration of utility model

Ref document number: 5573649

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees