JP2003108386A - 間接参照データプリフェッチ方法 - Google Patents

間接参照データプリフェッチ方法

Info

Publication number
JP2003108386A
JP2003108386A JP2001299718A JP2001299718A JP2003108386A JP 2003108386 A JP2003108386 A JP 2003108386A JP 2001299718 A JP2001299718 A JP 2001299718A JP 2001299718 A JP2001299718 A JP 2001299718A JP 2003108386 A JP2003108386 A JP 2003108386A
Authority
JP
Japan
Prior art keywords
loop
array
prefetch
program
indirect
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
JP2001299718A
Other languages
English (en)
Inventor
Hiroyasu Nishiyama
博泰 西山
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001299718A priority Critical patent/JP2003108386A/ja
Priority to US10/067,243 priority patent/US6934808B2/en
Publication of JP2003108386A publication Critical patent/JP2003108386A/ja
Priority to US11/189,705 priority patent/US7165148B2/en
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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions

Abstract

(57)【要約】 【課題】 命令オーバヘッドを削減して、間接参照配列
についてもデータプリフェッチを行なうことにより、間
接配列参照を行なうプログラムの実行性能を向上するこ
と。 【解決手段】 従来のコンパイラでは、はデータ参照の
局所性が検出できなかったため、間接参照配列はデータ
プリフェッチの対象とならなかった。間接参照配列につ
いて、添字の値が、単調増加あるいは単調減少する傾向
を持つことを、ユーザ指示やコンパイラによる解析によ
って検出し、この情報を利用することによって冗長なプ
リフェッチ命令の発行を抑止するとともに、間接参照配
列についてもデータプリフェッチを行なう。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はデータプリフェッチ
方式に関し、さらに詳しくは、プリフェッチ命令を備え
るプロセッサ向けに、プリフェッチを効果的に利用する
ことによって間接配列参照を高速化するコンパイル方法
に関する。
【0002】
【従来の技術】命令レベル並列度や周波数の向上によっ
てマイクロプロセッサの性能は飛躍的に向上を続けてい
る。これに対して、計算機の主記憶を構成するDRAM
の性能向上はプロセッサ性能の向上に比べ低いレベルに
留まっている。この結果、主記憶参照に要するサイクル
数は増加を続ける傾向にある。
【0003】図2に示すように、多くのマイクロプロセ
ッサでは、このような主記憶参照時間を隠蔽するための
方式として、主記憶と比較して高速に参照可能なキャッ
シュと呼ばれる少容量のメモリをプロセッサと主記憶の
間に配置し、最近参照したデータをキャッシュ上に置く
ことによって、主記憶参照に要する時間を短縮するとい
う方式を採っている。ただし、これだけでは、キャッシ
ュ上に無いデータを参照した場合に待ちが生じるので、
主記憶からキャッシュへ指定したアドレスのデータを、
他の命令の実行と並行して先行的に転送するデータプリ
フェッチ命令を用意している。
【0004】コンパイラはソースプログラムを解析し
て、主記憶参照サイクルが隠蔽できるようにプリフェッ
チ命令を生成するコードの最適化を行なう。ここで、演
算に利用するデータ長は一般に1〜8バイト程度の大き
さである。また、主記憶からキャッシュへのデータ転送
は128バイトや64バイトの大きさのキャッシュライ
ンと呼ばれる単位毎に行なわれる。従って、一度のデー
タプリフェッチによって複数回のループ繰返しで参照す
るデータをキャッシュ上に転送することができる。
【0005】文献「T.C.Mowry 他、 Design and Evaluat
ion of a Compiler Algorithm forPrefetching, Proce
edings of the 5th International Conference on Arch
itectural Support for Programming Languages and Op
erating Systems, pp.62-73, 1992」に示されている
ような従来技術では、ループ中のデータ参照の空間的局
所性あるいは時間的局所性をループ中の配列添字の解析
から求め、転送したキャッシュラインの再利用率が一定
以上の場合にプリフェッチを行なう。この際、ループ展
開と組み合わせることにより、同一キャッシュラインへ
の冗長なプリフェッチを行なわないようにし、プリフェ
ッチに伴う命令オーバヘッドを低減している。
【0006】図3を用いて従来技術を説明する。
【0007】図3(a)は本願発明を適用して効果のあ
る、間接参照を伴うループ繰返し処理を行なうソースコ
ードの例を示す。このコードは、配列L[...]の値
を添え字として、配列A[...]の値の総和を求める
処理をiからNまで実行せよ、ということを意味する。
このような間接参照コードは、疎行列の処理などで頻繁
に利用されるものである。
【0008】図3(b)は、このソースコードを従来技
術で最適化するとともにプリフェッチ命令を挿入したコ
ードの例を示す。従来技術では、コンパイル時に配列添
字を解析し、キャッシュラインの再利用率の高い配列参
照のみをプリフェッチ対象とするので、連続参照される
配列L[...]のみがプリフェッチの対象となり、再
利用率の不明な配列A[...]についてはプリフェッ
チの対象となっていない。なお、ここでαはプリフェッ
チによって主記憶からキャッシュへデータが到着するま
でのループ繰返し回数を表す。また、この例では、プロ
セッサのキャッシュラインの大きさは32バイトとす
る。演算に利用するデータ長がたとえば8バイトの大き
さである場合は、4要素のデータが主記憶から一括して
転送される。従って、この例では、4回の繰返しに一度
プリフェッチを行なうようにコード化されている。
【0009】従来方式でも、キャッシュラインの再利用
率が不明な配列A[...]についても、常にプリフェ
ッチを発行するようにすることでプリフェッチの適用対
象とすることは可能である。但し、その場合には、1つ
の間接参照に対して1つのプリフェッチを発行する必要
が生じ命令オーバヘッドが増大する。このようにして最
適化されたコードの例を図3(c)に示す。図3(c)
に示すコードを図3(b)のコードと比較すると、プリ
フェッチのための添え字参照と配列A[...]のプリ
フェッチのための命令が増加するために、命令数が多く
なっている。このため、一般には間接参照に対するプリ
フェッチは行なわれていない。
【0010】
【発明が解決しようとする課題】従来技術による最適化
コードでは、間接参照データのプリフェッチのための命
令オーバヘッドを削減しながら、間接参照される配列の
参照時におけるキャッシュミスサイクルを隠蔽すること
ができないので、プログラムの実行性能が低下してしま
うという問題が生じる。
【0011】
【課題を解決するための手段】上記、従来技術におい
て、間接参照配列に対するプリフェッチのためのオーバ
ヘッドが増加するのは、添字配列の要素の値が離散的で
あることを、プログラム解析の結果、コンパイラが想定
しているためである。すなわち、添字配列の要素の値が
離散的であると、再利用率が悪くなるからである。添字
配列の要素は任意の値をとり得るので、不正な最適化を
行なわないためにはこのように仮定する必要がある。
【0012】しかしながら、実際のプログラムでは、添
字配列の要素の値は、完全に離散的な値ではなく、例え
ば{1、2、3、4、6、7、8、9、51、52、5
3、54、56...}のように、局所的に見るとほぼ
連続的な値をとることが多い。プリフェッチ命令は主記
憶からキャッシュメモリへデータを移動するだけであ
り、キャッシュへのデータ移動はアプリケーションプロ
グラムから見た場合には、データをロードする際のサイ
クル数のみが変化することとなる。
【0013】従って、上記の添字配列に関して、添字配
列の値が連続的、あるいは、一定の規則に従って変化す
ると認識した結果と、プログラムが実際に動作する際に
添字配列がとった値に一部相違があったとしても、プロ
グラムの結果には違いは生じないことが分かる。
【0014】本発明では、このように配列添字が連続的
あるいは、一定の規則にしたがって変化する可能性が高
い場合を、コンパイラ解析、ユーザ指示などを元に認識
することにより、従来技術において、間接参照データの
プリフェッチのための命令オーバヘッドを削減しなが
ら、間接参照される配列の参照時におけるキャッシュミ
スサイクルを隠蔽することができない、という問題を解
決する。
【0015】具体的には、まず、コンパイラ解析、ユー
ザ指示などにより、添字配列の値が一定の増分値を持つ
ことを認識する。この結果、当該添字配列を添字として
参照される配列要素が一定のアドレス間隔で参照される
ことがわかる。よって、ループ展開などの従来技術の最
適化と組み合わせて、プリフェッチを一定のループ繰返
し毎に発行するようにする。この結果、同一キャッシュ
ラインを参照する間接参照配列に対するプリフェッチの
命令数の増加を抑止することが可能となる。
【0016】以上により、プリフェッチのための命令数
のオーバヘッドの増加を低く保って、間接参照配列に対
するプリフェッチを適用することが可能になり、プリフ
ェッチ命令の実行によるメモリ参照サイクルの隠蔽効果
と併せて、プログラムの実行性能を向上することができ
る。
【0017】
【発明の実施の形態】以下、本発明の1つの実施例を図
を参照しながら説明する。
【0018】図2は本発明を実施する計算機システムの
1つの例である。計算機システムはキャッシュメモリ2
02を含むマイクロプロセッサ201、主記憶203、
ディスク204からなり、プログラムはディスク204
に格納される。コンパイラおよびソースプログラムはデ
ィスク204に格納され、プロセッサ201に読み出さ
れコンパイル処理を行なう。コンパイル結果のプログラ
ムはディスク204に格納され、同様にプロセッサ20
1に読み出され実行される。プロセッサ201で通常の
メモリ参照命令の実行を行なう場合には、まずキャッシ
ュメモリ202に参照対象のデータがあるかどうかを調
べ、キャッシュメモリ202にデータが存在すればその
データを参照し、キャッシュメモリ202に参照対象の
データが存在しなければ主記憶203上の当該データを
参照すると共に、当該データの属するキャッシュライン
のコピーをキャッシュメモリ202に置く。キャッシュ
メモリの参照は主記憶の参照に比べて高速であり、参照
対象のデータがキャッシュメモリ上にあればメモリ参照
によって発生する待ち時間を減少することができる。プ
リフェッチ命令は、他の命令の実行と同時に主記憶20
3からキャッシュメモリ202へ参照対象のデータが属
するキャッシュラインを移動する命令であり、主記憶2
03からキャッシュメモリ202へキャッシュラインを
移動するのに十分なサイクル数だけ前にプリフェッチ命
令を発行しておけば、主記憶203からキャッシュメモ
リ202へのデータの転送を行なっている間に他の命令
を実行することができるので、当該データを参照するた
めの待ちは無くなる。
【0019】図1は本発明を実施するコンパイラの最適
化処理フローの構成の1つの例を示す。図1において、
実線は制御の流れを、破線はデータの流れを示してい
る。なお、一般にコンパイラの最適化処理フローは様々
な最適化処理から成るが、ここでは本発明に関連する処
理のみを示している。
【0020】図1に示す実施例では、最適化処理処理1
01により中間語105に対して、間接参照に対するプ
リフェッチ命令を生成する最適化処理を適用し、中間語
109を生成する。最適化処理101では、まずループ
構造認識処理102によって中間語105を解析してプ
ログラム中のループを認識し、中間語106とループ表
108を生成する。次に、間接参照認識処理103で
は、ループ構造認識処理102で認識したループに関し
て解析を行ない、ループ中の間接参照を認識する。次
に、間接参照プリフェッチ生成処理104では、認識し
た間接参照に関して、プリフェッチ命令を生成し、最適
化された中間語109を生成する。これらの処理のう
ち、ループ構造認識処理102および間接参照認識処理
103は、例えば「A.V.Aho他、Compilers: Principles、
Techniques and Tools、Addison-Wesley、1986, pp.513-
584, Chapter 9: Code Generation, pp. 585-722, Chap
ter 10:Code Optimization」などに開示されている従来
技術により実施することができる。
【0021】本発明の特徴的な処理である、間接参照プ
リフェッチ生成処理104の処理フローを図4に示す。
間接参照プリフェッチ生成処理104は、ステップ40
1で処理を開始し、ステップ402でプログラム中のル
ープ集合を図1のループ表108を参照して変数Lに求
める。次にステップ403では、集合Lが空集合である
か否かを確かめ、処理すべきループが存在しなければス
テップ410に制御を移して、処理を終了する。処理す
べきループがある場合、Lから1要素取り出し変数Iに
代入する。次に、ステップ405では、図1の間接参照
認識処理103の結果を参照して、ループI中の間接参
照の集合を変数Mに求める。次に、ステップ406では
集合Mが空集合であるか否かを確かめる。Mが空集合で
あれば、ステップ403に制御を移し次のループを処理
する。Mが空集合でなければ、ステップ407に制御を
移し、集合Mから間接参照を1つ取り出して変数mに代
入する。次にステップ408では、変数mに代入された
間接参照を調べ、mの参照が連続であるか否かを確かめ
る。mの参照が連続であれば、プリフェッチによる主記
憶参照サイクルの隠蔽効果が期待できるので、ステップ
409に制御を移し、間接参照に対するプリフェッチを
生成する。mの参照が連続でなければプリフェッチによ
る主記憶参照サイクルの隠蔽効果が期待できないので、
ステップ406に制御を移して次の間接参照を処理す
る。ステップ409のプリフェッチ生成については、文
献「V.Santhanam他、Data Prefetching on the HP PA-80
00、In Proceedings of the 24th Annual International
Symposium on Computer Architecture、 pp.264-273、 1
997」に示されているような技術を利用して、同一キャ
ッシュラインを参照するプリフェッチ命令の発行を削減
して、プリフェッチを生成する。
【0022】ステップ408では、ループ中の間接参照
について、当該参照が連続であるか否かを判定する。先
にも述べたように、本発明は、実際のプログラムでは、
添字配列の要素の値は、完全に離散的な値ではなく、例
えば{1、2、3、4、6、7、8、9、51、52、
53、54、56...}のように、局所的に見るとほ
ぼ連続的な値をとることが多いことに着目したものであ
るから、この例では、配列の要素の値が1から9までの
部分および51、52、53、54、56の部分では
「連続である」と判定するものでなければならない。勿
論、配列の要素の値が9から51と飛ぶ部分では「不連
続である」と判定するものでなければならない。
【0023】この判定に関しては、以下に示すような方
法で実現するのが良い。 (1)ソースプログラムのコードを解析することにより
自動判定する。 (2)コンパイラオプションによりユーザが指示する。 (3)コンパイラディレクティブによりユーザがソース
コード上に指示する。 (4)提示されたソースコードに対して、ユーザが対話
的に指示する。
【0024】図5は、上記(1)のコンパイラによる自
動解析を行なう場合の処理フロー408を表している。
図5の自動解析処理では、ステップ501で処理を開始
し、解析対象となる配列をステップ502で変数mに格
納する。次に、ステップ503でmの定義式を求め、変
数eに格納する。次にステップ504で式eが「i*α
+β」の形式の線形式であるか否かを確かめる。なお、
ここで、iは帰納変数とする。線形式でない場合は、ス
テップ507に制御を移し、mは非連続であるものと
し、ステップ508に制御を移して処理を終了する。e
が線形式の場合は、ステップ505でeの増分値|α|
が一定値以下であるか否かを判定する。|α|が一定値
以下であれば、ステップ506に制御を移してmは連続
であるものとし、ステップ508で処理を終了する。|
α|が一定値以下でなければ、ステップ507に制御を
移してmは連続でないものとし、ステップ508で処理
を終了する。例として、添字配列Lの定義ループが図8
に示すものであるとする。ここで、Lの添字定義式は
「i*2」であるので、添字の増分値は2であることが
わかる。連続性の判定の閾値の判定値が4であるものと
すると、Lを添字配列として利用する間接参照はプリフ
ェッチ適用対象であると認識される。
【0025】図6は上記(2)のコンパイラオプション
による指示の例を示している。この例では、添字配列L
の増分値が2であることをオプションにより指示してい
る。コンパイラは、この増分値を元に、上記の自動解析
の場合と同様に、プリフェッチの適用の可否を判定す
る。
【0026】同様に、図7は上記(3)のコンパイラデ
ィレクティブの使用例を示している。この例では、「*o
ption increase(L、2)」というディレクティブにより、
後続ループ中の添字配列Lの増分値が2であることを指
示している。図5の例と同様に、この増分値を元に、プ
リフェッチの適用の可否を判定する。
【0027】図7のようなループに対するディレクティ
ブ指示をユーザが与える場合、ユーザが直接ソースプロ
グラム中にディレクティブを記述しても良いが、上記
(4)のように、図1の間接参照認識処理103で認識
した間接参照を含むループをコンピュータのディスプレ
ー上に表示するものとして、各間接参照について添字の
変化量の予測をユーザが対話的に指示することも可能で
ある。
【0028】図9に、図3(a)の例に本発明を適用し
て最適化を実現した結果のコードを示す。添字配列の自
動解析、あるいは、ディレクティブ等によるユーザ指示
の解析の結果、間接参照A[L[i]]の添字配列Lの
増分値が2であることがわかったものとする。キャッシ
ュラインの大きさが32バイト、参照するデータ長が4
バイトであるとすると、ループを4倍展開して図9に示
すように、元のソースコードの繰返し4回に一度配列L
およびAに対するプリフェッチを行なうようにする。こ
れにより、図3(c)と対比しても明らかなように、プ
リフェッチによる命令オーバヘッドを低減して、間接参
照に対するプリフェッチを行なうことができる。
【0029】
【発明の効果】本発明によれば、間接配列参照を行なう
ようなプログラムに関して、データプリフェッチを効果
的に適用し、プログラムの実行性能を向上することがで
きる。
【図面の簡単な説明】
【図1】本発明を実施するコンパイラの最適化処理フロ
ーの構成の1つの例を示す図。
【図2】本発明を実施する計算機システムの例を示すブ
ロック図。
【図3】(a)は本願発明を適用して効果のある、間接
参照を伴うループ繰返し処理を行なうソースコードの例
を、(b)および(c)は従来技術によりプリフェッチ
を導入して最適化したプログラムの例を、それぞれ示す
図。
【図4】本願発明による間接参照プリフェッチ処理の処
理フローの例を示す図。
【図5】本願発明によるループ中の間接参照が連続であ
るか否かを判断する処理フローの例を示す図。
【図6】ループ中の間接参照が連続であるか否かを判断
するためにコンパイラオプションにより添字配列Lの増
分値を指示するためのオプションの例を示す図。
【図7】ループ中の間接参照が連続であるか否かを判断
するためにディレクティブにより添字配列Lの増分値を
指示する例を示す図。
【図8】添字配列定義コードの例を示す図。
【図9】本願発明を適用してプリフェッチを導入して最
適化したプログラムの例を示す図。
【符号の説明】
101…最適化処理フロー、102…ループ構造認識処
理、103…間接参照認識処理、104…間接参照プリ
フェッチ生成処理、105,106,107,109…
中間語、108…ループ表、201…マイクロプロセッ
サ、202…キャッシュメモリ、203…主記憶20
3、204…ディスク。

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】プリフェッチ命令を持つマイクロプロセッ
    サに対する命令を生成するプログラミング言語のコンパ
    イラにおいて、配列の間接参照を行なうようなプログラ
    ムに対して、添字として使われる間接参照の配列の値
    が、一定の規則に従って増減すること、および、その増
    加率あるいは減少率が一定範囲内であるとき、キャッシ
    ュラインに対応して間接参照のプリフェッチの命令を作
    成するデータプリフェッチ方法。
  2. 【請求項2】前記添字として使われる間接参照の配列の
    値の増減、および、その増加率あるいは減少率の判定が
    ソースコード上に記述されたディレクティブの解析によ
    り行われる請求項1記載のデータプリフェッチ方法。
  3. 【請求項3】前記添字として使われる間接参照の配列の
    値の増減、および、その増加率あるいは減少率の判定が
    コンパイラに対して指定されたオプションの解析により
    行われる請求項1記載のデータプリフェッチ方法。
  4. 【請求項4】前記添字として使われる間接参照の配列の
    値の増減、および、その増加率あるいは減少率の判定が
    添字配列の要素の定義式の解析により行われる請求項1
    記載のデータプリフェッチ方法。
  5. 【請求項5】前記添字として使われる間接参照の配列の
    値の増減、および、その増加率あるいは減少率の判定が
    間接参照を含むループのソースコードをユーザに提示し
    て、各添字に関してその変化量をユーザが指示すること
    により行われる請求項1記載のデータプリフェッチ方
    法。
  6. 【請求項6】他の命令の実行と並行して主記憶からキャ
    ッシュメモリにデータを転送するプリフェッチ命令を有
    する計算機上で実行されるプログラムをコンパイルする
    コンパイラであって、(a)プログラム中のループのソー
    スプログラムを中間語へ変換する処理、(b)前記変換さ
    れた中間語に基づいて、前記ループのループ構造を認識
    して第2の中間語とループ表を生成する処理、(c)前
    記生成された第2の中間語とループ表を参照してループ
    に関して解析を行ないループ中の間接参照を認識し第3
    の中間語を生成する処理する処理、(d)前記生成され
    た第3の中間語とループ表を参照して、認識した間接参
    照に関するプリフェッチ命令を生成する処理、よりなる
    ことを特徴とするコンパイラ。
  7. 【請求項7】(a)プログラム中のループのソースプログ
    ラムを中間語へ変換する処理のためのプログラム、(b)
    前記変換された中間語に基づいて、前記ループのループ
    構造を認識して第2の中間語とループ表を生成する処理
    のためのプログラム、(c)前記生成された第2の中間
    語とループ表を参照してループに関して解析を行ないル
    ープ中の間接参照を認識し第3の中間語を生成する処理
    する処理のためのプログラム、(d)前記生成された第
    3の中間語とループ表を参照して、認識した間接参照に
    関するプリフェッチ命令を生成する処理のためのプログ
    ラム、を格納した記憶媒体。
JP2001299718A 2001-09-28 2001-09-28 間接参照データプリフェッチ方法 Pending JP2003108386A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001299718A JP2003108386A (ja) 2001-09-28 2001-09-28 間接参照データプリフェッチ方法
US10/067,243 US6934808B2 (en) 2001-09-28 2002-02-07 Data prefetch method for indirect references
US11/189,705 US7165148B2 (en) 2001-09-28 2005-07-27 Data prefetch method for indirect references

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001299718A JP2003108386A (ja) 2001-09-28 2001-09-28 間接参照データプリフェッチ方法

Publications (1)

Publication Number Publication Date
JP2003108386A true JP2003108386A (ja) 2003-04-11

Family

ID=19120421

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001299718A Pending JP2003108386A (ja) 2001-09-28 2001-09-28 間接参照データプリフェッチ方法

Country Status (2)

Country Link
US (2) US6934808B2 (ja)
JP (1) JP2003108386A (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6918010B1 (en) * 2002-10-16 2005-07-12 Silicon Graphics, Inc. Method and system for prefetching data
US20040093591A1 (en) * 2002-11-12 2004-05-13 Spiros Kalogeropulos Method and apparatus prefetching indexed array references
US7243195B2 (en) * 2004-12-02 2007-07-10 International Business Machines Corporation Software managed cache optimization system and method for multi-processing systems
US7383401B2 (en) * 2006-06-05 2008-06-03 Sun Microsystems, Inc. Method and system for identifying multi-block indirect memory access chains
US7383402B2 (en) * 2006-06-05 2008-06-03 Sun Microsystems, Inc. Method and system for generating prefetch information for multi-block indirect memory access chains
US7890942B2 (en) * 2006-08-15 2011-02-15 International Business Machines Corporation Array value substitution and propagation with loop transformations through static analysis
US7921418B2 (en) * 2006-08-15 2011-04-05 International Business Machines Corporation Compile time evaluation of library functions
US9798528B2 (en) * 2006-09-13 2017-10-24 International Business Machines Corporation Software solution for cooperative memory-side and processor-side data prefetching
US8056067B2 (en) * 2006-09-29 2011-11-08 International Business Machines Corporation Method, computer program product, and device for reducing delays in data processing
US20080091921A1 (en) * 2006-10-12 2008-04-17 Diab Abuaiadh Data prefetching in a microprocessing environment
US7711936B2 (en) * 2007-08-28 2010-05-04 Sun Microsystems, Inc. Branch predictor for branches with asymmetric penalties
US7539844B1 (en) 2008-06-24 2009-05-26 International Business Machines Corporation Prefetching indirect array accesses
US8380680B2 (en) * 2010-06-23 2013-02-19 International Business Machines Corporation Piecemeal list prefetch
US9262139B2 (en) * 2013-01-07 2016-02-16 Advanced Micro Devices, Inc. Layered programming for heterogeneous devices
US10318261B2 (en) * 2014-11-24 2019-06-11 Mentor Graphics Corporation Execution of complex recursive algorithms
JP6730587B2 (ja) * 2016-06-13 2020-07-29 富士通株式会社 キャッシュミス推定プログラム、キャッシュミス推定方法及び情報処理装置
JP6665720B2 (ja) * 2016-07-14 2020-03-13 富士通株式会社 情報処理装置、コンパイルプログラム、コンパイル方法、およびキャッシュ制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5704033A (en) * 1994-10-07 1997-12-30 Lg Semicon Co., Ltd. Apparatus and method for testing a program memory for a one-chip microcomputer
US5704053A (en) * 1995-05-18 1997-12-30 Hewlett-Packard Company Efficient explicit data prefetching analysis and code generation in a low-level optimizer for inserting prefetch instructions into loops of applications
US6567975B1 (en) * 1999-11-08 2003-05-20 Sun Microsystems, Inc. Method and apparatus for inserting data prefetch operations using data flow analysis
US20030145314A1 (en) * 2002-01-31 2003-07-31 Khoa Nguyen Method of efficient dynamic data cache prefetch insertion

Also Published As

Publication number Publication date
US7165148B2 (en) 2007-01-16
US6934808B2 (en) 2005-08-23
US20050262308A1 (en) 2005-11-24
US20030065888A1 (en) 2003-04-03

Similar Documents

Publication Publication Date Title
US7165148B2 (en) Data prefetch method for indirect references
US6367071B1 (en) Compiler optimization techniques for exploiting a zero overhead loop mechanism
JP3317825B2 (ja) ループ最適化翻訳処理方法
US7950012B2 (en) Facilitating communication and synchronization between main and scout threads
CA2672337C (en) Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis
EP1459169B1 (en) Aggressive prefetch of dependency chains
US5752037A (en) Method of prefetching data for references with multiple stride directions
US6148439A (en) Nested loop data prefetching using inner loop splitting and next outer loop referencing
US20040230960A1 (en) Using value speculation to break constraining dependencies in iterative control flow structures
US6415356B1 (en) Method and apparatus for using an assist processor to pre-fetch data values for a primary processor
WO2007055875A1 (en) Method and apparatus for software scouting regions of a program
US5933643A (en) Profiler driven data prefetching optimization where code generation not performed for loops
WO2005078579A1 (ja) プログラム変換装置およびプログラム変換方法
US6681318B2 (en) Method and apparatus for using an assist processor to prefetch instructions for a primary processor
JP2005529383A (ja) シングルスレッドアプリケーションを支援する時間多重化推論的マルチスレッディング
JP2001060169A (ja) キャッシュコントローラ及びコンピュータシステム
US7457923B1 (en) Method and structure for correlation-based prefetching
US7313787B2 (en) Compiler and method for optimizing object codes for hierarchical memories
US6772321B2 (en) Method and apparatus for using an assist processor and value speculation to facilitate prefetching for a primary processor
JP2008071128A (ja) プリフェッチ制御方法及びコンパイル装置
JP2006330813A (ja) プリフェッチ起動命令挿入機能を備えたコンパイラ装置
JPH1196015A (ja) キャッシュ最適化による言語処理方法およびその言語処理を記録した記録媒体
JPH10283192A (ja) プリフェッチコード生成方式
Naishlos et al. Compiler vectorization techniques for a disjoint SIMD architecture
JPH07306790A (ja) ループ最適化方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041027

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070515

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070713

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20070713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071022

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071113