JP3177950B2 - キャッシュ最適化処理方法およびキャッシュ最適化処理プログラムを記録した記録媒体 - Google Patents

キャッシュ最適化処理方法およびキャッシュ最適化処理プログラムを記録した記録媒体

Info

Publication number
JP3177950B2
JP3177950B2 JP25500097A JP25500097A JP3177950B2 JP 3177950 B2 JP3177950 B2 JP 3177950B2 JP 25500097 A JP25500097 A JP 25500097A JP 25500097 A JP25500097 A JP 25500097A JP 3177950 B2 JP3177950 B2 JP 3177950B2
Authority
JP
Japan
Prior art keywords
cache
data
code
generating
compiler
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
Application number
JP25500097A
Other languages
English (en)
Other versions
JPH1196015A (ja
Inventor
政昭 船間
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 JP25500097A priority Critical patent/JP3177950B2/ja
Publication of JPH1196015A publication Critical patent/JPH1196015A/ja
Application granted granted Critical
Publication of JP3177950B2 publication Critical patent/JP3177950B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ノンブロッキング
キャッシュ機構を採用する計算機システム用のコードを
生成するコンパイラのキャッシュミスによるペナルティ
を回避するキャッシュ最適化処理方法およびその処理プ
ログラムを記録した記録媒体に関する。
【0002】
【従来の技術】現在、計算機システムは、CPUとメモ
リの間に高速、小容量のキャッシュメモリを配置し、メ
モリに置かれたデータへのアクセスの高速化を図ってい
るものが一般的となっている。
【0003】計算機システムは、キャッシュを配置する
ことにより、必要なデータがキャッシュ上に存在する場
合に、より低速な主記憶にアクセスする必要がないた
め、実行性能が向上する。 しかし、計算機システム
は、単純なキャッシュ機構では逆に必要なデータがキャ
ッシュ上に存在しない(キャッシュミス)場合、データ
の主記憶からキャッシュへの読み込みを完了するまでC
PUが停止するため実行性能が低下するという問題が存
在する。
【0004】そこで、その対策として、計算機システム
は、キャッシュミスが発生した場合でもCPUの動作は
停止せず、またキャッシュミスが存在しても他の命令に
よるキャッシュへのアクセスが可能なノンブロッキング
キャッシュ機構が考案され、今後は、この機構を採用す
るものが主流となると思われる。 [参考文献:COMPUTER ARCHITECTURE: A QUANTATIVE AP
PROACH (John L.Henessy& David A. Patterson, 1996,
p414-416)] しかし、現在の計算機システムは、依然としてキャッシ
ュミスに起因する実行性能低下が残っており、この性能
低下を低減する方法がいくつか提案されている。
【0005】特開平3−282734号公報には、パイ
プライン処理を行うCPUとメモリの間に高速、小容量
のキャッシュを持つ計算機での命令実行時のキャッシュ
ミスペナルティを小さくするための命令再配置を行う方
法が記載されている。
【0006】ここでキャッシュミスペナルティとは、主
記憶からレジスタにデータをロードする場合にデータが
キャッシュ上に存在しない場合に、主記憶からキャッシ
ュへのデータの読み込み(これをキャッシュ置き換えと
呼ぶ)が完了するまでCPUが停止し、実行効率が低下
することを意味する。
【0007】つぎに図6を参照して、特開平3−282
734号公報に記載された方法の構成を説明する。プロ
グラム61はコンパイル部63によりコンパイルされ機
械語命令に変換される。命令再配置最適化部64は、出
力された命令を調べ、キャッシュミスの発生する命令を
見つけだし、メモリからキャッシュへの読み込みを行っ
ている時間に実行でき、かつその実行に複数サイクルを
要する命令をその命令の直前に配置することで、キャッ
シュミスの結果としてメモリからキャッシュへの読み込
みを実行している間もCPUを無駄に止めないようにす
る。
【0008】この方法に関し、上記公報は、メモリのア
クセスパターンが比較的予想しやすい命令フェッチ実行
時の命令キャッシュへのアクセスに関して述べられてお
り、データへのアクセスについては、命令フェッチの場
合と同様に主記憶を逐次的に参照する場合のみしか述べ
られていない。また、ノンブロッキングキャッシュに関
しても考慮されていない。
【0009】また、特開平4−44139号公報には、
プログラムの処理上必要とするデータについて、そのデ
ータがキャツシュに存在するか否かを調べ、存在しない
場合にはデータのキャッシュへの読み込みを他の命令の
実行と同時に行なうことが可能なプリフェッチ命令を命
令セットに追加し、そのデータ参照の前方にプリフェッ
チ命令を挿入することでメモリへのデータ参照の処理効
率を上げる方法が記載されている。しかし、公報にはプ
リフェッチ命令をハードウェアとして実現する方法につ
いて述べられているが、プリフェッチ命令をどのように
配置するかについては述べられていない。 また、COMP
UTER ARCHITECTURE: A QUANTATIVE APPROACH (John L.
Henessy & David A. Patterson, 1996, p402-404 )にお
いて、ノンブロッキングキャッシュ機構について考慮し
た方法としては、ループ中で後のループの繰り返し(こ
れをイタレーションと呼ぶ)で使うデータをプリフェッ
チするという方法が記載されているが、これはループ内
のデータ参照に限られている。
【0010】
【発明が解決しようとする課題】従来の命令キャッシュ
のミスペナルティを小さくするためのスケジューリング
方法は、ループ内にないロード命令でキャッシュミスを
起こし、そのデータのキャッシュへの読み込みが終らな
いうちに、そのデータを参照する命令が実行されるよう
にスケジューリングされる場合に、キャッシュミスペナ
ルティ(これをAccess Before Refillと呼び、以後AB
Rと表す)が依然として発生すると言う問題がスケジュ
ーリング方法に残っている。
【0011】また、John L. Henessy & David A. Patte
rsonによるノンブロッキングキャッシュを考慮したスケ
ジューリング方法は、ノンブロッキングキャッシュ機構
にある種の条件を必要とする。彼らの提案したループ内
でプリフェッチを行うスケジューリング方法は、一般に
ループの繰り返しで、ロード命令が多数回実行されるこ
とにより、多重にキャッシュミスが発生し易いため、多
数回キャッシュミスが発生しても引き続きキャッシュへ
のアクセスを許す機構が必要となる。このノンブロツキ
ングキャッシュ機構の特性は、1 hit under n miss(n
は整数)と呼ばれ、キャッシュミスがn個起こっている
状態でも後続の命令がキャッシュをアクセス可能である
が、そこでさらにキャッシュミスが起こると、以前にキ
ャッシュミスしたデータのキャッシュへの読み込みが終
わらない限り後続の命令がキャッシュをアクセスできな
いことを意味する。
【0012】彼らの提案したスケジューリング方法は、
許されるキャッシュミスの回数が少ない機構(特に1 hi
t under 1 miss)を採用するCPUにおいては、逆にペ
ナルティが大きくなる可能性がある。そのスケジューリ
ング方法は、最も制限の厳しい1 hit under 1 miss特性
を持つCPUの場合、ロード命令がキャッシュミスを起
こした後、キャッシュの置き替えが終らないうちに、再
度キャッシュへアクセスを行なった場合、さらにキャッ
シュミスが発生する(これをDouble Cache Miss と呼
び、以後DCMと表す)場合のキャッシュミスペナルテ
ィの問題がスケジューリング方法に存在する。以後、1
hit under 1 missの場合を想定して説明するが、1 hit
under n missの場合も同様に扱うことができる。
【0013】以後、単にキャッシュミスペナルティと記
述した場合には、キャッシュミスペナルティは上記の2
つ(ABR,DCM)のキャッシュミスペナルティを指
すこととする。
【0014】上記スケジューリング方法の問題点を解決
する方法としてプログラムのコンパイル時にそのコンパ
イルの結果であるプログラムコード本体の中にプリフェ
ッチのための命令を挿入する方法が考えられる。そのス
ケジューリング方法の構成は図7に示す通りである。
【0015】まず、コンパイラ72においてコードスケ
ジューリング部13を無効にして目的コード73を生成
する。生成した目的コードをシュミレータもしくはター
ゲットマシン上で実行し、実行時のCPUの動作を記録
したプロファイルデータ74を得る。次に、コードスケ
ジューリング部13を有効にして、入力コード71を入
力としてコンパイルを行う。コードスケジューリング部
13ではプロファイルデータ74を利用してキュッシュ
ミスペナルティを軽減するためのプリフェッチ命令をコ
ード中に挿入する。
【0016】すなわち、改良されたスケジューリング方
法は、プログラムのコード中にプリフェッチ命令を挿入
し、プロファイルデータからキャッシュミスを起こす命
令を調べ、キャッシュミスする命令の前方で、キャッシ
ュリフィル処理をしていない最長の期間を見つけ、最長
期間の直前に実行されるようにプリフェッチ命令を挿入
する。
【0017】しかし、1 hit under 1 missのノンブロッ
キングキャッシュ機構を持つシステムでは、リフィル処
理中に更にキャッシュミスが起こるとそのリフィル処理
が完了するまでCPUが停止する。(DCMと呼ぶ)こ
の方法では、挿入したプリフェッチ命令によってキュッ
シュミスペナルティの軽減は達成できるが、上記のCP
U処理の停止の発生を完全に防ぐことはできない。
【0018】その理由は、プログラムコード中にはメモ
リ中のデータへのアクセスが頻繁にあり、DCMの発生
が避けられない場合があるからである。
【0019】本発明の目的は、コンパイラを用いてコー
ドを生成する場合にキャッシュミスによるペナルティを
回避するキャッシュ最適化処理方法およびその処理プロ
グラムを記録した記録媒体を提供することである。
【0020】
【課題を解決するための手段】本発明のキャッシュ最適
化処理方法およびその処理プログラムを記録した記録媒
体は、CPUとメモリの間にキャッシュのリフィル処理
中にパイプラインが停止しない高速なノンブロッキング
キャッシュを配置し、メモリに置かれたデータへのアク
セスの高速化を図り、メモリ書き込み時に、キャッシュ
へのアクセスがない計算機システムにおけるキャッシュ
最適化処理方法およびその処理プログラムを記録した記
録媒体において、コンパイラを用いて目的コードを生成
する場合に、キャッシュミスによるペナルティを回避す
るために、プログラム中にグローバルな初期値ありデー
タがある場合に、そのデータを選択してコンパイラによ
り結合されるスタートアップルーチンの初期化処理部分
に、予めデータをキャッシュにまとめて格納することを
命令するコードを挿入する挿入ステップを有するととも
に、命令のために発生したリフィル処理中に実行可能な
命令を、リフィル処理が完了するまで実行させることを
特徴とするキャッシュ最適化処理方法およびその処理プ
ログラムを記録した記録媒体。
【0021】また、予めグローバルな初期値ありデータ
を選択してキャッシュにまとめて格納するコードは、コ
ンパイラにより付加されるスタートアップルーチンの初
期化処理部にグローバル変数の初期値ありデータの為の
プリフェッチ命令である。
【0022】また、挿入ステップは、入力コードをコン
パイラによりコンパイルしプロファイルデータを生成す
るためのオブジェクトコードを得るコンパイルステップ
と、プロファイルデータを生成するプロファイルデータ
生成ステップと、プリフェッチを行うコードを含んだス
タートアップルーチンを生成するスタートアップルーチ
ン生成ステップと、プリフェッチするデータをまとまっ
た領域に配置するための情報を含んだ変数配置マップを
生成する変数配置マップ生成ステップと、プリフェッチ
コードを含んだスタートアップルーチンとオブジェクト
とを変数配置マップの配置に従ってリンカによりリンク
し、実行可能な目的コードを生成するリンクステップ
と、を有する。
【0023】更に、リンカは、変数配置マップを利用し
てプリフェッチするデータをまとまった領域へ配置する
配置ステップと、プリフェッチするデータの領域がキャ
ッシュライン境界から始まるように境界を合わせるアラ
イメント考慮ステップを有する。
【0024】
【発明の実施の形態】次に本発明の実施の形態について
図面を参照して詳細に説明する。図1は、本発明の一実
施例における構成を示すブロック図である。本発明の
ャッシュ最適化処理の構成は、入力コード5からコンパ
イラ6を用いてオブジェクトコード7を得る部分と、こ
のオブジェクトコード7をシュミレータもしくはターゲ
ットマシン上で実行することにより得られる、図には示
さない、プロファイルデータ1と、キャッシュへのアク
セスに関する情報を含んでいるプロファイルデータ1か
ら高速にアクセスする必要のあるデータを選択するスタ
ートアップルーチン生成部2と、スタートアップルーチ
ン生成部2からキャッシュに、選択したデータを予めま
とまった領域に格納しておくための変数配置マップ3
と、スタートアップルーチン生成部2が挿入したプリフ
ェッチコードを含んだプログラムの実行前処理を行うス
タートアップルーチン4と、変数配置マップ3の配置に
従ってスタートアップルーチン4とオブジェクトコード
7を再リンクするリンカ8と、最終的に得られる目的コ
ード9より構成されている。
【0025】本発明のキャッシュ最適化処理の動作は、
大略次のステップをとる。 1.入力コードをコンパイラによりコンパイルし、オブ
ジェクトコードを得る。このオブジェクトコードはプロ
ファイルデータを生成するときにも用いる。 2.プロファイルデータを生成する。詳細については後
述の「プロファイルデータの生成」により説明する。 3.プリフェッチコードを含んだスタートアップルーチ
ンを生成する。このときプリフェッチするデータをまと
まった領域に配置するための情報を含んだ変数配置マッ
プも生成する。 4.プリフェッチコードを含んだスタートアップルーチ
ンとオブジェクトとをリンカによりリンクし、実行可能
な目的コードを生成する。このときリンカは、変数配置
マップを利用してプリフェッチするデータをまとまった
領域へ配置する。変数配置マップは、図2に示すよう
に、メモリ上の初期値ありグローバルデータ領域にプリ
フェッチするデータがまとめられて配置されている。
【0026】このときプリフェッチするメモリ上のデー
タの領域は、その領域の始まりを、キャッシュラインの
境界から始まるように、その境界に合わせて配置する。
(これを“アライメントを考慮する。”という)。
【0027】次にプロファイルデータの生成について、
プロファイルデータ取得のための方法の一例を図を用い
て説明する。図3はプロファイルデータの生成について
の動作ステップの構成図である。 1.プロファイルデータを得るための目的コード(一時
目的コード)を以下のようなステップで作成する。 (a)入力コード31をコンパイラ32によりコンパイ
ルし、オブジェクトコード33を得る。ただし、プロフ
ァイルデータ取得のために、グローバル変数を参照する
部分にプロファイル用のコードを挿入する。このコード
はグローバル変数が参照されたときに必ず実行され、グ
ローバル変数の更新された参照回数と参照した時刻をプ
ロファイルデータとして記録する。 (b)得られたオブジェクトコード33と通常のスター
トアップルーチン34とをリンカ35によりリンクして
目的コード36を生成する。 2.得られたプロファイルデータ生成用の一時目的コー
ド36をターゲットマシンもしくはシミュレータ37上
で実行しプロファイルデータ38を得る。
【0028】この他シミュレーションによるプロファイ
ルデータの収集なども考えられるが発明の本質ではない
ので説明は省略する。
【0029】次に、スタートアップルーチン生成部2に
ついて説明する。 1.プロファイルデータの解析 プロファイルデータには各グローバル変数に対して参照
回数と、アクセス時刻のデータが記録されている。以下
にプリフェッチするデータを選択するアルゴリズムの一
例を示す。 (a)それぞれのグローバル変数について、その変数に
最初にアクセスした時刻でソートし、設定された時刻閾
値(Time Threshold)以降のものを選択する候補から除
外する。 (b)残ったグローバル変数をさらに参照回数でソート
する。 (c)プリフェッチ可能なデータサイズ(一般に最大プ
リフェッチサイズと称している)を上限に参照回数の多
いほうからグローバル変数を選択する。 2.配置マップの作成 選択したグローバル変数を初期値ありグローバルデータ
領域のまとまった領域に配置するようリンカに指示する
ための変数配置マップを作成する。リンカはこのマップ
を参照し、プリフェッチするデータを初期値ありグロー
バルデータ領域のあるまとまった領域に配置する。これ
によりメモリを順次アクセスすることで効率良くプリフ
ェッチを行うことができる。 3.スタートアップルーチンの作成 メモリ上からキャッシュラインをキャッシュに読み込む
プリフェッチ命令をスタートアップルーチンへ挿入し、
プリフェッチコードを含んだスタートアップルーチンを
作成する。プリフェッチするデータは初期値ありグロー
バルデータ領域(BSS領域)のまとまった部分に配置
されているのでこれを順次キャッシュに読み込むことに
なる。
【0030】プリフェッチ命令挿入の候補となるのは、
キャッシュへのアクセスがないような部分である。例え
ば、領域を特定の値で初期化するループなどがその部分
として考えられる。
【0031】ここで、プリフェッチ命令より発生したリ
フィル処理中に次のループイタレーションのプリフェッ
チ命令の実行によるキャッシュアクセスが発生する場合
は、図4に示すように、ループの展開を行う必要があ
る。これにより現在のリフィル処理が終ってから次のプ
リフェッチ命令が実行されることになる。
【0032】メモリからキャッシュへの読み込みは、あ
る一定のサイズ(キャッシュラインと言う)毎に行われ
る。このため読み込みの効率を上げるために、プリフェ
ッチ用データはキャッシュライン境界に合わせて配置す
る必要がある。
【0033】グローバルな初期値ありデータについてグ
ローバル変数の参照回数と参照された時刻についての2
つの情報をプロファイルデータとし、これを用いてプロ
グラムの実行の最初のほうで頻繁に参照されるグローバ
ル変数を選択し、プリフェッチの対象とする。
【0034】
【実施例】次に、具体的な実施例についてプログラムの
記述例を掲げる。
【0035】プログラムの初期条件は、 ・BSS領域が64KB(65536バイト)であり、 ・キャッシュラインサイズが16バイトであり、 ・st.w命令(store word命令:4バイトデータ書き込
み)の実行クロックが4クロックであり、 ・リフィル処理に必要な時間が64クロックであるとす
る。 初期値無しグローバルデータ領域(BSS領域)の初期
化部分の処理概要を以下に記述する。
【0036】まず、__sbssから__ebssまでの領域(BS
S領域:64KB)を0で初期化する部分を示す。
【0037】 mov #__sbss, r13 __clear bss section mov #__ebss, r12 .L15: st.w r0, 0[r13] add 4, r13 cmp r12, r13 j1 .L15 .L14: 次に、以上のようなループを展開して、プリフェッチ命
令を挿入する処理について説明する。プリフェッチ命令
は上記ループの先頭(st.w r0,0[r13]の前)に挿入す
る。しかし、単に挿入のみを行うと次のループイタレー
ションで実行されるプリフェッチ命令によりDCMが発
生してしまう。このため、プリフェッチ命令のために発
生したリフィル処理の完了後に次のプリフェッチ命令を
実行するように、リフィル中に実行可能(キャッシュに
アクセスしない)な命令(ここではst.w命令)をリフィ
ル処理が完了するまで並列に実行させる必要がある。こ
のため、以下のようにループの展開を同時に行う。
【0038】 mov #__sbss, r13 __clear bass section mov #__ebss, r12 mov #__global_data, r14 .L15: ld.w [r14], r15 __prefetch st.w r0, 0[r13] st.w r0, 4[r13] st.w r0, 8[r13] st.w r0, 12[r13] : st.w r0, 48[r13] st.w r0, 52[r13] st.w r0, 56[r13] st.w r0, 60[r13] __以上16個のst.w 命令(64クロ ック必要) add 16, r14 __cache line size add 64, r13 cmp r12, r13 j1 .L15 .L14: 図4に示すように、16バイトのキャッシュラインサイ
ズをプリフェッチしている間に並行してBSS領域64
バイトを0クリアすることができる。
【0039】64KB(65536バイト)を初期化す
るためには、上記のループを1024回繰り返すことに
なる。1回のループで1キャッシュラインサイズ分のデ
ータをプリフェッチできるので1024×16=163
84(16KB)分のデータがプリフェッチ可能(これ
を最大プリフェッチサイズと呼ぶ)である。
【0040】ここで、以下の場合は図5に示すようにル
ープ処理の分割が必要になる。・この最大プリフェッチ
サイズがデータキャッシュのサイズを越えてしまう場合
・プリフェッチするデータ量が最大プリフェッチサイズ
以下である場合この場合オリジナルループ51は、プリ
フェッチ用ループ52と補正用ループ53の2つのルー
プに分割される。
【0041】次にループ処理の分割が必要になる実際の
例を示す。 例 プリフェッチするデータが8KB(半分)の場合 前方のプリフェッチ用ループで8KBをプリフェッチ
(同時に32KBのBSS領域を初期化)している。後
方の補正用ループで残り32KBのBSS領域を初期化
している。
【0042】 __プリフェッチ用ループ mov #__sbss, r13 __clear bass section mov #__sbss+8192*4, r12 mov #__global_data, r14 .L15: ld.w [r14], r15 __prefetch st.w r0, 0[r13] st.w r0, 4[r13] st.w r0, 8[r13] st.w r0, 12[r13] : st.w r0, 48[r13] st.w r0, 52[r13] st.w r0, 56[r13] st.w r0, 60[r13] add 16, r14 __cache line size add 64, r13 cmp r12, r13 j1 .L15 .L14: mov #__ebss, r12 __補正用ループ .L17: st.w r0, [r13] add 4, r13 cmp r12, r13 j1 .L17 .L16:
【0043】
【発明の効果】本発明によれば、コンパイラを用いてコ
ードを生成する場合にキャッシュミスによるペナルティ
を回避するキャッシュ最適化処理方法およびその処理プ
ログラムを記録した記録媒体を提供できると言う効果が
ある。
【図面の簡単な説明】
【図1】本発明のキャッシュ最適化処理の構成を示す図
である。
【図2】初期値ありグローバル変数の配置を示す図であ
る。
【図3】プロファイルデータの生成のフローチャートを
示す図である。
【図4】本発明のキャッシュ最適化処理の記述例を示す
図である。
【図5】ループの分割を示す図である。
【図6】従来の命令再配置を行う方法による言語処理の
構成を示す図である。
【図7】従来のプリフェッチ命令の挿入方法による言語
処理の構成を示す図である。
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 9/45

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】 CPUとメモリの間にキャッシュのリフ
    ィル処理中にパイプラインが停止しない高速なノンブロ
    ッキングキャッシュを配置し、メモリに置かれたデータ
    へのアクセスの高速化を図り、メモリ書き込み時に、キ
    ャッシュへのアクセスがない計算機システムにおける
    ャッシュ最適化処理方法において、 コンパイラを用いて目的コードを生成する場合に、キャ
    ッシュミスによるペナルティを回避するために、プログ
    ラム中にグローバルな初期値ありデータがある場合に、
    前記データを選択してコンパイラにより結合されるスタ
    ートアップルーチンの初期化処理部分に、予め前記デー
    タをキャッシュにまとめて格納することを命令するコー
    ドを挿入する挿入ステップを有するとともに、 前記命令のために発生したリフィル処理中に実行可能な
    命令を、前記リフィル処理が完了するまで実行させる
    とを特徴とするキャッシュ最適化処理方法
  2. 【請求項2】 予め前記データを選択して、キャッシュ
    にまとめて格納する前記コードが、 コンパイラにより付加されるスタートアップルーチンの
    初期化処理部にグローバル変数の初期値ありデータの為
    のプリフェッチ命令である請求項1記載のキャッシュ最
    適化処理方法
  3. 【請求項3】 前記挿入ステップが、 入力コードをコンパイラによりコンパイルしプロファイ
    ルデータを生成するためのオブジェクトコードを得るコ
    ンパイルステップと、 前記オブジェクトコードによりプロファイルデータを生
    成するプロファイルデータ生成ステップと、 プリフェッチを行うコードを含んだスタートアップルー
    チンを生成するスタートアップルーチン生成ステップ
    と、 プリフェッチするデータをまとまった領域に配置するた
    めの情報を含んだ変数配置マップを生成する変数配置マ
    ップ生成ステップと、 プリフェッチコードを含んだスタートアップルーチンと
    オブジェクトコードとを変数配置マップの配置に従って
    リンカによりリンクし、実行可能な目的コードを生成す
    るリンクステップと、 を有する請求項1記載のキャッシュ最適化処理方法
  4. 【請求項4】 前記リンカが、 変数配置マップを利用してプリフェッチするデータをま
    とまった領域へ配置する配置ステップと、 プリフェッチするデータの領域がキャッシュライン境界
    から始まるように境界を合わせるアライメントステップ
    を有する請求項3記載のキャッシュ最適化処理方法
  5. 【請求項5】 CPUとメモリの間にキャッシュのリフ
    ィル処理中にパイプラインが停止しない高速なノンブロ
    ッキングキャッシュを配置し、メモリに置かれたデータ
    へのアクセスの高速化を図り、メモリ書き込み時に、キ
    ャッシュへのアクセスがない計算機システムにおける
    ャッシュ最適化処理プログラムを記録した記録媒体にお
    いて、 コンパイラを用いて目的コードを生成する場合に、キャ
    ッシュミスによるペナルティを回避するために、プログ
    ラム中にグローバルな初期値ありデータがある場合に、
    前記データを選択してコンパイラにより結合されるスタ
    ートアップルーチンの初期化処理部分に、予め前記デー
    タをキャッシュにまとめて格納するコードを挿入する挿
    入ステップを有することを特徴とするキャッシュ最適化
    処理プログラムを記録した記録媒体。
  6. 【請求項6】 予め前記データを選択してキャッシュに
    まとめて格納する前記コードが、 コンパイラにより付加されるスタートアップルーチンの
    初期化処理部にグローバル変数の初期値ありデータの為
    のプリフェッチ命令である請求項5記載のキャッシュ最
    適化処理プログラムを記録した記録媒体。
  7. 【請求項7】 前記挿入ステップが、 入力コードをコンパイラによりコンパイルしプロファイ
    ルデータを生成するためのオブジェクトコードを得るコ
    ンパイルステップと、 プロファイルデータを生成するプロファイルデータ生成
    ステップと、 プリフェッチを行うコードを含んだスタートアップルー
    チンを生成するスタートアップルーチン生成ステップ
    と、 プリフェッチするデータをまとまった領域に配置するた
    めの情報を含んだ変数配置マップを生成する変数配置マ
    ップ生成ステップと、 プリフェッチコードを含んだスタートアップルーチンと
    オブジェクトとを変数配置マップの配置に従ってリンカ
    によりリンクし、実行可能な目的コードを生成するリン
    クステップと、 を有する請求項5記載のキャッシュ最適化処理プログラ
    を記録した記録媒体。
  8. 【請求項8】 前記リンカが、 変数配置マップを利用してプリフェッチするデータをま
    とまった領域へ配置する配置ステップと、 プリフェッチするデータの領域がキャッシュライン境界
    から始まるように境界を合わせるアライメント考慮ステ
    ップを有する請求項7記載のキャッシュ最適化処理プロ
    グラムを記録した記録媒体。
JP25500097A 1997-09-19 1997-09-19 キャッシュ最適化処理方法およびキャッシュ最適化処理プログラムを記録した記録媒体 Expired - Fee Related JP3177950B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP25500097A JP3177950B2 (ja) 1997-09-19 1997-09-19 キャッシュ最適化処理方法およびキャッシュ最適化処理プログラムを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25500097A JP3177950B2 (ja) 1997-09-19 1997-09-19 キャッシュ最適化処理方法およびキャッシュ最適化処理プログラムを記録した記録媒体

Publications (2)

Publication Number Publication Date
JPH1196015A JPH1196015A (ja) 1999-04-09
JP3177950B2 true JP3177950B2 (ja) 2001-06-18

Family

ID=17272816

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25500097A Expired - Fee Related JP3177950B2 (ja) 1997-09-19 1997-09-19 キャッシュ最適化処理方法およびキャッシュ最適化処理プログラムを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP3177950B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101799651B1 (ko) * 2015-02-27 2017-12-20 파나소닉 디바이스 썬크스 주식회사 센서
KR101811498B1 (ko) * 2015-02-27 2018-01-25 파나소닉 디바이스 썬크스 주식회사 압력 센서

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480862B1 (en) * 1999-04-23 2002-11-12 International Business Machines Corporation Relation-based ordering of objects in an object heap
JP4934267B2 (ja) * 2003-10-17 2012-05-16 パナソニック株式会社 コンパイラ装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03218545A (ja) * 1990-01-24 1991-09-26 Fujitsu Ltd 計算機システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佐藤他,キャッシュ操作明示化の提案,情報処理学会研究報告,Vol.90,No.7(90−ARC−80−4),p.25−32

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101799651B1 (ko) * 2015-02-27 2017-12-20 파나소닉 디바이스 썬크스 주식회사 센서
KR101811498B1 (ko) * 2015-02-27 2018-01-25 파나소닉 디바이스 썬크스 주식회사 압력 센서

Also Published As

Publication number Publication date
JPH1196015A (ja) 1999-04-09

Similar Documents

Publication Publication Date Title
Chen et al. The effect of code expanding optimizations on instruction cache design
US5960198A (en) Software profiler with runtime control to enable and disable instrumented executable
US9946523B2 (en) Multiple pass compiler instrumentation infrastructure
US7571432B2 (en) Compiler apparatus for optimizing high-level language programs using directives
Panda et al. Memory data organization for improved cache performance in embedded processor applications
Pai et al. An evaluation of memory consistency models for shared-memory systems with ILP processors
Santhanam et al. Data prefetching on the HP PA-8000
US7574588B2 (en) Time-multiplexed speculative multi-threading to support single-threaded applications
Farkas et al. How useful are non-blocking loads, stream buffers and speculative execution in multiple issue processors?
US20040093591A1 (en) Method and apparatus prefetching indexed array references
Panda et al. Memory organization for improved data cache performance in embedded processors
US7243195B2 (en) Software managed cache optimization system and method for multi-processing systems
Brown et al. Taming the Memory Hogs: Using {Compiler-Inserted} Releases to Manage Physical Memory Intelligently
JPH10293692A (ja) 多重ループ向けデータプリフェッチ方法、プロセッサおよびプログラム生成方法
JP3156761B2 (ja) ノンブロッキングキャッシュ対応のコードスケジューリング方式及びそのプログラムを記録した記憶媒体
US20020199178A1 (en) Method and apparatus for reducing cache thrashing
JP3177950B2 (ja) キャッシュ最適化処理方法およびキャッシュ最適化処理プログラムを記録した記録媒体
Liu et al. Programming in VS Fortran on the IBM 3090 for maximum vector performance
Doshi et al. Optimizing software data prefetches with rotating registers
Ertl et al. Combining stack caching with dynamic superinstructions
US6983459B1 (en) Incorporating register pressure into an inlining compiler
Gibert et al. Flexible compiler-managed L0 buffers for clustered VLIW processors
JPH10320212A (ja) キャッシュ向け最適化方法
Ainsworth et al. Prefetching in functional languages
JP3309810B2 (ja) プログラムリンクシステム、方法及び記録媒体

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees