(57)【特許請求の範囲】
【請求項１】
割り込み処理時にプログラムカウンタの値及びプロセッサステータスレジスタの値をマイクロプロセッサの周辺メモリ上のスタックへ退避した後、バスステータスを通常スタックに書き込みを行うときと異なった状態とし、マイクロプロセッサに接続された周辺装置のデータを前記周辺メモリ上のスタックへ退避させるライトバスサイクルを発生するとともに前記バスステータスによりデータバスをハイインピーダンス状態とすることを特徴とするマイクロプロセッサ。
【請求項２】
バスステータスを通常スタックから読み出しを行うときと異なった状態とし、周辺メモリ上のスタックからのリードバスサイクルを発生し、その後プログラムカウンタの値及びプロセッサステータスレジスタの値を復帰し割り込み処理からリターンする機能を備えたことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
割り込み処理時にプログラムカウンタの値及びプロセッサステータスレジスタの値をスタックへ退避した後、バスステータスを通常スタックに書き込みを行うときと異なった状態としてスタックへのライトバスサイクルを発生するとともに前記バスステータスによりデータバスをハイインピーダンス状態とする機能と、バスステータスを通常スタックから読み出しを行うときと異なった状態としてスタックからのリードバスサイクルを発生し、その後プログラムカウンタの値及びプロセッサステータスレジスタの値を復帰し割り込み処理からリターンする機能とを備えたマイクロプロセッサに接続される周辺装置であって、
前記リードバスサイクルではデータバスの値を内部レジスタに取り込み、前記ライトバスサイクルでは内部レジスタの値をデータバスに出力することを特徴とする周辺装置。
【請求項４】
前記内部レジスタにより割り込み処理を必要とする周辺装置からの割り込み要求がマスクされるようになしたことを特徴とする請求項３記載の周辺装置。
【請求項５】
特定の割り込み要求が入力された場合には、バスステータスを通常スタックに書き込みを行うときの状態としてスタックへのライトバスサイクルを発生させるようになしたことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項６】
割り込み処理からのリターン時には、バスステータスを通常スタックからの読み出しを行うときと異なった状態とした割り込み処理からのリターン命令、又は、バスステータスを通常スタックからの読み出しを行うときの状態とした割り込み処理からのリターン命令を実行するようになしたことを特徴とする請求項２記載のマイクロプロセッサ。
【請求項７】
所定の要求信号が入力されている間、バスステータスを通常スタックに書き込みを行うときと異なった状態としてスタックへのライトバスサイクルを連続して発生するようになしたことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項８】
所定の要求信号が入力されている間、バスステータスを通常スタックから読み出しを行うときと異なった状態としてスタックからのリードバスサイクルを連続して発生するようになしたことを特徴とする請求項２記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、割り込み処理が可能なマイクロプロセッサ及びその周辺装置に関するものである。
【０００２】
【従来の技術】
マイクロプロセッサに複数の外部装置を接続してなるシステムでは、マイクロプロセッサに対し複数の割り込み要求が発生する。これらの割り込みはマイクロプロセッサが現在実行中の処理によって受け付け可能なものと不可能なものに分けられる。
割り込み受け付けの可否は、マイクロプロセッサが内部にレジスタとして持つ割り込みマスクフラグにより制御されるが、このマスクフラグはマイクロプロセッサのアーキテクチャにより数が決まっており、この数を超える割り込み要求では個別に可否を設定できなくなる。
このような不都合を解消するためには、マイクロプロセッサ内部のマスクレジスタを増加すればよいが、割り込み要求の少ないシステムにとっては無駄なレジスタを持つこととなる。また、多数のマスクレジスタを割り込み受け付け時にスタックへ退避し、割り込み処理からのリターン時に復帰させる必要が生じるため、多数のマスクを必要としないシステムに対しては、処理時間が遅くなり、スタックのメモリも多く消費することとなる。
そこで、割り込みマスクフラグ、マスクレベル等がマイクロプロセッサの内部レジスタで用意されているものでは足らなくなった場合に、マイクロプロセッサの周辺装置のレジスタにマスクフラグを拡張する技術が提案されている。この種の技術として、周辺装置であるコプロセッサに内蔵されたレジスタの内容（コンテキスト）を割り込みの前後で比較し、コプロセッサを使用するタスクにＣＰＵが割り当てられているときのみコプロセッサのコンテキストをスタックへ退避させる方法が知られている（特開平４−５１３２９号公報参照）。この場合ＣＰＵがコプロセッサからコンテキストを読み取りスタックへの書き込み（スタックライト）を行っている。
【０００３】
【発明が解決しようとする課題】
しかし、マイクロプロセッサの周辺装置にマスクレジスタを持たせた場合、割り込み受け付け時のマスクレジスタの退避及びリタ−ン時の復帰はソフトウェアによっておこなわれるため、処理時間が増大するという問題がある。特に、多重割り込みが可能なシステムでは、最初の割り込み受け付け後マスクレジスタの退避までは次の割り込みが受け付けられないため、ソフトウェアによる退避では、割り込み受け付け後退避までの時間がかかり、その間が割り込み受け付け不可の期間となり処理速度の低下を招くことになる。
また、ハ−ドウェアによる外部割り込みマスクレジスタの退避がおこなわれる場合は、退避するためのアドレスの発生回路等の多数のハ−ドウェアの追加が必要となりコストアップにつながる。
本発明の目的は、上記従来技術の課題を解消し、割り込み処理時に周辺装置のデ−タを効率良くスタックへ退避し、復帰させることができるマイクロプロセッサ及びその周辺装置を提供することにある。
【０００４】
【課題を解決するための手段】
上記課題を解消するために、請求項１記載の発明に係るマイクロプロセッサは、割り込み処理時にプログラムカウンタの値及びプロセッサステータスレジスタの値をマイクロプロセッサの周辺メモリ上のスタックへ退避した後、バスステータスを通常スタックに書き込みを行うときと異なった状態とし、マイクロプロセッサに接続された周辺装置のデータを前記周辺メモリ上のスタックへ退避させるライトバスサイクルを発生するとともに前記バスステータスによりデータバスをハイインピーダンス状態とすることで、割り込み処理時にマイクロプロセッサに接続された周辺装置のデータを効率良く周辺メモリ上のスタックへ退避させることができるようにした。請求項２記載の発明に係るマイクロプロセッサは、請求項１記載のマイクロプロセッサにおいて、バスステータスを通常スタックから読み出しを行うときと異なった状態とし、周辺メモリ上のスタックからのリードバスサイクルを発生し、その後プログラムカウンタの値及びプロセッサステータスレジスタの値を復帰し割り込み処理からリターンすることで、割り込み処理からの復帰時にマイクロプロセッサに接続された周辺装置のデータを効率良くスタックから復帰させることができるようにした。請求項３記載の発明に係る周辺装置は、請求項１又は２記載のマイクロプロセッサに接続し、前記リードバスサイクルではデータバスの値を内部レジスタに取り込み、前記ライトバスサイクルでは内部レジスタの値をデータバスに出力することで、割り込み処理時に周辺装置の内部レジスタに保持されたデータをスタックへ退避し、割り込み処理復帰時にはスタックに保持されたデータを周辺装置の内部レジスタに復帰できるようにした。請求項４記載の発明に係る周辺装置は、請求項３記載のマイクロプロセッサに対して、前記内部レジスタにより割り込み処理を必要とする周辺装置からの割り込み要求がマスクされるようになしたことで、ソフトウェアによる割り込みマスクの退避、復帰処理を省略し、処理時間を短縮化できるようにした。請求項５記載の発明に係るマイクロプロセッサは、請求項１記載のマイクロプロセッサにおいて、特定の割り込み要求が入力された場合には、バスステータスを通常スタックに書き込みを行うときの状態としてスタックへのライトバスサイクルを発生させることで、周辺装置からのデータを退避する必要のない場合に無駄な退避動作を省くことができ、処理時間を短縮し且つスタックを節約できるようにした。
【０００５】
請求項６記載の発明に係るマイクロプロセッサは、請求項２記載のマイクロプロセッサにおいて、割り込み処理からのリターン時には、バスステータスを通常スタックから読み出しを行うときと異なった状態とした割り込み処理からのリターン命令（拡張割り込み処理からのリターン命令）の他に、バスステータスを通常のスタックリードと同じ状態とした割り込み処理からのリターン命令（通常の割り込み処理からのリターン命令）も実行可能とすることで、周辺装置のデータを復帰する必要のない場合に無駄な復帰動作を省くことができ、処理時間を短縮し且つスタックを節約できるようにした。
請求項７記載の発明に係るマイクロプロセッサは、所定の要求信号が入力されている間、バスステータスを通常スタックに書込を行うときと異なった状態としてスタックへのライトバスサイクルを連続して発生するようになしたことで、スタックに退避するデータが多数ある場合に対応できるようにした。
請求項８記載の発明に係るマイクロプロセッサは、所定の要求信号が入力されている間、バスステータスを通常スタックから読み出しを行うときと異なった状態としてスタックからのリードバスサイクルを連続して発生するようになしたことで、スタックから復帰するデータが多数ある場合に対応できるようにした。
【０００６】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。
図１は本発明の実施の形態のマイクロプロセッサを備えたシステムの要部ブロック図、図２は従来のマイクロプロセッサを備えたシステムの要部ブロック図である。
マイクロプロセッサが受け付けることのできる割り込み要求数よりも多数の割り込み要求を必要とするシステムでは、多重割り込みを可能にするために、図２に示すようにマイクロプロセッサ５の周辺装置として割り込みコントロ−ラ６が設けられている。このシステムでは、割り込み要求信号ＩＲＱが割り込みコントロ−ラ６を介してマイクロプロセッサ５に入力される。マイクロプロセッサ５は、ＲＯＭ３に格納されたプログラムに従ってＲＡＭ４を作業領域に使用しつつ動作している。そして、割り込み要求信号ＩＲＱを検出し、割り込み許可の場合、そのとき実行中の命令サイクルが終了し次第、割り込み処理を実行する。この場合、割り込み要求ごとに割り込みの禁止を設定する割り込みマスクは割り込みコントロ−ラ６の内部レジスタに設け、多重割り込みに対応するためには割り込み発生時に割り込みマスクをマイクロプロセッサ５のスタックへ退避させる必要がある。
【０００７】
これに対し、本発明の実施の形態のマイクロプロセッサ１では、図１に示すように、上記割り込み要求信号ＩＲＱの入力端子の他に、拡張割り込みを要求する信号ＥＸＩＲＱの入力端子、割り込みベクタ−アドレスを選択する信号ＩＳＥ０〜３の入力端子、バスステ−タスを示す信号ＳＴ０〜２の出力端子、及びＲＷＢの出力端子が追加されている。ＥＸＩＲＱは図示しない外部装置よりより入力される。ＩＳＥ０〜３は割り込みコントロ−ラ２より入力される。また、ＳＴ０〜２及びＲＷＢはマイクロプロセッサより割り込みコントロ−ラ２に入力される。バスステータス信号ＳＴ０〜２とそのときのマイクロプロセッサ１の状態（プロセッサ・ステート）との対応関係は図３に示すとおりである。
【０００８】
図４は、本発明の実施の形態のマイクロプロセッサ１における割り込みマスク退避動作を示すフローチャートである。マイクロプロセッサ１は、割り込み要求入力信号ＩＲＱが入力されると、割り込みベクターアドレス選択信号ＩＳＥ０〜３をサンプリングし（ステップＳ１）、そのとき実行中の命令サイクルが終了し次第（ステップＳ２）、その割り込み要求がマスクされているかどうかをチェックする（ステップＳ３）。その結果、マスクされていれば（ステップＳ３でＹＥＳ）、そのまま何もせずに割り込みを終了するが、マスクされていなければ（ステップＳ３でＮＯ）、プログラムカウンタＰＣ及びプロセッサステータスレジスタＰＳＲ（図３参照）をスタックへ退避させ、割り込みフラグを“１”にセットしたの後（ステップＳ４）、拡張割り込み要求信号ＥＸＩＲＱがハイレベルかローレベルかをチェックする（ステップＳ５）。その結果、ＥＸＩＲＱがハイレベルであれば（ステップＳ５でＹＥＳ）、バスステータスを通常のスタックライトの状態（ＳＴ２：１：０＝０：０：１）と異なった状態（ＳＴ２：１：０＝０：１：１）として２バイトのマスクデータをスタックへ退避する（ステップＳ６）。このスタックライト時、すなわちバスステータス信号がＳＴ２：１：０＝０：１：１の状態になっている間、マイクロプロセッサ１は図５の等価回路で示されるロジックに従って、データバスをハイインピーダンス状態とする。また、割り込みコントローラ２は、バスステータス信号がＳＴ２：１：０＝０：１：１の状態になっている間は図６の等価回路で示されるロジックによりマスクデータをデータバスへ出力する。
【０００９】
その後、マイクロプロセッサ１はＩＳＥ０〜３に応じたベクタアドレスより３バイトデータのフェッチを行い、プログラムカウンタ（ＰＣ）への格納を行った後（ステップＳ７）、処理を終了する。また、ＥＸＩＲＱがローレベルのときは（ステップＳ５でＮＯ）、上記ステップＳ６の処理を行わずにステップＳ７に進む。
上記動作におけるＥＸＩＲＱがハイレベルであることにより発生する拡張割り込み動作をタイミングチャートに示すと図７のようになる。一方、ＥＸＩＲＱがロ−レベルであることにより発生する通常の割り込みでは動作をタイミングチャートに示すと図８のようになる。
【００１０】
図９は、本発明の実施の形態のマイクロプロセッサ１における割り込みマスク復帰動作を示すフロ−チャ−トである。上記マイクロプロセッサ１は、割り込み処理からのリタ−ン時は通常のリターン命令と拡張割り込み処理からのリターン命令とを持つ。拡張割り込み処理からのリターン命令では、スタックから２バイトのマスクデ−タをリ−ドする際に、バスステータス信号をＳＴ２：１：０＝０：１：１としてリ−ドし、マイクロプロセッサ１ではこのマスクデ−タを取り込まない。そして、割り込みコントロ−ラ２では、図５の等価回路によりデ−タバスから割り込みフラグのデ−タを保持するレジスタへマスクデ−タがロ−ド（復帰）される（ステップＳ１０）。その後、プログラムカウンタＰＣとプロセッサステータスレジスタＰＳＲとをスタックから復帰してマイクロプロセッサ１は割り込み前の状態へ戻る（ステップＳ１１）。
【００１１】
以上の実施の形態では２バイトのマスクデ−タの退避及び復帰する場合について説明したが、割り込みコントロ−ラ２に２バイト以上のマスクデ−タが保持されている場合はそれらも全て退避する必要がある。そこで、図１０に示すように、マイクロプロセッサ１に継続要求信号ＭＯＲＥの入力端子を追加し、割り込みコントロ−ラ２と接続する。そして、ＥＸＩＲＱがハイレベルであることにより発生する上記拡張割り込み動作時において、継続要求信号ＭＯＲＥがハイレベルの間はバスステータス信号をＳＴ２：１：０＝０：１：１としてバスサイクルを発生し続けるようにする。その結果、継続要求信号ＭＯＲＥがハイレベルの間はスタックへの２バイトのマスクデ−タの退避が繰り返されるようになり、２バイト以上のマスクデ−タの退避が可能となる。また、リタ−ン時も継続要求信号ＭＯＲＥがハイレベル時はスタックからのマスクデータのリ−ドを繰り返すことで２バイト以上のマスクデ−タの復帰が可能となる。
なお、割り込み処理の際に現在の状態を退避しなければならないデ−タは割り込みマスクデータ以外にもあり、これらのデ−タの退避、復帰を行う場合においても本発明を適用することができる。
【００１２】
【発明の効果】
以上説明したように、本発明は以下のような優れた効果を発揮する。
請求項１記載の発明に係るマイクロプロセッサによれば、割り込み処理時にマイクロプロセッサの周辺装置のデータを効率良くメモリ上のスタックヘ退避させることができる。
請求項２記載の発明に係るマイクロプロセッサによれば、割り込み処理時にマイクロプロセッサの周辺装置のデータを効率良くスタックから復帰させることができる。
請求項３記載の発明に係る周辺装置によれば、割り込み処理時に周辺装置の内部レジスタに保持されたデータをスタックへ退避し、スタックに保持されたデータを周辺装置の内部レジスタに復帰できる。
請求項４記載の発明に係る周辺装置によれば、周辺装置の内部レジスタに保持されたマスクデータのスタックへの退避、及び、スタックに保持されたマスクデータの周辺装置の内部レジスタへの復帰をソフトウェアによらず自動的に行い処理時間を短縮できる。
【００１３】
請求項５記載の発明に係るマイクロプロセッサによれば、周辺装置からのデ−タを退避する必要のない場合に無駄な退避動作を省くことができ、処理時間を短縮し且つスタックを節約することができる。
請求項６記載の発明に係るマイクロプロセッサによれば、周辺装置のデ−タを復帰する必要のない場合に無駄な復帰動作を省くことができ、処理時間を短縮し且つスタックを節約することができる。
請求項７記載の発明に係るマイクロプロセッサによれば、スタックに退避すべきデ−タが多数ある場合でも全て退避させることができる。
請求項８記載の発明に係るマイクロプロセッサによれば、スタックから復帰すべきデ−タが多数ある場合でも全て復帰させることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態のマイクロプロセッサを備えたシステムの要部ブロック図である。
【図２】従来のマイクロプロセッサを備えたシステムの要部ブロック図である。
【図３】本発明の実施の形態におけるバスステータス信号とマイクロプロセッサの状態との対応関係を示す図である。
【図４】本発明の実施の形態のマイクロプロセッサにおける割り込みマスク退避動作を示すフロ−チャ−トである。
【図５】本発明の実施の形態のマイクロプロセッサの等価回路を示す図である。
【図６】本発明の実施の形態における周辺装置としての割り込みコントローラの等価回路を示す図である。
【図７】拡張割り込み動作におけるタイミングチャートである。
【図８】通常の割り込み動作におけるタイミングチャートである。
【図９】本発明の実施の形態のマイクロプロセッサにおける割り込みマスク復帰動作を示すフロ−チャ−トである。
【図１０】本発明の別の実施の形態のマイクロプロセッサを備えたシステムの要部ブロック図である。
【符号の説明】
１  マイクロプロセッサ、２  割り込みコントローラ、３  ＲＯＭ、４  ＲＡＭ、ＲＱ  割り込み要求信号、ＥＸＩＲＱ  拡張割り込み要求信号、ＳＴ０〜２バスステ−タス信号。
【図１】
0003676882.tif 000002
【図２】
0003676882.tif 000003
【図３】
0003676882.tif 000004
【図４】
0003676882.tif 000005
【図５】
0003676882.tif 000006
【図６】
0003676882.tif 000007
【図７】
0003676882.tif 000008
【図８】
0003676882.tif 000009
【図９】
0003676882.tif 000010
【図１０】
0003676882.tif 000011