(57)【特許請求の範囲】
【請求項１】
第１中央処理装置と、
第２中央処理装置と、
前記第１中央処理装置と第２中央処理装置との両方に接続されたバスと、を有し、
前記第１及び第２中央処理装置は、第１動作モードと第２動作モードのいずれかの状態で動作可能であって、前記動作モードを指定する第１情報と、を有し、
前記第１情報に従って一方の中央処理装置が第１動作モードで動作されるときであって、前記一方の中央処理装置は前記バスのバス権を有している場合に、前記第１情報に従って前記第２動作モードで動作される他方の中央処理装置からのバス権要求に対し、前記バスのバス権を与えるか否かを決定する第２情報を有し、
前記第２情報が非活性状態時、前記第２動作モードで動作される前記他方の中央処理装置からのバス権要求を無効化し、前記一方の中央処理装置にバス権を付与する制御を行い、
前記第１中央処理装置及び第２中央処理装置は前記バスを介してシンクロナスＤＲＡＭに対しアクセス可能であって、
前記第１動作モードで動作される一方の中央処理装置は、前記第２情報を非活性状態として前記シンクロナスＤＲＡＭが有するモードレジスタの初期設定を行うことを特徴とする半導体処理装置。
【請求項２】
前記第１動作モードで動作される一方の中央処理装置による前記モードレジスタの初期設定後、前記第２情報は活性状態へ設定され、前記動作モードに関わらず前記第１もしくは第２中央処理装置からのバス権要求によってバス権を付与する制御が行われることを特徴とする請求項１記載の半導体処理装置。
【請求項３】
前記第１及び第２中央処理装置は、前記第１情報と前記第２情報とをそれぞれ設定されるレジスタを有し、
前記第１情報が設定されるレジスタは、リセット信号の入力に応じて前記第１動作モードもしくは第２動作モードの何れかが設定され、
前記第１動作モードが設定されたレジスタを有する中央処理装置は、前記第２情報が設定されるレジスタを非活性状態に設定し、前記モードレジスタの初期設定を行うことを特徴とする請求項１記載の半導体処理装置。
【請求項４】
前記モードレジスタの初期設定完了後、前記第２情報が設定されるレジスタを活性状態に設定し、前記第１情報に設定される動作モードに関わらず前記第１もしくは第２中央処理装置からのバス権要求によってバス権を付与する制御が行われることを特徴とする請求項３記載の半導体処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部に対するバス権の獲得と解放をハンドシェークで制御する機能を備えたマイクロプロセッサに係り、特にバス権の解放に対して自由度を持たせる技術に関し、例えば、シンクロナスＤＲＡＭのような初期化を必要とする共有資源が共通バスに接続されたマルチプロセッサシステムにおいて、前記共有資源が初期化される前に不当にアクセスされるのを禁止するのに適用して有効な技術に関するものである。
【０００２】
【従来の技術】
マルチプロセッサシステムにおいて夫々のマイクロプロセッサが共有資源をアクセスするためのバス占有権の移動に関しては、一つのマイクロプロセッサがマスタプロセッサとされ、初期的にバス権を獲得する。残りのマイクロプロセッサはスレーブプロセッサとされ、必要に応じてマスタプロセッサからバス権を獲得する。このとき、スレーブプロセッサのバス権要求の優先度はマスタ側のバス権よりも高く設定されている。このため、マスタプロセッサは、スレーブプロセッサからバス権の要求があれば、マスタプロセッサのバスサイクル終了後直ちに、バス権を解放するようになっている。例えばシステムリセットが行われると、マスタプロセッサが初期的にバス権を獲得する。マスタプロセッサは、スレーブプロセッサから供給されるバス権要求信号がアサートされると、マスタプロセッサのバスサイクル終了後直ちに、バス権を解放し、バス権承認信号をアサートする。スレーブプロセッサは、バス権承認信号がアサートされることによってバス権の解放を認識して、バスサイクルを起動する。スレーブプロセッサは、バス権を獲得しているとき、バス承認信号がネゲートされることによって、マスタプロセッサからのバス権要求を認識し、スレーブプロセッサのバスサイクル終了後、バス権を解放して、バス権要求信号をネゲートする。これによってマスタプロセッサは再度バス権を獲得する。
【０００３】
尚、マルチプロセッサシステムについて記載された文献の例としては昭和６０年１２月２５日に株式会社オーム社発行の「マイクロコンピュータハンドブック」第６７４頁及び第６７５頁がある。
【０００４】
【発明が解決しようとする課題】
上述のハンドシェークによるバス権の獲得と解放の制御では、マイクロプロセッサはバス権の解放に関して自由度を持たない。マスタプロセッサはスレーブプロセッサからバス権解放要求があれば即座にバス権を解放しなければならず、スレーブプロセッサはマスタマスタプロセッサからのバス権解放の承認が撤回されると即座にバス権をマスタプロセッサに解放しなければならない。したがって、マイクロプロセッサはスレーブ又はマスタの何れであっても、所定の処理を完了するまでの間、バスを占有し続けることができない場合がある。すなわち、バス権の解放に関し自由度がない。このため、データ処理の高速化、データ処理の信頼性という観点から、バスを介してあるまとまった処理を一連に行わなければならないようなシステム用途では支障があった。
【０００５】
例えば、上記のようなマルチプロセッサシステムにおいて、共通バスに接続された共有資源は、動作に当たって初期化を要するものと要しないものがある。初期化を必要としない共有資源としてはＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ（Dynamic Random Access Memory）などがある。初期化を必要とする共有資源には、シンクロナスＤＲＡＭなどがある。シンクロナスＤＲＡＭにおいては、バースト長やレイテンシ等が初期設定されて始めて正常動作可能にされる。
【０００６】
初期化を要しない共有資源に関しては、マスタプロセッサとスレーブプロセッサは夫々の動作プログラムに従ってハンドシェークでバス権の獲得及び解放を行えば、双方のプロセッサは共に当該共有資源を正常にアクセスできる。
【０００７】
これに対し、複数のプロセッサが初期化を要する資源を共有する場合、スレーブプロセッサは、マスタプロセッサがそのような共有資源の初期設定を完了する前であっても、マスタプロセッサにバス権の要求を発行する事ができる。マスタプロセッサは、スレーブプロセッサからのバス権の要求に対して直ちにバス権を解放することになり、これによってスレーブプロセッサが初期化未完了の共有資源をアクセスすると、その正常動作を保証することはできない。
【０００８】
この問題には、ハンドシェークによるバス権の獲得と解放に対して自由度を持たせることが一つの解決策になる、ということが本発明者によって明らかにされた。従来のマクロプロセッサはその解決策が考慮されていなかった。その場合には、マルチプロセッサシステム上、マイクロプロセッサの外部に特別な回路を用意して対処することが必要になると考えられる。公知ではないが、例えば、共有資源の初期化をマスタプロセッサが行う場合、システムリセットに際して、スレーブプロセッサに対するリセット信号のネゲートをマスタプロセッサによる初期化完了後に行うようにする外部回路を設けて対処することができる。また、初期化を要する共有資源に対する初期化完了フラグを設け、マスタプロセッサは初期化完了後にそのフラグをセットし、スレーブプロセッサはそのフラグのセット状態を確認してからアクセスを開始する様にして対処出来る。或いは、リセット直後にスレーブプロセッサを待機状態に制御し、マスタプロセッサによる初期化動作完了後に、スレーブプロセッサの待機状態を解除するための割り込み信号の発生回路を設けて対処したりすることができると考えられる。
【０００９】
しかしながら、何れの場合にも、システム上で特別な外部回路を構成しなければならず、また、ソフトウェア的にも処理が複雑化することが予想される。
【００１０】
本発明の目的は、ハンドシェークによるバス権の獲得と解放に対して自由度を持たせることができるマイクロプロセッサを提供することにある。特にそのような自由度はＣＰＵの動作プログラムで制御できるようにする。
【００１１】
本発明の別の目的は、外部周辺回路の初期化を担うときその初期化を完了するまで外部からのバス権要求を無視できるマイクロプロセッサを提供することにある。
【００１２】
本発明の更に別の目的は、初期化を要する共有資源の初期化完了前に当該共有資源が任意にアクセスされて誤動作を生ずる虞を排除することができ、しかもそのためにシステム上で特別な外部回路を構成したり、ソフトウェア的にも処理を複雑化しなくても済むようにできるマルチプロセッサシステムを提供することにある。
【００１３】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１４】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１５】
ハンドシェークによるバス権の獲得と解放に関する自由度をマイクロプロセッサに持たせるという観点による第1のマイクロプロセッサは、フェッチした命令を実行するＣＰＵを半導体基板に含み、このマイクロプロセッサの動作モードが初期的にバス権を有するマスタモードか、必要に応じてバス権を獲得するスレーブモードかを決定するためのマスタ・スレーブモード制御情報が設定される第1の記憶手段と、前記ＣＰＵによって書き換え可能にバス権解放許可制御情報が初期設定される第2の記憶手段と、前記マスタ・スレーブモード制御情報によってマスタモードが設定された状態において、前記第2の記憶手段に設定された前記バス権解放許可制御情報が非活性状態のとき、当該バス権解放許可制御情報が活性状態に反転されるまで外部からのバス権解放要求信号のアサートによるバス権解放要求を無効化するバス調停手段と有する。
【００１６】
このマイクロプロセッサがマルチプロセッサシステムにおけるマスタプロセッサに割り当てられるとき、システムリセット等によってバス権解放許可制御情報が非活性状態に初期化されると、バス調停手段は外部からのバス権解放要求信号のアサートによるバス権解放要求を無効化するから、外部バスアクセスを伴う所要の処理を完了するまで、バス権解放許可制御情報を非活性状態に維持することによって、外部からのバス解放要求とは無関係にバス権を維持することができる。即ち、マイクロプロセッサは、ハンドシェークによるバス権の獲得と解放に対して自由度を持つことができる。しかも、バス権解放許可制御情報が格納される第２の記憶手段は内蔵ＣＰＵがアクセスして書き換え可能であるから、そのような自由度はＣＰＵの動作プログラムで制御できる。
【００１７】
バス権を維持する期間において、マイクロプロセッサは例えば、マルチプロセッサシステムにおいて初期化動作を要する共有資源としての周辺回路の初期化を完了する。完了後、ＣＰＵがバス権解放許可制御情報を活性状態に反転することにより、バス調停手段は外部からのバス権解放要求信号のアサートに応じてバス権を解放する。このように、前記マイクロプロセッサは、外部周辺回路の初期化を担うときその初期化を完了するまで外部からのバス権要求を無視できるから、初期化を要する共有資源の初期化完了前に当該共有資源が任意にアクセスされて誤動作を生ずる虞を排除することができ、しかもそのためにシステム上で特別な外部回路を構成したり、ソフトウェア的にも複雑な処理を行わなくても済む。
【００１８】
マスタモードが設定されるマイクロプロセッサのリセット動作直後におけるそのような初期化動作を考慮すると、マイクロプロセッサの使い勝手の点において、前記第1の記憶手段はマイクロプロセッサのリセット動作に応じてマスタ・スレーブモード制御情報が初期設定され、前記第2の記憶手段は、マスタ・スレーブ制御情報によるマスタモードの設定に呼応して、非活性状態のバス権解放許可制御情報が初期設定されるものであることが望ましい。
【００１９】
ハンドシェークによるバス権の獲得と解放に関する自由度をマイクロプロセッサに持たせるという観点による別の第2のマイクロプロセッサは、スレーブモードが設定された状態において、前記第2の記憶手段に設定された前記バス権解放許可制御情報が活性状態のとき、当該バス権解放許可制御情報が非活性状態に反転されるまで外部からのバス権解放承認信号のネゲートによるバス権解放要求を無効化するバス調停手段を採用する。
【００２０】
このマイクロプロセッサによれば、当該マイクロプロセッサがマルチプロセッサシステムにおけるスレーブプロセッサに割り当てられるとき、そのバス調停手段はマスタプロセッサにバス権解放要求信号をアサートすると、それに応答するバス権解放承認信号がマスタプロセッサからアサートされることによってバス権を獲得できる。このスレーブプロセッサはシステムリセット等によってバス権解放許可制御情報は活性状態に初期化されているから、前記の様にして一旦バス権を獲得したとき、そのバス調停手段は外部（マスタプロセッサ）からのバス権解放承認信号のネゲートによるバス権解放要求を無効化でき、外部バスアクセスを伴う所要の処理を完了するまで、バス権解放許可制御情報を活性状態に維持することによって、マスタプロセッサからのバス承認信号のネゲート状態とは無関係にバス権を維持することができる。即ち、このマイクロプロセッサは、ハンドシェークによるバス権の獲得と解放に対して自由度を持つことができる。しかも、バス権解放許可制御情報が格納される第1の記憶手段は内蔵ＣＰＵがアクセスして書き換え可能であるから、そのような自由度はＣＰＵの動作プログラムで制御できる。
【００２１】
スレーブモードが設定されるマイクロプロセッサのリセット動作直後においてもマスタプロセッサからバス権を獲得して一定期間バスアクセスを伴った初期化動作が必要になる場合に対処することを考慮すると、マイクロプロセッサの使い勝手の点において、前記第1の記憶手段はマイクロプロセッサのリセット動作に応じてマスタ・スレーブモード制御情報が初期設定され、前記第2の記憶手段はマスタ・スレーブ制御情報によるスレーブモードの設定に呼応して活性状態のバス権解放許可制御情報が初期設定されるものであることが望ましい。
【００２２】
ハンドシェークによるバス権の獲得と解放に関する自由度をマイクロプロセッサに持たせるという観点による更に別の第3のマイクロプロセッサは、上記第1のマイクロプロセッサが有するバス調停手段と第2のマイクロプロセッサが有するバス調停手段の双方を備えるものである。そのようなマイクロプロセッサは、マスタ又はスレーブの何れに利用されても、バス権の獲得と解放に関する自由度を持つことができる。
【００２３】
【発明の実施の形態】
〔マイクロプロセッサ〕
図１には本発明の一例に係るマイクロプロセッサのブロック図が示される。同図に示されるマイクロプロセッサ１は、３２ビットＲＩＳＣ(Reduced Instruction Set Computer)アーキテクチャを有し、１６ビット固定長命令を実行する。
【００２４】
このマイクロプロセッサ１は、浮動小数点ユニット２を有する。さらに、マイクロプロセッサ１は中央処理装置（ＣＰＵ）３を有し、このＣＰＵ３は整数を処理する能力を持つ整数ユニットとされる。前記ＣＰＵ３は３２ビットデータバス４を介して前記浮動小数点ユニット２に結合されている。ＣＰＵ３及び浮動小数点ユニット２は命令バス５を介して命令キャッシュユニット６から命令を取り込む。命令アドレスはＣＰＵ３から命令キャッシュユニット６に与えられる。データキャッシュユニット７は、前記データバス４に接続され、データアドレスバス８を介してＣＰＵ３からデータアドレスが供給される。前記データキャッシュユニット７及び命令キャッシュユニット６は、夫々図示を省略するキャッシュコントローラ及びキャッシュメモリを備えている。前記命令キャッシュユニット６及びデータキャッシュユニット７はデータ信号やコントロール信号を含むキャッシュバス１３を介してバスコントローラ９に接続される。命令キャッシュユニット６におけるキャッシュミス等に起因する外部アクセスのための命令アドレスは前記バスコントローラ９に与えられる。また、データキャッシュユニット７におけるキャッシュミス等に起因する外部アクセスのためのデータアドレスは前記バスコントローラ９に与えられる。バスコントローラ９はそれら命令アドレス又はデータアドレスに従って、代表的に図示されたアドレス出力端子３１に結合されたアドレスバス３３及びデータ入出力端子３０に結合されたデータバス３２を介して外部メモリなどをアクセスするための外部バスサイクルを起動する。また、バスコントローラ９にはタイマやシリアルコミュニケーションインタフェースコントローラ等の周辺回路１０が周辺バス１１を介して接続されている。図１に示されるマイクロプロセッサは、単結晶シリコンのような１個の半導体基板に形成されている。
【００２５】
前記浮動小数点ユニット（以下単にＦＰＵとも称する）２は浮動小数点処理のためにメモリからデータ又は命令を要求することになる。前記ＦＰＵ２は、データキャッシュユニット７のキャッシュメモリにデータをストアし又は当該キャッシュメモリからデータを獲得するためのメモリアドレシング能力を持っていない。これは、ＦＰＵ２のメモリ・アドレシング回路の必要性を取り除くことによってチップ面積を節約するためである。それに代えて、ＣＰＵ３はＦＰＵ２に代わってキャッシュメモリなどをアドレシングする機能を有する。したがって、ＦＰＵ２若しくは浮動小数点命令は、ＣＰＵ３と同様の強力なアドレシングモードをサポートする必要はなく、その機能を全てＣＰＵ３が負担する。ＣＰＵ３はＦＰＵ２のためにメモリからデータのフェッチを行うだけでなく、ＣＰＵ３はまた、ＦＰＵ２のために浮動小数点命令を含む全ての命令をメモリからフェッチする。命令はＣＰＵ３とＦＰＵ２の双方に取り込まれてデコードされる。ＣＰＵ３は、デコードした命令がＣＰＵ命令である場合にはそれによって指示される整数処理を実行する。また、ＣＰＵ３は、デコードした命令がＦＰＵ命令である場合には、ＦＰＵ２に代わって実行すべきアドレシング処理などを行う。ＦＰＵ２は、デコードした命令がＦＰＵ命令である場合にはそれによって指示される浮動小数点処理を実行する。また、ＦＰＵ２は、デコードした命令がＣＰＵ命令である場合にはその命令を無視する。
【００２６】
マイクロプロセッサ１は、当該マイクロプロセッサ１の動作モードが初期的にバス権を有するマスタモードか、必要に応じてバス権を獲得するスレーブモードかを決定するためのマスタ・スレーブモード制御情報ＭＳＭＤが設定されるレジスタ２２を有する。マスタ・スレーブモード制御情報ＭＳＭＤはモード信号ＭＤの状態によって決定される。モード信号ＭＤはリセット信号ＲＥＳＥＴに所定の変化が与えられてリセット動作が指示されたとき有意とされ、リセット動作の一環として、マスタモードかスレーブモードかが決定される。図１において３４はモード信号ＭＤの入力端子、３５はリセット信号ＲＥＳＥＴの入力端子である。
【００２７】
図１に示されるマイクロプロセッサ１はバス権の獲得と解放をハンドシェークで制御する機能を備える。そのためにバス調停回路２０を有する。バス調停回路２０は、バス権解放要求信号ＢＲＥＱのインタフェース端子３２とバス権解放承認信号ＢＡＣＫのインタフェース端子３３に結合されている。
【００２８】
マスタモードにおいてバス調停回路２０は、外部からバス権解放要求信号ＢＲＥＱが供給され、外部にバス権解放承認信号ＢＡＣＫを出力する。このときバス調停回路２０は、バス権解放要求信号ＢＲＥＱがアサートされると、現在実行中のバスサイクルを完了させた後にバス権を解放し、バス権解放承認信号ＢＡＣＫをアサートする。バス権を獲得する場合には、バス権解放承認信号ＢＡＣＫをネゲートして外部にバス権解放を要求し、これに応答して外部から返されるバス権解放要求信号ＢＲＥＱがネゲートされるのを待ってバス権を獲得する。
【００２９】
スレーブモードにおいてバス調停回路２０は、外部からバス権解放承認信号ＢＡＣＫが供給され、外部にバス権解放要求信号ＢＲＥＱを出力する。このときバス調停回路２０は、バス権を獲得する場合にはバス権解放要求信号ＢＲＥＱを外部にアサートし、これに応答して外部から返されるバス権解放承認信号ＢＡＣＫがアサートされるのを待ってバス権を獲得することができる。バス権解放承認信号ＢＡＣＫがネゲートされると、現在実行中のバスサイクルを完了させた後にバス権を解放し、バス権解放要求信号ＢＲＥＱをネゲートする。
【００３０】
バス権解放状態においてバスコントローラ９は外部アドレスバス３３に接続される出力端子３１と、外部データバス３２に結合されるデータ入出力端子３０とを夫々高出力インピーダンス状態に制御する。
【００３１】
特にマイクロプロセッサ１は、前記信号ＢＲＥＱ，ＢＡＣＫによるバス権の獲得及び解放に関するハンドシェーク制御に自由度を持たせるために、バス権解放許可制御情報ＢＲＥＱＥＮを格納するレジスタ２１を有する。このレジスタ２１はＣＰＵ３によってアクセス可能にされたコントロールレジスタの一種である。
【００３２】
マスタモードにおいて前記バス調停回路２０は、前記バス権解放許可制御情報ＢＲＥＱＥＮが非活性状態にされているとき、前記バス権解放要求信号ＢＲＥＱのアサートによるバス権解放要求を無効化する。即ち、このマイクロプロセッサ１がマルチプロセッサシステムにおけるマスタプロセッサに割り当てられるとき、バス権解放許可制御情報ＢＲＥＱＥＮが非活性状態に初期化されると、バス調停回路２０は外部からのバス権解放要求信号ＢＲＥＱのアサートによるバス権解放要求を無効化する。したがって、マスタモードが設定されたマイクロプロセッサ１は、外部バスアクセスを伴う所要の処理を完了するまで、バス権解放許可制御情報ＢＲＥＱＥＮを非活性状態に維持することによって、外部からのバス権解放要求信号ＢＲＥＱのアサート状態とは無関係にバス権を維持することができる。即ち、マイクロプロセッサ１は、ハンドシェークによるバス権の獲得と解放に対して自由度を持つことができる。しかも、バス権解放許可制御情報ＢＲＥＱＥＮが格納されるレジスタ２１は内蔵ＣＰＵ３がアクセスして書き換え可能であるから、そのような自由度はＣＰＵ３の動作プログラムで制御できる。
【００３３】
スレーブモードにおいて前記バス調停回路２０は、前記バス権解放許可制御情報ＢＲＥＱＥＮが活性状態にされているとき、前記バス権解放承認信号ＢＡＣＫのネゲートによるバス権解放要求を無効化する。即ち、このマイクロプロセッサ１がマルチプロセッサシステムにおけるスレーブプロセッサに割り当てられるとき、そのバス調停回路２０はマスタプロセッサにバス権解放要求信号ＢＲＥＱをアサートすると、それに応答するバス権解放承認信号ＢＡＣＫがマスタプロセッサからアサートされることによってバス権を獲得できる。このスレーブモードが設定されたマイクロプロセッサ１においてバス権解放許可制御情報ＢＲＥＱＥＮが活性状態にされていると、前記の様にして一旦バス権を獲得したとき、そのバス調停回路２０が外部（マスタプロセッサ）からのバス権解放承認信号ＢＡＣＫのネゲートによるバス権解放要求を無効化できる。これによって、当該マイクロプロセッサ１は、外部バスアクセスを伴う所要の処理を完了するまで、バス権解放許可制御情報ＢＲＥＱＥＮを活性状態に維持することによって、マスタプロセッサからのバス権解放承認信号ＢＡＣＫのネゲート状態とは無関係にバス権を維持することができる。したがって、このマイクロプロセッサ１は、スレーブモードにおいても、ハンドシェークによるバス権の獲得と解放に対して自由度を持つことができる。しかも、バス権解放許可制御情報ＢＲＥＱＥＮが格納されるレジスタ２１は内蔵ＣＰＵ３がアクセスして書き換え可能であるから、そのような自由度はＣＰＵ３の動作プログラムで制御できる。
【００３４】
特にこの例では、リセット動作で決定されるマイクロプロセッサ１の動作モードがマスタモードかスレーブモードかに応じて、前記バス権解放許可制御情報ＢＲＥＱＥＮがレジスタ２１に初期設定される。即ち、リセット動作において前記レジスタ２２に設定されるマスタ・スレーブモード制御情報ＭＳＭＤがマスタモードを示す場合、レジスタ２１にはバス権解放許可制御情報ＢＲＥＱＥＮが非活性状態に初期設定される。したがって、マスタモードが設定されるマイクロプロセッサ１は、リセット直後、バス権解放許可制御情報ＢＲＥＱＥＮを活性状態に書き換えるまで、スレーブプロセッサにバス権を解放することなくバスアクセスを伴う一定の処理を完結させることができる。そのような処理としては、具体例については後述するが、マルチプロセッサシステムの共有資源等に対する全体的な初期設定動作であり、初期設定動作が完了される前に、スレーブプロセッサが共有資源をアクセスして誤動作するような事態を簡単に防止することができる。
【００３５】
また、リセット動作において前記レジスタ２２に設定されるマスタ・スレーブモード制御情報ＭＳＭＤがスレーブモードを示す場合、レジスタ２１にはバス権解放許可制御情報ＢＲＥＱＥＮが活性状態に初期設定される。したがって、スレーブモードが設定されるマイクロプロセッサ１は、リセット直後、マスタプロセッサから一旦バス権を獲得した後は、バス権解放許可制御情報ＢＲＥＱＥＮを非活性状態に書き換えるまで、マスタプロセッサにバス権を解放することなくバスアクセスを伴う一定の処理を完結させることができる。
【００３６】
〔マルチプロセッサシステム〕
図２には図１に示されるマイクロプロセッサを2個用いたマルチプロセッサシステムのブロック図が示される。図２においてマスタプロセッサ１ｍはマスタモードが設定されるマイクロプロセッサ1であり、スレーブプロセッサ１ｓはスレーブモードが設定されるマイクロプロセッサ１である。図２において４０で示されるものはモード信号ＭＤｍ，ＭＤｓの発生回路である。ＭＤｍはマスタプロセッサ１ｍにマスタモードを設定するためのモード信号であり、ＭＤｓはスレーブプロセッサ１ｓにスレーブモードを設定するためのモード信号である。モード信号発生回路４０は例えばプルアップ回路及びプルダウン回路によって簡単に構成されている。２１ｍ，２２ｍはマスタプロセッサ１ｍにおいて前記バス権解放許可制御情報ＢＲＥＱＥＮ，マスタ・スレーブモード制御情報ＭＳＭＤが設定される前記レジスタ２１，２２である。２１ｓ，２２ｓはスレーブプロセッサ１ｓにおいて前記バス権解放許可制御情報ＢＲＥＱＥＮ，マスタ・スレーブモード制御情報ＭＳＭＤが設定される前記レジスタ２１，２２である。２０ｍはマスタプロセッサ１ｍのバス調停回路２０、２０ｓはスレーブプロセッサ１ｓのバス調停回路２０である。マスタプロセッサ１ｍのバス調停回路２０ｍは、バス権解放要求信号ＢＲＥＱを入力し、バス権解放承認信号ＢＡＣＫを出力する。スレーブプロセッサ１ｓのバス調停回路２０ｓはバス権解放要求信号ＢＲＥＱを出力し、バス権解放承認信号ＢＡＣＫを入力する。
【００３７】
図２において４４で示されるものは共通バスとしてのアドレスバス３３、データバス３２及び図示を省略するコントロールバスに結合されたシンクロナスＤＲＡＭである。このシンクロナスＤＲＡＭ４４は双方のマイクロプロセッサ１ｍ，１ｓの共有資源とされ、例えば、ワーク領域若しくはデータの一次記憶領域として利用されるメインメモリである。
【００３８】
図２において４２，４３はマスタプロセッサ１ｍのローカルアドレスバス，ローカルデータバスであり、そこには、ブートメモリ４１が接続されている。ブートメモリ４１は、図２に示されるマルチプロセッサシステムを初期設定するための初期化プログラムが格納され、その初期化プログラムには、前記シンクロナスＤＲＡＭ４４を初期設置するための初期化プログラムも含まれている。例えばシンクロナスＤＲＡＭ４４は、バースト長やバーストタイプ、ＣＡＳレイテンシなどが設定されるモードレジスタを含み、ブートメモリ４１の初期化プログラムはそのようなモードレジスタの初期設定を行うための動作プログラムである。図２のマルチプロセッサシステムに最適な初期設定が行われないままシンクロナスＤＲＡＭ４４のメモリセルがアクセスされる場合には誤動作若しくはデータエラーを生ずる場合もある。これを考慮すれば、システムリセット後、スレーブプロセッサ１ｓは、マスタプロセッサ１ｍが初期化動作を完了させた後にシンクロナスＤＲＡＭ４４をアクセスすることが望ましい。
【００３９】
図３にはリセットからその直後におけるマスタプロセッサ１ｍの動作フローチャート、図４にはリセットからその直後におけるスレーブプロセッサ１ｓの動作フローチャートが示される。
【００４０】
リセット信号が入力されると、マスタプロセッサ１ｍはモード信号ＭＤｍに従ってマスタモードを指示するマスタ・スレーブ制御情報ＭＳＭＤがレジスタ２２ｍに初期設定され、且つ、非活性状態のバス権解放許可制御情報ＢＲＥＱＥＮがレジスタ２１ｍに初期設定される（Ｍ１）。これによってマスタプロセッサ１ｍにはマスタモードが設定され、且つバス調停回路２０ｍは、バス権解放許可制御情報ＢＲＥＱＥＮが活性状態に書き換えられるまで、バス権解放要求信号ＢＲＥＱのアサートによるバス権解放要求を無視する。その後、マスタプロセッサ１ｍはブートメモリ４１をアクセスしてシンクロナスＤＲＡＭ４４に代表される共有資源の初期設定を行う（Ｍ２，Ｍ３）。
【００４１】
一方スレーブプロセッサ１ｓは、リセット信号が入力されると、モード信号ＭＤｓに従ってスレーブモードを指示するマスタ・スレーブ制御情報ＭＳＭＤがレジスタ２２ｓに初期設定され、且つ、活性状態のバス権解放許可制御信号ＢＲＥＱＥＮがレジスタ２１ｓに初期設定される（Ｓ１）。これによってスレーブプロセッサ１ｓにはスレーブモードが設定され、且つバス調停回路２０ｓは、バス権解放許可制御情報ＢＲＥＱＥＮが非活性状態に書き換えられるまで、バス権解放承認信号ＢＲＥＱのネゲートによるバス権解放要求を無視する。この状態はスレーブプロセッサ１ｓがバス権を獲得した場合に実効がある。例えばスレーブプロセッサ１ｓはリセット後、シンクロナスＤＲＡＭ４４をアクセスするためにマスタプロセッサ１ｍに対してバス権解放要求信号ＢＲＥＱをアサートし（Ｓ２）、マスタプロセッサ１ｍからのバス権解放承認信号ＢＡＣＫがアサートされるのを待つ（Ｓ３）。
【００４２】
マスタプロセッサ１ｍが共有資源の初期化を完了すると、マスタプロセッサ１ｍのＣＰＵはバス権解放許可制御情報ＢＲＥＱＥＮを活性状態に書き換える（Ｍ４）。そして、マスタプロセッサ１ｍは、スレーブプロセッサ１ｓからのバス権解放要求信号ＢＲＥＱがアサートされていることを検出すると（Ｍ５）、バス権解放承認信号ＢＡＣＫをアサートして、バス権を解放する。
【００４３】
これによって、スレーブプロセッサ１ｓはステップＳ３にてバス権解放承認信号ＢＡＣＫのアサートを検出することによって，バス権を獲得し、シンクロナスＤＲＡＭ４４をアクセスすることができる。このとき、既にシンクロナスＤＲＡＭ４４の初期化は完了されているので、スレーブプロセッサ１ｓによるアクセスによって誤動作を生じない。
【００４４】
このとき、スレーブプロセッサ１ｓのバス権解放許可制御情報ＢＲＥＱＥＮは活性状態にされているので、スレーブプロセッサ１ｓのＣＰＵがその情報を反転するまで、バス調停回路２０ｓはバス権解放承認信号ＢＡＣＫのネゲートによるマスタプロセッサ１ｍからのバス権解放要求を無視して、シンクロナスＤＲＡＭ４４のアクセスを継続することができる。
【００４５】
図５には図１のマイクロプロセッサ１をマスタプロセッサ1mとし、スレーブプロセッサとして別のマイクロプロセッサ５０を用いたマルチプロセッサシステムのブロック図が示される。マイクロプロセッサ５０にもバス調停回路５１を有する。このバス調停回路５１は、バス権解放許可制御情報ＢＲＥＱＥＮに従った制御機能を有しない点が前記バス調停回路２０と相違している。マイクロプロセッサ５０は、バス権解放要求信号ＢＲＥＱを出力し、バス権解放承認信号ＢＡＣＫを入力することによってスレーブプロセッサとして動作される。このようなシステム構成においても、マスタプロセッサ１ｍは前記同様に、バス権の獲得と解放に自由度があるから、シンクロナスＤＲＡＭに対する初期化を完了するまでスレーブプロセッサ５０にバス権を解放しなくても済む。
【００４６】
図６には図１のマイクロプロセッサ１をスレーブプロセッサ１ｓとし、マスタプロセッサとして別のマイクロプロセッサ５０を用いたマルチプロセッサシステムのブロック図が示される。マイクロプロセッサ５０にもバス調停回路５１を有する。このバス調停回路５１は、バス権解放許可制御情報ＢＲＥＱＥＮに従った制御機能を有しない点が前記バス調停回路２０と相違している。マイクロプロセッサ５０は、バス権解放要求信号ＢＲＥＱを入力し、バス権解放承認信号ＢＡＣＫを出力することによってマスタプロセッサとして動作される。このようなシステム構成においても、スレーブプロセッサ１ｓは前記同様に、バス権の獲得と解放に自由度があるから、マスタプロセッサ５０からのバス権解放用要求を一定期間無視して、バスアクセスを伴い一連の処理を連続して実行出来る自由度を得ることができる。図６の例では、共通バス３２，３３には初期化を要しないＤＲＡＭ５２が共有資源の一例として図示されている。
【００４７】
図７には更に別のマイクロプロプロセッサを用いたマルチプロセッサシステムの一例が示される。同図に示されるマイクロプロセッサ６０は、フェッチした命令を実行するＣＰＵ６１を半導体基板に含み、このマイクロプロセッサの動作モードが初期的にバス権を有するマスタモードか、必要に応じてバス権を獲得するスレーブモードかを決定するためのマスタ・スレーブモード制御情報ＭＳＭＤが設定されるレジスタ６２と、前記レジスタ６２に対するマスタ・スレーブモード制御情報ＭＳＭＤをリセット動作時に初期的に決定するためのモード信号ＭＤの入力端子と、バス調停回路６３とを有する。バス調停回路６３は、バス権解放許可制御情報ＢＲＥＱＥＮによる制御機能を除いた、ハンドシェークによるバス権要求と解放の制御機能を有する。更に、バス調停回路６３は、前記レジスタ６２に初期的に設定されるマスタ・スレーブモード制御情報ＭＳＭＤがマスタモードを示す場合には、リセット後にＣＰＵの動作プログラムに従って１回だけ外部へのバス権解放承認信号にハイレベル、ローレベル、ハイレベルのような一連の変化を生じさせ、また、前記レジスタ６２に初期的に設定されるマスタ・スレーブモード制御情報ＭＳＭＤがスレーブモードを示す場合には、リセット後、外部からのバス権承認信号ＢＡＣＫが前記ハイレベル、ローレベル、ハイレベルのような一連の変化を生じたことを検出して初めて、バス権要求信号ＢＲＥＱによるバス権の要求が可能になるという機能を備えている。マスタモードが設定されたマイクロプロセッサ６０（マスタプロセッサ）は、シンクロナスＤＲＡＭ４４のような初期化を要する共有資源の初期化を完了するまで、スレーブモードが設定されたマイクロプロセッサ６０（スレーブプロセッサ）にバス権を解放しない自由度を得ることができる。
【００４８】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００４９】
例えば、バス権解放許可制御情報ＢＲＥＱＥＮやマスタ・スレーブモード制御情報ＭＳＭＤを格納するレジスタ２１，２２はバスコントローラに内蔵されることに限定されず、その配置はマイクロプロセッサのどこでもよい。また、上記実施例ではモード信号やリセット信号がバスコントローラに直接入力されてレジスタ２１，２２を初期設定するような図面を示したが、それら信号は、マイクロプロセッサのモード制御ロジックに供給され、そこで生成された内部制御信号によってレジスタ２１，２２の初期設定を行うようにすることも可能である。また、マイクロプロセッサの内蔵機能モジュールやその接続配置構成は図１の例に限定されず、適宜変更可能である。また、マイクロプロセッサにおけるバス権獲得及び解放に対する自由度は、図１のマイクロプロセッサ１ではマスタモードとスレーブモードの双方で得られるようになっているが、マスタモード又はスレーブモードの何れか一方だけで得られるようにバス調停回路を構成することも可能である。また、マルチプロセッサシステムに含まれるマイクロプロセッサの数は２個に限定されず、３個以上であってもよい。また、バス権を獲得出来るスレーブとしてＤＭＡＣ（Direct Memory Access Controller）等を共通バスに接続することも当然可能である。スレーブが複数存在する場合には、例えば、スレーブ相互間のバス調停のための外部回路を利用して、バス権解放要求信号とバス権解放承認信号とをマスタプロセッサとの間でやりとりすることになる。本発明は、少なくとも、ハンドシェークでバス権の要求と解放を行う機能を備えた条件のものに広く適用することができる。
【００５０】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００５１】
すなわち、ハンドシェークによるバス権の獲得と解放に対してマクロプロセッサに自由度を持たせることができる。特にそのような自由度はマイクロプロセッサ内蔵のＣＰＵの動作プログラムで制御できる。
【００５２】
マイクロプロセッサが外部周辺回路の初期化を担うとき、その初期化を完了するまで外部からのバス権要求を無視できる。
【００５３】
上記マイクロプロセッサを適用したマルチプロセッサシステムは、初期化を要する共有資源の初期化完了前に当該共有資源が任意にアクセスされて誤動作を生ずる虞を排除することができ、しかもそのためにシステム上で特別な外部回路を構成したり、ソフトウェア的にも処理を複雑化しなくても済むようにできる。
【図面の簡単な説明】
【図１】本発明の一例に係るマイクロプロセッサのブロック図である。
【図２】図１に示されるマイクロプロセッサを2個用いたマルチプロセッサシステムのブロック図である。
【図３】図２のマルチプロセッサシステムにおいてリセットからその直後におけるマスタプロセッサの一例動作フローチャートである。
【図４】図２のマルチプロセッサシステムにおいてリセットからその直後におけるスレーブプロセッサの一例動作フローチャートである。
【図５】図１のマイクロプロセッサをマスタプロセッサとし、スレーブプロセッサとして別のマイクロプロセッサを用いたマルチプロセッサシステムのブロック図である。
【図６】図１のマイクロプロセッサをスレーブプロセッサとし、マスタプロセッサとして別のマイクロプロセッサを用いたマルチプロセッサシステムのブロック図である。
【図７】図１とは別のマイクロプロプロセッサを用いたマルチプロセッサシステムの一例ブロック図である。
【符号の説明】
１  マイクロプロセッサ
３  ＣＰＵ
９  バスコントローラ
２０  バス調停回路
２１  レジスタ
ＢＲＥＱＥＮ  バス権解放許可制御情報
２２  レジスタ
ＭＳＭＤ  マスタ・スレーブモード制御情報
ＲＥＳＥＴ  リセット信号
ＭＤ  モード信号
ＢＲＥＱ  バス権解放要求信号
ＢＡＣＫ  バス権解放承認信号
４０  モード信号発生回路
４１  ブートメモリ
４４  シンクロナスＤＲＡＭ
【図１】
0003795978.tif 000002
【図２】
0003795978.tif 000003
【図３】
0003795978.tif 000004
【図４】
0003795978.tif 000005
【図５】
0003795978.tif 000006
【図６】
0003795978.tif 000007
【図７】
0003795978.tif 000008