JP3305841B2 - プログラム制御装置 - Google Patents

プログラム制御装置

Info

Publication number
JP3305841B2
JP3305841B2 JP30787793A JP30787793A JP3305841B2 JP 3305841 B2 JP3305841 B2 JP 3305841B2 JP 30787793 A JP30787793 A JP 30787793A JP 30787793 A JP30787793 A JP 30787793A JP 3305841 B2 JP3305841 B2 JP 3305841B2
Authority
JP
Japan
Prior art keywords
instruction
address
switching
count value
program
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
JP30787793A
Other languages
English (en)
Other versions
JPH07160534A (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.)
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 JP30787793A priority Critical patent/JP3305841B2/ja
Publication of JPH07160534A publication Critical patent/JPH07160534A/ja
Application granted granted Critical
Publication of JP3305841B2 publication Critical patent/JP3305841B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、例えばコンピュータに
おいてプログラムの実行を追跡するトレース機能等の別
の業務への分岐又は割込命令をプログラムの各命令が既
に設定されているアドレスに埋込み、該当アドレスに設
定されていた元の命令を別のアドレスに移動させて実行
するプログラム制御装置に関する。
【0002】
【従来の技術】コンピュータの記憶部に設定されている
各種業務を実行するためのプログラムを構成する各命令
は、例えば図4に示すように、オペランドと演算子とで
構成されている。オペランドとはこの命令における演算
子が指定する演算の対象となる値や変数を意味する。そ
して、例えば、記憶部のアドレスがこのオペランドとし
て命令内に演算対象として設定される場合もある。
【0003】図4においては、記憶部の各アドレスA
N-1 ,AN ,AN+1 ,AN+2 に、それぞれ命令1,命令
2,命令3,命令4が記憶されている。このような多数
の命令から構成されるプログラムを実行する場合、クロ
ックでカウント値PCが順番に増加していく図示しない
プログラムカウンタを用いて、カウント値PCが指定す
るアドレスに記憶されている各命令を順番に読出して実
行していく。
【0004】また、コンピュータにおいては、性能解析
や不具合発生時の原因解析のために、プログラムの実行
を追跡するトレース機能が組込まれる場合がある。この
トレース機能は各命令を実行する毎に、該当命令の所在
や、命令実行直後の各レジスタの内容を表示したり、記
憶保持する。また、トレース機能のなかには、予め指定
した特定の命令を実行する場合のみ、上述したトレース
処理を行う場合もある。
【0005】この特定の命令をトレースするトレース機
能を実現する割込処理のプログラムは、前記記憶部にお
ける該当命令の直後のアドレス以降に格納されている
が、図4に示すように、記憶部の別のアドレス領域A
M ,AM+1 ,…に設定しておき、前記トレース対象命令
のアドレスの次のアドレスに前記トレース機能の先頭ア
ドレス領域AM にプログラム制御を移動する命令をプロ
グラム実行過程において書込む場合もある。
【0006】この場合、トレース対象命令の次のアドレ
スに記憶されていた命令は一旦トレース処理の割込処理
プログラム内の別のアドレスに移動させられる。図4に
おいては、アドレスAN-1 の命令1がトレース対象命令
となり、次のアドレスAN の命令2が割込処理プログラ
ム内の別のアドレスAM+n に移動させられる。
【0007】図5は、プログラムカウンタのカウント値
PCの変遷を示す図である。アドレスAN の指定が終了
すると、カウント値PCがアドレスAM に飛ぶ。そし
て、アドレスAM+n において、割込処理が終了すると、
元のアドレスAN+1 へ戻る。このようなトレース機能に
おいては、命令2はプログラムカウンタのカウント値P
Cが移動先のアドレスAM+n を指定した時点で実行され
る。
【0008】コンピュータの記憶部に設定される各命令
の演算子の内容によっては、自己のアドレスを参照して
演算を実行する場合もある。具体的には、この自己のア
ドレスとしてプログラムカウンタのカウント値PCを
いている。
【0009】このように、プログラムカウンタのカウン
ト値PCを参照して演算処理する命令の場合は、該当命
令2のアドレスが元のアドレスANから別のアドレスA
M+nへ移動することによって、異なるカウント値PC
用いて演算処理するので、処理結果が異なる場合も発生
する。
【0010】このような事態の発生を未然に防止するた
めに、図6に示すように、トレース機能の割込処理プロ
グラム内に、移動対象命令2の演算子の内容を調べて、
必要に応じて、移動先のアドレスAM+n に書込む命令、
すなわち代替命令の内容を変更するようにしている。
【0011】図6の流れ図において、移動対象命令2の
演算子の内容を調べる(P1)。演算子の内容がプログ
ラムカウンタのカウント値PCを参照しない場合は(P
2)、代替命令は元の命令2のままでよい(P3)。そ
して、アドレスAN にトレースの割込処理に移行する命
令を書込む。
【0012】演算子の内容がプログラムカウンタのカウ
ント値PCを参照する場合で、オペランドの型が図4に
示すように、同一記憶部の異なるアドレス領域へ移動す
る場合は(P5)、演算子の参照するカウント値PCを
現在のアドレスAN に移動先のアドレスAM+n との間の
相対値を加算した値とする即値命令に変更する(P
6)。また、他のレジスタを参照する場合は、P7にお
いて、演算子の参照するカウント値PCを現在のアドレ
スAN 値とする即値命令に変更する。
【0013】
【発明が解決しようとする課題】トレース機能を実現す
るために、プログラムの途中に割込処理を挿入してトレ
ース情報を採取する場合、本来のプログラム処理に影響
を与えないように、トレース処理のための割込処理をで
きるだけ高速に実施する必要がある。
【0014】しかし、トレース処理を実行する割込処理
内に図6に示す複数の判断処理を含む命令書替処理が含
まれるので、割込処理の処理時間が長くなり、本来のト
レース処理時間が増大する。その結果、トレース機能を
付加したために、本来のプログラム処理速度が低下し
て、コンピュータ全体の性能低下を来す懸念がある。
【0015】特に、複数の命令を同時に実行していく並
列処理型のコンピュータにおいては、プムログラムカウ
ンタ参照命令を即値命令に変更する必要があり、それに
伴って、並列配置してあった命令を別々の実行サイクル
に分割する必要がある。そのために、別のワークレジス
タを必要とし、そのワークレジスタに対する書込,読出
処理が必要となる。このように、トレース機能を実現す
るための割込処理がさらに複雑になり、本来のプログラ
ム処理速度がさらに低下する懸念がある。
【0016】また、上述した複雑な割込処理機能をコン
ピュータに組込むために、プログラム開発に関する費用
が増大する問題もある。特に、上述した並列処理型のコ
ンピュータにおいては、この費用の上昇率は大きい。
【0017】本発明はこのような事情に鑑みてなされた
ものであり、簡単な命令を加入しかつ簡単なハード手段
を講じることによって、トレース機能等の別の業務を実
行する割込処理ルーチンから移動対象命令に対する判断
等を含む複雑な処理を除去でき、たとえ移動対象命令が
プログラムカウンタのカウント値を参照とする命令であ
ったとしても、本来のプログラム処理速度に何等影響を
与える事なく、トレース機能等の別の業務を能率的にか
つ低い費用で実現できるプログラム制御装置を提供する
ことを目的とする。
【0018】
【課題を解決するための手段】本発明は、記憶部におけ
る命令が記憶されている各アドレスのうちの指定したア
ドレスに記憶されているトレース対象命令の次のアドレ
スに記憶されている命令を、退避命令として記憶部内の
特定のルーチン内の別のアドレスに移動し、退避命令が
移動前に存在していたアドレスにルーチンへの移動命令
を挿入して、該当ルーチン内で前記別のアドレスに移動
された退避命令を実行するプログラム制御装置に適用さ
れる。そして、上記課題を解消するために、本発明のプ
ログラム制御装置においては、外部から入力されるクロ
ックに同期して増加し、記憶部の各アドレスを指定する
カウント値を出力するプログラムカウンタと、少なくと
も退避命令の移動前のアドレスを含む切替命令を、特定
のルーチン内の退避命令の一つ前のアドレスに記憶する
切替命令設定手段と、プログラムカウンタから出力され
るカウント値が更新される毎に、記憶部の該当カウント
値が指定するアドレスに記憶されている命令を解読し、
この解読された命令が切替命令のとき書込指令を出力
し、解読された命令が別のアドレスに移動された退避命
令のとき切替信号を出力する切替制御部と、切替制御部
から出力された書込指令に応動して切替命令が示す退避
命令の移動前のアドレスを一時記憶するオペランド記憶
部と、切替制御部から切替信号が出力されているときに
は、プログラムカウンタから出力されるカウント値の代
わりに、オペランド記憶部に記憶されているアドレスを
出力する切替部とを備えている。
【0019】
【作用】このように構成されたプログラム制御装置にお
いては、記憶部内の指定されたアドレスに記憶された命
令は、別のアドレスに退避命令として移動される。そし
て、少なくとも退避命令の移動前のアドレスを含む切替
命令を、特定のルーチン内の退避命令の一つ前のアドレ
スに記憶する切替命令が設定される。
【0020】移動後のアドレスにプログラムカウンタの
カウント値を別の割込処理の先頭アドレスへ移動させる
命令が書込まれ、順次更新されるプログラムカウンタの
カウント値が指定するアドレに記憶されている割込処理
ルーチンを構成する各命令が実行されていく。プログラ
ムカウンタのカウント値が切替命令のアドレスに達する
と、次のアドレスの退避命令の移動前のアドレスがオペ
ランド記憶部に記憶される。そして、次の退避命令を実
行する期間のみ、プログラムカウンタから出力されるカ
ウント値の代わりに、オペランド記憶部に記憶されてい
アドレスが出力される。
【0021】その結果、この退避命令に対して、元のア
ドレス値に書替られたカウント値を参照して演算処理が
実施される。すなわち、この退避命令が元のアドレスに
設定されていた条件と同一条件で命令が実行される。
【0022】このように退避命令が実行されるときのみ
プログラムカウンタのカウント値を元のカウント値に戻
すことによって、退避命令がカウント値を参照して演算
処理を実施する命令であっても、また、カウント値を全
く参照しない通常の命令であっても何等区別する事なく
同一の手順で該当命令を実行できる。
【0023】したがって、例えはトレース処理等の割込
処理ルーチン内に退避命令の内容を判断したり、該当退
避命をこの令命令に含まれるカウント値を固定した即価
命令に変更する等の複雑な処理手順を組込む必要がな
い。
【0024】
【実施例】以下本発明の一実施例を図面を用いて説明す
る。図1は実施例のプログラム制御装置の概略構成を示
すブロック図である。このプログラム制御装置1は、プ
ログラムカウンタ2、オペランド記憶部3、切替部4及
び切替制御部5とで構成されている。
【0025】プログラムカウンタ2は外部から入力され
る周期TP を有するクロック信号cに同期して増加する
mビット構成のカウント値PCを切替部4の一方の入力
端子Aに印加する。切替部4の他方の入力端子Bにはオ
ペランド記憶部3から出力されたmビット構成のオペラ
ンドが印加されている。この切替部4の切替制御端子G
には切替制御部5から切替信号aが印加されている。切
替部4は、切替制御端子Gに印加されている切替信号a
がハイ(H)レベル期間の場合のみ、入力端子Bに印加
されているオペランドを出力端子Yから次の演算部6へ
送出する。切替信号aがロー(L)レベル期間において
は、入力端子Aに印加されているカウント値PCを次の
演算部6へ送出する。
【0026】演算部6は各命令に含まれる演算子が指定
する処理を実行する。この場合、演算子の処理内容がプ
ログラムカウンタ2のカウント値PCを参照する必要が
ある場合は、切替部4から出力されたカウント値PC
はオペランドを使用する。
【0027】前記切替制御部5は、プロクラムカウンタ
2から出力されるカウント値PCが更新される毎に、図
3に示す記憶部8内の該当カウント値PCが指定するア
ドレスに記憶されている命令の内容を解読していく。そ
して、切替制御部5は、解読した命令がカウント値PC
の切替命令7であった場合、ロード端子LOADから書
込信号bをオペランド記憶部3へ送出して、このオペラ
ンド記憶部3に切替命令7を構成する演算子7bに記述
されている退避命令9のオペランド、即ち退避命令9の
移動前のアドレスAN を読込ます。オペランド記憶部3
は記憶したオペランド即ちアドレスAN を切替部4の入
力端子Bへ送出する。
【0028】切替制御部5は、切替命令7の次のアドレ
スに記憶されている命令、すなわち元のアドレスAN
らこのアドレスAM+n に移動された退避命令9の実行期
間のみ切替信号aをHレベルとする。したがって、切替
部4から出力されるカウント値CPはこの実行期間のみ
元のアドレスAN を指定したカウント値となる。
【0029】次に、実際のプログラムを用いて動作を説
明する。図3に示すように、記憶部8の各アドレスA
N-1 ,AN ,AN+1 ,AN+2 に、プログラムを構成する
各命令1,命令2,命令3,命令4がそれそれ記憶され
ている。また、記憶部8の各アドレスAM ,…AM+n+1
にトレース処理を行う割込処理プログラムを構成する各
命令が記憶されている。
【0030】そして、この場合、アドレスAN-1 に記憶
されている命令1がトレース対象命令である。この命令
1の次のアドレスAN に記憶されている命令2が移動対
象命令、すなわち退避命令9であり、割込処理ルーチン
内のアドレスAM+n に移動させられる。そして、命令2
が移動された後のアドレスAN には割込処理の先頭アド
レスAM にカウント値PCを移動させる命令(移動命
令)が書込まれる。
【0031】割込処理ルーチンプログラム内の移動され
た退避命令9として命令2が記憶されるアドレスAM+n
の一つ前のアドレスAM+n-1 には切替命令7が新規に設
定される。この切替命令7の演算子7bには、前述した
ようにカウント値PCを命令2(退避命令)のオペラン
ド、即ち、このオペランドとして書込まれている、例え
元のアドレスAN に切替える命令(切替命令)が記述
されている。
【0032】このようなプログラム構成において、周期
P のクロックcに同期してプログラムカウンタ2のカ
ウント値PCが更新されていく。カウント値PCの指定
するアドレスに記憶されている各命令が演算部6で順番
に実行されていく。
【0033】なお、各命令は、図2に示すように、フエ
ッチ(命令取出し),解読(デコーダ),実行,結果書
込の4つのサイクルを複数の命令に亘って重複して実行
するパイプライン処理手法によって実行される。
【0034】そして、カウント値CPがアドレスAN-1
を指定したときトレース対象の命令1が実行され、カウ
ント値CPが次のアドレスAN を指定すると、このアド
レスに記憶されている変更後の命令に従ってプログラム
カウンタ3のカウント値PCが割込処理プログラムの先
頭アドレスAM に移動して、割込処理ルーチンプログラ
ム内の各命令が図2に示すパイプライン処理手順で順番
に実行されていく。
【0035】そして、図2に示すように、アドレスA
M+n-1 の切替命令7がフェッチされ、次の周期で次のア
ドレスAM+n の命令2(退避命令9)がフェッチされ、
かつ切替命令7が解読されると、切替制御部5から書込
信号bがオペランド記憶部3へ送出され、オペランド記
憶部3に元のアドレスAM が記憶保持される。
【0036】次の周期において、切替命令7が実行期間
に入る。すると、切替制御部5はHレベルの切替信号a
を切替部4へ送出する。したがって、次の周期において
は、切替部4から出力されるカウント値PCは、図示す
るように、元のアドレスANとなる。また、この周期に
おいては、アドレスAM+n の命令2(退避命令9)が実
行サイクルに入るので、この命令2の演算子に記述され
ている命令が演算部6で実行される。この実行過程でプ
ログラムカウンタのカウント値PCを参照する場合は、
切替部4から出力された移動前のアドレスAN が参照さ
れる。
【0037】この命令2(退避命令9)に対する実行サ
イクルが終了すると、切替制御部5から出力されている
Hレベルの切替信号aがLレベルへ解除される。その結
果、次の周期においてはカウント値は元のカウント値
に戻る。
【0038】そして、割込処理プログラムを構成する全
ての命令の実行が終了すると復旧命令に従って、プログ
ラムカウンタ2のカウント値PCが元のアドレスAN+1
に戻り、本来のプログラムの各命令3.4を実行する。
【0039】このように構成されたプログラム制御装置
によれば、プログラムの特定の命令をトレースするため
に、トレース処理に関する割込処理を命令が既に設定さ
れているアドレスに動的に書込み、このアドレスに記憶
されていた元の命令2を別のアドレスAM+n に一時移動
(退避)して実行する場合、該当命令2を実行する場合
にはプログラムカウンタのカウント値PCを元のアドレ
スAN に戻している。
【0040】したがって、たとえ該当命令2がカウント
PCを参照する処理を含んでいたとしても、従来手法
のように、移動後の命令の演算子の内容を判断して、こ
の内容に応じて、命令自体を変更する必要は全くない。
【0041】すなわち、別のアドレスAM+n に元の命令
2(退避命令9)をそのまま書込み、書き込んだアドレ
スAM+n の一つ前のアドレスAM+n=1 にカウント値PC
を書替える書替命令7を設定するみのである。
【0042】したがって、トレース処理を実行するため
の割込処理プログラムが大幅に簡素化され、本来のプロ
グラム処理速度に悪影響を与えることはない。また、割
込処理プログラムが簡素化されるので、プログラム開発
に関する費用が大幅に低減される。特に、並列処理型の
コンピュータにおいては、この費用低下の効果はより著
しくなる。
【0043】また、移動された命令(退避命令9)がプ
ログラムカウント値PCを参照するか否かに拘らず、ト
レース処理を実行するための割込処理時間はほとんど変
化しなのでトレース機能の安定化を図ることが可能とな
る。
【0044】
【発明の効果】以上説明したように本発明のプログラム
制御装置においては、プログラムカウント値を元のアド
レス値に一時的に切替えるという極く簡単な命令を加入
し、かつオペランド記憶部やカウント値切替部等の簡単
なハード手段を用いることによって、トレース処理等の
別の業務を実行する割込処理プログラムから移動対象命
令に対する判断等を含む複雑な処理を除去している。し
たがって、たとえ移動対象の退避命令がプログラムカウ
ンタのカウント値を参照とする命令であったとしても、
コンピュータにおける本来のプログラム処理速度に何等
影響を与える事なく、トレース機能等の別の業務を能率
的にかつ低い費用で実現できる。
【図面の簡単な説明】
【図1】 本発明の一実施例に係わるプログラム制御装
置の概略構成を示すプロック図。
【図2】 同実施例装置の動作を示すタイムチャート。
【図3】 同実施例装置を適用したコンピユータの記憶
部に記憶されたプログラムの各命令及びトレース処理を
実施するための割込処理プログラムに含まれる各命令を
示す図。
【図4】 従来のコンピユータの記憶部に記憶されたプ
ログラムの各命令及びトレース処理を実施するための割
込処理プログラムに含まれる各命令を示す図。
【図5】 従来のプログラム制御装置におけるプログラ
ムカウンタのカウント値の変遷を示す図。
【図6】 従来のプログラム制御装置の動作を示す流れ
図。
【符号の説明】
1…プログラム制御装置、2…プログラムカウンタ、3
…オペランド記憶部、4…切替部、5…切替制御部,6
…演算部、7…切替命令、8…記憶部、9…退避命令。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 記憶部における命令が記憶されている各
    アドレスのうちの指定したアドレスに記憶されているト
    レース対象命令の次のアドレスに記憶されている命令
    を、退避命令として前記記憶部内の特定のルーチン内の
    別のアドレスに移動し、前記退避命令が移動前に存在し
    ていたアドレスに前記ルーチンへの移動命令を挿入し
    て、該当ルーチン内で前記別のアドレスに移動された退
    避命令を実行するプログラム制御装置において、 外部から入力されるクロックに同期して増加し、前記記
    憶部の各アドレスを指定するカウント値を出力するプロ
    グラムカウンタと、少なくとも退避命令の移動前のアドレスを含む切替命令
    を、前記特定のルーチン内の前記退避命令の一つ前のア
    ドレスに記憶する切替命令設定手段と、 前記プログラムカウンタから出力されるカウント値が更
    新される毎に、前記記憶部の該当カウント値が指定する
    アドレスに記憶されている命令を解読し、この解読され
    た命令が前記切替命令のとき書込指令を出力し、前記解
    読された命令が前記別のアドレスに移動された退避命令
    のとき切替信号を出力する切替制御部と、 前記切替制御部から出力された書込指令に応動して前記
    切替命令が示す退避命令の移動前のアドレスを一時記憶
    するオペランド記憶部と、 前記切替制御部から切替信号が出力されているときに
    は、前記プログラムカウンタから出力されるカウント値
    の代わりに、前記オペランド記憶部に記憶されている
    ドレスを出力する切替部とを備えたプログラム制御装
    置。
JP30787793A 1993-12-08 1993-12-08 プログラム制御装置 Expired - Fee Related JP3305841B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30787793A JP3305841B2 (ja) 1993-12-08 1993-12-08 プログラム制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30787793A JP3305841B2 (ja) 1993-12-08 1993-12-08 プログラム制御装置

Publications (2)

Publication Number Publication Date
JPH07160534A JPH07160534A (ja) 1995-06-23
JP3305841B2 true JP3305841B2 (ja) 2002-07-24

Family

ID=17974246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30787793A Expired - Fee Related JP3305841B2 (ja) 1993-12-08 1993-12-08 プログラム制御装置

Country Status (1)

Country Link
JP (1) JP3305841B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5489884B2 (ja) * 2010-06-30 2014-05-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 命令実行装置、命令実行方法、及び命令実行プログラム

Also Published As

Publication number Publication date
JPH07160534A (ja) 1995-06-23

Similar Documents

Publication Publication Date Title
JP2559868B2 (ja) 情報処理装置
JP3305841B2 (ja) プログラム制御装置
JP2553200B2 (ja) 情報処理装置
JP2564054B2 (ja) レジスタファイル
JP2929980B2 (ja) 情報処理装置
JP2812610B2 (ja) パイプライン制御方式
JP2000029508A (ja) プログラマブルコントローラ
JPH0561717A (ja) プログラムデバツグ装置
JP3405106B2 (ja) プログラマブルコントローラ
JPH05298144A (ja) データトレース方式
JP2679603B2 (ja) マイクロコンピュータ
JPH03269626A (ja) マイクロプロセッサ
JP3088956B2 (ja) 演算装置
JPH06124205A (ja) 命令プリフェッチ装置
JPH04147339A (ja) 情報処理装置
JP2002544619A (ja) 専用ポインタメモリを使用するオブジェクト指向処理
JPH08297583A (ja) 割り込み処理装置およびその方法
JPH0454531A (ja) プログラム読出し回路
JPH01241644A (ja) マイクロコンピュータ制御回路
JPH09106344A (ja) パイプライン処理装置
JPH05197543A (ja) 情報処理装置の命令デコード方式
JPH02272654A (ja) キャッシュメモリ装置
JPS62115541A (ja) マイクロ命令分岐アドレス生成方式
JPH03263225A (ja) 命令再取出し処理方式
JPH08328853A (ja) プロセッサ

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees