JP5597584B2 - 命令実行分析装置及び命令実行分析方法及びプログラム - Google Patents
命令実行分析装置及び命令実行分析方法及びプログラム Download PDFInfo
- Publication number
- JP5597584B2 JP5597584B2 JP2011072473A JP2011072473A JP5597584B2 JP 5597584 B2 JP5597584 B2 JP 5597584B2 JP 2011072473 A JP2011072473 A JP 2011072473A JP 2011072473 A JP2011072473 A JP 2011072473A JP 5597584 B2 JP5597584 B2 JP 5597584B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- inefficient
- block
- memory
- access
- 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
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
このとき、キャッシュメモリのヒット率が性能に影響する。
一般に、ヒット率は95%以上、高速なものは99%近いヒット率を実現する。
言いかえれば、キャッシュメモリのヒット率が数%低下するだけで、システム全体の性能が大幅に低下することは珍しいことではない。
そのため、例えば、特許文献1のように、ヒット率を中心とするキャッシュメモリの挙動情報を収集し、チューニングを行うことが提案されている。
特許文献1に記載の方式によれば、大規模な配列をもつプログラムに対して、配列の要素ごとにアクセス回数やキャッシュミス回数(アクセス回数−ヒット回数)を表示することができる。
また、特許文献1に記載の方式は、アクセス回数とキャッシュミス回数の多い行を検出して、キャッシュを有効に使用するようソースプログラムを改善する。
つまり、キャッシュミスの大きい配列は、遅延が大きいのでコンパイラによりその間に別の命令を実行するようにコード生成させる。
例えば、キャッシュミス回数=0と表示されれば、キャッシュとしては有効に機能しているように見えるが、同一のキャッシュブロックにのっている、ある要素だけがアクセス回数=10,000回、ミス回数=1回で、他の要素はアクセス回数=1回、ミス回数=0回である場合、キャッシュは有効に使われているとはいえない。
アクセス回数=1回の要素は利用頻度が低いため、本来はキャッシュメモリに乗らなくても影響がない。
むしろ、利用頻度が高い別の配列の別のデータがそのキャッシュメモリを使うのが効率的といえる。
いいかえると、このような配列があると、他の配列のキャッシュミス回数を増やしていることが想像される。
すなわち、キャッシュミスも少なく効率的にアクセスしている配列の要素が、他の配列に対して悪影響を及ぼしていることがあるが、特許文献1の方式では、そのような原因に遡ることは容易にはできない。
キャッシュメモリを有効に使う一つのテクニックとしては、キャッシュのブロックには、アクセス回数が高いものだけを固めてのせ、アクセス回数が低いものも固めておき、キャッシュのブロックには乗らないようにしておくことが必要である。
アクセス頻度が高いものと低いものが混在することがキャッシュ利用効率の低下の要因の一つである。
特に、近年の高性能プロセッサは、キャッシュ容量の大規模化に伴い、キャッシュブロックのサイズが大きくなる傾向にあるため、このような傾向がだんだん顕著になってきた。
また、特許文献1の方式では、このような原因がプログラムのどの部分に起因して発生したのかが容易にはわからないので、効率的なプログラム修正が困難である。
メインメモリ装置へのメモリアクセスが実施されて命令が実行されるシミュレーションにおける前記メインメモリ装置へのメモリアクセスの状況を分析し、分析結果に基づいて、前記メインメモリ装置内の複数のメモリブロックのうち、メモリアクセスの対象がメモリブロック内の一部のデータに偏っているメモリブロックを非効率ブロックとして抽出する非効率ブロック抽出部と、
前記非効率ブロック抽出部により抽出された非効率ブロックへのメモリアクセスを発生させた命令のうち所定の条件に合致する命令を非効率命令として抽出する非効率命令抽出部とを有することを特徴とする。
より具体的には、本手法の中核の部分、すなわち、バイナリコードから非効率命令を取り出すところまでを実施の形態1に示し、中核の部分を実際に適用した例、すなわち、ソースプログラムに対して修正箇所を指示する例を実施の形態2で示す。
図1から図4にて、上記手法の中核部分の説明をする。
図1は、本実施の形態に係る命令実行分析方法の全体のフローを示す。
図2と図4では、図1で示したフローのうち重要構成要素を説明する。
図3は、図2での特定要素の説明を追加する。
図10は、図1に示した命令実行分析方法を実現する命令実行分析装置の構成例を示す。
実行環境とは、初期データや実行中に外部要因により変化するデータを指す。
2は非効率ブロックの抽出処理、3は非効率命令の抽出処理である。
非効率ブロックとは、ひとつのキャッシュブロックに対して、一部のデータのみ頻繁に使われ、他の部分はほとんど使われないため、ブロック全体としては、利用効率が低くなっているものを指す。
非効率命令とは、非効率ブロックの生成要因となっている命令を指す。
非効率ブロックの抽出処理2は、図2に示すように、メモリアクセス数の計測処理と非効率ブロックの判定処理に大別される。
非効率命令の抽出処理3は、図4に示すように、非効率ブロックへのアクセス回数の計測処理と非効率命令の判定処理に大別される。
図2及び図4の詳細は後述する。
4は、出力データであり、非効率命令の一覧表と非効率命令に関する情報である。
図5に具体的な出力例を示す。
図5の詳細は後述する。
命令実行分析装置100は、例えば、情報処理装置に実装されているツール(命令実行分析ツール)である。
より具体的には、シミュレーション部101は、CPU(Central Processing Unit)などのプロセッサ装置を模擬し、メインメモリ装置(例えば、命令実行分析装置100が実装されている情報処理装置のメインメモリ装置)へのメモリアクセスを実施してバイナリコードの命令の実行をシミュレートする。
メインメモリ装置は、プロセッサ装置に含まれているキャッシュメモリのキャッシュブロック数に対応させた複数のメモリブロックに区分されている。
なお、シミュレーション部101は、後述する図2の203、204、206、207の処理、図4の303、304、307、308の処理を行う。
より具体的には、非効率ブロック抽出部102は、シミュレーション部101のシミュレーションにおけるメインメモリ装置へのメモリアクセスの状況を分析し、分析結果に基づいて、メインメモリ装置内の複数のメモリブロックのうち、メモリアクセスの対象がメモリブロック内の一部のデータに偏っているメモリブロックを非効率ブロックとして抽出する。
より具体的には、非効率命令抽出部103は、非効率ブロック抽出部102により抽出された非効率ブロックへのメモリアクセスを発生させた命令のうち所定の条件に合致する命令を非効率命令として抽出する。
また、命令実行分析装置100には、図示していない表示装置が接続されており、非効率命令抽出部103は、図5のように、抽出した非効率命令と当該非効率命令のアドレスの情報を、非効率命令の一覧表と非効率命令に関連する情報400として表示装置に出力する。
非効率ブロック判定部1022は、後述する図2の208〜212の処理(非効率ブロックの判定処理)を行う。
非効率命令判定部1032は、後述する図4の309〜312の処理(非効率命令の判定処理)を行う。
201から212のステップで構成されるが、大きく2つの処理に分けることができ、前半の201から207がメモリアクセス回数の計測であり、後半の208から212が非効率ブロックの判定フローとなっている。
以下では、図1に示した命令実行分析方法を、図10に示した命令実行分析装置100を用いて実行する例として説明する。
一般に1命令は、1バイトとは限らないので、命令を構成するのに必要なバイト数がInstに入る。
シミュレーション部101は、内部に本物のプロセッサ装置と同じ内部リソース(演算装置やレジスタやキャッシュメモリなど)をソフトウェアで実現し、それらのリソースに中間状態を格納し、各種処理を行わせることにより、本物のプロセッサ装置と同じ状態を作り出す。
具体的にはMC[Addr]に1を加算する。
実行した命令が分岐命令でなければ、新しいIPは古いIPに命令長を加算した値になる。
分岐命令であれば、IPは分岐先のアドレスを指す。
アクセス頻度の高いバイト数は配列BA_High[N]に、アクセス頻度の低いバイト数は配列BA_Low[N]に算出される。
詳細は図3で説明する。
アクセス頻度が高いバイトがあり、しかも、アクセス頻度が低いバイトが多数ある場合、非効率ブロックと判断する。
具体的には、BA_High[N]≧1 かつ BA_High[N] ≧ BlockSize × JudgeRatio で表す。
JudgeRatioは、判断基準を変更するパラメータであり0から1までの値を取り得るが、例えば0.5を指定すれば、全ブロックのうち半数以上のバイトが低頻度アクセスで、高頻度アクセスが1バイト以上あるときに非効率ブロックと判断することになる。
非効率ブロックであれば、非効率ブロック判定部1022は、ブロックNが非効率(Not Effeciency)であることを表す配列NE[N]に1をセットし、そうでなければ0をセットする。
図2の209の処理は、ブロックNの配列BA_High[N]と配列BA_Low[N]を求めるのが目的である。
図2の209の処理は、2091から2097の7個のステップから構成される。
2092で、非効率ブロック判定部1022は、閾値ThHとThLを求める。
閾値ThHは、高アクセス頻度か否かの判断の閾値であり、閾値ThLは、低アクセス頻度か否かの判断の閾値である。
これらの閾値は、プログラムの振る舞いが明確な場合は、外部パラメータとして与えることも可能であるが、一般的には、閾値を決定するほど明確な情報を外部にもつことは困難である。
従って、閾値を内部の動作結果に応じて作成することにする。
具体的には、ブロックについて、平均的なメモリアクセス回数(AverageMC)に対して、十分に大きい値をThH、十分に小さい値をThLとする。
この例では、平均メモリアクセスの4倍をThHとし、平均メモリアクセスの1/2をThLとした。
AverageMCは、そのメモリブロック(メモリブロックN)の総メモリアクセス回数(MC[Addr]の総和(但し、Addr∈ブロックN))をブロックのバイト数(BlockSize)で除算すれば求められる。
メモリアクセス回数MC[Addr]が閾値ThH以上であれば、BA_High[N]に1を加算する。
メモリアクセス回数MC[Addr]が閾値ThL以下であれば、BA_Low[N]に1を加算する。
即ち、カウンタ(I)がブロックのバイト数(BlockSize)と等しくなれば、本処理を終了する。
そうでなければ、非効率ブロック判定部1022は、2097で、アドレス(Addr)に1を加算し、2094に戻り、終了条件が成立するまで2094〜2097の処理を繰り返す。
301から312のステップで構成されるが、大きく2つの処理に分けることができ、前半の301から308が非効率ブロックへのアクセス回数の計測であり、後半の309から312が非効率命令の判定フローとなっている。
前半(301〜308)は、命令実行をシミュレータ(図10のシミュレーション部101)でシミュレーションし、非効率ブロックへのアクセス回数を計測するのが目的である。
即ち、IPは最初に実行する命令のアドレスを指す。
具体的には、Addr/BlockSizeの商(整数値)がブロック番号Nになるので、非効率ブロック抽出で求めた配列NE[N]を読むことで非効率ブロックかどうかが分かる。
NE[N]=1のとき、非効率ブロックなので変数NoEffeciency=1にセットし、NE[N]=0のときは、非効率ブロックでないので変数NoEffeciency=0にセットする。
終了の条件は実行命令数、実行サイクル数、特定命令の実行、特定のアドレスにIPが到達するなど様々な条件が考えられるが、本明細書では特定はしない。
実行した命令が分岐命令でなければ、新しいIPは古いIPに命令長を加算した値になる。
分岐命令であれば、IPは分岐先のアドレスを指す。
307の終了条件が成立したとき、シミュレーションは終了し、メモリアクセス回数の計測が完了する。
この値はシステム依存であるが、本実施の形態では0をセットしている。
命令毎の非効率アクセスカウンタNE_InstAC[Addr]が閾値Th_NE_Inst以上であれば、非効率命令と判断し、結果を表す配列NE_Inst[Addr]に1をセットし、非効率命令でなければ0をセットする。
閾値Th_NE_Instは、目的に応じてシステムの外部から与える。
すべての非効率ブロックアクセスしている命令が知りたければ、Th_NE_Inst=1を与え、もっと絞り込んだ情報が知りたければ、Th_NE_Instに大きな値を与える。
すなわち、命令の格納アドレスの最大値に到達したか否かを調べ、到達していれば、この処理が終了する。
そうでなければ、312で命令の格納アドレスに1加えて更新して、310に戻り、310〜312の処理を繰り返す。
NE_Inst[Addr]=1となるAddrについて、アドレスAddr、命令Inst=Mem[Addr]、非効率ブロックへのアクセス回数Ne_Inst_AC[Addr]を表示した例である。
そして、図5に例示するように、抽出した非効率命令を、当該非効率命令のアドレスとともに表示するため、キャッシュメモリの同一ブロックにアクセス頻度の高いデータと低いデータが混在することを防止し、キャッシュメモリの利用効率を向上させることができる。
以下の手段を備えた命令実行分析装置を説明した。
(a)特定のプロセッサに対応したプログラムのバイナリコードと実行環境を入力する手段、
実行環境とは、初期データや実行中に外部要因により変化するデータを指す。
(b)プロセッサの命令の実行を模擬する手段、
このプロセッサは、メモリをアクセスするとき、実行時間の短縮のためキャッシュメモリを有することを前提とする。
(c)命令のメモリアクセスにおける非効率ブロックの抽出手段、
非効率ブロックとは、ひとつのキャッシュブロックに対して、一部のデータのみ頻繁に使われ、他の部分はほとんど使われないため、ブロック全体としては、利用効率が低くなっているものを指す。
(d)非効率命令の抽出手段、
非効率命令とは、前記非効率ブロックの生成要因となっている命令を指す。
(a)プロセッサの命令の実行を模擬する手段、
(b)メモリアクセス回数を計測する手段、
(c)ブロック内のバイトに対して、高頻度のアクセスの個数を計測する手段、
(d)ブロック内のバイトに対して、低頻度のアクセスの個数を計測する手段、
(e)該当ブロックが非効率化か否かを、高頻度アクセスのバイト数と低頻度アクセスのバイト数を用いて判断する手段
を説明した。
(a)高頻度アクセスか否かを判定するための閾値を算出する手段、
(b)低頻度アクセスか否かを判定するための閾値を算出する手段。
(a)プロセッサの命令の実行を模擬する手段、
(b)命令毎の非効率ブロックへのアクセス回数を計測する手段、
(c)すべての命令に対し、非効率ブロックへのアクセス回数と閾値を比較する手段
を説明した。
次に、実施の形態1で示した命令実行分析方法をさらに有効に活用する手法を説明する。
ユーザが実際に実施の形態1に係る命令実行分析方法を活用する場合、図5のような形式より、ソースプログラムに直接指示やヒントが書かれることが望ましい。
このプログラムは、C言語の文法で、本実施の形態に関係があるところのみを記載している。
図6において、1行目でプログラム名を定義し、2行目で変数と配列を定義している。
配列はa、b、cと3つあり、要素数はいずれも10000である。
3行目から6行目まで制御変数iでループを構成し、配列aに配列bと配列cを加算し代入している。
このとき、4行目に示すように、配列bのインデックスjは、変数iの一の位を切り落とし10の倍数のみを取るようになっている。
従って、配列bは要素毎にアクセス数が異なり、非効率ブロックとなっている。
一方、配列aと配列cは、効率的なブロックである。
図6のプログラムに対して、6行目に/* 配列b[j]の参照が非効率です */というメッセージが挿入されている。
このようなメッセージがあるとユーザは、5行目の式のb[j]のメモリ参照が非効率であり、この配列を改善すればよいことが分かる。
例えば、配列bを必要最小限の配列(b[1000])として定義し、j=int(i/10)とすれば、配列b[j]の利用効率が上がることは容易に想像できる。
一般に、このようにデータサイズを小さくすると、キャッシュメモリの利用効率が向上し、システムの性能が向上する。
図において、11はソースプログラムで、例えば図6のようなものである。
12はコンパイラとリンカである。
13はバイナリコードである。
14はリンカの出力の一つで、ソースプログラムとバイナリコードの対応をつける表(以降、対応表と呼ぶ)で、例えば図9のようなものである。
15は実行環境である。
2は非効率ブロックの抽出処理である。
3は、非効率命令の抽出処理である。
4は非効率命令の一覧である。
5は非効率命令をソースプログラムへひもづけする処理である。
6は非効率命令のマーキング付きソースプログラムで、例えば図7のようなものである。
図11において、図10と同じ符号の要素は図10と同じであり、説明を省略する。
ソースプログラム加工部104は、図8の非効率命令のソースプログラムへのひもづけ処理5を実施して、図7に示すようなメッセージをソースプログラムに挿入する。
つまり、ソースプログラム加工部104は、シミュレーションの対象となる命令が記述されるバイナリコードのソースプログラム600内で非効率命令が記述されている位置を非効率命令記述位置として特定し、非効率命令記述位置に、当該非効率命令記述位置に記述されている命令が非効率命令であることを通知するメッセージを挿入する。
バイナリコード13と実行環境15を非効率ブロックの抽出処理2(非効率ブロック抽出部10)に入力すると、実施の形態1で説明したように非効率ブロックの一覧が出力される。
非効率命令の抽出処理3(非効率命令抽出部103)に非効率ブロックの一覧を入力すると実施の形態1で説明したように、非効率命令一覧4が出力される。
非効率命令一覧4と対応表14を非効率命令のソースプログラムへのひもづけ処理5(ソースプログラム加工部104)に入力することで、非効率命令のマーキング付きソースプログラム6、即ち、図7のようなソースプログラムが出力される。
対応表14は、具体的には図9のようなもので、ソースプログラムの行番号、それに対応する命令のアドレスと命令と命令がアクセスする変数などの情報が記載されている。
ソースプログラム加工部104は、非効率命令一覧(図5)に掲載されている命令アドレスを対応表(図9)で見つけ、その行番号と変数名を検索することで、ソースプログラムの修正行番号と非効率命令でアクセスされている変数が見つけられる。
この例では、図5の表の1行目に命令アドレス=1000Hがあるので、図9の対応表で命令アドレス=1000Hを探し、そのときのソースプログラム行番号は5行目で、変数名は配列b[j]であることが分かる。
この情報をもとに、ソースプログラム加工部104は、非効率命令記述位置である図6の5行目のあとにメッセージを挿入すると図7を生成することができる。
(a)ソースプログラムとバイナリコードの対応表(リンカの出力)により、非効率命令とソースプログラムのひもづけをする手段、
(b)非効率命令にひもづけされたソースプログラムの変数名にマーキングをする手段。
図12は、実施の形態1及び2に示す命令実行分析装置100を実現するためのハードウェア資源の一例を示す図である。
なお、図12の構成は、あくまでもハードウェア構成の一例を示すものであり、命令実行分析装置100は図12に記載の構成に限らず、他の構成によって実現されてもよい。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
命令実行分析装置100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
すなわち、実施の形態1及び2で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「命令実行分析方法」を実現することができる。
また、「〜部」、「〜手段」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1及び2の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態1及び2の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
そして、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
Claims (9)
- 所定のキャッシュメモリのキャッシュブロック数に対応させた複数のメモリブロックに区分されているメインメモリ装置へのメモリアクセスが実施されて命令が実行されるシミュレーションにおける前記メインメモリ装置へのメモリアクセスの状況を分析し、分析結果に基づいて、前記メインメモリ装置内の複数のメモリブロックのうち、メモリアクセスの対象がメモリブロック内の一部のデータに偏っているメモリブロックを非効率ブロックとして抽出する非効率ブロック抽出部と、
前記非効率ブロック抽出部により抽出された非効率ブロックへのメモリアクセスを発生させた命令のうち所定の条件に合致する命令を非効率命令として抽出する非効率命令抽出部とを有することを特徴とする命令実行分析装置。 - 前記命令実行分析装置は、表示装置に接続されており、
前記非効率命令抽出部は、
抽出した非効率命令を、当該非効率命令のアドレスとともに前記表示装置に出力することを特徴とする請求項1に記載の命令実行分析装置。 - 前記非効率ブロック抽出部は、
メモリブロックごとに、メモリブロック内のデータのうち、前記シミュレーションの際のアクセス頻度が高い高アクセスデータとアクセス頻度が低い低アクセスデータとを抽出し、
各メモリブロックの高アクセスデータの数と低アクセスデータの数に基づいて、非効率ブロックを抽出することを特徴とする請求項1又は2に記載の命令実行分析装置。 - 前記非効率ブロック抽出部は、
前記シミュレーションの際の前記複数のメモリブロックにおける平均メモリアクセス回数に基づいて、高アクセスデータを抽出するための抽出基準と、低アクセスデータを抽出するための抽出基準とを導出することを特徴とする請求項3に記載の命令実行分析装置。 - 前記非効率命令抽出部は、
メインメモリ装置へのメモリアクセスが実施されて命令が実行されるシミュレーションにおける前記メインメモリ装置へのメモリアクセスの状況を分析し、分析結果に基づいて、前記非効率ブロックへのメモリアクセスを発生させた命令を特定し、特定した命令のうち、前記非効率ブロックへのメモリアクセスを所定回数以上発生させた命令を非効率命令として抽出することを特徴とする請求項1〜4のいずれかに記載の命令実行分析装置。 - 前記命令実行分析装置は、更に、
前記シミュレーションで実行される命令が記述されるバイナリコードのソースプログラム内で、前記非効率命令抽出部により抽出された非効率命令が記述されている位置を非効率命令記述位置として特定し、前記ソースプログラム内の非効率命令記述位置に、当該非効率命令記述位置に記述されている命令が非効率命令であることを通知する通知メッセージを挿入するソースプログラム加工部を有することを特徴とする請求項1〜5のいずれかに記載の命令実行分析装置。 - 前記ソースプログラム加工部は、
前記ソースプログラム内の非効率命令記述位置に記述されている命令に含まれている変数の設定が非効率であることを通知する通知メッセージを、前記ソースプログラム内の非効率命令記述位置に挿入することを特徴とする請求項6に記載の命令実行分析装置。 - コンピュータが、
所定のキャッシュメモリのキャッシュブロック数に対応させた複数のメモリブロックに区分されているメインメモリ装置へのメモリアクセスが実施されて命令が実行されるシミュレーションにおける前記メインメモリ装置へのメモリアクセスの状況を分析し、分析結果に基づいて、前記メインメモリ装置内の複数のメモリブロックのうち、メモリアクセスの対象がメモリブロック内の一部のデータに偏っているメモリブロックを非効率ブロックとして抽出する非効率ブロック抽出ステップと、
前記コンピュータが、
前記非効率ブロック抽出ステップにより抽出された非効率ブロックへのメモリアクセスを発生させた命令のうち所定の条件に合致する命令を非効率命令として抽出する非効率命令抽出ステップとを有することを特徴とする命令実行分析方法。 - 所定のキャッシュメモリのキャッシュブロック数に対応させた複数のメモリブロックに区分されているメインメモリ装置へのメモリアクセスが実施されて命令が実行されるシミュレーションにおける前記メインメモリ装置へのメモリアクセスの状況を分析し、分析結果に基づいて、前記メインメモリ装置内の複数のメモリブロックのうち、メモリアクセスの対象がメモリブロック内の一部のデータに偏っているメモリブロックを非効率ブロックとして抽出する非効率ブロック抽出ステップと、
前記非効率ブロック抽出ステップにより抽出された非効率ブロックへのメモリアクセスを発生させた命令のうち所定の条件に合致する命令を非効率命令として抽出する非効率命令抽出ステップとをコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011072473A JP5597584B2 (ja) | 2011-03-29 | 2011-03-29 | 命令実行分析装置及び命令実行分析方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011072473A JP5597584B2 (ja) | 2011-03-29 | 2011-03-29 | 命令実行分析装置及び命令実行分析方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012208615A JP2012208615A (ja) | 2012-10-25 |
JP5597584B2 true JP5597584B2 (ja) | 2014-10-01 |
Family
ID=47188317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011072473A Expired - Fee Related JP5597584B2 (ja) | 2011-03-29 | 2011-03-29 | 命令実行分析装置及び命令実行分析方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5597584B2 (ja) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01173135A (ja) * | 1987-12-26 | 1989-07-07 | Fujitsu Ltd | ソースコンバータによる変換処理方式 |
JPH08263372A (ja) * | 1995-03-28 | 1996-10-11 | Hitachi Ltd | キャッシュミス情報の収集とチューニングを行う装置 |
JP4199519B2 (ja) * | 2002-11-05 | 2008-12-17 | パナソニック株式会社 | メモリ管理装置及びメモリ管理方法 |
JP4047788B2 (ja) * | 2003-10-16 | 2008-02-13 | 松下電器産業株式会社 | コンパイラ装置およびリンカ装置 |
JP2007018254A (ja) * | 2005-07-07 | 2007-01-25 | Toshiba Corp | 言語処理装置 |
US7707379B2 (en) * | 2006-07-13 | 2010-04-27 | International Business Machines Corporation | Dynamic latency map for memory optimization |
-
2011
- 2011-03-29 JP JP2011072473A patent/JP5597584B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012208615A (ja) | 2012-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7752414B2 (en) | Splash tables: an efficient hash scheme for processors | |
CN107239392B (zh) | 一种测试方法、装置、终端及存储介质 | |
EP3391224B1 (en) | Method and apparatus for data mining from core traces | |
US20060143596A1 (en) | Program analyzing apparatus and testing apparatus, and analyzing method and program therefor | |
US20110307688A1 (en) | Synthesis system for pipelined digital circuits | |
US10437949B1 (en) | Scheduling events in hardware design language simulation | |
JP6234639B2 (ja) | シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム | |
US11055458B1 (en) | Functional coverage of designs using transition bins and cross coverage | |
CN113868068B (zh) | 一种内核性能测试方法、计算设备及存储介质 | |
US10380313B1 (en) | Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration | |
US20150154103A1 (en) | Method and apparatus for measuring software performance | |
JP5597584B2 (ja) | 命令実行分析装置及び命令実行分析方法及びプログラム | |
US8756580B2 (en) | Instance-based field affinity optimization | |
JP6471615B2 (ja) | 性能情報生成プログラム、性能情報生成方法及び情報処理装置 | |
US7707560B2 (en) | Analyzing software performance without requiring hardware | |
CN116149917A (zh) | 评估处理器性能的方法及装置、计算设备、可读存储介质 | |
Zielasko et al. | Virtual prototype driven application specific hardware optimization | |
US10740521B1 (en) | System and method for localized logic simulation replay using emulated values | |
JP6234640B2 (ja) | シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム | |
JP3214459B2 (ja) | シミュレーション方法及び装置 | |
WO2018163387A1 (ja) | 解析装置、解析方法及び解析プログラム | |
CN104462368A (zh) | 数据计算方法、装置和服务器 | |
CN118170597A (zh) | 指令验证方法、装置、电子设备和存储介质 | |
US7917739B2 (en) | Storage medium storing calculation processing visualization program, calculation processing visualization apparatus, and calculation processing visualization method | |
CN117349100A (zh) | 用于确定算子性能的方法、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131114 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140430 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140513 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140602 |
|
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: 20140715 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140811 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5597584 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |