(57)【要約】【課題】オーバーヘッドが低減された処理装置を提供すること。【解決手段】複数のコンポーネントから成るソフトウェアを実行するマイコン１００であって、演算部１０と、記憶部２０と、保護部３０とを備えている。保護部３０は、メモリ保護情報が記憶された複数のバンク３３１〜３３ｎと、バンク番号が書き込まれるバンク番号レジスタ３３ａと、バンク番号をバンク番号レジスタ３３ａに書き込むことで有効状態とするバンクを切り替えるバンク切替部３１とを備える。バンク切替部３１は、演算部１０が実行しようとしているコンポーネントを特定し、複数のバンク３３１〜３３ｎのうち特定したコンポーネントに対応するバンクと、特定したコンポーネントとを一対一で対応付ける。そして、バンク切替部３１は、実行されるコンポーネントが切り替わる場合、対応付けられたバンクを示すバンク番号をバンク番号レジスタ３３ａに書き込む（Ｓ１０〜Ｓ４０）。【選択図】図１
2014174758.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンポーネントから成るソフトウェアを実行する処理装置であって、
各コンポーネントに基づいて演算処理を実行する演算部（１０）と、
前記演算部が演算処理するためのデータを記憶する記憶部（２０）と、
前記演算部による前記記憶部へのアクセスを規定することで、前記記憶部を保護する保護部（３０）と、を備え、
前記保護部は、
前記演算部がアクセスする前記記憶部におけるアドレスを示すデータ、及び前記演算部による処理の可否を規定するデータを含むメモリ保護情報が記憶された複数のレジスタからなるバンク（３３１〜３３ｎ）を複数有すると共に、
複数の前記バンクのうち有効状態とする前記バンクを示すバンク番号が書き込まれるバンク番号レジスタ（３３ａ）と、
前記演算部が実行しようとしている前記コンポーネントを特定する特定手段（Ｓ１０）と、
前記特定手段によって特定された前記コンポーネントと、複数の前記バンクにおける前記コンポーネントに対応する前記バンクとを一対一で対応付ける対応付け手段（Ｓ２０）と、
実行される前記コンポーネントが前記特定手段で特定された前記コンポーネントに切り替わる場合、前記対応付け手段で対応付けられた前記バンクを示す前記バンク番号を前記バンク番号レジスタに書き込むことで、有効状態の前記バンクを切り替える切替手段（Ｓ３０，Ｓ４０）と、を有し、
前記切替手段により有効状態となった前記バンクの前記レジスタに記憶された前記メモリ保護情報に従い、前記演算部による前記記憶部へのアクセスを規定することで、前記記憶部を保護することを特徴とする処理装置。
【請求項２】
前記演算部は、プログラムカウンタの値に従って演算処理を実行するものであり、
前記保護部は、前記プログラムカウンタの推移が非連続であった場合にのみ、前記特定手段、前記対応付け手段、前記切替手段を実行することを特徴とする請求項１に記載の処理装置。
【請求項３】
各コンポーネントにおける実行プログラムは、前記記憶部における所定のアドレスに記憶されており、
前記特定手段は、前記記憶部に記憶されている各コンポーネントにおける実行プログラムのアドレス範囲を示す情報を保持しており、該情報を参照して、前記演算部が実行しようとしている前記実行プログラムの前記記憶部におけるアドレスがいずれのアドレス範囲に含まれるかによって、前記演算部が実行しようとしている前記コンポーネントを特定すること特徴とする請求項１又は２に記載の処理装置。
【請求項４】
前記演算部は、プログラムカウンタの値に従って演算処理を実行するものであり、
前記特定手段は、前記プログラムカウンタの値に基づいて、前記演算部が実行しようとしている実行プログラムの前記記憶部におけるアドレスを決定することを特徴とする請求項３に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算部と、記憶部と、記憶部への演算部のアクセスを規定することで、記憶部を保護する保護部と、を有する処理装置に関する。
【背景技術】
【０００２】
従来、例えば特許文献１に示されるように、演算部（特許文献１ではＣＰＵ）と、保護情報格納部と、メモリアクセス制御装置と、を備えるマイクロコンピュータが提案されている。保護情報格納部は、演算部で実行されるプログラムによるメモリ空間へのアクセス許可又は禁止の状態を指定するメモリ保護情報を格納する。メモリアクセス制御装置は、メモリ保護情報に基づいて、演算部によるメモリアクセス要求を許可するか否かを判定する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２８７１０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、演算部が実行するソフトウェアは、複数のコンポーネントから成ることがある。複数のコンポーネントの夫々は、利用するメモリ領域が異なる。また、このコンポーネントは、例えば、所定の安全基準を満たす安全コンポーネントと、安全基準に制限がない非安全コンポーネントと、から成ることがある。また、非安全コンポーネントは、安全基準に制限がないため、安全基準を満たさないコンポーネントであることも考えられる。演算部は、非安全コンポーネントにバグが含まれていると、非安全コンポーネントに基づいて動作する際、非安全コンポーネントに基づいて動作するのに不要なデータにアクセスする、という誤動作を行う虞がある。
【０００５】
例えば、特許文献１に記載のマイクロコンピュータでは、メモリ保護情報が格納された複数のレジスタからなる保護設定レジスタ郡と、メモリ保護情報に基づいて演算部によるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御装置とを備える。これによって、演算部が動作するのに不要なデータにアクセスする、という誤動作が起きることを抑制している。
【０００６】
しかしながら、このようなマイクロコンピュータの場合、コンポーネント毎に必要なメモリ保護情報が異なる。このため、実行するコンポーネント（プログラム）の切り替え時に、保護設定レジスタ郡を構成する複数のレジスタの設定を変更するため、オーバーヘッドが大きいという問題がある。つまり、コンポーネント毎にメモリ保護情報を変更するために複数のレジスタを書き換える分、処理にかかる時間や負荷が余分にかかってしまうという問題がある。
【０００７】
そこで、本発明は上記問題点に鑑み、オーバーヘッドが低減された処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記した目的を達成するために本発明は、
複数のコンポーネントから成るソフトウェアを実行する処理装置であって、
各コンポーネントに基づいて演算処理を実行する演算部（１０）と、
演算部が演算処理するためのデータを記憶する記憶部（２０）と、
演算部による記憶部へのアクセスを規定することで、記憶部を保護する保護部（３０）と、を備え、
保護部は、
演算部がアクセスする記憶部におけるアドレスを示すデータ、及び演算部による処理の可否を規定するデータを含むメモリ保護情報が記憶された複数のレジスタからなるバンク（３３１〜３３ｎ）を複数有すると共に、
複数のバンクのうち有効状態とするバンクを示すバンク番号が書き込まれるバンク番号レジスタ（３３ａ）と、
演算部が実行しようとしているコンポーネントを特定する特定手段（Ｓ１０）と、
特定手段によって特定されたコンポーネントと、複数のバンクにおける特定されたコンポーネントに対応するバンクとを一対一で対応付ける対応付け手段（Ｓ２０）と、
実行されるコンポーネントが特定手段で特定されたコンポーネントに切り替わる場合、対応付け手段で対応付けられたバンクを示すバンク番号をバンク番号レジスタに書き込むことで、有効状態のバンクを切り替える切替手段（Ｓ３０，Ｓ４０）と、を有し、
切替手段により有効状態となったバンクのレジスタに記憶されたメモリ保護情報に従い、演算部による記憶部へのアクセスを規定することで、記憶部を保護することを特徴とする。
【０００９】
このように、本発明は、実行されるコンポーネントが切り替わる際に、バンク番号レジスタにバンク番号を書き込むだけで、実行しようとしているコンポーネントに対応するバンクに切り替えることができる。つまり、本発明は、実行されるコンポーネントが切り替わる際に、バンク番号レジスタにバンク番号を書き込むだけで、メモリ保護情報を切り替えることができる。よって、本発明は、実行しようとしているコンポーネントに対応したバンク番号を、バンク番号レジスタに書き込むだけで、複数のレジスタに記憶されたメモリ保護情報に従い、演算部による記憶部へのアクセスを規定して記憶部を保護することができる。このため、本発明は、上述のように、実行されるコンポーネントが切り替わる際に、複数のレジスタを書き換える必要がなくオーバーヘッドが低減される。
【図面の簡単な説明】
【００１０】
【図１】実施形態におけるマイコンの概略構成を示すブロック図である。
【図２】実施形態における記憶部の概略構成を示すブロック図である。
【図３】実施形態におけるバンク切替部の処理動作を示すフローチャートである。
【図４】実施形態における記憶部の保護を説明するための概念図である。
【図５】比較例における記憶部の保護を説明するための概念図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を図に基づいて説明する。本実施形態では、本発明（処理装置）をマイコン１００に適用した例を採用する。このマイコン１００は、複数の異なるコンポーネントから成るソフトウェアを実行する。また、複数のコンポーネントは、少なくとも一つの安全コンポーネントと、少なくとも一つの非安全コンポーネントを含む例を採用する。
【００１２】
安全コンポーネントは、上述のように、所定の安全基準が満たされている。安全基準が満たされているとは、認証されたプロセスに準拠して設計されていることを示す。つまり、安全コンポーネントは、認証されたプロセスに準拠して設計されたコンポーネントと言い換えることができる。ちなみに、安全基準としては、例えばＩＳＯ２６２６２に定義される自動車用安全水準（ＡＳＩＬ）を採用することができる。一方、非安全コンポーネントは、上述のように、安全基準を満たさないコンポーネントであることも考えられる。本実施形態では、非安全コンポーネントとして、安全基準を満たさないコンポーネントを採用する。
【００１３】
マイコン１００は、例えば、車両の搭載機器を電子的に制御する各種の電子制御装置に適用することができる。また、電子制御装置が制御対象とする車両の搭載機器は、エンジン、変速機、ブレーキ等のパワートレイン系機器、エアコン、シート、ドアロック等のボディ系機器、ナビ、ＥＴＣ、ラジオ等の情報系機器、及びエアバック等のセイフティ系機器などである。
【００１４】
図１に示すように、マイコン１００は、要部として、演算部１０、記憶部２０、保護部３０を備えて構成されている。
【００１５】
演算部１０は、所謂ＣＰＵ（Central Processing Unit）に相当し、コンポーネントに基づいて演算処理を実行する。言い換えると、演算部１０は、記憶部２０に記憶されたデータに基づいて演算処理を実行する。詳述すると、演算部１０は、記憶部２０にアクセスし、アクセスしたアドレスに記憶されたデータに基づいて、演算処理を実行する。また、演算部１０は、プログラムカウンタ１１を備えている。演算部１０は、プログラムカウンタ１１の値に従って、記憶部１０における所定のアドレスから命令を読み出して演算処理を実行する。
【００１６】
記憶部２０は、図２に示すように、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、レジスタを備えて構成されている。この記憶部２０は、ＲＯＭ、ＲＡＭ、レジスタを一つのアドレス空間として一括管理されている。記憶部２０は、演算部１０が演算処理するためのデータや、演算処理の際のデータを記憶する。具体的には、記憶部２０は、上述のソフトウェアが記憶されている。詳述すると、各コンポーネントの実行プログラムは、記憶部２０における所定のアドレスに記憶されている。
【００１７】
保護部３０は、所謂メモリ管理ユニットに相当し、記憶部２０に記憶されたデータへの演算部１０のアクセスを規定することで記憶部２０を保護する。保護部３０は、バンク切替部３１、アドレステーブル３２、レジスタバンク部３３を備えて構成されている。また、レジスタバンク部３３は、バンク番号レジスタ３３ａと、複数のバンク３３１〜３３ｎとを備えて構成されている。
【００１８】
バンク切替部３１は、各バンク３３１〜３３ｎの無効状態と有効状態とを切り換える。具体的には、バンク切替部３１は、有効状態にするバンクを示すバンク番号をバンク番号レジスタ３３ａに書き込むことによって、各バンク３３１〜３３ｎの無効状態と有効状態とを切り替える。言い換えると、バンク切替部３１は、バンク番号レジスタ３３ａに、切り替えて使用したいバンクの値を設定することによって、有効状態のバンクを切り替える。このように、バンク番号レジスタ３３ａは、複数のバンク３３１〜３３ｎのうち有効状態とするバンクを示すバンク番号が書き込まれる。つまり、バンク番号レジスタ３３ａには、複数のバンク３３１〜３３ｎのうち、有効状態となっているバンクのバンク番号が書き込まれている。
【００１９】
アドレステーブル３２は、記憶部２０におけるアドレス範囲と、各アドレス範囲に対応する各バンク３３１〜３３ｎとが関連付けられている。例えば、図１に示すように、アドレスＡ〜アドレスＢは第１バンク３３１と関連付けられており、アドレスＢ〜アドレスＣは第２バンク３３２と関連付けられており、アドレスＹ〜アドレスＺは第Ｎバンク３３ｎと関連付けられている。
【００２０】
なお、アドレステーブル３２は、演算部１０が実行しようとしているコンポーネントに対応するバンクを決定するためのテーブルである。よって、アドレステーブル３２のかわりに、各コンポーネントと、各コンポーネントに対応する各バンク３３１〜３３ｎとが関連付けられたコンポーネントテーブルを採用することもできる。例えば、コンポーネントテーブルは、図４における安全コンポーネントと第１バンク３３１とが関連付けられており、図４における非安全コンポーネントと第２バンク３３２とが関連付けられているものを採用することができる。なお、アドレステーブル３２とコンポーネントテーブルは、共に対応付けテーブルと称することもできる。
【００２１】
各バンク３３１〜３３ｎは、複数のレジスタからなり、演算部１０がアクセスする記憶部２０におけるアドレスを示すデータ、及び演算部１０による処理の可否を規定するデータを含むメモリ保護情報が記憶されている。つまり、１つのバンクには、一つのコンポーネントに必要な複数のレジスタが備わっている。そして、各コンポーネントに対応するメモリ保護情報は、複数のレジスタに記憶されている。また、各バンク３３１〜３３ｎは、各コンポーネントに対応して設けられている。例えば、第１コンポーネントに対応するバンクが第１バンク３３１であった場合、第１バンク３３１には、第１コンポーネントに対応するメモリ保護情報が記憶されている。同様に、第２コンポーネントに対応するバンクが第２バンク３３２であった場合、第２バンク３３２には、第２コンポーネントに対応するメモリ保護情報が記憶されている。なお、各バンク３３１〜３３ｎは、保護部３０の設定を行う複数のレジスタを備えていると言い換えることもできる。
【００２２】
このように構成された保護部３０は、各バンク３３１〜３３ｎに記憶されたメモリ保護情報に基づいて、記憶部２０を保護する。つまり、保護部３０は、有効状態となったバンクの複数のレジスタに記憶されたメモリ保護情報に従い、記憶部２０に記憶されたデータへの演算部１０のアクセスを規定することで記憶部２０を保護する。言い換えると、保護部３０は、有効状態となったバンクの複数のレジスタに記憶されたメモリ保護情報に従い、演算部１０が記憶部２０のメモリ領域（アドレス範囲）に不必要にアクセスすることを規定して、記憶部２０を保護する。
【００２３】
ここで、図３〜図５を用いて、マイコン１００の処理動作に関して説明する。バンク切替部３１は、演算部１０のクロックに同期して図３のフローチャートで示す処理を実行する。
【００２４】
ステップＳ１０では、プログラムカウンタ１１を確認（参照）する。バンク切替部３１は、プログラムカウンタ１１を確認することで、演算部１０が実行しようとしているコンポーネントを特定する（特定手段）。詳述すると、まず、バンク切替部３１は、プログラムカウンタ１１を確認することで、演算部１０が実行しようとしているコンポーネント（実行プログラム）の記憶部２０上のアドレスを特定（決定）する。つまり、バンク切替部３１は、プログラムカウンタ１１を確認することで、演算部１０が実行しようとしているコンポーネントで使用する記憶部２０上のアドレスを特定する。よって、バンク切替部３１は、このアドレスを認識することで、演算部１０が実行しようとしているコンポーネントを間接的に特定すると言い換えることができる。なお、以下において、演算部１０が実行しようとしている実行プログラムの記憶部２０上のアドレスを、実行アドレスとも称する。
【００２５】
一般的に、プログラムカウンタ１１は、マイコンのＣＰＵ（ここでは演算部１０）が動作する上で必要なハードウェアである。このため、上述のステップＳ１０で説明した処理を実行することで、ハードウェアを特別に追加することなく、実行アドレスを決定することができる。つまり、ハードウェアを特別に追加することなく、演算部１０が実行しようとしているコンポーネントを特定することができる。
【００２６】
なお、以下のようにして、コンポーネントを特定することもできる。バンク切替部３１は、記憶部２０に記憶されている各コンポーネントにおける実行プログラムのアドレス範囲を示す情報を保持しておく。つまり、バンク切替部３１は、各コンポーネントと、各コンポーネント（実行プログラム）が記憶されている記憶部２０上のアドレス範囲とが関連付けられたテーブルを保持しておく。また、バンク切替部３１は、上述のように、プログラムカウンタ１１を確認することで、実行アドレスを特定する。そして、バンク切替部３１は、上述のテーブルを参照して、実行アドレスがいずれのコンポーネントと関連付いたアドレス範囲に含まれるかによって、演算部１０が実行しようとしているコンポーネントを特定する。よって、バンク切替部３１は、実行アドレスを特定することで、演算部１０が実行しようとしているコンポーネントを直接的に特定すると言い換えることができる。
【００２７】
ステップＳ２０では、アドレステーブル３２を確認する。バンク切替部３１は、アドレステーブル３２を確認して、ステップＳ１０で特定したコンポーネント（アドレス）と、複数のバンク３３１〜３３ｎにおける特定したコンポーネントに対応するバンクとを一対一に対応付ける（対応付け手段）。詳述すると、バンク切替部３１は、アドレステーブル３２から、ステップＳ１０で特定したアドレスを含むアドレス範囲に関連付けられたバンクを選択（抽出）する。なお、バンク切替部３１は、複数のバンク３３１〜３３ｎから、ステップＳ１０で特定したコンポーネントに対応するバンクを決定すると言い換えることができる。
【００２８】
このように、アドレステーブル３２とプログラムカウンタ１１を用いて特定したアドレスとを用いることで、コンポーネントを直接的に特定することなく、演算部１０が実行しようとしているコンポーネントに対応するバンクを決定することができる。
【００２９】
なお、バンク切替部３１は、ステップＳ１０で直接的に特定する場合、上述のコンポーネントテーブルを参照することで、ステップＳ１０で特定したコンポーネントに対応するバンクを決定することができる。
【００３０】
ステップＳ３０では、コンポーネントの切り替えが必要であるか否かを判定する（判定手段）。バンク切替部３１は、現在実行しているコンポーネントと、ステップＳ１０で特定したコンポーネントとによって、コンポーネントの切り替えが必要であるか否かを判定する。そして、バンク切替部３１は、コンポーネントの切り替えが必要と判定した場合はステップＳ４０へ進み、切り替えが必要ないと判定した場合はステップＳ４０を飛ばしフローチャートが示す処理を終了する。
【００３１】
ステップＳ４０では、バンクを切り替える（切替手段）。バンク切替部３１は、実行されるコンポーネントがステップＳ１０で特定したコンポーネントに切り替わる場合、有効状態のバンクを、ステップＳ２０で対応付けられたバンクに切り替える。このとき、バンク切替部３１は、ステップＳ２０で対応付けられたバンクを示すバンク番号をバンク番号レジスタ３３ａに書き込むことで、有効状態のバンクを切り替える。つまり、バンク切替部３１は、演算部１０が実行しようとしているコンポーネントに対応するバンクを有効状態にするために、このコンポーネントに対応するバンクを示すバンク番号をバンク番号レジスタ３３ａに書き込む。
【００３２】
このように、バンク切替部３１は、アドレステーブル３２を参照し、実行アドレス（プログラムカウンタ１１の値）が、アドレステーブル３２におけるいずれのアドレス範囲に含まれるかでバンクを切り替える。そして、バンク切替部３１は、バンクを切り替える際には、有効状態にしたいバンクを示すバンク番号をバンク番号レジスタ３３ａに書き込む。
【００３３】
ここで、比較例におけるマイコンの処理動作と比較しつつ、マイコン１００の処理動作を説明する。図４は、マイコン１００における記憶部２０の保護を説明するための概念図である。図４では、記憶部２０のアドレスＡ〜Ｂに安全コンポーネントの実行プログラムが格納されており、アドレスＢ〜Ｃに非安全コンポーネントの実行プログラムが格納されている例を採用している。
【００３４】
これに対して、図５は、比較例における記憶部の保護を説明するための概念図である。比較例のマイコンは、マイコン１００のようにバンク３３１〜３３ｎは有しておらず、保護部にメモリ保護情報が記憶された複数のレジスタを備えている。つまり、比較例のマイコンにおける複数のレジスタは、マイコン１００の一つのバンクに相当する。また、図５では、記憶部のアドレスＡ〜Ｂに安全コンポーネントの実行プログラムが格納されており、アドレスＢ〜Ｃに非安全コンポーネントの実行プログラムが格納されている例を採用している。
【００３５】
以下においては、比較例におけるメモリ保護情報が記憶された複数のレジスタを保護レジスタとも称する。また、保護レジスタにおける、演算部のアクセスを許可するアドレスのデータが記憶されたメモリ領域をアクセス領域、演算部の処理内容（保護状態）を示すデータが記憶されたメモリ領域を処理領域とも称する。また、アクセス領域に記憶されるデータは、保護開始アドレスを示すデータと、保護終了アドレスを示すデータとを含むものであり、これらを纏めて、アドレス設定を示すデータと称することもできる。さらに、処理領域に記憶されるデータは、保護設定を示すデータと称することもできる。なお、図５に示す○は、比較例における演算部による処理の許可を示し、×は、演算部による処理の禁止を示している。
【００３６】
同様に、マイコン１００のバンク３３１〜３３ｎにおける、演算部１０のアクセスを許可するアドレスのデータが記憶されたメモリ領域をアクセス領域、演算部１０の処理内容（保護状態）を示すデータが記憶されたメモリ領域を処理領域とも称する。また、アクセス領域に記憶されるデータは、保護開始アドレスを示すデータと、保護終了アドレスを示すデータとを含むものであり、これらを纏めて、アドレス設定を示すデータと称することもできる。さらに、処理領域に記憶されるデータは、保護設定を示すデータと称することもできる。なお、図４に示す○は、演算部１０による処理の許可を示し、×は、演算部１０による処理の禁止を示している。
【００３７】
まず、図５を用いて、比較例の演算部が、安全コンポーネントを実行する場合に関して説明する。この場合、アドレス領域には、記憶部の保護開始アドレスとしてアドレスＡを示すデータ、記憶部の保護終了アドレスとしてアドレスＢを示すデータが記憶されている。また、別のアドレス領域には、記憶部の保護開始アドレスとしてアドレスＣを示すデータ、記憶部の保護終了アドレスとしてアドレスＤを示すデータが記憶されている。なお、この記憶部の保護開始アドレスＡから保護終了アドレスＢを第１メモリ領域と称する。一方、記憶部の保護開始アドレスＣから保護終了アドレスＤを第２メモリ領域と称する。
【００３８】
更に、処理領域には、第１メモリ領域に演算部がアクセスした際に、第１メモリ領域における、読み込み（リード）の許可、実行の許可、及び、書き込み（ライト）の禁止を示す各データが記憶されている。また、別の処理領域には、第２メモリ領域に演算部がアクセスした際に、第２メモリ領域における、ライトの許可、リードの許可、及び、実行の禁止を示す各データが記憶されている。
【００３９】
この場合、保護部は、演算部の記憶部へのアクセスを、第１メモリ領域と第２メモリ領域とに規定する。そして、保護部は、演算部が第１メモリ領域にアクセスした際、第１メモリ領域における、リードと実行を許可して、ライトを禁止させる。また、保護部は、演算部が第２メモリ領域にアクセスした際、第２メモリ領域における、ライトとリードを許可し、実行を禁止させる。さらに、保護部は、演算部が第１メモリ領域と第２メモリ領域以外のメモリ領域にアクセスした際は、第１メモリ領域と第２メモリ領域以外のメモリ領域における、リード、ライト、実行の全てを禁止させる。
【００４０】
次に、図５を用いて、比較例の演算部が、安全コンポーネントを実施している状態から、非安全コンポーネントを実行する状態に移行する場合に関して説明する。
【００４１】
この場合、保護レジスタのデータは、演算部によって書き換えられる。具体的には、図５に示すように、アクセス領域は、保護開始アドレスがアドレスＡを示すデータからアドレスＢを示すデータに書き換えられ、保護終了アドレスがアドレスＢを示すデータからアドレスＣを示すデータに書き換えられる。また、別のアドレス領域は、保護開始アドレスがアドレスＣを示すデータからアドレスＤを示すデータに書き換えられ、保護終了アドレスがアドレスＤを示すデータからアドレスＥを示すデータに書き換えられる。
【００４２】
よって、アドレス領域には、記憶部の保護開始アドレスとしてアドレスＢを示すデータ、記憶部の保護終了アドレスとしてアドレスＣを示すデータが記憶される。また、別のアドレス領域には、記憶部の保護開始アドレスとしてアドレスＤを示すデータ、記憶部の保護終了アドレスとしてアドレスＥを示すデータが記憶される。なお、この記憶部の保護開始アドレスＢから保護終了アドレスＣを第３メモリ領域と称する。一方、記憶部の保護開始アドレスＤから保護終了アドレスＥを第４メモリ領域と称する。
【００４３】
更に、処理領域は、演算部が第３メモリ領域にアクセスした際に、第３メモリ領域における、ライトの許可、リードの許可、及び実行の許可を示す各データに書き換えられる。
また、別の処理領域のデータは、演算部が第４メモリ領域にアクセスした際に、第４メモリ領域における、ライトの許可、リードの許可、及び、実行の禁止を示す各データに書き換えられる。このように、比較例のマイコンは、安全コンポーネントから非安全コンポーネントへ切り替わる際に、保護レジスタのデータ（メモリ保護情報）が、演算部によってソフトウェア的に書き換えられる。
【００４４】
この場合、保護部は、演算部の記憶部へのアクセスを、第３メモリ領域と第４メモリ領域とに規定する。そして、保護部は、演算部が第３メモリ領域にアクセスした際、第３メモリ領域における、リード、ライト、実行の全てを許可させる。また、保護部は、演算部が第４メモリ領域にアクセスした際、第４メモリ領域における、ライトとリードを許可し、実行を禁止させる。さらに、保護部は、演算部が第３メモリ領域と第４メモリ領域以外のメモリ領域にアクセスした際は、第３メモリ領域と第４メモリ領域以外のメモリ領域における、リード、ライト、実行の全てを禁止させる。
【００４５】
次に、図５を用いて、比較例の演算部が、非安全コンポーネントを実施している状態から、安全コンポーネントを実行する状態に移行する場合に関して説明する。
【００４６】
この場合、保護レジスタのデータは、演算部によって書き換えられる。具体的には、図５に示すように、アクセス領域のデータが、第３メモリ領域と第４メモリ領域から、第１メモリ領域と第２メモリ領域へと書き換えられる。また、処理領域は、演算部１０が第１メモリ領域にアクセスした際に、第１メモリ領域における、リードの許可、実行の許可、及びライトの禁止を示す各データに書き換えられる。更に、別の処理領域のデータは、演算部１０が第２メモリ領域にアクセスした際に、第２メモリ領域における、ライトの許可、リードの許可、及び実行の禁止を示す各データに書き換えられる。このように、比較例のマイコンは、非安全コンポーネントから安全コンポーネントへ切り替わる際に、保護レジスタのデータ（メモリ保護情報）が、演算部によってソフトウェア的に書き換えられる。
【００４７】
この場合、保護部は、演算部の記憶部へのアクセスを、第１メモリ領域と第２メモリ領域とに規定する。そして、保護部は、演算部が第１メモリ領域にアクセスした際、第１メモリ領域における、リードと実行を許可して、ライトを禁止させる。また、保護部は、演算部が第２メモリ領域にアクセスした際、第２メモリ領域における、ライトとリードを許可し、実行を禁止させる。そして、保護部は、演算部が第１メモリ領域と第２メモリ領域以外のメモリ領域にアクセスした際は、第１メモリ領域と第２メモリ領域以外のメモリ領域における、リード、ライト、実行の全てを禁止させる。
【００４８】
このように、比較例のマイコンは、安全コンポーネントを実行している状態から、非安全コンポーネントを実行する状態に移行する場合など、複数のレジスタを書き換える必要がある。つまり、比較例のマイコンは、演算部の実行状態が切り替わる毎に、複数のレジスタを書き換えて、保護状態を変更してコンポーネント間のメモリ保護を実現している。この例の場合、演算部の実行状態が切り替わる毎に、六個のレジスタを書き換える必要がある。
【００４９】
これに対して、マイコン１００は、以下のように処理を実行する。まず、図４を用いて、演算部１０が、安全コンポーネントを実行する場合に関して説明する。この場合、プログラムカウンタ１１は、アドレスＡ〜Ｂを示す値が記憶されている。よって、バンク番号レジスタ３３ａには、安全コンポーネントに対応する第１バンク３３１を示すバンク番号が書き込まれている。このため、複数のバンク３３１〜３３ｎのうち、第１バンク３３１が有効状態となっている。
【００５０】
第１バンク３３１のアドレス領域には、記憶部２０の保護開始アドレスとしてアドレスＡを示すデータ、記憶部２０の保護終了アドレスとしてアドレスＢを示すデータが記憶されている。また、第１バンク３３１の別のアドレス領域には、記憶部２０の保護開始アドレスとしてアドレスＣを示すデータ、記憶部２０の保護終了アドレスとしてアドレスＤを示すデータが記憶されている。なお、この記憶部２０の保護開始アドレスＡから保護終了アドレスＢを比較例と同様に第１メモリ領域と称する。一方、記憶部２０の保護開始アドレスＣから保護終了アドレスＤを比較例と同様に第２メモリ領域と称する。
【００５１】
更に、第１バンク３３１の処理領域には、第１メモリ領域に演算部１０がアクセスした際に、第１メモリ領域における、リードの許可、実行の許可、及びライトの禁止を示す各データが記憶されている。また、第１バンク３３１の別の処理領域には、第２メモリ領域に演算部１０がアクセスした際に、第２メモリ領域における、ライトの許可、リードの許可、及び、実行の禁止を示す各データが記憶されている。
【００５２】
この場合、保護部３０は、演算部１０の記憶部２０へのアクセスを、第１メモリ領域と第２メモリ領域とに規定する。そして、保護部３０は、演算部１０が第１メモリ領域にアクセスした際は、第１メモリ領域における、リードと実行を許可して、ライトを禁止させる。また、保護部３０は、演算部１０が第２メモリ領域にアクセスした際は、第２メモリ領域における、ライトとリードを許可し、実行を禁止させる。そして、保護部３０は、演算部１０が第１メモリ領域と第２メモリ領域以外のメモリ領域にアクセスした際は、第１メモリ領域と第２メモリ領域以外のメモリ領域における、リード、ライト、実行の全てを禁止させる。このように、保護部３０は、有効状態となった第１バンク３３１のレジスタに記憶されたメモリ保護情報に従い、演算部１０による記憶部３０へのアクセスを規定することで、記憶部２０を保護する。
【００５３】
次に、図４を用いて、演算部１０が、安全コンポーネントを実施している状態から、非安全コンポーネントを実行する状態に移行する場合に関して説明する。つまり、演算部１０が実行するコンポーネントが安全コンポーネントから非安全コンポーネントへ切り替わる場合に関して説明する。なお、この場合、プログラムカウンタ１１は、アドレスＡ〜Ｂを示す値から、アドレスＢ〜Ｃを示す値に書き換わっている。
【００５４】
バンク切替部３１は、実行されるコンポーネントが安全コンポーネントから非安全コンポーネントに切り替わる場合、有効状態のバンクを第１バンク３３１から第２バンク３３２に切り替える。このとき、バンク切替部３１は、第２バンク３３２を示すバンク番号をバンク番号レジスタ３３ａに書き込むことで、有効状態のバンクを第１バンク３３１から第２バンク３３２に切り替える。つまり、バンク切替部３１は、ハードウェアであるバンクを、第１バンク３３１から第２バンク３３２に切り替える。
【００５５】
図４に示すように、第２バンク３３２のアドレス領域には、記憶部２０の保護開始アドレスとしてアドレスＢを示すデータ、記憶部２０の保護終了アドレスとしてアドレスＣを示すデータが記憶されている。また、別のアドレス領域には、記憶部２０の保護開始アドレスとしてアドレスＤを示すデータ、記憶部の保護終了アドレスとしてアドレスＥを示すデータが記憶されている。なお、この記憶部２０の保護開始アドレスＢから保護終了アドレスＣを比較例と同様に第３メモリ領域と称する。一方、記憶部２０の保護開始アドレスＤから保護終了アドレスＥを比較例と同様に第４メモリ領域と称する。
【００５６】
これによって、アクセス領域は、保護開始アドレスがアドレスＡを示すデータからアドレスＢを示すデータに書き換えられ、保護終了アドレスがアドレスＢを示すデータからアドレスＣを示すデータに書き換えられた場合と同様の状態とすることができる。また、別のアドレス領域は、保護開始アドレスがアドレスＣを示すデータからアドレスＤを示すデータに書き換えられ、保護終了アドレスがアドレスＤを示すデータからアドレスＥを示すデータに書き換えられた場合と同様の状態とすることができる。
【００５７】
更に、第２バンク３３２の処理領域には、演算部１０が第３メモリ領域にアクセスした際に、第３メモリ領域における、ライトの許可、リードの許可、及び実行の許可を示す各データが記憶されている。また、第２バンク３３２における別の処理領域には、演算部１０が第４メモリ領域にアクセスした際に、第４メモリ領域における、ライトの許可、リードの許可、及び実行の禁止を示す各データが記憶されている。
【００５８】
これによって、処理領域は、演算部１０が第３メモリ領域にアクセスした際に、第３メモリ領域における、ライトの許可、リードの許可、及び実行の許可を示す各データに書き換えられた場合と同様の状態とすることができる。また、別の処理領域のデータは、演算部１０が第４メモリ領域にアクセスした際に、第４メモリ領域における、ライトの許可、リードの許可、及び、実行の禁止を示す各データに書き換えられた場合と同様の状態とすることができる。このように、マイコン１００は、安全コンポーネントから非安全コンポーネントへ切り替わる場合、バンク切替部３１によってバンクを切り替えることで、メモリ保護情報をハードウェア的に切り替える。
【００５９】
なお、この場合、保護部３０は、演算部１０の記憶部２０へのアクセスを、第３メモリ領域と第４メモリ領域とに規定する。そして、保護部３０は、演算部１０が第３メモリ領域にアクセスした際は、第３メモリ領域における、リード、ライト、実行の全てを許可させる。また、保護部３０は、演算部１０が第４メモリ領域にアクセスした際は、第４メモリ領域における、ライトとリードを許可し、実行を禁止させる。そして、保護部３０は、演算部１０が第３メモリ領域と第４メモリ領域以外のメモリ領域にアクセスした際は、第３メモリ領域と第４メモリ領域以外のメモリ領域における、リード、ライト、実行の全てを禁止させる。このように、保護部３０は、有効状態となった第２バンク３３２のレジスタに記憶されたメモリ保護情報に従い、演算部１０による記憶部３０へのアクセスを規定することで、記憶部２０を保護する。
【００６０】
次に、図４を用いて、比較例の演算部が、非安全コンポーネントを実施している状態から、安全コンポーネントを実行する状態に移行する場合に関して説明する。つまり、演算部１０が実行するコンポーネントが非安全コンポーネントから安全コンポーネントへ切り替わる場合に関して説明する。なお、この場合、プログラムカウンタ１１は、アドレスＢ〜Ｃを示す値から、アドレスＡ〜Ｂを示す値に書き換わっている。
【００６１】
バンク切替部３１は、実行されるコンポーネントが非安全コンポーネントから安全コンポーネントに切り替わる場合、有効状態のバンクを第２バンク３３２から第１バンク３３１に切り替える。このとき、バンク切替部３１は、第１バンク３３１を示すバンク番号をバンク番号レジスタ３３ａに書き込むことで、有効状態のバンクを第２バンク３３２から第１バンク３３１に切り替える。つまり、バンク切替部３１は、ハードウェアであるバンクを、第２バンク３３２から第１バンク３３１に切り替える。なお、第１バンク３３１に関しては、上述の通りである。
【００６２】
これによって、アクセス領域は、第３メモリ領域と第４メモリ領域から、第１メモリ領域と第２メモリ領域へと書き換えられた場合と同様の状態とすることができる。また、処理領域は、演算部１０が第１メモリ領域にアクセスした際に、第１メモリ領域における、リードの許可、実行の許可、及び、ライトの禁止を示す各データに書き換えられた場合と同様の状態とすることができる。さらに、別の処理領域のデータは、演算部１０が第２メモリ領域にアクセスした際に、第２メモリ領域における、ライトの許可、リードの許可、及び実行の禁止を示す各データに書き換えられた場合と同様の状態とすることができる。このように、マイコン１００は、非安全コンポーネントから安全コンポーネントへ切り替わる際に、バンク切替部３１によってバンクを切り替えることで、メモリ保護情報をハードウェア的に切り替える。
【００６３】
ここまでに説明したように、マイコン１００は、実行されるコンポーネントが切り替わる際に、バンク番号レジスタ３３ａにバンク番号を書き込むだけで、実行しようとしているコンポーネントに対応するバンクに切り換えることができる。つまり、マイコン１００は、実行しようとしているコンポーネントに対応したバンク番号を、バンク番号レジスタ３３ａに書き込むだけで、演算部１０による記憶部２０へのアクセスを規定して記憶部２０を保護することができる。なお、マイコン１００は、複数のレジスタに記憶されたメモリ保護情報に従い、演算部１０による記憶部２０へのアクセスを規定して記憶部２０を保護する。
【００６４】
例えば、上述の例のように、マイコン１００は、実行されるコンポーネントが安全コンポーネントから非安全コンポーネントへと移行する際、バンク番号レジスタ３３ａにバンク番号を書き込むだけで記憶部２０を保護することができる。同様に、マイコン１００は、実行されるコンポーネントが非安全コンポーネントから安全コンポーネントへと移行する際、バンク番号レジスタ３３ａにバンク番号を書き込むだけで記憶部２０を保護することができる。
【００６５】
このため、マイコン１００は、上述の比較例のように、実行されるコンポーネントが切り替わる際に、複数のレジスタを書き換える必要がないので、オーバーヘッドが低減される。つまり、マイコン１００は、各コンポーネントに対応する複数のバンク３３１〜３３ｎを予め用意しておき、バンク番号レジスタ３３ａのバンク番号を書き換えるだけなので、複数のレジスタを書き換えるよりも、オーバーヘッドが抑制される。
【００６６】
なお、車両の搭載機器を電子的に制御する各種の電子制御装置は、リアルタイム性が重視されており、且つ、コンポーネントの実行状態の切り替えが頻繁に発生するシステムである。そこで、マイコン１００は、上述のようにオーバーヘッドを抑制できるので、車両における電子制御装置に適用すると好ましい。特に、マイコン１００は、パワートレイン系機器を電子的に制御する電子制御装置に適用すると好ましい。つまり、マイコン１００は、このような電子制御装置で要求されるリアルタイム性を達成するのに好適である。
【００６７】
なお、バンク切替部３１は、プログラムカウンタ１１を確認して、プログラムカウンタ１１の推移が非連続であった場合にのみ、図３のフローチャートで示す処理を実行するようにしてもよい。つまり、特定手段、対応付け手段、切替手段は、プログラムカウンタ１１の推移が非連続であった場合にのみ実行されるようにしてもよい。
【００６８】
なお、プログラムカウンタ１１の推移が連続とは、演算部１０が記憶部２０に記憶された命令を順番に実行し、プログラムカウンタ１１が一律に加算されて更新される場合を示す。一方、プログラムカウンタ１１の推移が非連続とは、演算部１０が割込み処理、タスク処理、関数処理を実行するため、プログラムカウンタ１１が、演算部１０による命令実行の結果として得られる特定のアドレスに更新される場合を示す。よって、バンク切替部３１は、演算部１０によって記憶部２０に記憶された命令を順番に実行する場合ではなく、演算部１０によって割込み処理、タスク処理、関数処理を実行する場合にのみ、図３のフローチャートで示す処理を実行すると言い換えることができる。このようにすることで、バンク切替部３１が必要なときにのみ動作するため、マイコン１００の消費電力を減らすことができる。
【００６９】
また、上述の実行しようとしているコンポーネントを特定（特定手段）、コンポーネントとバンクとの対応付け（対応付け手段）、有効状態のバンクの切り替え（切替手段）は、ハードウェア及びソフトウェアのいずれでも実現することが可能である。
【００７０】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上述した実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
【符号の説明】
【００７１】
１０  演算部、１１  プログラムカウンタ、２０  記憶部、３０  保護部、３１  バンク切替部、３２  アドレステーブル、３３  レジスタバンク部、３３ａ  バンク番号レジスタ、３３１〜３３ｎ  第１バンク〜第ｎバンク、１００  マイコン
【図１】
2014174758.tif 000003
【図２】
2014174758.tif 000004
【図３】
2014174758.tif 000005
【図４】
2014174758.tif 000006
【図５】
2014174758.tif 000007