JP2011070290A - データプロセッサ - Google Patents
データプロセッサ Download PDFInfo
- Publication number
- JP2011070290A JP2011070290A JP2009219016A JP2009219016A JP2011070290A JP 2011070290 A JP2011070290 A JP 2011070290A JP 2009219016 A JP2009219016 A JP 2009219016A JP 2009219016 A JP2009219016 A JP 2009219016A JP 2011070290 A JP2011070290 A JP 2011070290A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- register
- data
- level
- selection control
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】割込みの発生に応答して退避されたコンテキストの保護に資することができるデータプロセッサを提供する。
【解決手段】割り込みを受け付けたときCPU(2)が所定のコンテキストの退避を行なうのに、スタックポインタレジスタ(REG#n)とは別のシステムスタックポインタレジスタ(SSP)を用い、動作モードに拘わらず記憶保護部が保護する領域を一律に退避先とする。これにより、退避されたコンテキストは割り込み発生時のCPUの動作モードに拘わらず記憶保護部の保護を受けることができる。
【選択図】図1
【解決手段】割り込みを受け付けたときCPU(2)が所定のコンテキストの退避を行なうのに、スタックポインタレジスタ(REG#n)とは別のシステムスタックポインタレジスタ(SSP)を用い、動作モードに拘わらず記憶保護部が保護する領域を一律に退避先とする。これにより、退避されたコンテキストは割り込み発生時のCPUの動作モードに拘わらず記憶保護部の保護を受けることができる。
【選択図】図1
Description
本発明はデータプロセッサが備えるCPU(中央処理装置)における割り込み制御に関し、例えばスタック領域を用いてデータ処理を行ない、割込みマスクによって割込みの実行を管理する機器制御用途のマイクロコンピュータに適用して有効な技術に関する。
命令実行中に割込みが発生すると、その割込み要求の割込みレベルが割込みマスクレベルよりも高い場合にCPUは割込みを受け付け、CPUは割込み発生直前のコンテキストをスタック領域に退避して、割込みによる処理を実行する。これに関連して例えば特許文献1,2がある。
特許文献1には割り込みの発生に応答してコンテキストを退避および復帰する技術が記載される。ここでは、CPUの内部レジスタのデータをストアするメモリとは別にCPUは割り込みの発生に応答してコンテキストを退避する領域としてコンテキスト格納部とその制御部を有する。
特許文献2にはOSが管理するタスクごとに専用の実行環境スタックが割り当てられる一方、関数の開始から終了までを1つの単位として共用の関数用実行環境スタックを割り当て、スタック領域の共用化が行えるようにする技術が記載される。例えば、サブ関数の呼び出し要求があったときに、共用の関数用実行環境スタックが使用中かを判断し、使用中の場合はタスクを実行待ち状態に移行させ、使用中で無い場合は現在のタスク実行環境情報をコンテキスト退避領域へ退避させ、サブ関数に割り当てられた共用の関数用実行環境スタックを使用中にし、サブ関数の実行環境情報を関数用実行環境スタックに代入し、それを用いてサブ関数を呼び出す。
CPUは動作モードに応じた記憶保護を行っており、例えば特権モードとユーザモードが存在する場合、ユーザモードからは、システムレジスタ等、データプロセッサ内の一部のリソースへのアクセスを制限することができる。ユーザモードでプログラムを実行している最中に割込みを受け付けたとき、コンテキストの退避をハードウェアで自動的に行う場合には退避領域はユーザモードでアクセス可能にされているスタック領域に対して行われる。特権モードで実行される割込みハンドラを用いて全てのコンテキストの退避を行う場合には割込みハンドラの実行環境が特権モードであるからそれによる退避領域は特権モードでアクセス可能にされているスタック領域に対して行われ、ユーザモードによるアクセスが抑制され、この点でコンテキストに対する記憶保護が実現されるが、割込みハンドラによる処理が多くなって割り込み応答性に劣る。一方。前者の場合には、コンテキストの退避をハードウェアで自動的に行うので割込み応答性に優れるが、その半面、不正アクセスやソフトウェアのバグによってコンテキストが改竄され易いという問題がある。
また、割込みを受け付けたときCPUはステータスレジスタの割込みマスクレベルを操作することによって後から発生する割込みを受け付けるか否かを割込みレベルに基づいて制御することになる。したがって、優先的に処理を行なうべき割込みのレベルを高く定義しておくことで、特定の割り込みを優先的に受理することが可能になる。しかしながら、その割込みレベルを所望に設定する場合には、ステータスレジスタの割込みマスクデータをリードし、新たな設定に用いるデータを更にリードし、リードした双方にデータを用いて新たな割込みマスクレベルデータを生成し、これをステータスレジスタに書き戻すための一連のプログラム処理を行わなければならない。その一連の処理を実行するには複数命令の実行が必要になり、割込み応答性が悪化されることになる。
本発明の目的は割込みの発生に応答して退避されたコンテキストの保護に資することができるデータプロセッサを提供することにある。
本発明の別の目的は割り込み応答性を劣化させずに割込みレベルの操作を可能にするデータプロセッサを提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、割り込みを受け付けたときCPUが所定のコンテキストの退避を行なうのに、スタックポインタレジスタとは別のシステムスタックポインタレジスタを用い、動作モードに拘わらず記憶保護部が保護する領域を一律に退避先とする。これにより、退避されたコンテキストは割り込み発生時のCPUの動作モードに拘わらず記憶保護部の保護を受けることができる。
また、割込みマスクレジスタのほかにサブ割込みマスクレジスタを用意すると共に、割込みマスクレジスタ及びサブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタを採用し、CPUが実行する命令セットには前記選択制御レジスタを操作する専用命令を含めようにする。予めサブ割込みマスクレジスタに所要の割込みレベルを設定しておけば、必要に応じて選択制御レジスタの設定を専用命令で変えるだけで割込み優先レベルの変更が可能になる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、割込みの発生に応答して退避されたコンテキストの保護に資することができる。
また、割り込み応答性を劣化させずに割込みレベルの操作を可能にすることができる。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の代表的な実施の形態に係るデータプロセッサ(1)は、メモリ(3)の記憶領域に割当てられスタックポインタレジスタ(202_n)の値に基づいて操作されるスタック領域(30)を用いてデータ処理を行なうCPU(2,2A,2B)を備える。前記CPUは、動作モードに応じてメモリの記憶領域に対する記憶保護を行う記憶保護部と、前記スタックポインタレジスタとは別のレジスタであって、所定のコンテキストの退避を行うときに利用されるシステムスタックポインタレジスタ(203)と、割込みが受け付けられたとき前記システムスタックポインタレジスタを操作して所定のコンテキストの退避を制御すると共に、受け付けられた割り込みによる処理が終了されたとき前記システムスタックポインタレジスタを操作して前記退避されている前記所定のコンテキストの復帰を制御するハードウェア制御ロジック部(230)と、を有する。前記ハードウェア制御ロジック部は、前記動作モードにかかわらず前記記憶保護部が保護する領域を退避領域とするように前記システムスタックポインタレジスタを操作する。
これにより、退避されたコンテキストは割り込み発生時のCPUの動作モードに拘わらず記憶保護部の保護を受けることができる。
〔2〕項1のデータプロセッサにおいて、例えば前記動作モードは特権モード及びユーザモードであり、前記記憶保護部が保護する領域は前記CPUが前記特権モードでアクセスする領域および前記ハードウェア制御ロジック部が操作する領域である。したがって、前記制御ロジック部がシステムスタックポインタレジスタを操作して所定のコンテキストの退避を行うときCPUの動作モードはユーザモードであってよい。
〔3〕項2のデータプロセッサにおいて、例えば前記所定のコンテキストは、プログラムカウンタ(200)及びステータスレジスタ(201)が保持する情報を含む。最低限退避すべきプログラムカウンタ及びステータスレジスタの情報以外を任意とすれば、必要に応じてその他のコンテキストの退避を行えばよく、無用なコンテキストの退避によって割込み応答性が阻害される虞を抑制することができる。
〔4〕項3のデータプロセッサにおいて、例えば前記CPUは割り込みを受け付けたとき前記所定のコンテキスト以外のコンテキストを前記スタックポインタレジスタを用いて前記特権モードでスタック領域に退避する。前記所定のコンテキスト以外のコンテキストを退避した場合にも記憶保護部による保護を受けることができる。
〔5〕項1乃至4の何れかのデータプロセッサにおいて、例えば前記スタックポインタレジスタは前記CPUが有する汎用レジスタの中の一つのレジスタ(202_n,REG#n)に割当てられる兼用レジスタである。前記システムスタックポインタレジスタはCPUが有する専用レジスタである。
〔6〕項1乃至5の何れかのデータプロセッサにおいて、例えば前記システムスタックポインタレジスタを複数個有し(203_0〜203_m)、前記制御ロジックは複数個のシステムスタックポインタレジスタの中の一つを選択して使用する。
〔7〕項1乃至6の何れかのデータプロセッサにおいて、例えば前記CPUは更に、割込みの実行を管理するために割込みレベルデータが格納される割込みマスクレジスタ(IMASK)と、所要の割込みレベルデータが書き込まれるサブ割込みマスクレジスタ(SIMASK)と、前記割込みマスクレジスタ及び前記サブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタ(SI)と、を有し、前記CPUが実行する命令セットは前記選択制御レジスタを操作する専用命令を含む。
予めサブ割込みマスクレジスタに所要の割込みレベルを設定しておけば、必要に応じて選択制御レジスタの設定を専用命令で変えるだけで割込み優先レベルの変更が可能になる。したがって、割り込み応答性を劣化させずに割込みレベルの操作が可能になる。
〔8〕項7のデータプロセッサにおいて、例えば前記ハードウェア制御ロジック部は更に、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前記割り込みマスクレジスタに書き込む処理を行なう。これにより、受け付けられた割り込みの割込みレベルよりも低い割り込みの受付を抑止するプリミティブな割り込みの実行管理を行うための割込みマスクレジスタに対する操作をハードウェア制御ロジック部を用いて効率的に行うことができる。このとき、その割込みによる処理を特に優先させたい場合などには割込みマスクレジスタを更に操作してもよいが、項7で説明した如く、選択制御レジスタに対する書き込みを行うだけで、予めサブ割込みマスクレジスタに設定した割込みレベルを用いて割り込みの実行管理を行うことが可能になる。割込みマスクレジスタを更に操作しようとする場合には複数の命令を実行して当該レジスタに対するリード・モディファイ・ライトの動作を行わなければならない。
〔9〕項8のデータプロセッサにおいて、例えば前記CPUは、前記選択制御レジスタが保持する選択制御データが第1の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、前記選択制御レジスタが保持する選択制御データが第2の値であるときは前記サブ割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理する。
〔10〕項8又は9のデータプロセッサにおいて前記選択制御データは例えば1ビットのデータである。
〔11〕項8乃至10の何れかのデータプロセッサにおいて、例えばサブ割込みマスクレジスタには、OSの管理下にあるプログラムが処理する割込みの割込みレベルとOSの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される。サブ割込みマスクレジスタに前記境界のレベルを示す割り込みレベルデータを設定し、これを割り込みの実行管理に用いれば、受け付けられた割込み処理がOS管理下の他のプログラムからの割り込みに邪魔されることを確実に阻止することができる。
〔12〕項8乃至11の何れかのデータプロセッサにおいて、前記割込みマスクレジスタ及び選択制御レジスタの夫々は例えばステータスレジスタの特定ビットが割当てられたレジスタである。
〔13〕項8のデータプロセッサにおいて、例えば前記CPUは、前記選択制御レジスタが保持する選択制御データが第1の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、前記選択制御レジスタが保持する選択制御データが第2の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルと前記サブ割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルとのうちで優先レベルが高い方の割込みレベルデータを用いて割込みの実行を管理する。
〔14〕項13のデータプロセッサにおいて、前記選択制御データは例えば1ビットのデータである。
〔15〕項13又は14のデータプロセッサにおいて、前記サブ割込みマスクレジスタには、OSの管理下にあるプログラムが処理する割込みの割込みレベルとOSの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される。
〔16〕項13乃至15の何れかのデータプロセッサにおいて、前記割込みマスクレジスタ及び選択制御レジスタの夫々は例えばステータスレジスタの特定ビットが割当てられたレジスタである。
〔17〕本発明の別の実施の形態に係データプロセッサは、命令セットで規定される命令を実行してデータ処理を行なうCPU(2C,2D)を備える。前記CPUは、割込みの実行を管理するために割込みレベルデータが格納される割込みマスクレジスタ(IMASK)と、所要の割込み優先レベルデータが書き込まれるサブ割込みマスクレジスタ(SIMASK)と、前記割込みマスクレジスタ及び前記サブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタ(SI)と、を有する。前記命令セットは、前記選択制御レジスタを操作する専用命令を含む。
予めサブ割込みマスクレジスタに所要の割込みレベルを設定しておけば、必要に応じて選択制御レジスタの設定を専用命令で変えるだけで割込み優先レベルの変更が可能になる。したがって、割り込み応答性を劣化させずに割込みレベルの操作が可能になる。
〔18〕項17のデータプロセッサにおいて、例えば前記CPUは更に、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前記割り込みマスクレジスタに書き込む処理を行なうハードウェア制御ロジック部(230)を有する。これにより、受け付けられた割り込みの割込みレベルよりも低い割り込みの受付を抑止するプリミティブな割り込みの実行管理を行うための割込みマスクレジスタに対する操作をハードウェア制御ロジック部を用いて効率的に行うことができる。このとき、その割込みによる処理を特に優先させたい場合などには割込みマスクレジスタを更に操作してもよいが、項7で説明した如く、選択制御レジスタに対する書き込みを行うだけで、予めサブ割込みマスクレジスタに設定した割込みレベルを用いて割り込みの実行管理を行うことが可能になる。割込みマスクレジスタを更に操作しようとする場合には複数の命令を実行して当該レジスタに対するリード・モディファイ・ライトの動作を行わなければならない。
〔19〕項17又は18のデータプロセッサにおいて、例えば前記CPUは、前記選択制御レジスタが保持する選択制御データが第1の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、前記選択制御レジスタが保持する選択制御データが第2の値であるときは前記サブ割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理する。
〔20〕項18又は19のデータプロセッサにおいて、前記選択制御データは例えば1ビットのデータである。
〔21〕項18乃至20の何れかのデータプロセッサにおいて、前記サブ割込みマスクレジスタには、OSの管理下にあるプログラムが処理する割込みの割込みレベルとOSの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される。サブ割込みマスクレジスタに前記境界のレベルを示す割り込みレベルデータを設定し、これを割り込みの実行管理に用いれば、受け付けられた割込み処理がOS管理下の他のプログラムからの割り込みに邪魔されることを確実に阻止することができる。
〔22〕項18乃至21の何れかのデータプロセッサにおいて、前記割込みマスクレジスタ及び選択制御レジスタの夫々は例えばステータスレジスタ(201)の特定ビットが割当てられたレジスタである。
〔23〕項18のデータプロセッサにおいて、前記CPUは、前記選択制御レジスタが保持する選択制御データが第1の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、前記選択制御レジスタが保持する選択制御データが第2の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルと前記サブ割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルとのうちで優先レベルが高い方の割込みレベルデータを用いて割込みの実行を管理する。
〔24〕項23のデータプロセッサにおいて、前記選択制御データは例えば1ビットのデータである。
〔25〕項23又は24のデータプロセッサにおいて、例えば前記サブ割込みマスクレジスタには、OSの管理下にあるプログラムが処理する割込みの割込みレベルとOSの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される。
〔26〕項23乃至25の何れかのデータプロセッサにおいて、前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである。
2.実施の形態の詳細
実施の形態について更に詳述する。
実施の形態について更に詳述する。
《実施の形態1》
図1には本発明の一実施の形態に係るデータプロセッサが示させる。同図に示されるデータプロセッサ(MCU)1は、特に制限されないが、代表的に図示されたCPU(中央処理装置)2、割込みコントローラ(INTC)4、及びメモリ(MRY)3を有し、更に図示は省略するがCPU1によって制御される入出力コントローラなどの周辺回路やアクセラレータなどの回路モジュールを備え、それらはバス5を介してインタフェースされる。メモリ3は例えば・ランダム・アクセス・メモリ)又はSDRAM(シンクロナス・ダイナミック・ランダム・アクセス・メモリ)などによって構成される。データプロセッサ1は、特に制限されないが、公知の相補型MOS集積回路製造技術によって単結晶シリコンのような1個の半導体基板に形成される。
図1には本発明の一実施の形態に係るデータプロセッサが示させる。同図に示されるデータプロセッサ(MCU)1は、特に制限されないが、代表的に図示されたCPU(中央処理装置)2、割込みコントローラ(INTC)4、及びメモリ(MRY)3を有し、更に図示は省略するがCPU1によって制御される入出力コントローラなどの周辺回路やアクセラレータなどの回路モジュールを備え、それらはバス5を介してインタフェースされる。メモリ3は例えば・ランダム・アクセス・メモリ)又はSDRAM(シンクロナス・ダイナミック・ランダム・アクセス・メモリ)などによって構成される。データプロセッサ1は、特に制限されないが、公知の相補型MOS集積回路製造技術によって単結晶シリコンのような1個の半導体基板に形成される。
CPU2はレジスタセット20、命令フェッチ部(IF)21、命令デコーダ(ID)22、シーケンサ(SEQ)23、実行部(EX)24、メモリ管理ユニット(MMU)25を有し、メモリ3に割当てたスタック領域30を用いてデータ処理を行なう。
レジスタセット20には例えば、次に実行すべき命令アドレスを保持するプログラムカウンタ(PC)200、CPU2の内部状態を示す情報が保持されるステータスレジスタ(SR)201、汎用レジスタ(REG#0〜REG#n)202_0〜202_n、及びシステムスタックポインタ(SSP)203を含む。ステータスレジスタ201はCPU2の動作モードデータや割り込みマスクデータなどを保持する。
メモリマネージメントユニット25はメモリ3の物理アドレスとCPU2の仮想アドレスとの対応を管理すると共SSRAM(シンクロナス・スタティックに、CPU2の動作モードやCPU2が実行するプログラムのプロセスID等に従った記憶保護を行う。特に制限されないが、メモリマネージメントユニット25は複数のアドレス変換エントリを連想記憶によって保持するアドレス変換バッファ(図示せず)を備える。アドレス変換エントリは、仮想ページアドレスとこれに対応される物理ページアドレスとのペアと共に、当該仮想ページアドレスに対するアクセス権原を特定するために当該仮想ページアドレスのアクセスが許容されるCPUの動作モード及びプロセスIDを示す保護情報を備える。メモリ管理ユニット25は、CPU2によるアクセスに際して仮想ページアドレスの一部を用いてアドレス変換バッファを連想検索し、連想検索されたアドレス変換エントリを用いて仮想ページアドレスを物理ページアドレスに変換すると共に、そのときのCPUの動作モードやプロセスID等が当該アドレス変換エントリの保護情報の範囲内であるとき初めて、当該仮想アドレスに対応される物理アドレスがバス5に供給されて、メモリ3などに対するアクセスが行われる。
CPU2の動作モードには、特に制限されないが、特権モードとユーザモードがある。特権モードは実行中のプロセスがOS(オペレーティング・システム)のプロセスであることを意味し、ユーザモードは実行中のプロセスがOSの管理下で実行されユーザプロセスであることを意味する。例えばステータスレジスタ201の動作モードデータの値がCPUの動作モードを示す。このCPUの動作モードは上記記憶保護によって特権モードでのみ操作可能にされ、ユーザモードでは操作不可能とされる。ユーザモードから特権モードへの移動はシステムコールによって行われる。
命令フェッチ部21はプログラムカウンタ200の値に基づいて命令をフェッチする。命令デコーダ22はフェッチされた命令をデコードして内部制御信号を生成してレジスタ部20やシーケンサ23等の制御を行う。シーケンサ2は入力されたデコード信号やステータスレジスタなどの状態に応じて内部の動作制御手順を生成する。実行部24やレジスタ部20はその制御手順に従ってアドレスやデータの演算並びにデータの内部転送を行って命令を実行する。
割込みコントローラ4は図示を省略する内部回路モジュールやデータプロセッサの外部から割込み要求があると、競合する場合にはそれを調停して、CPU2に割込み信号INTを出力し、CPU2のプログラム処理をその割込み要因に応じた割り込み処理に遷移させる。
CPU2によるプログラム処理では上述の如くスタック領域30を用いる。スタック領域30は、ユーザモードで使用されるユーザ用スタック領域USSTC、特権モードで使用される特権用スタック領域PVSTC、及び割り込みの受付に応答して自動的に起動されるハードウェア退避動作に用いられるハードウェア退避用スタック領域SVSTCがある。
割り込みが発生したときのコンテキストの退避について詳述する。割込み信号INTによって割込みが発生されると、シーケンサ23は発生した割り込みの割込みレベルがステータスレジスタ201の割込みマスクデータによる割込みレベルよりも高いとき当該割り込みを受け付け、現在処理中のプロセスのコンテキストのうち所定のコンテキスト例えばプログラムカウンタ及びステータスレジスタの値をハードウェア退避動作によってスタック領域30に退避する。ハードウェア退避動作ではハードウェア制御ロジック部(HWL)230がシステムスタックポインタレジスタSSPを用いてハードウェア退避用スタック領域SVSTCに所定のコンテキストを退避する。したがって、ハードウェア退避動作を行うとき、CPU2の動作モードがユーザモードであっても所定のコンテキストはユーザ用スタック領域には退避されず、ユーザモードによる自由なアクセスが制限されるという意味で特権モードによる保護と同等の保護を受けるハードウェア退避用スタック領域SVSTCに退避される。仮に、割込み受け付けに応答してステータスレジスタのCPUの動作モードデータがユーザモードから特権モードに書き換え完了されていない状態で汎用レジスタ(REG#n)202_nに割当てられるスタックポインタレジスタを用いたハードウェア退避動作を行った場合にはユーザ用スタック領域に退避が行われ、退避されたデータに対してMMU25による強力な保護が得られなくなる。
上記システムスタックポインタレジスタSSPを用いたハードウェア退避動作に並行して或いはその後に、ハードウェア制御ロジック部を用いてステータスレジスタの割込みマスクデータに当該割込みの割込みレベルを反映して、当該割込みレベルよりもレベルの低い新たな割り込みによって今回の割込み処理が中断されないようにする。CPUの動作モードが特権モードに切換わった後は、割込みハンドラを用いたソフトウェア退避動作が必要に応じて行われる。ソフトウェア退避動作にはスタックポインタレジスタ(REG#n)を用いて、特権用スタック領域にその他のコンテキスト例えば汎用レジスタの値等の退避が行われる。
必要な退避処理が完了した後は、CPU2は受け付けられた割込みによって要求されたユーザプログラム等をユーザモードで実行する。受け付けられた割り込みによる処理が終了されたときは、先ず、前記ソフトウェア退避処理で退避されたその他のコンテキストを先ずREG#nのスタックポインタを用いて復帰し、次いで、ハードウェア制御ロジック部が退避されている所定のコンテキストをPCやSRに復帰する処理を行なう。
図2には割込みによるCPU2の動作が例示される。ユーザモードのCPU2はユーザ用スタック領域USSTCを用いてタスク1を実行している。このとき割込みAが発生して受け付けられると、ハードウェア制御ロジック部230がタスク1の所定のコンテキスト、即ちプログラムカウンタ(PC)及びステータスレジスタ(SR)の値をハードウェア退避用スタック領域SVSTCに格納する。このときシステムスタックポインタSSPをスタックポインタに用いる。退避の後にたとえば割込みハンドラとしてのISR(Interrupt Service Routine)−Aを特権モードで実行する。特権モードではレジスタREG#nをスタックポインタとして特権用スタック領域PVSTCが用いられる。更にここで、割込みBが発生して受け付けられると、ハードウェア制御ロジック部230がシステムスタックポインタSSPを用いてISR−Aの所定のコンテキスト、即ちプログラムカウンタ(PC)及びステータスレジスタ(SR)の値をハードウェア退避用スタック領域SVSTCに格納する。退避の後にISR(Interrupt Service Routine)_Bの割り込み処理をユーザモードで実行する。ユーザモードではレジスタREG#nをスタックポインタとしてユーザ用スタック領域USSTCが用いられる。レジスタREG#nはユーザモード、特権モードに応じて、夫々の処理プログラムが初期設定して使用する。
図3にはハードウェア退避用スタック領域を採用せずにCPUの動作モードに応じてユーザ用スタック領域又は特権用スタック領域に退避を行う動作が比較例として示される。ユーザモードのCPUはユーザ用スタック領域USSTCを用いてタスク1を実行している。このとき割込みAが発生して受け付けられると、ハードウェア制御ロジック部がタスク1の所定のコンテキスト例えばプログラムカウンタ(PC)及びステータスレジスタ(SR)の値をユーザ用スタック領域USSTCに格納する。このときレジスタREG#nをスタックポインタに用いる。退避の後に例えば割込みハンドラとしてのISR(Interrupt Service Routine)−Aを特権モードで実行する。特権モードではレジスタREG#nをスタックポインタとして特権用スタック領域PVSTCが用いられる。更にここで、割込みBが発生して受け付けられると、レジスタREG#nをスタックポインタとしてISR−Aの所定のコンテキストとして例えばプログラムカウンタ(PC)及びステータスレジスタ(SR)の値を特権用スタック領域PVSTCに格納する。退避の後にISR(Interrupt Service Routine)_Bの割り込み処理をユーザモードで実行する。ユーザモードではレジスタREG#nをスタックポインタとしてユーザ用スタック領域USSTCが用いられる。図3の場合にはPCやSRの値などの所定のコンテキストは割込み受付時のCPUの動作モードに応じてユーザ用スタック領域USSTCにも退避される結果、退避されたコンテキストに対する不正アクセスや改竄の虞がある。
図4には図2の動作の一部を更に詳細に例示したものであり、ここではユーザモードでタスクを実行中に割込みが発生した場合の動作が示される。ユーザモードのCPU2がユーザ用スタック領域USSTCを用いてユーザプログラムを実行中に割り込みが発生し、それが受け付けられるとハードウェア制御ロジック部230がシステムスタックポインタ(SSP)を用いてPCやSAR等の所定のコンテキストをハードウェア退避用スタック領域SVSTCに退避する。その後、割込みハンドラの実行に分岐し、特権モードでCPU2が残りのコンテキストを特権用スタック領域に退避する。この退避動作は割込みハンドラによるソフトウェア処理で行なわれる。次いでCPU2は要求された割込み処理を実行し、実行を完了すると、特権用スタック領域PVSTCに退避してあるコンテキストをソフトウェア処理で復帰し、ハンドラ終了命令を実行してから、今度は、ハードウェア退避用スタック領域SVSTCに退避してあるPCやSR等の所定のコンテキストをハードウェア制御ロジック部230がシステムスタックポインタ(SSP)を用いて復帰する。その後、ユーザプログラムの処理に分岐し、割込み発生直前の処理に復帰する。HWはハードウェア制御ロジック部によるハードウェア処理を意味し、SWはソフトウェア処理を意味する。
図5には図3の動作の一部を更に詳細に例示したものであり、ここではユーザモードでタスクを実行中に割込みが発生した場合の動作が示される。ユーザモードのCPU2がユーザ用スタック領域USSTCを用いてユーザプログラムを実行中に割り込みが発生し、それが受け付けられるとハードウェア制御ロジック部230がレジスタREG#nをスタックポインタに用いてPCやSAR等の所定のコンテキストをユーザ用スタック領域USSTCに退避する。その後、割込みハンドラの実行に分岐し、特権モードでCPU2が残りのコンテキストを特権用スタック領域に退避する。この退避動作は割込みハンドラによるソフトウェア処理で行なわれる。次いでCPU2は要求された割込み処理を実行し、実行を完了すると、特権用スタック領域PVSTCに退避してあるコンテキストをソフトウェア処理で復帰し、ハンドラ終了命令を実行してから、今度は、ユーザ用スタック領域SVSTCに退避してあるPCやSAR等の所定のコンテキストをハードウェア制御ロジック部230がレジスタREG#nをスタックポインタとして用いることによって復帰する。その後、ユーザプログラムの処理に分岐し、割込み発生直前の処理に復帰する。
図4と図5を比べても明らかなように、図5のようにハードウェア退避用スタック領域を採用しない場合にはCPCやSRの値などの所定のコンテキストは割込み受付時のCPUの動作モードに応じてユーザ用スタック領域USSTCにも退避される結果、退避されたコンテキストに対する保護が不十分になる。図4の場合は、ハードウェア退避用スタック領域はMMUによってユーザによるアクセスが制限されているから、その保護は図5に比べて優れている
図6にはスタックポインタレジスタの選択に関する構成が例示される。以上の説明ではハードウェア制御ロジック部230による退避/復帰にはシステムスタックポインタレジスタSSPを用い、その他の動作では汎用レジスタREG#nをスタックポインタレジスタとして使用するものとして説明した。図6にはそのための具体的な構成が例示され、例えばハードウェア制御ロジック部230からの選択信号に従ってセレクタ210でシステムスタックポインタレジスタSSP又は汎用レジスタREG#nレジスタの出力を選択する。ハードウェア制御ロジック部230によるハードウェア退避用スタック領域SVSTCを用いる退避/復帰動作を行うときシステムスタックポインタレジスタ(SSP)203の出力を選択し、それ以外の場合にはレジスタREG#nの出力を選択する。
図6にはスタックポインタレジスタの選択に関する構成が例示される。以上の説明ではハードウェア制御ロジック部230による退避/復帰にはシステムスタックポインタレジスタSSPを用い、その他の動作では汎用レジスタREG#nをスタックポインタレジスタとして使用するものとして説明した。図6にはそのための具体的な構成が例示され、例えばハードウェア制御ロジック部230からの選択信号に従ってセレクタ210でシステムスタックポインタレジスタSSP又は汎用レジスタREG#nレジスタの出力を選択する。ハードウェア制御ロジック部230によるハードウェア退避用スタック領域SVSTCを用いる退避/復帰動作を行うときシステムスタックポインタレジスタ(SSP)203の出力を選択し、それ以外の場合にはレジスタREG#nの出力を選択する。
図7にはスタックポインタに関する別の構成を採用したCPU2Aが例示される。CPU2Aは複数個のシステムスタックポインタレジスタ(SSP)203_0〜203_nを有し、ハードウェア制御ロジック部230からの選択信号及びステータスレジスタ201の値に従ってセレクタ211でシステムスタックポインタレジスタSSP又は汎用レジスタREG#nの出力を選択する。ここでは、異なるOS(オペレーティングシステム)によって管理されるプログラムのグループ(ドメイン)が複数ある場合を想定し、ハードウェア制御ロジック部230によるハードウェア退避用スタック領域SVSTCを用いる退避/復帰を行う場合にはそのときのドメインに応じてシステムスタックポインタレジスタ(SSP)203_0〜203_nの中の一つのレジスタの出力を選択し、それ以外の場合にはレジスタREG#nの出力を選択する。ドメインに応ずる選択はSRのドメインIDを用いる。システムスタックポインタレジスタSSP又は汎用レジスタREG#nの何れの出力を選択するかはハードウェア制御ロジック部230からの選択信号によって制御される。
図8にはスタックポインタに関する更に別の構成を採用したCPU2Bが例示される。CPU2Bはハードウェア制御ロジック部によるハードウェア退避/復帰用のシステムスタックポインタレジスタ(SSP)203の他に特権モードにおけるスタックポインタ動作に用いる特権用スタックポインタ(PSP)204を有し、レジスタREG#nはその他のスタックポインタ動作に用いられる。セレクタ212はSRのモードビットとハードウェア制御ロジック部230からの選択信号を入力し、特権モードであればPSP204の出力を選択し、ユーザモードでハードウェア退避用スタック領域SVSTCを用いる退避/復帰を行う場合にはSSP203の出力が選択され、それ以外の場合にはレジスタREG#nの出力が選択されて、スタック領域に対するスタックポインタ動作が行われる。
尚、図6乃至図8においてレジスタ部20のレジスタに対する書き込み経路を明示していないが、例えばCPUの命令でレジスタ指定を行って任意の値を書き込むことが可能になっている。
《実施の形態2》
図9には本発明の別の実施の形態に係るデータプロセッサが示させる。同図に示されるデータプロセッサ(MCU)1Aは、特に制限されないが、代表的に図示されたCPU(中央処理装置)2C、割込みコントローラ(INTC)4、及びメモリ(MRY)3を有し、更に図示は省略するがCPU2Cによって制御される入出力コントローラなどの周辺回路やアクセラレータなどの回路モジュールを備え、それらはバス5を介してインタフェースされる。メモリ3は例えばSSRAM(シンクロナス・スタティック・ランダム・アクセス・メモリ)又はSDRAM(シンクロナス・ダイナミック・ランダム・アクセス・メモリ)などによって構成される。データプロセッサ1は、特に制限されないが、公知の相補型MOS集積回路製造技術によって単結晶シリコンのような1個の半導体基板に形成される。
図9には本発明の別の実施の形態に係るデータプロセッサが示させる。同図に示されるデータプロセッサ(MCU)1Aは、特に制限されないが、代表的に図示されたCPU(中央処理装置)2C、割込みコントローラ(INTC)4、及びメモリ(MRY)3を有し、更に図示は省略するがCPU2Cによって制御される入出力コントローラなどの周辺回路やアクセラレータなどの回路モジュールを備え、それらはバス5を介してインタフェースされる。メモリ3は例えばSSRAM(シンクロナス・スタティック・ランダム・アクセス・メモリ)又はSDRAM(シンクロナス・ダイナミック・ランダム・アクセス・メモリ)などによって構成される。データプロセッサ1は、特に制限されないが、公知の相補型MOS集積回路製造技術によって単結晶シリコンのような1個の半導体基板に形成される。
CPU2はレジスタセット20、命令フェッチ部(IF)21、命令デコーダ(ID)22、シーケンサ(SEQ)23、実行部(EX)24、メモリ管理ユニット(MMU)25を有し、例えばメモリ3に割当てたスタック領域を用いてデータ処理を行なう。
レジスタセット20には例えば、次に実行すべき命令アドレスを保持するプログラムカウンタ(PC)200、CPU2の内部状態を示す情報が保持されるステータスレジスタ(SR)201、汎用レジスタ(REG#0〜REG#n)202_0〜202_n、及びサブ割込みマスクレジスタ(SIMASK)206を含む。ステータスレジスタ201はCPU2の動作モードデータ、割り込みマスクデータIMASK、選択制御ビットSIなどを保持する。
メモリマネージメントユニット25はメモリ3の物理アドレスとCPU2Cの仮想アドレスとの対応を管理すると共に、CPU2Cの動作モードやCPU2Cが実行するプログラムのプロセスID等に従った記憶保護を行う。特に制限されないが、メモリマネージメントユニット25は複数のアドレス変換エントリを連想記憶によって保持するアドレス変換バッファ(図示せず)を備える。アドレス変換エントリは、仮想ページアドレスとこれに対応される物理ページアドレスとのペアと共に、当該仮想ページアドレスに対するアクセス権原を特定するために当該仮想ページアドレスのアクセスが許容されるCPUの動作モード及びプロセスIDを示す保護情報を備える。メモリ管理ユニット25は、CPU2Cによるアクセスに際して仮想ページアドレスの一部を用いてアドレス変換バッファを連想検索し、連想検索されたアドレス変換エントリを用いて仮想ページアドレスを物理ページアドレスに変換すると共に、そのときのCPU2Cの動作モードやプロセスID等が当該アドレス変換エントリの保護情報の範囲内であるとき初めて、当該仮想アドレスに対応される物理アドレスがバス5に供給されて、メモリ3などに対するアクセスが行われる。
CPU2Cの動作モードには、特に制限されないが、特権モードとユーザモードがある。特権モードは実行中のプロセスがOS(オペレーティング・システム)のプロセスであることを意味し、ユーザモードは実行中のプロセスがOSの管理下で実行されユーザプロセスであることを意味する。例えばステータスレジスタ201の動作モードデータの値がCPUの動作モードを示す。このCPUの動作モードは上記記憶保護によって特権モードでのみ操作可能にされ、ユーザモードでは操作不可能とされる。ユーザモードから特権モードへの移動はシステムコールによって行われる。
命令フェッチ部21はプログラムカウンタ200の値に基づいて命令をフェッチする。命令デコーダ22はフェッチされた命令をデコードして内部制御信号を生成してレジスタ部20やシーケンサ23等の制御を行う。シーケンサ2は入力されたデコード信号やステータスレジスタなどの状態に応じて内部の動作制御手順を生成する。実行部24やレジスタ部20はその制御手順に従ってアドレスやデータの演算並びにデータの内部転送を行って命令を実行する。
割込みコントローラ4は図示を省略する内部回路モジュールやデータプロセッサの外部から割込み要求があると、競合する場合にはそれを調停して、CPU2Cに割込み信号INTを出力する。これによって、シーケンサ23は発生した割り込みの割込みレベルがステータスレジスタ201の割込みマスクデータIMASKによる割込みレベルよりも高いとき当該割り込みを受け付け、実施の形態1で説明したような退避処理を行ない、更に割り込みマスクデータIMASKの更新を行なった後に、プログラム処理をその割込み要因に応じた割り込み処理に遷移させる。
割り込みマスクデータIMASKの更新について説明する。例えば前記ハードウェア制御ロジック部230は更に、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前ステータスレジスタ(SR)201に新たな割込みマスクデータIMASKとして書き込む処理を行なう。即ち、受け付けられた割り込みの割込みレベルよりも低い割り込みの受付を抑止するプリミティブな割り込みの実行管理を行うための割込みマスクデータIMASKに対する操作をハードウェア制御ロジック部230を用いて効率的に行うことができる。このとき、その割込みによる処理を特に優先させたい場合などには割込みマスクレジスタを更に操作することが必要になる。その操作を割り込みハンドラ等のソフトウェアを用いて行う場合には、ステータスレジスタ(SR)201のリード、リードしたデータをモディファイする演算処理、処理された新たな割り込みマスクデータをステータスレジスタ(SR)201にライト、などの処理を行なうために複数の命令を実行しなければならず、これによって割り込み応答性が悪化する。以下において、割り込みの実行管理を行うための割込みマスクデータIMASKの操作を効率化する構成について詳述する。
前記レジスタ部20が備えるサブ割込みマスクレジスタ(SIMASK)206は特権モードにおけるCPU2Cの命令実行によってアクセスされるレジスタであり、前記ステータスレジスタ(SR)201の割込みマスクデータに代えて利用可能にされる割込みレベルデータが格納される。図9の例では、セレクタ214によってステータスレジスタ(SR)201の割込みマスクデータ又はサブ割込みマスクレジスタ(SIMASK)206の割込みレベルデータが選択されてシーケンサ230に供給される。何れを選択するかはステータスレジスタ(SR)201の選択制御ビットSIによって決定される。例えばSI=0のとき、IMASKを選択し、SI=1のときSIMASKを選択する。CPU2Cの命令セットにはステータスレジスタ(SR)201のSIビットを操作する専用命令を含む。このSI操作命令は例えば特定のオペレーションコードとイミディエイトデータフィールドを有し、当該オペレーションコードはSRのSIにイミディエイトデータフィールドの値を書き込む処理を実行させる。これにより、ハードウェア制御ロジック部230で自動的にSRのIMASKが書換えられたとき必要に応じて割込みハンドラでそれを所望に書換えるときには前記SI操作命令を1命令実行するだけでよい当然、システムの初期化動作などで予めサブ割込みマスクレジスタ(SIMASK)206に所望の割込みレベルを書き込んでおくことは必要である。いずれにしてみ、割り込み受付からIMASKを変更するまでには最短で当該SIビット操作命令を1命令実行するだけでよい。前述の如く複数命令を実行して、リード、モディファイ、ライトのような処理を行なってIMASKを変更する場合に比べて、処理時間を短縮することができる。
図10には割り込みによるCPU2Cの動作フローチャートが例示される。ここでは、前述のIMASKを変更する処理時間の短縮が割込み応答性の向上に資することを示す。
CPU2Cがタスク1を実行しているとき割込みAが発生して受け付けられると、ハードウェア制御ロジック部230は自動的に所定のコンテキストの退避処理を行なうと共に、当該受け付けられた割り込みの割込みレベルデータを割込みマスクデータIMASKとしてステータスレジスタ201に書き込む。これによってCPU2Cは割込みハンドラとしてのISR(Interrupt Service Routine)−Aを実行する。ここで割込みレベルはOS管轄外のカテゴリ1(Cat.1)と、OS管轄内のカテゴリ2(Cat.2)に大別され、Cat.1は高い割込みレベルが与えられ、Cat.2には低い割込みレベルが与えられる。割り込みAが発生したときの割込みレベルは例えばCat.2であり、その割り込みレベルは割込みマスクデータIMASKとしてステータスレジスタ201に自動的に書き込みされる。例えばISR−Aの割込みハンドラによる処理はCS(クリティカルセクションセクション)とされ、例えばCat.2の割り込みを一切禁止して実行されるべき処理とされる。したがって、ISR−AにおけるCSAの処理を開始するに当たって、SR201の割込みマスクデータIMASKはCat.1とCat.2との境界のレベル(閾値割込みレベル)に変更しておくことが必要になり、その変更の処理中はCat.1及びCat.2の全ての割り込みを禁止して行なうことが必要であるから、その処理を短時間で完了することが、途中で発生する割込みに対する応答性を向上させる上で必要になる。図10では、図9に基づいて説明したとおり、予めSIMSK206に閾値レベルを格納しておき、前記SIビット操作命令を実行して選択制御ビットSIを1に変更するだけで(処理時間T1)、それ以降、シーケンサ23は、クリティカルセクションCSにおいて閾値レベルを基準に割り込みの受付可否を判別することが可能になる。図10では、割込みBが発生しているが、その割込みレベルはCat.2であるから、当該クリティカルセクションCSの実行が終了して、前記SIビット操作命令を再度実行して選択制御ビットSIを0に戻した後に(処理時間T2)、割込みBが受け付けられる。当該クリティカルセクションCSの実行中に割込みBに受け付けは行われないが、SIビット操作命令の実行による選択制御ビットSIの操作に時間を要しないので、その分だけ割込みBの受け付けは早くなる。
その後、タスク1の処理に復帰したとき、今度は割込みA1が発生して、上記同様に、ISR−Aの処理に分岐する。このときのクリティカルセクションCSでの処理中に割込みCが発生している。割込みCの割込みレベルはCat.1であるから、その割込みレベルは前記閾値レベルよりも高く、ISR−Cの処理に分岐される。SIビット操作命令の実行による選択制御ビットSIの操作に時間を要していないから(処理時間時間T3)、その分だけ割込みCの受け付けが早くなる。ISR−Cの処理が終ったら、ISR−Aの処理に復帰し、その最後で、前記SIビット操作命令を再度実行して選択制御ビットSIを0に戻した後に(処理時間T4)、タスク1に復帰する。
図11にはハードウェア制御ロジック部により自動で取り込まれた割込みマスクレベルデータを前述の如く複数命令を実行して、リード、モディファイ、ライトのような処理を行なって変更する場合を採用したときの比較例が示される。図11ではクリティカルセクションCSの前後において割り込みを禁止して、ステータスレジスタ(SR)201の割込みマスクデータIMASKに対するリード、モディファイ、ライトのような処理が行なわれるので時間を要する(処理時間T1a)。この期間は割り込みが禁止される期間であるから、そのときにいかなる割り込みが発生しても受け付けられず、割込み応答性に劣る。図10の場合にはSIビット操作命令の実行によって選択制御ビットSIを操作すればよいから、割り込みを受け付けることが出来ない期間(処理時間T1)が短くなり、優れた割込み応答性を実現することができる。図10の処理時間T1,T2,T3,T4は図11では処理時間T1a,T2a,T3a,T4aのように長くされる。
図12には実施の形態2における別のCPU2Dが例示される。図9のCPU2Cとは選別回路(MAX)215を採用した点が相違される。選別回路215はステータスレジスタ(SR)201の割込みマスクデータIMASKとサブ割込みマスクデータレジスタの割り込みレベルとを入力し、レベルの高い方のデータを出力する。セレクタ217は、例えばSI=0のとき、IMASKを選択し、SI=1のときMAX215の出力を選択する。
図13には複数のサブ割り込みマスクデータレジスタSIMASK#0〜SIMASK#iを採用する場合の例が示される。選択ビットSIは複数ビットとされ、セレクタ217は選択ビットSIの値に応じてレジスタSIMASK#0〜SIMASK#i及び割込みマスクデータIMASKの内から一つを選択してシーケンサ23に出力する。
図14には割込みマスクデータの更新に割込みマスクデータキュー218を用いる例が示される。割込みマスクデータIMASKは、前述の割込み受け付け時におけるハードウェア制御ロジック部230による自動的な更新と共に、割込みマスクデータキュー218の出力によって変更可能にされる。割込みマスクデータIMASKはバッファ操作命令によって任意に入れ替え可能にされる。例えば、プッシュ命令を実行することによって順次割込みレベルデータが格納され、ポップ命令を実行することによって最も先に格納された割込みレベルデータが読み出されて割り込みマスクデータIMASKに反映される。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、割り込みマスクデータIMASKをステータスレジスタの一部で構成し、また、選択制御ビットSIをステータスレジスタの一部で構成することに限定されない。割込みマスクレジスタ及び選択制御レジスタをステータスレジスタとは別のレジスタによって構成してもよい。例えばその場合にはそれらレジスタは退避対象にされる。
システムスタックポインタレジスタ(SSP)を用いて所定のコンテキストが退避される領域は記憶保護部が保護する領域であればよい。記憶保護部とはMMUに限定されず、特定のメモリ領域に対する命令によるアクセスを制限する構成であればよく、CPUの動作モードとは関係なくハードウェア制御ロジック部だけに退避/復帰が認められるものとする場合でもよい。MMUを用いた場合には、ユーザモードではアクセスを禁止し且つ特権モードではアクセス可能としてもよい。
実施の形態2で説明した専用命令による割込みマスクレベルの更新の発明特徴事項は実施の形態1で説明したデータプロセッサに適用することも可能である。
実施に形態2で行う退避処理は、実施の形態1で説明した処理出合っても、或いはスタックポインタレジスタだけを用いる従来方式、或いはその他の方式であってもよい。
ハードウェア制御ロジック部は例えばシーケンサの一部として構成される。そのロジックがゲートレベルのロジック回路であってもよいし、また、マイクロプログラム等のコードを用いたロジック回路であってもよい。
データプロセッサが備える内部回路モジュールは上記実施の形態に限定されず適宜変更可能である。
1、1A データプロセッサ(MCU)
2,2A,2B,2C、2D CPU(中央処理装置)
4 割込みコントローラ(INTC)
3 メモリ(MRY)
5 バス
20 レジスタセット
21 命令フェッチ部(IF)
22 命令デコーダ(ID)
23 シーケンサ(SEQ)
24 実行部(EX)
25 メモリ管理ユニット(MMU)
30 スタック領域
200 プログラムカウンタ(PC)
201 ステータスレジスタ(SR)
202_0〜202_n 汎用レジスタ(REG#0〜REG#n)
202_n スタックポインタレジスタ(REG#n)
203 システムスタックポインタ(SSP)
INT 割込み信号
USSTC ユーザ用スタック領域
PVSTC 特権用スタック領域
SVSTC ハードウェア退避用スタック領域
230 ハードウェア制御ロジック部(HWL)
206 サブ割込みマスクレジスタ(SIMASK)
IMASK 割り込みマスクデータ
SI 選択制御ビット
214 セレクタ
2,2A,2B,2C、2D CPU(中央処理装置)
4 割込みコントローラ(INTC)
3 メモリ(MRY)
5 バス
20 レジスタセット
21 命令フェッチ部(IF)
22 命令デコーダ(ID)
23 シーケンサ(SEQ)
24 実行部(EX)
25 メモリ管理ユニット(MMU)
30 スタック領域
200 プログラムカウンタ(PC)
201 ステータスレジスタ(SR)
202_0〜202_n 汎用レジスタ(REG#0〜REG#n)
202_n スタックポインタレジスタ(REG#n)
203 システムスタックポインタ(SSP)
INT 割込み信号
USSTC ユーザ用スタック領域
PVSTC 特権用スタック領域
SVSTC ハードウェア退避用スタック領域
230 ハードウェア制御ロジック部(HWL)
206 サブ割込みマスクレジスタ(SIMASK)
IMASK 割り込みマスクデータ
SI 選択制御ビット
214 セレクタ
Claims (26)
- メモリの記憶領域に割当てられスタックポインタレジスタの値に基づいて操作されるスタック領域を用いてデータ処理を行なうCPUを備えたデータプロセッサであって、
前記CPUは、動作モードに応じてメモリの記憶領域に対する記憶保護を行う記憶保護部と、
前記スタックポインタレジスタとは別のレジスタであって、所定のコンテキストの退避を行うときに利用されるシステムスタックポインタレジスタと、
割込みが受け付けられたとき前記システムスタックポインタレジスタを操作して所定のコンテキストの退避を制御すると共に、受け付けられた割り込みによる処理が終了されたとき前記システムスタックポインタレジスタを操作して前記退避されている前記所定のコンテキストの復帰を制御するハードウェア制御ロジック部と、を有し、
前記ハードウェア制御ロジック部は、前記動作モードにかかわらず前記記憶保護部が保護する領域を退避領域とするように前記システムスタックポインタレジスタを操作する、データプロセッサ。 - 前記動作モードは特権モード及びユーザモードであり、
前記記憶保護部が保護する領域は前記CPUが前記特権モードでアクセスする領域および前記ハードウェア制御ロジック部が操作する領域である、請求項1記載のデータプロセッサ。 - 前記所定のコンテキストは、プログラムカウンタ及びステータスレジスタが保持する情報を含む、請求項2記載のデータプロセッサ。
- 前記CPUは割り込みを受け付けたとき前記所定のコンテキスト以外のコンテキストを前記スタックポインタレジスタを用いて前記特権モードでスタック領域に退避する、請求項3記載のデータプロセッサ。
- 前記スタックポインタレジスタは前記CPUが有する汎用レジスタの中の一つのレジスタに割当てられる兼用レジスタであり、
前記システムスタックポインタレジスタはCPUが有する専用レジスタである、請求項4記載のデータプロセッサ。 - 前記システムスタックポインタレジスタを複数個有し、前記制御ロジックは複数個のシステムスタックポインタレジスタの中の一つを選択して使用する、請求項1記載のデータプロセッサ。
- 前記CPUは、割込みの実行を管理するために割込みレベルデータが格納される割込みマスクレジスタと、
所要の割込みレベルデータが書き込まれるサブ割込みマスクレジスタと、
前記割込みマスクレジスタ及び前記サブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタと、を有し、
前記CPUが実行する命令セットは前記選択制御レジスタを操作する専用命令を含む、請求項1記載のデータプロセッサ。 - 前記ハードウェア制御ロジック部は、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前記割り込みマスクレジスタに書き込む処理を行なう、請求項7記載のデータプロセッサ。
- 前記CPUは、前記選択制御レジスタが保持する選択制御データが第1の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、
前記選択制御レジスタが保持する選択制御データが第2の値であるときは前記サブ割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理する、請求項8記載のデータプロセッサ。 - 前記選択制御データは1ビットのデータである、請求項9記載のデータプロセッサ。
- 前記サブ割込みマスクレジスタには、OSの管理下にあるプログラムが処理する割込みの割込みレベルとOSの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される、請求項10記載のデータプロセッサ。
- 前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである、請求項11記載のデータプロセッサ。
- 前記CPUは、前記選択制御レジスタが保持する選択制御データが第1の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、
前記選択制御レジスタが保持する選択制御データが第2の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルと前記サブ割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルとのうちで優先レベルが高い方の割込みレベルデータを用いて割込みの実行を管理する、請求項8記載のデータプロセッサ。 - 前記選択制御データは1ビットのデータである、請求項13記載のデータプロセッサ。
- 前記サブ割込みマスクレジスタには、OSの管理下にあるプログラムが処理する割込みの割込みレベルとOSの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される、請求項14記載のデータプロセッサ。
- 前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである、請求項15記載のデータプロセッサ。
- 命令セットで規定される命令を実行してデータ処理を行なうCPUを備えたデータプロセッサであって、
前記CPUは、割込みの実行を管理するために割込みレベルデータが格納される割込みマスクレジスタと、
所要の割込み優先レベルデータが書き込まれるサブ割込みマスクレジスタと、
前記割込みマスクレジスタ及び前記サブ割込みマスクレジスタの中から所要の割込みレベルデータの選択を指示する選択制御レジスタと、を有し、
前記命令セットは、前記選択制御レジスタを操作する専用命令を含む、データプロセッサ。 - 前記CPUは更に、割り込みが受け付けられたとき当該受け付けられた割り込みの割込みレベルを前記割り込みマスクレジスタに書き込む処理を行なうハードウェア制御ロジック部を有する、請求項17記載のデータプロセッサ。
- 前記CPUは、前記選択制御レジスタが保持する選択制御データが第1の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、
前記選択制御レジスタが保持する選択制御データが第2の値であるときは前記サブ割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理する、請求項18記載のデータプロセッサ。 - 前記選択制御データは1ビットのデータである、請求項19記載のデータプロセッサ。
- サブ割込みマスクレジスタには、OSの管理下にあるプログラムが処理する割込みの割込みレベルとOSの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される、請求項20記載のデータプロセッサ。
- 前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである、請求項21記載のデータプロセッサ。
- 前記CPUは、前記選択制御レジスタが保持する選択制御データが第1の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータを用いて割込みの実行を管理し、
前記選択制御レジスタが保持する選択制御データが第2の値であるときは前記割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルと前記サブ割込みマスクレジスタが保持する割込みレベルデータによる割込みレベルとのうちで優先レベルが高い方の割込みレベルデータを用いて割込みの実行を管理する、請求項18記載のデータプロセッサ。 - 前記選択制御データは1ビットのデータである、請求項23記載のデータプロセッサ。
- サブ割込みマスクレジスタには、OSの管理下にあるプログラムが処理する割込みの割込みレベルとOSの管理下にないプログラムが処理する割込みの割込みレベルとの境界のレベルを示す割り込みレベルデータが設定される、請求項24記載のデータプロセッサ。
- 前記割込みマスクレジスタ及び選択制御レジスタの夫々はステータスレジスタの特定ビットが割当てられたレジスタである、請求項25記載のデータプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009219016A JP2011070290A (ja) | 2009-09-24 | 2009-09-24 | データプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009219016A JP2011070290A (ja) | 2009-09-24 | 2009-09-24 | データプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011070290A true JP2011070290A (ja) | 2011-04-07 |
Family
ID=44015542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009219016A Withdrawn JP2011070290A (ja) | 2009-09-24 | 2009-09-24 | データプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011070290A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2489790A (en) * | 2011-03-28 | 2012-10-10 | Ibm | Dual trust architecture |
JP2015506525A (ja) * | 2012-02-08 | 2015-03-02 | エイアールエム リミテッド | セキュアドメインおよび低セキュアドメインを有するデータ処理装置の例外処理 |
WO2017002939A1 (ja) * | 2015-07-01 | 2017-01-05 | 日立オートモティブシステムズ株式会社 | 電子制御装置及びスタック使用方法 |
-
2009
- 2009-09-24 JP JP2009219016A patent/JP2011070290A/ja not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2489790A (en) * | 2011-03-28 | 2012-10-10 | Ibm | Dual trust architecture |
US8495754B2 (en) | 2011-03-28 | 2013-07-23 | International Business Machines Corporation | Dual trust architecture |
GB2489790B (en) * | 2011-03-28 | 2014-01-08 | Ibm | Dual trust architecture |
US8984659B2 (en) | 2011-03-28 | 2015-03-17 | International Business Machines Corporation | Dual trust architecture |
JP2015506525A (ja) * | 2012-02-08 | 2015-03-02 | エイアールエム リミテッド | セキュアドメインおよび低セキュアドメインを有するデータ処理装置の例外処理 |
WO2017002939A1 (ja) * | 2015-07-01 | 2017-01-05 | 日立オートモティブシステムズ株式会社 | 電子制御装置及びスタック使用方法 |
JP2017016409A (ja) * | 2015-07-01 | 2017-01-19 | 日立オートモティブシステムズ株式会社 | 電子制御装置及びスタック使用方法 |
US20180173559A1 (en) * | 2015-07-01 | 2018-06-21 | Hitachi Automotive Systems, Ltd. | Electronic Control Device and Stack Usage Method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI769595B (zh) | 用以保護影子堆疊之處理器、方法、系統和指令 | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
US10671391B2 (en) | Modeless instruction execution with 64/32-bit addressing | |
KR101673990B1 (ko) | 프로그램가능 예외 처리 지연 | |
US7386646B2 (en) | System and method for interrupt distribution in a multithread processor | |
JP5323828B2 (ja) | 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路 | |
US9465750B2 (en) | Memory protection circuit, method and processing unit utilizing memory access information register to selectively allow access to memory areas by virtual machines | |
US8726292B2 (en) | System and method for communication in a multithread processor | |
US9286091B2 (en) | Semiconductor device improving performance of virtual machines | |
US7529917B2 (en) | Method and apparatus for interrupt handling during loop processing in reconfigurable coarse grained array | |
KR102309327B1 (ko) | 인터럽트들의 세트들을 구성하는 장치 및 방법 | |
CN104978284B (zh) | 处理器子程序高速缓冲存储器 | |
US9043806B2 (en) | Information processing device and task switching method | |
US20060225139A1 (en) | Semiconductor integrated circuit | |
JP2007133456A (ja) | 半導体装置 | |
JP2011086298A (ja) | プログラム・フロー制御 | |
US20210073144A1 (en) | Processing method and apparatus for translation lookaside buffer flush instruction | |
KR20210110598A (ko) | 추론적 실행을 위한 보안 예측기 | |
JPWO2007114059A1 (ja) | データ処理装置 | |
US20120194527A1 (en) | Method for Preempting Graphics Tasks to Accommodate Compute Tasks in an Accelerated Processing Device (APD) | |
JP2006092042A (ja) | 情報処理装置及びコンテキスト切り替え方法 | |
JP2011070290A (ja) | データプロセッサ | |
WO2019133172A1 (en) | Processor, method, and system for reducing latency in accessing remote registers | |
US11126435B2 (en) | Branch destination prediction based on accord or discord of previous load data from a data cache line corresponding to a load instruction and present load data | |
US9329893B2 (en) | Method for resuming an APD wavefront in which a subset of elements have faulted |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20121204 |