(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022156563
(43)【公開日】2022-10-14
(54)【発明の名称】情報処理装置及び情報処理方法
(51)【国際特許分類】
G06F 11/34 20060101AFI20221006BHJP
G06F 11/36 20060101ALI20221006BHJP
G06F 12/0897 20160101ALI20221006BHJP
G06F 12/1009 20160101ALI20221006BHJP
G06F 12/1027 20160101ALI20221006BHJP
【FI】
G06F11/34 176
G06F11/36 120
G06F12/0897 100
G06F12/1009
G06F12/1027
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021060316
(22)【出願日】2021-03-31
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】中原 汐
(72)【発明者】
【氏名】吉川 隆英
【テーマコード(参考)】
5B042
5B205
【Fターム(参考)】
5B042GA33
5B042JJ11
5B042MA05
5B042MA10
5B042MC02
5B042MC03
5B042MC10
5B042MC35
5B205MM01
5B205MM51
5B205NN92
5B205RR04
5B205SS12
5B205UU32
(57)【要約】
【課題】情報の仮想アドレスと関連付けてキャッシュメモリの動作を記録する。
【解決手段】取得部は、プログラムの実行時に、キャッシュメモリにおいて発生したイベントの対象となる対象情報の物理アドレスを取得する。生成部は、対象情報の物理アドレスと対象情報の仮想アドレスとの対応関係を示す対応関係情報を用いて、対象情報の物理アドレスを対象情報の仮想アドレスに変換する。そして、生成部は、対象情報の仮想アドレスを示す仮想アドレス情報とイベントの識別情報とを対応付けたログ情報を生成する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
演算処理部を備える情報処理装置であって、
前記演算処理部は、プログラムを実行するプロセッサとキャッシュメモリとを含み、
前記キャッシュメモリは、
前記プログラムの実行時に、前記キャッシュメモリにおいて発生したイベントの対象となる対象情報の物理アドレスを取得する取得部と、
前記対象情報の物理アドレスと前記対象情報の仮想アドレスとの対応関係を示す対応関係情報を用いて、前記対象情報の物理アドレスを前記対象情報の仮想アドレスに変換し、前記対象情報の仮想アドレスを示す仮想アドレス情報と前記イベントの識別情報とを対応付けたログ情報を生成する生成部と、
を含むことを特徴とする情報処理装置。
【請求項2】
前記情報処理装置は、記憶部をさらに備え、
前記イベントは、前記キャッシュメモリにおいて前記対象情報に対するキャッシュミスが発生した際、前記対象情報、前記対象情報の物理アドレス、及び前記イベントを示すイベント情報を、前記キャッシュメモリが前記記憶部から受信する受信動作であり、
前記取得部は、前記キャッシュメモリが受信した前記対象情報の物理アドレス及び前記イベント情報を取得し、
前記生成部は、前記イベント情報に基づいて前記イベントの識別情報を生成することを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記演算処理部は、第1キャッシュメモリをさらに含み、
前記イベントが発生した前記キャッシュメモリは、前記第1キャッシュメモリよりも下位の記憶階層に属する第2キャッシュメモリであることを特徴とする請求項2記載の情報処理装置。
【請求項4】
前記演算処理部は、第1キャッシュメモリをさらに含み、
前記イベントが発生した前記キャッシュメモリは、前記第1キャッシュメモリよりも下位の記憶階層に属する第2キャッシュメモリであり、
前記イベントは、前記第1キャッシュメモリにおいて前記対象情報に対するキャッシュミスが発生した際、前記対象情報、前記対象情報の物理アドレス、及び前記イベントを示すイベント情報を、前記第2キャッシュメモリが前記第1キャッシュメモリへ送信する送信動作であり、
前記取得部は、前記第2キャッシュメモリが送信する前記対象情報の物理アドレス及び前記イベント情報を取得し、
前記生成部は、前記イベント情報に基づいて前記イベントの識別情報を生成することを特徴とする請求項1記載の情報処理装置。
【請求項5】
前記演算処理部は、前記対応関係情報を保持する変換部をさらに含み、
前記変換部は、前記プロセッサから前記対象情報の仮想アドレスを受信し、保持している前記対応関係情報を用いて、受信した前記対象情報の仮想アドレスを前記対象情報の物理アドレスに変換し、
前記第2キャッシュメモリは、
前記対応関係情報を記憶する記憶部と、
前記変換部が保持する前記対応関係情報の更新を示す更新情報に基づいて、前記記憶部が記憶する前記対応関係情報を更新する更新部と、
をさらに含むことを特徴とする請求項3又は4記載の情報処理装置。
【請求項6】
演算処理部が、
プログラムを実行し、
前記プログラムの実行時に、キャッシュメモリにおいて発生したイベントの対象となる対象情報の物理アドレスを取得し、
前記対象情報の物理アドレスと前記対象情報の仮想アドレスとの対応関係を示す対応関係情報を用いて、前記対象情報の物理アドレスを前記対象情報の仮想アドレスに変換し、
前記対象情報の仮想アドレスを示す仮想アドレス情報と前記イベントの識別情報とを対応付けたログ情報を生成する、
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理に関する。
【背景技術】
【0002】
近年の情報処理装置(コンピュータ)では、演算処理部内に、CPU(Central Processing Unit)とともにキャッシュメモリが設けられていることが多い。キャッシュメモリが記憶する情報は、CPUによって実行される命令、又は命令を実行するために使用されるデータである。
【0003】
CPUの命令処理に用いられる情報がキャッシュメモリ内に存在し、キャッシュメモリからの情報の読み込みが成功することは、キャッシュヒットと呼ばれる。一方、命令処理に用いられる情報がキャッシュメモリ内に存在せず、キャッシュメモリからの情報の読み込みが失敗することは、キャッシュミスと呼ばれる。
【0004】
キャッシュミスに関連して、キャッシュメモリのヒット率を向上させることができるコンピュータシステム用のコンパイラ装置が知られている(例えば、特許文献1を参照)。CPUメモリアクセス解析によるソフトウェアの処理速度面での最適化を行うため、システムの振舞いに影響を与えず、低いバンド幅でCPUメモリアクセス状態を出力するCPUメモリアクセス解析装置も知られている(例えば、特許文献2を参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009-277243号公報
【特許文献2】特開2006-285430号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
キャッシュメモリにおけるデータのプリフェッチの際に予測が外れて、アクセスされるデータのプリフェッチに失敗した場合に、キャッシュミスが発生することがある。この場合、キャッシュミスの原因は、特定のデータに対するプリフェッチの失敗である。また、キャッシュメモリからデータが追い出された場合に、キャッシュミスが発生することもある。この場合、キャッシュミスの原因は、特定のデータの追い出しである。
【0007】
情報処理装置で実行されるプログラムのチューニング又はデバッグにおいて、キャッシュミスに関する統計情報と、キャッシュミスが発生したデータの物理アドレス(Physical Address,PA)とが取得されることがある。しかし、キャッシュミスが発生したデータの仮想アドレス(Virtual Address,VA)は分からない。
【0008】
一方、ソフトウェアは仮想アドレス空間のみを認識しており、物理アドレス空間を認識していないため、データの仮想アドレスが分からないとキャッシュミスの原因を特定することは困難である。キャッシュミスの原因が特定されない場合、キャッシュミスが低減するようにプログラムを修正することは難しくなる。
【0009】
キャッシュミスが発生したデータの仮想アドレスを取得するために、キャッシュメモリが送受信する読み出し要求及び書き込み要求に仮想アドレスを付加すると、メモリ帯域の使用量が増大する。メモリ帯域の使用量の増大を回避するために、キャッシュメモリと主記憶装置との間の配線を増やすと、配線面積が増加する。
【0010】
なお、かかる問題は、データに対するキャッシュミスが発生した場合に限らず、命令に対するキャッシュミスが発生した場合においても生ずるものである。また、かかる問題は、キャッシュミスに限らず、キャッシュメモリの様々な動作を解析する場合において生ずるものである。
【0011】
1つの側面において、本発明は、情報の仮想アドレスと関連付けてキャッシュメモリの動作を記録することを目的とする。
【課題を解決するための手段】
【0012】
1つの案では、情報処理装置は、演算処理部を含む。演算処理部は、プログラムを実行するプロセッサ及びキャッシュメモリを含み、キャッシュメモリは、取得部及び生成部を含む。
【0013】
取得部は、プログラムの実行時に、キャッシュメモリにおいて発生したイベントの対象となる対象情報の物理アドレスを取得する。生成部は、対象情報の物理アドレスと対象情報の仮想アドレスとの対応関係を示す対応関係情報を用いて、対象情報の物理アドレスを対象情報の仮想アドレスに変換する。そして、生成部は、対象情報の仮想アドレスを示す仮想アドレス情報とイベントの識別情報とを対応付けたログ情報を生成する。
【発明の効果】
【0014】
1つの側面によれば、情報の仮想アドレスと関連付けてキャッシュメモリの動作を記録することができる。
【図面の簡単な説明】
【0015】
【
図3】情報処理装置の第1のハードウェア構成図である。
【
図4】L2キャッシュのハードウェア構成図である。
【
図6】仮想アドレス及び物理アドレスを示す図である。
【
図8】テーブル制御部のハードウェア構成図である。
【
図11】キャッシュモニタモードにおける情報処理装置の動作を示す図である。
【
図12】ログ取得モードにおける情報処理装置の動作を示す図である。
【
図16】テーブル生成処理のフローチャートである。
【
図17】ログ取得モードの処理において取得されたログ情報を示す図である。
【
図18】ログ情報解析処理のフローチャートである。
【
図19】列が追加された仮想アドレステーブルを示す図である。
【
図20】情報処理装置の第2のハードウェア構成図である。
【発明を実施するための形態】
【0016】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0017】
図1は、実施形態の情報処理装置の構成例を示している。
図1の情報処理装置101は、演算処理部111を含む。演算処理部111は、プロセッサ121及びキャッシュメモリ122を含み、キャッシュメモリ122は、取得部131及び生成部132を含む。
【0018】
図2は、
図1の情報処理装置101が行うログ生成処理の例を示すフローチャートである。まず、プロセッサ121は、プログラムを実行し(ステップ201)、取得部131は、プログラムの実行時に、キャッシュメモリにおいて発生したイベントの対象となる対象情報の物理アドレスを取得する(ステップ202)。
【0019】
次に、生成部132は、対象情報の物理アドレスと対象情報の仮想アドレスとの対応関係を示す対応関係情報を用いて、対象情報の物理アドレスを対象情報の仮想アドレスに変換する(ステップ203)。そして、生成部132は、対象情報の仮想アドレスを示す仮想アドレス情報とイベントの識別情報とを対応付けたログ情報を生成する(ステップ204)。
【0020】
図1の情報処理装置101によれば、情報の仮想アドレスと関連付けてキャッシュメモリ122の動作を記録することができる。
【0021】
図3は、
図1の情報処理装置101の第1のハードウェア構成図である。
図3の情報処理装置301は、演算処理部311、記憶部312、補助記憶装置313、及び表示装置314を含む。これらの構成要素はハードウェアであり、バス315により互いに接続されている。
【0022】
演算処理部311は、CPU321、TLB(Translation Lookaside Buffer)322、L1(Level 1)キャッシュ323、及びL2(Level 2)キャッシュ324を含む。これらの構成要素はハードウェアである。
【0023】
TLB322は、複数のデータそれぞれの物理アドレスと仮想アドレスとの対応関係を示す対応関係情報を保持する。TLB322は、CPU321から仮想アドレスを受信した場合、対応関係情報を用いて、受信した仮想アドレスを対応する物理アドレスに変換し、L1キャッシュ323へ送信する。TLB322は、変換部の一例である。
【0024】
L1キャッシュ323は、1次キャッシュメモリであり、L2キャッシュ324は、2次キャッシュメモリである。L2キャッシュ324は、L1キャッシュ323よりも下位の記憶階層に属する。したがって、L2キャッシュ324は、L1キャッシュ323よりもアクセス速度が低速であり、かつ、L1キャッシュ323よりも記憶容量が大きい。
【0025】
演算処理部311は、
図1の演算処理部111に対応する。CPU321及びL2キャッシュ324は、
図1のプロセッサ121及びキャッシュメモリ122にそれぞれ対応する。
【0026】
記憶部312は、RAM(Random Access Memory)等の半導体メモリであり、解析対象プログラム及びデータを記憶する。記憶部312は、主記憶装置と呼ばれることもある。CPU321は、記憶部312が記憶するデータを用いて、解析対象プログラムを実行する。
【0027】
補助記憶装置313は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置313は、ハードディスクドライブであってもよい。情報処理装置301は、補助記憶装置313に解析対象プログラム及びデータを格納しておき、それらを記憶部312にロードして使用することができる。表示装置314は、ユーザに対する問い合わせ又は指示と処理結果を、画面上に表示する。
【0028】
解析対象プログラムの実行時に、演算処理部311内において、以下のようなイベントが発生することがある。
【0029】
キャッシュイン(L2→L1)
キャッシュイン(メイン→L2)
プリフェッチ(L2→L1)
プリフェッチ(メイン→L2)
置換
無効化
ライト(L1→L2)
ライト(L2→メイン)
【0030】
キャッシュイン(L2→L1)は、L2キャッシュ324がL1キャッシュ323へデータを送信し、L1キャッシュ323がL2キャッシュ324からデータを受信する動作を表す。キャッシュイン(メイン→L2)は、記憶部312がL2キャッシュ324へデータを送信し、L2キャッシュ324が記憶部312からデータを受信する動作を表す。
【0031】
プリフェッチ(L2→L1)は、L1キャッシュ323がL2キャッシュ324からデータをプリフェッチする動作を表し、プリフェッチ(メイン→L2)は、L2キャッシュ324が記憶部312からデータをプリフェッチする動作を表す。キャッシュイン(L2→L1)、キャッシュイン(メイン→L2)、プリフェッチ(L2→L1)、及びプリフェッチ(メイン→L2)は、データのリードに対応する。
【0032】
置換は、キャッシュラインの置き換えによりデータを削除する動作を表し、無効化は、キャッシュラインを無効化する動作を表す。置換及び無効化は、データの削除に対応する。
【0033】
ライト(L1→L2)は、L1キャッシュ323がL2キャッシュ324へデータを送信し、L2キャッシュ324がL1キャッシュ323からデータを受信する動作を表す。ライト(L2→メイン)は、L2キャッシュ324が記憶部312へデータを送信し、記憶部312がL2キャッシュ324からデータを受信する動作を表す。ライト(L1→L2)及びライト(L2→メイン)は、データのライトに対応する。
【0034】
発生したイベントに応じて、L1キャッシュ323とL2キャッシュ324との間、又はL2キャッシュ324と記憶部312との間でパケットの送受信が行われる。送受信されるパケットは、例えば、発生したイベントを示すイベント情報と、イベントの対象となる対象データと、対象データの物理アドレスとを含む。
【0035】
CPU321は、解析対象プログラムの実行時に記憶部312が記憶するデータにアクセスする際、アクセス要求をTLB322へ送信する。アクセス要求は、例えば、読み出し要求又は書き込み要求であり、アクセス対象のデータの仮想アドレスを含む。TLB322は、アクセス要求に含まれる仮想アドレスを、対応する物理アドレスに変換して、L1キャッシュ323へ送信する。
【0036】
アクセス要求が読み出し要求であり、L1キャッシュ323においてキャッシュヒットが発生した場合、L1キャッシュ323は、要求されたデータをCPU321へ送信する。一方、L1キャッシュ323においてキャッシュミスが発生した場合、L1キャッシュ323は、要求されたデータの物理アドレスを含むパケットを、L2キャッシュ324へ送信する。
【0037】
L2キャッシュ324においてキャッシュヒットが発生した場合、L2キャッシュ324は、キャッシュイン(L2→L1)のパケットをL1キャッシュ323へ送信する。キャッシュイン(L2→L1)のパケットは、キャッシュイン(L2→L1)を示すイベント情報と、キャッシュイン(L2→L1)の対象となるデータと、そのデータの物理アドレスとを含む。キャッシュイン(L2→L1)の対象となるデータは、キャッシュヒットが発生したデータである。
【0038】
L1キャッシュ323は、受信したキャッシュイン(L2→L1)のパケットに含まれるデータを記憶するとともに、そのデータをCPU321へ送信する。
【0039】
一方、L2キャッシュ324においてキャッシュミスが発生した場合、L2キャッシュ324は、要求されたデータの物理アドレスを含むパケットを、記憶部312へ送信する。
【0040】
記憶部312は、受信したパケットに含まれる物理アドレスに格納されているデータを取り出し、キャッシュイン(メイン→L2)のパケットをL2キャッシュ324へ送信する。キャッシュイン(メイン→L2)のパケットは、キャッシュイン(メイン→L2)を示すイベント情報と、キャッシュイン(メイン→L2)の対象となるデータと、そのデータの物理アドレスとを含む。キャッシュイン(メイン→L2)の対象となるデータは、記憶部312から取り出されたデータである。
【0041】
L2キャッシュ324は、受信したパケットに含まれるデータを記憶するとともに、キャッシュイン(L2→L1)のパケットをL1キャッシュ323へ送信する。キャッシュイン(L2→L1)のパケットは、キャッシュイン(L2→L1)を示すイベント情報と、キャッシュイン(L2→L1)の対象となるデータと、そのデータの物理アドレスとを含む。キャッシュイン(L2→L1)の対象となるデータは、記憶部312から受信したパケットに含まれるデータである。
【0042】
L1キャッシュ323は、受信したキャッシュイン(L2→L1)のパケットに含まれるデータを記憶するとともに、そのデータをCPU321へ送信する。
【0043】
図4は、
図3のL2キャッシュ324のハードウェア構成例を示している。
図4のL2キャッシュ324は、テーブル制御部411、ログ制御部412、キャッシュ制御部413、及び記憶部414を含む。これらの構成要素はハードウェア回路である。記憶部414は、メモリアレイであってもよい。キャッシュ制御部413は、
図1の取得部131に対応する。
【0044】
記憶部414は、変換テーブル421及びキャッシュ情報423を記憶する。変換テーブル421は、TLB322が保持している対応関係情報と同じ対応関係情報を含む。
【0045】
図5は、
図4の変換テーブル421の例を示している。
図5の変換テーブル421の各エントリは、エントリ番号、Valid、仮想ページ番号、及び物理ページ番号を含む。TLB322が保持している対応関係情報も、
図5と同様のエントリを含む。
【0046】
エントリ番号は、エントリの識別情報であり、Validは、エントリが有効又は無効の何れであるかを示す。Validが論理“1”である場合、エントリは有効であり、Validが論理“0”である場合、エントリは無効である。
【0047】
仮想ページ番号は、仮想アドレスに含まれるページ番号であり、物理ページ番号は、物理アドレスに含まれるページ番号である。この例では、仮想ページ番号及び物理ページ番号が16進数で示されている。各エントリの物理ページ番号は、同じエントリの仮想ページ番号に対応する。したがって、変換テーブル421は、各データの物理アドレスと仮想アドレスとの対応関係を示している。
【0048】
図6は、仮想アドレス及び物理アドレスの例を示している。仮想メモリ空間のサイズは2GBであり、物理メモリ空間のサイズは128MBである。仮想メモリ空間及び物理メモリ空間は、4KBのページに分割されている。
【0049】
図6の仮想アドレス601は、仮想メモリ空間内の31ビットのアドレスを表し、19ビットの仮想ページ番号611及び12ビットのページオフセット612を含む。物理アドレス602は、仮想アドレス601に対応し、物理メモリ空間内の27ビットのアドレスを表す。物理アドレス602は、15ビットの物理ページ番号621及び12ビットのページオフセット622を含む。
【0050】
ページオフセット622の内容は、ページオフセット612の内容と同じであり、キャッシュインデックス631、ブロックオフセット632、及びバイトオフセット633を含む。キャッシュインデックス631は、キャッシュラインを示す情報であり、ブロックオフセット632は、キャッシュライン内のワード位置を示す情報であり、バイトオフセット633は、ワード内のバイト位置を示す情報である。
【0051】
ページオフセット612及びページオフセット622の内容が同じであるため、仮想ページ番号611と物理ページ番号621とを対応付けて変換テーブル421に記録しておくだけで、仮想アドレスと物理アドレスとの間の変換が可能になる。
【0052】
キャッシュ情報423は、複数のキャッシュラインを含み、各キャッシュラインは、L2キャッシュ324がL1キャッシュ323又は記憶部312から受信したデータを含む。各キャッシュラインに含まれるデータは、ページ又はブロックに対応する。
【0053】
キャッシュ制御部413は、L1キャッシュ323に接続されており、L1キャッシュ323との間でパケットを送受信することができる。キャッシュ制御部413は、バス315にも接続されており、記憶部312との間でパケットを送受信することができる。
【0054】
データの物理アドレスを含むパケットをL1キャッシュ323から受信し、キャッシュヒットが発生した場合、キャッシュ制御部413は、受信したパケットに含まれる物理アドレスに対応するデータを、キャッシュ情報423から取り出す。そして、キャッシュ制御部413は、取り出されたデータを含むキャッシュイン(L2→L1)のパケットを、L1キャッシュ323及びログ制御部412へ送信する。
【0055】
一方、キャッシュミスが発生した場合、キャッシュ制御部413は、要求されたデータの物理アドレスを含むパケットを、記憶部312へ送信し、記憶部312からキャッシュイン(メイン→L2)のパケットを受信する。
【0056】
次に、キャッシュ制御部413は、キャッシュイン(メイン→L2)のパケットに含まれるデータをキャッシュ情報423に記録し、そのパケットをログ制御部412へ送信する。そして、キャッシュ制御部413は、キャッシュ情報423に記録したデータを含むキャッシュイン(L2→L1)のパケットを、L1キャッシュ323及びログ制御部412へ送信する。
【0057】
テーブル制御部411は、ログ制御部412又はキャッシュ制御部413からの要求に応じて、変換テーブル421の参照又は更新を行う。
【0058】
ログ制御部412は、キャッシュ制御部413から受信したパケットに含まれる物理アドレスの変換を、テーブル制御部411に要求する。テーブル制御部411は、変換テーブル421を用いて、物理アドレスを仮想アドレスに変換し、仮想アドレスをログ制御部412へ出力する。このとき、テーブル制御部411は、変換テーブル421を用いて、物理アドレスに含まれる物理ページ番号を仮想ページ番号に変換し、仮想ページ番号と物理アドレスに含まれるページオフセットとを連結することで、仮想アドレスを生成する。
【0059】
ログ制御部412は、テーブル制御部411から出力された仮想アドレスから、ブロックオフセット及びバイトオフセットを除くことで、仮想ページ番号及びキャッシュインデックスを含む仮想アドレス情報を生成する。そして、ログ制御部412は、仮想アドレス情報を用いてログ情報422のエントリを生成し、記憶部414に格納する。
【0060】
図7は、
図4のログ情報422の例を示している。
図7のログ情報422の各エントリは、サイクルカウント、仮想アドレス情報、及び識別情報を含む。サイクルカウントは、イベントが発生した時刻を示す情報であり、仮想アドレス情報は、仮想ページ番号及びキャッシュインデックスを含む。この例では、サイクルカウント及び仮想アドレス情報が16進数で示されている。識別情報は、受信したパケットに含まれるイベント情報に対応するイベントの識別情報である。
【0061】
仮想ページ番号及びキャッシュインデックスが分かれば、仮想アドレスが示すデータが格納されているキャッシュラインを特定することができるため、仮想アドレス情報からは、ブロックオフセット及びバイトオフセットが除外されている。識別情報としては、例えば、以下のような値を用いてもよい。
【0062】
0x1 キャッシュイン(L2→L1)
0x2 キャッシュイン(メイン→L2)
0x3 プリフェッチ(L2→L1)
0x4 プリフェッチ(メイン→L2)
0x5 置換
0x6 無効化
0x7 ライト(L1→L2)
0x8 ライト(L2→メイン)
【0063】
なお、ログ情報422のエントリには他の情報を追加してもよい。他の情報は、仮想アドレス情報に対応する物理アドレス情報、イベントの対象となるデータ、イベントが発生したときのプログラムカウンタの値等である。物理アドレス情報を追加する場合、ログ制御部412は、キャッシュ制御部413から受信したパケットに含まれる物理アドレスから、ブロックオフセット及びバイトオフセットを除くことで、物理アドレス情報を生成する。物理アドレス情報は、物理ページ番号及びキャッシュインデックスを含む。
【0064】
情報処理装置301は、通常モード、キャッシュモニタモード、及びログ取得モードのうち何れかの動作モードで動作する。キャッシュモニタモードにおいて、情報処理装置301は、L2キャッシュ324におけるデータの入出力をモニタし、イベントが発生した際にログ情報422のエントリを生成する。
【0065】
ログ取得モードにおいて、情報処理装置301は、記憶部414からログ情報422を取得する。通常モードにおいて、情報処理装置301は、ログ情報422の生成又は取得を伴わない情報処理を行う。
【0066】
図8は、
図4のテーブル制御部411のハードウェア構成例を示している。
図8のテーブル制御部411は、VA取得部811、PA取得部812、及び更新部813を含む。これらの構成要素はハードウェア回路である。
【0067】
VA取得部811は、ログ制御部412から物理アドレスが入力された場合、変換テーブル421において、入力された物理アドレス内の物理ページ番号を含むエントリを参照する。そして、VA取得部811は、そのエントリから仮想ページ番号を取得して、取得された仮想ページ番号を含む仮想アドレスを生成し、ログ制御部412へ出力する。
【0068】
PA取得部812は、外部の要求元から仮想ページ番号が入力された場合、変換テーブル421において、入力された仮想ページ番号を含むエントリを参照する。そして、PA取得部812は、そのエントリから物理ページ番号を取得し、取得された物理ページ番号を要求元へ出力する。外部の要求元は、
図3及び
図4に示されていないハードウェア回路であってもよい。
【0069】
更新部813は、TLB322における対応関係情報の更新を示す更新情報を受信した場合、受信した更新情報に基づいて変換テーブル421を更新することで、TLB322における更新を変換テーブル421に反映させる。これにより、変換テーブル421をTLB322の対応関係情報に同期させることができる。
【0070】
図9は、更新情報の例を示している。
図9の更新情報はパケットであり、TLB322が保持している対応関係情報のエントリのうち、更新されたエントリのエントリ番号、Valid、仮想ページ番号、及び物理ページ番号を含む。
【0071】
TLB322は、
図9のパケットをL2キャッシュ324へ送信し、キャッシュ制御部413は、受信したパケットをテーブル制御部411へ送信する。更新部813は、そのパケットに含まれる情報を、変換テーブル421の同じエントリ番号を有するエントリに上書きすることで、変換テーブル421を更新する。
【0072】
図10は、
図4のログ制御部412のハードウェア構成例を示している。
図10のログ制御部412は、読み出し部1011、書き込み部1012、及び生成部1013を含む。これらの構成要素はハードウェア回路である。
図8のVA取得部811及び
図10の生成部1013は、
図1の生成部132に対応する。
【0073】
生成部1013は、CPU321から有効化信号を受信した場合、キャッシュモニタモードを有効化し、CPU321から無効化信号を受信した場合、キャッシュモニタモードを無効化する。
【0074】
キャッシュモニタモードが有効化されている場合、生成部1013は、キャッシュ制御部413から受信したパケットに含まれる物理アドレスの変換を、テーブル制御部411に要求する。そして、生成部1013は、テーブル制御部411から、物理アドレスに対応する仮想アドレスを受信する。
【0075】
次に、生成部1013は、テーブル制御部411から出力された仮想アドレスから、ブロックオフセット及びバイトオフセットを除くことで、仮想アドレス情報を生成し、生成された仮想アドレス情報を用いてログ情報422のエントリを生成する。そして、生成部1013は、生成されたエントリを書き込み部1012へ送信する。書き込み部1012は、生成部1013から受信したエントリをログ情報422に書き込む。
【0076】
読み出し部1011は、CPU321からログ要求を受信した場合、記憶部414からログ情報422を読み出して、CPU321へ送信する。
【0077】
図3の情報処理装置301によれば、L2キャッシュ324においてイベントが発生した場合、そのイベントの識別情報が、イベントの対象となるデータの仮想アドレスと関連付けてログ情報422に記録される。これにより、データの仮想アドレスと関連付けてL2キャッシュ324の動作を記録することができる。
【0078】
ログ情報422に含まれる仮想アドレスから、解析対象プログラム内の変数を特定することができ、イベントの識別情報から、リード、ライト、削除等の動作と、データの送信先又はデータの送信元とを特定することができる。
【0079】
例えば、L1キャッシュ323においてキャッシュミスが発生したことに起因して、キャッシュイン(L2→L1)が発生した場合を想定する。この場合、ログ情報422内のキャッシュイン(L2→L1)のエントリを参照することで、L1キャッシュ323におけるキャッシュミスの原因となった変数を特定することができる。
【0080】
また、L2キャッシュ324においてキャッシュミスが発生したことに起因して、キャッシュイン(メイン→L2)が発生した場合を想定する。この場合、ログ情報422内のキャッシュイン(メイン→L2)のエントリを参照することで、L2キャッシュ324におけるキャッシュミスの原因となった変数を特定することができる。
【0081】
なお、情報処理装置301において、L2キャッシュ324と記憶部312との間に、1つ以上の別のキャッシュメモリが設けられることもある。この場合、記憶部312に最も近い記憶階層に属するキャッシュメモリMにおいてキャッシュミスが発生した際に、記憶部312からキャッシュメモリMへのキャッシュインが行われる。
【0082】
そして、キャッシュイン(メイン→L2)を示す識別情報の代わりに、記憶部312からキャッシュメモリMへのキャッシュインを示す識別情報が、ログ情報422のエントリに記録される。記録されたエントリを参照することで、キャッシュメモリMにおけるキャッシュミスの原因となった変数を特定することができる。
【0083】
また、情報処理装置301において、L2キャッシュ324が設けられないこともある。この場合、L1キャッシュ323においてキャッシュミスが発生した際に、記憶部312からL1キャッシュ323へのキャッシュインが行われる。
【0084】
そして、キャッシュイン(メイン→L2)を示す識別情報の代わりに、記憶部312からL1キャッシュ323へのキャッシュインを示す識別情報が、ログ情報422のエントリに記録される。記録されたエントリを参照することで、L1キャッシュ323におけるキャッシュミスの原因となった変数を特定することができる。
【0085】
情報処理装置301がログ情報422を蓄積する方法としては、以下のような方法が挙げられる。
【0086】
(M1)書き込み部1012は、すべてのログ情報422を記憶部414に格納する。
【0087】
(M2)書き込み部1012は、ログ情報422を記憶部414に格納し、定期的に記憶部312又は補助記憶装置313へ書き出す。
【0088】
(M3)書き込み部1012は、ログ情報422を記憶部414に格納する代わりに、記憶部312又は補助記憶装置313に格納する。
【0089】
(M4)書き込み部1012は、ログ情報422をラップアラウンド方式で記憶部414に格納する。この場合、書き込み部1012は、記憶部414内において新たなエントリを書き込む記憶領域が不足すると、最古のエントリを削除した後に新たなエントリを書き込む。この方法によれば、ログ情報422の書き込み制御が容易になる。
【0090】
今後、3次元実装等によってL2キャッシュ324の容量が増加することが想定される。この場合、(M1)の方法を採用して、増加した容量をログ情報422の蓄積に利用することで、記憶部312又は補助記憶装置313への書き出しを省略して、解析対象プログラムを高速に実行することができる。また、記憶部414のシーケンシャルアクセスのみでログ情報422を格納できるため、制御回路の規模が小さくて済む。
【0091】
書き込み部1012は、(M1)~(M3)の何れかの方法と(M4)の方法とを併用して、ログ情報422を蓄積してもよい。
【0092】
図11は、キャッシュモニタモードにおける情報処理装置301の動作の例を示している。まず、CPU321は、キャッシュモニタモードを有効化する有効化信号をL2キャッシュ324へ送信し、ログ制御部412内の生成部1013は、受信した有効化信号に基づいてキャッシュモニタモードを有効化する(手順1111)。
【0093】
次の処理1101は、キャッシュモニタモードが有効化されている状態において、CPU321がデータを参照する度に繰り返される。処理1101において、CPU321は、データの仮想アドレスを含む読み出し要求をTLB322へ送信する(手順1112)。
【0094】
次の処理1102は、TLB322においてTLBミスが発生した場合に行われ、TLBヒットが発生した場合にはスキップされる。処理1102において、TLB322は、ページフォルトをCPU321に通知し(手順1113)、CPU321は、TLB322の更新をTLB322に指示する(手順1114)。
【0095】
次に、TLB322は、TLBミスが発生したページを示すページ要求を、補助記憶装置313へ送信し(手順1115)、補助記憶装置313は、ページ要求が示すページを記憶部312へ送信する(手順1116)。記憶部312は、受信したページを記憶するとともに、そのページの物理ページ番号を含むロード完了通知を、TLB322へ送信する(手順1117)。このとき、データのスワップアウト及びスワップインに伴うページテーブルの更新が発生する。
【0096】
次に、TLB322は、保持している対応関係情報に、TLBミスが発生した仮想ページ番号とロード完了通知に含まれる物理ページ番号とを対応付けて記録することで、対応関係情報を更新する(手順1118)。そして、TLB322は、記録された仮想ページ番号及び物理ページ番号の組み合わせを含むパケットを、更新情報としてL2キャッシュ324へ送信する(手順1119)。
【0097】
次に、テーブル制御部411内の更新部813は、受信したパケットに含まれる仮想ページ番号及び物理ページ番号の組み合わせを変換テーブル421に記録することで、変換テーブル421を更新する(手順1120)。ページフォルトの処理はソフトウェア処理となるため、変換テーブル421の更新をハードウェア処理で行うことで、更新にかかる時間を隠蔽することができる。
【0098】
次に、TLB322は、CPU321から受信した読み出し要求に含まれる仮想アドレスを、対応する物理アドレスに変換して、L1キャッシュ323へ送信する(手順1121)。
【0099】
次の処理1103は、L1キャッシュ323においてキャッシュミスが発生した場合に行われ、キャッシュヒットが発生した場合にはスキップされる。処理1103において、L1キャッシュ323は、TLB322から受信した物理アドレスを含むパケットを、L2キャッシュ324へ送信する(手順1122)。
【0100】
次の処理1104は、L2キャッシュ324においてキャッシュミスが発生した場合に行われ、キャッシュヒットが発生した場合にはスキップされる。処理1104において、キャッシュ制御部413は、受信したパケットから物理アドレスを取り出し、その物理アドレスを含むパケットを記憶部312へ送信する(手順1123)。
【0101】
次に、記憶部312は、受信したパケットに含まれる物理アドレスが示すデータを含む、キャッシュイン(メイン→L2)のパケットを、L2キャッシュ324へ送信する(手順1124)。キャッシュ制御部413は、受信したキャッシュイン(メイン→L2)のパケットからデータを取り出し、キャッシュ情報423に記録する。そして、L2キャッシュ324は、ログ生成の処理1105を行う。
【0102】
次に、キャッシュ制御部413は、L1キャッシュ323から受信したパケットに含まれる物理アドレスが示すデータを、キャッシュ情報423から読み出す。そして、キャッシュ制御部413は、読み出されたデータを含むキャッシュイン(L2→L1)のパケットを、L1キャッシュ323へ送信する(手順1125)。
【0103】
L1キャッシュ323は、受信したキャッシュイン(L2→L1)のパケットに含まれるデータを記憶する。そして、L2キャッシュ324は、ログ生成の処理1106を行う。
【0104】
次に、L1キャッシュ323は、TLB322から受信した物理アドレスが示すデータを、CPU321へ送信する(手順1126)。
【0105】
処理1101が繰り返された後、CPU321は、キャッシュモニタモードを無効化する無効化信号をL2キャッシュ324へ送信する(手順1127)。そして、ログ制御部412内の生成部1013は、受信した無効化信号に基づいてキャッシュモニタモードを無効化する。
【0106】
図11の処理1101は、CPU321からTLB322へ読み出し要求が送信される場合の処理であるが、CPU321は、TLB322へ書き込み要求を送信することもある。書き込み要求が送信される場合も、手順1126を除いて、処理1101と同様の処理が行われる。
【0107】
図12は、ログ取得モードにおける情報処理装置301の動作の例を示している。まず、CPU321は、ログ要求をL2キャッシュ324へ送信し、キャッシュ制御部413は、受信したログ要求をログ制御部412へ送信する(手順1211)。
【0108】
ログ制御部412内の読み出し部1011は、受信したログ要求に基づいて、記憶部414にログ情報422を要求し(手順1212)、記憶部414からログ情報422を読み出す(手順1213)。そして、読み出し部1011は、読み出されたログ情報422をキャッシュ制御部413へ送信し、キャッシュ制御部413は、受信したログ情報422をCPU321へ送信する(手順1214)。
【0109】
図13は、
図11のログ生成の処理1105及びログ生成の処理1106の例を示している。ログ生成の処理1105において、キャッシュ制御部413は、記憶部312から受信したキャッシュイン(メイン→L2)のパケットを、ログ制御部412へ送信する(手順1311)。
【0110】
ログ制御部412内の生成部1013は、受信したキャッシュイン(メイン→L2)のパケットに含まれる物理アドレスを、テーブル制御部411へ送信する(手順1312)。そして、生成部1013は、テーブル制御部411から、対応する仮想アドレスを受信する(手順1313)。
【0111】
次に、生成部1013は、テーブル制御部411から受信した仮想アドレスから仮想アドレス情報を生成し、生成された仮想アドレス情報を用いてログ情報422のエントリを生成する。そして、生成部1013は、生成されたエントリを書き込み部1012へ送信する。書き込み部1012は、生成部1013から受信したエントリを、記憶部414内のログ情報422に書き込む(手順1314)。
【0112】
ログ生成の処理1106において、キャッシュ制御部413は、L1キャッシュ323へ送信したキャッシュイン(L2→L1)のパケットを、ログ制御部412へ送信する(手順1321)。
【0113】
ログ制御部412内の生成部1013は、受信したキャッシュイン(L2→L1)のパケットに含まれる物理アドレスを、テーブル制御部411へ送信する(手順1322)。そして、生成部1013は、テーブル制御部411から、対応する仮想アドレスを受信する(手順1323)。
【0114】
次に、生成部1013は、テーブル制御部411から受信した仮想アドレスから仮想アドレス情報を生成し、生成された仮想アドレス情報を用いてログ情報422のエントリを生成する。そして、生成部1013は、生成されたエントリを書き込み部1012へ送信する。書き込み部1012は、生成部1013から受信したエントリを、記憶部414内のログ情報422に書き込む(手順1324)。
【0115】
図14は、
図3の情報処理装置301を利用した解析処理の例を示している。デバッガ1402は、デバッグ作業を支援するプログラムであり、CPU321によって実行される。
【0116】
まず、ユーザ1401は、解析対象プログラム内のチューニング対象部分を関数等の単位で指定して、デバッガ1402に入力し(手順1411)、デバッガ1402を起動する(手順1412)。
【0117】
デバッガ1402は、解析対象プログラムの実行をCPU321に要求し(手順1413)、情報処理装置301は、通常モードの処理1431を行う。
【0118】
デバッガ1402は、チューニング対象部分の開始位置において、キャッシュモニタモードの有効化をCPU321に要求し(手順1414)、CPU321は、有効化信号をL2キャッシュ324へ送信する。そして、情報処理装置301は、キャッシュモニタモードの処理1432を行う。
【0119】
デバッガ1402は、チューニング対象部分の終了位置において、キャッシュモニタモードの無効化をCPU321に要求し(手順1415)、CPU321は、無効化信号をL2キャッシュ324へ送信する。そして、情報処理装置301は、通常モードの処理1433を行う。
【0120】
解析対象プログラムの実行が終了した場合(手順1416)、デバッガ1402は、実行終了をユーザに通知する(手順1417)。そして、デバッガ1402は、ログ情報422の取得をCPU321に要求し(手順1418)、情報処理装置301は、ログ取得モードの処理1434を行う。
【0121】
CPU321は、L2キャッシュ324から受信したログ情報422をデバッガ1402へ転送し(手順1419)、デバッガ1402は、ログ情報422を表示装置314の画面上に表示させる(手順1420)。これにより、ユーザ1401は、ログ情報422の内容を確認することができる。
【0122】
次に、デバッガ1402は、ログ情報422を解析し(手順1421)、解析結果を表示装置314の画面上に表示する(手順1422)。これにより、ユーザ1401は、解析結果を確認することができる。
【0123】
図14の解析処理において、CPU321は、デバッガ1402を実行することで仮想アドレステーブルを生成する。仮想アドレステーブルは、解析対象プログラム内のチューニング対象部分に含まれる変数の仮想アドレスを含み、記憶部312に格納される。
【0124】
図15は、仮想アドレステーブルの例を示している。
図15の仮想アドレステーブルの各エントリは、変数と、その変数の仮想アドレスとを含む。この例では、仮想アドレスが16進数で示されている。
【0125】
図16は、仮想アドレステーブルを生成するテーブル生成処理の例を示すフローチャートである。CPU321は、デバッガ1402を実行することで、
図16の生成処理を行う。
【0126】
まず、CPU321は、デバッガ1402及び解析対象プログラムの実行を開始し、解析対象プログラムにおける実行対象の命令の位置が、チューニング対象部分の開始位置に到達する(ステップ1601)。
【0127】
次に、CPU321は、有効化信号をL2キャッシュ324へ送信することで、キャッシュモニタモードを有効化する(ステップ1602)。そして、CPU321は、実行対象の命令の位置がチューニング対象部分の終了位置に到達したか否かをチェックする(ステップ1603)。
【0128】
実行対象の命令の位置がチューニング対象部分の終了位置に到達していない場合(ステップ1603,NO)、CPU321は、チューニング対象部分に含まれる変数の値を参照又は変更し、その変数の変数名をvarに設定する(ステップ1604)。そして、CPU321は、varに設定された変数の仮想アドレスを取得して、vaddrに設定する(ステップ1605)。
【0129】
次に、CPU321は、仮想アドレステーブルに変数varを含むエントリが存在するか否かをチェックする(ステップ1606)。変数varを含むエントリが存在する場合(ステップ1606,YES)、CPU321は、変数varを含むエントリのうち、最新のエントリの仮想アドレスがvaddrであるか否かをチェックする(ステップ1607)。最新のエントリの仮想アドレスがvaddrである場合(ステップ1607,YES)、CPU321は、ステップ1603以降の処理を繰り返す。
【0130】
一方、最新のエントリの仮想アドレスがvaddrではない場合(ステップ1607,NO)、CPU321は、変数var及び仮想アドレスvaddrを含むエントリを、仮想アドレステーブルに追加する(ステップ1608)。そして、CPU321は、ステップ1603以降の処理を繰り返す。変数varを含むエントリが存在しない場合(ステップ1606,NO)、CPU321は、ステップ1608以降の処理を行う。
【0131】
実行対象の命令の位置がチューニング対象部分の終了位置に到達した場合(ステップ1603,YES)、CPU321は、無効化信号をL2キャッシュ324へ送信することで、キャッシュモニタモードを無効化する(ステップ1609)。そして、CPU321は、処理を継続するか否かをチェックする(ステップ1610)。
【0132】
処理を継続する場合(ステップ1610,YES)、CPU321は、ステップ1601以降の処理を繰り返す。処理を継続しない場合(ステップ1610,NO)、CPU321は、デバッガ1402及び解析対象プログラムの実行を終了する。
【0133】
図17は、
図14のログ取得モードの処理1434において取得されたログ情報422の例を示している。
図17のログ情報422の各エントリは、サイクルカウント、仮想アドレス情報、及び識別情報を含む。
【0134】
サイクルカウント“0x01001222”の仮想アドレス“0x00FFAB”に対応付けられた識別情報“0x1”は、キャッシュイン(L2→L1)を示す。サイクルカウント“0x01001224”の仮想アドレス“0x00FFAB”に対応付けられた識別情報“0x2”は、キャッシュイン(メイン→L2)を示す。
【0135】
サイクルカウント“0x01002020”の仮想アドレス“0x00AACC”及びサイクルカウント“0x01002333”の仮想アドレス“0x10FFAB”にも、識別情報“0x1”が対応付けられている。
【0136】
図18は、
図14の手順1421において行われるログ情報解析処理の例を示すフローチャートである。CPU321は、デバッガ1402を実行することで、
図18のログ情報解析処理を行う。
【0137】
まず、CPU321は、仮想アドレステーブルにL2$miss及びL1$missの列を追加し、各エントリのL2$miss及びL1$missに0を設定する(ステップ1801)。L1$missは、L1キャッシュ323においてキャッシュミスが発生した回数を表し、L2$missは、L2キャッシュ324においてキャッシュミスが発生した回数を表す。
【0138】
図19は、L2$miss及びL1$missの列が追加された仮想アドレステーブルの例を示している。
図19の仮想アドレステーブルにおいて、各エントリのL2$miss及びL1$missは0である。
【0139】
次に、CPU321は、仮想アドレステーブルのエントリを示す制御変数j(j=1~N1)と、取得されたログ情報422のエントリを示す制御変数k(k=1~N2)とを用いて、ステップ1802~ステップ1806の処理を行う。N1は、仮想アドレステーブルのエントリの個数を表し、N2は、ログ情報422のエントリの個数を表す。
【0140】
以下の説明において、VA1(j)は、仮想アドレステーブルのj番目のエントリの仮想アドレスを表す。L1$miss(j)は、仮想アドレステーブルのj番目のエントリのL1$missを表し、L2$miss(j)は、仮想アドレステーブルのj番目のエントリのL2$missを表す。
【0141】
VA2(k)は、ログ情報422のk番目のエントリの仮想アドレス情報を表し、ID(k)は、ログ情報422のk番目のエントリの識別情報を表す。
【0142】
まず、CPU321は、jに1を設定し、kに1を設定して、VA1(j)の仮想ページ番号及びキャッシュインデックスとVA2(k)とを比較する(ステップ1802)。VA1(j)の仮想ページ番号及びキャッシュインデックスとVA2(k)とが一致する場合(ステップ1802,YES)、CPU321は、ID(k)をチェックする(ステップ1803)。
【0143】
ID(k)がキャッシュイン(L2→L1)を示している場合、CPU321は、L1$miss(j)を1だけインクリメントし(ステップ1804)、ログ情報422のk番目のエントリを削除する(ステップ1806)。これにより、j番目の仮想アドレスが示すデータのキャッシュイン(L2→L1)の発生回数が、L1キャッシュ323におけるキャッシュミスの発生回数としてカウントされる。
【0144】
ID(k)がキャッシュイン(メイン→L2)を示している場合、CPU321は、L2$miss(j)を1だけインクリメントし(ステップ1805)、ログ情報422のk番目のエントリを削除する(ステップ1806)。これにより、j番目の仮想アドレスが示すデータのキャッシュイン(メイン→L2)の発生回数が、L2キャッシュ324におけるキャッシュミスの発生回数としてカウントされる。
【0145】
ID(k)がキャッシュイン(L2→L1)及びキャッシュイン(メイン→L2)以外の他のイベントを示している場合、CPU321は、ログ情報422のk番目のエントリを削除する(ステップ1806)。
【0146】
次に、CPU321は、kを1だけインクリメントする。そして、インクリメント後のkがN2以下である場合、CPU321は、ステップ1802以降の処理を繰り返す。
【0147】
VA1(j)の仮想ページ番号及びキャッシュインデックスとVA2(k)とが一致しない場合(ステップ1802,NO)、CPU321は、kを1だけインクリメントする。そして、インクリメント後のkがN2以下である場合、CPU321は、ステップ1802以降の処理を繰り返す。
【0148】
インクリメント後のkがN2よりも大きい場合、CPU321は、kに1を設定し、jを1だけインクリメントする。そして、インクリメント後のjがN1以下である場合、CPU321は、ステップ1802以降の処理を繰り返す。
【0149】
ステップ1802において、ログ情報422のk番目のエントリが削除されている場合、VA1(j)の仮想ページ番号及びキャッシュインデックスとVA2(k)とが一致しないと判定される。インクリメント後のjがN1よりも大きい場合、CPU321は、処理を終了する。
【0150】
図18のログ情報解析処理によれば、解析対象プログラム内のチューニング対象部分について、ログ情報422に記録された各仮想アドレスが、仮想アドレステーブルに記録された変数に対応付けられる。これにより、L1キャッシュ323及びL2キャッシュ324それぞれにおいて、各変数が示すデータに対するキャッシュミスが発生した回数を取得することができる。
【0151】
その後、
図14の手順1422において、CPU321は、キャッシュミスの原因を特定する。まず、CPU321は、L2$miss及びL1$missを含む仮想アドレステーブルから、所定回数以上のキャッシュミスが発生している変数Xを抽出し、解析対象プログラム内における変数Xの位置を特定する。
【0152】
次に、CPU321は、ログ取得モードの処理1434において取得されたログ情報422内で、キャッシュイン(L2→L1)又はキャッシュイン(メイン→L2)よりも前に記録されている、変数Xの仮想アドレス情報を含むエントリを抽出する。そして、CPU321は、抽出されたエントリに含まれる識別情報が示すイベントから、プリフェッチの失敗、キャッシュラインの置き換え又は無効化等を、キャッシュミスの原因として特定する。
【0153】
CPU321は、解析対象プログラム内における変数Xの位置と、特定されたキャッシュミスの原因とを、解析結果として表示装置314の画面上に表示する。CPU321は、L2$miss及びL1$missを含む仮想アドレステーブルを、画面上にさらに表示してもよい。
【0154】
ユーザ1401は、表示された解析結果に基づいて、解析対象プログラムのチューニングを行う。例えば、キャッシュミスの原因がキャッシュラインの置き換えである場合、ソフトウェアプリフェッチ等の追い出し防止対策が行われる。また、キャッシュミスの原因がキャッシュラインの無効化である場合、並列計算アルゴリズム又は共有メモリ使用方法の見直しが行われ、キャッシュミスの原因がハードウェアプリフェッチの失敗である場合、ソフトウェアプリフェッチが挿入される。
【0155】
このようなチューニングを行うことで、変数Xに対するキャッシュミスの発生回数を効率的に減少させることができる。ユーザ1401の代わりに、コンパイラが解析対象プログラムのチューニングを行ってもよい。
【0156】
なお、
図3の情報処理装置301において、L1キャッシュ323及びL2キャッシュ324は、データの代わりに命令を記憶することも可能である。この場合、L1キャッシュ323とL2キャッシュ324との間、又はL2キャッシュ324と記憶部312との間で送受信されるパケットは、イベント情報と、イベントの対象となる対象命令と、対象命令の物理アドレスとを含む。そして、イベントの対象がデータである場合と同様にして、
図14の解析処理が行われる。
【0157】
図20は、
図1の情報処理装置101の第2のハードウェア構成例を示している。
図20の情報処理装置2001は、
図3の情報処理装置301に入力装置2011、媒体駆動装置2012、及びネットワーク接続装置2013を追加した構成を有する。これらの構成要素はハードウェアであり、バス315により互いに接続されている。
【0158】
入力装置2011は、例えば、キーボード、ポインティングデバイス等であり、ユーザからの指示又は情報の入力に用いられる。
【0159】
媒体駆動装置2012は、可搬型記録媒体2014を駆動し、その記録内容にアクセスする。可搬型記録媒体2014は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体2014は、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等であってもよい。
【0160】
ユーザは、可搬型記録媒体2014に、処理に用いられるプログラム及びデータを格納しておき、それらを記憶部312にロードして使用することができる。処理に用いられるプログラムは、例えば、解析対象プログラム及びデバッガ1402である。情報処理装置2001は、補助記憶装置313に、処理に用いられるプログラム及びデータを格納しておき、それらを記憶部312にロードして使用することもできる。
【0161】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、記憶部312、補助記憶装置313、又は可搬型記録媒体2014のような、物理的な(非一時的な)記録媒体である。
【0162】
ネットワーク接続装置2013は、LAN(Local Area Network)、WAN(Wide Area Network)等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェース回路である。情報処理装置2001は、処理に用いられるプログラム及びデータを外部の装置からネットワーク接続装置2013を介して受信し、それらを記憶部312にロードして使用することができる。
【0163】
図1の情報処理装置101、
図3の情報処理装置301、及び
図20の情報処理装置2001の構成は一例に過ぎず、情報処理装置の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0164】
図4のL2キャッシュ324の構成は一例に過ぎず、情報処理装置301の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図8のテーブル制御部411の構成は一例に過ぎず、情報処理装置301の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図10のログ制御部412の構成は一例に過ぎず、情報処理装置301の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0165】
図2、
図16、及び
図18のフローチャートは一例に過ぎず、情報処理装置301の構成又は条件に応じて、一部の処理を省略又は変更してもよい。
図11及び
図12の情報処理装置301の動作と
図13及び
図14の処理は一例に過ぎず、情報処理装置301の構成又は条件に応じて、一部の手順を省略又は変更してもよい。
【0166】
図5に示した変換テーブル421は一例に過ぎず、変換テーブル421は、解析対象プログラムに応じて変化する。
図6に示した仮想アドレス及び物理アドレスは一例に過ぎず、仮想アドレス及び物理アドレスは、情報処理装置301の構成又は条件に応じて変化する。
図7及び
図17に示したログ情報422は一例に過ぎず、ログ情報422は、解析対象プログラムに応じて変化する。
【0167】
図9に示した更新情報は一例に過ぎず、更新情報の形式は、変換テーブル421の形式に応じて変化する。
図15及び
図19に示した仮想アドレステーブルは一例に過ぎず、仮想アドレステーブルは、解析対象プログラムに応じて変化する。
【0168】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0169】
図1乃至
図20を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
演算処理部を備える情報処理装置であって、
前記演算処理部は、プログラムを実行するプロセッサとキャッシュメモリとを含み、
前記キャッシュメモリは、
前記プログラムの実行時に、前記キャッシュメモリにおいて発生したイベントの対象となる対象情報の物理アドレスを取得する取得部と、
前記対象情報の物理アドレスと前記対象情報の仮想アドレスとの対応関係を示す対応関係情報を用いて、前記対象情報の物理アドレスを前記対象情報の仮想アドレスに変換し、前記対象情報の仮想アドレスを示す仮想アドレス情報と前記イベントの識別情報とを対応付けたログ情報を生成する生成部と、
を含むことを特徴とする情報処理装置。
(付記2)
前記情報処理装置は、記憶部をさらに備え、
前記イベントは、前記キャッシュメモリにおいて前記対象情報に対するキャッシュミスが発生した際、前記対象情報、前記対象情報の物理アドレス、及び前記イベントを示すイベント情報を、前記キャッシュメモリが前記記憶部から受信する受信動作であり、
前記取得部は、前記キャッシュメモリが受信した前記対象情報の物理アドレス及び前記イベント情報を取得し、
前記生成部は、前記イベント情報に基づいて前記イベントの識別情報を生成することを特徴とする付記1記載の情報処理装置。
(付記3)
前記演算処理部は、第1キャッシュメモリをさらに含み、
前記イベントが発生した前記キャッシュメモリは、前記第1キャッシュメモリよりも下位の記憶階層に属する第2キャッシュメモリであることを特徴とする付記2記載の情報処理装置。
(付記4)
前記演算処理部は、第1キャッシュメモリをさらに含み、
前記イベントが発生した前記キャッシュメモリは、前記第1キャッシュメモリよりも下位の記憶階層に属する第2キャッシュメモリであり、
前記イベントは、前記第1キャッシュメモリにおいて前記対象情報に対するキャッシュミスが発生した際、前記対象情報、前記対象情報の物理アドレス、及び前記イベントを示すイベント情報を、前記第2キャッシュメモリが前記第1キャッシュメモリへ送信する送信動作であり、
前記取得部は、前記第2キャッシュメモリが送信する前記対象情報の物理アドレス及び前記イベント情報を取得し、
前記生成部は、前記イベント情報に基づいて前記イベントの識別情報を生成することを特徴とする付記1記載の情報処理装置。
(付記5)
前記演算処理部は、前記対応関係情報を保持する変換部をさらに含み、
前記変換部は、前記プロセッサから前記対象情報の仮想アドレスを受信し、保持している前記対応関係情報を用いて、受信した前記対象情報の仮想アドレスを前記対象情報の物理アドレスに変換し、
前記第2キャッシュメモリは、
前記対応関係情報を記憶する記憶部と、
前記変換部が保持する前記対応関係情報の更新を示す更新情報に基づいて、前記記憶部が記憶する前記対応関係情報を更新する更新部と、
をさらに含むことを特徴とする付記3又は4記載の情報処理装置。
(付記6)
前記第1キャッシュメモリは1次キャッシュメモリであり、前記第2キャッシュメモリは2次キャッシュメモリであることを特徴とする付記3乃至5の何れか1項に記載の情報処理装置。
(付記7)
プログラムを実行し、
前記プログラムの実行時に、キャッシュメモリにおいて発生したイベントの対象となる対象情報の物理アドレスを取得し、
前記対象情報の物理アドレスと前記対象情報の仮想アドレスとの対応関係を示す対応関係情報を用いて、前記対象情報の物理アドレスを前記対象情報の仮想アドレスに変換し、
前記対象情報の仮想アドレスを示す仮想アドレス情報と前記イベントの識別情報とを対応付けたログ情報を生成する、
処理を演算処理部が実行することを特徴とする情報処理方法。
(付記8)
前記イベントは、前記キャッシュメモリにおいて前記対象情報に対するキャッシュミスが発生した際、前記対象情報、前記対象情報の物理アドレス、及び前記イベントを示すイベント情報を、前記キャッシュメモリが記憶部から受信する受信動作であり、
前記対象情報の物理アドレスを取得する処理は、前記キャッシュメモリが受信した前記対象情報の物理アドレス及び前記イベント情報を取得する処理を含み、
前記ログ情報を生成する処理は、前記イベント情報に基づいて前記イベントの識別情報を生成する処理を含むことを特徴とする付記7記載の情報処理方法。
(付記9)
前記イベントが発生した前記キャッシュメモリは、前記演算処理部に含まれる第1キャッシュメモリよりも下位の記憶階層に属する第2キャッシュメモリであることを特徴とする付記8記載の情報処理方法。
(付記10)
前記イベントが発生した前記キャッシュメモリは、前記演算処理部に含まれる第1キャッシュメモリよりも下位の記憶階層に属する第2キャッシュメモリであり、
前記イベントは、前記第1キャッシュメモリにおいて前記対象情報に対するキャッシュミスが発生した際、前記対象情報、前記対象情報の物理アドレス、及び前記イベントを示すイベント情報を、前記第2キャッシュメモリが前記第1キャッシュメモリへ送信する送信動作であり、
前記対象情報の物理アドレスを取得する処理は、前記第2キャッシュメモリが送信する前記対象情報の物理アドレス及び前記イベント情報を取得する処理を含み、
前記ログ情報を生成する処理は、前記イベント情報に基づいて前記イベントの識別情報を生成する処理を含むことを特徴とする付記7記載の情報処理方法。
(付記11)
前記第2キャッシュメモリは、前記対応関係情報を記憶し、
前記演算処理部は、前記対応関係情報を保持する変換部を含み、
前記変換部が保持している前記対応関係情報を用いて、前記プログラムの実行時にプロセッサから出力された前記対象情報の仮想アドレスを、前記対象情報の物理アドレスに変換し、
前記変換部が保持している前記対応関係情報の更新を示す更新情報に基づいて、前記第2キャッシュメモリが記憶する前記対応関係情報を更新する、
処理を前記演算処理部がさらに実行することを特徴とする付記9又は10記載の情報処理方法。
(付記12)
前記第1キャッシュメモリは1次キャッシュメモリであり、前記第2キャッシュメモリは2次キャッシュメモリであることを特徴とする付記9乃至11の何れか1項に記載の情報処理方法。
【符号の説明】
【0170】
101、301、2001 情報処理装置
111、311 演算処理部
121 プロセッサ
122 キャッシュメモリ
131 取得部
132 生成部
312、414 記憶部
313 補助記憶装置
314 表示装置
315 バス
321 CPU
322 TLB
323 L1キャッシュ
324 L2キャッシュ
411 テーブル制御部
412 ログ制御部
413 キャッシュ制御部
421 変換テーブル
422 ログ情報
423 キャッシュ情報
601 仮想アドレス
602 物理アドレス
611 仮想ページ番号
612、622 ページオフセット
621 物理ページ番号
631 キャッシュインデックス
632 ブロックオフセット
633 バイトオフセット
811 VA取得部
812 PA取得部
813 更新部
1011 読み出し部
1012 書き込み部
1013 生成部
1101~1106、1431~1434 処理
1401 ユーザ
1402 デバッガ
2011 入力装置
2012 媒体駆動装置
2013 ネットワーク接続装置
2014 可搬型記録媒体