(57)【特許請求の範囲】
【請求項１】
同一アドレスの設定レジスタに配置された第１および第２のフラグを有し、前記第１のフラグに所定の値が設定されたときに割り込み有効となり、前記第２のフラグに所定の値が設定されたときにバンク無効となることを特徴とするマイクロプロセッサ。
【請求項２】
割り込み有効にするときに第１のフラグに設定される値とバンク無効にするときに第２のフラグに設定される値とが同じ値である請求項１記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、効率的にバンク機能を用いる機構を有するマイクロプロセッサに関するものである。
【０００２】
【従来の技術】
複数のバンクを使用してプログラムを作成する際、割り込み時に切り替えたバンクの一貫性を保障する必要がある。従来では、バンクの一貫性を保障するための方法として、別のバンクをアクセスするためにバンクを切り替えている期間割り込みを無効にする手法を用いていた。
【０００３】
図１２は従来のマイクロプロセッサにおける割り込み時のバンク値の一貫性を保障する手法を示している。図１２において、符号１はバンクを用いたデータアクセスを示すバンクアクセスシーケンスの全体図を示している。
【０００４】
バンクアクセスシーケンス１中で、符号１１は割り込み禁止工程であり、割り込み処理プログラムの実行を抑制することによって、以降の工程でバンク番号を設定することによる割り込み処理の不具合を回避している。
【０００５】
符号１２はバンク番号設定工程であり、データの置かれているバンク番号をバンク番号設定レジスタに格納するための工程である。
【０００６】
符号１３はバンク有効化工程であり、バンク番号設定工程１２で設定したバンク番号を有効にし、以後のデータアクセスをバンク番号設定工程１２で設定されたバンク番号のメモリに対してアクセスすることを決定している。
【０００７】
符号１４はバンクデータアクセス工程であり、バンク番号設定工程１２で設定したバンク番号が示すメモリへのデータアクセスを行っている。
【０００８】
符号１５はバンク無効化工程であり、これにより、バンクメモリへのアクセスを無効にし、通常のメモリアクセスへ復帰する。
【０００９】
符号１６は割り込み許可工程であり、以降のプログラムで割り込みの処理を許可する。
【００１０】
以上のような処理によって、バンクメモリへのデータアクセス時の割り込み処理による不具合を回避していた。
【００１１】
【発明が解決しようとする課題】
しかしながら、バンクを切り替えている期間、割り込みを無効にする手法では、別のバンクにあるデータをアクセスするたびにバンク番号設定レジスタへの値の設定と割り込み禁止、許可の操作が必要となり、プログラムコードサイズと実行時間が大きくなり、また割り込みを禁止することによって、割り込み処理プログラムの応答時間が長くなるという課題があった。
【００１２】
【課題を解決するための手段】
本発明では、バンク機能（有効無効、バンク番号、バンク番号の退避・復帰等）の設定と割り込み許可禁止の動作を同時に行う機構を備えることによって、プログラムのコードサイズと実行時間を縮小できる。また、割り込み処理の応答性も改善することができる。
【００１３】
以下、請求項毎に説明する。
【００１４】
請求項１記載のマイクロプロセッサは、同一アドレスの設定レジスタに配置された第１および第２のフラグを有し、第１のフラグに所定の値が設定されたときに割り込み有効となり、第２のフラグに所定の値が設定されたときにバンク無効となることを特徴とする。
【００１５】
この構成によれば、バンク有効無効の設定と割り込み許可禁止の動作を同時に行うことが可能となり、プログラムのコードサイズと実行時間を縮小できる。また、割り込み処理の応答性も改善することができる。
【００１６】
請求項２記載のマイクロプロセッサは、請求項１記載のマイクロプロセッサにおいて、割り込み有効にするときに第１のフラグに設定される値とバンク無効にするときに第２のフラグに設定される値とが同じ値である。
【００１７】
この構成によれば、請求項１記載のマイクロプロセッサと同様の作用を有する。
【００３５】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００３６】
図１は本発明の第１の実施の形態におけるマイクロプロセッサのバンクアクセス手法を示している。図１において、符号２はバンクアクセスシーケンスであり、バンクアクセスの方法の全体を示している。
【００３７】
符号２１はバンク有効かつ割り込み禁止工程であり、この工程によってバンク番号の有効化処理と割り込みの禁止設定処理とを同時に行っている。
【００３８】
符号２２はバンク番号設定工程であり、データの置かれているバンク番号をバンク番号設定レジスタに格納するための工程である。
【００３９】
符号２３はバンクデータアクセス工程であり、バンク番号設定工程２２で設定したバンク番号の示すメモリへのデータアクセスを行っている。
【００４０】
符号２４はバンク無効かつ割り込み許可工程であり、この工程によって設定したバンク番号の無効化処理と割り込みの許可設定処理とを同時に行っている。
【００４１】
図３(ａ)は、バンク有効かつ割り込み禁止工程２１においてバンク番号の有効化処理と割り込みの禁止設定処理との同時処理を実現し、バンク無効かつ割り込み許可工程２４においてバンク番号の無効化処理と割り込みの許可設定処理との同時処理を実現するためのハードウェア構成である、マイクロプロセッサのバンク・割り込み設定レジスタの一例を示している。図３（ａ）において、符号４は設定レジスタであり、割り込みの有効処理とバンクの無効化処理の設定を行うフラグが格納されている。符号４１は割り込み有効フラグであり、割り込みの有効無効を切り替える。符号４２はバンク無効化フラグであり、バンクの有効無効を切り替える。つまり、割り込み有効フラグ４１とバンク無効化フラグ４２は、同一アドレスの設定レジスタ４に配置されている。
【００４２】
図３(ｂ)は割り込み有効フラグ４１とバンク無効化フラグ４２の符号化の状態を示している。割り込み有効フラグ４１に関しては、本実施の形態では値１を設定すると割り込み有効になり、値０を設定すると割り込みが無効になる。バンク無効化フラグ４２に関しては、本実施の形態では値１を設定するとバンク番号設定が無効になり、値０を設定するとバンク番号設定が有効となる。
【００４３】
なお、上記の説明とは逆に、割り込み有効フラグ４１に関しては、値０を設定すると割り込み有効になり、値１を設定すると割り込みが無効になり、バンク無効化フラグ４２に関しては、値０を設定するとバンク番号設定が無効になり、値１を設定するとバンク番号設定が有効となるようにしてもよい。
【００４４】
上記のような設定レジスタ４を備え、図３(ｂ)のような符号化を行うことによって、バンク有効かつ割り込み禁止工程２１のようなバンク有効かつ割り込み禁止の同時処理や、バンク無効かつ割り込み許可工程２４のようなバンク無効かつ割り込み許可の同時処理を、ＡＮＤ命令とＯＲ命令のような一般的なプロセッサの命令の１命令で容易に行うことができる。
【００４５】
例えば、割り込み有効フラグ４１に関しては、値１を設定すると割り込み有効になり、値０を設定すると割り込みが無効になり、バンク無効化フラグ４２に関しては、値１を設定するとバンク番号設定が無効になり、値０を設定するとバンク番号設定が有効となるような構成の場合、ＡＮＤ命令とＯＲ命令は以下のようになる。すなわち、割り込み許可かつバンク無効にする場合、同レジスタの他のビットに影響を与えずに設定を変更する場合、“ＯＲ  ０ｘｃ０，Ｒ”命令により実行可能である。上記のＯＲ命令で、Ｒは設定レジスタであり、その意味は、設定レジスタＲの値と１６進数ｃ０とのＯＲをとり、設定レジスタＲに代入することを意味する。
【００４６】
また、“ＡＮＤ  ０ｘ３ｆ，Ｒ”命令の実行によって割り込み禁止かつバンク有効にすることが可能である。このＡＮＤ命令の意味は、設定レジスタＲの値と１６進数３ｆとのＡＮＤをとり、設定レジスタＲに代入することを意味する。
【００４７】
つまり、上記のように値を設定することで、フラグを設定する設定レジスタ４の他のビットに影響を与えずに、１つの命令で両方の設定の変更を実現できる。
【００４８】
なお、割り込み有効フラグ４１が値１で割り込み有効になり、バンク無効化フラグ４２が値１でバンク有効になるような符号化の形態では、上記のように、一般的なマイクロプロセッサに備わっているようなＡＮＤ命令、ＯＲ命令のような一般的な命令の一命令で、上記のような割り込み有効かつバンク無効のような処理を行うことはできない。しかし、レジスタの他のビットを使用しないものとすれば、上記のような処理を行うことは可能である。以下の実施の形態では、上記のような制限はない。
【００４９】
図４はバンク有効かつ割り込み禁止工程２１における同時処理とバンク無効かつ割り込み許可工程２４における同時処理を実現するためのもう一つのハードウェア構成である、マイクロプロセッサのバンク・割り込み設定回路の一例を示している。図４において、符号５１はインストラクションレジスタであり、メモリからフェッチされた命令コードが格納される。符号５２はインストラクションデコーダであり、インストラクションレジスタ５１に格納された命令コードをデコードし、インストラクションレジスタ５１に格納された命令コードに応じた制御信号を送出する回路である。
【００５０】
符号５３はバンク無効化レジスタであり、本レジスタに設定された値によりバンクの有効無効を切り替える。符号５３１はバンク無効化レジスタセット信号であり、本信号が値１のときにバンク無効化レジスタ５３がセットされる。符号５３２はバンク無効化レジスタクリア信号であり、本信号が値１のときにバンク無効化レジスタ５３がクリアされる。
【００５１】
符号５４は割り込み有効レジスタであり、本レジスタに設定された値により割り込みの有効無効を切り替える。符号５４１は割り込み有効レジスタセット信号であり、本信号が値１のときに割り込み有効レジスタ５４がセットされる。符号５４２は割り込み有効レジスタクリア信号であり、本信号が値１のときに割り込み有効レジスタ５４がクリアされる。
【００５２】
図５はインストラクションデコーダ５２の動作の一部を示す真理値表であり、インストラクションレジスタ５１に格納された命令コードを入力として、それに対する制御信号線５３１、５３２、５４１、５４２の動作を表している。本実施の形態では、バンク無効化割り込み有効化命令（ＤＢＥＩ）に割り付けられた命令コードを“１０”とし、バンク有効化割り込み無効化命令（ＥＢＤＩ）を“２０”とした場合を示している。
【００５３】
図４および図５のようなハードウェアを備えることによって、バンク有効かつ割り込み禁止工程２１とバンク無効かつ割り込み許可工程２４における同時処理を、特別な小さな命令コードに割り当てることができる。したがって、バンク有効無効の設定と割り込み許可禁止の動作を同時に行うことが可能となり、プログラムのコードサイズと実行時間を小さくすることができる。また、割り込み処理の応答性も改善することができる。
【００５４】
なお、上記の実施の形態では、バンク無効化割り込み有効化命令（ＤＢＥＩ）およびバンク有効化割り込み無効化命令（ＥＢＤＩ）の２つの命令コードをインストラクションデコーダ５２でデコードする構成にしていたが、バンク無効化レジスタ５３と割り込み有効レジスタ５４の設定値をともに反転させる一つの命令コードのみをデコードする回路でもよい。
【００５５】
図２は本発明の第２の実施の形態におけるマイクロプロセッサのバンクアクセス手法を示している。図２において、符号３はバンクアクセスシーケンスであり、バンクアクセスの方法の全体を示している。
【００５６】
符号３１はバンク番号設定かつ割り込み禁止工程であり、この工程によってバンク番号の設定処理およびバンクの有効化と割り込みの禁止設定を同時に行っている。
【００５７】
符号３２はバンクデータアクセス工程であり、バンク番号設定かつ割り込み禁止工程３１で設定したバンク番号の示すメモリへのデータアクセスを行っている。
【００５８】
符号３３はバンク番号復帰かつ割り込み許可工程であり、この工程によってバンクアクセスシーケンス３の前に設定していたバンク番号の復帰処理とバンクの無効化と割り込み許可処理を同時に行っている。
【００５９】
図６はバンク番号設定かつ割り込み禁止工程３１における同時処理およびバンク番号復帰かつ割り込み許可工程３３における同時処理を実現するためのハードウェア構成である、マイクロプロセッサのバンク・割り込み設定回路の一例を示している。図６において、符号６１はインストラクションレジスタであり、メモリからフェッチされた命令コードが格納される。
【００６０】
符号６２はインストラクションデコーダであり、インストラクションレジスタ６１に格納された命令コードをデコードし、格納された命令コードに応じた制御信号を送出する回路である。
【００６１】
符号６３はバンク無効化レジスタであり、本レジスタに設定された値によりバンクの有効無効を切り替える。符号６３１はバンク無効化レジスタセット信号であり、本信号が値１のときにバンク無効化レジスタ６３がセットされる。符号６３２はバンク無効化レジスタクリア信号であり、本信号が値１のときにバンク無効化レジスタ６３がクリアされる。
【００６２】
符号６４は割り込み有効レジスタであり、本レジスタに設定された値により割り込みの有効無効を切り替える。符号６４１は割り込み有効レジスタセット信号であり、本信号が値１のときに割り込み有効レジスタ６４がセットされる。符号６４２は割り込み有効レジスタクリア信号であり、本信号が値１のときに割り込み有効レジスタ６４がクリアされる。
【００６３】
符号６５はバンク番号設定レジスタであり、データアクセスするバンク番号を格納するレジスタである。符号６５１はバンク番号データバスであり、バンク番号設定レジスタ６５に設定されるバンク番号を伝達する信号線である。符号６５２はバンク番号設定レジスタライトイネーブル信号であり、本信号が値１のときにバンク番号設定レジスタ６５にバンク番号データバス６５１のバンク番号が格納される。
【００６４】
符号６６はバンク番号デコーダであり、バンク番号データバス６５１とバンク番号設定レジスタライトイネーブル信号６５２の値から制御信号であるバンク無効化レジスタセット信号６３１とバンク無効化レジスタクリア信号６３２と割り込み有効レジスタセット信号６４１と割り込み有効レジスタクリア信号６４２とを生成する。
【００６５】
図７はバンク番号デコーダ６６の動作を示した真理値表である。本実施の形態では、データバス６５１は２ビットとなっており、このうち値１，２，３をバンクの切り替えに使用し、値０をバンク無効化を示す符号として使用している。
【００６６】
本構成によって、バンク番号の設定とバンク無効有効の切り替え、割り込み有効無効の切り替えを同時に実行でき、コードサイズ、実行時間、割り込みの応答時間を小さくすることができる。
【００６７】
図８はバンク番号設定かつ割り込み禁止工程３１における同時処理およびバンク番号復帰かつ割り込み許可工程３３における同時処理を実現するための別のハードウェア構成である、マイクロプロセッサのバンク番号退避レジスタ付バンク・割り込み設定回路の一例を示している。図８において、符号７１はインストラクションレジスタであり、メモリからフェッチされた命令コードが格納される。
【００６８】
符号７２はインストラクションデコーダであり、インストラクションレジスタ７１に格納された命令コードをデコードし、格納された命令コードに応じた制御信号を送出する回路である。
【００６９】
符号７３はバンク番号退避メモリ（レジスタ）であり、バンク番号設定レジスタ７５の設定値を一時的に退避するためのメモリである。符号７３１はバンク番号退避メモリライトイネーブル信号であり、値１のときにバンク番号退避メモリ７３に退避すべきバンク番号が格納される。
【００７０】
符号７４は割り込み有効レジスタであり、本レジスタに設定された値により割り込みの有効無効を切り替える。符号７４１は割り込み有効レジスタセット信号であり、本信号が値１のときに割り込み有効レジスタ７４がセットされる。符号７４２は割り込み有効レジスタクリア信号であり、本信号が値１のときに割り込み有効レジスタ７４がクリアされる。
【００７１】
バンク番号設定レジスタ７５は、データアクセスするバンク番号を格納するレジスタである。符号７５１はバンク番号設定レジスタライトイネーブル信号であり、本信号が値１のときにバンク番号設定レジスタ７５にバンク番号が格納される。
【００７２】
符号７６はバンク番号デコーダであり、バンク番号設定レジスタライトイネーブル信号７５１とバンク番号設定データ用バス７７２の値から制御信号であるバンク番号選択信号７７１とバンク番号退避メモリライトイネーブル信号７３１と割り込み有効レジスタセット信号７４１と割り込み有効レジスタクリア信号７４２を生成する。
【００７３】
符号７７はセレクタであり、バンク番号設定レジスタ７５に格納するバンク番号の設定または退避された値の復帰を選択する。符号７７１はバンク番号選択信号であり、値０のときにバンク番号設定データ用バス７７２が選択され、したがってバンク番号設定データ用バス７７２を通して送られたバンク番号が選択され、値１のときにバンク番号退避データ用バス７７３が選択され、したがってバンク番号退避メモリ７３に退避されたバンク番号が選択される。
【００７４】
バンク番号設定データ用バス７７２は、バンク番号設定レジスタ７５に設定されるバンク番号を伝達する信号線である。バンク番号退避データ用バス７７３は、バンク番号退避メモリ７３に退避されたバンク番号をセレクタ７７に伝達する信号線である。符号７７４はバンク番号選択結果であり、バンク番号をセレクタ７７で選択された結果の値を出力している。
【００７５】
図９はバンク番号デコーダ７６の動作を示した真理値表である。本実施の形態では、バンク番号設定レジスタ７５は２ビットとなっており、このうち値０，１，２をバンク番号の指定に使用し、値３を退避された以前のバンクの設定値を復帰させる符号として用いている。
【００７６】
ここで、バンクの有効・無効とバンク番号の退避・復帰との関係について説明する。バンク番号の退避・復帰ができると、バンクの有効・無効の設定の必要はない。バンクの有効・無効フラグの場合、バンクの無効時にデータアクセスすると、予めハードウェアで決められたバンク番号のデフォルト値を使うことになるが、退避復帰を用いる場合、デフォルト値をユーザーが任意に決めることができる。復帰処理によって前に設定した値に戻る。
【００７７】
本バンク番号デコーダ７６によって、バンク番号０，１，２いずれの領域から別のバンクに設定を変更した場合でも、バンク番号３を設定することによって、前回のバンク番号に復帰することができる。
【００７８】
この構成によれば、バンク番号設定および以前のバンク番号の退避・復帰等のバンク機能の設定と割り込み許可禁止の動作を同時に行うことが可能となり、プログラムのコードサイズと実行時間を縮小できる。また、割り込み処理の応答性も改善することができる。
【００７９】
図１０はバンク番号設定かつ割り込み禁止工程３１における同時処理およびバンク番号復帰かつ割り込み許可工程３３における同時処理を実現するためのさらに別のハードウェア構成である、マイクロプロセッサのバンク番号退避メモリ付バンク・割り込み設定回路の一例を示している。図１０において、符号８１はインストラクションレジスタであり、メモリからフェッチされた命令コードが格納される。
【００８０】
符号８２はインストラクションデコーダであり、インストラクションレジスタ８１に格納された命令コードをデコードし、格納された命令コードに応じた制御信号を送出する回路である。
【００８１】
符号８３はバンク番号退避メモリであり、バンク番号設定レジスタ８５の設定値を一時的に退避するためのメモリである。本メモリは複数、例えば４個の設定値を格納することができるようアドレス指定（０，１，２，３）ができるようになっている。符号８３１はバンク番号退避メモリライトイネーブル信号であり、値１のときにバンク番号退避メモリ８３に退避するバンク番号が格納される。符号８３２はバンク番号退避メモリアドレス信号であり、バンク番号退避メモリ８３のメモリのアドレスを指定することができる。
【００８２】
符号８４は割り込み有効レジスタであり、本レジスタに設定された値により割り込みの有効無効を切り替える。符号８４１は割り込み有効レジスタセット信号であり、本信号が値１のときに割り込み有効レジスタ８４がセットされる。符号８４２は割り込み有効レジスタクリア信号であり、本信号が値１のときに割り込み有効レジスタ８４がクリアされる。
【００８３】
バンク番号設定レジスタ８５は、データアクセスするバンク番号を格納するレジスタである。符号８５１はバンク番号設定レジスタライトイネーブル信号であり、本信号が値１のときにバンク番号設定レジスタ８５にバンク番号が格納される。
【００８４】
符号８６はバンク番号デコーダであり、バンク番号設定レジスタライトイネーブル信号８５１とバンク番号設定データ用バス８７２の値とアドレスレジスタ８８から出力されるアドレス値８６１とから制御信号であるバンク番号選択信号８７１とバンク番号退避メモリライトイネーブル信号８３１と加減算選択信号８９１と割り込み有効レジスタセット信号８４１と割り込み有効レジスタクリア信号８４２とを生成する。符号８６１はアドレス値であり、アドレスレジスタ８８の値をデコーダ８６へ伝達している。
【００８５】
符号８７はバンク番号セレクタであり、バンク番号設定レジスタ８５に格納するバンク番号の設定または退避された値の復帰を選択する。バンク番号選択信号８７１は、値０のときにバンク番号設定データ用バス８７２が選択され、したがってバンク番号設定データ用バス８７２を通して送られたバンク番号が選択され、値１のときにバンク番号退避データ用バス８７３が選択され、したがってバンク番号退避メモリ８３に退避されてアドレスで指定されたバンク番号が選択される。バンク番号設定データ用バス８７２は、バンク番号設定レジスタ８５に設定されるバンク番号を伝達する信号線である。バンク番号退避データ用バス８７３は、バンク番号退避メモリ８３に退避されたバンク番号をセレクタ８７に伝達する信号線である。符号８７４はバンク番号選択結果であり、バンク番号セレクタ８７で選択された結果の値を出力している。
【００８６】
アドレスレジスタ８８は、バンク番号退避メモリ８３のアドレスを保持している。
【００８７】
符号８９は演算器を構成する加減算器であり、アドレスレジスタ８８の値を演算する。加減算器８９は、制御信号である加減算選択信号８９１によって加算と減算を切り替えることができる。加減算器８９は、加減算選択信号８９１が値０のときに加算を行い、値１のときに減算を行う。なお、加減算器８９の代わりにデコーダを用いても同様の機能を実現することができる。このような回路をアドレス値を変更する回路手段と称している。
【００８８】
符号８ａはアドレスセレクタであり、バンク退避メモリ８３へ与えるアドレスを選択している。制御信号である加減算選択信号８９が値０のときに加減算器８９の値を選択し、値１のときにアドレスレジスタ８８の値を選択する。
【００８９】
図１１はデコーダ８６の動作を示す真理値表である。
【００９０】
本実施の形態では、バンク番号設定レジスタ８５は２ビットとなっており、このうち値０，１，２をバンク番号の指定に使用し、値３を退避された以前のバンクの設定値を復帰させる符号として用いている。この例では、アドレス値８６１がバンク番号デコーダ８６に入力されており、アドレスレジスタ８８のアドレス値が初期値の０に復帰するまで、割り込み有効レジスタセット信号８４１が出力されないようになっている。つまり、退避したバンク番号がすべて復帰されたときに初めて割り込み有効レジスタセット信号８４１が出力され、割り込みが有効となる。この点が、図８および図９の実施の形態の構成との違いである。
【００９１】
本実施の形態ではバンク番号退避メモリ８３を複数備えることによって、複数回バンクを切り替えることを可能にし、元のバンクへと復帰するまで割り込み無効状態とすることができる。
【００９２】
ここで、アドレスレジスタ８８、加減算器８９、セレクタ８ａに関連する動作について説明する。加減算器選択信号８９１は、バンク番号を設定する時、すなわちバンク番号値０，１，２を書き込んだ時は加算となり、バンク番号を復帰させる時、すなわちバンク番号３を書き込む時は減算となるように動作を選択する信号である。バンク番号を設定するとき、バンク番号退避用メモリを指し示すアドレス値は、アドレスレジスタ８８の値に１を加算した値がセレクタ８ａにより選択される。退避されるバンク番号が、加算されたアドレス値が指し示すバンク番号退避メモリ番地に退避される。次サイクルでアドレス８８には、１加算された値が記憶される。
【００９３】
バンク番号を復帰させるとき、セレクタ８ａはアドレスレジスタ８８の出力を選択し、アドレスレジスタ８８に記憶されているアドレス値が指し示すバンク退避メモリに記憶されているバンク番号がバンク番号退避データ用バス８７３を通り、バンク番号設定レジスタ８５に復帰される。次サイクルで加減算器８９の値から１減算された値をアドレスレジスタ８８に記憶する。
【００９４】
上記の動作により複数個のバンク番号退避処理を実現している。上記の回路は、ポストインクリメントプリデクリメントのスタック動作を行う回路と等価のものであり、アドレスレジスタ８８はスタックポインタということもできる。
【００９５】
この構成によれば、バンク番号設定および以前のバンク番号の退避・復帰等のバンク機能の設定と割り込み許可禁止の動作を同時に行うことが可能となり、プログラムのコードサイズと実行時間を縮小できる。また、割り込み処理の応答性も改善することができる。また、以前のバンク番号を複数個、退避・復帰可能であり、元のバンクに復帰させるまでに複数回のバンク切替を行うことが可能である。
【００９６】
【発明の効果】
本発明の請求項１、２記載のマイクロプロセッサによれば、バンク有効無効の設定と割り込み許可禁止の動作を同時に行うことが可能となり、プログラムのコードサイズと実行時間を縮小できる。また、割り込み処理の応答性も改善することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態のマイクロプロセッサにおけるバンクアクセス手法を示すフローチャートである。
【図２】本発明の第２の実施の形態のマイクロプロセッサにおけるバンクアクセス手法を示すフローチャートである。
【図３】  (ａ)は本発明の第１の実施の形態のマイクロプロセッサにおけるバンク・割り込み設定レジスタの一例を示す模式図、(ｂ)は同じくレジスタ設定値を示す模式図である。
【図４】本発明の第１の実施の形態のマイクロプロセッサにおけるバンク・割り込み設定回路の一例を示すブロック図である。
【図５】図４のデコーダ真理値表を示す説明図である。
【図６】本発明の第２の実施の形態のマイクロプロセッサにおけるバンク・割り込み設定回路の一例を示すブロック図である。
【図７】図６のデコーダ真理値表を示す説明図である。
【図８】本発明の第２の実施の形態のマイクロプロセッサにおけるバンク番号退避レジスタ付バンク・割り込み設定回路の一例を示すブロック図である。
【図９】図８のデコーダ真理値表を示す説明図である。
【図１０】本発明の第２の実施の形態のマイクロプロセッサにおけるバンク番号退避メモリ付バンク・割り込み設定回路の一例を示すブロック図である。
【図１１】図１０のデコーダ真理値表を示す説明図である。
【図１２】従来のマイクロプロセッサにおけるバンクアクセス手法を示すフローチャートである。
【符号の説明】
１    バンクアクセスシーケンス
１１    割り込み禁止工程
１２    バンク番号設定工程
１３    バンク有効化工程
１４    バンクデータアクセス工程
１５    バンク無効化工程
１６    割り込み許可工程
２    バンクアクセスシーケンス
２１    バンク有効かつ割り込み禁止工程
２２    バンク番号設定工程
２３    バンクデータアクセス工程
２４    バンク無効かつ割り込み許可工程
３    バンクアクセスシーケンス
３１    バンク番号設定かつ割り込み禁止工程
３２    バンクデータアクセス工程
３３    バンク番号復帰かつ割り込み許可工程
４    設定レジスタ
４１    割り込み有効フラグ
４２    バンク無効化フラグ
５１    インストラクションレジスタ
５２    インストラクションデコーダ
５３    バンク無効化レジスタ
５３１    バンク無効化レジスタセット信号
５３２    バンク無効化レジスタクリア信号
５４    割り込み有効レジスタ
５４１    割り込み有効レジスタセット信号
５４２    割り込み有効レジスタクリア信号
６１    インストラクションレジスタ
６２    インストラクションデコーダ
６３    バンク無効化レジスタ
６３１    バンク無効化レジスタセット信号
６３２    バンク無効化レジスタクリア信号
６４    割り込み有効レジスタ
６４１    割り込み有効レジスタセット信号
６４２    割り込み有効レジスタクリア信号
６５    バンク番号設定レジスタ
６５１    バンク番号データバス
６５２    バンク番号設定レジスタライトイネーブル信号
６６    バンク番号デコーダ
７１    インストラクションレジスタ
７２    インストラクションデコーダ
７３    バンク番号退避メモリ
７３１    バンク番号退避メモリライトイネーブル信号
７４    割り込み有効レジスタ
７４１    割り込み有効レジスタセット信号
７４２    割り込み有効レジスタクリア信号
７５    バンク番号設定レジスタ
７５１    バンク番号設定レジスタライトイネーブル信号
７６    バンク番号デコーダ
７７    セレクタ
７７１    バンク番号選択信号
７７２    バンク番号設定データ用バス
７７３    バンク番号退避データ用バス
７７４    バンク番号選択結果
８１    インストラクションレジスタ
８２    インストラクションデコーダ
８３    バンク番号退避メモリ
８３１    バンク番号退避メモリライトイネーブル信号
８３２    バンク番号退避メモリアドレス信号
８４    割り込み有効レジスタ
８４１    割り込み有効レジスタセット信号
８４２    割り込み有効レジスタクリア信号
８５    バンク番号設定レジスタ
８５１    バンク番号設定レジスタライトイネーブル信号
８６    バンク番号デコーダ
８６１    アドレス値
８７    バンク番号セレクタ
８７１    バンク番号選択信号
８７２    バンク番号設定データ用バス
８７３    バンク番号退避データ用バス
８７４    バンク番号選択結果
８８    アドレスレジスタ
８９    加減算器
８９１    加算減算選択信号
８ａ    アドレスセレクタ
【図１】
0004125531.tif 000002
【図２】
0004125531.tif 000003
【図３】
0004125531.tif 000004
【図４】
0004125531.tif 000005
【図５】
0004125531.tif 000006
【図６】
0004125531.tif 000007
【図７】
0004125531.tif 000008
【図８】
0004125531.tif 000009
【図９】
0004125531.tif 000010
【図１０】
0004125531.tif 000011
【図１１】
0004125531.tif 000012
【図１２】
0004125531.tif 000013