JPH04225431A - 命令キャッシュ効率を増大するコンピュータ命令をコンパイルする方法 - Google Patents

命令キャッシュ効率を増大するコンピュータ命令をコンパイルする方法

Info

Publication number
JPH04225431A
JPH04225431A JP3085849A JP8584991A JPH04225431A JP H04225431 A JPH04225431 A JP H04225431A JP 3085849 A JP3085849 A JP 3085849A JP 8584991 A JP8584991 A JP 8584991A JP H04225431 A JPH04225431 A JP H04225431A
Authority
JP
Japan
Prior art keywords
instructions
instruction
group
cache
program
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
JP3085849A
Other languages
English (en)
Inventor
Rajiv Gupta
ラジヴ グプタ
Chi-Hung Chi
チー−ハン チー
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.)
Koninklijke Philips NV
Original Assignee
Philips Gloeilampenfabrieken NV
Koninklijke Philips Electronics NV
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 Philips Gloeilampenfabrieken NV, Koninklijke Philips Electronics NV filed Critical Philips Gloeilampenfabrieken NV
Publication of JPH04225431A publication Critical patent/JPH04225431A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は命令キャッシュを使用す
るコンピュータ処理システムに関するものである。特に
、命令キャッシュ汚染と命令キャッシュ誤りを低減する
ように命令メモリ内の命令をコンパイルする方法が記載
されている。
【0002】
【従来の技術】命令キャッシュの使用は高速プロセッサ
と命令メモリの低速アクセス時間との間の動作速度の不
一致を低減してきた。プログラム内の命令はキャッシュ
レジスタ内へ先取りされる命令のラインへグループ化さ
れる。実行されるべき特定の命令を確認するプログラム
カウンタに従って、プロセッサが命令を参照し且つ実行
する。参照された命令は命令キャッシュから実行のため
にプロセッサへ転送される。その命令キャッシュがその
プロセッサにより命令のラインの実行により利用できる
スペースを有する場合には、命令の付加的ラインが次の
利用できるバスサイクルの間にプログラムメモリから命
令キャッシュ内へ取り込まれる。
【0003】これらの命令キャッシュ技術の効率は、次
に必要な命令の組を先取りすることに依存している。プ
ロセッサがキャッシュ内にない命令を参照する場合には
、誤りが生じ且つメモリサイクルが参照される命令を含
んでいるラインを先取りするために用いられる。命令は
プロセッサにより先取りされていない命令キャッシュ内
で先取りされてもよい。これらの命令が命令キャッシュ
に対する汚染を表現しており、他の必要な命令を記憶す
るためのスペースの総量を制限する。ライン内の幾つか
の命令のみがプロセッサにより参照される場合には、ラ
イン内に汚染が生じる。
【0004】ほとんどの命令キャッシュは、完全なプロ
グラムを保持できるほど充分大きくはない。従って、キ
ャッシュに対する装荷過程が逐次的である場合には、常
に、条件付き命令文とプログラムループとがそのキャッ
シュ内にない命令の参照となる。必要な命令を含んでい
るラインの取り込みが生じる間に、これらの実行はシス
テムバスを煩わせるメモリアクセスを必要とし、従って
キャッシュの効率を減少させる。
【0005】
【発明が解決しようとする課題】命令キャッシュの効率
を改善することが本発明の目的である。
【0006】命令キャッシュの汚染を減少させることが
もっと詳細な本発明の目的である。
【0007】起こりそうなキャッシュ誤り又はキャッシ
ュ汚染を減少させる順番でプログラム命令をコンパイル
することが、本発明の更にもう一つの目的である。
【0008】
【課題を解決するための手段】本発明のこれらの及びそ
の他の目的は、命令キャッシュ効率を改善する順番でプ
ログラムのうちの命令をコンパイルする方法により与え
られる。そのプログラムはプログラム内の制御の非逐次
的な転送となる命令のために解析される。分岐命令文と
プログラムループとの存在が確認され、同時にこれらの
条件に対する命令実行過程が確認される。プログラムが
順番にコンパイルされ、それが少ししかないキャッシュ
誤り及び少ないキャッシュ汚染となる。
【0009】この解析が命令のラインに、全ラインが実
行されるか又はライン内の全ての命令が実行されないか
のいずれかのように形成されることを許容する。従って
、部分的なラインの汚染は回避される。
【0010】命令は部分的なライン汚染を回避するため
に、命令メモリ内に再位置付けされる。分岐命令は高い
可能性の目標命令が決定命令を引き継ぐように位置決め
される。命令のループは開始命令がラインの境界にある
ようにメモリ内に位置決めされる。
【0011】この命令メモリ内の命令の再位置付けがメ
モリの細分化となる。使用されない記憶スペースがプロ
グラムの次の部分の間に実行されるべき重複命令を含ん
でもよい。
【0012】
【実施例】図1は命令キャッシュ13を使用している主
演算処理装置11を図解している。この命令キャッシュ
13は中央メモリ命令源12ともっと非常に高速の主演
算処理装置11との間のインターフェイスを与える。こ
の命令キャッシュ13は主演算処理装置11によるアク
セスのために中央メモリ命令源12内に記憶される命令
のラインを先取りする。
【0013】1983年にReston Publis
hing Company, Inc. より発行され
たA.V.Pohm及びO.P.Agrawahl共著
の書籍”High Speed Memory Sys
tems” から既知のように、そのような命令キャッ
シュが高速主演算処理装置11と低速中央メモリ命令源
12との間の見えない橋として働く。
【0014】命令キャッシュ13に関連する先取りプロ
セッサが中央メモリ12内に記憶された命令のラインを
順次に先取りする。利用できるバスサイクルの間に、命
令の複数のラインが中央メモリ命令源12から命令キャ
ッシュ13へ移動される。主演算処理装置11のプログ
ラムカウンタが必要な命令を参照する場合には、これら
の命令はその後主演算処理装置11により実行すること
が可能となる。
【0015】この種類のシステムでは既知のように、主
演算処理装置11が命令キャッシュ13内にない命令を
要求する場合には、キャッシュ誤りが生じる。この生じ
た誤りが次の利用できるバスサイクルにおいて、命令キ
ャッシュ13が命令キャッシュ13に対する誤りが生じ
た特定の参照された命令をアドレスすることを要求する
【0016】中央メモリ命令源12内の命令は命令のラ
イン内に組織される。ラインは命令キャッシュ13へユ
ニットとして転送されるべき二つ又はそれ以上の命令を
含み得むことができる。主演算処理装置11により参照
されたラインの個別の命令は命令キャッシュ13からの
実行に対して利用できる。
【0017】キャッシュ誤りの前述の問題は、中央メモ
リ命令源12の特定の参照を要求することによりシステ
ムバスを煩わすので、要求された命令が利用できるよう
になるまで、主演算処理装置11を停止する。命令の先
取りの間は、そのバスは主演算処理装置11により実行
されることが必要なその他の業務を行うことができない
。その結果がシステム効率の低下となる。
【0018】キャッシュ汚染とキャッシュ誤りとは、中
央メモリ命令源12内のプログラムの命令を何時でもラ
インが実行されるように再位置付けすることにより低減
され得て、ラインの全ての命令が実行されるか又はライ
ンの命令の全ての命令が実行されないかのいずれかであ
る。それ故に、少なくとも全ての命令が少なくとも一回
は実行されることが保証される。
【0019】ラインベース上の命令の取り込みは主演算
処理装置11により参照されていないラインの幾つかの
命令を必ず生じ得る。その他の必要な命令のためのスペ
ースを侵害するキャッシュ内へ挿入される使用されない
命令を有することにより、これが命令キャッシュ13の
汚染となる。
【0020】プログラムが実行されているので、キャッ
シュ誤りと汚染結果とは完全に逐次的ではない。ループ
と条件付き命令文とに遭遇した場合には、主演算処理装
置11は目標命令を参照するか又はループの最初へ帰り
、それが非逐次的実行となる。従って、命令が厳密に逐
次的なベース上に先取りされた場合には、これらの条件
がキャッシュ誤りを生じる。
【0021】中央メモリ命令源に対するプログラム命令
の組織が、図2Aに図式的に示してある。B1, B2
, B3及びB4は命令のブロックである。ブロックB
2とB3とは条件付き命令の通路である。条件付き命令
はブロックB1内に置かれて、試験された条件の結果に
応じて、プログラム制御がB2か又はB3かのいずれか
へ推移させる。マージング通路がブロックB4として分
岐B2とB3との各々に対して示してある。
【0022】各ブロックを構成している命令がライン内
に配置され、そこで各ラインがそのブロックに対する二
つ又はそれ以上の命令を含み得る。図2Aに図解したよ
うに、ブロックB1がこのブロックに対する命令を全て
含んでいるライン1と2との中に収容される。ブロック
B2はライン4と同時にライン3内に見出される命令を
含んでいる。ライン4はブロックB3の始まりを構成し
ている付加的な命令を含んでいる。同様に、ライン6は
ブロックB4に対する始まりの命令と同時にブロックB
3の命令を含んでいる。
【0023】このプログラム構造は、真の(true)
分岐B2が実行されるべき場合には、必要とされる6個
のライン1,2,3,4,6及び7となり、ブロックB
3を含んでいる偽の(false) 分岐が実行される
べき場合には6個のライン1,2,4,5,6及び7と
なる。真の分岐が取られる場合には、ライン3と4とが
先取りされて実行されないはずのブロックB3に属して
いる命令による汚染を含むことが明らかである。
【0024】図2Bは真の分岐B2又は偽の分岐B3の
いずれかを実行するために取り込まれることが少しのラ
インしか必要でないようにコードを再位置付けすること
の効果を図解している。図2Aにおいては、ライン4が
B2にのみ属する命令に制限される。ライン5と6とと
はB3にのみ属している命令を含んでおり、ライン7は
マージングブロックであるブロックB4に属している命
令を含んでいる。
【0025】図2Aの構造により5個のラインのみが、
即ちライン1,2,3,4,7のみが真の分岐B2に対
して取り込まれることが必要であり、5個のラインのみ
が、即ちライン1,2,5,6,7のみが偽の分岐B3
に対して取り込まれる必要がある。
【0026】コードの再位置付けすることの結果として
中央メモリ命令源細分化の増加によりキャッシュ特性を
改善する。しかしながら、メモリ命令源12内の空白メ
モリスペースの残りが、付加的数のメモリスペースを設
けるために安価ではあるが、少しのコストがかかるよう
に見える。
【0027】中央メモリ命令源12内のコードの再位置
付けすることは、先取り過程により妨害せず、且つ汚染
の減少と同じ実行をするために少ししか必要でないメモ
リサイクルとにより、キャッシュ特性での恩恵を満たす
【0028】汚染とキャッシュ誤りとを低減するような
、コードを再位置付けするための方法論を与えるために
、キャッシュ汚染及び起こり得るキャッシュ誤りの源泉
を確認する制御フローグラフが用いられてもよい。
【0029】この過程はそのプログラム内に含まれるプ
ログラムループと条件付き命令文とを確認する必要があ
る。純粋な逐次的命令実行順序から条件付き命令文の目
標命令、又はプログラムループからの始まりのループ命
令文への制御の変換を予想する再位置付けの規則が開発
された。
【0030】さて、図3A及び3Bを参照して、一般的
な再位置付け規則が決定され得て、その規則はループ実
行には伴われない命令のラインを先取りすることを回避
できる。プログラムループは一般に何回か実行され、高
い命令キャッシュ特性を達成することはこの実行の間は
基本的である。理想的には、このキャッシュは全体のル
ープ本体を保持するのに充分な大きさでありたい。しか
しながら、キャッシュ寸法制限が課せられているので、
これは普通は実際的ではない。キャッシュがマイクロ回
路内で履行され、且つキャッシュに対するスペースが制
限されている場合には、これは特に真である。
【0031】図3Aからわかるように、ライン1はブロ
ックB2に対する始まり命令と同時にブロックB1に対
する命令を含んでいる。それ故に、ブロックB2内に表
現されたループを実行する間に、ループがブロックB3
へ出ていく場合には、ライン1がライン2,3及び4と
一緒に存在することを要求される。ブロックB1に属す
るライン1内のそれらの命令は従ってキャッシュに対す
る汚染を構成する。
【0032】図3Bに示した汚染のもう一つの源泉はラ
イン4であり、そのライン4はそのループが実行される
際に毎回先取りされなくてはならない。これらのループ
は一般に多数回実行されるので、キャッシュ汚染がブロ
ックB3からの連続的な先取り命令から生じる。
【0033】さて図4Aと4Bとを参照すると、キャッ
シュを汚染するのを回避するために再位置付けされた図
3Aと3Bとの各ループが示されている。図4Aにおい
て、ライン1はブロックB1からの命令のみを含んでい
る。このループはすっかりライン2と3と内の命令を有
するブロックB2に制限されている。最後に、ブロック
B3がライン4内で始まる。図4Bは図3Bのループの
同様な再位置付けを図解している。
【0034】再位置付けがキャッシュに対する汚染と同
時に、主メモリの何らかの細分化に帰着することが認識
され得て、ここでライン1は命令により完全に占有され
ていない。しかしながら、プログラムのこの部分は普通
は一回だけ実行され、且つ複数回実行されるブロックB
2により確認されるプログラムの部分は、キャッシュ内
に汚染を与えない。ループの外側の汚染はそれ故にルー
プの実行の間の低いキャッシュ汚染と引換えにして増加
される。
【0035】ループの再位置付けの結果は、その再位置
付けが1だけループにより占有されるキャッシュライン
の数を減少させる場合に、及びキャッシュラインサイズ
がもう一つのブロックに属しているラインを占有してい
るループの命令の数より大きい場合に、ライン境界で開
始するようにループが再位置付けされることを要求する
ように要約され得る。
【0036】ループの再位置付けはループを実行するた
めに取り込まれるべき一つの小さいキャッシュラインに
帰着する。プロセッサがそのキャッシュ内に必要な命令
を見出さない場合に誤りを生じるラインが参照される場
合に、実行中のキャッシュの汚染は、バストラフィック
と同時にそれによって低減される。誤りの面倒を見るた
めに他方で必要とされるであろうその他の業務を成就す
るために、これがこのシステムを解放する。
【0037】非逐次的命令実行系列を生じるその他の条
件は分岐命令に関連する。図5A及び5Bに、図5Aの
逐次的フォーマットから図5Bに示したような再位置付
けされたフォーマットへ、再コンパイルされた分岐命令
が示されている。各分岐がブロックB2とB3とを具え
ている。真の分岐B2が入られた場合には、この分岐の
実行はライン1,2及び3からの命令を含んでいる。ラ
イン3は偽の分岐を構成するブロックB3からの命令を
含んでいる。従ってこれらの付加的命令が命令キャッシ
ュへの汚染を構成する。図5Bはいかにしてこの汚染を
除去するかを図解している。
【0038】最も実行されることがありそうな分岐に関
して評価がなされる。図5Bの例ではこれは真の分岐で
あるブロックB2である。ライン1,2及び3が全部の
分岐命令コードを含むように、命令コードが再位置付け
される。第2分岐B3がライン4により限定される境界
で真の分岐を直ちに引き継いで位置決めされる。
【0039】図5Aのライン5内に表現された汚染は、
分岐B3からの命令をブロックB4により確認されるマ
ージング通路と組み合わせることによっても、除去され
得る。 図5BはブロックB3に属している分岐命令をライン5
の境界上の終端へ局限することを図解している。
【0040】前述の規則を用いた場合、図6Aに示した
ように、分岐B2又はB3内に汚染を有することが可能
である。境界上の終端への各分岐に対する順番で、幾つ
かの空白スペースがライン4及び7に相当しているe1
及びe2により確認されるメモリ内に残される。これら
のスペースはブロックB4内に見出されるであろうコー
ドを重複するために用いられてもよい。ブロックB4か
らの命令のこれらのラインはブロックB2とB3とによ
り表現される各分岐の完成に続いて実行されるべきであ
るから、この重複はキャッシュを汚染しない。二つの通
路に沿って重複された命令の数は、最低可能な満たされ
ないスペースが、通路の一つに沿って残されるようでな
くてはならない。
【0041】汚染を創造する命令を先取りすることを回
避するための付加的手順として、プログラムの実行を偏
移させる条件付き命令として、同じライン内に目標命令
を集めることができる。従って、各目標命令は条件付き
命令文の先取りによりきっと含まれている。
【0042】主演算処理装置には見えないが、非逐次的
である命令を先取りするためにキャッシュプロセッサに
より実行される、主プログラムメモリの戦略的位置に命
令を記憶することも有利であろう。
【0043】再位置付けコードが中央メモリ命令源12
内でコンパイルされるような、命令コードの再位置付け
の恩恵を得るために、この方法はフローグラフをサブグ
ラフに分解し且つこのサブグラフに再位置付けの規則を
適用する手順を組み込み得る。図7に、再位置付けプロ
グラム命令へのこのフローグラフ接近法の基本的ユニッ
ト構造が示してある。この図解は、基本ブロックと、条
件付きブロック及びループブロックのようなプログラム
構造の三つの基本的形態を確認している。
【0044】この基本ブロックは順次に実行され且つ汚
染の源泉あるいはキャッシュ誤りに対する可能性を与え
ないような命令を具えている。
【0045】条件付き構造は二つの分岐の一方へ入るた
めの基本ブロックと、二つの分岐を合併させるための基
本ブロックとを含んでいる分岐命令を図解している。図
解されている第3のプログラム構造はループである。
【0046】図8Aに表現されているフローグラフから
、図8Bの再位置付けトリーが発展させられ得て、且つ
コードを再位置付けするために相当するアルゴリズムと
共に用いられ得て、それによって少ない汚染と少ししか
ないキャッシュ誤りとを生じる前述の再位置付けコード
の利益を得る。図8Aのフローグラフを解析することに
よって、このプログラム内に多くの基本プログラム構造
が存在することが明らかになる。12と13として確認
される、このプログラムに対する二つの大きいブロック
構造がある。構造12はブロックB3により確認される
ループをも含んでいる分岐ルーチンである。ブロックに
対して必要なラインの数も図8A内に示してある。
【0047】図8BのフローグラフがU1とU2として
二つの主ノードを確認する。U2はループであるブロッ
クB5を具えている。
【0048】U1は条件付き分岐12を具えている全て
のブロックを含んでいる。図8Bに示したように、これ
が主ノードU1の別の子ノードに分解され得る。二つの
逐次的ブロックB1とB4とがブロック12内の二つの
分岐B2とB3と一緒に確認される。かくしてフローグ
ラフとそれの再位置付けトリーを診断して、以下の工程
が種々のブロックを再位置付けするために取られ得る。 再位置付け(U){u1,…un をUの子ノードとす
る(i=1;i≦n;i++)ループに対して{若しu
i が基本ブロックである場合には再位置付けは必要で
ない代わりにui がループである場合には{再位置付
け(ループ本体);“ループ再位置付け規則”をui 
に適用}代わりにui が条件付き命令文である場合に
は{再位置付け(真の分岐);再位置付け(偽の分岐)
;“発散再位置付け規則”をui に適用;“集束再位
置付け規則”をui に適用}代わりに再位置付け(u
i )}}
【0049】前述の再位置付け方法を履行した結果がB
1を再位置付けが必要でない基本ブロックとして認識す
る。B2は真の分岐に相当する条件付き分岐であるから
、前述の原理に従って図9Aと9Bとに示したように再
位置付けされ、ここでB2に対する命令を含んでいるラ
インはその他の分岐B3に対する命令を含んでいない。 キャッシュラインサイズは10命令であるように示され
ており、従って二つの空白命令によりB2をB3から分
離している。この例においては、キャッシュラインサイ
ズが4であることが示されている。
【0050】各ブロックについて続けることにより、分
岐B3がB2からの次のライン間隔上で続いて、ブロッ
クB5により表現されるループがライン境界で始まるよ
うに再位置付けされることがわかる。
【0051】プログラムを再位置付けし且つコンパイル
するためのフローグラフ解析への代わりの接近法として
、再位置付けは制御依存グラフを用いて達成され得る。 制御依存グラフを用いると、それの実行が真であるべき
同じ制御条件を必要とする命令文から成る領域へ、プロ
グラムが分割される。制御領域内の命令文が実行される
場合には、その命令文は制御領域内の残りの命令文であ
る。従って、キャッシュが同じ制御領域の命令文からの
命令のラインを含んでいる場合には、キャッシュ汚染は
絶対にあり得ない。制御依存グラフは制御フローグラフ
に従った再位置付けよりも小さいキャッシュ汚染を潜在
的に提供できるプログラム再位置付けに帰着することが
できる。図9A及び9Bは制御フローグラフ解析がキャ
ッシュ汚染を除去するのを失敗した二つの状態を図解し
ている。図9Aにおいては、ライン1内の汚染が両ブロ
ックB1とB2とに対する命令を含むことにより生じる
。前述の制御フローグラフ解析はこの汚染の源泉を除去
しない。しかしながら、制御依存グラフ技術を用いるこ
とにより、B1とB4とは同じ制御領域に属しているか
ら、二つのブロックからの命令の分類はキャッシュ汚染
を生じないことが認識できる。付加的なキャッシュ汚染
が、図9Aにおける基本ブロックB2の終端で用いられ
ないメモリ位置により生じる。前述の技術を用いてはこ
れも除去されない。
【0052】図10A 及び10B の各プログラム構
造に対する制御依存グラフが図11A 及び11B に
示してある。この制御依存グラフは同じ制御領域にある
プログラム構造を図解している。適当な分岐命令が導入
された場合には、命令は所定の領域のブロックの間を前
後に動かされ得る。例えば、B4からの命令がブロック
B1からの命令のラインと共に含まれる場合には、条件
付き命令文はB4に対するあらゆる命令を実行する前に
全てのB1命令が実行されることを確信することを含ま
れている。制御依存グラフを用いたコードを再位置付け
する方法は、制御データグラフの最低レベルにおける領
域に相当する一番奥の命令文が最初に処理される制御フ
ローグラフに用いられる方法に類似している。領域に対
するコードがラインの整数と合致せず、且つそのような
コードを達成しようと試みる場合には、整数のライン内
の合致はコード移動によって達成される。
【0053】その他の再位置付け技術は、全ての分岐目
標が同じライン内へ先取りされるような分岐命令の二つ
の通路の命令を再位置付けすることを含み得る。それ故
に、毎回キャッシュラインが取り込まれ、そのキャッシ
ュラインが両通路に対する命令を含んでいる。
【0054】再位置付け命令コード内に、細分化された
メモリキャッシュ指令のメモリスペースが含まれ得る。 キャッシュ指令はキャッシュ制御器のみに見え、且つそ
の他は予想される命令を直接取り込む特別の命令である
【0055】かくして、中央メモリ内の命令コードを有
効に再位置付けし且つコンパイルするための技術が説明
された。再位置付け命令コードが、命令キャッシュ先取
りルーチンを変更することなく、小さい命令キャッシュ
汚染と少ししかないキャッシュ誤りに帰着する。この技
術に熟達した人々は添付の特許請求の範囲によりもっと
詳細に説明した更に他の態様をも認識できるであろう。
【図面の簡単な説明】
【図1】図1は命令キャッシュを用いるコンピュータ処
理システムの図解である。
【図2】図2Aは命令ブロックを具えた命令のラインへ
のコンピュータプログラムの編集をを図解している。図
2Bは図2Aの編集よりも少ない汚染を生じるラインへ
の図2Aの再位置付けされた命令を図解している。
【図3】図3Aと3Bとはプログラムループを形成して
いる命令の編集を図解している。
【図4】図4Aと4Bとはループにより占有されるキャ
ッシュラインの数を減少するための図3Aと3Bとのル
ープ命令の再位置付けを図解している。
【図5】図5Aと5Bとはキャッシュ誤りを回避し且つ
キャッシュ汚染を減少するための分岐命令の編集と分岐
命令の再位置付けとを図解している。
【図6】図6Aと6Bとは再位置付けされた分岐命令の
編集と細分化されたメモリセル内に挿入される重複コー
ドとを図解している。
【図7】図7はフローグラフの基本ユニットを図解して
いる。
【図8】図8Aと8Bとはフローグラフと再位置付けア
ルゴリズムを発生するための相当する再位置付けトリー
とを図解している。
【図9】図9Aと9Bとは図8Aの再位置付けコードと
中央主メモリ内のそれの記憶装置とを図解している。
【図10】図10A と10B とは制御依存グラフを
用いて再位置付けされるべきプログラム構造を図解して
いる。
【図11】図11A と11B とは制御依存グラフを
図解している。
【符号の説明】
1〜8  ライン 11  主演算装置 12  中央メモリ命令源 13  メモリキャッシュ B1〜B5  ブロック

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】  記憶されたプログラム命令を実行する
    コンピュータ処理システムにおいて、前記プログラム命
    令の実行の順を決定する工程と、グループに従って前記
    プログラム命令をプログラムメモリ内に記憶する工程と
    を具えた命令キャッシュ特性を改善する方法であって、
    各グループは順次に実行する複数の命令を含んでおり、
    前記記憶工程はグループが命令キャッシュ内へ読み込ま
    れた場合にそのグループはキャッシュラインの境界で始
    まり、且つそのグループがキャッシュラインの整数に相
    当する長さを持たない場合には記憶位置がそのグループ
    の終端での位置調整情報を記憶するようにプログラムメ
    モリ内にグループを位置決めする工程を具えていること
    を特徴とする、命令キャッシュ効率を増大するコンピュ
    ータ命令をコンパイルする方法。
  2. 【請求項2】  位置調整情報は空白スペースであるこ
    とを特徴とする、請求項1記載の命令キャッシュ効率を
    増大するコンピュータ命令をコンパイルする方法。
  3. 【請求項3】  位置調整情報が継承するグループから
    の命令情報を具えていることを特徴とする、請求項1記
    載の命令キャッシュ効率を増大するコンピュータ命令を
    コンパイルする方法。
  4. 【請求項4】  前記グループが条件付き分岐命令内の
    条件の評価により到達できる命令の系列を具えているこ
    とを特徴とする、請求項1記載の命令キャッシュ効率を
    増大するコンピュータ命令をコンパイルする方法。
  5. 【請求項5】  前記グループが同じループ内に命令を
    具えていることを特徴とする、請求項1記載の命令キャ
    ッシュ効率を増大するコンピュータ命令をコンパイルす
    る方法。
  6. 【請求項6】  前記決定する工程が前記プログラム命
    令を具えている源泉コードコンパイラーにより実行され
    ることを特徴とする、請求項1記載の命令キャッシュ効
    率を増大するコンピュータ命令をコンパイルする方法。
  7. 【請求項7】  条件付き分岐命令の評価が第1の結果
    を与えた場合には前記グループの最初のグループが到達
    できる命令を具え、条件付き分岐命令の評価が第2の結
    果を与えた場合には前記グループの第2のグループが到
    達できる命令を具え、且つ前記位置決めする工程が、前
    記第1のグループが命令キャッシュ内へ読み込まれた場
    合に第1グループが第1キャッシュライン境界で始める
    ようにプログラムメモリ内に第1グループを位置決めす
    る工程と、前記第2のグループが命令キャッシュ内へ読
    み込まれた場合に第2グループが第2キャッシュライン
    境界で始め、その第2キャッシュライン境界は第1グル
    ープの終端の後にあるように、プログラムメモリ内に第
    2グループを位置決めする工程とを具えていることを特
    徴とする、請求項1記載の命令キャッシュ効率を増大す
    るコンピュータ命令をコンパイルする方法。
  8. 【請求項8】  条件付き分岐命令の先取りの後に、第
    1グループと第2グループとを命令キャッシュ内へ一緒
    に先取りする工程を更に具えていることを特徴とする、
    請求項7記載の命令キャッシュ効率を増大するコンピュ
    ータ命令をコンパイルする方法。
  9. 【請求項9】  条件のもっと適当な評価を表現するた
    めに前記第1グループを選択する工程を更に具えている
    ことを特徴とする、請求項7記載の命令キャッシュ効率
    を増大するコンピュータ命令をコンパイルする方法。
  10. 【請求項10】  第1グループの終端と第2グループ
    の始まりとの間に、第1グループか第2グループかのい
    ずれかの実行の後に、自動的に続く命令を位置決めする
    工程を更に具えていることを特徴とする、請求項7記載
    の命令キャッシュ効率を増大するコンピュータ命令をコ
    ンパイルする方法。
  11. 【請求項11】  前記決定する工程と記憶する工程と
    が源泉コードコンパイラーにより実行され、前記決定す
    る工程が前記コンピュータプログラム内の命令のブロッ
    クを確認する工程であって、そのブロックはループか、
    条件付き分岐を評価の結果として到達できるグループか
    、又は逐次的な命令の基本的ブロックかのうちの個別の
    一つを各々が構成する工程と、前記コンピュータプログ
    ラムのフローグラフと同等な表現を形成する工程であっ
    て、そのフローグラフは前記確認されたブロックの各々
    を表現するノードの系列と、前記ブロック内に含まれる
    ブロックを確認するサブノードの系列とを具える工程と
    を更に具え、前記位置決めする工程が位置決めする命令
    が命令キャッシュ内へ装荷された場合に各ノードがキャ
    ッシュライン境界で始めるように、プログラムメモリ内
    にノードに相当する位置決めする命令を更に具えている
    ことを特徴とする、請求項1記載の命令キャッシュ効率
    を増大するコンピュータ命令をコンパイルする方法。
  12. 【請求項12】  前記決定する工程と記憶する工程と
    が源泉コードコンパイラーにより実行され、前記決定す
    る工程は、各領域が実行するために真であるべき同じ条
    件を必要とする命令を含んでいる領域に前記プログラム
    を分割する制御依存グラフに等価な表現を形成する工程
    を更に具え、前記位置決めする工程は、位置決めする命
    令が命令キャッシュ内へ装荷された場合に各領域がキャ
    ッシュライン境界で始めるように、プログラムメモリ内
    の領域に相当する命令を位置決めする工程を更に具えて
    いることを特徴とする、請求項1記載の命令キャッシュ
    効率を増大するコンピュータ命令をコンパイルする方法
  13. 【請求項13】  前記決定する工程と記憶する工程と
    が源泉コードコンパイラーにより実行され、その記憶す
    る工程はその組み合わされた命令が命令キャッシュ内へ
    読み込まれた場合に、それらがキャッシュライン境界で
    始めるように、条件付き分岐命令文の目標命令に属して
    いる命令を組み合わせる工程を更に具えていることを特
    徴とする、請求項1記載の命令キャッシュ効率を増大す
    るコンピュータ命令をコンパイルする方法。
  14. 【請求項14】  記憶されたプログラム命令を実行す
    るためのコンピュータ処理システムにおいて、命令キャ
    ッシュ特性を改善する方法が前記プログラム命令の実行
    の順序を決定する工程と、そのグループの内の少なくと
    も一つが飛び越し入力点により始めるグループに従って
    プログラムメモリ内へ前記プログラム命令を記憶する工
    程とを具えており、前記記憶する工程は各非終端グルー
    プの出発点と次のグループの出発点との間の距離がキャ
    ッシュメモリ内の連続するライン間の距離の整数倍にな
    るようにそのグループをそのプログラムメモリ内に位置
    決めする工程と、そのグループが整数のキャッシュライ
    ンに相当する長さを有しない場合にはグループの終端に
    位置調整情報を記憶する工程とを具えていることを特徴
    とする、命令キャッシュ特性を改善する方法。
  15. 【請求項15】  前記命令に対するプログラム実行過
    程を確認するデータ依存の存在のために前記命令キャッ
    シュ内の各ラインを試験する工程と、前記実行過程に従
    って前記命令を先取りする工程とを更に具えていること
    を特徴とする、請求項11又は12記載の命令キャッシ
    ュ効率を増大するコンピュータ命令をコンパイルする方
    法。
JP3085849A 1990-03-27 1991-03-27 命令キャッシュ効率を増大するコンピュータ命令をコンパイルする方法 Pending JPH04225431A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US5000627 1990-03-27
US07/500,627 US5303377A (en) 1990-03-27 1990-03-27 Method for compiling computer instructions for increasing instruction cache efficiency

Publications (1)

Publication Number Publication Date
JPH04225431A true JPH04225431A (ja) 1992-08-14

Family

ID=23990252

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3085849A Pending JPH04225431A (ja) 1990-03-27 1991-03-27 命令キャッシュ効率を増大するコンピュータ命令をコンパイルする方法

Country Status (4)

Country Link
US (1) US5303377A (ja)
EP (1) EP0449368B1 (ja)
JP (1) JPH04225431A (ja)
DE (1) DE69129919T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122506A (ja) * 2003-10-17 2005-05-12 Matsushita Electric Ind Co Ltd コンパイラ装置

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04263323A (ja) * 1991-02-18 1992-09-18 Nec Corp 機械語命令列並べ換え方式
US5457799A (en) * 1994-03-01 1995-10-10 Digital Equipment Corporation Optimizer for program loops
US5689712A (en) * 1994-07-27 1997-11-18 International Business Machines Corporation Profile-based optimizing postprocessors for data references
JPH0877021A (ja) * 1994-09-01 1996-03-22 Fujitsu Ltd 割込処理装置および方法
US5796989A (en) * 1995-03-20 1998-08-18 Apple Computer, Inc. Method and system for increasing cache efficiency during emulation through operation code organization
US6314561B1 (en) 1995-04-12 2001-11-06 International Business Machines Corporation Intelligent cache management mechanism
US5805863A (en) * 1995-12-27 1998-09-08 Intel Corporation Memory pattern analysis tool for use in optimizing computer program code
US6091897A (en) * 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US6301652B1 (en) * 1996-01-31 2001-10-09 International Business Machines Corporation Instruction cache alignment mechanism for branch targets based on predicted execution frequencies
TW470915B (en) * 1996-03-12 2002-01-01 Matsushita Electric Industrial Co Ltd Optimization apparatus which removes transfer instructions by a global analysis of equivalence relations
US5761515A (en) * 1996-03-14 1998-06-02 International Business Machines Corporation Branch on cache hit/miss for compiler-assisted miss delay tolerance
US6038398A (en) * 1997-05-29 2000-03-14 Hewlett-Packard Co. Method and apparatus for improving performance of a program using a loop interchange, loop distribution, loop interchange sequence
EP0921464A1 (en) * 1997-12-05 1999-06-09 Texas Instruments Incorporated Cache optimization for programming loops
US6282706B1 (en) * 1998-02-10 2001-08-28 Texas Instruments Incorporated Cache optimization for programming loops
US6141732A (en) * 1998-03-24 2000-10-31 Novell, Inc. Burst-loading of instructions into processor cache by execution of linked jump instructions embedded in cache line size blocks
US6240500B1 (en) 1998-06-08 2001-05-29 Compaq Computer Corporation Method for dynamically placing procedures of a program in a memory
JP2000020319A (ja) * 1998-06-30 2000-01-21 Canon Inc プログラム実行装置、その制御方法および記憶媒体
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6243807B1 (en) * 1998-10-20 2001-06-05 Pc-Tel, Inc. Optimizing cache data load required for functions in loop routine by sequentially collecting data in external memory for single block fetch
US6237065B1 (en) * 1999-05-14 2001-05-22 Hewlett-Packard Company Preemptive replacement strategy for a caching dynamic translator
US6675374B2 (en) 1999-10-12 2004-01-06 Hewlett-Packard Development Company, L.P. Insertion of prefetch instructions into computer program code
US7299458B2 (en) * 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
US20050044538A1 (en) * 2003-08-18 2005-02-24 Srinivas Mantripragada Interprocedural computing code optimization method and system
WO2007085121A1 (en) * 2006-01-26 2007-08-02 Intel Corporation Scheduling multithreaded programming instructions based on dependency graph
US8266605B2 (en) * 2006-02-22 2012-09-11 Wind River Systems, Inc. Method and system for optimizing performance based on cache analysis
US8037466B2 (en) 2006-12-29 2011-10-11 Intel Corporation Method and apparatus for merging critical sections
US8484630B2 (en) * 2008-12-23 2013-07-09 International Business Machines Corporation Code motion based on live ranges in an optimizing compiler
US9524178B2 (en) * 2013-12-30 2016-12-20 Unisys Corporation Defining an instruction path to be compiled by a just-in-time (JIT) compiler
US9696973B1 (en) 2016-02-24 2017-07-04 Semmle Limited Compilation cache with imports scanner

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4755966A (en) * 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
US4965724A (en) * 1987-03-05 1990-10-23 Oki Electric Industry Co., Ltd. Compiler system using reordering of microoperations to eliminate interlocked instructions for pipelined processing of assembler source program
JPH0769812B2 (ja) * 1987-12-29 1995-07-31 富士通株式会社 データ処理装置
JP2738692B2 (ja) * 1988-01-29 1998-04-08 株式会社日立製作所 並列化コンパイル方法
US4991088A (en) * 1988-11-30 1991-02-05 Vlsi Technology, Inc. Method for optimizing utilization of a cache memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005122506A (ja) * 2003-10-17 2005-05-12 Matsushita Electric Ind Co Ltd コンパイラ装置

Also Published As

Publication number Publication date
EP0449368A3 (en) 1992-03-18
EP0449368B1 (en) 1998-08-05
DE69129919T2 (de) 1999-03-11
US5303377A (en) 1994-04-12
DE69129919D1 (de) 1998-09-10
EP0449368A2 (en) 1991-10-02

Similar Documents

Publication Publication Date Title
EP0449368B1 (en) Method for compiling computer instructions for increasing cache efficiency
US6006033A (en) Method and system for reordering the instructions of a computer program to optimize its execution
TWI387927B (zh) 程式碼轉換之部分無效碼刪除最佳化
US9798528B2 (en) Software solution for cooperative memory-side and processor-side data prefetching
US5627981A (en) Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
US6721943B2 (en) Compile-time memory coalescing for dynamic arrays
JP5419325B2 (ja) プログラム・コードを変換するための共用コード・キャッシングの方法および装置
US20040205740A1 (en) Method for collection of memory reference information and memory disambiguation
US6973644B2 (en) Program interpreter
US20020066081A1 (en) Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
US20120198428A1 (en) Using Aliasing Information for Dynamic Binary Optimization
US20020042907A1 (en) Compiler for parallel computer
US5634023A (en) Software mechanism for accurately handling exceptions generated by speculatively scheduled instructions
JP2500079B2 (ja) プログラムの最適化方法及びコンパイラ・システム
US7036118B1 (en) System for executing computer programs on a limited-memory computing machine
US20130086564A1 (en) Methods and systems for optimizing execution of a program in an environment having simultaneously parallel and serial processing capability
US6230317B1 (en) Method and apparatus for software pipelining of nested loops
JPH0776927B2 (ja) コンパイル方法
WO1998037485A1 (en) Method and apparatus for forwarding of operands in a computer system
JP2002527815A (ja) プログラムコード変換方法
CN100458687C (zh) 用于程序代码转换的共享代码缓存方法及设备
US6925639B2 (en) Method and system for register allocation
EP1190315B1 (en) Facilitating garbage collection during object versioning for space and time dimensional computing
JP2005332387A (ja) メモリ命令をグループ化及び管理する方法及びシステム
JPH02217926A (ja) コード生成方法