JP5354108B2 - 情報処理プログラム、情報処理装置及び情報処理方法 - Google Patents
情報処理プログラム、情報処理装置及び情報処理方法 Download PDFInfo
- 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
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 31
- 238000003672 processing method Methods 0.000 title claims 2
- 238000000034 method Methods 0.000 claims abstract description 39
- 230000008569 process Effects 0.000 claims abstract description 28
- 238000006467 substitution reaction Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000010926 purge Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory 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の処理対象の仮想アドレス空間の切替えに連動させて切り替えていた。
しかし、このように同じ物理CPUを仮想CPUに割り当てたまま物理アドレス空間の切替えを繰り返した場合、次のような問題がある。例えば、切替え後の物理アドレス空間が、以前に当該物理CPUが処理したことのある物理アドレス空間であったとしても、その後に当該物理CPUにおいて他の物理アドレス空間の処理が行われていれば、切替え後の物理アドレス空間のキャッシュ情報は当然に残っていない。このため、少なくとも物理CPUに切替え後の物理アドレス空間のキャッシュ情報が再度蓄積されるまでの間、メモリアクセス効率が低下するという問題があった。
以上のような問題点に鑑み、本技術は、仮想CPUの処理対象となる仮想アドレス空間の切替え時において、物理CPUの割当てを適切に行うことで、物理CPUにおけるメモリアクセス効率の低下を軽減することを目的とする。
本技術は、複数の物理CPUを備え、当該複数の物理CPUを1又は複数の仮想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)管理テーブルの使用状態が「使用中」である
(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)の経過にともなう物理CPU101及び物理CPU102の処理状態の遷移を示した説明図である。
<1>本具体例では、図2に示す仮想計算機22で動作するゲストOS24上で、プログラム401及びプログラム402が、仮想CPU201を共有しつつ交互に実行されているものとする。現時点で、仮想CPU201は、プログラム401の仮想アドレス空間を処理対象としており、仮想CPU201の制御レジスタ211には、ページテーブル501のアドレスが代入されている。一方、仮想CPU201には物理CPU101が割り当てられており、物理CPU101の制御レジスタ111には、ページテーブル501との間で対応関係を有するシャドウページテーブル601のアドレス(0x0DD0F000)が代入されている。このとき、管理テーブル30の内容は、図6(A)に示す状態となっている。
<1>本具体例では、図2に示す仮想計算機22で動作するゲストOS24上で、プログラム401及びプログラム402が、仮想CPU201を共有しつつ交互に実行されているものとする。現時点で、仮想CPU201は、プログラム401の仮想アドレス空間を処理対象としており、仮想CPU201の制御レジスタ211には、ページテーブル501のアドレスが代入されている。一方、仮想CPU201には物理CPU101が割り当てられており、物理CPU101の制御レジスタ111には、ページテーブル501との間で対応関係を有するシャドウページテーブル601のアドレス(0x0DD0F000)が代入されている。このとき、管理テーブル30の内容は、図6(A)に示す状態となっている。
<2>そして、プログラム401からプログラム402へのディスパッチが行われるとき、ゲストOS24における空間切替部26は、仮想CPU201の処理対象の仮想アドレス空間の切替えを行う。具体的には、空間切替部26は、仮想CPU201の制御レジスタ211に対し、プログラム402のアドレス空間を示すページテーブル502のアドレスを代入する代入命令を実行する。
一方、ハイパーバイザ23の命令捕捉部27は、かかる仮想CPU201の制御レジスタ211に対するページテーブル502のアドレスの代入命令を捕捉する。そして、物理CPU切替部29は、管理テーブル30を参照し、物理CPU101〜nのうち、(1)使用状態が「使用中」であり、(2)シャドウページテーブルアドレスが、ディスパッチ後に仮想CPU201で実行するプログラム402の仮想アドレス空間を示すページテーブル502との間で対応関係を有するシャドウページテーブル602のアドレス(0x0DF00000)であり、(3)更新カウンタがシャドウページテーブル602の更新カウンタ702と同一の物理CPU10を検索する。なお、この段階で更新カウンタ702は0であるとする。ここで、図6(A)に示す管理テーブル30の状態では、(1)〜(3)の条件を全て満たす物理CPU10は存在しない。このため、物理CPU切替部29は、使用状態が「未使用」の物理CPU102を仮想CPU201に割り当て、物理CPU102の制御レジスタ112に対し、シャドウページテーブル602のアドレス(0x0DF00000)を代入する。そして、物理CPU切替部29は、管理テーブル30のレコードのうち、物理CPU102のレコードのシャドウページテーブルアドレスをシャドウページテーブル602のアドレス(0x0DF00000)に変更し、使用状態を「未使用」から「割当て中」に変更する。さらに、物理CPU切替部29は、物理CPU101のレコードの使用状態を「割当て中」から「使用中」に変更する。図6(B)は、かかる更新が行われた後の管理テーブル30の内容を示す。
<3>かかる処理の結果、物理CPU102が仮想CPU201に割り当てられ、シャドウページテーブル602が示す物理アドレス空間の処理、すなわち、プログラム402の処理が実行される。この処理の実行中、上述のように、管理テーブル30において、物理CPU101に対応するレコードのシャドウページテーブルアドレスにはシャドウページテーブル601のアドレス(0x0DD0F000)が設定され、使用状態は「使用中」になっている。このため、当該物理CPU101は、他の物理アドレス空間の処理に対して割り当てられることはない。したがって、物理CPU101のキャッシュ121やTLB131には、シャドウページテーブル601のアドレス空間のキャッシュ情報が保持されたままとなっている。
<4>そして、再度、プログラム402からプログラム401へのディスパッチが行われるとき、空間切替部26は、仮想CPU201の処理対象の仮想アドレス空間の切替えを行う。具体的には、空間切替部26は、仮想CPU201の制御レジスタ211に対し、プログラム401の仮想アドレス空間を示すページテーブル501のアドレスを代入する。
一方、ハイパーバイザ23の命令捕捉部27は、かかる仮想CPU201の制御レジスタ211に対するアドレスの代入命令を捕捉する。そして、物理CPU切替部29は、管理テーブル30を参照し、物理CPU101〜nのうち、(1)使用状態が「使用中」であり、(2)シャドウページテーブルアドレスが、ディスパッチ後に仮想CPU201で実行するプログラム401の仮想アドレス空間を示すページテーブル501との間で対応関係を有するシャドウページテーブル601のアドレス(0x0DD0F000)であり、(3)更新カウンタがシャドウページテーブル601の更新カウンタ701と同一の物理CPU10を検索する。なお、この段階で更新カウンタ701は3であるとする。ここで、図6(B)に示す管理テーブル30に基づけば、物理CPU101がこれらの条件を満たしている。このため、物理CPU切替部29は、物理CPU101を仮想CPU201に割り当てる。そして、物理CPU切替部29は、管理テーブル30のレコードのうち、物理CPU102のレコードの使用状態を「割当て中」から「使用中」に変更する一方、物理CPU101のレコードの使用状態を「使用中」から「割当て中」に変更する。図6(C)は、かかる更新が行われた後の管理テーブル30の内容を示す。
<5>かかる処理の結果、物理CPU101が仮想CPU201に割り当てられ、再び、シャドウページテーブル601が示す物理アドレス空間の処理、すなわち、プログラム401の処理が実行される。
ここで、図7(B)は、従来のCPU割当方法により、物理CPU101のみを用いて処理を行う場合の物理CPU101の処理状態を示す。従来のCPU割当方法によれば、プログラム401からプログラム402へのディスパッチが発生した後、再度プログラム401へのディスパッチが発生した場合、物理CPU101のキャッシュ121及びTLB131は、すでにプログラム402の物理アドレス空間のキャッシュ情報に書き換わっている。このため、プログラム401へのディスパッチの直後は、プログラム401のアドレス空間のキャッシュ情報がキャッシュ121及びTLB131に蓄積されていないため、メモリアクセス処理が遅延するおそれがある。
一方、図7(A)の<5>の説明に戻ると、物理CPU101が再度仮想CPU201に割り当てられるときに、物理CPU101のキャッシュ121及びTLB131には、シャドウページテーブル601が示す物理アドレス空間のキャッシュ情報が保持されたままとなっている。このため、物理CPU101は、仮想アドレス空間の切替えの直後においても、キャッシュ121及びTLB131に蓄積されたキャッシュ情報を用いてプログラム401を実行することができる。したがって、プログラム401へのディスパッチの直後であっても、メモリアクセスの遅延が低減される。
ここで、上記実施例においては、各物理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 更新カウンタ
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)
- 複数の物理CPUを備え、当該複数の物理CPUを1又は複数の仮想CPUに割り当てて仮想計算機の処理を実現する情報処理装置が、
仮想CPUの処理対象の仮想アドレス空間の切替えが発生したときに、前記複数の物理CPUの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するか否かを判定し、
当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するときには当該物理CPUを選択する一方、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在しないときには、キャッシュ情報自体が蓄積されていない物理CPUを選択し、
前記選択した物理CPUを、処理対象の仮想アドレス空間の切替えが発生した仮想CPUに割り当てる
処理を実行することを特徴とする情報処理プログラム。 - 前記物理CPUを選択する処理は、記憶手段に格納された、前記複数の物理CPUのそれぞれに蓄積されているキャッシュ情報に関連する物理アドレス空間を示すデータを参照して、物理CPUを選択することを特徴とする請求項1記載の情報処理プログラム。
- 前記物理CPUを選択する処理によりキャッシュ情報自体が蓄積されていない物理CPUが選択されたときには、前記データのうち当該選択された物理CPUに対応するデータが示す物理アドレス空間を、前記切替え先の仮想アドレス空間に対応する物理アドレス空間に変更して当該データを更新する処理を実行することを特徴とする請求項2記載の情報処理プログラム。
- 仮想アドレス空間の空間構成が更新されたときに、当該仮想アドレス空間に対応する物理アドレス空間の空間構成の更新回数を示す更新カウンタを更新する一方、前記仮想CPUに割り当てる処理により物理CPUが仮想CPUに割り当てられたときに、当該物理CPUが仮想CPUに割り当てられる前まで処理対象であった物理アドレス空間の空間構成の更新カウンタの値を、当該物理CPUに対応付けて記憶手段に格納する処理を実行し、
前記物理CPUを選択する処理は、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するときに、当該物理CPUに対応付けて記憶装置に格納された更新カウンタの値及び切替え先の仮想アドレス空間に対応する物理アドレス空間の空間構成の更新カウンタの値が一致するときにのみ、当該物理CPUを選択することを特徴とする請求項1記載の情報処理プログラム。 - 複数の物理CPUを備え、当該複数の物理CPUを1又は複数の仮想CPUに割り当てて仮想計算機の処理を実現する情報処理装置であって、
仮想CPUの処理対象の仮想アドレス空間の切替えが発生したときに、前記複数の物理CPUの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するか否かを判定し、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するときには当該物理CPUを選択する一方、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在しないときには、キャッシュ情報自体が蓄積されていない物理CPUを選択する選択手段と、
前記選択した物理CPUを、処理対象の仮想アドレス空間の切替えが発生した仮想CPUに割り当てる割当手段と、
を備えたことを特徴とする情報処理装置。 - 複数の物理CPUを備え、当該複数の物理CPUを1又は複数の仮想CPUに割り当てて仮想計算機の処理を実現する情報処理装置が、
仮想CPUの処理対象の仮想アドレス空間の切替えが発生したときに、前記複数の物理CPUの中に、切替え先の仮想アドレス空間に対応する物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するか否かを判定し、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在するときには当該物理CPUを選択する一方、当該物理アドレス空間のキャッシュ情報が蓄積されている物理CPUが存在しないときには、キャッシュ情報自体が蓄積されていない物理CPUを選択し、
前記選択した物理CPUを、処理対象の仮想アドレス空間の切替えが発生した仮想CPUに割り当てる
処理を実行することを特徴とする情報処理方法。
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)
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)
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)
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 |
-
2010
- 2010-09-01 JP JP2012531620A patent/JP5354108B2/ja not_active Expired - Fee Related
- 2010-09-01 WO PCT/JP2010/064969 patent/WO2012029149A1/ja active Application Filing
-
2013
- 2013-02-25 US US13/775,317 patent/US9075721B2/en not_active Expired - Fee Related
Patent Citations (5)
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 |