マイクロコンピュータ
【課題】汎用レジスタの使用効率を最適化することが可能なマイクロコンピュータを提供すること。
【解決手段】制御部13は、命令コードのデコード結果に応じて、命令の実行を制御する。GRAレジスタ32は、複数の汎用レジスタのそれぞれに対するアクセス属性を記憶する。モード記憶部31は、CPUの動作を制御するためのモードを記憶する。そして、レジスタアクセス許可判定回路33は、制御部13から汎用レジスタに対してアクセス要求がある場合に、GRAレジスタ32に記憶されるアクセス属性およびモード記憶部31に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する。したがって、モードに対応して使用される汎用レジスタの本数を変更することができ、汎用レジスタの使用効率を最適化することが可能となる。
【解決手段】制御部13は、命令コードのデコード結果に応じて、命令の実行を制御する。GRAレジスタ32は、複数の汎用レジスタのそれぞれに対するアクセス属性を記憶する。モード記憶部31は、CPUの動作を制御するためのモードを記憶する。そして、レジスタアクセス許可判定回路33は、制御部13から汎用レジスタに対してアクセス要求がある場合に、GRAレジスタ32に記憶されるアクセス属性およびモード記憶部31に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する。したがって、モードに対応して使用される汎用レジスタの本数を変更することができ、汎用レジスタの使用効率を最適化することが可能となる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロコンピュータに関し、特に、レジスタに保護機能を持たせたマイクロコンピュータに関する。
【背景技術】
【0002】
近年、マイクロコンピュータ(以下、マイコンとも呼ぶ。)の高機能化、多機能化が進んでいる。このようなマイコンにおいては、処理速度の高速化を図るために、汎用レジスタをそれぞれ2つ以上設けてバンク構成とするといった手法を用いたものがある。たとえば、バンク数を2とする構成においては、バンク0レジスタをアプリケーションプログラムが使用し、バンク1レジスタを割り込み処理ルーチンが使用するといった構成がとられる。
【0003】
CPU(Central Processing Unit)が、バンク0レジスタを使用しながらアプリケーションプログラムの処理を実行しているときに割り込みが入ると、バンク1レジスタに切替えて割り込み処理ルーチンを実行する。これによって、割り込み処理に移行するときに、低速のメモリ(スタック領域)にレジスタの内容を退避する必要がなくなり、高速に割り込み処理に移行することができる。同様に、割り込み処理ルーチンからアプリケーションプログラムに復帰するときも高速に移行することができる。
【0004】
これに関連する技術として、下記の特許文献1に開示された発明がある。特許文献1は、レジスタバンクに多数のレジスタを有するプロセッサに関する。レジスタは、共通のレジスタ名を有する汎用レジスタとスタックポインタレジスタとを有している。プロセッサは、共通のレジスタ名を参照するプログラム命令を実行するために、プログラミングに対応する論理を有している。この命令は、第1の条件下で汎用レジスタを用い且つ第2の条件下でスタックポインタレジスタを用いて実行される。したがって、特定の条件の成立に基づいて、同じ名前によって識別される複数のレジスタに選択的にアクセスすることができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特表2004−520662号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述のように、バンクレジスタを用いることにより割り込み処理ルーチンへの移行および割り込み処理ルーチンからの復帰を高速に行なうことができる。しかしながら、演算処理が多く処理時間が長いアプリケーションプログラムが使用するバンク0レジスのレジスタ数と、処理時間が短い割り込み処理ルーチンが使用するバンク1レジスタのレジスタ数とが同じである。そのため、アプリケーションプログラムで使用されるレジスタと、割り込み処理ルーチンで使用されるレジスタとの間で使用効率に差があり、処理内容に対する最適化がなされていないといった問題がある。
【0007】
また、汎用レジスタは、CPUのハードウェア量の多くを占めており、チップ面積やコストに与える影響が大きい。そのため、上述のようなバンクレジスタの構成をとることにより、チップ面積が大きくなり、製品コストが高くなるといった問題がある。
【0008】
また、割り込み処理では特権モード等の通常のユーザプログラムの実行よりも実行権限の高い動作モードとされることも多く、割り込み処理ルーチンが使用するバンクレジスタに対する保護機能がなく、アプリケーションプログラムや悪意のあるプログラムによって、割り込み処理ルーチンが使用するバンクレジスタの内容が意図せず書き換えられてしまう危険性がある。したがって、従来のCPUはセキュア用途に問題がある。
【0009】
本発明は、上記問題点を解決するためになされたものであり、その目的は、汎用レジスタの使用効率を最適化し、かつ汎用レジスタに対する保護機能を提供することが可能なマイクロコンピュータを提供することである。
【課題を解決するための手段】
【0010】
本発明の一実施例によれば、複数の汎用レジスタにアクセスしながら命令を実行するプロセッサを含んだマイクロコンピュータが提供される。制御部は、命令コードのデコード結果に応じて、命令の実行を制御する。GRAレジスタは、複数の汎用レジスタのそれぞれに対するアクセス属性を記憶する。モード記憶部は、CPUの動作を制御するためのモードを記憶する。そして、レジスタアクセス許可判定回路は、制御部から汎用レジスタに対してアクセス要求がある場合に、GRAレジスタに記憶されるアクセス属性およびモード記憶部に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する。
【発明の効果】
【0011】
この実施例によれば、GRAレジスタに記憶されるアクセス属性およびモード記憶部に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定するので、モードに対応して使用される汎用レジスタの本数を変更することができ、汎用レジスタの使用効率を最適化することが可能となる。
【図面の簡単な説明】
【0012】
【図1】本発明の第1の実施の形態におけるマイクロコンピュータの概略構成を示すブロック図である。
【図2】汎用レジスタファイル16に含まれる汎用レジスタ群の一例を示す図である。
【図3】制御レジスタファイル17に含まれる制御レジスタ群の一例を示す図である。
【図4】PSWの各ビットの割り付けを説明するための図である。
【図5】GRAレジスタによってどのように汎用レジスタR0〜R15のアクセスコントロールが行われるかを説明するための図である。
【図6】GRAレジスタによって汎用レジスタへのアクセスを制御するための回路構成の一例を示す図である。
【図7】レジスタアクセス許可判定回路33の論理の一例を説明するための図である。
【図8】レジスタアクセス許可判定回路33の論理の他の一例を説明するための図である。
【図9】例外要求が発生したときの割り込みシーケンスの一例を説明するためのフローチャートである。
【図10】例外要求が発生したときの割り込みシーケンスの他の一例を説明するためのフローチャートである。
【図11】CPUコンテキストのスタック退避イメージを示す図である。
【図12】タスクによってアクセス許可されるレジスタの本数が変更される場合を説明するための図である。
【図13】本発明の第2の実施の形態におけるマイクロコンピュータの特権レベルを説明するための図である。
【図14】本発明の第2の実施の形態におけるマイクロコンピュータによって実行されるソフトウェア構成の一例を示す図である。
【図15】本発明の第3の実施の形態におけるGRAレジスタの構成例を説明するための図である。
【図16】本発明の第4の実施の形態におけるGRAレジスタの構成例を説明するための図である。
【図17】本発明の第5の実施の形態におけるGRAレジスタの構成例を説明するための図である。
【図18】本発明の第6の実施の形態におけるGRAレジスタの構成例を説明するための図である。
【図19】同じビットパターンの命令コードであってもモードによって異なる命令として解釈される場合の一例を説明するための図である。
【図20】本発明の第7の実施の形態におけるマイクロコンピュータの命令デコード部の構成例を示す図である。
【図21】制御レジスタがアドレス空間にマッピングされるところを示す図である。
【図22】本発明の第9の実施の形態におけるマイクロコンピュータの構成例を示す図である。
【発明を実施するための形態】
【0013】
(第1の実施の形態)
図1は、本発明の第1の実施の形態におけるマイクロコンピュータの概略構成を示すブロック図である。このマイコンは、CPU1と、周辺回路2と、メモリ3と、バスインタフェース4とを含み、それぞれが内部バス5を介して接続される。CPU1は、内部バス5に接続されるバスインタフェース4を介してマイコン外部のメモリや周辺機器にアクセスすることが可能である。
【0014】
CPU1は、命令フェッチ部11と、命令デコード部12と、制御部13と、アドレス生成部14と、PC(Program Counter)部15と、汎用レジスタファイル16と、制御レジスタファイル17と、演算部18と、ロード・ストア部19と、データセレクタ20とを含み、それぞれが内部バス、Sバス21およびDバス22に接続される。なお、各部はこれらのバスを介してデータ、アドレス、制御信号などをやり取りすることができる。
【0015】
命令フェッチ部11は、PC部15のプログラムカウンタ値に応じて、メモリ3に格納される命令コードをフェッチしたり、バスインタフェース4を介してマイコン外部の図示しないメモリに格納される命令コードをフェッチしたりして、命令コードを命令デコード部12に出力する。
【0016】
命令デコード部12は、命令フェッチ部11から受けた命令コードを内部の命令デコーダに出力する。命令デコーダは、命令コードをデコードし、デコード結果を制御部13に出力する。
【0017】
制御部13は、命令デコード部12から受けたデコード結果に応じて、CPU1の各部を制御することによりCPU1の動作を制御し管理する。なお、図1においては、制御部13から各部に出力される制御信号を省略している。
【0018】
アドレス生成部14は、命令デコード部12によって分岐命令がデコードされたときに、分岐先アドレスをアドレッシングモードに応じて計算する。分岐条件が成立した場合には、計算された分岐先アドレスがPC部15に設定される。
【0019】
演算部18は、制御部13による制御によって、汎用レジスタに格納されるデータ、メモリ3から読み出されたデータ、バスインタフェース4を介してマイコン外部のメモリから読み出されたデータなどに対して演算処理を行なう。演算結果は、汎用レジスタ、メモリ3、マイコン外部のメモリなどに書き込まれる。
【0020】
ロード・ストア部19は、演算部18による演算結果などをメモリ3やマイコン外部のメモリに書き込み、メモリ3やマイコン外部のメモリからデータを読み出す。このとき、ロード・ストア部19は、オペランドアクセスアドレスを生成して、データセレクタ20を介してメモリ3やマイコン外部のメモリに出力する。
【0021】
データセレクタ20は、ロード・ストア部19から出力されるオペランドアクセスアドレスおよび書き込みデータを切替えて内部バス5に出力し、内部バス5を介して受けた読み出しデータをロード・ストア部19に出力する。
【0022】
図2は、汎用レジスタファイル16に含まれる汎用レジスタ群の一例を示す図である。汎用レジスタファイル16は、16本の汎用レジスタR0〜R15によって構成される。それぞれの汎用レジスタは、32ビット幅を有している。
【0023】
汎用レジスタR0は、汎用レジスタの機能に加えて、スタックポインタ(SP)としての機能も割り当てられている。このSPは、後述するPSW(Processor Status Word)レジスタのUビットによって、割り込みスタックポインタ(ISP)およびユーザスタックポインタ(USP)のいずれかに切り替わる。
【0024】
図3は、制御レジスタファイル17に含まれる制御レジスタ群の一例を示す図である。割り込みスタックポインタ(ISP)は、割り込み処理ルーチンに使用されるスタックポインタの値を設定するためのレジスタである。また、USP(ユーザスタックポインタ)は、ユーザ(アプリケーションプログラム)が使用するスタックポインタの値を設定するためのレジスタである。
【0025】
割り込みテーブル(INTB)レジスタは、可変ベクタテーブルの先頭アドレスを設定するためのレジスタである。プログラムカウンタ(PC)は、現在実行中の命令のアドレスを示すレジスタである。
【0026】
プロセッサステータスワード(PSW)は、プロセッサの状態を示すレジスタである。このPSWの詳細については後述する。
【0027】
バックアップPC(BPC)レジスタは、高速割り込み発生時にプログラムカウンタ(PC)の値が退避されるレジスタである。また、バックアップPSW(BPSW)レジスタは、高速割り込み発生時にプロセッサステータスワード(PSW)の値が退避されるレジスタである。高速割り込みベクタ(FINTV)レジスタは、高速割り込み発生時に分岐先アドレス(高速割り込み処理ルーチンの開始アドレス)を設定するためのレジスタである。
【0028】
ここで、高速割り込みとは、CPU1による割り込み処理を高速にする機能であり、特定の割り込み要因を高速割り込みの対象とすることができる。この特定の割り込み要因が発生すると、CPU1はPCおよびPSWの値をBPCレジスタおよびBPSWレジスタに退避し、分岐先アドレスをFINTVレジスタから取得する。これによって、PCおよびPSWの値をスタックに退避する必要がなく、また割り込みベクタアドレスをメモリから取得する必要がないため、高速に割り込み処理に移行することができる。
【0029】
浮動小数点ステータスワード(FPSW)レジスタは、浮動小数点演算ユニットの状態を示すレジスタである。このレジスタは、本発明とは特に関係しないため、その詳細な説明は行なわない。
【0030】
汎用レジスタアクセス属性(GRA)レジスタは、後述のように汎用レジスタR0〜R15のアクセスコントロールを設定するためのレジスタである。なお、このレジスタの詳細はついては後述する。
【0031】
図4は、PSWの各ビットの割り付けを説明するための図である。PSWのビット0〜3には、それぞれCフラグ(キャリフラグ)、Zフラグ(ゼロフラグ)、Sフラグ(サインフラグ)およびOフラグ(オーバフローフラグ)が割り付けられている。
【0032】
PSWのビット16には、割り込み許可ビット(Iビット)が割り付けられており、割り込み禁止/許可を設定することができる。
【0033】
PSWのビット17には、スタックポインタ指定ビット(Uビット)が割り付けられており、“0”のときにSPとして割り込みスタックポインタ(ISP)を指定し、“1”のときにSPとしてユーザスタックポインタ(USP)を指定する。例外を受け付けると、このビットは“0”になる。スーパバイザモードからユーザモードに移行するとこのビットは“1”になる。
【0034】
PSWのビット20には、プロセッサモード指定ビット(PMビット)が割り付けられており、“0”のときにプロセッサモードをスーパバイザモードに設定し、“1”のときにプロセッサモードをユーザモードに設定する。
【0035】
PSWのビット24〜26には、プロセッサ割り込み優先レベル(IPL[2:0])が割り付けられており、優先レベル0〜優先レベル7の8段階のプロセッサ割り込み優先レベルを指定することができる。要求があった割り込みの優先レベルがプロセッサ割り込み優先レベルよりも高い場合には、その割り込みが許可される。
【0036】
図5は、GRAレジスタによってどのように汎用レジスタR0〜R15のアクセスコントロールが行われるかを説明するための図である。汎用レジスタR0〜R15に対するアクセスは、GRAレジスタの内容とモードとによって決定される。なお、このモードとは、上述のプロセッサモードを含んだ広い概念を指しており、プロセッサモードに限定されるものではない。
【0037】
図5に示すように、モード1においてはGRAレジスタに“1”が設定されているビットに対応する汎用レジスタがアクセス許可されており、“0”が設定されているビットに対応する汎用レジスタがアクセス禁止されている。モード1からモード2に移行するときに、2つのパターンをサポートしている。
【0038】
1つ目は、モード2に移行すると、すべての汎用レジスタがアクセス許可される場合である(図5の(1)を参照)。2つ目は、モード2に移行すると、モード1でアクセス許可されていた汎用レジスタがアクセス禁止となり、モード1でアクセス禁止されていた汎用レジスタがアクセス許可となる場合である(図5の(2)を参照)。
【0039】
図5の(2)の場合に、アクセス禁止状態の汎用レジスタへアクセスをした場合、ノンマスカブルインタラプト等を発生させるか又は無視するかをGRAレジスタに指定するビットを更に有してもよい。
【0040】
図6は、GRAレジスタによって汎用レジスタへのアクセスを制御するための回路構成の一例を示す図である。モード記憶部31は、現在どのモードであるかを示す情報を記憶する。たとえば、モードが上述のプロセッサモードに対応する場合には、PSWレジスタ内のPMの値がモード記憶部31に設定される。
【0041】
制御部13は、命令デコード部12から受けたデコード結果を解析することにより、汎用レジスタへのアクセスを伴う命令がデコードされたことを検出すると、その汎用レジスタのレジスタ番号をGRAレジスタ32に出力すると共に、レジスタアクセス要求信号をレジスタアクセス許可判定回路33に出力する。
【0042】
GRAレジスタ32は、制御部13から受けたレジスタ番号に対応するビットの内容をアクセス属性信号としてレジスタアクセス許可判定回路33に出力する。
【0043】
レジスタアクセス許可判定回路33は、制御部12から出力されるレジスタアクセス要求信号、モード記憶部31から出力されるモード信号およびGRAレジスタ32から出力されるアクセス属性信号に基づいて、対応する番号の汎用レジスタへのレジスタアクセスイネーブル信号を生成して出力する。また、レジスタアクセス許可判定回路33は、制御部13からアクセスが禁止されている汎用レジスタへのアクセス要求があると、例外要求信号を制御部13に出力する。
【0044】
図7は、レジスタアクセス許可判定回路33の論理の一例を説明するための図である。図7に示す論理は、モード2のときにすべての汎用レジスタへのアクセスが許可される場合を示している。図5を用いて説明した、モード2に移行するときの1つ目のパターン(図5の(1))に対応している。
【0045】
制御部13からレジスタアクセス要求がない場合(レジスタアクセス要求信号が“0”の場合)、モード記憶部31から出力されるモード信号およびGRAレジスタ32から出力されるアクセス属性信号にかかわらず、レジスタアクセスイネーブル信号に“0”(アクセスなし)を出力する。この場合、例外要求は発生しない。
【0046】
また、制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード1”を示しており、GRAレジスタ32から出力されるアクセス属性信号がアクセス許可(アクセス属性信号が“1”)を示している場合、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“1”(アクセスあり)を出力する。この場合、例外要求は発生しない。
【0047】
また、制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード1”を示しており、GRAレジスタ32から出力されるアクセス属性信号がアクセス禁止(アクセス属性信号が“0”)を示している場合、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“0”(アクセスなし)を出力する。この場合、レジスタアクセス許可判定回路33は、例外要求信号に“1”を出力して、例外要求を発生させる。
【0048】
また、制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード2”を示している場合、GRAレジスタ32から出力されるアクセス属性信号にかかわらず、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“1”(アクセスあり)を出力する。この場合、例外要求は発生しない。
【0049】
図8は、レジスタアクセス許可判定回路33の論理の他の一例を説明するための図である。図8に示す論理は、モード2に移行すると、モード1でアクセス許可されていた汎用レジスタがアクセス禁止となり、モード1でアクセス禁止されていた汎用レジスタがアクセス許可となる場合を示している。図5を用いて説明した、モード2に移行するときの2つ目のパターン(図5の(2))に対応している。制御部13からレジスタアクセス要求がない場合、およびモード記憶部31から出力されるモード信号が“モード1”を示す場合は、図7に示すものと同様である。
【0050】
制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード2”を示しており、GRAレジスタ32から出力されるアクセス属性信号がアクセス許可(アクセス属性信号が“1”)を示している場合、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“0”(アクセスなし)を出力する。この場合、レジスタアクセス許可判定回路33は、例外要求信号に“1”を出力して、例外要求を発生させる。
【0051】
また、制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード2”を示しており、GRAレジスタ32から出力されるアクセス属性信号がアクセス禁止(アクセス属性信号が“0”)を示している場合、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“1”(アクセスあり)を出力する。この場合、例外要求は発生しない。
【0052】
図9は、例外要求が発生したときの例外処理シーケンスの一例を説明するためのフローチャートである。図9においては、モード1がユーザモードに対応し、モード2が特権モード(スーパバイザモード)に対応する。通常、アプリケーションプログラムはユーザモードで動作し、割り込みなどの例外が発生した場合や、CPU1が特権モードへの移行命令を実行した場合に特権モードに移行する。
【0053】
CPU1がアプリケーションプログラムを実行中に(ユーザモードで動作中に)、命令Cで例外要求が発生すると(S11)、ハードウェア前処理が実行される(S12)。この処理は、CPU1が例外要求を受けたときに、ハードウェアによって自動的に行なわれる。
【0054】
高速割り込みの場合には、PCレジスタ、PSWレジスタおよびGRAレジスタの内容が、それぞれBPCレジスタ、BPSWレジスタおよびBGRAレジスタに退避され、PSWレジスタ内のUビット、IビットおよびPMビットのそれぞれに“0”が設定されて、スーパバイザモードに移行する。
【0055】
また、高速割り込み以外の例外の場合には、PCレジスタ、PSWレジスタおよびGRAレジスタの内容が、それぞれISPで指定されるアドレスのスタック領域に退避され、PSWレジスタ内のUビット、IビットおよびPMビットのそれぞれに“0”が設定されて、スーパバイザモードに移行する。
【0056】
次に、CPU1はベクタアドレスを読み出すことにより、ハンドラの先頭アドレスに分岐する(S13)。すなわち、高速割り込みの場合には、FINTVレジスタに設定される分岐先アドレスを取得して、ハンドラの先頭アドレスに分岐する。また、高速割り込み以外の例外の場合には、INTBレジスタの内容を参照してメモリに格納される分岐先アドレスを取得して、ハンドラの先頭アドレスに分岐する。
【0057】
ステップS11〜S13は、CPU1によって自動的に行なわれる処理であるが、ステップS14〜S17またはS19は、ユーザが記述した処理プログラムをCPU1が実行することによって行なわれる処理である。
【0058】
ノンマスカブル割り込みを除く例外ハンドラの場合には、まず、汎用レジスタの内容をスタック領域に退避する(S14)。なお、汎用レジスタ内容のスタック領域退避については、マイクロコンピュータのハードウェアとして退避機構を設け、またはソフトウェアによりスタック領域退避処理を行なうか否かの選択的事項である。
【0059】
次に、ハンドラ処理が行なわれ(S15)、退避しておいた汎用レジスタの内容が復帰される(S16)。そして、例外ハンドラの最後に記述されたリターン命令が実行されて(S17)、ステップS18の処理に移行する。なお、高速割り込みの場合にはRTFI命令が記述され、高速割り込み以外の例外の場合にはRTE命令が記述される。
【0060】
また、ノンマスカブル割り込みの場合には、ノンマスカブル割り込み処理が実行され(S19)、プログラムの終了またはシステムリセットが行なわれる。
【0061】
ステップS18において、ハードウェア後処理が実行される。この処理は、CPU1がRTFI命令またはRTE命令を実行したときに、ハードウェアによって自動的に行なわれる。
【0062】
高速割り込みの場合には、BPCレジスタ、BPSWレジスタおよびBGRAレジスタの内容を、それぞれPCレジスタ、PSWレジスタおよびGRAレジスタに復帰させる。このとき、PSWレジスタのPMビットが“1”であれば、ユーザモードへ移行する。
【0063】
また、高速割り込み以外の例外の場合には、スタック領域に退避されていた内容を、PCレジスタ、PSWレジスタおよびGRAレジスタに復帰させる。このとき、PSWレジスタのPMビットが“1”であれば、ユーザモードへ移行する。
【0064】
図9に示すように、例外事象によって受け付けタイミングと退避されるPCの値とが異なる。未定義命令例外、特権命令例外、浮動小数点例外などの命令処理取消型においては、命令Cの実行中に例外が受け付けられ、例外を発生した命令のPC値が退避される。したがって、命令Cからプログラムの実行が再開される。
【0065】
特定の命令を実行中にノンマスカブル割り込みや通常の割り込みが発生した場合などの命令処理中断型においては、命令Cの実行中に例外が受け付けられ、実行中の命令のPC値が退避される。したがって、命令Cからプログラムの実行が再開される。
【0066】
INT命令やBRK命令を実行したときに発生する無条件トラップなどの命令処理完了型においては、命令Cが実行された後に例外が受け付けられ、次命令のPC値が退避される。したがって、命令Cの次の命令からプログラムの実行が再開される。
【0067】
図10は、例外要求が発生したときの割り込みシーケンスの他の一例を説明するためのフローチャートである。CPU1がアプリケーションプログラムを実行中に(ユーザモードで動作中に)、命令Cで例外要求が発生すると(S21)、ハードウェア前処理が実行される(S22)。この処理は、CPU1が例外要求を受けたときに、ハードウェアによって自動的に行なわれる。
【0068】
高速割り込みの場合には、PCレジスタおよびPSWレジスタの内容が、それぞれBPCレジスタおよびBPSWレジスタに退避され、PSWレジスタ内のUビット、IビットおよびPMビットのそれぞれに“0”が設定されて、スーパバイザモードに移行する。
【0069】
また、高速割り込み以外の例外の場合には、PCレジスタおよびPSWレジスタの内容が、それぞれISPで指定されるアドレスのスタック領域に退避され、PSWレジスタ内のUビット、IビットおよびPMビットのそれぞれに“0”が設定されて、スーパバイザモードに移行する。CPUの動作モードがユーザモードからスーパバイザモードに移行したことに応じて、図5の(2)で説明したパターンにおいては、ユーザモードで使用可能であった汎用レジスタR0〜R11がスーパバイザモードでは使用禁止となり、一方でユーザモードで使用禁止されていた汎用レジスタR12〜R15がスーパバイザモードでは使用可能となる。
【0070】
次に、CPU1はベクタアドレスを読み出すことにより、ハンドラの先頭アドレスに分岐する(S23)。
【0071】
ステップS21〜S23は、CPU1によって自動的に行なわれる処理であるが、ステップS24〜S25またはS27は、ユーザが記述した処理プログラムをCPU1が実行することによって行なわれる処理である。
【0072】
次に、例外ハンドラ処理が行なわれる(S24)。例外ハンドラでは、汎用レジスタR12〜R15のみを使用して処理を行なうように記述される。このように記述されることで、図5の(2)のパターンにおいては、割り込み発生前に実行していたユーザモードのプログラムの実行状態を維持した状態で割り込みに応答した処理を行なうことが可能となり、また汎用レジスタR0〜R11をスタック領域へ退避することが不要となる。
【0073】
一方で、ステップS22においてスーパバイザモードに移行する際、図5の(1)のパターンの場合には、汎用レジスタR0〜R11をスタック領域へ退避するか否かは、例外ハンドラ処理内のプログラム記述に依存する。
【0074】
図5の(1)のパターンと図5の(2)のパターンとのどちらを採用するかについては、例えば例外ハンドラ内での処理が比較的多く汎用レジスタをスタック領域へ退避する処理がオーバヘッドとして相対的に少ない、または汎用レジスタをスタック領域へ退避する処理を行なう既存の例外ハンドラを用いる場合は、図5の(1)のパターンを採用すればよい。
【0075】
一方で、例外ハンドラ内での処理が比較的少なく汎用レジスタをスタック領域へ退避する処理がオーバヘッドとして相対的に大きい、またはユーザプログラムのリアルタイム実行性が高い場合は、図5の(2)のパターンを採用すればよい。この場合、GRAレジスタにアクセス禁止レジスタへのアクセスを無視するように指定しておくことで、例外ハンドラに汎用レジスタをスタック退避する処理が含まれていたとしても、汎用レジスタR0〜R11はアクセス禁止状態となっているため、汎用レジスタをスタック領域へ退避することはできず汎用レジスタのスタック領域退避処理がオーバヘッドとして解消される。
【0076】
かかる選択を可能とすることで、既存プログラムの流用性を維持しつつ、比較的軽い処理をする例外ハンドラにおける汎用レジスタのスタック退避というオーバヘッドを低減させるとともに、実行中のユーザプログラムの実行状態を保全することが可能となる。
【0077】
そして、例外ハンドラの最後に記述されたリターン命令が実行されて(S25)、ステップS26の処理に移行する。
【0078】
また、ノンマスカブル割り込みの場合には、ノンマスカブル割り込み処理が実行され(S31)、プログラムの終了またはシステムリセットが行なわれる。
【0079】
ステップS26において、ハードウェア後処理が実行される。この処理は、CPU1がRTFI命令またはRTE命令を実行したときに、ハードウェアによって自動的に行なわれる。
【0080】
高速割り込みの場合には、BPCレジスタおよびBPSWレジスタの内容を、それぞれPCレジスタおよびPSWレジスタに復帰させる。このとき、PSWレジスタのPMビットが“1”であれば、ユーザモードへ移行する。
【0081】
また、高速割り込み以外の例外の場合には、スタック領域に退避されていた内容を、PCレジスタおよびPSWレジスタに復帰させる。このとき、PSWレジスタのPMビットが“1”であれば、ユーザモードへ移行する。
【0082】
図11は、CPUコンテキストのスタック退避イメージを示す図である。上述のように高速割り込み以外の例外が発生した場合、PCレジスタ、PSWレジスタおよびGRAレジスタの値はスタック領域に格納される。図11に示すように、これらの値が順次スタック領域に格納され、SPの値が矢印の方向にインクリメントまたはデクリメントされる。なお、スタック領域に格納された値を復帰させる場合には、SPの値が矢印と逆方向にデクリメントまたはインクリメントされる。
【0083】
図12は、タスクによってアクセス許可されるレジスタの本数が変更される場合を説明するための図である。一般に、タスクの処理は、アプリケーションプログラムと割り込み処理ルーチンとから構成される。図12においては、モード1がアプリケーションプログラムに対応し、モード2が割り込み処理ルーチンに対応している。モード2は、図5の説明の(1)の方法である。なお、OSによるタスクスイッチ処理についての説明は省略している。
【0084】
タスクAにおいては、アプリケーション処理規模が大きいため、R0〜R11の12本の汎用レジスタがアプリケーションプログラムにアサインされている。また、R12〜R15の4本の汎用レジスタが割り込み処理ルーチンにアサインされている。R12〜R15の4本の汎用レジスタは、アプリケーションプログラムからのアクセスが禁止されているため、アプリケーションプログラムや悪意のあるプログラムにより、意図せず書き換えられてしまうのを防止することができる。
【0085】
タスクBにおいては、割り込み処理速度が重視される処理内容であるため、R0〜R7の8本の汎用レジスタアプリケーションプログラムにアサインされており、R8〜R15の8本の汎用レジスタが割り込み処理ルーチンにアサインされている。R8〜R15の8本の汎用レジスタは、アプリケーションプログラムからのアクセスが禁止される。
【0086】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、モード1においてアクセス許可される汎用レジスタおよびアクセス禁止される汎用レジスタがGRAレジスタに設定され、モード1においてアクセス禁止されていた汎用レジスタがモード2でアクセス許可されるようにした。したがって、モード2(割り込み処理ルーチン)にアサインするレジスタ本数をタスク毎に最適化することが可能となった。
【0087】
また、モード2(割り込み処理ルーチン)にアサインされた汎用レジスタは、モード1(アプリケーションプログラム)からのアクセスが禁止されるため、アプリケーションプログラムや悪意のあるプログラムにより、意図せず書き換えられてしまうのを防止する、いわゆるレジスタ保護機能を実現することが可能となった。
【0088】
また、バンクレジスタ構成とする必要がなく、汎用レジスタの本数を減らすことができるため、チップ面積が大きくなるのを防止でき、製品コストが高くなるのを防止することが可能となった。
【0089】
(第2の実施の形態)
本発明の第2の実施の形態におけるマイクロコンピュータは、特権レベルのサポートにより階層的な保護機能(リングプロテクション)を実現する。以下、特権レベル0〜2の3階層をサポートする場合について説明するが、これに限られるものではなく、特権レベルが4階層以上であってもよい。なお、特権レベル0が最も権限が高く、特権レベル1、特権レベル2の順に低くなるものとする。
【0090】
本発明の第2の実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路33の論理構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0091】
図13は、本発明の第2の実施の形態におけるマイクロコンピュータの特権レベルを説明するための図である。図13に示すように、特権レベル0にカーネル(OS)が配置され、特権レベル1に割り込み処理ルーチンが配置され、特権レベル2にアプリケーションプログラム(ユーザプログラム)が配置される。レベル毎にリソースアクセス、実行可能な命令種類などの許可される動作が規定される。たとえば、レベル2のアプリケーションプログラムには特定メモリ領域へのアクセスおよび特定命令の実行のみが許可されている。
【0092】
特権レベル2から特権レベル1への移行は、割り込み(INT)によって行なわれる。また、特権レベル2から特権レベル0への移行は、INT命令やBRK命令などを実行することによって発生するトラップによって行なわれるなど、特定の特権レベル間を移行するには、特定の例外要因を割り当てることとする。
【0093】
図13の(A)は、モード1にアプリケーションプログラムと割り込み処理ルーチンとが割り当てられ、モード2にカーネル(OS)が割り当てられる場合を示している。これによって、アプリケーションプログラムや割り込み処理ルーチンから、OSへの切り替えが高速に行なえるようになり、OSが利用する汎用レジスタを含むリソースが保護される。
【0094】
また、図13の(B)は、モード1にアプリケーションプログラムが割り当てられ、モード2に割り込みルーチンとカーネル(OS)とが割り当てられる場合を示している。これによって、アプリケーションプログラムと割り込み処理ルーチンとの切り替えが高速に行なえるようになり、割り込みルーチンおよびOSが利用する汎用レジスタを含むリソースが保護される。
【0095】
また、図13の(C)は、図5の(2)に示すように、モード2に移行すると、モード1でアクセス許可されていた汎用レジスタがアクセス禁止となり、モード1でアクセス禁止されていた汎用レジスタがアクセス許可となるようにすれば、アプリケーションプログラムが使用する汎用レジスタと、割り込み処理ルーチンが使用する汎用レジスタとが排他的となる。これによって、割り込み処理ルーチンが暴走した場合でもアプリケーションプログラムの破壊を防止することができる。
【0096】
なお、特権レベル0においてGRAレジスタに対するアクセスが許可され、特権レベル1および2においてはGRAレジスタに対するアクセスが禁止されるようにすれば、より効果的にOSが使用する汎用レジスタの保護機能を実現することができる。
【0097】
図14は、本発明の第2の実施の形態におけるマイクロコンピュータによって実行されるソフトウェア構成の一例を示す図である。図14においては、OS上でタスクAおよびタスクBが動作している。
【0098】
タスクAは、アプリケーションプログラムが暴走した場合や、アプリケーションプログラムが悪意のあるプログラムであった場合でも、割り込み処理ルーチンが使用する汎用レジスタへのアクセスが禁止されることを示している。これは、レジスタアクセス許可判定回路を、図7に示す論理とした場合、図8に示す論理とした場合のいずれでも実現可能である。
【0099】
しかしながら、図7に示す論理とした場合には、割り込み処理ルーチンに対してすべての汎用レジスタへのアクセスが許可されているので、割り込み処理ルーチンが暴走するとアプリケーションプログラムを破壊する可能性がある。
【0100】
タスクBは、割り込み処理ルーチンが暴走した場合でも、アプリケーションプログラムが使用する汎用レジスタへのアクセスが禁止されることを示している。これは、レジスタアクセス許可判定回路を図8に示す論理として、アプリケーションプログラムが使用する汎用レジスタと割り込み処理ルーチンが使用する汎用レジスタとを排他的にすることにより実現可能である。
【0101】
タスクBがセキュリティに関連するユーザプログラム、例えば暗号処理プログラムである場合、暗号を復号するための復号鍵を不当に取得するために、タスクBを実行している間に、外部から割り込みを発生させ、割り込み処理ルーチンから図示しない悪意ある別のタスクCへモード2の特権モード状態のままで分岐させる、という攻撃が考えられる。このような場合、図8に示す論理としてアプリケーションプログラムが使用する汎用レジスタと割り込み処理ルーチンが使用する汎用レジスタとを排他的にすると共に、GRAレジスタにアクセス禁止状態の汎用レジスタへアクセスを行なった場合にノンマスカブルインタラプト等を発生させるようにすればよい。このように設定することで、アプリケーションプログラムが使用している汎用レジスタに不当にアクセスがあった場合、汎用レジスタの設定内容をマイクロコンピュータの外部へ不測に流出させることを防止することが可能となる。
【0102】
また、図1に図示しないメモリ管理部(MMU)やバス制御部(バスコントローラ)による、タスクBが配置されているメモリ空間や不揮発性メモリ等へのアクセスも禁止するようにする公知技術との組み合わせにより、タスクBの耐タンパ性をより向上させることが可能となる。
【0103】
さらには、汎用レジスタの仮想レジスタ機能についての公知技術をも組み合わせ、タスクBのプログラムコードとしては例えば汎用レジスタR1〜R5を用いるように記述をしておき、タスクBが実行可能な特権モードでは汎用レジスタR1〜R5を汎用レジスタR10〜R14に割り当てるように構成する。タスクBが本来実行可能な特権モードとそれ以外の動作モードとで、汎用レジスタR1〜R5とR10〜R15とを排他使用とするようにGRAレジスタを設定することで、別の動作モード下でタスクBが実行されることを防止し、耐タンパ性を向上させることが可能となる。
【0104】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、各モードに特権レベルを割り当てるようにしたので、第1の実施の形態において説明した効果に加えて、より権限が高い特権レベルで使用される汎用レジスタの保護と、特にセキュリティに関わるプログラムの実行における耐タンパ性の向上とを実現することが可能となった。
【0105】
(第3の実施の形態)
本発明の第3の実施の形態におけるマイクロコンピュータは、汎用レジスタへのアクセスの種類に応じて、アクセス許可/アクセス禁止を設定できるようにしたものである。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0106】
図15は、本発明の第3の実施の形態におけるGRAレジスタの構成例を説明するための図である。図15に示すように、GRAレジスタの2ビットが1つの汎用レジスタに対応しており、レジスタアクセス許可判定回路33がGRAレジスタから出力される2ビットのアクセス属性信号およびモード記憶部31から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。
【0107】
モード1において、汎用レジスタに対応する2ビットが“00b”の場合には、当該汎用レジスタに対する読み出しおよび書き込みの両方が禁止される。汎用レジスタに対応する2ビットが“01b”の場合には、当該汎用レジスタに対する書き込みのみが許可され、読み出しが禁止される。
【0108】
モード1において、汎用レジスタに対応する2ビットが“10b”の場合には、当該汎用レジスタに対する読み出しのみが許可され、書き込みが禁止される。汎用レジスタに対応する2ビットが“11b”の場合には、当該汎用レジスタに対する読み出しおよび書き込みの両方が許可される。
【0109】
なお、モード2においては、すべての汎用レジスタに対する読み出しおよび書き込みが許可されるようにしてもよいし、モード1において読み出しおよび書き込みの両方が許可されていた汎用レジスタに対する読み出しおよび書き込みを禁止し、それ以外の汎用レジスタに対する読み出しおよび書き込みを許可するようにしてもよい。
【0110】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、汎用レジスタへのアクセスの種類に応じて、アクセス許可/アクセス禁止を設定できるようにしたので、第1の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【0111】
(第4の実施の形態)
本発明の第4の実施の形態におけるマイクロコンピュータは、汎用レジスタをグループ化し、モード1においてどのグループに属する汎用レジスタに対するアクセスを許可するかを設定するものである。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0112】
図16は、本発明の第4の実施の形態におけるGRAレジスタの構成例を説明するための図である。図16に示すように、GRAレジスタの1ビットが1つのグループに対応しており、“1”が設定されたビットに対応するグループに属する汎用レジスタへのアクセスが許可される。グループ1には汎用レジスタR0〜R4が含まれ、グループ2には汎用レジスタR5〜R10が含まれ、グループ3には汎用レジスタR11〜R15が含まれる。なお、各グループにどの汎用レジスタが含まれるかは予め設定されている。
【0113】
レジスタアクセス許可判定回路33がGRAレジスタから出力される3ビットのアクセス属性信号およびモード記憶部31から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。
【0114】
モード1において、グループ1に対応するビットが“1”の場合には、汎用レジスタR0〜R4に対するアクセスが許可され、それ以外の汎用レジスタに対するアクセスが禁止される。グループ2に対応するビットが“1”の場合には、汎用レジスタR5〜R10に対するアクセスが許可され、それ以外の汎用レジスタに対するアクセスが禁止される。また、グループ3に対応するビットが“1”の場合には、汎用レジスタR11〜R15に対するアクセスが許可され、それ以外の汎用レジスタに対するアクセスが禁止される。
【0115】
なお、モード2においては、すべての汎用レジスタに対するアクセスが許可されるようにしてもよいし、モード1においてアクセスが許可されていた汎用レジスタに対するアクセスが禁止され、モード1においてアクセスが禁止されていた汎用レジスタに対するアクセスが許可されるようにしてもよい。
【0116】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、汎用レジスタをグループ化し、どのグループに属する汎用レジスタに対するアクセスを許可するかを設定するようにしたので、第1の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【0117】
(第5の実施の形態)
本発明の第5の実施の形態におけるマイクロコンピュータは、バイト単位など、nビットの可変長単位で汎用レジスタに対するアクセスの許可/禁止を設定できるようにしたものである。一例として、バイト単位で汎用レジスタに対するアクセスの許可/禁止を設定する場合について以下に説明する。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0118】
図17は、本発明の第5の実施の形態におけるGRAレジスタの構成例を説明するための図である。図17に示すように、GRAレジスタの4ビットが1つの汎用レジスタに対応しており、レジスタアクセス許可判定回路33がGRAレジスタから出力される4ビットのアクセス属性信号およびモード記憶部31から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。
【0119】
モード1において、汎用レジスタに対応する4ビットのうちビット0が“0”の場合には当該汎用レジスタのバイト0に対するアクセスが禁止され、“1”の場合には当該汎用レジスのバイト0に対するアクセスが許可される。汎用レジスタに対応する4ビットのうちビット1が“0”の場合には当該汎用レジスタのバイト1に対するアクセスが禁止され、“1”の場合には当該汎用レジスのバイト1に対するアクセスが許可される。汎用レジスタに対応する4ビットのうちビット2が“0”の場合には当該汎用レジスタのバイト2に対するアクセスが禁止され、“1”の場合には当該汎用レジスのバイト2に対するアクセスが許可される。また、汎用レジスタに対応する4ビットのうちビット3が“0”の場合には当該汎用レジスタのバイト3に対するアクセスが禁止され、“1”の場合には当該汎用レジスのバイト3に対するアクセスが許可される。
【0120】
なお、モード2においては、すべての汎用レジスタの全バイトに対するアクセスが許可されるようにしてもよいし、モード1においてアクセスが許可されていた汎用レジスタのバイトに対するアクセスを禁止し、それ以外のバイトに対するアクセスを許可するようにしてもよい。
【0121】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、nビットの可変長単位で汎用レジスタに対するアクセスの許可/禁止を設定できるようにしたので、第1の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【0122】
(第6の実施の形態)
本発明の第6の実施の形態におけるマイクロコンピュータは、プロセッサモードが複数ある場合に、特権レベルの階層ごとに汎用レジスタに対するアクセスの許可/禁止を設定できるようにしたものである。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0123】
図18は、本発明の第6の実施の形態におけるGRAレジスタの構成例を説明するための図である。図18に示すように、GRAレジスタの2ビットが1つの汎用レジスタに対応しており、レジスタアクセス許可判定回路33がGRAレジスタから出力される2ビットのアクセス属性信号およびモード記憶部31から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。なお、本実施の形態においては、モード記憶部31に現在の特権レベルが記憶されており、モード信号としてレジスタアクセス許可判定回路33に出力される。
【0124】
汎用レジスタに対応する2ビットが“00b”の場合には、当該汎用レジスタに対してリング0(特権レベル0)のみがアクセス許可されており、それ以外のリングからのアクセスが禁止される。
【0125】
汎用レジスタに対応する2ビットが“01b”の場合には、当該汎用レジスタに対してリング0およびリング1(特権レベル0および特権レベル1)のみがアクセス許可されており、それ以外のリングからのアクセスが禁止される。
【0126】
汎用レジスタに対応する2ビットが“10b”の場合には、当該汎用レジスタに対してリング0〜リング2(特権レベル0〜特権レベル2)がアクセス許可されており、それ以外のリングからのアクセスが禁止される。
【0127】
汎用レジスタに対応する2ビットが“11b”の場合には、当該汎用レジスタに対してすべてのリング(特権レベル0〜特権レベル3)がアクセス許可されている。
【0128】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、特権レベルの階層ごとに汎用レジスタに対するアクセスの許可/禁止を設定できるようにしたので、第1の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【0129】
(第7の実施の形態)
第1〜第6の実施の形態においては、モードに応じてアクセス許可される汎用レジスタを変更する場合について説明した。すなわち、モードによってアクセス許可される汎用レジスタの本数が減るため、命令コードにおけるレジスタ指定フィールドのビット数を少なくすることができる。本発明の第7の実施の形態におけるマイクロコンピュータは、使用しないレジスタ指定フィールドを別の意味で使用し、同じビットパターンの命令コードであっても、モードによって別命令として解釈して実行するものである。
【0130】
なお、本実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路33の論理構成などは、第1〜第6の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0131】
図19は、同じビットパターンの命令コードであってもモードによって異なる命令として解釈される場合の一例を説明するための図である。図19(a)は、16本の汎用レジスタをすべて使用するモードで実行される命令コードの一例を示している。第1オペランド(R1)および第2オペランド(R2)として、それぞれ4ビットが割り付けられており、ADD命令(加算命令)として解釈される。
【0132】
図19(b)は、使用する汎用レジスタの本数を8本に制限するモードで実行される命令コードの一例を示している。第1オペランド(R1)および第2オペランド(R2)として、それぞれ3ビットが割り付けられており、図19(a)と比較して、オペコードフィールドを2ビット増やすことができ、より多くの命令コードをサポートすることができる。このモードにおいては、MUL命令(乗算命令)として解釈される。
【0133】
図20は、本発明の第7の実施の形態におけるマイクロコンピュータの命令デコード部の構成例を示す図である。命令デコード部12は、命令デコード入力ラッチ回路41と、制御ロジック回路42と、命令デコーダ(モード1)43と、命令デコーダ(モード2)44と、セレクタ45とを含む。
【0134】
命令デコード入力ラッチ回路41は、制御ロジック回路42による制御によって、命令フェッチ部11によってフェッチされた命令コードを保持して命令デコーダ43および44に出力する。
【0135】
命令デコーダ43は、命令デコード入力ラッチ回路41から出力される命令コードを、モード1に対応する命令コードとして解釈してデコードし、デコード結果をセレクタ45に出力する。
【0136】
命令デコーダ44は、命令デコード入力ラッチ回路41から出力される命令コードを、モード2に対応する命令コードとして解釈してデコードし、デコード結果をセレクタ45に出力する。
【0137】
セレクタ45は、モード記憶部31から出力されるモード信号に応じて、命令デコーダ43から受けたデコード結果および命令デコーダ44から受けたデコード結果のいずれかを選択的に制御部13に出力する。
【0138】
制御ロジック回路42は、セレクタ45から出力されるデコード結果信号に応じてデコード完了を検出し、命令デコード入力ラッチ回路41に対して次の命令コードを命令フェッチ部11から取り込むように制御する。
【0139】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、使用しないレジスタ指定フィールドを別の意味で使用し、同じビットパターンの命令コードであっても、モードによって別命令として解釈して実行するようにしたので、命令コードのビット数を変更せずにサポートする命令数のみを増やすことが可能となった。
【0140】
また、命令の使用頻度は各処理内容に依存するため、特定の処理のみで使用する命令群をレジスタ指定フィールドのビット数を減らした分でサポートすることにより、コード効率を向上させることが可能となった。
【0141】
(第8の実施の形態)
本発明の第8の実施の形態におけるマイクロコンピュータは、GRAレジスタなどの制御レジスタがアドレス空間にマッピングされるものである。なお、本実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路33の論理構成などは、第1〜第7の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0142】
図21は、制御レジスタがアドレス空間にマッピングされるところを示す図である。図21に示すように、アドレス空間の“H’xxxx0000”にGRAレジスタがマッピングされ、“H’xxxx0004”に制御レジスタ1がマッピングされ、“H’xxxx0008”に制御レジスタ2がマッピングされる。
【0143】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、GRAレジスタをアドレス空間にマッピングするようにしたので、第1の実施の形態において説明した効果に加えて、MOV命令などで容易に汎用レジスタのアクセス制御を行なうことが可能となった。
【0144】
(第9の実施の形態)
本発明の第9の実施の形態におけるマイクロコンピュータは、GRA情報をCPUの外部から設定できるようにしたものである。なお、本実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路33の論理構成などは、第1〜第8の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0145】
図22は、本発明の第9の実施の形態におけるマイクロコンピュータの構成例を示す図である。CPU1は、GRA情報ラッチ回路51を含む。GRA情報ラッチ回路51は、端子を介してモジュール6からGRA情報を受けて保持する。GRA情報ラッチ回路51に保持されるGRA情報は、図6に示すGRAレジスタ32に転送される。
【0146】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、GRA情報をCPU外部から設定できるようにしたので、第1の実施の形態において説明した効果に加えて、GRA情報をさらに容易に設定することが可能となった。
【0147】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0148】
1 CPU、2 周辺回路、3 メモリ、4 バスインタフェース、5 内部バス、6 モジュール、11 命令フェッチ部、12 命令デコード部、13 制御部、14 アドレス生成部、15 PC部、16 汎用レジスタファイル、17 制御レジスタファイル、18 演算部、19 ロード・ストア部、20 データセレクタ、21 Sバス、22 Dバス、31 モード記憶部、32 GRAレジスタ、33 レジスタアクセス許可判定回路、41 命令デコード入力ラッチ回路、42 制御ロジック回路、43,44 命令デコーダ、45 セレクタ、51 GRA情報ラッチ回路。
【技術分野】
【0001】
本発明は、マイクロコンピュータに関し、特に、レジスタに保護機能を持たせたマイクロコンピュータに関する。
【背景技術】
【0002】
近年、マイクロコンピュータ(以下、マイコンとも呼ぶ。)の高機能化、多機能化が進んでいる。このようなマイコンにおいては、処理速度の高速化を図るために、汎用レジスタをそれぞれ2つ以上設けてバンク構成とするといった手法を用いたものがある。たとえば、バンク数を2とする構成においては、バンク0レジスタをアプリケーションプログラムが使用し、バンク1レジスタを割り込み処理ルーチンが使用するといった構成がとられる。
【0003】
CPU(Central Processing Unit)が、バンク0レジスタを使用しながらアプリケーションプログラムの処理を実行しているときに割り込みが入ると、バンク1レジスタに切替えて割り込み処理ルーチンを実行する。これによって、割り込み処理に移行するときに、低速のメモリ(スタック領域)にレジスタの内容を退避する必要がなくなり、高速に割り込み処理に移行することができる。同様に、割り込み処理ルーチンからアプリケーションプログラムに復帰するときも高速に移行することができる。
【0004】
これに関連する技術として、下記の特許文献1に開示された発明がある。特許文献1は、レジスタバンクに多数のレジスタを有するプロセッサに関する。レジスタは、共通のレジスタ名を有する汎用レジスタとスタックポインタレジスタとを有している。プロセッサは、共通のレジスタ名を参照するプログラム命令を実行するために、プログラミングに対応する論理を有している。この命令は、第1の条件下で汎用レジスタを用い且つ第2の条件下でスタックポインタレジスタを用いて実行される。したがって、特定の条件の成立に基づいて、同じ名前によって識別される複数のレジスタに選択的にアクセスすることができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特表2004−520662号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述のように、バンクレジスタを用いることにより割り込み処理ルーチンへの移行および割り込み処理ルーチンからの復帰を高速に行なうことができる。しかしながら、演算処理が多く処理時間が長いアプリケーションプログラムが使用するバンク0レジスのレジスタ数と、処理時間が短い割り込み処理ルーチンが使用するバンク1レジスタのレジスタ数とが同じである。そのため、アプリケーションプログラムで使用されるレジスタと、割り込み処理ルーチンで使用されるレジスタとの間で使用効率に差があり、処理内容に対する最適化がなされていないといった問題がある。
【0007】
また、汎用レジスタは、CPUのハードウェア量の多くを占めており、チップ面積やコストに与える影響が大きい。そのため、上述のようなバンクレジスタの構成をとることにより、チップ面積が大きくなり、製品コストが高くなるといった問題がある。
【0008】
また、割り込み処理では特権モード等の通常のユーザプログラムの実行よりも実行権限の高い動作モードとされることも多く、割り込み処理ルーチンが使用するバンクレジスタに対する保護機能がなく、アプリケーションプログラムや悪意のあるプログラムによって、割り込み処理ルーチンが使用するバンクレジスタの内容が意図せず書き換えられてしまう危険性がある。したがって、従来のCPUはセキュア用途に問題がある。
【0009】
本発明は、上記問題点を解決するためになされたものであり、その目的は、汎用レジスタの使用効率を最適化し、かつ汎用レジスタに対する保護機能を提供することが可能なマイクロコンピュータを提供することである。
【課題を解決するための手段】
【0010】
本発明の一実施例によれば、複数の汎用レジスタにアクセスしながら命令を実行するプロセッサを含んだマイクロコンピュータが提供される。制御部は、命令コードのデコード結果に応じて、命令の実行を制御する。GRAレジスタは、複数の汎用レジスタのそれぞれに対するアクセス属性を記憶する。モード記憶部は、CPUの動作を制御するためのモードを記憶する。そして、レジスタアクセス許可判定回路は、制御部から汎用レジスタに対してアクセス要求がある場合に、GRAレジスタに記憶されるアクセス属性およびモード記憶部に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する。
【発明の効果】
【0011】
この実施例によれば、GRAレジスタに記憶されるアクセス属性およびモード記憶部に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定するので、モードに対応して使用される汎用レジスタの本数を変更することができ、汎用レジスタの使用効率を最適化することが可能となる。
【図面の簡単な説明】
【0012】
【図1】本発明の第1の実施の形態におけるマイクロコンピュータの概略構成を示すブロック図である。
【図2】汎用レジスタファイル16に含まれる汎用レジスタ群の一例を示す図である。
【図3】制御レジスタファイル17に含まれる制御レジスタ群の一例を示す図である。
【図4】PSWの各ビットの割り付けを説明するための図である。
【図5】GRAレジスタによってどのように汎用レジスタR0〜R15のアクセスコントロールが行われるかを説明するための図である。
【図6】GRAレジスタによって汎用レジスタへのアクセスを制御するための回路構成の一例を示す図である。
【図7】レジスタアクセス許可判定回路33の論理の一例を説明するための図である。
【図8】レジスタアクセス許可判定回路33の論理の他の一例を説明するための図である。
【図9】例外要求が発生したときの割り込みシーケンスの一例を説明するためのフローチャートである。
【図10】例外要求が発生したときの割り込みシーケンスの他の一例を説明するためのフローチャートである。
【図11】CPUコンテキストのスタック退避イメージを示す図である。
【図12】タスクによってアクセス許可されるレジスタの本数が変更される場合を説明するための図である。
【図13】本発明の第2の実施の形態におけるマイクロコンピュータの特権レベルを説明するための図である。
【図14】本発明の第2の実施の形態におけるマイクロコンピュータによって実行されるソフトウェア構成の一例を示す図である。
【図15】本発明の第3の実施の形態におけるGRAレジスタの構成例を説明するための図である。
【図16】本発明の第4の実施の形態におけるGRAレジスタの構成例を説明するための図である。
【図17】本発明の第5の実施の形態におけるGRAレジスタの構成例を説明するための図である。
【図18】本発明の第6の実施の形態におけるGRAレジスタの構成例を説明するための図である。
【図19】同じビットパターンの命令コードであってもモードによって異なる命令として解釈される場合の一例を説明するための図である。
【図20】本発明の第7の実施の形態におけるマイクロコンピュータの命令デコード部の構成例を示す図である。
【図21】制御レジスタがアドレス空間にマッピングされるところを示す図である。
【図22】本発明の第9の実施の形態におけるマイクロコンピュータの構成例を示す図である。
【発明を実施するための形態】
【0013】
(第1の実施の形態)
図1は、本発明の第1の実施の形態におけるマイクロコンピュータの概略構成を示すブロック図である。このマイコンは、CPU1と、周辺回路2と、メモリ3と、バスインタフェース4とを含み、それぞれが内部バス5を介して接続される。CPU1は、内部バス5に接続されるバスインタフェース4を介してマイコン外部のメモリや周辺機器にアクセスすることが可能である。
【0014】
CPU1は、命令フェッチ部11と、命令デコード部12と、制御部13と、アドレス生成部14と、PC(Program Counter)部15と、汎用レジスタファイル16と、制御レジスタファイル17と、演算部18と、ロード・ストア部19と、データセレクタ20とを含み、それぞれが内部バス、Sバス21およびDバス22に接続される。なお、各部はこれらのバスを介してデータ、アドレス、制御信号などをやり取りすることができる。
【0015】
命令フェッチ部11は、PC部15のプログラムカウンタ値に応じて、メモリ3に格納される命令コードをフェッチしたり、バスインタフェース4を介してマイコン外部の図示しないメモリに格納される命令コードをフェッチしたりして、命令コードを命令デコード部12に出力する。
【0016】
命令デコード部12は、命令フェッチ部11から受けた命令コードを内部の命令デコーダに出力する。命令デコーダは、命令コードをデコードし、デコード結果を制御部13に出力する。
【0017】
制御部13は、命令デコード部12から受けたデコード結果に応じて、CPU1の各部を制御することによりCPU1の動作を制御し管理する。なお、図1においては、制御部13から各部に出力される制御信号を省略している。
【0018】
アドレス生成部14は、命令デコード部12によって分岐命令がデコードされたときに、分岐先アドレスをアドレッシングモードに応じて計算する。分岐条件が成立した場合には、計算された分岐先アドレスがPC部15に設定される。
【0019】
演算部18は、制御部13による制御によって、汎用レジスタに格納されるデータ、メモリ3から読み出されたデータ、バスインタフェース4を介してマイコン外部のメモリから読み出されたデータなどに対して演算処理を行なう。演算結果は、汎用レジスタ、メモリ3、マイコン外部のメモリなどに書き込まれる。
【0020】
ロード・ストア部19は、演算部18による演算結果などをメモリ3やマイコン外部のメモリに書き込み、メモリ3やマイコン外部のメモリからデータを読み出す。このとき、ロード・ストア部19は、オペランドアクセスアドレスを生成して、データセレクタ20を介してメモリ3やマイコン外部のメモリに出力する。
【0021】
データセレクタ20は、ロード・ストア部19から出力されるオペランドアクセスアドレスおよび書き込みデータを切替えて内部バス5に出力し、内部バス5を介して受けた読み出しデータをロード・ストア部19に出力する。
【0022】
図2は、汎用レジスタファイル16に含まれる汎用レジスタ群の一例を示す図である。汎用レジスタファイル16は、16本の汎用レジスタR0〜R15によって構成される。それぞれの汎用レジスタは、32ビット幅を有している。
【0023】
汎用レジスタR0は、汎用レジスタの機能に加えて、スタックポインタ(SP)としての機能も割り当てられている。このSPは、後述するPSW(Processor Status Word)レジスタのUビットによって、割り込みスタックポインタ(ISP)およびユーザスタックポインタ(USP)のいずれかに切り替わる。
【0024】
図3は、制御レジスタファイル17に含まれる制御レジスタ群の一例を示す図である。割り込みスタックポインタ(ISP)は、割り込み処理ルーチンに使用されるスタックポインタの値を設定するためのレジスタである。また、USP(ユーザスタックポインタ)は、ユーザ(アプリケーションプログラム)が使用するスタックポインタの値を設定するためのレジスタである。
【0025】
割り込みテーブル(INTB)レジスタは、可変ベクタテーブルの先頭アドレスを設定するためのレジスタである。プログラムカウンタ(PC)は、現在実行中の命令のアドレスを示すレジスタである。
【0026】
プロセッサステータスワード(PSW)は、プロセッサの状態を示すレジスタである。このPSWの詳細については後述する。
【0027】
バックアップPC(BPC)レジスタは、高速割り込み発生時にプログラムカウンタ(PC)の値が退避されるレジスタである。また、バックアップPSW(BPSW)レジスタは、高速割り込み発生時にプロセッサステータスワード(PSW)の値が退避されるレジスタである。高速割り込みベクタ(FINTV)レジスタは、高速割り込み発生時に分岐先アドレス(高速割り込み処理ルーチンの開始アドレス)を設定するためのレジスタである。
【0028】
ここで、高速割り込みとは、CPU1による割り込み処理を高速にする機能であり、特定の割り込み要因を高速割り込みの対象とすることができる。この特定の割り込み要因が発生すると、CPU1はPCおよびPSWの値をBPCレジスタおよびBPSWレジスタに退避し、分岐先アドレスをFINTVレジスタから取得する。これによって、PCおよびPSWの値をスタックに退避する必要がなく、また割り込みベクタアドレスをメモリから取得する必要がないため、高速に割り込み処理に移行することができる。
【0029】
浮動小数点ステータスワード(FPSW)レジスタは、浮動小数点演算ユニットの状態を示すレジスタである。このレジスタは、本発明とは特に関係しないため、その詳細な説明は行なわない。
【0030】
汎用レジスタアクセス属性(GRA)レジスタは、後述のように汎用レジスタR0〜R15のアクセスコントロールを設定するためのレジスタである。なお、このレジスタの詳細はついては後述する。
【0031】
図4は、PSWの各ビットの割り付けを説明するための図である。PSWのビット0〜3には、それぞれCフラグ(キャリフラグ)、Zフラグ(ゼロフラグ)、Sフラグ(サインフラグ)およびOフラグ(オーバフローフラグ)が割り付けられている。
【0032】
PSWのビット16には、割り込み許可ビット(Iビット)が割り付けられており、割り込み禁止/許可を設定することができる。
【0033】
PSWのビット17には、スタックポインタ指定ビット(Uビット)が割り付けられており、“0”のときにSPとして割り込みスタックポインタ(ISP)を指定し、“1”のときにSPとしてユーザスタックポインタ(USP)を指定する。例外を受け付けると、このビットは“0”になる。スーパバイザモードからユーザモードに移行するとこのビットは“1”になる。
【0034】
PSWのビット20には、プロセッサモード指定ビット(PMビット)が割り付けられており、“0”のときにプロセッサモードをスーパバイザモードに設定し、“1”のときにプロセッサモードをユーザモードに設定する。
【0035】
PSWのビット24〜26には、プロセッサ割り込み優先レベル(IPL[2:0])が割り付けられており、優先レベル0〜優先レベル7の8段階のプロセッサ割り込み優先レベルを指定することができる。要求があった割り込みの優先レベルがプロセッサ割り込み優先レベルよりも高い場合には、その割り込みが許可される。
【0036】
図5は、GRAレジスタによってどのように汎用レジスタR0〜R15のアクセスコントロールが行われるかを説明するための図である。汎用レジスタR0〜R15に対するアクセスは、GRAレジスタの内容とモードとによって決定される。なお、このモードとは、上述のプロセッサモードを含んだ広い概念を指しており、プロセッサモードに限定されるものではない。
【0037】
図5に示すように、モード1においてはGRAレジスタに“1”が設定されているビットに対応する汎用レジスタがアクセス許可されており、“0”が設定されているビットに対応する汎用レジスタがアクセス禁止されている。モード1からモード2に移行するときに、2つのパターンをサポートしている。
【0038】
1つ目は、モード2に移行すると、すべての汎用レジスタがアクセス許可される場合である(図5の(1)を参照)。2つ目は、モード2に移行すると、モード1でアクセス許可されていた汎用レジスタがアクセス禁止となり、モード1でアクセス禁止されていた汎用レジスタがアクセス許可となる場合である(図5の(2)を参照)。
【0039】
図5の(2)の場合に、アクセス禁止状態の汎用レジスタへアクセスをした場合、ノンマスカブルインタラプト等を発生させるか又は無視するかをGRAレジスタに指定するビットを更に有してもよい。
【0040】
図6は、GRAレジスタによって汎用レジスタへのアクセスを制御するための回路構成の一例を示す図である。モード記憶部31は、現在どのモードであるかを示す情報を記憶する。たとえば、モードが上述のプロセッサモードに対応する場合には、PSWレジスタ内のPMの値がモード記憶部31に設定される。
【0041】
制御部13は、命令デコード部12から受けたデコード結果を解析することにより、汎用レジスタへのアクセスを伴う命令がデコードされたことを検出すると、その汎用レジスタのレジスタ番号をGRAレジスタ32に出力すると共に、レジスタアクセス要求信号をレジスタアクセス許可判定回路33に出力する。
【0042】
GRAレジスタ32は、制御部13から受けたレジスタ番号に対応するビットの内容をアクセス属性信号としてレジスタアクセス許可判定回路33に出力する。
【0043】
レジスタアクセス許可判定回路33は、制御部12から出力されるレジスタアクセス要求信号、モード記憶部31から出力されるモード信号およびGRAレジスタ32から出力されるアクセス属性信号に基づいて、対応する番号の汎用レジスタへのレジスタアクセスイネーブル信号を生成して出力する。また、レジスタアクセス許可判定回路33は、制御部13からアクセスが禁止されている汎用レジスタへのアクセス要求があると、例外要求信号を制御部13に出力する。
【0044】
図7は、レジスタアクセス許可判定回路33の論理の一例を説明するための図である。図7に示す論理は、モード2のときにすべての汎用レジスタへのアクセスが許可される場合を示している。図5を用いて説明した、モード2に移行するときの1つ目のパターン(図5の(1))に対応している。
【0045】
制御部13からレジスタアクセス要求がない場合(レジスタアクセス要求信号が“0”の場合)、モード記憶部31から出力されるモード信号およびGRAレジスタ32から出力されるアクセス属性信号にかかわらず、レジスタアクセスイネーブル信号に“0”(アクセスなし)を出力する。この場合、例外要求は発生しない。
【0046】
また、制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード1”を示しており、GRAレジスタ32から出力されるアクセス属性信号がアクセス許可(アクセス属性信号が“1”)を示している場合、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“1”(アクセスあり)を出力する。この場合、例外要求は発生しない。
【0047】
また、制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード1”を示しており、GRAレジスタ32から出力されるアクセス属性信号がアクセス禁止(アクセス属性信号が“0”)を示している場合、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“0”(アクセスなし)を出力する。この場合、レジスタアクセス許可判定回路33は、例外要求信号に“1”を出力して、例外要求を発生させる。
【0048】
また、制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード2”を示している場合、GRAレジスタ32から出力されるアクセス属性信号にかかわらず、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“1”(アクセスあり)を出力する。この場合、例外要求は発生しない。
【0049】
図8は、レジスタアクセス許可判定回路33の論理の他の一例を説明するための図である。図8に示す論理は、モード2に移行すると、モード1でアクセス許可されていた汎用レジスタがアクセス禁止となり、モード1でアクセス禁止されていた汎用レジスタがアクセス許可となる場合を示している。図5を用いて説明した、モード2に移行するときの2つ目のパターン(図5の(2))に対応している。制御部13からレジスタアクセス要求がない場合、およびモード記憶部31から出力されるモード信号が“モード1”を示す場合は、図7に示すものと同様である。
【0050】
制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード2”を示しており、GRAレジスタ32から出力されるアクセス属性信号がアクセス許可(アクセス属性信号が“1”)を示している場合、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“0”(アクセスなし)を出力する。この場合、レジスタアクセス許可判定回路33は、例外要求信号に“1”を出力して、例外要求を発生させる。
【0051】
また、制御部13からレジスタアクセス要求があり(レジスタアクセス要求信号が“1”)、モード記憶部31から出力されるモード信号が“モード2”を示しており、GRAレジスタ32から出力されるアクセス属性信号がアクセス禁止(アクセス属性信号が“0”)を示している場合、レジスタアクセス許可判定回路33は、対応の汎用レジスタへのレジスタアクセスイネーブル信号に“1”(アクセスあり)を出力する。この場合、例外要求は発生しない。
【0052】
図9は、例外要求が発生したときの例外処理シーケンスの一例を説明するためのフローチャートである。図9においては、モード1がユーザモードに対応し、モード2が特権モード(スーパバイザモード)に対応する。通常、アプリケーションプログラムはユーザモードで動作し、割り込みなどの例外が発生した場合や、CPU1が特権モードへの移行命令を実行した場合に特権モードに移行する。
【0053】
CPU1がアプリケーションプログラムを実行中に(ユーザモードで動作中に)、命令Cで例外要求が発生すると(S11)、ハードウェア前処理が実行される(S12)。この処理は、CPU1が例外要求を受けたときに、ハードウェアによって自動的に行なわれる。
【0054】
高速割り込みの場合には、PCレジスタ、PSWレジスタおよびGRAレジスタの内容が、それぞれBPCレジスタ、BPSWレジスタおよびBGRAレジスタに退避され、PSWレジスタ内のUビット、IビットおよびPMビットのそれぞれに“0”が設定されて、スーパバイザモードに移行する。
【0055】
また、高速割り込み以外の例外の場合には、PCレジスタ、PSWレジスタおよびGRAレジスタの内容が、それぞれISPで指定されるアドレスのスタック領域に退避され、PSWレジスタ内のUビット、IビットおよびPMビットのそれぞれに“0”が設定されて、スーパバイザモードに移行する。
【0056】
次に、CPU1はベクタアドレスを読み出すことにより、ハンドラの先頭アドレスに分岐する(S13)。すなわち、高速割り込みの場合には、FINTVレジスタに設定される分岐先アドレスを取得して、ハンドラの先頭アドレスに分岐する。また、高速割り込み以外の例外の場合には、INTBレジスタの内容を参照してメモリに格納される分岐先アドレスを取得して、ハンドラの先頭アドレスに分岐する。
【0057】
ステップS11〜S13は、CPU1によって自動的に行なわれる処理であるが、ステップS14〜S17またはS19は、ユーザが記述した処理プログラムをCPU1が実行することによって行なわれる処理である。
【0058】
ノンマスカブル割り込みを除く例外ハンドラの場合には、まず、汎用レジスタの内容をスタック領域に退避する(S14)。なお、汎用レジスタ内容のスタック領域退避については、マイクロコンピュータのハードウェアとして退避機構を設け、またはソフトウェアによりスタック領域退避処理を行なうか否かの選択的事項である。
【0059】
次に、ハンドラ処理が行なわれ(S15)、退避しておいた汎用レジスタの内容が復帰される(S16)。そして、例外ハンドラの最後に記述されたリターン命令が実行されて(S17)、ステップS18の処理に移行する。なお、高速割り込みの場合にはRTFI命令が記述され、高速割り込み以外の例外の場合にはRTE命令が記述される。
【0060】
また、ノンマスカブル割り込みの場合には、ノンマスカブル割り込み処理が実行され(S19)、プログラムの終了またはシステムリセットが行なわれる。
【0061】
ステップS18において、ハードウェア後処理が実行される。この処理は、CPU1がRTFI命令またはRTE命令を実行したときに、ハードウェアによって自動的に行なわれる。
【0062】
高速割り込みの場合には、BPCレジスタ、BPSWレジスタおよびBGRAレジスタの内容を、それぞれPCレジスタ、PSWレジスタおよびGRAレジスタに復帰させる。このとき、PSWレジスタのPMビットが“1”であれば、ユーザモードへ移行する。
【0063】
また、高速割り込み以外の例外の場合には、スタック領域に退避されていた内容を、PCレジスタ、PSWレジスタおよびGRAレジスタに復帰させる。このとき、PSWレジスタのPMビットが“1”であれば、ユーザモードへ移行する。
【0064】
図9に示すように、例外事象によって受け付けタイミングと退避されるPCの値とが異なる。未定義命令例外、特権命令例外、浮動小数点例外などの命令処理取消型においては、命令Cの実行中に例外が受け付けられ、例外を発生した命令のPC値が退避される。したがって、命令Cからプログラムの実行が再開される。
【0065】
特定の命令を実行中にノンマスカブル割り込みや通常の割り込みが発生した場合などの命令処理中断型においては、命令Cの実行中に例外が受け付けられ、実行中の命令のPC値が退避される。したがって、命令Cからプログラムの実行が再開される。
【0066】
INT命令やBRK命令を実行したときに発生する無条件トラップなどの命令処理完了型においては、命令Cが実行された後に例外が受け付けられ、次命令のPC値が退避される。したがって、命令Cの次の命令からプログラムの実行が再開される。
【0067】
図10は、例外要求が発生したときの割り込みシーケンスの他の一例を説明するためのフローチャートである。CPU1がアプリケーションプログラムを実行中に(ユーザモードで動作中に)、命令Cで例外要求が発生すると(S21)、ハードウェア前処理が実行される(S22)。この処理は、CPU1が例外要求を受けたときに、ハードウェアによって自動的に行なわれる。
【0068】
高速割り込みの場合には、PCレジスタおよびPSWレジスタの内容が、それぞれBPCレジスタおよびBPSWレジスタに退避され、PSWレジスタ内のUビット、IビットおよびPMビットのそれぞれに“0”が設定されて、スーパバイザモードに移行する。
【0069】
また、高速割り込み以外の例外の場合には、PCレジスタおよびPSWレジスタの内容が、それぞれISPで指定されるアドレスのスタック領域に退避され、PSWレジスタ内のUビット、IビットおよびPMビットのそれぞれに“0”が設定されて、スーパバイザモードに移行する。CPUの動作モードがユーザモードからスーパバイザモードに移行したことに応じて、図5の(2)で説明したパターンにおいては、ユーザモードで使用可能であった汎用レジスタR0〜R11がスーパバイザモードでは使用禁止となり、一方でユーザモードで使用禁止されていた汎用レジスタR12〜R15がスーパバイザモードでは使用可能となる。
【0070】
次に、CPU1はベクタアドレスを読み出すことにより、ハンドラの先頭アドレスに分岐する(S23)。
【0071】
ステップS21〜S23は、CPU1によって自動的に行なわれる処理であるが、ステップS24〜S25またはS27は、ユーザが記述した処理プログラムをCPU1が実行することによって行なわれる処理である。
【0072】
次に、例外ハンドラ処理が行なわれる(S24)。例外ハンドラでは、汎用レジスタR12〜R15のみを使用して処理を行なうように記述される。このように記述されることで、図5の(2)のパターンにおいては、割り込み発生前に実行していたユーザモードのプログラムの実行状態を維持した状態で割り込みに応答した処理を行なうことが可能となり、また汎用レジスタR0〜R11をスタック領域へ退避することが不要となる。
【0073】
一方で、ステップS22においてスーパバイザモードに移行する際、図5の(1)のパターンの場合には、汎用レジスタR0〜R11をスタック領域へ退避するか否かは、例外ハンドラ処理内のプログラム記述に依存する。
【0074】
図5の(1)のパターンと図5の(2)のパターンとのどちらを採用するかについては、例えば例外ハンドラ内での処理が比較的多く汎用レジスタをスタック領域へ退避する処理がオーバヘッドとして相対的に少ない、または汎用レジスタをスタック領域へ退避する処理を行なう既存の例外ハンドラを用いる場合は、図5の(1)のパターンを採用すればよい。
【0075】
一方で、例外ハンドラ内での処理が比較的少なく汎用レジスタをスタック領域へ退避する処理がオーバヘッドとして相対的に大きい、またはユーザプログラムのリアルタイム実行性が高い場合は、図5の(2)のパターンを採用すればよい。この場合、GRAレジスタにアクセス禁止レジスタへのアクセスを無視するように指定しておくことで、例外ハンドラに汎用レジスタをスタック退避する処理が含まれていたとしても、汎用レジスタR0〜R11はアクセス禁止状態となっているため、汎用レジスタをスタック領域へ退避することはできず汎用レジスタのスタック領域退避処理がオーバヘッドとして解消される。
【0076】
かかる選択を可能とすることで、既存プログラムの流用性を維持しつつ、比較的軽い処理をする例外ハンドラにおける汎用レジスタのスタック退避というオーバヘッドを低減させるとともに、実行中のユーザプログラムの実行状態を保全することが可能となる。
【0077】
そして、例外ハンドラの最後に記述されたリターン命令が実行されて(S25)、ステップS26の処理に移行する。
【0078】
また、ノンマスカブル割り込みの場合には、ノンマスカブル割り込み処理が実行され(S31)、プログラムの終了またはシステムリセットが行なわれる。
【0079】
ステップS26において、ハードウェア後処理が実行される。この処理は、CPU1がRTFI命令またはRTE命令を実行したときに、ハードウェアによって自動的に行なわれる。
【0080】
高速割り込みの場合には、BPCレジスタおよびBPSWレジスタの内容を、それぞれPCレジスタおよびPSWレジスタに復帰させる。このとき、PSWレジスタのPMビットが“1”であれば、ユーザモードへ移行する。
【0081】
また、高速割り込み以外の例外の場合には、スタック領域に退避されていた内容を、PCレジスタおよびPSWレジスタに復帰させる。このとき、PSWレジスタのPMビットが“1”であれば、ユーザモードへ移行する。
【0082】
図11は、CPUコンテキストのスタック退避イメージを示す図である。上述のように高速割り込み以外の例外が発生した場合、PCレジスタ、PSWレジスタおよびGRAレジスタの値はスタック領域に格納される。図11に示すように、これらの値が順次スタック領域に格納され、SPの値が矢印の方向にインクリメントまたはデクリメントされる。なお、スタック領域に格納された値を復帰させる場合には、SPの値が矢印と逆方向にデクリメントまたはインクリメントされる。
【0083】
図12は、タスクによってアクセス許可されるレジスタの本数が変更される場合を説明するための図である。一般に、タスクの処理は、アプリケーションプログラムと割り込み処理ルーチンとから構成される。図12においては、モード1がアプリケーションプログラムに対応し、モード2が割り込み処理ルーチンに対応している。モード2は、図5の説明の(1)の方法である。なお、OSによるタスクスイッチ処理についての説明は省略している。
【0084】
タスクAにおいては、アプリケーション処理規模が大きいため、R0〜R11の12本の汎用レジスタがアプリケーションプログラムにアサインされている。また、R12〜R15の4本の汎用レジスタが割り込み処理ルーチンにアサインされている。R12〜R15の4本の汎用レジスタは、アプリケーションプログラムからのアクセスが禁止されているため、アプリケーションプログラムや悪意のあるプログラムにより、意図せず書き換えられてしまうのを防止することができる。
【0085】
タスクBにおいては、割り込み処理速度が重視される処理内容であるため、R0〜R7の8本の汎用レジスタアプリケーションプログラムにアサインされており、R8〜R15の8本の汎用レジスタが割り込み処理ルーチンにアサインされている。R8〜R15の8本の汎用レジスタは、アプリケーションプログラムからのアクセスが禁止される。
【0086】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、モード1においてアクセス許可される汎用レジスタおよびアクセス禁止される汎用レジスタがGRAレジスタに設定され、モード1においてアクセス禁止されていた汎用レジスタがモード2でアクセス許可されるようにした。したがって、モード2(割り込み処理ルーチン)にアサインするレジスタ本数をタスク毎に最適化することが可能となった。
【0087】
また、モード2(割り込み処理ルーチン)にアサインされた汎用レジスタは、モード1(アプリケーションプログラム)からのアクセスが禁止されるため、アプリケーションプログラムや悪意のあるプログラムにより、意図せず書き換えられてしまうのを防止する、いわゆるレジスタ保護機能を実現することが可能となった。
【0088】
また、バンクレジスタ構成とする必要がなく、汎用レジスタの本数を減らすことができるため、チップ面積が大きくなるのを防止でき、製品コストが高くなるのを防止することが可能となった。
【0089】
(第2の実施の形態)
本発明の第2の実施の形態におけるマイクロコンピュータは、特権レベルのサポートにより階層的な保護機能(リングプロテクション)を実現する。以下、特権レベル0〜2の3階層をサポートする場合について説明するが、これに限られるものではなく、特権レベルが4階層以上であってもよい。なお、特権レベル0が最も権限が高く、特権レベル1、特権レベル2の順に低くなるものとする。
【0090】
本発明の第2の実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路33の論理構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0091】
図13は、本発明の第2の実施の形態におけるマイクロコンピュータの特権レベルを説明するための図である。図13に示すように、特権レベル0にカーネル(OS)が配置され、特権レベル1に割り込み処理ルーチンが配置され、特権レベル2にアプリケーションプログラム(ユーザプログラム)が配置される。レベル毎にリソースアクセス、実行可能な命令種類などの許可される動作が規定される。たとえば、レベル2のアプリケーションプログラムには特定メモリ領域へのアクセスおよび特定命令の実行のみが許可されている。
【0092】
特権レベル2から特権レベル1への移行は、割り込み(INT)によって行なわれる。また、特権レベル2から特権レベル0への移行は、INT命令やBRK命令などを実行することによって発生するトラップによって行なわれるなど、特定の特権レベル間を移行するには、特定の例外要因を割り当てることとする。
【0093】
図13の(A)は、モード1にアプリケーションプログラムと割り込み処理ルーチンとが割り当てられ、モード2にカーネル(OS)が割り当てられる場合を示している。これによって、アプリケーションプログラムや割り込み処理ルーチンから、OSへの切り替えが高速に行なえるようになり、OSが利用する汎用レジスタを含むリソースが保護される。
【0094】
また、図13の(B)は、モード1にアプリケーションプログラムが割り当てられ、モード2に割り込みルーチンとカーネル(OS)とが割り当てられる場合を示している。これによって、アプリケーションプログラムと割り込み処理ルーチンとの切り替えが高速に行なえるようになり、割り込みルーチンおよびOSが利用する汎用レジスタを含むリソースが保護される。
【0095】
また、図13の(C)は、図5の(2)に示すように、モード2に移行すると、モード1でアクセス許可されていた汎用レジスタがアクセス禁止となり、モード1でアクセス禁止されていた汎用レジスタがアクセス許可となるようにすれば、アプリケーションプログラムが使用する汎用レジスタと、割り込み処理ルーチンが使用する汎用レジスタとが排他的となる。これによって、割り込み処理ルーチンが暴走した場合でもアプリケーションプログラムの破壊を防止することができる。
【0096】
なお、特権レベル0においてGRAレジスタに対するアクセスが許可され、特権レベル1および2においてはGRAレジスタに対するアクセスが禁止されるようにすれば、より効果的にOSが使用する汎用レジスタの保護機能を実現することができる。
【0097】
図14は、本発明の第2の実施の形態におけるマイクロコンピュータによって実行されるソフトウェア構成の一例を示す図である。図14においては、OS上でタスクAおよびタスクBが動作している。
【0098】
タスクAは、アプリケーションプログラムが暴走した場合や、アプリケーションプログラムが悪意のあるプログラムであった場合でも、割り込み処理ルーチンが使用する汎用レジスタへのアクセスが禁止されることを示している。これは、レジスタアクセス許可判定回路を、図7に示す論理とした場合、図8に示す論理とした場合のいずれでも実現可能である。
【0099】
しかしながら、図7に示す論理とした場合には、割り込み処理ルーチンに対してすべての汎用レジスタへのアクセスが許可されているので、割り込み処理ルーチンが暴走するとアプリケーションプログラムを破壊する可能性がある。
【0100】
タスクBは、割り込み処理ルーチンが暴走した場合でも、アプリケーションプログラムが使用する汎用レジスタへのアクセスが禁止されることを示している。これは、レジスタアクセス許可判定回路を図8に示す論理として、アプリケーションプログラムが使用する汎用レジスタと割り込み処理ルーチンが使用する汎用レジスタとを排他的にすることにより実現可能である。
【0101】
タスクBがセキュリティに関連するユーザプログラム、例えば暗号処理プログラムである場合、暗号を復号するための復号鍵を不当に取得するために、タスクBを実行している間に、外部から割り込みを発生させ、割り込み処理ルーチンから図示しない悪意ある別のタスクCへモード2の特権モード状態のままで分岐させる、という攻撃が考えられる。このような場合、図8に示す論理としてアプリケーションプログラムが使用する汎用レジスタと割り込み処理ルーチンが使用する汎用レジスタとを排他的にすると共に、GRAレジスタにアクセス禁止状態の汎用レジスタへアクセスを行なった場合にノンマスカブルインタラプト等を発生させるようにすればよい。このように設定することで、アプリケーションプログラムが使用している汎用レジスタに不当にアクセスがあった場合、汎用レジスタの設定内容をマイクロコンピュータの外部へ不測に流出させることを防止することが可能となる。
【0102】
また、図1に図示しないメモリ管理部(MMU)やバス制御部(バスコントローラ)による、タスクBが配置されているメモリ空間や不揮発性メモリ等へのアクセスも禁止するようにする公知技術との組み合わせにより、タスクBの耐タンパ性をより向上させることが可能となる。
【0103】
さらには、汎用レジスタの仮想レジスタ機能についての公知技術をも組み合わせ、タスクBのプログラムコードとしては例えば汎用レジスタR1〜R5を用いるように記述をしておき、タスクBが実行可能な特権モードでは汎用レジスタR1〜R5を汎用レジスタR10〜R14に割り当てるように構成する。タスクBが本来実行可能な特権モードとそれ以外の動作モードとで、汎用レジスタR1〜R5とR10〜R15とを排他使用とするようにGRAレジスタを設定することで、別の動作モード下でタスクBが実行されることを防止し、耐タンパ性を向上させることが可能となる。
【0104】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、各モードに特権レベルを割り当てるようにしたので、第1の実施の形態において説明した効果に加えて、より権限が高い特権レベルで使用される汎用レジスタの保護と、特にセキュリティに関わるプログラムの実行における耐タンパ性の向上とを実現することが可能となった。
【0105】
(第3の実施の形態)
本発明の第3の実施の形態におけるマイクロコンピュータは、汎用レジスタへのアクセスの種類に応じて、アクセス許可/アクセス禁止を設定できるようにしたものである。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0106】
図15は、本発明の第3の実施の形態におけるGRAレジスタの構成例を説明するための図である。図15に示すように、GRAレジスタの2ビットが1つの汎用レジスタに対応しており、レジスタアクセス許可判定回路33がGRAレジスタから出力される2ビットのアクセス属性信号およびモード記憶部31から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。
【0107】
モード1において、汎用レジスタに対応する2ビットが“00b”の場合には、当該汎用レジスタに対する読み出しおよび書き込みの両方が禁止される。汎用レジスタに対応する2ビットが“01b”の場合には、当該汎用レジスタに対する書き込みのみが許可され、読み出しが禁止される。
【0108】
モード1において、汎用レジスタに対応する2ビットが“10b”の場合には、当該汎用レジスタに対する読み出しのみが許可され、書き込みが禁止される。汎用レジスタに対応する2ビットが“11b”の場合には、当該汎用レジスタに対する読み出しおよび書き込みの両方が許可される。
【0109】
なお、モード2においては、すべての汎用レジスタに対する読み出しおよび書き込みが許可されるようにしてもよいし、モード1において読み出しおよび書き込みの両方が許可されていた汎用レジスタに対する読み出しおよび書き込みを禁止し、それ以外の汎用レジスタに対する読み出しおよび書き込みを許可するようにしてもよい。
【0110】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、汎用レジスタへのアクセスの種類に応じて、アクセス許可/アクセス禁止を設定できるようにしたので、第1の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【0111】
(第4の実施の形態)
本発明の第4の実施の形態におけるマイクロコンピュータは、汎用レジスタをグループ化し、モード1においてどのグループに属する汎用レジスタに対するアクセスを許可するかを設定するものである。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0112】
図16は、本発明の第4の実施の形態におけるGRAレジスタの構成例を説明するための図である。図16に示すように、GRAレジスタの1ビットが1つのグループに対応しており、“1”が設定されたビットに対応するグループに属する汎用レジスタへのアクセスが許可される。グループ1には汎用レジスタR0〜R4が含まれ、グループ2には汎用レジスタR5〜R10が含まれ、グループ3には汎用レジスタR11〜R15が含まれる。なお、各グループにどの汎用レジスタが含まれるかは予め設定されている。
【0113】
レジスタアクセス許可判定回路33がGRAレジスタから出力される3ビットのアクセス属性信号およびモード記憶部31から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。
【0114】
モード1において、グループ1に対応するビットが“1”の場合には、汎用レジスタR0〜R4に対するアクセスが許可され、それ以外の汎用レジスタに対するアクセスが禁止される。グループ2に対応するビットが“1”の場合には、汎用レジスタR5〜R10に対するアクセスが許可され、それ以外の汎用レジスタに対するアクセスが禁止される。また、グループ3に対応するビットが“1”の場合には、汎用レジスタR11〜R15に対するアクセスが許可され、それ以外の汎用レジスタに対するアクセスが禁止される。
【0115】
なお、モード2においては、すべての汎用レジスタに対するアクセスが許可されるようにしてもよいし、モード1においてアクセスが許可されていた汎用レジスタに対するアクセスが禁止され、モード1においてアクセスが禁止されていた汎用レジスタに対するアクセスが許可されるようにしてもよい。
【0116】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、汎用レジスタをグループ化し、どのグループに属する汎用レジスタに対するアクセスを許可するかを設定するようにしたので、第1の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【0117】
(第5の実施の形態)
本発明の第5の実施の形態におけるマイクロコンピュータは、バイト単位など、nビットの可変長単位で汎用レジスタに対するアクセスの許可/禁止を設定できるようにしたものである。一例として、バイト単位で汎用レジスタに対するアクセスの許可/禁止を設定する場合について以下に説明する。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0118】
図17は、本発明の第5の実施の形態におけるGRAレジスタの構成例を説明するための図である。図17に示すように、GRAレジスタの4ビットが1つの汎用レジスタに対応しており、レジスタアクセス許可判定回路33がGRAレジスタから出力される4ビットのアクセス属性信号およびモード記憶部31から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。
【0119】
モード1において、汎用レジスタに対応する4ビットのうちビット0が“0”の場合には当該汎用レジスタのバイト0に対するアクセスが禁止され、“1”の場合には当該汎用レジスのバイト0に対するアクセスが許可される。汎用レジスタに対応する4ビットのうちビット1が“0”の場合には当該汎用レジスタのバイト1に対するアクセスが禁止され、“1”の場合には当該汎用レジスのバイト1に対するアクセスが許可される。汎用レジスタに対応する4ビットのうちビット2が“0”の場合には当該汎用レジスタのバイト2に対するアクセスが禁止され、“1”の場合には当該汎用レジスのバイト2に対するアクセスが許可される。また、汎用レジスタに対応する4ビットのうちビット3が“0”の場合には当該汎用レジスタのバイト3に対するアクセスが禁止され、“1”の場合には当該汎用レジスのバイト3に対するアクセスが許可される。
【0120】
なお、モード2においては、すべての汎用レジスタの全バイトに対するアクセスが許可されるようにしてもよいし、モード1においてアクセスが許可されていた汎用レジスタのバイトに対するアクセスを禁止し、それ以外のバイトに対するアクセスを許可するようにしてもよい。
【0121】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、nビットの可変長単位で汎用レジスタに対するアクセスの許可/禁止を設定できるようにしたので、第1の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【0122】
(第6の実施の形態)
本発明の第6の実施の形態におけるマイクロコンピュータは、プロセッサモードが複数ある場合に、特権レベルの階層ごとに汎用レジスタに対するアクセスの許可/禁止を設定できるようにしたものである。なお、本実施の形態におけるマイクロコンピュータの概略構成などは、第1の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0123】
図18は、本発明の第6の実施の形態におけるGRAレジスタの構成例を説明するための図である。図18に示すように、GRAレジスタの2ビットが1つの汎用レジスタに対応しており、レジスタアクセス許可判定回路33がGRAレジスタから出力される2ビットのアクセス属性信号およびモード記憶部31から出力されるモード信号に応じて汎用レジスタへのアクセスを制御する。なお、本実施の形態においては、モード記憶部31に現在の特権レベルが記憶されており、モード信号としてレジスタアクセス許可判定回路33に出力される。
【0124】
汎用レジスタに対応する2ビットが“00b”の場合には、当該汎用レジスタに対してリング0(特権レベル0)のみがアクセス許可されており、それ以外のリングからのアクセスが禁止される。
【0125】
汎用レジスタに対応する2ビットが“01b”の場合には、当該汎用レジスタに対してリング0およびリング1(特権レベル0および特権レベル1)のみがアクセス許可されており、それ以外のリングからのアクセスが禁止される。
【0126】
汎用レジスタに対応する2ビットが“10b”の場合には、当該汎用レジスタに対してリング0〜リング2(特権レベル0〜特権レベル2)がアクセス許可されており、それ以外のリングからのアクセスが禁止される。
【0127】
汎用レジスタに対応する2ビットが“11b”の場合には、当該汎用レジスタに対してすべてのリング(特権レベル0〜特権レベル3)がアクセス許可されている。
【0128】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、特権レベルの階層ごとに汎用レジスタに対するアクセスの許可/禁止を設定できるようにしたので、第1の実施の形態において説明した効果に加えて、アプリケーションやシステムの特色に応じたより細かなレジスタ保護機能を実現することが可能となった。
【0129】
(第7の実施の形態)
第1〜第6の実施の形態においては、モードに応じてアクセス許可される汎用レジスタを変更する場合について説明した。すなわち、モードによってアクセス許可される汎用レジスタの本数が減るため、命令コードにおけるレジスタ指定フィールドのビット数を少なくすることができる。本発明の第7の実施の形態におけるマイクロコンピュータは、使用しないレジスタ指定フィールドを別の意味で使用し、同じビットパターンの命令コードであっても、モードによって別命令として解釈して実行するものである。
【0130】
なお、本実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路33の論理構成などは、第1〜第6の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0131】
図19は、同じビットパターンの命令コードであってもモードによって異なる命令として解釈される場合の一例を説明するための図である。図19(a)は、16本の汎用レジスタをすべて使用するモードで実行される命令コードの一例を示している。第1オペランド(R1)および第2オペランド(R2)として、それぞれ4ビットが割り付けられており、ADD命令(加算命令)として解釈される。
【0132】
図19(b)は、使用する汎用レジスタの本数を8本に制限するモードで実行される命令コードの一例を示している。第1オペランド(R1)および第2オペランド(R2)として、それぞれ3ビットが割り付けられており、図19(a)と比較して、オペコードフィールドを2ビット増やすことができ、より多くの命令コードをサポートすることができる。このモードにおいては、MUL命令(乗算命令)として解釈される。
【0133】
図20は、本発明の第7の実施の形態におけるマイクロコンピュータの命令デコード部の構成例を示す図である。命令デコード部12は、命令デコード入力ラッチ回路41と、制御ロジック回路42と、命令デコーダ(モード1)43と、命令デコーダ(モード2)44と、セレクタ45とを含む。
【0134】
命令デコード入力ラッチ回路41は、制御ロジック回路42による制御によって、命令フェッチ部11によってフェッチされた命令コードを保持して命令デコーダ43および44に出力する。
【0135】
命令デコーダ43は、命令デコード入力ラッチ回路41から出力される命令コードを、モード1に対応する命令コードとして解釈してデコードし、デコード結果をセレクタ45に出力する。
【0136】
命令デコーダ44は、命令デコード入力ラッチ回路41から出力される命令コードを、モード2に対応する命令コードとして解釈してデコードし、デコード結果をセレクタ45に出力する。
【0137】
セレクタ45は、モード記憶部31から出力されるモード信号に応じて、命令デコーダ43から受けたデコード結果および命令デコーダ44から受けたデコード結果のいずれかを選択的に制御部13に出力する。
【0138】
制御ロジック回路42は、セレクタ45から出力されるデコード結果信号に応じてデコード完了を検出し、命令デコード入力ラッチ回路41に対して次の命令コードを命令フェッチ部11から取り込むように制御する。
【0139】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、使用しないレジスタ指定フィールドを別の意味で使用し、同じビットパターンの命令コードであっても、モードによって別命令として解釈して実行するようにしたので、命令コードのビット数を変更せずにサポートする命令数のみを増やすことが可能となった。
【0140】
また、命令の使用頻度は各処理内容に依存するため、特定の処理のみで使用する命令群をレジスタ指定フィールドのビット数を減らした分でサポートすることにより、コード効率を向上させることが可能となった。
【0141】
(第8の実施の形態)
本発明の第8の実施の形態におけるマイクロコンピュータは、GRAレジスタなどの制御レジスタがアドレス空間にマッピングされるものである。なお、本実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路33の論理構成などは、第1〜第7の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0142】
図21は、制御レジスタがアドレス空間にマッピングされるところを示す図である。図21に示すように、アドレス空間の“H’xxxx0000”にGRAレジスタがマッピングされ、“H’xxxx0004”に制御レジスタ1がマッピングされ、“H’xxxx0008”に制御レジスタ2がマッピングされる。
【0143】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、GRAレジスタをアドレス空間にマッピングするようにしたので、第1の実施の形態において説明した効果に加えて、MOV命令などで容易に汎用レジスタのアクセス制御を行なうことが可能となった。
【0144】
(第9の実施の形態)
本発明の第9の実施の形態におけるマイクロコンピュータは、GRA情報をCPUの外部から設定できるようにしたものである。なお、本実施の形態におけるマイクロコンピュータの概略構成、レジスタアクセス許可判定回路33の論理構成などは、第1〜第8の実施の形態において説明したものと同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0145】
図22は、本発明の第9の実施の形態におけるマイクロコンピュータの構成例を示す図である。CPU1は、GRA情報ラッチ回路51を含む。GRA情報ラッチ回路51は、端子を介してモジュール6からGRA情報を受けて保持する。GRA情報ラッチ回路51に保持されるGRA情報は、図6に示すGRAレジスタ32に転送される。
【0146】
以上説明したように、本実施の形態におけるマイクロコンピュータによれば、GRA情報をCPU外部から設定できるようにしたので、第1の実施の形態において説明した効果に加えて、GRA情報をさらに容易に設定することが可能となった。
【0147】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0148】
1 CPU、2 周辺回路、3 メモリ、4 バスインタフェース、5 内部バス、6 モジュール、11 命令フェッチ部、12 命令デコード部、13 制御部、14 アドレス生成部、15 PC部、16 汎用レジスタファイル、17 制御レジスタファイル、18 演算部、19 ロード・ストア部、20 データセレクタ、21 Sバス、22 Dバス、31 モード記憶部、32 GRAレジスタ、33 レジスタアクセス許可判定回路、41 命令デコード入力ラッチ回路、42 制御ロジック回路、43,44 命令デコーダ、45 セレクタ、51 GRA情報ラッチ回路。
【特許請求の範囲】
【請求項1】
複数の汎用レジスタにアクセスしながら命令を実行するプロセッサを含んだマイクロコンピュータであって、
命令コードのデコード結果に応じて、命令の実行を制御する制御手段と、
前記複数の汎用レジスタのそれぞれに対するアクセス属性を記憶するアクセス属性記憶手段と、
前記プロセッサの動作を制御するためのモードを記憶するモード記憶手段と、
前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるアクセス属性および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定するアクセス判定手段とを含む、マイクロコンピュータ。
【請求項2】
前記アクセス判定手段は、汎用レジスタに対するアクセスを許可しない場合には、前記制御手段に対して例外要求を出力する、請求項1記載のマイクロコンピュータ。
【請求項3】
前記アクセス判定手段は、前記モード記憶手段に記憶されるモードが第1のモードの場合に、前記アクセス属性記憶手段に記憶されるアクセス属性によってアクセス許可が設定される汎用レジスタに対するアクセスのみを許可し、
前記モード記憶手段に記憶されるモードが第2のモードの場合に、すべての汎用レジスタに対するアクセスを許可する、請求項1または2記載のマイクロコンピュータ。
【請求項4】
前記アクセス判定手段は、前記モード記憶手段に記憶されるモードが第1のモードの場合に、前記アクセス属性記憶手段に記憶されるアクセス属性によってアクセス許可が設定される汎用レジスタに対するアクセスのみを許可し、
前記モード記憶手段に記憶されるモードが第2のモードの場合に、前記アクセス属性記憶手段に記憶されるアクセス属性によってアクセス禁止が設定される汎用レジスタに対するアクセスのみを許可する、請求項1または2記載のマイクロコンピュータ。
【請求項5】
前記第1のモードはユーザモードに対応し、前記第2のモードはスーパバイザモードに対応する、請求項3または4記載のマイクロコンピュータ。
【請求項6】
前記第1のモードはアプリケーションプログラムを実行するモードに対応し、前記第2のモードは割り込み処理ルーチンを実行するモードに対応する、請求項3または4記載のマイクロコンピュータ。
【請求項7】
前記プロセッサは、複数の特権レベルを有し、
前記第1のモードに前記複数の特権レベルの一部が割り当てられ、前記第2のモードに他の特権レベルが割り当てられる、請求項3〜6のいずれかに記載のマイクロコンピュータ。
【請求項8】
前記アクセス属性記憶手段は、前記複数の汎用レジスタのそれぞれに対して許可するアクセスの種類を記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶される許可するアクセスの種類および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項1記載のマイクロコンピュータ。
【請求項9】
前記複数の汎用レジスタは、複数のグループに分けられており、
前記アクセス属性記憶手段は、前記複数のグループのいずれのグループに対するアクセスを許可するかを記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるアクセスを許可するグループおよび前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項1記載のマイクロコンピュータ。
【請求項10】
前記アクセス属性記憶手段は、前記複数の汎用レジスタのそれぞれに対してどの所定単位のデータにアクセスを許可するかを記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるどの所定単位のデータにアクセスを許可するかに関する情報および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項1記載のマイクロコンピュータ。
【請求項11】
前記プロセッサは、複数の特権レベルを有しており、
前記アクセス属性記憶手段は、前記複数の汎用レジスタのそれぞれに対してどの特権レベルからのアクセスを許可するかを記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるどの特権レベルからのアクセスを許可するかに関する情報および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項1記載のマイクロコンピュータ。
【請求項12】
前記マイクロコンピュータはさらに、命令コードを第1のモードに対応する命令コードと解釈してデコードする第1のデコード手段と、
前記命令コードを第2のモードに対応する命令コードと解釈してデコードする第2のデコード手段と、
前記モード記憶手段に記憶されるモードに応じて、前記第1のデコード手段によるデコード結果と前記第2のデコード手段によるデコード結果とのいずれかを選択的に前記制御手段に出力する選択手段とを含む、請求項1記載のマイクロコンピュータ。
【請求項13】
前記第1のデコード手段は、命令コードに含まれるレジスタ指定フィールドの一部をオペコードと解釈してデコードする、請求項12記載のマイクロコンピュータ。
【請求項14】
前記アクセス属性記憶手段は、制御レジスタとして実装される、請求項1記載のマイクロコンピュータ。
【請求項15】
前記アクセス属性記憶手段は、アドレス空間にマッピングされる、請求項1記載のマイクロコンピュータ。
【請求項16】
前記アクセス属性記憶手段は、前記プロセッサの外部から受けた情報を記憶する、請求項1記載のマイクロコンピュータ。
【請求項1】
複数の汎用レジスタにアクセスしながら命令を実行するプロセッサを含んだマイクロコンピュータであって、
命令コードのデコード結果に応じて、命令の実行を制御する制御手段と、
前記複数の汎用レジスタのそれぞれに対するアクセス属性を記憶するアクセス属性記憶手段と、
前記プロセッサの動作を制御するためのモードを記憶するモード記憶手段と、
前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるアクセス属性および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定するアクセス判定手段とを含む、マイクロコンピュータ。
【請求項2】
前記アクセス判定手段は、汎用レジスタに対するアクセスを許可しない場合には、前記制御手段に対して例外要求を出力する、請求項1記載のマイクロコンピュータ。
【請求項3】
前記アクセス判定手段は、前記モード記憶手段に記憶されるモードが第1のモードの場合に、前記アクセス属性記憶手段に記憶されるアクセス属性によってアクセス許可が設定される汎用レジスタに対するアクセスのみを許可し、
前記モード記憶手段に記憶されるモードが第2のモードの場合に、すべての汎用レジスタに対するアクセスを許可する、請求項1または2記載のマイクロコンピュータ。
【請求項4】
前記アクセス判定手段は、前記モード記憶手段に記憶されるモードが第1のモードの場合に、前記アクセス属性記憶手段に記憶されるアクセス属性によってアクセス許可が設定される汎用レジスタに対するアクセスのみを許可し、
前記モード記憶手段に記憶されるモードが第2のモードの場合に、前記アクセス属性記憶手段に記憶されるアクセス属性によってアクセス禁止が設定される汎用レジスタに対するアクセスのみを許可する、請求項1または2記載のマイクロコンピュータ。
【請求項5】
前記第1のモードはユーザモードに対応し、前記第2のモードはスーパバイザモードに対応する、請求項3または4記載のマイクロコンピュータ。
【請求項6】
前記第1のモードはアプリケーションプログラムを実行するモードに対応し、前記第2のモードは割り込み処理ルーチンを実行するモードに対応する、請求項3または4記載のマイクロコンピュータ。
【請求項7】
前記プロセッサは、複数の特権レベルを有し、
前記第1のモードに前記複数の特権レベルの一部が割り当てられ、前記第2のモードに他の特権レベルが割り当てられる、請求項3〜6のいずれかに記載のマイクロコンピュータ。
【請求項8】
前記アクセス属性記憶手段は、前記複数の汎用レジスタのそれぞれに対して許可するアクセスの種類を記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶される許可するアクセスの種類および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項1記載のマイクロコンピュータ。
【請求項9】
前記複数の汎用レジスタは、複数のグループに分けられており、
前記アクセス属性記憶手段は、前記複数のグループのいずれのグループに対するアクセスを許可するかを記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるアクセスを許可するグループおよび前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項1記載のマイクロコンピュータ。
【請求項10】
前記アクセス属性記憶手段は、前記複数の汎用レジスタのそれぞれに対してどの所定単位のデータにアクセスを許可するかを記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるどの所定単位のデータにアクセスを許可するかに関する情報および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項1記載のマイクロコンピュータ。
【請求項11】
前記プロセッサは、複数の特権レベルを有しており、
前記アクセス属性記憶手段は、前記複数の汎用レジスタのそれぞれに対してどの特権レベルからのアクセスを許可するかを記憶し、
前記アクセス判定手段は、前記制御手段から汎用レジスタに対してアクセス要求がある場合に、前記アクセス属性記憶手段に記憶されるどの特権レベルからのアクセスを許可するかに関する情報および前記モード記憶手段に記憶されるモードに応じて、当該汎用レジスタに対するアクセスを許可するか否かを判定する、請求項1記載のマイクロコンピュータ。
【請求項12】
前記マイクロコンピュータはさらに、命令コードを第1のモードに対応する命令コードと解釈してデコードする第1のデコード手段と、
前記命令コードを第2のモードに対応する命令コードと解釈してデコードする第2のデコード手段と、
前記モード記憶手段に記憶されるモードに応じて、前記第1のデコード手段によるデコード結果と前記第2のデコード手段によるデコード結果とのいずれかを選択的に前記制御手段に出力する選択手段とを含む、請求項1記載のマイクロコンピュータ。
【請求項13】
前記第1のデコード手段は、命令コードに含まれるレジスタ指定フィールドの一部をオペコードと解釈してデコードする、請求項12記載のマイクロコンピュータ。
【請求項14】
前記アクセス属性記憶手段は、制御レジスタとして実装される、請求項1記載のマイクロコンピュータ。
【請求項15】
前記アクセス属性記憶手段は、アドレス空間にマッピングされる、請求項1記載のマイクロコンピュータ。
【請求項16】
前記アクセス属性記憶手段は、前記プロセッサの外部から受けた情報を記憶する、請求項1記載のマイクロコンピュータ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2011−8760(P2011−8760A)
【公開日】平成23年1月13日(2011.1.13)
【国際特許分類】
【出願番号】特願2010−49377(P2010−49377)
【出願日】平成22年3月5日(2010.3.5)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成23年1月13日(2011.1.13)
【国際特許分類】
【出願日】平成22年3月5日(2010.3.5)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]