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
Application number
JP10063322A
Other languages
English (en)
Other versions
JP3595158B2 (ja
Inventor
Toru Imai
徹 今井
Hiroko Fujii
寛子 藤井
Yoshio Masubuchi
美生 増渕
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP6332298A priority Critical patent/JP3595158B2/ja
Priority to US09/266,872 priority patent/US6367076B1/en
Publication of JPH11259297A publication Critical patent/JPH11259297A/ja
Application granted granted Critical
Publication of JP3595158B2 publication Critical patent/JP3595158B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements 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

(57)【要約】 【課題】 プレディケート実行を行なうCPUでプログ
ラムを高速に実行するための命令割り当て方法を提供す
ること。 【解決手段】 命令コードに動作モードを示すフィール
ドを持ち、該命令コードの該フィールドの値とCPUが
管理するレジスタの特定フィールドの値とが一定の関係
にあるときのみ該命令を実行する機能を持つCPUに対
し、各サイクルで実行される命令の割り当てを行なう命
令割り当て方法であって、動作モードを設定する命令を
割り当て、命令コードのフィールドの値が一致する一連
の命令列の最後の命令同士の実行されるサイクルを比較
し、命令コードのフィールドの値が一致する一連の命令
列の最後の命令の実行サイクルが他よりも早い場合に、
該命令コードと同じフィールド値を持つ分岐命令を該命
令と同じサイクルまたは後のサイクルで実行するように
割り当てることを特徴とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プレディケート実
行をサポートするCPUに対する命令スケジューリング
を行う命令割り当て方法及び命令割り当て装置に関す
る。
【0002】
【従来の技術】電子計算機において実行されるプログラ
ムは条件分岐命令を含んでいる。条件分岐命令とは、あ
る条件が成立するか否かで次に実行する命令番地が異な
る命令である。通常、条件分岐命令においては、条件が
成立した状態を、「分岐が起こる(taken)」と呼
ぶ。このとき、条件分岐命令の次に実行される命令は該
条件分岐命令に相続く番地にある命令ではなく、該条件
分岐命令のオペランドにより指定された番地の命令であ
る。一方、条件が成立しない状態を、「分岐が起こらな
い」と呼ぶ。このとき、条件分岐命令の次に実行される
命令は該条件分岐命令に相続く番地にある命令である。
【0003】パイプライン処理を行なうCPUにおいて
は、命令は実行される数クロック前にメモリまたはキャ
ッシュからCPUにフェッチされる。このため、条件分
岐命令の条件が成立するか否かを判別してから条件分岐
命令の次に実行される命令をフェッチするのでは、条件
分岐命令の次のサイクルで次の命令を実行することがで
きず、何も実行できないサイクルが入ることになる。こ
れはパイプライン・ハザードと呼ばれるが、高速実行を
損なう一因となる。
【0004】これを回避する方法の一つとして、プレデ
ィケート実行が提案されている(参考文献1;Scot
t Mahlke, A Comparison of
Full and Partial Predica
ted ExecutionSupport for
ILP Processors,Proc. ofIS
CA´95,pp.138−149.)。
【0005】プレディケート実行をサポートするCPU
は、次の二点で通常のCPUと異なる。 ・CPUが管理するプレディケート・モードがあり、こ
のモードを設定する命令がサポートされている。 ・命令コードの中にはプレディケート・フィールドがあ
る。このフィールドの値とCPUが管理するプレディケ
ート・モードが一致するときのみ該命令は実行される。
【0006】これを利用すると、通常のCPUでの条件
分岐命令および条件の成立の如何により実行される命令
は次のように変更することができる。 ・条件分岐命令を動作モード設定命令に変更する。この
命令は、条件が成立するならCPUのモードをaに、条
件が不成立ならCPUのモードをbに設定する。 ・分岐が起こったときに実行される一連の命令Aはプレ
ディケート・フィールドの値をaに、分岐が起こらない
ときに実行される一連の命令Bはプレディケート・フィ
ールドの値をbに指定しておき、動作モード設定命令の
後に配置する。プレディケート・フィールドがaの命令
とbの命令は混在して良い。ここで、a、bは何らかの
数値として実現される。このようにすると条件分岐命令
がなくなるので、パイプライン・ハザードをなくすこと
ができる。
【0007】プレディケート実行は、特にVLIW構成
のCPUにおいてより大きな効果が期待できる。VLI
WはCPU内に複数の並行に動作する演算器を持つアー
キテクチャである(参考文献2;Ellis,J.
R.,Bulldog: A Compiler fo
r VLIW Architectures,The
MIT Press.)。VLIWにおいては同時に複
数の命令を実行する能力を持つため、多くの演算器に命
令を割り当てることができれば、プログラムを高速に実
行できる。プレディケート実行では、先に述べたAとB
の双方から命令を配置することができるため、演算器が
命令で埋まり易い。従って、特にVLIWにおいてプレ
ディケート実行は有望な高速化の手段である。
【0008】しかしどの程度の効果が上がるかは、Aと
Bを構成する命令をどのように演算器に割り当てるかに
依存する。より高速性を発揮するための命令割り当て方
法の確立が課題である。
【0009】
【発明が解決しようとする課題】以上述べたように、プ
レディケート実行においては条件分岐を行なわないため
パイプライン・ハザードがおこらず、プログラムをより
高速に実行する可能性がある。しかしながら、より高速
性を発揮させることのできる命令割り当て方法がなかっ
た。
【0010】本発明は、上記事情を考慮してなされたも
ので、プレディケート実行を行なうCPUでプログラム
を高速に実行するための命令割り当て方法及び命令割り
当て装置を提供することを目的とする。
【0011】
【課題を解決するための手段】本発明(請求項1)は、
命令コードに動作モードを示すフィールドを持ち、該命
令コードの該フィールドの値とCPUが管理するレジス
タの特定フィールドの値とが一定の関係にあるときのみ
該命令を実行する機能を持つCPUに対し、各サイクル
で実行される命令の割り当てを行なう命令割り当て方法
であって、動作モードを設定する命令を割り当てるステ
ップと、命令コードのフィールドの値が一致する一連の
命令列の最後の命令同士の実行されるサイクルを比較す
るステップと、命令コードのフィールドの値が一致する
一連の命令列の最後の命令の実行サイクルが他よりも早
い場合に、該命令コードと同じフィールド値を持つ分岐
命令を該命令と同じサイクルまたは後のサイクルで実行
するように割り当てるステップとを有することを特徴と
する。
【0012】好ましくは、動作モードのうち実行頻度の
高い値を判別するステップをさらに有し、実行頻度が高
いと判別された動作モードに対応する命令を早いサイク
ルに優先的に割当てるようにしてもよい。
【0013】本発明(請求項3)は、命令コードに動作
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値が一定の関係にあるときのみ該命令を実行する機
能を持つCPUに対し、各サイクルで実行される命令の
割り当てを行なう命令割り当て方法であって、動作モー
ドを設定する命令を割り当てるステップと、ある動作モ
ードのときのみ実行される命令が動作モード設定命令よ
りも前で実行されるように割り当て可能かを判別するス
テップと、割り当て可能と判別された前記命令を動作モ
ードに依らず実行される命令として割り当てるステップ
とを有することを特徴とする。
【0014】本発明(請求項4)は、命令コードに動作
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値が一定の関係にあるときのみ該命令を実行する機
能を持つCPUに対し、各サイクルで実行される命令の
割り当てを行なう命令割り当て方法であって、動作モー
ドを設定する命令を割り当てるステップと、命令コード
のフィールドの値が一致する一連の命令列同士を比較す
るステップと、前記比較の結果、同等の命令がある場合
には該命令を動作モードにかかわらず実行される命令に
変換するステップとを有することを特徴とする。
【0015】本発明(請求項5)は、命令コードに動作
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値が一定の関係にあるときのみ該命令を実行する機
能を持つCPUに対し、各サイクルで実行される命令の
割り当てを行なう命令割り当て行方法であって、特定の
動作モードでのみ実行される命令を生成するよりも、動
作モードによらずに動作する命令を生成した方が実行速
度が大きい場合には、動作モードによらずに動作する命
令を生成することを特徴とする。
【0016】本発明(請求項6)は、命令コードに動作
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値が一定の関係にあるときのみ該命令を実行する機
能を持つCPUに対し、各サイクルで実行される命令の
割り当てを行なう命令割り当て方法であって、動作モー
ドを設定する命令を割り当てるステップと、動作モード
のうち実行頻度の高い値を判別するステップとを有し、
実行頻度が高いと判別された動作モードに対応する命令
は分岐なしに実行されるように割り当てるとともに、必
要に応じて他の動作モードに対応する命令は、前記実行
頻度が高いと判別された動作モードに対応する命令とは
別のサイクルで実行されるように割り当てることを特徴
とする。
【0017】好ましくは、動作モードに依存する実行を
する必要がなくなっても、動作モードを戻す命令を割り
当てないようにしてもよい。
【0018】好ましくは、前記CPUは、並行に実行で
きる演算器を複数持つものである。
【0019】本発明(請求項9)は、命令コードに動作
モードを示すフィールドを持ち、該命令コードの該フィ
ールドの値とCPUが管理するレジスタの特定フィール
ドの値とが一定の関係にあるときのみ該命令を実行する
機能を持つCPUに対し、各サイクルで実行される命令
の割り当てを行なう命令割り当て装置であって、動作モ
ードを設定する命令を割り当てる手段と、命令コードの
フィールドの値が一致する一連の命令列の最後の命令同
士の実行されるサイクルを比較する手段と、命令コード
のフィールドの値が一致する一連の命令列の最後の命令
の実行サイクルが他よりも早い場合に、該命令コードと
同じフィールド値を持つ分岐命令を該命令と同じサイク
ルまたは後のサイクルで実行するように割り当てる手段
とを備えたことを特徴とする。
【0020】なお、装置に係る本発明は方法に係る発明
としても成立し、方法に係る本発明は装置に係る発明と
しても成立する。
【0021】また、装置または方法に係る本発明は、コ
ンピュータに当該発明に相当する手順を実行させるため
の(あるいはコンピュータを当該発明に相当する手段と
して機能させるための、あるいはコンピュータに当該発
明に相当する機能を実現させるための)プログラムを記
録したコンピュータ読取り可能な記録媒体としても成立
する。
【0022】本発明によれば、プレディケート実行を行
なうCPUでプログラムを高速に実行させることができ
る。すなわち、高速実行可能なプログラムを生成するこ
とができる。
【0023】
【発明の実施の形態】以下、図面を参照しながら発明の
実施の形態を説明する。
【0024】図1に、本発明の第1の実施形態に係るコ
ンパイラの構成例を示す。
【0025】図1に示すように、本コンパイラ30は、
高級言語で記述されたソースプログラム(10)を入力
し、命令割り当てを行い、対象とするCPUもしくは計
算機で実行可能なオブジェクト・プログラム(20)に
変換する。
【0026】本コンパイラ30は、字句解析部31、構
文解析部32、フロー解析部34、データ依存解析部3
5、命令割り当て部36、レジスタ割り当て部37を有
する。
【0027】本コンパイラ30は、ソフトウェアで実現
可能であり、この場合、上記の各ブロックは、ソフトウ
ェアの各モジュールに相当する。
【0028】字句解析部31は、入力されたソースプロ
グラムを形成する文字列を解析し、語句に分割する。
【0029】構文解析部32は、上記解析により得た語
句を文法に照合して正しいか否かを判別し、誤りがあれ
ばこれを通知し実行を止める。正しければ、その解析結
果を中間コード(33)として生成する。生成された中
間コードは、主記憶やディスク等の記憶装置に格納され
る。
【0030】中間コード(33)は、通常はコンパイラ
内部で管理され、外部からは見えない。
【0031】フロー解析部34は、中間コードが生成さ
れると、これをもとにプログラムの流れの解析を行な
う。
【0032】データ依存解析部35は、プログラムの流
れの解析が行われると、さらに、中間コードを構成する
各単位のデータ依存解析を行ない、どの順番に割当を行
なわなければならないかの制約を明らかにする。
【0033】命令割り当て部36は、詳しくは後述する
が、動作モード設定命令を生成する動作モード設定命令
生成部361と、実行される動作モード毎の命令列を作
りその最後の命令のサイクルを比較する命令比較部36
2と、この比較結果をもとに分岐命令を生成する分岐命
令生成部363から構成される。
【0034】レジスタ割り当て部37は、仮に割り当て
られていたレジスタを、対象となるCPUの持つ真のレ
ジスタに割り当て直す、レジスタ割り当てを行う。
【0035】図2に、割り当てを行なう命令のフォーマ
ットの一例を示す。
【0036】図2に示されるように、この命令は、「o
pcode」、「operand1」、「operan
d2」、「operand3」、「プレディケート・フ
ィールド」からなる。
【0037】opcodeは、命令の種類を表すコード
である。数ビットが割り当てられ、その値により命令の
種類が定まる。
【0038】operand1、operand2、o
perand3は、それぞれ第1のオペランド、第2の
オペランド、第3のオペランドである。これらはレジス
タの番号や即値を示す。オペランドは全てのopcod
eに対して第1〜第3まであるとは限らず、opcod
eの値によりオペランドの個数が定まる。また、それぞ
れのオペランドがレジスタであるか即値であるかもop
codeの値により定まる。また、それぞれのオペラン
ドの占めるビット数もopcodeの値により定まる。
【0039】プレディケート・フィールドは、該命令が
実行されるべき動作モードを示すフィールドである。数
ビットからなり、全てが0のときは動作モードに関わら
ず実行される。0でないビットがあるときは、そのフィ
ールドの値とCPUが管理する動作モードレジスタの値
とが一致するときのみ該命令は実行される。
【0040】図3に、命令割り当ての対象とするCPU
の構成例を示す。このCPUは、プレディケート実行を
行なうものである。
【0041】図3中、200はCPU、201は命令解
析器、202は分岐器(Branch)、203は第1
の整数演算器(ALU1)、204は第2の整数演算器
(ALU2)、205は第1のメモリアクセス器(ME
M1)、206は第2のメモリアクセス器(MEM
2)、207はレジスタ(群)、208は動作モードレ
ジスタ、209はプログラムカウンタ(PC)、210
は命令キャッシュ、211はデータキャッシュである。
また、300は主記憶である。
【0042】オブジェクト・プログラムは主記憶300
にロードされ、CPU200がこのオブジェクト・プロ
グラムを実行する。
【0043】さて、このCPU200は、VLIW構成
である。すなわち、1つの分岐器202と2つの整数演
算器203,204と2つのメモリアクセス器205,
206を持ち、これらは同時に動作可能である。
【0044】CPU200は、プログラムカウンタ20
9が示す番地の命令をキャッシュ210からフェッチす
る。キャッシュ210になければ主記憶300からキャ
ッシュ210に転送される。キャッシュ210から命令
解析器201に各サイクルで同時に4命令が発行され
る。つまり、5つの演算器(202〜206)を持つが
同時に発行できる命令は4命令である。命令解析器20
1は、4命令の各々をデコードし、opcodeを知る
ことにより各々をどの演算器(202〜206)で実行
するかを決定する。命令のプレディケート・フィールド
が0でない場合は、動作モードレジスタ208を読みこ
の値と一致した命令のみ実行する。
【0045】次に、図4〜図6を参照しながら、図3に
例示したようなプレディケート実行をサポートするCP
Uに対する命令割り当てを、プレディケート実行をサポ
ートしないCPUに対する命令割り当てとの比較を通じ
て説明する。
【0046】図4に、条件分岐を含む簡単なソースプロ
グラムの例を示す。このプログラムは、B1で示される
条件が成立しているか否かを調べ、条件が成立していれ
ばB2を、不成立ならB3を実行する、というものであ
る。
【0047】図5に、従来の命令割り当て方法を適用し
て命令を生成した例を示す。まず、B1に対応する命令
列が、次にB2に対応する命令列が、次にB3に対応す
る命令列が生成される。また、B1の最後で条件分岐命
令が生成されるが、ソースプログラムでの条件と、生成
した命令レベルでの条件とは判定が逆となる。条件が成
立すればL2に飛びB3に対応する命令列が実行され、
不成立なら分岐は起こらずB2に対応する命令列が実行
される。なお、B2の最後に、B3をスキップするため
の無条件分岐命令が生成される。
【0048】図6に、本実施形態に係る命令割り当て方
法を適用して命令を生成した例を示す。
【0049】まず、B1に対応する命令列が生成される
が、図5の例とは異なりB1の最後で条件分岐命令を生
成せず、その代わりに動作モード設定命令を生成する。
これは条件の判定結果に応じた動作モードを動作モード
レジスタ(図3の208)に設定するための命令であ
る。ソースプログラムのB1に対応する条件が成立する
なら動作モードb2を、不成立なら動作モードb3を設
定する。b2、b3はそれぞれ命令のプレディケート・
フィールドに等しいビット数を持つ0でない値であり、
b2とb3の値は相異なる。
【0050】次に、B2、B3に対応する命令列を生成
する。図5の例とは異なり、B2、B3に対応する命令
は混在して構わない。B2に対応する命令はプレディケ
ート・フィールドの欄にb2を、B3に対応する命令は
プレディケート・フィールドの欄にb3を記載する。
【0051】前述したように、CPUでは、命令のプレ
ディケート・フィールドが0でない場合は、動作モード
レジスタを読みこの値と一致した命令のみ実行するの
で、条件が成立したら動作モードレジスタがb2に設定
され、プレディケート・フィールドにb2を持つB2に
対応する命令が実行され、一方、不成立なら動作モード
レジスタがb3に設定され、プレディケート・フィール
ドにb3を持つB3に対応する命令が実行されることに
なる。
【0052】以下では、本実施形態についてさらに詳し
く説明する。
【0053】図7に、より詳しいソースプログラムの例
を示す。このプログラムは、条件i<jが成立すればk
に配列a[i]の値を代入し、不成立ならkに−1を代
入する、というものである。なお、図4のB1が図7の
(5−4)行目に、B2が(5−6)行目に、B3が
(5−8)行目に相当する。
【0054】ソースプログラムが入力されると、字句解
析部31および構文解析部32の働きにより、中間コー
ドが生成される。
【0055】図8に、図7のソースプログラムをもとに
本実施形態に係るコンパイラにおいて生成される中間コ
ードの例を示す。
【0056】中間コードを形成する各々をノードと呼
ぶ。図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)までが終了
した後に続くブロックである。
【0057】次に、中間コードが生成されると、フロー
解析部34は中間コードを基にブロックの流れを解析す
る。
【0058】図9に、図8の中間コードに対するフロー
解析部34による解析結果例を示す。図9に示すよう
に、この中間コードのフローは、B0から始まりB1が
続き、B2とB3に分岐し、B4に併合されることがわ
かる。
【0059】続いて、データ依存解析部35は、データ
の依存関係を解析して、中間コードのノード間の前後関
係を明らかにする。このデータ依存解析では実際に命令
生成に対応するノードのみが対象となる。
【0060】本実施形態では、命令割り当て部36は同
一ブロック内の命令は同一ブロック内に配置するとの方
針で割り当てる。従って、データ依存関係部35は各ブ
ロック内でのみ依存関係の解析を行なう。
【0061】図10に、図8の中間コードに対するデー
タ依存解析部35による解析結果例を示す。解析結果に
おけるA→BはAがBよりも先に実行されなければなら
ないことを示す。例えば、図10の場合、(6−8)が
(6−9)よりも先に実行されなければならないことが
示される。
【0062】次に、命令割り当て部36による命令割り
当て処理の手順について説明する。
【0063】図11に、本実施形態に係る命令割り当て
処理のアルゴリズムの一例を示す。
【0064】また、図12に、図8に例示した中間コー
ドに対して図11に示すアルゴリズムを適用して生成さ
れたコードの例を示す。図12の例では、横に並んだ4
命令(例えば先頭行のcmpと3つのnop)が同時に
命令キャッシュ210からフェッチされ命令解析器20
1により5つの演算器(202〜206)のいずれかに
割り当てられる。その各々のサイクルを(10−1)〜
(10−5)がそれぞれ表している。
【0065】さて、図11の手順では、まず、未解析の
中間ノードが残っている限り次の中間ノードを読み、読
み込んだ中間ノードが条件分岐ノードであるかどうかを
確かめる(ステップS9−1,S9−2)。
【0066】条件分岐でない部分については従来と同様
の方法で命令生成をすればよい(ステップS9−3,S
9−4)。例えば先に挙げた参考文献2で示される方法
により命令を生成すれば良い。
【0067】読み込んだ中間ノードが条件分岐(図8で
は(6−9))である場合、動作モード設定命令を生成
する(ステップS9−5)。
【0068】図12では、(10−2)の「set g
t,1,2」がこの動作モード設定命令に相当する。s
etは、opcodeを示すニーモニックで、動作モー
ドレジスタに値を設定する命令である。gtとは、gr
eater thanの略である。本命令は、実行時点
での条件として、greater thanが成立して
いれば動作モードレジスタに1を、不成立なら動作モー
ドレジスタに2を設定する。
【0069】動作モードレジスタに1が設定された場
合、その値が変更されない限りプレディケート・フィー
ルドが1である命令か0である命令しか実行されない。
一方、動作モードレジスタに2が設定された場合、その
値が変更されない限りプレディケート・フィールドが2
である命令か0である命令しか実行されない。なお、プ
レディケート・フィールドが0である命令は、動作モー
ドレジスタの値によらず常に実行されるものとする。
【0070】次に、ステップS9−6にて、フロー解析
の結果に基づき条件分岐により到達し得るブロックBを
求める。それらの集合をBI={Bi1,Bi2,…}とす
る。
【0071】図9の例を参照すると、この場合、BI=
{B2,B3}と判明する。
【0072】次に、ステップS9−7にて、図10に例
示するようなデータ依存関係を保つように各サイクル毎
の各演算器(図3では202〜206)への命令の割り
当てを行なう。なお、BIに属する各ブロック毎の実行
頻度等のデータがあれば、これに基づき、頻度の多いブ
ロックのノードに対する命令を早いサイクルに優先的に
割り当てるようにすると好ましい。
【0073】BIに含まれるブロックの全ての中間コー
ドが無くなるまで順次割り当てを繰り返す。
【0074】図12ではB2の命令を優先的に割り当て
た例を示している。すなわち、最初のサイクルである
(10−3)で「ldi(2) Rt3,−1」を割り
当てている。このldiに続く(2)はプレディケート
・フィールドの値が2であることを示している。
【0075】なお、ここでは、B2に含まれる命令はプ
レディケート・フィールドを1に、B3に含まれる命令
はプレディケート・フィールドを2にして生成するもの
としている。
【0076】次に、ステップS9−8にて、BIに属す
る各ブロックの最後の命令が割り当てられたサイクルを
求める。これらを比較し最終サイクルでないものを求め
る。
【0077】図12の場合、各ブロックの最後の命令が
割り当てられたサイクルは(10−3)と(10−5)
であり、したがって最終サイクルでないもの(10−
3)となる。
【0078】次に、ステップS9−9にて、最終サイク
ルでないものについてはその動作モードで実行される無
条件分岐命令を生成して割り当てる。これは、BIの全
て命令が動作を終了するまで空のサイクルを回すのでは
高速化できないからである。
【0079】図12では、プレディケート・フィールド
が2である命令は(10−3)で終了するが、1である
命令は(10−5)で終了する。動作モードが2のとき
に(10−4)、(10−5)を実行すると2サイクル
無駄となる。このため(10−3)でb(2)L3を実
行する。これは動作モードが2のときだけ実行される無
条件分岐命令である。これにより動作モードが2のとき
に1サイクル高速化される。
【0080】本実施形態では、同サイクルでは分岐命令
は1つしか実行できないため、もし(10−3)に分岐
命令があればそれより後で分岐命令のないできるだけ早
いサイクルを探す。見つかったサイクルがBIに属する
最後の命令よりも前のサイクルであれば、そこに動作モ
ード2で実行される無条件分岐命令を生成して割り当て
ればよい。
【0081】以上によって、図12に例示したようなコ
ードが生成される。なお、この時点では、仮のレジスタ
が割り当てられた状態になっている。
【0082】さて、命令割り当て部36による命令割り
当てが終わると、続いてレジスタ割り当て部37による
レジスタ割り当てを行う。
【0083】図13に、図12に示すプログラムに対し
て、レジスタ割り当て部37によるレジスタ割り当てを
適用した結果得られるプログラムの例を示す。
【0084】図12では仮のレジスタとして割り当てら
れていたRp1,Rp2,Rt1,Rt2,Rt3が、
図13ではCPUが所有する真のレジスタRi,Rj,
R1,R2,R3に割り当て直されている。
【0085】なお、このレジスタ割り当てにおいて、レ
ジスタが不足する場合には、再度命令割り当て部36に
制御を戻し、命令の一部をレジスタを使用しないように
変更して命令割り当てをし直し、そして再度レジスタ割
り当てを行う。
【0086】以上のようにして、プレディケート実行を
サポートするCPUに対するオブジェクト・プログラム
が生成される。
【0087】ここで、生成されたプログラムで実行に必
要なサイクル数を計算すると次のようになる。通常、パ
イプライン制御を行なう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クロックで実行可能となる。
【0088】次に、本発明の第2の実施形態について説
明する。
【0089】本実施形態は、第1の実施形態の処理手順
に後述する手順を追加したもので、この追加部分以外は
第1の実施形態と同様である。以下では、第1の実施形
態と相違する点を中心に、また、第1の実施形態との比
較を交えながら、本実施形態について説明する。
【0090】本実施形態は、第1の実施形態において、
ある動作モードのときのみ実行される命令が動作モード
設定命令よりも前で実行されるように割り当て可能かを
判別し、割り当て可能と判別されたときに該命令を動作
モードに依らず実行される命令として割り当てるように
したものである。
【0091】本実施形態では、この処理は、命令割り当
て部36またはレジスタ割り当て部37にて実行され
る。
【0092】図14に、図7に例示するソースプログラ
ムに対して命令割り当てを行って得られたコード(図1
2)をもとにレジスタ割り当て部37が生成したプログ
ラムの例を示す。第1の実施形態におけるレジスタ割り
当て部37が生成したプログラムを例示した図13との
差異は、図14ではldi,lduiの2命令がL1の
後からL1の前に移動し、プレディケート・フィールド
が0になっていることである。
【0093】すなわち、R1は一時レジスタであり、も
しB2が実行されずB3が実行されるとしても先行実行
して構わないため、ldi,lduiの2命令をL1の
前に移動する。また、先行実行される命令は動作モード
が設定される前であるので、プレディケート・フィール
ドを0する。
【0094】これにより、B2が実行される場合は4ク
ロックと、第1の実施形態に比較して1クロック高速化
される。ただし、B3が実行される場合はクロック数に
増減はない。
【0095】次に、本発明の第3の実施形態について説
明する。
【0096】本実施形態は、第1の実施形態の処理手順
に後述する手順を追加したもので、この追加部分以外は
第1の実施形態と同様である。以下では、第1の実施形
態と相違する点を中心に、また、第1の実施形態との比
較を交えながら、本実施形態について説明する。
【0097】本実施形態は、第1の実施形態において、
命令コードのフィールドの値が一致する一連の命令列同
士を比較し、比較の結果、同等の命令がある場合に該命
令を動作モードにかかわらず実行される命令に変換する
ようにしたものである。
【0098】本実施形態では、この処理は、命令割り当
て部36またはレジスタ割り当て部37にて実行され
る。
【0099】図15に、ソースプログラムの例を示す。
図7のソースプログラムと比べて(5−8)と(13−
8)が異なる。すなわち、このプログラムは、条件i<
jが成立すればkに正数配列a[i]の値を代入し、不
成立なら正数配列a[j]の値を代入する、というもの
である。
【0100】図16に、第1の実施形態の処理手順を適
用し、B3優先による命令割り当てとレジスタ割り当て
を行なって得られたオブジェクト・プログラムの例を示
す。B2が実行される場合、(14−1)から(14−
7)まで7クロックかかり、B3が実行される場合、
(14−1)から(14−5)までと分岐の遅延1クロ
ックで6クロックかかる。
【0101】図17に、本実施形態に係る処理手順を適
用し、B3優先による命令割り当てとレジスタ割り当て
を行なって得られたオブジェクト・プログラムの例を示
す。本例では、ldi,ldui,ldの3つの命令は
いずれもB2とB3において共通する命令であるので、
このような命令を動作モード0で実行する命令とするこ
とにより共通化して命令数を減らす。これにより、B2
とB3のいずれが実行される場合でも、(15−1)か
ら(15−5)まで5クロックで実行が完了する。
【0102】次に、本発明の第4の実施形態について説
明する。
【0103】本実施形態は、第1の実施形態の処理手順
に後述する手順を追加したもので、この追加部分以外は
第1の実施形態と同様である。以下では、第1の実施形
態と相違する点を中心に、また、第1の実施形態との比
較を交えながら、本実施形態について説明する。
【0104】本実施形態は、第1の実施形態において、
特定の動作モードでのみ実行される命令を生成するより
も、動作モードによらずに動作する命令を生成した方が
実行速度が大きい場合には、動作モードによらずに動作
する命令を生成するようにしたものである。
【0105】本実施形態では、この処理は、命令割り当
て部36にて実行される。
【0106】図18に、ソースプログラムの例を示す。
図7と比べて(5−8)と(16−8)が異なる。すな
わち、このプログラムは、条件i<jが成立すればkに
配列a[i]の値を代入し、不成立なら配列b[j]の
値を代入する、というものである。
【0107】図19に、第1の実施形態の処理手順を適
用し、B3優先による命令割り当てとレジスタ割り当て
を行なって得られたオブジェクト・プログラムの例を示
す。B2が実行される場合、(17−1)から(17−
7)まで7クロックかかり、B3が実行される場合、
(17−1)から(17−5)までと分岐の遅延1クロ
ックで6クロックかかる。
【0108】図20に、プレディケート実行を行なわな
い命令割り当てとレジスタ割り当てを行なって得られた
オブジェクト・プログラムの例を示す。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クロック余計にかかる。
【0109】このように、演算器数や共に実行できる命
令数の制限等により、プレディケート実行を行なわない
方が高速になることがある。そこで、命令割り当ての際
に、プレディケート実行を行なわない方が高速になると
判断されたならば、プレディケート実行しないようにす
ると好ましい。
【0110】次に、本発明の第5の実施形態について説
明する。
【0111】本実施形態は、第1の実施形態の命令割り
当て処理を一部修正したもので、この修正部分以外は第
1の実施形態と同様である。以下では、第1の実施形態
と相違する点を中心に、また、第1の実施形態との比較
を交えながら、本実施形態について説明する。
【0112】本実施形態は、概略的には、第1の実施形
態において、動作モードのうち実行頻度の高い値を判別
し、実行頻度が高いと判別された動作モードに対応する
命令は分岐なしに実行されるように割り当て、必要なら
他の動作モードに対応する命令は上記の命令とは別のサ
イクルで実行されるように割り当てるようにしたもので
ある。
【0113】以下、本実施形態において、命令割り当て
部36による実行される命令割り当て処理の手順につい
て説明する。
【0114】図21に、本実施形態に係る命令割り当て
処理のアルゴリズムの一例を示す。
【0115】なお、ここでは、図7に例示するソースプ
ログラムが入力として与えられ、B3={(5−7),
(5−8)}のブロックがB2={(5−5),(5−
6)}のブロックよりも実行頻度が高いものとする。
【0116】図21のステップS19−1〜ステップS
19−6までの手順は、図11のステップS9−1〜ス
テップS9−6までの手順と同様である。
【0117】すなわち、ステップS9−1〜S9−6ま
での実行により、読み込んだ中間ノードが条件分岐であ
る場合に動作モード設定命令が生成し、そしてフロー解
析の結果に基づき条件分岐により到達し得るブロックの
集合としてBIが求められる。
【0118】本例の場合、BI={B2,B3}が得ら
れる。
【0119】次に、本実施形態では、ステップS19−
7にて、BIに属する各ブロックのうち、実行頻度の最
も多いブロックBj を選択し、このBj の命令を割り当
てる。
【0120】本例の場合、BIに属するブロック毎の実
行頻度を基に頻度の多いブロックB3が選択され、B3
の命令がプレディケート・フィールドを2にして割り当
てられる。
【0121】次に、本実施形態では、ステップS19−
8にて、Bj の命令を割り当てたのと同じサイクルで、
プレディケート実行をする分岐命令を割り当てるととも
に、分岐した先でBj 以外のブロックの命令を割り当
て、終了したら、Bj の命令が終了した後のブロックへ
と分岐する。
【0122】すなわち、第1の実施形態とは異なり、最
後に分岐命令を割り当てずに終了することとし、B3の
命令を割り当てたのと同じサイクルでプレディケート・
フィールドが1である無条件分岐命令を割り当てる。分
岐先でB2の命令を割り当て、最後にB3の命令の後の
ブロックへと分岐する。
【0123】これにより、頻度の高いブロックが実行さ
れるときは全く分岐が起こらず高速に実行可能となる。
頻度の小さいブロックが実行される場合は、分岐で飛び
出し、最後に分岐で合流する。
【0124】図22に、図7に例示するソースプログラ
ムに対し図21のアルゴリズムを適用したときにレジス
タ割り当て部37が生成するプログラムの例を示す。
【0125】本例では、B3の方が実行頻度が大きいた
め、(20−1)(20−2)に引き続いて(20−
3)ではB3の命令が割り当てられる。
【0126】「ldi(2) Rk,−1」が該当命令
である。この後分岐命令なしに後のブロックL3へと続
く。一方、B2が実行される場合には、(20−3)の
「b(1) L4」によってL4に無条件分岐する。こ
こでB2が実行された後、L3に飛ぶ。
【0127】B2が実行される場合、(20−1)から
(20−3)で3クロックかかる。一方、B3が実行さ
れる場合、(20−1)から(20−3)と、(20−
4)から(20−6)と、(20−3)の分岐の遅延
と、(20−6)の分岐の遅延で、計8クロックかか
る。つまり、実行頻度の大きいブロックが判別可能なと
きに本実施形態の命令割り当てを適用すると極めて高速
に実行することができる。
【0128】なお、以上の各実施形態では、高級言語で
記述されたプログラムを計算機で実行するオブジェクト
コードに変換するソフトウェアであるコンパイラの中で
命令割り当てをする場合を想定して記述したが、本発明
はターゲットCPUのアーキテクチャを意識しながらア
センプリ言語などを用いて直接プログラミングする場合
にも適用することができる。
【0129】また、以上の各実施形態では、BIに相当
する命令を終了した後で動作モードレジスタを初期値0
に戻す命令を生成していない。これはBIに相当する命
令を終了した後は、動作モードに依らない命令(プレデ
ィケート・フィールドの値が0の命令)を生成するた
め、動作モードを初期値に戻さなくても全ての命令が実
行されるからである。再びプレディケート実行する場合
は、その直前で動作モード設定命令を実行すれば良い。
動作モードを初期値に戻すためには1命令実行が必要で
あり、実行しないほうが同等かあるいは1サイクル高速
化が可能である。
【0130】なお、以上の各機能は、ソフトウェアとし
ても実現可能である。すなわち、本実施形態は、コンピ
ュータに所定の手順を実行させるための(あるいはコン
ピュータを所定の手段として機能させるための、あるい
はコンピュータに所定の機能を実現させるための)プロ
グラムを記録したコンピュータ読取り可能な記録媒体と
して実施することもできる。
【0131】本発明は、上述した実施の形態に限定され
るものではなく、その技術的範囲において種々変形して
実施することができる。
【0132】
【発明の効果】本発明によれば、プレディケート実行を
行なうCPUでプログラムを高速に実行することができ
る。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るコンパイラの構成例
を示す図
【図2】命令フォーマットの一例を示す図
【図3】CPUの一構成例を示す図
【図4】ソースプログラムの例を示す図
【図5】プレディケート実行をサポートしないCPUに
対する命令割り当ての一例を示す図
【図6】プレディケート実行をサポートするCPUに対
する命令割り当ての一例を示す図
【図7】ソースプログラムの例を示す図
【図8】中間コードの一例を示す図
【図9】フロー解析部による解析結果の例を示す図
【図10】データ依存解析部による解析結果の例を示す
【図11】命令割り当て手順の一例を示すフローチャー
【図12】命令割り当て部により生成されるプログラム
の例を示す図
【図13】レジスタ割り当て部により生成されるプログ
ラムの例を示す図
【図14】レジスタ割り当て部により生成されるプログ
ラムの例を示す図
【図15】ソースプログラムの例を示す図
【図16】レジスタ割り当て部により生成されるプログ
ラムの例を示す図
【図17】レジスタ割り当て部により生成されプログラ
ムの例を示す図
【図18】ソースプログラムの例を示す図
【図19】レジスタ割り当て部により生成されるプログ
ラムの例を示す図
【図20】レジスタ割り当て部により生成されるプログ
ラムの例を示す図
【図21】命令割り当て手順の他の例を示すフローチャ
ート
【図22】レジスタ割り当て部により生成されるプログ
ラムの一例を示す図
【符号の説明】
10…ソースプログラム 20…オブジェクトプログラム 30…コンパイラ 31…字句解析部 32…構文解析部 34…フロー解析部 35…データ依存解析部 36…命令割り当て部 361…動作モード設定命令生成部 362…命令比較部 363…分岐命令生成部 37…レジスタ割り当て部 200…CPU 201…命令解析器 202…分岐器 203,204…整数演算器 205,206…メモリアクセス器 207…レジスタ 208…動作モードレジスタ 209…プログラムカウンタ 210…命令キャッシュ 211…データキャッシュ 300…主記憶

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】命令コードに動作モードを示すフィールド
    を持ち、該命令コードの該フィールドの値とCPUが管
    理するレジスタの特定フィールドの値とが一定の関係に
    あるときのみ該命令を実行する機能を持つCPUに対
    し、各サイクルで実行される命令の割り当てを行なう命
    令割り当て方法であって、 動作モードを設定する命令を割り当てるステップと、 命令コードのフィールドの値が一致する一連の命令列の
    最後の命令同士の実行されるサイクルを比較するステッ
    プと、 命令コードのフィールドの値が一致する一連の命令列の
    最後の命令の実行サイクルが他よりも早い場合に、該命
    令コードと同じフィールド値を持つ分岐命令を該命令と
    同じサイクルまたは後のサイクルで実行するように割り
    当てるステップとを有することを特徴とする命令割り当
    て方法。
  2. 【請求項2】動作モードのうち実行頻度の高い値を判別
    するステップをさらに有し、 実行頻度が高いと判別された動作モードに対応する命令
    を早いサイクルに優先的に割当てることを特徴とする請
    求項1に記載の命令割り当て方法。
  3. 【請求項3】命令コードに動作モードを示すフィールド
    を持ち、該命令コードの該フィールドの値とCPUが管
    理するレジスタの特定フィールドの値が一定の関係にあ
    るときのみ該命令を実行する機能を持つCPUに対し、
    各サイクルで実行される命令の割り当てを行なう命令割
    り当て方法であって、 動作モードを設定する命令を割り当てるステップと、 ある動作モードのときのみ実行される命令が動作モード
    設定命令よりも前で実行されるように割り当て可能かを
    判別するステップと、 割り当て可能と判別された前記命令を動作モードに依ら
    ず実行される命令として割り当てるステップとを有する
    ことを特徴とする命令割り当て方法。
  4. 【請求項4】命令コードに動作モードを示すフィールド
    を持ち、該命令コードの該フィールドの値とCPUが管
    理するレジスタの特定フィールドの値が一定の関係にあ
    るときのみ該命令を実行する機能を持つCPUに対し、
    各サイクルで実行される命令の割り当てを行なう命令割
    り当て方法であって、 動作モードを設定する命令を割り当てるステップと、 命令コードのフィールドの値が一致する一連の命令列同
    士を比較するステップと、 前記比較の結果、同等の命令がある場合には該命令を動
    作モードにかかわらず実行される命令に変換するステッ
    プとを有することを特徴とする命令割り当て方法。
  5. 【請求項5】命令コードに動作モードを示すフィールド
    を持ち、該命令コードの該フィールドの値とCPUが管
    理するレジスタの特定フィールドの値が一定の関係にあ
    るときのみ該命令を実行する機能を持つCPUに対し、
    各サイクルで実行される命令の割り当てを行なう命令割
    り当て行方法であって、 特定の動作モードでのみ実行される命令を生成するより
    も、動作モードによらずに動作する命令を生成した方が
    実行速度が大きい場合には、動作モードによらずに動作
    する命令を生成することを特徴とする命令割り当て方
    法。
  6. 【請求項6】命令コードに動作モードを示すフィールド
    を持ち、該命令コードの該フィールドの値とCPUが管
    理するレジスタの特定フィールドの値が一定の関係にあ
    るときのみ該命令を実行する機能を持つCPUに対し、
    各サイクルで実行される命令の割り当てを行なう命令割
    り当て方法であって、 動作モードを設定する命令を割り当てるステップと、 動作モードのうち実行頻度の高い値を判別するステップ
    とを有し、 実行頻度が高いと判別された動作モードに対応する命令
    は分岐なしに実行されるように割り当てるとともに、 必要に応じて他の動作モードに対応する命令は、前記実
    行頻度が高いと判別された動作モードに対応する命令と
    は別のサイクルで実行されるように割り当てることを特
    徴とする命令割り当て方法。
  7. 【請求項7】動作モードに依存する実行をする必要がな
    くなっても、動作モードを戻す命令を割り当てないこと
    を特徴とする請求項1ないし6のいずれか1項に記載の
    命令割り当て方法。
  8. 【請求項8】前記CPUは、並行に実行できる演算器を
    複数持つものであることを特徴とする請求項1ないし7
    のいずれか1項に記載の命令割り当て方法。
  9. 【請求項9】命令コードに動作モードを示すフィールド
    を持ち、該命令コードの該フィールドの値とCPUが管
    理するレジスタの特定フィールドの値とが一定の関係に
    あるときのみ該命令を実行する機能を持つCPUに対
    し、各サイクルで実行される命令の割り当てを行なう命
    令割り当て装置であって、 動作モードを設定する命令を割り当てる手段と、 命令コードのフィールドの値が一致する一連の命令列の
    最後の命令同士の実行されるサイクルを比較する手段
    と、 命令コードのフィールドの値が一致する一連の命令列の
    最後の命令の実行サイクルが他よりも早い場合に、該命
    令コードと同じフィールド値を持つ分岐命令を該命令と
    同じサイクルまたは後のサイクルで実行するように割り
    当てる手段とを備えたことを特徴とする命令割り当て装
    置。
JP6332298A 1998-03-13 1998-03-13 命令割り当て方法及び命令割り当て装置 Expired - Fee Related JP3595158B2 (ja)

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)

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

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

* Cited by examiner, † Cited by third party
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 ループ並列化装置

Cited By (3)

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