(57)【特許請求の範囲】
【請求項１】
複数の汎用レジスタにアクセスしながら命令を実行するプロセッサを含んだマイクロコンピュータであって、
命令コードのデコード結果に応じて、命令の実行を制御する制御手段と、
前記複数の汎用レジスタのそれぞれに対するアクセス属性を記憶するアクセス属性記憶手段と、
前記プロセッサの動作を制御するためのモードを記憶するモード記憶手段と、
前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるアクセス属性および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定するアクセス判定手段とを含み、
例外要求が発生したとき、前記アクセス属性記憶手段に記憶されるアクセス属性が他の記憶領域に退避されるとともに、前記モード記憶手段に記憶されるモードが変更される、マイクロコンピュータ。
【請求項２】
前記アクセス判定手段は、汎用レジスタに対するアクセスを許可しない場合には、前記制御手段に対して例外要求を出力する、請求項１記載のマイクロコンピュータ。
【請求項３】
前記アクセス判定手段は、前記モード記憶手段に記憶されるモードが第１のモードの場合に、前記アクセス属性記憶手段に記憶されるアクセス属性によってアクセス許可が設定される汎用レジスタに対するアクセスのみを許可し、
前記モード記憶手段に記憶されるモードが第２のモードの場合に、すべての汎用レジスタに対するアクセスを許可する、請求項１または２記載のマイクロコンピュータ。
【請求項４】
前記アクセス判定手段は、前記モード記憶手段に記憶されるモードが第１のモードの場合に、前記アクセス属性記憶手段に記憶されるアクセス属性によってアクセス許可が設定される汎用レジスタに対するアクセスのみを許可し、
前記モード記憶手段に記憶されるモードが第２のモードの場合に、前記アクセス属性記憶手段に記憶されるアクセス属性によってアクセス禁止が設定される汎用レジスタに対するアクセスのみを許可する、請求項１または２記載のマイクロコンピュータ。
【請求項５】
前記第１のモードはユーザモードに対応し、前記第２のモードはスーパバイザモードに対応する、請求項３または４記載のマイクロコンピュータ。
【請求項６】
前記第１のモードはアプリケーションプログラムを実行するモードに対応し、前記第２のモードは割り込み処理ルーチンを実行するモードに対応する、請求項３または４記載のマイクロコンピュータ。
【請求項７】
前記プロセッサは、複数の特権レベルを有し、
前記第１のモードに前記複数の特権レベルの一部が割り当てられ、前記第２のモードに他の特権レベルが割り当てられる、請求項３〜６のいずれかに記載のマイクロコンピュータ。
【請求項８】
前記アクセス属性記憶手段は、前記複数の汎用レジスタのそれぞれに対して許可するアクセスの種類を記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶される許可するアクセスの種類および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項１記載のマイクロコンピュータ。
【請求項９】
前記複数の汎用レジスタは、複数のグループに分けられており、
前記アクセス属性記憶手段は、前記複数のグループのいずれのグループに対するアクセスを許可するかを記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるアクセスを許可するグループおよび前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項１記載のマイクロコンピュータ。
【請求項１０】
前記アクセス属性記憶手段は、前記複数の汎用レジスタのそれぞれに対してどの所定単位のデータにアクセスを許可するかを記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるどの所定単位のデータにアクセスを許可するかに関する情報および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項１記載のマイクロコンピュータ。
【請求項１１】
前記プロセッサは、複数の特権レベルを有しており、
前記アクセス属性記憶手段は、前記複数の汎用レジスタのそれぞれに対してどの特権レベルからのアクセスを許可するかを記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるどの特権レベルからのアクセスを許可するかに関する情報および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項１記載のマイクロコンピュータ。
【請求項１２】
前記マイクロコンピュータはさらに、命令コードを第１のモードに対応する命令コードと解釈してデコードする第１のデコード手段と、
前記命令コードを第２のモードに対応する命令コードと解釈してデコードする第２のデコード手段と、
前記モード記憶手段に記憶されるモードに応じて、前記第１のデコード手段によるデコード結果と前記第２のデコード手段によるデコード結果とのいずれかを選択的に前記制御手段に出力する選択手段とを含む、請求項１記載のマイクロコンピュータ。
【請求項１３】
前記第１のデコード手段は、命令コードに含まれる部分であって前記第２のデコード手段によればレジスタ指定フィールドと解釈してデコードされる部分の一部をオペコードと解釈してデコードする、請求項１２記載のマイクロコンピュータ。
【請求項１４】
前記アクセス属性記憶手段は、制御レジスタとして実装される、請求項１記載のマイクロコンピュータ。
【請求項１５】
前記アクセス属性記憶手段は、アドレス空間にマッピングされる、請求項１記載のマイクロコンピュータ。
【請求項１６】
前記アクセス属性記憶手段は、前記プロセッサの外部から受けた情報を記憶する、請求項１記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータに関し、特に、レジスタに保護機能を持たせたマイクロコンピュータに関する。
【背景技術】
【０００２】
近年、マイクロコンピュータ（以下、マイコンとも呼ぶ。）の高機能化、多機能化が進んでいる。このようなマイコンにおいては、処理速度の高速化を図るために、汎用レジスタをそれぞれ２つ以上設けてバンク構成とするといった手法を用いたものがある。たとえば、バンク数を２とする構成においては、バンク０レジスタをアプリケーションプログラムが使用し、バンク１レジスタを割り込み処理ルーチンが使用するといった構成がとられる。
【０００３】
ＣＰＵ（Central Processing Unit）が、バンク０レジスタを使用しながらアプリケーションプログラムの処理を実行しているときに割り込みが入ると、バンク１レジスタに切替えて割り込み処理ルーチンを実行する。これによって、割り込み処理に移行するときに、低速のメモリ（スタック領域）にレジスタの内容を退避する必要がなくなり、高速に割り込み処理に移行することができる。同様に、割り込み処理ルーチンからアプリケーションプログラムに復帰するときも高速に移行することができる。
【０００４】
これに関連する技術として、下記の特許文献１に開示された発明がある。特許文献１は、レジスタバンクに多数のレジスタを有するプロセッサに関する。レジスタは、共通のレジスタ名を有する汎用レジスタとスタックポインタレジスタとを有している。プロセッサは、共通のレジスタ名を参照するプログラム命令を実行するために、プログラミングに対応する論理を有している。この命令は、第１の条件下で汎用レジスタを用い且つ第２の条件下でスタックポインタレジスタを用いて実行される。したがって、特定の条件の成立に基づいて、同じ名前によって識別される複数のレジスタに選択的にアクセスすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００４−５２０６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のように、バンクレジスタを用いることにより割り込み処理ルーチンへの移行および割り込み処理ルーチンからの復帰を高速に行なうことができる。しかしながら、演算処理が多く処理時間が長いアプリケーションプログラムが使用するバンク０レジスのレジスタ数と、処理時間が短い割り込み処理ルーチンが使用するバンク１レジスタのレジスタ数とが同じである。そのため、アプリケーションプログラムで使用されるレジスタと、割り込み処理ルーチンで使用されるレジスタとの間で使用効率に差があり、処理内容に対する最適化がなされていないといった問題がある。
【０００７】
また、汎用レジスタは、ＣＰＵのハードウェア量の多くを占めており、チップ面積やコストに与える影響が大きい。そのため、上述のようなバンクレジスタの構成をとることにより、チップ面積が大きくなり、製品コストが高くなるといった問題がある。
【０００８】
また、割り込み処理では特権モード等の通常のユーザプログラムの実行よりも実行権限の高い動作モードとされることも多く、割り込み処理ルーチンが使用するバンクレジスタに対する保護機能がなく、アプリケーションプログラムや悪意のあるプログラムによって、割り込み処理ルーチンが使用するバンクレジスタの内容が意図せず書き換えられてしまう危険性がある。したがって、従来のＣＰＵはセキュア用途に問題がある。
【０００９】
本発明は、上記問題点を解決するためになされたものであり、その目的は、汎用レジスタの使用効率を最適化し、かつ汎用レジスタに対する保護機能を提供することが可能なマイクロコンピュータを提供することである。
【課題を解決するための手段】
【００１０】
本発明の一実施例によれば、複数の汎用レジスタにアクセスしながら命令を実行するプロセッサを含んだマイクロコンピュータが提供される。制御部は、命令コードのデコード結果に応じて、命令の実行を制御する。ＧＲＡレジスタは、複数の汎用レジスタのそれぞれに対するアクセス属性を記憶する。モード記憶部は、ＣＰＵの動作を制御するためのモードを記憶する。そして、レジスタアクセス許可判定回路は、制御部から汎用レジスタに対してアクセス要求がある場合に、ＧＲＡレジスタに記憶されるアクセス属性およびモード記憶部に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する。
【発明の効果】
【００１１】
この実施例によれば、ＧＲＡレジスタに記憶されるアクセス属性およびモード記憶部に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定するので、モードに対応して使用される汎用レジスタの本数を変更することができ、汎用レジスタの使用効率を最適化することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施の形態におけるマイクロコンピュータの概略構成を示すブロック図である。
【図２】汎用レジスタファイル１６に含まれる汎用レジスタ群の一例を示す図である。
【図３】制御レジスタファイル１７に含まれる制御レジスタ群の一例を示す図である。
【図４】ＰＳＷの各ビットの割り付けを説明するための図である。
【図５】ＧＲＡレジスタによってどのように汎用レジスタＲ０〜Ｒ１５のアクセスコントロールが行われるかを説明するための図である。
【図６】ＧＲＡレジスタによって汎用レジスタへのアクセスを制御するための回路構成の一例を示す図である。
【図７】レジスタアクセス許可判定回路３３の論理の一例を説明するための図である。
【図８】レジスタアクセス許可判定回路３３の論理の他の一例を説明するための図である。
【図９】例外要求が発生したときの割り込みシーケンスの一例を説明するためのフローチャートである。
【図１０】例外要求が発生したときの割り込みシーケンスの他の一例を説明するためのフローチャートである。
【図１１】ＣＰＵコンテキストのスタック退避イメージを示す図である。
【図１２】タスクによってアクセス許可されるレジスタの本数が変更される場合を説明するための図である。
【図１３】本発明の第２の実施の形態におけるマイクロコンピュータの特権レベルを説明するための図である。
【図１４】本発明の第２の実施の形態におけるマイクロコンピュータによって実行されるソフトウェア構成の一例を示す図である。
【図１５】本発明の第３の実施の形態におけるＧＲＡレジスタの構成例を説明するための図である。
【図１６】本発明の第４の実施の形態におけるＧＲＡレジスタの構成例を説明するための図である。
【図１７】本発明の第５の実施の形態におけるＧＲＡレジスタの構成例を説明するための図である。
【図１８】本発明の第６の実施の形態におけるＧＲＡレジスタの構成例を説明するための図である。
【図１９】同じビットパターンの命令コードであってもモードによって異なる命令として解釈される場合の一例を説明するための図である。
【図２０】本発明の第７の実施の形態におけるマイクロコンピュータの命令デコード部の構成例を示す図である。
【図２１】制御レジスタがアドレス空間にマッピングされるところを示す図である。
【図２２】本発明の第９の実施の形態におけるマイクロコンピュータの構成例を示す図である。
【発明を実施するための形態】
【００１３】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるマイクロコンピュータの概略構成を示すブロック図である。このマイコンは、ＣＰＵ１と、周辺回路２と、メモリ３と、バスインタフェース４とを含み、それぞれが内部バス５を介して接続される。ＣＰＵ１は、内部バス５に接続されるバスインタフェース４を介してマイコン外部のメモリや周辺機器にアクセスすることが可能である。
【００１４】
ＣＰＵ１は、命令フェッチ部１１と、命令デコード部１２と、制御部１３と、アドレス生成部１４と、ＰＣ（Program Counter）部１５と、汎用レジスタファイル１６と、制御レジスタファイル１７と、演算部１８と、ロード・ストア部１９と、データセレクタ２０とを含み、それぞれが内部バス、Ｓバス２１およびＤバス２２に接続される。なお、各部はこれらのバスを介してデータ、アドレス、制御信号などをやり取りすることができる。
【００１５】
命令フェッチ部１１は、ＰＣ部１５のプログラムカウンタ値に応じて、メモリ３に格納される命令コードをフェッチしたり、バスインタフェース４を介してマイコン外部の図示しないメモリに格納される命令コードをフェッチしたりして、命令コードを命令デコード部１２に出力する。
【００１６】
命令デコード部１２は、命令フェッチ部１１から受けた命令コードを内部の命令デコーダに出力する。命令デコーダは、命令コードをデコードし、デコード結果を制御部１３に出力する。
【００１７】
制御部１３は、命令デコード部１２から受けたデコード結果に応じて、ＣＰＵ１の各部を制御することによりＣＰＵ１の動作を制御し管理する。なお、図１においては、制御部１３から各部に出力される制御信号を省略している。
【００１８】
アドレス生成部１４は、命令デコード部１２によって分岐命令がデコードされたときに、分岐先アドレスをアドレッシングモードに応じて計算する。分岐条件が成立した場合には、計算された分岐先アドレスがＰＣ部１５に設定される。
【００１９】
演算部１８は、制御部１３による制御によって、汎用レジスタに格納されるデータ、メモリ３から読み出されたデータ、バスインタフェース４を介してマイコン外部のメモリから読み出されたデータなどに対して演算処理を行なう。演算結果は、汎用レジスタ、メモリ３、マイコン外部のメモリなどに書き込まれる。
【００２０】
ロード・ストア部１９は、演算部１８による演算結果などをメモリ３やマイコン外部のメモリに書き込み、メモリ３やマイコン外部のメモリからデータを読み出す。このとき、ロード・ストア部１９は、オペランドアクセスアドレスを生成して、データセレクタ２０を介してメモリ３やマイコン外部のメモリに出力する。
【００２１】
データセレクタ２０は、ロード・ストア部１９から出力されるオペランドアクセスアドレスおよび書き込みデータを切替えて内部バス５に出力し、内部バス５を介して受けた読み出しデータをロード・ストア部１９に出力する。
【００２２】
図２は、汎用レジスタファイル１６に含まれる汎用レジスタ群の一例を示す図である。汎用レジスタファイル１６は、１６本の汎用レジスタＲ０〜Ｒ１５によって構成される。それぞれの汎用レジスタは、３２ビット幅を有している。
【００２３】
汎用レジスタＲ０は、汎用レジスタの機能に加えて、スタックポインタ（ＳＰ）としての機能も割り当てられている。このＳＰは、後述するＰＳＷ（Processor Status Word）レジスタのＵビットによって、割り込みスタックポインタ（ＩＳＰ）およびユーザスタックポインタ（ＵＳＰ）のいずれかに切り替わる。
【００２４】
図３は、制御レジスタファイル１７に含まれる制御レジスタ群の一例を示す図である。割り込みスタックポインタ（ＩＳＰ）は、割り込み処理ルーチンに使用されるスタックポインタの値を設定するためのレジスタである。また、ＵＳＰ（ユーザスタックポインタ）は、ユーザ（アプリケーションプログラム）が使用するスタックポインタの値を設定するためのレジスタである。
【００２５】
割り込みテーブル（ＩＮＴＢ）レジスタは、可変ベクタテーブルの先頭アドレスを設定するためのレジスタである。プログラムカウンタ（ＰＣ）は、現在実行中の命令のアドレスを示すレジスタである。
【００２６】
プロセッサステータスワード（ＰＳＷ）は、プロセッサの状態を示すレジスタである。このＰＳＷの詳細については後述する。
【００２７】
バックアップＰＣ（ＢＰＣ）レジスタは、高速割り込み発生時にプログラムカウンタ（ＰＣ）の値が退避されるレジスタである。また、バックアップＰＳＷ（ＢＰＳＷ）レジスタは、高速割り込み発生時にプロセッサステータスワード（ＰＳＷ）の値が退避されるレジスタである。高速割り込みベクタ（ＦＩＮＴＶ）レジスタは、高速割り込み発生時に分岐先アドレス（高速割り込み処理ルーチンの開始アドレス）を設定するためのレジスタである。
【００２８】
ここで、高速割り込みとは、ＣＰＵ１による割り込み処理を高速にする機能であり、特定の割り込み要因を高速割り込みの対象とすることができる。この特定の割り込み要因が発生すると、ＣＰＵ１はＰＣおよびＰＳＷの値をＢＰＣレジスタおよびＢＰＳＷレジスタに退避し、分岐先アドレスをＦＩＮＴＶレジスタから取得する。これによって、ＰＣおよびＰＳＷの値をスタックに退避する必要がなく、また割り込みベクタアドレスをメモリから取得する必要がないため、高速に割り込み処理に移行することができる。
【００２９】
浮動小数点ステータスワード（ＦＰＳＷ）レジスタは、浮動小数点演算ユニットの状態を示すレジスタである。このレジスタは、本発明とは特に関係しないため、その詳細な説明は行なわない。
【００３０】
汎用レジスタアクセス属性（ＧＲＡ）レジスタは、後述のように汎用レジスタＲ０〜Ｒ１５のアクセスコントロールを設定するためのレジスタである。なお、このレジスタの詳細はついては後述する。
【００３１】
図４は、ＰＳＷの各ビットの割り付けを説明するための図である。ＰＳＷのビット０〜３には、それぞれＣフラグ（キャリフラグ）、Ｚフラグ（ゼロフラグ）、Ｓフラグ（サインフラグ）およびＯフラグ（オーバフローフラグ）が割り付けられている。
【００３２】
ＰＳＷのビット１６には、割り込み許可ビット（Ｉビット）が割り付けられており、割り込み禁止／許可を設定することができる。
【００３３】
ＰＳＷのビット１７には、スタックポインタ指定ビット（Ｕビット）が割り付けられており、“０”のときにＳＰとして割り込みスタックポインタ（ＩＳＰ）を指定し、“１”のときにＳＰとしてユーザスタックポインタ（ＵＳＰ）を指定する。例外を受け付けると、このビットは“０”になる。スーパバイザモードからユーザモードに移行するとこのビットは“１”になる。
【００３４】
ＰＳＷのビット２０には、プロセッサモード指定ビット（ＰＭビット）が割り付けられており、“０”のときにプロセッサモードをスーパバイザモードに設定し、“１”のときにプロセッサモードをユーザモードに設定する。
【００３５】
ＰＳＷのビット２４〜２６には、プロセッサ割り込み優先レベル（ＩＰＬ［２：０］）が割り付けられており、優先レベル０〜優先レベル７の８段階のプロセッサ割り込み優先レベルを指定することができる。要求があった割り込みの優先レベルがプロセッサ割り込み優先レベルよりも高い場合には、その割り込みが許可される。
【００３６】
図５は、ＧＲＡレジスタによってどのように汎用レジスタＲ０〜Ｒ１５のアクセスコントロールが行われるかを説明するための図である。汎用レジスタＲ０〜Ｒ１５に対するアクセスは、ＧＲＡレジスタの内容とモードとによって決定される。なお、このモードとは、上述のプロセッサモードを含んだ広い概念を指しており、プロセッサモードに限定されるものではない。
【００３７】
図５に示すように、モード１においてはＧＲＡレジスタに“１”が設定されているビットに対応する汎用レジスタがアクセス許可されており、“０”が設定されているビットに対応する汎用レジスタがアクセス禁止されている。モード１からモード２に移行するときに、２つのパターンをサポートしている。
【００３８】
１つ目は、モード２に移行すると、すべての汎用レジスタがアクセス許可される場合である（図５の（１）を参照）。２つ目は、モード２に移行すると、モード１でアクセス許可されていた汎用レジスタがアクセス禁止となり、モード１でアクセス禁止されていた汎用レジスタがアクセス許可となる場合である（図５の（２）を参照）。
【００３９】
図５の（２）の場合に、アクセス禁止状態の汎用レジスタへアクセスをした場合、ノンマスカブルインタラプト等を発生させるか又は無視するかをＧＲＡレジスタに指定するビットを更に有してもよい。
【００４０】
図６は、ＧＲＡレジスタによって汎用レジスタへのアクセスを制御するための回路構成の一例を示す図である。モード記憶部３１は、現在どのモードであるかを示す情報を記憶する。たとえば、モードが上述のプロセッサモードに対応する場合には、ＰＳＷレジスタ内のＰＭの値がモード記憶部３１に設定される。
【００４１】
制御部１３は、命令デコード部１２から受けたデコード結果を解析することにより、汎用レジスタへのアクセスを伴う命令がデコードされたことを検出すると、その汎用レジスタのレジスタ番号をＧＲＡレジスタ３２に出力すると共に、レジスタアクセス要求信号をレジスタアクセス許可判定回路３３に出力する。
【００４２】
ＧＲＡレジスタ３２は、制御部１３から受けたレジスタ番号に対応するビットの内容をアクセス属性信号としてレジスタアクセス許可判定回路３３に出力する。
【００４３】
レジスタアクセス許可判定回路３３は、制御部１２から出力されるレジスタアクセス要求信号、モード記憶部３１から出力されるモード信号およびＧＲＡレジスタ３２から出力されるアクセス属性信号に基づいて、対応する番号の汎用レジスタへのレジスタアクセスイネーブル信号を生成して出力する。また、レジスタアクセス許可判定回路３３は、制御部１３からアクセスが禁止されている汎用レジスタへのアクセス要求があると、例外要求信号を制御部１３に出力する。
【００４４】
図７は、レジスタアクセス許可判定回路３３の論理の一例を説明するための図である。図７に示す論理は、モード２のときにすべての汎用レジスタへのアクセスが許可される場合を示している。図５を用いて説明した、モード２に移行するときの１つ目のパターン（図５の（１））に対応している。
【００４５】
制御部１３からレジスタアクセス要求がない場合（レジスタアクセス要求信号が“０”の場合）、モード記憶部３１から出力されるモード信号およびＧＲＡレジスタ３２から出力されるアクセス属性信号にかかわらず、レジスタアクセスイネーブル信号に“０”（アクセスなし）を出力する。この場合、例外要求は発生しない。
【００４６】
また、制御部１３からレジスタアクセス要求があり（レジスタアクセス要求信号が“１”）、モード記憶部３１から出力されるモード信号が“モード１”を示しており、ＧＲＡレジスタ３２から出力されるアクセス属性信号がアクセス許可（アクセス属性信号が“１”）を示している場合、レジスタアクセス許可判定回路３３は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“１”（アクセスあり）を出力する。この場合、例外要求は発生しない。
【００４７】
また、制御部１３からレジスタアクセス要求があり（レジスタアクセス要求信号が“１”）、モード記憶部３１から出力されるモード信号が“モード１”を示しており、ＧＲＡレジスタ３２から出力されるアクセス属性信号がアクセス禁止（アクセス属性信号が“０”）を示している場合、レジスタアクセス許可判定回路３３は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“０”（アクセスなし）を出力する。この場合、レジスタアクセス許可判定回路３３は、例外要求信号に“１”を出力して、例外要求を発生させる。
【００４８】
また、制御部１３からレジスタアクセス要求があり（レジスタアクセス要求信号が“１”）、モード記憶部３１から出力されるモード信号が“モード２”を示している場合、ＧＲＡレジスタ３２から出力されるアクセス属性信号にかかわらず、レジスタアクセス許可判定回路３３は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“１”（アクセスあり）を出力する。この場合、例外要求は発生しない。
【００４９】
図８は、レジスタアクセス許可判定回路３３の論理の他の一例を説明するための図である。図８に示す論理は、モード２に移行すると、モード１でアクセス許可されていた汎用レジスタがアクセス禁止となり、モード１でアクセス禁止されていた汎用レジスタがアクセス許可となる場合を示している。図５を用いて説明した、モード２に移行するときの２つ目のパターン（図５の（２））に対応している。制御部１３からレジスタアクセス要求がない場合、およびモード記憶部３１から出力されるモード信号が“モード１”を示す場合は、図７に示すものと同様である。
【００５０】
制御部１３からレジスタアクセス要求があり（レジスタアクセス要求信号が“１”）、モード記憶部３１から出力されるモード信号が“モード２”を示しており、ＧＲＡレジスタ３２から出力されるアクセス属性信号がアクセス許可（アクセス属性信号が“１”）を示している場合、レジスタアクセス許可判定回路３３は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“０”（アクセスなし）を出力する。この場合、レジスタアクセス許可判定回路３３は、例外要求信号に“１”を出力して、例外要求を発生させる。
【００５１】
また、制御部１３からレジスタアクセス要求があり（レジスタアクセス要求信号が“１”）、モード記憶部３１から出力されるモード信号が“モード２”を示しており、ＧＲＡレジスタ３２から出力されるアクセス属性信号がアクセス禁止（アクセス属性信号が“０”）を示している場合、レジスタアクセス許可判定回路３３は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“１”（アクセスあり）を出力する。この場合、例外要求は発生しない。
【００５２】
図９は、例外要求が発生したときの例外処理シーケンスの一例を説明するためのフローチャートである。図９においては、モード１がユーザモードに対応し、モード２が特権モード（スーパバイザモード）に対応する。通常、アプリケーションプログラムはユーザモードで動作し、割り込みなどの例外が発生した場合や、ＣＰＵ１が特権モードへの移行命令を実行した場合に特権モードに移行する。
【００５３】
ＣＰＵ１がアプリケーションプログラムを実行中に（ユーザモードで動作中に）、命令Ｃで例外要求が発生すると（Ｓ１１）、ハードウェア前処理が実行される（Ｓ１２）。この処理は、ＣＰＵ１が例外要求を受けたときに、ハードウェアによって自動的に行なわれる。
【００５４】
高速割り込みの場合には、ＰＣレジスタ、ＰＳＷレジスタおよびＧＲＡレジスタの内容が、それぞれＢＰＣレジスタ、ＢＰＳＷレジスタおよびＢＧＲＡレジスタに退避され、ＰＳＷレジスタ内のＵビット、ＩビットおよびＰＭビットのそれぞれに“０”が設定されて、スーパバイザモードに移行する。
【００５５】
また、高速割り込み以外の例外の場合には、ＰＣレジスタ、ＰＳＷレジスタおよびＧＲＡレジスタの内容が、それぞれＩＳＰで指定されるアドレスのスタック領域に退避され、ＰＳＷレジスタ内のＵビット、ＩビットおよびＰＭビットのそれぞれに“０”が設定されて、スーパバイザモードに移行する。
【００５６】
次に、ＣＰＵ１はベクタアドレスを読み出すことにより、ハンドラの先頭アドレスに分岐する（Ｓ１３）。すなわち、高速割り込みの場合には、ＦＩＮＴＶレジスタに設定される分岐先アドレスを取得して、ハンドラの先頭アドレスに分岐する。また、高速割り込み以外の例外の場合には、ＩＮＴＢレジスタの内容を参照してメモリに格納される分岐先アドレスを取得して、ハンドラの先頭アドレスに分岐する。
【００５７】
ステップＳ１１〜Ｓ１３は、ＣＰＵ１によって自動的に行なわれる処理であるが、ステップＳ１４〜Ｓ１７またはＳ１９は、ユーザが記述した処理プログラムをＣＰＵ１が実行することによって行なわれる処理である。
【００５８】
ノンマスカブル割り込みを除く例外ハンドラの場合には、まず、汎用レジスタの内容をスタック領域に退避する（Ｓ１４）。なお、汎用レジスタ内容のスタック領域退避については、マイクロコンピュータのハードウェアとして退避機構を設け、またはソフトウェアによりスタック領域退避処理を行なうか否かの選択的事項である。
【００５９】
次に、ハンドラ処理が行なわれ（Ｓ１５）、退避しておいた汎用レジスタの内容が復帰される（Ｓ１６）。そして、例外ハンドラの最後に記述されたリターン命令が実行されて（Ｓ１７）、ステップＳ１８の処理に移行する。なお、高速割り込みの場合にはＲＴＦＩ命令が記述され、高速割り込み以外の例外の場合にはＲＴＥ命令が記述される。
【００６０】
また、ノンマスカブル割り込みの場合には、ノンマスカブル割り込み処理が実行され（Ｓ１９）、プログラムの終了またはシステムリセットが行なわれる。
【００６１】
ステップＳ１８において、ハードウェア後処理が実行される。この処理は、ＣＰＵ１がＲＴＦＩ命令またはＲＴＥ命令を実行したときに、ハードウェアによって自動的に行なわれる。
【００６２】
高速割り込みの場合には、ＢＰＣレジスタ、ＢＰＳＷレジスタおよびＢＧＲＡレジスタの内容を、それぞれＰＣレジスタ、ＰＳＷレジスタおよびＧＲＡレジスタに復帰させる。このとき、ＰＳＷレジスタのＰＭビットが“１”であれば、ユーザモードへ移行する。
【００６３】
また、高速割り込み以外の例外の場合には、スタック領域に退避されていた内容を、ＰＣレジスタ、ＰＳＷレジスタおよびＧＲＡレジスタに復帰させる。このとき、ＰＳＷレジスタのＰＭビットが“１”であれば、ユーザモードへ移行する。
【００６４】
図９に示すように、例外事象によって受け付けタイミングと退避されるＰＣの値とが異なる。未定義命令例外、特権命令例外、浮動小数点例外などの命令処理取消型においては、命令Ｃの実行中に例外が受け付けられ、例外を発生した命令のＰＣ値が退避される。したがって、命令Ｃからプログラムの実行が再開される。
【００６５】
特定の命令を実行中にノンマスカブル割り込みや通常の割り込みが発生した場合などの命令処理中断型においては、命令Ｃの実行中に例外が受け付けられ、実行中の命令のＰＣ値が退避される。したがって、命令Ｃからプログラムの実行が再開される。
【００６６】
ＩＮＴ命令やＢＲＫ命令を実行したときに発生する無条件トラップなどの命令処理完了型においては、命令Ｃが実行された後に例外が受け付けられ、次命令のＰＣ値が退避される。したがって、命令Ｃの次の命令からプログラムの実行が再開される。
【００６７】
図１０は、例外要求が発生したときの割り込みシーケンスの他の一例を説明するためのフローチャートである。ＣＰＵ１がアプリケーションプログラムを実行中に（ユーザモードで動作中に）、命令Ｃで例外要求が発生すると（Ｓ２１）、ハードウェア前処理が実行される（Ｓ２２）。この処理は、ＣＰＵ１が例外要求を受けたときに、ハードウェアによって自動的に行なわれる。
【００６８】
高速割り込みの場合には、ＰＣレジスタおよびＰＳＷレジスタの内容が、それぞれＢＰＣレジスタおよびＢＰＳＷレジスタに退避され、ＰＳＷレジスタ内のＵビット、ＩビットおよびＰＭビットのそれぞれに“０”が設定されて、スーパバイザモードに移行する。
【００６９】
また、高速割り込み以外の例外の場合には、ＰＣレジスタおよびＰＳＷレジスタの内容が、それぞれＩＳＰで指定されるアドレスのスタック領域に退避され、ＰＳＷレジスタ内のＵビット、ＩビットおよびＰＭビットのそれぞれに“０”が設定されて、スーパバイザモードに移行する。ＣＰＵの動作モードがユーザモードからスーパバイザモードに移行したことに応じて、図５の（２）で説明したパターンにおいては、ユーザモードで使用可能であった汎用レジスタＲ０〜Ｒ１１がスーパバイザモードでは使用禁止となり、一方でユーザモードで使用禁止されていた汎用レジスタＲ１２〜Ｒ１５がスーパバイザモードでは使用可能となる。
【００７０】
次に、ＣＰＵ１はベクタアドレスを読み出すことにより、ハンドラの先頭アドレスに分岐する（Ｓ２３）。
【００７１】
ステップＳ２１〜Ｓ２３は、ＣＰＵ１によって自動的に行なわれる処理であるが、ステップＳ２４〜Ｓ２５またはＳ２７は、ユーザが記述した処理プログラムをＣＰＵ１が実行することによって行なわれる処理である。
【００７２】
次に、例外ハンドラ処理が行なわれる（Ｓ２４）。例外ハンドラでは、汎用レジスタＲ１２〜Ｒ１５のみを使用して処理を行なうように記述される。このように記述されることで、図５の（２）のパターンにおいては、割り込み発生前に実行していたユーザモードのプログラムの実行状態を維持した状態で割り込みに応答した処理を行なうことが可能となり、また汎用レジスタＲ０〜Ｒ１１をスタック領域へ退避することが不要となる。
【００７３】
一方で、ステップＳ２２においてスーパバイザモードに移行する際、図５の（１）のパターンの場合には、汎用レジスタＲ０〜Ｒ１１をスタック領域へ退避するか否かは、例外ハンドラ処理内のプログラム記述に依存する。
【００７４】
図５の（１）のパターンと図５の（２）のパターンとのどちらを採用するかについては、例えば例外ハンドラ内での処理が比較的多く汎用レジスタをスタック領域へ退避する処理がオーバヘッドとして相対的に少ない、または汎用レジスタをスタック領域へ退避する処理を行なう既存の例外ハンドラを用いる場合は、図５の（１）のパターンを採用すればよい。
【００７５】
一方で、例外ハンドラ内での処理が比較的少なく汎用レジスタをスタック領域へ退避する処理がオーバヘッドとして相対的に大きい、またはユーザプログラムのリアルタイム実行性が高い場合は、図５の（２）のパターンを採用すればよい。この場合、ＧＲＡレジスタにアクセス禁止レジスタへのアクセスを無視するように指定しておくことで、例外ハンドラに汎用レジスタをスタック退避する処理が含まれていたとしても、汎用レジスタＲ０〜Ｒ１１はアクセス禁止状態となっているため、汎用レジスタをスタック領域へ退避することはできず汎用レジスタのスタック領域退避処理がオーバヘッドとして解消される。
【００７６】
かかる選択を可能とすることで、既存プログラムの流用性を維持しつつ、比較的軽い処理をする例外ハンドラにおける汎用レジスタのスタック退避というオーバヘッドを低減させるとともに、実行中のユーザプログラムの実行状態を保全することが可能となる。
【００７７】
そして、例外ハンドラの最後に記述されたリターン命令が実行されて（Ｓ２５）、ステップＳ２６の処理に移行する。
【００７８】
また、ノンマスカブル割り込みの場合には、ノンマスカブル割り込み処理が実行され（Ｓ３１）、プログラムの終了またはシステムリセットが行なわれる。
【００７９】
ステップＳ２６において、ハードウェア後処理が実行される。この処理は、ＣＰＵ１がＲＴＦＩ命令またはＲＴＥ命令を実行したときに、ハードウェアによって自動的に行なわれる。
【００８０】
高速割り込みの場合には、ＢＰＣレジスタおよびＢＰＳＷレジスタの内容を、それぞれＰＣレジスタおよびＰＳＷレジスタに復帰させる。このとき、ＰＳＷレジスタのＰＭビットが“１”であれば、ユーザモードへ移行する。
【００８１】
また、高速割り込み以外の例外の場合には、スタック領域に退避されていた内容を、ＰＣレジスタおよびＰＳＷレジスタに復帰させる。このとき、ＰＳＷレジスタのＰＭビットが“１”であれば、ユーザモードへ移行する。
【００８２】
図１１は、ＣＰＵコンテキストのスタック退避イメージを示す図である。上述のように高速割り込み以外の例外が発生した場合、ＰＣレジスタ、ＰＳＷレジスタおよびＧＲＡレジスタの値はスタック領域に格納される。図１１に示すように、これらの値が順次スタック領域に格納され、ＳＰの値が矢印の方向にインクリメントまたはデクリメントされる。なお、スタック領域に格納された値を復帰させる場合には、ＳＰの値が矢印と逆方向にデクリメントまたはインクリメントされる。
【００８３】
図１２は、タスクによってアクセス許可されるレジスタの本数が変更される場合を説明するための図である。一般に、タスクの処理は、アプリケーションプログラムと割り込み処理ルーチンとから構成される。図１２においては、モード１がアプリケーションプログラムに対応し、モード２が割り込み処理ルーチンに対応している。モード２は、図５の説明の（１）の方法である。なお、ＯＳによるタスクスイッチ処理についての説明は省略している。
【００８４】
タスクＡにおいては、アプリケーション処理規模が大きいため、Ｒ０〜Ｒ１１の１２本の汎用レジスタがアプリケーションプログラムにアサインされている。また、Ｒ１２〜Ｒ１５の４本の汎用レジスタが割り込み処理ルーチンにアサインされている。Ｒ１２〜Ｒ１５の４本の汎用レジスタは、アプリケーションプログラムからのアクセスが禁止されているため、アプリケーションプログラムや悪意のあるプログラムにより、意図せず書き換えられてしまうのを防止することができる。
【００８５】
タスクＢにおいては、割り込み処理速度が重視される処理内容であるため、Ｒ０〜Ｒ７の８本の汎用レジスタアプリケーションプログラムにアサインされており、Ｒ８〜Ｒ１５の８本の汎用レジスタが割り込み処理ルーチンにアサインされている。Ｒ８〜Ｒ１５の８本の汎用レジスタは、アプリケーションプログラムからのアクセスが禁止される。
【００８６】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、モード１においてアクセス許可される汎用レジスタおよびアクセス禁止される汎用レジスタがＧＲＡレジスタに設定され、モード１においてアクセス禁止されていた汎用レジスタがモード２でアクセス許可されるようにした。したがって、モード２（割り込み処理ルーチン）にアサインするレジスタ本数をタスク毎に最適化することが可能となった。
【００８７】
また、モード２（割り込み処理ルーチン）にアサインされた汎用レジスタは、モード１（アプリケーションプログラム）からのアクセスが禁止されるため、アプリケーションプログラムや悪意のあるプログラムにより、意図せず書き換えられてしまうのを防止する、いわゆるレジスタ保護機能を実現することが可能となった。
【００８８】
また、バンクレジスタ構成とする必要がなく、汎用レジスタの本数を減らすことができるため、チップ面積が大きくなるのを防止でき、製品コストが高くなるのを防止することが可能となった。
【００８９】
（第２の実施の形態）
本発明の第２の実施の形態におけるマイクロコンピュータは、特権レベルのサポートにより階層的な保護機能（リングプロテクション）を実現する。以下、特権レベル０〜２の３階層をサポートする場合について説明するが、これに限られるものではなく、特権レベルが４階層以上であってもよい。なお、特権レベル０が最も権限が高く、特権レベル１、特権レベル２の順に低くなるものとする。
【００９０】
本発明の第２の実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路３３の論理構成などは、第１の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００９１】
図１３は、本発明の第２の実施の形態におけるマイクロコンピュータの特権レベルを説明するための図である。図１３に示すように、特権レベル０にカーネル（ＯＳ）が配置され、特権レベル１に割り込み処理ルーチンが配置され、特権レベル２にアプリケーションプログラム（ユーザプログラム）が配置される。レベル毎にリソースアクセス、実行可能な命令種類などの許可される動作が規定される。たとえば、レベル２のアプリケーションプログラムには特定メモリ領域へのアクセスおよび特定命令の実行のみが許可されている。
【００９２】
特権レベル２から特権レベル１への移行は、割り込み（ＩＮＴ）によって行なわれる。また、特権レベル２から特権レベル０への移行は、ＩＮＴ命令やＢＲＫ命令などを実行することによって発生するトラップによって行なわれるなど、特定の特権レベル間を移行するには、特定の例外要因を割り当てることとする。
【００９３】
図１３の（Ａ）は、モード１にアプリケーションプログラムと割り込み処理ルーチンとが割り当てられ、モード２にカーネル（ＯＳ）が割り当てられる場合を示している。これによって、アプリケーションプログラムや割り込み処理ルーチンから、ＯＳへの切り替えが高速に行なえるようになり、ＯＳが利用する汎用レジスタを含むリソースが保護される。
【００９４】
また、図１３の（Ｂ）は、モード１にアプリケーションプログラムが割り当てられ、モード２に割り込みルーチンとカーネル（ＯＳ）とが割り当てられる場合を示している。これによって、アプリケーションプログラムと割り込み処理ルーチンとの切り替えが高速に行なえるようになり、割り込みルーチンおよびＯＳが利用する汎用レジスタを含むリソースが保護される。
【００９５】
また、図１３の（Ｃ）は、図５の（２）に示すように、モード２に移行すると、モード１でアクセス許可されていた汎用レジスタがアクセス禁止となり、モード１でアクセス禁止されていた汎用レジスタがアクセス許可となるようにすれば、アプリケーションプログラムが使用する汎用レジスタと、割り込み処理ルーチンが使用する汎用レジスタとが排他的となる。これによって、割り込み処理ルーチンが暴走した場合でもアプリケーションプログラムの破壊を防止することができる。
【００９６】
なお、特権レベル０においてＧＲＡレジスタに対するアクセスが許可され、特権レベル１および２においてはＧＲＡレジスタに対するアクセスが禁止されるようにすれば、より効果的にＯＳが使用する汎用レジスタの保護機能を実現することができる。
【００９７】
図１４は、本発明の第２の実施の形態におけるマイクロコンピュータによって実行されるソフトウェア構成の一例を示す図である。図１４においては、ＯＳ上でタスクＡおよびタスクＢが動作している。
【００９８】
タスクＡは、アプリケーションプログラムが暴走した場合や、アプリケーションプログラムが悪意のあるプログラムであった場合でも、割り込み処理ルーチンが使用する汎用レジスタへのアクセスが禁止されることを示している。これは、レジスタアクセス許可判定回路を、図７に示す論理とした場合、図８に示す論理とした場合のいずれでも実現可能である。
【００９９】
しかしながら、図７に示す論理とした場合には、割り込み処理ルーチンに対してすべての汎用レジスタへのアクセスが許可されているので、割り込み処理ルーチンが暴走するとアプリケーションプログラムを破壊する可能性がある。
【０１００】
タスクＢは、割り込み処理ルーチンが暴走した場合でも、アプリケーションプログラムが使用する汎用レジスタへのアクセスが禁止されることを示している。これは、レジスタアクセス許可判定回路を図８に示す論理として、アプリケーションプログラムが使用する汎用レジスタと割り込み処理ルーチンが使用する汎用レジスタとを排他的にすることにより実現可能である。
【０１０１】
タスクＢがセキュリティに関連するユーザプログラム、例えば暗号処理プログラムである場合、暗号を復号するための復号鍵を不当に取得するために、タスクＢを実行している間に、外部から割り込みを発生させ、割り込み処理ルーチンから図示しない悪意ある別のタスクＣへモード２の特権モード状態のままで分岐させる、という攻撃が考えられる。このような場合、図８に示す論理としてアプリケーションプログラムが使用する汎用レジスタと割り込み処理ルーチンが使用する汎用レジスタとを排他的にすると共に、ＧＲＡレジスタにアクセス禁止状態の汎用レジスタへアクセスを行なった場合にノンマスカブルインタラプト等を発生させるようにすればよい。このように設定することで、アプリケーションプログラムが使用している汎用レジスタに不当にアクセスがあった場合、汎用レジスタの設定内容をマイクロコンピュータの外部へ不測に流出させることを防止することが可能となる。
【０１０２】
また、図１に図示しないメモリ管理部（ＭＭＵ）やバス制御部（バスコントローラ）による、タスクＢが配置されているメモリ空間や不揮発性メモリ等へのアクセスも禁止するようにする公知技術との組み合わせにより、タスクＢの耐タンパ性をより向上させることが可能となる。
【０１０３】
さらには、汎用レジスタの仮想レジスタ機能についての公知技術をも組み合わせ、タスクＢのプログラムコードとしては例えば汎用レジスタＲ１〜Ｒ５を用いるように記述をしておき、タスクＢが実行可能な特権モードでは汎用レジスタＲ１〜Ｒ５を汎用レジスタＲ１０〜Ｒ１４に割り当てるように構成する。タスクＢが本来実行可能な特権モードとそれ以外の動作モードとで、汎用レジスタＲ１〜Ｒ５とＲ１０〜Ｒ１５とを排他使用とするようにＧＲＡレジスタを設定することで、別の動作モード下でタスクＢが実行されることを防止し、耐タンパ性を向上させることが可能となる。
【０１０４】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、各モードに特権レベルを割り当てるようにしたので、第１の実施の形態において説明した効果に加えて、より権限が高い特権レベルで使用される汎用レジスタの保護と、特にセキュリティに関わるプログラムの実行における耐タンパ性の向上とを実現することが可能となった。
【０１０５】
（第３の実施の形態）
本発明の第３の実施の形態におけるマイクロコンピュータは、汎用レジスタへのアクセスの種類に応じて、アクセス許可／アクセス禁止を設定できるようにしたものである。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第１の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【０１０６】
図１５は、本発明の第３の実施の形態におけるＧＲＡレジスタの構成例を説明するための図である。図１５に示すように、ＧＲＡレジスタの２ビットが１つの汎用レジスタに対応しており、レジスタアクセス許可判定回路３３がＧＲＡレジスタから出力される２ビットのアクセス属性信号およびモード記憶部３１から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。
【０１０７】
モード１において、汎用レジスタに対応する２ビットが“００ｂ”の場合には、当該汎用レジスタに対する読み出しおよび書き込みの両方が禁止される。汎用レジスタに対応する２ビットが“０１ｂ”の場合には、当該汎用レジスタに対する書き込みのみが許可され、読み出しが禁止される。
【０１０８】
モード１において、汎用レジスタに対応する２ビットが“１０ｂ”の場合には、当該汎用レジスタに対する読み出しのみが許可され、書き込みが禁止される。汎用レジスタに対応する２ビットが“１１ｂ”の場合には、当該汎用レジスタに対する読み出しおよび書き込みの両方が許可される。
【０１０９】
なお、モード２においては、すべての汎用レジスタに対する読み出しおよび書き込みが許可されるようにしてもよいし、モード１において読み出しおよび書き込みの両方が許可されていた汎用レジスタに対する読み出しおよび書き込みを禁止し、それ以外の汎用レジスタに対する読み出しおよび書き込みを許可するようにしてもよい。
【０１１０】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、汎用レジスタへのアクセスの種類に応じて、アクセス許可／アクセス禁止を設定できるようにしたので、第１の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【０１１１】
（第４の実施の形態）
本発明の第４の実施の形態におけるマイクロコンピュータは、汎用レジスタをグループ化し、モード１においてどのグループに属する汎用レジスタに対するアクセスを許可するかを設定するものである。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第１の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【０１１２】
図１６は、本発明の第４の実施の形態におけるＧＲＡレジスタの構成例を説明するための図である。図１６に示すように、ＧＲＡレジスタの１ビットが１つのグループに対応しており、“１”が設定されたビットに対応するグループに属する汎用レジスタへのアクセスが許可される。グループ１には汎用レジスタＲ０〜Ｒ４が含まれ、グループ２には汎用レジスタＲ５〜Ｒ１０が含まれ、グループ３には汎用レジスタＲ１１〜Ｒ１５が含まれる。なお、各グループにどの汎用レジスタが含まれるかは予め設定されている。
【０１１３】
レジスタアクセス許可判定回路３３がＧＲＡレジスタから出力される３ビットのアクセス属性信号およびモード記憶部３１から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。
【０１１４】
モード１において、グループ１に対応するビットが“１”の場合には、汎用レジスタＲ０〜Ｒ４に対するアクセスが許可され、それ以外の汎用レジスタに対するアクセスが禁止される。グループ２に対応するビットが“１”の場合には、汎用レジスタＲ５〜Ｒ１０に対するアクセスが許可され、それ以外の汎用レジスタに対するアクセスが禁止される。また、グループ３に対応するビットが“１”の場合には、汎用レジスタＲ１１〜Ｒ１５に対するアクセスが許可され、それ以外の汎用レジスタに対するアクセスが禁止される。
【０１１５】
なお、モード２においては、すべての汎用レジスタに対するアクセスが許可されるようにしてもよいし、モード１においてアクセスが許可されていた汎用レジスタに対するアクセスが禁止され、モード１においてアクセスが禁止されていた汎用レジスタに対するアクセスが許可されるようにしてもよい。
【０１１６】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、汎用レジスタをグループ化し、どのグループに属する汎用レジスタに対するアクセスを許可するかを設定するようにしたので、第１の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【０１１７】
（第５の実施の形態）
本発明の第５の実施の形態におけるマイクロコンピュータは、バイト単位など、ｎビットの可変長単位で汎用レジスタに対するアクセスの許可／禁止を設定できるようにしたものである。一例として、バイト単位で汎用レジスタに対するアクセスの許可／禁止を設定する場合について以下に説明する。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第１の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【０１１８】
図１７は、本発明の第５の実施の形態におけるＧＲＡレジスタの構成例を説明するための図である。図１７に示すように、ＧＲＡレジスタの４ビットが１つの汎用レジスタに対応しており、レジスタアクセス許可判定回路３３がＧＲＡレジスタから出力される４ビットのアクセス属性信号およびモード記憶部３１から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。
【０１１９】
モード１において、汎用レジスタに対応する４ビットのうちビット０が“０”の場合には当該汎用レジスタのバイト０に対するアクセスが禁止され、“１”の場合には当該汎用レジスのバイト０に対するアクセスが許可される。汎用レジスタに対応する４ビットのうちビット１が“０”の場合には当該汎用レジスタのバイト１に対するアクセスが禁止され、“１”の場合には当該汎用レジスのバイト１に対するアクセスが許可される。汎用レジスタに対応する４ビットのうちビット２が“０”の場合には当該汎用レジスタのバイト２に対するアクセスが禁止され、“１”の場合には当該汎用レジスのバイト２に対するアクセスが許可される。また、汎用レジスタに対応する４ビットのうちビット３が“０”の場合には当該汎用レジスタのバイト３に対するアクセスが禁止され、“１”の場合には当該汎用レジスのバイト３に対するアクセスが許可される。
【０１２０】
なお、モード２においては、すべての汎用レジスタの全バイトに対するアクセスが許可されるようにしてもよいし、モード１においてアクセスが許可されていた汎用レジスタのバイトに対するアクセスを禁止し、それ以外のバイトに対するアクセスを許可するようにしてもよい。
【０１２１】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、ｎビットの可変長単位で汎用レジスタに対するアクセスの許可／禁止を設定できるようにしたので、第１の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【０１２２】
（第６の実施の形態）
本発明の第６の実施の形態におけるマイクロコンピュータは、プロセッサモードが複数ある場合に、特権レベルの階層ごとに汎用レジスタに対するアクセスの許可／禁止を設定できるようにしたものである。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第１の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【０１２３】
図１８は、本発明の第６の実施の形態におけるＧＲＡレジスタの構成例を説明するための図である。図１８に示すように、ＧＲＡレジスタの２ビットが１つの汎用レジスタに対応しており、レジスタアクセス許可判定回路３３がＧＲＡレジスタから出力される２ビットのアクセス属性信号およびモード記憶部３１から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。なお、本実施の形態においては、モード記憶部３１に現在の特権レベルが記憶されており、モード信号としてレジスタアクセス許可判定回路３３に出力される。
【０１２４】
汎用レジスタに対応する２ビットが“００ｂ”の場合には、当該汎用レジスタに対してリング０（特権レベル０）のみがアクセス許可されており、それ以外のリングからのアクセスが禁止される。
【０１２５】
汎用レジスタに対応する２ビットが“０１ｂ”の場合には、当該汎用レジスタに対してリング０およびリング１（特権レベル０および特権レベル１）のみがアクセス許可されており、それ以外のリングからのアクセスが禁止される。
【０１２６】
汎用レジスタに対応する２ビットが“１０ｂ”の場合には、当該汎用レジスタに対してリング０〜リング２（特権レベル０〜特権レベル２）がアクセス許可されており、それ以外のリングからのアクセスが禁止される。
【０１２７】
汎用レジスタに対応する２ビットが“１１ｂ”の場合には、当該汎用レジスタに対してすべてのリング（特権レベル０〜特権レベル３）がアクセス許可されている。
【０１２８】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、特権レベルの階層ごとに汎用レジスタに対するアクセスの許可／禁止を設定できるようにしたので、第１の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【０１２９】
（第７の実施の形態）
第１〜第６の実施の形態においては、モードに応じてアクセス許可される汎用レジスタを変更する場合について説明した。すなわち、モードによってアクセス許可される汎用レジスタの本数が減るため、命令コードにおけるレジスタ指定フィールドのビット数を少なくすることができる。本発明の第７の実施の形態におけるマイクロコンピュータは、使用しないレジスタ指定フィールドを別の意味で使用し、同じビットパターンの命令コードであっても、モードによって別命令として解釈して実行するものである。
【０１３０】
なお、本実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路３３の論理構成などは、第１〜第６の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【０１３１】
図１９は、同じビットパターンの命令コードであってもモードによって異なる命令として解釈される場合の一例を説明するための図である。図１９（ａ）は、１６本の汎用レジスタをすべて使用するモードで実行される命令コードの一例を示している。第１オペランド（Ｒ１）および第２オペランド（Ｒ２）として、それぞれ４ビットが割り付けられており、ＡＤＤ命令（加算命令）として解釈される。
【０１３２】
図１９（ｂ）は、使用する汎用レジスタの本数を８本に制限するモードで実行される命令コードの一例を示している。第１オペランド（Ｒ１）および第２オペランド（Ｒ２）として、それぞれ３ビットが割り付けられており、図１９（ａ）と比較して、オペコードフィールドを２ビット増やすことができ、より多くの命令コードをサポートすることができる。このモードにおいては、ＭＵＬ命令（乗算命令）として解釈される。
【０１３３】
図２０は、本発明の第７の実施の形態におけるマイクロコンピュータの命令デコード部の構成例を示す図である。命令デコード部１２は、命令デコード入力ラッチ回路４１と、制御ロジック回路４２と、命令デコーダ（モード１）４３と、命令デコーダ（モード２）４４と、セレクタ４５とを含む。
【０１３４】
命令デコード入力ラッチ回路４１は、制御ロジック回路４２による制御によって、命令フェッチ部１１によってフェッチされた命令コードを保持して命令デコーダ４３および４４に出力する。
【０１３５】
命令デコーダ４３は、命令デコード入力ラッチ回路４１から出力される命令コードを、モード１に対応する命令コードとして解釈してデコードし、デコード結果をセレクタ４５に出力する。
【０１３６】
命令デコーダ４４は、命令デコード入力ラッチ回路４１から出力される命令コードを、モード２に対応する命令コードとして解釈してデコードし、デコード結果をセレクタ４５に出力する。
【０１３７】
セレクタ４５は、モード記憶部３１から出力されるモード信号に応じて、命令デコーダ４３から受けたデコード結果および命令デコーダ４４から受けたデコード結果のいずれかを選択的に制御部１３に出力する。
【０１３８】
制御ロジック回路４２は、セレクタ４５から出力されるデコード結果信号に応じてデコード完了を検出し、命令デコード入力ラッチ回路４１に対して次の命令コードを命令フェッチ部１１から取り込むように制御する。
【０１３９】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、使用しないレジスタ指定フィールドを別の意味で使用し、同じビットパターンの命令コードであっても、モードによって別命令として解釈して実行するようにしたので、命令コードのビット数を変更せずにサポートする命令数のみを増やすことが可能となった。
【０１４０】
また、命令の使用頻度は各処理内容に依存するため、特定の処理のみで使用する命令群をレジスタ指定フィールドのビット数を減らした分でサポートすることにより、コード効率を向上させることが可能となった。
【０１４１】
（第８の実施の形態）
本発明の第８の実施の形態におけるマイクロコンピュータは、ＧＲＡレジスタなどの制御レジスタがアドレス空間にマッピングされるものである。なお、本実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路３３の論理構成などは、第１〜第７の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【０１４２】
図２１は、制御レジスタがアドレス空間にマッピングされるところを示す図である。図２１に示すように、アドレス空間の“Ｈ’ｘｘｘｘ００００”にＧＲＡレジスタがマッピングされ、“Ｈ’ｘｘｘｘ０００４”に制御レジスタ１がマッピングされ、“Ｈ’ｘｘｘｘ０００８”に制御レジスタ２がマッピングされる。
【０１４３】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、ＧＲＡレジスタをアドレス空間にマッピングするようにしたので、第１の実施の形態において説明した効果に加えて、ＭＯＶ命令などで容易に汎用レジスタのアクセス制御を行なうことが可能となった。
【０１４４】
（第９の実施の形態）
本発明の第９の実施の形態におけるマイクロコンピュータは、ＧＲＡ情報をＣＰＵの外部から設定できるようにしたものである。なお、本実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路３３の論理構成などは、第１〜第８の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【０１４５】
図２２は、本発明の第９の実施の形態におけるマイクロコンピュータの構成例を示す図である。ＣＰＵ１は、ＧＲＡ情報ラッチ回路５１を含む。ＧＲＡ情報ラッチ回路５１は、端子を介してモジュール６からＧＲＡ情報を受けて保持する。ＧＲＡ情報ラッチ回路５１に保持されるＧＲＡ情報は、図６に示すＧＲＡレジスタ３２に転送される。
【０１４６】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、ＧＲＡ情報をＣＰＵ外部から設定できるようにしたので、第１の実施の形態において説明した効果に加えて、ＧＲＡ情報をさらに容易に設定することが可能となった。
【０１４７】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４８】
１  ＣＰＵ、２  周辺回路、３  メモリ、４  バスインタフェース、５  内部バス、６  モジュール、１１  命令フェッチ部、１２  命令デコード部、１３  制御部、１４  アドレス生成部、１５  ＰＣ部、１６  汎用レジスタファイル、１７  制御レジスタファイル、１８  演算部、１９  ロード・ストア部、２０  データセレクタ、２１  Ｓバス、２２  Ｄバス、３１  モード記憶部、３２  ＧＲＡレジスタ、３３  レジスタアクセス許可判定回路、４１  命令デコード入力ラッチ回路、４２  制御ロジック回路、４３，４４  命令デコーダ、４５  セレクタ、５１  ＧＲＡ情報ラッチ回路。
【図１】
0005414057.tif 000002
【図２】
0005414057.tif 000003
【図３】
0005414057.tif 000004
【図４】
0005414057.tif 000005
【図５】
0005414057.tif 000006
【図６】
0005414057.tif 000007
【図７】
0005414057.tif 000008
【図８】
0005414057.tif 000009
【図９】
0005414057.tif 000010
【図１０】
0005414057.tif 000011
【図１１】
0005414057.tif 000012
【図１２】
0005414057.tif 000013
【図１３】
0005414057.tif 000014
【図１４】
0005414057.tif 000015
【図１５】
0005414057.tif 000016
【図１６】
0005414057.tif 000017
【図１７】
0005414057.tif 000018
【図１８】
0005414057.tif 000019
【図１９】
0005414057.tif 000020
【図２０】
0005414057.tif 000021
【図２１】
0005414057.tif 000022
【図２２】
0005414057.tif 000023