JP6515779B2 - キャッシュ方法、キャッシュプログラム及び情報処理装置 - Google Patents

キャッシュ方法、キャッシュプログラム及び情報処理装置 Download PDF

Info

Publication number
JP6515779B2
JP6515779B2 JP2015205339A JP2015205339A JP6515779B2 JP 6515779 B2 JP6515779 B2 JP 6515779B2 JP 2015205339 A JP2015205339 A JP 2015205339A JP 2015205339 A JP2015205339 A JP 2015205339A JP 6515779 B2 JP6515779 B2 JP 6515779B2
Authority
JP
Japan
Prior art keywords
memory
processor
cache
access
data
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.)
Active
Application number
JP2015205339A
Other languages
English (en)
Other versions
JP2017078881A (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
Priority to JP2015205339A priority Critical patent/JP6515779B2/ja
Priority to US15/277,311 priority patent/US20170109278A1/en
Publication of JP2017078881A publication Critical patent/JP2017078881A/ja
Application granted granted Critical
Publication of JP6515779B2 publication Critical patent/JP6515779B2/ja
Active 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
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

Description

本発明は、キャッシュ方法、キャッシュプログラム及び情報処理装置に関する。
クラウドサービス等を提供するためのシステムにおいては、プロセッサ及びメモリ等のハードウエア上で動作する仮想化ソフトウエア(例えばハイパバイザ)によって、各顧客のVM(Virtual Machine)が生成される。VMに割り当てられるプロセッサのコア数及びメモリサイズは契約等により決められるが、顧客の要求に応じて柔軟に変更することも可能である。
上記のようなシステムは通常はマルチプロセッサシステムであるが、マルチプロセッサシステムにおいては、リモートメモリへのアクセスが発生することが原因でVMのパフォーマンスが低下するという問題がある。ここで言う「リモートメモリ」とは、着目するプロセッサに接続されていないメモリのことである。このような問題に対して有効な技術を提示した文献は知られていない。
特表2009−537921号公報
本発明の目的は、1つの側面では、リモートメモリに格納されたデータへのアクセスを高速化するための技術を提供することである。
本発明に係る情報処理装置は、第1プロセッサと、第1プロセッサに接続されたメモリと、メモリに対するアクセスを行う仮想マシンを実行する第2プロセッサとを有する。そして、上で述べた第1プロセッサが、仮想マシンがアクセスするメモリの領域からデータを読み出し、読み出したデータを、第1プロセッサのキャッシュに格納する処理を実行する。
1つの側面では、リモートメモリに格納されたデータへのアクセスを高速化できるようになる。
図1は、リモートメモリについて説明するための図である。 図2は、第1の実施の形態の情報処理装置の構成図である。 図3は、第1の実施の形態のリモートアクセス管理部が実行する処理の処理フローを示す図である。 図4は、CPUパッケージの割当とメモリの割当とを特定するためのデータの一例を示す図である。 図5は、アクセスデータ収集部が実行する処理の処理フローを示す図である。 図6は、EPTを使用した変換について説明するための図である。 図7は、アクセステーブルに格納されるデータの一例を示す図である。 図8は、アクセス管理テーブルに格納されるデータの一例を示す図である。 図9は、キャッシュミスデータ収集部が実行する処理の処理フローを示す図である。 図10は、キャッシュミステーブルに格納されるデータの一例を示す図である。 図11は、キャッシュミス管理テーブルに格納されるデータの一例を示す図である。 図12は、第1の実施の形態のキャッシュフィル部が実行する処理の処理フローを示す図である。 図13は、レイテンシの短縮について説明するための図である。 図14Aは、第2の実施の形態の情報処理装置の構成図である。 図14Bは、メモリアクセス監視部の構成図である。 図15は、第2の実施の形態のリモートアクセス管理部が実行する処理の処理フローを示す図である。 図16は、フィルタテーブルに格納されるデータの一例を示す図である。 図17は、メモリアクセス監視部が実行する処理の処理フローを示す図である。 図18は、アクセス履歴テーブルに格納されるデータの一例を示す図である。 図19は、第2の実施の形態のキャッシュフィル部が実行する処理の処理フローを示す図である。 図20は、第3の実施の形態の情報処理装置の構成図である。
例えばIaaS(Infrastructure as a Service)を提供するシステムにおいては、VM(Virtual Machine)に割り当てられるCPU(Central Processing Unit)コアの数とメモリサイズとが顧客の要求に応じて決定される。ここで、図1に示すような情報処理装置1000を考える。情報処理装置1000は、CPU10pと、CPU10pに接続されたメモリ10mと、CPU20pと、CPU20pに接続されたメモリ20mとを有しており、これらのハードウエア上でハイパバイザ100が動作する。ハイパバイザ100はVM120を生成する。
図1の例においては、CPUに関しては、VM120にCPU10pのコアだけが割り当てられるケース、VM120にCPU20pのコアだけが割り当てられるケース、及びVM120にCPU10pのコアとCPU20pのコアとが割り当てられるケースのいずれもが発生し得る。また、メモリに関しては、VM120にメモリ10mだけが割り当てられるケース、VM120にメモリ20mだけが割り当てられるケース、及びVM120にメモリ10mとメモリ20mとが割り当てられるケースのいずれもが発生し得る。
すると、VM120に割り当てられていないCPUに接続されたメモリ(すなわちリモートメモリ)がVM120に割り当てられる場合がある。例えば、VM120にCPU10pが割り当てられており且つVM120にメモリ10m及び20mが割り当てられている場合、メモリ20mはリモートメモリである。
なお、リモートメモリは、IaaSを提供するシステムだけでなくその他のシステムにおいても生じることがある。例えばライセンスの料金がコアの数に応じて決定されるシステムにおいては、VMに割り当てるコアの数を制限し且つメモリサイズを大きくする場合があり、このような場合にリモートメモリが生じる。
以下では、リモートメモリに格納されたデータへのアクセスを高速化するための方法を説明する。
[実施の形態1]
図2に、第1の実施の形態の情報処理装置1の構成図を示す。情報処理装置1は、CPUパッケージ1pと、例えばDIMM(Dual Inline Memory Module)であるメモリ1mと、CPUパッケージ2pと、例えばDIMMであるメモリ2mとを有する。メモリ1mはCPUパッケージ1pに接続され、メモリ2mはCPUパッケージ2pに接続される。情報処理装置1は、PCI(Peripheral Component Interconnect) Expressの規格に対応している。
CPUパッケージ1pは、コア11c乃至14cと、キャッシュ1aと、メモリコントローラ(図2においては「MC」と略されている)1bと、I/O(Input/Output)コントローラ(図2においては「IOC」と略されている)1rと、キャッシュコヒーレントインタフェース(図2においては「CCI」と略されている)1qとを有する。同様に、CPUパッケージ2pは、コア21c乃至24cと、キャッシュ2aと、メモリコントローラ2bと、I/Oコントローラ2rと、キャッシュコヒーレントインタフェース2qとを有する。
コア11c乃至14c及びコア21c乃至24cは、プログラムの命令を実行する。
キャッシュ1a及び2aは、コアによるメモリアクセスに関する情報(例えば、アドレス及びデータそのもの)を格納する記憶領域である。第1の実施の形態においては、各CPUパッケージはL(Level)1キャッシュ、L2キャッシュ及びL3キャッシュを有するが、コア間で共有されるキャッシュはL3キャッシュである。
メモリコントローラ1b及び2bはメモリに対するアクセスを制御するコントローラであり、メモリコントローラ1bはメモリ1mに接続され、メモリコントローラ2bはメモリ2mに接続される。
I/Oコントローラ1r及び2rは、PCI Express等のI/Oインタフェースに接続するためのコントローラであり、CPUパッケージ内で使用されるプロトコルをI/Oインタフェースのプロトコルに変換する処理等を実行する。
キャッシュコヒーレントインタフェース1q及び2qは、例えばIntel QPI(Quick Path Interconnect)或いはHyper Transport等である。キャッシュコヒーレントインタフェース1q及び2qは、例えばキャッシュコヒーレンシを保つための通信など、他のCPUパッケージとの通信を行う。
ハイパバイザ10のプログラムは、メモリ1m及び2mの少なくともいずれかに格納され、CPUパッケージ1pのコア及びCPUパッケージ2pのコアの少なくともいずれかに実行される。ハイパバイザ10は、VM12に対するハードウエアの割当を管理する。ハイパバイザ10は、ゲストアドレスを物理アドレスに変換するためのテーブルである変換テーブル101と、アクセスデータ収集部102と、キャッシュミスデータ収集部103と、リモートアクセス管理部104と、キャッシュフィル部105とを含む。アクセスデータ収集部102は、アクセス管理テーブル1021とアクセステーブル1022とを管理する。キャッシュミスデータ収集部103は、キャッシュミス管理テーブル1031とキャッシュミステーブル1032とを管理する。変換テーブル101、アクセス管理テーブル1021、アクセステーブル1022、キャッシュミス管理テーブル1031及びキャッシュミステーブル1032については後述する。
VM12は、仮想化されたCPUであるv(virtualized)CPU1v及びvCPU2vと、仮想化された物理メモリであるゲスト物理メモリ1gとを含む。仮想化されたハードウエア上ではゲストOS(Operating System)が動作する。
第1の実施の形態においては、vCPU1vはコア11cによって実現され、vCPU2vはコア12cによって実現され、ゲスト物理メモリ1gはメモリ1m及び2mによって実現されるとする。すなわち、VM12に対してリモートメモリ(ここでは、メモリ2m)が割り当てられているとする。キャッシュフィル部105はプログラムがコア24cに実行されることにより実現される。但し、キャッシュフィル部105のプログラムが複数のコアに実行されてもよい。アクセスデータ収集部102のプログラム、キャッシュミスデータ収集部103のプログラム及びリモートアクセス管理部104のプログラムはいずれのコアに実行されてもよい。
次に、図3乃至図12を用いて、情報処理装置1の動作を説明する。
まず、図3及び図4を用いて、VM12の生成時にリモートアクセス管理部104が実行する処理を説明する。ハイパバイザ10によってVM12が生成された場合、リモートアクセス管理部104は、生成されたVM12(以下、対象VMと呼ぶ)に対するCPUパッケージの割当とメモリの割当とを特定する(図3:ステップS1)。
通常、ハイパバイザ10は図4に示すようなデータを管理している。そして、ステップS1においては、図4に示すようなデータによってCPUパッケージの割当とメモリの割当とが特定される。図4の例では、VMの識別子であるVMIDと、VMのvCPU番号と、VMに割り当てられたコアを含むCPUパッケージの番号と、VMに割り当てられたコアの番号と、VM用の変換テーブルのアドレスと、VMに割り当てられたメモリに接続されたCPUパッケージの番号とが管理される。図4の例では、VMIDが「1」であるVMが、番号が「1」であるCPUパッケージのメモリを常にリモートメモリとして使用する。
図3の説明に戻り、リモートアクセス管理部104は、対象VMはリモートメモリアクセスを実行するか判定する(ステップS3)。リモートメモリアクセスとは、VMがリモートメモリに対してアクセスすることである。
対象VMがリモートメモリアクセスを実行しない場合(ステップS3:Noルート)、処理は終了する。一方、対象VMがリモートメモリアクセスを実行する場合(ステップS3:Yesルート)、リモートアクセス管理部104は、アクセスデータ収集部102に、対象VMによるアクセスに関するデータの収集指示を出力する(ステップS5)。本収集指示は、対象VMのVMID、実行間隔の指定及び世代番号の指定を含む。アクセスデータ収集部102が実行する処理については後述する。
リモートアクセス管理部104は、キャッシュミスデータ収集部103に、対象VMが使用するコアのキャッシュミスに関するデータの収集指示を出力する(ステップS7)。本収集指示は、図4に示したデータにおける、対象VMに割り当てられたコアの番号、対象VMのVMID、待機時間の指定及び世代番号の指定を含む。キャッシュミスデータ収集部103が実行する処理については後述する。
リモートアクセス管理部104は、キャッシュフィル部105に、リモートメモリ(第1の実施の形態においては、メモリ2m)に接続されたCPUパッケージのコア(ここでは、コア24cとする)を割り当てる(ステップS9)。ステップS9においては、キャッシュフィル部105のプログラムを実行することがコア24cに指示される。これにより、コア24cは、実行指示の待ち状態に移行する。
リモートアクセス管理部104は、キャッシュフィル部105に、アルゴリズムA乃至Cを使用したキャッシュフィル処理の実行指示を出力する(ステップS11)。そして処理は終了する。実行指示は、待機時間の指定を含む。
以上のような処理によって、リモートメモリへのアクセスを行うVMについて、アクセスデータ収集部102、キャッシュミスデータ収集部103及びキャッシュフィル部105が処理を実行開始できるようになる。
次に、図5乃至図8を用いて、アクセスデータ収集部102が実行する処理を説明する。まず、リモートアクセス管理部104からの収集指示を受け取ると、アクセスデータ収集部102は、対象VMについてアクセステーブル1022を生成する(図5:ステップS21)。アクセステーブル1022は、ステップS21の段階では空である。なお、アクセステーブル1022の管理に使用するテーブルとして、ステップS21においてはアクセス管理テーブル1021も生成される。
アクセスデータ収集部102は、対象VMが停止するまで待機する(ステップS23)。本実施の形態においては、対象VMは稼働と停止とを頻繁に繰り返しているとする。
アクセスデータ収集部102は、リモートアクセス管理部104からの収集指示において指定された実行間隔が経過したか判定する(ステップS25)。
リモートアクセス管理部104からの収集指示において指定された実行間隔が経過していない場合(ステップS25:Noルート)、ステップS23の処理に戻る。一方、リモートアクセス管理部104からの収集指示において指定された実行間隔が経過した場合(ステップS25:Yesルート)、アクセスデータ収集部102は、対象VMについての変換テーブル101に基づき、リモートメモリへのアクセスに関するデータをアクセステーブル1022に書き込む(ステップS27)。また、アクセスデータ収集部102は、アクセス管理テーブル1021を更新すべき場合にはアクセス管理テーブル1021を更新する。
上で述べたように、変換テーブル101はゲストアドレスを物理アドレスに変換するためのテーブルであり、例えばIntel社のプロセッサに実装されているEPT(Extended Page Table)である。変換テーブル101においては、ゲスト物理アドレスに対応するホスト物理アドレスがページ毎に管理されている。ゲストOSがゲスト物理アドレスにアクセスする場合、コアは自動的に変換テーブル101を参照し、ゲスト物理アドレスに対応するホスト物理アドレスを算出して、ホスト物理アドレスに対してアクセスを行う。変換テーブルにはアクセスビット及びダーティビットが備えられているため、ゲストOSがページからデータを読み出したこと及びページに書き込みをしたことをハイパバイザ10が把握することができる。
図6を用いて、EPTを使用した変換について簡単に説明する。図6においては、48ビットのゲスト物理アドレスが48ビットのホスト物理アドレスに変換される。ゲスト物理アドレスの39ビット目から47ビット目までの情報によって、EPTのページディレクトリポインタテーブルのエントリが特定される。特定されたエントリによって、EPTのページディレクトリが特定され、ゲスト物理アドレスの30ビット目から38ビット目までの情報によって、ページディレクトリのエントリが特定される。特定されたエントリによって、EPTのページテーブルが特定され、ゲスト物理アドレスの21ビット目から29ビット目までの情報によって、ページテーブルのエントリが特定される。特定されたエントリによって、最後のテーブルが特定され、ゲスト物理アドレスの12ビット目から20ビット目までの情報によって、そのテーブルのエントリが特定される。最後に特定されたエントリに含まれる情報は、ホスト物理アドレスの12ビット目から47ビット目の情報として使用される。また、この情報にはアクセスビットとダーティビットとが付加されている。アクセスビットは読み込みのアクセスを表し、ダーティビットは書き込みのアクセスを表す。ゲスト物理アドレスの0ビット目から11ビット目までの情報は、ホスト物理アドレスの0ビット目から11ビット目までの情報として使用される。
ステップS27においては、対象VMによるアクセスに関するデータが変換テーブル101から収集される。図7に、アクセステーブル1022に格納されるデータの一例を示す。図7の例では、エントリの番号と、エントリが生成された世代を表す番号と、エントリに対応するメモリ領域の開始アドレス(図7においては、開始アドレスを含むページの情報)と、アクセスタイプの比率と、アクセス回数とが格納される。アクセステーブル1022は、VM毎に用意される。なお、アクセステーブル1022には、リモートメモリのメモリ領域についてのみエントリが生成される。これにより、使用リソース量を削減することができる。
図8に、アクセス管理テーブル1021に格納されるデータの一例を示す。図8の例では、VMIDと、アクセステーブル1022に格納されたエントリの世代番号の範囲と、アクセステーブル1022に格納されたエントリのエントリ番号の範囲と、1エントリに対応するメモリ領域のサイズとが格納される。第1の実施の形態においては、EPTにおけるページのサイズ以上のサイズでメモリ領域が管理される。これにより、管理用のデータとしてEPTを使用した場合と比較して、処理オーバーヘッド及び使用リソース量を削減することができる。
図5の説明に戻り、アクセスデータ収集部102は、対象VMに対応する変換テーブル101のアクセスビット及びダーティビットをクリアする(ステップS29)。
アクセスデータ収集部102は、アクセステーブル1022に格納されている最新の世代番号が、リモートアクセス管理部104からの収集指示において指定された世代番号以上であるか判定する(ステップS31)。
アクセステーブル1022に格納されている最新の世代番号が、リモートアクセス管理部104からの収集指示において指定された世代番号以上ではない場合(ステップS31:Noルート)、ステップS35の処理に移行する。一方、アクセステーブル1022に格納されている最新の世代番号が、リモートアクセス管理部104からの収集指示において指定された世代番号以上である場合(ステップS31:Yesルート)、アクセスデータ収集部102は、アクセステーブル1022に格納されているエントリのうち、最も古い世代のエントリを削除する(ステップS33)。
アクセスデータ収集部102は、リモートアクセス管理部104から収集の終了指示を受け取ったか判定する(ステップS35)。リモートアクセス管理部104から収集の終了指示を受け取っていない場合(ステップS35:Noルート)、ステップS23の処理に戻る。一方、リモートアクセス管理部104から収集の終了指示を受け取った場合(ステップS35:Yesルート)、アクセスデータ収集部102は、対象VMについてのアクセステーブル1022を削除する(ステップS37)。これに伴い、対象VMについてのアクセス管理テーブル1021も削除される。そして処理は終了する。
以上のような処理を実行すれば、対象VMがリモートメモリへアクセスした場合にそのアクセスに関するデータを収集することができるようになる。生成されたアクセステーブル1022は、キャッシュフィル部105の処理に使用される。
次に、図9乃至図11を用いて、キャッシュミスデータ収集部103が実行する処理を説明する。まず、リモートアクセス管理部104からの収集指示を受け取ると、キャッシュミスデータ収集部103は、対象VMについてキャッシュミステーブル1032を生成する(図9:ステップS41)。キャッシュミステーブル1032は、ステップS41の段階では空である。なお、キャッシュミステーブル1032の管理に使用するテーブルとして、ステップS41においてはキャッシュミス管理テーブル1031も生成される。
キャッシュミスデータ収集部103は、リモートアクセス管理部104からの収集指示において指定された時間(例えば100ミリ秒)待機する(ステップS43)。
キャッシュミスデータ収集部103は、対象VMに割り当てられているCPUパッケージから、キャッシュミス回数及びキャッシュヒット回数を取得し、取得したキャッシュミス回数及びキャッシュヒット回数をキャッシュミステーブル1032に書き込む(ステップS45)。CPUパッケージは、キャッシュミス回数のカウンタレジスタ及びキャッシュヒット回数のカウンタレジスタを有しているものとする。また、キャッシュミスデータ収集部103は、キャッシュミス管理テーブル1031を更新すべき場合にはキャッシュミス管理テーブル1031を更新する。
図10に、キャッシュミステーブル1032に格納されるデータの一例を示す。図10の例では、エントリの番号と、エントリが生成された世代を表す番号と、その世代においてVMのvCPUのスヌープミスの回数の合計であるキャッシュミス回数と、その世代においてVMのvCPUがL3キャッシュを参照した回数の合計であるキャッシュヒット回数と、キャッシュフィル部105が採用するアルゴリズムを示す情報とが格納される。
図11に、キャッシュミス管理テーブル1031に格納されるデータの一例を示す。図11の例では、VMIDと、キャッシュミステーブル1032に格納されたエントリの世代番号の範囲と、キャッシュミステーブル1032に格納されたエントリ番号の範囲とが格納される。
図9の説明に戻り、キャッシュミスデータ収集部103は、キャッシュミステーブル1032に格納されている最新の世代番号が、リモートアクセス管理部104からの収集指示において指定された世代番号以上であるか判定する(ステップS47)。
キャッシュミステーブル1032に格納されている最新の世代番号が、リモートアクセス管理部104からの収集指示において指定された世代番号以上ではない場合(ステップS47:Noルート)、ステップS51の処理に移行する。一方、キャッシュミステーブル1032に格納されている最新の世代番号が、リモートアクセス管理部104からの収集指示において指定された世代番号以上である場合(ステップS47:Yesルート)、キャッシュミスデータ収集部103は、キャッシュミステーブル1032に格納されているエントリのうち、最も古い世代のエントリを削除する(ステップS49)。
キャッシュミスデータ収集部103は、リモートアクセス管理部104から収集の終了指示を受け取ったか判定する(ステップS51)。リモートアクセス管理部104から収集の終了指示を受け取っていない場合(ステップS51:Noルート)、ステップS43の処理に戻る。一方、リモートアクセス管理部104から収集の終了指示を受け取った場合(ステップS51:Yesルート)、キャッシュミスデータ収集部103は、対象VMについてのキャッシュミステーブル1032を削除する(ステップS53)。これに伴い、対象VMについてのキャッシュミス管理テーブル1031も削除される。そして処理は終了する。
以上のような処理を実行すれば、対象VMに割り当てられたCPUパッケージのキャッシュミス回数等の情報を、キャッシュフィル部105に使用させることができるようになる。
次に、図12を用いて、キャッシュフィル部105が実行する処理を説明する。まず、キャッシュフィル部105は、リモートアクセス管理部104から指定された時間(例えば100ミリ秒)待機する(図12:ステップS61)。
キャッシュフィル部105は、キャッシュミスデータ収集部103により生成されたキャッシュミステーブル1032に格納されたデータに基づき、直近の2世代のキャッシュミス率の平均がその前の2世代のキャッシュミス率の平均より高いか判定する(ステップS63)。キャッシュミス率は、(キャッシュミス回数)/(キャッシュミス回数+キャッシュヒット回数)によって算出される。
直近の2世代のキャッシュミス率の平均がその前の2世代のキャッシュミス率の平均より高くない場合(ステップS65:Noルート)、ステップS69の処理に移行する。一方、直近の2世代のキャッシュミス率の平均がその前の2世代のキャッシュミス率の平均より高い場合(ステップS65:Yesルート)、キャッシュフィル部105は、アルゴリズムを切り替える(ステップS67)。例えば、アルゴリズムが「アルゴリズムA」である場合には「アルゴリズムB」に切り替えられ、アルゴリズムが「アルゴリズムB」である場合には「アルゴリズムC」に切り替えられ、アルゴリズムが「アルゴリズムC」である場合には「アルゴリズムA」に切り替えられる。切替前のアルゴリズムの情報はキャッシュミステーブル1032に格納されている。ステップS67の処理によって、キャッシュミスがより少なくなるようなアクセス方法によってアクセスを行うことができるようになる。
キャッシュフィル部105は、キャッシュミステーブル1032に、切替後のアルゴリズムの情報を書き込む(ステップS69)。
キャッシュフィル部105は、アクセステーブル1022に格納されたデータに基づき、採用しているアルゴリズムの決定方法に従ってアクセスされるメモリ領域の範囲(以下、メモリ範囲と呼ぶ)を設定する(ステップS71)。ステップS71の処理によって、アクセスされる可能性があるメモリ範囲からデータを読み出すことができるようになる。
アルゴリズムAにおいては、最新の世代のエントリのうちリードアクセスの比率が最も高いエントリが示すメモリ範囲に設定される。該当エントリが複数存在する場合、最もアクセス数が多いエントリが選択されるとする。アルゴリズムBにおいては、最新の世代のエントリのうちリードアクセスの比率が高いエントリから順に3つのエントリが選択され、その3つのエントリが示すメモリ範囲に設定される。アルゴリズムCにおいては、直近の世代のエントリの開始アドレスとその前の世代のエントリの開始アドレスとが連続しているか判定される。連続している場合にはその2エントリが示すメモリ範囲と、そのメモリ範囲に連続するメモリ範囲とに設定される。例えば、第(n−1)世代のエントリの開始アドレスが50GBであり且つ第n世代のエントリの開始アドレスが51GBである場合、その2つのエントリが示すメモリ範囲と、開始アドレスが52GBであるメモリ範囲とに設定される。また、例えば第(n−1)世代のエントリの開始アドレスが50GBであり且つ第n世代のエントリの開始アドレスが49GBである場合、その2つのエントリが示すメモリ範囲と、開始アドレスが48GBであるメモリ範囲とに設定される。
キャッシュフィル部105は、設定されたメモリ範囲から、採用しているアルゴリズムのアクセス方法でデータを読み出すことをメモリコントローラ(ここでは、メモリコントローラ2b)に指示する(ステップS73)。アルゴリズムAにおいては、設定されたメモリ範囲からランダムに、L3キャッシュサイズ分のデータをキャッシュラインサイズ(例えば64バイト)ずつ読み出す。アルゴリズムB及びCについても同様とする。但し、各アルゴリズムのアクセス方法が異なってもよい。
メモリコントローラ2bは、ステップS73において読み出したデータをリモートメモリに接続されたCPUパッケージのキャッシュ(第1の実施の形態においては、キャッシュ2a)に格納する(ステップS75)。なお、本処理はキャッシュフィル部105の処理ではないので、ステップS75のブロックは破線で示されている。
キャッシュフィル部105は、リモートアクセス管理部104から処理の終了指示を受け取ったか判定する(ステップS77)。処理の終了指示を受け取っていない場合(ステップS77:Noルート)、ステップS61の処理に戻る。処理の終了指示を受け取った場合(ステップS77:Yesルート)、処理は終了する。
なお、情報処理装置1においてVM12上のゲストOSがメモリ2mのアドレスXにおけるデータ(以下、対象データと呼ぶ)を読み出すとき、キャッシュを考慮すると以下の4つのケースのいずれかになると考えられる。
(1)キャッシュ1a及びキャッシュ2aのいずれにも対象データが存在しない
(2)キャッシュ1aに対象データが存在する
(3)キャッシュ2aに対象データが存在する
(4)キャッシュ1a及びキャッシュ2aの両方に対象データが存在する
より詳細には、キャッシュ上のデータがメモリ2m上のデータと一致するか否かによって場合分けをすることができるが、本実施の形態には関係が無いのでここでは述べない。
一般に、キャッシュコヒーレントプロトコルとしてMESIF(Modified, Exclusive, Shared, Invalid, Forwarding)プロトコルを採用するCPUにおいては、(2)及び(4)、(3)、(1)の順にレイテンシが短い。(1)については、キャッシュコヒーレントインターコネクトを経由するオーバーヘッド及びメモリコントローラがメモリから対象データを読み出すオーバーヘッドが有るため、レイテンシが長くなる。(3)については、キャッシュコヒーレントインターコネクトを経由するオーバーヘッドが有るが、メモリコントローラがメモリから対象データを読み出すオーバーヘッドよりも小さいため、(3)は(1)よりもレイテンシが短い。(2)及び(4)については、キャッシュ1aから対象データを読み出すことができるため、上記2種類のオーバーヘッドが生じず、最もレイテンシが短い。
なお、VM12が長時間動作する場合、CPUパッケージ2pのコアがVM12に割り当てられていないので、キャッシュ2aにメモリ2mの対象データが新たに保持されることはなく、上記(3)のケースはほとんど発生しない。発生するとすれば、VM12が動作する前にキャッシュ2a上に対象データが偶然保持される場合だけである。
従って、VM12のゲストOSがリモートメモリであるメモリ2mの対象データにアクセスする場合には、キャッシュ1aに対象データが存在しなければレイテンシが長くなる。例えば図13の例では、キャッシュ1aに対象データが存在する場合にはレイテンシは10ナノセカンド(以下ではnsと表す)であるが、メモリ2mから対象データを読み出す場合にはレイテンシは300nsであり、後者の方がレイテンシが長い。
本実施の形態によれば、メモリ2mに格納された対象データをキャッシュ2aに予め読み出しておくことができるので、VM12のゲストOSがキャッシュ2aにアクセスすることでレイテンシを210nsにまで短縮することができる。さらに、キャッシュ2aに読み出された対象データがキャッシュコヒーレンシによってキャッシュ1aにコピーされれば、さらにレイテンシを短縮することができる。
すなわち、本実施の形態によれば、リモートメモリ内のデータへのアクセスのレイテンシを短縮することができるようになる。また、既存のハードウエア或いはOSに手を加えることなく、ハイパバイザの処理によって実現するので低コストである。
[実施の形態2]
図14Aに、第2の実施の形態の情報処理装置1の構成図を示す。情報処理装置1は、CPUパッケージ1pと、例えばDIMMであるメモリ1mと、CPUパッケージ2pと、例えばDIMMであるメモリ2mとを有する。メモリ1mはCPUパッケージ1pに接続され、メモリ2mはCPUパッケージ2pに接続される。情報処理装置1は、PCI Expressの規格に対応している。
CPUパッケージ1pは、コア11c乃至14cと、キャッシュ1aと、メモリコントローラ(図14Aにおいては「MC」と略されている)1bと、I/Oコントローラ(図14Aにおいては「IOC」と略されている)1rと、キャッシュコヒーレントインタフェース(図14Aにおいては「CCI」と略されている)1qとを有する。同様に、CPUパッケージ2pは、コア21c乃至24cと、キャッシュ2aと、メモリコントローラ2bと、I/Oコントローラ2rと、キャッシュコヒーレントインタフェース2qとを有する。
コア11c乃至14c及びコア21c乃至24cは、プログラムの命令を実行する。第2の実施の形態における各コアは、ディレクトリスヌープ方式のキャッシュスヌープ機構を備え且つキャッシュコヒーレンシのプロトコルとしてMESIFプロトコルを採用している。各コアは、キャッシュフィル部105が使用する特別なプリフェッチ命令(以下、SNSP(Speculative Non-Shared Prefetch)命令と呼ぶ)を実行できる。
キャッシュ1a及び2aは、コアによるメモリアクセスに関する情報(例えば、アドレス及びデータそのもの)を格納する記憶領域である。第2の実施の形態においては、各CPUパッケージはL1キャッシュ、L2キャッシュ及びL3キャッシュを有するが、コア間で共有されるキャッシュはL3キャッシュである。
メモリコントローラ1b及び2bはメモリに対するアクセスを制御するコントローラであり、メモリコントローラ1bはメモリアクセス監視部(図14Aにおいては「MAM」と略されている)1dを有し且つメモリ1mに接続され、メモリコントローラ2bはメモリアクセス監視部2dを有し且つメモリ2mに接続される。図14Bに、メモリアクセス監視部1d及び2dの構成図を示す。図14Bの例では、メモリアクセス監視部1d及び2dは、アクセス履歴テーブル201とフィルタテーブル202とを管理する。アクセス履歴テーブル201及びフィルタテーブル202については後述する。
I/Oコントローラ1r及び2rは、PCI Express等のI/Oインタフェースに接続するためのコントローラであり、CPUパッケージ内で使用されるプロトコルをI/Oインタフェースのプロトコルに変換する処理等を実行する。
キャッシュコヒーレントインタフェース1q及び2qは、例えばIntel QPI或いはHyper Transport等である。キャッシュコヒーレントインタフェース1q及び2qは、例えばキャッシュコヒーレンシを保つための通信など、他のCPUパッケージとの通信を行う。
ハイパバイザ10のプログラムは、メモリ1m及び2mの少なくともいずれかに格納され、CPUパッケージ1pのコア及びCPUパッケージ2pのコアの少なくともいずれかに実行される。ハイパバイザ10は、VM12に対するハードウエアの割当を管理する。ハイパバイザ10は、リモートアクセス管理部104と、キャッシュフィル部105とを含む。
VM12は、仮想化されたCPUであるvCPU1v及びvCPU2vと、仮想化された物理メモリであるゲスト物理メモリ1gとを含む。仮想化されたハードウエア上ではゲストOSが動作する。
第2の実施の形態においては、vCPU1vはコア11cによって実現され、vCPU2vはコア12cによって実現され、ゲスト物理メモリ1gはメモリ1m及び2mによって実現されるとする。すなわち、VM12に対してリモートメモリ(ここでは、メモリ2m)が割り当てられているとする。また、キャッシュフィル部105はプログラムがコア24cに実行されることにより実現される。但し、キャッシュフィル部105のプログラムが複数のコアに実行されてもよい。リモートアクセス管理部104のプログラムはいずれのコアに実行されてもよい。
次に、図15乃至図19を用いて、情報処理装置1の動作を説明する。
まず、図15及び図16を用いて、VM12の生成時にリモートアクセス管理部104が実行する処理を説明する。ハイパバイザ10によってVM12が生成された場合、リモートアクセス管理部104は、生成されたVM12(以下、対象VMと呼ぶ)に対するCPUパッケージの割当とメモリの割当とを特定する(図15:ステップS81)。
通常、ハイパバイザ10は図4に示すようなデータを管理している。そして、ステップS81においては、図4に示すようなデータによってCPUパッケージの割当とメモリの割当とが特定される。
図15の説明に戻り、リモートアクセス管理部104は、対象VMはリモートメモリアクセスを実行するか判定する(ステップS83)。リモートメモリアクセスとは、VMがリモートメモリに対してアクセスすることである。
対象VMがリモートメモリアクセスを実行しない場合(ステップS83:Noルート)、処理は終了する。一方、対象VMがリモートメモリアクセスを実行する場合(ステップS83:Yesルート)、リモートアクセス管理部104は、メモリアクセス監視部(ここでは、メモリアクセス監視部2d)のフィルタテーブル202に、監視対象のアクセスの条件を設定する(ステップS85)。そして、リモートアクセス管理部104は、メモリアクセス監視の開始指示をメモリアクセス監視部2dに出力する。
図16に、フィルタテーブル202に格納されるデータの一例を示す。図16の例では、エントリ番号と、アクセスのリクエストを発行するコアの範囲と、アクセスされるメモリアドレスの範囲(図16においては、メモリアドレスを含むページの範囲についての情報)と、アクセスのタイプと、アクセスを発生させたプログラムのタイプとが格納される。これらの条件を満たすアクセスについては、アクセス履歴テーブル201に情報が保持される。アクセス履歴テーブル201とフィルタテーブル202は、例えば、PCI ExpressのMMIO(Memory Mapped Input/Output)空間を通じてリモートアクセス管理部104及びキャッシュフィル部105からアクセスされる。
リモートアクセス管理部104は、キャッシュフィル部105に、リモートメモリ(第2の実施の形態においては、メモリ2m)に接続されたCPUパッケージのコア(ここでは、コア24cとする)を割り当てる(ステップS87)。ステップS87においては、キャッシュフィル部105のプログラムを実行することがコア24cに指示される。これにより、コア24cは、実行指示の待ち状態に移行する。
リモートアクセス管理部104は、キャッシュフィル部105に、キャッシュフィル処理を所定時間(例えば100ミリ秒)毎に実行することを指示する実行指示を出力する(ステップS89)。実行指示は、対象VMが利用するvCPUのページテーブルのページサイズの情報を含む。そして処理は終了する。
以上のような処理によって、リモートメモリへのアクセスを行うVMについて、メモリアクセス監視部2d及びキャッシュフィル部105が処理を実行開始できるようになる。
次に、図17及び図18を用いて、メモリアクセス監視部(ここでは、メモリアクセス監視部2d)が実行する処理を説明する。まず、メモリアクセス監視部2dは、メモリアクセス監視の開始指示を待つ(図17:ステップS91)。
メモリアクセス監視部2dは、メモリアクセス監視の開始指示をリモートアクセス管理部104から受け取ったか判定する(ステップS93)。メモリアクセス監視の開始指示をリモートアクセス管理部104から受け取っていない場合(ステップS93:Noルート)、ステップS91の処理に戻る。一方、メモリアクセス監視の開始指示をリモートアクセス管理部104から受け取った場合(ステップS93:Yesルート)、メモリアクセス監視部2dは、メモリコントローラ2bが処理する各リクエストが、フィルタテーブル202に設定された条件を満たすか判定する(ステップS95)。
条件を満たすリクエストが無い場合(ステップS97:Noルート)、ステップS95の処理に戻る。一方、条件を満たすリクエストが有る場合(ステップS97:Yesルート)、メモリアクセス監視部2dは、条件を満たすリクエストの情報をアクセス履歴テーブル201に書き込む(ステップS99)。但し、アクセス履歴テーブル201の情報量が上限に達した場合には、最も古い情報が削除され、アクセス履歴テーブル201の情報量が無制限に多くならないようにされる。
図18に、アクセス履歴テーブル201に格納されるデータの一例を示す。図18の例では、エントリの番号と、メモリコントローラの識別子(MCID)と、アクセスされたメモリのアドレス(例えばアクセスが開始されるアドレス)と、アクセスのタイプ(例えば、読み出し、書き込み、或いはキャッシュ無効化など)と、アクセスを発生させたプログラムのタイプとが格納される。
メモリアクセス監視部2dは、監視の終了指示をリモートアクセス管理部104から受け取ったか判定する(ステップS101)。監視の終了指示をリモートアクセス管理部104から受け取っていない場合(ステップS101:Noルート)、ステップS95の処理に戻る。一方、監視の終了指示をリモートアクセス管理部104から受け取った場合(ステップS101:Yesルート)、メモリアクセス監視部2dは、アクセス履歴テーブル201内のデータをクリアする(ステップS103)。そして処理は終了する。
以上のような処理を実行すれば、監視対象のアクセスについてのみ、アクセスの履歴情報を取得できるようになる。これにより、メモリコントローラ内のリソースの消費量を抑制することができる。
次に、図19を用いて、キャッシュフィル部105が実行する処理を説明する。まず、キャッシュフィル部105は、リモートアクセス管理部104から指定された時間(例えば100ミリ秒)待機する(図19:ステップS111)。
キャッシュフィル部105は、アクセス履歴テーブル201に基づき、データが読み出されるべきメモリアドレスを特定する(ステップS113)。ステップS113においては、アクセス履歴テーブル201に格納されている、最新のリード履歴が示すメモリアドレスを含むページと、そのページの後の1ページとを、データが読み出すメモリアドレスとする。ここで、ページサイズはリモートアクセス管理部104からの実行指示に含まれるページサイズである。なお、ステップS113においては、新しいリード履歴から順番に、読み出されるデータのサイズがL3キャッシュのサイズと同じになるまでページが追加される。
キャッシュフィル部105は、ステップS113において特定されたメモリアドレスに対して、キャッシュサイズ毎にSNSPリクエストをメモリコントローラ(ここでは、メモリコントローラ2b)に発行する(ステップS115)。
SNSPリクエストは、キャッシュフィル部105がSNSP命令を実行することにより発行される。ディレクトリスヌープ方式を採用するCPUパッケージにおいては、メモリコントローラが、アクセスされるメモリアドレスのデータがどのCPUパッケージのキャッシュに格納されているかを示す情報を管理している。但し、その情報が必ずしも正しいわけではない。例えば、或るキャッシュに格納されていると考えられていたデータがそのキャッシュのCPUによってクリアされている場合もある。一般的には、読み出しのリクエストを受け付けたメモリコントローラは、リクエストに係るデータを格納するメモリに接続されたCPUパッケージにスヌープ命令を発行する。一方、第2の実施の形態においては、SNSPリクエストを受け付けたメモリコントローラは、他のCPUパッケージのキャッシュにデータが格納されている場合、スヌープ命令を発行せず、既に他のCPUパッケージのキャッシュにデータが格納されていることをSNSPリクエストを発行したコアに通知する。これにより、メモリから読み出そうとしたデータが既に他のCPUパッケージのキャッシュに保持されている場合、キャッシュフィル部105が動作するCPUパッケージにスヌープによってデータを保持するオーバーヘッドが生じることを回避できるようになる。
例えば、L3キャッシュのサイズが40メガバイトであり、ページサイズが4キロバイトであり、キャッシュラインサイズが64バイトであるとする。この場合、ページ数は10240であり、655360回SNSPが発行される。リモートメモリではないローカルメモリへのアクセスに要する時間が100ナノ秒であると仮定すると、1コアがシーケンシャルに実行した場合には約66ミリ秒かかる。
そして、メモリコントローラ2bは、SNSPリクエストに応じてメモリコントローラ2bがデータを読み出した場合、読み出したデータをキャッシュ2aに格納する(ステップS117)。本処理はキャッシュフィル部105が実行する処理ではないので、ステップS117のブロックは破線で表されている。
キャッシュフィル部105は、リモートアクセス管理部104から処理の終了指示を受け取ったか判定する(ステップS119)。処理の終了指示を受け取っていない場合(ステップS119:Noルート)、ステップS111の処理に戻る。処理の終了指示を受け取った場合(ステップS119:Yesルート)、処理は終了する。
以上のような処理を実行すれば、リモートメモリに格納されたデータへのアクセスを高速化できるようになり、またソフトウエアだけで実現した場合と比較するとアクセスの予測精度を向上させることができるようになる。また、アクセスの履歴情報を取得する際にソフトウエアのオーバーヘッドが生じない。
[実施の形態3]
図20に、第3の実施の形態の情報処理装置1の構成図を示す。情報処理装置1は、CPUパッケージ1pと、例えばDIMMであるメモリ1mと、CPUパッケージ2pと、例えばDIMMであるメモリ2mとを有する。メモリ1mはCPUパッケージ1pに接続され、メモリ2mはCPUパッケージ2pに接続される。情報処理装置1は、PCI Expressの規格に対応している。
CPUパッケージ1pは、コア11c乃至14cと、キャッシュ1aと、メモリコントローラ(図20においては「MC」と略されている)1bと、I/Oコントローラ(図20においては「IOC」と略されている)1rと、キャッシュコヒーレントインタフェース1q(図20においては「CCI」と略されている)とを有する。同様に、CPUパッケージ2pは、コア21c乃至24cと、キャッシュ2aと、メモリコントローラ2bと、I/Oコントローラ2rと、キャッシュコヒーレントインタフェース2qとを有する。
コア11c乃至14c及び21c乃至24cは、プログラムの命令を実行する。第3の実施の形態における各コアは、ディレクトリスヌープ方式のキャッシュスヌープ機構を備え且つキャッシュコヒーレンシのプロトコルとしてMESIFプロトコルを採用している。各コアは、キャッシュフィル部105がSNSP命令を実行できる。
キャッシュ1a及び2aは、コアによるメモリアクセスに関する情報(例えば、アドレス及びデータそのもの)を格納する記憶領域である。第3の実施の形態においては、各CPUパッケージはL1キャッシュ、L2キャッシュ及びL3キャッシュを有するが、コア間で共有されるキャッシュはL3キャッシュである。
メモリコントローラ1b及び2bはメモリに対するアクセスを制御するコントローラであり、メモリコントローラ1bはメモリアクセス監視部(図20においては「MAM」と略されている)1dを有し且つメモリ1mに接続され、メモリコントローラ2bはメモリアクセス監視部2dを有し且つメモリ2mに接続される。
I/Oコントローラ1r及び2rは、PCI Express等のI/Oインタフェースに接続するためのコントローラであり、CPUパッケージ内で使用されるプロトコルをI/Oインタフェースのプロトコルに変換する処理等を実行する。
キャッシュコヒーレントインタフェース1q及び2qは、例えばIntel QPI或いはHyper Transport等である。キャッシュコヒーレントインタフェース1q及び2qは、例えばキャッシュコヒーレンシを保つための通信など、他のCPUパッケージとの通信を行う。
OS14のプログラムは、メモリ1m及び2mの少なくともいずれかに格納され、CPUパッケージ1pのコア及びCPUパッケージ2pのコアの少なくともいずれかに実行される。OS14は、プロセス13に対するハードウエアの割当を管理する。OS14は、リモートアクセス管理部104と、キャッシュフィル部105とを含む。
プロセス13は、プログラムがCPUパッケージ1pのコア及びCPUパッケージ2pのコアの少なくともいずれかに実行されることによって実現される。プロセス13の処理の実行時には、仮想メモリ1eが使用される。仮想メモリ1eは、メモリ1m及び2mによって実現される。すなわち、プロセス13にとってはメモリ2mがリモートメモリに該当する。また、キャッシュフィル部105はプログラムがコア24cに実行されることにより実現される。但し、キャッシュフィル部105のプログラムが複数のコアに実行されてもよい。リモートアクセス管理部104のプログラムはいずれのコアに実行されてもよい。
第3の実施の形態において、OS14に第2の実施の形態におけるハイパバイザ10と同じ処理を実行させ、プロセス13に第2の実施の形態におけるVM12と同じ処理を実行させ、仮想メモリ1eをゲスト物理メモリ1gと同じように使用すれば、第2の実施の形態と同様の効果を得ることができる。すなわち、プロセス13によるメモリ2mへのアクセスを高速化できるようになる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置1の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る情報処理装置は、(A)第1プロセッサと、(B)第1プロセッサに接続されたメモリと、(C)メモリに対するアクセスを行う仮想マシンを実行する第2プロセッサとを有する。そして、上で述べた第1プロセッサが、(a1)仮想マシンがアクセスするメモリの領域からデータを読み出し、(a2)読み出したデータを、第1プロセッサのキャッシュに格納する処理を実行する。
このようにすれば、仮想マシンは第1プロセッサのキャッシュに格納されたデータに対してアクセスを行えばよいので、仮想マシンに割り当てられていないCPUに接続されたメモリ(すなわちリモートメモリ)に格納されたデータへのアクセスを高速化できるようになる。また、ハードウエアを変更せずに実現可能である。
また、第1プロセッサ又は第2プロセッサが、(a3、c1)仮想マシンがメモリに対して行ったアクセスについての情報を取得し、データを読み出す処理において、(a11)アクセスについての情報に基づき、仮想マシンがアクセスするメモリの領域を特定し、特定されたメモリの領域から、データを読み出してもよい。これにより、キャッシュヒット率を上昇させることができ、リモートメモリに格納されたデータへのアクセスを高速化できるようになる。
また、第1プロセッサ又は第2プロセッサが、(a4、c2)第2プロセッサのキャッシュミス回数の情報を取得し、データを読み出す処理において、(a12)取得された第2プロセッサのキャッシュミス回数の情報に基づき、データを読み出す方法を決定し、特定されたメモリの領域から、決定された方法によってデータを読み出してもよい。これにより、キャッシュミス率が低下するような方法でデータを読み出すことができるようになる。
また、(a5)第1プロセッサはメモリコントローラを有し、(a51)メモリコントローラは、仮想マシンがメモリに対して行ったアクセスの履歴情報を取得し、データを読み出す処理において、(a13)メモリコントローラにより取得されたアクセスの履歴情報に基づき、仮想マシンがアクセスするメモリアドレスを特定し、特定されたメモリアドレスを含む領域からデータを読み出してもよい。これにより、キャッシュヒット率を上昇させることができ、リモートメモリに格納されたデータへのアクセスを高速化できるようになる。また、アクセスの履歴情報を取得する際にソフトウエアのオーバーヘッドが生じない。
また、上で述べたメモリコントローラは、(a52)メモリに対するアクセスのうち仮想マシンによるアクセスを抽出するための条件を管理し、当該条件を満たすアクセスの履歴情報を取得してもよい。これにより、履歴情報が取得されるアクセスを絞り込むことができるので、対象となるアクセスの履歴情報をより多く保存できるようになる。
また、アクセスについての情報は、各領域に対するアクセスの種別の比率を示す情報と各領域に対するアクセスの数についての情報とを含んでもよい。
また、アクセスの履歴情報は、各メモリアドレスに対するアクセスの種別を示す情報と各メモリアドレスに対するアクセスを発生させたプログラムについての情報とを含んでもよい。
本実施の形態の第2の態様に係るキャッシュ方法は、(D)プロセッサに接続されたメモリに対するアクセスを行い且つ他のプロセッサにより実行される仮想マシンによってアクセスされるメモリの領域から、データを読み出し、(E)読み出したデータを、プロセッサのキャッシュに格納する処理を含む。
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1プロセッサと、
前記第1プロセッサに接続されたメモリと、
前記メモリに対するアクセスを行う仮想マシンを実行する第2プロセッサと、
を有し、
前記第1プロセッサが、
前記仮想マシンがアクセスする前記メモリの領域からデータを読み出し、
読み出した前記データを、前記第1プロセッサのキャッシュに格納する、
処理を実行する情報処理装置。
(付記2)
前記第1プロセッサ又は前記第2プロセッサが、
前記仮想マシンが前記メモリに対して行ったアクセスについての情報を取得し、
前記データを読み出す処理において、
前記アクセスについての情報に基づき、前記仮想マシンがアクセスする前記メモリの領域を特定し、
特定された前記メモリの領域から、前記データを読み出す、
付記1記載の情報処理装置。
(付記3)
前記第1プロセッサ又は前記第2プロセッサが、
前記第2プロセッサのキャッシュミス回数の情報を取得し、
前記データを読み出す処理において、
取得された前記第2プロセッサのキャッシュミス回数の情報に基づき、前記データを読み出す方法を決定し、
特定された前記メモリの領域から、決定された前記方法によって前記データを読み出す、
付記2記載の情報処理装置。
(付記4)
前記第1プロセッサはメモリコントローラを有し、
前記メモリコントローラは、前記仮想マシンが前記メモリに対して行ったアクセスの履歴情報を取得し、
前記データを読み出す処理において、
前記メモリコントローラにより取得された前記アクセスの履歴情報に基づき、前記仮想マシンがアクセスするメモリアドレスを特定し、
特定された前記メモリアドレスを含む領域から前記データを読み出す、
付記1記載の情報処理装置。
(付記5)
前記メモリコントローラは、前記メモリに対するアクセスのうち前記仮想マシンによるアクセスを抽出するための条件を管理し、当該条件を満たすアクセスの履歴情報を取得する、
付記4記載の情報処理装置。
(付記6)
前記アクセスについての情報は、各領域に対するアクセスの種別の比率を示す情報と各領域に対するアクセスの数についての情報とを含む
付記2又は3記載の情報処理装置。
(付記7)
前記アクセスの履歴情報は、各メモリアドレスに対するアクセスの種別を示す情報と各メモリアドレスに対するアクセスを発生させたプログラムについての情報とを含む
付記4記載の情報処理装置。
(付記8)
プロセッサが、
前記プロセッサに接続されたメモリに対するアクセスを行い且つ他のプロセッサにより実行される仮想マシンによってアクセスされる前記メモリの領域から、データを読み出し、
読み出した前記データを、前記プロセッサのキャッシュに格納する、
処理を実行するキャッシュ方法。
(付記9)
プロセッサに、
前記プロセッサに接続されたメモリに対するアクセスを行い且つ他のプロセッサにより実行される仮想マシンによってアクセスされる前記メモリの領域から、データを読み出し、
読み出した前記データを、前記プロセッサのキャッシュに格納する、
処理を実行させるキャッシュプログラム。
1,1000 情報処理装置 10,100 ハイパバイザ
12 VM 101 変換テーブル
102 アクセスデータ収集部 1021 アクセス管理テーブル
1022 アクセステーブル 103 キャッシュミスデータ収集部
1031 キャッシュミス管理テーブル 1032 キャッシュミステーブル
104 リモートアクセス管理部 105 キャッシュフィル部
1v,2v vCPU 1g ゲスト物理メモリ
1p,2p CPUパッケージ
11c,12c,13c,14c,21c,22c,23c,24c コア 10p,20p CPU
1a,2a キャッシュ 1b,2b メモリコントローラ
1r,2r I/Oコントローラ 1q,2q キャッシュコヒーレントインタフェース
1m,2m,10m,20m メモリ 1d,2d メモリアクセス監視部
10 OS 13 プロセス
1e 仮想メモリ

Claims (7)

  1. 第1プロセッサと、
    前記第1プロセッサに接続されたメモリと、
    前記メモリに対するアクセスを行う仮想マシンを実行する第2プロセッサと、
    を有し、
    前記第1プロセッサが、
    前記仮想マシンがアクセスする前記メモリの領域からデータを読み出し、
    読み出した前記データを、前記第1プロセッサのキャッシュに格納する、
    処理を実行し、
    前記第1プロセッサ又は前記第2プロセッサが、
    前記仮想マシンが前記メモリに対して行ったアクセスについての情報を取得し、
    前記データを読み出す処理において、
    前記アクセスについての情報に基づき、前記仮想マシンがアクセスする前記メモリの領域を特定し、
    特定された前記メモリの領域から、前記データを読み出す、
    情報処理装置。
  2. 前記第1プロセッサ又は前記第2プロセッサが、
    前記第2プロセッサのキャッシュミス回数の情報を取得し、
    前記データを読み出す処理において、
    取得された前記第2プロセッサのキャッシュミス回数の情報に基づき、前記データを読み出す方法を決定し、
    特定された前記メモリの領域から、決定された前記方法によって前記データを読み出す、
    請求項記載の情報処理装置。
  3. 第1プロセッサと、
    前記第1プロセッサに接続されたメモリと、
    前記メモリに対するアクセスを行う仮想マシンを実行する第2プロセッサと、
    を有し、
    前記第1プロセッサが、
    前記仮想マシンがアクセスする前記メモリの領域からデータを読み出し、
    読み出した前記データを、前記第1プロセッサのキャッシュに格納する、
    処理を実行し、
    前記第1プロセッサはメモリコントローラを有し、
    前記メモリコントローラは、前記仮想マシンが前記メモリに対して行ったアクセスの履歴情報を取得し、
    前記データを読み出す処理において、
    前記メモリコントローラにより取得された前記アクセスの履歴情報に基づき、前記仮想マシンがアクセスするメモリアドレスを特定し、
    特定された前記メモリアドレスを含む領域から前記データを読み出す
    情報処理装置。
  4. 前記メモリコントローラは、前記メモリに対するアクセスのうち前記仮想マシンによるアクセスを抽出するための条件を管理し、当該条件を満たすアクセスの履歴情報を取得する、
    請求項記載の情報処理装置。
  5. プロセッサが、
    前記プロセッサに接続されたメモリに対するアクセスを行い且つ他のプロセッサにより実行される仮想マシンによってアクセスされる前記メモリの領域から、データを読み出し、
    読み出した前記データを、前記プロセッサのキャッシュに格納する、
    処理を実行するキャッシュ方法であって、
    前記プロセッサ又は前記他のプロセッサが、
    前記仮想マシンが前記メモリに対して行ったアクセスについての情報を取得し、
    前記データを読み出す処理において、
    前記アクセスについての情報に基づき、前記仮想マシンがアクセスする前記メモリの領域を特定し、
    特定された前記メモリの領域から、前記データを読み出す、
    キャッシュ方法
  6. プロセッサが、
    前記プロセッサに接続されたメモリに対するアクセスを行い且つ他のプロセッサにより実行される仮想マシンによってアクセスされる前記メモリの領域から、データを読み出し、
    読み出した前記データを、前記プロセッサのキャッシュに格納する、
    処理を実行するキャッシュ方法であって、
    前記プロセッサはメモリコントローラを有し、
    前記メモリコントローラは、前記仮想マシンが前記メモリに対して行ったアクセスの履歴情報を取得し、
    前記データを読み出す処理において、
    前記メモリコントローラにより取得された前記アクセスの履歴情報に基づき、前記仮想マシンがアクセスするメモリアドレスを特定し、
    特定された前記メモリアドレスを含む領域から前記データを読み出す
    キャッシュ方法
  7. プロセッサに、
    前記プロセッサに接続されたメモリに対するアクセスを行い且つ他のプロセッサにより実行される仮想マシンによってアクセスされる前記メモリの領域から、データを読み出し、
    読み出した前記データを、前記プロセッサのキャッシュに格納する、
    処理を実行させるキャッシュプログラムであって、
    前記プロセッサ又は前記他のプロセッサに、
    前記仮想マシンが前記メモリに対して行ったアクセスについての情報を取得させ、
    前記データを読み出す処理において、
    前記アクセスについての情報に基づき、前記仮想マシンがアクセスする前記メモリの領域を特定し、
    特定された前記メモリの領域から、前記データを読み出す、
    キャッシュプログラム。
JP2015205339A 2015-10-19 2015-10-19 キャッシュ方法、キャッシュプログラム及び情報処理装置 Active JP6515779B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015205339A JP6515779B2 (ja) 2015-10-19 2015-10-19 キャッシュ方法、キャッシュプログラム及び情報処理装置
US15/277,311 US20170109278A1 (en) 2015-10-19 2016-09-27 Method for caching and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015205339A JP6515779B2 (ja) 2015-10-19 2015-10-19 キャッシュ方法、キャッシュプログラム及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2017078881A JP2017078881A (ja) 2017-04-27
JP6515779B2 true JP6515779B2 (ja) 2019-05-22

Family

ID=58523866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015205339A Active JP6515779B2 (ja) 2015-10-19 2015-10-19 キャッシュ方法、キャッシュプログラム及び情報処理装置

Country Status (2)

Country Link
US (1) US20170109278A1 (ja)
JP (1) JP6515779B2 (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681309B2 (en) * 2002-01-25 2004-01-20 Hewlett-Packard Development Company, L.P. Method and apparatus for measuring and optimizing spatial segmentation of electronic storage workloads
JP4937022B2 (ja) * 2007-07-13 2012-05-23 株式会社東芝 順序関係解析装置、方法及びプログラム
US8719823B2 (en) * 2009-03-04 2014-05-06 Vmware, Inc. Managing latency introduced by virtualization
JP5573829B2 (ja) * 2011-12-20 2014-08-20 富士通株式会社 情報処理装置およびメモリアクセス方法
JP6036457B2 (ja) * 2013-03-25 2016-11-30 富士通株式会社 演算処理装置、情報処理装置及び情報処理装置の制御方法
KR20150090491A (ko) * 2014-01-29 2015-08-06 삼성전자주식회사 전자 장치 및 전자 장치에서 데이터를 액세스하는 방법

Also Published As

Publication number Publication date
US20170109278A1 (en) 2017-04-20
JP2017078881A (ja) 2017-04-27

Similar Documents

Publication Publication Date Title
US9904473B2 (en) Memory and processor affinity in a deduplicated environment
USRE49273E1 (en) Switch and memory device
KR101626533B1 (ko) 가비지 콜렉션을 위한 gpu 서포트
US9239791B2 (en) Cache swizzle with inline transposition
US10169087B2 (en) Technique for preserving memory affinity in a non-uniform memory access data processing system
CN110865968B (zh) 多核处理装置及其内核之间数据传输方法
US20080071939A1 (en) System and method for performance monitoring and reconfiguring computer system with hardware monitor
US20160197986A1 (en) Host-side cache migration
US20140019738A1 (en) Multicore processor system and branch predicting method
WO2014022402A1 (en) Coherence management using a coherent domain table
US9542100B2 (en) Management of memory pages
CN109977037B (zh) 一种dma数据传输方法及系统
KR20200135718A (ko) 액세스 요청을 관리하기 위한 방법, 장치, 기기 및 저장 매체
KR20200017364A (ko) PCIe 메모리 요청들의 라우팅을 촉진하기 위해 NVMe 물리적 영역 페이지 목록 포인터들 및 데이터 포인터들을 수정
JPWO2015046552A1 (ja) ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム
KR101587579B1 (ko) 가상화 시스템에서 메모리 조정방법
JP6974510B2 (ja) データを処理するための方法、装置、デバイス及び媒体
CN103902369A (zh) 陷阱处理期间的协作线程阵列的粒度上下文切换
US8862786B2 (en) Program execution with improved power efficiency
JP2015143943A (ja) 情報処理装置、制御方法、および制御プログラム
JP7003470B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP2023505783A (ja) Gpuパケット集約システム
JP6281442B2 (ja) 割り当て制御プログラム、割り当て制御方法及び割り当て制御装置
JP6515779B2 (ja) キャッシュ方法、キャッシュプログラム及び情報処理装置
KR102383040B1 (ko) 홈 에이전트 기반 캐시 전송 가속 기법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190108

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190307

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190401

R150 Certificate of patent or registration of utility model

Ref document number: 6515779

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150