JP2000284970A - プログラム変換装置及びプロセッサ - Google Patents

プログラム変換装置及びプロセッサ

Info

Publication number
JP2000284970A
JP2000284970A JP11086561A JP8656199A JP2000284970A JP 2000284970 A JP2000284970 A JP 2000284970A JP 11086561 A JP11086561 A JP 11086561A JP 8656199 A JP8656199 A JP 8656199A JP 2000284970 A JP2000284970 A JP 2000284970A
Authority
JP
Japan
Prior art keywords
instruction
instructions
sequence
conversion
equivalent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11086561A
Other languages
English (en)
Inventor
Kenichi Kawaguchi
謙一 川口
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 JP11086561A priority Critical patent/JP2000284970A/ja
Priority to US09/536,308 priority patent/US6658560B1/en
Publication of JP2000284970A publication Critical patent/JP2000284970A/ja
Priority to US10/621,440 priority patent/US7376818B2/en
Pending legal-status Critical Current

Links

Classifications

    • 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

Landscapes

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

Abstract

(57)【要約】 【課題】 長語命令列の命令並列度の高いプログラム変
換装置を提供する。 【解決手段】 命令変換テーブル103には、処理が等価
で且つ操作対象の演算資源が異なる複数の命令が予め記
憶される。一次コンパイル手段101はソースプログラム
をコンパイルして命令列を生成する。命令並列化手段10
2は、前記命令列から長語命令列を生成する。命令検出
手段104は、前記命令列の中から、前記命令変換テーブ
ル103に予め記憶された命令を検出する。命令置換手段1
06は、この検出された命令を、前記命令変換テーブル10
3に記憶された命令のうち前記検出された命令と処理が
等価で且つ操作対象の演算資源が異なる別の命令に置換
する。従って、同時に実行できる命令の数が増加して、
無動作命令が減少し、並列度の高い並列化命令列を生成
することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、VLIW(Very Long I
nstruction Word)と呼ばれる長語命令型のマイクロプロ
セッサ、スーパスカラ型のマイクロプロセッサ、又は突
き放し実行型のマイクロプロセッサに関し、特に、演算
資源を有効利用した命令レベルの並列処理を行うプログ
ラム変換装置及びプロセッサに関する。
【0002】
【従来の技術】近年、高速処理を目的として、長語命令
型、スーパスカラ型、突き放し実行型により、複数の命
令を同時に実行するマイクロプロセッサが開発されてい
る。
【0003】長語命令型のマイクロプロセッサをターゲ
ットとするコンパイラの一例としては、命令列を決定し
た後、各命令が使用するマイクロプロセッサの演算器資
源や、長語命令の命令スロットの制約に従って、命令並
列化処理を行うものがある。
【0004】このような技術として、例えば特開平5−
265769号公報に記載されたものがある。
【0005】従来のプログラム変換装置を用いて、図6
中のソースプログラムを変換すると、先ず、ソースプロ
グラムから図6中の命令列が生成され、次に、この命令
列を並列化して、図6中の長語命令列が生成される。各
長語命令の第2命令スロットには無動作命令(nop)が挿
入され、ステップ数2の長語命令列が生成される。
【0006】また、従来のスーパスカラ型のプロセッサ
を用いて、図25に示すプログラムを実行すると、図3
4に示すパイプライン動作に従って動作し、5サイクル
で実行を終了する。
【0007】また、乗算を3サイクルで実行する乗算器
を備えた従来のプロセッサを用いて、図31に示すプロ
グラムを実行すると、図35に示すパイプライン動作に
従って動作し、7サイクルで実行を終了する。
【0008】
【発明が解決しようとする課題】しかしながら、前記従
来のプログラム変換装置では、ソースプログラムから生
成された命令列は、ターゲットとするプロセッサの演算
資源の制約等に起因して、必ずしも並列性が高いとは限
らず、その結果、命令並列化を行う際に無動作命令が多
く挿入されて、性能が上がらないという課題があった。
【0009】また、従来のスーパスカラ型のプロセッサ
では、複数の命令を同時にデコードしても、演算資源の
制約から、デコードされた一部の演算しか実行されず、
性能が上がらない。
【0010】更に、従来のプロセッサでは、複数のサイ
クルを要する演算器による演算が連続する場合には、こ
の演算が終了するまで、後続の演算が実行できないた
め、同様に性能が上がらない。
【0011】本発明は前記課題に鑑み、その目的は、命
令並列度が高い並列化命令列を得ることができるプログ
ラム変換装置、及び演算器の稼働率が高くて高速に演算
処理可能なプロセッサを提供することにある。
【0012】
【課題を解決するための手段】以上の目的を達成するた
め、本発明では、操作対象とする演算資源が同一である
2つの命令があれば、何れか一方の命令を演算資源の異
なる別の命令に置換することとする。
【0013】即ち、請求項1記載の発明のプログラム変
換装置は、所定の命令列に含まれる命令を、前記命令と
等価な操作を行う別の命令であって且つ前記命令が操作
対象とする演算資源とは異なる演算資源を操作の対象と
する命令に置換する命令変換手段と、前記命令変換手段
により前記命令が前記別の命令で置換された前記所定の
命令列を、プロセッサで並列実行可能な位置に配置する
命令並列化手段とを備えたことを特徴とする。
【0014】請求項2記載の発明は、前記請求項1記載
のプログラム変換装置において、前記命令変換手段は、
互いに等価な操作を行う命令であって、操作対象とする
演算資源が互いに異なる複数の命令を記憶する等価命令
記憶手段と、前記所定の命令列から、前記等価命令記憶
手段に記憶された命令と同一の命令を検出する命令検出
手段と、前記命令検出手段で検出された命令を、前記等
価命令記憶手段に記憶された命令のうち前記命令とは異
なる命令に置換する命令置換手段とを備えることを特徴
とする。
【0015】請求項3記載の発明は、前記請求項1記載
のプログラム変換装置において、前記命令並列化手段に
より得られた並列化命令列の命令並列度を算出する命令
並列度算出手段を備えることを特徴とする。
【0016】請求項4記載の発明は、前記請求項1記載
のプログラム変換装置において、前記命令変換手段は、
互いに等価な操作を行う複数の命令列を記憶し、前記複
数の命令列は、同じ順序で同じ演算資源を操作対象とす
る命令列同志を同類に集合させた等価命令列記憶手段
と、前記所定の命令列から、前記等価命令記憶手段に記
憶された命令列と同一の命令部分列を検出する命令部分
列検出手段と、前記命令部分列検出手段で検出された命
令部分列が属する同類命令列集合とは異なる同類命令列
集合を選択する同類命令列集合選択手段と、前記命令部
分列検出手段で検出された命令部分列を、前記同類命令
列集合選択手段で選択された同類命令列集合に属する命
令列に置換する命令列置換手段とを備えたことを特徴と
する。
【0017】請求項5記載の発明のプログラム変換装置
は、所定の命令列をプロセッサで並列実行可能な位置に
配置し、並列化命令列を生成する命令並列化手段と、互
いに等価な操作を行う命令であって、操作対象とする演
算資源が互いに異なる複数の命令を記憶する等価命令記
憶手段と、前記並列化命令列の所定範囲内にある並列化
命令から無動作命令を検出する無動作命令検出手段と、
前記検出された無動作命令を含んだ並列化命令に含まれ
る命令が、前記等価命令記憶手段に記憶された命令であ
るとき、前記等価命令記憶手段に記憶された命令の中か
ら、前記並列化命令に含まれる命令とは異なる別の命令
を選択する変換候補選択手段と、前記並列化命令に含ま
れる命令を、前記変換候補選択手段で選択された命令に
置換する命令置換手段とを備えたことを特徴とする。
【0018】請求項6記載の発明は、前記請求項5記載
のプログラム変換装置において、前記並列化命令列の中
で、前記並列化命令に含まれる命令とレジスタ干渉を起
こさない部分命令列を探索する有効範囲探索手段と、前
記有効範囲探索手段により探索された部分命令列に含ま
れる並列化命令の中から無動作命令を検出する他の無動
作命令検出手段とを備え、前記命令置換手段は、前記変
換候補選択手段で選択された命令を、前記他の無動作命
令検出手段により検出した無動作命令の配置位置に配置
することを特徴とする。
【0019】請求項7記載の発明のプロセッサは、第1
の演算資源と、第2の演算資源と、前記第1の演算資源
を操作対象とする2つの命令の一方を前記第2の演算資
源に割り当て、前記2つの命令を並列に実行する命令並
列化実行手段とを備えたことを特徴とする。
【0020】請求項8記載の発明は、前記請求項7記載
のプロセッサにおいて、前記命令並列化実行手段は、前
記2つの命令が共に前記第1の演算資源を操作対象とす
る命令であることを判別する命令判別手段と、前記第1
の演算資源を操作対象とする2つの命令のうち一方の命
令を、前記第2の演算資源に割り当てる演算資源割り当
て変更手段と、前記2つの命令を並列に実行する並列実
行手段とを備えたことを特徴とする。
【0021】請求項9記載の発明のプロセッサは、複数
サイクルを要して操作される第1の演算資源と、前記第
1の演算資源よりも少ないサイクルを要して操作される
1個以上の第2の演算資源と、所定の命令が前記第1の
演算資源を操作対象とする命令であることを判別する命
令判別手段と、前記命令判別手段で判別された所定の命
令を、この命令と等価な操作を行う1つ以上の命令であ
って前記第2の演算資源を操作対象とする命令に置き換
える命令変換手段とを備えたことを特徴としている。
【0022】請求項10記載の発明は、前記請求項9記
載のプロセッサにおいて、前記命令変換手段は、前記所
定の命令と等価な操作を行う命令群を探索する命令群探
索手段と、前記命令群探索手段により探索された命令群
の実行が終了する時点と、前記所定の命令の実行が終了
する時点とを比較する比較手段と、前記比較手段により
前記命令群の実行が前記所定の命令の実行よりも早く終
了すると判別されたとき、前記所定の命令を前記命令群
に置換する命令置換手段とを備えたことを特徴とする。
【0023】以上の構成により、請求項1ないし請求項
3記載の発明のプログラム変換装置では、命令列に含ま
れる一部の命令が、その命令とは処理が同一であって操
作対象の演算資源が異なる別の命令に置換される。その
結果、前記一部の命令と前記命令列に含まれる他の命令
とが演算資源を同じにして同時に実行できない場合であ
っても、前記置換された別の命令と前記命令列に含まれ
る他の命令とは演算資源を異にして、同時に実行でき
る。従って、同時に実行できる命令の数が増加して、無
動作命令が減少し、並列度の高い並列化命令列が生成さ
れる。
【0024】また、請求項4記載の発明のプログラム変
換装置では、命令列を、処理が等価な複数の命令に一度
に変換するので、1命令毎に他の1命令に変換して行く
ことが不可能な場合であっても、その命令列を他の命令
列とは演算資源の異なる命令列に変換して、同時に実行
可能な命令を増加させることができる。従って、並列化
命令列では、無動作命令の数の減少して、その並列度を
高めることができる。
【0025】更に、請求項5及び請求項6記載の発明の
プログラム変換装置では、所定の命令と無動作命令から
構成される並列化命令と、他の命令と無動作命令から構
成される別の並列化命令とが存在する場合に、これ等2
つの並列化命令を、前記所定の命令と前記他の命令とを
並列化した並列化命令にまとめられる。従って、並列化
命令の数が減少して、命令並列度が高くなる。
【0026】加えて、請求項7及び請求項8記載のプロ
セッサでは、同一の演算資源を操作対象とする2つの命
令は同時には実行できないが、何れか一方の命令が本来
空いている演算資源を操作対象とする命令に置換され
る。従って、同時に実行できる命令の数が増加して、プ
ログラムが高速に実行される。
【0027】また、請求項9及び請求項10記載のプロ
セッサでは、実行に複数サイクルを要する命令の実行中
は、この実行に使用されている第1の演算資源は次の命
令では使用できず、この命令の実行は通常では待機する
ことになるが、この命令が第2の演算資源を操作対象と
する命令に置換されるので、これ等2つの命令は同時に
実行されて、プログラムが高速に実行されることにな
る。
【0028】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を用いて説明する。
【0029】(第1の実施の形態)図1は、本発明の第
1の実施の形態のプログラム変換装置の概念図を示す。
同図において、101はソースプログラムをコンパイル
し、命令列を生成する一次コンパイル手段、102は命令
列から目的とする長語命令型の演算処理装置で動作する
長語命令列を生成する命令並列化手段、103は命令変換
テーブル(等価命令記憶手段)、104は命令検出手段であ
る。105は命令変換制御手段であって、前記命令検出手
段104の動作を制御し、命令の変換回数が規定値に達す
ると命令変換を停止するものである。106は命令置換手
段、107は長語命令列を記憶する長語命令列記憶手段、1
08は長語命令列の命令並列度を比較する命令並列度比較
手段である。前記命令変換テーブル103、命令検出手段1
04及び命令置換手段106により、命令変換手段109を構成
する。
【0030】図2は、プログラム変換装置の動作を表す
流れ図を示す。同図中、201は命令変換回数の初期化処
理、202は一次コンパイル処理、203及び207は命令並列
化処理、204及び209は長語命令列記憶処理、205は命令
変換回数判別処理、206は命令変換処理、208は命令並列
度比較処理、210は命令変換回数更新処理である。
【0031】図3は、プログラム変換装置で生成された
長語命令列が動作する演算処理装置の概念図を示す。同
図において、300はプログラムメモリ、301は2つの命令
スロットを持つ長語命令の命令レジスタ、302、303は、
各々、命令レジスタ301の第1命令スロット及び第2命
令スロットに割り当てられた命令をデコードするデコー
ダ、304は加算器(演算資源)、305はシフタ(演算資源)、
306はレジスタファイル、307はデータメモリである。
【0032】命令の種類を図4に示す。本演算処理装置
においては、図4に示す8種類の命令が定義される。同
図中、Rn,Rmは、何れも、レジスタファイル306の中にあ
る1つのレジスタを表す変数である。また、immは即値
であって、正の整数の値をとる。memはデータメモリ307
のアドレスを表す変数である。ニーモニックの項は、命
令スロットに記述される命令の内容を示す。配置スロッ
トの項は、各命令スロットに当該命令が配置可能か否か
を示し、第1及び第2は各々第1命令スロット及び第2
命令スロットを示す。例えば、加算命令は第1命令スロ
ットには配置できるが、第2命令スロットには配置でき
ないことを意味する。
【0033】次に、本実施の形態のプログラム変換装置
の動作を説明する。先ず、命令変換制御手段105によ
り、命令変換回数の初期化処理201が実行され、命令変
換回数が"0"に初期化される。
【0034】次に、一次コンパイル手段101により、一
次コンパイル処理202が実行されて、ソースプログラム
から生成された命令列が命令並列化手段102及び命令検
出手段104に転送される。
【0035】次に、命令並列化手段102により命令並列
化処理203が実行され、命令列から生成された長語命令
列が長語命令列記憶手段105に転送される。
【0036】更に、長語命令列記憶手段105により長語
命令列記憶処理204が実行される。
【0037】続いて、命令変換制御手段104により命令
変換回数判別処理205が実行され、命令変換回数が規定
値に達していると停止し、達していないと命令検出手段
104を起動する。前記規定値としては、任意の値、例え
ば命令列中の命令数等を設定しておく。
【0038】次に、命令検出手段104及び命令置換手段1
06により命令変換処理206が実行される。命令変換テー
ブル103は、図5に示すように、命令グループから成
り、命令グループは、互いに処理が等価で且つ別の演算
器を使用する複数の命令から構成される。
【0039】この命令変換テーブルに含まれる命令グル
ープ1に登録された加算命令add Rm,Rmと、左シフト命
令asl 1,Rmは、何れも、レジスタRmの値を2倍して、
レジスタRmに転送する命令であるが、加算命令は加算器
304を使用し、左シフト命令はシフタ305を使用する。従
って、これ等2つの命令は、お互いに処理が等価で且つ
別の演算器を使用する命令である。
【0040】命令変換処理206においては、先ず、命令
検出手段104により、命令変換テーブル103の命令グルー
プに含まれる命令を命令列の中から検出する。次に、命
令置換手段106により、検出された命令をその命令が属
する命令グループの別の命令に置き換える。次に、命令
列が命令並列化手段102に転送される。
【0041】次に、命令並列化手段102により命令並列
化処理207が実行され、生成された長語命令列が命令並
列度比較手段108に転送される。
【0042】続いて、長語命令列記憶手段107に記憶さ
れた長語命令列が、命令並列度比較手段108に転送され
る。
【0043】更に、命令並列度比較手段(命令並列度算
出手段)108により、命令並列度比較処理208が実行され
る。即ち、先ず、命令並列度を算出する。ここでは、並
列化する前の命令列の長さを、その命令列を並列化した
後の長語命令列の長さで割り、その商をその長語命令列
の命令並列度とする。そして、算出した命令並列度が高
いと判断された側の長語命令列が長語命令列記憶手段10
7に転送される。
【0044】その後、命令変換制御手段105により命令
変換回数更新処理210が実行され、命令変換回数がイン
クリメントされて、命令変換回数判別処理205に進む。
【0045】本実施の形態のプログラム変換装置によれ
ば、ソースプログラムから、命令並列度が大きな長語命
令列を生成することができる。このことを、図6から図
8を用いて説明する。
【0046】図6は、ソースプログラム、一次コンパイ
ル処理201で生成された命令列、変数のレジスタ割り付
け、及び命令並列化処理203で生成された長語命令列を
示す。また、命令変換回数の規定値を"1"とする。
【0047】(長語命令列記憶処理204)図6の中の長
語命令列が長語命令列記憶手段107に記憶される。
【0048】(命令変換回数判別処理205)命令変換回
数が"0"であって、規定値"1"に達していないので、命
令変換処理206に進む。
【0049】(命令変換処理206)図6の中の命令列の1
番目の命令が、命令グループのレジスタ変数RmがR0の場
合の加算命令add R0,R0に一致するので、この命令を命
令検出手段104により検出する。次に、命令置換手段106
により、この命令グループの別の命令、即ち、左シフト
命令asl 1,R0に置き換え、図7に示す命令列を生成す
る。
【0050】(命令並列化処理207)図7の命令列か
ら、図8の長語命令列を生成する。
【0051】(命令並列度比較処理208)長語命令列記
憶手段107に記憶した図6中の長語命令列と、命令並列
化手段102から転送された図8の長語命令列の命令並列
度とを比較する。
【0052】図6中の長語命令列の命令並列度は"1"、
図8の長語命令列(並列化命令列1)の命令並列度は"2"
であるので、命令並列度が大きい方の図8の長語命令列
が長語命令列記憶手段107に転送される。
【0053】(長語命令列記憶処理209)図8の長語命
令列が長語命令列記憶手段107に記憶される。
【0054】(命令変換回数更新処理210)命令変換回
数を更新し、"1"とする。
【0055】(命令変換回数判別処理205)命令変換回
数が規定値"1"に達したので、終了する。
【0056】以上説明したように、本実施の形態のプロ
グラム変換装置を用いれば、図6の中のソースプログラ
ムから、図8に示すようなステップ数が"1"であって命
令並列度の高い長語命令列を生成することができる。
【0057】(第2の実施の形態)図9は、本発明の第
2の実施の形態のプログラム変換装置の概念図を示す。
同図において、901は命令変換手段、902は長語命令列記
憶手段である。図10は、長語命令列を考慮した命令変
換を行う命令変換手段901の構成を示す。図10におい
て、1001は無動作命令検出手段、1002は変換候補選択手
段、1003は配置可能性検証手段、1004は命令置換手段、
1005は命令変換テーブル(等価命令記憶手段)、1006は命
令スロット設定手段、1007は有効範囲探索手段である。
【0058】図11は命令変換手段901の動作を表す流
れ図を示し、1101は第1無動作命令検出処理、1102は変
換候補選択処理、1103は命令スロット設定処理、1104は
有効範囲探索処理、1105は第2無動作命令検出処理、11
06は配置可能性検証処理、1107は命令置換処理である。
【0059】次に、前記命令変換手段901の動作を説明
する。先ず、無動作命令検出手段1001により第1無動作
命令検出処理1101が実行され、長語命令列(並列化命令
列)の中の並列化命令から無動作命令(nop)Aが検出され
れば、変換候補選択処理1102に進み、検出されなければ
終了する。
【0060】次に、変換候補選択手段1002により変換候
補選択処理1102が実行され、無動作命令Aと同じ長語命
令の異なる命令スロットの命令Bが、命令変換テーブル
1005の何れかの命令グループに存在している場合、その
命令グループから、命令Bと異なる命令Cを選択し、命
令スロット設定処理1103に進む。命令Bが命令変換テー
ブルの何れの命令グループにも存在しなければ、終了す
る。
【0061】次に、命令スロット設定手段1006により命
令スロット設定処理1103が実行され、命令Cが配置可能
な命令スロットを無動作命令検出手段1001に転送する。
【0062】更に、有効範囲探索手段1007により有効範
囲探索処理1104が実行され、長語命令列の中で、命令B
とレジスタ干渉を起さない範囲の部分命令列を探索し、
その範囲を無動作命令検出手段1001に転送する。
【0063】ここで、命令Bとレジスタ干渉を起さない
範囲とは、命令Bよりも先に実行され、命令Bとの間にデ
ータ依存関係のある命令の中で、最も後に実行される命
令を含む長語命令の1つ後の長語命令から、命令Bより
も後に実行され、命令Bとの間にデータ依存関係のある
命令の中で最も先に実行される命令を含む長語命令の1
つ前の長語命令までを指す。
【0064】ここで、先行命令Xと後続命令Yとの間に
データ依存関係があるとは、次の1)から3)の何れか
の場合に該当する場合をいう。
【0065】1)先行命令Xが書き込むレジスタを、後
続命令Yが参照する場合 2)先行命令Xが参照するレジスタに、後続命令Yが書
き込む場合 3)先行命令Xが書き込むレジスタに、構造命令Yが書
き込む場合 次に、無動作命令検出手段(他の無動作命令検出手段を
兼ねる)1001により、第2無動作命令検出処理1105が実
行され、長語命令列の中の、命令Bとレジスタ干渉を起
こさない範囲にある、命令Cが配置可能な命令スロット
の中から、無動作命令Aと異なる無動作命令Dが検出さ
れれば、配置可能性判別処理1106に進み、検出されなけ
れば終了する。
【0066】更に、配置可能性検証手段1003により配置
可能性検証処理1106が実行され、長語命令の中の無動作
命令Dを命令Cで置き換えても、長語命令として成立す
るか否かが検証される。長語命令として成立すれば、命
令置換処理1105に進み、成立しなければ終了する。
【0067】次に、命令置換手段1004により命令置換処
理1107が実行され、命令列の中の命令Bが命令Cに置き換
えられる。
【0068】この命令変換手段を使用すれば命令並列度
を効率良く上げることができる。
【0069】図12に示す命令列に対する命令変換の動
作を説明する。この命令列を並列化して、長語命令列記
憶手段902に記憶した長語命令列を図13に示す。
【0070】(第1無動作命令検出処理1101)図13に
示す長語命令列の第2長語命令の第2命令スロットの無
動作命令を検出する。
【0071】(変換候補選択処理1102)第2長語命令の
第1命令スロットの加算命令add R1,R1に対する変換候
補の左シフト命令asl 1,R1を選択する。
【0072】(命令スロット設定処理1103)図4より、
左シフト命令asl 1,R1が配置可能な命令スロットは第
2命令スロットであるので、この情報を無動作命令検出
手段1001に転送する。
【0073】(有効範囲探索処理1104)第2長語命令の
第1命令スロットの加算命令add R1,R1とレジスタ干渉
のない長語命令列の範囲を探す。
【0074】第2長語命令よりも前の第1長語命令で
は、第2命令スロットの右シフト命令asr 2,R1におい
て、加算命令add R1,R1で参照するレジスタR1への書き
込みが行われるため、この2つの命令の間にはデータ依
存関係がある。従って、加算命令add R1,R1とレジスタ
干渉のない長語命令列の範囲は、この長語命令の1つ後
の第2長語命令から後になる。
【0075】また、第2長語命令よりも後の長語命令で
は、第3長語命令に含まれる命令ではレジスタR1は参照
されず、第4長語命令の中の加算命令add R2,R1におい
てレジスタR1が参照されるため、先の加算命令add R1,
R1との間にデータ依存関係がある。従って、加算命令ad
d R1,R1とレジスタ干渉のない長語命令列の範囲は、こ
の長語命令の1つ前の第3長語命令から前になる。
【0076】結局、加算命令add R1,R1とレジスタ干渉
のない長語命令列の範囲は、第2長語命令から第3長語
命令までの間となる。
【0077】(第2無動作命令検出処理1105)左シフト
命令が配置可能な命令スロットは第2命令スロットであ
るから、第2長語命令から第3長語命令の第2命令スロ
ットから、第2長語命令の第2命令スロットの無動作命
令以外の無動作命令を探し、第3長語命令の第2命令ス
ロットにある無動作命令を検出する。
【0078】(配置可能性検証処理1106)左シフト命令
asl 1,R1が第3長語命令の第2命令スロットに配置可
能であることを検証する。
【0079】(命令置換処理1107)命令列の第3番目の
加算命令add R1,R1を、左シフト命令asl 1,R1に置き
換え、その結果、図14に示す命令列を得る。
【0080】以上のようにして、命令変換処理を行なっ
た後、命令並列化処理を行うと、図15に示す長語命令
列を得る。
【0081】長語命令列を考慮せずに命令変換処理を行
なった場合、命令列の第1番目の加算命令add R2,R2を
変換して、図16の命令列が生成されるが、この命令列
を並列化すると、図17のような長語命令列となって、
並列度を上げることができない。しかし、長語命令列を
考慮する本プログラム変換装置を用いれば、前記のよう
な命令変換が行われないので、無駄な変換処理を行わず
に済む。従って、効率的に並列度を上げることができ
る。
【0082】(第3の実施の形態)次に、本発明の第3
の実施の形態を説明する。本実施の形態では、プログラ
ム変換装置を図18に示すように構成し、命令変換テー
ブル1804を図19のように構成することにより、複数の
命令を一度に変換することができ、1対1の命令変換で
は不可能な並列度の向上を実現することができる。以
下、詳細に説明する。
【0083】図18において、1801は命令群検出手段
(命令部分列検出手段)、1802は命令類選択手段(同類命
令列集合選択手段)、1803は命令群置換手段(命令列置換
手段)、1804は命令変換テーブル(等価命令列記憶手段)
である。命令変換テーブル1804を図19に示す。同図に
おいて、各命令群は、順序の付された1つ又は複数の命
令の集合であり、命令類は1つ又は複数の命令群から構
成され、命令類を構成している各命令群は同一数の命令
を持ち、各命令群の同一順序の命令は、同じ演算器を使
用する命令である。命令類グループは1つ又は複数の命
令類から構成され、各命令類グループを構成する全ての
命令類の中の全ての命令群は、同じ処理を行う命令又は
命令の列である。
【0084】命令群検出手段1801は、命令列から、命令
変換テーブルの何れかの命令群を検出する。命令類選択
手段1802は、同じ命令類グループの中で、命令群検出手
段1801が検出した命令群が属する命令類とは異なる命令
類を選択する。命令群置換手段1802は、命令群検出手段
1801が検出した命令群を、命令類選択手段1802が選択し
た命令類に属する命令群に置き換える。
【0085】変換しようとする命令列を図20に示す。
また、この命令列を並列化した長語命令列を図21に示
す。
【0086】命令変換処理は、先ず、命令群検出手段18
01によって、命令列から、図19の命令変換テーブルの
命令類グループ2の命令類3の命令群4が、第4命令から
第6命令の命令部分列に存在することを検出する。
【0087】次に、命令類選択手段1802は、命令類グル
ープ2の中で、命令群4が属する命令類(同類命令列集合)
3とは異なる同類命令列集合である命令類4を選択する。
【0088】次に、命令群置換手段1803によって、命令
群4が、命令類4に属する命令群5に置き換えられ、命令
列が図22に示すような命令列に変換される。
【0089】図22に示す命令列を並列化すると、図2
3示すような長語命令列となる。図21の長語命令列
と、図23の長語命令列とを比較して判るように、命令
並列度が向上し、ステップ数が減少している。
【0090】このように、1つづつの命令の置換えが不
可能な図20の命令列は、前記したように複数の命令を
同時に変換することにより、命令並列度を上げることが
できる。
【0091】また、命令類という命令群の集合を設け、
同じ命令類内の命令群の置換を避けることにより、無駄
な命令変換を行なわずに済み、効率的に命令並列度を上
げ留ことが可能である。つまり、同じ命令類に属する命
令群は、同じ順に同じ演算器を使用するので、これ等の
命令群の間で置換をしても、命令並列度は向上しないた
め、これを禁止することにより、命令並列度の向上する
可能性のある命令群とのみ置換できるようにしている。
【0092】(第4の実施の形態)続いて、本発明の第
4の実施の形態を説明する。図24は、本発明の第4の
実施の形態のスーパスカラ型のプロセッサの概念図を示
す。
【0093】図24において、2400はプログラムメモ
リ、2401は命令バッファ、2402は命令判別手段、2403は
テーブル検索手段、2404は命令変換テーブル、2405は命
令置換手段(演算資源割り当て変更手段)、2406は命令レ
ジスタ、2407はデコーダ、2408は加算器(第1の演算資
源)、2409はシフタ(第2の演算資源)、2410はレジスタ
ファイル、2411はデータメモリである。前記命令判別手
段2402、命令置換手段2405、命令レジスタ2406及びデコ
ーダ2407により、命令並列化実行手段2412を構成する。
また、前記命令レジスタ2406及びデコーダ2407により並
列実行手段2413を構成する。
【0094】前記命令変換テーブル2404は、第1の実施
の形態で用いた命令変換テーブルと同じ構成を有し、図
5に示した命令グループにより構成されているものとす
る。また、命令セットは第1の実施の形態と同じもので
あるとする。
【0095】次に、本実施の形態のプロセッサの動作を
説明する。本実施の形態のプロセッサの動作は、命令変
換、命令デコード、演算実行の3つのパイプラインステ
ージから成り、各々のパイプラインステージは並列に動
作することが可能である。また、各命令は、各パイプラ
インステージを、命令変換ステージ、命令デコードステ
ージ、演算実行ステージの順に通って実行される。
【0096】以下、命令変換ステージの動作を説明す
る。
【0097】(ステップ1)命令判別手段2402によっ
て、命令バッファ2401の第1の命令と第2の命令とが同
じ演算手段を用いるか否か、即ち、共に加算器2408を使
用する命令か、又は共にシフタ2409を使用する命令であ
るか否かを判別し、同じ演算手段を用いる場合にはステ
ップ2に進む。同じ演算手段を用いない場合には、第1
の命令と第2の命令とを命令レジスタ2406に転送して、
命令変換ステージを終了する。
【0098】(ステップ2)テーブル検索手段2403によ
って、何れか一方の命令が命令変換テーブル2403の命令
グループに含まれるか否かが判別される。含まれる場合
にはステップ3に進む。含まれない場合には、第1の命
令と第2の命令とを命令レジスタ2406に転送して、命令
変換ステージを終了する。
【0099】(ステップ3)命令置換手段2405によっ
て、命令変換テーブル2404の命令グループに含まれる命
令が、命令グループの他の命令に置き換えられ、もう一
方の命令と共に命令レジスタ2406に転送される。
【0100】命令デコードステージでは、デコーダ2407
によって、命令レジスタ2406の2つの命令がデコードさ
れる。デコードされた2つの命令が同じ演算器を用いる
場合には、先の命令のデコード結果のみが各演算器に渡
され、後の命令は命令バッファ2401に転送される。デコ
ードされた2つの命令が同じ演算器を用いない場合に
は、2つの命令のデコード結果は共に各演算器に渡され
る。
【0101】演算実行ステージでは、デコーダ2407のデ
コード結果に基づき、演算が実行される。
【0102】本実施の形態のスーパスカラ型のプロセッ
サによれば、多くの命令を並列に実行することができ、
従って、プログラムを高速に実行することができる。こ
のことを図25から図27を用いて説明する。
【0103】図25は、プログラムメモリに格納された
プログラムの命令列を表す。図26は、命令レジスタに
転送される命令列を表す。また図27は、このプログラ
ムを実行する際のパイプラインの動作を表す図である。
【0104】(時刻t0から時刻t1まで) (命令変換ステージ) (ステップ1)命令判別手段2402によって、命令A:add
R3,R2、及び命令B:add R0,R0は、共に加算器2406を使
用することが判別され、ステップ2に進む。
【0105】(ステップ2)テーブル検索手段2403によ
って、命令Bが命令変換テーブル2404の命令グループに
含まれることが判別され、ステップ3に進む。
【0106】(ステップ3)命令置換手段2405によっ
て、命令Bが図5の命令グループの命令E:asl 1,R0に
置き換えられ、命令A、Eが命令レジスタ2406に転送さ
れる。
【0107】(時刻t1から時刻t2まで) (命令変換ステージ) (ステップ1)命令判別手段2402によって、命令C:add
R1,R1、及び命令D:sub R2,R0は、共に加算器2408を使
用することが判別され、ステップ2に進む。
【0108】(ステップ2)テーブル検索手段2403によ
って、命令Cが命令変換テーブル2404の命令グループに
含まれることが判別され、ステップ3に進む。
【0109】(ステップ3)命令置換手段2405によっ
て、命令Cが図5の命令グループの命令F:asl 1,R1に
置き換えられ、命令F、Dが命令レジスタ2406に転送さ
れる。
【0110】(命令デコードステージ)命令A、Eがデ
コードされる。
【0111】(時刻t2から時刻t3まで) (命令デコードステージ)命令F、Dがデコードされ
る。
【0112】(演算実行ステージ)加算器2408におい
て、命令Aのデコード結果に従い、R2とR3の和をR2に代
入する。同時に、シフタ2409は、命令Eのデコード結果
に従い、R0の値を1ビット左シフトし、R0に代入する。
【0113】(時刻t3から時刻t4まで) (演算実行ステージ)加算器2408において、命令Dのデ
コード結果に従い、R0とR2の差をR0に代入する。同時
に、シフタ2409は、命令Fのデコード結果に従い、R1の
値を1ビット左シフトし、R1に代入する。
【0114】このように、本実施の形態のプロセッサに
よれば、本来は加算器で実行される命令を、シフタで実
行される等価な命令に置き換えるので、演算実行の並列
度を上げ、プログラムを高速に実行することができる。
【0115】(第5の実施の形態)次に、本発明の第5
の実施の形態を説明する。図28は本実施の形態のプロ
セッサを示す概念図である。
【0116】図28において、2800はプログラムメモ
リ、2801は命令バッファ、2802は命令判別手段、2803は
テーブル検索手段(命令群探索手段)、2804は命令変換テ
ーブル、2805は命令置換手段、2806は命令レジスタ、28
07はデコーダ、2808は比較器(比較手段)、2809は乗算器
状態ダウンカウンタ、2810は乗算器状態ダウンカウンタ
制御手段、2813は乗算器(第1の演算資源)、2811は加算
器(第2の演算資源)、2812はシフタ(第2の演算資源)、
2814はシャドウレジスタ、2815はレジスタファイル、28
16はデータメモリである。前記テーブル検索手段2803、
比較器2808及び命令置換手段2805により、命令変換手段
2817を構成する。乗算器状態ダウンカウンタ2809は、"
0"以上の整数値をとる変数で構成されており、初期値
は"0"である。
【0117】命令の種類を、図29に示す。本プロセッ
サにおいては、図29の9種類の命令が定義されてい
る。図中、Rn,Rmは何れも、レジスタファイル2815の中
にある1つのレジスタを表す変数である。また、immは
即値であって、正の整数の値をとる。memは、データメ
モリ2816のアドレスを表す変数である。ニーモニックの
項は、命令レジスタに記述される命令の内容を示す。実
行サイクル数の項は、各命令の演算実行に要する実行時
間をサイクル数で表現している。
【0118】命令変換テーブル2804は、図30に示すよ
うな複数の命令グループから構成される。各命令グルー
プは、変換対象命令と置換命令群と置換命令数とから構
成される。変換対象命令は乗算器2813を使用する乗算命
令であり、置換命令群は、この乗算命令と同じ処理を乗
算器2813以外の演算器を用いて実現する命令列であり、
置換命令数は置換命令群の命令の数である。また、置換
命令群の命令で使用しているレジスタ変数RRは、シャド
ウレジスタ2814のレジスタを表す変数である。
【0119】次に、本実施の形態のプロセッサの動作を
説明する。
【0120】本実施の形態のプロセッサの動作は、命令
変換、命令デコード、演算実行の3つのパイプラインス
テージから成り、各々のパイプラインステージは並列に
動作することが可能である。また、各命令は、各パイプ
ラインステージを、命令変換ステージ、命令デコードス
テージ、演算実行ステージの順に通って実行される。
【0121】以下、命令変換ステージの動作を説明す
る。
【0122】(ステップ1)命令判別手段2802によっ
て、プログラムメモリ2800から命令バッファ2801に転送
された命令が乗算命令か否かが判別され、乗算命令でな
い場合には、その命令が命令レジスタ2806に転送され、
ステップ6に進む。乗算命令である場合には、ステップ
2に進む。
【0123】(ステップ2)テーブル検索手段2803によ
って命令変換テーブル2804が検索され、その乗算命令が
ある命令グループの変換対象命令になっているか否かが
判別され、ある命令グループの変換対象命令になってい
る場合には、その命令グループの置換命令数が比較器28
08に転送され、その命令グループの置換命令群が命令置
換手段2805に転送されて、ステップ3に進む。何れの命
令グループの変換対象命令にもなっていない場合には、
命令バッファ2801の乗算命令が命令レジスタ2806に転送
され、ステップ7に進む。
【0124】(ステップ3)比較器2808によって、乗算
器状態ダウンカウンタ2809の値とテーブル検索手段2803
から転送された置換命令数とが比較され、乗算器状態ダ
ウンカウンタ2809の値がテーブル検索手段2803から転送
された置換命令数より小さい場合には、命令バッファ28
01の乗算命令が命令レジスタ2806に転送され、ステップ
7に進む。一方、小さくない場合には、ステップ4に進
む。
【0125】(ステップ4)命令置換手段2805によっ
て、テーブル検索手段2803から転送された置換命令群が
命令レジスタ2806に転送され、ステップ5に進む。
【0126】(ステップ5)乗算器状態ダウンカウンタ
制御手段2810によって、乗算器状態ダウンカウンタ2809
の値が正である場合には、その値から置換命令数+1を引
き、その結果が正である場合にはその結果を乗算器状態
ダウンカウンタ2809の値とし、そうでない場愛には、"
0"を乗算器状態ダウンカウンタ2809の値とし、命令変
換ステージを終了する。
【0127】(ステップ6)乗算器状態ダウンカウンタ
制御手段2810によって、乗算器状態ダウンカウンタ2809
の値が正である場合には、その値を1つ小さくして、命
令変換ステージを終了する。
【0128】(ステップ7)乗算器状態ダウンカウンタ
制御手段2810によって、乗算器状態ダウンカウンタ2809
の値が"4"に設定され、命令変換ステージを終了する。
【0129】命令デコードステージでは、デコーダ2807
によって、命令レジスタ2806にある先頭の命令がデコー
ドされ、デコード結果を各演算器に転送する。但し、命
令が乗算であって、乗算器2813が先行する乗算の実行を
終了していない場合は、この命令を命令レジスタ2806の
先頭に戻す。
【0130】演算実行ステージでは、デコーダ2807のデ
コード結果に基づき、演算が実行される。但し、乗算器
2813は、先行する乗算の実行が終了していない場合は、
先行する乗算の実行を続ける。
【0131】本実施の形態のプロセッサによれば、実行
に複数サイクルを要する乗算器による第1の乗算命令の
実行中に、第2の乗算命令を他の演算器を用いる命令群
に変換して実行することにより、プログラムを高速に実
行することができる。このことを、図31から図33を
用いて説明する。
【0132】図31は、プログラムメモリに格納された
プログラムの命令列を表す。図32は、命令レジスタに
転送される命令列を表す。また図33は、このプログラ
ムを実行する際のパイプラインの動作を表す図である。
【0133】(時刻t0から時刻t1まで) (命令変換ステージ) (ステップ1)命令判別手段2802によって、命令A:mul
5,R0が乗算命令であることが判別され、ステップ2に
進む。
【0134】(ステップ2)テーブル検索手段2803によ
って命令変換テーブル2804が検索され、図30より、こ
の命令が命令グループ4の変換対象命令であることが判
り、置換命令数3が比較器2808に転送され、命令グルー
プ4の置換命令群が命令置換手段2805に転送されて、ス
テップ3に進む。
【0135】(ステップ3)比較器2808によって、置換
命令数3と乗算器状態ダウンカウンタ2809の値とが比較
され、乗算器状態ダウンカウンタ2809の値は"0"である
ので、乗算命令Aが命令レジスタ2806に転送され、ステ
ップ7に進む。
【0136】(ステップ7)乗算器状態ダウンカウンタ
制御手段2810によって、乗算器状態ダウンカウンタ2809
の値が"4"に設定され、命令変換ステージを終了する。
【0137】(時刻t1から時刻t2まで) (命令変換ステージ) (ステップ1)命令判別手段2802によって、次の命令B:
mul 3,R1が乗算命令であることが判別され、ステップ
2に進む。
【0138】(ステップ2)テーブル検索手段2803によ
って命令変換テーブル2804が検索され、図30より、こ
の命令は、命令グループ2の変換対象命令であることが
判り、置換命令数"3"が比較器2808に転送され、命令グ
ループ2の置換命令群が命令置換手段2805に転送され
て、ステップ3に進む。
【0139】(ステップ3)比較器2808によって、置換
命令数3と乗算器状態ダウンカウンタ2809の値"4"とが
比較され、乗算命令Aが命令レジスタ2806に転送され、
ステップ4に進む。
【0140】(ステップ4)命令置換手段2805によっ
て、命令グループ2の置換命令群、即ち、命令C:movR1,R
R、命令D:asl 1,R1、命令E:add RR,R1が命令レジスタ
2806に転送され、ステップ5に進む。
【0141】(ステップ5)乗算器状態ダウンカウンタ
制御手段2810によって、乗算器状態ダウンカウンタ2809
の値"4"から、置換命令数"3"に"1"を加えた"4"を引
くと、"0"になるので、乗算器状態ダウンカウンタ2809
の値を"0"にして、命令変換ステージを終了する。
【0142】(命令デコードステージ)デコーダ2807に
よって命令Aがデコードされる。
【0143】(時刻t2から時刻t3まで) (命令デコードステージ)デコーダ2807によって命令C
がデコードされる。
【0144】(演算実行ステージ)命令Aのデコード結
果として、R0と"5"との乗算が乗算器2811で実行され
る。乗算命令の実行サイクル数は"3"であるので、この
乗算は、時刻t5に終了する。
【0145】(時刻t3から時刻t4まで) (命令デコードステージ)デコーダ2807によって命令D
がデコードされる。
【0146】(演算実行ステージ)命令Cのデコード結
果として、R1の値がRRに転送される。また、乗算器2811
では、引続きR0と"5"との乗算が行われる。
【0147】(時刻t4から時刻t5まで) (命令デコードステージ)デコーダ2807によって命令E
がデコードされる。
【0148】(演算実行ステージ)命令Dのデコード結
果として、シフタ2810においてR1の値が1ビット左シフ
トされる。また、乗算器2811では引続きR0と"5"との乗
算が行われる。
【0149】(時刻t5から時刻t6まで) (演算実行ステージ)命令EEのデコード結果として、
加算器2809において、R1の値とRRの値とが加算される。
【0150】このように、本実施の形態のプロセッサに
よれば、本来は乗算器で実行される命令を、シフタや加
算器等で実行される等価な命令群に置き換えるので、演
算実行の並列度を上げ、プログラムを高速に実行するこ
とができる。
【0151】
【発明の効果】以上説明したように、請求項1ないし請
求項3記載の発明のプログラム変換装置によれば、命令
列に含まれる一部の命令を、その命令とは処理が同一で
あって操作対象の演算資源が異なる別の命令に置換した
ので、同時に実行できる命令の数が増加して、無動作命
令を減少させることができ、並列度の高い並列化命令列
を生成できる。
【0152】また、請求項4記載の発明のプログラム変
換装置によれば、命令列を、処理が等価な複数の命令に
一度に変換するので、1命令毎に他の1命令に変換して
行くことが不可能な場合であっても、同時に実行可能な
命令を増加させて、並列化命令列の命令並列度を高める
ことができる。
【0153】更に、請求項5及び請求項6記載の発明の
プログラム変換装置によれば、所定の命令と無動作命令
から構成される並列化命令と、他の命令と無動作命令か
ら構成される別の並列化命令とを、前記所定の命令と前
記他の命令とを並列化した並列化命令にまとめたで、並
列化命令の数を減少させて、並列化命令列の命令並列度
を高めることができる。
【0154】加えて、請求項7及び請求項8記載のプロ
セッサによれば、同一の演算資源を操作対象とする2つ
の命令であっても、何れか一方の命令を本来空いている
演算資源を操作対象とする命令に置換したので、同時に
実行できる命令の数を増加させて、プログラムの高速実
行が可能である。
【0155】また、請求項9及び請求項10記載のプロ
セッサによれば、第1の演算資源を操作資源とする命令
を、第2の演算資源を操作対象とする命令に置換したの
で、この命令の前の命令で前記第1の演算資源が使用さ
れている最中であっても、この命令を実行でき、プログ
ラムの高速実行が可能である。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態のプログラム変換装
置の全体構成を示すブロック図である。
【図2】同プログラム変換装置の動作を示す流れ図であ
る。
【図3】同プログラム変換装置で生成された長語命令列
が動作する演算処理装置の概略構成を示す図である。
【図4】同実施の形態で例示する命令セットを示す図で
ある。
【図5】同実施の形態のプログラム変換装置に備える命
令変換テーブルの内容を示す図である。
【図6】同実施の形態で例示するソースプログラム、各
変数のレジスタへの割り当て、命令列及び長語命令列を
示す図である。
【図7】同実施の形態のプログラム変換装置で得られる
命令列を示す図である。
【図8】同プログラム変換装置で得られる長語命令列を
示す図である。
【図9】本発明の第2の実施の形態のプログラム変換装
置の全体構成を示すブロック図である。
【図10】同プログラム変換装置に備える命令変換手段
の構成を示す図である。
【図11】同命令変換手段の動作を示す流れ図である。
【図12】同実施の形態で例示する命令列を示す図であ
る。
【図13】図12の命令列から生成される長語命令列を
示す図である。
【図14】同実施の形態のプログラム変換装置で得られ
る命令列を示す図である。
【図15】同プログラム変換装置で得られる長語命令列
を示す図である。
【図16】同プログラム変換装置の効果を説明するため
に例示する命令列を示す図である。
【図17】同プログラム変換装置の効果を説明するため
に用いる長語命令列を示す図である。
【図18】本発明の第3の実施の形態のプログラム変換
装置の全体構成を示すブロック図である。
【図19】同実施の形態のプログラム変換装置に備える
命令変換テーブルの内容を示す図である。
【図20】同実施の形態で例示する命令列を示す図であ
る。
【図21】図20の命令列から生成される長語命令列を
示す図である。
【図22】同実施の形態のプログラム変換装置で得られ
る命令列を示す図である。
【図23】同プログラム変換装置で得られる長語命令列
を示す図である。
【図24】本発明の第4の実施の形態のスーパスカラ型
のプロセッサの構成を示すブロック図である。
【図25】同プロセッサのプログラムメモリに格納され
たプログラムの命令列を例示する図である。
【図26】同プロセッサの命令レジスタに転送される命
令置換後の命令列を示す図である。
【図27】同プロセッサのパイプライン動作を示す図で
ある。
【図28】本発明の第5の実施の形態のプロセッサの全
体構成を示すブロック図である。
【図29】同実施の形態で例示する命令セットを示す図
である。
【図30】同実施の形態のプログラム変換装置に備える
命令変換テーブルの内容を示す図である。
【図31】同プロセッサのプログラムメモリに格納され
たプログラムの命令列を例示する図である。
【図32】同プロセッサの命令レジスタに転送される命
令置換後の命令列を示す図である。
【図33】同プロセッサのパイプライン動作を示す図で
ある。
【図34】従来のスーパスカラ型のプロセッサのパイプ
ライン動作を示す図である。
【図35】従来のプロセッサのパイプライン動作を示す
図である。
【符号の説明】
101 一次コンパイル手段 102 命令並列化手段 103 命令変換テーブル(等価命令記憶手段) 104 命令検出手段 105 命令変換制御手段 106 命令置換手段 107 長語命令列記憶手段 108 命令並列度比較手段(命令並列度算出
手段) 109 命令変換手段 300 プログラムメモリ 301 命令レジスタ 302、303 デコーダ 304 加算器(演算資源) 305 シフタ(演算資源) 306 レジスタファイル 901 命令変換手段 902 長語命令列記憶手段 1001 無動作命令検出手段(他の無動作命令
検出手段) 1002 変換候補選択手段 1003 配置可能性検証手段 1004 命令置換手段 1005 命令変換テーブル(等価命令記憶手段) 1007 有効範囲探索手段 1801 命令群検出手段(命令部分列検出手段) 1802 命令類選択手段(同類命令列集合選択
手段) 1803 命令群置換手段(命令列置換手段) 1804 命令変換テーブル(等価命令記憶手段) 2400 プログラムメモリ 2401 命令バッファ 2402 命令判別手段 2403 テーブル検索手段 2404 命令変換テーブル 2405 命令置換手段(演算資源割り当て変更
手段) 2406 命令レジスタ 2407 デコーダ 2408 加算器(第1の演算資源) 2409 シフタ(第2の演算資源) 2410 レジスタファイル 2411 データメモリ 2412 命令並列化実行手段 2413 並列実行手段 2800 プログラムメモリ 2801 命令バッファ 2802 命令判別手段 2803 テーブル検索手段(命令群探索手段) 2804 命令変換テーブル 2805 命令置換手段 2806 命令レジスタ 2807 デコーダ 2808 比較器(比較手段) 2809 乗算器状態ダウンカウンタ 2810 乗算器状態ダウンカウンタ制御手段 2811 加算器(第2の演算手段) 2812 シフタ(第2の演算手段) 2813 乗算器(第1の演算手段) 2815 レジスタファイル 2817 命令変換手段

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 所定の命令列に含まれる命令を、前記命
    令と等価な操作を行う別の命令であって且つ前記命令が
    操作対象とする演算資源とは異なる演算資源を操作の対
    象とする命令に置換する命令変換手段と、 前記命令変換手段により前記命令が前記別の命令で置換
    された前記所定の命令列を、プロセッサで並列実行可能
    な位置に配置する命令並列化手段とを備えたことを特徴
    とするプログラム変換装置。
  2. 【請求項2】 前記命令変換手段は、 互いに等価な操作を行う命令であって、操作対象とする
    演算資源が互いに異なる複数の命令を記憶する等価命令
    記憶手段と、 前記所定の命令列から、前記等価命令記憶手段に記憶さ
    れた命令と同一の命令を検出する命令検出手段と、 前記命令検出手段で検出された命令を、前記等価命令記
    憶手段に記憶された命令のうち前記命令とは異なる命令
    に置換する命令置換手段とを備えることを特徴とする請
    求項1記載のプログラム変換装置。
  3. 【請求項3】 前記命令並列化手段により得られた並列
    化命令列の命令並列度を算出する命令並列度算出手段を
    備えることを特徴とする請求項1記載のプログラム変換
    装置。
  4. 【請求項4】 前記命令変換手段は、 互いに等価な操作を行う複数の命令列を記憶し、前記複
    数の命令列は、同じ順序で同じ演算資源を操作対象とす
    る命令列同志を同類に集合させた等価命令列記憶手段
    と、 前記所定の命令列から、前記等価命令記憶手段に記憶さ
    れた命令列と同一の命令部分列を検出する命令部分列検
    出手段と、 前記命令部分列検出手段で検出された命令部分列が属す
    る同類命令列集合とは異なる同類命令列集合を選択する
    同類命令列集合選択手段と、 前記命令部分列検出手段で検出された命令部分列を、前
    記同類命令列集合選択手段で選択された同類命令列集合
    に属する命令列に置換する命令列置換手段とを備えたこ
    とを特徴とする請求項1記載のプログラム変換装置。
  5. 【請求項5】 所定の命令列をプロセッサで並列実行可
    能な位置に配置し、並列化命令列を生成する命令並列化
    手段と、 互いに等価な操作を行う命令であって、操作対象とする
    演算資源が互いに異なる複数の命令を記憶する等価命令
    記憶手段と、 前記並列化命令列の所定範囲内にある並列化命令から無
    動作命令を検出する無動作命令検出手段と、 前記検出された無動作命令を含んだ並列化命令に含まれ
    る命令が、前記等価命令記憶手段に記憶された命令であ
    るとき、前記等価命令記憶手段に記憶された命令の中か
    ら、前記並列化命令に含まれる命令とは異なる別の命令
    を選択する変換候補選択手段と、 前記並列化命令に含まれる命令を、前記変換候補選択手
    段で選択された命令に置換する命令置換手段とを備えた
    ことを特徴とするプログラム変換装置。
  6. 【請求項6】 前記並列化命令列の中で、前記並列化命
    令に含まれる命令とレジスタ干渉を起こさない部分命令
    列を探索する有効範囲探索手段と、 前記有効範囲探索手段により探索された部分命令列に含
    まれる並列化命令の中から無動作命令を検出する他の無
    動作命令検出手段とを備え、 前記命令置換手段は、前記変換候補選択手段で選択され
    た命令を、前記他の無動作命令検出手段により検出した
    無動作命令の配置位置に配置することを特徴とする請求
    項5記載のプログラム変換装置。
  7. 【請求項7】 第1の演算資源と、 第2の演算資源と、 前記第1の演算資源を操作対象とする2つの命令の一方
    を前記第2の演算資源に割り当て、前記2つの命令を並
    列に実行する命令並列化実行手段とを備えたことを特徴
    とするプロセッサ。
  8. 【請求項8】 前記命令並列化実行手段は、 前記2つの命令が共に前記第1の演算資源を操作対象と
    する命令であることを判別する命令判別手段と、 前記第1の演算資源を操作対象とする2つの命令のうち
    一方の命令を、前記第2の演算資源に割り当てる演算資
    源割り当て変更手段と、 前記2つの命令を並列に実行する並列実行手段とを備え
    たことを特徴とする請求項7記載のプロセッサ。
  9. 【請求項9】 複数サイクルを要して操作される第1の
    演算資源と、 前記第1の演算資源よりも少ないサイクルを要して操作
    される1個以上の第2の演算資源と、 所定の命令が前記第1の演算資源を操作対象とする命令
    であることを判別する命令判別手段と、 前記命令判別手段で判別された所定の命令を、この命令
    と等価な操作を行う1つ以上の命令であって前記第2の
    演算資源を操作対象とする命令に置き換える命令変換手
    段とを備えたことを特徴とするプロセッサ。
  10. 【請求項10】 前記命令変換手段は、 前記所定の命令と等価な操作を行う命令群を探索する命
    令群探索手段と、 前記命令群探索手段により探索された命令群の実行が終
    了する時点と、前記所定の命令の実行が終了する時点と
    を比較する比較手段と、 前記比較手段により前記命令群の実行が前記所定の命令
    の実行よりも早く終了すると判別されたとき、前記所定
    の命令を前記命令群に置換する命令置換手段とを備えた
    ことを特徴とする請求項9記載のプロセッサ。
JP11086561A 1999-03-29 1999-03-29 プログラム変換装置及びプロセッサ Pending JP2000284970A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP11086561A JP2000284970A (ja) 1999-03-29 1999-03-29 プログラム変換装置及びプロセッサ
US09/536,308 US6658560B1 (en) 1999-03-29 2000-03-27 Program translator and processor
US10/621,440 US7376818B2 (en) 1999-03-29 2003-07-18 Program translator and processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11086561A JP2000284970A (ja) 1999-03-29 1999-03-29 プログラム変換装置及びプロセッサ

Publications (1)

Publication Number Publication Date
JP2000284970A true JP2000284970A (ja) 2000-10-13

Family

ID=13890436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11086561A Pending JP2000284970A (ja) 1999-03-29 1999-03-29 プログラム変換装置及びプロセッサ

Country Status (2)

Country Link
US (2) US6658560B1 (ja)
JP (1) JP2000284970A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004272927A (ja) * 2004-04-26 2004-09-30 Matsushita Electric Ind Co Ltd プロセッサ及びコンパイル装置
US7076638B2 (en) 2001-09-20 2006-07-11 Matsushita Electric Industrial Co., Ltd. Processor, compiler and compilation method
JP2006243838A (ja) * 2005-02-28 2006-09-14 Toshiba Corp プログラム開発装置
JP2008546072A (ja) * 2005-05-24 2008-12-18 コアソニック アーベー プログラム可能回路網を含むデジタル信号プロセッサ
JP2009505214A (ja) * 2005-08-11 2009-02-05 コアソニック アーベー 短い複素乗算器及び独立ベクトル・ロード・ユニットを含むクラスタードsimdマイクロ・アーキテクチャを有するプログラマブル・デジタル信号プロセッサ
JP2009505215A (ja) * 2005-08-11 2009-02-05 コアソニック アーベー 複素ベクトル命令を実行するように構成されるクラスタードsimdマイクロ・アーキテクチャを含むプログラマブル・デジタル信号プロセッサ
US7707568B2 (en) 2004-05-25 2010-04-27 International Business Machines Corporation Compiler optimization
US8296750B2 (en) 2006-10-11 2012-10-23 International Business Machines Corporation Optimization of a target program

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284970A (ja) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
US7200738B2 (en) * 2002-04-18 2007-04-03 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
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
US20090113403A1 (en) * 2007-09-27 2009-04-30 Microsoft Corporation Replacing no operations with auxiliary code
US20110115702A1 (en) * 2008-07-08 2011-05-19 David Seaberg Process for Providing and Editing Instructions, Data, Data Structures, and Algorithms in a Computer System
WO2013071292A1 (en) * 2011-11-11 2013-05-16 Johnson Ip Holding, Llc Rechargeable lithium air battery having organosilicon-containing electrolyte
JP7488108B2 (ja) * 2020-05-19 2024-05-21 住友重機械工業株式会社 インク塗布装置、その制御装置、及びインク塗布方法

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62204374A (ja) * 1986-03-04 1987-09-09 Fujitsu Ltd 2倍演算最適化処理方式
JPH01128136A (ja) * 1987-11-13 1989-05-19 Fujitsu Ltd コンパイル処理装置
JPH0451328A (ja) * 1990-06-19 1992-02-19 Fujitsu Ltd 複合型命令スケジューリング処理装置
JPH05197547A (ja) * 1991-10-31 1993-08-06 Toshiba Corp Vliw型演算処理装置
JPH06222926A (ja) * 1993-01-27 1994-08-12 Fujitsu Ltd 仮想リソース生成方法
JPH0721032A (ja) * 1993-07-01 1995-01-24 Mitsubishi Electric Corp プログラム最適化処理方式
JPH07168720A (ja) * 1993-12-15 1995-07-04 Nec Corp 言語処理システム
JPH07168719A (ja) * 1993-12-14 1995-07-04 Matsushita Electric Ind Co Ltd 冗長式除去装置
JPH08161169A (ja) * 1994-12-09 1996-06-21 Toshiba Corp Vliw方式の計算機システム及びvliwの解釈・実行方法
JPH08234999A (ja) * 1995-02-28 1996-09-13 Nec Corp 機械語命令スケジューラ
JPH09311786A (ja) * 1996-03-18 1997-12-02 Hitachi Ltd データ処理装置
JPH1011288A (ja) * 1996-06-24 1998-01-16 Toshiba Corp マイクロプロセッサ
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4885684A (en) * 1987-12-07 1989-12-05 International Business Machines Corporation Method for compiling a master task definition data set for defining the logical data flow of a distributed processing network
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
JP3311381B2 (ja) 1992-03-18 2002-08-05 富士通株式会社 コンパイラにおける命令スケジューリング処理方法
JP2683488B2 (ja) * 1992-06-30 1997-11-26 インターナショナル・ビジネス・マシーンズ・コーポレイション 3−1論理演算装置
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5790826A (en) * 1996-03-19 1998-08-04 S3 Incorporated Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
US5889989A (en) * 1996-09-16 1999-03-30 The Research Foundation Of State University Of New York Load sharing controller for optimizing monetary cost
US6338133B1 (en) * 1999-03-12 2002-01-08 International Business Machines Corporation Measured, allocation of speculative branch instructions to processor execution units
JP2000284970A (ja) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62204374A (ja) * 1986-03-04 1987-09-09 Fujitsu Ltd 2倍演算最適化処理方式
JPH01128136A (ja) * 1987-11-13 1989-05-19 Fujitsu Ltd コンパイル処理装置
JPH0451328A (ja) * 1990-06-19 1992-02-19 Fujitsu Ltd 複合型命令スケジューリング処理装置
JPH05197547A (ja) * 1991-10-31 1993-08-06 Toshiba Corp Vliw型演算処理装置
JPH06222926A (ja) * 1993-01-27 1994-08-12 Fujitsu Ltd 仮想リソース生成方法
JPH0721032A (ja) * 1993-07-01 1995-01-24 Mitsubishi Electric Corp プログラム最適化処理方式
JPH07168719A (ja) * 1993-12-14 1995-07-04 Matsushita Electric Ind Co Ltd 冗長式除去装置
JPH07168720A (ja) * 1993-12-15 1995-07-04 Nec Corp 言語処理システム
JPH08161169A (ja) * 1994-12-09 1996-06-21 Toshiba Corp Vliw方式の計算機システム及びvliwの解釈・実行方法
JPH08234999A (ja) * 1995-02-28 1996-09-13 Nec Corp 機械語命令スケジューラ
JPH09311786A (ja) * 1996-03-18 1997-12-02 Hitachi Ltd データ処理装置
JPH1011288A (ja) * 1996-06-24 1998-01-16 Toshiba Corp マイクロプロセッサ
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7076638B2 (en) 2001-09-20 2006-07-11 Matsushita Electric Industrial Co., Ltd. Processor, compiler and compilation method
US7761692B2 (en) 2001-09-20 2010-07-20 Panasonic Corporation Processor, compiler and compilation method
JP2004272927A (ja) * 2004-04-26 2004-09-30 Matsushita Electric Ind Co Ltd プロセッサ及びコンパイル装置
US7707568B2 (en) 2004-05-25 2010-04-27 International Business Machines Corporation Compiler optimization
JP2006243838A (ja) * 2005-02-28 2006-09-14 Toshiba Corp プログラム開発装置
US7917899B2 (en) 2005-02-28 2011-03-29 Kabushiki Kaisha Toshiba Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JP2008546072A (ja) * 2005-05-24 2008-12-18 コアソニック アーベー プログラム可能回路網を含むデジタル信号プロセッサ
KR101256851B1 (ko) 2005-05-24 2013-04-22 메디아텍 스웨덴 에이비 프로그램 가능한 네트워크를 구비한 디지털 신호 프로세서
JP2009505214A (ja) * 2005-08-11 2009-02-05 コアソニック アーベー 短い複素乗算器及び独立ベクトル・ロード・ユニットを含むクラスタードsimdマイクロ・アーキテクチャを有するプログラマブル・デジタル信号プロセッサ
JP2009505215A (ja) * 2005-08-11 2009-02-05 コアソニック アーベー 複素ベクトル命令を実行するように構成されるクラスタードsimdマイクロ・アーキテクチャを含むプログラマブル・デジタル信号プロセッサ
US8296750B2 (en) 2006-10-11 2012-10-23 International Business Machines Corporation Optimization of a target program

Also Published As

Publication number Publication date
US7376818B2 (en) 2008-05-20
US20040019766A1 (en) 2004-01-29
US6658560B1 (en) 2003-12-02

Similar Documents

Publication Publication Date Title
US8966459B2 (en) Processors and compiling methods for processors
JP3896087B2 (ja) コンパイラ装置およびコンパイル方法
US5303357A (en) Loop optimization system
JP4339907B2 (ja) マルチプロセッサ向け最適コード生成方法及びコンパイル装置
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
JP3851707B2 (ja) スーパースカラープロセッサの中央処理ユニット
JP5699554B2 (ja) ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
US7140019B2 (en) Scheduler of program instructions for streaming vector processor having interconnected functional units
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
JP2000284970A (ja) プログラム変換装置及びプロセッサ
JPH10161884A (ja) パイプラインコンピュータのための改善されたコードオプティマイザ
US9395986B2 (en) Compiling method and compiling apparatus
JP6245031B2 (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
US20020083423A1 (en) List scheduling algorithm for a cycle-driven instruction scheduler
JP3595158B2 (ja) 命令割り当て方法及び命令割り当て装置
JPH10105402A (ja) パイプライン方式のプロセッサ
US8612958B2 (en) Program converting apparatus and program conversion method
Kessler Compiling for VLIW DSPs
JPH04293150A (ja) コンパイル方法
Lin et al. PALF: compiler supports for irregular register files in clustered VLIW DSP processors
Lin et al. Register allocation for VLIW DSP processors with irregular register files
JP2008523523A (ja) プログラム内のループ用のコンパイル方法、コンパイル装置およびコンピュータシステム
JP4721975B2 (ja) コンパイラ装置およびコンパイル方法
Lin et al. Effective code generation for distributed and ping-pong register files: a case study on PAC VLIW DSP cores
JP2023002165A (ja) コンパイラ及びコンパイル方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060314

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090421

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090818