JPH11259297A - 命令割り当て方法及び命令割り当て装置 - Google Patents
命令割り当て方法及び命令割り当て装置Info
- Publication number
- JPH11259297A JPH11259297A JP10063322A JP6332298A JPH11259297A JP H11259297 A JPH11259297 A JP H11259297A JP 10063322 A JP10063322 A JP 10063322A JP 6332298 A JP6332298 A JP 6332298A JP H11259297 A JPH11259297 A JP H11259297A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- operation mode
- executed
- value
- cycle
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 55
- 238000005206 flow analysis Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 17
- 238000004458 analytical method Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 230000003111 delayed effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- GSDSWSVVBLHKDQ-UHFFFAOYSA-N 9-fluoro-3-methyl-10-(4-methylpiperazin-1-yl)-7-oxo-2,3-dihydro-7H-[1,4]oxazino[2,3,4-ij]quinoline-6-carboxylic acid Chemical compound FC1=CC(C(C(C(O)=O)=C2)=O)=C3N2C(C)COC3=C1N1CCN(C)CC1 GSDSWSVVBLHKDQ-UHFFFAOYSA-N 0.000 description 1
- 241000255777 Lepidoptera Species 0.000 description 1
- 241000761456 Nops Species 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000001343 mnemonic 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
ラムを高速に実行するための命令割り当て方法を提供す
ること。 【解決手段】 命令コードに動作モードを示すフィール
ドを持ち、該命令コードの該フィールドの値とCPUが
管理するレジスタの特定フィールドの値とが一定の関係
にあるときのみ該命令を実行する機能を持つCPUに対
し、各サイクルで実行される命令の割り当てを行なう命
令割り当て方法であって、動作モードを設定する命令を
割り当て、命令コードのフィールドの値が一致する一連
の命令列の最後の命令同士の実行されるサイクルを比較
し、命令コードのフィールドの値が一致する一連の命令
列の最後の命令の実行サイクルが他よりも早い場合に、
該命令コードと同じフィールド値を持つ分岐命令を該命
令と同じサイクルまたは後のサイクルで実行するように
割り当てることを特徴とする。
Description
行をサポートするCPUに対する命令スケジューリング
を行う命令割り当て方法及び命令割り当て装置に関す
る。
ムは条件分岐命令を含んでいる。条件分岐命令とは、あ
る条件が成立するか否かで次に実行する命令番地が異な
る命令である。通常、条件分岐命令においては、条件が
成立した状態を、「分岐が起こる(taken)」と呼
ぶ。このとき、条件分岐命令の次に実行される命令は該
条件分岐命令に相続く番地にある命令ではなく、該条件
分岐命令のオペランドにより指定された番地の命令であ
る。一方、条件が成立しない状態を、「分岐が起こらな
い」と呼ぶ。このとき、条件分岐命令の次に実行される
命令は該条件分岐命令に相続く番地にある命令である。
は、命令は実行される数クロック前にメモリまたはキャ
ッシュからCPUにフェッチされる。このため、条件分
岐命令の条件が成立するか否かを判別してから条件分岐
命令の次に実行される命令をフェッチするのでは、条件
分岐命令の次のサイクルで次の命令を実行することがで
きず、何も実行できないサイクルが入ることになる。こ
れはパイプライン・ハザードと呼ばれるが、高速実行を
損なう一因となる。
ィケート実行が提案されている(参考文献1;Scot
t Mahlke, A Comparison of
Full and Partial Predica
ted ExecutionSupport for
ILP Processors,Proc. ofIS
CA´95,pp.138−149.)。
は、次の二点で通常のCPUと異なる。 ・CPUが管理するプレディケート・モードがあり、こ
のモードを設定する命令がサポートされている。 ・命令コードの中にはプレディケート・フィールドがあ
る。このフィールドの値とCPUが管理するプレディケ
ート・モードが一致するときのみ該命令は実行される。
分岐命令および条件の成立の如何により実行される命令
は次のように変更することができる。 ・条件分岐命令を動作モード設定命令に変更する。この
命令は、条件が成立するならCPUのモードをaに、条
件が不成立ならCPUのモードをbに設定する。 ・分岐が起こったときに実行される一連の命令Aはプレ
ディケート・フィールドの値をaに、分岐が起こらない
ときに実行される一連の命令Bはプレディケート・フィ
ールドの値をbに指定しておき、動作モード設定命令の
後に配置する。プレディケート・フィールドがaの命令
とbの命令は混在して良い。ここで、a、bは何らかの
数値として実現される。このようにすると条件分岐命令
がなくなるので、パイプライン・ハザードをなくすこと
ができる。
のCPUにおいてより大きな効果が期待できる。VLI
WはCPU内に複数の並行に動作する演算器を持つアー
キテクチャである(参考文献2;Ellis,J.
R.,Bulldog: A Compiler fo
r VLIW Architectures,The
MIT Press.)。VLIWにおいては同時に複
数の命令を実行する能力を持つため、多くの演算器に命
令を割り当てることができれば、プログラムを高速に実
行できる。プレディケート実行では、先に述べたAとB
の双方から命令を配置することができるため、演算器が
命令で埋まり易い。従って、特にVLIWにおいてプレ
ディケート実行は有望な高速化の手段である。
Bを構成する命令をどのように演算器に割り当てるかに
依存する。より高速性を発揮するための命令割り当て方
法の確立が課題である。
レディケート実行においては条件分岐を行なわないため
パイプライン・ハザードがおこらず、プログラムをより
高速に実行する可能性がある。しかしながら、より高速
性を発揮させることのできる命令割り当て方法がなかっ
た。
ので、プレディケート実行を行なうCPUでプログラム
を高速に実行するための命令割り当て方法及び命令割り
当て装置を提供することを目的とする。
命令コードに動作モードを示すフィールドを持ち、該命
令コードの該フィールドの値とCPUが管理するレジス
タの特定フィールドの値とが一定の関係にあるときのみ
該命令を実行する機能を持つCPUに対し、各サイクル
で実行される命令の割り当てを行なう命令割り当て方法
であって、動作モードを設定する命令を割り当てるステ
ップと、命令コードのフィールドの値が一致する一連の
命令列の最後の命令同士の実行されるサイクルを比較す
るステップと、命令コードのフィールドの値が一致する
一連の命令列の最後の命令の実行サイクルが他よりも早
い場合に、該命令コードと同じフィールド値を持つ分岐
命令を該命令と同じサイクルまたは後のサイクルで実行
するように割り当てるステップとを有することを特徴と
する。
高い値を判別するステップをさらに有し、実行頻度が高
いと判別された動作モードに対応する命令を早いサイク
ルに優先的に割当てるようにしてもよい。
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値が一定の関係にあるときのみ該命令を実行する機
能を持つCPUに対し、各サイクルで実行される命令の
割り当てを行なう命令割り当て方法であって、動作モー
ドを設定する命令を割り当てるステップと、ある動作モ
ードのときのみ実行される命令が動作モード設定命令よ
りも前で実行されるように割り当て可能かを判別するス
テップと、割り当て可能と判別された前記命令を動作モ
ードに依らず実行される命令として割り当てるステップ
とを有することを特徴とする。
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値が一定の関係にあるときのみ該命令を実行する機
能を持つCPUに対し、各サイクルで実行される命令の
割り当てを行なう命令割り当て方法であって、動作モー
ドを設定する命令を割り当てるステップと、命令コード
のフィールドの値が一致する一連の命令列同士を比較す
るステップと、前記比較の結果、同等の命令がある場合
には該命令を動作モードにかかわらず実行される命令に
変換するステップとを有することを特徴とする。
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値が一定の関係にあるときのみ該命令を実行する機
能を持つCPUに対し、各サイクルで実行される命令の
割り当てを行なう命令割り当て行方法であって、特定の
動作モードでのみ実行される命令を生成するよりも、動
作モードによらずに動作する命令を生成した方が実行速
度が大きい場合には、動作モードによらずに動作する命
令を生成することを特徴とする。
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値が一定の関係にあるときのみ該命令を実行する機
能を持つCPUに対し、各サイクルで実行される命令の
割り当てを行なう命令割り当て方法であって、動作モー
ドを設定する命令を割り当てるステップと、動作モード
のうち実行頻度の高い値を判別するステップとを有し、
実行頻度が高いと判別された動作モードに対応する命令
は分岐なしに実行されるように割り当てるとともに、必
要に応じて他の動作モードに対応する命令は、前記実行
頻度が高いと判別された動作モードに対応する命令とは
別のサイクルで実行されるように割り当てることを特徴
とする。
する必要がなくなっても、動作モードを戻す命令を割り
当てないようにしてもよい。
きる演算器を複数持つものである。
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値とが一定の関係にあるときのみ該命令を実行する
機能を持つCPUに対し、各サイクルで実行される命令
の割り当てを行なう命令割り当て装置であって、動作モ
ードを設定する命令を割り当てる手段と、命令コードの
フィールドの値が一致する一連の命令列の最後の命令同
士の実行されるサイクルを比較する手段と、命令コード
のフィールドの値が一致する一連の命令列の最後の命令
の実行サイクルが他よりも早い場合に、該命令コードと
同じフィールド値を持つ分岐命令を該命令と同じサイク
ルまたは後のサイクルで実行するように割り当てる手段
とを備えたことを特徴とする。
としても成立し、方法に係る本発明は装置に係る発明と
しても成立する。
ンピュータに当該発明に相当する手順を実行させるため
の(あるいはコンピュータを当該発明に相当する手段と
して機能させるための、あるいはコンピュータに当該発
明に相当する機能を実現させるための)プログラムを記
録したコンピュータ読取り可能な記録媒体としても成立
する。
なうCPUでプログラムを高速に実行させることができ
る。すなわち、高速実行可能なプログラムを生成するこ
とができる。
実施の形態を説明する。
ンパイラの構成例を示す。
高級言語で記述されたソースプログラム(10)を入力
し、命令割り当てを行い、対象とするCPUもしくは計
算機で実行可能なオブジェクト・プログラム(20)に
変換する。
文解析部32、フロー解析部34、データ依存解析部3
5、命令割り当て部36、レジスタ割り当て部37を有
する。
可能であり、この場合、上記の各ブロックは、ソフトウ
ェアの各モジュールに相当する。
グラムを形成する文字列を解析し、語句に分割する。
句を文法に照合して正しいか否かを判別し、誤りがあれ
ばこれを通知し実行を止める。正しければ、その解析結
果を中間コード(33)として生成する。生成された中
間コードは、主記憶やディスク等の記憶装置に格納され
る。
内部で管理され、外部からは見えない。
れると、これをもとにプログラムの流れの解析を行な
う。
れの解析が行われると、さらに、中間コードを構成する
各単位のデータ依存解析を行ない、どの順番に割当を行
なわなければならないかの制約を明らかにする。
が、動作モード設定命令を生成する動作モード設定命令
生成部361と、実行される動作モード毎の命令列を作
りその最後の命令のサイクルを比較する命令比較部36
2と、この比較結果をもとに分岐命令を生成する分岐命
令生成部363から構成される。
られていたレジスタを、対象となるCPUの持つ真のレ
ジスタに割り当て直す、レジスタ割り当てを行う。
ットの一例を示す。
pcode」、「operand1」、「operan
d2」、「operand3」、「プレディケート・フ
ィールド」からなる。
である。数ビットが割り当てられ、その値により命令の
種類が定まる。
perand3は、それぞれ第1のオペランド、第2の
オペランド、第3のオペランドである。これらはレジス
タの番号や即値を示す。オペランドは全てのopcod
eに対して第1〜第3まであるとは限らず、opcod
eの値によりオペランドの個数が定まる。また、それぞ
れのオペランドがレジスタであるか即値であるかもop
codeの値により定まる。また、それぞれのオペラン
ドの占めるビット数もopcodeの値により定まる。
実行されるべき動作モードを示すフィールドである。数
ビットからなり、全てが0のときは動作モードに関わら
ず実行される。0でないビットがあるときは、そのフィ
ールドの値とCPUが管理する動作モードレジスタの値
とが一致するときのみ該命令は実行される。
の構成例を示す。このCPUは、プレディケート実行を
行なうものである。
析器、202は分岐器(Branch)、203は第1
の整数演算器(ALU1)、204は第2の整数演算器
(ALU2)、205は第1のメモリアクセス器(ME
M1)、206は第2のメモリアクセス器(MEM
2)、207はレジスタ(群)、208は動作モードレ
ジスタ、209はプログラムカウンタ(PC)、210
は命令キャッシュ、211はデータキャッシュである。
また、300は主記憶である。
にロードされ、CPU200がこのオブジェクト・プロ
グラムを実行する。
である。すなわち、1つの分岐器202と2つの整数演
算器203,204と2つのメモリアクセス器205,
206を持ち、これらは同時に動作可能である。
9が示す番地の命令をキャッシュ210からフェッチす
る。キャッシュ210になければ主記憶300からキャ
ッシュ210に転送される。キャッシュ210から命令
解析器201に各サイクルで同時に4命令が発行され
る。つまり、5つの演算器(202〜206)を持つが
同時に発行できる命令は4命令である。命令解析器20
1は、4命令の各々をデコードし、opcodeを知る
ことにより各々をどの演算器(202〜206)で実行
するかを決定する。命令のプレディケート・フィールド
が0でない場合は、動作モードレジスタ208を読みこ
の値と一致した命令のみ実行する。
例示したようなプレディケート実行をサポートするCP
Uに対する命令割り当てを、プレディケート実行をサポ
ートしないCPUに対する命令割り当てとの比較を通じ
て説明する。
グラムの例を示す。このプログラムは、B1で示される
条件が成立しているか否かを調べ、条件が成立していれ
ばB2を、不成立ならB3を実行する、というものであ
る。
て命令を生成した例を示す。まず、B1に対応する命令
列が、次にB2に対応する命令列が、次にB3に対応す
る命令列が生成される。また、B1の最後で条件分岐命
令が生成されるが、ソースプログラムでの条件と、生成
した命令レベルでの条件とは判定が逆となる。条件が成
立すればL2に飛びB3に対応する命令列が実行され、
不成立なら分岐は起こらずB2に対応する命令列が実行
される。なお、B2の最後に、B3をスキップするため
の無条件分岐命令が生成される。
法を適用して命令を生成した例を示す。
が、図5の例とは異なりB1の最後で条件分岐命令を生
成せず、その代わりに動作モード設定命令を生成する。
これは条件の判定結果に応じた動作モードを動作モード
レジスタ(図3の208)に設定するための命令であ
る。ソースプログラムのB1に対応する条件が成立する
なら動作モードb2を、不成立なら動作モードb3を設
定する。b2、b3はそれぞれ命令のプレディケート・
フィールドに等しいビット数を持つ0でない値であり、
b2とb3の値は相異なる。
する。図5の例とは異なり、B2、B3に対応する命令
は混在して構わない。B2に対応する命令はプレディケ
ート・フィールドの欄にb2を、B3に対応する命令は
プレディケート・フィールドの欄にb3を記載する。
ディケート・フィールドが0でない場合は、動作モード
レジスタを読みこの値と一致した命令のみ実行するの
で、条件が成立したら動作モードレジスタがb2に設定
され、プレディケート・フィールドにb2を持つB2に
対応する命令が実行され、一方、不成立なら動作モード
レジスタがb3に設定され、プレディケート・フィール
ドにb3を持つB3に対応する命令が実行されることに
なる。
く説明する。
を示す。このプログラムは、条件i<jが成立すればk
に配列a[i]の値を代入し、不成立ならkに−1を代
入する、というものである。なお、図4のB1が図7の
(5−4)行目に、B2が(5−6)行目に、B3が
(5−8)行目に相当する。
析部31および構文解析部32の働きにより、中間コー
ドが生成される。
本実施形態に係るコンパイラにおいて生成される中間コ
ードの例を示す。
ぶ。図7のソースプログラムの行番号(5−x)と中間
コードのノード(6−y)との対応は次のようになる
(矢印の左側のものが矢印の右側のものに対応する)。 (5−1) → (6−2) (5−2) → (6−3) (6−4) (6−5) (5−4) → (6−7) (6−8) (6−9) (6−10) (5−5) → (6−11) (5−6) → (6-12) (6-13) (6-14) (6-15) (6-16) (5−7) → (6−17) (5−8) → (6−18) (6−19) 図8のノードのうち、図7の行番号と対応のとれないノ
ードについて説明する。図8のノード(6−1)はブロ
ック0(B0)が開始されることを示すノードである。
ブロックは後続のフロー解析で使用される。(6−6)
はブロック0(B0)が終了することを示すノードであ
る。(6−20)は図7の行番号(5−8)までが終了
した後に続くブロックである。
解析部34は中間コードを基にブロックの流れを解析す
る。
解析部34による解析結果例を示す。図9に示すよう
に、この中間コードのフローは、B0から始まりB1が
続き、B2とB3に分岐し、B4に併合されることがわ
かる。
の依存関係を解析して、中間コードのノード間の前後関
係を明らかにする。このデータ依存解析では実際に命令
生成に対応するノードのみが対象となる。
一ブロック内の命令は同一ブロック内に配置するとの方
針で割り当てる。従って、データ依存関係部35は各ブ
ロック内でのみ依存関係の解析を行なう。
タ依存解析部35による解析結果例を示す。解析結果に
おけるA→BはAがBよりも先に実行されなければなら
ないことを示す。例えば、図10の場合、(6−8)が
(6−9)よりも先に実行されなければならないことが
示される。
当て処理の手順について説明する。
処理のアルゴリズムの一例を示す。
ドに対して図11に示すアルゴリズムを適用して生成さ
れたコードの例を示す。図12の例では、横に並んだ4
命令(例えば先頭行のcmpと3つのnop)が同時に
命令キャッシュ210からフェッチされ命令解析器20
1により5つの演算器(202〜206)のいずれかに
割り当てられる。その各々のサイクルを(10−1)〜
(10−5)がそれぞれ表している。
中間ノードが残っている限り次の中間ノードを読み、読
み込んだ中間ノードが条件分岐ノードであるかどうかを
確かめる(ステップS9−1,S9−2)。
の方法で命令生成をすればよい(ステップS9−3,S
9−4)。例えば先に挙げた参考文献2で示される方法
により命令を生成すれば良い。
は(6−9))である場合、動作モード設定命令を生成
する(ステップS9−5)。
t,1,2」がこの動作モード設定命令に相当する。s
etは、opcodeを示すニーモニックで、動作モー
ドレジスタに値を設定する命令である。gtとは、gr
eater thanの略である。本命令は、実行時点
での条件として、greater thanが成立して
いれば動作モードレジスタに1を、不成立なら動作モー
ドレジスタに2を設定する。
合、その値が変更されない限りプレディケート・フィー
ルドが1である命令か0である命令しか実行されない。
一方、動作モードレジスタに2が設定された場合、その
値が変更されない限りプレディケート・フィールドが2
である命令か0である命令しか実行されない。なお、プ
レディケート・フィールドが0である命令は、動作モー
ドレジスタの値によらず常に実行されるものとする。
の結果に基づき条件分岐により到達し得るブロックBを
求める。それらの集合をBI={Bi1,Bi2,…}とす
る。
{B2,B3}と判明する。
示するようなデータ依存関係を保つように各サイクル毎
の各演算器(図3では202〜206)への命令の割り
当てを行なう。なお、BIに属する各ブロック毎の実行
頻度等のデータがあれば、これに基づき、頻度の多いブ
ロックのノードに対する命令を早いサイクルに優先的に
割り当てるようにすると好ましい。
ドが無くなるまで順次割り当てを繰り返す。
た例を示している。すなわち、最初のサイクルである
(10−3)で「ldi(2) Rt3,−1」を割り
当てている。このldiに続く(2)はプレディケート
・フィールドの値が2であることを示している。
レディケート・フィールドを1に、B3に含まれる命令
はプレディケート・フィールドを2にして生成するもの
としている。
る各ブロックの最後の命令が割り当てられたサイクルを
求める。これらを比較し最終サイクルでないものを求め
る。
割り当てられたサイクルは(10−3)と(10−5)
であり、したがって最終サイクルでないもの(10−
3)となる。
ルでないものについてはその動作モードで実行される無
条件分岐命令を生成して割り当てる。これは、BIの全
て命令が動作を終了するまで空のサイクルを回すのでは
高速化できないからである。
が2である命令は(10−3)で終了するが、1である
命令は(10−5)で終了する。動作モードが2のとき
に(10−4)、(10−5)を実行すると2サイクル
無駄となる。このため(10−3)でb(2)L3を実
行する。これは動作モードが2のときだけ実行される無
条件分岐命令である。これにより動作モードが2のとき
に1サイクル高速化される。
は1つしか実行できないため、もし(10−3)に分岐
命令があればそれより後で分岐命令のないできるだけ早
いサイクルを探す。見つかったサイクルがBIに属する
最後の命令よりも前のサイクルであれば、そこに動作モ
ード2で実行される無条件分岐命令を生成して割り当て
ればよい。
ードが生成される。なお、この時点では、仮のレジスタ
が割り当てられた状態になっている。
当てが終わると、続いてレジスタ割り当て部37による
レジスタ割り当てを行う。
て、レジスタ割り当て部37によるレジスタ割り当てを
適用した結果得られるプログラムの例を示す。
れていたRp1,Rp2,Rt1,Rt2,Rt3が、
図13ではCPUが所有する真のレジスタRi,Rj,
R1,R2,R3に割り当て直されている。
ジスタが不足する場合には、再度命令割り当て部36に
制御を戻し、命令の一部をレジスタを使用しないように
変更して命令割り当てをし直し、そして再度レジスタ割
り当てを行う。
サポートするCPUに対するオブジェクト・プログラム
が生成される。
要なサイクル数を計算すると次のようになる。通常、パ
イプライン制御を行なうCPUでは無条件分岐や条件分
岐で分岐が起こると1サイクル実行が遅延され、条件分
岐で分岐が起こらないときは遅延されない。図13に例
示するプログラムについてみてみると、B2が実行され
る場合は、(11−1)(11−2)(11−3)(1
1−4)(11−5)の各サイクルがそれぞれ1クロッ
クで実行され、計5クロックで実行可能となる。一方、
B3が実行される場合は、(11−1)(11−2)
(11−3)の各サイクルがそれぞれ1クロックで実行
され、(11−3)の分岐の遅延1クロックと併せて、
計4クロックで実行可能となる。
明する。
に後述する手順を追加したもので、この追加部分以外は
第1の実施形態と同様である。以下では、第1の実施形
態と相違する点を中心に、また、第1の実施形態との比
較を交えながら、本実施形態について説明する。
ある動作モードのときのみ実行される命令が動作モード
設定命令よりも前で実行されるように割り当て可能かを
判別し、割り当て可能と判別されたときに該命令を動作
モードに依らず実行される命令として割り当てるように
したものである。
て部36またはレジスタ割り当て部37にて実行され
る。
ムに対して命令割り当てを行って得られたコード(図1
2)をもとにレジスタ割り当て部37が生成したプログ
ラムの例を示す。第1の実施形態におけるレジスタ割り
当て部37が生成したプログラムを例示した図13との
差異は、図14ではldi,lduiの2命令がL1の
後からL1の前に移動し、プレディケート・フィールド
が0になっていることである。
しB2が実行されずB3が実行されるとしても先行実行
して構わないため、ldi,lduiの2命令をL1の
前に移動する。また、先行実行される命令は動作モード
が設定される前であるので、プレディケート・フィール
ドを0する。
ロックと、第1の実施形態に比較して1クロック高速化
される。ただし、B3が実行される場合はクロック数に
増減はない。
明する。
に後述する手順を追加したもので、この追加部分以外は
第1の実施形態と同様である。以下では、第1の実施形
態と相違する点を中心に、また、第1の実施形態との比
較を交えながら、本実施形態について説明する。
命令コードのフィールドの値が一致する一連の命令列同
士を比較し、比較の結果、同等の命令がある場合に該命
令を動作モードにかかわらず実行される命令に変換する
ようにしたものである。
て部36またはレジスタ割り当て部37にて実行され
る。
図7のソースプログラムと比べて(5−8)と(13−
8)が異なる。すなわち、このプログラムは、条件i<
jが成立すればkに正数配列a[i]の値を代入し、不
成立なら正数配列a[j]の値を代入する、というもの
である。
用し、B3優先による命令割り当てとレジスタ割り当て
を行なって得られたオブジェクト・プログラムの例を示
す。B2が実行される場合、(14−1)から(14−
7)まで7クロックかかり、B3が実行される場合、
(14−1)から(14−5)までと分岐の遅延1クロ
ックで6クロックかかる。
用し、B3優先による命令割り当てとレジスタ割り当て
を行なって得られたオブジェクト・プログラムの例を示
す。本例では、ldi,ldui,ldの3つの命令は
いずれもB2とB3において共通する命令であるので、
このような命令を動作モード0で実行する命令とするこ
とにより共通化して命令数を減らす。これにより、B2
とB3のいずれが実行される場合でも、(15−1)か
ら(15−5)まで5クロックで実行が完了する。
明する。
に後述する手順を追加したもので、この追加部分以外は
第1の実施形態と同様である。以下では、第1の実施形
態と相違する点を中心に、また、第1の実施形態との比
較を交えながら、本実施形態について説明する。
特定の動作モードでのみ実行される命令を生成するより
も、動作モードによらずに動作する命令を生成した方が
実行速度が大きい場合には、動作モードによらずに動作
する命令を生成するようにしたものである。
て部36にて実行される。
図7と比べて(5−8)と(16−8)が異なる。すな
わち、このプログラムは、条件i<jが成立すればkに
配列a[i]の値を代入し、不成立なら配列b[j]の
値を代入する、というものである。
用し、B3優先による命令割り当てとレジスタ割り当て
を行なって得られたオブジェクト・プログラムの例を示
す。B2が実行される場合、(17−1)から(17−
7)まで7クロックかかり、B3が実行される場合、
(17−1)から(17−5)までと分岐の遅延1クロ
ックで6クロックかかる。
い命令割り当てとレジスタ割り当てを行なって得られた
オブジェクト・プログラムの例を示す。B2が実行され
る場合、(18−1)から(18−5)までと(18−
5)の分岐の遅延で6クロックかかり、B3が実行され
る場合、(18−1)、(18−2)と(18−6)か
ら(18−8)までと(18−2)の分岐の遅延1クロ
ックで計6クロックかかる。つまり、第1の実施形態の
処理手順を適用するとB3では同じクロック数がかか
り、B2では1クロック余計にかかる。
令数の制限等により、プレディケート実行を行なわない
方が高速になることがある。そこで、命令割り当ての際
に、プレディケート実行を行なわない方が高速になると
判断されたならば、プレディケート実行しないようにす
ると好ましい。
明する。
当て処理を一部修正したもので、この修正部分以外は第
1の実施形態と同様である。以下では、第1の実施形態
と相違する点を中心に、また、第1の実施形態との比較
を交えながら、本実施形態について説明する。
態において、動作モードのうち実行頻度の高い値を判別
し、実行頻度が高いと判別された動作モードに対応する
命令は分岐なしに実行されるように割り当て、必要なら
他の動作モードに対応する命令は上記の命令とは別のサ
イクルで実行されるように割り当てるようにしたもので
ある。
部36による実行される命令割り当て処理の手順につい
て説明する。
処理のアルゴリズムの一例を示す。
ログラムが入力として与えられ、B3={(5−7),
(5−8)}のブロックがB2={(5−5),(5−
6)}のブロックよりも実行頻度が高いものとする。
19−6までの手順は、図11のステップS9−1〜ス
テップS9−6までの手順と同様である。
での実行により、読み込んだ中間ノードが条件分岐であ
る場合に動作モード設定命令が生成し、そしてフロー解
析の結果に基づき条件分岐により到達し得るブロックの
集合としてBIが求められる。
れる。
7にて、BIに属する各ブロックのうち、実行頻度の最
も多いブロックBj を選択し、このBj の命令を割り当
てる。
行頻度を基に頻度の多いブロックB3が選択され、B3
の命令がプレディケート・フィールドを2にして割り当
てられる。
8にて、Bj の命令を割り当てたのと同じサイクルで、
プレディケート実行をする分岐命令を割り当てるととも
に、分岐した先でBj 以外のブロックの命令を割り当
て、終了したら、Bj の命令が終了した後のブロックへ
と分岐する。
後に分岐命令を割り当てずに終了することとし、B3の
命令を割り当てたのと同じサイクルでプレディケート・
フィールドが1である無条件分岐命令を割り当てる。分
岐先でB2の命令を割り当て、最後にB3の命令の後の
ブロックへと分岐する。
れるときは全く分岐が起こらず高速に実行可能となる。
頻度の小さいブロックが実行される場合は、分岐で飛び
出し、最後に分岐で合流する。
ムに対し図21のアルゴリズムを適用したときにレジス
タ割り当て部37が生成するプログラムの例を示す。
め、(20−1)(20−2)に引き続いて(20−
3)ではB3の命令が割り当てられる。
である。この後分岐命令なしに後のブロックL3へと続
く。一方、B2が実行される場合には、(20−3)の
「b(1) L4」によってL4に無条件分岐する。こ
こでB2が実行された後、L3に飛ぶ。
(20−3)で3クロックかかる。一方、B3が実行さ
れる場合、(20−1)から(20−3)と、(20−
4)から(20−6)と、(20−3)の分岐の遅延
と、(20−6)の分岐の遅延で、計8クロックかか
る。つまり、実行頻度の大きいブロックが判別可能なと
きに本実施形態の命令割り当てを適用すると極めて高速
に実行することができる。
記述されたプログラムを計算機で実行するオブジェクト
コードに変換するソフトウェアであるコンパイラの中で
命令割り当てをする場合を想定して記述したが、本発明
はターゲットCPUのアーキテクチャを意識しながらア
センプリ言語などを用いて直接プログラミングする場合
にも適用することができる。
する命令を終了した後で動作モードレジスタを初期値0
に戻す命令を生成していない。これはBIに相当する命
令を終了した後は、動作モードに依らない命令(プレデ
ィケート・フィールドの値が0の命令)を生成するた
め、動作モードを初期値に戻さなくても全ての命令が実
行されるからである。再びプレディケート実行する場合
は、その直前で動作モード設定命令を実行すれば良い。
動作モードを初期値に戻すためには1命令実行が必要で
あり、実行しないほうが同等かあるいは1サイクル高速
化が可能である。
ても実現可能である。すなわち、本実施形態は、コンピ
ュータに所定の手順を実行させるための(あるいはコン
ピュータを所定の手段として機能させるための、あるい
はコンピュータに所定の機能を実現させるための)プロ
グラムを記録したコンピュータ読取り可能な記録媒体と
して実施することもできる。
るものではなく、その技術的範囲において種々変形して
実施することができる。
行なうCPUでプログラムを高速に実行することができ
る。
を示す図
対する命令割り当ての一例を示す図
する命令割り当ての一例を示す図
図
ト
の例を示す図
ラムの例を示す図
ラムの例を示す図
ラムの例を示す図
ムの例を示す図
ラムの例を示す図
ラムの例を示す図
ート
ラムの一例を示す図
Claims (9)
- 【請求項1】命令コードに動作モードを示すフィールド
を持ち、該命令コードの該フィールドの値とCPUが管
理するレジスタの特定フィールドの値とが一定の関係に
あるときのみ該命令を実行する機能を持つCPUに対
し、各サイクルで実行される命令の割り当てを行なう命
令割り当て方法であって、 動作モードを設定する命令を割り当てるステップと、 命令コードのフィールドの値が一致する一連の命令列の
最後の命令同士の実行されるサイクルを比較するステッ
プと、 命令コードのフィールドの値が一致する一連の命令列の
最後の命令の実行サイクルが他よりも早い場合に、該命
令コードと同じフィールド値を持つ分岐命令を該命令と
同じサイクルまたは後のサイクルで実行するように割り
当てるステップとを有することを特徴とする命令割り当
て方法。 - 【請求項2】動作モードのうち実行頻度の高い値を判別
するステップをさらに有し、 実行頻度が高いと判別された動作モードに対応する命令
を早いサイクルに優先的に割当てることを特徴とする請
求項1に記載の命令割り当て方法。 - 【請求項3】命令コードに動作モードを示すフィールド
を持ち、該命令コードの該フィールドの値とCPUが管
理するレジスタの特定フィールドの値が一定の関係にあ
るときのみ該命令を実行する機能を持つCPUに対し、
各サイクルで実行される命令の割り当てを行なう命令割
り当て方法であって、 動作モードを設定する命令を割り当てるステップと、 ある動作モードのときのみ実行される命令が動作モード
設定命令よりも前で実行されるように割り当て可能かを
判別するステップと、 割り当て可能と判別された前記命令を動作モードに依ら
ず実行される命令として割り当てるステップとを有する
ことを特徴とする命令割り当て方法。 - 【請求項4】命令コードに動作モードを示すフィールド
を持ち、該命令コードの該フィールドの値とCPUが管
理するレジスタの特定フィールドの値が一定の関係にあ
るときのみ該命令を実行する機能を持つCPUに対し、
各サイクルで実行される命令の割り当てを行なう命令割
り当て方法であって、 動作モードを設定する命令を割り当てるステップと、 命令コードのフィールドの値が一致する一連の命令列同
士を比較するステップと、 前記比較の結果、同等の命令がある場合には該命令を動
作モードにかかわらず実行される命令に変換するステッ
プとを有することを特徴とする命令割り当て方法。 - 【請求項5】命令コードに動作モードを示すフィールド
を持ち、該命令コードの該フィールドの値とCPUが管
理するレジスタの特定フィールドの値が一定の関係にあ
るときのみ該命令を実行する機能を持つCPUに対し、
各サイクルで実行される命令の割り当てを行なう命令割
り当て行方法であって、 特定の動作モードでのみ実行される命令を生成するより
も、動作モードによらずに動作する命令を生成した方が
実行速度が大きい場合には、動作モードによらずに動作
する命令を生成することを特徴とする命令割り当て方
法。 - 【請求項6】命令コードに動作モードを示すフィールド
を持ち、該命令コードの該フィールドの値とCPUが管
理するレジスタの特定フィールドの値が一定の関係にあ
るときのみ該命令を実行する機能を持つCPUに対し、
各サイクルで実行される命令の割り当てを行なう命令割
り当て方法であって、 動作モードを設定する命令を割り当てるステップと、 動作モードのうち実行頻度の高い値を判別するステップ
とを有し、 実行頻度が高いと判別された動作モードに対応する命令
は分岐なしに実行されるように割り当てるとともに、 必要に応じて他の動作モードに対応する命令は、前記実
行頻度が高いと判別された動作モードに対応する命令と
は別のサイクルで実行されるように割り当てることを特
徴とする命令割り当て方法。 - 【請求項7】動作モードに依存する実行をする必要がな
くなっても、動作モードを戻す命令を割り当てないこと
を特徴とする請求項1ないし6のいずれか1項に記載の
命令割り当て方法。 - 【請求項8】前記CPUは、並行に実行できる演算器を
複数持つものであることを特徴とする請求項1ないし7
のいずれか1項に記載の命令割り当て方法。 - 【請求項9】命令コードに動作モードを示すフィールド
を持ち、該命令コードの該フィールドの値とCPUが管
理するレジスタの特定フィールドの値とが一定の関係に
あるときのみ該命令を実行する機能を持つCPUに対
し、各サイクルで実行される命令の割り当てを行なう命
令割り当て装置であって、 動作モードを設定する命令を割り当てる手段と、 命令コードのフィールドの値が一致する一連の命令列の
最後の命令同士の実行されるサイクルを比較する手段
と、 命令コードのフィールドの値が一致する一連の命令列の
最後の命令の実行サイクルが他よりも早い場合に、該命
令コードと同じフィールド値を持つ分岐命令を該命令と
同じサイクルまたは後のサイクルで実行するように割り
当てる手段とを備えたことを特徴とする命令割り当て装
置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6332298A JP3595158B2 (ja) | 1998-03-13 | 1998-03-13 | 命令割り当て方法及び命令割り当て装置 |
US09/266,872 US6367076B1 (en) | 1998-03-13 | 1999-03-12 | Compiling method and memory storing the program code |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6332298A JP3595158B2 (ja) | 1998-03-13 | 1998-03-13 | 命令割り当て方法及び命令割り当て装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11259297A true JPH11259297A (ja) | 1999-09-24 |
JP3595158B2 JP3595158B2 (ja) | 2004-12-02 |
Family
ID=13225924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6332298A Expired - Fee Related JP3595158B2 (ja) | 1998-03-13 | 1998-03-13 | 命令割り当て方法及び命令割り当て装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6367076B1 (ja) |
JP (1) | JP3595158B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020025687A (ko) * | 2000-09-28 | 2002-04-04 | 포만 제프리 엘 | 마이크로프로세서의 명령 처리 방법 및 마이크로프로세서 |
US7028291B2 (en) | 2001-08-06 | 2006-04-11 | Matsushita Electric Industrial Co., Ltd. | Debugging method and debugging device |
KR100576794B1 (ko) * | 2001-02-07 | 2006-05-10 | 선 마이크로시스템즈 인코포레이티드 | 술어 실행을 정적 예측실행으로 변환하기 위한 범용 및효율적 방법 및 장치 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001098898A1 (en) * | 2000-06-21 | 2001-12-27 | Bops, Inc. | Methods and apparatus for indirect vliw memory allocation |
US6779108B2 (en) * | 2000-12-15 | 2004-08-17 | Intel Corporation | Incorporating trigger loads in branch histories for branch prediction |
JP2002232796A (ja) * | 2001-01-31 | 2002-08-16 | Funai Electric Co Ltd | デジタル/アナログ放送受信機のチャンネル選択装置 |
JP2003140886A (ja) * | 2001-10-31 | 2003-05-16 | Seiko Epson Corp | インストラクションセット及びコンパイラ |
US20030145190A1 (en) * | 2001-12-07 | 2003-07-31 | Paolo Faraboschi | Compiler algorithm to implement speculative stores |
US7140003B2 (en) * | 2003-02-14 | 2006-11-21 | International Business Machines Corporation | Method and system for specifying sets of instructions for selection by an instruction generator |
US20050125783A1 (en) * | 2003-12-09 | 2005-06-09 | Texas Instruments Incorporated | Program optimization with intermediate code |
US7194606B2 (en) * | 2004-09-28 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | Method and apparatus for using predicates in a processing device |
US7739696B2 (en) * | 2005-09-08 | 2010-06-15 | Honeywell International Inc. | Message translation systems and methods |
KR100736679B1 (ko) * | 2006-08-09 | 2007-07-06 | 주식회사 유니테스트 | 반도체 테스트를 위한 패턴 생성 장치 및 패턴 생성 방법 |
US8612944B2 (en) * | 2008-04-17 | 2013-12-17 | Qualcomm Incorporated | Code evaluation for in-order processing |
US9298433B2 (en) * | 2013-05-02 | 2016-03-29 | Facebook, Inc. | Optimizing intermediate representation of script code for fast path execution |
US9298436B2 (en) * | 2014-06-25 | 2016-03-29 | International Business Machines Corporation | Conditional branch instruction compaction for regional code size reduction |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142681A (en) * | 1986-07-07 | 1992-08-25 | International Business Machines Corporation | APL-to-Fortran translators |
JP2839590B2 (ja) | 1989-11-10 | 1998-12-16 | 株式会社東芝 | 命令割り当て装置及び命令割り当て方法 |
JPH0475139A (ja) * | 1990-07-18 | 1992-03-10 | Toshiba Corp | ループ並列化装置 |
-
1998
- 1998-03-13 JP JP6332298A patent/JP3595158B2/ja not_active Expired - Fee Related
-
1999
- 1999-03-12 US US09/266,872 patent/US6367076B1/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020025687A (ko) * | 2000-09-28 | 2002-04-04 | 포만 제프리 엘 | 마이크로프로세서의 명령 처리 방법 및 마이크로프로세서 |
KR100576794B1 (ko) * | 2001-02-07 | 2006-05-10 | 선 마이크로시스템즈 인코포레이티드 | 술어 실행을 정적 예측실행으로 변환하기 위한 범용 및효율적 방법 및 장치 |
US7028291B2 (en) | 2001-08-06 | 2006-04-11 | Matsushita Electric Industrial Co., Ltd. | Debugging method and debugging device |
Also Published As
Publication number | Publication date |
---|---|
US6367076B1 (en) | 2002-04-02 |
JP3595158B2 (ja) | 2004-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Eichenberger et al. | Using advanced compiler technology to exploit the performance of the Cell Broadband Engine™ architecture | |
JP3595158B2 (ja) | 命令割り当て方法及び命令割り当て装置 | |
US5303357A (en) | Loop optimization system | |
US8966459B2 (en) | Processors and compiling methods for processors | |
KR100715055B1 (ko) | Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법 | |
US7343482B2 (en) | Program subgraph identification | |
US7350055B2 (en) | Tightly coupled accelerator | |
US8413086B2 (en) | Methods and apparatus for adapting pipeline stage latency based on instruction type | |
US20140101415A1 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
US20060095720A1 (en) | Reuseable configuration data | |
US6154828A (en) | Method and apparatus for employing a cycle bit parallel executing instructions | |
JP2002007141A (ja) | パイプライン化マイクロプロセッサ用ループ・キャッシュ・メモリとキャッシュ制御器 | |
JP2003099248A (ja) | プロセッサ、コンパイル装置及びコンパイル方法 | |
JP2002024011A (ja) | プロセッサにおける命令の叙述された実行 | |
JPH10161884A (ja) | パイプラインコンピュータのための改善されたコードオプティマイザ | |
USRE41751E1 (en) | Instruction converting apparatus using parallel execution code | |
KR100316078B1 (ko) | 파이프라인방식프로세서 | |
JPH11194948A (ja) | コンパイラ最適化アルゴリズム | |
JP2001290658A (ja) | マッピング回路及び方法 | |
US20050257200A1 (en) | Generating code for a configurable microprocessor | |
JP2016006632A (ja) | 条件付き命令を有するプロセッサ | |
US7073169B2 (en) | Compiler device with branch instruction inserting unit | |
CN101727435A (zh) | 一种超长指令字处理器 | |
US20040220794A1 (en) | Methods and apparatus for generating effective test code for out of order superscalar microprocessors | |
JP3737573B2 (ja) | Vliwプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040511 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040601 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040802 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040831 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040902 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070910 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080910 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080910 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090910 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |