(57)【要約】【課題】直前に実行されていたプログラム（例えば仮想マシン）の影響を排除し、演算処理装置に搭載されたキャッシュメモリに発生したキャッシュミス数をより正確に計数するための技術を提供する。【解決手段】ＰＭＣ１１４は、１次キャッシュメモリ１１２のキャッシュミスをサンプリング周期値α、計数した場合に割り込みを発生させる。割り込み処理部２４は、その割り込みが発生した場合、キャッシュミス数算出部２５に依頼し、その時点で他の仮想マシン３の影響により発生したと推定されるキャッシュミス数Ｓを受け取る。割り込み処理部２４は、受け取ったキャッシュミス数Ｓが０であった場合、割り込みを仮想マシン３に通知する。受け取ったキャッシュミス数Ｓが１以上であった場合、割り込みを無効にし、そのキャッシュミス数Ｓを用いて計算した値をＰＭＣ１１４に設定する。【選択図】図１
2015166896.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを備えた演算処理装置と、
前記キャッシュメモリに発生したキャッシュミスの回数であるキャッシュミス数を、前記演算処理装置が実行するプログラム毎に計数する計数部と、
前記計数部が計数したキャッシュミス数のうち、他のプログラムの影響によってキャッシュミスが発生した回数をミス数として推定する推定部と、
前記推定部が推定したミス数に基づき、前記計数部が計数したキャッシュミス数を修正する修正部と、
を有することを特徴とする情報処理装置。
【請求項２】
複数の仮想マシンが生成される場合、
前記計数部は、前記仮想マシン毎にキャッシュミス数を計数し、計数した前記キャッシュミス数が所定値に達した場合に通知し、
前記推定部は、前記計数部が通知した場合、ミス回数を推定し、
前記修正部は、前記推定部が推定したミス回数に基づき、前記所定値に達したキャッシュミス数を修正する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記修正部は、前記ミス推定部が推定したミス回数に基づき、前記複数の仮想マシンのいずれかに通知する、
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
キャッシュメモリを備えた演算処理装置を有する情報処理装置の性能情報採取プログラムにおいて、
前記演算処理装置が有する計数部に、前記キャッシュメモリに発生したキャッシュミスの回数であるキャッシュミス数を、前記演算処理装置が実行するプログラム毎に計数させ、
前記演算処理装置が有する推定部に、前記計数部が計数したキャッシュミス数のうち、他のプログラムの影響によってキャッシュミスが発生した回数をミス数として推定させ、
前記演算処理装置が有する修正部に、前記推定部が推定したミス数に基づき、前記計数部が計数したキャッシュミス数を修正させることを特徴とする情報処理装置の性能情報採取プログラム。
【請求項５】
キャッシュメモリを備えた演算処理装置を有する情報処理装置の性能情報採取方法において、
前記演算処理装置が有する計数部が、前記キャッシュメモリに発生したキャッシュミスの回数であるキャッシュミス数を、前記演算処理装置が実行するプログラム毎に計数し、
前記演算処理装置が有する推定部が、前記計数部が計数したキャッシュミス数のうち、他のプログラムの影響によってキャッシュミスが発生した回数をミス数として推定し、
前記演算処理装置が有する修正部が、前記推定部が推定したミス数に基づき、前記計数部が計数したキャッシュミス数を修正することを特徴とする情報処理装置の性能情報採取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法に関する。
【背景技術】
【０００２】
近年の情報処理装置では、通常、ＣＰＵ（Central Processing Unit）等の演算処理装置と、その演算処理装置が使用する主記憶装置との間には動作速度（クロック周波数）に大きな差がある。そのため、現在では、主記憶装置へのアクセス頻度を抑えるための高速のメモリであるキャッシュメモリが演算処理装置に搭載されている。
【０００３】
キャッシュメモリの制御方式としては、ダイレクトマップ方式、セットアソシアティブ方式、及びフルアソシアティブ方式がある。何れの制御方式であっても、データはキャッシュライン単位で管理される。
【０００４】
ダイレクトマップ方式は、データを配置すべきキャッシュラインがアドレスによって一意に決定されるデータ格納構造である。このダイレクトマップ方式では、タグの構造が非常に単純となる。しかし、データを配置すべきキャッシュラインがアドレスによって一意に決定されるため、データの転送時にはキャッシュラインにおけるデータの入れ替えが必ず発生する。その結果、ダイレクトマップ方式には、キャッシュラインにおけるデータの入れ替えが頻発してスループットが低下するキャッシュスラッシングが起こりやすく、ヒット率は比較的に低いという特徴がある。
【０００５】
セットアソシアティブ方式は、同一のライン番号に複数のキャッシュラインを備えることにより、同一のライン番号に異なるアドレスのデータを複数、格納可能にしたデータ格納構造である。同一のライン番号に用意されたキャッシュラインの数は連想度（ｗａｙ）と呼ばれ、連想度が上がるほど、データを配置すべきキャッシュラインのライン番号の一致によるコンフリクトミスは発生し難くなり、キャッシュヒット率は上昇する。キャッシュヒット率（以降「ヒット率」と略記する）は、求めるデータがキャッシュメモリ上にヒットする割合である。
【０００６】
上記ダイレクトマップ方式、及びセットアソシアティブ方式では、データが格納可能なキャッシュラインはアドレスによって制限される。フルアソシアティブ方式は、データが格納されるキャッシュラインをアドレスによって制限しないデータ格納構造である。フルアソシアティブ方式でのヒット率は最も優れている。
【０００７】
演算処理装置の平均命令実行サイクル数を短縮させることによる性能の向上には、キャッシュメモリのヒット率を改善させることが有効である。ヒット率は、上記のように、データ格納構造に依存し、キャッシュラインのデータを入れ替える入れ替え方式にも依存する。例えキャッシュメモリ、及びそのキャッシュメモリ以外の構成も同じ演算処理装置であっても、ヒット率は、空間、或いは時間的なデータの局所性に大きく依存する。しかし、ヒット率は、データレイアウトの変更、或いはプログラムの作成の仕方等（以降、これらの対応を「チューニング」と総称する）によっても改善させることが可能である。
【０００８】
演算処理装置には、通常、求めるデータがキャッシュメモリ上に存在しなかったキャッシュミスが発生した回数を計数するための機能（以降「ミス計数機能」と表記）が搭載されている。そのミス計数機能により計数されるキャッシュミス数は、ヒット率を推定するうえで有用な情報である。それにより、ＯＳ（Operating System）のなかには、キャッシュミス数、或いは他の性能に係わる情報を採取するためのプログラムであるプロファイラを搭載したＯＳが存在する。ユーザは、プロファイラを用いて、アプリケーション・プログラム（以降「アプリケーション」と略記）を構成するサブプログラム（例えば関数）のなかでキャッシュミスが高頻度に発生するサブプログラムをホットスポットとして特定することができる。
【０００９】
近年、複数の仮想マシン（ＶＭ：Virtual Machine）を情報処理装置上に作成するケースが多くなっている。複数の仮想マシンが作成された情報処理装置では、演算処理装置、或いは演算処理装置に搭載されたコアに複数の仮想マシンが割り当てられるのが普通である。そのため、演算処理装置、或いは演算処理装置に搭載されたコアに割り当てられる仮想マシンは、定められた（短い）時間が経過する毎に切り替えられる。
【００１０】
ミス計数機能のキャッシュミス数は、仮想マシンの切り替え時に更新される。切り替え前の仮想マシンの動作時に計数されたキャッシュミス数は退避・保存され、ミス計数機能には、切り替え後の仮想マシンで退避・保存していたキャッシュミス数が新たにセットされる。そのようにして、ミス計数機能を用いたキャッシュミス数の計数は、仮想マシン毎に行われる。
【００１１】
切り替え後の仮想マシンの動作開始時、キャッシュメモリの各キャッシュラインには、切り替え前の仮想マシンの動作時に格納されたデータが残っている。キャッシュメモリに残っていたデータは、切り替え後の仮想マシンの動作により、順次、別のデータに入れ替えられる。このようなことから、ミス計数機能によるキャッシュミス数の計数には、キャッシュメモリに残っていたデータが全て別のデータに入れ変えられるまで、切り替え前の仮想マシンによる影響が残ることになる。
【００１２】
この影響は、ホットスポットを特定するうえでのノイズとなり、ホットスポットの特定を困難にさせる。切り替え前の仮想マシン（その仮想マシン上で実行されるアプリケーション）と、切り替え後の仮想マシン（その仮想マシン上で実行されるアプリケーション）とは、処理の内容上の関係はないのが普通である。このことから、ミス計数機能によるキャッシュミス数の計数では、直前に実行されていたプログラムによる影響を排除するのが望ましいと思われる。
【００１３】
情報処理装置（コンピュータ）の使い方として、ＴＳＳ（Time Sharing System）がある。このＴＳＳは、ユーザ、或いはプログラムといった主体を単位に、決まった短い時間を割り当てて情報処理装置（コンピュータ）に処理させることにより、複数の主体が同時に情報処理装置を利用できるようにしたシステムである。そのため、このＴＳＳでも、ミス計数機能によるキャッシュミス数の計数には、直前に実行されていたプログラムによる影響が生じる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０１０−１５２４５８号公報
【特許文献２】特開２００８−２２５６５５号公報
【特許文献３】特開２００８−２４３２０３号公報
【特許文献４】特開平８−３０４９４号公報
【特許文献５】特開２００８−４０５４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
本発明は、直前に実行されていたプログラム（例えば仮想マシン）の影響を排除し、演算処理装置に搭載されたキャッシュメモリに発生したキャッシュミス数をより正確に計数するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明を適用した情報処理装置は、キャッシュメモリを備えた演算処理装置と、前記キャッシュメモリに発生したキャッシュミスの回数であるキャッシュミス数を、前記演算処理装置が実行するプログラム毎に計数する計数部と、前記計数部が計数したキャッシュミス数のうち、他のプログラムの影響によってキャッシュミスが発生した回数をミス数として推定する推定部と、前記推定部が推定したミス数に基づき、前記計数部が計数したキャッシュミス数を修正する修正部と、を有する。
【発明の効果】
【００１７】
本発明により、直前に実行されていたプログラム（例えば仮想マシン）の影響を排除し、演算処理装置に搭載されたキャッシュメモリに発生したキャッシュミス数をより正確に計数することができる。
【図面の簡単な説明】
【００１８】
【図１】本実施形態による情報処理装置の構成例、及び運用例を説明する図である。
【図２】性能情報の採取方法例を説明する図である。
【図３】採取される性能情報例を説明する図である。
【図４】採取された性能情報の表示例を説明する図である。
【図５】ハイパーバイザーによって各仮想マシンに提供される環境を説明する図である。
【図６】ハイパーバイザーによって行われるＰＭＣの管理を説明する図である。
【図７】各仮想マシンの動作時にＰＭＣがオーバーフローによる割り込みを発生させるタイミング例を説明する図である。
【図８】本実施形態で仮想マシンにオーバーフローによる割り込みが通知されるタイミング例を説明する図である。
【図９】時刻記録部が仮想マシン毎に記録する動作開始時刻を説明する図である。
【図１０】ＶＭ非動作時間帯記録領域に記録されるデータ例を説明する図である。
【図１１】ノイズ分と推定するキャッシュミス数の算出方法例を説明する図である。
【図１２】サンプリングドライバが実行する処理の流れを表すフローチャートである。
【図１３】割り込み処理部が実行する処理の流れを表すフローチャートである。
【図１４】キャッシュミス数算出部が実行する処理の流れを表すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態による情報処理装置の構成例、及び運用例を説明する図である。本実施形態による情報処理装置は、例えばデータセンタにサーバとして設置される情報処理装置である。このことから、情報処理装置は以降「サーバ」と表記する。
【００２０】
そのサーバは、ハードウェア群１、つまりハードウェア資源として、ＣＰＵ（Central Processing Unit）１１、メモリ（例えばメモリモジュール）１２、ハードディスク装置１３、及びＮＩＣ（Network Interface Card）１４等を備えている。ＣＰＵ１１には、複数のＣＰＵコア１１１、ＣＰＵコア１１１毎に用意された１次キャッシュメモリ１１２、２次キャッシュメモリ（図１中「Ｌ２キャッシュ」と表記）１１３、複数のＰＭＣ（Performance Monitoring Counter）１１４、及びＴＳＣ（Time Stamp Counter）１１５を備えている。ハードウェア群１は、図１に表す例に限定されるものではなく、演算処理装置もＣＰＵ１１に限定されるものではない。ＣＰＵ１１の数は２以上であっても良い。
【００２１】
ＣＰＵ１１に搭載されたＴＳＣ１１５は、フリー・ランニング・カウンタであり、ＣＰＵ１１が動作を開始した後に外部から供給されるクロックの総数をカウントする。そのカウントは、レジスタを用いて行われ、初期値である０からそのレジスタのビット数（例えば６４ビット）に応じた最大値までのカウントアップ（インクリメント）がサイクリックに行われる。以降、ＴＳＣ１１５（のレジスタ）に格納されている時間を表す値は「ＴＳＣ値」と表記する。
【００２２】
ＣＰＵ１１に搭載されたＰＭＣ１１４は、ハードウェア上の様々なイベントの計測（計数）が可能なカウンタであり、指定されたイベントが発生した回数を計数する。計測可能なイベントとしては、分岐命令数、分岐予測失敗数、実行命令数、１次キャッシュメモリ１１２のキャッシュミス数、及び２次キャッシュメモリ１１３のキャッシュミス数、等がある。
【００２３】
上記のようなハードウェア群１を備えたサーバ上には、図１に表すように、複数の仮想マシン３（３Ｘ、３Ｙ）が作成される。それにより、サーバの運用は、各仮想マシン３を動作させ、各仮想マシン３にサービスを提供させることにより行われる。
【００２４】
本実施形態では、仮想化の実装方式として、ハイパーバイザー型が採用されている。作成された各仮想マシン３は、ハイパーバイザー２上で動作する。このハイパーバイザー２は、ハードウェア群１を仮想化し、複数の異なる仮想マシン３上のＯＳ（ゲストＯＳ）を並列に実行できるようにするソフトウェアである。仮想化の実装方式は、ホストＯＳ型であっても良い。
【００２５】
ハードディスク装置１３上には、ハイパーバイザー２、各仮想マシン３上で動作するゲストＯＳ、及びアプリケーション、並びに各仮想マシン３の作成上の設定データ等が格納されている。ＣＰＵ１１は、ハードディスク装置１３からハイパーバイザー２をメモリ１２上に読み出して起動させた後、各仮想マシン３のゲストＯＳ、及びアプリケーションをメモリ１２上に読み出して起動する。
【００２６】
各仮想マシン３上では、各種性能情報を採取するためのプロファイラであるサンプリングドライバ（sampling driver）３１が動作可能となっている。このサンプリングドライバ３１は、例えばゲストＯＳに搭載されたプログラムである。
【００２７】
各仮想マシン３Ｘ、及び３Ｙには、ＣＰＵコア１１１単位でハードウェア資源を割り当てることができる。ここでは、各仮想マシン３Ｘ、及び３Ｙに対し、ＣＰＵ１１に搭載された全てのＣＰＵコア１１１が割り当てられると想定する。その想定では、ＣＰＵ１１に搭載された全てのＣＰＵコア１１１は、スケジューリングに従い、定められた時間が経過する度に、仮想マシン３Ｘと仮想マシン３Ｙ間で割り当てか切り替えられる。
【００２８】
図２〜図４は、サンプリングドライバの機能例を説明する図である。図２は、性能情報の採取方法例、図３は、採取される性能情報例、図４は、採取された性能情報の表示例、をそれぞれ表している。
【００２９】
上記のように、ＣＰＵ１１に搭載されたＰＭＣ１１４は、ハードウェア上の様々なイベントの計測（計数）が可能なカウンタであり、１次キャッシュメモリ１１２のキャッシュミス数、及び２次キャッシュメモリ１１３のキャッシュミス数を計測できる。本実施形態では、このＰＭＣ１１を、１次キャッシュメモリ１１２、或いは２次キャッシュメモリ１１３で発生したキャッシュミス数の計数に用いる。ここでは、便宜的に、キャッシュミス数を計数するのは１次キャッシュメモリ１１２と想定する。キャッシュミス数の計数自体は、ＰＭＣ１１４以外のカウンタを用いて行っても良い。つまり、キャッシュミス数の計数方法は特に限定されるものではない。
【００３０】
ＰＭＣ１１４は、計数に用いるレジスタ（以降「ＰＭＣレジスタ」と表記する。測定すべきイベントの種類を指定するためのレジスタは「イベント設定レジスタ」と表記する）のオーバーフローにより例外（割り込み）を発生させることができる。本実施形態では、ＰＭＣ１１４のオーバーフローによる割り込みを利用して、サンプリングドライバ３１による性能情報の測定（サンプリング）を行わせるようにしている。図２は、ＰＭＣ１１のオーバーフローによる割り込みを利用した性能情報のサンプリング方法例を表している。ここでは、サンプリングドライバ３１は、ゲストＯＳのカーネル３１０のドライバとして実装されている。
【００３１】
性能情報のサンプリングは、予め定めた回数αのキャッシュミスの発生によって行うようにしている。そのため、ＰＭＣレジスタには、その回数αから１を引いた値を、そのＰＭＣレジスタが表現可能な最大値（以降「フル値」と表記）から引いて得られる値（＝フル値−α＋１）が初期値として設定される。この結果、ＰＭＣ１１４は、初期値がＰＭＣレジスタに設定された後、回数αだけキャッシュミス数を計数することにより、オーバーフローによる割り込みを動作中の仮想マシン３に通知する（Ｓ１）。以降、回数αは、割り込みによるキャッシュミス数のサンプリングを行う周期を表すことから、「サンプリング周期値α」と表記する。ＰＭＣレジスタの値は「ＰＭＣ値」と表記する。
【００３２】
動作中の仮想マシン３では、割り込みの通知をサンプリングドライバ３１が処理する。サンプリングドライバ３１は、割り込みの通知時に、仮想マシン３上で動作していたプログラムの情報（例えばプロセスＩＤ、或いは命令アドレス）をカーネル３１０から採取し、キャッシュミス数の累算値と共に、採取データ３２０として保存する（Ｓ２）。
【００３３】
時間の経過に従い、ＣＰＵ１１に制御が割り当てられるプログラムは順次、切り替えられる。図３は、時間の経過により、ＣＰＵ１１に制御が割り当てられるプログラム例を表している。図３中の「Ａ」〜「Ｃ」は、ＣＰＵ１１に制御が割り当てられたプログラム名を表している。また、図３中の上向きの矢印は、それぞれ、ＰＭＣ１１４による割り込みが発生したタイミングを表している。
【００３４】
図３に表すように、ＣＰＵ１１に制御が割り当てられるプログラムが切り替えられ、且つＰＭＣ１１４による割り込みが発生した場合、サンプリングドライバ３１は、各割り込みが発生した時点で動作中のプログラムの情報を採取する。動作中のプログラムがサブプログラム（例えば関数）を呼び出していた場合、サンプリングドライバ３１は、呼び出されていたサブプログラムの情報も併せて採取する。プログラムの情報、及びサブプログラムの情報は、採取データ（性能情報）３２０の一部として保存される。ここでは、便宜的に、プログラムの情報はプログラム名、サブプログラムの情報は関数名と想定する。プログラムの情報、及びサブプログラムの情報は以降「プログラム情報」と総称する。
【００３５】
プログラム毎の採取データ３２０の数は、そのプログラムが動作中に発生した割り込みの回数（サンプル数）である。サンプリングドライバ３１は、例えば解析をユーザから指示された場合、採取データ３２０の解析を行い、その解析結果を出力、例えば表示する。
【００３６】
解析としては、サンプリングドライバ３１は、例えば採取データ３２０の数をプログラム毎に計数し、計数した数を用いて、各プログラムの動作時に発生したキャッシュミス数を推定する。キャッシュミス数の推定は、例えば計数した数にサンプリング周期値αを乗算することで行われる。解析結果の表示は、例えば、推定したキャッシュミス数が大きいほうから、キャッシュミス数、プログラム名、及び関数名を配置することで行われる。図４は、そのようにして、性能情報として採取された採取データ３２０の解析結果の表示例を表している。
【００３７】
図４において、サンプル数は、プログラム毎に計数された採取データ３２０の数に相当する。キャッシュミス数は、サンプル数にサンプリング周期値αを乗算して得られる値であり、ここではサンプリング周期値αとして１０００を想定している。
【００３８】
上記のように、サンプリングドライバ３１は、ＰＭＣ１１がオーバーフローによる割り込みを発生させることを契機に、動作中のプログラムに係わる情報を採取することができ、保存した採取データ３２０の解析を行うことができる。しかし、ハイパーバイザー２は、基本的に、仮想マシン３で実際に動作しているプログラムを認識することができない。このことから、本実施形態では、ハイパーバイザー２を介して、ＰＭＣ１１からのオーバーフローによる割り込みを動作中の仮想マシン３に処理させるようにして、より多い情報量をユーザが得られるようにさせている。
【００３９】
図５は、ハイパーバイザーによって各仮想マシンに提供される環境を説明する図である。
【００４０】
ハイパーバイザー２は、ハードウェア群１を仮想化した環境を各仮想マシン３に提供する。ハードウェア群１の仮想化により、ハードウェア群１を構成する各ハードウェアは、疑似化（仮想化）されたハードウェアとして各仮想マシン３に認識される。その結果、図５に表すように、各仮想マシン３では、ＣＰＵ１１は、疑似（仮想）ＣＰＵ１１ｖ（１１ｖＸ、１１ｖＹ）として認識され、ＣＰＵ１１上のＰＭＣ１１４も疑似（仮想）ＰＭＣ１１４ｖ（１１４ｖＸ、１１４ｖＹ）として認識される。
【００４１】
ハイパーバイザー２は、動作させる仮想マシン３毎に、アーキテクチャ・レジスタ・ステートの退避領域（以降「退避領域」と略記）２００（２００Ｘ、２００Ｙ）を確保する。この退避領域２００は、例えばハードディスク装置１３上にハイパーバイザー２が確保した領域であり、各仮想マシン３の動作時にＰＭＣ１１４によって計数されたＰＭＣ値２０１（２０１Ｘ、２００Ｙ）の保存に用いられる。動作させる仮想マシン３を仮想マシン３Ｘから仮想マシン３Ｙに切り替える場合、最後のＰＭＣ値２０１Ｘは退避領域２００Ｘに退避・保存され、退避領域２００Ｙに退避・保存されていたＰＭＣ値２０１ＹがＰＭＣ１１４に設定される。動作させる仮想マシン３を仮想マシン３Ｙから仮想マシン３Ｘに切り替える場合、最後のＰＭＣ値２０１Ｙは退避領域２００Ｙに退避・保存され、退避領域２００Ｘに退避・保存されていたＰＭＣ値２０１ＸがＰＭＣ１１４に設定される。それにより、ＰＭＣ１１４は、仮想マシン３毎に、キャッシュミス数を計数する。
【００４２】
図６は、ハイパーバイザーによって行われるＰＭＣの管理を説明する図である。
ハイパーバイザー２は、予め定められた時間が経過する度に、動作させる仮想マシン３を切り替える。動作させる仮想マシン３を切り替える際、ハイパーバイザー２は、図６に表すように、ハイパーバイザー処理を実行する。そのハイパーバイザー処理の実行により、動作中の仮想マシン３ＸはＣＰＵ１１の制御を失って動作を終了し、ＣＰＵ１１の制御は仮想マシン３Ｙに渡される。仮想マシン３Ｘの動作時のＰＭＣ値は、ハイパーバイザー２により、他のＣＰＵ１１に搭載された各種レジスタ等の値と共に退避領域２００Ｘ上に退避される。退避領域２００Ｙ上に退避させていたＰＭＣ値、及び各種レジスタ等の値は、ハイパーバイザー２により、ＰＭＣ１１４、及び各種レジスタ等にセット（復元）される。そのようなセットがハイパーバイザー処理で行われた後、仮想マシン３Ｙの動作は再開される。値を退避させるレジスタとしては、プログラムカウンタ、ＣＣＲ（Condition Code Register）、ＦＳＲ（Floating-Point State Register）、ＣＷＲ（Current Window Register）、及びＧＰＲ（General Purpose register）等を挙げることができる。
【００４３】
図７は、各仮想マシンの動作時にＰＭＣがオーバーフローによる割り込みを発生させるタイミング例を説明する図である。図７中、上向きの矢印はオーバーフローによる割り込みが発生したタイミングを表している。「自」は着目対象の仮想マシン（ここでは「自仮想マシン」と表記）３、「他」は着目対象の仮想マシン（ここでは「他仮想マシン」と表記）３の直前に動作する他の仮想マシン３、をそれぞれ表している。実線の矢印は、自仮想マシン３の動作時に割り込みが発生したタイミング、破線の矢印は、他仮想マシン３の動作時に割り込みが発生したタイミング、をそれぞれ表している。
【００４４】
１次キャッシュメモリ１１２のヒット率は、空間、或いは時間的なデータの局所性に大きく依存する。そのため、ヒット率は状況、つまり仮想マシン３が必要とするデータ等によって或る程度は変動する。
【００４５】
１次キャッシュメモリ１１２の各キャッシュラインに格納されているデータは、仮想マシン３の切り替え時の入れ換えの対象ではない。そのため、自仮想マシン３の動作の再開時には、１次キャッシュメモリ１１２のキャッシュラインの大部分に、他仮想マシン３の動作時に入れ換えられたデータが存在することになる。
【００４６】
各仮想マシン３には、重複しないようにハードウェア資源が割り当てられる。そのため、他仮想マシン３自体が使用するデータは、自仮想マシン３自体は使用しない。他仮想マシン３の動作時、１次キャッシュメモリ１１２の各キャッシュラインのデータは、他仮想マシン３自体が使用するデータに入れ換えられる。この結果、自仮想マシン３の動作再開時には、１次キャッシュメモリ１１２は、キャッシュラインの大部分に、他仮想マシン３自体が使用するデータが格納された状態となる。従い、自仮想マシン３が動作再開時には、キャッシュミスが頻発することになる。図７は、自仮想マシン３が動作を再開してから一定時間が経過するまでの期間（以降「影響発生期間」と表記する）７０、頻発するキャッシュミスにより、ＰＭＣ１１４からの割り込みが通常よりも短い時間間隔で発生したことを表している。
【００４７】
直前に他仮想マシン３が動作していたことによって発生するキャッシュミス分は、通常、自仮想マシン３とは基本的に関係がない。これは、自仮想マシン３の動作時に１次キャッシュメモリ１１２上に格納されたデータの全て、或いは殆どは、他仮想マシン３の動作時に入れ換えられるからである。このため、そのキャッシュミス分は、ノイズに相当し、自仮想マシン３上でキャッシュミスを高頻度に発生させるホットスポットの特定を困難とさせる。このことから、本実施形態では、ＰＭＣ１１４が計数するキャッシュミス数からノイズ分を排除し、ＰＭＣ１１４からのオーバーフローによる割り込みを仮想マシン３に通知するようにしている。
【００４８】
図８は、本実施形態で仮想マシンにオーバーフローによる割り込みが通知されるタイミング例を説明する図である。その図８において、上側は他仮想マシン３の動作による影響（ノイズ分となるキャッシュミス数）を排除しない場合の例であり、その例は図７に表した例である。下側は他仮想マシン３の動作による影響を排除した場合の例である。
【００４９】
図８に表すように、他仮想マシン３の動作による影響（ノイズ分となるキャッシュミス数）を排除しない場合、影響発生期間７０内に２回、オーバーフローによる割り込みが自仮想マシン３に通知される。しかし、その影響を排除することにより、影響発生期間７０内にオーバーフローによる割り込みが自仮想マシン３に通知される回数は０となっている。このことは、他仮想マシン３の動作による影響によって発生するキャッシュミス数は非常に多く、そのキャッシュミス数はホットスポットの適切な特定を行ううえで大きな障害となっていることを表している。
【００５０】
オーバーフローによる割り込みは、ハイパーバイザー２を介して、通知すべき仮想マシン３に通知される。このことから、本実施形態では、ノイズ分のキャッシュミス数の算出（推定）、及び算出したキャッシュミス数を反映させた割り込みの通知をハイパーバイザー２に行わせるようにしている。それにより、ハイパーバイザー２には、図１に表すように、機能として、ＶＭ切替部２１、時刻記録部２２、割り込み処理部２４、及びキャッシュミス数算出部２５が搭載されている。ＶＭ非動作時間帯記録領域２３は、ハイパーバイザー２によって例えばメモリ１２上、或いはハードディスク装置１３上に確保される記憶領域である。図１では、説明上、便宜的に、ＶＭ非動作時間帯記録領域２３をハイパーバイザー２内に表している。
【００５１】
ＶＭ切替部２１は、図６に表すように、作成した各仮想マシン３のなかで動作させる仮想マシン３を順次、切り替え、その切り替え時に、退避すべき各種レジスタ等の値を対応する退避領域２００上に退避させる機能である。ＶＭ切替部２１は、動作させる仮想マシン３を切り替える際、その旨を時刻記録部２２に通知する。
【００５２】
時刻記録部２２は、図９に表すように、仮想マシン３が動作を開始（再開）した時刻をＶＭ非動作時間帯記録領域２３に記録する機能である。時刻としては、ＣＰＵ１１に搭載されたＴＳＣ１１５のカウント値が記録される。以降、記録される時刻は「動作開始時刻」と表記する。
【００５３】
図９に表記の「Ｘ」〜「Ｚ」は、それぞれ、切り替えられる仮想マシン３を表している。それにより、図９では、３台の仮想マシン３（３Ｘ〜３Ｚ）のなかの１台だけを動作させる場合を想定している。図９に表記の「Ｔ１」〜「Ｔ５」は、それぞれ、動作させる仮想マシン３を切り替えた時刻を表している。
【００５４】
図１０は、ＶＭ非動作時間帯記録領域に記録されるデータ例を説明する図である。図１０（ａ）は時刻ｔ１、図１０（ｂ）は時刻ｔ２にＶＭ非動作時間帯記録領域２３に記録されているデータ例を表している。
【００５５】
本実施形態では、仮想マシン３毎に、記録する動作開始時刻は１つのみとしている。これは、記録した動作開始時刻は、影響発生期間７０内でノイズ分と見なすキャッシュミス数の算出に用いるためである。このことから、時刻ｔ１では、図１０（ａ）に表すように、仮想マシン３Ｘでは時刻Ｔ２、仮想マシン３Ｙでは時刻Ｔ１が記録される。時刻ｔ１の時点で動作させたことのない仮想マシン３Ｚでは時刻が記録されない。また、時刻ｔ２では、図１０（ｂ）に表すように、仮想マシン３Ｘでは時刻Ｔ５、仮想マシン３Ｙでは時刻Ｔ３、仮想マシン３Ｚでは時刻Ｔ４、がそれぞれ記録される。
【００５６】
割り込み処理部２４は、ＰＭＣ１１４のオーバーフローによる割り込みを、動作中の仮想マシン３に通知する機能である。キャッシュミス数算出部２５は、割り込み処理部２４からの指示により、動作中の仮想マシン３でＰＭＣ１１４が計数したキャッシュミス数のなかでノイズ分と推定すべきキャッシュミス数を算出する機能である。
【００５７】
上記のように、ＰＭＣ１１４は、サンプリング周期値αのキャッシュミス数を計数した場合に、オーバーフローによる割り込みを行う。このことから、キャッシュミス数算出部２５が算出するキャッシュミス数は、サンプリング周期値αのキャッシュミス数のなかでノイズ分と推定すべきキャッシュミス数である。それにより、割り込み処理部２４は、キャッシュミス数算出部２５が算出したキャッシュミス数が０であった場合、オーバーフローによる割り込みを動作中の仮想マシン３に通知する。
【００５８】
図１１は、ノイズ分と推定するキャッシュミス数の算出方法例を説明する図である。
単位時間当たり（或いは単位命令数当たり）に発生するノイズ分のキャッシュミス数は、１次キャッシュメモリ１１２上でのデータの入れ換えにより、動作開始時刻から時間が経過するほど少なくなる。ノイズ分のキャッシュミスは、影響発生期間７０の経過により、発生しなくなる。このことから、動作開始時刻を基点とする、単位時間当たりに発生するノイズ分のキャッシュミス数が全体に占める割合の時間変化は、基点とする動作開始時刻を最大値とし、影響発生期間７０を経過後に最小値（＝０）となるパターンと考えることができる。図１１では、動作開始時刻を「自ＶＭ動作開始」と表記している。
【００５９】
図１１（ａ）〜（ｃ）では、そのパターンの代表例をグラフとして表している。横軸に時間、縦軸に重みをとっている。
【００６０】
図１１において、Ｔは影響発生期間７０の時間の長さ（以降「影響継続時間」と表記）を表している。ノイズ分のキャッシュミス数が全体に占める割合の時間変化は、反比例的に小さくなるパターン（図１１（ａ））、放物線的に小さくなるパターン（図１１（ｂ））、及び直線的に小さくなるパターン（図１１（ｃ））に大別することができる。影響継続時間Ｔは、パターンによって異なる時間である。
【００６１】
図１１（ａ）〜（ｃ）において、縦軸にとった重みは、ノイズ分のキャッシュミス数が全体に占める割合を０〜１の間で正規化した指標である。それにより、キャッシュミス数算出部２５は、ノイズ分のキャッシュミス数の算出に用いる重みを動作開始時刻からの経過時間により特定し、特定した重みをサンプリング周期値αに乗算することにより、ノイズ分のキャッシュミス数を算出する。つまり、ノイズ分のキャッシュミス数をＳとした場合、そのキャッシュミス数Ｓは以下のようにして算出される。
Ｓ＝ROUND（α・重み）    ・・・（１）
ここで、ROUNDは四捨五入の操作を行う関数である。
【００６２】
キャッシュミスの発生頻度（例えば単位時間当たりに発生するキャッシュミス数）は、ＣＰＵ１１に採用されたアーキテクチャに依存する。そのアーキテクチャとは、具体的には１次キャッシュメモリ１１２のデータ格納構造、キャッシュラインのなかでデータを追い出すキャッシュラインを決定する方式、１次キャッシュメモリ１１２にデータを先取りする方式、及び分岐予測方式、等である。また、キャッシュラインのなかで仮想マシン３の動作によってデータが入れ換えられるキャッシュラインの割合は、仮想マシン３上で動作するアプリケーションによって異なる場合がある。ＣＰＵ１１内部で計算が可能な処理を多く実行させるアプリケーションでは、キャッシュライン１１２にアクセスする頻度も小さいことから、その割合は小さくなるのが普通である。このようなことから、本実施形態では、ノイズ分のキャッシュミス数Ｓの算出に用いるパターンは、ＣＰＵ１１のアーキテクチャ、及び切り替え前後の仮想マシン３（アプリケーション）の組み合わせを用いて選択するようにしている。
【００６３】
各仮想マシン３には、重複しないようにハードウェア資源が割り当てられる。そのため、動作する仮想マシン３によってキャッシュラインの全て、或いは大部分でデータの入れ換えが行われると想定できる場合、パターンはＣＰＵ１１のアーキテクチャ、及び切り替え後の仮想マシン３から選択しても良い。そのパターンは以降、「重み付けパターン」と表記する。
【００６４】
選択対象となる重み付けパターンの形状は、シミュレーション結果を用いて特定することができる。また、サンプリング周期値αとして比較的に小さい値を設定し、小さい値のサンプリング周期値αを小さい値とした場合にＰＭＣ１１４からの割り込みが発生する時間間隔の変化を解析することにより、重み付けパターンの形状を特定することができる。
【００６５】
キャッシュミス算出部２５は、選択対象とする各種重み付けパターンのデータをパターンデータ群２５ａとして管理している。それにより、キャッシュミス算出部２５は、ＣＰＵ１１のアーキテクチャ、及び切り替え前後の仮想マシン３の組み合わせから選択される重み付けパターンのデータをパターンデータ群２５ａから抽出し、ノイズ分のキャッシュミス数Ｓの算出を行う。
【００６６】
割り込み処理部２４は、キャッシュミス算出部２５が算出したキャッシュミス数Ｓを受け取り、受け取ったキャッシュミス数Ｓが０より大きいか否かを確認する。受け取ったキャッシュミス数Ｓが０より大きい場合、割り込み処理部２４は、ＰＭＣ１１４が計数したキャッシュミス数のなかにノイズ分が含まれているとして、そのノイズ分の影響を排除する処理を行う。そのため、割り込み処理部２４は、割り込みを仮想マシン３に通知せず、ノイズ分とするキャッシュミス数Ｓを排除した値をＰＭＣ１１４に新たに設定する。ＰＭＣ１１４に新たに設定される値は、キャッシュミス数Ｓから１を引いた値を、そのＰＭＣ１１４のフル値から減算して得られる値（＝フル値−Ｓ＋１）である。
【００６７】
一方、割り込み処理部２４は、受け取ったキャッシュミス数Ｓが０以下であった場合、ＰＭＣ１１４が計数したキャッシュミス数のなかにノイズ分は含まれていないと見なす。そのため、割り込み処理部２４は、割り込みを仮想マシン３に通知する。
【００６８】
上記のような処理を割り込み処理部２４がオーバーフローによる割り込みの発生時に実行することにより、影響発生期間７０内に仮想マシン３に実際に割り込みが通知される頻度は低減する。この結果、図８に表すように、影響発生期間７０内を含め、仮想マシン３への割り込みの通知は、その仮想マシン３を切り替えることなく動作させている場合と同様の頻度で行われることとなる。
【００６９】
以降は、図１２〜図１４を参照し、サンプリングドライバ３１、並びにハイパーバイザー２に搭載された割り込み処理部２４、及びキャッシュミス数算出部２５について更に詳細に説明する。
【００７０】
種類に係わらず、プログラムはＣＰＵ１１（ＣＰＵ１１に搭載されたＣＰＵコア１１１）によって実行される。そのため、各仮想マシン３（サンプリングドライバ３１を含む）、及びハイパーバイザー２は、共に、ＣＰＵ１１（ＣＰＵ１１に搭載されたＣＰＵコア１１１）によって実行される。しかし、ここでは、ＣＰＵ１１の制御が渡っているプログラムを明確にするために、実行主体としてプログラムを想定する。
【００７１】
図１２は、サンプリングドライバが実行する処理の流れを表すフローチャートである。始めに図１２を参照し、サンプリングドライバ３１が実行する処理について詳細に説明する。
【００７２】
このサンプリングドライバ３１は、指定された性能情報の測定を、指定された期間、行うようになっている。キャッシュミス数の測定では、オペレータは、キャッシュミス数を測定するキャッシュメモリの種類、サンプリング周期値α、及び測定時間、等を指定する。
【００７３】
先ず、サンプリングドライバ３１は、オペレータの指定に従い、各種設定を行う（Ｓ１０１）。その設定により、ＰＭＣ１１４のイベント設定レジスタには、１次キャッシュメモリ１１２のキャッシュミス数を表す測定イベント種が格納され、カウント用のレジスタには初期値（＝フル値−α＋１）が格納される。また、測定時間の計時のために、ＴＳＣ値が保存される。
【００７４】
次に、サンプリングドライバ３１は、ＰＭＣ１１４からの割り込み（実際には、ハイパーバイザー２を介した仮想割り込み）が発生するのを待つ（Ｓ１０２）。ＰＭＣ１１４からの割り込みが発生すると、サンプリングドライバ３１は、プログラム情報（プログラム名、或いは関数名）を採取し（Ｓ１０３）、プログラム情報の採取後、ＰＭＣ１１４に初期値を設定する（Ｓ１０４）。
【００７５】
次に、サンプリングドライバ３１は、測定時間が終了したか否か判定する（Ｓ１０５）。Ｓ１０１で保存したＴＳＣ値から現在のＴＳＣ値を引いた値が表す測定時間が指定された測定時間より長い場合、測定時間が終了していることから、Ｓ１０５の判定はＹｅｓとなってＳ１０６に移行する。Ｓ１０１で保存したＴＳＣ値から現在のＴＳＣ値を引いた値が表す測定時間が指定された測定時間以下であった場合、Ｓ１０５の判定はＮｏとなって上記Ｓ１０２に戻る。それにより、サンプリングドライバ３１は、ＰＭＣ１１４からの次の割り込みに備える。
【００７６】
Ｓ１０６では、サンプリングドライバ３１は、ＰＭＣ１１４のイベント設定レジスタのクリアを行う。そのイベント設定レジスタのクリアにより、キャッシュミス数の測定が終了する。他に測定すべき性能情報が存在しない場合、サンプリングドライバ３１もここで終了する。
【００７７】
上記のように、ＰＭＣ１１４からの割り込みは、ハイパーバイザー２の割り込み処理部２４によって処理され、ノイズ分のキャッシュミスＳの影響が排除され、ハイパーバイザー２から仮想マシン３に通知される。そのため、サンプリングドライバ３１への特別な機能の追加等は不要である。
【００７８】
図１３は、割り込み処理部が実行する処理の流れを表すフローチャートである。次に、図１３を参照し、割り込み処理部２４が実行する処理について詳細に説明する。図１３に表す処理は、ＰＭＣ１１４からの割り込みを契機に実行される。割り込み処理部２４は、ハイパーバイザー２に搭載された機能であるが、実行主体は割り込み処理部２４とする。
【００７９】
全ての仮想マシン３でサンプリングドライバ３１がキャッシュミス数の測定を行っていない場合、ノイズ分のキャッシュミス数Ｓの排除を行う必要はない。そのため、割り込み処理部２４によるノイズ分のキャッシュミス数Ｓの排除は、サンプリングドライバ３１と同様に、オペレータの指示により行わせれば良い。ここでは、便宜的に、ノイズ分のキャッシュミス数Ｓの排除を行う場合のフローチャートを図１３に表している。
【００８０】
先ず、割り込み処理部２４は、ＰＭＣ１１４からの割り込みをキャッチする（Ｓ２０１）。次に、割り込み処理部２４は、他の仮想マシン３の影響によりノイズ分として発生したキャッシュミス数Ｓの算出をキャッシュミス数算出部２５に依頼する（Ｓ２０２）。
【００８１】
その依頼により、キャッシュミス数算出部２５からキャッシュミス数Ｓが通知された後、割り込み処理部２４は、通知されたキャッシュミス数Ｓが０より大きいか否か判定する（Ｓ２０３）。通知されたキャッシュミス数Ｓが０以下であった場合、Ｓ２０３の判定はＮｏとなり、割り込み処理部２４は、動作中の仮想マシン３にＰＭＣ１１４の割り込みを仮想割り込みとして通知する（Ｓ２０４）。その仮想割り込みの通知により、割り込み処理部２４は処理を終了する。一方、通知されたキャッシュミス数Ｓが１以上であった場合、Ｓ２０３の判定はＹｅｓとなり、割り込み処理部２４は、ＰＭＣ１１４のレジスタに、キャッシュミス数Ｓから１を引いた値をフル値から減算して得られる値（＝フル値−Ｓ＋１）を設定する（Ｓ２０５）。このＰＭＣ１１４への値の設定により、割り込み処理部２４は処理を終了する。その結果、ＰＭＣ１１４からの割り込みは無効とされる。
【００８２】
このような処理の実行により、動作中の仮想マシン３には、その仮想マシン３自身の動作によってサンプリング周期値αと同じ数のキャッシュミスが発生した場合に、ＰＭＣ１１４の割り込みが通知されることとなる。ＰＭＣ１１４によるキャッシュミス数の計数は、ノイズ分のキャッシュミスを除外する形で行われることとなる。
【００８３】
図１４は、キャッシュミス数算出部が実行する処理の流れを表すフローチャートである。最後に、図１４を参照し、キャッシュミス数算出部２５が実行する処理について詳細に説明する。図１４に表す処理は、割り込み処理部２４からのキャッシュミス数Ｓの算出依頼を契機に実行される。キャッシュミス数算出部２５も割り込み処理部２４と同じく、ハイパーバイザー２に搭載された機能であるが、実行主体はキャッシュミス数算出部２５とする。
【００８４】
先ず、キャッシュミス数算出部２５は、動作中の仮想マシン３の動作開始時刻ｔｓをＶＭ非動作時間帯記録領域２３から読み込む（Ｓ３０１）。次に、キャッシュミス数算出部２５は、動作開始時刻ｔｓからの経過時間ｔを算出する（Ｓ３０２）。経過時間ｔの算出は、現在時刻を表すＴＳＣ値から動作開始時刻ｔｓを減算することで行われる。
【００８５】
経過時間ｔを算出したキャッシュミス数算出部２５は、ＣＰＵ１１のアーキテクチャ、及び切り替え前後の仮想マシン３の組み合わせに応じて、重み付けパターンを選択する（Ｓ３０３）。次に、キャッシュミス数算出部２５は、選択した重み付けパターンが表す影響継続時間Ｔ（図１４中「一定時間Ｔ」と表記）が経過時間ｔより長いか否か判定する（Ｓ３０４）。影響継続時間Ｔが経過時間ｔより長い場合、つまり影響発生期間７０である場合、Ｓ３０４の判定はＹｅｓとなってＳ３０５に移行する。影響継続時間Ｔが経過時間ｔ以下であった場合、Ｓ３０４の判定はＮｏとなり、キャッシュミス数算出部２５は、値が０のキャッシュミス数Ｓを割り込み処理部２５に通知する（Ｓ３０７）。その通知後、キャッシュミス算出部２５は処理を終了する。
【００８６】
Ｓ３０５では、キャッシュミス算出部２５は、経過時間ｔを、選択した重み付けパターンにあてはめ、経過時間ｔのときの重みを計算する。次に、キャッシュミス数算出部２５は、求めた重みをサンプリング周期値αに乗算することにより、キャッシュミス数Ｓを算出し（式（１））、算出したキャッシュミス数Ｓを割り込み処理部２４に通知する（Ｓ３０６）。その後、キャッシュミス数算出部２５は処理を終了する。
【００８７】
割り込み処理部２４は、このようにして決定されるキャッシュミス数Ｓを用いて、ＰＭＣ１１４からの割り込みの仮想マシン３への通知、或いはその割り込みを無効とし、ＰＭＣ１１４への値の設定を行う。
【００８８】
なお、本実施形態では、キャッシュミス数Ｓの算出に用いる重みは、選択した重み付けパターンの経過時間ｔ時に表す重みとしているが、別の重みを用いても良い。これは、図１１に表すように、重み付けパターンによって、その形状は大きく異なるからである。このことから、重みは、経過時間ｔの間の平均値としても良い。また、影響発生期間７０内にＰＭＣ１１４からの割り込みを複数回、仮想マシン３に通知する状況を想定し、１回の割り込みを仮想マシン３に通知した後、経過時間ｔとして、直前に割り込みを通知してからの経過時間を採用しても良い。
【００８９】
算出されたキャッシュミス数Ｓを用いて算出した値をＰＭＣ１１４に設定する場合、ＰＭＣ１１４はサンプリング周期値αよりも少ないキャッシュミス数の計数により割り込みを発生させることになる。その結果、ＰＭＣ１１４からの割り込みが短い時間内に多く発生する可能性が高い。
【００９０】
ハイパーバイザー２の負荷の増大に伴い、仮想マシン３が実際に動作する時間はより短くなる。これは、キャッシュミスの発生頻度を低下させる。このことから、ＰＭＣ１１４に設定する値は、ＰＭＣ１１４からの割り込みを通知しても良いタイミングとなるまでに発生すると予測するキャッシュミス数を反映させた値としても良い。つまり、ＰＭＣ１１４からの割り込みが発生した場合、これまでに発生したと推測するキャッシュミス数Ｓに加えて、今後、その割り込みを仮想マシン３に通知すべきタイミングとなるまでに発生すると予測されるキャッシュミス数を求めるようにしても良い。ＰＭＣ１１４には、キャッシュミス数Ｓと予測されるキャッシュミス数の加算値から１を引いて得られる値をフル値から減算した値を設定すれば良い。
【００９１】
ＰＭＣ１１４を用いたキャッシュミス数の計数は、仮想マシン３毎に行うようになっている。しかし、キャッシュミス数の計数は、ＴＳＳのように実行するプログラムを切り替える運用であった場合、切り替えられるプログラム毎に行うようにしても良い。キャッシュミス数の計数対象は、２次キャッシュメモリ１１３（或いは３次キャッシュメモリ）であっても良い。
【００９２】
上記以外にも、様々な変形を行うことができる。
【符号の説明】
【００９３】
１    ハードウェア群
２    ハイパーバイザー
３、３Ｘ、３Ｙ    仮想マシン
１１    ＣＰＵ
１２    メモリ
１３    ハードディスク装置
１４    ＮＩＣ
２１    ＶＭ切替部
２２    時刻記録部
２３    ＶＭ非動作時間帯記録領域
２４    割り込み処理部
２５    キャッシュミス数算出部
１１１    ＣＰＵコア
１１２    １次キャッシュメモリ
１１３    ２次キャッシュメモリ
【図１】
2015166896.tif 000003
【図２】
2015166896.tif 000004
【図４】
2015166896.tif 000005
【図５】
2015166896.tif 000006
【図６】
2015166896.tif 000007
【図１０】
2015166896.tif 000008
【図１１】
2015166896.tif 000009
【図１２】
2015166896.tif 000010
【図１３】
2015166896.tif 000011
【図１４】
2015166896.tif 000012
【図３】
2015166896.tif 000013
【図７】
2015166896.tif 000014
【図８】
2015166896.tif 000015
【図９】
2015166896.tif 000016