JP5354108B2 - 情報処理プログラム、情報処理装置及び情報処理方法 - Google Patents

情報処理プログラム、情報処理装置及び情報処理方法 Download PDF

Info

Publication number
JP5354108B2
JP5354108B2 JP2012531620A JP2012531620A JP5354108B2 JP 5354108 B2 JP5354108 B2 JP 5354108B2 JP 2012531620 A JP2012531620 A JP 2012531620A JP 2012531620 A JP2012531620 A JP 2012531620A JP 5354108 B2 JP5354108 B2 JP 5354108B2
Authority
JP
Japan
Prior art keywords
physical
cpu
address space
virtual
physical cpu
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.)
Expired - Fee Related
Application number
JP2012531620A
Other languages
English (en)
Other versions
JPWO2012029149A1 (ja
Inventor
英孝 田村
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
Publication of JPWO2012029149A1 publication Critical patent/JPWO2012029149A1/ja
Application granted granted Critical
Publication of JP5354108B2 publication Critical patent/JP5354108B2/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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/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; 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

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

Description

本発明は、情報処理装置において構築された仮想計算機の仮想CPUに対し、物理CPUを割り当てる技術に関する。
仮想計算機(VM:Virtual Machine)の技術を適用した情報処理装置では、ハイパーバイザ上で仮想オペレーティングシステム(OS:Operating System)であるゲストOSが動作する。ゲストOSは、物理CPU(Central Processing Unit)が仮想的に割り当てられた仮想CPUを用いて、プログラムの処理を行う。
物理CPUを仮想CPUに割り当てる技術の一例として、論理プロセッサ(仮想CPU)及び物理プロセッサ(物理CPU)の対応関係を決定するアドレス変換テーブルを用いる技術が提案されている。具体的には、本提案技術では、論理プロセッサがアクセス可能な論理パーティションアドレス空間と物理アドレス空間との対応関係を示すテーブルと、論理パーティションに含まれるゲストOSが直接利用することが可能な仮想アドレス空間と物理アドレス空間との対応関係を示すテーブルと、が設定される。そして、制御OS(ハイパーバイザ)がこれらのテーブルを状況に応じて適宜更新することにより、ゲストOSにおいて物理プロセッサの切替えを認識することなく、論理プロセッサ及び物理プロセッサの対応関係の切替えが実現される。
また、他の技術として、タイムシェアリング処理において、論理プロセッサに対して物理プロセッサが割り付けられていない状態においても、ゲストOSからMMIO(メモリマップドIO)レジスタの情報へのアクセスを可能とする技術が提案されている。具体的には、本提案技術では、ゲストOSに対応する論理プロセッサに対して物理プロセッサが割り付けられた状態と、論理プロセッサに対して物理プロセッサが割り付けられていない状態のいずれの状態においても、論理プロセッサに対応するMMIOレジスタのコピー情報がメモリ内に保持される。このため、ゲストOSは常にMMIOレジスタの情報へアクセスすることができ、処理遅延を防ぐことができる。
ここで、このように物理CPUを仮想CPUに割り当ててゲストOSにおけるプログラム処理を実現する技術において、仮想CPUの処理対象の仮想アドレス空間の切替えが発生した場合、ハイパーバイザは次のような処理を行っていた。すなわち、ハイパーバイザは、現在仮想CPUに割当てている物理CPUの処理対象の物理アドレス空間を、仮想CPUの処理対象の仮想アドレス空間の切替えに連動させて切り替えていた。
特開2006−127462号公報 特開2006−350531号公報
しかし、このように同じ物理CPUを仮想CPUに割り当てたまま物理アドレス空間の切替えを繰り返した場合、次のような問題がある。例えば、切替え後の物理アドレス空間が、以前に当該物理CPUが処理したことのある物理アドレス空間であったとしても、その後に当該物理CPUにおいて他の物理アドレス空間の処理が行われていれば、切替え後の物理アドレス空間のキャッシュ情報は当然に残っていない。このため、少なくとも物理CPUに切替え後の物理アドレス空間のキャッシュ情報が再度蓄積されるまでの間、メモリアクセス効率が低下するという問題があった。
以上のような問題点に鑑み、本技術は、仮想CPUの処理対象となる仮想アドレス空間の切替え時において、物理CPUの割当てを適切に行うことで、物理CPUにおけるメモリアクセス効率の低下を軽減することを目的とする。
本技術は、複数の物理CPUを備え、当該複数の物理CPUを1又は複数の仮想CPUに割り当てて仮想計算機の処理を実現する情報処理装置が、次のような処理を行う。すなわち、情報処理装置は、仮想CPUの処理対象の仮想アドレス空間の切替えが発生したときに、複数の物理CPUの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するか否かを判定する。そして、情報処理装置は、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するときには、当該物理CPUを選択して、仮想CPUに割り当てる。一方、情報処理装置は、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在しないときには、キャッシュ情報自体が蓄積されていない物理CPUを選択して、仮想CPUに割り当てる。
本技術によれば、物理CPUにおけるメモリアクセス効率の低下を軽減することが可能となる。
情報処理装置のハードウェア構成の一例の説明図である。 CPUの割当処理に関連する機能ブロック図の一例である。 管理テーブルの一例の説明図である。 シャドウページテーブル管理部の処理の一例のフローチャートである。 物理CPU切替部の処理の一例のフローチャートである。 具体例における管理テーブルの内容の説明図である。 具体例における物理CPUの処理状態の遷移を示す説明図である。
本明細書で説明する技術は、複数の物理CPUを備え、ハイパーバイザ上でゲストOSが動作する仮想計算機が構築された情報処理装置において、仮想計算機上の仮想CPUに対する物理CPUの割当てを工夫することで、処理効率の向上を図るものである。
仮想CPUにより処理している仮想アドレス空間をゲストOSが切替えるときに、従来では、ハイパーバイザは、この切替え処理に連動し、次のような処理を行っていた。すなわち、ハイパーバイザは、これまで仮想CPUに割り当てていた物理CPU(第1物理CPUとする)の処理対象の物理アドレス空間(第1物理アドレス空間とする)を、仮想アドレス空間の切替えに連動させて切り替えていた。このため、さらなる仮想アドレス空間の切替えにともなって再度第1物理アドレス空間が処理対象となったとしても、第1物理CPUに蓄積された第1物理アドレス空間のキャッシュ情報はすでに失われていた。
しかし、本明細書で説明する技術においては、ハイパーバイザは、次のような処理を行う。すなわち、ハイパーバイザは、単に第1物理CPUの処理対象の物理アドレス空間を切り替えるのではなく、キャッシュやTLBにキャッシュ情報が蓄積されていない他の物理CPU(第2物理CPUとする)を選択し、仮想CPUに割り当てる。このため、第1物理CPUには、第1物理アドレス空間のキャッシュ情報が保持されたままとなる。そして、仮想CPUが再度第1物理アドレス空間に対応する仮想アドレス空間を処理対象とするときには、ハイパーバイザは、第1物理アドレス空間のキャッシュ情報が蓄積された第1物理CPUを選択して、仮想CPUに割り当てる。これにより、第1物理CPUのキャッシュやTLBに蓄積された物理アドレス空間のキャッシュ情報を、再度利用することが可能となる。このため、仮想アドレス空間の切替え後において、当該仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が物理CPUに蓄積されるまでに発生する物理CPUのメモリアクセス遅延を、全体として軽減することが可能となる。
図1は、かかる技術が具現化された情報処理装置のハードウェア構成の一例を示す。図1の情報処理装置は、複数の物理CPU(Central Processing Unit)101〜n、メモリ2、ストレージ3、可搬記憶媒体駆動装置4、入出力装置5及び通信インタフェース6を備える。なお、以下の説明において、例えば、物理CPU10と記載したときには、物理CPU101〜nのいずれか1つの要素を例示して示す(ただし物理CPU101〜nのうち他の要素においても同様の説明が可能である)ものとする。他の構成要素についても同様とする。
物理CPU10は、制御ユニット、演算ユニット及び命令デコーダ等を含み、実行ユニットが、命令デコーダで解読されたプログラムの命令に従い、制御ユニットより出力される制御信号に応じ、演算ユニットを用いて算術・論理演算を実行する。かかる物理CPU10は、制御に用いる各種情報が格納される制御レジスタ11、既にアクセスしたメモリ2等の内容を一時的に格納可能なキャッシュ12、及び、ページテーブルのキャッシュとしての機能を果たすTLB13を備える。なお、アドレス空間とは、一連のメモリアドレスで示されるメモリ領域のことを示す。そして、仮想アドレス空間は、仮想CPUがアクセスする仮想的なアドレス空間を示し、物理アドレス空間は、仮想アドレス空間に対応する物理的なアドレス空間であって、物理CPUがアクセスするアドレス空間を示す。また、本明細書においてキャッシュ情報とは、キャッシュ12やTLB13等に格納される、アドレス空間に関連する情報のことを示す。物理CPU10は、メモリ自体に直接アクセスするよりも高速にアクセス可能なキャッシュ12やTLB13に格納されるキャッシュ情報を用いることにより、高速な処理を実現することができる。なお、本実施例では、物理CPU自体がそれぞれ独立して複数設けられている例を用いて説明するが、CPUコアが複数設けられている構成でもよい。本明細書において、CPUが複数設けられていると表記する場合には、CPUコアが複数設けられているという意味も含むものとする。
メモリ2は、例えばRAM(Random Access Memory)等であり、物理CPU10で実行されるプログラムがロードされるとともに、物理CPU10の処理に用いるデータが格納されるメインメモリである。また、ストレージ3は、例えばHDD(Hard Disk Drive)やフラッシュメモリ等であり、プログラムや各種データが格納される。可搬記憶媒体駆動装置4は、可搬記憶媒体7に記憶されたデータやプログラムを読み出す装置である。可搬記憶媒体7は、例えば磁気ディスク、光ディスク、光磁気ディスク又はフラッシュメモリ等である。なお、物理CPU10は、メモリ2やストレージ3と協働しつつ、ストレージ3や可搬記憶媒体7に格納されたプログラムを実行する。なお、物理CPU10が実行するプログラムや、アクセス対象となるデータは、当該情報処理装置と通信可能な他の装置に格納されていてもよい。
入出力装置5は例えばキーボード等やディスプレイ等であり、ユーザ操作等による動作命令を受け付ける一方、情報処理装置による処理結果を出力する。通信インタフェース6は例えばLAN(Local Area Network)カード等であり、外部とのデータ通信を可能にする。上述した情報処理装置の各構成要素は、バス8で接続されている。
図2は、かかる情報処理装置において実現されるCPUの割当機能に関連する機能ブロック図である。
本情報処理装置においては、仮想計算機22が、ハイパーバイザ23上に構築されている。換言すれば、ゲストOS24が、ハイパーバイザ23の制御下で動作している。なお、図2では、ゲストOS24が1つである場合について例示しているが、ゲストOS24は複数であってもよい。ハイパーバイザ23は、ゲストOS24の下位レイヤとして、物理CPU101〜nの上で動作する。
仮想計算機22は、ゲストOS24上の各処理を実行する1又は複数の仮想CPU201〜nを備える。仮想CPU20も、物理CPU10と同様に、制御レジスタ21を備える。ゲストOS24上では、プログラム(プロセス)401〜nが実行され、複数のプログラム401〜nが、仮想CPU201〜nのうちの1つの仮想CPUをタイムシェアリング等によって共有しつつ実行される。さらには、複数のプログラム401〜nの組合せが、それぞれ別々の仮想CPUにおいて同時に並行処理されていてもよい。また、ページテーブル501〜nが、プログラム401〜nにそれぞれ対応して存在している。ページテーブル50は、プログラム40の実行時に用いられるデータが格納される仮想アドレス空間の論理アドレスと疑似物理アドレスを対応付けて保持している。
さらに、ゲストOS24は、仮想CPU201〜nの処理対象の仮想アドレス空間を管理する空間管理部25を備える。空間管理部25は、例えばメモリ獲得イベントやメモリ解放イベント等による仮想アドレス空間の空間構成の更新命令に応じて、ページテーブル501〜nを更新する処理等を行う。なお、仮想アドレス空間の空間構成の更新が行われると、仮想アドレス空間に対応する物理アドレス空間の空間構成も更新されることとなり、対応するシャドウページテーブル501〜nも更新されることとなる。
また、空間管理部25は、仮想CPU201〜nの処理対象となる仮想アドレス空間を切り替える空間切替部26を備える。空間切替部26は、仮想CPU20の処理対象の仮想アドレス空間を切替えるときに、仮想CPU20の制御レジスタ21に、切替え先の仮想アドレス空間を示すページテーブル50のアドレスを代入する。かかる処理は、例えば、仮想CPU20がタイムシェアリングによって複数のプログラムを実行している場合において、ディスパッチによって処理対象のプログラムが切り替わるときや、新たなプログラムの実行を開始するときに発生する。このとき、空間切替部26は、切替え後に実行するプログラム40に対応するページテーブル50のアドレスを、仮想CPU20の制御レジスタ21に代入する。
ハイパーバイザ23は、仮想CPU20に対し、必要に応じて物理CPU10を割り当てる。ここで、ハイパーバイザ23は、ページテーブル501〜nとの間でそれぞれ対応関係し、ページテーブル501〜nが示す仮想アドレス空間にそれぞれ対応する物理アドレス空間を示すシャドウページテーブル601〜nを有する。シャドウページテーブル60には、物理アドレス空間の論理アドレス及び物理アドレス(物理CPU10が認識することが可能なマシンアドレス)が対応付けて格納されている。なお、ハイパーバイザ23は、ページテーブル50との間で対応関係にあるシャドウページテーブル60を特定するための情報を当然に参照可能である(図示省略)。また、シャドウページテーブル601〜nには、それぞれ、シャドウページテーブル60(すなわち、対応するページテーブル50)が更新された回数が設定される更新カウンタ701〜nが対応付けられている。
また、ハイパーバイザ23は、ゲストOS24におけるページテーブル50の更新命令や、仮想CPU20の制御レジスタ21へのページテーブル50のアドレスの代入命令を捕捉する命令捕捉部27を備える。そして、命令捕捉部27は、シャドウページテーブル管理部28及び物理CPU切替部29を備える。
シャドウページテーブル管理部28は、ページテーブル50に対する更新命令を捕捉したときに、更新対象となったページテーブル50と対応関係を有するシャドウページテーブル60に更新内容を反映させる。また、シャドウページテーブル管理部28は、更新内容の反映時に、シャドウページテーブル60に対応する更新カウンタ70をカウントアップする。
物理CPU切替部29は、仮想CPU20の制御レジスタ21へのページテーブル50のアドレスの代入命令を捕捉したとき(すなわち、仮想CPU20の処理対象のアドレス空間の切替えが発生したとき)に、次の処理を行う。すなわち、物理CPU切替部29は、物理CPU101〜nから、仮想CPU20に割り当てる物理CPU10を選択し、当該選択した物理CPU10を仮想CPU20に割り当てる。このとき、物理CPU切替部29は、物理CPU10の制御レジスタ11に対し、代入命令に係るページテーブル50に対応するシャドウページテーブル60のアドレスを、必要な場合のみ代入する。なお、物理CPU切替部29は、選択手段及び割当手段の実施態様の一例である。
ここで、物理CPU切替部29は、物理CPU101〜nに蓄積されているキャッシュ情報に関連する物理アドレス空間を示す情報(本実施例では、物理CPUの制御レジスタに設定されているシャドウページテーブルのアドレス)を含むデータが設定される管理テーブル30を参照する。管理テーブル30は、図3に示すように、物理CPUと、物理CPUの制御レジスタに設定されているシャドウページテーブルのアドレスと、シャドウページテーブルの更新カウンタと、物理CPUの使用状態と、の項目を含む。当該管理テーブル30は、例えばメモリ2またはストレージ3等の記憶手段に格納されている。
ここで、管理テーブル30に設定される物理CPUの使用状態について説明する。物理CPUの使用状態としては、以下の3つの状態が想定される。
「割当て中」:物理CPUが特定の仮想CPUに割り当てられている状態であり、シャドウページテーブルのアドレスが制御レジスタに設定されている状態(すなわち、物理CPUがいずれかのプログラムの処理を実行中の状態であり、そのプログラムの物理アドレス空間のキャッシュ情報がキャッシュやTLBに蓄積されている状態)
「使用中」:物理CPUは特定の仮想CPUには割り当てられていないが、シャドウページテーブルのアドレスが制御レジスタに設定されている状態(すなわち、物理CPUは現在はプログラムの処理を実行していないが、少なくとも直近の情報処理装置の起動後においていずれかのプログラムの処理を実行したことがあり、そのプログラムの物理アドレス空間のキャッシュ情報がキャッシュやTLBに蓄積されている状態)
「未使用」:物理CPUが特定の仮想CPUに割り当てられておらず、かつ、シャドウページテーブルのアドレスが制御レジスタに設定されていない状態(すなわち、物理CPUは少なくとも直近の情報処理装置の起動後においていずれのプログラムも未だ実行しておらず、物理アドレス空間のキャッシュ情報自体がキャッシュやTLBに蓄積されていない状態)
次に、上記各構成要素のうち、特に、ハイパーバイザ23の命令捕捉部27のシャドウページテーブル管理部28及び物理CPU切替部29が実行する処理について、詳細に説明する。
図4のフローチャートは、シャドウページテーブル管理部28の処理を示す。図4の処理は、命令捕捉部27において、ページテーブル50に対する更新命令を捕捉したときに実行される。
ステップ1(図ではS1と表記する。以下同様)では、シャドウページテーブル管理部28は、更新命令により更新されたページテーブル50との間で対応関係を有するシャドウページテーブル60のアドレスを特定する。
ステップ2では、シャドウページテーブル管理部28は、ページテーブル50に対してなされた更新内容を、ステップ1で特定したシャドウページテーブル60に対して反映させる。
ステップ3では、シャドウページテーブル管理部28は、更新したシャドウページテーブル60に対応して設けられた更新カウンタ70をカウントアップする。
なお、かかる更新カウンタ70のカウントアップは、次のような目的で行われる。すなわち、例えばx86アーキテクチャの物理CPU等の場合、仮想アドレス空間の空間構成の更新にあわせて物理アドレス空間の空間構成が更新されたときには、シャドウページテーブルのアドレスを物理CPUの制御レジスタに代入し、物理CPUのTLBをパージする処理が必須となる。換言すれば、物理アドレス空間の空間構成が更新された場合、当該更新以前に物理CPUのキャッシュやTLBに蓄積された当該物理アドレス空間のキャッシュ情報は、使用することができない。本実施例では、シャドウページテーブル管理部28が、シャドウページテーブル60の内容が更新される(すなわち、物理アドレス空間の空間構成が更新される)ごとに、更新カウンタ70をカウントアップすることで、シャドウページテーブル60の更新回数を保持しておく。一方、物理CPU切替部29は、後述する物理CPUの選択処理において、更新カウンタ70の数値に基づき、シャドウページテーブル60に対する更新の有無を識別する。そして、物理CPU切替部29は、当該シャドウページテーブル60が示すアドレス空間のキャッシュ情報を保持する物理CPUのキャッシュ情報を利用可能か否かを判定する。なお、空間構成の変更時に物理CPUのTLBをパージが必須となるケースが想定されないアーキテクチャのCPUを用いている場合には、かかる処理は不要である。
次に、図5のフローチャートを用いて、物理CPU切替部29の処理を説明する。図5の処理は、仮想CPU20の制御レジスタ21に対するページテーブル50のアドレスの代入命令を命令捕捉部27が捕捉したときに実行される。換言すれば、図5の処理は、仮想計算機22において、仮想CPU20で処理する仮想アドレス空間の切替えが発生したときに実行される。
ステップ11では、物理CPU切替部29は、代入命令に係るページテーブル50のアドレスと対応関係を有するシャドウページテーブル60のアドレスを特定する。
ステップ12では、物理CPU切替部29は、代入命令に係るシャドウページテーブル60のアドレスが、現在処理が割り当てられている物理CPU10の制御レジスタ11に代入されているシャドウページテーブル60のアドレスと同一であるか否かを判定する。物理CPU切替部29は、両者が同一でない場合にはステップ13に処理を進める一方(No)、両者が同一である場合にはステップ19に処理を進める(Yes)。なお、両者が同一である場合とは、例えば、x86アーキテクチャの物理CPUを用いている場合において、単にTLBをパージするためにページテーブルの代入命令が実行される場合等が想定される。
ステップ13では、物理CPU切替部29は、管理テーブル30を参照し、物理CPU101〜nのうち、次の条件を満たす物理CPU10が存在するか否かを判定する。
(1)管理テーブルの使用状態が「使用中」である
(2)管理テーブルのシャドウページテーブルアドレスが、代入命令に係るシャドウページテーブルのアドレスと同一である
(3)管理テーブルの更新カウンタが、代入命令に係るシャドウページテーブルの更新カウンタと同一である
これら(1)〜(3)の条件を満たす物理CPU10は、換言すれば、(1)現在、仮想CPU201〜nのいずれにも割り当てられておらず、(2)切替え後の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が、キャッシュ12やTLB13に蓄積されており、(3)以前にこの物理CPUが当該物理アドレス空間の処理をした時点から、当該物理アドレス空間の空間構成が更新されていない、という条件を満たす物理CPU10である。
物理CPU切替部29は、上記(1)〜(3)の条件を満たす物理CPUが存在すれば、ステップ14に処理を進める一方(Yes)、かかる物理CPUが存在しなければ、ステップ16に処理を進める(No)。
ステップ14では、物理CPU切替部29は、上記(1)〜(3)の条件を全て満たす物理CPU10を選択する。そして、物理CPU切替部29は、選択した物理CPU10を、仮想CPU20に割り当てる。
ステップ15では、物理CPU切替部29は、管理テーブル30を更新する。具体的には、物理CPU切替部29は、管理テーブル30のレコードのうち、ステップ14で選択した物理CPU10に対応するレコードの使用状態を、「使用中」から「割当て中」に変更する。一方、物理CPU切替部29は、管理テーブル30のレコードのうち、S14での割当て処理の前まで仮想CPU20に割り当てられていた物理CPU10に対応するレコードの使用状態を、「割当て中」から「使用中」に変更する。さらに、物理CPU切替部29は、変更したレコードの更新カウンタを、S14での割当て処理の前(上記アドレス空間の切替え前)まで処理対象とされていたシャドウページテーブル60に対応する更新カウンタ70の現在の数値に変更する。
ステップ16では、物理CPU切替部29は、管理テーブル30を参照し、使用状態が「未使用」の物理CPU10が存在するか否かを判定する。物理CPU切替部29は、使用状態が「未使用」の物理CPU10が存在すれば、ステップ17に処理を進める一方(Yes)、使用状態が「未使用」の物理CPU10が存在しなければ、ステップ19に処理を進める(No)。
ステップ17では、物理CPU切替部29は、使用状態が「未使用」の物理CPU10を選択する。換言すれば、物理CPU切替部29は、制御レジスタ11にシャドウページテーブル60のアドレス自体が設定されていない(すなわち、キャッシュ情報自体が蓄積されていない)物理CPU10を選択する。そして、物理CPU切替部29は、当該選択した物理CPU10を、仮想CPU20に割り当てる。このとき、物理CPU切替部29は、当該選択した物理CPU10の制御レジスタ11に、代入命令に係るシャドウページテーブル60のアドレスを代入する。換言すれば、物理CPU切替部29は、上記(1)〜(3)の条件を全て満たす物理CPU10が無い場合に、キャッシュ情報が蓄積されていない物理CPU10を、これまで仮想CPU20に割り当てられていた物理CPU10よりも優先して、仮想CPU20に割り当てる。
ステップ18では、物理CPU切替部29は、管理テーブル30を更新する。具体的には、物理CPU切替部29は、管理テーブル30のレコードのうち、ステップ17で選択した物理CPU10のシャドウページテーブルのアドレスを、代入命令に係るシャドウページテーブル60のアドレスに変更する。また、物理CPU切替部29は、シャドウページテーブル60のアドレスを変更したレコードの使用状態を、「未使用」から「割当て中」に変更する。また、シャドウページテーブル60のアドレスを変更したレコードの更新カウンタを、代入命令に係るシャドウページテーブル60に対応する更新カウンタ70の現在の数値に変更する。一方、物理CPU切替部29は、管理テーブル30のレコードのうち、S17での割当て処理の前まで仮想CPU20に割り当てられていた物理CPU10に対応するレコードの使用状態を、「割当て中」から「使用中」に変更する。また、シャドウページテーブル60のアドレスを変更したレコードの更新カウンタを、S17の割当て処理の前(上記アドレス空間の切替え前)まで処理対象とされていたシャドウページテーブル60に対応する更新カウンタ70の現在の数値に変更する。
ステップ19では、物理CPU切替部29は、これまで仮想CPU20に割り当てていた物理CPU10の制御レジスタ11に、代入命令に係るシャドウページテーブル60のアドレスを代入する。すなわち、物理CPU切替部29は、これまで仮想CPU20に割り当てていた物理CPU10を、引き続き仮想CPU20に割り当てる。
ステップ20では、物理CPU切替部29は、管理テーブル30を更新する。具体的には、物理CPU切替部29は、管理テーブル30のレコードのうち、ステップ19で引き続き仮想CPU20に割り当てる物理CPU10のシャドウページテーブルのアドレスを、代入命令に係るシャドウページテーブル60のアドレスに変更する。また、シャドウページテーブル60のアドレスを変更したレコードの更新カウンタを、代入命令に係るシャドウページテーブル60に対応する更新カウンタ70の現在の数値に変更する。
かかる処理によれば、仮想CPUが処理する仮想アドレス空間の切替えの発生時に、次のように物理CPUの割当てが行われる。すなわち、切替え先の仮想アドレス空間に対応する物理アドレス空間のシャドウページテーブルのアドレスが制御レジスタに代入された物理CPUがあれば、当該物理CPUが仮想CPUに割り当てられる。ここで、切替え先の物理アドレス空間のシャドウページテーブルのアドレスが制御レジスタに代入された物理CPUとは、すなわち、キャッシュやTLBにおいて、切替え先の物理アドレス空間のキャッシュ情報が蓄積されている物理CPUである。このため、仮想アドレス空間切替え後の処理において、当該物理CPUに蓄積されたキャッシュ情報を用いることができ、仮想アドレス空間切替え後における物理CPUのメモリアクセス処理の遅延を低減することが可能となる。
また、一方で、これまで仮想CPUに割り当てられていた物理CPUに対応する管理テーブルのレコードには、切替え前のシャドウページテーブルのアドレスが格納されており、使用状態も未使用ではなく使用中になっている。したがって、他の物理アドレス空間の処理に対して、すでに仮想CPUに割り当てられている物理CPUが選択されて割り当てられることがない。このため、当該物理CPUに蓄積されたキャッシュ情報は、他の物理アドレス空間のキャッシュ情報で書き換えられることなく保持されることになる。そして、次に当該物理アドレス空間が処理対象になるときに、上述のように、当該物理CPUが選択され、仮想CPUに割り当てられることとなる。このため、次に同じ物理アドレス空間が処理対象になるときには、物理CPUに蓄積されたキャッシュ情報が活用されることとなり、メモリアクセス処理の遅延を低減することが可能となる。
さらに、切替え先の物理アドレス空間のシャドウページテーブルのアドレスが制御レジスタに代入された物理CPUが無い場合には、未使用の物理CPUが仮想CPUに割り当てられる。この割り当て処理の直後においては、仮想CPUに割り当てられた物理CPUのキャッシュやTLBには、切替え先の物理アドレス空間のキャッシュ情報が蓄積されていない。しかしながら、一旦このようにして物理CPUが仮想CPUに割り当てられてキャッシュ情報を蓄積すれば、次に同じ物理アドレス空間が処理対象となるときに、当該物理CPUに蓄積されたキャッシュ情報が活用されることとなる。このようにして、結果として、複数の物理CPUを有効に利用しつつ、全体としてメモリアクセスの遅延を低減することが可能となる。
なお、上述のように、アドレス空間の切替えにともなってハイパーバイザが仮想CPUに割り当てる物理CPUを切替えたとしても、ゲストOS側では、これまでのアドレス空間の切替えと同様に認識される。そして、このように、1つの仮想CPUで行われる処理に対して複数の物理CPUが用いられることで、例えばゲストOSにおいて使用可能な仮想CPUの数に上限があったとしても、当該上限数に関係なく複数の物理CPUが活用されることとなる。
ここで、上記実施例における処理のうち、仮想CPU20の制御レジスタ21に対してアドレス空間の代入命令が実行される場合における、仮想CPU20への物理CPU10の割当て処理について、具体例を示して説明する。
図7(A)は、具体例における、時間(t)の経過にともなう物理CPU10及び物理CPU10の処理状態の遷移を示した説明図である。
<1>本具体例では、図2に示す仮想計算機22で動作するゲストOS24上で、プログラム40及びプログラム40が、仮想CPU20を共有しつつ交互に実行されているものとする。現時点で、仮想CPU20は、プログラム40の仮想アドレス空間を処理対象としており、仮想CPU20の制御レジスタ21には、ページテーブル50のアドレスが代入されている。一方、仮想CPU20には物理CPU10が割り当てられており、物理CPU10の制御レジスタ11には、ページテーブル50との間で対応関係を有するシャドウページテーブル60のアドレス(0x0DD0F000)が代入されている。このとき、管理テーブル30の内容は、図6(A)に示す状態となっている。
<2>そして、プログラム40からプログラム40へのディスパッチが行われるとき、ゲストOS24における空間切替部26は、仮想CPU20の処理対象の仮想アドレス空間の切替えを行う。具体的には、空間切替部26は、仮想CPU20の制御レジスタ21に対し、プログラム40のアドレス空間を示すページテーブル50のアドレスを代入する代入命令を実行する。
一方、ハイパーバイザ23の命令捕捉部27は、かかる仮想CPU20の制御レジスタ21に対するページテーブル50のアドレスの代入命令を捕捉する。そして、物理CPU切替部29は、管理テーブル30を参照し、物理CPU101〜nのうち、(1)使用状態が「使用中」であり、(2)シャドウページテーブルアドレスが、ディスパッチ後に仮想CPU20で実行するプログラム40の仮想アドレス空間を示すページテーブル50との間で対応関係を有するシャドウページテーブル60のアドレス(0x0DF00000)であり、(3)更新カウンタがシャドウページテーブル60の更新カウンタ70と同一の物理CPU10を検索する。なお、この段階で更新カウンタ70は0であるとする。ここで、図6(A)に示す管理テーブル30の状態では、(1)〜(3)の条件を全て満たす物理CPU10は存在しない。このため、物理CPU切替部29は、使用状態が「未使用」の物理CPU10を仮想CPU20に割り当て、物理CPU10の制御レジスタ11に対し、シャドウページテーブル60のアドレス(0x0DF00000)を代入する。そして、物理CPU切替部29は、管理テーブル30のレコードのうち、物理CPU10のレコードのシャドウページテーブルアドレスをシャドウページテーブル60のアドレス(0x0DF00000)に変更し、使用状態を「未使用」から「割当て中」に変更する。さらに、物理CPU切替部29は、物理CPU10のレコードの使用状態を「割当て中」から「使用中」に変更する。図6(B)は、かかる更新が行われた後の管理テーブル30の内容を示す。
<3>かかる処理の結果、物理CPU10が仮想CPU20に割り当てられ、シャドウページテーブル60が示す物理アドレス空間の処理、すなわち、プログラム40の処理が実行される。この処理の実行中、上述のように、管理テーブル30において、物理CPU10に対応するレコードのシャドウページテーブルアドレスにはシャドウページテーブル601のアドレス(0x0DD0F000)が設定され、使用状態は「使用中」になっている。このため、当該物理CPU10は、他の物理アドレス空間の処理に対して割り当てられることはない。したがって、物理CPU10のキャッシュ12やTLB13には、シャドウページテーブル60のアドレス空間のキャッシュ情報が保持されたままとなっている。
<4>そして、再度、プログラム40からプログラム40へのディスパッチが行われるとき、空間切替部26は、仮想CPU20の処理対象の仮想アドレス空間の切替えを行う。具体的には、空間切替部26は、仮想CPU20の制御レジスタ21に対し、プログラム40の仮想アドレス空間を示すページテーブル50のアドレスを代入する。
一方、ハイパーバイザ23の命令捕捉部27は、かかる仮想CPU20の制御レジスタ21に対するアドレスの代入命令を捕捉する。そして、物理CPU切替部29は、管理テーブル30を参照し、物理CPU101〜nのうち、(1)使用状態が「使用中」であり、(2)シャドウページテーブルアドレスが、ディスパッチ後に仮想CPU20で実行するプログラム40の仮想アドレス空間を示すページテーブル50との間で対応関係を有するシャドウページテーブル60のアドレス(0x0DD0F000)であり、(3)更新カウンタがシャドウページテーブル60の更新カウンタ70と同一の物理CPU10を検索する。なお、この段階で更新カウンタ70は3であるとする。ここで、図6(B)に示す管理テーブル30に基づけば、物理CPU10がこれらの条件を満たしている。このため、物理CPU切替部29は、物理CPU10を仮想CPU20に割り当てる。そして、物理CPU切替部29は、管理テーブル30のレコードのうち、物理CPU10のレコードの使用状態を「割当て中」から「使用中」に変更する一方、物理CPU10のレコードの使用状態を「使用中」から「割当て中」に変更する。図6(C)は、かかる更新が行われた後の管理テーブル30の内容を示す。
<5>かかる処理の結果、物理CPU10が仮想CPU20に割り当てられ、再び、シャドウページテーブル60が示す物理アドレス空間の処理、すなわち、プログラム40の処理が実行される。
ここで、図7(B)は、従来のCPU割当方法により、物理CPU10のみを用いて処理を行う場合の物理CPU10の処理状態を示す。従来のCPU割当方法によれば、プログラム40からプログラム40へのディスパッチが発生した後、再度プログラム40へのディスパッチが発生した場合、物理CPU10のキャッシュ12及びTLB13は、すでにプログラム40の物理アドレス空間のキャッシュ情報に書き換わっている。このため、プログラム40へのディスパッチの直後は、プログラム40のアドレス空間のキャッシュ情報がキャッシュ12及びTLB13に蓄積されていないため、メモリアクセス処理が遅延するおそれがある。
一方、図7(A)の<5>の説明に戻ると、物理CPU10が再度仮想CPU20に割り当てられるときに、物理CPU10のキャッシュ12及びTLB13には、シャドウページテーブル60が示す物理アドレス空間のキャッシュ情報が保持されたままとなっている。このため、物理CPU10は、仮想アドレス空間の切替えの直後においても、キャッシュ12及びTLB13に蓄積されたキャッシュ情報を用いてプログラム40を実行することができる。したがって、プログラム40へのディスパッチの直後であっても、メモリアクセスの遅延が低減される。
ここで、上記実施例においては、各物理CPUの制御レジスタに代入されているシャドウページテーブルのアドレス及び使用状態を参照して、仮想CPUに割り当てる物理CPUを選択している。しかし、使用状態を参照する処理は必ずしも行わなくてもよい。すなわち、制御レジスタに切替え先の仮想アドレス空間に対応する物理アドレス空間のシャドウページテーブルのアドレスが設定されている状態である物理CPUが特定できた場合、ゲストOSの構造によっては、当該物理CPUが他の仮想CPUに対して割当て中ではないと判断できる場合もある。このため、必ずしも当該物理CPUの使用状態を参照しなくても、制御レジスタに切替え先の仮想アドレス空間に対応する物理アドレス空間のシャドウページテーブルのアドレスが設定されていることを条件として、物理CPUを選択してもよい。また、シャドウページテーブルのアドレスが物理CPUの制御レジスタに未設定の場合には、当該物理CPUが未使用の状態であることが必然的に特定できる。このように、かりに使用状態を参照せずに、シャドウページテーブルのアドレスに基づいて物理CPUを選択したとしても、物理CPUを適切に選択することは可能である。
さらに、上記実施例においては、ハイパーバイザは各物理CPUの制御レジスタに代入されているシャドウページテーブルのアドレスや使用状態を管理するべく、管理テーブルを用いている。そして、ハイパーバイザは、仮想アドレス空間の切替え時に、かかる管理テーブルのデータを参照することで、速やかに物理CPUのキャッシュ情報等を確認し、物理CPUを選択することができる。しかし、かかる管理データは、必ずしもテーブルの形式で保持されている必要はない。さらには、ハイパーバイザは、必ずしも管理データを用いなくても、各物理CPUに対して割込みを発生させて直接物理CPUの制御レジスタの内容等を確認することにより、物理CPUを選択することも可能である。
上述した情報処理装置の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。
101〜n 物理CPU
111〜n 物理CPUの制御レジスタ
121〜n 物理CPUのキャッシュ
131〜n 物理CPUのTLB
2 メモリ
3 ストレージ
4 可搬記憶媒体駆動装置
5 入出力装置
6 通信インタフェース
8 バス
201〜n 仮想CPU
211〜n 仮想CPUの制御レジスタ
22 仮想計算機
23 ハイパーバイザ
24 ゲストOS
25 空間管理部
26 空間切替部
27 命令捕捉部
28 シャドウページテーブル管理部
29 物理CPU切替部
30 管理テーブル
401〜n プログラム
501〜n ページテーブル
601〜n シャドウページテーブル
701〜n 更新カウンタ

Claims (6)

  1. 複数の物理CPUを備え、当該複数の物理CPUを1又は複数の仮想CPUに割り当てて仮想計算機の処理を実現する情報処理装置が、
    仮想CPUの処理対象の仮想アドレス空間の切替えが発生したときに、前記複数の物理CPUの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するか否かを判定し、
    当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するときには当該物理CPUを選択する一方、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在しないときには、キャッシュ情報自体が蓄積されていない物理CPUを選択し、
    前記選択した物理CPUを、処理対象の仮想アドレス空間の切替えが発生した仮想CPUに割り当てる
    処理を実行することを特徴とする情報処理プログラム。
  2. 前記物理CPUを選択する処理は、記憶手段に格納された、前記複数の物理CPUのそれぞれに蓄積されているキャッシュ情報に関連する物理アドレス空間を示すデータを参照して、物理CPUを選択することを特徴とする請求項1記載の情報処理プログラム。
  3. 前記物理CPUを選択する処理によりキャッシュ情報自体が蓄積されていない物理CPUが選択されたときには、前記データのうち当該選択された物理CPUに対応するデータが示す物理アドレス空間を、前記切替え先の仮想アドレス空間に対応する物理アドレス空間に変更して当該データを更新する処理を実行することを特徴とする請求項2記載の情報処理プログラム。
  4. 仮想アドレス空間の空間構成が更新されたときに、当該仮想アドレス空間に対応する物理アドレス空間の空間構成の更新回数を示す更新カウンタを更新する一方、前記仮想CPUに割り当てる処理により物理CPUが仮想CPUに割り当てられたときに、当該物理CPUが仮想CPUに割り当てられる前まで処理対象であった物理アドレス空間の空間構成の更新カウンタの値を、当該物理CPUに対応付けて記憶手段に格納する処理を実行し、
    前記物理CPUを選択する処理は、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するときに、当該物理CPUに対応付けて記憶装置に格納された更新カウンタの値及び切替え先の仮想アドレス空間に対応する物理アドレス空間の空間構成の更新カウンタの値が一致するときにのみ、当該物理CPUを選択することを特徴とする請求項1記載の情報処理プログラム。
  5. 複数の物理CPUを備え、当該複数の物理CPUを1又は複数の仮想CPUに割り当てて仮想計算機の処理を実現する情報処理装置であって、
    仮想CPUの処理対象の仮想アドレス空間の切替えが発生したときに、前記複数の物理CPUの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するか否かを判定し、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するときには当該物理CPUを選択する一方、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在しないときには、キャッシュ情報自体が蓄積されていない物理CPUを選択する選択手段と、
    前記選択した物理CPUを、処理対象の仮想アドレス空間の切替えが発生した仮想CPUに割り当てる割当手段と、
    を備えたことを特徴とする情報処理装置。
  6. 複数の物理CPUを備え、当該複数の物理CPUを1又は複数の仮想CPUに割り当てて仮想計算機の処理を実現する情報処理装置が、
    仮想CPUの処理対象の仮想アドレス空間の切替えが発生したときに、前記複数の物理CPUの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するか否かを判定し、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するときには当該物理CPUを選択する一方、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在しないときには、キャッシュ情報自体が蓄積されていない物理CPUを選択し、
    前記選択した物理CPUを、処理対象の仮想アドレス空間の切替えが発生した仮想CPUに割り当てる
    処理を実行することを特徴とする情報処理方法。
JP2012531620A 2010-09-01 2010-09-01 情報処理プログラム、情報処理装置及び情報処理方法 Expired - Fee Related JP5354108B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/064969 WO2012029149A1 (ja) 2010-09-01 2010-09-01 情報処理プログラム、情報処理装置及び情報処理方法

Publications (2)

Publication Number Publication Date
JPWO2012029149A1 JPWO2012029149A1 (ja) 2013-10-28
JP5354108B2 true JP5354108B2 (ja) 2013-11-27

Family

ID=45772285

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012531620A Expired - Fee Related JP5354108B2 (ja) 2010-09-01 2010-09-01 情報処理プログラム、情報処理装置及び情報処理方法

Country Status (3)

Country Link
US (1) US9075721B2 (ja)
JP (1) JP5354108B2 (ja)
WO (1) WO2012029149A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6375602B2 (ja) * 2013-09-18 2018-08-22 日本電気株式会社 消費電力を制御する情報処理装置、電力制御方法、及びそのためのプログラム
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
TWI645293B (zh) * 2017-11-30 2018-12-21 財團法人工業技術研究院 在多根輸入輸出虛擬化環境中虛擬機器即時遷移的方法、系統及其計算主機
JP6958414B2 (ja) * 2018-02-19 2021-11-02 日本電信電話株式会社 仮想リソース管理装置、仮想リソース割り当て方法、仮想リソース割り当てプログラム、および、仮想リソース管理システム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000148518A (ja) * 1998-06-17 2000-05-30 Internatl Business Mach Corp <Ibm> 正確なキャッシュ感応性を可能にするキャッシュ・ア―キテクチャ
JP2001109661A (ja) * 1999-10-14 2001-04-20 Hitachi Ltd キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム
JP2006127462A (ja) * 2004-09-29 2006-05-18 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2007257097A (ja) * 2006-03-22 2007-10-04 Nec Corp 仮想計算機システム及びその物理リソース再構成方法並びにプログラム
JP2009151650A (ja) * 2007-12-21 2009-07-09 Hitachi Ltd 計算機仮想化装置、そのプログラム、及びその方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4322232B2 (ja) * 2005-06-14 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7734900B2 (en) * 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US7739434B2 (en) * 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000148518A (ja) * 1998-06-17 2000-05-30 Internatl Business Mach Corp <Ibm> 正確なキャッシュ感応性を可能にするキャッシュ・ア―キテクチャ
JP2001109661A (ja) * 1999-10-14 2001-04-20 Hitachi Ltd キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム
JP2006127462A (ja) * 2004-09-29 2006-05-18 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2007257097A (ja) * 2006-03-22 2007-10-04 Nec Corp 仮想計算機システム及びその物理リソース再構成方法並びにプログラム
JP2009151650A (ja) * 2007-12-21 2009-07-09 Hitachi Ltd 計算機仮想化装置、そのプログラム、及びその方法

Also Published As

Publication number Publication date
US20130166814A1 (en) 2013-06-27
JPWO2012029149A1 (ja) 2013-10-28
US9075721B2 (en) 2015-07-07
WO2012029149A1 (ja) 2012-03-08

Similar Documents

Publication Publication Date Title
JP5354108B2 (ja) 情報処理プログラム、情報処理装置及び情報処理方法
US9619287B2 (en) Methods and system for swapping memory in a virtual machine environment
KR101893451B1 (ko) 메모리 관리 방법 및 장치
KR101136610B1 (ko) 시퀀서 어드레스 관리
US8271989B2 (en) Method and apparatus for virtual processor dispatching to a partition based on shared memory pages
JP7280508B2 (ja) 情報処理装置、情報処理方法および仮想マシン接続管理プログラム
KR101385827B1 (ko) 가상화된 환경들 내의 리소스 할당
US9996370B1 (en) Page swapping in virtual machine environment
US8868835B2 (en) Cache control apparatus, and cache control method
CN104461735B (zh) 一种虚拟化场景下分配cpu资源的方法和装置
JP2019523920A (ja) ページ・フォールト解決法
US10489204B2 (en) Flexible in-order and out-of-order resource allocation
JP2003167737A (ja) スタック使用方法
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
WO2023216450A1 (zh) 在虚拟化平台中管理tlb高速缓存的方法和装置
WO2010024071A1 (ja) キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム
WO2014141419A1 (ja) 仮想計算機システムおよびスケジューリング方法
JP4409568B2 (ja) 帯域制御プログラム及びマルチプロセッサシステム
JPWO2018235149A1 (ja) ストレージ装置及び記憶領域管理方法
JP4200882B2 (ja) 論理区画の資源動的割り当て変更方法
JP6157719B2 (ja) 計算機
JP5382471B2 (ja) 電力制御方法、計算機システム、及びプログラム
JPH11232174A (ja) データ処理装置

Legal Events

Date Code Title Description
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: 20130730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130812

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees