(57)【要約】【課題】機能ユニットの制御情報などを格納するシステムレジスタに対するアプリケーションプログラムによる不正なアクセスを防止する。【解決手段】プロセッサシステム１は、ＣＰＵコア１０、ＣＰＵコア１０に接続される機能ユニット１１Ａ及びＢ、並びに、ＣＰＵコア１０及び機能ユニット１１Ａ及びＢの制御情報及び動作状態を格納するシステムレジスタバンク１２を備える。システムレジスタバンク１２は、それぞれが１又は複数のシステムレジスタを含む複数のバンクＢＫ１乃至ＢＫ４に分割されている。さらに、バンクＢＫ４は、ＣＰＵコア１０で実行されるアプリケーションプログラムによるアクセスが許可されるユーザバンクであり、バンクＢＫ４を除く他のバンクＢＫ１乃至ＢＫ３に対するアプリケーションプログラムによるアクセスが禁止される。【選択図】図１
2008015720.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵコアと、
前記ＣＰＵコアに接続される機能ユニットと、
前記機能ユニットの制御情報及び動作状態の少なくとも一方を格納するシステムレジスタ群とを備え、
前記システムレジスタ群は、それぞれが１又は複数のシステムレジスタを含む複数のレジスタバンクに分割されているプロセッサシステムであって、
前記複数のレジスタバンクの少なくとも１つは、前記ＣＰＵコアで実行されるアプリケーションプログラムによるアクセスが許可されるユーザバンクであり、
前記ユーザバンクを除く他の非ユーザバンクに対する前記アプリケーションプログラムによるアクセスが禁止されるプロセッサシステム。
【請求項２】
前記ＣＰＵコアで実行されるオペレーティングシステムプログラムは、前記複数のレジスタバンクのすべてにアクセス可能である、請求項１に記載のプロセッサシステム。
【請求項３】
前記ユーザバンクに含まれるシステムレジスタは、前記非ユーザバンクに含まれるシステムレジスタのいずれかと対応付けられ、前記非ユーザバンクと独立した物理的なレジスタ資源として存在していないことを特徴とする、請求項１に記載のプロセッサシステム。
【請求項４】
前記レジスタバンクの各々を一意に識別可能なバンク識別情報を保持可能なバンク選択部と、
前記バンク識別情報、及び前記ＣＰＵコアが出力するシステムレジスタへのアクセス要求に含まれるレジスタ指定情報に基づいて、アクセス先システムレジスタを選択するデコーダを備える、請求項１又は２に記載のプロセッサシステム。
【請求項５】
前記非ユーザバンクに含まれる少なくとも1つのシステムレジスタは、前記バンク選択部によって保持される前記バンク識別情報が前記非ユーザバンクを示す場合及び前記ユーザバンクを示す場合の両方の場合に、前記デコーダにより選択される、請求項４に記載のプロセッサシステム。
【請求項６】
前記ユーザバンクに含まれるシステムレジスタは、前記デコーダによって前記非ユーザバンクに含まれるシステムレジスタのいずれかと対応付けられ、
前記ユーザバンクに含まれるシステムレジスタは、前記非ユーザバンクと独立した物理的なレジスタ資源として存在しないことを特徴とする、請求項４に記載のプロセッサシステム。
【請求項７】
前記デコーダは、前記バンク選択部によって保持される前記バンク識別情報が前記ユーザバンクを示す場合に、前記システムレジスタへの１つのアクセス要求に応じて、前記ユーザバンクに含まれるシステムレジスタ及び前記非ユーザバンクに含まれるシステムレジスタを選択する、請求項４に記載のプロセッサシステム。
【請求項８】
前記デコーダがアクセス先システムレジスタを選択するためのデコード論理は、前記ＣＰＵコアで実行されるアプリケーションプログラムの種別に応じて変更可能である、請求項４に記載のプロセッサシステム。
【請求項９】
前記非ユーザバンクが有するシステムレジスタのうち、前記アプリケーションプログラムによるアクセスが許可されるシステムレジスタには、前記ユーザバンクを構成するためのマッピング情報が付加されている、請求項１に記載のプロセッサシステム。
【請求項１０】
前記レジスタバンクの各々を一意に識別可能なバンク識別情報を保持するバンク選択部と、
前記バンク識別情報と、前記ＣＰＵコアが出力するシステムレジスタへのアクセス要求に含まれるレジスタ指定情報と、前記マッピング情報とに基づいて、アクセス先システムレジスタを選択するデコーダを備える、請求項９に記載のプロセッサシステム。
【請求項１１】
前記アプリケーションプログラムに割り当てられた権限レベルに応じて、前記アプリケーションプロラムによる前記ユーザバンクへのアクセス要求を制限するアクセス制御部をさらに備える、請求項１に記載のプロセッサシステム。
【請求項１２】
複数の前記ユーザバンクを備え、
前記アプリケーションプログラムの種別に応じて、前記アプリケーションプログラムがアクセス可能な前記ユーザバンクを切り替える、請求項１に記載のプロセッサシステム。
【請求項１３】
前記機能ユニットは、浮動小数点演算ユニット、乗算・積和演算ユニット、前記ＣＰＵコアによるメモリアクセス要求を制御するメモリ保護ユニット、前記ＣＰＵコアで実行されるプログラムの性能情報を収集するデバッグユニット、シリアルインタフェース、タイマ、及びプログラマブル・カウンタのいずれかである、請求項１乃至１２のいずれかに記載のプロセッサシステム。
【請求項１４】
前記システムレジスタ群は、前記ＣＰＵコア、前記ＣＰＵコアで実行されるプログラム、及び前記機能ユニットに関する状態を保持する、請求項１乃至１２のいずれかに記載のプロセッサシステム。
【請求項１５】
ＣＰＵコア、前記ＣＰＵコアに接続される機能ユニット、並びに、前記機能ユニットの制御情報及び動作状態の少なくとも一方を格納するシステムレジスタ群を備え、前記システムレジスタ群は、それぞれが１又は複数のシステムレジスタを含む複数のレジスタバンクに分割されているプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法であって、
前記ＣＰＵコアで実行されるプログラムの特権レベルを判定し、
前記ＣＰＵコアで実行されるプログラムが、特権レベルのないアプリケーションプログラムである場合には、前記複数のレジスタバンクのうち予めアプリケーションプログラムがアクセス可能な対象として割り当てられたユーザバンクを選択し、
アクセス可能なレジスタバンクの変更権限を前記アプリケーションプログラムに与えない状態で、前記アプリケーションプログラムの実行を開始することを特徴とする処理方法。
【請求項１６】
前記プロセッサシステムは、複数のユーザバンクを備えており、
前記アプリケーションプログラムの種別に応じて、前記アプリケーションプログラムがアクセス可能なユーザバンクを前記複数のユーザバンクから選択することを特徴とする、請求項１５に記載の処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能ユニットの制御情報等を格納するシステムレジスタに対するアクセス制御機構を備えるプロセッサシステムに関する。
【背景技術】
【０００２】
自動車、航空機等の輸送機械や、携帯電話機、交換機等の通信機器に組み込まれ、これらの機械、機器の制御を行うプロセッサシステムは組み込みシステムと呼ばれている。組み込みシステムは、処理時間の向上、リアルタイム性の確保、プログラムのソフトウェア部品化による生産性向上等を実現するため、一般にマルチプログラミング環境を備えている。マルチプログラミング環境とは、複数のアプリケーションプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するアプリケーションプログラムを切り替えたりすることによって、複数のアプリケーションプログラムがあたかも並列実行されているような環境を意味する。このようなマルチプログラミング環境は、ＣＰＵと、ＣＰＵで実行されるアプリケーションプログラムのスケジューリングを担うプログラムであるオペレーティングシステムプログラム（ＯＳ：Operating System Program）によって実現される。
【０００３】
上述した組み込みシステム等のプロセッサシステムは、ＣＰＵ（Central Processing Unit）コアに様々な機能ユニットが結合された構成を有している。従来のプロセッサシステムの概略構成を図１３に示す。
【０００４】
ＣＰＵコアは、命令をフェッチして実行する処理ユニットであり、命令フェッチユニット、フェッチされた命令をデコードして実行する整数演算ユニット、汎用レジスタファイル、並びに、後述する機能ユニットとのインタフェース等を備える。ここで、汎用レジスタファイルは、複数の汎用レジスタの集合である。汎用レジスタは、アプリケーションプログラムが汎用的に用いることができるレジスタであり、整数演算ユニット等のオペランドや演算結果を一時的に保持するアキュムレータ、あるいはメモリアクセス時のアドレス指定を行うためのアドレスレジスタとして使用される。
【０００５】
機能ユニットは、ＣＰＵコアに接続され、ＣＰＵコアに対して各種機能を提供するものである。具体的には、浮動小数点演算ユニット（ＦＰＵ）及び乗算・積和演算ユニット（ＭＡＣ）等のコプロセッサ、メモリ保護ユニット（ＭＰＵ）及びデバッグユニット等のＣＰＵコアと密接に結合した機能を提供するユニット、並びに、シリアルインタフェース、タイマ、プログラマブル・カウンタ等の周辺装置が機能ユニットに相当する。
【０００６】
システムレジスタ群は、ＣＰＵコア、機能ユニット、及びＣＰＵコアで実行されるプログラムに関する各種の状態の保持、並びに、ＣＰＵコア及び機能ユニットを特定の動作モードに設定するためのＣＰＵコア及び機能ユニットの制御情報の保持といった特定の用途に使用されるシステムレジスタの集合である。システムレジスタの具体例は、（１）ＣＰＵコアで実行されるプログラムの状態を保持するＰＳＷ（Program Status Word）レジスタ、（２）整数演算ユニットやＦＰＵにおけるオーバーフロー、アンダーフロー、ゼロ除算等の発生を示すステータスレジスタ、（３）ＣＰＵコアの動作モード、ＤＲＡＭ及びＳＤＲＡＭ等のリフレッシュレート、並びに、ＦＰＵ、メモリ保護ユニット、デバッグユニット、メモリコントローラ、割り込みコントローラ、シリアル通信ポート、タイマ、及びプログラマブル・カウンタ等の機能ユニットに対する動作設定や動作状況の読み出しに用いるコントロールレジスタ、などである。
【０００７】
上述したように、ＣＰＵコア及び機能ユニットの制御や動作状態の取得のために用いられるシステムレジスタには様々な情報が格納される。このため、システムレジスタの中には、アプリケーションプログラムによるアクセスを許可すべきものと禁止すべきものが混在している。しかしながら、従来のプロセッサシステム、特に組み込みシステムは、固定された種類のアプリケーションプログラムを実行する目的で使用されることが多く、新たなアプリケーションプログラムを柔軟に追加する機構を持っていないため、アプリケーションプログラムによるシステムレジスタへのアクセスを制限する機構、つまり、アプリケーションプログラムからシステムレジスタを保護する機構は重要視されていなかった。
【０００８】
しかし、最近では新たなプログラムをダウンロードして実行することが可能な携帯電話機など、信頼性が保証されていないアプリケーションプログラムを実行する組み込みシステムが登場している。このようなプロセッサシステムでは、アプリケーションプログラムから保護されるべきシステムレジスタが、信頼性の保証されていないアプリケーションプログラムによってアクセスされてしまう危険性がある。
【特許文献１】特開平５−１６５６３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述したように、従来のプロセッサシステムは、アプリケーションプログラムによるアクセスを許可すべきシステムレジスタ及び禁止すべきシステムレジスタが混在しているため、システムレジスタの保護が不十分であるという問題がある。
【００１０】
なお、特許文献１には、複数のレジスタバンクの各々に制御レジスタを設けることとし、複数のレジスタバンクのいずれかをイネーブルとする際に、まず、イネーブルとするレジスタバンクが備えている制御レジスタにアクセスを行うこととしたマイクロコンピュータが記載されている。つまり、制御レジスタへのアクセスを契機として、レジスタバンクの切り替えを行うものである。しかしながら、特許文献１は、アプリケーションプログラムからシステムレジスタを保護する機構については何ら開示していない。
【００１１】
また、例えば、ＡＲＭプロセッサでは、１６本の汎用レジスタについてレジスタバンク構成を採用し、１のレジスタバンクはアプリケーションプログラムによって使用可能であり、他のレジスタバンクは、ＯＳなどの特権レベルのプログラムによってのみ使用可能としている。例えば、割り込み発生時のレジスタ退避・回復処理を回避するために、割り込みハンドラプログラムのみがアクセス可能なレジスタを設けている。このように、ＡＲＭプロセッサは、汎用レジスタにレジスタバンク構成を用いるアーキテクチャを有するが、レジスタバンク構成によってアプリケーションプログラムからシステムレジスタを保護するための機構については開示していない。
【課題を解決するための手段】
【００１２】
本発明にかかるプロセッサシステムは、ＣＰＵコアと、前記ＣＰＵコアに接続される機能ユニットと、前記機能ユニットの制御情報及び動作状態の少なくとも一方を格納するシステムレジスタ群とを備えるプロセッサシステムである。さらに、前記システムレジスタ群は、それぞれが１又は複数のシステムレジスタを含む複数のレジスタバンクに分割されており、前記複数のレジスタバンクの少なくとも１つは、前記ＣＰＵコアで実行されるアプリケーションプログラムによるアクセスが許可されるユーザバンクであり、前記ユーザバンクを除く他の非ユーザバンクに対する前記アプリケーションプログラムによるアクセスが禁止されるものである。
【００１３】
このような構成により、アプリケーションプログラムによるアクセスが許可されるシステムレジスタとアクセスが禁止されるシステムレジスタとを別々のバンクに分離し、アプリケーションプログラムによるシステムレジスタへのアクセス要求をバンク単位で制限することができる。これにより、アプリケーションプログラムによるシステムレジスタへの不正なアクセスを防止し、アプリケーションプログラムによるアクセスを禁止すべきシステムレジスタを確実に保護することができる。
【００１４】
本発明にかかる方法は、ＣＰＵコア、前記ＣＰＵコアに接続される機能ユニット、並びに、前記機能ユニットの制御情報及び動作状態の少なくとも一方を格納するシステムレジスタ群を備え、前記システムレジスタ群は、それぞれが１又は複数のシステムレジスタを含む複数のレジスタバンクに分割されているプロセッサシステムを動作させるためのオペレーティングシステムプログラムの処理方法である。具体的には、まず、前記ＣＰＵコアで実行されるプログラムの特権レベルを判定する。次に、前記ＣＰＵコアで実行されるプログラムが、特権レベルのないアプリケーションプログラムである場合には、前記複数のレジスタバンクのうち予めアプリケーションプログラムがアクセス可能な対象として割てられたユーザバンクを選択する。続いて、前記選択したレジスタバンクの変更権限を前記アプリケーションプログラムに与えない状態で、前記アプリケーションプログラムの実行を開始する。
【００１５】
このような方法によって、アプリケーションプログラムによるシステムレジスタへのアクセス要求をバンク単位で制限することができる。これにより、アプリケーションプログラムによるシステムレジスタへの不正なアクセスを防止し、アプリケーションプログラムによるアクセスを禁止すべきシステムレジスタを確実に保護することができる。
【発明の効果】
【００１６】
本発明により、アプリケーションプログラムによるシステムレジスタへの不正なアクセスを防止することが可能なプロセッサシステム、及び、プロセッサシステムを動作させるためのオペレーティングシステムプログラムの処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１７】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１８】
発明の実施の形態１．
本実施の形態にかかるプロセッサシステム１の構成を図１に示す。始めに、図１を参照して、プロセッサシステム１が備える構成要素を説明する。図１において、ＣＰＵコア１０は、命令をフェッチしてこれをデコードし、命令に応じた処理、例えば、算術演算及び論理演算等の演算処理、機能ユニットへの命令発行、後述するシステムレジスタバンク１２に含まれるシステムレジスタへのアクセスを実行する処理ユニットである。
【００１９】
機能ユニット１１Ａ及びＢは、ＣＰＵコアに接続され、ＣＰＵコアに対して各種機能を提供するものである。上述したように、機能ユニットとは、ＦＰＵ等のコプロセッサ、メモリ保護ユニット（ＭＰＵ）、及びデバッグユニット等である。
【００２０】
システムレジスタバンク１２は、システムレジスタ群を複数のバンクに分割したものである。１つのバンクは、１又は複数のシステムレジスタを備えている。図１には、システムレジスタバンク１２が４つのバンクＢＫ１乃至ＢＫ４を備えており、各バンクが３２個のレジスタを備える構成を示している。各システムレジスタには、ＣＰＵコア、機能ユニット、及びＣＰＵコアで実行されるプログラムに関する各種の状態、並びに、ＣＰＵコア及び機能ユニットを特定の動作モードに設定するためのＣＰＵコア及び機能ユニットの制御情報等が保持される。
【００２１】
バンク選択ユニット１３は、バンクＢＫ１乃至ＢＫ４のうち現在選択されているバンクを示すバンク選択信号ＢＳＳを出力する。具体的には、現在選択されているバンクの識別情報が格納されるバンク選択レジスタ（ＢＳＲ）１３１をバンク選択ユニット１３に設け、バンク選択レジスタ１３１に格納された識別情報をバンク選択信号ＢＳＳによって出力する。なお、詳細は後述するが、プロセッサシステム１は、ＣＰＵコア１０で実行されるアプリケーションプログラムがアクセス可能なバンクを特定のバンクに制限している。このため、バンク選択レジスタ１３１に対する書き込みは、特権レベルのプログラム、具体的にはＯＳによって可能とし、非特権プログラムであるアプリケーションプログラムの要求に基づくバンク選択レジスタ１３１への書き込みは禁止される。
【００２２】
デコーダ１２１乃至１２４は、ＣＰＵコア１０が出力するシステムレジスタへのアクセス要求及びバンク選択ユニット１３が出力するバンク選択信号ＢＳＳを入力する。さらに、デコーダ１２１乃至１２４は、アクセス要求に含まれるアクセス先レジスタ番号とバンク選択信号ＢＳＳに含まれるバンク識別情報の組合せにより、所定のシステムレジスタを選択する。例えば、バンク選択レジスタ１３１にバンクＢＫ４の識別情報が設定されており、かつ、ＣＰＵコア１０によるシステムレジスタへのアクセス要求がレジスタ番号"１"を示す場合には、デコーダ１２４によってレジスタＳＲ４＿１がアクセス先に選択される。
【００２３】
システムレジスタバス１４は、ＣＰＵコア１０からシステムレジスタバンク１２へのアクセス要求が転送されるバスである。命令バス１５は、ＣＰＵコア１０から機能ユニット１１Ａ及びＢへの命令転送に使用される命令バスである。また、データバス１６は、ＣＰＵコア１０と機能ユニット１１Ａ及び１１Ｂの間でのデータ転送に使用されるパスである。
【００２４】
続いて、以下では、アプリケーションプログラムによるシステムレジスタへのアクセスを制限するための機構について詳しく説明する。プロセッサシステム１は、システムレジスタバンク１２に含まれる少なくとも１つのバンクを、アプリケーションプログラムによるアクセスが許可されるバンクと定義しており、ＣＰＵコア１０がアプリケーションプログラムを実行するときは、当該バンクが選択されることを特徴としている。以下では、アプリケーションプログラムによるアクセスが許可されるバンクを"ユーザバンク"と呼ぶ。
【００２５】
図１に示す構成では、バンクＢＫ４をユーザバンクとしている。なお、バンクＢＫ１は、ＣＰＵコア１０及びＣＰＵコア１０で実行されるプログラムの状態及び制御情報を保持するためのシステムレジスタ群である。バンクＢＫ２は、機能ユニット１１Ａの状態及び制御情報を保持するためのシステムレジスタ群である。また、バンクＢＫ３は、機能ユニット１１Ｂの状態及び制御情報を保持するためのシステムレジスタ群である。バンクＢＫ４には、他のバンクＢＫ１乃至ＢＫ３に含まれる複数のシステムレジスタのうち、アプリケーションプログラムの実行に必要なシステムレジスタが対応付けられている。以下では、ユーザバンク（ＢＫ４）のシステムレジスタと他のバンク（ＢＫ１乃至ＢＫ３）のシステムレジスタを対応付けることを"マッピング"と呼ぶ。
【００２６】
マッピングの一例を図２に示す。図２では、バンクＢＫ１のレジスタＳＲ１＿２をユーザバンクＢＫ４のレジスタＳＲ４＿１にマッピングし、レジスタＳＲ１＿３をユーザバンクＢＫ４のレジスタＳＲ４＿２にマッピングしている。また、バンクＢＫ２のレジスタＳＲ２＿３をユーザバンクＢＫ４のレジスタＳＲ４＿３にマッピングし、バンクＢＫ３のレジスタＳＲ３＿１をユーザバンクＢＫ４のレジスタＳＲ４＿３２にマッピングしている。なお、図２に示すように、１つのシステムレジスタの格納情報をユーザバンクＢＫ４の１つのレジスタにマッピングするだけでなく、１つのシステムレジスタのビットの一部をユーザバンクＢＫ４のレジスタにマッピングしてもよい。また、複数のシステムレジスタに含まれるビットを、ユーザバンクＢＫ４の１つのレジスタにマッピングしてもよい。
【００２７】
図２に示すようなマッピングは、デコーダ１２１乃至１２４のデコード論理によって実現できる。具体的には、システムレジスタに書き込みを行う場合に、その書き込み要求に応じて、マッピングにより対応付けられたシステムレジスタに対して同時に書き込みを行えばよい。例えば、バンクＢＫ４が選択されている時に、レジスタ番号"１"のレジスタに書き込み要求があった場合には、当該書き込み要求に応じて、デコーダ１２４がレジスタＳＲ４＿１を選択するとともに、デコーダ１２１がレジスタＳＲ１＿２を選択するよう、デコーダ１２１乃至１２４のデコード論理を決定すればよい。
【００２８】
次に、ユーザバンクＢＫ４が選択される際のプロセッサシステム１の動作を説明する。プロセッサシステム１は、バンク選択レジスタ１３１及びデコーダ１２１乃至１２４によってアクセス可能なレジスタバンクが限定される構成とし、アプリケーションプログラムの実行時にＯＳがユーザバンクＢＫ４を選択することによって、アプリケーションプログラムがアクセス可能なシステムレジスタを制限している。具体的には、図３のフローチャートに示すように、ＯＳがアプリケーションプログラムを起床する際に、ユーザバンクＢＫ４を選択した状態でアプリケーションプログラムの実行を開始する。ステップＳ１１では、実行を開始するアプリケーションプラムのコンテキストを復元するために、ＯＳがコンテキスト切り替え処理を行う。ステップＳ１２では、ＯＳによって、バンク選択レジスタ１３１にユーザバンクＢＫ４の識別情報がセットされる。ステップＳ１３では、ＯＳがアプリケーションプログラムを起床し、アプリケーションプログラムの実行が開始される。
【００２９】
上述したように、本実施の形態にかかるプロセッサシステム１は、システムレジスタ群を複数のバンクに分割し、少なくとも１つのバンクをユーザバンクに設定する。さらに、ユーザバンクを選択した状態でアプリケーションプログラムの実行を行うこととしている。つまり、プロセッサシステム１は、アプリケーションプログラムによるアクセスが許可されるシステムレジスタとアクセスが禁止されるシステムレジスタとを別々のバンクに分離し、アプリケーションプログラムによるシステムレジスタへのアクセス要求をバンク単位で制限している。このような構成により、ユーザバンク以外のバンクをアプリケーションプログラムに対して隠蔽することができるため、アプリケーションプログラムによるシステムレジスタへの不正なアクセスを確実に防止することができる。
【００３０】
なお、１つのアプリケーションプログラムによってアクセスされるシステムレジスタは、１つのユーザバンクにマッピングすることが望ましい。これにより、アプリケーションプログラムの実行中はバンク切り替えが不要となるため、バンク切り替え処理にかかるオーバヘッドを削減できる。図４を用いて具体例を説明する。図４（ａ）は、ユーザバンクを設けずに、システムレジスタＳＲ１＿２、ＳＲ２＿３、ＳＲ３＿１の順にアクセス要求が発生する場合の処理を示している。一方、図４（ｂ）は、ユーザバンクＢＫ４を備えるプロセッサシステム１の処理を示している。図４（ａ）の場合、３つのシステムレジスタは異なるバンクに属するため、アクセス要求の都度バンク切り替えを実行する必要がある。このような処理は、アプリケーションプログラムに対するシステムレジスタの保護が不十分であるだけでなく、バンク切り替えの頻発によるオーバヘッドが大きくなる。これに対して図４（ｂ）の場合は、バンク切り替えが不要であるため、バンク切り替えによるオーバヘッドを抑制することができる。
【００３１】
また、１つのアプリケーションプログラムにアクセスされるシステムレジスタを、１つのユーザバンクにマッピングしておけば、アプリケーションプログラムの開発者はバンクの存在を意識してプログラミングを行う必要がないため、プログラム開発の負担を軽減できる利点がある。
【００３２】
また、本実施の形態のプロセッサシステム１は、ユーザバンク内のシステムレジスタと他のバンクのシステムレジスタとのマッピングをデコーダ１２１乃至１２４のデコード論理によって設定しているが、これらマッピング情報を変更可能とする構成も可能である。これにより、システムレジスタのマッピングの変更、つまり、アプリケーションプログラムに開示するシステムレジスタの変更を、プロセッサシステム１のハードウェアの変更を伴わずに容易に実現できる。具体的な実現方法の例としては、ユーザバンク内のシステムレジスタと他のバンクのシステムレジスタとのマッピング情報をメモリ（不図示）に格納しておき、デコーダ１２１乃至１２４はメモリ内に格納されたマッピング情報に従ってシステムレジスタを選択すればよい。マッピング情報を格納するためのメモリにＲＡＭを使用することで、動的にマッピングの変更を行うことも可能である。このような構成は、アプリケーションプログラムを特定しない汎用プロセッサシステム等の応用に有効である。
【００３３】
発明の実施の形態２．
本実施の形態にかかるプロセッサシステム２の構成を図５に示す。プロセッサシステム２は、ユーザバンクを他のバンクから独立した物理的なレジスタ群として設けず、デコーダ２２１乃至２２３のデコード論理によって仮想的に実現したことを特徴としている。一例として、仮想化されたユーザバンクＢＫ４と他のバンクＢＫ１乃至ＢＫ３との間で、図２に示したのと同じマッピング関係を持たせる場合を考える。バンクＢＫ１のデコーダ２２１は、バンク選択レジスタ１３１によってバンクＢＫ１が選択された状態で、ＣＰＵコア１０からレジスタ番号"１"のレジスタにアクセス要求があった場合は、レジスタＳＲ１＿１を選択する。一方、ユーザバンクＢＫ４が選択された状態で、ＣＰＵコア１０からレジスタ番号"１"のレジスタにアクセス要求があった場合は、仮想化されたレジスタＳＲ４＿１にマッピングされたレジスタＳＲ１＿２を選択する。同様に、バンク選択レジスタ１３１によってユーザバンクＢＫ４が選択された状態で、レジスタ番号"２"にアクセス要求があった場合、仮想化されたレジスタＳＲ４＿２にマッピングされたレジスタＳＲ１＿３がデコーダ２２１によって選択される。また、ユーザバンクＢＫ４が選択された状態でレジスタ番号"３"にアクセス要求があった場合、仮想化されたレジスタＳＲ４＿３に対応するレジスタＳＲ２＿３がデコーダ２２２によって選択される。
【００３４】
なお、このようなデコーダ２２１乃至２２３の動作は、図２に示すマッピングの実現手法として説明した発明の実施の形態１にかかるデコーダ１２１乃至１２４の動作と同様である。上述したように、ＯＳによって選択されたバンクの識別情報に基づいて、アクセス要求に反応すべきシステムレジスタをデコーダ２２１乃至２２３が選択する構成を採用することにより、ユーザバンクＢＫ４を物理的に独立したレジスタ資源として設ける必要はなく、これを仮想化することができる。これにより、システムレジスタバンク２２の冗長性を排除し、ユーザバンクとして割り当てる物理的なレジスタ資源を削減することができる。
【００３５】
発明の実施の形態３．
本実施の形態にかかるプロセッサシステム３は、アプリケーションプログラムによるユーザバンクへのアクセス要求を一律に許可するのではなく、プログラムに割り当てられた特権レベルに応じて特定種別のアクセス要求を禁止することを特徴としている。なお、以下で述べる特定種別のアクセス要求は、具体的にはライトアクセス要求である。
【００３６】
プロセッサシステム３の構成を図６に示す。プロセッサシステム３と発明の実施の形態１にかかるプロセッサシステム１の構成上の相違点は、特権ビット格納部３５及びアクセス制御部３６である。特権ビット格納部３５は、システムレジスタバンク１２へのライトアクセスが可能であるか否かを示す特権ビットを格納する。つまり、特権ビットは、アプリケーションログラムに割り当てられた権限レベルを示す権限情報に相当し、特権ビット格納部３５は、権限情報格納部に相当する。
【００３７】
例えば、特権ビットを１ビットデータとし、ライトアクセスが許可される特権レベルを値"１"とし、ライトアクセスが禁止される非特権レベルを値"０"とすれば良い。特権ビット格納部３５の値は、ＣＰＵコア３０で実行されるＯＳによって書き換え可能であり、アプリケーションプログラムによる書き換えは禁止する。
【００３８】
アクセス制御部３６は、システムレジスタへのアクセス要求をＣＰＵコア３０から入力し、アクセス要求種別がライトアクセスである場合は、特権ビット格納部３５に格納された値が特権レベルを示す場合に限り、アクセス要求をシステムレジスタバス１４に出力する。アクセス制御部３６の処理を示すフローチャートを図７に示す。ステップＳ２１では、システムレジスタへのアクセス要求がＣＰＵコア３０から入力される。アクセス制御部３６は、入力されたアクセス要求がリードアクセス要求である場合は、当該アクセス要求をシステムレジスタバス１４に出力する（ステップＳ２２及び２４）。ステップＳ２１で入力されたアクセス要求がライトアクセス要求である場合は、特権ビット格納部３５を参照し、特権レベルを示す値が設定されていれば、入力されたライトアクセス要求をシステムレジスタバス１４に出力する（ステップＳ２２乃至Ｓ２４）。一方、特権ビット格納部３５に特権レベルを示す値が設定されていない場合は、入力されたライトアクセス要求を拒絶する（ステップＳ２５）。
【００３９】
上記の構成において、アプリケーションプログラムの実行時には、特権ビット格納部３５に非特権レベルを示す値（例えばゼロ）を格納することにより、アプリケーションプログラムによるシステムレジスタへのリードアクセス要求を許可し、ライトアクセス要求を禁止することができる。なお、上述したアクセス制御部３６による可否判定は、ユーザバンクＢＫ４に含まれるレジスタ単位で行ってもよい。
【００４０】
本実施の形態にかかるプロセッサシステム３の別の構成例を図８に示す。図８のプロセッサシステム４は、アクセス制御部３６の機能をデコーダ３２１乃至３２３のデコード論理によって実現するものである。具体的には、特権ビット格納部３５の値を示す信号をデコーダ３２１乃至３２３に入力し、デコーダ３２１乃至３２３によるアクセス要求のデコードを、特権ビット格納部３５の値を参照して行う構成としている。デコーダ３２１乃至３２３は、ライトアクセス要求を受信すると、特権ビットが特権レベルを示す場合に限りシステムレジスタを選択する。このように構成されたプロセッサシステム４によっても、非特権レベルのアプリケーションプログラムによるシステムレジスタへのライトアクセスを禁止することができる。
【００４１】
また、上述した特権ビット格納部３５は、システムレジスタの１つとして実現できる。具体的には、ＣＰＵコア３０で実行されるアプリケーションプログラムの特権レベルは、プログラム状態を格納するシステムレジスタ（ＰＳＷレジスタ）に保持されるため、システムレジスタに格納されたアプリケーションプログラムの特権レベルを示す情報を特権ビットとし、これをシステムレジスタへのライトアクセスの可否判定に使用すればよい。
【００４２】
発明の実施の形態４．
本実施の形態にかかるプロセッサシステム５は、複数のユーザバンクを備えており、ＣＰＵコアで実行するアプリケーションプログラムに応じて、アプリケーションプログラムがアクセス可能なユーザバンクを複数のユーザバンクの中から選択することを特徴としている。プロセッサシステム５の構成を図９に示す。プロセッサシステム５と発明の実施の形態１にかかるプロセッサシステム１の構成上の相違点は、システムレジスタバンク４２が２つのユーザバンクＢＫ４及びＢＫ５を備える点である。
【００４３】
アプリケーションプログラムのアクセスが禁止される３つのバンクＢＫ１乃至ＢＫ３と、２つのユーザバンクＢＫ４及びＢＫ５との間のマッピング例を図１０に示す。図１０は、ユーザバンクＢＫ４及びＢＫ５に同一のシステムレジスタがマッピングされる場合を示している。例えば、バンクＢＫ１のレジスタＳＲ１＿１が、ユーザバンクＢＫ４のレジスタＳＲ４＿１及びユーザバンクＢＫ５のレジスタＳＲ５＿１にマッピングされる。なお、図１０のマッピングは一例であり、ユーザバンクＢＫ４とＢＫ５に異なるシステムレジスタを割り当ててもよい。
【００４４】
次に、アプリケーションプログラムに応じてユーザバンクＢＫ４又はＢＫ５を選択する動作を、図１１のフローチャートを参照して説明する。図１１は、アプリケーションプログラムによるシステムレジスタへのノンブロッキングアクセスを認めるか否かに応じて、ＣＰＵコア４０で実行されるオペレーティングシステムプログラム（ＯＳ）がユーザバンクＢＫ４又はＢＫ５を選択する場合を示したものである。ここでは、ユーザバンクＢＫ４をノンブロッキングアクセスが禁止されるアプリケーションプログラム用のユーザバンクとし、ユーザバンクＢＫ５をノンブロッキングアクセスが許可されるアプリケーションプログラム用のユーザバンクとしている。つまり、ユーザバンクＢＫ５には、ノンブロッキングアクセスを認めても良いシステムレジスタがマッピングされている。
【００４５】
まずステップＳ３１では、実行を開始するアプリケーションプラムのコンテキストを復元するために、ＯＳがコンテキスト切り替え処理を行う。次に、ステップＳ３２において、ＯＳは、実行を開始するアプリケーションプログラムがシステムレジスタへのノンブロッキングアクセスが許可されるプログラムであるか否かを判定する。ステップＳ３２において、ノンブロッキングアクセスを認めないアプリケーションプログラムであると判定した場合は、バンク選択レジスタ１３１にユーザバンクＢＫ４の識別情報をセットする（ステップＳ３３）。一方、ステップＳ３２において、ノンブロッキングアクセスを許可するアプリケーションプログラムであると判定した場合は、バンク選択レジスタ１３１にユーザバンクＢＫ５の識別情報をセットする（ステップＳ３４）。ステップＳ３５では、ＯＳがアプリケーションプログラムを起床し、アプリケーションプログラムの実行が開始される。
【００４６】
システムレジスタへのノンブロッキングアクセスを許可する場合と許可しない場合の違いを図１２（ａ）及び（ｂ）により説明する。図１２（ａ）及び（ｂ）のタイミング図は共に、機能ユニット１１Ａ及びＢのいずれかがコプロセッサであると仮定し、コプロセッサで実行される命令ＯＰ１及びシステムレジスタへのリードアクセス命令ＯＰ２が連続して実行される場合のＣＰＵコア４０のパイプライン処理を示している。ただし、図１２（ａ）は、システムレジスタへのノンブロッキングアクセスが禁止される場合を示し、図１２（ｂ）は、ステムレジスタへのノンブロッキングアクセスが許可される場合を示す。
【００４７】
図１２（ａ）では、ノンブロッキングアクセスが禁止されるアプリケーションプログラム用のユーザバンクであるユーザバンクＢＫ４が選択されている。命令フェッチ（ＩＦ）ステージ、命令デコード（ＩＤ）ステージ及び命令実行（ＥＸ）ステージでは、命令ＯＰ１及びＯＰ２が連続して実行される。しかし、命令ＯＰ２によるシステムレジスタ・アクセスは、コプロセッサ実行命令ＯＰ１の完了まで待たされるため、命令ＯＰ２のメモリアクセス（ＭＥＭ）ステージにおいて、時刻ｔ４〜ｔ７の４クロック分だけパイプラインが停止する。したがって、ライトバック（ＷＢ）ステージでの命令ＯＰ２によるシステムレジスタ値の取得は、コプロセッサ実行命令ＯＰ１の完了後の時刻ｔ９に実行される。
【００４８】
一方、図１２（ｂ）では、ノンブロッキングアクセスが許可されるアプリケーションプログラム用のユーザバンクであるユーザバンクＢＫ５が選択されている。この場合は、命令ＯＰ２によるシステムレジスタへのリードアクセスは、コプロセッサ実行命令ＯＰ１の完了を待たずに行われる。このため、命令ＯＰ２によるシステムレジスタの格納値の取得は時刻ｔ５に実行される。
【００４９】
上述したように、複数のユーザバンクを設け、ノンブロッキングアクセスを許可するアプリケーションプログラムの実行時にノンブロッキングアクセス用のユーザバンクを選択することにより、ノンブロッキングアクセス用のユーザバンクに含まれていないシステムレジスタを確実に保護することができる。
【００５０】
なお、システムレジスタへのノンブロキングアクセスを許可するか否か応じて使用するユーザバンクの選択を行う動作は一例である。例えば、複数のユーザバンクに互いに異なるシステムレジスタ群をマッピングしておき、アプリケーションプログラムに応じて使用するユーザバンクを切り替えてもよい。
【００５１】
その他の実施の形態．
上述した発明の実施の形態１乃至４では、独立したバンク選択ユニット１３を設けることとした。しかしながら、バンク選択レジスタ１３１を各バンクのいずれかのシステムレジスタにマッピングする、つまり、バンク選択レジスタ１３１に保持すべきバンク識別情報を、各バンクのシステムレジスタに保持してもよい。この場合は、デコーダ１２１乃至１２４などがシステムレジスタに保持されたバンク識別情報を用いて、アクセス要求のデコードを行えばよい。
【００５２】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００５３】
【図１】発明の実施の形態１にかかるプロセッサシステムの構成図である。
【図２】発明の実施の形態１にかかるプロセッサシステムにおけるユーザバンクへのマッピングの一例を示す図である。
【図３】発明の実施の形態１にかかるプロセッサシステムの動作を示すフローチャートである。
【図４】発明の実施の形態１にかかるプロセッサシステムの効果を説明するための図である。
【図５】発明の実施の形態２にかかるプロセッサシステムの構成図である。
【図６】発明の実施の形態３にかかるプロセッサシステムの構成図である。
【図７】発明の実施の形態３にかかるプロセッサシステムの動作を示すフローチャートである。
【図８】発明の実施の形態３にかかるプロセッサシステムの他の構成例を示す図である。
【図９】発明の実施の形態４にかかるプロセッサシステムの構成図である。
【図１０】発明の実施の形態４にかかるプロセッサシステムが備えるシステムレジスタバンクの構成を示す図である。
【図１１】発明の実施の形態４にかかるプロセッサシステムの動作を示すフローチャートである。
【図１２】発明の実施の形態４にかかるプロセッサシステムの効果を説明するための図である。
【図１３】従来のプロセッサシステムの概略構成を示す図である。
【符号の説明】
【００５４】
１〜５  プロセッサシステム
１０、３０、４０  ＣＰＵ（Central Processing Unit）コア
１１Ａ、１１Ｂ  機能ユニット
１２、２２、３２、４２  システムレジスタバンク
１３  バンク選択ユニット
１３１  バンク選択レジスタ
１４  システムレジスタバス
１５  命令バス
１６  データバス
３５  特権ビット格納部
３６  アクセス制御部
１２１〜１２４、２２１〜２２３、３２１〜３２３、４２１〜４２５  デコーダ
【図１】
2008015720.tif 000003
【図２】
2008015720.tif 000004
【図３】
2008015720.tif 000005
【図４】
2008015720.tif 000006
【図５】
2008015720.tif 000007
【図６】
2008015720.tif 000008
【図７】
2008015720.tif 000009
【図８】
2008015720.tif 000010
【図９】
2008015720.tif 000011
【図１０】
2008015720.tif 000012
【図１１】
2008015720.tif 000013
【図１２】
2008015720.tif 000014
【図１３】
2008015720.tif 000015