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
Application number
JP2002030860A
Other languages
English (en)
Inventor
Joseph C H Park
シー エイチ パーク ジョセフ
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2002312181A publication Critical patent/JP2002312181A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • G06F8/4451Avoiding 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

(57)【要約】 【課題】 拡張可能なルールベースのプレディケート・
コードの最適化技術を含む装置及び方法を提供する。 【解決手段】 抽象的内部表現のif-変換とif-変換の機
械表現への変換とを含む。変換されたif-変換からプレ
ディケートを除去することを含んでもよい。プレディケ
ートの除去は翻訳によるプレディケート命令の削除、投
機で安全な命令の保護プレディケートを削除すること、
安全でない命令の保護プレディケートを補償により削除
すること、逆if-変換で適切でない命令の保護プレディ
ケートを削除することを含んでもよい。この技術は、機
械表現の最適化を含んでもよい。

Description

【発明の詳細な説明】
【0001】
【従来の技術】コンピュータ・プロセッサは、算術回路
(arithmetic)、論理回路(logic)、そして、コンピ
ュータプログラムの命令を解釈し、実行する制御回路
(control circuity)とを含んでなる。図1は、典型的
なコンピュータシステムの一例を示し、マイクロプロセ
ッサ22は、他のものとともに、CPU24と、メモリ
コントローラ26と、オンチップのキャッシュメモリ3
0とを備える。このマイクロプロセッサ22は、外部の
キャッシュメモリ32とメインメモリ34とに接続さ
れ、これら両メモリは、データや、マイクロプロセッサ
22により実行されるプログラム命令を格納する。内部
的には、プログラム命令の実行は、CPU24によって
遂行される。CPU24が命令の実行のために必要とす
るデータは、メモリコントローラ26によって取り込ま
れ(フェッチされ)、CPU24の内部レジスタ28に
ロードされる。メモリデータを要求するCPU24から
のコマンドに対しては、比較的高速なオンチップ・キャ
ッシュメモリ30が検索される。データが見つからない
と、次に外部キャッシュメモリ32が、そして比較的低
速なメインメモリ34がこの順に、メモリコントローラ
26によって検索される。キャッシュメモリ内でデータ
が見いだされることを「ヒット」という。また、キャッ
シュメモリ内にデータがないことを「ミス」という。
【0002】CPUがデータを要求してから、データが
取り込まれ、CPUにとって利用可能な状態になるまで
の時間をシステムの「レイテンシ」と呼ぶ。要求された
データがキャッシュメモリ内に見いだされれば、つまり
データヒットとなったならば、要求されたデータは、キ
ャッシュの速度でアクセス可能となるので、システムの
レイテンシは低減される。もし、逆に、データがキャッ
シュになければ、つまり、データミスが発生すると、デ
ータは、外部キャッシュや、メインメモリから取り込ま
れなければならないので、レイテンシが増大する。
【0003】プロセッサのパフォーマンスの向上を求め
て、設計者(デザイナ)は、2つの主な目標を探求す
る。すなわち、命令実行速度の向上と、複数の命令のパ
ラレルな実行とである。命令実行速度の向上は、いくつ
かの方法の組み合わせにより追及することができる。例
えば、半導体プロセスの根本的な改善は、信号伝搬の遅
延を改善させる。より多くのステージを含んだ、より深
い(deeper)パイプラインを用いたパイプライニング実
行(スーパーパイプライニング)を採用することもでき
る。複数の命令実行は、パイプラインの多重化(スーパ
ースカラ・デザイン)により解決し得る。命令の並べ替
え(reorder、命令スケジューリング)や、その他のコ
ンパイラ変換(compiler transformation)は、さらに
多くの命令のパラレル実行を可能にする。つまり、命令
レベルの並列度(ILP)を高めるような実装が可能であ
る。
【0004】パイプライニングでは、命令の実行は、ス
テージと呼ばれる複数のステップに分けて行われる。命
令は、各ステージで順次処理され、ある命令についての
あるステージの実行は、次の命令についての一つ前のス
テージの実行と並行して行われる。多くのステージで処
理が一斉に行われるので、実行速度(スループット)が
向上する。
【0005】一つのステージに要する時間は、サイクル
時間、すなわちその逆数であるプロセッサのクロックレ
ートによって決められる。パイプラインが一切支障(ス
トール)なく維持されたとすると、命令は、1サイクル
のレートで処理完了される。さらに、スーパースカラ・
パイプライン・プロセッサでは、最大で発行幅(issue
width、スカラ度とも呼ばれる)の数の複数の命令が1
サイクルで実行完了する。従って、複数の発行とパイプ
ラインとのファクターによって、ステージの数と発行幅
との積の分、最大パフォーマンス(peak performance)
は増大する。このような命令の最大数はこのファクター
に近くなるが、これは並行して実行される数に相当す
る。この複数の命令の並行した実行(「インフライト
(in flight)」ともいうべき)は、速度の向上につな
がる。
【0006】メモリから命令を取り出す過程を「命令フ
ェッチ」と呼ぶ。プロセッサのサイクル時間に加えて、
命令がフェッチされ、デコードされるレートも、プロセ
ッサのパフォーマンスに重大な影響を与える。フェッチ
パイプライン(フロントエンド)と、実行パイプライン
(バックエンド)との間に命令バッファが配置され、一
方のエンドでのストールが他方のエンドでのストールを
引き起こすことがないようになっている。両パイプライ
ンは、複数のステージから構成され、高いクロックレー
トを達成している。
【0007】命令は、フェッチパイプラインによって並
行して実行され、命令バッファにバッファされる。この
とき、実行パイプラインは、命令バッファから命令を取
り出して処理している。パフォーマンスが最大になるの
は、バッファへの命令の入力レート(フェッチレート)
と、命令の出力レート(実行レート)とが一致したとき
である。
【0008】最大のパフォーマンスは、現実には、パイ
プラインストールが発生するために、維持できるもので
はない。3つの主要なストールの原因は、プログラムフ
ローと、ハードウエア資源の競合と、データ依存性と、
である。
【0009】プログラムフローの変化(Changes in pro
gram flow)は、分岐命令によって起きる。すなわち、
分岐命令は、方向(direction)を変化(分岐するか否
か)させ、分岐する場合の目的地(分岐の対象)を変化
させる。分岐を処理すべき命令フェッチは、フロントエ
ンド、すなわちフェッチパイプラインで発生するのに対
して、解析(resolution)、すなわち分岐命令の処理結
果は、後続の実行パイプラインで明らかになる。そのた
め、命令フェッチは、分岐予測法を用いて、分岐の結果
を後の解析を待たずして予測しておくべきとなる。
【0010】予測が後続の解析と一致すれば、命令フェ
ッチは支障なく続けられる。予測が誤りであったときに
は、誤ってフェッチされたインフライトの命令のすべて
を取り除く(フラッシュ)するためにフェッチを一時停
止し、新たに正しい一連の命令フェッチを開始しなけれ
ばならない。この予測ミスからの復帰にかかる余計なサ
イクルは、予測ミス・ペナルティと呼ばれる。(クロッ
クレートを増大させるために)パイプラインの深さが増
大するにつれ、この分岐予測ミス・ペナルティは比例的
に増大し、大きなパフォーマンス低下を引き起こす。
【0011】このパフォーマンスに与える主要な効果の
ため、分岐予測技術は、さまざまな手法に亘って広く何
年も研究されている。このうち、ダイナミック分岐予測
は、ランタイムでの分岐の状態にのみ依存するものであ
る。スタティック及びダイナミック分岐予測を組み合わ
せた技術は、コンパイラ変換(スタティック)、すなわ
ち分岐の選択的削除、コードの再構成によるパフォーマ
ンスの向上を含むものである。このスタティック技術
は、また、分岐するか否かの予測に関するものなど、予
測ヒントビットを用いた分岐命令の修正を用いることも
ある。
【0012】ダイナミック分岐予測技術の主な例の一つ
は、いわゆるGSHARE予測法である。この技術は、よく見
られる分岐の性質を利用する。すなわち、分岐は、その
(ランタイムでの)過去の状態と、直前の分岐の状態と
に相関するという性質である。つまり、全体的な履歴
(global history、つまり所定数の隣接する分岐の状
態)が、特定の数の低位(low-order)のアドレスビッ
トの分岐と関連づけ(combine)られ、分岐予測テーブ
ルの2ビットのエントリのインデックスを生成する。こ
の2ビットのエントリは、4つの場合(ステート)を区
別する。すなわち分岐するか否か、そしてそれぞれが弱
い(weak)か及び強い(strong)かの別である。現在の
場合に応じて、分岐を行うか否かが予測される。全体的
な履歴とエントリとがその結果に応じて更新される。二
度続けて予測ミスが発生すると、ステートが「分岐す
る」から「分岐しない」へ、またはその逆に変化する。
この方法は、ループ分岐の予測率を向上させる。このよ
うなダイナミック法は、入力データの特性変化による分
岐の状態変化に適応できる利点を有している。
【0013】高パフォーマンスプロセッサは、より広い
発行幅を備える。実行レートの向上に合わせるため、フ
ェッチレート(フェッチ帯域幅)も増大させなければな
らない。このため、1サイクルあたり1より多い数の分
岐予測を行わなければならないこととなる。この要求に
応えるべく、トレースキャッシュ(trace cache)技術
が開発されている。
【0014】トレースは、複数の分岐命令をまたいだ、
実行経路に相当する命令の列(sequence)である。従っ
てトレースは、そこに含まれる開始点(beginning poin
t)と連続した数の分岐結果とによって特徴づけられ
る。トレースキャッシュを備えたプロセッサでは、従来
の命令キャッシュは、トレースを格納するトレースキャ
ッシュに置き換えられる。このため、予測の単位は、1
つの分岐に相当する基本ブロック(basic block)単位
ではなく、複数の分岐命令を含んだトレース全体の単位
となる。これにより、フェッチ帯域幅は、各分岐につい
てではなくトレースを対象とすることで飛躍的に増大す
る。
【0015】また、トレースキャッシュ自体による付加
的な利点もある。それは、分岐命令の判断効果(分岐す
るか否かによるペナルティ)が減少することである。な
ぜならば、トレース内では広く分断された基本ブロック
が連続的なものとして表現されるからである。さらに、
コンプレックス命令セット構造(Complex instruction
set computer; CISC)を扱う場合、CISC命令を内的なマ
イクロ処理命令に変換するのにかかるオーバーヘッド
が、変換後のコードをトレースキャッシュすることで低
減する。このため、トレースが見つけられれば再度変換
する必要がなくなる。
【0016】(既に述べた)プログラムフローの変化に
加えて、資源競合とデータ依存性もパイプラインストー
ルの原因である。資源競合は、プロセッサにおいては、
固定された数のパイプラインによって、パイプラインタ
イプの特定の組み合わせが構成されることによって発生
する。例えば、プロセッサは、2つの整数、2つの浮動
小数点、1つのメモリ、1つの分岐というタイプの組み
合わせからなる6つのパイプラインで構成されることが
あり、これに対して一致したタイプについての4つの独
立した命令がグループ化されて1サイクルの間に実行要
求(ディスパッチ)されることがある。
【0017】インオーダ(in-order)プロセッサでは、
命令は、プログラムの順にグループ化され、このため、
コンパイラによって命令の順序が決定される。命令と、
利用可能なパイプラインとの間で、資源要求のパターン
が異なることで、グループ化とパイプラインの空きサイ
クル(idle cycle)との間に破綻が生じる。さらに、要
求されたオペランドデータが準備できるまで実行を進め
られないという命令があるため、この命令(消費側)が
先行する命令(生産側)に依存すると、生産側の命令の
レイテンシに依存したストールが起きる。例えば、生産
側の命令がメモリ読み出し操作(ロード)であるとき、
生産側と消費側とのペアの間で発生するストールのサイ
クルは、種々のキャッシュミス・ペナルティを含んで増
大することがある。
【0018】命令スケジューリングを実行するコンパイ
ラは、命令を並べ替えて、資源競合による空き発行スロ
ット(idle issue slot)を最小にし、生産側と消費側
の命令ペアの間を、他の独立した命令で埋めることによ
り、その間のレイテンシを隠す。このようなコンパイラ
(スタティック)技術は、プロセッサのモデルと、コン
パイル時に仮定されるレイテンシとに依存している。
【0019】アウトオブオーダ(out-of-order)プロセ
ッサでは、プロセッサは、プログラムの順序によること
なく独立した命令を発行することで、ダイナミックに命
令を並べ替える。例えば、上述したロードして使う(lo
ad-use)ストールでは、ロード命令がプログラム順序よ
りも早い段階で発行され、スタティックなスケジューリ
ングと同様の効果を達成する。プログラムの正確性を保
持し、適切な例外処理を行い、予測ミスによる投機的な
実行からの復帰を行うために、すべての命令が、プログ
ラムと同じ順序で完了(retire)しなければならない。
この並べ替えは、インオーダの場合に比べたときの、ア
ウトオブオーダプロセッサのハードウエアの複雑性の向
上を必要とする。
【0020】ダイナミック技術は、再コンパイルをせず
に、マシンモデルやレイテンシの変更に適応できるとい
う利点がある。古いモデルのバイナリを実行する場合に
も速度の向上を図ることができる。しかしながら、命令
が発行されるウインドウ(命令バッファ)のサイズと、
処理時間とがその効果を制限する。コンパイル技術は、
かかるサイズや処理時間といった制限がなく、再コンパ
イルによってインオーダプロセッサでもアウトオブオー
ダプロセッサと同様の高パフォーマンスを受けることが
できる。
【0021】最近、命令レベルの並列性を、従来のアプ
ローチで達成可能なところを越えて向上するため、より
積極的な技術、つまり、予測された実行(プレディケー
ション(predication)とも呼ばれる)及びスタティッ
ク投機技術が研究されはじめている。
【0022】プレディケーションは、条件的実行の形態
をとる。ここでは、命令は、プレディケートによって保
護される。プレディケートは、特別な1ビットのレジス
タであり、真(1)又は偽(0)に設定され、命令のプ
レディケートの設定に使われる。保護プレディケートが
真の値であるときには、実行の間、命令は通常通り扱わ
れる。保護プレディケートが偽の値にあると、命令は、
あたかも条件的にスキップされたかのように、意味的な
効果を有しない(つまり、構造的な状態を変化させな
い)。
【0023】プレディケーションは、より大きい基本ブ
ロックの分岐除去を可能にし、命令スケジューリングを
効果的にする。さらに、分岐ミス・ペナルティや分岐す
るか否かによるペナルティが自然に避けられる。
【0024】予測を用いて分岐命令の除去を行う処理
は、「if-変換(if-conversion)」として知られてい
る。この処理は、分岐命令を含むコードを、分岐を含ま
ないプレディケート(predicate)・コードに変換す
る。プレディケートを設定する命令が導入され、それが
含まれているプレディケート・コード命令では、適切に
設定されたプレディケートによって保護される。理想的
なif-変換技術は、利用するプレディケートの数と、導
入するプレディケートを設定する命令の数とを最小にす
る。
【0025】形式的には、if-変換は、分岐によって起
こされる制御依存性(control dependence)をプレディ
ケートを通じてデータ依存性に変換している。制御依存
性が無くなるので、その結果は、その新たなフォームで
の純粋なデータフローに近くなる。この新たなフォーム
は、種々の命令スケジューリング技術の適用を容易にし
て、パフォーマンスの向上に資する。
【0026】依存性は、一般には、コードモーション
(code motion)を阻害して、命令スケジューリングに
制限を加える。投機的実行(単に、投機ともいう)は、
所定の依存性を侵すことによってかかる制限を克服す
る。
【0027】投機には二種類のものがある。すなわち、
制御的なもの(control kind)と、データ的なもの(da
ta kind)とである。
【0028】分岐予測は、ダイナミックな形態の制御的
投機(コントロール・スペキュレーション)である。分
岐の結果を予測して、予測が正しいとして投機的に命令
を実行する。先に述べたように、この技術は予測が正し
くなかったと判明したときには分岐ミス・ペナルティを
被る。
【0029】他方、スタティックな制御的投機では、コ
ンパイラが「保護」分岐上に、命令を移動(move)す
る。この形式では、命令の投機的実行により生成された
結果が究極的に利用されるような命令が投機的に実行さ
れる。もし、結果が利用されないならば、「利用されな
い」命令の実行がパフォーマンスのペナルティを招来す
る。
【0030】スタティックなデータ的投機では、メモリ
からの読み出し命令(load)は、競合するか否かによら
ず、過去のメモリへの書き込み命令(store)と交換(c
ommute)される。コンパイルの時に、すべての読み出し
-書き込みのペアがあいまいさを取り除かれ、ペアが独
立であると示されるものではない。安全のため、コンパ
イラはペアが依存性を有すると仮定する保守的な判断を
しなければならない。スタティックなデータ的投機は、
このようなデータ依存性を楽観的に取り除いて克服す
る。これにより、読み出し命令が過去の書き込み命令を
自由に移動できるようになる。
【0031】投機的な読み出し命令は、通常の読み出し
命令と区別され、正しくない投機を検出するために、特
別なアクションが行われなければならない。復帰(reco
very)は、読み出し命令の再発行を含んで、干渉すると
して検出された書き込み命令操作の効果を考慮する。こ
のような修正動作は、パフォーマンス・ペナルティを被
る。
【0032】投機の目的は、ダイナミックにしろスタテ
ィックにしろ、また、制御的であれデータ的であれ、投
機に内在するオフセット・ペナルティ(offsetting pen
alty)を越えて並列性を向上し、パフォーマンスの全体
的利益を獲得することにある。
【0033】
【課題を解決するための手段】ある側面では、プレディ
ケート命令の最適化のための拡張可能なルール・ベース
の技法は、抽象的な内部表現のif-変換と、if-変換の機
械命令(machine representation)へのマッピングとを
含む。一つまたはそれ以上の実施形態との関係において
は、この技法がさらにマップされたif-変換からプレデ
ィケートを取り除くことを含む。プレディケートの除去
は、インタープリテーション(interpretation)により
命令を定義することでプレディケートを取り除くことを
含んでもよい。また、プレディケートの除去は、投機に
より安全な命令の保護プレディケートを除去することを
含でもよい。さらにプレディケートの除去は、補償(co
mpensation)により安全でない(unsafe)命令の保護プ
レディケートを除去することを含んでもよい。さらに、
プレディケートの除去は、if-変換の逆(reverse)によ
って、適切でない(unsuitable)命令の保護プレディケ
ートを除去することを含んでもよい。この技術は、さら
に機械命令の最適化を含む。
【0034】ある側面では、プレディケート命令の最適
化のための拡張可能なルール・ベースのシステムは、命
令を実行するプロセッサと、命令とを含む。命令は、プ
レディケートを定義するもので、分岐命令をテストし、
そのテストの結果に基づいて、分岐命令に、定義された
プレディケートを設定する。
【0035】ある側面では、プレディケート命令の最適
化のための拡張可能なルール・ベースの方法はプレディ
ケートを定義し、分岐命令をテストし、そのテストの結
果に基づいて分岐命令に対して定義されたプレディケー
トを設定することを含む。
【0036】ある側面では、プレディケート命令の最適
化のための拡張可能なルール・ベースの装置は、抽象的
な内部表現をif-変換する手段と、if-変換を機械命令へ
マッピングする手段とを含む。一つまたはそれ以上の実
施形態との関係においては、この装置は、マップされた
if-変換からプレディケートを取り除く手段を含む。プ
レディケートの除去においては、インタープリテーショ
ンにより命令を定義することでプレディケートを取り除
く手段を含んでもよい。また、プレディケートの除去に
おいては、投機により安全な命令の保護プレディケート
を除去する手段を含んでもよい。さらに、プレディケー
トの除去においては、補償により安全でない命令の保護
プレディケートを除去する手段を含んでもよい。さら
に、プレディケートの除去においては、if-変換の逆(r
everse)によって、適切でない(unsuitable)命令の保
護プレディケートを除去する手段を含んでもよい。この
装置はさらに、機械命令の最適化を行う手段を含んでも
よい。
【0037】ある側面では、プレディケート命令の最適
化のための拡張可能なルール・ベースの技法は、抽象的
な内部表現のif-変換と、if-変換の機械命令(machine
representation)へのマッピングと、マップされたif-
変換からプレディケートを除去することと、機械命令の
最適化とを含む。プレディケートの除去は、インタープ
リテーション(interpretation)により命令を定義する
ことでプレディケートを取り除くことと、投機により安
全な命令の保護プレディケートを除去することと、補償
(compensation)により安全でない(unsafe)命令の保
護プレディケートを除去することと、if-変換の逆(rev
erse)によって、適切でない(unsuitable)命令の保護
プレディケートを除去することと、を含んでもよい。
【0038】ある側面では、明示的な(explicit)プレ
ディケート・ハードウエアを用いずにプレディケートに
よる実行を支援する技法が、分岐命令のテストの実装を
含む。一つまたはそれ以上の実施形態との関係において
は、分岐命令のテストは、条件コードに基づいて、分岐
条件を、一般的なレジスタのブーリアン(Boolean)デ
ータへと変換し、完全な論理命令セットが最適なコード
の生成に用いられるようにする。
【0039】ある側面では、明示的なプレディケート・
ハードウエアを用いずにプレディケートによる実行を支
援するシステムが、命令を実行するプロセッサと、条件
コードに基づいて分岐条件が一般的なレジスタのブーリ
アン(Boolean)データへと変換されて完全な論理命令
セットが最適なコードの生成に用いられるような命令
と、分岐で閉じられた(enclosed)投機に適さない命令
セットの保護とを含む。
【0040】ある側面では、明示的なプレディケート・
ハードウエアを用いずにプレディケートによる実行を支
援する方法が、分岐命令のテストの実装を含む。一つま
たはそれ以上の実施形態との関係において、分岐命令の
テストは、条件コードに基づき分岐条件を一般的なレジ
スタのブーリアンデータへと変換し、完全な論理命令セ
ットが最適なコード生成に用いられるようにすることを
含んでもよい。
【0041】ある側面では、明示的なプレディケート・
ハードウエアを用いずにプレディケートによる実行を支
援する装置が、分岐命令のテストを実現する手段と、実
現された分岐命令のテストを用いてプレディケートを除
去する手段と、を含む。他の側面及びこの発明の利点
は、次の説明と特許請求の範囲から明らかである。
【0042】
【発明の実施の形態】プレディケート実行(PE)は、
ハードウエア及びソフトウエア技術と関連しており、命
令レベルの並列性を高める、新しいジェネレーションの
アーキテクチャの主要な特徴の一つである。PEをサポ
ートする保護(guarded)アーキテクチャに要求される
ものには、プレディケートレジスタと、プレディケート
定義処理と、保護プレディケートのための命令語の付加
的(additional)フィールドとが含まれるが、現存する
命令セットアーキテクチャ(Instruction Set Architec
ture;ISA)に深刻な影響を与える。本発明の一つまたは
それ以上の実施形態において、新規なコンパイル技術
と、代替方法として、それに関連したハードウエアサポ
ートとを含み、現存するアーキテクチャへの影響を最小
限に抑えながら、明示的な保護アーキテクチャのパフォ
ーマンスを獲得し、又はそれを越えることを可能とす
る。ここで実施態様の説明として述べる例示的なアーキ
テクチャは、カリフォルニア州パロアルトのサン・マイ
クロシステムズ社により開発されたSPARC(商標)アー
キテクチャである。
【0043】図2は、本発明の一実施形態に係るプロセ
ッサの構成ブロック図を示したものである。プロセッサ
122は、他のものとともに、CPU124と、メモリ
コントローラ126と、オン・チップ・キャッシュメモ
リ130とを備える。マイクロプロセッサ122は、外
部キャッシュメモリ132と、メインメモリ134とに
接続され、これらはいずれも、マイクロプロセッサ12
2により実行されるデータやプログラム命令を保持して
いる。内部的には、プログラム命令の実行は、CPU1
24により実行される。CPU124による命令実行の
際に必要となるデータは、メモリコントローラ126に
より取得され、CPU124の内部レジスタ128に読
み込まれる。
【0044】プロセッサ122は、所定の条件的分岐命
令をテストするための新しい命令を解し、この命令によ
り分岐が行われるであろうか否かを判断する。もし、テ
ストされた条件的分岐が真(true、すなわち分岐する)
であれば、目標(destination)レジスタとして特定さ
れた汎用レジスタが「1」(true)にセットされる。そ
うでないときは、目標レジスタは「0」(false)にセ
ットされる。
【0045】これにより、特定の条件コードレジスタ内
の、整数だけでなく浮動小数点も含む、条件(%fccn, %
icc, 及び%xcc)を、標準化(normalize)されたブーリ
アンデータ(1または0)に変換して目標レジスタに格
納する。目標レジスタは、従ってプレディケートとして
作用する。これは、条件コードを汎用レジスタで置き換
えることによる付加的な利点を有し、それにより、命令
レベルの並列度を低減させる条件コードの利用を削減で
きる。汎用レジスタ内の、このブーリアンデータは、真
(true)又は偽(false)に標準化されているので、通
常の論理処理を用いて、他のプレディケートと組み合わ
せてブーリアン操作を行うことができる。従って、プレ
ディケートのために特殊な処理を行う必要がなくなる。
【0046】この新規な命令は、例えば、浮動小数点条
件コードの分岐テスト(tfbx)や、整数条件コードの分
岐テスト(tbx)であってもよい。これらの命令は、後
に詳しく説明するが、プレディケート実行の明示的サポ
ートなしに、従来のアーキテクチャにおけるif-変換の
効果を増大させる。次の説明での定義された命令を含め
て、表記は、SPARC(商標)アーキテクチャ・マニュア
ル(バージョン9)のコンベンションに一致させたもの
を用いている。例示的な命令である浮動小数点条件コー
ドの分岐テスト(tfbx)と、整数条件コードの分岐テス
ト(tbx)とは、次の特性を有している:
【0047】 (1)浮動小数点条件コードの分岐テスト Opcode tfb<x> %fccn, rd ここで、条件xは、次のうちのいずれか u 順番でない(Unordered) g より大きい(Greater) ug 順番でないか、より大きい(Unordered or Greater) l より小さい(Less) ul 順番でないか、より小さい(Unordered or Less) lg より小さいか、より大きい(Less or Greater) ne(nz) 等しくない(ゼロでない)(Not Equal(Not Zero)) e(z) 等しい(ゼロである)(Equal(Zero)) ue 順番でないか、等しい(Unordered or Equal) ge より大きいか、等しい(Greater or Equal) uge 順番でないか、より大きいか、又は等しい(Unordered or Greater or Equal) le より少ないか、等しい(Less or Equal) ule 順番でないか、より小さいか、又は等しい(Unordered or Less or Eq ual) o 順番である(Ordered)
【0048】条件コード(%fccn)は、特定の条件(x)
でテストされる。もし、条件が真(true)であれば、目
標レジスタ(rd)として定められた汎用レジスタが1に
セットされ、もし条件が偽(false)であれば、目標レ
ジスタは0にセットされる。常に(always(a))や、あ
りえない(never(n))といった条件は必要でない。なぜ
ならば、関連する制御エッジ(control edge)は、制御
依存エッジにはなり得ないからである。
【0049】 (2)整数条件コードの分岐テスト Opcode tb<x> i#or#x#cc,rd ここで、条件xは、次のうちのいずれか ne(nz) 等しくない(ゼロでない)(Not Equal(Not Zero)) e(z) 等しい(ゼロである)(Equal(Zero)) g より大きい(Greater) le より少ないか、等しい(Less or Equal) ge より大きいか、等しい(Greater or Equal) l より小さい(Less) gu より大きいか、符号なしである(Greater or Unsigned) leu より小さいか、等しいか、符号なしである(Less or Equal or Unsi gned) cc(geu) キャリクリア(Carry Clear)(より大きいか、等しいか、符号なし である) cs(lu) キャリセット(Carry Set)(より小さいか、符号なしである) pos 正である(Positive) neg 負である(Negative) vc オーバーフロークリア(Overflow Clear) vs オーバーフローセット(Overflow Set)
【0050】条件コード(%iccまたは%xcc)は、特定の
条件(x)でテストされる。上で述べたように、条件が
真(true)ならば、目標レジスタ(rd)として定められ
た汎用レジスタが1にセットされる。逆に、もし条件が
偽(false)ならば、目標レジスタは0にセットされ
る。常に(always(a))や、ありえない(never(n))と
いった条件は必要でない。なぜならば、関連する制御エ
ッジ(control edge)は、制御依存エッジにはなり得な
いからである。
【0051】図3は、本実施形態と関連する処理の概要
を示したものである。各ステップは、図3を参照しなが
ら、次により詳しく説明される。まず、この処理は、抽
象的な内部表現(Abstract internal representation;
AIR)(step 50)についての保護を完全にサポートした仮
想的な機械表現へのif-変換から開始される。次に、AIR
はif-変換により機械表現(Machine Representation;MI
R)へと変換され(step52)、特に保護プレディケート
が削除される。AIRからMIRへの変換は、4つの部分を含
んでなる。
【0052】第1に、命令を定義するプレディケート
は、インタープリテーションにより除去される(step5
4)。そして、安全な命令の保護プレディケートが投機
により削除され(step56)、安全でない命令の保護プレ
ディケートが補償により削除される(step58)。最後
に、適切でない命令の保護プレディケートがif-変換の
逆により削除される(step60)。どの命令が安全であ
り、安全でなく、また適切でないかは、後に詳しく説明
される。
【0053】プレディケートの削除が行われると、その
結果としてのMIRが、特に定められた変換を適用するこ
とで改善(improve)される(step62)。一つまたはそ
れ以上の実施形態において、ここで説明する処理は、明
示的なプレディケートハードウエアなしにプレディケー
ト実行をスタティックな投機へと変換する。前に述べた
ように、プレディケート実行(PE)は、命令レベルの
並列性を向上させるための、近年のマイクロプロセッサ
のアーキテクチャの主たる特徴である。このように、保
護されたPEの(プレディケート)アーキテクチャは、
ハードウエアとソフトウエアとを組み合わせて例えばif
-変換のように分岐を削除する技術として多くの者によ
り研究されている。2,3の方法で、制御依存性つきの
ループのソフトウエアパイプラインから分岐命令のプレ
ディケート・ミスの選択的削除まで、所定のパフォーマ
ンスが得られている。
【0054】しかしながら、PEをサポートする保護ア
ーキテクチャに要求されるものは、既存の命令セットア
ーキテクチャに深刻な影響を与える。特に、完全に保護
されたアーキテクチャは、新たなプレディケート・レジ
スタと、命令を定義(セット)するプレディケートと、
保護プレディケートをアドレッシングするための命令語
の付加的フィールドとを含まなければならない。
【0055】図4から10は、本発明の一以上の実施形
態における、PEを利用したパフォーマンスを維持しな
がら、従来のRISCアーキテクチャにおけるISA変化を最
小とする技術を示したものである。この技術は、既存の
アーキテクチャのPEを利用する。これは保護アーキテ
クチャのPEをスタティックな投機(Static Specurati
on;SS)に、保護の完全なサポートなしに変換すること
で達成される。
【0056】次に説明する例示的な実施形態では、SPAR
C(商標)プロセッサが用いられる。いくつかの表記の
変更をするなどにより、当業者は、この技術が他のプロ
セッサにも適用できることを理解できる。SPARC(商
標)プロセッサに適用するときには、この技術は、RK f
or SPARC(商標)(RK/Sparc)として参照され、既存の
SPARC(商標)-V9上でプレディケート実行によるパフ
ォーマンスの優位性を効果的に取りこめる、RK for SPA
RC(商標)(RK/Sparc)として参照される。RK/Sparcの
フレームワーク内では、SPARC(商標)-V9上で強化さ
れる部分は、既存の命令セットアーキテクチャにささや
かな影響しか及ぼさない。これらの強化によって、RK/S
parcは、完全な保護アーキテクチャのものと同等のパフ
ォーマンスを達成する。
【0057】この技術は一般に、プレディケートアーキ
テクチャにおけるif-変換のための最適化アルゴリズム
が見いだされている、PEの成果の上に成り立ってい
る。本発明の実施形態では、明示的なプレディケートハ
ードウエアの代わりに、汎用レジスタを黙示的(implic
it)プレディケートとして用いるスタティックな投機を
行うという方法で、PEを、保護されていないアーキテ
クチャに拡張する。
【0058】基本的なことは、if-変換が単に(分岐を
通じた)制御依存性を(プレディケートを通じた)デー
タ依存性に変換するだけであることと、そのような依存
性が侵された(violate)ときに、より高いパフォーマ
ンスが達成できることである。この依存性の侵害は、制
御的なスタティック投機につながる。RK/Sparc技術は、
2つの表記(representation)と、これらの表記につい
ての変換とを含んだ3つのステップによって、これを達
成する。2つの表記は、いずれも特性(character)と
してはローレベルのもので、抽象的内部表現(AIR)
と、物理的なSPARC(商標)-V9の機械表現(MIR)と
である。AIRは、完全なプレディケートのサポートを含
み、仮想的なSPARC(商標)-V9アーキテクチャを表し
ており、MIRは、既存のSPARC(商標)-V9の保護され
ていないアーキテクチャを表している。
【0059】所定の領域Rについて、例えば、最も内側
の(最も深い、innermostの)ループの本体について、R
K/Sparcは、当該Rを次の3のステップで変換する。 ステップ1.AIRについてif-変換する ステップ2.AIRからMIRへとマッピングする ステップ3.MIRを最適化して改善したMIR′を得る。
【0060】これらの3段階の変換ステップは、図3の
ステップ50,52,及び62に対応する。変換が行わ
れたAIR、MIR、及びMIR′の原文通り(textual)の表現
を用い、各ステップの効果に関し、具体的な例を次に示
す。原文通りの表現には、理解のためにデータフローと
他の情報との注釈を付してある。
【0061】この例では、図4に示すループが用いられ
る。図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)とを備えていると仮
定する。これらの命令は、既に説明したように、分岐条
件を汎用レジスタ内のブーリアン値に変換する。
【0062】所定の制御フロー・グラフGについて、if
-変換の問題点は、2つの部分からなる:(1)Gの各
ノード(基本ブロック)にどのようにしてプレディケー
トを設定するか、そして(2)プレディケートとそれら
により定義される処理が最小となるようなプレディケー
トの定義処理をどのように行う(place)かである。P
Eアルゴリズムは、これら双方の問題点を、制御依存性
(CD)を、R=inverse(K)o CDとなるようなR及び
Kの2つのマップに分解することで解決する。
【0063】各ノードx、R(x)は、そのノードに設
定されるべきプレディケートPを与える。各プレディケ
ート(p)について、Kのセット、K(p)が行われる
べき定義処理を与える。
【0064】ここで述べたものに基づいて決められる、
この解決法は、同じ制御依存性を有したノードの等価な
クラスと、それぞれが特定の等価なクラスと関連する制
御依存性エッジをセット(Kセットと呼ばれる)にグル
ープ化したものとの間のアイソモーフィズム(isomorph
ism)である。この抽象的な観点からは、プレディケー
トは、単に等価なクラスと対応するKセットとの名称
(name)でしかない。
【0065】この例に適用するならば、PEアルゴリズ
ムは次の表1,2に示したRとKの2つのマップをもた
らす。
【0066】
【表1】 表1:プレディケートp=R(B)へのブロックのRマ
ップ
【表2】 表2:Kセット=K(p)のプレディケートのKマップ
【0067】8(Start)と9(End)とのブロックは、
ここに参照して含められるテクニカル・レポート「プレ
ディケート実行について」,J.C.H.パーク、M.
S.シュレンスカー,ヒューレットパッカード・ラボラ
トリ,パロ・アルト,カリフォルニア州,1991に述べら
れているように、制御依存性(CD)を計算するために、
制御フローグラフを論じるべく導入されている。
【0068】従って、例えば、ブロックB4は、プレデ
ィケート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は、&セパレ
ータの後にある。
【0069】Kセット要素-8は、図6のP6=mov(0)のよ
うな処理のリセットに用いられる。ここで、8はスター
ト(start)ブロックを参照する。リセット処理に要求
されるのは、プレディケーションの巧妙な(subtle)面
の一つである。リセットがないと、事前にセットされて
いないプレディケートが利用されることとなって、プレ
ディケート・コードの振る舞いが誤ったものとなってし
まう。複数のブロックを直線的な線形コード(line cod
e)に展開することによるプレディケーションとしての
PEの最終的な結果は、図6に示されたものとなる。
【0070】完全に保護されたSPARC(商標)-V9のバー
ジョンを扱うならば、図6のプレディケートされたコー
ド204が適用される。完全なプレディケートのサポー
トを削除するRK/Sparcの効果は、完全に保護されたコー
ドを参照して評価される。
【0071】図6は、仮想的な保護されたSPARC(商
標)プロセッサ204のためのプレディケートコードか
ら開始され、保護プレディケートを削除するために種々
の変換が施されたものである。この二番目のRK/Sparcの
ステップは、抽象的表現(AIR)のコードを物理的機械
(MIR)、すなわちSPARC(商標)-V9に変換してい
る。この目的のために、命令は、互いに異なる変換が適
用される、4つのクラスに分類される: a.命令定義、分岐テスト、インタープリテーションに
より変換されるべきもの b.投機される安全な命令 c.補償される安全でない命令 d.逆if-変換(RIC)される適切でない命令
【0072】これらの分類が図3のプレディケート削除
ステップ54,56,58,60に対応することに注意
したい。上にリストした命令の4つのクラスへの分類
は、RK/Sparcの発見的取り扱い(driving heuristics)
の一部である。
【0073】ストア命令は、最終的な出力の選択の効果
や、そのコンテクストに依存して、安全でないか、適切
でない命令かのいずれかたり得る。図6に示した例を用
いると、リストされた4つの変換が現れている。
【0074】図6のプレディケートコードAIR204の
13番目の命令205に注目すると、 P5=tfbl(t126,0) & P6 とある。
【0075】保護プレディケートは、保護された命令tf
blを投機的に実行することで除去され、movrnzを用いて
条件的に、適切な結果を与える。従って、上記の命令
は、保護されていない一連の命令、 Q3=tfbl(t126,00 P5=movrnz(P6,Q3) に置き換えられる。そして、分岐テストtfblは、 Q3=mov(1) Q3=movl(t126,0) のペアによって翻訳(インタープリテーション)されて
除去される。
【0076】その結果は、MIR(図7)の一連の命令1
7から19である。この方法で保護を除去すると、自然
に投機したことになる。プレディケート定義命令の投機
は、Q3のような新たなワークレジスタを含むことに注意
したい。プレフィックスQは、「一度きりの使用」とい
う特別な特性を備えたブーリアン値であることを示す。
これらの特性は、後に説明する最適化において便利であ
る。
【0077】「分岐する(taken)」(n)と、「分岐し
ない(not-taken)」(-n)のエッジの双方が、Kセッ
トの要素として起きる場合、両者が制御依存エッジにな
り、xorを用いて、逆の値を生成することによりインタ
ープリテーションのオーバヘッドが低減される。ここで
の例は、3つのそのような場合であって、MIR(図7)
のプレディケートを含む3つのxor処理になっているも
のを含む。
【0078】命令の保護プレディケートであって、安全
であると分類されたものは、新しいワークレジスタ(W
プレフィクスがついた)を利用した投機によって除去さ
れ、このワークレジスタは、条件に沿った保護プレディ
ケートとともにmovrnzを用いた条件的コミットが後置さ
れる。
【0079】ある命令、例えばストア(st)のようなも
のは、投機するには安全でない。これは、条件的コミッ
トを用いて、その効果を取り消すことが単純にはできな
いからである。一般的な種類のSPARC(商標)-V9はプ
レディケートされたストア命令を欠いているので、補償
(compensation)コードが用いられる。2つの異なる方
法が考えられる。1つは、古い値をロードして、(movr
nzを用いて)条件的にその値を新しい値に変化させるも
のである。もう一つの方法は、(所定の)害のない(ha
rmless)、又は使われているそのもののいずれかを指す
アドレスを条件的に変更してしまうというものである。
前者のスキームが図7の例では用いられている。ロード
命令がそれ自体投機的であるので、フォールトのない
(non-faulting)種類の、例えばlddaが用いられる。
【0080】投機では、ロード命令は、安全でないもの
と、適切でないものとの双方たり得る。SPARC(商標)-
V9は、フォールトのないロードを有し、これにより、
致命的な例外発生を防止しているが、投機的なものであ
って、必要のないTLBや大変なキャッシュミスを遅延さ
せることのできるようなものは有していない。パフォー
マンス低下と、SPARC(商標)-V9における種々のロー
ド命令の投機的なものを用意することの複雑さと、の技
術的比較考量のために、大規模な実験的データが必要で
ある。
【0081】整数割り算(integer divide)のような命
令は、安全でない。なぜならば、この命令は投機的実行
の間に割り算のチェック(divide check)を引き起こす
可能性があるからである。安全であると判明した場合で
さえ、関係する実行確率が低い場合、この命令は、投機
には適切でない。これは、マルチサイクル・ブロッキン
グのようなディスパッチ制限(dispatching restrictio
n)のためである。このような場合は、逆if-変換によっ
て取り扱われる。この場合、適切でない命令を保護する
役割を果たすため、分岐が再度導入される。
【0082】これらAIR-から-MIRへの変換の最終結果2
06は、図7に示されている。図6のプレディケートさ
れたコードに比べると、命令の数は43%(43/3
0)ほど増大している。このような非効率性は、このア
プローチが採られた場合に固有のものである。変換は個
別的に適用され、他の累積的効果を考えることなく、一
斉に行われる。従って、このようなすべての変換が完了
すると、その結果は、次に説明する最適化によって調整
される。
【0083】ある実施形態では、カバー(cover)をし
て知られた記号的分析に基づく、ルールベースのオート
モーフィック(automorphic)なMIR-から-MIRへの変換
を含む、新しい技術が用いられる。これらの変換は、種
々の方法におけるコードを向上させる:(1)プレディ
ケート・リセット処理の削除のように、命令数を低減す
る;(2)条件的moveを通常の論理処理へ置き換えるこ
とで、ディスパッチ・コストを低減する;(3)条件コ
ードの利用を削減する;などである。ここでのスキーム
における変換は、ダグ(dag)をカバー(cover)するル
ールを書き換えるものとして実装される。このフレーム
ワークは、実験的分析と、段階的向上を容易にする。
【0084】ここでの変換をオートモーフィックにする
ことは、複数の変換の合成をするために、何度も繰り返
して行われる。結局、用意された変換のセットによって
は、これ以上の向上はできないという最終点(fixpoin
t)へ到達してしまう。図7のMIR206にこのスキーム
が適用されると、図8に示す調整されたMIR′208が
得られる。命令数が23%(43/35)減少したこと
に注目されたい。
【0085】コンピューティングにおいて効率(effici
ent)(「ほとんど線形」)方法とともに、カバーする
というものは、この技術分野では知られている。カバー
は、あるコードのテキスト表現の各々に記号的表現を関
連づけて、それぞれが、コードのどの実行でも同じ値を
もつようにする。特に、記号的表現をカバーすること
で、コードテキストのどのポイントでもデータフロー情
報を取得する利便性がある。
【0086】この技術は、次に説明するプレディケート
MIRの向上のための十分な精度のカバーの計算のため
に、部分的評価と組み合わせられ、拡張される。分析の
クオリティは、カバー自体の精度に依存したカバーによ
る。ここでのカバーの精度は、基本的に、値が知られて
いるときの部分評価と、カバー形成における冗長な命令
の検出/削除とに依存する。図7のプレディケートMIR
206の15番目の命令207に注目すると、 P5=movrnz(P7,Q2) ! [15 4 14] n16 とある。
【0087】内部的には、有向グラフ(directed grap
h)であって、各命令(!のLHSにおけるテキスト表記)
が当該グラフのノードに関連するような有向グラフとし
てカバーが形成される。例えば、ノードn16(図9に示
されている)をルートとした部分グラフは、この命令に
関連する記号的表現のカバーを表す。各命令が、このカ
ーバのノードに関連づけられているので、[15 4 14]の
ような命令番号の組をノード名とともに与えることで、
グラフを完全に表現できる。[15 4 14]の組は、命令1
5が、後続のノードであって命令4と14とに関連づけ
られたノードを有していることを意味する。この組に
は、定数や不変なリーフノードは現れてこない。
【0088】命令とカバーノードとの間の対応付けは、
多対一の関係である。これは、同じ値に評価される命令
(テキスト表現)が同じノードに関連づけられるためで
ある。このカバーの基本的な特性が、冗長な命令の検出
と削除に役立つ。
【0089】図9は、深さ2のノードn16のカバーの部
分グラフを示している。各ノードは、テキスト表現、命
令のLHS(P5のような)に関連づけられ、命令(movr
nz)と命令番号15(207)がノード名(n16)とと
もに示されている。
【0090】プレディケートMIRのオーバーヘッドは、
直接的(directly)(P)又は投機を介して間接的
(Q)のいずれかのプレディケートを含む演算により発
生する。コードの向上の技術として開示されたものは、
多くの値の仮想的(imaginary)ブーリアン関数として
のブーリアン値のみを含む特定のカバーに関する新しい
発想を基本としており、従って、プレディケートMIRを
最適化するという問題を、ディジタルデザインについて
の回路の最小問題に置き換えてしまう。
【0091】この問題には、2つの部分がある:(1)
特定のカバーがどのように認識されるべきか、そして
(2)最適化後のものとしてどのようなものが適切か、
である。
【0092】最初の問題を解決するためには、ここでは
シグネチャの表記を導入する。これは、識別の目的で用
いられるカバーの基本的側面を捉えるものである。(深
さ2の)シグネチャは、カバー(深さ2に制限された)
を、深さ優先(depth-first)で横断することにより得
られる文字列である。横断により、各ノードを渡ること
で、文字列、 (operation: definition operands.) が生成される。
【0093】そして、深さが2までの制限において、オ
ペランド(カンマによって区切られた、次のノード)へ
再帰的に渡ることで、完全なシグネチャが得られる。種
々の表記、例えば任意の処理を表す*や、無視されたノ
ードを表す「..」など、が用いられる。例えば、ここで
論じたノードn16との関係においてシグネチャは、 (movrnz:P5(*:P7..),(xor:Q2(*:P6)(1)(0)) となる。
【0094】最適化された等価なものの検出という2つ
目の問題は、カーナーフ・マップ(Karnaugh map)技術
によって解決される。これにより、4変数までのブーリ
アン関数を、最小の数の基本論理処理(マップの基本的
内包(implicand))に縮小する。上記のシグネチャを
有したカバーをもったブーリアン表現は、この方法で代
替パターンに縮小され、 P5=andn(P7,P6) となる。
【0095】この表現は、ノードn16に関するmovrnz命
令を置き換えたものである。これらのペア、シグネチャ
と代替パターンとは、ここでのスキームのルールを構成
する。すべてのルールが適用されると、別のカバー解析
のパスが行われて、累積的にルールが適用される等によ
って出現する不要な命令を検出して削除する。これら
は、そのカバーノードが前方(predecessor)を持たな
かったり、用意された領域に関係しない記号(ある命令
のLHS)を定義しているなどによって識別される。こ
こで述べられたルールは、例えば、xor命令14や、投
機プレディケートQ2の利用の削除に関する。
【0096】いくつかのこの種のルールを組み合わせて
得られる効果は、図8の最適化されたMIR′208に示
される。命令数が、図7の最適化されていないMIR20
6に比べて、23%(43/35)減少していることに
注意されたい。図6の保護されたAIR204に比べる
と、非効率性は、最適化されていないMIR206の43
%(43/30)から、17%(35/30)に最適化
されたMIR′208では命令数の点で小さくなってい
る。
【0097】残った非効率性は、浮動小数点条件コード
を整数レジスタのブーリアン値に変換したり、安全でな
いストア命令を扱ったりする場合等の構造的に内在する
ものである。このSPARC(商標)-V9命令セットアーキ
テクチャの非効率性を修正することは、分岐テストと、
プレディケート・ストアとともに論じた。命令数を基準
にする代わりに、次に、ソフトウエア・パイプラインに
基づくより正確な比較を利用する。
【0098】図6のプレディケートAIR204の結果
と、図8のRK-変換されたMIR′208と、他のものと、
は、ソフトウエア・パイプラインの最小初期化インター
バル(MII)の計算により比較される。MIIは、モ
ジュロ(Modulo)・スケジューリングにおけるようなソ
フトウエア・パイプラインの最大限(optimal limit)
である。モジュロ・スケジューリングの経験から、多く
のケースでスケジュールがII(ソフトウエア・パイプ
ラインのサイクルにおけるステージ長さ)を達成し、こ
の限界、つまりMIIに近いところまで一致している。
これは、例としてのループが循環(recurrence)を含ま
ず、MIIが単に資源の限界: MII=max(Ni/Si) によって与えられることによる。
【0099】ここで、Siは、資源クラスiの命令をサー
ビスし得る機能的単位の数であり、Niは、同じクラスの
命令の数である。説明を簡単にするために、3つの種類
の資源を区別して扱う。すなわち、整数(A)、浮動小
数点(F)、そしてメモリ(M)である。すべての命令
が完全にパイプライン化され、マルチ・サイクル・ブロ
ッキングやシングル・グループ等のディスパッチ制限が
ないものとする。ここでの例で現れる、すべての命令の
資源の分類は、おのずと明確(self-evident)なもので
あるが、Mクラスの命令に分類される、互いに異なる種
類の条件的moveは除く。
【0100】ここで考える、いくつかのケースでの資源
利用は、表3にまとめられている。計数命令(counting
instructions)では、バックエッジ(backedge)(ル
ープ分岐)とそれに関連するディレイスロットが実行さ
れる。これは、モジュロ・スケジューリングで直接的に
影響しないからである。この2つの場合に加えて、さら
に2つのケースがテーブルには含まれている。AIRと、M
IR′である。
【0101】既に説明したように、古い値の投機的ロー
ド(MIR′のように)に代えて、条件的ストアを補償コ
ードで取り扱う場合、害のないアドレスへとデスティネ
ーション・アドレスを条件的に変えてしまう(アドレス
ジャミングとして知られる)ことができる。この技術
は、各条件的ストアの発生についてのmov命令を用いた
投機的ロードに代替でき、従って、資源利用特性がMか
らAへと変化する。この結果はMIR′′である。MIR+
(図10)では、SPARC(商標)-V9の強化の一部であ
る、分岐テストとプレディケート・ストアとが用いられ
る。
【表3】 表3:種々のケースでのクラスの利用状態
【0102】MIIを演算するには、表4,5にまとめら
れているような、2つの異なるディスパッチモデルが配
慮される。パイプミックス(pipe mix)と発行幅(スカ
ラ度)とのモデルが、(2A 1F 2M)のような表記で示され
る。これは、2つのA処理と、1つのF処理と、2つの
M処理とが互いにグループ化され、1サイクルの間に発
行されることを示している。MIIの演算に加えられる各
タームは、対応する資源の扱いの元に示されている。こ
れらのエントリは、どの資源がクリティカルで、資源利
用がどれだけよく平均化されているかを識別する。
【0103】完全に保護された仮想的SPARC(商標)-V
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との
間のパフォーマンスの差は、現実的には実質的に無視で
きるものとなる。もちろん、適切なコンパイラとシミュ
レータとを用いた大規模な実験が必要である。
【0104】適用しようとする適切な変換を選択するこ
とで、すぐに複雑になってしまうことに注意されたい。
例えば、条件的ストアのための2つの異なるアプローチ
の間の選択については、一方か他方かは、資源の利用態
様と、利用可能な資源とによく依存している。たとえ既
に述べたMIR′のような小さな例でも、MIR′′よりも、
ある場合には優れているが、他の場合はそうでないとい
うことがある。このような問題は、すべての選択が行わ
れる前に、選択の最終的な結果に関する知識が要求され
るという共通した特性を有している。力任せの(brute
force)バックトラッキングによるアプローチを避ける
ためには、大規模な実験に基づく発見的な方法による必
要がある。
【0105】MIIの表に、7.5のような端数のある数が含
まれていることにも注意されたい。このような場合に
は、モジュロ・スケジューリングが行われる前に、ルー
プ本体を展開する(アンロールする)という扱いがされ
る。これによると、多くの場合、端数値が含まれている
よりも効果的に優れた結果に結びつく。これは、アンロ
ールされたループでは、ループ・カウント・コードと他
の命令コードとが繰り返しごとに1度だけ繰り返される
だけとなるからである。
【表4】 (2A 1F 1M)モデルのMII
【表5】 (2A 1F 2M)モデルのMII
【0106】RK技術は、完全に保護されたアーキテクチ
ャにおけるプレディケート実行(PE)を、保護されて
いないアーキテクチャにおけるスタティックな投機(S
S)に変換する。実例を挙げて説明し、分析したとお
り、SSとPEとの間のパフォーマンス差は、現在のSP
ARC(商標)-V9アーキテクチャをいくつかの方法で強
化することで、縮まる。これらの強化には、よく知られ
ている、プレディケートされたストアや、制御投機ロー
ドが含まれる。さらに、新しい命令、すなわち分岐テス
トも好ましい。
【0107】分岐テストとプレディケートされたストア
とにより、「ナローな」モデルである(2A 1F 1M)では、
SSのパフォーマンスは、PEの20%以内になる。こ
の差は、発行幅が「ワイドな」モデルである(2A 1F 2M)
に拡大されると消える。これは、投機のオーバーヘッド
(命令数の増大)が発行スロットの増大に吸収されたた
めに起きる。投機のオーバーヘッドは従って、発行幅
(スカラ度)が増大するにつれて減少するというパフォ
ーマンス上の効果を有する。
【0108】浮動小数点コード(tbfx)の分岐テスト
と、整数コード(tbx)の分岐テストという2つの種類
がある。分岐テスト命令、 tb<x> icc#or#xcc,%rd は、整数条件コード%icc又は%xccを特定の条件<x>の下
でテストし、真(または偽)のときに、デスティネーシ
ョン・レジスタ%rdを1(または0)にセットする。浮
動小数点型のtbf<x>は、同様の動作をする。条件<x>
は、SPARC(商標)アーキテクチャ・マニュアル(バー
ジョン9)に特定されているような分岐命令に関連する
多くのうちの一つである。これらの分岐テスト命令の効
果は、所定の分岐条件を特定のデスティネーション・レ
ジスタ%rdのブーリアン値に変換することである。
【0109】AIRでは、2つのソース・オペランドを用
いた抽象的態様が用いられる。例えば、 P7=tfbe(t114,0) といったものである。
【0110】2つのソース・オペランドの分岐テスト
は、2つ目のソース・オペランドが条件が反転されてい
るか否かを表すものとして使い、1つのソース・オペラ
ンドを伴う、定められた(proposed)命令にマップされ
る。例えば、上の命令tfbe(t114,0)は、条件「等しい」
を「等しくない」に反転することで、 tfbne t114,P7 にマップされる。
【0111】これらの命令は、プレディケートを定義す
る命令として使われる。さらに、プレディケート値は、
汎用レジスタに置かれるので、完全な論理命令セットの
サポートのない、専用のプレディケート・レジスタを用
いる場合とは異なり、論理命令セットの全体が、一般的
な処理として利用可能である。完全な論理命令のサポー
トにより、プレディケート・コードを最適化して、ブー
リアン表現による最適化の処理を可能としている。
【0112】本実施形態の利点は、次のうちの一つ以上
を含む。一又はそれ以上の実施形態では、本発明の態様
として、完全なプレディケート・アーキテクチャのパフ
ォーマンスを得ながら、既存のアーキテクチャのISA変
化を最小にする代替的アプローチが提供される。
【0113】RK/Sparcの方法は、完全な保護アーキテク
チャを伴うプレディケート実行を、完全な保護サポート
なしのスタティックな投機に変換できるようにする。こ
の技術は、既存のSPARC(商標)-V9に数少ない強化を
加え、既存の命令セットアーキテクチャへの影響を軽減
しながら、当該強化されたSPARC(商標)-V9上で、プ
レディケート実行のパフォーマンスの利益を得られるよ
うにする。これらのSPARC(商標)-V9への強化は、分
岐テストといった新たな命令のクラスを含む。分岐テス
トは、条件コードに基づく分岐条件を汎用レジスタ上の
ブーリアン・データに変換し、それにより「最適な」コ
ードの生成に、完全な論理命令セットが利用できるよう
にする。
【0114】用いられている分析と変換との質に決定的
に依存したパフォーマンス・ゲインが達成される。RK/S
parcの方法では、従って、新たに、記号的分析(カバ
ー)に基づく強力なプレディケート・コードの最適化技
術が含まれる。この技術は、一般的かつ拡張可能で、内
在する(in nature)テキストの書き換えなどの他の問
題に対処する際に容易に適合できるようになっている。
【0115】本発明は、限られた数の実施形態を参照し
ながら説明されたが、当業者であれば、ここに開示され
た発明の範囲から逸脱することなく、他の実施形態も例
示できる。従って、発明の範囲は、特許請求の範囲を基
礎として定められるべきものである。
【図面の簡単な説明】
【図1】 従来のコンピュータシステムのブロック図で
ある。
【図2】 本発明の実施の形態のブロック図である。
【図3】 本発明の実施の形態に関する処理を表すフロ
ーチャート図である。
【図4】 最も内側のループを表す説明図である。
【図5】 If-変換に先だつループの本体の内部表現を
表す説明図である。
【図6】 抽象的なIR、AIRにおいてプレディケートさ
れたループの本体を表す説明図である。
【図7】 機械IR、MIRに変換されたループ本体を表す
説明図である。
【図8】 機械IR、MIR′として調整されたループ本体
を表す説明図である。
【図9】 深さ2のカバーノードn16の部分グラフを表
す説明図である。
【図10】 調整されたループ本体、MIR+における分岐
テストの効果を表す説明図である。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 9/38 370 G06F 9/44 322F Fターム(参考) 5B013 BB03 BB18 DD00 5B033 AA02 AA10 BD01 BE00 CA03 CA09 5B081 CC21 CC24

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 拡張可能なルールベースのプレディケー
    ト・コードの最適化技法であって、 抽象内部表現をif-変換し、 if-変換の結果を機械表現へマッピングする、 ことを含む技法。
  2. 【請求項2】 請求項1に記載の技法であって、さら
    に、 マッピングされたif-変換からプレディケートを除去す
    ることを含む、技法。
  3. 【請求項3】 請求項1に記載の技法であって、プレデ
    ィケートの除去であって、 インタープリテーションによりプレディケート定義命令
    を除去することを含む、技法。
  4. 【請求項4】 請求項1に記載の技法であって、プレデ
    ィケートの除去であって、 安全な命令の保護プレディケートを投機により除去する
    ことを含む、技法。
  5. 【請求項5】 請求項1に記載の技法であって、プレデ
    ィケートの除去であって、 安全でない命令の保護プレディケートを補償により除去
    することを含む、技法。
  6. 【請求項6】 請求項1に記載の技法であって、プレデ
    ィケートの除去であって、 適切でない命令の保護プレディケートを逆if-変換によ
    り除去することを含む、技法。
  7. 【請求項7】 請求項1に記載の技法であって、さら
    に、 機械表現を最適化することを含む、技法。
  8. 【請求項8】 プレディケート・コードの最適化のため
    の拡張可能なルールベースのシステムであって、 命令を実行するプロセッサと、 命令であって、 プレディケートを定義し、 分岐命令をテストし、 当該テストの結果に基づき分岐命令のプレディケートを
    設定する命令と、 を含む、システム。
  9. 【請求項9】 プレディケート・コードの最適化のため
    の拡張可能なルールベースの方法であって、 プレディケートを定義し、 分岐命令をテストし、 当該テストの結果に基づき分岐命令について定められた
    プレディケートを選択的に設定すること、 を含む方法。
  10. 【請求項10】 プレディケート・コードを最適化する
    装置であって、 抽象内部表現をif-変換する手段と、 if-変換を機械命令にマッピングする手段と、 を含む、装置。
  11. 【請求項11】 請求項10に記載の装置であって、 マッピングされたif-変換からプレディケートを除去す
    る手段、 を含む、装置。
  12. 【請求項12】 請求項10に記載の装置であって、プ
    レディケートの除去であって、 インタープリテーションによりプレディケート定義命令
    を除去する手段を含む、装置。
  13. 【請求項13】 請求項10に記載の装置であって、プ
    レディケートの除去であって、 安全な命令の保護プレディケートを投機により除去する
    手段を含む、装置。
  14. 【請求項14】 請求項10に記載の装置であって、プ
    レディケートの除去であって、 安全でない命令の保護プレディケートを補償により除去
    する手段を含む、装置。
  15. 【請求項15】 請求項10に記載の装置であって、プ
    レディケートの除去であって、 適切でない命令の保護プレディケートを逆if-変換によ
    り除去する手段を含む、装置。
  16. 【請求項16】 請求項10に記載の装置であって、さ
    らに、 機械表現を最適化する手段、を含む装置。
  17. 【請求項17】 プレディケート・コードの最適化のた
    めの拡張可能なルールベースの技法であって、 抽象内部表現をif-変換し、 if-変換を機械表現にマッピングし、 マッピングされたif-変換からプレディケートを除去
    し、 プレディケートの除去において、 インタープリテーションによりプレディケート定義命令
    を除去し、 安全な命令の保護プレディケートを投機により除去し、 安全でない命令の保護プレディケートを補償により除去
    し、 適切でない命令の保護プレディケートを逆if-変換によ
    り除去し、 機械表現を最適化すること、 を含む、技法。
  18. 【請求項18】 明示的なプレディケート・ハードウエ
    アを用いずに、プレディケート実行をサポートする技法
    であって、 分岐テスト命令の実装を含む、技法。
  19. 【請求項19】 請求項18に記載の技法であって、分
    岐テスト命令は、条件コードに基づく分岐条件を、ブー
    リアン・データに変換して汎用レジスタに格納し、これ
    により、最適化コードの生成に完全な論理命令セットを
    利用可能とした、技法。
  20. 【請求項20】 明示的なプレディケート・ハードウエ
    アを用いずに、プレディケート実行をサポートするシス
    テムであって、 命令を実行するプロセッサと、 命令であって、 条件コードに基づく分岐命令を、ブーリアン・データに
    変換して汎用レジスタに格納し、これにより、最適化コ
    ードの生成に完全な論理命令セットを利用可能とし、 分岐に含まれる、投機に適さない命令のセットを保護す
    る命令、を含む、システム。
  21. 【請求項21】 明示的なプレディケート・ハードウエ
    アを用いずに、プレディケート実行をサポートする方法
    であって、 分岐テスト命令の実装を含む、方法。
  22. 【請求項22】 請求項21に記載の方法であって、分
    岐テスト命令は、条件コードに基づく分岐条件を、ブー
    リアン・データに変換して汎用レジスタに格納し、これ
    により、最適化コードの生成に完全な論理命令セットを
    利用可能とした、方法。
  23. 【請求項23】 明示的なプレディケート・ハードウエ
    アを用いずに、プレディケート実行をサポートする装置
    であって、 分岐テスト命令を実装した手段と、 当該実装された分岐テスト命令を用いてプレディケート
    を除去する手段と、を含む、装置。
JP2002030860A 2001-02-07 2002-02-07 プレディケート実行をスタティックな投機的実行へ変換する一般的で効果的な方法 Pending JP2002312181A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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