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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
Abstract
についてもデータプリフェッチを行なうことにより、間
接配列参照を行なうプログラムの実行性能を向上するこ
と。 【解決手段】 従来のコンパイラでは、はデータ参照の
局所性が検出できなかったため、間接参照配列はデータ
プリフェッチの対象とならなかった。間接参照配列につ
いて、添字の値が、単調増加あるいは単調減少する傾向
を持つことを、ユーザ指示やコンパイラによる解析によ
って検出し、この情報を利用することによって冗長なプ
リフェッチ命令の発行を抑止するとともに、間接参照配
列についてもデータプリフェッチを行なう。
Description
方式に関し、さらに詳しくは、プリフェッチ命令を備え
るプロセッサ向けに、プリフェッチを効果的に利用する
ことによって間接配列参照を高速化するコンパイル方法
に関する。
てマイクロプロセッサの性能は飛躍的に向上を続けてい
る。これに対して、計算機の主記憶を構成するDRAM
の性能向上はプロセッサ性能の向上に比べ低いレベルに
留まっている。この結果、主記憶参照に要するサイクル
数は増加を続ける傾向にある。
ッサでは、このような主記憶参照時間を隠蔽するための
方式として、主記憶と比較して高速に参照可能なキャッ
シュと呼ばれる少容量のメモリをプロセッサと主記憶の
間に配置し、最近参照したデータをキャッシュ上に置く
ことによって、主記憶参照に要する時間を短縮するとい
う方式を採っている。ただし、これだけでは、キャッシ
ュ上に無いデータを参照した場合に待ちが生じるので、
主記憶からキャッシュへ指定したアドレスのデータを、
他の命令の実行と並行して先行的に転送するデータプリ
フェッチ命令を用意している。
て、主記憶参照サイクルが隠蔽できるようにプリフェッ
チ命令を生成するコードの最適化を行なう。ここで、演
算に利用するデータ長は一般に1〜8バイト程度の大き
さである。また、主記憶からキャッシュへのデータ転送
は128バイトや64バイトの大きさのキャッシュライ
ンと呼ばれる単位毎に行なわれる。従って、一度のデー
タプリフェッチによって複数回のループ繰返しで参照す
るデータをキャッシュ上に転送することができる。
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」に示されている
ような従来技術では、ループ中のデータ参照の空間的局
所性あるいは時間的局所性をループ中の配列添字の解析
から求め、転送したキャッシュラインの再利用率が一定
以上の場合にプリフェッチを行なう。この際、ループ展
開と組み合わせることにより、同一キャッシュラインへ
の冗長なプリフェッチを行なわないようにし、プリフェ
ッチに伴う命令オーバヘッドを低減している。
る、間接参照を伴うループ繰返し処理を行なうソースコ
ードの例を示す。このコードは、配列L[...]の値
を添え字として、配列A[...]の値の総和を求める
処理をiからNまで実行せよ、ということを意味する。
このような間接参照コードは、疎行列の処理などで頻繁
に利用されるものである。
術で最適化するとともにプリフェッチ命令を挿入したコ
ードの例を示す。従来技術では、コンパイル時に配列添
字を解析し、キャッシュラインの再利用率の高い配列参
照のみをプリフェッチ対象とするので、連続参照される
配列L[...]のみがプリフェッチの対象となり、再
利用率の不明な配列A[...]についてはプリフェッ
チの対象となっていない。なお、ここでαはプリフェッ
チによって主記憶からキャッシュへデータが到着するま
でのループ繰返し回数を表す。また、この例では、プロ
セッサのキャッシュラインの大きさは32バイトとす
る。演算に利用するデータ長がたとえば8バイトの大き
さである場合は、4要素のデータが主記憶から一括して
転送される。従って、この例では、4回の繰返しに一度
プリフェッチを行なうようにコード化されている。
率が不明な配列A[...]についても、常にプリフェ
ッチを発行するようにすることでプリフェッチの適用対
象とすることは可能である。但し、その場合には、1つ
の間接参照に対して1つのプリフェッチを発行する必要
が生じ命令オーバヘッドが増大する。このようにして最
適化されたコードの例を図3(c)に示す。図3(c)
に示すコードを図3(b)のコードと比較すると、プリ
フェッチのための添え字参照と配列A[...]のプリ
フェッチのための命令が増加するために、命令数が多く
なっている。このため、一般には間接参照に対するプリ
フェッチは行なわれていない。
コードでは、間接参照データのプリフェッチのための命
令オーバヘッドを削減しながら、間接参照される配列の
参照時におけるキャッシュミスサイクルを隠蔽すること
ができないので、プログラムの実行性能が低下してしま
うという問題が生じる。
て、間接参照配列に対するプリフェッチのためのオーバ
ヘッドが増加するのは、添字配列の要素の値が離散的で
あることを、プログラム解析の結果、コンパイラが想定
しているためである。すなわち、添字配列の要素の値が
離散的であると、再利用率が悪くなるからである。添字
配列の要素は任意の値をとり得るので、不正な最適化を
行なわないためにはこのように仮定する必要がある。
字配列の要素の値は、完全に離散的な値ではなく、例え
ば{1、2、3、4、6、7、8、9、51、52、5
3、54、56...}のように、局所的に見るとほぼ
連続的な値をとることが多い。プリフェッチ命令は主記
憶からキャッシュメモリへデータを移動するだけであ
り、キャッシュへのデータ移動はアプリケーションプロ
グラムから見た場合には、データをロードする際のサイ
クル数のみが変化することとなる。
列の値が連続的、あるいは、一定の規則に従って変化す
ると認識した結果と、プログラムが実際に動作する際に
添字配列がとった値に一部相違があったとしても、プロ
グラムの結果には違いは生じないことが分かる。
あるいは、一定の規則にしたがって変化する可能性が高
い場合を、コンパイラ解析、ユーザ指示などを元に認識
することにより、従来技術において、間接参照データの
プリフェッチのための命令オーバヘッドを削減しなが
ら、間接参照される配列の参照時におけるキャッシュミ
スサイクルを隠蔽することができない、という問題を解
決する。
ザ指示などにより、添字配列の値が一定の増分値を持つ
ことを認識する。この結果、当該添字配列を添字として
参照される配列要素が一定のアドレス間隔で参照される
ことがわかる。よって、ループ展開などの従来技術の最
適化と組み合わせて、プリフェッチを一定のループ繰返
し毎に発行するようにする。この結果、同一キャッシュ
ラインを参照する間接参照配列に対するプリフェッチの
命令数の増加を抑止することが可能となる。
のオーバヘッドの増加を低く保って、間接参照配列に対
するプリフェッチを適用することが可能になり、プリフ
ェッチ命令の実行によるメモリ参照サイクルの隠蔽効果
と併せて、プログラムの実行性能を向上することができ
る。
を参照しながら説明する。
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へのデータの転送を行なっている間に他の命令
を実行することができるので、当該データを参照するた
めの待ちは無くなる。
化処理フローの構成の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」などに開示されている従来
技術により実施することができる。
リフェッチ生成処理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」に示されているような技術を利用して、同一キャ
ッシュラインを参照するプリフェッチ命令の発行を削減
して、プリフェッチを生成する。
について、当該参照が連続であるか否かを判定する。先
にも述べたように、本発明は、実際のプログラムでは、
添字配列の要素の値は、完全に離散的な値ではなく、例
えば{1、2、3、4、6、7、8、9、51、52、
53、54、56...}のように、局所的に見るとほ
ぼ連続的な値をとることが多いことに着目したものであ
るから、この例では、配列の要素の値が1から9までの
部分および51、52、53、54、56の部分では
「連続である」と判定するものでなければならない。勿
論、配列の要素の値が9から51と飛ぶ部分では「不連
続である」と判定するものでなければならない。
法で実現するのが良い。 (1)ソースプログラムのコードを解析することにより
自動判定する。 (2)コンパイラオプションによりユーザが指示する。 (3)コンパイラディレクティブによりユーザがソース
コード上に指示する。 (4)提示されたソースコードに対して、ユーザが対話
的に指示する。
動解析を行なう場合の処理フロー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を添字配列として利用する間接参照はプリフ
ェッチ適用対象であると認識される。
による指示の例を示している。この例では、添字配列L
の増分値が2であることをオプションにより指示してい
る。コンパイラは、この増分値を元に、上記の自動解析
の場合と同様に、プリフェッチの適用の可否を判定す
る。
ィレクティブの使用例を示している。この例では、「*o
ption increase(L、2)」というディレクティブにより、
後続ループ中の添字配列Lの増分値が2であることを指
示している。図5の例と同様に、この増分値を元に、プ
リフェッチの適用の可否を判定する。
ブ指示をユーザが与える場合、ユーザが直接ソースプロ
グラム中にディレクティブを記述しても良いが、上記
(4)のように、図1の間接参照認識処理103で認識
した間接参照を含むループをコンピュータのディスプレ
ー上に表示するものとして、各間接参照について添字の
変化量の予測をユーザが対話的に指示することも可能で
ある。
て最適化を実現した結果のコードを示す。添字配列の自
動解析、あるいは、ディレクティブ等によるユーザ指示
の解析の結果、間接参照A[L[i]]の添字配列Lの
増分値が2であることがわかったものとする。キャッシ
ュラインの大きさが32バイト、参照するデータ長が4
バイトであるとすると、ループを4倍展開して図9に示
すように、元のソースコードの繰返し4回に一度配列L
およびAに対するプリフェッチを行なうようにする。こ
れにより、図3(c)と対比しても明らかなように、プ
リフェッチによる命令オーバヘッドを低減して、間接参
照に対するプリフェッチを行なうことができる。
ようなプログラムに関して、データプリフェッチを効果
的に適用し、プログラムの実行性能を向上することがで
きる。
ーの構成の1つの例を示す図。
ロック図。
参照を伴うループ繰返し処理を行なうソースコードの例
を、(b)および(c)は従来技術によりプリフェッチ
を導入して最適化したプログラムの例を、それぞれ示す
図。
理フローの例を示す図。
るか否かを判断する処理フローの例を示す図。
するためにコンパイラオプションにより添字配列Lの増
分値を指示するためのオプションの例を示す図。
するためにディレクティブにより添字配列Lの増分値を
指示する例を示す図。
適化したプログラムの例を示す図。
理、103…間接参照認識処理、104…間接参照プリ
フェッチ生成処理、105,106,107,109…
中間語、108…ループ表、201…マイクロプロセッ
サ、202…キャッシュメモリ、203…主記憶20
3、204…ディスク。
Claims (7)
- 【請求項1】プリフェッチ命令を持つマイクロプロセッ
サに対する命令を生成するプログラミング言語のコンパ
イラにおいて、配列の間接参照を行なうようなプログラ
ムに対して、添字として使われる間接参照の配列の値
が、一定の規則に従って増減すること、および、その増
加率あるいは減少率が一定範囲内であるとき、キャッシ
ュラインに対応して間接参照のプリフェッチの命令を作
成するデータプリフェッチ方法。 - 【請求項2】前記添字として使われる間接参照の配列の
値の増減、および、その増加率あるいは減少率の判定が
ソースコード上に記述されたディレクティブの解析によ
り行われる請求項1記載のデータプリフェッチ方法。 - 【請求項3】前記添字として使われる間接参照の配列の
値の増減、および、その増加率あるいは減少率の判定が
コンパイラに対して指定されたオプションの解析により
行われる請求項1記載のデータプリフェッチ方法。 - 【請求項4】前記添字として使われる間接参照の配列の
値の増減、および、その増加率あるいは減少率の判定が
添字配列の要素の定義式の解析により行われる請求項1
記載のデータプリフェッチ方法。 - 【請求項5】前記添字として使われる間接参照の配列の
値の増減、および、その増加率あるいは減少率の判定が
間接参照を含むループのソースコードをユーザに提示し
て、各添字に関してその変化量をユーザが指示すること
により行われる請求項1記載のデータプリフェッチ方
法。 - 【請求項6】他の命令の実行と並行して主記憶からキャ
ッシュメモリにデータを転送するプリフェッチ命令を有
する計算機上で実行されるプログラムをコンパイルする
コンパイラであって、(a)プログラム中のループのソー
スプログラムを中間語へ変換する処理、(b)前記変換さ
れた中間語に基づいて、前記ループのループ構造を認識
して第2の中間語とループ表を生成する処理、(c)前
記生成された第2の中間語とループ表を参照してループ
に関して解析を行ないループ中の間接参照を認識し第3
の中間語を生成する処理する処理、(d)前記生成され
た第3の中間語とループ表を参照して、認識した間接参
照に関するプリフェッチ命令を生成する処理、よりなる
ことを特徴とするコンパイラ。 - 【請求項7】(a)プログラム中のループのソースプログ
ラムを中間語へ変換する処理のためのプログラム、(b)
前記変換された中間語に基づいて、前記ループのループ
構造を認識して第2の中間語とループ表を生成する処理
のためのプログラム、(c)前記生成された第2の中間
語とループ表を参照してループに関して解析を行ないル
ープ中の間接参照を認識し第3の中間語を生成する処理
する処理のためのプログラム、(d)前記生成された第
3の中間語とループ表を参照して、認識した間接参照に
関するプリフェッチ命令を生成する処理のためのプログ
ラム、を格納した記憶媒体。
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)
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)
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 |
-
2001
- 2001-09-28 JP JP2001299718A patent/JP2003108386A/ja active Pending
-
2002
- 2002-02-07 US US10/067,243 patent/US6934808B2/en not_active Expired - Fee Related
-
2005
- 2005-07-27 US US11/189,705 patent/US7165148B2/en not_active Expired - Fee Related
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 |