JPH0750444B2 - マイクロ・プログラム制御方式 - Google Patents

マイクロ・プログラム制御方式

Info

Publication number
JPH0750444B2
JPH0750444B2 JP62260218A JP26021887A JPH0750444B2 JP H0750444 B2 JPH0750444 B2 JP H0750444B2 JP 62260218 A JP62260218 A JP 62260218A JP 26021887 A JP26021887 A JP 26021887A JP H0750444 B2 JPH0750444 B2 JP H0750444B2
Authority
JP
Japan
Prior art keywords
signal
address
micro
subroutine
output
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 - Lifetime
Application number
JP62260218A
Other languages
English (en)
Other versions
JPH01102653A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP62260218A priority Critical patent/JPH0750444B2/ja
Publication of JPH01102653A publication Critical patent/JPH01102653A/ja
Publication of JPH0750444B2 publication Critical patent/JPH0750444B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はマイクロ・プログラム制御方式に関し、特にマ
イクロ・プログラムのデバグ方法に関する。
〔従来の技術〕
マイクロ・プログラム制御方式を用いたマイクロ・プロ
セッサなどの情報処理装置に要求される機能が高度で複
雑なものになるにつれ、マイクロ・プログラムも高機能
化のために複雑なものになってきている。とくにマイク
ロ・プロセッサにおいてマイクロ・プログラムは制御記
憶の容量を大幅に増加させることが困難であるため、マ
イクロ・プログラムのレベルでのサブルーチンを有効に
利用する。つまり機能を分割して共通サブルーチンと
し、複数のマイクロ・プロシージャが一つの共通サブル
ーチンの必要なときに呼出すことによって制御記憶の容
量の増加を防止している。しかし、一つのマイクロ・プ
ロシージャはいくつかの共通サブルーチンを、引数を用
いて呼出して使用すること、呼出された共通サブルーチ
ンもまた他のサブルーチンを呼出していること(ネステ
ィング)、制御記憶にたいするアドレス(マイクロ・ア
ドレス)を直接監視することが困難であること、などの
理由により特にマイクロ・プログラムのデバグは困難に
なってきている。
第7図はマイクロ・プロセッサの制御記憶に対してマイ
クロ・アドレスを発行するためのハードウエアを示す
図、第9図は波形を示す図である。本マイクロ・プログ
ラム制御方式を採用しているマイクロ・プロセッサは互
いに重なりのない2つのクロックCLK1,CLK2にもとずい
て動作するものである。
700は以下に説明する従来のマイクロ・プログラム制御
方式を実施しているマイクロ・プロセッサ、701は制御
記憶、702は制御記憶からの出力を1.5クロック遅延させ
るためのラッチ、703はCLK2同期のマイクロ・デコー
ダ、704はデコーダ703においてサブルーチン・コール命
令がデコードされたときにアクティブになる信号、705
はデコーダ703においてサブルーチンからのリターン命
令がデコードされたときにアクティブになる信号であ
る。706はデコーダからの2本の信号704,705により制御
されるマイクロ・アドレス制御部、707は制御記憶701へ
のマイクロ・アドレスを保持する4本のレジスタからな
るレジスタ群で、その内容はCLK1同期で変化し、それぞ
れMAR0,MAR1,MAR2,MAR3と呼ぶ。708はレジスタ群707の
中のどのレジスタからの出力を選んで制御記憶701への
アドレスとして出力するかをCLK1同期で決定するセレク
タで、709はセレクタ708から出力されたアドレスを制御
記憶に供給するアドレス信号路である。710はマイクロ
・アドレス制御部706から出力されるレジスタ群707への
4本のストローブ信号で、どのレジスタにたいしてスト
ローブを発生するかを制御する。このストローブ信号71
0はCLK1のハイ期間と同じ期間だけにアクティブにな
る。711はセレクタ708への制御信号で、CLK1同期であ
る。712は制御記憶701にたいして出力されたCLK1同期の
マイクロ・アドレスを信号路709から入力し、1だけイ
ンクリメントしてCLK2同期にする加算器、713は加算器7
12からの出力信号路である。714はレジスタ群707の入力
セレクタで、加算器712からの出力信号713、その他のCL
K2同期の信号715を入力とし、デコーダ703からのCLK2同
期の制御信号716によって入力信号の中から1系統をCLK
2同期で選んで信号路717に出力する。
第8図はマイクロ・アドレス制御部706の内部の構造を
示す図である。801はアップ・ダウン・カウンタで、マ
イクロ・プロセッサ700全体のリセット信号802がアクテ
ィブになると0にクリアされ、デコーダ703においてサ
ブルーチン・コール命令がデコードされたことを示す信
号704がアクティブになる度にその立上がりエッヂで1
ずつカウント・アップし、デコーダ703においてサブル
ーチンからのリターン命令がデコードされたことを示す
信号705がアクティブになる度にその立上がりエッヂで
1ずつカウント・ダウンする。レジスタ群707の中から
1つのレジスタを指すポインタとしてカウンタ801を使
用する。レジスタ群707には4本レジスタがあるのでカ
ウンタ801は2ビット幅である。803はカウンタ801の出
力信号路である。806はデコーダで、信号803,705を入力
して、第11図に示すパターンに従ってデコードし、セレ
クタ708への制御信号711とレジスタ群707へのストロー
ブ信号710を生成する。制御信号807はラッチ808によりC
LK1同期にしてレジスタ群707へのセレクト信号711にす
る。
マイクロ・プロシージャ開始直後などサブルーチンをコ
ールしていないときの動作はつぎのとおりである。いま
レジスタ群707のなかのMAR0が使用されているとし、MAR
0にはマイクロ・アドレスPが保持されていたとする。M
AR0が使用されているときカウンタ801は0を出力してい
る。セレクタ708はセレクト信号711によりMAR0からの出
力を選んで制御記憶701にたいしてCLK1同期で発行す
る。制御記憶701からの出力を確実に1クロック間デコ
ーダ703に供給するためにラッチ702で1.5クロック遅延
させてCLK2でデコーダ703に供給される。このあいだに
アドレス信号路709上に出力されていたアドレスPは、
加算器712で1だけインクリメントされてP+1となっ
て入力セレクタ714に入力され、セレクト信号716により
加算器712からの値が選択されてストローク信号710によ
ってMAR0に格納される。つまりアドレス信号路709にア
ドレスP+1が出力されているときに、デコーダ703に
は制御記憶701のアドレスPの内容が供給されてデコー
ドされる。
たとえばMAR0を使用しているときにデコーダ703がサブ
ルーチン・コール命令をデコードすると、信号704がCLK
2同期でアクティブになり、それと同時にコールしたサ
ブルーチン先頭アドレスが入力セレクタ714へ入力さ
れ、入力セレクタ714にたいする制御信号716によりセレ
クタ714からは該サブルーチン先頭アドレスSが選ばれ
て出力される。信号704がアクティブになるとカウンタ8
01がCLK2同期でカウント・アップされて1を出力し、信
号路803によりデコーダ806に伝達される。カウンタ801
の変化したCLK2からの1クロック間にデコーダ806で
は、第11図に示すようにMAR1にたいするストローブ信号
をアクティブにするとともにセレクタ708がMAR1の内容
を選択する制御信号をアクティブにする。該制御信号は
ラッチ808によりCLK1同期になって制御信号711になる。
MAR1にたいするストローブ信号がアクティブになると、
セレクタ714から出力されているサブルーチン先頭アド
レスSがCLK1同期でMAR1に保持され、制御信号711によ
りセレクタ708が、前記ストローブ信号によりMAR1に保
持されたばかリのサブルーチン先頭アドレスSを制御記
憶701にたいして出力することにより、サブルーチン・
コールを行なう。
デコーダ703が制御記憶701のアドレスPにあるサブルー
チン・コール命令をデコードしているときには、前述の
ようにMAR0にはアドレスP+1が保持されており、MAR0
にアドレスP+1が保持されたつぎのクロックでは、該
サブルーチン・コール命令のデコードによりMAR1にたい
するストローブ信号がアクティブになってサブルーチン
先頭アドレスSがMAR1に保持されるので、MAR0に保持さ
れたアドレスP+1はリターン・アドレスとして保存さ
れていることになる。
つぎにリターン命令によるサブルーチンからのリターン
の方法をしめす。第9図のタイミング・チャートはサブ
ルーチンからのリターンを示したものである。たとえば
MAR1を使用しているときにデコーダ703がアドレスNに
あるリターン命令をデコードすることを考える。MAR1を
使用しているときにはカウンタ801は1を出力してい
る。またMAR1にはリターン命令のアドレスNが保持され
ており、MAR0にはリターン・アドレスP+1が保持され
ているものとする。デコーダ703がアドレスNにあるリ
ターン命令をデコードすると信号705がCLK2同期でアク
ティブになってカウンタ801がCLK2同期でカウント・ダ
ウンされて0となる。カウンタ801の出力は信号路803を
介してデコーダ806に伝達される。カウンタ801の変化し
たCLK2からの1クロック間にデコーダ806では、第11図
に示すようにカウンタ801の値(この例では0)とアク
ティブになっている信号705により、セレクタ708がMAR0
の内容を選択するための制御信号を生成する。この制御
信号はラッチ808によりCLK1同期になって制御信号711に
なり、セレクタ708は、MAR0に保持されていたアドレス
P+1を制御記憶701にたいして出力することにより、
サブルーチンからのリターンを行なう。
このようなマイクロ・プログラム制御方式を採用してい
るマイクロ・プロセッサのマイクロ・プログラムをデバ
グする方法として従来からマイクロ・アドレスの全ビッ
トを直接監視するアドレス・トラップ法があった。この
方法は信号路709上のマイクロ・アドレスが既知のアド
レスと一致しているか否かを常に監視し、一致した場合
には割込みなどの手段によってデバグ・ルーチンを起動
するものであった。
〔発明が解決しようとする問題点〕
従来のマイクロ・アドレスを直接監視するアドレス・ト
ラップ法は、マイクロ・アドレスの全ビットを直接監視
するため、マイクロ・アドレスのビット長分の比較器
と、トラップをおこすアドレスを格納するためのレジス
タのような手段と、該レジスタの内容を書き換えるため
の手段とを有し、マイクロ・アドレスと該レジスタの内
容とを比較器の入力とし、比較器での比較結果により制
御を変えてトラップを発生させるのに、多量のハードウ
エアが必要であるという欠点がある。
〔発明の従来技術に対する相違点〕
上述した従来のマイクロ・アドレスを直接監視するアド
レス・トラップ法に対し、本発明はマイクロ・アドレス
の全ビットを直接監視するのではなく、マイクロ・アド
レス・スタックの動作を監視してトラップを発生させる
という相違点を有する。
〔問題点を解決するための手段〕
マイクロ・プログラムを格納する制御記憶と、前記マイ
クロ・プログラムのサブルーチンを呼出し所定の処理が
終了してリターン命令によりこのサブルーチンを呼出し
た元のルーチンへ復帰する際に必要なマイクロ・アドレ
スを一時的に待避させるレジスタ群からなるハードウェ
ア・スタックと、前記マイクロプログラムをデコードし
て得られるサブルーチン・コール信号およびリータン信
号にそれぞれ応答して前記スタックのレジスタ群のうち
の1つをそれぞれ指定するポインタ値を生成するカウン
タと、前記ポインタ値と前記リターン信号とに応答して
前記スタックのレジスタ群の1つを選択して前記制御記
憶に供給する制御手段とを備え、前記スタックの指定す
るアドレスへ次実行アドレスを強制的に移すことにより
前記マイクロ命令のトレースを実行するマイクロプロセ
ッサにおけるマイクロ・プログラム制御方式において、
予め定められたデバッグ・ルーチンの先頭アドレスが格
納されかつ前記スタックとは独立したレジスタ手段と、
デバッグの目標の前記サブルーチンが使用する前記レジ
スタ群のうちの任意の1つを外部から指定するスタック
レベル値と前記カウンタの指すポインタ値のラッチ出力
とを比較器で比較してトラップを発生させるべき前記サ
ブルーチンからの前記リターン命令であるか否かを監視
するとともに比較結果が一致したことを検出すると前記
リターン信号に応答して前記トラップ用の信号を生成す
るトラップ検出手段とを備え、前記リターン命令の発生
に伴ない前記サブルーチンを呼び出した元のルーチンへ
復帰する際に、前記トラップの発生が許可されていれば
前記トラップ用の信号に応答して、復帰時に使用される
前記スタックのトップに格納されたマイクロ・アドレス
値に換えて前記レジスタ手段に格納されている前記デバ
ッグ・ルーチンの先頭アドレスを前記制御手段により前
記制御記憶に供給することによって前記制御記憶内の前
記デバッグ・ルーチンへ制御を移すことを特徴とする。
〔実施例〕
第1図は本発明の第1の実施例を示すブロック図であ
る。
本マイクロ・プログラム制御方式を採用しているマイク
ロ・プロセッサ100は互いに重なりのない2つのクロッ
クCLK1,CLK2にもとずいて動作するものとする。
101は制御記憶、102は制御記憶からの出力を1.5クロッ
ク遅延させるためのラッチ、103はCLK2同期のマイクロ
・デコーダ、104はデコーダ103においてサブルーチン・
コール命令がデコードされたときにアクティブになる信
号、105はデコーダ103においてサブルーチンからのリタ
ーン命令がデコードされたときにアクティブになる信号
である。106はデコーダからの2本の信号104,105により
制御され、本発明を実施しているマイクロ・アドレス制
御部、107は制御記憶101へのマイクロ・アドレスを保持
するハードウエア・スタックで4本のレジスタからなる
レジスタ群で、その内容はCLK1同期で変化し、それぞれ
MAR0,MAR1,MAR2,MAR3と呼ぶ。120はレジスタ群(スタッ
ク)107とは別に本発明で新たに設けられた5番目のマ
イクロ・アドレス・レジスタでその内容はCLK1同期で変
化し、MARTと呼ぶ。MARTは制御記憶101内に予じめ設け
られたデバグ・ルーチンの先頭アドレスTをマイクロ・
アドレスとして保持しており、マイクロ・プロセッサ10
0全体のリセット信号202がアクティブになると、デバグ
・ルーチンの先頭アドレスTがMARTに設定される。108
はレジスタ群107とMARTの5本のレジスタの中からどの
レジスタからの出力を選んで制御記憶101へのアドレス
として出力するかをCLK1同期で決定するセレクタで、10
9はセレクタ108からの出力されたアドレスを制御記憶に
供給するアドレス信号路である。
110はマイクロ・アドレス制御部106から出力されるレジ
スタ群107への4本のストローブ信号とMARTへの1本の
合計5本のストローブ信号で、どのアドレス・レジスタ
にたいしてストローブを発生するかを制御する。このス
トローブ信号はCLK1のハイ期間と同じ期間だけアクティ
ブになる。111はセレクタ108への制御信号で、CLK1同期
である。112は加算器であり制御記憶101にたいして出力
されたCLK1同期のマイクロ・アドレスを信号路109から
入力して1だけインクリメントし、CLK2同期で出力す
る。113は加算器112からの出力信号路である。114はレ
ジスタ群107の入力セレクタで、加算器112からの出力信
号113、その他のCLK2同期の信号115を入力とし、デコー
ダ103からのCLK2同期の制御信号116によって入力信号の
中から1系統をCLK2同期で選んで信号路117に出力す
る。121はレジスタ群(スタック)107のレベルを指定す
る。122はレジスタ121にデータを書込む信号路、123は
レジスタ121からの出力信号路、124はトラップを行なう
か否かの動作を規定する制御信号路である。
本実施例では122,124はマイクロ・プロセッサ100の外部
端子から直接マイクロ・プロセッサ100の内部に入力す
る。
第2図はマイクロ・アドレス制御部106の内部の構造と
前記スタックのレベルを指定するレジスタ121との接続
関係を示す図である。201はアップ・ダウン・カウンタ
で、前記レジスタ群(スタック)107のいずれかをレベ
ルとして選択する信号を出力するためのものであり、マ
イクロ・プロセッサ100全体のシステムリセット信号202
がアクティブになると0にクリアされる。レジスタ群10
7には4本レジスタがあるのでカウンタ201は2ビット幅
である。203はカウンタ201の出力信号路である。206は
デコーダで、信号203,105および215を入力して、第10図
に示すパターンに従ってデコードし、セレクタ108への
制御信号207とレジスタ群107とMARTへのストローブ信号
110を生成する。制御信号207はラッチ208によりCLK1同
期にして出力セレクタ108への制御信号111とする。211
は比較器で、カウンタ201の出力であるレジスタ群(ス
タック)107を選択する信号203をラッチ210で1クロッ
ク遅延させた信号と前記レジスタ121の出力であるレベ
ル指定信号123とを入力とし、2者の一致を検出すると
出力信号212をアクティブにする。213はトラップ用フリ
ップ・フロップで、デコーダ103においてサブルーチン
からのリターン命令がデコードされたことを示す信号10
5がアクティブになる度にその立上がりエッヂで比較器2
11の出力信号212の状態を記憶する。またフリップ・フ
ロップ213は前記リセット信号202でクリアされる。214
はフリップ・フロップ213の出力信号で、論理積ゲート2
15と論理否定ゲート216とに入力される。論理積ゲート2
15はフリップ・フロップ213の出力信号214と前記制御信
号124とを入力として両者の論理積をとってデコーダ206
にたいして出力する。フリップ・フロップ213の出力信
号214は論理否定ゲート216により反転され、ラッチ217
によって1クロック遅延され、信号路218を介して論理
積ゲート219に入力される。論理積ゲート219は、論理否
定ゲート216により反転されラッチ217によって1クロッ
ク遅延されたトラップ用フリップ・フロップ213の出力
信号と、デコーダ103においてリターン命令がデコード
されたことを示す信号105とCLK2信号220とを入力とし、
3者の論理積をとってカウンタ201のカウント・ダウン
を制御する。221は論理積ゲート219の出力信号である。
222は論理積ゲートで、デコーダ103においてサブルーチ
ン・コール命令がデコードされたことを示す信号104とC
LK2信号220とを入力とし、両者の論理積をとってカウン
タ201のカウント・アップを制御する。カウンタ201は論
理積ゲート222の出力がアクティブになる度にその立上
がりエッヂで1ずつカウント・アップし、論理積ゲート
219の出力221がアクティブになる度にその立上がりエッ
ヂで1ずつカウント・ダウンする。
第1図,第2図,第3図,第10図を用いて本発明による
マイクロ・プログラムにたいするデバグの方法を説明す
る。本発明によるマイクロ・プログラムにたいするデバ
グの方法は、マイクロ・プログラムの論理的一まとまり
であるサブルーチン単位でトラップを発生させるもので
ある。つまりデバグの目標のサブルーチンがサブルーチ
ン・コール命令によって呼出され、該サブルーチンでの
処理が終了してリターン命令によってもとの処理系に復
帰するときにトラップを発生させて、マイクロ・プログ
ラム・レベルのデバグ・ルーチンを起動し、該デバグ・
ルーチンでの処理が終了すると、目標のサブルーチンを
呼出した処理系に復帰する。
第3図は本発明を説明するタイミング・チャートであ
る。デバグを行なわないときには、信号124をインアク
ティブに保っておく。デバグを行なう時には、信号124
をアクティブにし、目標のサブルーチンがレジスタ群10
7のなかのどのレジスタを使用するかをレジスタ121に書
込んでおく。たとえば目標のサブルーチンがMAR1を使用
するときにはレジスタ121にレベル「1」を書込んでお
く。MAR1を使用する目標のサブルーチンはマイクロ・ア
ドレスPにあったコール命令によって呼出されたものと
する。したがってMAR0には該サブルーチンからのリター
ン・アドレスとしてP+1が保持されている。またフリ
ップ・フロップ213は0を出力しており、したがってラ
ッチ217の出力信号218はアクティブであるとする。
第3図にあるようにMAR1を使用する目標のサブルーチン
がコール命令によって呼出されて処理が始ると、カウン
タ201がカウント・アップされて1を出力するので、該
サブルーチンからの復帰のためのリターン命令が実行さ
れる直前では比較器211ではレジスタ121の内容とカウン
タ201の出力のラッチ210により1クロック遅延された信
号とが一致していることになる。カウンタ201の出力は
ラッチ210により1クロック遅れて比較器211に入力され
るので、該サブルーチンからの復帰のためのリターン命
令がデコーダ103でデコードされて信号105がアクティブ
になっている期間まで、比較器211の出力信号212はアク
ティブになっている。
MAR1を使用する目標のサブルーチンでの処理が終了し、
アドレスNにあるリターン命令を実行する時、つまりデ
コーダ103が制御記憶101のアドレスNにあるリターン命
令をデコードすると信号105がアクティブになる。信号1
05の立上がりエッヂにおいてまずフリップ・フロップ21
3に前記アクティブになっていた比較器211の出力信号21
2が記憶される。したがって信号214がアクティブになる
が、信号214の変化はラッチ217によって1クロック遅延
されるので、信号218はアクティブのままであり、CLK2
同期の信号105の立上がりエッヂおよびCLK2の立上がり
エッヂによりカウンタ210がカウント・ダウンされてカ
ウンタ201は0を出力する。前述のようにカウンタ201の
出力の変化もラッチ210によって1クロック遅延される
ので、信号105の立上がりエッヂにおいて比較器211では
信号105の立上がりエッヂの1クロック前のカウンタ201
の出力とレジスタ121の内容が比較されている。1クロ
ック遅延のためのラッチ210はリターン命令が実行され
たときにレジスタ群107のどのレジスタを使用している
ときのリターン命令であったかを示しており、トラップ
を発生させるべき目標のサブルーチンのリターン命令で
あったか否かを判別するために必要である。CLK2同期の
信号105の立上がりエッヂからの1クロックの間、信号1
05がアクティブ、カウンタ201が0、論理積ゲート215が
アクティブとなるので、デコーダ206は第10図のパター
ンに従って出力セレクタ108にたいしてMARTの内容を制
御記憶101に出力させる制御信号を生成する。従ってア
ドレス信号路109にはセレクタ108からデバグ・ルーチン
の先頭アドレスTが出力されて制御記憶101に入力され
る。つまりデコーダ206は信号105がアクティブ、論理積
ゲート215がアクティブであることで目標のサブルーチ
ンの実行が終了したことを検出し、カウンタ201が0を
示している(MAR0を指す)にも拘らず、出力セレクタ10
8にたいしてMARTの内容(デバグ・ルーチンの先頭アド
レスT)を制御記憶101に出力させることによりトラッ
プを起こして、デバグ・ルーチンを起動する。
制御記憶101のアドレスNにあるリターン命令によるCLK
2同期の信号105の降下エッヂ後は、比較器211にはカウ
ンタ201が0になったことが1クロック遅れで伝達され
るので比較器211の出力信号212がインアクティブにな
り、次に信号105がアクティブになったとき、すなわち
デバグ・ルーチンでリターンが実行されたときにフリッ
プ・フロップ213に信号212がインアクティブであること
が保持される。また論理積ゲート219にはフリップ・フ
ロップ213が1になっていたことが1クロック遅れで伝
達され、信号路218はインアクティブになる。デコーダ2
06は信号105がインアクティブになっても論理積ゲート2
15からアクティブな信号が入力されている間、第10図に
従ってカウンタ201の出力に拘らず出力セレクタ108にた
いしてMARTの内容を制御記憶101に出力させる制御信号1
11と、信号路109に出力されたMARTの内容を加算器112に
よってインクリメントした値を再びMARTに保持させるた
めのMARTへのストローブ信号110を生成する。つまり論
理積ゲート215からアクティブな信号がデコーダ206に入
力されている間、MARTの内容が1ずつインクリメントさ
れながらアドレスとして制御記憶101にたいして出力さ
れ、デバグ・ルーチンによる処理が続けられる。
デバグ・ルーチンで制御記憶101のアドレスT+1にあ
るリターン命令が実行されたとき、すなわちデコーダ10
3で制御記憶101のアドレスT+1にあるリターン命令が
デコードされると、信号105がアクティブになる。信号1
05の立上がりエッヂにおいてまずフリップ・フロップ21
3に前記インアクティブになっていた比較器211の出力信
号212が記憶される。したがって信号214がインアクティ
ブになるが、信号214の変化はラッチ217によって1クロ
ック遅延されるので、信号218はインアクティブのまま
である。論理積ゲート219において信号105の立上がりエ
ッヂおよびCLK2の立上がりエッヂはインアクティブな信
号218によってマスクされるので、カウンタ210はカウン
ト・ダウンされない。本例では0を出力したままであ
る。1クロック遅延のためのラッチ217はデバグ・ルー
チンからの復帰のときにカウンタ201をカウント・ダウ
ンすることを防ぐために必要である。前述のようにカウ
ンタ201の出力の変化もラッチ210によって1クロック遅
延されるので、アドレスT+1のリターン命令による信
号105の立上がりエッヂにおいて比較器211では信号105
の立上がりエッヂの1クロック前のカウンタ201の出力
とレジスタ121の内容が比較されている。アドレスT+
1のリターン命令によるCLK2同期の信号105の立上がり
エッヂからの1クロックの間、信号105がアクティブ、
カウンタ201が0、論理積ゲート215がインアクティブと
なるので、デコーダ206は第10図のパターンに従って出
力セレクタ108にたいしてMAR0の内容を制御記憶101に出
力させる制御信号を生成する。従ってアドレス信号路10
9にはMAR0に保持されていたアドレスP+1がセレクタ1
08から出力されて制御記憶101に入力される。つまりデ
コーダ206はアドレスT+1のリターン命令による信号1
05がアクティブで、論理積ゲート215がインアクティブ
であることによりデバグ・ルーチンの実行が終了したこ
とを検出して再びトラップを起こし、カウンタ201の値
に従って出力セレクタ108にたいして、該トラップが発
生しなければアドレスNにあったリターン命令により本
来復帰すべきアドレスP+1を保持しているMAR0の内容
をデバグ・ルーチンからの復帰アドレスとして制御記憶
101に出力させることにより、デバグ・ルーチンからの
復帰を行なう。
本発明を実施する際に作成するマイクロ・プログラムの
デバグ・ルーチンは、たとえばマイクロ・プロセッサ10
0内のマイクロ・プログラムによって読むことのできる
レジスタ等の資源の内容をマイクロ・プロセッサ100の
外部メモリの特定のアドレスに書き出すようなプログラ
ムが考えられる。
また本発明によるデバグの方法を簡単に説明する。ここ
ではマイクロ・プロセッサ100はプリフェッチをおこな
わず、1マクロ命令の実行、つまり1マイクロ・プロシ
ージャの実行が終了してから次のマクロ命令のフェッチ
が行なわれるものとする。デバグを行なうときにはマイ
クロ・プログラムのリストとマクロ命令のリストを使用
する。目標とするマイクロ・サブルーチンを含むマクロ
命令がマイクロ・プロセッサ100の外部メモリのどのア
ドレスにあるかを調べ、たとえばマイクロ・プロセッサ
100の外部でアドレス・トラップ法により該マクロ命令
をフェッチするときに本発明により新たに設けられた端
子124をアクティブにするような外部付加回路を設け
る。また該マクロ命令にたいするマイクロ・プロシージ
ャにおいて目標とするマイクロ・サブルーチンが使用す
るマイクロ・アドレス・スタックのレベルを予想して、
前述のように本発明により新たに設けられた端子122に
該マイクロ・アドレス・スタックのレベルを示す情報を
入力する。以上の準備の後マイクロ・プロセッサ100を
リセットしてマクロ・レベルのプログラムを実行する
と、前述のように目標とするマイクロ・サブルーチンか
らのリターン命令実行時にトラップが発生し、マイクロ
・プログラムのデバグ・ルーチンが起動されてマイクロ
・プロセッサ100内部のレジスタ等の資源の内容がマイ
クロ・プロセッサ100の外部メモリの特定のアドレスに
書き出される。該外部メモリの特定のアドレスの内容を
検討することによりデバグを行なう。
第4図,第5図,第6図は本発明の第2の実施例を示す
ブロック図および波形図である。
第4図において第1図との相違点は402,403,406,430,43
1,432である。402は制御記憶101からの出力とマイクロ
・アドレス制御部406からの出力信号の1つの431とを入
力とし、該入力を1.5クロック遅延させるためのラッ
チ、432は信号431がラッチ402によって1.5クロック遅延
させられた信号、403はラッチ402によって1.5クロック
遅延させられた制御記憶101からの出力と信号432とを入
力してデコードするマイクロ命令デコーダである。デコ
ーダ403では、サブルーチンからのリターン・マイクロ
命令のデコードの際に信号432がインアクティブである
ときには信号105をアクティブ、信号430をインアクティ
ブにし、信号432がアクティブであるときには信号105を
インアクティブ、信号430をアクティブにする。
第5図はマイクロ・アドレス制御部406の内部とレジス
タ121、レジスタ121への書込み信号路122、レジスタ121
の出力信号路123との接続関係を示している。第5図に
おいて第2図との相違点は520,521,522,523,530,531,43
0,431である。520は論理積ゲートで信号105およびCLK2
(信号220)を入力とし信号521を出力してカウンタ202
のカウント・ダウンを制御する。522は論理積ゲートで
信号104およびCLK2(信号220)を入力とし信号523を出
力してカウンタ202のカウント・アップを制御する。530
は信号105および信号430を入力とする論理和ゲートで、
フリップ・フロップ213のストローブ信号531を生成す
る。
第6図は本発明を説明するタイミング・チャートであ
る。デバグを行なわないときには、信号124をインアク
ティブに保っておく。デバグを行なう時には、信号124
をアクティブにし、目標のサブルーチンがレジスタ群10
7のなかのどのレジスタを使用するかをレジスタ121に書
込んでおく。たとえば目標のサブルーチンがMAR1を使用
するときにはレジスタ121に1を書込んでおく。MAR1を
使用する目標のサブルーチンはマイクロ・アドレスPに
あったコール命令によって呼出されたものとする。した
がってMAR0には該サブルーチンからのリターン・アドレ
スとしてP+1が保持されている。またフリップ・フロ
ップ213は0を出力しており、したがって論理積ゲート2
15の出力信号431はインアクティブであるとする。
第6図にあるようにMAR1を使用する目標のサブルーチン
がコール命令によって呼出されて処理が始ると、カウン
タ201がカウント・アップされて1を出力するので、該
サブルーチンからの復帰のためのリターン命令が実行さ
れる直前では比較器211ではレジスタ121の内容(1)と
カウンタ201の出力信号203のラッチ210により1クロッ
ク遅延された信号が一致していることになる。従って制
御記憶101のアドレスNにある該サブルーチンからの復
帰のためのリターン命令がデコーダ403でデコードされ
る期間まで、比較器211の出力信号212はアクティブにな
っているが、ストローブ信号531がアクティブになるま
ではフリップ・フロップ213の出力信号214はインアクテ
ィブであるので、論理積ゲート215の出力431はインアク
ティブである。
MAR1を使用する目標のサブルーチンでの処理が終了し、
アドレスNにある該サブルーチンからの復帰のためのリ
ターン命令コードがラッチ402に入力される時に同時に
該ラッチ402にはインアクティブの信号431が入力され、
1.5クロック遅延されてデコーダ403に入力される。した
がって、デコーダ403が制御記憶101のアドレスNにある
リターン命令のデコードすると信号105がアクティブに
なり信号430はインアクティブのままである。信号105の
立上がりエッヂにおいて論理和ゲート530を介して、ま
ずフリップ・フロップ213に前記アクティブになってい
た比較器211の出力信号212が記憶されて信号214はアク
ティブになる。同時にCLK2同期の信号105の立上がりエ
ッヂおよびCLK2の立上がりエッヂが論理積ゲート520に
入力されてカウンタ201がカウント・ダウンされ、カウ
ンタ201は0を出力する。前述のようにカウンタ201の出
力信号203の変化はラッチ210によって1クロック遅延さ
れるので、信号105の立上がりエッヂにおいて比較器211
では信号105の立上がりエッヂの1クロック前のカウン
タ201の出力とレジスタ121の内容が比較されている。1
クロック遅延のためのラッチ210はリターン命令が実行
されたときにレジスタ群107のどのレジスタを使用して
いるときのリターン命令であったかを示しており、トラ
ップを発生させるべき目標のサブルーチンのリターン命
令であったか否かを判別するために必要である。CLK2同
期の信号105の立上がりエッヂからの1クロックの間、
信号105がアクティブ、カウンタ201が0、論理積ゲート
215の出力信号431がアクティブとなるので、デコーダ20
6は第10図のパターンに従って出力セレクタ108にたいし
てMARTの内容を制御記憶101に出力させる制御信号を生
成する。従ってアドレス信号路109にはセレクタ108から
デバグ・ルーチンの先頭アドレスTが出力されて制御記
憶101に入力される。つまりデコーダ206は信号105がア
クティブ、論理積ゲート215の出力信号431がアクティブ
であることで目標のサブルーチンの実行が終了したこと
を検出し、カウンタ201が0を示している(MAR0を指
す)にも拘らず、出力セレクタ108にたいしてMARTの内
容(デバグ・ルーチンの先頭アドレスT)を制御記憶10
1に出力させることによりトラップを起こして、デバグ
・ルーチンを起動する。
制御記憶101のアドレスNにあるリターン命令によるCLK
2同期の信号105の降下エッヂ後は、比較器211にはカウ
ンタ201が0になったことが1クロック遅れで伝達され
るので比較器211の出力信号212がインアクティブになる
が、次にストローブ信号531がアクティブになるまでは
信号214がアクティブ従って論理積ゲート215の出力信号
431がアクティブのままである。デコーダ206は信号105
がインアクティブになっても論理積ゲート215の出力信
号431がアクティブである間、第10図に従ってカウンタ2
01の出力に拘らず出力セレクタ108にたいしてMARTの内
容を制御記憶101に出力させる制御信号111と、信号路10
9に出力されたMARTの内容を加算器112によってインクリ
メントした値を再びMARTに保持させるためのMARTへのス
トローブ信号110を生成する。つまり論理積ゲート215の
出力信号431がアクティブである間、MARTの内容が1ず
つインクリメントされながらアドレスとして制御記憶10
1にたいして出力され、デバグ・ルーチンによる処理が
続けられる。
デバグ・ルーチンでの処理が終了し、アドレスT+1に
ある該デバグ・ルーチンからの復帰のためのリターン命
令コードがラッチ402入力される前に同時に該ラッチ402
にはアクティブの信号431が入力され、1.5クロック遅延
されてデコーダ403に入力される。したがって、デコー
ダ403が制御記憶101のアドレスT+1にあるリターン命
令をデコードすると信号105がインアクティブで信号430
がアクティブになる。信号430の立上がりエッヂにおい
てまずフリップ・フロップ213に前記インアクティブに
なっていた比較器211の出力信号212が記憶されて信号21
4がインアクティブになる。このとき信号104,105はイン
アクティブであるのでカウンタ201は変化しない。前述
のようにカウンタ201の出力の変化もラッチ210によって
1クロック遅延されるので、アドレスT+1のリターン
命令による信号430の立上がりエッヂにおいて比較器211
では信号430の立上がりエッヂの1クロック前のカウン
タ201の出力信号203(0)とレジスタ121の内容(1)
が比較されている。アドレスT+1のリターン命令によ
るCLK2同期の信号430の立上がりエッヂからの1クロッ
クの間、信号105がインアクティブ、信号430がアクティ
ブ、カウンタ201が0、論理積ゲート215の出力信号431
がインアクティブとなるので、デコーダ206は第10図の
パターンに従って出力セレクタ108にたいしてMAR0の内
容を制御記憶101に出力させる制御信号を生成する。従
ってアドレス信号路109にはMAR0に保持されていたアド
レスP+1がセレクタ108から出力されて制御記憶101に
入力される。つまりアドレスT+1のリターン命令コー
ドと論理積ゲート215のアクティブな出力信号431がラッ
チ402に入力されてデコーダ403でデコードされたとき
に、デバグ・ルーチンの実行が終了したことが検出され
再びトラップが発生し、カウンタ201の値(0)に従っ
て出力セレクタ108にたいして、該トラップが発生しな
ければアドレスNにあったリターン命令により本来復帰
すべきアドレスP+1を保持しているMAR0の内容をデバ
グ・ルーチンからの復帰アドレスとして制御記憶101に
出力させることにより、デバグ・ルーチンからの復帰を
行なう。
〔発明の効果〕
以上説明したように本発明は、デバッグ目標のサブルー
チンがサブルーチン・コール命令によって呼び出され、
サブルーチンでの処理が終了してリターン命令によって
元の処理系に復帰するときにトラップを発生させてマイ
クロ・プログラム・レベルのデバッグ・ルーチンを起動
し、デバグ・ルーチンでの処理が終了すると目標のサブ
ルーチンを呼び出した処理系に復帰するようにした。し
たがって、マイクロ・アドレスを直接監視するのではな
く、マイクロ・アドレス・スタックのポインタとなるカ
ウンタの指す値を監視してマイクロ・プログラムの論理
的な一まとまりであるサブルーチンからの復帰時にトラ
ップを発生することにより、トラップ発生のためのハー
ドウエアの増加を最小限に抑えて、かつ効果的なデバグ
を行なうことができるという効果がある。
【図面の簡単な説明】
第1図は本発明の第1の実施例を示すブロック図、第2
図は第1図のマイクロ・アドレス制御部106およびレジ
スタ121の詳細を示すブロック図、第3図は第1図,第
2図の各部波形を示すタイミングチャート、第4図は本
発明の第2の実施例を示すブロック図、第5図は第4図
のマイクロ・アドレス制御部406およびレジスタ121の詳
細を示すブロック図、第6図は第4図,第5図の各部波
形を示すタイミングチャート、第7図,第8図は従来例
を示すブロック図、第9図は第7図,第8図の各部波形
を示すタイミングチャート、第10図,第11図は各部論理
値を示す図である。 100……本発明を実施しているマイクロ・プロセッサ、1
01……制御記憶、102……1.5クロック遅延のためのラッ
チ、103……マイクロ命令デコーダ、104……サブルーチ
ン・コール命令がデコードされた時アクティブになる信
号、105……サブルーチンからのリターン命令がデコー
ドされた時アクティブになる信号、106……マイクロ・
アドレス制御部、107……マイクロ・アドレス・レジス
タ群、108……マイクロ・アドレス出力セレクタ、109…
…マイクロ・アドレス信号路、110……マイクロ・アド
レス・レジスタ群107へのストローブ信号、111……マイ
クロ・アドレス出力セレクタ108への制御信号、112……
マイクロ・アドレスのインクリメント用加算器、113…
…加算器112の出力信号路、114……マイクロ・アドレス
入力セレクタ、115……マイクロ・アドレス入力セレク
タ114への入力信号、116……マイクロ・アドレス入力セ
レクタ114への制御信号、117……マイクロ・アドレス入
力セレクタ114からの出力信号、120……新たに設けられ
たマイクロ・アドレス・レジスタ(MART)、121……新
たに設けられたレジスタ、122……レジスタ121への入力
信号路、123……レジスタ121からの出力信号路、124…
…トラップを行なうか否かを規定する新たに設けられた
制御信号路、201……アップ・ダウン・カウンタ、202…
…マイクロ・プロセッサ100全体のリセット信号、203…
…アップ・ダウン・カウンタ201の出力信号、206……デ
コーダ、207……デコーダ206の出力信号のなかの1系統
でセレクタ108の制御信号となるべき信号、208……CLK2
同期の入力信号をCLK1同期にして出力する0.5クロック
遅延のためのラッチ、211……新たに設けられた比較
器、212……比較器211の出力信号路、213……新たに設
けられたトラップ用フリップ・フロップ、214……フリ
ップ・フロップ213の出力信号路、215……新たに設けら
れた論理積ゲート、216……新たに設けられた論理否定
ゲート、217……新たに設けられた1クロック遅延のた
めのラッチ、218……ラッチ217の出力信号路、219……
新たに設けられた論理積ゲート、220……CLK2信号、221
……論理積ゲート219の出力信号路、222……新たに設け
られた論理積ゲート、402……1.5クロック遅延のための
ラッチ、403……マイクロ命令デコーダ、406……マイク
ロ・アドレス制御部、430……マイクロ命令デコーダで
信号432が1でかつサブルーチンからの復帰マイクロ命
令がデコードされたときにアクティブになる信号、431
……マイクロ・アドレス制御部406からの出力信号、432
……ラッチ402で1.5クロック遅延された信号431、520…
…論理積ゲート、521……論理積ゲート520の出力信号、
522……論理積ゲート、523……論理積ゲート521の出力
信号、530……論理和ゲート、531……論理和ゲート530
の出力信号、700……マイクロ・プロセッサ、701……制
御記憶、702……1.5クロック遅延のためのラッチ、703
……マイクロ命令デコーダ、704……サブルーチン・コ
ール命令がデコードされた時アクティブになる信号、70
5……サブルーチンからのリターン命令がデコードされ
た時アクティブになる信号、706……マイクロ・アドレ
ス制御部、707……マイクロ・アドレス・レジスタ群、7
08……マイクロ・アドレス出力セレクタ、709……マイ
クロ・アドレス信号路、710……マイクロ・アドレス・
レジスタへのストローブ信号、711……マイクロ・アド
レス出力セレクタへの制御信号、712……マイクロ・ア
ドレスのインクリメント用加算器、713……加算器の出
力信号路、714……マイクロ・アドレス入力セレクタ、7
15……マイクロ・アドレス入力セレクタへの入力信号、
716……マイクロ・アドレス入力セレクタへの制御信
号、717……マイクロ・アドレス入力セレクタからの出
力信号、801……アップ・ダウン・カウンタ、802……マ
イクロ・プロセッサ700全体のリセット信号、803……ア
ップ・ダウン・カウンタ801の出力信号、806……デコー
ダ、807……デコーダ806の出力信号のなかの1系統、80
8……CLK2同期の入力信号をCLK1同期にして出力する0.5
クロック遅延のためのラッチ。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】マイクロ・プログラムを格納する制御記憶
    と、前記マイクロ・プログラムのサブルーチンを呼出し
    所定の処理が終了してリターン命令によりこのサブルー
    チンを呼出した元のルーチンへ復帰する際に必要なマイ
    クロ・アドレスを一時的に待避させるレジスタ群からな
    るハードウェア・スタックと、前記マイクロプログラム
    をデコードして得られるサブルーチン・コール信号およ
    びリータン信号にそれぞれ応答して前記スタックのレジ
    スタ群のうちの1つをそれぞれ指定するポインタ値を生
    成するカウンタと、前記ポインタ値と前記リターン信号
    とに応答して前記スタックのレジスタ群の1つを選択し
    て前記制御記憶に供給する制御手段とを備え、前記スタ
    ックの指定するアドレスへ次実行アドレスを強制的に移
    すことにより前記マイクロ命令のトレースを実行するマ
    イクロプロセッサにおけるマイクロ・プログラム制御方
    式において; 予め定められたデバッグ・ルーチンの先頭アドレスが格
    納されかつ前記スタックとは独立したレジスタ手段と、
    デバッグの目標の前記サブルーチンが使用する前記レジ
    スタ群のうちの任意の1つを外部から指定するスタック
    レベル値と前記カウンタの指すポインタ値のラッチ出力
    とを比較器で比較してトラップを発生させるべき前記サ
    ブルーチンからの前記リターン命令であるか否かを監視
    するとともに比較結果が一致したことを検出すると前記
    リターン信号に応答して前記トラップ用の信号を生成す
    るトラップ検出手段とを備え、前記リターン命令の発生
    に伴ない前記サブルーチンを呼び出した元のルーチンへ
    復帰する際に、前記トラップの発生が許可されていれば
    前記トラップ用の信号に応答して、復帰時に使用される
    前記スタックのトップに格納されたマイクロ・アドレス
    値に換えて前記レジスタ手段に格納されている前記デバ
    ッグ・ルーチンの先頭アドレスを前記制御手段により前
    記制御記憶に供給することによって前記制御記憶内の前
    記デバッグ・ルーチンへ制御を移すことを特徴とするマ
    イクロ・プログラム制御方式。
JP62260218A 1987-10-14 1987-10-14 マイクロ・プログラム制御方式 Expired - Lifetime JPH0750444B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62260218A JPH0750444B2 (ja) 1987-10-14 1987-10-14 マイクロ・プログラム制御方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62260218A JPH0750444B2 (ja) 1987-10-14 1987-10-14 マイクロ・プログラム制御方式

Publications (2)

Publication Number Publication Date
JPH01102653A JPH01102653A (ja) 1989-04-20
JPH0750444B2 true JPH0750444B2 (ja) 1995-05-31

Family

ID=17344989

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62260218A Expired - Lifetime JPH0750444B2 (ja) 1987-10-14 1987-10-14 マイクロ・プログラム制御方式

Country Status (1)

Country Link
JP (1) JPH0750444B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5534745A (en) * 1978-09-04 1980-03-11 Hitachi Ltd Microprogram tracer
JPS5552152A (en) * 1978-10-13 1980-04-16 Hitachi Ltd Control system for program address
JPS59123052A (ja) * 1982-12-29 1984-07-16 Fuji Electric Co Ltd 実行トレ−ス方式

Also Published As

Publication number Publication date
JPH01102653A (ja) 1989-04-20

Similar Documents

Publication Publication Date Title
JP3209776B2 (ja) エミュレーション装置とそれに使用するマイクロコントローラ
US4953078A (en) Apparatus and method for multi-threaded program execution in a microcoded data processing system
US5758059A (en) In-circuit emulator in which abrupt and deferred arming and disarming of several events on a microprocessor chip are controlled using a single-input pin
US5079694A (en) Data processing apparatus having a working memory area
JP3260083B2 (ja) デバッグシステム及びデバッグ方法
US5526500A (en) System for operand bypassing to allow a one and one-half cycle cache memory access time for sequential load and branch instructions
EP0435249B1 (en) Pipelined computer with half machine cycle alternating write control for avoiding usage conflicts in general registers
JPH0750444B2 (ja) マイクロ・プログラム制御方式
JP2770420B2 (ja) マイクロプログラム制御方式
JPS6315628B2 (ja)
JP2758624B2 (ja) マイクロプログラムの調速方式
KR100284287B1 (ko) 가변 리셋 어드레스를 가지는 마이크로프로세서
SU1716528A1 (ru) Вычислительное устройство с совмещением операций
JP3001547B1 (ja) インサーキットエミュレータ
US5524123A (en) Method for the computer-controlled generation of pulse interval sequences with periods of repeating pulse intervals
JP2544015B2 (ja) マイクロプログラム処理装置
RU1786486C (ru) Устройство микропрограммного управлени
JPH0561660B2 (ja)
JP2636074B2 (ja) マイクロプロセッサ
US20060224868A1 (en) Branch tracing generator device for a microprocessor and microprocessor equipped with such a device
JPH0776931B2 (ja) 情報処理システム
SU898437A1 (ru) Устройство дл сопр жени процессора с пам тью
JPH0243626A (ja) コンピュータ・プロセッサの実行速度を制御する装置
JPH01274254A (ja) データ処理装置
SU1246100A1 (ru) Устройство дл отладки программ