JP2003099248A - プロセッサ、コンパイル装置及びコンパイル方法 - Google Patents

プロセッサ、コンパイル装置及びコンパイル方法

Info

Publication number
JP2003099248A
JP2003099248A JP2001286393A JP2001286393A JP2003099248A JP 2003099248 A JP2003099248 A JP 2003099248A JP 2001286393 A JP2001286393 A JP 2001286393A JP 2001286393 A JP2001286393 A JP 2001286393A JP 2003099248 A JP2003099248 A JP 2003099248A
Authority
JP
Japan
Prior art keywords
instruction
instructions
execution
condition
unit
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
JP2001286393A
Other languages
English (en)
Other versions
JP3564445B2 (ja
Inventor
Takehito Heiji
岳人 瓶子
Shuichi Takayama
秀一 高山
Tetsuya Tanaka
哲也 田中
Hajime Ogawa
一 小川
Nobuo Higaki
信生 桧垣
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2001286393A priority Critical patent/JP3564445B2/ja
Priority to US10/246,482 priority patent/US7076638B2/en
Priority to CNB2005100521315A priority patent/CN100392596C/zh
Priority to EP02021046.4A priority patent/EP1296227B1/en
Priority to CNB021424993A priority patent/CN1202470C/zh
Publication of JP2003099248A publication Critical patent/JP2003099248A/ja
Application granted granted Critical
Publication of JP3564445B2 publication Critical patent/JP3564445B2/ja
Priority to US11/452,282 priority patent/US7761692B2/en
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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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
    • 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
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 条件付き実行命令において、条件が成立しな
かった場合には、無動作命令として実行されてしまい、
ハードウェアの利用効率が悪く実効性能が低下してしま
うという問題点を克服する。 【解決手段】 プロセッサは、実行ステージ以前に命令
発行制御部31にて、搭載された演算器の個数以上の命
令を解読して実行条件の判定を行い、条件が偽であった
命令に関しては、その命令自体を無効化し、後続する有
効な命令によって演算器(ハードウェア)が有効に使用
されるように割り当てを行う。コンパイル装置は、実行
条件が真となる命令の個数がハードウェアの並列度の上
限を超えないようにスケジューリングを行う。各サイク
ルにおいて並列に配置される命令の個数自体はハードウ
ェアの並列度を超えていても構わない。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサ、コン
パイル装置及びコンパイル方法に関し、特に並列処理に
おいて演算器の効率的活用により性能の向上を図る技術
に関するものである。
【0002】
【従来の技術】近年のマイクロプロセッサ応用製品の高
機能化及び高速化に伴い、高い処理性能を持つマイクロ
プロセッサ(以下、単に「プロセッサ」という。)が望
まれている。一般に、各命令のスループットを高めるた
めに、1つの命令をいくつかの処理単位(ここでは「ス
テージ」と呼ぶ)に分割し、各ステージを別々のハード
ウェアで実行することにより、複数の命令を並行して処
理できるようにするパイプライン方式が採用されてい
る。また、パイプライン方式のような空間的な並列処理
に加えて、時間的に命令レベルでの並列処理を行うVL
IW(Very Long Instruction Word)方式やスーパース
カラ方式にて性能向上を図っている。
【0003】プロセッサの性能向上を妨げる主要因の1
つとして分岐処理のオーバーヘッドがある。このオーバ
ーヘッドは、上記パイプライン処理のステージ数が増す
ほど、命令供給のペナルティが大きくなる。また、命令
並列処理を行った場合、並列度が向上すればするほど、
分岐命令の頻度が増加し、オーバーヘッドが顕在化して
くる。
【0004】そこで、このオーバーヘッドを解消する従
来技術として、各命令に実行条件を示す情報を付加し、
その条件が成立するときにのみ命令で示されたオペレー
ションを実行する、という条件付き実行方式がある。こ
の方式では、実行時に各命令に付加された実行条件に対
応する条件フラグを参照し、条件が成立しなかった場合
には、その命令の実行結果を無効化する、すなわち無動
作命令として実行させる。
【0005】例えば、図10に示した条件分岐を含むフ
ローの処理を、各命令に実行条件を示す情報を付加する
方式で記述すると、図11のようなプログラムになる。
図11において、C0及びC1は、命令に付加された条
件を示しており、それに対応する条件フラグの値が真の
場合にはその命令が実行され、偽の場合にはその命令は
無動作命令として実行される。この例では、まず命令1
(比較命令)の比較結果がC0に格納される。それと同
時にC1にはC0と逆の条件が設定される。したがっ
て、命令2と命令3のうちいずれか一方に関して、実際
にオペレーションが実行され、残りの一方は無動作命令
として実行される。この結果、分岐処理が不要となり、
分岐処理のオーバーヘッドを解決している。
【0006】
【発明が解決しようとする課題】前述の従来の条件付き
実行方式では、条件が不成立の場合、当該命令は無動作
命令として動作することになり、実質はオペレーション
を実行しないことになる。したがって、2命令が並列に
記述され、2つの演算器を使用しているにもかかわら
ず、実際には1つの演算器しか有効に活用できていな
い。その結果、プログラムに記述された並列度に対し
て、実効性能が低くなってしまうという問題点がある。
【0007】本発明はかかる問題点に鑑みてなされたも
のであり、ハードウェアの有効利用を達成し、性能を向
上させたプロセッサを提供することを目的とする。
【0008】
【課題を解決するための手段】上記目的を達成するため
に、請求項1の発明は、複数の命令を供給するための命
令供給手段と、前記複数の命令を各々解読するための解
読手段と、前記複数の命令中に各命令を実行するか否か
を示す条件を指定する実行条件情報が指定され、当該実
行条件情報で指定された条件を参照して、有効なオペレ
ーションを実行する命令又は命令の集合を決定するため
の命令発行制御手段と、前記複数の命令中に各命令の動
作が指定され、当該指定に基づいて1つ又は複数のオペ
レーションを実行するための実行手段とを備えたプロセ
ッサにおいて、前記命令発行制御手段は、前記実行条件
情報で指定された条件を参照することにより、実行する
必要のある有効な命令であるか、実行する必要のない無
効な命令であるかを判断し、無効な命令であると判断し
た命令に関しては、当該命令を前記実行手段へ発行する
前に当該命令自体を削除するように制御し、かつ当該命
令に代えて当該命令に後続する有効な命令を前記実行手
段へ発行するように制御する機能を有することとしたも
のである。これにより、条件付き命令の条件が不成立の
場合でも、無動作命令が実行されず、実行手段中の演算
器が後続の命令によって有効利用されるため、演算器の
利用効率が高まり、実効性能を向上させることができ
る。
【0009】請求項2の発明では、前記実行手段は、前
記命令に対応するオペレーションを実行した後で、実行
結果を無効化するための実行結果無効化手段を有し、各
命令について、前記実行手段へ発行する前に当該命令自
体を削除するか、前記実行結果無効化手段にて実行結果
を無効化するかを選択するための命令無効化方法選択手
段を更に備えることとした。これにより、実行条件判定
に用いる条件フラグが未確定の場合にも、プロセッサの
パイプラインを停止する必要がなくなり、性能を向上さ
せることができる。
【0010】請求項3の発明では、前記命令無効化方法
選択手段は、各条件フラグの値が確定しているか否かを
示す条件フラグ有効情報を参照することによって、いず
れの命令無効化方法を選択するかを決定し、前記条件フ
ラグ有効情報は、前記解読手段において条件フラグを更
新する命令であると解読された場合に当該条件フラグの
確定性が偽に設定され、前記実行手段において当該命令
が実行されて当該条件フラグの値が確定した際に真に設
定されることとした。
【0011】請求項4の発明では、前記命令発行制御手
段は、複数の命令の機能が単一の命令で実現可能である
ような命令の組み合わせを検出し、それら複数の命令を
単一の命令として扱うように結合する機能を更に有する
こととした。これにより、元々複数の演算器を使用する
予定であった命令を単一の演算器で実行させるようにす
ることができ、演算器の利用効率が高まり、実効性能を
向上させることができる。
【0012】請求項5の発明では、前記複数の命令の結
合は、前記実行手段への発行前における命令の削除の後
に適用されることとした。
【0013】請求項6の発明では、前記命令発行制御手
段は、各サイクルにおいて同一の前記実行条件情報を持
つ命令が連続配置されている場合には、前記解読手段に
よって解読された複数の命令を予め各実行条件毎に分類
し、その分類毎に条件フラグを参照して、実行する必要
のある有効な命令であるか、実行する必要のない無効な
命令であるかを判断することとした。これにより、条件
フラグの参照を最小限に抑えることができ、命令の削除
の判定に要する時間を削減することができる。
【0014】請求項7の発明では、前記複数の命令中に
各命令が並列実行の境界であるか否かの並列実行境界情
報が指定され、前記命令発行制御手段は、各命令の前記
並列実行境界情報を参照して、当サイクルにおいて実行
の対象とする命令群を検出する機能を更に有することと
した。
【0015】請求項8の発明では、前記命令発行制御手
段は、命令内の並列実行境界情報にて検出された境界命
令以前の全ての命令が実行する必要のない無効な命令と
して削除された場合には、当該境界命令の並列実行境界
情報を無効化し、当該境界命令以降の命令の並列実行境
界情報を参照することにより当サイクルの新たな並列実
行境界を検出することとした。これにより、あるサイク
ルに配置された全ての命令が削除された場合には、その
サイクル自体をスキップして次のサイクルの命令を実行
することができるようになるので、実行サイクル数を削
減することができる。
【0016】また、請求項9の発明は、複数の命令を供
給するための命令供給手段と、前記複数の命令を各々解
読するための解読手段と、有効なオペレーションを実行
する命令又は命令の集合を決定するための命令発行制御
手段と、前記複数の命令中に各命令の動作が指定され、
当該指定に基づいて1つ又は複数のオペレーションを実
行するための実行手段とを備えたプロセッサにおいて、
前記命令発行制御手段は、前記解読手段にて解読された
命令群の中から、複数の命令の機能が単一の命令で実現
可能であるような命令の組み合わせを検出し、それら複
数の命令を単一の命令として扱うように結合する機能を
有することとしたものである。これにより、元々実行手
段中の複数の演算器を使用する予定であった命令を単一
の演算器で実行させるようにすることができ、演算器の
利用効率が高まり、実効性能を向上させることができ
る。
【0017】請求項10の発明では、前記命令発行制御
手段は、当サイクルにて実行対象にも削除対象にも結合
対象にもならずに残った命令群を検出し、それらの命令
群を次サイクル以降で発行の対象とするように制御する
機能を更に有することとした。これにより例外の発生や
コンパイル装置の不良により、あるサイクルにて発行さ
れずに残った命令が存在しても、誤動作を引き起こすこ
となく正確に実行を継続することができる。
【0018】また、請求項11の発明は、高級言語で記
述されたプログラムのソースコードを実行形式コードに
変換するためのコンパイル装置において、前記ソースコ
ード中の命令を、並列実行すべき複数の命令が隣接する
ように並べ直すための命令スケジューリング手段を備
え、前記命令スケジューリング手段は、各命令に付加さ
れた有効なオペレーションを実行する条件に関して、各
条件が同時に成立することがあり得るか否かを解析する
ための条件排他性解析手段と、並列実行可能な命令の集
合をサイクル毎に区分できるように命令の並べ替えを行
うための命令再配置手段とを有し、前記命令再配置手段
は、当サイクルに配置される命令のうち、有効なオペレ
ーションを実行する命令が使用する演算資源が対象機械
に搭載された演算器の制約を超えないかどうかを判定
し、かつ当サイクルに配置される2つの命令の実行条件
が前記条件排他性解析手段において同時に成立すること
があり得ないと判定された場合には、一定の条件下でい
ずれか一方の命令のみが演算資源を使用するものとして
扱うこととしたものである。これにより、命令の削除を
考慮して、搭載された演算器の個数以上の数の命令を1
サイクルに配置することができるようになり、実効性能
を向上させることができる。
【0019】請求項12の発明では、前記命令再配置手
段は、当サイクルに配置される2つの命令の実行条件が
前記条件排他性解析手段において同時に成立することが
あり得ないと判定された場合であっても、前記2つの命
令のうち少なくとも一方の命令の実行条件に対応する条
件フラグの内容が確定していない場合には、前記2つの
命令の両方が演算資源を使用するものとして扱うことと
した。これにより、条件判定に用いる条件フラグが未確
定の状態を考慮することができ、ハードウェアでパイプ
ラインを停止する必要なく正確な動作を保証することが
できる。
【0020】請求項13の発明では、前記命令再配置手
段は、当サイクルの前サイクルにおいて、前記2つの命
令のうち少なくとも一方の命令の実行条件に対応する条
件フラグを更新する命令が配置されているかどうかによ
って、条件フラグの内容が確定しているかどうかの判定
を行うこととした。
【0021】請求項14の発明では、前記命令再配置手
段は、前記条件排他性解析手段の解析結果に基づいて、
実行条件が同時に成立することがあり得ない命令に関し
てはいずれか一方のみが演算資源を使用するものとして
扱うとともに、演算資源を使用する複数の命令の機能が
単一の命令で実現可能である命令の組み合わせを検出
し、それら複数の命令を結合した単一の命令として扱う
こととした。これにより、命令の削除及び結合を考慮し
て、搭載された演算器の個数以上の数の命令を1サイク
ルに配置することができるようになるので、実効性能を
向上させることができる。
【0022】請求項15の発明では、前記命令再配置手
段は、当サイクルに配置可能と判定された命令の集合に
関して、同一の実行条件を持つ命令を連続して配置する
ように配置順序を調整する機能を更に有することとし
た。これによりハードウェアにて削除する命令を判定す
る際の条件フラグの参照を最低限に抑えることができ、
ハードウェア簡単化の効果が得られる。
【0023】請求項16の発明では、前記命令再配置手
段は、当サイクルに配置する命令を選択する際に、複数
の実行条件のうち特定の実行条件を持つ命令を優先的に
選択することとした。これにより、頻度が高い特定の実
行パスに最適化したコードを生成することができるよう
になり、実効性能を高めることができる。
【0024】また、請求項17の発明は、高級言語で記
述されたプログラムのソースコードを実行形式コードに
変換するためのコンパイル装置において、前記ソースコ
ード中の命令を、並列実行すべき複数の命令が隣接する
ように並べ直すための命令スケジューリング手段を備
え、前記命令スケジューリング手段は、並列実行可能な
命令の集合をサイクル毎に区分できるように命令の並べ
替えを行うための命令再配置手段を有し、前記命令再配
置手段は、複数の命令の機能が単一の命令で実現可能で
ある命令の組み合わせを検出し、それら複数の命令を結
合した単一の命令として扱って、当サイクルに配置可能
か否かの判定を行うこととしたものである。これによ
り、命令の結合を考慮して、搭載された演算器の個数以
上の数の命令を1サイクルに配置することができるよう
になり、実効性能を向上させることができる。
【0025】請求項18の発明では、前記命令スケジュ
ーリング手段は、前記命令再配置手段の結果に基づき、
命令内に並列実行の境界であるか否かを示す並列実行境
界情報を付加するための実行境界付加手段を更に有する
こととした。
【0026】また、請求項19の発明は、高級言語で記
述されたプログラムのソースコードを実行形式コードに
変換するためのコンパイル装置において、前記ソースコ
ード中の命令を、並列実行すべき複数の命令が隣接する
ように並べ直すための命令スケジューリング手段を備
え、前記命令スケジューリング手段は、各命令に付加さ
れた有効なオペレーションを実行する条件に関して、各
条件が同時に成立することがあり得るか否かを解析する
ための条件排他性解析手段と、並列実行可能な命令の集
合をサイクル毎に区分できるように命令の並べ替えを行
うための命令再配置手段とを有し、前記条件排他性解析
手段は、各基本ブロックの先頭の命令と、オペレーショ
ン実行の有効性に係るいずれかの条件フラグを更新する
命令とに対して、それぞれの時点での各条件フラグ間の
同時成立可能性を示すテーブルを生成することとしたも
のである。これにより、必要最低限の情報を生成するこ
とによって、各命令間の実行条件の排他性を解析できる
ようになり、コンパイル装置の使用メモリの削減、コン
パイル速度向上の効果が得られる。
【0027】請求項20の発明では、前記命令スケジュ
ーリング手段は、命令間の依存関係を解析するための依
存関係解析手段を更に有し、前記依存関係解析手段は、
前記条件排他性解析手段にて生成されたテーブルに基づ
いて、各命令の実行時点で有効である条件フラグ間の同
時成立可能性を探索し、2命令が同時に実行される可能
性があるか否かを解析することとした。
【0028】また、請求項21の発明は、高級言語で記
述されたプログラムのソースコードを実行形式コードに
変換するためのコンパイル方法において、前記ソースコ
ード中の命令を、並列実行すべき複数の命令が隣接する
ように並べ直す命令スケジューリングステップを備え、
前記命令スケジューリングステップは、各命令に付加さ
れた有効なオペレーションを実行する条件に関して、各
条件が同時に成立することがあり得るか否かを解析する
条件排他性解析ステップと、並列実行可能な命令の集合
をサイクル毎に区分できるように命令の並べ替えを行う
命令再配置ステップとを有し、前記命令再配置ステップ
は、当サイクルに配置される命令のうち、有効なオペレ
ーションを実行する命令が使用する演算資源が対象機械
に搭載された演算器の制約を超えないかどうかを判定
し、かつ当サイクルに配置される2つの命令の実行条件
が前記条件排他性解析ステップにおいて同時に成立する
ことがあり得ないと判定された場合には、いずれか一方
の命令のみが演算資源を使用するものとして扱う配置可
能判定ステップを有することとしたものである。
【0029】また、請求項22の発明は、高級言語で記
述されたプログラムのソースコードを実行形式コードに
変換するプログラムを記録した記録媒体において、前記
ソースコード中の命令を、並列実行すべき複数の命令が
隣接するように並べ直す命令スケジューリングステップ
を備え、前記命令スケジューリングステップは、各命令
に付加された有効なオペレーションを実行する条件に関
して、各条件が同時に成立することがあり得るか否かを
解析する条件排他性解析ステップと、並列実行可能な命
令の集合をサイクル毎に区分できるように命令の並べ替
えを行う命令再配置ステップとを有し、前記命令再配置
ステップは、当サイクルに配置される命令のうち、有効
なオペレーションを実行する命令が使用する演算資源が
対象機械に搭載された演算器の制約を超えないかどうか
を判定し、かつ当サイクルに配置される2つの命令の実
行条件が前記条件排他性解析ステップにおいて同時に成
立することがあり得ないと判定された場合には、いずれ
か一方の命令のみが演算資源を使用するものとして扱う
配置可能判定ステップを有することを特徴とするプログ
ラムを記録することとしたものである。
【0030】
【発明の実施の形態】以下、本発明に係るプロセッサ、
コンパイル装置及びコンパイル方法の実施の形態につい
て、図面を用いて詳細に説明する。
【0031】[実施の形態1:プロセッサ] (命令フォーマットとアーキテクチャの概要)まず、図
1(a)〜(c)を用いて、本発明に係るプロセッサが
解読実行する命令の構造について説明する。図1(a)
〜(c)は、本プロセッサの命令フォーマットを示す図
である。本プロセッサの各命令は、32ビットの固定長
であり、各命令は1ビットの並列実行境界情報(E:en
d bit)10を保持している。この情報は、当該命令と
それに後続する命令との間に並列実行の境界が存在する
か否かを示すものである。具体的には、並列実行境界情
報Eが“1”の場合にはその命令と後続命令との間に並
列実行の境界が存在し、並列実行境界情報Eが“0”の
場合には並列実行の境界が存在しないことになる。この
情報の利用方法については後で述べる。
【0032】また、各命令は3ビットの実行条件情報
(P:predicate)11を保持している。この実行条件
情報Pは、後述する図5中の8個の条件フラグC0〜C
7(311)のうち当該命令を実行するか否かの条件が
格納された条件フラグを指定するものである。この実行
条件情報Pで指定された条件フラグの値が“1”の場合
には当該命令で指定されたオペレーションを実行し、条
件フラグの値が“0”の場合にはオペレーションを実行
しない。
【0033】各命令の命令長から並列実行境界情報Eと
実行条件情報Pとを除いた28ビットの部分にてオペレ
ーションを指定する。具体的には、“Op1”、“Op
2”及び“Op3”のフィールドでは、オペレーション
の種類を表すオペコードを、“Rs”のフィールドで
は、ソースオペランドとなるレジスタのレジスタ番号
を、“Rd”のフィールドでは、デスティネーションオ
ペランドとなるレジスタのレジスタ番号をそれぞれ指定
する。また、“imm”のフィールドでは、演算用定数
オペランドを指定する。そして、“disp”のフィー
ルドでは、変位(ディスプレースメント)を指定する。
【0034】次に、図2(a)及び(b)を用いて、本
プロセッサのアーキテクチャの概要について説明する。
本プロセッサは、静的な並列スケジューリングを前提と
したプロセッサである。
【0035】命令の供給は、図2(a)に示すように、
毎サイクル128ビット固定長の命令供給単位(ここで
は「パケット」と呼ぶ。)で4命令ずつ供給する。そし
て、命令の実行は、図2(b)に示すように、1サイク
ルで並列実行の境界までの命令(ここでは「実行単位」
と呼ぶ。)を同時実行する。つまり、各サイクルにおい
て並列実行境界情報Eが“1”である命令までの命令を
並列実行することになる。供給されながら実行されなか
った命令は、命令バッファ内に残され、次のサイクル以
降で実行の対象となる。
【0036】つまり、このアーキテクチャでは、固定長
のパケット単位で命令を供給しておき、静的に求めた情
報を元に、各サイクルにおいて並列度に応じた適切な数
の命令を発行していく、ということになる。この手法を
とることにより、通常の固定長命令のVLIW方式で発
生していた無動作命令(nop命令)が全く無くなり、
コードサイズを削減することができる。
【0037】(プロセッサのハードウェア構成)図3
は、本発明に係るプロセッサのハードウェア構成を示す
ブロック図である。本プロセッサは、2つの演算器を持
つ並列実行プロセッサであり、大きく分けて、命令供給
部20、解読部30、実行部40から構成される。
【0038】命令供給部20は、図示されていない外部
メモリから命令群を供給し、解読部30に出力するもの
であり、命令フェッチ部21、命令バッファ22及び命
令レジスタ23からなる。
【0039】命令フェッチ部21は、32ビットのIA
(インストラクションアドレス)バス及び128ビット
のID(インストラクションデータ)バスを通じて図示
されていない外部メモリから命令のブロックをフェッチ
し、内部の命令キャッシュに保持するとともに、PC
(プログラムカウンタ)部42から出力されたアドレス
に相当する命令群を命令バッファ22に供給する。
【0040】命令バッファ22は、128ビットのバッ
ファを2個備えており、命令フェッチ部21によって供
給された命令を蓄積しておくために用いられる。命令バ
ッファ22へは、命令フェッチ部21から128ビット
単位でパケットが供給される。命令バッファ22に蓄積
された命令は、命令レジスタ23の適切なレジスタに出
力される。
【0041】命令レジスタ23は、4個の32ビットレ
ジスタ231〜234からなり、命令バッファ22から
送られてきた命令を保持するためのものである。命令レ
ジスタ23の周辺については、別の図面において更に詳
細な構成を示している。
【0042】解読部30は、命令レジスタ23に保持さ
れた命令を解読し、その解読結果に応じた制御信号を実
行部40に出力するものであり、大きく分けて、命令発
行制御部31、命令デコーダ32及び命令無効化方法選
択部38からなる。
【0043】命令発行制御部31は、命令レジスタ23
の4個のレジスタ231〜234に保持された命令に対
して、命令内の実行条件情報Pと、それに対応する条件
フラグとを参照することによって、条件フラグの値が偽
である命令に関しては、その命令自体を実質的に削除す
るといった処理を行う。ただし、命令無効化方法選択部
38で解読部30が選択された場合に限る。また、命令
発行制御部31は、命令内の並列実行境界情報Eを参照
することによって、並列実行の境界を越えた命令につい
て、その命令の発行を無効化するといった発行に関する
制御を行う。なお、命令発行制御部31については、別
の図面において更に詳細な動作説明を行う。
【0044】命令デコーダ32は、命令レジスタ23に
格納された命令群を解読する装置であり、第1命令デコ
ーダ33、第2命令デコーダ34、第3命令デコーダ3
5及び第4命令デコーダ36からなる。これらのデコー
ダ33〜36の各々は、基本的に1サイクルに1つの命
令を解読し、実行部40に制御信号を与える。また、命
令内に置かれた定数オペランドについては、各命令デコ
ーダから実行部40のデータバス48に転送される。
【0045】命令無効化方法選択部38は、条件フラグ
が偽であり実行する必要のない命令を、解読部30にて
無効化するのか実行部40にて無効化するのかを選択す
る。具体的には、後述する命令発行制御部31の条件フ
ラグ有効情報312(図5)にて、当該命令の条件フラ
グが有効である、つまり確定していると示された場合に
は、解読部30にて無効な命令の削除を行い、そうでな
い場合には、実行部40の書き込み制御部46にて当該
命令の実行結果の書き込みを無効化する。
【0046】実行部40は、解読部30での解読結果に
基づいて、最大2つのオペレーションを並列実行する回
路ユニットであり、実行制御部41、PC部42、レジ
スタファイル43、第1演算器44、第2演算器45、
書き込み制御部46、オペランドアクセス部47及びデ
ータバス48,49からなる。
【0047】実行制御部41は、解読部30での解読結
果に基づいて実行部40の各構成要素42〜49を制御
する制御回路や配線の総称であり、タイミング制御、動
作許可禁止制御、ステータス管理、割り込み制御などの
回路を有する。
【0048】PC部42は、次に解読実行すべき命令が
置かれている図示されていない外部メモリ上のアドレス
を、命令供給部20内の命令フェッチ部21に出力す
る。
【0049】レジスタファイル43は、64個の32ビ
ットレジスタ(R0〜R63)から構成される。これら
のレジスタに格納された値は、命令デコーダ32での解
読結果に基づいて、データバス48を経由して第1演算
器44及び第2演算器45に転送され、そこで演算が施
され、又はそこを単に通過した後に、データバス49を
経由してレジスタファイル43又はオペランドアクセス
部47に送られる。
【0050】第1演算器44及び第2演算器45は、そ
れぞれ2個の32ビットデータに対して算術論理演算を
行うALUや乗算器と、シフト演算を行うバレルシフタ
とを内部に有し、実行制御部41による制御の下で演算
を実行する。
【0051】書き込み制御部46は、ある命令を実行部
40にて無効化することが命令無効化方法選択部38に
て選択された場合のみ、当該命令の条件フラグの内容が
偽であったとき、当該命令の実行結果をレジスタファイ
ル43に書き込まないように制御を行う。これにより、
当該命令に関しては、無動作命令(nop命令)を実行
した場合と同等の結果となる。
【0052】オペランドアクセス部47は、レジスタフ
ァイル43と図示されていない外部メモリとの間でオペ
ランドの転送を行う回路である。具体的には、例えば、
命令内で、オペコードとして“ld”(ロード)が置か
れていた場合には、外部メモリに置かれていた1ワード
(32ビット)のデータがオペランドアクセス部47を
経てレジスタファイル43の指定されたレジスタにロー
ドされ、また、オペコードとして“st”(ストア)が
置かれていた場合には、レジスタファイル43の指定さ
れたレジスタの格納値が外部メモリにストアされる。
【0053】上記PC部42、レジスタファイル43、
第1演算器44、第2演算器45、書き込み制御部46
及びオペランドアクセス部47は、図示されるように、
データバス48(L1バス、R1バス、L2バス、R2
バス)及びデータバス49(D1バス、D2バス)で接
続されている。なお、L1バス及びR1バスは第1演算
器44の2つの入力ポートに、L2バス及びR2バスは
第2演算器45の2つの入力ポートに、D1バス及びD
2バスは第1演算器44及び第2演算器45の出力ポー
トにそれぞれ接続されている。
【0054】(命令レジスタ23の周辺の構成と命令発
行制御部31の動作)図4は、命令レジスタ23の周辺
の構成を示すブロック図である。図中、破線の矢印は制
御信号を表す。
【0055】命令レジスタ23は、Aレジスタ231、
Bレジスタ232、Cレジスタ233及びDレジスタ2
34の4個の32ビットレジスタからなる。命令レジス
タ23には、命令バッファ22から命令が供給される。
【0056】第1〜第4命令デコーダ33,34,3
5,36は、各々32ビットの命令を入力とし、それを
解読して、その命令の動作に関する制御信号を出力する
とともに、命令内に配置された定数オペランドを出力す
る。図4の50及び51は、各々実行が確定した命令の
定数オペランドである。
【0057】また、第2〜第4命令デコーダ34,3
5,36には、制御信号として1ビットの無動作命令フ
ラグが入力される。このフラグを“1”にセットする
と、そのデコーダは出力として無動作命令に相当する制
御信号を出力する。つまり、無動作命令フラグをセット
することにより、その命令デコーダのデコードを無効化
することができる。
【0058】そして、命令発行制御部31は、命令レジ
スタ23に格納された命令内の情報を参照して、並列実
行の境界以降の命令のデコードを無効化するための無動
作命令フラグの生成と、実行条件が真であり、かつ実行
部40でオペレーションを実行すべき有効な命令を選択
するための実行命令セレクタ371,372の制御と、
それに対応した制御信号を選択するための実行命令セレ
クタ373,374の制御とを行う。
【0059】図5は、本プロセッサの命令発行制御部3
1とその周辺回路の構成を示したものである。命令発行
制御部31は、まず各命令内の並列実行境界情報Eを参
照し、このサイクルでどこまでの命令を発行するのかを
決める。そして、このサイクルで発行されない命令に対
応する命令デコーダの無動作命令フラグを“1”にセッ
トすることにより、そのデコーダの出力を無動作命令に
相当する制御信号にする。この無動作命令フラグの生成
は、図5の命令発行制御部31の右半部に示されたよう
な簡単な論理回路(ORゲート)314,315で実現
することができる。それと同時に、どれだけの命令が発
行されずに残ったのかの情報を命令バッファ22に伝達
する。
【0060】具体的に説明すると、Aレジスタ231の
命令の並列実行境界情報Eが“1”の場合には、第2、
第3及び第4命令デコーダ34,35,36のデコード
を無効化する。また、Bレジスタ232の命令の並列実
行境界情報Eが“1”の場合には、第3及び第4命令デ
コーダ35,36のデコードを無効化する。そして、C
レジスタ233の命令の並列実行境界情報Eが“1”の
場合には、第4命令デコーダ36のデコードを無効化す
ることになる。
【0061】更に、命令発行制御部31は、各命令内の
実行条件情報Pを参照し、条件フラグが偽となる命令、
すなわち実行する必要のない命令に関して、その命令自
体を実質的に削除してしまうように、図4の実行命令セ
レクタ371〜374を制御する。本プロセッサでは、
各サイクル最大4命令をデコードするが、実際にオペレ
ーションが実行されるのはたかだか2命令ということに
なる。これによって、実行条件が偽の場合に実行部40
にて無動作命令が実行されてしまい、演算器44,45
の利用効率が悪くなるという問題点を解決している。
【0062】これを実現するために、命令発行制御部3
1は、実行命令選択制御部313を備えている。実行命
令選択制御部313は、8個の条件フラグ(C0〜C
7)311のうち命令内に指定された実行条件情報Pに
対応する条件フラグを参照することにより、オペレーシ
ョンを実行する必要のない命令を検出し、その命令を選
択せず、後続の有効な命令を選択するように実行命令セ
レクタ371〜374を制御する。非選択の命令自体が
実質的に削除されることになる。条件フラグ311は8
個の1ビットレジスタC0〜C7からなり、各命令内の
3ビットの実行条件情報Pをデコードすることにより指
定される。ただし、条件フラグC7の値は常に“1”で
あり、常に実行する命令は、実行条件としてC7を指定
することになる。プログラム中での記述ではC7の指定
は省略することができる。
【0063】ただし、条件フラグを更新する命令におい
て、条件フラグが確定するのは、実行ステージすなわち
実行部40なので、前サイクルにおいて、ある条件フラ
グを更新する命令を実行している場合、次サイクルの解
読ステージすなわち解読部30にてその条件フラグは確
定しておらず、命令の削除可否の判断を行うことができ
ない。この状態を検出するために、条件フラグ有効情報
312が備えられている。
【0064】条件フラグ有効情報312は、各条件フラ
グ毎にその値が有効であるか否かの1ビットの値を保持
しており、解読部30にてある条件フラグを更新する命
令を実行することが判明した際に、その条件フラグの有
効情報を“0”に設定し、実行部40においてその条件
フラグの値の更新が完了すると、その条件フラグの有効
情報を“1”に設定する。
【0065】命令発行制御部31では、各命令の実行条
件情報Pを参照した後、条件フラグ有効情報312を参
照して、各実行条件に対応する条件フラグの値が有効で
あるか否かを検出する。そして、有効でなかった場合、
すなわち条件フラグ有効情報312の該当ビットが
“0”であった場合、当該命令自体の削除は行わない。
当該命令はそのまま実行部40に発行され、条件フラグ
が確定した時点で、必要であればその命令の実行結果の
書き込みを無効化する。
【0066】条件フラグの値が有効であった場合、すな
わち条件フラグ有効情報312の該当ビットが“1”で
あった場合、当該命令の実行条件情報Pで指定された条
件フラグ311内の1ビットを参照し、その値が“1”
であった場合には、その命令をそのまま実行部40に発
行し、値が“0”であった場合には、その命令自体を実
質的に削除するように実行命令セレクタ371〜374
を制御する。
【0067】つまり、ある命令の実行条件情報Pが
“0”である場合、直前の命令において対応する条件フ
ラグが更新される場合には、実行部40においてその命
令の実行結果を無効化し、そうでない場合には、解読部
30において、その命令自体を実質的に削除してしまう
ことになる。
【0068】図6は、具体的な命令列を実行した際のパ
イプライン処理のタイミングを示す図である。ここで
は、3つの命令を上から順に1命令ずつ実行した場合を
想定している。最初の命令はレジスタR0の内容とレジ
スタR1の内容とを比較して、一致していれば条件フラ
グC0に“1”を設定し、そうでなければ“0”を設定
する比較命令であり、次の命令は、条件フラグC0の内
容が“1”の場合のみ、レジスタR3の内容からレジス
タR2の内容の減算を行って、結果をレジスタR3に書
き込む減算命令であり、最後の命令は、条件フラグC0
の内容が“1”の場合のみ、レジスタR4の内容とレジ
スタR5の内容との加算を行って、結果をレジスタR5
に書き込む加算命令である。
【0069】図6中、各命令の右側に、それぞれの命令
の命令フェッチステージ(IF)、解読ステージ(DE
C)、実行ステージ(EX)のタイミングを示してい
る。ここでは、最初の比較命令の結果が偽、すなわちC
0が“0”になった場合を仮定している。
【0070】図6を見てわかるように、最初の比較命令
の解読ステージ(DEC)にて、C0を更新する命令で
あることが検出され、C0の有効情報が“0”に設定さ
れ、実行ステージ(EX)にて、比較結果が確定した後
で、C0の有効情報が“1”に設定される。
【0071】後続の減算命令、加算命令ともにC0を条
件として実行する命令であるが、比較命令の直後の減算
命令に関しては、解読ステージ(DEC)の段階でC0
の値が有効でないため命令自体の削除は行わず、実行ス
テージ(EX)に発行され、そのステージにて実行結果
が無効化される。一方、加算命令に関しては、解読ステ
ージ(DEC)の時点でC0の値が確定しているため、
解読ステージ(DEC)にて命令自体が実質的に削除さ
れ、実行ステージ(EX)へは発行されない。この場
合、空いた演算器を加算命令の後続の命令で活用できる
ことになる。
【0072】以上のような制御による命令の無効化後に
おいても、発行されずに残った命令が存在した場合、命
令発行制御部31は残った命令の個数を命令バッファ2
2に伝達し、命令バッファ22内でそれらの命令が無効
化されず、次のサイクルにおいて再び命令レジスタ23
に転送されるように制御する。
【0073】このように、図1に示したような命令フォ
ーマットをとり、図4及び図5に示したような構成にす
ることで、演算器を有効活用する命令発行制御を行うこ
とができる。
【0074】(プロセッサの動作)次に、具体的な命令
を解読実行した場合の本実施形態のプロセッサの動作に
ついて説明する。
【0075】図7は、条件付き実行を含むプログラムの
一部を示す図である。このプログラムは5個の命令で構
成されており、各命令の処理内容はニーモニックで表現
されている。具体的には、ニーモニック“add”は、
定数又はレジスタの格納値とレジスタの格納値との加算
を表し、ニーモニック“sub”は、レジスタの格納値
からの定数又はレジスタの格納値の減算を表し、ニーモ
ニック“st”は、レジスタの格納値のメモリへの転送
を表し、ニーモニック“mov”は、定数又はレジスタ
の格納値のレジスタへの転送を表している。
【0076】また、“Rn(n=0〜63)”はレジス
タファイル43の中の1つのレジスタを示す。そして、
各命令の並列実行境界情報Eについても“0”又は
“1”で示してある。更に、実行条件情報Pで指定され
る条件フラグについて、各命令の先頭に“[ ]”で囲
んで記述してある。記述していない命令は常に実行する
命令である。
【0077】以下、各実行単位ごとの本プロセッサの動
作を説明する。ただし、ここでは、最初の時点で、条件
フラグC0の値が“1”、C1の値が“0”で確定して
いるものとする。
【0078】(実行単位1)命令1、命令2、命令3及
び命令4を含むパケットが外部メモリから供給され、そ
れぞれ命令レジスタ23に転送される。次に命令発行制
御部31が各命令の並列実行境界情報Eを参照する。こ
の場合、命令3の並列実行境界情報が“1”であるた
め、第4命令デコーダ36の解読結果を無効化、すなわ
ち無動作命令とする。
【0079】次に、命令発行制御部31は各命令の実行
条件情報Pを参照する。命令1の実行条件フラグはC0
であり、C0の値は“1”で確定しているので、命令1
を第1番目の命令として実行するように、オペランドの
選択を実行命令セレクタ371で制御し、解読結果を選
択するように実行命令セレクタ373を制御する。次に
命令2の実行条件フラグはC1であり、C1の値は
“0”で確定しているので、命令2自体は実質的に削除
し、オペレーションの実行は行わない。そして、後続の
命令3は常に実行される命令なので、命令3を第2番目
の命令として実行するように、オペランドの選択を実行
命令セレクタ372で制御し、解読結果を選択するよう
に実行命令セレクタ374を制御する。結果的に命令1
と命令3が実行する命令として実行部40に送られ、発
行されなかった命令4は、命令バッファ22内に残され
る。
【0080】実行部40では、レジスタR0の格納値に
1を加えた値がレジスタR0に格納され、レジスタR1
の格納値とレジスタR2の格納値とを加えた値がレジス
タR2に格納される。
【0081】(実行単位2)命令バッファ22に残され
た命令4と、新たに外部メモリから供給された命令5と
が順に命令レジスタ23に転送される。次に命令発行制
御部31が各命令の並列実行境界情報Eを参照する。こ
の場合、命令5の並列実行境界情報が“1”であるた
め、第3命令デコーダ35及び第4命令デコーダ36の
解読結果を無効化、すなわち無動作命令とする。
【0082】命令4及び命令5は、共に常に実行される
命令であるので、第1番目の命令として命令4を、第2
番目の命令として命令5を実行部40に送るように、実
行命令セレクタ371〜374を制御する。これで、供
給された全ての命令が発行されたことになる。
【0083】実行部40では、レジスタR0の格納値が
外部メモリ内のレジスタR3で示されるアドレスに転送
され、レジスタR2の格納値がレジスタR4に転送され
る。
【0084】以上のように、図7に示したプログラム
は、本プロセッサにおいて2つの実行単位で実行され
る。本プロセッサでは、演算器44,45の個数より多
くの命令をデコードしておき、不要な命令を適宜削除す
ることにより、これら演算器44,45の効率的な活用
を図っている。この例においても、各サイクルとも、実
行部40において2つのオペレーションを実行してお
り、搭載された演算器44,45が効率的に活用されて
いる。
【0085】(従来の命令発行制御部を持つプロセッサ
との比較)次に、図7に示した処理を、従来技術として
挙げた、条件実行命令を全て実行部へ発行し、この実行
部において適宜無効化するようなプロセッサに行わせた
場合を仮定して、本発明に係るプロセッサの場合と比較
する。
【0086】図8は、従来のプロセッサの命令レジスタ
の周辺の構成を示すブロック図である。従来のプロセッ
サとしては、本発明のプロセッサと同様に2つの演算器
を持つものとし、命令フォーマットは、図1の本発明の
プロセッサの命令フォーマットと同様とする。2並列の
プロセッサなので、命令レジスタ23aはAレジスタ2
31a及びBレジスタ232aを、命令デコーダ32a
は第1命令デコーダ33a及び第2命令デコーダ34a
をそれぞれ備える。50a、51aは各々定数オペラン
ドである。命令発行制御部31aでは、Aレジスタ23
1aに格納された命令の並列実行境界情報Eに応じて、
第2命令デコーダ34aの解読結果を無効化する、とい
う制御を行う。
【0087】図9は、図7に示したプログラムの処理
を、従来の命令発行制御部31aを持つプロセッサで実
行させるプログラムを示す図である。図9のプログラム
は、並列実行境界情報E以外の部分は、図7のプログラ
ムと同一である。並列実行境界情報Eは、最大2命令が
同時発行されるように設定されている。
【0088】以下、各実行単位ごとの従来のプロセッサ
の動作を説明する。ただし、ここでは、最初の時点で、
条件フラグC0の値が“1”、C1の値が“0”で確定
しているものとする。
【0089】(実行単位1)命令1、命令2、命令3及
び命令4を含むパケットが外部メモリから供給され、命
令1と命令2が順に命令レジスタ23aに転送される。
次に命令発行制御部31aがAレジスタ231aに格納
された命令1の並列実行境界情報Eを参照する。この場
合、命令1の並列実行境界情報Eは“0”であるため、
第2命令デコーダ34aの解読結果は無効化しない。し
たがって、命令1と命令2の両方を実行部に送ることに
なる。発行されなかった命令3及び命令4は、命令バッ
ファに残される。
【0090】実行部では、命令1の実行条件フラグであ
るC0が“1”であるため、レジスタR0の格納値に1
を加えた値がレジスタR0に格納される。そして、命令
2の実行条件フラグであるC1が“0”であるため、命
令2に対応するオペレーションは実行されないか、もし
くは実行後の結果を無効化し、結果的に無動作命令を実
行したのと同様になる。
【0091】(実行単位2)命令バッファに残された命
令3及び命令4が順に命令レジスタ23aに転送され、
新たに外部メモリから命令5が供給される。次に命令発
行制御部31aがAレジスタ231aに格納された命令
3の並列実行境界情報Eを参照する。この場合、命令3
の並列実行境界情報Eが“0”であるため、第2命令デ
コーダ34aの解読結果は無効化しない。したがって、
命令3と命令4の両方を実行部に送ることになる。発行
されなかった命令5は、命令バッファ22に残される。
【0092】実行部では、命令3及び命令4は共に常に
実行される命令であるので、これら2つの命令に対応す
るオペレーションが実行される。具体的には、レジスタ
R1の格納値とレジスタR2の格納値とを加えた値がレ
ジスタR2に格納され、レジスタR0の格納値が外部メ
モリ上の、レジスタR3で示されるアドレスに転送され
る。
【0093】(実行単位3)命令バッファに残された命
令5が命令レジスタ23aに転送される。次に命令発行
制御部31aがAレジスタ231aに格納された命令5
の並列実行境界情報Eを参照する。この場合、命令5の
並列実行境界情報Eが“1”であるため、第2命令デコ
ーダ34aの解読結果を無効化する。したがって、命令
5のみが発行される。これで、供給された全ての命令が
発行されたことになる。
【0094】実行部では、命令5は常に実行される命令
であるので、命令5に対応したオペレーションが実行さ
れる。具体的には、レジスタR2の格納値がレジスタR
4に転送される。
【0095】以上のように、図9に示したプログラム
は、従来の命令発行制御部31aを持つプロセッサにお
いて3つの実行単位で実行され、本発明のプロセッサの
場合に比べて、1つ多い実行単位で実行されることにな
る。これは、従来の命令発行制御部31aを持つプロセ
ッサでは、条件付き実行命令の条件が偽であった場合、
その命令は無動作命令として実行されてしまい、搭載さ
れている演算器を無駄に使用してしまうところに起因し
ている。
【0096】[実施の形態2:コンパイル装置]次に、
上述の実施の形態1におけるプロセッサで実行するコー
ドを生成するためのコンパイル装置、及びそのコンパイ
ル方法に関する実施の形態について説明する。
【0097】(用語説明)まず、ここで用いる用語を説
明する。 ・オブジェクトコード 再配置可能情報を含んだ対象プロセッサ向け機械語プロ
グラムをいう。連結編集を行い未確定アドレスを決定す
ることにより実行形式コードに変換することができる。 ・プレデセッサ ある命令を実行するために、それ以前に実行しておく必
要のある命令をいう。 ・実行グループ コンパイル装置によって、同一サイクルに並列実行可能
であるものをグループ化した命令群をいう。 ・基本ブロック 実行が先頭から始まり、必ず最後まで実行される一連の
命令列のことであり、ブロックの途中でブロックを出る
ことや、ブロックの途中からブロックに入ることがない
ものをいう。
【0098】(対象プロセッサ)本コンパイル装置が対
象とするプロセッサは、上記実施の形態1で説明したプ
ロセッサである。このプロセッサは、コンパイル装置に
て付与された並列実行境界情報Eを参照することにより
実行グループを生成し、ハードウェアでは並列実行可能
か否かの判定を行わない。したがって、並列実行境界間
すなわち実行グループ内に、同時実行可能な命令が正し
く配置されていることは、コンパイル装置が保証するこ
とになる。並列実行境界間に配置できる命令に対する制
約は、(1)並列実行グループ中の命令の総数は4を越
えない(命令デコーダの制約)、(2)並列実行グルー
プ中の命令のうち、実際に実行部にてオペレーションが
実行される命令の個数は2を越えない(実行命令数の制
約)、(3)並列実行グループ中の命令のうち、実際に
実行部にて使用する対象プロセッサ資源の総和は、2A
LUユニット、1メモリアクセスユニット、1分岐ユニ
ットを越えない(演算器の制約)、である。命令は、こ
れら3つの制約が満たされた場合のみ並列実行ができ
る。
【0099】(コンパイル装置の構成)図12は、本発
明の実施形態2におけるコンパイル装置の構成及び関連
するデータを示すブロック図である。本コンパイル装置
は、高級言語で書かれたソースコード120からオブジ
ェクトコード130を生成するプログラム処理装置であ
り、コンパイラ上流部100、アセンブラコード生成部
101、命令スケジューリング部102、オブジェクト
コード生成部103からなる。
【0100】コンパイラ上流部100は、ファイル形式
で保存されている高級言語ソースコード120を読み込
み、構文解析及び意味解析を行って内部形式コードを生
成する。更に必要に応じて、最終的に生成される実行形
式コードのサイズやその実行時間が短くなるように内部
形式コードを最適化する。
【0101】アセンブラコード生成部101は、コンパ
イラ上流部100により生成、最適化された内部形式コ
ードからアセンブラコードを生成する。
【0102】コンパイラ上流部100及びアセンブラコ
ード生成部101での処理は本発明の主眼ではなく、ま
た、従来のコンパイル装置で行われてきた処理と同等で
あるので、詳細説明は省略する。
【0103】(命令スケジューリング部102)命令ス
ケジューリング部102は、アセンブラコード生成部1
01で生成されたアセンブラコードに対し、命令に付加
された各条件間の排他性の解析、命令間の依存関係の解
析、命令の再配置(命令順の並べ替え)及び並列実行境
界の付加を行い、アセンブラコードを対象プロセッサ向
けに並列化する。命令スケジューリング部102は、条
件排他性解析部110、依存関係解析部111、命令再
配置部112及び実行境界付加部113から構成され
る。
【0104】命令スケジューリング部102内では、ま
ず条件排他性解析部110が動作する。その後、各基本
ブロックごとに、依存関係解析部111、命令再配置部
112及び実行境界付加部113が動作する。各部の詳
細な動作は以下のとおりである。
【0105】条件排他性解析部110は、条件フラグの
排他性を解析し、各基本ブロックの先頭と、各条件フラ
グ更新命令に対して条件排他情報テーブルを生成してい
く。条件排他情報テーブルは、全ての条件フラグの組み
合わせに対して、条件が排他であるか否かの情報を持つ
配列である。条件排他情報テーブルの具体例について
は、後で示す(図16)。ここでは、全ての条件フラグ
の組み合わせが排他でない情報テーブルのことを無排他
テーブルと呼ぶ。
【0106】図13は、条件排他性解析部110での処
理手順を示すフローチャートである。条件排他性解析部
110では、各命令に相当するコンパイル装置内部の中
間コードを、下向きに探索して行き、各基本ブロックの
先頭及び各条件フラグ更新命令に対して、条件排他情報
テーブルを設定していく。
【0107】まず、現時点で有効である有効テーブルT
vを無排他テーブルで初期化する(ステップS11)。
以後、各基本ブロックについて、下向きに探索していく
(ステップS12)。
【0108】ある基本ブロックに関する判定(ステップ
S13)の結果、当該基本ブロックの先行基本ブロック
が1つだけの場合は、当該基本ブロック先頭テーブルに
有効テーブルTvを設定し(ステップS14)、そうで
ない場合は、その時点での排他関係が特定できないの
で、当該基本ブロック先頭テーブルに無排他テーブルを
設定する(ステップS15)。
【0109】次に、基本ブロック内の各命令について探
索していく(ステップS16)。比較命令などの条件フ
ラグを更新する命令を発見すると(ステップS17)、
その命令が同時に排他な条件を設定する命令であるかど
うかを判定する(ステップS18)。同時に排他な条件
を設定する命令は、図11の命令1の条件フラグC0と
C1を更新する比較命令などが該当する。
【0110】同時に排他な条件を設定する命令である場
合、まず有効テーブルTv内の当該命令で更新する条件
フラグに該当する部分を全て偽に設定しておいて、その
後、当該命令で排他に設定される条件フラグの組のみ真
に設定する。そして、当該命令用の排他情報テーブルに
有効テーブルTvを設定する(ステップS19)。
【0111】同時に排他な条件を設定しない命令である
場合、当該命令で更新する条件フラグに関する排他性が
崩れるので、有効テーブルTv内の当該命令で更新する
条件フラグに該当する部分を全て偽に設定する。そし
て、当該命令用の排他情報テーブルに有効テーブルTv
を設定する(ステップS20)。
【0112】以上を、各基本ブロック毎に繰り返してい
く(ステップS21、S22)。これによって、全基本
ブロックの先頭及び条件フラグを設定する全ての命令に
ついて、それぞれの時点での条件フラグの排他性に関す
る情報を保持することができる。
【0113】依存関係解析部111は、処理対象に含ま
れる命令間の依存関係を解析し、依存グラフとして表現
する。命令間の依存関係には以下の3種類がある。いず
れの依存関係にある命令も、元の命令順を変更するとプ
ログラムの意味が異なってしまうため、命令並べ替え時
においても依存関係は守る必要がある。 ・データ依存関係 ある資源を定義する命令と、同じ資源を参照する命令と
の間の依存関係。 ・逆依存関係 ある資源を参照する命令と、同じ資源を定義する命令と
の間の依存関係。 ・出力依存関係 ある資源を定義する命令と、同じ資源を定義する命令と
の間の依存関係。
【0114】依存関係解析部111では、処理対象に含
まれる各命令毎に、これに対応するノード(節)を、ま
た各依存関係毎に、これに対応するエッジ(矢印)を生
成し、依存グラフを生成する。この際、参照及び定義す
る資源に関して依存のある2命令間であっても、それぞ
れの命令の実行条件が排他である、すなわち同時に成立
することはないことが保証されれば、それら2命令が共
に資源を参照又は定義することはありえないので、その
2命令間には依存関係が存在しないことになる。したが
って、それら2命令に対応するノード間にはエッジを生
成しない。
【0115】これを実現するため、先行する命令Aと命
令Bに関して、条件排他性解析部110で設定された排
他情報テーブルを利用して、2命令の実行条件が排他で
あるか否かを検出する必要がある。この排他性の検出を
行うアルゴリズムを図14に示す。
【0116】まず、命令Aの実行条件フラグをCnとす
る(ステップS31)。そして、命令Aの実行時点での
有効な排他情報を求めるため、命令Aから上向きに探索
していき、条件フラグを更新する命令を発見するか、基
本ブロックの先頭に到達した時点で、該当する排他情報
テーブルを有効テーブルTvとする(ステップS3
2)。
【0117】次に、命令Bまでの経路をたどるため、命
令Aから下向きに探索していく(ステップS33)。命
令Bを発見した場合(ステップS34)、その時点での
有効テーブルTvを参照して、条件フラグCnと命令B
の実行条件との排他関係を求めて終了する(ステップS
35)。Cn以外の条件フラグを更新する命令を発見し
た場合(ステップS36)、その命令に対応する排他情
報テーブルで有効テーブルTvを更新して、継続する
(ステップS37)。条件フラグCnを更新する命令を
発見した場合(ステップS38)、排他性を保証できな
くなるので偽を返す(ステップS39)。以上を繰り返
す(ステップS40)。
【0118】このようにして、資源の定義及び参照関係
と、実行条件の排他性との両方を解析して、各命令間の
依存関係を構築していく。
【0119】具体例として、図15に示したアセンブラ
コードに対する条件排他性解析部110及び依存関係解
析部111の適用結果を説明する。
【0120】図16は、図15のアセンブラコードの命
令2(比較命令)に対応する条件排他情報テーブルを示
す図である。条件排他情報テーブルは、条件フラグC0
〜C7の全ての組み合わせに対する排他性を示す配列で
ある。この場合は、命令2によって、条件フラグC0と
条件フラグC1とが排他であることが設定されることに
なる。
【0121】図17は、依存関係解析部111の出力で
ある依存グラフを示す図である。図17中、実線はデー
タ依存関係を、破線は逆依存関係を示す。命令2(比較
命令)は命令1で更新されるレジスタR0を参照するた
め、データ依存があり、命令3及び命令4は命令2で更
新される条件フラグC0及びC1を参照するため、デー
タ依存関係がある。ここで、命令3ではレジスタR2を
更新し、命令4ではレジスタR2を参照しているため、
一見すると命令3から命令4へのデータ依存関係が存在
するように見える。しかし、それぞれの命令の実行条件
であるC0及びC1は命令2によって排他な条件として
設定されているため、図16に示した条件排他情報テー
ブルを参照することにより2命令が共に実行されること
があり得ないことが判明し、これら2命令間には依存関
係は存在しないものとする。
【0122】図12の説明に戻って、命令再配置部11
2は、依存関係解析部111で生成された依存グラフを
用いて、処理対象の命令を並べ替え、対象プロセッサ向
けの並列化されたアセンブラコードを生成する。命令再
配置部112の処理の詳細は以下のとおりである。
【0123】図18は、命令再配置部112での処理手
順を示すフローチャートである。命令再配置部112
は、依存関係解析部111が生成した依存グラフの全て
のノードについて、以下のループ1の処理(ステップS
52〜S60)を繰り返す(ステップS51、S6
1)。
【0124】まず、命令再配置部112は、現時点で配
置候補となり得るノードを依存グラフより抽出し配置候
補ノード集合とする(ステップS52)。ここで配置候
補となり得るノードとは、「プレデセッサが全て配置完
了済み」であるノードである。
【0125】次に、命令再配置部112は、配置候補ノ
ード集合の全ての候補ノードについて、以下のループ2
の処理(ステップS54〜S58)を繰り返す(ステッ
プS53、S59)。
【0126】まず、配置候補ノード集合から現時点で配
置することが最良と思われるノード(以下、単に「最良
ノード」と呼ぶ。)を取り出す(ステップS54)。最
良ノードの決定方法については後述する。続いて最良ノ
ードが、実際に配置可能か否かを判断し(ステップS5
5)、可能な場合は仮配置する(ステップS56)。こ
の判断は、前述のプロセッサの解読ステージでの命令自
体の削除の効果を有効に活かすため、既に仮配置されて
いるノードと最良ノードとの実行条件の排他性を考慮し
つつ、前述の演算器の制約、実行命令数の制約及び命令
デコーダの制約を満たすかどうかによって決定する。条
件排他性の考慮には、条件排他性解析部110の結果を
用いる。ただし、実行条件フラグを更新する命令の次の
サイクルにおいては、当該実行条件で実行される命令自
体の削除は行われないことも考慮する。つまり、この場
合は実行条件の排他性を考慮せず、純粋に演算器や実行
命令数の制約で配置可能性を判定する。
【0127】続いて、現時点で仮配置されているノード
集合を調べ、更に命令を配置することができるか否かを
判断する(ステップS57)。配置不可と判断された場
合はループ2を終了し処理をステップS60へ移す。
【0128】配置可能と判断された場合、最良ノードが
配置されたことによって新たに配置候補となり得るノー
ドが生じたか否かを判断し、新たな配置候補が生じた場
合はこれを配置候補ノードに追加する(ステップS5
8)。ステップS58で新たに配置候補にできるのは、
「(現在配置しようとしている)最良ノードのみをプレ
デセッサとして持ち、かつ、最良ノードとの依存関係が
逆依存もしくは出力依存」のノードである。つまり、こ
こで新たな配置候補になることができるノードは、最良
ノードと同じサイクルで実行することはできるが、最良
ノードより前のサイクルでは実行できないノードであ
る。
【0129】ループ2が終了した後、仮配置ノード集合
に含まれているノードを確定する(ステップS60)。
具体的には、仮配置ノード集合に含まれているノードに
対応する命令を元の命令列から取り出し、実行境界付加
部113へ渡すための新たな命令列に再配置する。この
段階で配置候補ノードの一部が、同時に実行する命令群
としてまとめられ確定したことになる。
【0130】次に、ステップS54における最良ノード
の決定方法について述べる。最良ノードは、依存グラ
フ、仮配置領域を参照して、処理対象の命令全体を最も
短時間で実行できるであろう命令をヒューリスティック
に選び出す。ここでは現時点での依存グラフにおいて依
存グラフの終端までの命令の実行時間総和が最も多いも
のを選ぶ。この条件に合致する命令が多数ある場合に
は、元の命令順が早い命令を最良ノードとする。
【0131】再び図12に戻って、実行境界付加部11
3は、命令再配置部112のステップS60で配置が確
定した命令群の末尾毎に並列実行境界情報Eを設定す
る。
【0132】オブジェクトコード生成部103は、命令
スケジューリング部102が出力したアセンブラコード
をオブジェクトコード130に変換し、ファイルとして
出力する。
【0133】(コンパイル装置の動作)次に、本コンパ
イル装置の特徴的な構成要素の動作について、具体的な
命令を用いて説明する。
【0134】図19は、ソースコードをコンパイラ上流
部100に入力し、アセンブラコード生成部101を経
て生成されたアセンブラコードである。命令スケジュー
リング部102は図19のコードを入力として受け取
る。図19に含まれる各命令の意味は以下のとおりであ
る。 ・命令1…レジスタR0の格納値と定数0とが一致して
いるかを比較し、真偽を条件フラグC0に設定し、その
逆の条件を条件フラグC1に設定する。 ・命令2…条件フラグC0の値が真の場合にのみ、レジ
スタR1の格納値とレジスタR2の格納値とを加算して
レジスタR2に格納する。 ・命令3…条件フラグC1の値が真の場合にのみ、レジ
スタR2の格納値とレジスタR3の格納値とを加算して
レジスタR3に格納する。 ・命令4…条件フラグC0の値が真の場合にのみ、レジ
スタR1の格納値とレジスタR3の格納値とを加算して
レジスタR3に格納する。 ・命令5…条件フラグC1の値が真の場合にのみ、レジ
スタR3の格納値とレジスタR4の格納値とを加算して
レジスタR4に格納する。 ・命令6…条件フラグC0の値が真の場合にのみ、レジ
スタR2の格納値とレジスタR4の格納値とを加算して
レジスタR4に格納する。 ・命令7…条件フラグC1の値が真の場合にのみ、レジ
スタR3の格納値とレジスタR5の格納値とを加算して
レジスタR5に格納する。
【0135】以下、命令スケジューリング部102の動
作を説明する。まず、条件排他性解析部110と依存関
係解析部111とが起動され、依存グラフが生成され
る。図19のコード例では、命令1で生成した条件フラ
グC0とC1が、命令2以降において排他であることを
考慮しつつ、資源の定義及び参照関係を解析する。図2
0に、生成された依存グラフを示す。
【0136】次に、命令再配置部112が起動される。
図18のフローチャートに沿って説明すると、まず第1
サイクルで、配置候補ノード集合を生成する(ステップ
S52)。図20の依存グラフから、ここでは命令1の
みが配置候補ノードとなる。次に最良ノードを取り出す
(ステップS54)。ここでは、自動的に命令1が選択
される。そして、配置可能判定ステップ(S55)にお
いて、配置可能であると判定される。更に、配置状態判
定ステップ(S57)においても、まだ配置可能である
と判定されるが、配置候補ノード追加ステップ(S5
8)において追加対象となる命令が存在しないため、配
置ノード確定ステップ(S60)にて、第1サイクルは
命令1のみを発行するように確定される。
【0137】次のサイクルでは、命令2、命令3及び命
令4が配置候補ノードとなる。命令2及び命令3が順に
最良ノードとして選ばれ、仮配置される。次に、命令4
が最良ノードとして選ばれ、配置可能判定ステップ(S
55)に入る。ここで、条件排他性を考慮した判定が行
われるわけであるが、直前のサイクルで実行条件C0及
びC1の値が更新されているため、このサイクルではC
0及びC1を実行条件とする命令の解読ステージでの削
除は実施されない。したがって、既に仮配置されている
命令2及び命令3が削除されることがないので、ハード
ウェアに搭載した演算器の制限により、命令4は同時発
行不可能、すなわち配置不可能と判定される。こうし
て、第2サイクルでは、命令2及び命令3を発行するよ
うに確定される。
【0138】次のサイクルでは、命令4、命令5、命令
6及び命令7が配置候補ノードとなる。命令4及び命令
5が順に最良ノードとして選ばれ、仮配置される。次
に、命令6が最良ノードとして選ばれ、配置可能判定ス
テップ(S55)に入る。ここで、条件排他性を考慮し
た判定が行われる。命令6が実際にオペレーションを実
行する場合、すなわち命令6の実行条件フラグC0が真
である場合には、条件フラグC1は偽であるため、C1
を実行条件とする命令5はオペレーションを実行せず、
演算器を使用しない。したがって、命令4及び命令6の
組み合わせにおいて演算器の制約を満たしているので、
命令6は配置可能と判定される。次に命令7が最良ノー
ドとして選ばれるが、上記と同様に、命令7がオペレー
ションを実行する場合、命令4及び命令6は削除される
ため、命令5及び命令7のみの組み合わせによって演算
器の制約を判定し、命令7は配置可能と判定される。こ
うして、第3サイクルでは、命令4、命令5、命令6及
び命令7を発行するように確定される。これで、未配置
のノードが無くなったので、命令再配置部112の処理
が完了する。
【0139】最後に、実行境界付加部113が起動され
る。ここでは、上記の命令再配置部112による配置さ
れた命令群の末尾の命令に並列実行境界情報Eを設定し
ていく。具体的には、命令1、命令3及び命令7の並列
実行境界情報Eに“1”を設定し、残りの命令の並列実
行境界情報Eには“0”を設定する。
【0140】以上で、命令スケジューリング部102の
処理が完了する。続いてオブジェクトコード生成部10
3が起動され、オブジェクトコードが出力される。
【0141】図21に、最終的な実行形式コードを示
す。実際の実行形式コードは128ビット単位にまとめ
られたビット列である。図21に示した実行形式コード
は、本発明に係る2個の演算器を持つプロセッサにて、
3つの実行グループで実行される。
【0142】(従来のコンパイル装置との比較)次に、
図19に示したアセンブラコードを、本発明のコンパイ
ル装置の構成をとらない従来のコンパイル装置にてコン
パイルした場合を仮定して、本発明に係るコンパイル装
置の場合と比較する。対象プロセッサは、本発明のプロ
セッサと同様に2個の演算器を備えたプロセッサとす
る。
【0143】従来のコンパイル装置は、命令再配置部に
おいて違いがある。まず、最初のサイクルでは、依存関
係のため命令1のみ発行する。次のサイクルでは、命令
2、命令3及び命令4が候補となるが、1サイクルに2
つという演算器の制約のため、命令2及び命令3のみを
発行する。次のサイクルでは、命令4、命令5、命令6
及び命令7が候補となるが、演算器の制約のため、命令
4及び命令5のみを発行する。次のサイクルでは、命令
6及び命令7が候補となり、演算器の制約を満たすた
め、両方の命令が発行される。こうして、命令再配置が
完了する。実行境界付加部では、具体的には、命令1、
命令3、命令5及び命令7の並列実行境界情報Eに
“1”を設定し、残りの命令の並列実行境界情報Eには
“0”を設定する。以上で命令スケジューリング処理が
完了する。
【0144】図22に、結果として生成される実行形式
コードを示す。図22に示した実行形式コードは、2個
の演算器を持つプロセッサにて4つの実行グループで実
行される。
【0145】図21と図22を比較すると、従来のコン
パイル装置の生成コード(図22)では、本発明のコン
パイル装置の生成コード(図21)の場合に比べ、実行
グループが1つ増えている。つまり、実行サイクル数が
1サイクル増していることになる。このように実行グル
ープ数が増加したのは、本発明の命令スケジューリング
部102のような構成をとらなかったために、全ての命
令が実行ステージへ発行されるものとして扱ってしま
い、ハードウェアに搭載された演算器の個数を上限とし
た配置しかできないためである。一方、本発明のコンパ
イル装置では、命令自体の無効化を考慮してハードウェ
アに搭載された演算器の個数以上の数の命令を1サイク
ルに配置することが可能であり、演算器を有効活用する
ことができる。
【0146】なお、本実施形態で示されるコンパイル装
置の処理手順をフロッピー(R)ディスク、ハードディ
スク、CD−ROM、MO、DVDなどの記録媒体に入
れることにより、本実施形態で示されるコンパイル装置
をコンピュータで実現できる。
【0147】また、本実施形態で示されるコンパイル装
置により生成された実行形式コードをフロッピー(R)
ディスク、ハードディスク、CD−ROM、MO、DV
D、半導体メモリなどの記録媒体に入れることもでき
る。
【0148】[実施の形態3:プロセッサ]次に、上記
実施の形態1のプロセッサを拡張したプロセッサの実施
の形態について説明する。
【0149】本プロセッサのハードウェア構成について
は、大部分は前述の第1の実施の形態のプロセッサと同
一であるが、実行グループ内に配置される命令群の実行
条件情報の配置に制限が加わっている。具体的には、1
つの実行グループ内には、同一の実行条件を持つ命令は
必ず連続して配置される、という制限である。後述する
実施の形態4のコンパイル装置は、この制限に従ってコ
ードを生成する。これによって、プロセッサとしては、
命令発行制御部の構成が異なってくることになる。
【0150】(命令発行制御部の構成と動作)図23
は、本実施の形態のプロセッサの命令発行制御部140
とその周辺回路の構成を示したものである。図23中の
命令発行制御部140のほとんどの部分は、図5に示し
た実施の形態1のプロセッサのものと同一である。異な
る点は、実行命令選択制御部141の制御方法と、実行
命令選択制御部141の後段に命令結合部142が追加
されていることの2点である。
【0151】まず、実行命令選択制御部141は、実施
の形態1で示したのと同様に、実行条件が偽となる命令
について命令自体を実質的に削除する制御を行うのであ
るが、前述のように実施の形態1の場合と異なり、命令
の配置順に制限が加わっているため、それを積極的に活
用する。具体的には、命令配置順には、同一の実行条件
情報を持つ命令は連続して配置される、という制限があ
るので、まず解読後の命令群を各実行条件毎に分類す
る。命令配置順の制限により、この分類は容易に行うこ
とができる。
【0152】次に、実行条件フラグの値が“0”で確定
しているか否かを、分類された各実行条件毎に検査す
る。“0”で確定している条件フラグを実行条件とする
命令群は、まとめて削除するように制御し、実際に実行
部40へ発行すべき命令群を決定する。これによって、
条件フラグの検査回数を最小にとどめ、複数の命令の削
除可能性を同時に検出することができ、実行部40へ発
行すべき命令の検出を高速かつ簡単に行うことができ
る。
【0153】次に、実行命令選択制御部141による命
令の削除後、命令群は命令結合部142に入力される。
ここでは、実際に実行部40にてオペレーションを実行
することが確定した命令群について、複数の命令を1つ
の複合命令として結合できるか否かを検出し、結合可能
な場合には、当該命令の制御信号を新規複合命令に変更
し、オペランドの結合を行い、後続側の命令を実行命令
選択制御部141と同様に削除するように制御する。こ
うして、命令結合部142からは、ハードウェアとして
搭載された演算器の個数に応じた2つの命令に対応する
制御信号とオペランドデータとが出力され、実行部40
に転送される。これらの命令は、それぞれ複数の命令の
複合命令である可能性もあることになる。
【0154】(プロセッサの動作)次に、図24を用い
て、本プロセッサの具体的な動作について説明する。図
24は、条件付き実行命令を含むプログラムの一例を示
す図である。このプログラムは、4個の命令で構成され
ており、表記は図9のプログラムと同じである。ニーモ
ニック“lsr”は、レジスタの格納値の論理右シフト
を表している。
【0155】以下、各実行単位ごとの本プロセッサの動
作を説明する。ただし、ここでは、最初の時点で、条件
フラグC0の値が“0”、C1の値が“1”で確定して
いるものとする。
【0156】(実行単位1)命令1、命令2、命令3及
び命令4を含むパケットが外部メモリから供給され、そ
れぞれ命令レジスタ23に転送される。次に、命令発行
制御部140が各命令の並列実行境界情報Eを参照す
る。この場合、命令1、命令2、命令3の並列実行境界
情報Eがいずれも“0”であるため、命令デコーダの解
読結果の無効化は行わない。
【0157】次に、命令発行制御部140は各命令の実
行条件情報Pを参照し、実行命令選択制御部141に
て、オペレーションを実行する命令を選択する。命令1
は常に実行する命令である。命令2の実行条件フラグは
C0であり、C0の値は“0”で確定しているので、命
令2自体は実質的に削除し、オペレーションの実行は行
わない。後続の命令3及び命令4の実行条件フラグは共
にC1であるので、条件フラグC1を1度だけ参照し、
C1の値が“1”で確定しているので、命令3と命令4
を共に実行対象とする。こうして、命令1、命令3及び
命令4が、次の命令結合部142に送られる。
【0158】命令結合部142では、入力された命令群
の全ての組み合わせについて、複合命令が生成可能か否
かを判定する。この場合、命令1(シフト命令)と命令
4(加算命令)とを結合してシフト加算命令を生成でき
ることを検出する。そして、第1番目の命令として、シ
フト加算に対応する制御信号とオペランドが、第2番目
の命令として、命令3に対応する制御信号とオペランド
がそれぞれ実行部40に送られる。これで、供給された
命令は全て発行されたことになる。
【0159】実行部40では、レジスタR3の格納値を
レジスタR1の格納値の分だけ論理右シフトした値にレ
ジスタR2の格納値を加えた値がレジスタR2に格納さ
れ、レジスタR0の格納値に1を加えた値がレジスタR
0に格納される。
【0160】以上のように、図24に示したプログラム
は、本プロセッサにおいて1つの実行単位で実行され
る。本プロセッサでは、確定した実行条件による命令自
体の削除後、命令同士を結合して1つの複合命令とする
ことを試みる。これによって、実質の演算効率を高める
ことが可能となる。また、同一の実行条件を持った命令
が連続して配置されるという制限を利用して、実際にオ
ペレーションを実行する命令を解読ステージにて選択す
る処理の高速化を図っている。
【0161】[実施の形態4:コンパイル装置]次に上
述の実施の形態3におけるプロセッサで実行するコード
を生成するコンパイル装置、及びそのコンパイル方法に
関する実施の形態について説明する。
【0162】本コンパイル装置の構成については、大部
分は前述の第2の実施の形態のコンパイル装置と同一で
あるが、1つの実行グループ内の命令について、それぞ
れの実行条件に応じて配置に制限がある点と、プロセッ
サの解読ステージにおける命令の結合を考慮に入れてい
る点とが異なる。具体的には、命令スケジューリング部
の構成が異なることになる。
【0163】(命令スケジューリング部)本実施の形態
のコンパイル装置の命令スケジューリング部は、第2の
実施の形態における命令スケジューリング部102と同
様に、条件排他性解析部、依存関係解析部、命令再配置
部、及び実行境界付加部から構成されるが、異なる点は
命令再配置部の再配置の方法のみである。
【0164】図25に、本実施の形態のコンパイル装置
の命令再配置部のフローチャートを示す。本実施の形態
のコンパイル装置の命令再配置部の処理手順は、実施の
形態2のコンパイル装置の命令再配置部112の処理手
順と大部分は同一であるが、配置可能か否かを判定する
部分と、配置ノード確定後に配置順序を調整する点とが
異なる。具体的には、図25中のステップS71〜S8
2のうち、配置可能判定(ステップS75)と配置順序
調整(ステップS81)とが、図18に示したフローと
異なることになる。
【0165】実施の形態2のコンパイル装置と同様に、
条件排他性解析部及び依存関係解析部を経て、依存グラ
フが生成され、命令再配置部に移ってくる。そして、条
件排他性を考慮した依存グラフに基づいて命令の再配置
を行っていくわけであるが、ステップS74にて最良ノ
ードを選択した後、ステップS75にて配置可能判定を
行う際に、仮配置済みのノード群と最良ノードについ
て、実行条件の排他性だけでなく、全ての組み合わせに
ついての命令結合の可能性も考慮して、配置可能判定を
行う。つまり、ある2つのノードが結合可能であった場
合、それら2つのノードを合わせて1つの命令として扱
い、配置可能判定を行う。
【0166】更に、ステップS80にて当該サイクルで
配置可能となったノードが確定した後、ステップS81
にて配置順序の調整を行う。具体的には、当該サイクル
で配置可能となったノード群をそれぞれ実行条件ごとに
分類し、同一の実行条件を持つノードが必ず連続して配
置されるように、ノードの配置順序を調整する。これに
よって、ハードウェアにおける制御の簡単化を図ってい
る。
【0167】(コンパイル装置の動作)図26を用い
て、本コンパイル装置の特徴的な構成要素の動作につい
て具体的な命令を用いて説明する。図26は、コンパイ
ラ上流部及びアセンブラコード生成部を経て生成された
アセンブラコードの一例である。命令スケジューリング
部は、図26のコードを入力として受け取る。図26に
含まれる各命令の意味は以下のとおりである。ただし、
条件フラグC0とC1は、命令1以前の命令によって排
他な関係となっていることを想定している。 ・命令1…レジスタR3の格納値をレジスタR1の格納
値の分だけ論理右シフトする。 ・命令2…条件フラグC1の値が真の場合にのみ、レジ
スタR0の格納値に1を加算してレジスタR0に格納す
る。 ・命令3…条件フラグC0の値が真の場合にのみ、レジ
スタR0の格納値から1を減算してレジスタR0に格納
する。 ・命令4…条件フラグC1の値が真の場合にのみ、レジ
スタR1の格納値とレジスタR2の格納値とを加算して
レジスタR2に格納する。
【0168】以下、命令スケジューリング部の動作につ
いて説明する。まず、条件排他性解析部と依存関係解析
部が起動され、依存グラフが生成される。この例では、
条件フラグC0とC1が排他であることを考慮しつつ、
資源の定義及び参照関係を解析する。
【0169】次に、命令再配置部が起動される。図25
のフローチャートに沿って説明すると、まず配置候補ノ
ード集合を生成する(ステップS72)。ここでは命令
1のみが配置候補ノードとなる。次に最良ノードを取り
出す(ステップS74)。ここでは、自動的に命令1が
選択される。そして、配置可能判定(ステップS75)
において、配置可能であると判定される。更に、配置状
態判定(ステップS77)においても、まだ配置可能で
あると判定される。そして、配置候補ノード追加(ステ
ップS78)において、追加対象となる命令として、命
令2、命令3及び命令4が配置候補ノードに追加され
る。
【0170】そして、再び戻って最良ノードを取り出す
(ステップS74)。ここでは、まず命令2が選択され
て、配置可能であると判定される(ステップS75)。
【0171】その後、再び戻って最良ノードを取り出す
(ステップS74)。ここでは、命令3が選択される。
そして、命令2と命令3の実行条件は排他であるので、
2個という演算器の制約を満たし、配置可能であると判
定される(ステップS75)。
【0172】更に、戻って最良ノードを取り出す(ステ
ップS74)。ここでは、残った命令4が自動的に選択
される。そして、配置可能判定を行う(ステップS7
5)のであるが、実行条件C0が真であると仮定した場
合には、命令1と命令3のみが有効となるので演算器の
制約を満たす。一方、実行条件C1が真であると仮定し
た場合には、命令1、命令2及び命令4の3つの命令が
有効となってしまう。ここで、これらの全ての組み合わ
せについて、命令の結合可能性を検討する。ここでは、
命令1と命令4を結合して、ハードウェアに備えられた
シフト加算命令とすることが可能であると判定され、結
果的に2つの命令が有効となるので、配置可能であると
判定される。
【0173】以上で、全ての命令が第1サイクルに配置
されたことになり、配置ノードを確定する(ステップS
80)。次に、各ノードを実行条件で分類し、配置順序
の調整を行う(ステップS81)。具体的には、命令2
と命令4の実行条件がC1で同一なので、命令2と命令
4が連続して配置されるように、配置順を、命令1、命
令2、命令4、命令3の順に並べ直す。以上で、命令再
配置部の処理が完了する。
【0174】最後に、実行境界付加部が起動される。こ
こでは、上記の命令再配置部による配置された命令群の
末尾の命令に並列実行境界情報を設定していく。具体的
には、命令3の並列実行境界情報に“1”を設定し、残
りの命令の並列実行境界情報には“0”を設定する。以
上で命令スケジューリング部の処理が完了する。
【0175】以上のように、本実施の形態のコンパイル
装置では、図26に示した命令列は、1つの実行グルー
プで実行されるようにコンパイルされる。ここには、配
置可能判定(ステップS75)において、プロセッサの
解読ステージでの命令の結合を考慮したことの効果が現
れている。更に、同一の実行条件を持つ命令を連続して
配置するように調整することにより、プロセッサの解読
ステージにて有効な命令を選択する際の制御を簡単化す
ることができる。
【0176】なお、本実施形態で示されるコンパイル装
置の処理手順をフロッピー(R)ディスク、ハードディ
スク、CD−ROM、MO、DVDなどの記録媒体に入
れることにより、本実施形態で示されるコンパイル装置
をコンピュータで実現できる。
【0177】また、本実施形態で示されるコンパイル装
置により生成された実行形式コードをフロッピー(R)
ディスク、ハードディスク、CD−ROM、MO、DV
D、半導体メモリなどの記録媒体に入れることもでき
る。
【0178】以上、本発明に係るプロセッサ及びコンパ
イル装置について、実施形態に基づいて説明したが、本
発明はこれらの実施形態に限られないことは勿論であ
る。変形例を以下に列挙する。
【0179】(1)上記実施の形態のプロセッサ及びコ
ンパイル装置では、固定長の命令を実行することを想定
していたが、本発明はこのような命令フォーマットに限
定されるものではない。可変長の命令フォーマットを採
用しても本発明の有意性は保たれる。
【0180】(2)上記実施の形態のプロセッサ及びコ
ンパイル装置では、2個の演算器を持つことを想定して
いたが、本発明はこの演算器数に限定されるものではな
い。1個の演算器もしくは3個以上の演算器を持つプロ
セッサを想定しても、本発明の有意性は保たれる。
【0181】(3)上記実施の形態のプロセッサ及びコ
ンパイル装置では、コンパイル装置が静的に命令並列性
を抽出することを想定していたが、本発明はこの命令並
列処理方式に限定されるものではない。例えば、ハード
ウェアで動的に命令並列性を抽出するスーパースカラ方
式を採用しても、本発明の有意性は保たれる。この場
合、本発明の命令フォーマットから並列実行境界情報E
を除去し、この情報に依存する処理を全て命令発行制御
部にて動的に検出しながら実施すればよい。
【0182】(4)上記実施の形態のコンパイル装置の
命令再配置部では、図18中のステップS54における
最良ノードの決定方法として、依存グラフの終端までの
実行時間の総和を用いていたが、本発明は、この選択基
準に限定されるものではない。例えば、複数の実行フロ
ーの中で特定のパスを優先的に選択するようにしてもよ
い。この場合、最良ノードの取り出し(ステップS5
4)の際に、ある特定の実行条件を持つ命令の優先度を
高めておく。これによって、実行頻度の高いパスなど
の、特定の実行パスに特化したスケジューリングを行う
ことができる。
【0183】(5)上記実施の形態のプロセッサの命令
発行制御部では、最初に現れる並列実行境界情報Eが
“1”となっている命令以降の命令の解読結果を必ず無
効化していたが、必ずしもその必要はない。命令発行制
御部内の実行命令選択制御部にて、実行部に転送すると
判断した命令が、前記最初に現れる並列実行境界情報E
が“1”である命令以前に1つも存在しなかった場合、
当該サイクル全体を削除し、次に現れる並列実行境界情
報Eが“1”である命令までの命令群をこのサイクルで
の発行対象とすればよい。つまり、並列実行境界情報E
が“1”である命令以前に有効なオペレーションを実行
すべきと判定された命令が1つでも存在した場合にの
み、その命令を並列実行の境界とみなして以降の命令の
解読結果を無効化し、そうでなかった場合には、その命
令の並列実行境界情報Eは無視し、後続の命令の並列実
行境界情報Eを参照することにより新たな並列実行の境
界を検出すればよい。これによって、更に実行サイクル
数を削減することができる。
【0184】
【発明の効果】以上説明してきたとおり、本発明によれ
ば、ハードウェアの有効利用を達成し、性能を向上させ
たプロセッサを提供することができる。
【図面の簡単な説明】
【図1】(a)〜(c)は本発明の実施形態1に係るプ
ロセッサが実行する命令の構造を示す図である。
【図2】(a)及び(b)は同プロセッサにおける命令
の供給と発行の概念を示す図である。
【図3】同プロセッサのハードウェア構成を示すブロッ
ク図である。
【図4】同プロセッサの命令レジスタ周辺の構成を示す
ブロック図である。
【図5】同プロセッサの命令発行制御部とその周辺の回
路構成を示す図である。
【図6】同プロセッサにて命令列を実行した際のパイプ
ラインのタイミングを示す図である。
【図7】条件付き実行命令を含むプログラムの一部を示
す図である。
【図8】従来の命令発行制御部を持つプロセッサの命令
レジスタ周辺の構成を示すブロック図である。
【図9】図7のプログラムの処理を従来の命令発行制御
部を持つプロセッサで行わせるプログラムを示す図であ
る。
【図10】条件分岐を含む処理のフローを示す図であ
る。
【図11】図10のフローの処理を条件付き実行方式で
記述したプログラムを示す図である。
【図12】本発明の実施形態2におけるコンパイル装置
の構成及び関連するデータを示すブロック図である。
【図13】同コンパイル装置における条件排他性解析部
の処理手順を示すフローチャートである。
【図14】同コンパイル装置における2命令間の実行条
件排他性検出の処理手順を示すフローチャートである。
【図15】アセンブラコードの一例を示す図である。
【図16】図15のアセンブラコードの命令2に対応す
る条件排他情報テーブルを示す図である。
【図17】図15に対応する依存グラフである。
【図18】同コンパイル装置における命令再配置部の処
理手順を示すフローチャートである。
【図19】アセンブラコードの一例を示す図である。
【図20】図19に対応する依存グラフである。
【図21】図19に対応する実行形式コードを示す図で
ある。
【図22】図19のコードを従来のコンパイル装置でス
ケジューリングした場合の実行形式コードの一例を示す
図である。
【図23】本発明の実施の形態3に係るプロセッサの命
令発行制御部とその周辺の回路構成を示す図である。
【図24】条件付き実行命令を含むプログラムの一部を
示す図である。
【図25】本発明の実施の形態4に係るコンパイル装置
における命令再配置部の処理手順を示すフローチャート
である。
【図26】アセンブラコードの一例を示す図である。
【符号の説明】
10 並列実行境界情報(E) 11 実行条件情報(P) 20 命令供給部(命令供給手段) 21 命令フェッチ部 22 命令バッファ 23 命令レジスタ 231 Aレジスタ 232 Bレジスタ 233 Cレジスタ 234 Dレジスタ 30 解読部 31 命令発行制御部(命令発行制御手段) 311 条件フラグ 312 条件フラグ有効情報 313 実行命令選択制御部 314,315 論理回路 32 命令デコーダ(解読手段) 33 第1命令デコーダ 34 第2命令デコーダ 35 第3命令デコーダ 36 第4命令デコーダ 371〜374 実行命令セレクタ 38 命令無効化方法選択部(命令無効化方法選択手
段) 40 実行部(実行手段) 41 実行制御部 42 PC(プログラムカウンタ)部 43 レジスタファイル 44 第1演算器 45 第2演算器 46 書き込み制御部(実行結果無効化手段) 47 オペランドアクセス部 48,49 データバス 100 コンパイラ上流部 101 アセンブラコード生成部 102 命令スケジューリング部(命令スケジューリン
グ手段) 103 オブジェクトコード生成部 110 条件排他性解析部(条件排他性解析手段) 111 依存関係解析部(依存関係解析手段) 112 命令再配置部(命令再配置手段) 113 実行境界付加部(実行境界付加手段) 120 ソースコード 130 オブジェクトコード 140 命令発行制御部(命令発行制御手段) 141 実行命令選択制御部 142 命令結合部
フロントページの続き (72)発明者 田中 哲也 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 小川 一 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 桧垣 信生 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 Fターム(参考) 5B013 AA12 BB16 DD00 DD04 5B033 AA01 AA10 AA14 BA03 BB03 BE00 BE05 BE07 5B081 CC00 CC21 CC23 CC32

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 複数の命令を供給するための命令供給手
    段と、 前記複数の命令を各々解読するための解読手段と、 前記複数の命令中に各命令を実行するか否かを示す条件
    を指定する実行条件情報が指定され、当該実行条件情報
    で指定された条件を参照して、有効なオペレーションを
    実行する命令又は命令の集合を決定するための命令発行
    制御手段と、 前記複数の命令中に各命令の動作が指定され、当該指定
    に基づいて1つ又は複数のオペレーションを実行するた
    めの実行手段とを備えたプロセッサであって、 前記命令発行制御手段は、前記実行条件情報で指定され
    た条件を参照することにより、実行する必要のある有効
    な命令であるか、実行する必要のない無効な命令である
    かを判断し、無効な命令であると判断した命令に関して
    は、当該命令を前記実行手段へ発行する前に当該命令自
    体を削除するように制御し、かつ当該命令に代えて当該
    命令に後続する有効な命令を前記実行手段へ発行するよ
    うに制御する機能を有することを特徴とするプロセッ
    サ。
  2. 【請求項2】 請求項1記載のプロセッサにおいて、 前記実行手段は、前記命令に対応するオペレーションを
    実行した後で、実行結果を無効化するための実行結果無
    効化手段を有し、 各命令について、前記実行手段へ発行する前に当該命令
    自体を削除するか、前記実行結果無効化手段にて実行結
    果を無効化するかを選択するための命令無効化方法選択
    手段を更に備えたことを特徴とするプロセッサ。
  3. 【請求項3】 請求項2記載のプロセッサにおいて、 前記命令無効化方法選択手段は、各条件フラグの値が確
    定しているか否かを示す条件フラグ有効情報を参照する
    ことによって、いずれの命令無効化方法を選択するかを
    決定し、 前記条件フラグ有効情報は、前記解読手段において条件
    フラグを更新する命令であると解読された場合に当該条
    件フラグの確定性が偽に設定され、前記実行手段におい
    て当該命令が実行されて当該条件フラグの値が確定した
    際に真に設定されることを特徴とするプロセッサ。
  4. 【請求項4】 請求項1記載のプロセッサにおいて、 前記命令発行制御手段は、複数の命令の機能が単一の命
    令で実現可能であるような命令の組み合わせを検出し、
    それら複数の命令を単一の命令として扱うように結合す
    る機能を更に有することを特徴とするプロセッサ。
  5. 【請求項5】 請求項4記載のプロセッサにおいて、 前記複数の命令の結合は、前記実行手段への発行前にお
    ける命令の削除の後に適用されることを特徴するプロセ
    ッサ。
  6. 【請求項6】 請求項1記載のプロセッサにおいて、 前記命令発行制御手段は、各サイクルにおいて同一の前
    記実行条件情報を持つ命令が連続配置されている場合に
    は、前記解読手段によって解読された複数の命令を予め
    各実行条件毎に分類し、その分類毎に条件フラグを参照
    して、実行する必要のある有効な命令であるか、実行す
    る必要のない無効な命令であるかを判断することを特徴
    とするプロセッサ。
  7. 【請求項7】 請求項1記載のプロセッサにおいて、 前記複数の命令中に各命令が並列実行の境界であるか否
    かの並列実行境界情報が指定され、 前記命令発行制御手段は、各命令の前記並列実行境界情
    報を参照して、当サイクルにおいて実行の対象とする命
    令群を検出する機能を更に有することを特徴とするプロ
    セッサ。
  8. 【請求項8】 請求項7記載のプロセッサにおいて、 前記命令発行制御手段は、命令内の並列実行境界情報に
    て検出された境界命令以前の全ての命令が実行する必要
    のない無効な命令として削除された場合には、当該境界
    命令の並列実行境界情報を無効化し、当該境界命令以降
    の命令の並列実行境界情報を参照することにより当サイ
    クルの新たな並列実行境界を検出することを特徴とする
    プロセッサ。
  9. 【請求項9】 複数の命令を供給するための命令供給手
    段と、 前記複数の命令を各々解読するための解読手段と、 有効なオペレーションを実行する命令又は命令の集合を
    決定するための命令発行制御手段と、 前記複数の命令中に各命令の動作が指定され、当該指定
    に基づいて1つ又は複数のオペレーションを実行するた
    めの実行手段とを備えたプロセッサであって、 前記命令発行制御手段は、前記解読手段にて解読された
    命令群の中から、複数の命令の機能が単一の命令で実現
    可能であるような命令の組み合わせを検出し、それら複
    数の命令を単一の命令として扱うように結合する機能を
    有することを特徴とするプロセッサ。
  10. 【請求項10】 請求項9記載のプロセッサにおいて、 前記命令発行制御手段は、当サイクルにて実行対象にも
    削除対象にも結合対象にもならずに残った命令群を検出
    し、それらの命令群を次サイクル以降で発行の対象とす
    るように制御する機能を更に有することを特徴とするプ
    ロセッサ。
  11. 【請求項11】 高級言語で記述されたプログラムのソ
    ースコードを実行形式コードに変換するためのコンパイ
    ル装置であって、 前記ソースコード中の命令を、並列実行すべき複数の命
    令が隣接するように並べ直すための命令スケジューリン
    グ手段を備え、 前記命令スケジューリング手段は、 各命令に付加された有効なオペレーションを実行する条
    件に関して、各条件が同時に成立することがあり得るか
    否かを解析するための条件排他性解析手段と、 並列実行可能な命令の集合をサイクル毎に区分できるよ
    うに命令の並べ替えを行うための命令再配置手段とを有
    し、 前記命令再配置手段は、当サイクルに配置される命令の
    うち、有効なオペレーションを実行する命令が使用する
    演算資源が対象機械に搭載された演算器の制約を超えな
    いかどうかを判定し、かつ当サイクルに配置される2つ
    の命令の実行条件が前記条件排他性解析手段において同
    時に成立することがあり得ないと判定された場合には、
    一定の条件下でいずれか一方の命令のみが演算資源を使
    用するものとして扱うことを特徴とするコンパイル装
    置。
  12. 【請求項12】 請求項11記載のコンパイル装置にお
    いて、 前記命令再配置手段は、当サイクルに配置される2つの
    命令の実行条件が前記条件排他性解析手段において同時
    に成立することがあり得ないと判定された場合であって
    も、前記2つの命令のうち少なくとも一方の命令の実行
    条件に対応する条件フラグの内容が確定していない場合
    には、前記2つの命令の両方が演算資源を使用するもの
    として扱うことを特徴とするコンパイル装置。
  13. 【請求項13】 請求項12記載のコンパイル装置にお
    いて、 前記命令再配置手段は、当サイクルの前サイクルにおい
    て、前記2つの命令のうち少なくとも一方の命令の実行
    条件に対応する条件フラグを更新する命令が配置されて
    いるかどうかによって、条件フラグの内容が確定してい
    るかどうかの判定を行うことを特徴とするコンパイル装
    置。
  14. 【請求項14】 請求項11記載のコンパイル装置にお
    いて、 前記命令再配置手段は、前記条件排他性解析手段の解析
    結果に基づいて、実行条件が同時に成立することがあり
    得ない命令に関してはいずれか一方のみが演算資源を使
    用するものとして扱うとともに、演算資源を使用する複
    数の命令の機能が単一の命令で実現可能である命令の組
    み合わせを検出し、それら複数の命令を結合した単一の
    命令として扱うことを特徴とするコンパイル装置。
  15. 【請求項15】 請求項11記載のコンパイル装置にお
    いて、 前記命令再配置手段は、当サイクルに配置可能と判定さ
    れた命令の集合に関して、同一の実行条件を持つ命令を
    連続して配置するように配置順序を調整する機能を更に
    有することを特徴とするコンパイル装置。
  16. 【請求項16】 請求項11記載のコンパイル装置にお
    いて、 前記命令再配置手段は、当サイクルに配置する命令を選
    択する際に、複数の実行条件のうち特定の実行条件を持
    つ命令を優先的に選択することを特徴とするコンパイル
    装置。
  17. 【請求項17】 高級言語で記述されたプログラムのソ
    ースコードを実行形式コードに変換するためのコンパイ
    ル装置であって、 前記ソースコード中の命令を、並列実行すべき複数の命
    令が隣接するように並べ直すための命令スケジューリン
    グ手段を備え、 前記命令スケジューリング手段は、 並列実行可能な命令の集合をサイクル毎に区分できるよ
    うに命令の並べ替えを行うための命令再配置手段を有
    し、 前記命令再配置手段は、複数の命令の機能が単一の命令
    で実現可能である命令の組み合わせを検出し、それら複
    数の命令を結合した単一の命令として扱って、当サイク
    ルに配置可能か否かの判定を行うことを特徴とするコン
    パイル装置。
  18. 【請求項18】 請求項17記載のコンパイル装置にお
    いて、 前記命令スケジューリング手段は、前記命令再配置手段
    の結果に基づき、命令内に並列実行の境界であるか否か
    を示す並列実行境界情報を付加するための実行境界付加
    手段を更に有することを特徴とするコンパイル装置。
  19. 【請求項19】 高級言語で記述されたプログラムのソ
    ースコードを実行形式コードに変換するためのコンパイ
    ル装置であって、 前記ソースコード中の命令を、並列実行すべき複数の命
    令が隣接するように並べ直すための命令スケジューリン
    グ手段を備え、 前記命令スケジューリング手段は、 各命令に付加された有効なオペレーションを実行する条
    件に関して、各条件が同時に成立することがあり得るか
    否かを解析するための条件排他性解析手段と、 並列実行可能な命令の集合をサイクル毎に区分できるよ
    うに命令の並べ替えを行うための命令再配置手段とを有
    し、 前記条件排他性解析手段は、各基本ブロックの先頭の命
    令と、オペレーション実行の有効性に係るいずれかの条
    件フラグを更新する命令とに対して、それぞれの時点で
    の各条件フラグ間の同時成立可能性を示すテーブルを生
    成することを特徴とするコンパイル装置。
  20. 【請求項20】 請求項19記載のコンパイル装置にお
    いて、 前記命令スケジューリング手段は、命令間の依存関係を
    解析するための依存関係解析手段を更に有し、 前記依存関係解析手段は、前記条件排他性解析手段にて
    生成されたテーブルに基づいて、各命令の実行時点で有
    効である条件フラグ間の同時成立可能性を探索し、2命
    令が同時に実行される可能性があるか否かを解析するこ
    とを特徴とするコンパイル装置。
  21. 【請求項21】 高級言語で記述されたプログラムのソ
    ースコードを実行形式コードに変換するためのコンパイ
    ル方法であって、 前記ソースコード中の命令を、並列実行すべき複数の命
    令が隣接するように並べ直す命令スケジューリングステ
    ップを備え、 前記命令スケジューリングステップは、 各命令に付加された有効なオペレーションを実行する条
    件に関して、各条件が同時に成立することがあり得るか
    否かを解析する条件排他性解析ステップと、 並列実行可能な命令の集合をサイクル毎に区分できるよ
    うに命令の並べ替えを行う命令再配置ステップとを有
    し、 前記命令再配置ステップは、当サイクルに配置される命
    令のうち、有効なオペレーションを実行する命令が使用
    する演算資源が対象機械に搭載された演算器の制約を超
    えないかどうかを判定し、かつ当サイクルに配置される
    2つの命令の実行条件が前記条件排他性解析ステップに
    おいて同時に成立することがあり得ないと判定された場
    合には、いずれか一方の命令のみが演算資源を使用する
    ものとして扱う配置可能判定ステップを有することを特
    徴とするコンパイル方法。
  22. 【請求項22】 高級言語で記述されたプログラムのソ
    ースコードを実行形式コードに変換するプログラムを記
    録した記録媒体であって、 前記ソースコード中の命令を、並列実行すべき複数の命
    令が隣接するように並べ直す命令スケジューリングステ
    ップを備え、 前記命令スケジューリングステップは、 各命令に付加された有効なオペレーションを実行する条
    件に関して、各条件が同時に成立することがあり得るか
    否かを解析する条件排他性解析ステップと、 並列実行可能な命令の集合をサイクル毎に区分できるよ
    うに命令の並べ替えを行う命令再配置ステップとを有
    し、 前記命令再配置ステップは、当サイクルに配置される命
    令のうち、有効なオペレーションを実行する命令が使用
    する演算資源が対象機械に搭載された演算器の制約を超
    えないかどうかを判定し、かつ当サイクルに配置される
    2つの命令の実行条件が前記条件排他性解析ステップに
    おいて同時に成立することがあり得ないと判定された場
    合には、いずれか一方の命令のみが演算資源を使用する
    ものとして扱う配置可能判定ステップを有することを特
    徴とするプログラムを記録した記録媒体。
JP2001286393A 2001-09-20 2001-09-20 プロセッサ、コンパイル装置及びコンパイル方法 Expired - Fee Related JP3564445B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2001286393A JP3564445B2 (ja) 2001-09-20 2001-09-20 プロセッサ、コンパイル装置及びコンパイル方法
US10/246,482 US7076638B2 (en) 2001-09-20 2002-09-19 Processor, compiler and compilation method
CNB2005100521315A CN100392596C (zh) 2001-09-20 2002-09-20 编译装置及编译方法
EP02021046.4A EP1296227B1 (en) 2001-09-20 2002-09-20 Valid instruction dispatching and execution
CNB021424993A CN1202470C (zh) 2001-09-20 2002-09-20 处理器
US11/452,282 US7761692B2 (en) 2001-09-20 2006-06-14 Processor, compiler and compilation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001286393A JP3564445B2 (ja) 2001-09-20 2001-09-20 プロセッサ、コンパイル装置及びコンパイル方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2004130214A Division JP3727324B2 (ja) 2004-04-26 2004-04-26 プロセッサ及びコンパイル装置

Publications (2)

Publication Number Publication Date
JP2003099248A true JP2003099248A (ja) 2003-04-04
JP3564445B2 JP3564445B2 (ja) 2004-09-08

Family

ID=19109384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001286393A Expired - Fee Related JP3564445B2 (ja) 2001-09-20 2001-09-20 プロセッサ、コンパイル装置及びコンパイル方法

Country Status (4)

Country Link
US (2) US7076638B2 (ja)
EP (1) EP1296227B1 (ja)
JP (1) JP3564445B2 (ja)
CN (2) CN100392596C (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1318959C (zh) * 2003-05-16 2007-05-30 威盛电子股份有限公司 于处理器中预测条件指令执行状态的方法
JP2009538486A (ja) * 2006-05-25 2009-11-05 クゥアルコム・インコーポレイテッド 算術および初等関数ユニットを有する図形プロセッサ
US7886133B2 (en) 2006-08-03 2011-02-08 Nec Corporation Information processing apparatus and method for accelerating information processing
KR20130105183A (ko) * 2012-03-16 2013-09-25 삼성전자주식회사 재구성 가능 프로세서의 검증 지원 장치 및 방법
JP2016006632A (ja) * 2014-05-20 2016-01-14 ブル・エス・アー・エス 条件付き命令を有するプロセッサ

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6865662B2 (en) * 2002-08-08 2005-03-08 Faraday Technology Corp. Controlling VLIW instruction operations supply to functional units using switches based on condition head field
US7191320B2 (en) * 2003-02-11 2007-03-13 Via Technologies, Inc. Apparatus and method for performing a detached load operation in a pipeline microprocessor
JP4041002B2 (ja) * 2003-03-24 2008-01-30 株式会社三菱東京Ufj銀行 データベース更新処理システム、データベース更新のための更新データ入力方法、更新データ処理方法、およびプログラム
JP4699685B2 (ja) * 2003-08-21 2011-06-15 パナソニック株式会社 信号処理装置及びそれを用いた電子機器
US7404067B2 (en) * 2003-09-08 2008-07-22 Intel Corporation Method and apparatus for efficient utilization for prescient instruction prefetch
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US7493611B2 (en) * 2004-08-30 2009-02-17 International Business Machines Corporation Pinning internal slack nodes to improve instruction scheduling
CN100428184C (zh) * 2006-12-13 2008-10-22 南开大学 具有自驱动功能的指令仿真解析系统及其实现方法
US20100070958A1 (en) * 2007-01-25 2010-03-18 Nec Corporation Program parallelizing method and program parallelizing apparatus
JP5168277B2 (ja) * 2007-06-20 2013-03-21 富士通株式会社 命令制御装置及び制御方法
TW200910195A (en) * 2007-08-20 2009-03-01 Sunplus Technology Co Ltd A device of using serial bits to determine instruction length at a multi-mode processor and the method thereof
US8285971B2 (en) * 2008-12-16 2012-10-09 International Business Machines Corporation Block driven computation with an address generation accelerator
US8407680B2 (en) * 2008-12-16 2013-03-26 International Business Machines Corporation Operand data structure for block computation
US8458439B2 (en) * 2008-12-16 2013-06-04 International Business Machines Corporation Block driven computation using a caching policy specified in an operand data structure
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
US8281106B2 (en) * 2008-12-16 2012-10-02 International Business Machines Corporation Specifying an addressing relationship in an operand data structure
JP5576605B2 (ja) * 2008-12-25 2014-08-20 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
JP2010257199A (ja) * 2009-04-24 2010-11-11 Renesas Electronics Corp プロセッサ及びプロセッサにおける命令発行の制御方法
JP2011257904A (ja) * 2010-06-08 2011-12-22 Hitachi Ltd 制御装置及びそのデータ処理方法
US8661424B2 (en) * 2010-09-02 2014-02-25 Honeywell International Inc. Auto-generation of concurrent code for multi-core applications
US8533695B2 (en) * 2010-09-28 2013-09-10 Microsoft Corporation Compile-time bounds checking for user-defined types
CN102207887B (zh) * 2011-05-04 2016-08-10 山东智慧生活数据系统有限公司 一种嵌入式操作系统快速移植方法及其装置
CN102195821B (zh) * 2011-06-27 2014-07-02 吉林中软吉大信息技术有限公司 一种网络设备配置方法
CN102662635A (zh) * 2012-03-21 2012-09-12 清华大学 超长指令字变长指令实现方法及实现该方法的处理器
US20140047221A1 (en) * 2012-08-07 2014-02-13 Qualcomm Incorporated Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US20140164738A1 (en) * 2012-12-07 2014-06-12 Nvidia Corporation Instruction categorization for runahead operation
US9760346B2 (en) * 2013-05-31 2017-09-12 Microsoft Technology Licensing, Llc Deeply parallel source code compilation
US9928074B2 (en) * 2013-09-06 2018-03-27 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with token-based very long instruction word architecture
JP5847781B2 (ja) * 2013-09-25 2016-01-27 シャープ株式会社 機器操作管理装置、遠隔操作システム、機器操作管理装置の制御方法、制御プログラム、端末装置
CN104317554B (zh) * 2014-10-14 2017-02-15 中国航天科技集团公司第九研究院第七七一研究所 用于simd处理器的寄存器文件数据读写装置和方法
US10061584B2 (en) * 2015-09-19 2018-08-28 Microsoft Technology Licensing, Llc Store nullification in the target field
KR20180031266A (ko) 2016-09-19 2018-03-28 삼성전자주식회사 전자 장치, vliw 프로세서 및 그 제어 방법들
CN107682114B (zh) * 2017-09-01 2020-08-25 惠州市德赛西威汽车电子股份有限公司 一种提高数据传输效率的方法
US11188681B2 (en) * 2019-04-08 2021-11-30 International Business Machines Corporation Malware resistant computer
CN114450665A (zh) * 2019-09-25 2022-05-06 西门子股份公司 一种执行程序的方法

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1480209A (en) * 1974-07-03 1977-07-20 Data Loop Ltd Digital computers
US4514804A (en) * 1981-11-25 1985-04-30 Nippon Electric Co., Ltd. Information handling apparatus having a high speed instruction-executing function
JPS6265133A (ja) 1985-09-17 1987-03-24 Nec Corp 命令先取り装置
JPS6482131A (en) 1987-09-24 1989-03-28 Mitsubishi Electric Corp Data processor
JP2779032B2 (ja) * 1990-01-23 1998-07-23 株式会社日立製作所 情報処理装置
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5371862A (en) * 1991-02-27 1994-12-06 Kabushiki Kaisha Toshiba Program execution control system
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
JPH05257709A (ja) * 1992-03-16 1993-10-08 Hitachi Ltd 並列化判別方法およびそれを用いた並列化支援方法
US5440703A (en) 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
US5600806A (en) * 1994-03-01 1997-02-04 Intel Corporation Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
JP2931890B2 (ja) 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
JPH09311786A (ja) 1996-03-18 1997-12-02 Hitachi Ltd データ処理装置
JPH09265400A (ja) 1996-03-28 1997-10-07 Hitachi Ltd コンパイル最適化方式
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US5872990A (en) * 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment
US5870582A (en) * 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
JPH1124929A (ja) * 1997-06-30 1999-01-29 Sony Corp 演算処理装置およびその方法
CN1206145A (zh) 1997-06-30 1999-01-27 索尼公司 带有流水线处理电路的信号处理器及其方法
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6216223B1 (en) * 1998-01-12 2001-04-10 Billions Of Operations Per Second, Inc. Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US6367070B1 (en) * 1998-01-13 2002-04-02 Intel Corporation Means and method for establishing loop-level parallelism
JP3473391B2 (ja) 1998-04-08 2003-12-02 松下電器産業株式会社 プログラム処理方法、プログラム処理装置及び記録媒体
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6237086B1 (en) * 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems
JP3915019B2 (ja) 1998-06-16 2007-05-16 松下電器産業株式会社 Vliwプロセッサ、プログラム生成装置、および記録媒体
US6356994B1 (en) * 1998-07-09 2002-03-12 Bops, Incorporated Methods and apparatus for instruction addressing in indirect VLIW processors
US6681319B1 (en) * 1998-10-06 2004-01-20 Texas Instruments Incorporated Dual access instruction and compound memory access instruction with compatible address fields
US6490673B1 (en) * 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
JP3344345B2 (ja) 1998-12-15 2002-11-11 日本電気株式会社 共有メモリ型ベクトル処理システムとその制御方法及びベクトル処理の制御プログラムを格納する記憶媒体
TW477936B (en) * 1998-12-29 2002-03-01 Ind Tech Res Inst Instruction folding method and device used in a stack machine
JP2000284970A (ja) 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
JP2000305781A (ja) * 1999-04-21 2000-11-02 Mitsubishi Electric Corp Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
JP3553845B2 (ja) 2000-02-24 2004-08-11 松下電器産業株式会社 プロセッサ、コンパイラ、コイパイル方法及び記録媒体
US6785804B2 (en) * 2001-05-17 2004-08-31 Broadcom Corporation Use of tags to cancel a conditional branch delay slot instruction

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1318959C (zh) * 2003-05-16 2007-05-30 威盛电子股份有限公司 于处理器中预测条件指令执行状态的方法
JP2009538486A (ja) * 2006-05-25 2009-11-05 クゥアルコム・インコーポレイテッド 算術および初等関数ユニットを有する図形プロセッサ
US7886133B2 (en) 2006-08-03 2011-02-08 Nec Corporation Information processing apparatus and method for accelerating information processing
KR20130105183A (ko) * 2012-03-16 2013-09-25 삼성전자주식회사 재구성 가능 프로세서의 검증 지원 장치 및 방법
KR101962248B1 (ko) * 2012-03-16 2019-03-27 삼성전자주식회사 재구성 가능 프로세서의 검증 지원 장치 및 방법
JP2016006632A (ja) * 2014-05-20 2016-01-14 ブル・エス・アー・エス 条件付き命令を有するプロセッサ

Also Published As

Publication number Publication date
EP1296227A2 (en) 2003-03-26
CN100392596C (zh) 2008-06-04
CN1202470C (zh) 2005-05-18
EP1296227A3 (en) 2007-06-27
CN1645328A (zh) 2005-07-27
CN1409210A (zh) 2003-04-09
US20030056088A1 (en) 2003-03-20
US7076638B2 (en) 2006-07-11
US20060242387A1 (en) 2006-10-26
EP1296227B1 (en) 2017-08-23
JP3564445B2 (ja) 2004-09-08
US7761692B2 (en) 2010-07-20

Similar Documents

Publication Publication Date Title
JP3564445B2 (ja) プロセッサ、コンパイル装置及びコンパイル方法
US5710902A (en) Instruction dependency chain indentifier
US8966459B2 (en) Processors and compiling methods for processors
US9329866B2 (en) Methods and apparatus for adapting pipeline stage latency based on instruction type
JP2002333978A (ja) Vliw型プロセッサ
US6324639B1 (en) Instruction converting apparatus using parallel execution code
US20060015855A1 (en) Systems and methods for replacing NOP instructions in a first program with instructions of a second program
US20050257200A1 (en) Generating code for a configurable microprocessor
US7844799B2 (en) Method and system for pipeline reduction
JP4784912B2 (ja) 情報処理装置
US7681016B2 (en) Microprocessor instruction execution method for exploiting parallelism by time ordering operations in a single thread at compile time
JP3553845B2 (ja) プロセッサ、コンパイラ、コイパイル方法及び記録媒体
Sassone et al. Static strands: safely collapsing dependence chains for increasing embedded power efficiency
JP3727324B2 (ja) プロセッサ及びコンパイル装置
Jacome et al. Clustered VLIW architecture with predicated switching
Zhou et al. Tree traversal scheduling: A global instruction scheduling technique for VLIW/EPIC processors
JP2006012185A (ja) プロセッサ
Connors et al. An architecture framework for introducing predicated execution into embedded microprocessors
Seto et al. Custom instruction generation with high-level synthesis
Gaudiot et al. Techniques to improve performance beyond pipelining: superpipelining, superscalar, and VLIW
EP1217514A2 (en) Method and apparatus for bypassing pipeline stages
JP3743155B2 (ja) パイプライン制御型計算機
De Souza et al. On the scheduling algorithm of the dynamically trace scheduled VLIW architecture
Valluri A hybrid-scheduling approach for energy-efficient superscalar processors
Ying et al. A Delay Slot Scheduling Framework for VLIW Architectures in Assembly-Level

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040302

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040426

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: 20040601

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040607

R150 Certificate of patent or registration of utility model

Ref document number: 3564445

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080611

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090611

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100611

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100611

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110611

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120611

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120611

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130611

Year of fee payment: 9

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees