JP3473391B2 - プログラム処理方法、プログラム処理装置及び記録媒体 - Google Patents

プログラム処理方法、プログラム処理装置及び記録媒体

Info

Publication number
JP3473391B2
JP3473391B2 JP09564798A JP9564798A JP3473391B2 JP 3473391 B2 JP3473391 B2 JP 3473391B2 JP 09564798 A JP09564798 A JP 09564798A JP 9564798 A JP9564798 A JP 9564798A JP 3473391 B2 JP3473391 B2 JP 3473391B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
combination
address
parallel
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.)
Expired - Fee Related
Application number
JP09564798A
Other languages
English (en)
Other versions
JPH11296377A (ja
Inventor
謙介 小谷
哲也 田中
岳人 瓶子
信生 檜垣
秀一 高山
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 Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP09564798A priority Critical patent/JP3473391B2/ja
Priority to US09/280,777 priority patent/US6324639B1/en
Publication of JPH11296377A publication Critical patent/JPH11296377A/ja
Priority to US10/720,030 priority patent/USRE41751E1/en
Application granted granted Critical
Publication of JP3473391B2 publication Critical patent/JP3473391B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、高級言語からオブ
ジェクトコードを生成するコンパイラ、複数のオブジェ
クトコードを連結編集し実行可能コードを生成するリン
カ、を含むプログラム処理方法、処理装置及び記録媒体
に関するものであり、特に並列プロセッサ向けのコード
最適化技術に関する。
【0002】
【従来の技術】従来よりスーパースカラやVLIWなど
の並列プロセッサ向けのプログラム処理装置では、コン
パイラが高級言語ソースコードを解析し、目的機械向け
に命令の並べ替えを行なうことによりコードの並列化を
行ない、オブジェクトコードとして生成し、リンカが複
数のオブジェクトコードを連結編集して実行形式コード
を生成していた。
【0003】
【発明が解決しようとする課題】スーパースカラ方式で
はプロセッサが動的に命令間の依存関係を解析する為、
ハードウェア量が増大し、また、構成が複雑になる為動
作周波数があげにくいという欠点があった。一方、VL
IWプロセッサは長語長の固定長命令体系をとり、コン
パイラが静的に命令を解析し、並列実行可能な命令をパ
ケット内に配置する。VLIW方式ではプロセッサ上に
は命令依存解析機構が不要なためハードウェアは簡単に
なるが、1サイクル中の発行命令数が固定であるため長
語命令中に無動作命令(nop命令)を含み、コード効
率が悪い。
【0004】本発明はかかる問題点に鑑みてなされたも
のであり、性能向上とコード効率向上を両立するプログ
ラム変換方法及びプログラム処理装置を提供することを
目的とする。
【0005】
【課題を解決するための手段】上記目的を達成する為
に、本発明に係るプログラム処理装置は、高級言語で記
述された複数のソースコードからなるプログラムを実行
形式コードに変換する方法であって、前記ソースコード
をオブジェクトコードに変換する変換ステップ1と、前
記オブジェクトコードを前記実行形式コードに変換する
変換ステップ2とを備え、前記変換ステップ1は、前記
ソースコード中の命令を、並列実行すべき複数の命令が
隣接するように並べ直す命令スケジューリングステップ
を備え、前記命令スケジューリングステップは、並列実
行すべき異なるビット幅の複数の命令の命令サイズの組
合せが所定の制限を満たすように、並列実行可能な命令
の集合をグループとして区分する命令集合化ステップを
備えることを特徴とする。
【0006】ここで、前記命令スケジューリングステッ
プは、前記複数の命令の順序の組合せを調べる組合せ試
行ステップを含み、前記命令集合化ステップは、前記組
合せ試行ステップにより調べられた命令順序の組合せの
内、最も前記グループの数が少なくなる組合せに従って
前記複数の命令を前記グループに区分するとすることが
できる。
【0007】また、前記命令スケジューリングステップ
は、前記ソースコードの命令間の依存関係を満たしたま
まで並列実行可能な単数または複数の命令を、並列実行
候補命令集合として前記ソースコードより抽出する並列
実行候補集合抽出ステップを含み、前記命令集合化ステ
ップは、前記並列実行候補集合から、並列実行すべき異
なるビット幅の複数の命令の命令サイズの組合せが所定
の制限を満たすように、最多の命令を含む並列実行可能
な命令の集合をグループとして区分するとすることがで
きる。
【0008】また、前記命令スケジューリングステップ
は、前記並列実行候補集合から、前記実行形式コードを
実行する目的機械の並列度に相当する数の命令を仮グル
ープとして選び出す仮グループ選択ステップと、仮グル
ープに含まれる命令の順序の組合せを調べる組合せ試行
ステップとを含み、前記命令集合化ステップは、前記組
合せ試行ステップにより調べられた命令順序の組合せの
内、前記目的機械で実行可能な命令サイズの組合せに合
致する並列実行可能な命令の集合をグループとして区分
するとすることができる。
【0009】また、前記命令スケジューリングステップ
は、前記命令集合化ステップで区分された前記グループ
間の境界に関する情報を命令に付加する境界付加ステッ
プ1を備えるとすることができる。
【0010】また、前記命令スケジューリングステップ
は、前記命令集合化ステップで区分された前記グループ
間にグループ境界を示す情報を付加する境界付加ステッ
プ2を備えるとすることができる。
【0011】また、前記変換ステップ2は、前記オブジ
ェクトコード中の未解決アドレスを決定するアドレス確
定ステップを備え、前記アドレス確定ステップは、アド
レス決定により命令のサイズが変化した場合に、該命令
を含む前記グループを更に複数のサブグループに区分す
る命令グループ分割ステップを備えるとすることができ
る。
【0012】また、前記変換ステップ2は、前記オブジ
ェクトコード中の未解決アドレスを決定するアドレス確
定ステップを備え、前記アドレス確定ステップは、アド
レス決定により命令が複数命令に分割された場合に、該
命令を含む前記グループを更に複数のサブグループに区
分する命令グループ分割ステップを備えるとすることが
できる。
【0013】また、前記アドレス確定ステップは、前記
命令グループ分割ステップで区分された前記サブグルー
プ間の境界に関する情報を命令に付加する境界付加ステ
ップ3を備えるとすることができる。
【0014】また、前記アドレス確定ステップは、前記
命令グループ分割ステップで区分された前記サブグルー
プ間にグループ境界を示す情報を付加する境界付加ステ
ップ4を備えるとすることができる。
【0015】
【発明の実施の形態】以下、本発明に係るプログラム処
理方法、プログラム処理装置及び記録媒体について図面
を参照しながら説明する。 [用語の説明]まず初めに本説明で用いる用語の説明を
行なう。 ・オブジェクトコード 再配置可能情報を含んだ目的機械向け機械語プログラ
ム。連結編集を行ない未確定アドレスを決定することに
より実行形式コードに変換できる。 ・プレデセッサ ある命令を実行する為に、それ以前に実行しておく必要
のある命令。 [対象プロセッサ]次に、本プログラム処理装置が対象
とする目的機械について説明する。目的機械は並列度3
の可変長可変発行プロセッサである。目的機械の命令
は、21ビットを単位とする命令構成要素(以下、ユニ
ットと呼ぶ。)で構成される。命令フォーマットとして
は1ユニットで構成される21ビット命令(以下、短命
令と呼ぶ。)と2ユニットで構成される42ビット命令
(以下、長命令と呼ぶ。)を持つ可変長命令体系であ
る。また各命令は、並列実行境界を持つか否かの情報を
持つ。並列実行境界を持つ場合には、この命令とこれに
続く命令とは同時に実行されない。
【0016】目的機械は並列実行境界から並列実行境界
までの命令を同時に実行する(並列実行境界間に含まれ
る命令を以下、並列実行可能命令群と呼ぶ。)。並列実
行可能命令群に含まれる命令数は後述する目的機械の制
限の範囲で任意であるので、可変数発行が実現できる。
目的機械は、並列実行可能命令群がプログラムの意味的
に、また、目的機械の演算器資源制約を満たして、同時
に実行可能か否かの判定は行なわない。これによりハー
ドウェア量の削減を実現している。並列実行境界間に、
同時実行可能な命令を正しく配置されていることは、目
的機械向けのプログラム処理装置が保証する。並列実行
境界間に配置できる命令に対する制限は以下の通り。命
令は以下の3条件全てが満たされた場合のみ並列実行が
できる。 (1)並列実行可能命令群中の命令の総数は3を越えな
い。 (2)並列実行可能命令群中の命令が使用する目的機械
資源の総和は、3ALUユニット、1LD/STユニッ
ト、1分岐ユニットを越えない。 (3)並列実行可能命令群中の各命令の命令サイズの組
合せは以下のうちのいずれか。 ・短 ・長 ・短短 ・短長 ・長短 ・長長 ・短短短 ・短短長 つまり、以下の組合せは条件(1)、(2)を満たして
いても実行できない。 ・短長短 ・短長長 ・長短短 ・長短長 ・長長短 ・長長長 ここで短は短命令、長は長命令を表し、左から右の順に
命令が配置されていることを示す。つまり「短短長」は
短命令、短命令、長命令の順に命令が配置されているこ
とを示す。
【0017】また、目的機械は並列実行可能命令群中の
命令を必ずしも同時に実行するわけではない。命令の供
給が追い付かないなどの理由で並列実行可能命令群を2
回以上に分けて実行することもある。このためプログラ
ム処理装置は、並列実行可能命令群が2回以上に分割さ
れて実行される場合であっても、プログラムの意味動作
が正しくなるように、命令群中の命令順を設定する必要
がある。
【0018】図1(a)に目的機械の命令セット例の一
部をあげる。図中Opはオペコード、Rsはソースレジ
スタ、Rdはディストネーションレジスタ、immは定
数(後ろの数値は定数のサイズを示すビット数)を意味
する。Eは並列実行境界の有無を表すビットである。こ
の例では演算命令として、レジスタ間演算(a)、5ビ
ットまでの定数との演算(b)、21ビットまでの定数
との演算(c)、及び32ビットまでの定数との演算
(d)がある。32ビット定数との演算命令は32ビッ
ト定数をレジスタに転送する転送命令のみ存在するとす
る。これは図1からも明らかなように、32ビット定数
を含む命令ではオペコードに割けるビット数が少なく、
32ビット定数を扱う命令を数多く定義することができ
ない為である。また(a)、(b)は21ビット幅の短
命令、(c)、(d)は42ビット幅の長命令である。
【0019】目的機械の実際の動作について簡単に説明
する。図1(e)は目的機械で実行する実行形式コード
の一例である。実行形式コードは21ビットのユニット
3個をまとめた64ビット単位(以下、パケットと呼
ぶ)で目的機械にフェッチされる。ユニット3個の実際
の長さは21×3=63ビットであり1ビット余分とな
るが、この1ビットは特に使用しない。目的機械にフェ
ッチされた命令は並列実行境界から次の並列実行境界ま
での並列実行可能命令群毎に実行される。フェッチされ
た命令の内で実行されなかった命令は命令バッファに蓄
積され、次実行サイクル以降での実行にあてられる。目
的機械の命令実行イメージを図1(f)に示す。各行は
目的機械が1実行サイクルあたりに実行する命令を示
す。
【0020】説明の都合上、上記プロセッサを目的機械
とするが、本発明はこのプロセッサで例として挙げた基
本命令語長(この例では21ビット)、並列度(この例
では3)、演算器資源(この例では、3ALUユニッ
ト、1LD/STユニット、1分岐ユニット)、及び、
実行できる命令の組合せに依存するものではない。これ
らが異なる場合でも適用可能である。
【0021】また、並列実行境界は命令に含まれるとし
たが、命令とは独立した領域に並列実行境界を表す情報
を保持することとしても良い。 [実施の形態] [プログラム処理装置の構成]図2は、実施形態におけ
るプログラム処理装置の構成及び関連するデータを示す
ブロック図である。
【0022】本プログラム処理装置は、大きく2つのグ
ループ、即ち、(1)高級言語で書かれたソースコード
50からオブジェクトコード60を生成するグループ
(コンパイラ上流部10、アセンブラコード生成部1
1、命令スケジューリング部12、オブジェクトコード
生成部13からなる変換手段1、以下コンパイラと呼
ぶ)と(2)複数のオブジェクトコード60を連結編集
し、最終的な実行形式コード70を生成するグループ
(連結編集部14からなる変換手段2、以下リンカと呼
ぶ)から構成される。 (コンパイラ上流部10)コンパイラ上流部10は、フ
ァイル形式で保存されている高級言語ソースコード50
を読み込み、構文解析及び意味解析を行なって内部形式
コードを生成する。更に必要に応じて、最終的に生成さ
れる実行形式コードのサイズやその実行時間が短くなる
ように内部形式コードを最適化する。 (アセンブラコード生成部11)アセンブラコード生成
部11は、コンパイラ上流部10により生成、最適化さ
れた内部形式コードからアセンブラコードを生成する。
【0023】コンパイラ上流部10及びアセンブラコー
ド生成部11での処理は本発明の主眼ではなく、また、
従来のプログラム処理装置で行なわれてきた処理と同一
であるので、詳細は省略する。 (命令スケジューリング部12) 命令スケジューリング部12は、アセンブラコード生成
部11で生成されたアセンブラコードに対し命令間の依
存関係の解析、命令スケジューリング(命令順の並べ替
え)及び並列実行境界の付加を行ない、アセンブラコー
ドを目的機械向けに並列化する。命令スケジューリング
部12は、依存関係解析部20、命令再配置部21、実
行境界付加部22から構成される。ここでは簡単のため
命令スケジューリング部12は基本ブロック単位で動作
することとする。
【0024】依存関係解析部20は、基本ブロックに含
まれる命令間の依存関係を解析し依存グラフとして表現
する。命令間の依存関係には以下の3種類がある。 ・データ依存関係 ある資源を定義する命令と、同じ資源を参照する命令間
の依存関係。 ・逆依存関係 ある資源を参照する命令と、同じ資源を定義する命令間
の依存関係。 ・出力依存関係 ある資源を定義する命令と、同じ資源を定義する命令間
の依存関係。
【0025】いずれの依存関係にある命令も、元の命令
順を変更するとプログラムの意味が異なってしまう為、
命令並べ替え時においても依存関係は守る必要がある。
【0026】依存関係解析部20では、基本ブロックに
含まれる各命令毎に、これに対応するノード(節)を、
また、各依存関係毎に、これに対応するエッジ(矢印)
を生成する。例として図3のアセンブラコードに対する
依存グラフを図4に示す。図4中、実線はデータ依存関
係を、破線は逆依存関係を示す。依存グラフの生成方法
は例えば、論文 Instruction scheduling in the TOBEY
compiler (R.J.Blainey, IBMJ.RES.DEVELOP. VOL.38 N
O.5 SEPTEMBER 1994)に開示されている。
【0027】命令再配置部21は、依存関係解析部20
で生成された依存グラフを用いて、基本ブロック内の命
令を並べ替え、目的機械向けの並列化されたアセンブラ
コードを生成する。命令再配置部21の処理の詳細は以
下の通りである。
【0028】図5は、命令再配置部21での処理手順を
示すフローチャートである。命令再配置部21は、依存
関係解析部20が生成した依存グラフの全てのノードに
ついて、以下の処理(ステップS2〜S9)を繰り返す
(ループ1)(ステップS1、S10)。
【0029】まず、命令再配置部21は、現時点で配置
候補となり得るノードを依存グラフより抽出し配置候補
集合とする(ステップS2)。ここで配置候補となり得
るノードとは、「プレデセッサが全て配置完了済み」で
あるノードである。
【0030】次に、命令再配置部21は、配置候補ノー
ド集合の全ての候補ノードについて、以下の処理(ステ
ップS4〜S7)を繰り返す(ループ2)(ステップS
3、S8)。
【0031】次に、配置候補ノード集合から現時点で配
置することが最良と思われるノード(以下、単に「最良
ノード」と呼ぶ。)を取り出す(ステップS4)。最良
ノードの決定方法については後述する。
【0032】続いて最良ノードが、実際に配置可能か否
かを判断し、可能な場合は仮配置する(ステップS
5)。判断の詳細については後述する。
【0033】続いて、現時点で仮配置されているノード
集合を調べ、更に命令を配置することができるか否かを
判断する(ステップS6)。判断の詳細については後述
する。配置不可と判断された場合はループ2を終了し処
理をステップS9へ移す。
【0034】配置可能と判断された場合、最良ノードが
配置されたことによって新たに配置候補となり得るノー
ドが生じたか否かを判断し、新たな配置候補が生じた場
合はこれを配置候補ノードに追加する(ステップS
7)。ステップS7で新たに配置候補にできるのは、
「(現在配置しようとしている)最良ノードのみをプレ
デセッサとして持ち、且つ、最良ノードとの依存関係が
逆依存もしくは出力依存」のノードである。つまりここ
で新たな配置候補になることができるノードは、最良ノ
ードと同じサイクルで実行することはできるが、最良ノ
ードより前のサイクルでは実行できないノードである。
【0035】ループ2が終了した後、仮配置ノード集合
に含まれているノードを確定する(ステップS9)。具
体的には、仮配置ノード集合に含まれているノードに対
応する命令を元の命令列から取り出し、実行境界付加部
22へ渡すための新たな命令列に再配置する。この段階
で配置候補ノードの一部が実際に同時に実行する命令群
としてまとめられ確定したことになる。ステップS3〜
ステップS9の一連の処理が「命令集合化ステップ」に
相当する。
【0036】実行境界付加部22は、命令再配置部21
のステップS9で配置が確定した命令群の末尾毎に並列
実行境界を付加する。
【0037】次に、ステップS4における最良ノードの
決定方法について述べる。最良ノードは、依存グラフ、
仮配置領域を参照して、基本ブロック内の命令全体を最
も短時間で実行できるであろう命令をヒューリスティッ
クに選び出す。ここでは現時点での依存グラフにおいて
依存グラフの終端までの命令の実行時間総和が最も多い
ものを選ぶ。この条件に合致する命令が多数ある場合に
は、元の命令順が早い命令を最良ノードとする。
【0038】次に、ステップS5における配置可能判定
方法について述べる。図6は配置可能判定手順を示すフ
ローチャートである。
【0039】まず、現時点で仮配置されている命令によ
って使用される目的機械資源に加え、判定命令が使用す
る資源を考慮しても目的機械でこれらの命令が同時に処
理できるか否かを判定する(ステップU1)。否と判定
された場合には配置不可と判定する。
【0040】次に、現時点で仮配置されている命令数が
2より小さいか否かを判定する(ステップU2)。2よ
り小さい場合には、更に命令語長の短長を問わず配置で
きるので、配置可能と判断しステップU9に移る 。
【0041】ステップU2で否と判定された場合に、仮
配置されている命令が短命令と短命令であるか否かを判
定する(ステップU3)。短命令が2つ配置されている
場合には、更に命令を語長の短長を問わず配置できるの
で、配置可能と判断しステップU9に移る。
【0042】ステップU3で否と判定された場合に、仮
配置されている命令が「短命令と長命令」もしくは「長
命令と短命令」であるか否かを判定する(ステップU
4)。この条件に合致しない場合には、これに加えて如
何なる命令も並列に実行することはできないので、配置
不可と判断する。
【0043】ステップU4で条件に合致した場合に、現
時点で配置しようと試みている命令(以下、試行命令と
呼ぶ。)が短命令か否かを判定する(ステップU5)。
試行命令が長命令であった場合には並列に実行すること
はできないので、配置不可と判断する。
【0044】ステップU5で条件に合致した場合に、既
に仮配置されている命令と試行命令との間の依存関係を
依存グラフより解析する(ステップU6)。
【0045】次にステップU6での解析の結果、仮配置
されている命令と試行命令の順序を入れ換えて「短命令
―短命令―長命令」の順での命令配置が可能か否かを判
定する(ステップU7)。具体的には、ステップU6で
の解析結果を調べ、「短命令―短命令―長命令」と並べ
た場合に依存関係を満たす命令並びがあるか否かを判定
する。全ての「短命令―短命令―長命令」の命令並びが
依存関係を満たさない場合には、これらの命令を並列に
実行することはできないので配置不可と判定する。この
ステップU6の処理が「組合せ試行ステップ」に相当す
る。
【0046】ステップU7で条件に合致した場合に、試
行命令を仮配置し、ステップU7の条件に合致する命令
並びに仮配置命令を並び替える(ステップU8)。
【0047】ステップU2、U3で条件に合致した場合
に、既に仮配置されている命令の後ろに試行命令を仮配
置する(ステップU9)。 (オブジェクトコード生成部13)図2に戻って、オブ
ジェクトコード生成部13は、命令スケジューリング部
12が出力したアセンブラコードをオブジェクトコード
60に変換し、ファイルとして出力する。 (連結編集部14)連結編集部14は、複数のオブジェ
クトコード60を読み込み、連結編集を行なって実行形
式コード70を生成する。具体的には、オブジェクトコ
ード60に含まれる未解決アドレスを決定し、命令サイ
ズが変更になった場合にはアドレスの再決定を行ない、
最終的に確定したアドレス値を用いて実行形式コードを
生成する。従来の連結編集部と本発明での連結編集部1
4との違いは未解決アドレスを確定するアドレス解決部
23にあるので、アドレス解決部23について図を用い
て詳細に説明する。アドレス解決部23は連結編集の
際、処理している命令(以下、処理命令と呼ぶ。)に未
解決アドレスが含まれている場合に起動される。
【0048】図7は、連結編集部14の内部パートであ
るアドレス解決部23での処理手順を示すフローチャー
トである。
【0049】アドレス解決部23は、まずオブジェクト
コード60及びオブジェクトコード60に含まれるシン
ボル情報を用いて未解決アドレスを決定する(ステップ
V1)。これ自体は従来の連結編集部の処理と同じであ
る。
【0050】次に、確定したアドレスが5ビットで表せ
る範囲を越えているか否かを判定する(ステップV
2)。範囲内に収まっている場合には、処理命令に確定
したアドレスを書き込み(ステップV3)処理を終る。
【0051】確定したアドレスが5ビットで表せる範囲
を越えていた場合、更に21ビットで表せる範囲を越え
ているか否かを判定する(ステップV4)。範囲内に収
まっている場合には、処理命令を長命令にすれば確定し
たアドレスを格納できるので、処理命令を長命令に拡大
し、確定したアドレスを書き込む(ステップV5)。こ
の命令サイズの拡張により、処理命令を含む並列実行命
令群が、命令サイズの組合せ制限により同時実行するこ
とができなくなる場合がある。この場合に、この並列処
理命令群を並列実行境界により分割し、同時並列実行を
保証する(ステップV6)。
【0052】ステップV4で、確定したアドレスが21
ビットで表せる範囲を越えてた場合、処理命令を長命令
にしても確定したアドレスを格納することはできない。
この為、処理命令の処理自体を、 (1)アドレスをレジスタに格納する命令(長命令) (2)レジスタに格納されたアドレスが指すメモリに対
して元の処理命令と同じ処理を行なう命令(短命令) の2命令に分割する(ステップV7)。ここで用いるレ
ジスタはプログラム処理装置を通じて、この分割処理の
為に予約しておく。
【0053】ステップV7で分割された命令間には
(1)から(2)へのレジスタを介したデータ依存が存
在するため同時実行することはできない。このため、命
令(1)、(2)間に並列実行境界を挿入する(ステッ
プV8)。
【0054】以上の処理により、連結編集により未確定
アドレスが決定され命令長に変動があった場合でも対象
プロセッサで動作可能な並列化コードを出力できること
が保証される。 [プログラム処理装置の具体的な動作] [動作例1]次に、本プログラム処理装置の特徴的な構
成要素の動作について、具体的な命令を用いて説明す
る。
【0055】図8は、ソースコードをコンパイラ上流部
10に入力し、アセンブラコード生成部11を経て生成
されたアセンブラコードである。命令スケジューリング
部12は図8のコードを入力として受け取る。図8に含
まれる各命令の意味は以下の通りである。 ・命令1…定数0x1000(0xは16進数を意味す
る)をレジスタR0に転送する。 ・命令2…レジスタR0の内容を、スタックポインタS
Pが指すメモリにストアする。 ・命令3…レジスタR1の内容をレジスタR2に転送す
る。 ・命令4…レジスタR3の内容をレジスタR4に転送す
る。 ・命令5…レジスタR2の内容をレジスタR4に加え
る。
【0056】命令スケジューリング部12の動作につい
て図2及び図5〜7を用いて説明する。まず依存関係解
析部20が起動され、図8のコードより図9の依存グラ
フを生成する。次に命令再配置部21が起動される。命
令再配置部21は図5のステップS3〜S8で示される
ループ2が終了する度にステップS9において単数また
は複数の命令を含むグループが配置ノードとして確定す
る。このグループが確定する単位をサイクルと呼ぶこと
とする。 (第1サイクル) まず配置候補集合が選ばれる(ステップS2)。この時
点でプレデセッサの無いノードはノード1、3、4であ
る。次に最良ノードが選ばれる(ステップS4)。ここ
ではノード1が選択される。続いてノード1が配置可能
か否かが判定される(ステップS5)。配置可能判定で
は配置可能と判定され(ステップU1、U2)、仮配置
される(ステップU9)。この時点の仮配置領域の図を
図10(a)に示す。次に配置状態判定をする(ステッ
プS6)。この時点の仮配置領域は図10(a)のよう
になっているので更に配置が可能と判断される。新たな
配置候補は生じないので(ステップS7)、ループ2の
先頭に戻る(ステップS8)。まだ配置候補集合にノー
ドがあるのでループ2を繰り返す(ステップS3)。次
に最適ノードが選ばれる(ステップS4)。ここではノ
ード3が選択される。続いてノード3が配置可能か否か
が判定される(ステップS5)。配置可能判定では配置
可能と判定され(ステップU1、U2)、仮配置される
(ステップU9)。この時点での仮配置領域は図10
(b)になる。次に配置状態判定を行なう(ステップS
6)。仮配置領域は図10(b)のようになっているの
で、更に配置が可能であると判定される。新たな配置候
補は生じないので(ステップS7)、ループ2の先頭に
戻る(ステップS8)。まだ配置候補集合にノードがあ
るのでループ2を繰り返す(ステップS3)。次に最適
ノードが選ばれる(ステップS4)。配置候補集合には
ノード4しか残っていないので、ノード4が選択され
る。続いて配置可能判定を行なう(ステップS5)。こ
の時点での仮配置領域は図10()になっており、仮
配置命令数は2、仮配置命令長は「長・短」であるので
ステップU1、U2、U3、U4を経てステップU5へ
移る。試行命令長は「短」であるのでステップU5は真
となりステップU6へ移る。ステップU6では仮配置命
令(ノード1、3)と試行命令(ノード4)間の依存関
係を解析する。依存グラフから分かるようにこれらの命
令間には依存関係はないのでノード1、3、4はどの様
な順で実行してもよい。このためステップU7の判定は
真となり、仮配置領域の命令はステップU8でノード
3、4、1の順に並べ直される。次に配置状態判定を行
なう(ステップS6)。仮配置領域は図10(c)にな
っており、既に目的機械の並列度である3命令が決定さ
れているのでこれ以上の配置は不可と判定され、ループ
2を中断しステップS9へ移る。仮配置領域にある命令
が配置される(ステップS9)。以上で第1サイクルの
処理を終る。未配置ノードが残っているのでループ1を
繰り返す(ステップS10、S1)。 (第2サイクル) まず配置候補集合が選ばれる(ステップS2)。この時
点でプレデセッサの無いノードはノード2、5であるの
でこれら2つのノードが配置候補となる。以降の処理内
容は第1サイクルと同様であるので省略する。結果これ
ら2つのノードが第2サイクルの配置命令として配置さ
れる。
【0057】次に実行境界付加部22が起動される。実
境界付加部22は命令再配置21で配置された各サイ
クルの先頭命令に並列実行境界を付加する。実行境界付
加部22終了後のコードを図11に示す。
【0058】続いてオブジェクトコード生成部13が起
動される。ここで図11のコードがオブジェクトファイ
ルとして出力される。
【0059】最後に連結編集部14が起動される。図1
1のコードではアドレス解決の必要が無いので、従来と
同様の処理を行ない最終的な実行形式コードを得る。実
行形式コードのイメージを図12に示す。実際の実行形
式コードは64ビット単位にまとめられたビット列であ
る。 [動作例2]図13は、ソースコードをコンパイラ上流
部10に入力し、アセンブラコード生成部11を経て生
成されたアセンブラコードである。命令スケジューリン
グ部12は図13のコードを入力として受け取る。図1
3に含まれる各命令の意味は以下の通りである。 ・命令6…ラベルmem1が表すメモリの内容をレジス
タR0にロードする。 ・命令7…レジスタR0の内容を、スタックポインタS
Pが指すメモリにストアする。 ・命令8…レジスタR1の内容をレジスタR2に転送す
る。 ・命令9…レジスタR3の内容をレジスタR4に転送す
る。 ・命令10…レジスタR2の内容をレジスタR4に加え
る。
【0060】命令スケジューリング部12は、依存関係
解析部20を起動し、図13のコードより図14の依存
グラフを生成する。続いて命令再配置部21、実行境界
付加部22を起動する。命令スケジューリング部12の
処理結果はオブジェクトコード生成部13へ渡され、結
果図15のコードがオブジェクトファイルとして出力さ
れる。ここまでの動作は例1と同様であるので結果のみ
を示す。
【0061】続いて、連結編集部14が起動される。図
15のコードには未解決アドレスが含まれているので、
連結編集部14の内部にあるアドレス解決部23が起動
される。まずステップV1でアドレスが決定される。ア
ドレス決定の結果mem1は0xF000番地に決定さ
れたとする。0xF000は21ビットを越える数値で
あるのでステップV2、V4の判定は共に真となりステ
ップV7に処理が移る。ステップV7では「ld (m
em1)、R0」を分割する。この命令は「mov m
em1、R31」「ld (R31)、R0」に分割さ
れる。R31はプログラム処理装置がこの分割目的の為
に予約しておいたレジスタである。ここで命令「ld
(mem1)、R0」の分割を行なうのは、目的機械に
32ビットの数値を扱える命令が、レジスタへの転送命
令しか存在せず、32ビットアドレスを直接扱えるロー
ド命令は無いためである。次にステップV8で「mov
mem1、R31」「ld (R31)、R0」命令間
に並列実行境界が挿入される。最終的な実行形式コード
は図16の様になる。 [従来のプログラム処理装置との比較]以上、本発明の
プログラム処理装置での具体的な動作を示したが、本発
明のプログラム処理装置の特徴を明確に示す為に、従来
のプログラム処理装置での処理と比較する。 [比較1]図17は、従来のプログラム処理装置の構成
を示すブロック図である。従来のプログラム処理装置で
は図2に示す本発明の実施形態における実行境界付加部
22、組合せ試行部30、命令集合化部31、実行境界
調整部32を備えていない。
【0062】従って、従来のプログラム処理装置で図8
のコードを処理すると仮配置命令と試行命令の順序を並
べ直す手段がないので、出力されるオブジェクトコード
は図18、実行形式コードは図19の様になる。図から
明らかなように、本実施の形態での結果に比べ、並列実
行境界が余分に必要になっており、実行時間が1サイク
ル余計にかかる。 [比較2]次に従来のプログラム処理装置で図13のコ
ードを処理した場合の動作を考える。従来のプログラム
処理装置では図20のオブジェクトコードが得られる。
このオブジェクトコードが連結編集部で処理され実行形
式コードとなるが、従来のプログラム処理装置には解決
されたアドレスサイズによって並列実行境界を調整する
手段がないため、出力される実行形式コードは図21の
様になる。この図21のコードは1つめの並列実行命令
群に4つの命令が含まれ、目的機械では正しく実行する
ことができない。
【0063】本実施形態で示されるプログラム処理装置
をフロッピーディスク、ハードディスク、CD―RO
M、MO、DVDなどの記録媒体に入れることにより本
実施形態で示されるプログラム処理装置を、コンピュー
ターで実現できる。
【0064】また、本実施形態で示されるプログラム処
理装置により生成された実行形式コードをフロッピーデ
ィスク、ハードディスク、CD―ROM、MO、DV
D、半導体メモリなどの記憶媒体に入れることもでき
る。
【0065】
【発明の効果】以上の説明から明らかなように、本発明
に係るプログラム処理方法は、高級言語で記述された複
数のソースコードからなるプログラムを実行形式コード
に変換する方法であって、前記ソースコードをオブジェ
クトコードに変換する変換ステップ1と、前記オブジェ
クトコードを前記実行形式コードに変換する変換ステッ
プ2とを備え、前記変換ステップ1は、前記ソースコー
ド中の命令を、並列実行すべき複数の命令が隣接するよ
うに並べ直す命令スケジューリングステップを備え、前
記命令スケジューリングステップは、並列実行すべき異
なるビット幅の複数の命令の命令サイズの組合せが所定
の制限を満たすように、並列実行可能な命令の集合をグ
ループとして区分する命令集合化ステップを備えること
を特徴とする。これによって、並列実行できる命令サイ
ズの組合せに制限のあるプロセッサに好適なコードが生
成できる。
【0066】ここで、前記スケジューリングステップ
は、 前記複数の命令の順序の組合せを調べる組合せ試
行ステップを含み、前記命令集合化ステップは、前記組
合せ試行ステップにより調べられた命令順序の組合せの
内、最も前記グループの数が少なくなる組合せに従って
前記複数の命令を前記グループに区分するとすることが
できる。
【0067】これによって、並列実行できる命令サイズ
の組合せに制限のあるプロセッサにおいて実行時間が少
ない命令並びが実現できる。
【0068】また、前記命令スケジューリングステップ
は、前記ソースコードの命令間の依存関係を満たしたま
まで並列実行可能な単数または複数の命令を、並列実行
候補命令集合として前記ソースコードより抽出する並列
実行候補集合抽出ステップを含み、前記命令集合化ステ
ップは、前記並列実行候補集合から、並列実行すべき異
なるビット幅の複数の命令の命令サイズの組合せが所定
の制限を満たすように、最多の命令を含む並列実行可能
な命令の集合をグループとして区分するとすることがで
きる。
【0069】これによって、並列実行できる命令サイズ
の組合せに制限のあるプロセッサにおいて、1サイクル
で実行する命令数を増加させ、結果として全体の実行時
間が少ない命令並びが実現できる。
【0070】また、前記命令スケジューリングステップ
は、前記並列実行候補集合から、前記実行形式コードを
実行する目的機械の並列度に相当する数の命令を仮グル
ープとして選び出す仮グループ選択ステップと、仮グル
ープに含まれる命令の順序の組合せを調べる組合せ試行
ステップと、を含み、前記命令集合化ステップは、前記
組合せ試行ステップにより調べられた命令順序の組合せ
の内、前記目的機械で実行可能な命令サイズの組合せに
合致する並列実行可能な命令の集合をグループとして区
分するとすることができる。
【0071】これによって、並列実行できる命令サイズ
の組合せに制限のあるプロセッサにおける並列資源を最
大限活用する命令並びが実現でき、全体の実行時間を短
縮できる。
【0072】また、前記命令スケジューリングステップ
は、前記命令集合化ステップで区分された前記グループ
間の境界に関する情報を命令に付加する境界付加ステッ
プ1を備えるとすることができる。
【0073】これによって、並列発行命令を命令に付加
された情報によって区切り、可変数命令発行を行なうプ
ロセッサに好適なコードが生成できる。
【0074】また、前記命令スケジューリングステップ
は、前記命令集合化ステップで区分された前記グループ
間にグループ境界を示す情報を付加する境界付加ステッ
プ2を備えるとすることができる。
【0075】これによって、並列発行命令を並列実行す
る境界に付加された情報によって区切り、可変数命令発
行を行なうプロセッサに好適なコードが生成できる。
【0076】また、前記変換ステップ2は、前記オブジ
ェクトコード中の未解決アドレスを決定するアドレス確
定ステップを備え、前記アドレス確定ステップは、アド
レス決定により命令のサイズが変化した場合に、該命令
を含む前記グループを更に複数のサブグループに区分す
る命令グループ分割ステップを備えるとすることができ
る。
【0077】これによって、前記変換手段1で並列実行
できる命令サイズの組合せに制限のあるプロセッサに対
し実現された好適な命令並びが、連結編集による命令サ
イズの変更で崩れた場合にも、再度命令サイズの組合せ
制限を満たすようにできる。
【0078】また、前記変換ステップ2は、前記オブジ
ェクトコード中の未解決アドレスを決定するアドレス確
定ステップを備え、前記アドレス確定ステップは、アド
レス決定により命令が複数命令に分割された場合に、該
命令を含む前記グループを更に複数のサブグループに区
分する命令グループ分割ステップを備えるとすることが
できる。
【0079】これによって、前記変換手段1で並列実行
できる命令サイズの組合せに制限のあるプロセッサに対
し実現された好適な命令並びが、連結編集による命令の
複数命令への分割で崩れた場合にも、再度命令サイズの
組合せ制限を満たすようにできる。
【0080】また、前記アドレス確定ステップは、前記
命令グループ分割ステップで区分された前記サブグルー
プ間の境界に関する情報を命令に付加する境界付加ステ
ップ3を備えるとすることができる。
【0081】これによって、並列発行命令を命令に付加
された情報によって区切り、可変数命令発行を行なうプ
ロセッサに対しても、連結編集による命令サイズの変更
もしくは命令の複数命令への分割が生じた際にも好適な
コードが生成できる。
【0082】また、前記アドレス確定ステップは、前記
命令グループ分割ステップで区分された前記サブグルー
プ間にグループ境界を示す情報を付加する境界付加ステ
ップ4を備えるとすることができる。
【0083】これによって、並列発行命令を命令に付加
された情報によって区切り、可変数命令発行を行なうプ
ロセッサに対しても連結編集による命令サイズの変更も
しくは命令の複数命令への分割が生じた際にも好適なコ
ードが生成できる。
【図面の簡単な説明】
【図1】(a)〜(f)対象とする目的機械の命令セッ
トの一例を示す図
【図2】本発明の一実施形態おけるプログラム処理装
置の構成及び関連するデータを示すブロック図
【図3】アセンブラコードの一例を示す図
【図4】図3に対応する依存グラフ
【図5】同実施形態における命令再配置部21の処理手
順を示すフローチャート
【図6】同実施形態における配置可能判定手順を示すフ
ローチャート
【図7】同実施形態における連結編集部14中のアドレ
ス解決部での処理手順を示すフローチャート
【図8】アセンブラコードの一例を示す図
【図9】図8に対応する依存グラフ
【図10】仮配置領域の内容を示す図
【図11】図8に対応する実行境界付加後のコードを示
す図
【図12】図8に対応する実行形式コードを示す図
【図13】アセンブラコードの一例を示す図
【図14】図13に対応する依存グラフ
【図15】図13に対応する実行境界付加後のコードを
示す図
【図16】図13に対応する実行形式コードを示す図
【図17】従来のプログラム処理装置の構成を示すブロ
ック図
【図18】図8に対応する従来のプログラム処理装置に
よるオブジェクトコードを示す図
【図19】図8に対応する従来のプログラム処理装置に
よる実行形式コードを示す図
【図20】図13に対応する従来のプログラム処理装置
によるオブジェクトコードを示す図
【図21】図13に対応する従来のプログラム処理装置
による実行形式コードを示す図
【符号の説明】
10 コンパイラ上流部 11 アセンブラコード生成部 12 命令スケジューリング部 13 オブジェクトコード生成部 14 連結編集部 20 依存関係解析部 21 命令再配置部 22 実行境界付加部 23 アドレス解決部 30 組合せ試行部 31 命令集合化部 32 実行境界調整部 50 ソースコード 60 オブジェクトコード 70 実行形式コード 910 コンパイラ上流部 911 アセンブラコード生成部 912 命令スケジューリング部 913 オブジェクトコード生成部 914 連結編集部 920 依存グラフ生成部 921 命令再配置部 923 アドレス解決部 950 ソースコード 960 オブジェクトコード 970 実行形式コード
───────────────────────────────────────────────────── フロントページの続き (72)発明者 檜垣 信生 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 高山 秀一 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 平4−51328(JP,A) 特開 平5−289870(JP,A) 特開 平8−137688(JP,A) 日経エレクトロニクス,日本,日経B P社,1997年11月 3日,No.702, pp.27−28 日経エレクトロニクス,日本,日経B P社,1997年 6月16日,No.691, pp.135−146 日経エレクトロニクス,日本,日経B P社,1997年 5月19日,no.689, pp.149−160 日経エレクトロニクス,日本,日経B P社,1991年 3月 4日,No.521, pp.165−185 日経エレクトロニクス,日本,日経B P社,1996年 6月 3日,No.663, pp.163−180 情報処理学会研究報告,日本,社団法 人情報処理学会,1994年 6月13日,V ol.94,No.50(94−ARC− 106),pp.9−16 (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 G06F 9/38 G06F 9/30 G06F 9/32 JSTファイル(JOIS) CSDB(日本国特許庁)

Claims (30)

    (57)【特許請求の範囲】
  1. 【請求項1】 高級言語で記述された複数のソースコー
    ドからなるプログラムを実行形式コードに変換する方法
    であって、 前記ソースコードをオブジェクトコードに変換する変換
    ステップ1と、 前記オブジェクトコードを前記実行形式コードに変換す
    る変換ステップ2とを備え、 前記変換ステップ1は、 前記ソースコード中の命令を、並列実行すべき複数の命
    令が隣接するように並べ直す命令スケジューリングステ
    ップを備え、 前記命令スケジューリングステップは、並列実行すべき異なるビット幅の複数の命令の命令サイ
    ズの組合せが所定の制限を満たすように 、並列実行可能
    な命令の集合をグループとして区分する命令集合化ステ
    ップを備えることを特徴とするプログラム処理方法。
  2. 【請求項2】 前記命令スケジューリングステップは、 前記複数の命令の順序の組合せを調べる組合せ試行ステ
    ップを含み、 前記命令集合化ステップは、 前記組合せ試行ステップにより調べられた命令順序の組
    合せの内、最も前記グループの数が少なくなる組合せに
    従って前記複数の命令を前記グループに区分することを
    特徴とする請求項1記載のプログラム処理方法
  3. 【請求項3】 前記命令スケジューリングステップは、 前記ソースコードの命令間の依存関係を満たしたままで
    並列実行可能な単数または複数の命令を、並列実行候補
    命令集合として前記ソースコードより抽出する並列実行
    候補集合抽出ステップを含み、 前記命令集合化ステップは、 前記並列実行候補集合から、並列実行すべき異なるビッ
    ト幅の複数の命令の命令サイズの組合せが所定の制限を
    満たすように、最多の命令を含む並列実行可能な命令の
    集合をグループとして区分することを特徴とする請求項
    1記載のプログラム処理方法。
  4. 【請求項4】 前記命令スケジューリングステップは、 前記並列実行候補集合から、前記実行形式コードを実行
    する目的機械の並列度に相当する数の命令を仮グループ
    として選び出す仮グループ選択ステップと、 仮グループに含まれる命令の順序の組合せを調べる組合
    せ試行ステップとを含み、 前記命令集合化ステップは、 前記組合せ試行ステップにより調べられた命令順序の組
    合せの内、前記目的機械で実行可能な命令サイズの組合
    せに合致する並列実行可能な命令の集合をグループとし
    て区分することを特徴とする請求項3記載のプログラム
    処理方法。
  5. 【請求項5】 前記命令スケジューリングステップは、 前記命令集合化ステップで区分された前記グループ間の
    境界に関する情報を命令に付加する境界付加ステップ1
    を備えることを特徴とする請求項1〜4のいずれか1項
    に記載のプログラム処理方法。
  6. 【請求項6】 前記命令スケジューリングステップは、 前記命令集合化ステップで区分された前記グループ間に
    グループ境界を示す情報を付加する境界付加ステップ2
    を備えることを特徴とする請求項1〜4のいずれか1項
    記載のプログラム処理方法。
  7. 【請求項7】 前記変換ステップ2は、 前記オブジェクトコード中の未解決アドレスを決定する
    アドレス確定ステップを備え、 前記アドレス確定ステップは、 アドレス決定により命令のサイズが変化した場合に、該
    命令を含む前記グループを更に複数のサブグループに区
    分する命令グループ分割ステップを備えることを特徴と
    する請求項1〜6のいずれか1項に記載のプログラム処
    理方法。
  8. 【請求項8】 前記変換ステップ2は、 前記オブジェクトコード中の未解決アドレスを決定する
    アドレス確定ステップを備え、 前記アドレス確定ステップは、 アドレス決定により命令が複数命令に分割された場合
    に、該命令を含む前記グループを更に複数のサブグルー
    プに区分する命令グループ分割ステップを備えることを
    特徴とする請求項1〜6のいずれか1項に記載のプログ
    ラム処理方法。
  9. 【請求項9】 前記アドレス確定ステップは、 前記命令グループ分割ステップで区分された前記サブグ
    ループ間の境界に関する情報を命令に付加する境界付加
    ステップ3を備えることを特徴とする請求項7または8
    に記載のプログラム処理方法。
  10. 【請求項10】 前記アドレス確定ステップは、 前記命令グループ分割ステップで区分された前記サブグ
    ループ間にグループ境界を示す情報を付加する境界付加
    ステップ4を備えることを特徴とする請求項7または8
    に記載のプログラム処理方法。
  11. 【請求項11】 高級言語で記述された複数のソースコ
    ードからなるプログラムを実行形式コードに変換する装
    置であって、 前記ソースコードをオブジェクトコードに変換する変換
    手段1と、 前記オブジェクトコードを前記実行形式コードに変換す
    る変換手段2とを備え、 前記変換手段1は、 前記ソースコード中の命令を、並列実行すべき複数の命
    令が隣接するように並べ直す命令スケジューリング手段
    を備え、 前記命令スケジューリング手段は、並列実行すべき異なるビット幅の複数の命令の命令サイ
    ズの組合せが所定の制限を満たすように 、並列実行可能
    な命令の集合をグループとして区分する命令集合化手段
    を備えることを特徴とするプログラム処理装置。
  12. 【請求項12】 前記命令スケジューリング手段は、 前記複数の命令の順序の組合せを調べる組合せ試行手段
    を含み、 前記命令集合化手段は、 前記組合せ試行手段により調べられた命令順序の組合せ
    の内、最も前記グループの数が少なくなる組合せに従っ
    て前記複数の命令を前記グループに区分することを特徴
    とする請求項11記載のプログラム処理方法
  13. 【請求項13】 前記命令スケジューリング手段は、 前記ソースコードの命令間の依存関係を満たしたままで
    並列実行可能な単数または複数の命令を、並列実行候補
    命令集合として前記ソースコードより抽出する並列実行
    候補集合抽出手段を含み、 前記命令集合化手段は、 前記並列実行候補集合から、並列実行すべき異なるビッ
    ト幅の複数の命令の命令サイズの組合せが所定の制限を
    満たすように、最多の命令を含む並列実行可能な命令の
    集合をグループとして区分することを特徴とする請求項
    11記載のプログラム処理装置。
  14. 【請求項14】 前記命令スケジューリング手段は、 前記並列実行候補集合から、前記実行形式コードを実行
    する目的機械の並列度に相当する数の命令を仮グループ
    として選び出す仮グループ選択手段と、 仮グループに含まれる命令の順序の組合せを調べる組合
    せ試行手段とを含み、 前記命令集合化手段は、 前記組合せ試行手段により調べられた命令順序の組合せ
    の内、前記目的機械で実行可能な命令サイズの組合せに
    合致する並列実行可能な命令の集合をグループとして区
    分することを特徴とする請求項13記載のプログラム処
    理装置。
  15. 【請求項15】 前記命令スケジューリング手段は、 前記命令集合化手段で区分された前記グループ間の境界
    に関する情報を命令に付加する境界付加手段1を備える
    ことを特徴とする請求項11〜14のいずれか1項に記
    載のプログラム処理装置。
  16. 【請求項16】 前記命令スケジューリング手段は、 前記命令集合化手段で区分された前記グループ間にグル
    ープ境界を示す情報を付加する境界付加手段2を備える
    ことを特徴とする請求項11〜14のいずれか1項記載
    のプログラム処理装置。
  17. 【請求項17】 前記変換手段2は、 前記オブジェクトコード中の未解決アドレスを決定する
    アドレス確定手段を備え、 前記アドレス確定手段は、 アドレス決定により命令のサイズが変化した場合に、該
    命令を含む前記グループを更に複数のサブグループに区
    分する命令グループ分割手段を備えることを特徴とする
    請求項11〜16のいずれか1項に記載のプログラム処
    理装置。
  18. 【請求項18】 前記変換手段2は、 前記オブジェクトコード中の未解決アドレスを決定する
    アドレス確定手段を備え、 前記アドレス確定手段は、 アドレス決定により命令が複数命令に分割された場合
    に、該命令を含む前記グループを更に複数のサブグルー
    プに区分する命令グループ分割手段を備えることを特徴
    とする請求項11〜16のいずれか1項に記載のプログ
    ラム処理装置。
  19. 【請求項19】 前記アドレス確定手段は、 前記命令グループ分割手段で区分された前記サブグルー
    プ間の境界に関する情報を命令に付加する境界付加手段
    3を備えることを特徴とする請求項17または18に記
    載のプログラム処理装置。
  20. 【請求項20】 前記アドレス確定手段は、 前記命令グループ分割手段で区分された前記サブグルー
    プ間にグループ境界を示す情報を付加する境界付加手段
    4を備えることを特徴とする請求項17または18に記
    載のプログラム処理装置。
  21. 【請求項21】 コンピュータに高級言語で記述された
    複数のソースコードからなるプログラムを実行形式コー
    ドに変換させるためのプログラムを記録した記録媒体で
    あって、コンピュータに 前記ソースコードをオブジェクトコード
    に変換する変換ステップ1と、 前記オブジェクトコードを前記実行形式コードに変換す
    る変換ステップ2とを実行させ、 前記変換ステップ1は、 前記ソースコード中の命令を、並列実行すべき複数の命
    令が隣接するように並べ直す命令スケジューリングステ
    ップを実行させ、 前記命令スケジューリングステップは、並列実行すべき異なるビット幅の複数の命令の命令サイ
    ズの組合せが所定の制限を満たすように 、並列実行可能
    な命令の集合をグループとして区分する命令集合化ステ
    ップを実行させるためのプログラムを記録したコンピュ
    ータ読み取り可能な記録媒体。
  22. 【請求項22】 前記命令スケジューリングステップ
    は、コンピュータに 前記複数の命令の順序の組合せを調べる
    組合せ試行ステップを実行させ、 前記命令集合化ステップは、 前記組合せ試行ステップにより調べられた命令順序の組
    合せの内、最も前記グループの数が少なくなる組合せに
    従って前記複数の命令を前記グループに区分することを
    実行させることを特徴とする請求項21記載のコンピュ
    ータ読み取り可能な記録媒体
  23. 【請求項23】 前記命令スケジューリングステップ
    は、コンピュータに 前記ソースコードの命令間の依存関係を
    満たしたままで並列実行可能な単数または複数の命令
    を、並列実行候補命令集合として前記ソースコードより
    抽出する並列実行候補集合抽出ステップを実行させ、 前記命令集合化ステップは、 前記並列実行候補集合から、並列実行すべき異なるビッ
    ト幅の複数の命令の命令サイズの組合せが所定の制限を
    満たすように、最多の命令を含む並列実行可能な命令の
    集合をグループとして区分することを実行させることを
    特徴とする請求項21記載のコンピュータ読み取り可能
    記録媒体。
  24. 【請求項24】 前記命令スケジューリングステップ
    は、コンピュータに 前記並列実行候補集合から、前記実行形
    式コードを実行する目的機械の並列度に相当する数の命
    令を仮グループとして選び出す仮グループ選択ステップ
    と、 仮グループに含まれる命令の順序の組合せを調べる組合
    せ試行ステップとを実行させ、 前記命令集合化ステップは、 前記組合せ試行ステップにより調べられた命令順序の組
    合せの内、前記目的機械で実行可能な命令サイズの組合
    せに合致する並列実行可能な命令の集合をグループとし
    て区分することを実行させることを特徴とする請求項2
    3記載のコンピ ュータ読み取り可能な記録媒体。
  25. 【請求項25】 前記命令スケジューリングステップ
    は、コンピュータに 前記命令集合化ステップで区分された前
    記グループ間の境界に関する情報を命令に付加する境界
    付加ステップ1を実行させることを特徴とする請求項2
    1〜24のいずれか1項に記載のコンピュータ読み取り
    可能な記録媒体。
  26. 【請求項26】 前記命令スケジューリングステップ
    は、コンピュータに 前記命令集合化ステップで区分された前
    記グループ間にグループ境界を示す情報を付加する境界
    付加ステップ2を実行させることを特徴とする請求項2
    1〜24のいずれか1項記載のコンピュータ読み取り可
    能な記録媒体。
  27. 【請求項27】 前記変換ステップ2は、コンピュータに 前記オブジェクトコード中の未解決アド
    レスを決定するアドレス確定ステップを実行させ、 前記アドレス確定ステップは、 アドレス決定により命令のサイズが変化した場合に、該
    命令を含む前記グループを更に複数のサブグループに区
    分する命令グループ分割ステップを実行させることを特
    徴とする請求項21〜26のいずれか1項に記載のコン
    ピュータ読み取り可能な記録媒体。
  28. 【請求項28】 前記変換ステップ2は、コンピュータに 前記オブジェクトコード中の未解決アド
    レスを決定するアドレス確定ステップを実行させ、 前記アドレス確定ステップは、 アドレス決定により命令が複数命令に分割された場合
    に、該命令を含む前記グループを更に複数のサブグルー
    プに区分する命令グループ分割ステップを実行させる
    とを特徴とする請求項21〜26のいずれか1項に記載
    コンピュータ読み取り可能な記録媒体。
  29. 【請求項29】 前記アドレス確定ステップは、コンピュータに 前記命令グループ分割ステップで区分さ
    れた前記サブグループ間の境界に関する情報を命令に付
    加する境界付加ステップ3を実行させることを特徴とす
    る請求項27または28に記載のコンピュータ読み取り
    可能な記録媒体。
  30. 【請求項30】 前記アドレス確定ステップは、コンピュータに 前記命令グループ分割ステップで区分さ
    れた前記サブグループ間にグループ境界を示す情報を付
    加する境界付加ステップ4を実行させることを特徴とす
    る請求項27または28に記載のコンピュータ読み取り
    可能な記録媒体。
JP09564798A 1998-03-30 1998-04-08 プログラム処理方法、プログラム処理装置及び記録媒体 Expired - Fee Related JP3473391B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP09564798A JP3473391B2 (ja) 1998-04-08 1998-04-08 プログラム処理方法、プログラム処理装置及び記録媒体
US09/280,777 US6324639B1 (en) 1998-03-30 1999-03-29 Instruction converting apparatus using parallel execution code
US10/720,030 USRE41751E1 (en) 1998-03-30 2003-11-24 Instruction converting apparatus using parallel execution code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP09564798A JP3473391B2 (ja) 1998-04-08 1998-04-08 プログラム処理方法、プログラム処理装置及び記録媒体

Publications (2)

Publication Number Publication Date
JPH11296377A JPH11296377A (ja) 1999-10-29
JP3473391B2 true JP3473391B2 (ja) 2003-12-02

Family

ID=14143309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09564798A Expired - Fee Related JP3473391B2 (ja) 1998-03-30 1998-04-08 プログラム処理方法、プログラム処理装置及び記録媒体

Country Status (1)

Country Link
JP (1) JP3473391B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3564445B2 (ja) 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
JP3727324B2 (ja) * 2004-04-26 2005-12-14 松下電器産業株式会社 プロセッサ及びコンパイル装置
JP2006012185A (ja) * 2005-08-02 2006-01-12 Matsushita Electric Ind Co Ltd プロセッサ

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
情報処理学会研究報告,日本,社団法人情報処理学会,1994年 6月13日,Vol.94,No.50(94−ARC−106),pp.9−16
日経エレクトロニクス,日本,日経BP社,1991年 3月 4日,No.521,pp.165−185
日経エレクトロニクス,日本,日経BP社,1996年 6月 3日,No.663,pp.163−180
日経エレクトロニクス,日本,日経BP社,1997年 5月19日,no.689,pp.149−160
日経エレクトロニクス,日本,日経BP社,1997年 6月16日,No.691,pp.135−146
日経エレクトロニクス,日本,日経BP社,1997年11月 3日,No.702,pp.27−28

Also Published As

Publication number Publication date
JPH11296377A (ja) 1999-10-29

Similar Documents

Publication Publication Date Title
JP3327818B2 (ja) プログラム変換装置及び記録媒体
JP2000207223A (ja) 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体
USRE45199E1 (en) Compiler apparatus
JP4979875B2 (ja) リターゲッタブルコンパイルシステム及び方法
JP3190773B2 (ja) 言語処理プログラムのコンパイル処理方法
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JP2003099248A (ja) プロセッサ、コンパイル装置及びコンパイル方法
JP2003173262A (ja) プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体
US6324639B1 (en) Instruction converting apparatus using parallel execution code
JP2000132404A (ja) 命令列最適化装置
US20050257200A1 (en) Generating code for a configurable microprocessor
JP3473391B2 (ja) プログラム処理方法、プログラム処理装置及び記録媒体
US20080184213A1 (en) Compiler device, method, program and recording medium
JP4462676B2 (ja) プログラム変換装置、コンパイラ装置およびプログラム変換プログラムを記録したコンピュータ読み取り可能な記録媒体
JP4719415B2 (ja) 情報処理システム及びコード生成方法
JP3553845B2 (ja) プロセッサ、コンパイラ、コイパイル方法及び記録媒体
JP3032030B2 (ja) ループ最適化方法及び装置
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
JP5140105B2 (ja) 命令スケジューリング装置、命令スケジューリング方法および命令スケジューリングプログラム
Knudsen et al. Graph based communication analysis for hardware/software codesign
US7086037B2 (en) Method and computer program product for localizing an interruption structure included in a hierarchical structure of a specification
JP3692884B2 (ja) プログラム処理方法および記録媒体
JP2827979B2 (ja) アセンブラ処理装置及びアセンブラ処理方法
JPH1196018A (ja) コンパイル装置及び方法並びにコンパイル実行プログラムを記録したコンピュータ読み取り可能な記録媒体
JP4032822B2 (ja) アセンブラプログラムのためのアドレス記述変換システム及びプログラム

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080919

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20080919

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090919

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090919

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100919

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110919

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120919

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130919

Year of fee payment: 10

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