JPH0659933A - コード変換装置 - Google Patents

コード変換装置

Info

Publication number
JPH0659933A
JPH0659933A JP4213135A JP21313592A JPH0659933A JP H0659933 A JPH0659933 A JP H0659933A JP 4213135 A JP4213135 A JP 4213135A JP 21313592 A JP21313592 A JP 21313592A JP H0659933 A JPH0659933 A JP H0659933A
Authority
JP
Japan
Prior art keywords
instruction
execution
program
instructions
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.)
Pending
Application number
JP4213135A
Other languages
English (en)
Inventor
Akiyoshi Mogi
章善 茂木
Atsushi Inoue
淳 井上
Kenji Shirakawa
健治 白川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP4213135A priority Critical patent/JPH0659933A/ja
Publication of JPH0659933A publication Critical patent/JPH0659933A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 VLIWやスーパースカラー方式の計算機で
プログラムをシンボリックデバッグする場合にユーザの
指定した実行停止箇所で実行が停止することを保証し、
かつそれ以外の部分は並列処理で高速実行することので
きるコードにプログラムを変換する。 【構成】 プログラムを解析し(13)、通常行なわれ
る並列最適化を行って(17)、オブジェクトコードに
変換する(18)。その際、文単位あるいは関数単位
(指示入力されるデバッグ要求中で指定される(1
2))で停止できるようにするため、文あるいは関数を
構成する命令の先頭のものが同時実行される命令列の最
初に位置するようにし、余った部分にはNOP命令を挿
入して、命令配置を補正する(16)。また、1文の範
囲あるいは1関数の範囲を越えて並列最適化処理が行わ
れないように制御する(15)。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数の命令を並列に実
行可能である電子計算機におけるコード変換装置に関す
る。
【0002】
【従来の技術】近年、命令単位で並列実行を可能とする
計算機技術が導入されており、1サイクルあたり1個以
上の命令を処理することが可能になっている。VLIW
(Very Long Instruction Wo
rd)技術とスーパースカラー技術と呼ばれる2つの手
法が代表的なものである。
【0003】VLIW技術は、予め定められた数の複数
の命令を組み合わせて、1つの実行単位(Long I
nstruction)を構成し計算機に供給する。計
算機は与えられた複数命令の組を所定の演算器に振り分
けて並列処理を行う。この際には複数命令の同時実行可
能性を判定する必要はなく、制御が単純であるため少な
いハードウェア量で実現可能である。しかしながら処理
を並列に行うため、コンパイラまたは人手により並列に
実行可能な命令群を抽出し、1つの実行単位にまとめる
「命令スケジューリング」と呼ばれる最適化を行ってお
くことが必要になる。
【0004】一方、スーパースカラー方式は、従来と同
様の逐次実行を前提とした命令列を解釈して複数命令の
並列実行可能性を調べるハードウェアを備え、読みだし
た複数の命令が並列実行可能な場合にはこれらを並列実
行するように制御する方式である。
【0005】この方式では命令の並列実行可能性判定を
専用ハードウェアに委ねているため、通常の逐次処理用
プログラムであっても逐次実行時との互換性を保った実
行が保証される。しかし実際にスーパースカラー方式で
性能向上を目指す場合には、ハードウェアリソース(演
算ユニットの数、演算の遅延)やデータ依存性等の情報
を元に複数の演算ユニットが出来る限り動作状態にある
ようにするため、やはり「命令スケジューリング」を行
っておくことが必須である。
【0006】スーパースカラー方式における命令スケジ
ューリング手法としては、1つの基本ブロック(プログ
ラムのうち分岐脱出のない命令列)を処理対象としてハ
ードウェアリソース制約条件、データ依存制約条件を元
に命令を並べ替えていく「リストスケジューリング」と
呼ばれる方式や、プログラムのループ部分を高速化する
ために、ループの1反復分を固有のハードウェアリソー
スに割り当てて仮想的に複数のループ反復を個別の処理
ユニットを用いてパイプライン的に同時実行する「ソフ
トウェアパイプライニング(Software Pip
elining)」と呼ばれる方式などが知られてい
る。またリストスケジューリングの効果を高めるため、
プログラムのループ部分の命令列を複数反復分展開して
処理する「ループアンローリング(Loop Unro
lling)」と呼ばれる手法を組み合わせて使用する
こともある。
【0007】VLIW方式、スーパースカラー方式では
このような命令並べ替え手法を用いることにより高速な
並列実行が可能であるが、プログラム開発の際にソース
コードとの対応関係を考慮したデバッグを行う場合に問
題が生ずる。
【0008】即ち、上記のような命令並べ替え最適化を
行うと、これらの並列処理方式の1実行単位内にソース
プログラム上での複数の文(statement)に対
応する命令が振り分けられることがありうる。例えば最
大4命令同時実行のスーパースカラー計算機で、図2
(b)に示すように命令が並べられることがある。ここ
で命令1、2はソースプログラム(図2(a))上での
文1に対する命令であり、命令3、4は文2に対応する
命令である。このようなプログラムをデバッグする際
に、ユーザがソースプログラム上で文1を終了した段階
でプログラムを停止し実行状態を確認したいということ
が起こる。この場合計算機は並べ替えられた4命令を1
サイクルに同時実行してしまうので、余分な命令3、4
まで実行した段階で停止することになる。このため命令
3、4の内容によっては、メモリ状態やレジスタ内容が
本来の文1完了時点とは異なってしまい、デバッグが非
常に困難になる。同様の困難は文単位のステップ実行の
場合にも発生する。
【0009】また、デバッグ時には命令の並べ替え、並
列実行をやめて1サイクル当たり1命令のみの実行とす
ることも可能ではあるが、その場合計算機の持つ並列処
理能力は全く使用できず、特に実行時間の大きいプログ
ラムのデバッグでは、デバッグ作業自体の効率を著しく
低下することになる。
【0010】このようにVLIW、スーパースカラー方
式など命令並列実行機能を持つ計算機でリストスケジュ
ーリング、ソフトウェアパイプライニングなどの命令並
べ替え手法を用いて並列処理を行う方法は、処理の高速
化の面では有効である反面、複数の命令が1サイクルで
同時実行されてしまうため、プログラム開発時のデバッ
グ作業時の操作性を考えると、ユーザが所望する実行単
位での実行停止、状態確認などを正しく行うことができ
ず、不都合を生じてしまう欠点があった。また、デバッ
グ時には1サイクル当たり1命令しか実行しないように
する方法では、デバッグの操作性は損なわれないが計算
機の並列処理能力が全く活かせず大規模プログラムでの
作業効率を著しく低下してしまう欠点があった。
【0011】
【発明が解決しようとする課題】このようにVLIW、
スーパースカラー方式など命令並列実行機能を持つ計算
機で、リストスケジューリング、ソフトウェアパイプラ
イニングなどの命令並べ替え手法を用いて並列処理を行
う方法は、処理の高速化の面では有効である反面、プロ
グラム開発時のデバッグ作業時の操作性を考えると並列
実行される命令群が元のプログラム上でユーザが所望す
る実行停止点の前後の命令を実行してしまうことが起こ
る。このような命令群を実行後にプログラムを停止する
と、余分な命令を実行することになる。このためソース
プログラムの文単位などで実行を停止する場合、停止時
のメモリ、レジスタ等の状態が本来とは異なったものに
なり、デバッグ時操作性が著しく損なわれることにな
る。
【0012】このような不具合を回避するため、デバッ
グ時に命令並べ替えを行わずソースプログラムと等価な
命令列を、命令の並列実行を抑止して1サイクルに1命
令のみを実行することが考えられる。しかしながらこの
方法では、計算機の持つ命令並列実行能力が全く使用で
きず、特に実行時間の長いプログラムではデバッグ作業
全体の効率を著しく低下することになる。
【0013】また、実際にデバッグ作業を行う場合、ユ
ーザが実行停止を希望する場所はデバッグ段階や、プロ
グラムの性質により変わってくる。デバッグ初期では文
単位での実行停止が必要でも、デバッグが進むにつれて
文集合(ブロック)単位、関数、サブルーチン単位など
ユーザのデバッグ単位は変化する。従って、特に大規模
なプログラムをデバッグする場合、ユーザが所望する、
あるレベルのデバッグ(実行停止)対象のために全プロ
グラムを一定の実行制約の元で実行させるのは、デバッ
グ効率の点で得策とはいえない。
【0014】本発明は、このような事情を考慮してなさ
れたものであり、その目的とするところは、複数の命令
を並列実行可能な計算機において、ユーザが自身のデバ
ッグ段階に応じて所望する実行停止点でプログラムを停
止した場合に元のプログラムの意味に合致したマシン状
態を保持でき、かつこの条件を満たす範囲内では計算機
の並列処理能力を活かした命令並列実行を行うことが可
能なコードにプログラムを変換するコード変換装置を提
供することにある。
【0015】
【課題を解決するための手段】本発明は、ユーザの指定
によりプログラム上でデバッグ時に命令の実行を一時停
止できる箇所を設定する命令実行停止可能箇所設定部
と、設定された実行停止可能箇所において、その前後の
互いに異なる文に帰する命令が同時実行されないような
命令配置制約条件を満たすように命令配置の補正を行な
う命令配置補正部と、前記の命令配置制約条件を満たす
範囲内で並列最適化を行う最適化部とを具備し、ユーザ
が指定したプログラムのオブジェクトコードを出力する
ことを特徴とする。
【0016】
【作用】本発明によれば、デバッグ時に命令実行停止が
される可能性のある箇所の前後の命令を1サイクルで同
時実行しないように命令スケジューリングが行われたオ
ブジェクトコードが得られるので、ユーザがその実行停
止可能箇所でプログラム実行を停止した場合は、元のプ
ログラムで指定されたプログラム状態を正しく観測する
ことが可能になり、従来行っていたソースレベルデバッ
グをVLIW、スーパースカラ方式計算機上で容易に行
うことができる。上記の実行停止可能箇所は、コード変
換を行わせるためにユーザが出す指示の中で、所望のデ
バッグ段階に相応しいものを指定することができる。
【0017】またユーザが実行停止可能箇所と指定しな
い部分については、通常のVLIW、スーパースカラ方
式計算機用コンパイラが行なう命令スケジューリング等
の最適化を行うため高速な実行が可能であるので、デバ
ッグ効率の良いオブジェクトコードに変換できる。
【0018】
【実施例】以下、図面に基づいて本発明の一実施例につ
いて説明する。
【0019】図1は本発明の一実施例に係るコード変換
装置(コンパイラ)の構成を示す図である。本装置は、
指示入力部10、プログラム入力部11、デバッグ要求
解析部12、構文解析部13、デバッグ要求記録部1
4、命令実行停止可能箇所設定部15、命令配置補正部
16、最適化部17、コード生成部18より構成されて
いる。また、命令実行停止可能箇所設定部15は、デバ
ッグ情報入力部151、命令実行停止可能箇所決定部1
52より構成されている。
【0020】まず、指示入力部から「cc −gstm
t (プログラム名)」のような指示が出されると、プ
ログラム入力部11で読み込まれたソースプログラム
が、構文解析部13を経て中間テキストに変換されると
共に、デバッグ要求解析部12ではコンパイル対象とな
るプログラムに対するデバッグ要求があるかどうかを調
べる。デバッグ要求がある場合、デバッグ要求があるこ
とをデバッグ要求記録部14に記録する。また、デバッ
グオプションが設定されている場合には、その情報につ
いてもデバッグ要求記録部に記憶する。デバッグ要求
は、上記指示中では−gで表され、stmt(文単位)
がデバッグオプションに当たる。これ以外にも後述する
ようにblk(ブロック単位)、func(関数単位)
等の指定が可能である。ユーザは、このデバッグオプシ
ョンにより、後述する命令実行停止可能位置を指定する
ことになる。デバッグ要求がある場合には、デバッグ時
に使用するシンボリック情報の収集を行うことも必要で
あるが、これは従来と同様の方式を使用すれば良い。
【0021】命令実行停止可能箇所設定部15はデバッ
グ要求記録部14を調べ、デバッグ要求が出ている時に
はデバッグ情報入力部151より、ユーザの指定した実
行停止可能箇所についての情報を収集する。ここでデバ
ッグ情報は、コンパイル時におけるデバッグオプション
スイッチ、同じくコンパイル時に指定されたデバッグ情
報ファイル、使用しているOS上のシェルでの環境変数
などを調べることにより得られる。得られたデバッグ情
報より、命令実行停止可能箇所決定部152が命令実行
停止可能箇所を決定する。
【0022】最適化部17は中間テキストを解析しVL
IW、スーパースカラプロセッサ用の各種の最適化処
理、すなわち、リストスケジューリングによる命令の並
べ変えや、ソフトウェアパイプライニング・ループ展開
等によるループ処理などが実行される。その際、最適化
処理を行なっても、設定された命令実行停止可能箇所が
所定の命令配置制約条件を満たす場合にのみ最適化処理
が行なわれるように制御を行なう。最適化処理を行なう
ことにより命令配置制約条件を損なうような最適化処理
は行なわれない。つまり、ユーザが文単位でデバッグし
たいという要求を出したときには、各文を構成する命令
が入れ子になってしまうような最適化は行わず、1文を
構成する命令は1かたまりとなるような範囲で最適化を
行う。
【0023】以上のモジュールを経て出力された中間テ
キストはコード生成部18により機械語に翻訳されオブ
ジェクトプログラムとして出力される。コード生成部で
は、命令配置補正部16は設定された実行停止可能箇所
を調べて、出力されるコードが所定の命令配置制約条件
を満たすように命令配置補正を行なう。具体的には、タ
ーゲットとするVLIW、スーパースカラ方式計算機の
並列度にしたがって決まるオブジェクトコードにおける
命令境界(例えば4命令同時実行可能な計算機の場合に
は4命令ずつの命令境界)に設定された命令実行停止可
能箇所が配置されるようにデバッグの単位同士の間にN
OPを挿入することにより補正を行なう。
【0024】例えば図3(a)に示すC言語の関数につ
いて、ユーザの命令停止可能箇所設定に従ってコード生
成する場合を考える。対象とするプロセッサが4命令同
時実行可能である場合、もしユーザが文単位で実行を停
止させたい場合は、文の先頭の命令が4命令の境界の先
頭に来るように補正を行なう。具体的には、前の文の最
後の命令が4命令境界の境界部に配置された場合には補
正は行なわないが、途中に配置された場合、すなわち4
命令並びの1命令目や2命令目などに配置された場合、
図3(b)に見られるように残りの3命令目、4命令目
の部分にNOPを挿入することにより命令配置の補正を
行なう。そして、一つの文の最後はこのように補正され
ているが、その他の部分については命令のスケジューリ
ング等の並列最適化処理がなされたコードが出力される
ことになる。
【0025】また、デバッグの段階が進むなどしてユー
ザが文ではなく、ブロック単位で実行を停止させたい旨
を指示した場合には、ループの先頭や1ブロックの先頭
が4命令の境界に来るように補正されたコードが出力さ
れる。この時、ループ内部及びブロック内部については
並列最適化処理が行なわれる。同様に、関数・手続単位
で実行を停止させたい旨を指示すると、関数・手続の先
頭が4命令の境界に来るように補正され、関数・手続内
部は並列最適化されたコードが出力される。尚、文や関
数の最後が境界に来るように補正してもよい。
【0026】以上のように生成されたオブジェクトプロ
グラムを図示しない実行部で実行する際には、ユーザが
指定した命令実行停止可能箇所において実行停止がで
き、実行停止可能箇所に挟まれた部分は通常の並列実行
がされることになる。よって、この生成されたオブジェ
クトプログラムを通常のデバッガにかければ、並列実行
を含むプログラムでありながら、ユーザが実際にプログ
ラムを停止して実行状態を見たい点で実行停止ができ
る。
【0027】
【発明の効果】かくして本発明によれば、ユーザは自分
の指定したデバッグ単位で実行停止ができ、元のプログ
ラムで指定されたプログラム状態を正しく観測できる。
その際には実行停止を指定しない場所については並列実
行がなされるのでより効率の良いデバッグ処理を行うこ
とが可能になる。
【図面の簡単な説明】
【図1】 本発明の1つの実施例に係るコード変換装置
(コンパイラ)の構成を示す図。
【図2】 (a)は本実施例に係るコンパイラの処理対
象となるC言語プログラムを示す図、(b)は(a)の
プログラムを従来の手法でコンパイルした1例を示す
図。
【図3】 (a)は本実施例に係るコンパイラの処理対
象となるC言語プログラムを示す図、(b)は(a)の
プログラムを本発明の1実施例方式でコンパイルした結
果のアセンブラプログラムを示す図。
【符号の説明】
10 指示入力部 11 プログラム入力部 12 デバッグ要求解析部 13 構文解析部 14 デバッグ要求記録部 15 命令実行停止可能箇所設定部 151 デバッグ情報入力部 152 命令実行停止可能箇所決定部 16 命令配置補正部 17 最適化部 18 コード生成部

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 プログラムを複数の命令を同時実行可能
    な電子計算機システムで実行するコードに変換するコー
    ド変換装置において、 ユーザの指定により命令実行停止可能箇所を設定する手
    段と、 設定された命令実行停止可能箇所において、その前後の
    プログラム記述に帰する命令が同時に実行されないよう
    な命令配置制約条件を満たすように命令配置を補正する
    手段と、 設定された命令実行停止可能箇所が所定の命令配置制約
    条件を満たすことを妨げない範囲で当該電子計算機シス
    テムが複数の命令を同時に実行するコードを補正された
    命令配置に従って生成する手段を備えたことを特徴とす
    るコード変換装置。
JP4213135A 1992-08-11 1992-08-11 コード変換装置 Pending JPH0659933A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4213135A JPH0659933A (ja) 1992-08-11 1992-08-11 コード変換装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4213135A JPH0659933A (ja) 1992-08-11 1992-08-11 コード変換装置

Publications (1)

Publication Number Publication Date
JPH0659933A true JPH0659933A (ja) 1994-03-04

Family

ID=16634159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4213135A Pending JPH0659933A (ja) 1992-08-11 1992-08-11 コード変換装置

Country Status (1)

Country Link
JP (1) JPH0659933A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007058731A (ja) * 2005-08-26 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、及び並列命令実行対応デバッグ装置
JP2011181100A (ja) * 2011-05-19 2011-09-15 Panasonic Corp プロセッサ、及び並列命令実行対応デバッグ装置
US10023622B2 (en) 2008-04-14 2018-07-17 Alzinova Ab Method of immunization for reducing toxic damaged caused by oligomeric form of the amyloid-beta protein with stable amyloid beta monomers and oligomers

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007058731A (ja) * 2005-08-26 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、及び並列命令実行対応デバッグ装置
US10023622B2 (en) 2008-04-14 2018-07-17 Alzinova Ab Method of immunization for reducing toxic damaged caused by oligomeric form of the amyloid-beta protein with stable amyloid beta monomers and oligomers
JP2011181100A (ja) * 2011-05-19 2011-09-15 Panasonic Corp プロセッサ、及び並列命令実行対応デバッグ装置

Similar Documents

Publication Publication Date Title
JP3663710B2 (ja) プログラムの生成方法およびプロセッサの割込制御方法
JP3032031B2 (ja) ループ最適化方法及び装置
US5901308A (en) Software mechanism for reducing exceptions generated by speculatively scheduled instructions
JP3190773B2 (ja) 言語処理プログラムのコンパイル処理方法
JP2921190B2 (ja) 並列実行方式
US5687375A (en) Debugging of High Performance Fortran programs with backup breakpoints
Bala et al. Efficient instruction scheduling using finite state automata
JPH1097430A (ja) 最適化のためにアセンブリコードルーチンをソースコードルーチンに挿入する方法およびそのシステム
US5812854A (en) Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream
JP2009524866A (ja) プログラムの並列実行のためのシステム及び方法
JP2818016B2 (ja) プロセス並列実行方法および装置
US6751791B2 (en) Method of optimizing an MPI procedure by altering to a procedure other than the invoked MPI procedure portion or by altering the execution sequence
Yuan et al. STARPro—a new multithreaded direct execution platform for Esterel
JPH0659933A (ja) コード変換装置
US7073169B2 (en) Compiler device with branch instruction inserting unit
Campbell et al. Refining and defining the program dependence web
JP2007226589A (ja) プログラム変換システム
JPH04308934A (ja) 電子計算機
JP2001255912A (ja) モーションプログラムの実行方法
JP3956113B2 (ja) データ処理装置及びプログラム
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
JP3551352B2 (ja) ループ分割方法
JPH08115220A (ja) ループ最適化方法
JP2000089964A (ja) 情報処理装置および方法、並びに提供媒体
JP2682206B2 (ja) 目的プログラムの最適化方式