JPH04308934A - 電子計算機 - Google Patents

電子計算機

Info

Publication number
JPH04308934A
JPH04308934A JP3073274A JP7327491A JPH04308934A JP H04308934 A JPH04308934 A JP H04308934A JP 3073274 A JP3073274 A JP 3073274A JP 7327491 A JP7327491 A JP 7327491A JP H04308934 A JPH04308934 A JP H04308934A
Authority
JP
Japan
Prior art keywords
program
instructions
function
execution mode
debugging
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
JP3073274A
Other languages
English (en)
Inventor
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 JP3073274A priority Critical patent/JPH04308934A/ja
Publication of JPH04308934A publication Critical patent/JPH04308934A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数の命令の列を並列
に実行可能である電子計算機に関するものである。
【0002】
【従来の技術】従来一般的に用いられている電子計算機
では、メインメモリに格納されている命令を1個ずつ取
り出しながら、その命令により示される処理を実行する
ように構成している。しかし、このような電子計算機は
、1サイクルタイムに1つの処理しか実行できないため
、その処理速度に限界があり効率のよい処理を実現する
のが難しかった。
【0003】そこで、最近では、命令単位で並列実行を
可能とする計算機技術が導入されるようになっており、
1サイクルあたり1個以上の命令を同時に処理可能にし
たものが種々考えられている。
【0004】その代表的な処理方式としてスーパースカ
ラー技術と呼ばれる方式がある。このスーパースカラー
方式では、逐次実行を前提とした命令列を解釈して並列
実行の可能性を調べるため並列実行可能性判定専用のハ
ードウェアを用意し、このハードウェアで並列実行可能
と判断すると、これら複数の命令を並列実行するように
している。
【0005】従って、このようなスーパースカラー方式
では、通常の逐次処理用プログラムであっても逐次実行
時との互換性を保った実行が保証されている。しかし、
実際にスーパースカラー方式により性能向上を目指す場
合は、ハードウェアリソースやデータ依存性等の情報に
基づいて演算ユニットが出来る限り動作状態にあるよう
に命令の並べ替え処理を行っておくことが必須となる。
【0006】従来、スーパースカラー方式における命令
並べ替えの方法としては、1つの基本ブロック(プログ
ラムのうち分岐脱出のない命令列)を処理対象としてハ
ードウェアリソース制約条件、データ依存制約条件を基
に命令を並べ替えていく「リストスケジューリング」と
呼ばれる方式や、プログラムのループ部分を高速化する
ために、ループの1反復分を固有のハードウェアリソー
スに割り当てて仮想的に複数のループ反復を個別の処理
ユニットを用いてパイプライン的に同時実行する「ソフ
トウェアパイプライニング(Software Pip
elining) 」と呼ばれる方式などが知られてい
る。この場合、リストスケジューリングの効果を高める
ため、プログラムのループ部分演算を複数反復分展開し
て処理する「ループ展開(ループアンローリング)」と
呼ばれる手法を組み合わせて使用することもある。
【0007】このように従来のスーパースカラー方式で
は、命令並べ替え手法を採用することにより高速な並列
実行が可能になる。
【0008】ところが、プログラム開発の際にソースコ
ードとの対応関係を考慮したシンボリックデバッグを行
う場合に問題が生ずる。つまり、上述したように命令並
べ替えによる最適化を行うと、ソースプログラムに記述
された命令実行順序が保たれず、また複数の命令を1サ
イクルで同時実行してしまうようになるため、シンボリ
ックデバッグの際のステップ実行を行ってメモリやレジ
スタの値を調べるなどのデバッグ操作が困難になってし
まう。
【0009】このようにスーパースカラー方式の計算機
でリストスケジューリング、ソフトウェアパイプライニ
ングなどの命令並べ替え手法を用いて並列処理を行うよ
うにすると、処理の高速化の面では極めて有効であるが
、この反面で、プログラム開発時のデバッグ作業時の操
作性を考えると、命令実行順序が元のプログラムに記述
されたものと異なっているうえ複数の命令が1サイクル
で同時実行されてしまうためプログラムのステップ実行
ができなくなる不都合を生じる欠点があった。
【0010】
【発明が解決しようとする課題】このように従来にあっ
ては、リストスケジューリング、ソフトウェアパイプラ
イニングなどの命令並べ替え手法を用いて並列処理を行
うと、処理の高速化の面で有効であるものの、プログラ
ム開発時のシンボリックデバッグ作業を考えると、命令
実行順序が元のプログラムに記述されたものと異なって
いるうえ複数の命令が1サイクルで同時実行されてしま
うためプログラムのステップ実行などが行えない不都合
があった。
【0011】そこで、このようなスーパースカラー計算
機によりデバッグを行うには、命令並べ替えを行わずソ
ースプログラムと等価な命令実行順序を保証し、また命
令の並列実行を抑止して1サイクルに1命令のみを実行
する実行モードを持たせることが必要となる。この1サ
イクル1命令実行モード(以下、逐次実行モードと称す
る)は、スーパースカラー計算機の命令供給段階で同時
実行のために与えられた複数命令を解析する際に、計算
機の動作モードに応じて全ての命令がリソース衝突、ま
たはデータ依存を発生する旨の情報を付加することで実
現できる。
【0012】しかし、実際にデバッグ作業を行う場合、
デバッグ対象となる関数、サブルーチンは全体の一部で
あることから、特に大規模なプログラムをデバッグする
場合には、その一部の関数、サブルーチン実行のために
全プログラムを逐次実行モードで実行することになるた
めデバッグ効率を低下させ得策とはいえない。
【0013】本発明は、上記事情に鑑みてなされたもの
で、プログラム内の各関数、サブルーチンに対するデバ
ッグ要求に応じて命令並べ替え処理の抑止、逐次実行モ
ードへの移行、通常の並列実行モードへの復帰などを自
動的に行うことができるコンパイラを有する電子計算機
を提供することを目的とする。
【0014】
【課題を解決するための手段】本発明の電子計算機は、
複数の命令を同時実行可能にするとともに、デバッグ用
に複数命令の同時実行を行わない実行モードを持つもの
であって、デバッグ処理要求を受けてプログラムに対す
るデバッグ対象範囲を決定するとともに、該デバッグ対
象範囲と判断されたプログラムの関数、サブルーチンに
対して命令の並べ替えを行わずコードを生成し、これら
関数、サブルーチン入口で複数命令の同時実行を行わな
い実行モードへ遷移するための命令、関数コール命令、
システムコール命令を出力し、関数、サブルーチン出口
では命令同時実行を行う実行モードに復帰するための命
令、関数コール命令、システムコール命令を出力するコ
ンパイラを有し、ユーザが指定したデバッグ対象の関数
、サブルーチンのオブジェクトコードを出力する構成と
ている。
【0015】
【作用】この結果、本発明によれば、ユーザ指定したデ
バッグ要求したデバッグ対象範囲のプログラムの関数、
サブルーチンに対して命令の並べ替えを行わず、複数命
令の同時実行を行わないオブジェクトコードを生成でき
るようになり、従来行っていたソースレベルデバッグを
容易に得られるようになり、またユーザがデバッグ指定
しない部分については、複数命令の同時実行のモードで
高速な実行が可能になり、デバッグ効率のよいオブジェ
クトコードを生成できる。
【0016】
【実施例】以下、本発明の一実施例を図面に従い説明す
る。
【0017】図1は同実施例に適用されるコンパイラの
概略構成を示す図である。図において、11はプログラ
ム入力部で、このプログラム入力部11には、ソースプ
ログラムが読み込まれるようになっている。
【0018】プログラム入力部11に読み込まれたソー
スプログラムは、デバッグ要求解析部12に送られる。 デバッグ要求解析部12は、ユーザが指定したデバッグ
要求を受け付けてデバッグ対象範囲を決定するもので、
コンパイル対象となるプログラムに対するデバッグオプ
ションを調べるようにしている。つまり、シンボリック
デバッグを要求するオプションが指定されている場合は
、そのプログラムに含まれる全ての関数、サブルーチン
に対してデバッグコードを出力する旨をデバッグ要求記
録部14に記録させる。またプログラム内の関数、サブ
ルーチンに対してデバッグ要求指示がある場合も、その
関数、サブルーチンに対してデバッグコードを出力する
旨をデバッグ要求記録部14に記録させる。
【0019】デバッグ要求解析部12からの出力は、構
文解析部13に送られる。この構文解析部13は、デバ
ッグ要求解析部12からの出力を構文解析して、中間テ
キストとして出力する。
【0020】構文解析部13より出力される中間テキス
トは、最適化決定部15に送られる。最適化決定部15
は、中間テキストの各関数およびサブルーチンに対して
デバッグ要求記録部14の記憶内容を調べるようになっ
ていて、ユーザがデバッグを要求した関数、サブルーチ
ンについて一切の最適化を行わずにソースプログラムと
同じ命令実行順序を保ち、一方、デバッグ要求されてい
ない関数、サブルーチンについては最適化部16に出力
するようにしている。
【0021】最適化部16は、スーパースカラープロセ
ッサ用の各種の最適化処理を実行するもので、ここでは
、リストスケジューリングによる命令の並べ替え、ソフ
トウェアパイプライニングによるループ処理、ループ展
開によるループ処理などを施すようにしている。
【0022】最適化部16で最適化処理された中間テキ
ストは、コード生成部17に送られる。このコード生成
部17は、中間テキストに基づいて機械語に翻訳されオ
ブジェクトプログラムを出力するようにしている。この
場合、コード生成部17は、出力コード決定部171、
最適化コード生成部172、デバッグコード生成部17
3からなっている。
【0023】出力コード決定部171は、中間テキスト
の各関数、サブルーチンに対しデバッグ要求記録部14
の記憶内容を調べ、ユーザがデバッグを要求していない
関数、サブルーチンについては、そのまま最適化コード
生成部172に、一方、ユーザがデバッグ要求している
関数、サブルーチンについては、デバッグコード生成部
173にそれぞれ出力するようにしている。最適化コー
ド生成部172は、ユーザがデバッグを要求していない
関数、サブルーチンについて通常のコード生成をを実行
するものである。また、デバッグコード生成部173は
、ユーザがデバッグ要求している関数、サブルーチンに
ついては、各関数の入口、出口で逐次実行モードに遷移
する命令、通常の並列実行モードに復帰する命令などを
出力する処理を行うものである。この場合のコード生成
方式としては、ハードウェアのサポートする命令体系、
実行モードを変える方法など様々な方式が考えられる。
【0024】次に、以上のように構成した実施例の動作
を説明する。
【0025】いま、プログラム入力部11にソースプロ
グラムが読み込まれると、このソースプログラムはデバ
ッグ要求解析部12、構文解析部13を経て中間テキス
トに変換される。
【0026】この場合、デバッグ要求解析部12では、
コンパイル対象となるプログラムに対するデバッグオプ
ションを調べる。ここで、シンボリックデバッグを要求
するオプションが指定されている場合は、そのプログラ
ムに含まれる全ての関数、サブルーチンに対してデバッ
グコードを出力する旨をデバッグ要求記録部14に記録
する。またプログラム内の関数、サブルーチンに対して
デバッグ要求指示がある場合は、その関数、サブルーチ
ンに対してデバッグコードを出力する旨をデバッグ要求
記録部14に記録する。
【0027】なお、デバッグ要求がある場合には、デバ
ッグ時に使用するシンボリック情報の収集を行うことも
必要であるが、これは従来と同様の方式を使用すれば良
い。構文解析部13より出力される中間テキストが最適
化決定部15に送られると、最適化決定部15では、中
間テキストの各関数、サブルーチンに対しデバッグ要求
記録部14を調べる。ここでは、ユーザがデバッグを要
求した関数、サブルーチンについては一切の最適化を行
わず、ソースプログラムと同じ命令実行順序を保つよう
にする。またデバッグ要求されていない関数、サブルー
チンについては最適化部16に送られる。そして、この
最適化部16でリストスケジューリングによる命令の並
べ替え、ソフトウェアパイプライニングによるループ処
理、ループ展開によるループ処理などのスーパースカラ
ープロセッサ用の各種の最適化処理が施される。
【0028】このようなモジュールを経て出力された中
間テキストは、コード生成部17により機械語に翻訳さ
れオブジェクトプログラムとして出力される。この場合
、コード生成部17では、まず出力コード決定部171
で入力された中間テキストの各関数、サブルーチンに対
しデバッグ要求記録部14を調べる。
【0029】そして、ユーザがデバッグを要求していな
い関数、サブルーチンについては、これを最適化コード
生成部172に与え関数、サブルーチンに対して命令の
並べ替えを行わず通常のコード生成を行う。一方、ユー
ザがデバッグ要求している関数、サブルーチンについて
は、これをデバッグコード生成部173に与え、関数、
サブルーチン入口では複数命令の同時実行を行わない実
行モードへ遷移するための命令、関数コール命令、シス
テムコール命令を出力し、関数、サブルーチン出口では
命令同時実行を行う実行モードに復帰するための命令、
関数コール命令、システムコール命令を出力する処理を
行い、これらの結果をオブジェクトプログラムとして出
力する。
【0030】図2は、ソースプログラムの一例を示すも
ので、このようなC言語のプログラムの関数をデバッグ
要求によりコンパイルする場合を考えると、いま、計算
機が実行モードを変化させる命令DEBUG/UNDE
BUG を持つ場合は、図3に示す実行モード変更命令
によるデバック実行アセンブラプログラムを生成するよ
うになる。この場合、関数入口でDEBUG 命令を発
行して逐次実行モードに遷移し、また関数内部は命令並
べ替えを行わずコード生成して、関数出口のリターン命
令直前でUNDEBUG 命令を発行して通常の並列実
行モードに復帰するようになる。一方、計算機の実行モ
ード変更が1命令で行えない場合は、モード変更を行う
別の関数DEBUG*ON/DEBUG*OFFをコー
ルすることで、図4に示す実行モード変更関数コールに
よるデバック実行アセンブラプログラムを生成するよう
になる。この場合も、やはり関数入口でCAL DEB
UG*ON命令を出力し、出口でCAL DEBUG*
OFF 命令を出力するようになる。また、オペレーテ
ィングシステムのサポートするシステムコールでモード
変更を行う場合は、図5に示す実行モード変更システム
コール命令によるデバック実行アセンブラプログラムを
生成するようになる。 この場合は、DEBUG/UNDEBUG に対応する
システムコール番号を所定のレジスタにセットしてSY
SCALL 命令を実行するように関数の入口、出口で
コード生成すればよい。
【0031】従って、このようにすれば、ユーザがデバ
ッグ要求したデバッグ対象範囲に対して命令並べ替えを
行わず、複数命令の同時実行を行わないオブジェクトコ
ードを生成でき、またユーザがデバッグ指定しない部分
については、複数命令の同時実行モードで高速な実行が
可能になることから、デバッグ効率のよいオブジェクト
コードを生成できることになる。
【0032】なお、本発明は上記実施例にのみ限定され
ず、要旨を変更しない範囲で適宜変形して実施できる。
【0033】
【発明の効果】本発明は、ユーザがデバッグ要求を指定
したデバッグ対象範囲のプログラムの関数、サブルーチ
ンに対して命令並べ替えを行わず、複数命令の同時実行
を行わないオブジェクトコードを生成できるので、従来
行っていたソースレベルデバッグを容易に得られるよう
になり、またユーザがデバッグ指定しない部分について
は通常の複数命令の同時実行のモードで高速な実行が可
能になり、デバッグ効率のよいオブジェクトコードを生
成可能なコンパイラを提供できる。
【0034】また、デバッグ範囲の指定は、コンパイル
オプションをプログラムに対して指定したり、プログラ
ム内の関数、サブルーチンに対して個々にデバッグ要求
を指示したりできるので、ユーザがデバッグする範囲を
自由に定めてデバッグ用コードを生成でき、より効率の
良いデバッグ処理を行うことができる利点もある。
【図面の簡単な説明】
【図1】本発明の一実施例に適用されるコンパイラの概
略構成を示す図。
【図2】処理対象となるC言語プログラムを示す図。
【図3】図2で示すC言語プログラムをコンパイルした
結果のアセンブラプログラムを示す図。
【図4】図2で示すC言語プログラムをコンパイルした
結果のアセンブラプログラムを示す図。
【図5】図2で示すC言語プログラムをコンパイルした
結果のアセンブラプログラムを示す図。
【符号の説明】
11…プログラム入力部、12…デバッグ要求解析部、
13…構文解析部、14…デバッグ要求記録部、15…
最適化決定部、16…最適化部、17…コード生成部、
171…出力コード決定部、172…最適化コード生成
部、173…デバッグコード生成部。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  複数の命令を同時実行可能にするとと
    もに、デバッグ用に複数命令の同時実行を行わない実行
    モードを持つ電子計算機において、デバッグ処理要求を
    受けてプログラムに対するデバッグ対象範囲を決定する
    とともに、該デバッグ対象範囲と判断されたプログラム
    の関数、サブルーチンに対して命令の並べ替えを行わず
    コードを生成し、且つこれら関数、サブルーチン入口で
    前記複数命令の同時実行を行わない実行モードへ遷移す
    るための命令、関数コール命令、システムコール命令を
    出力し、関数、サブルーチン出口では命令同時実行を行
    う実行モードに復帰するための命令、関数コール命令、
    システムコール命令を出力するコンパイラを有すること
    を特徴とする電子計算機。
JP3073274A 1991-04-05 1991-04-05 電子計算機 Pending JPH04308934A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3073274A JPH04308934A (ja) 1991-04-05 1991-04-05 電子計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3073274A JPH04308934A (ja) 1991-04-05 1991-04-05 電子計算機

Publications (1)

Publication Number Publication Date
JPH04308934A true JPH04308934A (ja) 1992-10-30

Family

ID=13513415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3073274A Pending JPH04308934A (ja) 1991-04-05 1991-04-05 電子計算機

Country Status (1)

Country Link
JP (1) JPH04308934A (ja)

Similar Documents

Publication Publication Date Title
US6311324B1 (en) Software profiler which has the ability to display performance data on a computer screen
US5586328A (en) Module dependency based incremental compiler and method
US6059840A (en) Automatic scheduling of instructions to reduce code size
US6973644B2 (en) Program interpreter
US5303357A (en) Loop optimization system
US5960198A (en) Software profiler with runtime control to enable and disable instrumented executable
US6289505B1 (en) Method, apparatus and computer programmed product for binary re-optimization using a high level language compiler
US5687375A (en) Debugging of High Performance Fortran programs with backup breakpoints
JP3190773B2 (ja) 言語処理プログラムのコンパイル処理方法
JP2921190B2 (ja) 並列実行方式
US5812854A (en) Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream
US6334137B1 (en) Method and system for controlling parallel execution of jobs
WO2001098898A1 (en) Methods and apparatus for indirect vliw memory allocation
US20180032320A1 (en) Computer-implemented method for allowing modification of a region of original code
US8037463B2 (en) Computer program functional partitioning system for heterogeneous multi-processing systems
JPH0926884A (ja) バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置
JP5576605B2 (ja) プログラム変換装置およびプログラム変換方法
JP2005129001A (ja) プログラム実行装置、マイクロプロセッサ及びプログラム実行方法
US7073169B2 (en) Compiler device with branch instruction inserting unit
JPH04308934A (ja) 電子計算機
JPH0659933A (ja) コード変換装置
Yasumoto et al. A LOTOS compiler generating multi-threaded object codes
JPH0659908A (ja) プログラム実行装置
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
JP3551352B2 (ja) ループ分割方法