(57)【要約】【課題】割込みの発生に応答して退避されたコンテキストの保護に資することができるデータプロセッサを提供する。【解決手段】割り込みを受け付けたときＣＰＵ（２）が所定のコンテキストの退避を行なうのに、スタックポインタレジスタ（ＲＥＧ＃ｎ）とは別のシステムスタックポインタレジスタ（ＳＳＰ）を用い、動作モードに拘わらず記憶保護部が保護する領域を一律に退避先とする。これにより、退避されたコンテキストは割り込み発生時のＣＰＵの動作モードに拘わらず記憶保護部の保護を受けることができる。【選択図】図１
2011070290.tif 000002
【特許請求の範囲】
【請求項１】
メモリの記憶領域に割当てられスタックポインタレジスタの値に基づいて操作されるスタック領域を用いてデータ処理を行なうＣＰＵを備えたデータプロセッサであって、
前記ＣＰＵは、動作モードに応じてメモリの記憶領域に対する記憶保護を行う記憶保護部と、
前記スタックポインタレジスタとは別のレジスタであって、所定のコンテキストの退避を行うときに利用されるシステムスタックポインタレジスタと、
割込みが受け付けられたとき前記システムスタックポインタレジスタを操作して所定のコンテキストの退避を制御すると共に、受け付けられた割り込みによる処理が終了されたとき前記システムスタックポインタレジスタを操作して前記退避されている前記所定のコンテキストの復帰を制御するハードウェア制御ロジック部と、を有し、
前記ハードウェア制御ロジック部は、前記動作モードにかかわらず前記記憶保護部が保護する領域を退避領域とするように前記システムスタックポインタレジスタを操作する、データプロセッサ。
【請求項２】
前記動作モードは特権モード及びユーザモードであり、
前記記憶保護部が保護する領域は前記ＣＰＵが前記特権モードでアクセスする領域および前記ハードウェア制御ロジック部が操作する領域である、請求項１記載のデータプロセッサ。
【請求項３】
前記所定のコンテキストは、プログラムカウンタ及びステータスレジスタが保持する情報を含む、請求項２記載のデータプロセッサ。
【請求項４】
前記ＣＰＵは割り込みを受け付けたとき前記所定のコンテキスト以外のコンテキストを前記スタックポインタレジスタを用いて前記特権モードでスタック領域に退避する、請求項３記載のデータプロセッサ。
【請求項５】
前記スタックポインタレジスタは前記ＣＰＵが有する汎用レジスタの中の一つのレジスタに割当てられる兼用レジスタであり、
前記システムスタックポインタレジスタはＣＰＵが有する専用レジスタである、請求項４記載のデータプロセッサ。
【請求項６】
前記システムスタックポインタレジスタを複数個有し、前記制御ロジックは複数個のシステムスタックポインタレジスタの中の一つを選択して使用する、請求項１記載のデータプロセッサ。
【請求項７】
前記ＣＰＵは、割込みの実行を管理するために割込みレベルデータが格納される割込みマスクレジスタと、
所要の割込みレベルデータが書き込まれるサブ割込みマスクレジスタと、
前記割込みマスクレジスタ及び前記サブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタと、を有し、
前記ＣＰＵが実行する命令セットは前記選択制御レジスタを操作する専用命令を含む、請求項１記載のデータプロセッサ。
【請求項８】
前記ハードウェア制御ロジック部は、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前記割り込みマスクレジスタに書き込む処理を行なう、請求項７記載のデータプロセッサ。
【請求項９】
前記ＣＰＵは、前記選択制御レジスタが保持する選択制御データが第１の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、
前記選択制御レジスタが保持する選択制御データが第２の値であるときは前記サブ割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理する、請求項８記載のデータプロセッサ。
【請求項１０】
前記選択制御データは１ビットのデータである、請求項９記載のデータプロセッサ。
【請求項１１】
前記サブ割込みマスクレジスタには、ＯＳの管理下にあるプログラムが処理する割込みの割込みレベルとＯＳの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される、請求項１０記載のデータプロセッサ。
【請求項１２】
前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである、請求項１１記載のデータプロセッサ。
【請求項１３】
前記ＣＰＵは、前記選択制御レジスタが保持する選択制御データが第１の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、
前記選択制御レジスタが保持する選択制御データが第２の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルと前記サブ割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルとのうちで優先レベルが高い方の割込みレベルデータを用いて割込みの実行を管理する、請求項８記載のデータプロセッサ。
【請求項１４】
前記選択制御データは１ビットのデータである、請求項１３記載のデータプロセッサ。
【請求項１５】
前記サブ割込みマスクレジスタには、ＯＳの管理下にあるプログラムが処理する割込みの割込みレベルとＯＳの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される、請求項１４記載のデータプロセッサ。
【請求項１６】
前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである、請求項１５記載のデータプロセッサ。
【請求項１７】
命令セットで規定される命令を実行してデータ処理を行なうＣＰＵを備えたデータプロセッサであって、
前記ＣＰＵは、割込みの実行を管理するために割込みレベルデータが格納される割込みマスクレジスタと、
所要の割込み優先レベルデータが書き込まれるサブ割込みマスクレジスタと、
前記割込みマスクレジスタ及び前記サブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタと、を有し、
前記命令セットは、前記選択制御レジスタを操作する専用命令を含む、データプロセッサ。
【請求項１８】
前記ＣＰＵは更に、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前記割り込みマスクレジスタに書き込む処理を行なうハードウェア制御ロジック部を有する、請求項１７記載のデータプロセッサ。
【請求項１９】
前記ＣＰＵは、前記選択制御レジスタが保持する選択制御データが第１の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、
前記選択制御レジスタが保持する選択制御データが第２の値であるときは前記サブ割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理する、請求項１８記載のデータプロセッサ。
【請求項２０】
前記選択制御データは１ビットのデータである、請求項１９記載のデータプロセッサ。
【請求項２１】
サブ割込みマスクレジスタには、ＯＳの管理下にあるプログラムが処理する割込みの割込みレベルとＯＳの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される、請求項２０記載のデータプロセッサ。
【請求項２２】
前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである、請求項２１記載のデータプロセッサ。
【請求項２３】
前記ＣＰＵは、前記選択制御レジスタが保持する選択制御データが第１の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、
前記選択制御レジスタが保持する選択制御データが第２の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルと前記サブ割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルとのうちで優先レベルが高い方の割込みレベルデータを用いて割込みの実行を管理する、請求項１８記載のデータプロセッサ。
【請求項２４】
前記選択制御データは１ビットのデータである、請求項２３記載のデータプロセッサ。
【請求項２５】
サブ割込みマスクレジスタには、ＯＳの管理下にあるプログラムが処理する割込みの割込みレベルとＯＳの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される、請求項２４記載のデータプロセッサ。
【請求項２６】
前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである、請求項２５記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータプロセッサが備えるＣＰＵ（中央処理装置）における割り込み制御に関し、例えばスタック領域を用いてデータ処理を行ない、割込みマスクによって割込みの実行を管理する機器制御用途のマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
命令実行中に割込みが発生すると、その割込み要求の割込みレベルが割込みマスクレベルよりも高い場合にＣＰＵは割込みを受け付け、ＣＰＵは割込み発生直前のコンテキストをスタック領域に退避して、割込みによる処理を実行する。これに関連して例えば特許文献１，２がある。
【０００３】
特許文献１には割り込みの発生に応答してコンテキストを退避および復帰する技術が記載される。ここでは、ＣＰUの内部レジスタのデータをストアするメモリとは別にＣＰＵは割り込みの発生に応答してコンテキストを退避する領域としてコンテキスト格納部とその制御部を有する。
【０００４】
特許文献２にはＯＳが管理するタスクごとに専用の実行環境スタックが割り当てられる一方、関数の開始から終了までを１つの単位として共用の関数用実行環境スタックを割り当て、スタック領域の共用化が行えるようにする技術が記載される。例えば、サブ関数の呼び出し要求があったときに、共用の関数用実行環境スタックが使用中かを判断し、使用中の場合はタスクを実行待ち状態に移行させ、使用中で無い場合は現在のタスク実行環境情報をコンテキスト退避領域へ退避させ、サブ関数に割り当てられた共用の関数用実行環境スタックを使用中にし、サブ関数の実行環境情報を関数用実行環境スタックに代入し、それを用いてサブ関数を呼び出す。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２４１９７７号公報
【特許文献２】特開２００７−２５７２５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＣＰＵは動作モードに応じた記憶保護を行っており、例えば特権モードとユーザモードが存在する場合、ユーザモードからは、システムレジスタ等、データプロセッサ内の一部のリソースへのアクセスを制限することができる。ユーザモードでプログラムを実行している最中に割込みを受け付けたとき、コンテキストの退避をハードウェアで自動的に行う場合には退避領域はユーザモードでアクセス可能にされているスタック領域に対して行われる。特権モードで実行される割込みハンドラを用いて全てのコンテキストの退避を行う場合には割込みハンドラの実行環境が特権モードであるからそれによる退避領域は特権モードでアクセス可能にされているスタック領域に対して行われ、ユーザモードによるアクセスが抑制され、この点でコンテキストに対する記憶保護が実現されるが、割込みハンドラによる処理が多くなって割り込み応答性に劣る。一方。前者の場合には、コンテキストの退避をハードウェアで自動的に行うので割込み応答性に優れるが、その半面、不正アクセスやソフトウェアのバグによってコンテキストが改竄され易いという問題がある。
【０００７】
また、割込みを受け付けたときＣＰＵはステータスレジスタの割込みマスクレベルを操作することによって後から発生する割込みを受け付けるか否かを割込みレベルに基づいて制御することになる。したがって、優先的に処理を行なうべき割込みのレベルを高く定義しておくことで、特定の割り込みを優先的に受理することが可能になる。しかしながら、その割込みレベルを所望に設定する場合には、ステータスレジスタの割込みマスクデータをリードし、新たな設定に用いるデータを更にリードし、リードした双方にデータを用いて新たな割込みマスクレベルデータを生成し、これをステータスレジスタに書き戻すための一連のプログラム処理を行わなければならない。その一連の処理を実行するには複数命令の実行が必要になり、割込み応答性が悪化されることになる。
【０００８】
本発明の目的は割込みの発生に応答して退避されたコンテキストの保護に資することができるデータプロセッサを提供することにある。
【０００９】
本発明の別の目的は割り込み応答性を劣化させずに割込みレベルの操作を可能にするデータプロセッサを提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、割り込みを受け付けたときＣＰＵが所定のコンテキストの退避を行なうのに、スタックポインタレジスタとは別のシステムスタックポインタレジスタを用い、動作モードに拘わらず記憶保護部が保護する領域を一律に退避先とする。これにより、退避されたコンテキストは割り込み発生時のＣＰＵの動作モードに拘わらず記憶保護部の保護を受けることができる。
【００１３】
また、割込みマスクレジスタのほかにサブ割込みマスクレジスタを用意すると共に、割込みマスクレジスタ及びサブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタを採用し、ＣＰＵが実行する命令セットには前記選択制御レジスタを操作する専用命令を含めようにする。予めサブ割込みマスクレジスタに所要の割込みレベルを設定しておけば、必要に応じて選択制御レジスタの設定を専用命令で変えるだけで割込み優先レベルの変更が可能になる。
【発明の効果】
【００１４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１５】
すなわち、割込みの発生に応答して退避されたコンテキストの保護に資することができる。
【００１６】
また、割り込み応答性を劣化させずに割込みレベルの操作を可能にすることができる。
【図面の簡単な説明】
【００１７】
【図１】図１は本発明の第１の実施の形態に係るデータプロセッサのブロック図である。
【図２】図２は割込みによるＣＰＵの動作を例示するタイミングチャートである。
【図３】図３はハードウェア退避用スタック領域を採用せずにＣＰＵの動作モードに応じてユーザ用スタック領域又は特権用スタック領域に退避を行う動作を比較例として示すタイミングチャートである。
【図４】図４は図２の動作の一部を更に詳細に例示したものであり、ユーザモードでタスクを実行中に割込みが発生した場合の動作を示すタイミングチャートである。
【図５】図５は図３の動作の一部を更に詳細に例示したものであり、ユーザモードでタスクを実行中に割込みが発生した場合の動作を示すタイミングチャートである。
【図６】図６はスタックポインタレジスタの選択に関する構成を例示するブロック図である。
【図７】図７はスタックポインタに関する別の構成を採用したＣＰＵを例示するブロック図である。
【図８】図８はスタックポインタに関する更に別の構成を採用したＣＰＵを例示するブロック図である。
【図９】図９は本発明の第２の実施の形態に係るデータプロセッサを例示するブロック図である。
【図１０】図１０は割り込みによるＣＰＵの動作フローを示すタイミングチャートである。
【図１１】図１１はハードウェア制御ロジック部により自動で取り込まれた割込みマスクレベルデータを前述の如く複数命令を実行して、リード、モディファイ、ライトのような処理を行なって変更する場合を採用したときの比較例を示すタイミングチャートである。
【図１２】図１２は第２の実施の形態における別のＣＰＵを例示するブロック図である。
【図１３】図１３は複数のサブ割り込みマスクデータレジスタＳＩＭＡＳＫ＃０〜ＳＩＭＡＳＫ＃ｉを採用する場合の例を示すブロック図である。
【図１４】図１４は割込みマスクデータの更新に割込みマスクデータキューを用いる例を示すブロック図である。
【発明を実施するための形態】
【００１８】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１９】
〔１〕本発明の代表的な実施の形態に係るデータプロセッサ（１）は、メモリ（３）の記憶領域に割当てられスタックポインタレジスタ（２０２＿ｎ）の値に基づいて操作されるスタック領域（３０）を用いてデータ処理を行なうＣＰＵ（２，２Ａ，２Ｂ）を備える。前記ＣＰＵは、動作モードに応じてメモリの記憶領域に対する記憶保護を行う記憶保護部と、前記スタックポインタレジスタとは別のレジスタであって、所定のコンテキストの退避を行うときに利用されるシステムスタックポインタレジスタ（２０３）と、割込みが受け付けられたとき前記システムスタックポインタレジスタを操作して所定のコンテキストの退避を制御すると共に、受け付けられた割り込みによる処理が終了されたとき前記システムスタックポインタレジスタを操作して前記退避されている前記所定のコンテキストの復帰を制御するハードウェア制御ロジック部（２３０）と、を有する。前記ハードウェア制御ロジック部は、前記動作モードにかかわらず前記記憶保護部が保護する領域を退避領域とするように前記システムスタックポインタレジスタを操作する。
【００２０】
これにより、退避されたコンテキストは割り込み発生時のＣＰＵの動作モードに拘わらず記憶保護部の保護を受けることができる。
【００２１】
〔２〕項１のデータプロセッサにおいて、例えば前記動作モードは特権モード及びユーザモードであり、前記記憶保護部が保護する領域は前記ＣＰＵが前記特権モードでアクセスする領域および前記ハードウェア制御ロジック部が操作する領域である。したがって、前記制御ロジック部がシステムスタックポインタレジスタを操作して所定のコンテキストの退避を行うときＣＰＵの動作モードはユーザモードであってよい。
【００２２】
〔３〕項２のデータプロセッサにおいて、例えば前記所定のコンテキストは、プログラムカウンタ（２００）及びステータスレジスタ（２０１）が保持する情報を含む。最低限退避すべきプログラムカウンタ及びステータスレジスタの情報以外を任意とすれば、必要に応じてその他のコンテキストの退避を行えばよく、無用なコンテキストの退避によって割込み応答性が阻害される虞を抑制することができる。
【００２３】
〔４〕項３のデータプロセッサにおいて、例えば前記ＣＰＵは割り込みを受け付けたとき前記所定のコンテキスト以外のコンテキストを前記スタックポインタレジスタを用いて前記特権モードでスタック領域に退避する。前記所定のコンテキスト以外のコンテキストを退避した場合にも記憶保護部による保護を受けることができる。
【００２４】
〔５〕項１乃至４の何れかのデータプロセッサにおいて、例えば前記スタックポインタレジスタは前記ＣＰＵが有する汎用レジスタの中の一つのレジスタ（２０２＿ｎ，ＲＥＧ＃ｎ）に割当てられる兼用レジスタである。前記システムスタックポインタレジスタはＣＰＵが有する専用レジスタである。
【００２５】
〔６〕項１乃至５の何れかのデータプロセッサにおいて、例えば前記システムスタックポインタレジスタを複数個有し（２０３＿０〜２０３＿ｍ）、前記制御ロジックは複数個のシステムスタックポインタレジスタの中の一つを選択して使用する。
【００２６】
〔７〕項１乃至６の何れかのデータプロセッサにおいて、例えば前記ＣＰＵは更に、割込みの実行を管理するために割込みレベルデータが格納される割込みマスクレジスタ（ＩＭＡＳＫ）と、所要の割込みレベルデータが書き込まれるサブ割込みマスクレジスタ（ＳＩＭＡＳＫ）と、前記割込みマスクレジスタ及び前記サブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタ（ＳＩ）と、を有し、前記ＣＰＵが実行する命令セットは前記選択制御レジスタを操作する専用命令を含む。
【００２７】
予めサブ割込みマスクレジスタに所要の割込みレベルを設定しておけば、必要に応じて選択制御レジスタの設定を専用命令で変えるだけで割込み優先レベルの変更が可能になる。したがって、割り込み応答性を劣化させずに割込みレベルの操作が可能になる。
【００２８】
〔８〕項７のデータプロセッサにおいて、例えば前記ハードウェア制御ロジック部は更に、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前記割り込みマスクレジスタに書き込む処理を行なう。これにより、受け付けられた割り込みの割込みレベルよりも低い割り込みの受付を抑止するプリミティブな割り込みの実行管理を行うための割込みマスクレジスタに対する操作をハードウェア制御ロジック部を用いて効率的に行うことができる。このとき、その割込みによる処理を特に優先させたい場合などには割込みマスクレジスタを更に操作してもよいが、項７で説明した如く、選択制御レジスタに対する書き込みを行うだけで、予めサブ割込みマスクレジスタに設定した割込みレベルを用いて割り込みの実行管理を行うことが可能になる。割込みマスクレジスタを更に操作しようとする場合には複数の命令を実行して当該レジスタに対するリード・モディファイ・ライトの動作を行わなければならない。
【００２９】
〔９〕項８のデータプロセッサにおいて、例えば前記ＣＰＵは、前記選択制御レジスタが保持する選択制御データが第１の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、前記選択制御レジスタが保持する選択制御データが第２の値であるときは前記サブ割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理する。
【００３０】
〔１０〕項８又は９のデータプロセッサにおいて前記選択制御データは例えば１ビットのデータである。
【００３１】
〔１１〕項８乃至１０の何れかのデータプロセッサにおいて、例えばサブ割込みマスクレジスタには、ＯＳの管理下にあるプログラムが処理する割込みの割込みレベルとＯＳの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される。サブ割込みマスクレジスタに前記境界のレベルを示す割り込みレベルデータを設定し、これを割り込みの実行管理に用いれば、受け付けられた割込み処理がＯＳ管理下の他のプログラムからの割り込みに邪魔されることを確実に阻止することができる。
【００３２】
〔１２〕項８乃至１１の何れかのデータプロセッサにおいて、前記割込みマスクレジスタ及び選択制御レジスタの夫々は例えばステータスレジスタの特定ビットが割当てられたレジスタである。
【００３３】
〔１３〕項８のデータプロセッサにおいて、例えば前記ＣＰＵは、前記選択制御レジスタが保持する選択制御データが第１の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、前記選択制御レジスタが保持する選択制御データが第２の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルと前記サブ割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルとのうちで優先レベルが高い方の割込みレベルデータを用いて割込みの実行を管理する。
【００３４】
〔１４〕項１３のデータプロセッサにおいて、前記選択制御データは例えば１ビットのデータである。
【００３５】
〔１５〕項１３又は１４のデータプロセッサにおいて、前記サブ割込みマスクレジスタには、ＯＳの管理下にあるプログラムが処理する割込みの割込みレベルとＯＳの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される。
【００３６】
〔１６〕項１３乃至１５の何れかのデータプロセッサにおいて、前記割込みマスクレジスタ及び選択制御レジスタの夫々は例えばステータスレジスタの特定ビットが割当てられたレジスタである。
【００３７】
〔１７〕本発明の別の実施の形態に係データプロセッサは、命令セットで規定される命令を実行してデータ処理を行なうＣＰＵ（２Ｃ，２Ｄ）を備える。前記ＣＰＵは、割込みの実行を管理するために割込みレベルデータが格納される割込みマスクレジスタ（ＩＭＡＳＫ）と、所要の割込み優先レベルデータが書き込まれるサブ割込みマスクレジスタ（ＳＩＭＡＳＫ）と、前記割込みマスクレジスタ及び前記サブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタ（ＳＩ）と、を有する。前記命令セットは、前記選択制御レジスタを操作する専用命令を含む。
【００３８】
予めサブ割込みマスクレジスタに所要の割込みレベルを設定しておけば、必要に応じて選択制御レジスタの設定を専用命令で変えるだけで割込み優先レベルの変更が可能になる。したがって、割り込み応答性を劣化させずに割込みレベルの操作が可能になる。
【００３９】
〔１８〕項１７のデータプロセッサにおいて、例えば前記ＣＰＵは更に、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前記割り込みマスクレジスタに書き込む処理を行なうハードウェア制御ロジック部（２３０）を有する。これにより、受け付けられた割り込みの割込みレベルよりも低い割り込みの受付を抑止するプリミティブな割り込みの実行管理を行うための割込みマスクレジスタに対する操作をハードウェア制御ロジック部を用いて効率的に行うことができる。このとき、その割込みによる処理を特に優先させたい場合などには割込みマスクレジスタを更に操作してもよいが、項７で説明した如く、選択制御レジスタに対する書き込みを行うだけで、予めサブ割込みマスクレジスタに設定した割込みレベルを用いて割り込みの実行管理を行うことが可能になる。割込みマスクレジスタを更に操作しようとする場合には複数の命令を実行して当該レジスタに対するリード・モディファイ・ライトの動作を行わなければならない。
【００４０】
〔１９〕項１７又は１８のデータプロセッサにおいて、例えば前記ＣＰＵは、前記選択制御レジスタが保持する選択制御データが第１の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、前記選択制御レジスタが保持する選択制御データが第２の値であるときは前記サブ割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理する。
【００４１】
〔２０〕項１８又は１９のデータプロセッサにおいて、前記選択制御データは例えば１ビットのデータである。
【００４２】
〔２１〕項１８乃至２０の何れかのデータプロセッサにおいて、前記サブ割込みマスクレジスタには、ＯＳの管理下にあるプログラムが処理する割込みの割込みレベルとＯＳの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される。サブ割込みマスクレジスタに前記境界のレベルを示す割り込みレベルデータを設定し、これを割り込みの実行管理に用いれば、受け付けられた割込み処理がＯＳ管理下の他のプログラムからの割り込みに邪魔されることを確実に阻止することができる。
【００４３】
〔２２〕項１８乃至２１の何れかのデータプロセッサにおいて、前記割込みマスクレジスタ及び選択制御レジスタの夫々は例えばステータスレジスタ（２０１）の特定ビットが割当てられたレジスタである。
【００４４】
〔２３〕項１８のデータプロセッサにおいて、前記ＣＰＵは、前記選択制御レジスタが保持する選択制御データが第１の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、前記選択制御レジスタが保持する選択制御データが第２の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルと前記サブ割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルとのうちで優先レベルが高い方の割込みレベルデータを用いて割込みの実行を管理する。
【００４５】
〔２４〕項２３のデータプロセッサにおいて、前記選択制御データは例えば１ビットのデータである。
【００４６】
〔２５〕項２３又は２４のデータプロセッサにおいて、例えば前記サブ割込みマスクレジスタには、ＯＳの管理下にあるプログラムが処理する割込みの割込みレベルとＯＳの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される。
【００４７】
〔２６〕項２３乃至２５の何れかのデータプロセッサにおいて、前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである。
【００４８】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００４９】
《実施の形態1》
図１には本発明の一実施の形態に係るデータプロセッサが示させる。同図に示されるデータプロセッサ(ＭＣＵ)１は、特に制限されないが、代表的に図示されたＣＰＵ（中央処理装置）２、割込みコントローラ（ＩＮＴＣ）４、及びメモリ（ＭＲＹ）３を有し、更に図示は省略するがＣＰＵ１によって制御される入出力コントローラなどの周辺回路やアクセラレータなどの回路モジュールを備え、それらはバス５を介してインタフェースされる。メモリ３は例えば・ランダム・アクセス・メモリ）又はＳＤＲＡＭ（シンクロナス・ダイナミック・ランダム・アクセス・メモリ）などによって構成される。データプロセッサ1は、特に制限されないが、公知の相補型ＭＯＳ集積回路製造技術によって単結晶シリコンのような１個の半導体基板に形成される。
【００５０】
ＣＰＵ２はレジスタセット２０、命令フェッチ部（ＩＦ）２１、命令デコーダ（ＩＤ）２２、シーケンサ（ＳＥＱ）２３、実行部（ＥＸ）２４、メモリ管理ユニット（ＭＭＵ）２５を有し、メモリ３に割当てたスタック領域３０を用いてデータ処理を行なう。
【００５１】
レジスタセット２０には例えば、次に実行すべき命令アドレスを保持するプログラムカウンタ（ＰＣ）２００、ＣＰＵ２の内部状態を示す情報が保持されるステータスレジスタ（ＳＲ）２０１、汎用レジスタ（ＲＥＧ＃０〜ＲＥＧ＃ｎ）２０２_０〜２０２_ｎ、及びシステムスタックポインタ（ＳＳＰ）２０３を含む。ステータスレジスタ２０１はＣＰＵ２の動作モードデータや割り込みマスクデータなどを保持する。
【００５２】
メモリマネージメントユニット２５はメモリ３の物理アドレスとＣＰＵ２の仮想アドレスとの対応を管理すると共ＳＳＲＡＭ（シンクロナス・スタティックに、ＣＰＵ２の動作モードやＣＰＵ２が実行するプログラムのプロセスＩＤ等に従った記憶保護を行う。特に制限されないが、メモリマネージメントユニット２５は複数のアドレス変換エントリを連想記憶によって保持するアドレス変換バッファ（図示せず）を備える。アドレス変換エントリは、仮想ページアドレスとこれに対応される物理ページアドレスとのペアと共に、当該仮想ページアドレスに対するアクセス権原を特定するために当該仮想ページアドレスのアクセスが許容されるＣＰＵの動作モード及びプロセスＩＤを示す保護情報を備える。メモリ管理ユニット２５は、ＣＰＵ２によるアクセスに際して仮想ページアドレスの一部を用いてアドレス変換バッファを連想検索し、連想検索されたアドレス変換エントリを用いて仮想ページアドレスを物理ページアドレスに変換すると共に、そのときのＣＰＵの動作モードやプロセスＩＤ等が当該アドレス変換エントリの保護情報の範囲内であるとき初めて、当該仮想アドレスに対応される物理アドレスがバス５に供給されて、メモリ３などに対するアクセスが行われる。
【００５３】
ＣＰＵ２の動作モードには、特に制限されないが、特権モードとユーザモードがある。特権モードは実行中のプロセスがＯＳ（オペレーティング・システム）のプロセスであることを意味し、ユーザモードは実行中のプロセスがＯＳの管理下で実行されユーザプロセスであることを意味する。例えばステータスレジスタ２０１の動作モードデータの値がＣＰＵの動作モードを示す。このＣＰＵの動作モードは上記記憶保護によって特権モードでのみ操作可能にされ、ユーザモードでは操作不可能とされる。ユーザモードから特権モードへの移動はシステムコールによって行われる。
【００５４】
命令フェッチ部２１はプログラムカウンタ２００の値に基づいて命令をフェッチする。命令デコーダ２２はフェッチされた命令をデコードして内部制御信号を生成してレジスタ部２０やシーケンサ２３等の制御を行う。シーケンサ２は入力されたデコード信号やステータスレジスタなどの状態に応じて内部の動作制御手順を生成する。実行部２４やレジスタ部２０はその制御手順に従ってアドレスやデータの演算並びにデータの内部転送を行って命令を実行する。
【００５５】
割込みコントローラ４は図示を省略する内部回路モジュールやデータプロセッサの外部から割込み要求があると、競合する場合にはそれを調停して、ＣＰＵ２に割込み信号ＩＮＴを出力し、ＣＰＵ２のプログラム処理をその割込み要因に応じた割り込み処理に遷移させる。
【００５６】
ＣＰＵ２によるプログラム処理では上述の如くスタック領域３０を用いる。スタック領域３０は、ユーザモードで使用されるユーザ用スタック領域ＵＳＳＴＣ、特権モードで使用される特権用スタック領域ＰＶＳＴＣ、及び割り込みの受付に応答して自動的に起動されるハードウェア退避動作に用いられるハードウェア退避用スタック領域ＳＶＳＴＣがある。
【００５７】
割り込みが発生したときのコンテキストの退避について詳述する。割込み信号ＩＮＴによって割込みが発生されると、シーケンサ２３は発生した割り込みの割込みレベルがステータスレジスタ２０１の割込みマスクデータによる割込みレベルよりも高いとき当該割り込みを受け付け、現在処理中のプロセスのコンテキストのうち所定のコンテキスト例えばプログラムカウンタ及びステータスレジスタの値をハードウェア退避動作によってスタック領域３０に退避する。ハードウェア退避動作ではハードウェア制御ロジック部（ＨＷＬ）２３０がシステムスタックポインタレジスタＳＳＰを用いてハードウェア退避用スタック領域ＳＶＳＴＣに所定のコンテキストを退避する。したがって、ハードウェア退避動作を行うとき、ＣＰＵ２の動作モードがユーザモードであっても所定のコンテキストはユーザ用スタック領域には退避されず、ユーザモードによる自由なアクセスが制限されるという意味で特権モードによる保護と同等の保護を受けるハードウェア退避用スタック領域ＳＶＳＴＣに退避される。仮に、割込み受け付けに応答してステータスレジスタのＣＰＵの動作モードデータがユーザモードから特権モードに書き換え完了されていない状態で汎用レジスタ（ＲＥＧ＃ｎ）２０２＿ｎに割当てられるスタックポインタレジスタを用いたハードウェア退避動作を行った場合にはユーザ用スタック領域に退避が行われ、退避されたデータに対してＭＭＵ２５による強力な保護が得られなくなる。
【００５８】
上記システムスタックポインタレジスタＳＳＰを用いたハードウェア退避動作に並行して或いはその後に、ハードウェア制御ロジック部を用いてステータスレジスタの割込みマスクデータに当該割込みの割込みレベルを反映して、当該割込みレベルよりもレベルの低い新たな割り込みによって今回の割込み処理が中断されないようにする。ＣＰＵの動作モードが特権モードに切換わった後は、割込みハンドラを用いたソフトウェア退避動作が必要に応じて行われる。ソフトウェア退避動作にはスタックポインタレジスタ（ＲＥＧ＃ｎ）を用いて、特権用スタック領域にその他のコンテキスト例えば汎用レジスタの値等の退避が行われる。
【００５９】
必要な退避処理が完了した後は、ＣＰＵ２は受け付けられた割込みによって要求されたユーザプログラム等をユーザモードで実行する。受け付けられた割り込みによる処理が終了されたときは、先ず、前記ソフトウェア退避処理で退避されたその他のコンテキストを先ずＲＥＧ＃ｎのスタックポインタを用いて復帰し、次いで、ハードウェア制御ロジック部が退避されている所定のコンテキストをＰＣやＳＲに復帰する処理を行なう。
【００６０】
図２には割込みによるＣＰＵ２の動作が例示される。ユーザモードのＣＰＵ２はユーザ用スタック領域ＵＳＳＴＣを用いてタスク１を実行している。このとき割込みＡが発生して受け付けられると、ハードウェア制御ロジック部２３０がタスク１の所定のコンテキスト、即ちプログラムカウンタ（ＰＣ）及びステータスレジスタ（ＳＲ）の値をハードウェア退避用スタック領域ＳＶＳＴＣに格納する。このときシステムスタックポインタＳＳＰをスタックポインタに用いる。退避の後にたとえば割込みハンドラとしてのＩＳＲ（Interrupt Service Routine）−Ａを特権モードで実行する。特権モードではレジスタＲＥＧ＃ｎをスタックポインタとして特権用スタック領域ＰＶＳＴＣが用いられる。更にここで、割込みＢが発生して受け付けられると、ハードウェア制御ロジック部２３０がシステムスタックポインタＳＳＰを用いてＩＳＲ−Ａの所定のコンテキスト、即ちプログラムカウンタ（ＰＣ）及びステータスレジスタ（ＳＲ）の値をハードウェア退避用スタック領域ＳＶＳＴＣに格納する。退避の後にＩＳＲ（Interrupt Service Routine）＿Ｂの割り込み処理をユーザモードで実行する。ユーザモードではレジスタＲＥＧ＃ｎをスタックポインタとしてユーザ用スタック領域ＵＳＳＴＣが用いられる。レジスタＲＥＧ＃ｎはユーザモード、特権モードに応じて、夫々の処理プログラムが初期設定して使用する。
【００６１】
図３にはハードウェア退避用スタック領域を採用せずにＣＰＵの動作モードに応じてユーザ用スタック領域又は特権用スタック領域に退避を行う動作が比較例として示される。ユーザモードのＣＰＵはユーザ用スタック領域ＵＳＳＴＣを用いてタスク１を実行している。このとき割込みＡが発生して受け付けられると、ハードウェア制御ロジック部がタスク１の所定のコンテキスト例えばプログラムカウンタ（ＰＣ）及びステータスレジスタ（ＳＲ）の値をユーザ用スタック領域ＵＳＳＴＣに格納する。このときレジスタＲＥＧ＃ｎをスタックポインタに用いる。退避の後に例えば割込みハンドラとしてのＩＳＲ（Interrupt Service Routine）−Ａを特権モードで実行する。特権モードではレジスタＲＥＧ＃ｎをスタックポインタとして特権用スタック領域ＰＶＳＴＣが用いられる。更にここで、割込みＢが発生して受け付けられると、レジスタＲＥＧ＃ｎをスタックポインタとしてＩＳＲ−Ａの所定のコンテキストとして例えばプログラムカウンタ（ＰＣ）及びステータスレジスタ（ＳＲ）の値を特権用スタック領域ＰＶＳＴＣに格納する。退避の後にＩＳＲ（Interrupt Service Routine）＿Ｂの割り込み処理をユーザモードで実行する。ユーザモードではレジスタＲＥＧ＃ｎをスタックポインタとしてユーザ用スタック領域ＵＳＳＴＣが用いられる。図３の場合にはＰＣやＳＲの値などの所定のコンテキストは割込み受付時のＣＰＵの動作モードに応じてユーザ用スタック領域ＵＳＳＴＣにも退避される結果、退避されたコンテキストに対する不正アクセスや改竄の虞がある。
【００６２】
図４には図２の動作の一部を更に詳細に例示したものであり、ここではユーザモードでタスクを実行中に割込みが発生した場合の動作が示される。ユーザモードのＣＰＵ２がユーザ用スタック領域ＵＳＳＴＣを用いてユーザプログラムを実行中に割り込みが発生し、それが受け付けられるとハードウェア制御ロジック部２３０がシステムスタックポインタ（ＳＳＰ）を用いてＰＣやＳＡＲ等の所定のコンテキストをハードウェア退避用スタック領域ＳＶＳＴＣに退避する。その後、割込みハンドラの実行に分岐し、特権モードでＣＰＵ２が残りのコンテキストを特権用スタック領域に退避する。この退避動作は割込みハンドラによるソフトウェア処理で行なわれる。次いでＣＰＵ２は要求された割込み処理を実行し、実行を完了すると、特権用スタック領域ＰＶＳＴＣに退避してあるコンテキストをソフトウェア処理で復帰し、ハンドラ終了命令を実行してから、今度は、ハードウェア退避用スタック領域ＳＶＳＴＣに退避してあるＰＣやＳＲ等の所定のコンテキストをハードウェア制御ロジック部２３０がシステムスタックポインタ（ＳＳＰ）を用いて復帰する。その後、ユーザプログラムの処理に分岐し、割込み発生直前の処理に復帰する。ＨＷはハードウェア制御ロジック部によるハードウェア処理を意味し、ＳＷはソフトウェア処理を意味する。
【００６３】
図５には図３の動作の一部を更に詳細に例示したものであり、ここではユーザモードでタスクを実行中に割込みが発生した場合の動作が示される。ユーザモードのＣＰＵ２がユーザ用スタック領域ＵＳＳＴＣを用いてユーザプログラムを実行中に割り込みが発生し、それが受け付けられるとハードウェア制御ロジック部２３０がレジスタＲＥＧ＃ｎをスタックポインタに用いてＰＣやＳＡＲ等の所定のコンテキストをユーザ用スタック領域ＵＳＳＴＣに退避する。その後、割込みハンドラの実行に分岐し、特権モードでＣＰＵ２が残りのコンテキストを特権用スタック領域に退避する。この退避動作は割込みハンドラによるソフトウェア処理で行なわれる。次いでＣＰＵ２は要求された割込み処理を実行し、実行を完了すると、特権用スタック領域ＰＶＳＴＣに退避してあるコンテキストをソフトウェア処理で復帰し、ハンドラ終了命令を実行してから、今度は、ユーザ用スタック領域ＳＶＳＴＣに退避してあるＰＣやＳＡＲ等の所定のコンテキストをハードウェア制御ロジック部２３０がレジスタＲＥＧ＃ｎをスタックポインタとして用いることによって復帰する。その後、ユーザプログラムの処理に分岐し、割込み発生直前の処理に復帰する。
【００６４】
図４と図５を比べても明らかなように、図５のようにハードウェア退避用スタック領域を採用しない場合にはＣＰＣやＳＲの値などの所定のコンテキストは割込み受付時のＣＰＵの動作モードに応じてユーザ用スタック領域ＵＳＳＴＣにも退避される結果、退避されたコンテキストに対する保護が不十分になる。図４の場合は、ハードウェア退避用スタック領域はＭＭＵによってユーザによるアクセスが制限されているから、その保護は図５に比べて優れている
図６にはスタックポインタレジスタの選択に関する構成が例示される。以上の説明ではハードウェア制御ロジック部２３０による退避／復帰にはシステムスタックポインタレジスタＳＳＰを用い、その他の動作では汎用レジスタＲＥＧ＃ｎをスタックポインタレジスタとして使用するものとして説明した。図６にはそのための具体的な構成が例示され、例えばハードウェア制御ロジック部２３０からの選択信号に従ってセレクタ２１０でシステムスタックポインタレジスタＳＳＰ又は汎用レジスタＲＥＧ＃ｎレジスタの出力を選択する。ハードウェア制御ロジック部２３０によるハードウェア退避用スタック領域ＳＶＳＴＣを用いる退避／復帰動作を行うときシステムスタックポインタレジスタ（ＳＳＰ）２０３の出力を選択し、それ以外の場合にはレジスタＲＥＧ＃ｎの出力を選択する。
【００６５】
図７にはスタックポインタに関する別の構成を採用したＣＰＵ２Ａが例示される。ＣＰＵ２Ａは複数個のシステムスタックポインタレジスタ（ＳＳＰ）２０３＿０〜２０３＿ｎを有し、ハードウェア制御ロジック部２３０からの選択信号及びステータスレジスタ２０１の値に従ってセレクタ２１１でシステムスタックポインタレジスタＳＳＰ又は汎用レジスタＲＥＧ＃ｎの出力を選択する。ここでは、異なるＯＳ（オペレーティングシステム）によって管理されるプログラムのグループ（ドメイン）が複数ある場合を想定し、ハードウェア制御ロジック部２３０によるハードウェア退避用スタック領域ＳＶＳＴＣを用いる退避／復帰を行う場合にはそのときのドメインに応じてシステムスタックポインタレジスタ（ＳＳＰ）２０３＿０〜２０３＿ｎの中の一つのレジスタの出力を選択し、それ以外の場合にはレジスタＲＥＧ＃ｎの出力を選択する。ドメインに応ずる選択はＳＲのドメインＩＤを用いる。システムスタックポインタレジスタＳＳＰ又は汎用レジスタＲＥＧ＃ｎの何れの出力を選択するかはハードウェア制御ロジック部２３０からの選択信号によって制御される。
【００６６】
図８にはスタックポインタに関する更に別の構成を採用したＣＰＵ２Ｂが例示される。ＣＰＵ２Ｂはハードウェア制御ロジック部によるハードウェア退避／復帰用のシステムスタックポインタレジスタ（ＳＳＰ）２０３の他に特権モードにおけるスタックポインタ動作に用いる特権用スタックポインタ（ＰＳＰ）２０４を有し、レジスタＲＥＧ＃ｎはその他のスタックポインタ動作に用いられる。セレクタ２１２はＳＲのモードビットとハードウェア制御ロジック部２３０からの選択信号を入力し、特権モードであればＰＳＰ２０４の出力を選択し、ユーザモードでハードウェア退避用スタック領域ＳＶＳＴＣを用いる退避／復帰を行う場合にはＳＳＰ２０３の出力が選択され、それ以外の場合にはレジスタＲＥＧ＃ｎの出力が選択されて、スタック領域に対するスタックポインタ動作が行われる。
【００６７】
尚、図６乃至図８においてレジスタ部２０のレジスタに対する書き込み経路を明示していないが、例えばＣＰＵの命令でレジスタ指定を行って任意の値を書き込むことが可能になっている。
【００６８】
《実施の形態２》
図９には本発明の別の実施の形態に係るデータプロセッサが示させる。同図に示されるデータプロセッサ(ＭＣＵ)１Ａは、特に制限されないが、代表的に図示されたＣＰＵ（中央処理装置）２Ｃ、割込みコントローラ（ＩＮＴＣ）４、及びメモリ（ＭＲＹ）３を有し、更に図示は省略するがＣＰＵ２Ｃによって制御される入出力コントローラなどの周辺回路やアクセラレータなどの回路モジュールを備え、それらはバス５を介してインタフェースされる。メモリ３は例えばＳＳＲＡＭ（シンクロナス・スタティック・ランダム・アクセス・メモリ）又はＳＤＲＡＭ（シンクロナス・ダイナミック・ランダム・アクセス・メモリ）などによって構成される。データプロセッサ1は、特に制限されないが、公知の相補型ＭＯＳ集積回路製造技術によって単結晶シリコンのような１個の半導体基板に形成される。
【００６９】
ＣＰＵ２はレジスタセット２０、命令フェッチ部（ＩＦ）２１、命令デコーダ（ＩＤ）２２、シーケンサ（ＳＥＱ）２３、実行部（ＥＸ）２４、メモリ管理ユニット（ＭＭＵ）２５を有し、例えばメモリ３に割当てたスタック領域を用いてデータ処理を行なう。
【００７０】
レジスタセット２０には例えば、次に実行すべき命令アドレスを保持するプログラムカウンタ（ＰＣ）２００、ＣＰＵ２の内部状態を示す情報が保持されるステータスレジスタ（ＳＲ）２０１、汎用レジスタ（ＲＥＧ＃０〜ＲＥＧ＃ｎ）２０２_０〜２０２_ｎ、及びサブ割込みマスクレジスタ（ＳＩＭＡＳＫ）２０６を含む。ステータスレジスタ２０１はＣＰＵ２の動作モードデータ、割り込みマスクデータＩＭＡＳＫ、選択制御ビットＳＩなどを保持する。
【００７１】
メモリマネージメントユニット２５はメモリ３の物理アドレスとＣＰＵ２Ｃの仮想アドレスとの対応を管理すると共に、ＣＰＵ２Ｃの動作モードやＣＰＵ２Ｃが実行するプログラムのプロセスＩＤ等に従った記憶保護を行う。特に制限されないが、メモリマネージメントユニット２５は複数のアドレス変換エントリを連想記憶によって保持するアドレス変換バッファ（図示せず）を備える。アドレス変換エントリは、仮想ページアドレスとこれに対応される物理ページアドレスとのペアと共に、当該仮想ページアドレスに対するアクセス権原を特定するために当該仮想ページアドレスのアクセスが許容されるＣＰＵの動作モード及びプロセスＩＤを示す保護情報を備える。メモリ管理ユニット２５は、ＣＰＵ２Ｃによるアクセスに際して仮想ページアドレスの一部を用いてアドレス変換バッファを連想検索し、連想検索されたアドレス変換エントリを用いて仮想ページアドレスを物理ページアドレスに変換すると共に、そのときのＣＰＵ２Ｃの動作モードやプロセスＩＤ等が当該アドレス変換エントリの保護情報の範囲内であるとき初めて、当該仮想アドレスに対応される物理アドレスがバス５に供給されて、メモリ３などに対するアクセスが行われる。
【００７２】
ＣＰＵ２Ｃの動作モードには、特に制限されないが、特権モードとユーザモードがある。特権モードは実行中のプロセスがＯＳ（オペレーティング・システム）のプロセスであることを意味し、ユーザモードは実行中のプロセスがＯＳの管理下で実行されユーザプロセスであることを意味する。例えばステータスレジスタ２０１の動作モードデータの値がＣＰＵの動作モードを示す。このＣＰＵの動作モードは上記記憶保護によって特権モードでのみ操作可能にされ、ユーザモードでは操作不可能とされる。ユーザモードから特権モードへの移動はシステムコールによって行われる。
【００７３】
命令フェッチ部２１はプログラムカウンタ２００の値に基づいて命令をフェッチする。命令デコーダ２２はフェッチされた命令をデコードして内部制御信号を生成してレジスタ部２０やシーケンサ２３等の制御を行う。シーケンサ２は入力されたデコード信号やステータスレジスタなどの状態に応じて内部の動作制御手順を生成する。実行部２４やレジスタ部２０はその制御手順に従ってアドレスやデータの演算並びにデータの内部転送を行って命令を実行する。
【００７４】
割込みコントローラ４は図示を省略する内部回路モジュールやデータプロセッサの外部から割込み要求があると、競合する場合にはそれを調停して、ＣＰＵ２Ｃに割込み信号ＩＮＴを出力する。これによって、シーケンサ２３は発生した割り込みの割込みレベルがステータスレジスタ２０１の割込みマスクデータＩＭＡＳＫによる割込みレベルよりも高いとき当該割り込みを受け付け、実施の形態１で説明したような退避処理を行ない、更に割り込みマスクデータＩＭＡＳＫの更新を行なった後に、プログラム処理をその割込み要因に応じた割り込み処理に遷移させる。
【００７５】
割り込みマスクデータＩＭＡＳＫの更新について説明する。例えば前記ハードウェア制御ロジック部２３０は更に、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前ステータスレジスタ（ＳＲ）２０１に新たな割込みマスクデータＩＭＡＳＫとして書き込む処理を行なう。即ち、受け付けられた割り込みの割込みレベルよりも低い割り込みの受付を抑止するプリミティブな割り込みの実行管理を行うための割込みマスクデータＩＭＡＳＫに対する操作をハードウェア制御ロジック部２３０を用いて効率的に行うことができる。このとき、その割込みによる処理を特に優先させたい場合などには割込みマスクレジスタを更に操作することが必要になる。その操作を割り込みハンドラ等のソフトウェアを用いて行う場合には、ステータスレジスタ（ＳＲ）２０１のリード、リードしたデータをモディファイする演算処理、処理された新たな割り込みマスクデータをステータスレジスタ（ＳＲ）２０１にライト、などの処理を行なうために複数の命令を実行しなければならず、これによって割り込み応答性が悪化する。以下において、割り込みの実行管理を行うための割込みマスクデータＩＭＡＳＫの操作を効率化する構成について詳述する。
【００７６】
前記レジスタ部２０が備えるサブ割込みマスクレジスタ（ＳＩＭＡＳＫ）２０６は特権モードにおけるＣＰＵ２Ｃの命令実行によってアクセスされるレジスタであり、前記ステータスレジスタ（ＳＲ）２０１の割込みマスクデータに代えて利用可能にされる割込みレベルデータが格納される。図９の例では、セレクタ２１４によってステータスレジスタ（ＳＲ）２０１の割込みマスクデータ又はサブ割込みマスクレジスタ（ＳＩＭＡＳＫ）２０６の割込みレベルデータが選択されてシーケンサ２３０に供給される。何れを選択するかはステータスレジスタ（ＳＲ）２０１の選択制御ビットＳＩによって決定される。例えばＳＩ＝０のとき、ＩＭＡＳＫを選択し、ＳＩ＝１のときＳＩＭＡＳＫを選択する。ＣＰＵ２Ｃの命令セットにはステータスレジスタ（ＳＲ）２０１のＳＩビットを操作する専用命令を含む。このＳＩ操作命令は例えば特定のオペレーションコードとイミディエイトデータフィールドを有し、当該オペレーションコードはＳＲのＳＩにイミディエイトデータフィールドの値を書き込む処理を実行させる。これにより、ハードウェア制御ロジック部２３０で自動的にＳＲのＩＭＡＳＫが書換えられたとき必要に応じて割込みハンドラでそれを所望に書換えるときには前記ＳＩ操作命令を1命令実行するだけでよい当然、システムの初期化動作などで予めサブ割込みマスクレジスタ（ＳＩＭＡＳＫ）２０６に所望の割込みレベルを書き込んでおくことは必要である。いずれにしてみ、割り込み受付からＩＭＡＳＫを変更するまでには最短で当該ＳＩビット操作命令を1命令実行するだけでよい。前述の如く複数命令を実行して、リード、モディファイ、ライトのような処理を行なってＩＭＡＳＫを変更する場合に比べて、処理時間を短縮することができる。
【００７７】
図１０には割り込みによるＣＰＵ２Ｃの動作フローチャートが例示される。ここでは、前述のＩＭＡＳＫを変更する処理時間の短縮が割込み応答性の向上に資することを示す。
【００７８】
ＣＰＵ２Ｃがタスク１を実行しているとき割込みＡが発生して受け付けられると、ハードウェア制御ロジック部２３０は自動的に所定のコンテキストの退避処理を行なうと共に、当該受け付けられた割り込みの割込みレベルデータを割込みマスクデータＩＭＡＳＫとしてステータスレジスタ２０１に書き込む。これによってＣＰＵ２Ｃは割込みハンドラとしてのＩＳＲ（Interrupt Service Routine）−Ａを実行する。ここで割込みレベルはＯＳ管轄外のカテゴリ１（Ｃａｔ．１）と、ＯＳ管轄内のカテゴリ２（Ｃａｔ．２）に大別され、Ｃａｔ．１は高い割込みレベルが与えられ、Ｃａｔ．２には低い割込みレベルが与えられる。割り込みＡが発生したときの割込みレベルは例えばＣａｔ．２であり、その割り込みレベルは割込みマスクデータＩＭＡＳＫとしてステータスレジスタ２０１に自動的に書き込みされる。例えばＩＳＲ−Ａの割込みハンドラによる処理はＣＳ（クリティカルセクションセクション）とされ、例えばＣａｔ．２の割り込みを一切禁止して実行されるべき処理とされる。したがって、ＩＳＲ−ＡにおけるＣＳＡの処理を開始するに当たって、ＳＲ２０１の割込みマスクデータＩＭＡＳＫはＣａｔ．１とＣａｔ．２との境界のレベル（閾値割込みレベル）に変更しておくことが必要になり、その変更の処理中はＣａｔ．１及びＣａｔ．２の全ての割り込みを禁止して行なうことが必要であるから、その処理を短時間で完了することが、途中で発生する割込みに対する応答性を向上させる上で必要になる。図１０では、図９に基づいて説明したとおり、予めＳＩＭＳＫ２０６に閾値レベルを格納しておき、前記ＳＩビット操作命令を実行して選択制御ビットＳＩを１に変更するだけで（処理時間Ｔ１）、それ以降、シーケンサ２３は、クリティカルセクションＣＳにおいて閾値レベルを基準に割り込みの受付可否を判別することが可能になる。図１０では、割込みＢが発生しているが、その割込みレベルはＣａｔ．２であるから、当該クリティカルセクションＣＳの実行が終了して、前記ＳＩビット操作命令を再度実行して選択制御ビットＳＩを０に戻した後に（処理時間Ｔ２）、割込みＢが受け付けられる。当該クリティカルセクションＣＳの実行中に割込みＢに受け付けは行われないが、ＳＩビット操作命令の実行による選択制御ビットＳＩの操作に時間を要しないので、その分だけ割込みＢの受け付けは早くなる。
【００７９】
その後、タスク１の処理に復帰したとき、今度は割込みＡ１が発生して、上記同様に、ＩＳＲ−Ａの処理に分岐する。このときのクリティカルセクションＣＳでの処理中に割込みＣが発生している。割込みＣの割込みレベルはＣａｔ．１であるから、その割込みレベルは前記閾値レベルよりも高く、ＩＳＲ−Ｃの処理に分岐される。ＳＩビット操作命令の実行による選択制御ビットＳＩの操作に時間を要していないから（処理時間時間Ｔ３）、その分だけ割込みＣの受け付けが早くなる。ＩＳＲ−Ｃの処理が終ったら、ＩＳＲ−Ａの処理に復帰し、その最後で、前記ＳＩビット操作命令を再度実行して選択制御ビットＳＩを０に戻した後に（処理時間Ｔ４）、タスク１に復帰する。
【００８０】
図１１にはハードウェア制御ロジック部により自動で取り込まれた割込みマスクレベルデータを前述の如く複数命令を実行して、リード、モディファイ、ライトのような処理を行なって変更する場合を採用したときの比較例が示される。図１１ではクリティカルセクションＣＳの前後において割り込みを禁止して、ステータスレジスタ（ＳＲ）２０１の割込みマスクデータＩＭＡＳＫに対するリード、モディファイ、ライトのような処理が行なわれるので時間を要する（処理時間Ｔ１ａ）。この期間は割り込みが禁止される期間であるから、そのときにいかなる割り込みが発生しても受け付けられず、割込み応答性に劣る。図１０の場合にはＳＩビット操作命令の実行によって選択制御ビットＳＩを操作すればよいから、割り込みを受け付けることが出来ない期間（処理時間Ｔ１）が短くなり、優れた割込み応答性を実現することができる。図１０の処理時間Ｔ１，Ｔ２，Ｔ３，Ｔ４は図１１では処理時間Ｔ１ａ，Ｔ２ａ，Ｔ３ａ，Ｔ４ａのように長くされる。
【００８１】
図１２には実施の形態２における別のＣＰＵ２Ｄが例示される。図９のＣＰＵ２Ｃとは選別回路（ＭＡＸ）２１５を採用した点が相違される。選別回路２１５はステータスレジスタ（ＳＲ）２０１の割込みマスクデータＩＭＡＳＫとサブ割込みマスクデータレジスタの割り込みレベルとを入力し、レベルの高い方のデータを出力する。セレクタ２１７は、例えばＳＩ＝０のとき、ＩＭＡＳＫを選択し、ＳＩ＝１のときＭＡＸ２１５の出力を選択する。
【００８２】
図１３には複数のサブ割り込みマスクデータレジスタＳＩＭＡＳＫ＃０〜ＳＩＭＡＳＫ＃ｉを採用する場合の例が示される。選択ビットＳＩは複数ビットとされ、セレクタ２１７は選択ビットＳＩの値に応じてレジスタＳＩＭＡＳＫ＃０〜ＳＩＭＡＳＫ＃ｉ及び割込みマスクデータＩＭＡＳＫの内から一つを選択してシーケンサ２３に出力する。
【００８３】
図１４には割込みマスクデータの更新に割込みマスクデータキュー２１８を用いる例が示される。割込みマスクデータＩＭＡＳＫは、前述の割込み受け付け時におけるハードウェア制御ロジック部２３０による自動的な更新と共に、割込みマスクデータキュー２１８の出力によって変更可能にされる。割込みマスクデータＩＭＡＳＫはバッファ操作命令によって任意に入れ替え可能にされる。例えば、プッシュ命令を実行することによって順次割込みレベルデータが格納され、ポップ命令を実行することによって最も先に格納された割込みレベルデータが読み出されて割り込みマスクデータＩＭＡＳＫに反映される。
【００８４】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８５】
例えば、割り込みマスクデータＩＭＡＳＫをステータスレジスタの一部で構成し、また、選択制御ビットＳＩをステータスレジスタの一部で構成することに限定されない。割込みマスクレジスタ及び選択制御レジスタをステータスレジスタとは別のレジスタによって構成してもよい。例えばその場合にはそれらレジスタは退避対象にされる。
【００８６】
システムスタックポインタレジスタ（ＳＳＰ）を用いて所定のコンテキストが退避される領域は記憶保護部が保護する領域であればよい。記憶保護部とはＭＭＵに限定されず、特定のメモリ領域に対する命令によるアクセスを制限する構成であればよく、ＣＰＵの動作モードとは関係なくハードウェア制御ロジック部だけに退避／復帰が認められるものとする場合でもよい。ＭＭＵを用いた場合には、ユーザモードではアクセスを禁止し且つ特権モードではアクセス可能としてもよい。
【００８７】
実施の形態２で説明した専用命令による割込みマスクレベルの更新の発明特徴事項は実施の形態１で説明したデータプロセッサに適用することも可能である。
【００８８】
実施に形態２で行う退避処理は、実施の形態１で説明した処理出合っても、或いはスタックポインタレジスタだけを用いる従来方式、或いはその他の方式であってもよい。
【００８９】
ハードウェア制御ロジック部は例えばシーケンサの一部として構成される。そのロジックがゲートレベルのロジック回路であってもよいし、また、マイクロプログラム等のコードを用いたロジック回路であってもよい。
【００９０】
データプロセッサが備える内部回路モジュールは上記実施の形態に限定されず適宜変更可能である。
【符号の説明】
【００９１】
１、１Ａ  データプロセッサ(ＭＣＵ)
２，２Ａ，２Ｂ，２Ｃ、２Ｄ  ＣＰＵ（中央処理装置）
４  割込みコントローラ（ＩＮＴＣ）
３  メモリ（ＭＲＹ）
５  バス
２０  レジスタセット
２１  命令フェッチ部（ＩＦ）
２２  命令デコーダ（ＩＤ）
２３  シーケンサ（ＳＥＱ）
２４  実行部（ＥＸ）
２５  メモリ管理ユニット（ＭＭＵ）
３０  スタック領域
２００  プログラムカウンタ（ＰＣ）
２０１  ステータスレジスタ（ＳＲ）
２０２＿０〜２０２＿ｎ  汎用レジスタ（ＲＥＧ＃０〜ＲＥＧ＃ｎ）
２０２＿ｎ  スタックポインタレジスタ（ＲＥＧ＃ｎ）
２０３  システムスタックポインタ（ＳＳＰ）
ＩＮＴ  割込み信号
ＵＳＳＴＣ  ユーザ用スタック領域
ＰＶＳＴＣ  特権用スタック領域
ＳＶＳＴＣ  ハードウェア退避用スタック領域
２３０  ハードウェア制御ロジック部（ＨＷＬ）
２０６  サブ割込みマスクレジスタ（ＳＩＭＡＳＫ）
ＩＭＡＳＫ  割り込みマスクデータ
ＳＩ  選択制御ビット
２１４  セレクタ
【図１】
2011070290.tif 000003
【図２】
2011070290.tif 000004
【図３】
2011070290.tif 000005
【図４】
2011070290.tif 000006
【図５】
2011070290.tif 000007
【図６】
2011070290.tif 000008
【図７】
2011070290.tif 000009
【図８】
2011070290.tif 000010
【図９】
2011070290.tif 000011
【図１０】
2011070290.tif 000012
【図１１】
2011070290.tif 000013
【図１２】
2011070290.tif 000014
【図１３】
2011070290.tif 000015
【図１４】
2011070290.tif 000016