JP2002312181A - プレディケート実行をスタティックな投機的実行へ変換する一般的で効果的な方法 - Google Patents
プレディケート実行をスタティックな投機的実行へ変換する一般的で効果的な方法Info
- Publication number
- JP2002312181A JP2002312181A JP2002030860A JP2002030860A JP2002312181A JP 2002312181 A JP2002312181 A JP 2002312181A JP 2002030860 A JP2002030860 A JP 2002030860A JP 2002030860 A JP2002030860 A JP 2002030860A JP 2002312181 A JP2002312181 A JP 2002312181A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- predicate
- branch
- instructions
- predicates
- 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
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000003068 static effect Effects 0.000 title description 18
- 238000005457 optimization Methods 0.000 claims abstract description 17
- 238000012360 testing method Methods 0.000 claims description 45
- 238000013507 mapping Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 abstract description 19
- 238000013519 translation Methods 0.000 abstract description 3
- 230000000694 effects Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 230000009466 transformation Effects 0.000 description 12
- 230000008901 benefit Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 8
- 238000007667 floating Methods 0.000 description 7
- 238000000844 transformation Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 230000000875 corresponding effect Effects 0.000 description 5
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 230000001965 increasing effect Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000015556 catabolic process Effects 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000011173 large scale experimental method Methods 0.000 description 2
- KRTSDMXIXPKRQR-AATRIKPKSA-N monocrotophos Chemical compound CNC(=O)\C=C(/C)OP(=O)(OC)OC KRTSDMXIXPKRQR-AATRIKPKSA-N 0.000 description 2
- 101000650817 Homo sapiens Semaphorin-4D Proteins 0.000 description 1
- 102100027744 Semaphorin-4D Human genes 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 108091087148 miR-20 stem-loop Proteins 0.000 description 1
- 108091066984 miR-20-1 stem-loop Proteins 0.000 description 1
- 108091076199 miR-20-2 stem-loop Proteins 0.000 description 1
- 108091063796 miR-206 stem-loop Proteins 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000545 stagnation point adsorption reflectometry Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4451—Avoiding pipeline stalls
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
コードの最適化技術を含む装置及び方法を提供する。 【解決手段】 抽象的内部表現のif-変換とif-変換の機
械表現への変換とを含む。変換されたif-変換からプレ
ディケートを除去することを含んでもよい。プレディケ
ートの除去は翻訳によるプレディケート命令の削除、投
機で安全な命令の保護プレディケートを削除すること、
安全でない命令の保護プレディケートを補償により削除
すること、逆if-変換で適切でない命令の保護プレディ
ケートを削除することを含んでもよい。この技術は、機
械表現の最適化を含んでもよい。
Description
(arithmetic)、論理回路(logic)、そして、コンピ
ュータプログラムの命令を解釈し、実行する制御回路
(control circuity)とを含んでなる。図1は、典型的
なコンピュータシステムの一例を示し、マイクロプロセ
ッサ22は、他のものとともに、CPU24と、メモリ
コントローラ26と、オンチップのキャッシュメモリ3
0とを備える。このマイクロプロセッサ22は、外部の
キャッシュメモリ32とメインメモリ34とに接続さ
れ、これら両メモリは、データや、マイクロプロセッサ
22により実行されるプログラム命令を格納する。内部
的には、プログラム命令の実行は、CPU24によって
遂行される。CPU24が命令の実行のために必要とす
るデータは、メモリコントローラ26によって取り込ま
れ(フェッチされ)、CPU24の内部レジスタ28に
ロードされる。メモリデータを要求するCPU24から
のコマンドに対しては、比較的高速なオンチップ・キャ
ッシュメモリ30が検索される。データが見つからない
と、次に外部キャッシュメモリ32が、そして比較的低
速なメインメモリ34がこの順に、メモリコントローラ
26によって検索される。キャッシュメモリ内でデータ
が見いだされることを「ヒット」という。また、キャッ
シュメモリ内にデータがないことを「ミス」という。
取り込まれ、CPUにとって利用可能な状態になるまで
の時間をシステムの「レイテンシ」と呼ぶ。要求された
データがキャッシュメモリ内に見いだされれば、つまり
データヒットとなったならば、要求されたデータは、キ
ャッシュの速度でアクセス可能となるので、システムの
レイテンシは低減される。もし、逆に、データがキャッ
シュになければ、つまり、データミスが発生すると、デ
ータは、外部キャッシュや、メインメモリから取り込ま
れなければならないので、レイテンシが増大する。
て、設計者(デザイナ)は、2つの主な目標を探求す
る。すなわち、命令実行速度の向上と、複数の命令のパ
ラレルな実行とである。命令実行速度の向上は、いくつ
かの方法の組み合わせにより追及することができる。例
えば、半導体プロセスの根本的な改善は、信号伝搬の遅
延を改善させる。より多くのステージを含んだ、より深
い(deeper)パイプラインを用いたパイプライニング実
行(スーパーパイプライニング)を採用することもでき
る。複数の命令実行は、パイプラインの多重化(スーパ
ースカラ・デザイン)により解決し得る。命令の並べ替
え(reorder、命令スケジューリング)や、その他のコ
ンパイラ変換(compiler transformation)は、さらに
多くの命令のパラレル実行を可能にする。つまり、命令
レベルの並列度(ILP)を高めるような実装が可能であ
る。
テージと呼ばれる複数のステップに分けて行われる。命
令は、各ステージで順次処理され、ある命令についての
あるステージの実行は、次の命令についての一つ前のス
テージの実行と並行して行われる。多くのステージで処
理が一斉に行われるので、実行速度(スループット)が
向上する。
時間、すなわちその逆数であるプロセッサのクロックレ
ートによって決められる。パイプラインが一切支障(ス
トール)なく維持されたとすると、命令は、1サイクル
のレートで処理完了される。さらに、スーパースカラ・
パイプライン・プロセッサでは、最大で発行幅(issue
width、スカラ度とも呼ばれる)の数の複数の命令が1
サイクルで実行完了する。従って、複数の発行とパイプ
ラインとのファクターによって、ステージの数と発行幅
との積の分、最大パフォーマンス(peak performance)
は増大する。このような命令の最大数はこのファクター
に近くなるが、これは並行して実行される数に相当す
る。この複数の命令の並行した実行(「インフライト
(in flight)」ともいうべき)は、速度の向上につな
がる。
ェッチ」と呼ぶ。プロセッサのサイクル時間に加えて、
命令がフェッチされ、デコードされるレートも、プロセ
ッサのパフォーマンスに重大な影響を与える。フェッチ
パイプライン(フロントエンド)と、実行パイプライン
(バックエンド)との間に命令バッファが配置され、一
方のエンドでのストールが他方のエンドでのストールを
引き起こすことがないようになっている。両パイプライ
ンは、複数のステージから構成され、高いクロックレー
トを達成している。
行して実行され、命令バッファにバッファされる。この
とき、実行パイプラインは、命令バッファから命令を取
り出して処理している。パフォーマンスが最大になるの
は、バッファへの命令の入力レート(フェッチレート)
と、命令の出力レート(実行レート)とが一致したとき
である。
プラインストールが発生するために、維持できるもので
はない。3つの主要なストールの原因は、プログラムフ
ローと、ハードウエア資源の競合と、データ依存性と、
である。
gram flow)は、分岐命令によって起きる。すなわち、
分岐命令は、方向(direction)を変化(分岐するか否
か)させ、分岐する場合の目的地(分岐の対象)を変化
させる。分岐を処理すべき命令フェッチは、フロントエ
ンド、すなわちフェッチパイプラインで発生するのに対
して、解析(resolution)、すなわち分岐命令の処理結
果は、後続の実行パイプラインで明らかになる。そのた
め、命令フェッチは、分岐予測法を用いて、分岐の結果
を後の解析を待たずして予測しておくべきとなる。
ッチは支障なく続けられる。予測が誤りであったときに
は、誤ってフェッチされたインフライトの命令のすべて
を取り除く(フラッシュ)するためにフェッチを一時停
止し、新たに正しい一連の命令フェッチを開始しなけれ
ばならない。この予測ミスからの復帰にかかる余計なサ
イクルは、予測ミス・ペナルティと呼ばれる。(クロッ
クレートを増大させるために)パイプラインの深さが増
大するにつれ、この分岐予測ミス・ペナルティは比例的
に増大し、大きなパフォーマンス低下を引き起こす。
ため、分岐予測技術は、さまざまな手法に亘って広く何
年も研究されている。このうち、ダイナミック分岐予測
は、ランタイムでの分岐の状態にのみ依存するものであ
る。スタティック及びダイナミック分岐予測を組み合わ
せた技術は、コンパイラ変換(スタティック)、すなわ
ち分岐の選択的削除、コードの再構成によるパフォーマ
ンスの向上を含むものである。このスタティック技術
は、また、分岐するか否かの予測に関するものなど、予
測ヒントビットを用いた分岐命令の修正を用いることも
ある。
は、いわゆるGSHARE予測法である。この技術は、よく見
られる分岐の性質を利用する。すなわち、分岐は、その
(ランタイムでの)過去の状態と、直前の分岐の状態と
に相関するという性質である。つまり、全体的な履歴
(global history、つまり所定数の隣接する分岐の状
態)が、特定の数の低位(low-order)のアドレスビッ
トの分岐と関連づけ(combine)られ、分岐予測テーブ
ルの2ビットのエントリのインデックスを生成する。こ
の2ビットのエントリは、4つの場合(ステート)を区
別する。すなわち分岐するか否か、そしてそれぞれが弱
い(weak)か及び強い(strong)かの別である。現在の
場合に応じて、分岐を行うか否かが予測される。全体的
な履歴とエントリとがその結果に応じて更新される。二
度続けて予測ミスが発生すると、ステートが「分岐す
る」から「分岐しない」へ、またはその逆に変化する。
この方法は、ループ分岐の予測率を向上させる。このよ
うなダイナミック法は、入力データの特性変化による分
岐の状態変化に適応できる利点を有している。
発行幅を備える。実行レートの向上に合わせるため、フ
ェッチレート(フェッチ帯域幅)も増大させなければな
らない。このため、1サイクルあたり1より多い数の分
岐予測を行わなければならないこととなる。この要求に
応えるべく、トレースキャッシュ(trace cache)技術
が開発されている。
実行経路に相当する命令の列(sequence)である。従っ
てトレースは、そこに含まれる開始点(beginning poin
t)と連続した数の分岐結果とによって特徴づけられ
る。トレースキャッシュを備えたプロセッサでは、従来
の命令キャッシュは、トレースを格納するトレースキャ
ッシュに置き換えられる。このため、予測の単位は、1
つの分岐に相当する基本ブロック(basic block)単位
ではなく、複数の分岐命令を含んだトレース全体の単位
となる。これにより、フェッチ帯域幅は、各分岐につい
てではなくトレースを対象とすることで飛躍的に増大す
る。
的な利点もある。それは、分岐命令の判断効果(分岐す
るか否かによるペナルティ)が減少することである。な
ぜならば、トレース内では広く分断された基本ブロック
が連続的なものとして表現されるからである。さらに、
コンプレックス命令セット構造(Complex instruction
set computer; CISC)を扱う場合、CISC命令を内的なマ
イクロ処理命令に変換するのにかかるオーバーヘッド
が、変換後のコードをトレースキャッシュすることで低
減する。このため、トレースが見つけられれば再度変換
する必要がなくなる。
加えて、資源競合とデータ依存性もパイプラインストー
ルの原因である。資源競合は、プロセッサにおいては、
固定された数のパイプラインによって、パイプラインタ
イプの特定の組み合わせが構成されることによって発生
する。例えば、プロセッサは、2つの整数、2つの浮動
小数点、1つのメモリ、1つの分岐というタイプの組み
合わせからなる6つのパイプラインで構成されることが
あり、これに対して一致したタイプについての4つの独
立した命令がグループ化されて1サイクルの間に実行要
求(ディスパッチ)されることがある。
命令は、プログラムの順にグループ化され、このため、
コンパイラによって命令の順序が決定される。命令と、
利用可能なパイプラインとの間で、資源要求のパターン
が異なることで、グループ化とパイプラインの空きサイ
クル(idle cycle)との間に破綻が生じる。さらに、要
求されたオペランドデータが準備できるまで実行を進め
られないという命令があるため、この命令(消費側)が
先行する命令(生産側)に依存すると、生産側の命令の
レイテンシに依存したストールが起きる。例えば、生産
側の命令がメモリ読み出し操作(ロード)であるとき、
生産側と消費側とのペアの間で発生するストールのサイ
クルは、種々のキャッシュミス・ペナルティを含んで増
大することがある。
ラは、命令を並べ替えて、資源競合による空き発行スロ
ット(idle issue slot)を最小にし、生産側と消費側
の命令ペアの間を、他の独立した命令で埋めることによ
り、その間のレイテンシを隠す。このようなコンパイラ
(スタティック)技術は、プロセッサのモデルと、コン
パイル時に仮定されるレイテンシとに依存している。
ッサでは、プロセッサは、プログラムの順序によること
なく独立した命令を発行することで、ダイナミックに命
令を並べ替える。例えば、上述したロードして使う(lo
ad-use)ストールでは、ロード命令がプログラム順序よ
りも早い段階で発行され、スタティックなスケジューリ
ングと同様の効果を達成する。プログラムの正確性を保
持し、適切な例外処理を行い、予測ミスによる投機的な
実行からの復帰を行うために、すべての命令が、プログ
ラムと同じ順序で完了(retire)しなければならない。
この並べ替えは、インオーダの場合に比べたときの、ア
ウトオブオーダプロセッサのハードウエアの複雑性の向
上を必要とする。
に、マシンモデルやレイテンシの変更に適応できるとい
う利点がある。古いモデルのバイナリを実行する場合に
も速度の向上を図ることができる。しかしながら、命令
が発行されるウインドウ(命令バッファ)のサイズと、
処理時間とがその効果を制限する。コンパイル技術は、
かかるサイズや処理時間といった制限がなく、再コンパ
イルによってインオーダプロセッサでもアウトオブオー
ダプロセッサと同様の高パフォーマンスを受けることが
できる。
ローチで達成可能なところを越えて向上するため、より
積極的な技術、つまり、予測された実行(プレディケー
ション(predication)とも呼ばれる)及びスタティッ
ク投機技術が研究されはじめている。
をとる。ここでは、命令は、プレディケートによって保
護される。プレディケートは、特別な1ビットのレジス
タであり、真(1)又は偽(0)に設定され、命令のプ
レディケートの設定に使われる。保護プレディケートが
真の値であるときには、実行の間、命令は通常通り扱わ
れる。保護プレディケートが偽の値にあると、命令は、
あたかも条件的にスキップされたかのように、意味的な
効果を有しない(つまり、構造的な状態を変化させな
い)。
ロックの分岐除去を可能にし、命令スケジューリングを
効果的にする。さらに、分岐ミス・ペナルティや分岐す
るか否かによるペナルティが自然に避けられる。
は、「if-変換(if-conversion)」として知られてい
る。この処理は、分岐命令を含むコードを、分岐を含ま
ないプレディケート(predicate)・コードに変換す
る。プレディケートを設定する命令が導入され、それが
含まれているプレディケート・コード命令では、適切に
設定されたプレディケートによって保護される。理想的
なif-変換技術は、利用するプレディケートの数と、導
入するプレディケートを設定する命令の数とを最小にす
る。
こされる制御依存性(control dependence)をプレディ
ケートを通じてデータ依存性に変換している。制御依存
性が無くなるので、その結果は、その新たなフォームで
の純粋なデータフローに近くなる。この新たなフォーム
は、種々の命令スケジューリング技術の適用を容易にし
て、パフォーマンスの向上に資する。
(code motion)を阻害して、命令スケジューリングに
制限を加える。投機的実行(単に、投機ともいう)は、
所定の依存性を侵すことによってかかる制限を克服す
る。
制御的なもの(control kind)と、データ的なもの(da
ta kind)とである。
投機(コントロール・スペキュレーション)である。分
岐の結果を予測して、予測が正しいとして投機的に命令
を実行する。先に述べたように、この技術は予測が正し
くなかったと判明したときには分岐ミス・ペナルティを
被る。
ンパイラが「保護」分岐上に、命令を移動(move)す
る。この形式では、命令の投機的実行により生成された
結果が究極的に利用されるような命令が投機的に実行さ
れる。もし、結果が利用されないならば、「利用されな
い」命令の実行がパフォーマンスのペナルティを招来す
る。
からの読み出し命令(load)は、競合するか否かによら
ず、過去のメモリへの書き込み命令(store)と交換(c
ommute)される。コンパイルの時に、すべての読み出し
-書き込みのペアがあいまいさを取り除かれ、ペアが独
立であると示されるものではない。安全のため、コンパ
イラはペアが依存性を有すると仮定する保守的な判断を
しなければならない。スタティックなデータ的投機は、
このようなデータ依存性を楽観的に取り除いて克服す
る。これにより、読み出し命令が過去の書き込み命令を
自由に移動できるようになる。
命令と区別され、正しくない投機を検出するために、特
別なアクションが行われなければならない。復帰(reco
very)は、読み出し命令の再発行を含んで、干渉すると
して検出された書き込み命令操作の効果を考慮する。こ
のような修正動作は、パフォーマンス・ペナルティを被
る。
ィックにしろ、また、制御的であれデータ的であれ、投
機に内在するオフセット・ペナルティ(offsetting pen
alty)を越えて並列性を向上し、パフォーマンスの全体
的利益を獲得することにある。
ケート命令の最適化のための拡張可能なルール・ベース
の技法は、抽象的な内部表現のif-変換と、if-変換の機
械命令(machine representation)へのマッピングとを
含む。一つまたはそれ以上の実施形態との関係において
は、この技法がさらにマップされたif-変換からプレデ
ィケートを取り除くことを含む。プレディケートの除去
は、インタープリテーション(interpretation)により
命令を定義することでプレディケートを取り除くことを
含んでもよい。また、プレディケートの除去は、投機に
より安全な命令の保護プレディケートを除去することを
含でもよい。さらにプレディケートの除去は、補償(co
mpensation)により安全でない(unsafe)命令の保護プ
レディケートを除去することを含んでもよい。さらに、
プレディケートの除去は、if-変換の逆(reverse)によ
って、適切でない(unsuitable)命令の保護プレディケ
ートを除去することを含んでもよい。この技術は、さら
に機械命令の最適化を含む。
化のための拡張可能なルール・ベースのシステムは、命
令を実行するプロセッサと、命令とを含む。命令は、プ
レディケートを定義するもので、分岐命令をテストし、
そのテストの結果に基づいて、分岐命令に、定義された
プレディケートを設定する。
化のための拡張可能なルール・ベースの方法はプレディ
ケートを定義し、分岐命令をテストし、そのテストの結
果に基づいて分岐命令に対して定義されたプレディケー
トを設定することを含む。
化のための拡張可能なルール・ベースの装置は、抽象的
な内部表現をif-変換する手段と、if-変換を機械命令へ
マッピングする手段とを含む。一つまたはそれ以上の実
施形態との関係においては、この装置は、マップされた
if-変換からプレディケートを取り除く手段を含む。プ
レディケートの除去においては、インタープリテーショ
ンにより命令を定義することでプレディケートを取り除
く手段を含んでもよい。また、プレディケートの除去に
おいては、投機により安全な命令の保護プレディケート
を除去する手段を含んでもよい。さらに、プレディケー
トの除去においては、補償により安全でない命令の保護
プレディケートを除去する手段を含んでもよい。さら
に、プレディケートの除去においては、if-変換の逆(r
everse)によって、適切でない(unsuitable)命令の保
護プレディケートを除去する手段を含んでもよい。この
装置はさらに、機械命令の最適化を行う手段を含んでも
よい。
化のための拡張可能なルール・ベースの技法は、抽象的
な内部表現のif-変換と、if-変換の機械命令(machine
representation)へのマッピングと、マップされたif-
変換からプレディケートを除去することと、機械命令の
最適化とを含む。プレディケートの除去は、インタープ
リテーション(interpretation)により命令を定義する
ことでプレディケートを取り除くことと、投機により安
全な命令の保護プレディケートを除去することと、補償
(compensation)により安全でない(unsafe)命令の保
護プレディケートを除去することと、if-変換の逆(rev
erse)によって、適切でない(unsuitable)命令の保護
プレディケートを除去することと、を含んでもよい。
ディケート・ハードウエアを用いずにプレディケートに
よる実行を支援する技法が、分岐命令のテストの実装を
含む。一つまたはそれ以上の実施形態との関係において
は、分岐命令のテストは、条件コードに基づいて、分岐
条件を、一般的なレジスタのブーリアン(Boolean)デ
ータへと変換し、完全な論理命令セットが最適なコード
の生成に用いられるようにする。
ハードウエアを用いずにプレディケートによる実行を支
援するシステムが、命令を実行するプロセッサと、条件
コードに基づいて分岐条件が一般的なレジスタのブーリ
アン(Boolean)データへと変換されて完全な論理命令
セットが最適なコードの生成に用いられるような命令
と、分岐で閉じられた(enclosed)投機に適さない命令
セットの保護とを含む。
ハードウエアを用いずにプレディケートによる実行を支
援する方法が、分岐命令のテストの実装を含む。一つま
たはそれ以上の実施形態との関係において、分岐命令の
テストは、条件コードに基づき分岐条件を一般的なレジ
スタのブーリアンデータへと変換し、完全な論理命令セ
ットが最適なコード生成に用いられるようにすることを
含んでもよい。
ハードウエアを用いずにプレディケートによる実行を支
援する装置が、分岐命令のテストを実現する手段と、実
現された分岐命令のテストを用いてプレディケートを除
去する手段と、を含む。他の側面及びこの発明の利点
は、次の説明と特許請求の範囲から明らかである。
ハードウエア及びソフトウエア技術と関連しており、命
令レベルの並列性を高める、新しいジェネレーションの
アーキテクチャの主要な特徴の一つである。PEをサポ
ートする保護(guarded)アーキテクチャに要求される
ものには、プレディケートレジスタと、プレディケート
定義処理と、保護プレディケートのための命令語の付加
的(additional)フィールドとが含まれるが、現存する
命令セットアーキテクチャ(Instruction Set Architec
ture;ISA)に深刻な影響を与える。本発明の一つまたは
それ以上の実施形態において、新規なコンパイル技術
と、代替方法として、それに関連したハードウエアサポ
ートとを含み、現存するアーキテクチャへの影響を最小
限に抑えながら、明示的な保護アーキテクチャのパフォ
ーマンスを獲得し、又はそれを越えることを可能とす
る。ここで実施態様の説明として述べる例示的なアーキ
テクチャは、カリフォルニア州パロアルトのサン・マイ
クロシステムズ社により開発されたSPARC(商標)アー
キテクチャである。
ッサの構成ブロック図を示したものである。プロセッサ
122は、他のものとともに、CPU124と、メモリ
コントローラ126と、オン・チップ・キャッシュメモ
リ130とを備える。マイクロプロセッサ122は、外
部キャッシュメモリ132と、メインメモリ134とに
接続され、これらはいずれも、マイクロプロセッサ12
2により実行されるデータやプログラム命令を保持して
いる。内部的には、プログラム命令の実行は、CPU1
24により実行される。CPU124による命令実行の
際に必要となるデータは、メモリコントローラ126に
より取得され、CPU124の内部レジスタ128に読
み込まれる。
令をテストするための新しい命令を解し、この命令によ
り分岐が行われるであろうか否かを判断する。もし、テ
ストされた条件的分岐が真(true、すなわち分岐する)
であれば、目標(destination)レジスタとして特定さ
れた汎用レジスタが「1」(true)にセットされる。そ
うでないときは、目標レジスタは「0」(false)にセ
ットされる。
の、整数だけでなく浮動小数点も含む、条件(%fccn, %
icc, 及び%xcc)を、標準化(normalize)されたブーリ
アンデータ(1または0)に変換して目標レジスタに格
納する。目標レジスタは、従ってプレディケートとして
作用する。これは、条件コードを汎用レジスタで置き換
えることによる付加的な利点を有し、それにより、命令
レベルの並列度を低減させる条件コードの利用を削減で
きる。汎用レジスタ内の、このブーリアンデータは、真
(true)又は偽(false)に標準化されているので、通
常の論理処理を用いて、他のプレディケートと組み合わ
せてブーリアン操作を行うことができる。従って、プレ
ディケートのために特殊な処理を行う必要がなくなる。
件コードの分岐テスト(tfbx)や、整数条件コードの分
岐テスト(tbx)であってもよい。これらの命令は、後
に詳しく説明するが、プレディケート実行の明示的サポ
ートなしに、従来のアーキテクチャにおけるif-変換の
効果を増大させる。次の説明での定義された命令を含め
て、表記は、SPARC(商標)アーキテクチャ・マニュア
ル(バージョン9)のコンベンションに一致させたもの
を用いている。例示的な命令である浮動小数点条件コー
ドの分岐テスト(tfbx)と、整数条件コードの分岐テス
ト(tbx)とは、次の特性を有している:
でテストされる。もし、条件が真(true)であれば、目
標レジスタ(rd)として定められた汎用レジスタが1に
セットされ、もし条件が偽(false)であれば、目標レ
ジスタは0にセットされる。常に(always(a))や、あ
りえない(never(n))といった条件は必要でない。なぜ
ならば、関連する制御エッジ(control edge)は、制御
依存エッジにはなり得ないからである。
条件(x)でテストされる。上で述べたように、条件が
真(true)ならば、目標レジスタ(rd)として定められ
た汎用レジスタが1にセットされる。逆に、もし条件が
偽(false)ならば、目標レジスタは0にセットされ
る。常に(always(a))や、ありえない(never(n))と
いった条件は必要でない。なぜならば、関連する制御エ
ッジ(control edge)は、制御依存エッジにはなり得な
いからである。
を示したものである。各ステップは、図3を参照しなが
ら、次により詳しく説明される。まず、この処理は、抽
象的な内部表現(Abstract internal representation;
AIR)(step 50)についての保護を完全にサポートした仮
想的な機械表現へのif-変換から開始される。次に、AIR
はif-変換により機械表現(Machine Representation;MI
R)へと変換され(step52)、特に保護プレディケート
が削除される。AIRからMIRへの変換は、4つの部分を含
んでなる。
は、インタープリテーションにより除去される(step5
4)。そして、安全な命令の保護プレディケートが投機
により削除され(step56)、安全でない命令の保護プレ
ディケートが補償により削除される(step58)。最後
に、適切でない命令の保護プレディケートがif-変換の
逆により削除される(step60)。どの命令が安全であ
り、安全でなく、また適切でないかは、後に詳しく説明
される。
結果としてのMIRが、特に定められた変換を適用するこ
とで改善(improve)される(step62)。一つまたはそ
れ以上の実施形態において、ここで説明する処理は、明
示的なプレディケートハードウエアなしにプレディケー
ト実行をスタティックな投機へと変換する。前に述べた
ように、プレディケート実行(PE)は、命令レベルの
並列性を向上させるための、近年のマイクロプロセッサ
のアーキテクチャの主たる特徴である。このように、保
護されたPEの(プレディケート)アーキテクチャは、
ハードウエアとソフトウエアとを組み合わせて例えばif
-変換のように分岐を削除する技術として多くの者によ
り研究されている。2,3の方法で、制御依存性つきの
ループのソフトウエアパイプラインから分岐命令のプレ
ディケート・ミスの選択的削除まで、所定のパフォーマ
ンスが得られている。
ーキテクチャに要求されるものは、既存の命令セットア
ーキテクチャに深刻な影響を与える。特に、完全に保護
されたアーキテクチャは、新たなプレディケート・レジ
スタと、命令を定義(セット)するプレディケートと、
保護プレディケートをアドレッシングするための命令語
の付加的フィールドとを含まなければならない。
態における、PEを利用したパフォーマンスを維持しな
がら、従来のRISCアーキテクチャにおけるISA変化を最
小とする技術を示したものである。この技術は、既存の
アーキテクチャのPEを利用する。これは保護アーキテ
クチャのPEをスタティックな投機(Static Specurati
on;SS)に、保護の完全なサポートなしに変換すること
で達成される。
C(商標)プロセッサが用いられる。いくつかの表記の
変更をするなどにより、当業者は、この技術が他のプロ
セッサにも適用できることを理解できる。SPARC(商
標)プロセッサに適用するときには、この技術は、RK f
or SPARC(商標)(RK/Sparc)として参照され、既存の
SPARC(商標)-V9上でプレディケート実行によるパフ
ォーマンスの優位性を効果的に取りこめる、RK for SPA
RC(商標)(RK/Sparc)として参照される。RK/Sparcの
フレームワーク内では、SPARC(商標)-V9上で強化さ
れる部分は、既存の命令セットアーキテクチャにささや
かな影響しか及ぼさない。これらの強化によって、RK/S
parcは、完全な保護アーキテクチャのものと同等のパフ
ォーマンスを達成する。
テクチャにおけるif-変換のための最適化アルゴリズム
が見いだされている、PEの成果の上に成り立ってい
る。本発明の実施形態では、明示的なプレディケートハ
ードウエアの代わりに、汎用レジスタを黙示的(implic
it)プレディケートとして用いるスタティックな投機を
行うという方法で、PEを、保護されていないアーキテ
クチャに拡張する。
通じた)制御依存性を(プレディケートを通じた)デー
タ依存性に変換するだけであることと、そのような依存
性が侵された(violate)ときに、より高いパフォーマ
ンスが達成できることである。この依存性の侵害は、制
御的なスタティック投機につながる。RK/Sparc技術は、
2つの表記(representation)と、これらの表記につい
ての変換とを含んだ3つのステップによって、これを達
成する。2つの表記は、いずれも特性(character)と
してはローレベルのもので、抽象的内部表現(AIR)
と、物理的なSPARC(商標)-V9の機械表現(MIR)と
である。AIRは、完全なプレディケートのサポートを含
み、仮想的なSPARC(商標)-V9アーキテクチャを表し
ており、MIRは、既存のSPARC(商標)-V9の保護され
ていないアーキテクチャを表している。
の(最も深い、innermostの)ループの本体について、R
K/Sparcは、当該Rを次の3のステップで変換する。 ステップ1.AIRについてif-変換する ステップ2.AIRからMIRへとマッピングする ステップ3.MIRを最適化して改善したMIR′を得る。
ステップ50,52,及び62に対応する。変換が行わ
れたAIR、MIR、及びMIR′の原文通り(textual)の表現
を用い、各ステップの効果に関し、具体的な例を次に示
す。原文通りの表現には、理解のためにデータフローと
他の情報との注釈を付してある。
る。図4は、最も内側のループ200を示したものであ
る。if-変換前のループ200の内部表現202は、図
5に示すようなものである。原文通りの表記で示すよう
に、ソース及びデスティネーション・オペランドについ
ては数字つきの記号tnを用いて命令が表現されている。
視覚的な理解を助けるべく、デスティネーションは、=
記号の左側に表記されている。-tnのように、マークさ
れた記号は、存在しないデスティネーションについての
形式的な表記(device)として用いられている。各基本
ブロックには、その種類(ki)と、領域の先頭(head)
/末尾(tail)を表すフラグ(fl)と、オペレーション
(op)の数と、イミディエイト・ドミネータ(immediat
e dominator;do)と、イミディエイト・ポストドミネ
ータ(immediate postdominator;po)とが付記されて
いる。SPARC(商標)-V9のAIRがいくつかのプレディ
ケート(必要な数だけの、なぜなら仮想的であるから)
と、宣言された(proposed)プレディケート定義命令
と、浮動小数点条件コードの分岐テスト(tfbx)と、整
数条件コードの分岐テスト(tbx)とを備えていると仮
定する。これらの命令は、既に説明したように、分岐条
件を汎用レジスタ内のブーリアン値に変換する。
-変換の問題点は、2つの部分からなる:(1)Gの各
ノード(基本ブロック)にどのようにしてプレディケー
トを設定するか、そして(2)プレディケートとそれら
により定義される処理が最小となるようなプレディケー
トの定義処理をどのように行う(place)かである。P
Eアルゴリズムは、これら双方の問題点を、制御依存性
(CD)を、R=inverse(K)o CDとなるようなR及び
Kの2つのマップに分解することで解決する。
定されるべきプレディケートPを与える。各プレディケ
ート(p)について、Kのセット、K(p)が行われる
べき定義処理を与える。
この解決法は、同じ制御依存性を有したノードの等価な
クラスと、それぞれが特定の等価なクラスと関連する制
御依存性エッジをセット(Kセットと呼ばれる)にグル
ープ化したものとの間のアイソモーフィズム(isomorph
ism)である。この抽象的な観点からは、プレディケー
トは、単に等価なクラスと対応するKセットとの名称
(name)でしかない。
ムは次の表1,2に示したRとKの2つのマップをもた
らす。
ップ
ここに参照して含められるテクニカル・レポート「プレ
ディケート実行について」,J.C.H.パーク、M.
S.シュレンスカー,ヒューレットパッカード・ラボラ
トリ,パロ・アルト,カリフォルニア州,1991に述べら
れているように、制御依存性(CD)を計算するために、
制御フローグラフを論じるべく導入されている。
ィケートP5=R(4)が設定されている。P5の定義
(設定)命令は、セットK(5)={2,-3,-8}によっ
て与えられる。新しく導入された分岐テスト命令を用い
て、この抽象的な結果に具体的な意味を与えることがで
きる。後で説明する新しい分岐テスト命令tfbxを用い
て、例えば要素-3に対応して、B3の分岐命令は定義命
令p5=tfbl(t126,0)へと変換される。Kセットの要素に
関連する符号により0または1となる2番目のオペラン
ドを伴った抽象的な態様のtfbxを用いるのが便利であ
る。これは、当該定義命令がB3で行われ、B3に設定
されるプレディケートP6により保護されなければなら
ないからである。従って、命令は、 p5=tfbl(t126,0) & P6 となり、ここで、保護プレディケートP6は、&セパレ
ータの後にある。
うな処理のリセットに用いられる。ここで、8はスター
ト(start)ブロックを参照する。リセット処理に要求
されるのは、プレディケーションの巧妙な(subtle)面
の一つである。リセットがないと、事前にセットされて
いないプレディケートが利用されることとなって、プレ
ディケート・コードの振る舞いが誤ったものとなってし
まう。複数のブロックを直線的な線形コード(line cod
e)に展開することによるプレディケーションとしての
PEの最終的な結果は、図6に示されたものとなる。
ジョンを扱うならば、図6のプレディケートされたコー
ド204が適用される。完全なプレディケートのサポー
トを削除するRK/Sparcの効果は、完全に保護されたコー
ドを参照して評価される。
標)プロセッサ204のためのプレディケートコードか
ら開始され、保護プレディケートを削除するために種々
の変換が施されたものである。この二番目のRK/Sparcの
ステップは、抽象的表現(AIR)のコードを物理的機械
(MIR)、すなわちSPARC(商標)-V9に変換してい
る。この目的のために、命令は、互いに異なる変換が適
用される、4つのクラスに分類される: a.命令定義、分岐テスト、インタープリテーションに
より変換されるべきもの b.投機される安全な命令 c.補償される安全でない命令 d.逆if-変換(RIC)される適切でない命令
ステップ54,56,58,60に対応することに注意
したい。上にリストした命令の4つのクラスへの分類
は、RK/Sparcの発見的取り扱い(driving heuristics)
の一部である。
や、そのコンテクストに依存して、安全でないか、適切
でない命令かのいずれかたり得る。図6に示した例を用
いると、リストされた4つの変換が現れている。
13番目の命令205に注目すると、 P5=tfbl(t126,0) & P6 とある。
blを投機的に実行することで除去され、movrnzを用いて
条件的に、適切な結果を与える。従って、上記の命令
は、保護されていない一連の命令、 Q3=tfbl(t126,00 P5=movrnz(P6,Q3) に置き換えられる。そして、分岐テストtfblは、 Q3=mov(1) Q3=movl(t126,0) のペアによって翻訳(インタープリテーション)されて
除去される。
7から19である。この方法で保護を除去すると、自然
に投機したことになる。プレディケート定義命令の投機
は、Q3のような新たなワークレジスタを含むことに注意
したい。プレフィックスQは、「一度きりの使用」とい
う特別な特性を備えたブーリアン値であることを示す。
これらの特性は、後に説明する最適化において便利であ
る。
ない(not-taken)」(-n)のエッジの双方が、Kセッ
トの要素として起きる場合、両者が制御依存エッジにな
り、xorを用いて、逆の値を生成することによりインタ
ープリテーションのオーバヘッドが低減される。ここで
の例は、3つのそのような場合であって、MIR(図7)
のプレディケートを含む3つのxor処理になっているも
のを含む。
であると分類されたものは、新しいワークレジスタ(W
プレフィクスがついた)を利用した投機によって除去さ
れ、このワークレジスタは、条件に沿った保護プレディ
ケートとともにmovrnzを用いた条件的コミットが後置さ
れる。
のは、投機するには安全でない。これは、条件的コミッ
トを用いて、その効果を取り消すことが単純にはできな
いからである。一般的な種類のSPARC(商標)-V9はプ
レディケートされたストア命令を欠いているので、補償
(compensation)コードが用いられる。2つの異なる方
法が考えられる。1つは、古い値をロードして、(movr
nzを用いて)条件的にその値を新しい値に変化させるも
のである。もう一つの方法は、(所定の)害のない(ha
rmless)、又は使われているそのもののいずれかを指す
アドレスを条件的に変更してしまうというものである。
前者のスキームが図7の例では用いられている。ロード
命令がそれ自体投機的であるので、フォールトのない
(non-faulting)種類の、例えばlddaが用いられる。
と、適切でないものとの双方たり得る。SPARC(商標)-
V9は、フォールトのないロードを有し、これにより、
致命的な例外発生を防止しているが、投機的なものであ
って、必要のないTLBや大変なキャッシュミスを遅延さ
せることのできるようなものは有していない。パフォー
マンス低下と、SPARC(商標)-V9における種々のロー
ド命令の投機的なものを用意することの複雑さと、の技
術的比較考量のために、大規模な実験的データが必要で
ある。
令は、安全でない。なぜならば、この命令は投機的実行
の間に割り算のチェック(divide check)を引き起こす
可能性があるからである。安全であると判明した場合で
さえ、関係する実行確率が低い場合、この命令は、投機
には適切でない。これは、マルチサイクル・ブロッキン
グのようなディスパッチ制限(dispatching restrictio
n)のためである。このような場合は、逆if-変換によっ
て取り扱われる。この場合、適切でない命令を保護する
役割を果たすため、分岐が再度導入される。
06は、図7に示されている。図6のプレディケートさ
れたコードに比べると、命令の数は43%(43/3
0)ほど増大している。このような非効率性は、このア
プローチが採られた場合に固有のものである。変換は個
別的に適用され、他の累積的効果を考えることなく、一
斉に行われる。従って、このようなすべての変換が完了
すると、その結果は、次に説明する最適化によって調整
される。
て知られた記号的分析に基づく、ルールベースのオート
モーフィック(automorphic)なMIR-から-MIRへの変換
を含む、新しい技術が用いられる。これらの変換は、種
々の方法におけるコードを向上させる:(1)プレディ
ケート・リセット処理の削除のように、命令数を低減す
る;(2)条件的moveを通常の論理処理へ置き換えるこ
とで、ディスパッチ・コストを低減する;(3)条件コ
ードの利用を削減する;などである。ここでのスキーム
における変換は、ダグ(dag)をカバー(cover)するル
ールを書き換えるものとして実装される。このフレーム
ワークは、実験的分析と、段階的向上を容易にする。
ことは、複数の変換の合成をするために、何度も繰り返
して行われる。結局、用意された変換のセットによって
は、これ以上の向上はできないという最終点(fixpoin
t)へ到達してしまう。図7のMIR206にこのスキーム
が適用されると、図8に示す調整されたMIR′208が
得られる。命令数が23%(43/35)減少したこと
に注目されたい。
ent)(「ほとんど線形」)方法とともに、カバーする
というものは、この技術分野では知られている。カバー
は、あるコードのテキスト表現の各々に記号的表現を関
連づけて、それぞれが、コードのどの実行でも同じ値を
もつようにする。特に、記号的表現をカバーすること
で、コードテキストのどのポイントでもデータフロー情
報を取得する利便性がある。
MIRの向上のための十分な精度のカバーの計算のため
に、部分的評価と組み合わせられ、拡張される。分析の
クオリティは、カバー自体の精度に依存したカバーによ
る。ここでのカバーの精度は、基本的に、値が知られて
いるときの部分評価と、カバー形成における冗長な命令
の検出/削除とに依存する。図7のプレディケートMIR
206の15番目の命令207に注目すると、 P5=movrnz(P7,Q2) ! [15 4 14] n16 とある。
h)であって、各命令(!のLHSにおけるテキスト表記)
が当該グラフのノードに関連するような有向グラフとし
てカバーが形成される。例えば、ノードn16(図9に示
されている)をルートとした部分グラフは、この命令に
関連する記号的表現のカバーを表す。各命令が、このカ
ーバのノードに関連づけられているので、[15 4 14]の
ような命令番号の組をノード名とともに与えることで、
グラフを完全に表現できる。[15 4 14]の組は、命令1
5が、後続のノードであって命令4と14とに関連づけ
られたノードを有していることを意味する。この組に
は、定数や不変なリーフノードは現れてこない。
多対一の関係である。これは、同じ値に評価される命令
(テキスト表現)が同じノードに関連づけられるためで
ある。このカバーの基本的な特性が、冗長な命令の検出
と削除に役立つ。
分グラフを示している。各ノードは、テキスト表現、命
令のLHS(P5のような)に関連づけられ、命令(movr
nz)と命令番号15(207)がノード名(n16)とと
もに示されている。
直接的(directly)(P)又は投機を介して間接的
(Q)のいずれかのプレディケートを含む演算により発
生する。コードの向上の技術として開示されたものは、
多くの値の仮想的(imaginary)ブーリアン関数として
のブーリアン値のみを含む特定のカバーに関する新しい
発想を基本としており、従って、プレディケートMIRを
最適化するという問題を、ディジタルデザインについて
の回路の最小問題に置き換えてしまう。
特定のカバーがどのように認識されるべきか、そして
(2)最適化後のものとしてどのようなものが適切か、
である。
シグネチャの表記を導入する。これは、識別の目的で用
いられるカバーの基本的側面を捉えるものである。(深
さ2の)シグネチャは、カバー(深さ2に制限された)
を、深さ優先(depth-first)で横断することにより得
られる文字列である。横断により、各ノードを渡ること
で、文字列、 (operation: definition operands.) が生成される。
ペランド(カンマによって区切られた、次のノード)へ
再帰的に渡ることで、完全なシグネチャが得られる。種
々の表記、例えば任意の処理を表す*や、無視されたノ
ードを表す「..」など、が用いられる。例えば、ここで
論じたノードn16との関係においてシグネチャは、 (movrnz:P5(*:P7..),(xor:Q2(*:P6)(1)(0)) となる。
目の問題は、カーナーフ・マップ(Karnaugh map)技術
によって解決される。これにより、4変数までのブーリ
アン関数を、最小の数の基本論理処理(マップの基本的
内包(implicand))に縮小する。上記のシグネチャを
有したカバーをもったブーリアン表現は、この方法で代
替パターンに縮小され、 P5=andn(P7,P6) となる。
令を置き換えたものである。これらのペア、シグネチャ
と代替パターンとは、ここでのスキームのルールを構成
する。すべてのルールが適用されると、別のカバー解析
のパスが行われて、累積的にルールが適用される等によ
って出現する不要な命令を検出して削除する。これら
は、そのカバーノードが前方(predecessor)を持たな
かったり、用意された領域に関係しない記号(ある命令
のLHS)を定義しているなどによって識別される。こ
こで述べられたルールは、例えば、xor命令14や、投
機プレディケートQ2の利用の削除に関する。
得られる効果は、図8の最適化されたMIR′208に示
される。命令数が、図7の最適化されていないMIR20
6に比べて、23%(43/35)減少していることに
注意されたい。図6の保護されたAIR204に比べる
と、非効率性は、最適化されていないMIR206の43
%(43/30)から、17%(35/30)に最適化
されたMIR′208では命令数の点で小さくなってい
る。
を整数レジスタのブーリアン値に変換したり、安全でな
いストア命令を扱ったりする場合等の構造的に内在する
ものである。このSPARC(商標)-V9命令セットアーキ
テクチャの非効率性を修正することは、分岐テストと、
プレディケート・ストアとともに論じた。命令数を基準
にする代わりに、次に、ソフトウエア・パイプラインに
基づくより正確な比較を利用する。
と、図8のRK-変換されたMIR′208と、他のものと、
は、ソフトウエア・パイプラインの最小初期化インター
バル(MII)の計算により比較される。MIIは、モ
ジュロ(Modulo)・スケジューリングにおけるようなソ
フトウエア・パイプラインの最大限(optimal limit)
である。モジュロ・スケジューリングの経験から、多く
のケースでスケジュールがII(ソフトウエア・パイプ
ラインのサイクルにおけるステージ長さ)を達成し、こ
の限界、つまりMIIに近いところまで一致している。
これは、例としてのループが循環(recurrence)を含ま
ず、MIIが単に資源の限界: MII=max(Ni/Si) によって与えられることによる。
ビスし得る機能的単位の数であり、Niは、同じクラスの
命令の数である。説明を簡単にするために、3つの種類
の資源を区別して扱う。すなわち、整数(A)、浮動小
数点(F)、そしてメモリ(M)である。すべての命令
が完全にパイプライン化され、マルチ・サイクル・ブロ
ッキングやシングル・グループ等のディスパッチ制限が
ないものとする。ここでの例で現れる、すべての命令の
資源の分類は、おのずと明確(self-evident)なもので
あるが、Mクラスの命令に分類される、互いに異なる種
類の条件的moveは除く。
利用は、表3にまとめられている。計数命令(counting
instructions)では、バックエッジ(backedge)(ル
ープ分岐)とそれに関連するディレイスロットが実行さ
れる。これは、モジュロ・スケジューリングで直接的に
影響しないからである。この2つの場合に加えて、さら
に2つのケースがテーブルには含まれている。AIRと、M
IR′である。
ド(MIR′のように)に代えて、条件的ストアを補償コ
ードで取り扱う場合、害のないアドレスへとデスティネ
ーション・アドレスを条件的に変えてしまう(アドレス
ジャミングとして知られる)ことができる。この技術
は、各条件的ストアの発生についてのmov命令を用いた
投機的ロードに代替でき、従って、資源利用特性がMか
らAへと変化する。この結果はMIR′′である。MIR+
(図10)では、SPARC(商標)-V9の強化の一部であ
る、分岐テストとプレディケート・ストアとが用いられ
る。
れているような、2つの異なるディスパッチモデルが配
慮される。パイプミックス(pipe mix)と発行幅(スカ
ラ度)とのモデルが、(2A 1F 2M)のような表記で示され
る。これは、2つのA処理と、1つのF処理と、2つの
M処理とが互いにグループ化され、1サイクルの間に発
行されることを示している。MIIの演算に加えられる各
タームは、対応する資源の扱いの元に示されている。こ
れらのエントリは、どの資源がクリティカルで、資源利
用がどれだけよく平均化されているかを識別する。
9(AIR)でのプレディケート実行(PE)と、SPARC
(商標)-V9(種々のMIR)でのスタティックな投機
(SS)との間のパフォーマンスの差は、予期した通り
に資源が加えられることで低減する。特に、MIR+/AIRの
比は、MIIにおいて、(2A 1F 1M)についての1.2(9/7.
5)から(2A 1F 2M)についての0.93(7/7.5)へと低減す
る。すなわち、モデル(2A 1F 2M)については、20%の
パフォーマンス差が消える。追加的な要因が、例えば保
護アーキテクチャにおける語長の増大による命令フェッ
チレートの変化などを考慮に入れると、PEとSSとの
間のパフォーマンスの差は、現実的には実質的に無視で
きるものとなる。もちろん、適切なコンパイラとシミュ
レータとを用いた大規模な実験が必要である。
とで、すぐに複雑になってしまうことに注意されたい。
例えば、条件的ストアのための2つの異なるアプローチ
の間の選択については、一方か他方かは、資源の利用態
様と、利用可能な資源とによく依存している。たとえ既
に述べたMIR′のような小さな例でも、MIR′′よりも、
ある場合には優れているが、他の場合はそうでないとい
うことがある。このような問題は、すべての選択が行わ
れる前に、選択の最終的な結果に関する知識が要求され
るという共通した特性を有している。力任せの(brute
force)バックトラッキングによるアプローチを避ける
ためには、大規模な実験に基づく発見的な方法による必
要がある。
まれていることにも注意されたい。このような場合に
は、モジュロ・スケジューリングが行われる前に、ルー
プ本体を展開する(アンロールする)という扱いがされ
る。これによると、多くの場合、端数値が含まれている
よりも効果的に優れた結果に結びつく。これは、アンロ
ールされたループでは、ループ・カウント・コードと他
の命令コードとが繰り返しごとに1度だけ繰り返される
だけとなるからである。
ャにおけるプレディケート実行(PE)を、保護されて
いないアーキテクチャにおけるスタティックな投機(S
S)に変換する。実例を挙げて説明し、分析したとお
り、SSとPEとの間のパフォーマンス差は、現在のSP
ARC(商標)-V9アーキテクチャをいくつかの方法で強
化することで、縮まる。これらの強化には、よく知られ
ている、プレディケートされたストアや、制御投機ロー
ドが含まれる。さらに、新しい命令、すなわち分岐テス
トも好ましい。
とにより、「ナローな」モデルである(2A 1F 1M)では、
SSのパフォーマンスは、PEの20%以内になる。こ
の差は、発行幅が「ワイドな」モデルである(2A 1F 2M)
に拡大されると消える。これは、投機のオーバーヘッド
(命令数の増大)が発行スロットの増大に吸収されたた
めに起きる。投機のオーバーヘッドは従って、発行幅
(スカラ度)が増大するにつれて減少するというパフォ
ーマンス上の効果を有する。
と、整数コード(tbx)の分岐テストという2つの種類
がある。分岐テスト命令、 tb<x> icc#or#xcc,%rd は、整数条件コード%icc又は%xccを特定の条件<x>の下
でテストし、真(または偽)のときに、デスティネーシ
ョン・レジスタ%rdを1(または0)にセットする。浮
動小数点型のtbf<x>は、同様の動作をする。条件<x>
は、SPARC(商標)アーキテクチャ・マニュアル(バー
ジョン9)に特定されているような分岐命令に関連する
多くのうちの一つである。これらの分岐テスト命令の効
果は、所定の分岐条件を特定のデスティネーション・レ
ジスタ%rdのブーリアン値に変換することである。
いた抽象的態様が用いられる。例えば、 P7=tfbe(t114,0) といったものである。
は、2つ目のソース・オペランドが条件が反転されてい
るか否かを表すものとして使い、1つのソース・オペラ
ンドを伴う、定められた(proposed)命令にマップされ
る。例えば、上の命令tfbe(t114,0)は、条件「等しい」
を「等しくない」に反転することで、 tfbne t114,P7 にマップされる。
る命令として使われる。さらに、プレディケート値は、
汎用レジスタに置かれるので、完全な論理命令セットの
サポートのない、専用のプレディケート・レジスタを用
いる場合とは異なり、論理命令セットの全体が、一般的
な処理として利用可能である。完全な論理命令のサポー
トにより、プレディケート・コードを最適化して、ブー
リアン表現による最適化の処理を可能としている。
を含む。一又はそれ以上の実施形態では、本発明の態様
として、完全なプレディケート・アーキテクチャのパフ
ォーマンスを得ながら、既存のアーキテクチャのISA変
化を最小にする代替的アプローチが提供される。
チャを伴うプレディケート実行を、完全な保護サポート
なしのスタティックな投機に変換できるようにする。こ
の技術は、既存のSPARC(商標)-V9に数少ない強化を
加え、既存の命令セットアーキテクチャへの影響を軽減
しながら、当該強化されたSPARC(商標)-V9上で、プ
レディケート実行のパフォーマンスの利益を得られるよ
うにする。これらのSPARC(商標)-V9への強化は、分
岐テストといった新たな命令のクラスを含む。分岐テス
トは、条件コードに基づく分岐条件を汎用レジスタ上の
ブーリアン・データに変換し、それにより「最適な」コ
ードの生成に、完全な論理命令セットが利用できるよう
にする。
に依存したパフォーマンス・ゲインが達成される。RK/S
parcの方法では、従って、新たに、記号的分析(カバ
ー)に基づく強力なプレディケート・コードの最適化技
術が含まれる。この技術は、一般的かつ拡張可能で、内
在する(in nature)テキストの書き換えなどの他の問
題に対処する際に容易に適合できるようになっている。
ながら説明されたが、当業者であれば、ここに開示され
た発明の範囲から逸脱することなく、他の実施形態も例
示できる。従って、発明の範囲は、特許請求の範囲を基
礎として定められるべきものである。
ある。
ーチャート図である。
表す説明図である。
れたループの本体を表す説明図である。
説明図である。
を表す説明図である。
す説明図である。
テストの効果を表す説明図である。
Claims (23)
- 【請求項1】 拡張可能なルールベースのプレディケー
ト・コードの最適化技法であって、 抽象内部表現をif-変換し、 if-変換の結果を機械表現へマッピングする、 ことを含む技法。 - 【請求項2】 請求項1に記載の技法であって、さら
に、 マッピングされたif-変換からプレディケートを除去す
ることを含む、技法。 - 【請求項3】 請求項1に記載の技法であって、プレデ
ィケートの除去であって、 インタープリテーションによりプレディケート定義命令
を除去することを含む、技法。 - 【請求項4】 請求項1に記載の技法であって、プレデ
ィケートの除去であって、 安全な命令の保護プレディケートを投機により除去する
ことを含む、技法。 - 【請求項5】 請求項1に記載の技法であって、プレデ
ィケートの除去であって、 安全でない命令の保護プレディケートを補償により除去
することを含む、技法。 - 【請求項6】 請求項1に記載の技法であって、プレデ
ィケートの除去であって、 適切でない命令の保護プレディケートを逆if-変換によ
り除去することを含む、技法。 - 【請求項7】 請求項1に記載の技法であって、さら
に、 機械表現を最適化することを含む、技法。 - 【請求項8】 プレディケート・コードの最適化のため
の拡張可能なルールベースのシステムであって、 命令を実行するプロセッサと、 命令であって、 プレディケートを定義し、 分岐命令をテストし、 当該テストの結果に基づき分岐命令のプレディケートを
設定する命令と、 を含む、システム。 - 【請求項9】 プレディケート・コードの最適化のため
の拡張可能なルールベースの方法であって、 プレディケートを定義し、 分岐命令をテストし、 当該テストの結果に基づき分岐命令について定められた
プレディケートを選択的に設定すること、 を含む方法。 - 【請求項10】 プレディケート・コードを最適化する
装置であって、 抽象内部表現をif-変換する手段と、 if-変換を機械命令にマッピングする手段と、 を含む、装置。 - 【請求項11】 請求項10に記載の装置であって、 マッピングされたif-変換からプレディケートを除去す
る手段、 を含む、装置。 - 【請求項12】 請求項10に記載の装置であって、プ
レディケートの除去であって、 インタープリテーションによりプレディケート定義命令
を除去する手段を含む、装置。 - 【請求項13】 請求項10に記載の装置であって、プ
レディケートの除去であって、 安全な命令の保護プレディケートを投機により除去する
手段を含む、装置。 - 【請求項14】 請求項10に記載の装置であって、プ
レディケートの除去であって、 安全でない命令の保護プレディケートを補償により除去
する手段を含む、装置。 - 【請求項15】 請求項10に記載の装置であって、プ
レディケートの除去であって、 適切でない命令の保護プレディケートを逆if-変換によ
り除去する手段を含む、装置。 - 【請求項16】 請求項10に記載の装置であって、さ
らに、 機械表現を最適化する手段、を含む装置。 - 【請求項17】 プレディケート・コードの最適化のた
めの拡張可能なルールベースの技法であって、 抽象内部表現をif-変換し、 if-変換を機械表現にマッピングし、 マッピングされたif-変換からプレディケートを除去
し、 プレディケートの除去において、 インタープリテーションによりプレディケート定義命令
を除去し、 安全な命令の保護プレディケートを投機により除去し、 安全でない命令の保護プレディケートを補償により除去
し、 適切でない命令の保護プレディケートを逆if-変換によ
り除去し、 機械表現を最適化すること、 を含む、技法。 - 【請求項18】 明示的なプレディケート・ハードウエ
アを用いずに、プレディケート実行をサポートする技法
であって、 分岐テスト命令の実装を含む、技法。 - 【請求項19】 請求項18に記載の技法であって、分
岐テスト命令は、条件コードに基づく分岐条件を、ブー
リアン・データに変換して汎用レジスタに格納し、これ
により、最適化コードの生成に完全な論理命令セットを
利用可能とした、技法。 - 【請求項20】 明示的なプレディケート・ハードウエ
アを用いずに、プレディケート実行をサポートするシス
テムであって、 命令を実行するプロセッサと、 命令であって、 条件コードに基づく分岐命令を、ブーリアン・データに
変換して汎用レジスタに格納し、これにより、最適化コ
ードの生成に完全な論理命令セットを利用可能とし、 分岐に含まれる、投機に適さない命令のセットを保護す
る命令、を含む、システム。 - 【請求項21】 明示的なプレディケート・ハードウエ
アを用いずに、プレディケート実行をサポートする方法
であって、 分岐テスト命令の実装を含む、方法。 - 【請求項22】 請求項21に記載の方法であって、分
岐テスト命令は、条件コードに基づく分岐条件を、ブー
リアン・データに変換して汎用レジスタに格納し、これ
により、最適化コードの生成に完全な論理命令セットを
利用可能とした、方法。 - 【請求項23】 明示的なプレディケート・ハードウエ
アを用いずに、プレディケート実行をサポートする装置
であって、 分岐テスト命令を実装した手段と、 当該実装された分岐テスト命令を用いてプレディケート
を除去する手段と、を含む、装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/778,424 | 2001-02-07 | ||
US09/778,424 US20030023959A1 (en) | 2001-02-07 | 2001-02-07 | General and efficient method for transforming predicated execution to static speculation |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002312181A true JP2002312181A (ja) | 2002-10-25 |
Family
ID=25113305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002030860A Pending JP2002312181A (ja) | 2001-02-07 | 2002-02-07 | プレディケート実行をスタティックな投機的実行へ変換する一般的で効果的な方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20030023959A1 (ja) |
EP (1) | EP1233338A3 (ja) |
JP (1) | JP2002312181A (ja) |
KR (1) | KR100576794B1 (ja) |
CA (1) | CA2371184A1 (ja) |
TW (1) | TW565778B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100353278C (zh) * | 2004-05-20 | 2007-12-05 | 英特尔公司 | 用于类型安全语言环境的方法、处理器和系统 |
JP2013500539A (ja) * | 2009-09-09 | 2013-01-07 | ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム | 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7140006B2 (en) * | 2001-10-11 | 2006-11-21 | Intel Corporation | Method and apparatus for optimizing code |
US6834383B2 (en) * | 2001-11-26 | 2004-12-21 | Microsoft Corporation | Method for binary-level branch reversal on computer architectures supporting predicated execution |
US20030145190A1 (en) * | 2001-12-07 | 2003-07-31 | Paolo Faraboschi | Compiler algorithm to implement speculative stores |
US20030191893A1 (en) * | 2002-04-09 | 2003-10-09 | Miller John Alan | Method, system, and apparatus for efficient trace cache |
US7222226B1 (en) * | 2002-04-30 | 2007-05-22 | Advanced Micro Devices, Inc. | System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation |
US7308682B2 (en) * | 2003-04-25 | 2007-12-11 | Intel Corporation | Method and apparatus for recovering data values in dynamic runtime systems |
US20060259752A1 (en) * | 2005-05-13 | 2006-11-16 | Jeremiassen Tor E | Stateless Branch Prediction Scheme for VLIW Processor |
US7752425B2 (en) * | 2006-05-30 | 2010-07-06 | Arm Limited | Data processing apparatus having trace and prediction logic |
US7707394B2 (en) | 2006-05-30 | 2010-04-27 | Arm Limited | Reducing the size of a data stream produced during instruction tracing |
US8677104B2 (en) * | 2006-05-30 | 2014-03-18 | Arm Limited | System for efficiently tracing data in a data processing system |
US8181168B1 (en) * | 2007-02-07 | 2012-05-15 | Tilera Corporation | Memory access assignment for parallel processing architectures |
US8341612B2 (en) * | 2007-05-16 | 2012-12-25 | International Business Machines Corporation | Method and apparatus for run-time statistics dependent program execution using source-coding |
US8381192B1 (en) * | 2007-08-03 | 2013-02-19 | Google Inc. | Software testing using taint analysis and execution path alteration |
KR101579589B1 (ko) * | 2009-02-12 | 2015-12-22 | 삼성전자 주식회사 | 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법 |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
JP5707011B2 (ja) | 2010-06-18 | 2015-04-22 | ボード・オブ・リージエンツ,ザ・ユニバーシテイ・オブ・テキサス・システム | 統合分岐先・述語予測 |
US9304776B2 (en) | 2012-01-31 | 2016-04-05 | Oracle International Corporation | System and method for mitigating the impact of branch misprediction when exiting spin loops |
US9256410B2 (en) | 2012-08-09 | 2016-02-09 | Apple Inc. | Failure profiling for continued code optimization |
US9286039B2 (en) * | 2013-03-14 | 2016-03-15 | Microsoft Technology Licensing, Llc | Operating system support for contracts |
US9684514B2 (en) * | 2014-09-10 | 2017-06-20 | International Business Machines Corporation | Inference based condition code generation |
US9916164B2 (en) * | 2015-06-11 | 2018-03-13 | Intel Corporation | Methods and apparatus to optimize instructions for execution by a processor |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
CN114020277A (zh) * | 2021-11-17 | 2022-02-08 | 湖南科技大学 | 面向谓词执行向量处理器的指令间变量依赖关系分析方法 |
CN114817927B (zh) * | 2022-03-30 | 2024-01-09 | 北京邮电大学 | 基于分支覆盖指导的有效符号执行方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5627981A (en) * | 1994-07-01 | 1997-05-06 | Digital Equipment Corporation | Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination |
US5920716A (en) * | 1996-11-26 | 1999-07-06 | Hewlett-Packard Company | Compiling a predicated code with direct analysis of the predicated code |
US5999738A (en) * | 1996-11-27 | 1999-12-07 | Hewlett-Packard Company | Flexible scheduling of non-speculative instructions |
US5943499A (en) * | 1996-11-27 | 1999-08-24 | Hewlett-Packard Company | System and method for solving general global data flow predicated code problems |
US5937195A (en) * | 1996-11-27 | 1999-08-10 | Hewlett-Packard Co | Global control flow treatment of predicated code |
US5999736A (en) * | 1997-05-09 | 1999-12-07 | Intel Corporation | Optimizing code by exploiting speculation and predication with a cost-benefit data flow analysis based on path profiling information |
JP3570855B2 (ja) * | 1997-05-29 | 2004-09-29 | 株式会社日立製作所 | 分岐予測装置 |
JP3595158B2 (ja) * | 1998-03-13 | 2004-12-02 | 株式会社東芝 | 命令割り当て方法及び命令割り当て装置 |
JP3565314B2 (ja) * | 1998-12-17 | 2004-09-15 | 富士通株式会社 | 分岐命令実行制御装置 |
US6513109B1 (en) * | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
US6637026B1 (en) * | 2000-03-01 | 2003-10-21 | Intel Corporation | Instruction reducing predicate copy |
US6732356B1 (en) * | 2000-03-31 | 2004-05-04 | Intel Corporation | System and method of using partially resolved predicates for elimination of comparison instruction |
-
2001
- 2001-02-07 US US09/778,424 patent/US20030023959A1/en not_active Abandoned
-
2002
- 2002-02-06 TW TW091102051A patent/TW565778B/zh active
- 2002-02-07 EP EP02100114A patent/EP1233338A3/en not_active Withdrawn
- 2002-02-07 KR KR1020020007089A patent/KR100576794B1/ko not_active IP Right Cessation
- 2002-02-07 CA CA002371184A patent/CA2371184A1/en not_active Abandoned
- 2002-02-07 JP JP2002030860A patent/JP2002312181A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100353278C (zh) * | 2004-05-20 | 2007-12-05 | 英特尔公司 | 用于类型安全语言环境的方法、处理器和系统 |
JP2013500539A (ja) * | 2009-09-09 | 2013-01-07 | ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム | 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 |
Also Published As
Publication number | Publication date |
---|---|
CA2371184A1 (en) | 2002-08-07 |
EP1233338A2 (en) | 2002-08-21 |
KR20020065864A (ko) | 2002-08-14 |
EP1233338A3 (en) | 2005-02-02 |
KR100576794B1 (ko) | 2006-05-10 |
TW565778B (en) | 2003-12-11 |
US20030023959A1 (en) | 2003-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002312181A (ja) | プレディケート実行をスタティックな投機的実行へ変換する一般的で効果的な方法 | |
US7594102B2 (en) | Method and apparatus for vector execution on a scalar machine | |
US8505002B2 (en) | Translation of SIMD instructions in a data processing system | |
August et al. | Integrated predicated and speculative execution in the IMPACT EPIC architecture | |
US5778219A (en) | Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations | |
KR101511837B1 (ko) | 벡터 분할 루프들의 성능 향상 | |
US20020087955A1 (en) | System and Method for fusing instructions | |
Schlansker et al. | Achieving high levels of instruction-level parallelism with reduced hardware complexity | |
Lahiri et al. | Experience with term level modeling and verification of the M* CORE/sup TM/microprocessor core | |
August et al. | The program decision logic approach to predicated execution | |
Whitham et al. | Using trace scratchpads to reduce execution times in predictable real-time architectures | |
Pozzi | Compilation techniques for exploiting instruction level parallelism, a survey | |
Kumar et al. | A variable vector length SIMD architecture for HW/SW co-designed processors | |
Andorno | Design of the frontend for LEN5, a RISC-V Out-of-Order processor | |
JPH06290057A (ja) | ループ最適化方法 | |
Cowley et al. | RISC-V Dataflow Extension | |
Nejedlo | IBISTTM (Interconnect Built-in Self-Test) Architecture and Methodology for PCI Express: Intel? s Next-Generation Test and Validation Methodology for Performance IO | |
Bratt et al. | Predicate-based transformations to eliminate control and data-irrelevant cache misses | |
Moore | Poor Man’s Trace Cache: A Variable Delay Slot Architecture | |
Connors et al. | An architecture framework for introducing predicated execution into embedded microprocessors | |
Treibig | Efficiency improvements of iterative numerical algorithms on modern architectures | |
Cowley | Extending the Capabilities of Von Neumann with a Dataflow Sub-ISA | |
Kise et al. | A Super Instruction-Flow Architecture for High Performance and Low Power Processors | |
Mathew | 1.2 Very Large Instruction Word Architectures | |
Gaudiot et al. | Techniques to improve performance beyond pipelining: superpipelining, superscalar, and VLIW |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050412 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050712 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20050712 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050913 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20051208 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20051213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060313 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060425 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061003 |