JPH10124327A - インストラクションキャッシュミス率削減方法 - Google Patents

インストラクションキャッシュミス率削減方法

Info

Publication number
JPH10124327A
JPH10124327A JP8273222A JP27322296A JPH10124327A JP H10124327 A JPH10124327 A JP H10124327A JP 8273222 A JP8273222 A JP 8273222A JP 27322296 A JP27322296 A JP 27322296A JP H10124327 A JPH10124327 A JP H10124327A
Authority
JP
Japan
Prior art keywords
cache
function
functions
application program
instruction
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
JP8273222A
Other languages
English (en)
Inventor
Joachim Stolberg Hans
ヨアヒム シュトルベルグ ハンス
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP8273222A priority Critical patent/JPH10124327A/ja
Priority to US08/951,744 priority patent/US6002875A/en
Publication of JPH10124327A publication Critical patent/JPH10124327A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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

Abstract

(57)【要約】 【課題】 潜在的なキャッシュミスのプロファイルを基
にしたファンクションユニットにおけるコードを配置す
ることによってアプリケーションプログラムのインスト
ラクションキャッシュミスを削減する方法の提供。 【解決手段】 潜在的キャッシュミスのプロファイル
が、元来のファンクションレイアウトおよびキャッシュ
パラメータを考慮してインストラクショントレースから
引き出される。アプリケーションプログラムのファンク
ションは、潜在的なキャッシュミスのプロファイルによ
ってソートされる。それからファンクションは、既に割
り当てられたファンクションに対するキャッシュスペー
ス上の潜在的キャッシュミスのプロファイルのほとんど
同じ分布を達成するためにキャッシュスペースに連続し
て割り当てられる。割当ての後、全てのファンクション
はキャッシュスペースから割当ホールに導くメモリスペ
ースにマッピングされる。最後に、割当ホールが必要な
場所に挿入される一方で、ファンクションは決められた
順序でリンクされる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、アプリケーション
プログラムのインストラクションキャッシュミスを削減
する方法に関する。この方法は、低インストラクション
キャッシュミス率が望まれるインストラクションキャッ
シュを有するプログラムに組み込めるマイクロプロセッ
サで駆動するアプリケーションプログラムの実行の際に
使用される。1つの例として、これに限定はされない
が、低コストシステム環境におけるRISCマイクロプ
ロセッサ上のマルチメディアアプリケーションの実行が
挙げられる。ここで、低速外部メモリアクセスによる数
多くのストールサイクル(stall cycles)
が防止でき、マルチメディアアプリケーションは加速す
る。もう一つの例として、これに限定はされないが、埋
め込まれたマイクロプロセッサ上の実時間アプリケーシ
ョンの実行が挙げられる。ここでは、最悪の場合に対す
る少ないキャッシュミスが、ファンクション性能を保証
するために必要である。
【0002】
【従来の技術】従来、ファンクションのリンクオーダー
は、単にグラフ情報といった統計上のデータに基づいて
修正され、例えば、“Profile Guided
Code Positioning” by K.Pe
ttis and R.C.Hansen, Pro
c. Conf. On Programming L
anguage Design and Implem
entation, pp.16−26, June
1990 に記載されているように、メモリ内の線形リ
ストを形成するために付加されてきた。
【0003】その他のアプリケーションにおいて、コー
ド配置が、例えば、“Achieving High
Instruction Cache Perform
ance with an Optimizing C
ompiler” by W.−m. Hwu and
P.Chang, Proc. 16th Ann.
Int´l. Symp. On Computer
Architecture, pp. 183−19
1, June 1989. に記載されているよう
に、コールグラフあるいは実行頻度といった統計上の情
報を使用して基本のブロックレベルで実行される。
【0004】
【発明が解決しようとする課題】しかしながら、前者で
は、キャッシュ作用の評価に必要な、メモリアクセスに
おける連続した情報を含まないので、コールグラフ情報
といった統計上のデータは、キャッシュミスに関する必
然性を与えない。更に、単にメモリにファンクションを
次々付加するだけなので、配置の融通性が非常に限定さ
れる。
【0005】また、後者では、キャッシュ作用に必要な
メモリアクセスにおける連続した情報は、単に統計上の
データを使用しているだけなので、利用することができ
ない。さらに、目的コードの莫大な修正が基本ブロック
配置に要求されるので、性能はさらに複雑になる。
【0006】また多くのRISCアーキテクチュアにお
いて、直接マッピングされたキャッシュが、簡素化、お
よびプロセッサクロックおよびメモリアクセス時間の間
のギャップを解消するために短いアクセス時間を達成す
るために使用されるが、直接マッピングされた構造は、
深刻な品質の低下を伴って、好ましくないコードレイア
ウトの場合のプログラム実行の最中にしばしばキャッシ
ュラインの衝突をおこす。
【0007】それ故に本発明の課題は、潜在的なキャッ
シュミスのプロファイルを基にしたファンクションユニ
ットにおけるコードを配置することによってアプリケー
ションプログラムのインストラクションキャッシュミス
を削減する方法を提供することにある。
【0008】
【課題を解決するための手段】本発明によれば、インス
トラクショントレースから潜在的に生じるインストラク
ションキャッシュミスにおける、アプリケーションプロ
グラムの各ファンクションに対するキャッシュラインユ
ニットによる潜在的キャッシュミスのプロファイルから
成る情報を収集する情報収集方法であって、シミュレー
ションを介してインストラクショントレースデータを収
集するステップ、前記ファンクションがキャッシュライ
ン境界に並べられていると仮定して、前記アプリケーシ
ョンプログラムの各ファンクションに対するキャッシュ
ラインユニットに分割されているメモリー範囲を含む前
記アプリケーションプログラムのためのファンクション
テーブルを生成するステップ、前記アプリケーションプ
ログラムの一つのファンクションの実行における前記キ
ャッシュラインユニットのそれぞれへの前記インストラ
クショントレースに挙げられている第1のアクセスのみ
をカウントするステップ、新しいファンクションコール
が前記アプリケーションプログラム内で起こる毎に、前
記キャッシュラインユニットへの第1のアクセスを再び
カウントするステップ、および収集されたデータを、前
記アプリケーションの各ファンクションの各キャッシュ
ラインユニットに対するカウントされたアクセスの数を
含むアクセステーブルにおいて前記アプリケーションプ
ログラムの各ファンクションに対するキャッシュライン
ユニット当たりの潜在的キャッシュミスのプロファイル
の形に配置するステップ、を有していることを特徴とす
る情報収集方法が得られる。
【0009】また本発明によれば、メモリー内のアプリ
ケーションプログラムの複数のファンクションを再配置
する方法であって、新しいスタートアドレスが潜在的キ
ャッシュミスのプロファイルを使用している各ファンク
ションに対して連続して決定される再配置方法におい
て、連続割り当ての順序を決定する潜在的キャッシュミ
スの前記プロファイルによる前記ファンクションをソー
トするステップ、前記アプリケーションプログラムの既
に割り当てられたファンクションについての潜在的キャ
ッシュミスの前記プロファイルを考慮する時、キャッシ
ュスペースに及ぶ潜在的キャッシュミスのプロファイル
を最も均等な分布に導くキャッシュスペース内の位置を
前記ファンクションの割り当てられるべき次のものに合
わせるステップ、前記アプリケーションプログラムの全
てのファンクションが前記キャッシュスペースに割り当
てられるまで最終ステップを繰り返すステップ、メモリ
ースペースに前記キャッシュスペースから前記ファンク
ションをマッピングして割り当てホールを導入するステ
ップ、および前記アプリケーションプログラムの各ファ
ンクションが、最終ステップにおいてこのファンクショ
ンに対して決定されたメモリーアドレスに割り当てられ
るように、前記割り当て穴を挿入しながら、最終ステッ
プで決定された順序で前記ファンクションをリンクする
ステップ、を有することを特徴とする再配置方法が得ら
れる。
【0010】また本発明によれば、アプリケーションプ
ログラム内のインストラクションキャッシュミスを削減
するインストラクションキャッシュミス率削減方法にお
いて、前記アプリケーションプログラムのファンクショ
ンが、上述した情報収集法によるインストラクショント
レースから引き出された潜在的キャッシュミスのプロフ
ァイルを使用する上述した再配置方法によって再配置さ
れることを特徴とするインストラクションキャッシュミ
ス率削減方法が得られる。
【0011】また本発明によれば、アプリケーションプ
ログラムのインストラクションキャッシュミス率を削減
するインストラクションキャッシュミス率削減方法にお
いて、潜在的キャッシュミスのプロファイルを、元来の
ファンクションレイアウトおよびキャッシュパラメータ
を考慮してインストラクショントレースから引き出すこ
と、アプリケーションプログラムのファンクションを、
潜在的なキャッシュミスのプロファイルによってソート
すること、その後にファンクションを、既に割り当てら
れたファンクションに対するキャッシュスペース上の潜
在的キャッシュミスのプロファイルのほとんど同じ分布
を達成するためにキャッシュスペースに連続して割り当
てること、その後、全てのファンクションをキャッシュ
スペースから割当ホールに導くメモリスペースにマッピ
ングすること、および割当ホールを必要な場所に挿入す
る一方で、ファンクションを決められた順序でリンクす
ること、を含むことを特徴とするインストラクションキ
ャッシュミス率削減方法が得られる。
【0012】キャッシュにおけるキャッシュミスの可能
性が高いコード部分の部分的な重複がかなり防止され
る。
【0013】
【発明の実施の形態】本発明のファンクションは、RI
SCプロセッサ上のプログラム開発について説明されて
いる。図1は、典型的なRISCプロセッサのブロック
図および第2レベルのキャッシュがない、低コストシス
テム環境における蓄積階層を示している。
【0014】典型的なRISCプロセッサ1は、チップ
上の以下の要素、即ち、UPCコア2、インストラクシ
ョンキャッシュ3、およびデータキャッシュ4を有して
いる。インストラクションキャッシュ3は、内部インス
トラクションバス6によってUPCコア2に接続されて
いて、データキャッシュ4は、内部データバス7によっ
てUPCコア2に接続されている。内部インストラクシ
ョンバス6および内部データバス7の両方が、UPCコ
ア2と同じ刻時周波数で時間を計っている。蓄えられた
インストラクションおよびデータは1つのクロック周期
内でUPCコア2によってアクセスされ得る。インスト
ラクションキャッシュ3およびデータキャッシュ4は、
外部バス8によって外部メモリ5に接続されている。外
部バス8のクロックはUPCコアクロックの一部分であ
り、故に外部メモリはより長いアクセス時間を有してい
る。従って、最も高度な性能を達成するためには、アク
セスされたインストラクション及びデータは、外部メモ
リ5への低速アクセスを防止するように、できる限り頻
繁にキャッシュにおいて有効であるべきである。本発明
はインストラクションキャッシュミス率を削減するため
に使用され、したがって最も多く実行されるインストラ
クションがインストラクションキャッシュ3において見
出される。
【0015】図2はプログラムコードによるメモリ利用
形態を示している。図2においては、メモリスペースの
実例プログラムのレイアウトおよびキャッシュスペース
へのマッピングが示されている。この例において、プロ
グラムは、リンカー(linker)によって決定され
ている連続した順序で、メモリスペース内に割り当てら
れているAファンクション9、Bファンクション10、
Cファンクション11、Dファンクション12、Eファ
ンクション13、Fファンクション14、Gファンクシ
ョン15、およびHファンクション16を含んでいる。
メモリスペース17は、モジュール方法でキャッシュス
ペース18にマッピングするので、メモリスペース17
内の幾つかのインストラクションはキャッシュスペース
18のそれぞれの入り口に向かう。キャッシュスペース
18は、最も小さなリプレースメントユニットを構成す
るキャッシュライン19に分割される。この例の目的で
あると仮定した直接マッピングのキャッシュにおいて
は、メモリスペース17のそれぞれのインストラクショ
ンは正確に、マッピングされたキャッシュスペース18
の対応するアドレスを有している。
【0016】次に本発明のプログラムへの使用について
説明する。図3は本発明の第1部分で実行されるステッ
プの流れ図であり、潜在的キャッシュミスのプロファイ
ルが生成されている。最初に、インストラクショントレ
ースが、目的となるRISCプロセッサ上での目的プロ
グラムの実行をシミュレートすることによって収集され
る(20)。更に、プログラムのそれぞれのファンクシ
ョンに対してメモリスペース17のアドレス範囲を含む
ファンクションテーブルが作られる(21)。このファ
ンクションテーブルは、インストラクションキャッシュ
即ちキャッシュスペース18の構造によってキャッシュ
ラインユニット19に分割されている。この情報によれ
ば、インストラクショントレースに挙げられているイン
ストラクションへのメモリアクセスのみがカウントされ
(22)、最終コードレイアウトで保存されるべきシミ
ュレートされたプログラムのファンクショントレースを
仮定する時、実際にキャッシュミスに導かれ得る。それ
ぞれのファンクションに対するキャッシュラインユニッ
トによる可能なキャッシュミスの数がアクセステーブル
に蓄積される(23)。アクセステーブルの内容は、潜
在的キャッシュミスのプロファイルとして後に述べる。
【0017】図4はインストラクショントレース内で潜
在的キャッシュミスをどのように認識するかの例を示す
略図である。この例において、2つのファンクション2
4および25が交替に実行される。第1ファンクション
24の第1コールで、第1の実行されたインストラクシ
ョン26が、ファンクション24の範囲の第1の全ての
キャッシュラインにマッピングすると仮定する。ファン
クション24の第2のコールにおける第2のインストラ
クション27は、ファンクション24の第2のキャッシ
ュラインにマッピングすると仮定する。第3のインスト
ラクション28は、第1のキャッシュラインに更にアク
セスすると仮定する。第4のインストラクション29
は、ファンクション24の第2のキャッシュラインにア
クセスすると仮定する。ファンクション24が以前に既
に実行されていても、その他のファンクションの中間実
行によって置き換えられているかもしれないので、ファ
ンクション24の開始時に全てのインストラクションは
キャッシュ中に存在しないと仮定しなければならない。
従って、第1のキャッシュラインへの第1のアクセスお
よび第2のキャッシュラインへの第2のアクセスは、潜
在的キャッシュミスとしてカウントされなければならな
い。しかしながら、その他のファンクションが実行され
ないかぎり、キャッシュサイズを越えないようなファン
クションのサイズを考慮して、一度アクセスされた全て
のキャッシュラインがキャッシュ中に残る。従って、第
3のアクセス28および第4のアクセス29は、確実に
キャッシュヒットによって機能するべきであり、故に、
それらは潜在的キャッシュミスとしてカウントされな
い。
【0018】しかしながら、同じキャッシュラインへの
次のアクセス31がキャッシュヒットであるように保証
されなければならないので、図4のファンクション25
のように、新しいファンクションがコールされた時、こ
のファンクションの範囲のそれぞれのキャッシュライン
への初期アクセス31はさらに潜在的キャッシュミスと
してカウントされなければならない。この例のファンク
ション24のように、既に以前に実行されたファンクシ
ョンが再びコールされた時でさえ、それに続くアクセス
33がカウントされないので、ラインへの初期アクセス
32はキャッシュミスとなり、従って、カウントされな
ければならない。これは、メモリ内の最終ファンクショ
ンのレイアウトがこの段階ではまだ規定されていないか
らであり、中間で実行されるファンクション25が、キ
ャッシュ内でファンクション24と置き換わる。
【0019】本発明の第1部分の結果、各ファンクショ
ンに対するキャッシュラインによる潜在的キャッシュミ
スのプロファイルがアクセステーブルに準備される。ア
クセステーブルに含まれる数字データは、1つのファン
クションの例として図5に示されている。ファンクショ
ンの範囲の各キャッシュラインに対して、対応する数の
潜在的キャッシュミスが棒グラフで表示されている。図
5に関して、ファンクションの範囲の第1のキャッシュ
ライン34において、インストラクショントレース内で
カウントされた潜在的キャッシュミスの数が、棒35に
よって示されている。シミュレーションの間に実行され
なかったプログラム部分に対しては、キャッシュライン
36の棒の無い部分37からわかるように、潜在的キャ
ッシュミスはカウントされない。この例における潜在的
キャッシュミス39の最大数が、キャッシュライン38
で可能である。一般的に、コード部分が頻繁に実行され
たり時々実行されなかったりするので、1つのファンク
ション内の潜在的キャッシュミスの分布は極めて不規則
である。
【0020】本発明の第2部分、図6に示されている流
れ図を使って説明する。第2部分のアルゴリズムへの入
力データは、本発明の第1部分で収集されたファンクシ
ョンプロファイル40である。このアルゴリズムにおい
て、キャッシュ利用に関するそのアクティビティーを示
す各ファンクションに対して第1の値が算出される(4
1)。ファンクションのアクティビティーは以下の数1
式によってキャッシュラインによる潜在的キャッシュミ
スの平均数を算出する。
【0021】
【数1】 ファンクションのアクティビティーを算出するとき、シ
ミュレーション中に実行されず、それ故、潜在的キャッ
シュミスがカウントされていないゼロアクティビティー
ファンクション42もまた、検出される。ゼロアクティ
ビティーファンクション42は、アルゴリズムの次のス
テップのための非ゼロアクティビティーファンクション
43と分離される。非ゼロアクティビティーファンクシ
ョン43は、ファンクションが次々連続して扱われる次
のステップの処理順序を決定する前に算出されているア
クティビティーに関してソートされる(44)。
【0022】それから、ソートされた非ゼロアクティビ
ティーファンクション43のリストから、最高のアクテ
ィビティーを有するものが選択され(45)、キャッシ
ュスペース内のこのファンクションのそれぞれの位置の
ために、特性根CMissが以下の数2式に従って算出され
る。
【0023】
【数2】 Missが最小値になるようなキャッシュ内の位置は、処
理される現在のファンクションに適用され(47)、ス
テップ45、46、47が、全ての非ゼロアクティビテ
ィーファンクション43が最終的にキャッシュスペース
の位置に配置されるまで(48)、リストの次のファン
クションと置き換えられる。
【0024】キャッシュスペースへの連続割当が終了し
た後、非ゼロアクティビティーファンクション43は、
各インストラクションが単一のメモリアドレスに割り当
てられるように、キャッシュスペースからメモリスペー
スにマッピングされる(49)。このマッピングは、メ
モリスペース内のファンクション間に割当ホールを導入
する。従って、最終ステップにおいて、ゼロアクティビ
ティーファンクション42は、できる限り良質な、そこ
にできた割当ホールを満たすために、メモリスペースに
マッピングされる。
【0025】式2の使用が、キャッシュラインのプロフ
ァイル値分布の2つの変形を示している図7によって正
当化される。A変形52において、多くの潜在的キャッ
シュミス66、67を有するF1ファンクション58お
よびF2ファンクション59は、同じAキャッシュライ
ン54を共有しなければならない。かなり少しの潜在的
キャッシュミス68,69を両方とも有しているその他
のF3ファンクション60およびF4ファンクション6
1はもう一つのBキャッシュライン55を共有してい
る。各ファンクションは、この次のファンクションコー
ルのキャッシュミスにつながる、最悪の場合のキャッシ
ュラインから何回も置き換えられるので、キャッシュラ
インによる最大数の可能なキャッシュミスは、キャッシ
ュラインによる少しの潜在的キャッシュミスの両方によ
って決定される。従って、A変形52において、最大数
の潜在キャッシュミスは、2倍のAキャッシュライン5
4のF2ファンクション59の潜在的キャッシュミス6
7、プラス2倍のキャッシュライン55のF3ファンク
ション60の潜在的キャッシュミス68と算出される。
これとは逆に、B変形53において、同じファンクショ
ンが異なった方法でキャッシュライン上に分布される。
即ち、多くの潜在的キャッシュミス70を有するF1フ
ァンクション62は、少しの潜在的キャッシュミス71
のF3ファンクション63とAキャッシュラインA56
を共有し、多くの潜在的キャッシュミス72を有するF
2ファンクション64は、少しの潜在的キャッシュミス
73を有するF4ファンクション65とBキャッシュラ
イン57を共有している。もしかして生じる最大数のキ
ャッシュミスはキャッシュラインによる少しの潜在的キ
ャッシュミスによって決定されるので、その合計は、2
倍のF3ファンクション63の潜在的キャッシュミス7
1、プラス、2倍のF4ファンクション65の潜在的キ
ャッシュミス73となり、その結果は、A変形よりも恐
らくはより低いキャッシュミスとなる。
【0026】結論として、大きな数の潜在的キャッシュ
ミスを有するコード部分が同じキャッシュラインを共有
することは、キャッシュミスの可能性を高めてしまうの
で、避けなければならない。代わりに、全てのファンク
ションにわたるキャッシュラインによる潜在的キャッシ
ュミスの合計が全てのキャッシュラインにほぼ匹敵する
とき、最良の結果が得られる。この性質を有するマッピ
ングは、式2を使用することにより得られる。蓄積され
たプロファイルデータは、合計が全体のキャッシュスペ
ースにおいて算出される前に、キャッシュラインによっ
て2乗され、多くの潜在的キャッシュミスは、全体の合
計で過度に加重される。特性根CMissは、それゆえ、そ
の最小値をキャッシュライン上の潜在的キャッシュミス
のほとんど等しい分布と仮定する。CMissが最小値にな
るような割当を適用することによって、キャッシュミス
の可能性は、ゆえに縮小される。
【0027】本発明の第2部分の結果、目的となるプロ
グラムのそれぞれのファンクションに対してスタートア
ドレスがメモリ内の配置されるべき場所に決定される。
実際のメモリ配置は、入力としてファンクションスター
トアドレスを受け取り、従って、必要な時に割当ホール
の挿入を含むプログラムレイアウトを作るリンカーによ
って遂行される。図8は、本発明の使用後に、図2から
の参考例ファンクションに対する可能なメモリレイアウ
トを示している。以前に順序A、B、C、D、E、F、
G、およびHだったファンクションは、ここではDファ
ンクション74、Hファンクション75、Gファンクシ
ョン76、Eファンクション77、Aファンクション7
8、Fファンクション79、Bファンクション80、及
びCファンクション81の順序にメモリ内で配置され
る。さらに、割当ホール82は、意図されたスタートア
ドレスへのファンクションの所望のマッピングを達成す
るために挿入される。
【0028】新しいメモリレイアウトにおける目的とな
るプログラムの実行の際、しばしば実行されたコード部
分のお互いの置き換えが縮小されることによって、イン
ストラクションキャッシュミス率がかなり削減されてい
るのが確認される。
【0029】
【発明の効果】以上説明したように、プログラムの開発
において本発明を使用することによって、キャッシュに
おけるキャッシュミスの可能性が高いコード部分の部分
的な重複がかなり防止されるので、しばしば実行される
コード部分間のインストラクションキャッシュ衝突が縮
小され、性能がかなり向上する。さらに本発明では、計
算があまり複雑ではなく、リンカーにおいて実行が簡単
であり、ハードウェアの修正を必要とすることなくキャ
ッシュ性能を向上させることができる。
【図面の簡単な説明】
【図1】RISCプロセッサのメモリアーキテクチャを
示したブロック図である。
【図2】典型的なプログラムおよび直接マッピングされ
たキャッシュのメモリレイアウトを示した図である。
【図3】潜在的キャッシュミスのプロファイルが生成さ
れる本発明の第1部分を示した流れ図である。
【図4】潜在的キャッシュミスをカウントするための案
を示す第1の例である。
【図5】アクセステーブルに含まれている1つのファン
クションに対する潜在的キャッシュミスのプロファイル
を示す第2の例である。
【図6】ファンクションが連続してメモリに割り当てら
れる本発明の第2部分を示している流れ図である。
【図7】キャッシュライン上のプロファイル分布の2つ
の変形を示す図である。
【図8】本発明が使用された後の、典型的なプログラム
のメモリレイアウトを示している図である。
【符号の説明】
1 RISCプロセッサ 2 CPUコア 3 インストラクションキャッシュ 4 データキャッシュ 6 内部インストラクションバス 7 内部データバス 8 外部バス 17 メモリスペース 18 キャッシュスペース 19 キャッシュラインユニット
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成9年5月1日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0003
【補正方法】変更
【補正内容】
【0003】その他のアプリケーションにおいて、コー
ド配置が、例えば、“Achieving High
Instruction Cache Perform
ance with an Optimizing C
ompiler” by W.−m. Hwu and
P.Chang, Proc. 16th Ann.
Int´l. Symp. On Computer
Architecture, pp. 242−25
, June 1989. に記載されているよう
に、コールグラフあるいは実行頻度といった統計上の情
報を使用して基本のブロックレベルで実行される。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 インストラクショントレースから潜在的
    に生じるインストラクションキャッシュミスにおける、
    アプリケーションプログラムの各ファンクションに対す
    るキャッシュラインユニットによる潜在的キャッシュミ
    スのプロファイルから成る情報を収集する情報収集方法
    であって、 シミュレーションを介してインストラクショントレース
    データを収集するステップ、 前記ファンクションがキャッシュライン境界に並べられ
    ていると仮定して、前記アプリケーションプログラムの
    各ファンクションに対するキャッシュラインユニットに
    分割されているメモリー範囲を含む前記アプリケーショ
    ンプログラムのためのファンクションテーブルを生成す
    るステップ、 前記アプリケーションプログラムの一つのファンクショ
    ンの実行における前記キャッシュラインユニットのそれ
    ぞれへの前記インストラクショントレースに挙げられて
    いる第1のアクセスのみをカウントするステップ、 新しいファンクションコールが前記アプリケーションプ
    ログラム内で起こる毎に、前記キャッシュラインユニッ
    トへの第1のアクセスを再びカウントするステップ、お
    よび収集されたデータを、前記アプリケーションの各フ
    ァンクションの各キャッシュラインユニットに対するカ
    ウントされたアクセスの数を含むアクセステーブルにお
    いて前記アプリケーションプログラムの各ファンクショ
    ンに対するキャッシュラインユニット当たりの潜在的キ
    ャッシュミスのプロファイルの形に配置するステップ、 を有していることを特徴とする情報収集方法。
  2. 【請求項2】 メモリー内のアプリケーションプログラ
    ムの複数のファンクションを再配置する方法であって、
    新しいスタートアドレスが潜在的キャッシュミスのプロ
    ファイルを使用している各ファンクションに対して連続
    して決定される再配置方法において、 連続割り当ての順序を決定する潜在的キャッシュミスの
    前記プロファイルによる前記ファンクションをソートす
    るステップ、 前記アプリケーションプログラムの既に割り当てられた
    ファンクションについての潜在的キャッシュミスの前記
    プロファイルを考慮する時、キャッシュスペースに及ぶ
    潜在的キャッシュミスのプロファイルを最も均等な分布
    に導くキャッシュスペース内の位置を前記ファンクショ
    ンの割り当てられるべき次のものに合わせるステップ、 前記アプリケーションプログラムの全てのファンクショ
    ンが前記キャッシュスペースに割り当てられるまで最終
    ステップを繰り返すステップ、 メモリースペースに前記キャッシュスペースから前記フ
    ァンクションをマッピングして割り当てホールを導入す
    るステップ、および前記アプリケーションプログラムの
    各ファンクションが、最終ステップにおいてこのファン
    クションに対して決定されたメモリーアドレスに割り当
    てられるように、前記割り当て穴を挿入しながら、最終
    ステップで決定された順序で前記ファンクションをリン
    クするステップ、 を有することを特徴とする再配置方法。
  3. 【請求項3】 アプリケーションプログラム内のインス
    トラクションキャッシュミスを削減するインストラクシ
    ョンキャッシュミス率削減方法において、前記アプリケ
    ーションプログラムのファンクションが、請求項1記載
    の情報収集方法によるインストラクショントレースから
    引き出された潜在的キャッシュミスのプロファイルを使
    用する請求項2記載の再配置方法によって再配置される
    ことを特徴とするインストラクションキャッシュミス率
    削減方法。
  4. 【請求項4】 アプリケーションプログラムのインスト
    ラクションキャッシュミス率を削減するインストラクシ
    ョンキャッシュミス率削減方法において、 潜在的キャッシュミスのプロファイルを、元来のファン
    クションレイアウトおよびキャッシュパラメータを考慮
    してインストラクショントレースから引き出すこと、 アプリケーションプログラムのファンクションを、潜在
    的なキャッシュミスのプロファイルによってソートする
    こと、 その後にファンクションを、既に割り当てられたファン
    クションに対するキャッシュスペース上の潜在的キャッ
    シュミスのプロファイルのほとんど同じ分布を達成する
    ためにキャッシュスペースに連続して割り当てること、 その後、全てのファンクションをキャッシュスペースか
    ら割当ホールに導くメモリスペースにマッピングするこ
    と、および割当ホールを必要な場所に挿入する一方で、
    ファンクションを決められた順序でリンクすること、 を含むことを特徴とするインストラクションキャッシュ
    ミス率削減方法。
JP8273222A 1996-10-16 1996-10-16 インストラクションキャッシュミス率削減方法 Pending JPH10124327A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP8273222A JPH10124327A (ja) 1996-10-16 1996-10-16 インストラクションキャッシュミス率削減方法
US08/951,744 US6002875A (en) 1996-10-16 1997-10-16 Method for the reduction of instruction cache miss rate using optimization data from trace data profiles

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8273222A JPH10124327A (ja) 1996-10-16 1996-10-16 インストラクションキャッシュミス率削減方法

Publications (1)

Publication Number Publication Date
JPH10124327A true JPH10124327A (ja) 1998-05-15

Family

ID=17524819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8273222A Pending JPH10124327A (ja) 1996-10-16 1996-10-16 インストラクションキャッシュミス率削減方法

Country Status (2)

Country Link
US (1) US6002875A (ja)
JP (1) JPH10124327A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000038054A1 (fr) * 1998-12-22 2000-06-29 Fujitsu Limited Appareil et procede de generation d'objet d'optimisation
JP2006079338A (ja) * 2004-09-09 2006-03-23 Fujitsu Ltd プログラムセクションレイアウト方法およびレイアウト処理プログラム
US7148909B2 (en) 1998-05-27 2006-12-12 Canon Kabushiki Kaisha Image display system capable of displaying and scaling images on plurality of image sources and display control method therefor

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3141836B2 (ja) * 1998-01-26 2001-03-07 日本電気株式会社 言語処理方法、言語処理装置及び言語処理プログラムを記録した記憶媒体
US6321375B1 (en) * 1998-05-14 2001-11-20 International Business Machines Corporation Method and apparatus for determining most recently used method
US6604067B1 (en) * 1999-08-20 2003-08-05 Hewlett-Packard Development Company, L.P. Rapid design of memory systems using dilation modeling
JP2001166948A (ja) * 1999-12-07 2001-06-22 Nec Corp プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
EP1330715B1 (en) * 2000-10-26 2008-01-02 Matsushita Electric Industrial Co., Ltd. Storing device, storing control method and program
US7152028B2 (en) * 2001-12-13 2006-12-19 Texas Instruments Incorporated Software development tool with embedded cache analysis
US7124276B2 (en) * 2003-04-14 2006-10-17 Broadcom Corporation Optimizing cache efficiency within application software
KR20070008548A (ko) * 2004-01-21 2007-01-17 코닌클리케 필립스 일렉트로닉스 엔.브이. 부트-업 속도를 증가시키는 방법
US7366871B2 (en) 2004-11-18 2008-04-29 Sun Microsystems, Inc. Apparatus and method for determining stack distance including spatial locality of running software for estimating cache miss rates based upon contents of a hash table
US7373480B2 (en) * 2004-11-18 2008-05-13 Sun Microsystems, Inc. Apparatus and method for determining stack distance of running software for estimating cache miss rates based upon contents of a hash table
US7472218B2 (en) * 2006-09-08 2008-12-30 International Business Machines Corporation Assisted trace facility to improve CPU cache performance
US8806461B2 (en) * 2007-06-21 2014-08-12 Microsoft Corporation Using memory usage to pinpoint sub-optimal code for gaming systems
US8122439B2 (en) * 2007-08-09 2012-02-21 International Business Machines Corporation Method and computer program product for dynamically and precisely discovering deliquent memory operations
US8352703B2 (en) * 2008-02-20 2013-01-08 Infineon Technologies Ag Address mapping of program code and data in memory
WO2018158846A1 (ja) * 2017-02-28 2018-09-07 三菱電機株式会社 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
JP6981087B2 (ja) * 2017-08-03 2021-12-15 富士通株式会社 情報処理装置、方法、及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121492A (en) * 1987-03-02 1992-06-09 Meridian Data, Inc. System for simulating access times of a CD ROM on a hard disk by slowing the operation of the hard disk
US5325525A (en) * 1991-04-04 1994-06-28 Hewlett-Packard Company Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time
US5581778A (en) * 1992-08-05 1996-12-03 David Sarnoff Researach Center Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock
JP3417984B2 (ja) * 1993-09-10 2003-06-16 株式会社日立製作所 キャッシュ競合削減コンパイル方法
US5446876A (en) * 1994-04-15 1995-08-29 International Business Machines Corporation Hardware mechanism for instruction/data address tracing
EP0689141A3 (en) * 1994-06-20 1997-10-15 At & T Corp Disruption-based hardware support for system performance profiling
US5774724A (en) * 1995-11-20 1998-06-30 International Business Machines Coporation System and method for acquiring high granularity performance data in a computer system
US5809450A (en) * 1997-11-26 1998-09-15 Digital Equipment Corporation Method for estimating statistics of properties of instructions processed by a processor pipeline

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7148909B2 (en) 1998-05-27 2006-12-12 Canon Kabushiki Kaisha Image display system capable of displaying and scaling images on plurality of image sources and display control method therefor
WO2000038054A1 (fr) * 1998-12-22 2000-06-29 Fujitsu Limited Appareil et procede de generation d'objet d'optimisation
JP2006079338A (ja) * 2004-09-09 2006-03-23 Fujitsu Ltd プログラムセクションレイアウト方法およびレイアウト処理プログラム
JP4592367B2 (ja) * 2004-09-09 2010-12-01 富士通セミコンダクター株式会社 プログラムセクションレイアウト方法およびレイアウト処理プログラム

Also Published As

Publication number Publication date
US6002875A (en) 1999-12-14

Similar Documents

Publication Publication Date Title
JPH10124327A (ja) インストラクションキャッシュミス率削減方法
JP2011527788A5 (ja)
JP2011527788A (ja) 依存問題の効率的並列計算
US9280350B2 (en) Methods and apparatus to perform adaptive pre-fetch operations in managed runtime environments
US7036118B1 (en) System for executing computer programs on a limited-memory computing machine
JP2000322315A (ja) データを管理する方法及び装置
JP3422743B2 (ja) メモリ使用効率を増すための方法
JP2005332387A (ja) メモリ命令をグループ化及び管理する方法及びシステム
EP3534266B1 (en) Method, apparatus and system for prefetching data
US7210126B2 (en) Using identifiers and counters for controlled optimization compilation
CN110609689A (zh) 一种应用的安装运行方法及装置
CN110245190A (zh) 一种区块数据分段存储方法、终端及介质
Kulkarni et al. Cache conscious data layout organization for embedded multimedia applications
US6691080B1 (en) Task execution time estimating method
JP4704357B2 (ja) ハードウェア資源衝突を軽減するためのデータ配置機構
KR101379556B1 (ko) 바이-엔디언 컴파일러를 사용한 코드 최적화
JPH09212369A (ja) 記憶域割り付け装置
JPH0816871B2 (ja) プログラム翻訳装置およびプログラム翻訳方法
US20020087563A1 (en) System and method for reorganizing data storage in accordance with usage frequency
Gibert et al. Effective instruction scheduling techniques for an interleaved cache clustered VLIW processor
US20080162856A1 (en) Method for dynamic memory allocation on reconfigurable logic
US20030154342A1 (en) Evaluation and optimisation of code
JPH01118931A (ja) プログラム変換方式
US7581213B2 (en) Allocating automatic variables to different memory banks
US7185324B2 (en) Compiler apparatus and method for determining locations for data in memory area

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19990804