JP2008015941A - プログラム調整装置およびプログラム調整方法 - Google Patents

プログラム調整装置およびプログラム調整方法 Download PDF

Info

Publication number
JP2008015941A
JP2008015941A JP2006188631A JP2006188631A JP2008015941A JP 2008015941 A JP2008015941 A JP 2008015941A JP 2006188631 A JP2006188631 A JP 2006188631A JP 2006188631 A JP2006188631 A JP 2006188631A JP 2008015941 A JP2008015941 A JP 2008015941A
Authority
JP
Japan
Prior art keywords
cache
information
program
cache line
function
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.)
Pending
Application number
JP2006188631A
Other languages
English (en)
Inventor
Manabu Watanabe
学 渡辺
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 JP2006188631A priority Critical patent/JP2008015941A/ja
Priority to US11/822,730 priority patent/US7861235B2/en
Publication of JP2008015941A publication Critical patent/JP2008015941A/ja
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】キャッシュ情報を管理して、最適なリンクオプションを生成することによりキャッシュメモリの使用効率を向上させる。
【解決手段】ターゲットプログラム3を主記憶装置に読み込ませ、キャッシュライン情報生成部5aが構成されるために、キャッシュ性能情報6bとともに、キャッシュライン上のターゲットプログラム3の関数におけるメモリアドレス情報とシンボル情報とを有するキャッシュライン情報6aが表示される。これにより、キャッシュコンフリクトを生じさせている関数を容易に特定でき、同一のキャッシュラインを共有しないようにそのような関数をリンクオプションで再配置することができ、キャッシュミスを削減することができる。
【選択図】図1

Description

本発明はプログラム調整装置およびプログラム調整方法に関し、特にキャッシュの情報を管理し、調整を行うプログラム調整装置およびその製造方法に関する。
CPU(Central Processing Unit)の処理を速くしても、演算に使用されるデータを揃える時間や演算結果を外部メモリに書き込む時間が隘路となるため、システム全体の処理速度の向上は難しいとされていた。
そこで、今日では、高速で小容量のメモリであるキャッシュを、外部メモリとCPUの間に配置させることにより、CPUの処理速度と外部メモリへのアクセスに係るコストの差を吸収させることができ、システム全体の処理速度の向上に寄与することができた。
しかし、キャッシュは高速ではあるが、小容量であるために、キャッシュ上には、外部メモリにあるデータのごく一部しか置くことができない。すなわち、CPUからキャッシュへデータを取りに行くと、所望のデータがキャッシュ上にある場合(キャッシュヒット)は、そのままキャッシュからデータを持っていくことができる。しかし、所望のデータがキャッシュ上に無い場合(キャッシュミス)は、キャッシュからさらに外部メモリに存在する所望のデータをキャッシュまで持ってこなくてはならない。このキャッシュミスによって、システム全体の処理速度向上の隘路となってしまう。
そこで、キャッシュミスを減らし、キャッシュを有効に扱う方法として、例えば、以下の方法が提案されている。
図16は、従来のプログラム調整の処理手順を示したフローチャートである。
従来のプログラム調整は、図16に示す従来のプログラム調整の処理手順をコンピュータに実行させることによって、コンピュータはプログラム調整による処理手順を実行し、従来のプログラム調整装置として機能する。
従来のプログラム調整装置にて、図16に示すフローチャートに沿って以下のような処理が行われる。
[ステップS1] プロジェクトが作成され、ソースプログラムが編集される。
[ステップS2] ソースプログラム中に測定範囲が、必要に応じて設定される。
[ステップS3] ソースプログラムがコンパイル、アセンブル、リンクなどのビルドによってターゲットプログラムに変換される。
[ステップS4] ターゲットプログラムをメインメモリに読み込ませる。
[ステップS8] メインメモリに読み込まれるとCPUによってターゲットプログラムのキャッシュ性能情報(キャッシュヒット数およびキャッシュミス数)の測定が実行される。
[ステップS9] キャッシュ性能情報が取得される。
[ステップS11] キャッシュ性能情報がGUI(Graphical User Interface)で表示される。
[ステップS13] 表示されたキャッシュ性能情報から、プログラムが十分な性能を有するか否かが判断される。十分な性能に至っていない場合は、ステップS14に進む。
[ステップS14] ステップS9で得られたキャッシュ性能情報を参照して、プログラム中のロジックの変更、外部アクセスの局所性の構成、キャッシュへの事前配置措置、コンパイラなどのビルドオプションの調整などが行われる。調整後、ステップS3に戻って再度ステップS3からステップS11を経て、ステップS13にてプログラムが十分な性能を有するか否かが判断され、十分な性能があれば、ステップS15に進む。
[ステップS15] 十分な性能を有するキャッシュ性能情報が得られる。キャッシュ性能情報から判断して、ユーザのニーズによってステップS1またはステップS3に戻って再測定が行われる。
以上の処理手順によって、キャッシュヒット数およびキャッシュミス数が表示されることによって、最適なリンクオプションを生成し、キャッシュミスを削減する方法が提案されている。
また、この手順の他に、キャッシュの容量、ウェイ数、ラインの大きさなどのキャッシュの情報を内部情報として蓄えておく蓄積機能と、原始プログラムよりループを認識し、そのループにおけるデータのアクセス状況を解析する解析機能と、解析機能による解析結果を表示する表示機能とを有するキャッシュの情報表示システム(例えば、特許文献1参照。)も提案されている。
このようなプログラムの調整およびキャッシュの情報表示システムなどにより、キャッシュに関する情報が表示され、この表示された情報を用いることによって、ユーザは自らソースを変更し、あるいはユーザが知っている情報をコンパイラに提供し、プログラム調整を行うことによって、キャッシュミスを減少させ、キャッシュを有効に利用することが可能となった。
特開平08−241208号公報
しかし、キャッシュミスを改善するために上記にあげた従来のプログラム調整を行うことには、以下のような問題点があった。
キャッシュミスを改善するために、例えば、C言語のようなプログラムの調整を行う場合、キャッシュミスから特定の関数のロジックやキャッシュメモリ上の配置を最適化する必要があるが、従来のプログラム調整の方法では、キャッシュミス数などは表示されるが、同じキャッシュラインを共有する他の関数や変数への影響が見えない。このため、関数同士や変数同士のキャッシュライン上から追い出し合い(キャッシュコンフリクト)が発生しても原因となる関数や変数の特定が難しいという問題があった。
本発明はこのような点に鑑みてなされたものであり、キャッシュ情報を管理して、最適なリンクオプションを生成することによりキャッシュメモリの使用効率を向上させるプログラム調整装置およびプログラム調整方法を提供することを目的とする。
本発明では上記課題を解決するために、キャッシュの情報を管理し、調整を行うプログラム調整装置において、図1に示すように、受信したソースプログラム1をビルドによりターゲットプログラム3に変換させるビルド部2と、ターゲットプログラム3を主記憶装置に読み込ませるメモリロード部4と、ターゲットプログラム3のシンボル情報とメモリアドレス情報とを有するキャッシュライン情報6aを生成させるキャッシュライン情報生成部5aと、ターゲットプログラム3のキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報6bを生成させるキャッシュ性能情報生成部5bと、キャッシュライン情報6aとキャッシュ性能情報6bとを統合させ、キャッシュ情報8を生成させるキャッシュ情報統合部7と、キャッシュ情報8を表示させるキャッシュ情報表示部9と、を有することを特徴とするプログラム調整装置が提供される。
上記の構成によれば、ターゲットプログラム3を主記憶装置に読み込ませ、キャッシュライン情報生成部5aが構成されるために、キャッシュ性能情報6bとともに、キャッシュライン上のターゲットプログラム3の関数におけるメモリアドレス情報とシンボル情報とを有するキャッシュライン情報6aが表示される。
また、本発明では、キャッシュの情報を管理し、調整を行うプログラム調整方法において、受信したソースプログラムをビルドによりターゲットプログラムに変換させるビルド工程と、前記ターゲットプログラムを主記憶装置に読み込ませるメモリロード工程と、前記ターゲットプログラムのシンボル情報とメモリアドレス情報とを有するキャッシュライン情報を生成させるキャッシュライン情報生成工程と、前記ターゲットプログラムのキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報を生成させるキャッシュ性能情報生成工程と、前記キャッシュライン情報と前記キャッシュ性能情報とを統合させ、キャッシュ情報を生成させるキャッシュ情報統合工程と、前記キャッシュ情報を表示させるキャッシュ情報表示工程と、を有することを特徴とするプログラム調整方法が提供される。
上記の方法によれば、受信したソースプログラムがビルドによりターゲットプログラムに変換され、ターゲットプログラムが主記憶装置に読み込まれ、ターゲットプログラムのシンボル情報とメモリアドレス情報とを有するキャッシュライン情報が生成され、ターゲットプログラムのキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報が生成され、キャッシュライン情報とキャッシュ性能情報とが統合され、キャッシュ情報が生成され、キャッシュ情報が表示されるため、キャッシュ性能情報とともに、キャッシュライン上のターゲットプログラムの関数におけるメモリアドレス情報とシンボル情報とを有するキャッシュライン情報が表示される。
本発明では、ターゲットプログラムを主記憶装置に読み込ませ、キャッシュライン情報生成部が構成されるために、キャッシュ性能情報とともに、キャッシュライン上のターゲットプログラムの関数におけるメモリアドレス情報とシンボル情報とを有するキャッシュライン情報を表示することができる。これにより、キャッシュコンフリクトを生じさせている関数を容易に特定でき、同一のキャッシュラインを共有しないようにそのような関数をリンクオプションで再配置することができ、キャッシュミスを削減することができる。
以下、本発明の実施の形態を、図面を参照して詳細に説明する。まず、本発明の原理について説明する。
本発明は、キャッシュメモリを搭載したコンピュータ用のアプリケーションプログラムについて、キャッシュライン情報およびキャッシュ性能情報を表示させ、その情報をもとに、プログラムの調整を行う。このようなプログラムの調整を行うことによって、キャッシュミスを削減させ、メモリ使用効率の向上が実現できる。
図1は、本発明の原理図である。
本発明に係るプログラム調整の処理手順は、ビルド部2、メモリロード部4、キャッシュライン情報生成部5a、キャッシュ性能情報生成部5b、キャッシュ情報統合部7およびキャッシュ情報表示部9より構成されている。
ソースプログラム1が入力されると、ビルド部2により、コンパイル、アセンブル、リンクなどの処理が行われ、ターゲットプログラム3が生成される。
ターゲットプログラム3がメモリロード部4により、メインメモリに読み込まれ、開発環境に認識される。開発環境に認識されることによって、キャッシュライン情報生成部5aによりシンボル情報とメモリアドレス情報とを有するキャッシュライン情報6aが生成され、キャッシュ性能情報生成部5bにより、ターゲットプログラム3に関するキャッシュヒット数とキャッシュミス数を有するキャッシュ性能情報6bが生成される。
キャッシュライン情報6aおよびキャッシュ性能情報6bがキャッシュ情報統合部7により統合され、キャッシュ情報8が生成される。
キャッシュ情報表示部9において、キャッシュ情報8が、例えばGUIで表示される。
以上のように、従来のプログラム調整の処理方法と比較すると、キャッシュライン情報生成部5aにおいて、キャッシュライン情報6aを生成することによって、同一のキャッシュライン上にコピーされる関数を容易に表示することができる。このため、キャッシュコンフリクトを生じさせている関数や変数を容易に特定でき、同一のキャッシュラインを共有しないようにそのような関数や変数をリンクオプションで再配置することができ、キャッシュミスを削減することができ、キャッシュメモリの使用効率を向上させることが可能となる。
なお、本発明に係るプログラム調整の処理手順をコンピュータに実行させることによって、コンピュータはプログラム調整による処理手順を実行し、プログラム調整装置として機能する。
図2は、本発明のプログラム調整装置のハードウェア構成例を示すブロック図である。
図2に示すように、プログラム調整装置300は、CPU301によって、装置全体が制御されている。CPU301には、バス304を介してRAM(Random Access Memory)302、キャッシュメモリ302a、ハードディスクドライブ(HDD:Hard Disk Drive)303、モニタ310が接続されたグラフィック処理装置307、マウス308およびキーボード309が接続された入力インタフェース306および通信インタフェース305が接続されている。このようなハードウェア構成によって、本発明のプログラム調整の処理手順が実行され、プログラム調整装置300を実現することができる。
以下、第1の実施の形態について図面を参照にして説明する。
図3は、第1の実施の形態の処理手順を示したフローチャートである。
第1の実施の形態に係るプログラム調整は、本発明の原理にて説明したように、プログラム調整の処理手順をコンピュータに実行させることにより、コンピュータはプログラム調整の処理手順を実行し、プログラム調整装置として機能する。
このようなプログラム調整装置によって、図3に示すような、第1の実施の形態の処理手順が実現される。
第1の実施の形態のプログラム調整の処理手順は、図16に示す従来のプログラム調整の処理手順のステップS4のターゲットロードのあとに、ステップS5のシンボル情報抽出、ステップS6のメモリアドレス情報抽出およびステップS7のキャッシュライン情報生成、そして、ステップS9のキャッシュ性能情報取得のあとに、ステップS10のキャッシュ性能情報マージ、およびステップS11のキャッシュ性能情報表示のあとに、ステップS12のキャッシュライン情報表示が新たに具備されている。
以上のような第1の実施の形態のプログラム調整の処理手順が、以下のようなステップに沿って実行される。
[ステップS1] プロジェクトが作成され、ソースプログラムが編集される。
[ステップS2] ソースプログラム中に測定範囲が、必要に応じて設定される。
[ステップS3] ソースプログラムがコンパイル、アセンブル、リンクなどのビルドによってターゲットプログラムに変換される。
[ステップS4] ターゲットプログラムをメインメモリに読み込ませる。
[ステップS5] ターゲットプログラムが読み込まれることによって、開発環境にシンボル情報およびメモリアドレス情報が認識される。そして、認識されたシンボル情報が抽出される。
[ステップS6] 認識されたメモリアドレス情報を抽出する。
[ステップS7] ターゲットプログラムのどの関数がどのキャッシュラインにコピーされるのかを知るために、シンボル情報とメモリアドレス情報を有するキャッシュライン情報が計算されてテーブル管理される。
[ステップS8] ターゲットプログラムがメインメモリに読み込まれるとCPUによってターゲットプログラムのキャッシュ性能情報(キャッシュヒット数およびキャッシュミス数)の測定が実行される。
[ステップS9] キャッシュ性能情報が取得される。
[ステップS10] キャッシュライン情報とキャッシュ性能情報とが統合されて、1つのテーブルにして管理する。
[ステップS11] キャッシュ性能情報をGUIで表示させる。
[ステップS12] キャッシュライン情報をGUIで表示させる。
[ステップS13] 表示されたキャッシュライン情報およびキャッシュ性能情報から、プログラムが十分な性能を有するか否かが判断される。十分な性能に至っていない場合は、ステップS14に進む。
[ステップS14] ステップS9で得られたキャッシュ性能情報を参照して、プログラム中のロジックの変更、外部アクセスの局所性の構成、キャッシュへの事前配置措置、コンパイラなどのビルドオプションの調整などが自動もしくは手動にて行われる。調整後、ステップS3に戻って再度ステップS3からステップS11を経て、ステップS13にてプログラムが十分な性能を有するか否かが判断され、十分な性能があれば、ステップS15に進む。
[ステップS15] 十分な性能を有するキャッシュライン情報およびキャッシュ性能情報が得られる。キャッシュライン情報およびキャッシュ性能情報から判断して、ユーザのニーズによってステップS1またはステップS3に戻って再測定が行われる。
以上のステップを経て、第1の実施の形態のプログラム調整の処理手順が終了する。
図4〜図6は、第1の実施の形態による内部データのイメージ図、図7は、第1の実施の形態によるメモリウィンドウ中にキャッシュイメージが表示されたGUIのイメージ図である。
以下に第1の実施の形態においてテーブル管理されるデータについて、第1の実施の形態におけるキャッシュサイズが4Kバイト、キャッシュラインが128ライン(32バイト/ライン)である場合を例に説明する。
ステップS7により、メインメモリ上のターゲットプログラムの関数と、キャッシュラインとの対応に関するキャッシュライン情報が計算される。そして、図4に示すように、メモリアドレス情報、キャッシュラインおよびシンボル情報がテーブル管理される。
一方、ステップS9により、メインメモリ上のターゲットプログラムからキャッシュ性能情報が測定される。そして、図5に示すように、キャッシュミス数が測定され、メモリアドレス情報、キャッシュライン、キャッシュミス数がテーブル管理される。
そして、ステップS10により、図6に示すように、図4および図5のテーブルが内部データとして1つのテーブルに統合される。このようにして統合された図6では、左からメモリアドレス情報、キャッシュライン、シンボル情報、キャッシュミス数が内部データとしてテーブル管理される。なお、図6における、_sub、_sub2、_sub3に関するキャッシュミス数は未測定であるとする。
そして、この内部データイメージがGUIによって、図7に示すようにメモリウィンドウイメージ7b中にキャッシュイメージ7aとして表示される。
以上のような処理手順を経ることによって、ターゲットプログラムにおいて、キャッシュライン上にコピーされる関数を容易に表示することができる。このため、キャッシュコンフリクトを生じさせている関数や変数を容易に特定でき、そのような関数や変数が同一のキャッシュラインを共有しないようにリンクオプションで再配置することができ、キャッシュミスを削減することができ、キャッシュメモリの使用効率を向上させることが可能となる。
次に第2の実施の形態について図面を参照にして以下に説明する。
図8は、第2の実施の形態の処理手順を示したフローチャートである。
第1の実施の形態ではメインメモリ上のターゲットプログラムの関数と、キャッシュラインとの対応に関する情報を表示できるようにしたのに対し、第2の実施の形態では、複数の関数および変数が、同一のキャッシュラインを共有している情報について強調表示されるようにした。これを実現するために、ステップS7のキャッシュライン情報生成に代わってステップS7aのキャッシュライン共有情報生成を設けた。
第2の実施の形態に係るプログラム調整は、本発明の原理にて説明したように、プログラム調整の処理手順をコンピュータに実行させることにより、コンピュータはプログラム調整の処理手順を実行し、プログラム調整装置として機能する。
このようなプログラム調整装置によって、図8に示すような、第2の実施の形態の処理手順を示したフローチャートが実現される。
以上のような第2の実施の形態のプログラム調整の処理手順が、以下のようなステップに沿って実行される。
[ステップS1] プロジェクトが作成され、ソースプログラムが編集される。
[ステップS2] ソースプログラム中に測定範囲が、必要に応じて設定される。
[ステップS3] ソースプログラムがコンパイル、アセンブル、リンクなどのビルドによってターゲットプログラムに変換される。
[ステップS4] ターゲットプログラムをメインメモリに読み込ませる。
[ステップS5] ターゲットプログラムが読み込まれることによって、開発環境にシンボル情報およびメモリアドレス情報が認識される。そして、認識されたシンボル情報が抽出される。
[ステップS6] 認識されたメモリアドレス情報を抽出する。
[ステップS7a] ターゲットプログラムのどの関数がどのキャッシュラインにコピーされるのかを知るために、シンボル情報とメモリアドレス情報を有するキャッシュライン情報が計算されてテーブル管理される。各キャッシュラインを共有する関数が判別され、後にGUIで強調表示される。
[ステップS8] ターゲットプログラムがメインメモリに読み込まれるとCPUによってターゲットプログラムのキャッシュ性能情報(キャッシュヒット数およびキャッシュミス数)の測定が実行される。
[ステップS9] キャッシュ性能情報が取得される。
[ステップS10] キャッシュライン情報とキャッシュ性能情報とが統合されて、1つのテーブルにして管理する。
[ステップS11] キャッシュ性能情報をGUIで表示させる。
[ステップS12] キャッシュライン情報をGUIで表示させる。
[ステップS13] 表示されたキャッシュライン情報およびキャッシュ性能情報から、プログラムが十分な性能を有するか否かが判断される。十分な性能に至っていない場合は、ステップS14に進む。
[ステップS14] ステップS9で得られたキャッシュ性能情報を参照して、プログラム中のロジックの変更、外部アクセスの局所性の構成、キャッシュへの事前配置措置、コンパイラなどのビルドオプションの調整などが自動もしくは手動にて行われる。調整後、ステップS3に戻って再度ステップS3からステップS11を経て、ステップS13にてプログラムが十分な性能を有するか否かが判断され、十分な性能があれば、ステップS15に進む。
[ステップS15] 十分な性能を有するキャッシュライン情報およびキャッシュ性能情報が得られる。キャッシュライン情報およびキャッシュ性能情報から判断して、ユーザのニーズによってステップS1またはステップS3に戻って再測定が行われる。
以上のステップを経て、第2の実施の形態のプログラム調整の処理手順が終了する。
図9〜図11は、第2の実施の形態による内部データのイメージ図、図12は、第2の実施の形態によるメモリウィンドウ中にキャッシュイメージが表示されたGUIのイメージ図である。
以下に第2の実施の形態においてテーブル管理されるデータについて、第1の実施の形態と同様に、キャッシュサイズが4Kバイト、キャッシュラインが128ライン(32バイト/ライン)である場合を例に説明する。
ステップS7aにより、メインメモリ上のターゲットプログラムの関数と、キャッシュラインとの対応に関するキャッシュライン情報およびキャッシュラインとの共有情報が計算される。そして、図9に示すように、メモリアドレス情報、キャッシュラインおよびシンボル情報がテーブル管理される。
一方、ステップS9により、メインメモリ上のターゲットプログラムからキャッシュ性能情報が測定される。そして、図10に示すように、キャッシュミス数が測定され、メモリアドレス情報、キャッシュライン、キャッシュミス数がテーブル管理される。
そして、ステップS10により、図11に示すように、図9および図10のテーブルが内部データとして1つのテーブルに統合される。このようにして統合された図11では、左からメモリアドレス情報、キャッシュライン、シンボル情報、キャッシュミス数が内部データとしてテーブル管理される。
そして、この内部データイメージがGUIによって、図12に示すようにメモリウィンドウイメージ8b中にキャッシュイメージ8aとして表示される。このとき、同一のLine4を共有している関数の情報について強調表示される(図12中では、点線で囲まれている。)。
以上のような処理手順を経ることによって、ターゲットプログラムにおいて、キャッシュライン上にコピーされる関数を容易に表示することができる。このため、キャッシュコンフリクトを生じさせている関数や変数を容易に特定でき、そのような関数や変数が同一のキャッシュラインを共有しないようにリンクオプションで再配置することができ、キャッシュミスを削減することができ、キャッシュメモリの使用効率を向上させることが可能となる。
次に第3の実施の形態について以下に図面を参照にして説明する。
図13は、第3の実施の形態の処理手順を示したフローチャートである。
第1の実施の形態ではメインメモリ上のターゲットプログラムの関数と、キャッシュラインとの対応に関する情報を表示できるようにして、さらに第2の実施の形態ではターゲットプログラムの関数が同一のキャッシュラインを共有している情報が強調して表示されるようにした。第3の実施の形態では、第2の実施の形態に対して、ステップS14の調整手段に代わってステップS14aの配置調整手段、ステップS14bのアドレス計算手段、ステップS14cのリンカオプション生成手段を設けることで最適なリンカオプションができるようにした。
第3の実施の形態に係るプログラム調整は、本発明の原理にて説明したように、プログラム調整の処理手順をコンピュータに実行させることにより、コンピュータはプログラム調整の処理手順を実行し、プログラム調整装置として機能する。
このようなプログラム調整装置によって、図13に示すような、第3の実施の形態の処理手順を示したフローチャートが実現される。
以上のような第3の実施の形態のプログラム調整の処理手順が、以下のようなステップに沿って実行される。
[ステップS1] プロジェクトが作成され、ソースプログラムが編集される。
[ステップS2] ソースプログラム中に測定範囲が、必要に応じて設定される。
[ステップS3] ソースプログラムがコンパイル、アセンブル、リンクなどのビルドによってターゲットプログラムに変換される。
[ステップS4] ターゲットプログラムをメインメモリに読み込ませる。
[ステップS5] ターゲットプログラムが読み込まれることによって、開発環境にシンボル情報およびメモリアドレス情報が認識される。そして、認識されたシンボル情報が抽出される。
[ステップS6] 認識されたメモリアドレス情報を抽出する。
[ステップS7a] ターゲットプログラムのどの関数がどのキャッシュラインにコピーされるのかを知るために、シンボル情報とメモリアドレス情報を有するキャッシュライン情報が計算されてテーブル管理される。各キャッシュラインを共有する関数が判別され、後にGUIで強調表示される。
[ステップS8] ターゲットプログラムがメインメモリに読み込まれるとCPUによってターゲットプログラムのキャッシュ性能情報(キャッシュヒット数およびキャッシュミス数)の測定が実行される。
[ステップS9] キャッシュ性能情報が取得される。
[ステップS10] キャッシュライン情報とキャッシュ性能情報とが統合されて、1つのテーブルにして管理する。
[ステップS11] キャッシュ性能情報をGUIで表示させる。
[ステップS12] キャッシュライン情報をGUIで表示させる。
[ステップS13] 表示されたキャッシュライン情報およびキャッシュ性能情報から、プログラムが十分な性能を有するか否かが判断される。十分な性能に至っていない場合は、ステップS14aに進む。
[ステップS14a] ユーザによりGUI上で関数の再配置をドラッグアンドドロップにより行う。あるいは、規定のアルゴリズムなどにより配置を調整する。
[ステップS14b] 配置調整後の配置に対して、境界整合を計算し、再配置後のアドレスを計算し、表示する。
[ステップS14c] 再配置を行うためのリンカオプションを生成し、ステップS15に進む。また、生成されたリンカオプションを必要に応じてステップS3のターゲットビルド手段に反映させる。
[ステップS15] 十分な性能を有するキャッシュライン情報およびキャッシュ性能情報が得られる。キャッシュライン情報およびキャッシュ性能情報から判断して、ユーザのニーズによってステップS1またはステップS3に戻って再測定が行われる。
以上のステップを経て、第3の実施の形態のプログラム調整の処理手順が終了する。
図14は、第3の実施の形態によってメモリウィンドウ中にキャッシュイメージを表示したGUIのイメージ図、図15は、第3の実施の形態によってメモリウィンドウ中に再配置後のキャッシュイメージを表示したGUIのイメージ図である。
以下に第3の実施の形態においてテーブル管理されるデータについて、第1、第2の実施の形態と同様に、キャッシュサイズが4Kバイト、キャッシュラインが128ライン(32バイト/ライン)である場合を例に説明する。
第2の実施の形態と同様に、ステップS7aおよびステップS9にて得られて、テーブル管理される内部データが、ステップS10によって1つのテーブルに統合される。
この統合された内部データイメージがGUIによって、図14に示すようにメモリウィンドウイメージ9b中にキャッシュイメージ9aとして表示される。このとき、同一のline_0を共有している関数の情報について強調表示される(図14中では、点線で囲まれている。)。
図14にて表示されたキャッシュイメージ9aにおいて、ドロップアンドドラッグによって、キャッシュミス数が多い_funcを、例えば、_func2と再配置を行うと、再配置後のアドレスが計算されて、再配置用のリンカオプションが生成されて、図15に示すように表示される。なお、図15では、再配置後のキャッシュミス数は未測定であるとする。
そして、生成されたリンカオプションは、必要に応じて、ステップS3のターゲットビルド手段に反映することができる。
以上のような処理手順を経ることによって、ターゲットプログラムにおいて、キャッシュライン上にコピーされる関数を容易に表示することができる。このため、キャッシュコンフリクトを生じさせている関数や変数を容易に特定でき、そのような関数や変数が同一のキャッシュラインを共有しないようにリンクオプションで再配置することができ、キャッシュミスを削減することができ、キャッシュメモリの使用効率を向上させることが可能となる。
本発明の原理図である。 本発明のプログラム調整装置のハードウェア構成例を示すブロック図である。 第1の実施の形態の処理手順を示したフローチャートである。 第1の実施の形態による内部データのイメージ図(その1)である。 第1の実施の形態による内部データのイメージ図(その2)である。 第1の実施の形態による内部データのイメージ図(その3)である。 第1の実施の形態によるメモリウィンドウ中にキャッシュイメージが表示されたGUIのイメージ図である。 第2の実施の形態の処理手順を示したフローチャートである。 第2の実施の形態による内部データのイメージ図(その1)である。 第2の実施の形態による内部データのイメージ図(その2)である。 第2の実施の形態による内部データのイメージ図(その3)である。 第2の実施の形態によるメモリウィンドウ中にキャッシュイメージが表示されたGUIのイメージ図である。 第3の実施の形態の処理手順を示したフローチャートである。 第3の実施の形態によってメモリウィンドウ中にキャッシュイメージを表示したGUIのイメージ図である。 第3の実施の形態によってメモリウィンドウ中に再配置後のキャッシュイメージを表示したGUIのイメージ図である。 従来のプログラム調整の処理手順を示したフローチャートである。
符号の説明
1 ソースプログラム
2 ビルド部
3 ターゲットプログラム
4 メモリロード部
5a キャッシュライン情報生成部
5b キャッシュ性能情報生成部
6a キャッシュライン情報
6b キャッシュ性能情報
7 キャッシュ情報統合部
8 キャッシュ情報
9 キャッシュ情報表示部

Claims (10)

  1. キャッシュの情報を管理し、調整を行うプログラム調整装置において、
    受信したソースプログラムをビルドによりターゲットプログラムに変換させるビルド部と、
    前記ターゲットプログラムを主記憶装置に読み込ませるメモリロード部と、
    前記ターゲットプログラムのシンボル情報とメモリアドレス情報とを有するキャッシュライン情報を生成させるキャッシュライン情報生成部と、
    前記ターゲットプログラムのキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報を生成させるキャッシュ性能情報生成部と、
    前記キャッシュライン情報と前記キャッシュ性能情報とを統合させ、キャッシュ情報を生成させるキャッシュ情報統合部と、
    前記キャッシュ情報を表示させるキャッシュ情報表示部と、
    を有することを特徴とするプログラム調整装置。
  2. 前記キャッシュライン情報生成部により、前記キャッシュライン情報とともに、同一のキャッシュラインを共有する前記ターゲットプログラムの関数が判別され、前記キャッシュ情報表示部にて、前記キャッシュ情報とともに、前記判別された前記関数が表示されることを特徴とする請求項1記載のプログラム調整装置。
  3. 前記判別された前記関数と前記キャッシュ情報を用いて、前記関数を再配置する配置調整部と、前記再配置後のアドレスを計算するアドレス計算部と、前記再配置後の配置にリンカオプションを生成するリンカオプション生成部とを有することを特徴とする請求項2記載のプログラム調整装置。
  4. 前記再配置にドラッグアンドドロップまたは規定のアルゴリズムを用いることを特徴とする請求項3記載のプログラム調整装置。
  5. 前記関数が、着色されて表示されることを特徴とする請求項2乃至4のいずれか一項に記載のプログラム調整装置。
  6. キャッシュの情報を管理し、調整を行うプログラム調整方法において、
    受信したソースプログラムをビルドによりターゲットプログラムに変換させるビルド工程と、
    前記ターゲットプログラムを主記憶装置に読み込ませるメモリロード工程と、
    前記ターゲットプログラムのシンボル情報とメモリアドレス情報とを有するキャッシュライン情報を生成させるキャッシュライン情報生成工程と、
    前記ターゲットプログラムのキャッシュヒット数とキャッシュミス数とを有するキャッシュ性能情報を生成させるキャッシュ性能情報生成工程と、
    前記キャッシュライン情報と前記キャッシュ性能情報とを統合させ、キャッシュ情報を生成させるキャッシュ情報統合工程と、
    前記キャッシュ情報を表示させるキャッシュ情報表示工程と、
    を有することを特徴とするプログラム調整方法。
  7. 前記キャッシュライン情報生成工程により、前記キャッシュライン情報とともに、同一のキャッシュラインを共有する前記ターゲットプログラムの関数が判別され、前記キャッシュ情報表示工程にて、前記キャッシュ情報とともに、前記判別された前記関数が表示されることを特徴とする請求項6記載のプログラム調整方法。
  8. 前記判別された前記関数と前記キャッシュ情報を用いて、前記関数を再配置する配置調整工程と、前記再配置後のアドレスを計算するアドレス計算工程と、前記再配置後の配置にリンカオプションを生成するリンカオプション生成工程とを有することを特徴とする請求項7記載のプログラム調整方法。
  9. 前記再配置にドラッグアンドドロップまたは規定のアルゴリズムを用いることを特徴とする請求項8記載のプログラム調整方法。
  10. 前記関数が、着色されて表示されることを特徴とする請求項7乃至9のいずれか一項に記載のプログラム調整方法。
JP2006188631A 2006-07-07 2006-07-07 プログラム調整装置およびプログラム調整方法 Pending JP2008015941A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006188631A JP2008015941A (ja) 2006-07-07 2006-07-07 プログラム調整装置およびプログラム調整方法
US11/822,730 US7861235B2 (en) 2006-07-07 2007-07-09 Program control device and program control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006188631A JP2008015941A (ja) 2006-07-07 2006-07-07 プログラム調整装置およびプログラム調整方法

Publications (1)

Publication Number Publication Date
JP2008015941A true JP2008015941A (ja) 2008-01-24

Family

ID=38920311

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006188631A Pending JP2008015941A (ja) 2006-07-07 2006-07-07 プログラム調整装置およびプログラム調整方法

Country Status (2)

Country Link
US (1) US7861235B2 (ja)
JP (1) JP2008015941A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713543B2 (en) * 2009-02-11 2014-04-29 Johnathan C. Mun Evaluation compiler method
US9032129B2 (en) * 2009-10-14 2015-05-12 Silicon Laboratories Norway As Advanced energy profiler

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02176938A (ja) * 1988-12-28 1990-07-10 Hitachi Ltd 機械語命令最適化方式
JPH1173329A (ja) * 1997-06-24 1999-03-16 Matsushita Electric Ind Co Ltd ソフトウエア開発支援システム
JP2000148506A (ja) * 1998-11-13 2000-05-30 Nec Corp キャッシュメモリへのプログラム割り付け装置、キャッシュメモリへのプログラム割り付け方法、及び、その方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2003271394A (ja) * 2002-03-19 2003-09-26 Nec Electronics Corp 関数と基本ブロックの配置割付装置および割付最適化プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6382846B1 (en) * 1998-01-09 2002-05-07 Industial Technology Research Institute Intermediate instruction execution processor which resolves symbolic references without modifying intermediate instruction code
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7392370B2 (en) * 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7779206B2 (en) * 2005-05-16 2010-08-17 Texas Instruments Incorporated Cache inspection with inspection bypass feature
US7739453B2 (en) * 2005-05-16 2010-06-15 Texas Instruments Incorporated Providing information associated with a cache
US7437270B2 (en) * 2006-03-30 2008-10-14 Intel Corporation Performance state management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02176938A (ja) * 1988-12-28 1990-07-10 Hitachi Ltd 機械語命令最適化方式
JPH1173329A (ja) * 1997-06-24 1999-03-16 Matsushita Electric Ind Co Ltd ソフトウエア開発支援システム
JP2000148506A (ja) * 1998-11-13 2000-05-30 Nec Corp キャッシュメモリへのプログラム割り付け装置、キャッシュメモリへのプログラム割り付け方法、及び、その方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2003271394A (ja) * 2002-03-19 2003-09-26 Nec Electronics Corp 関数と基本ブロックの配置割付装置および割付最適化プログラム

Also Published As

Publication number Publication date
US7861235B2 (en) 2010-12-28
US20080010399A1 (en) 2008-01-10

Similar Documents

Publication Publication Date Title
US9858192B2 (en) Cross-page prefetching method, apparatus, and system
TWI489385B (zh) 一種用於預先擷取快取線的電腦實作方法與子系統
JP6925473B2 (ja) 後方互換性のためのアプリケーション固有動作パラメータのリアルタイム調整
JP5536658B2 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
KR102147356B1 (ko) 캐시 메모리 시스템 및 그 동작방법
JP7340326B2 (ja) メンテナンス動作の実行
EP3639144B1 (en) Memory management in non-volatile memory
US8006041B2 (en) Prefetch processing apparatus, prefetch processing method, storage medium storing prefetch processing program
CN114580344B (zh) 测试激励生成方法、验证方法、验证系统及相关设备
JP2013505488A (ja) 読み取り及び書き込みアウェア・キャッシュを制御する方法、装置、プログラム、キャッシュ・コントローラ
WO2023108938A1 (zh) 解决高速缓冲存储器地址二义性问题的方法和装置
CN106575235A (zh) 虚拟计算环境中的存储器和资源管理
Chen et al. Flow-guided file layout for out-of-core pathline computation
US6922753B2 (en) Cache prefetching
CN102789377B (zh) 处理指令分组信息的方法和装置
US8996833B2 (en) Multi latency configurable cache
CN110073338A (zh) 翻译旁视缓冲器中的可配置的偏斜关联性
US10102104B2 (en) Thread dump viewer
JP2008015941A (ja) プログラム調整装置およびプログラム調整方法
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
JP5669638B2 (ja) 文書管理装置、文書管理方法、プログラム。
US20150262556A1 (en) Presenting digital images with render-tiles
US7945901B2 (en) System and method for facilitating software profiling procedures
JP5811194B2 (ja) 制御装置、解析装置、解析方法、および解析プログラム
Krause et al. HBPB, Applying Reuse Distance to Improve Cache Efficiency Proactively

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090402

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110527

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110621