説明

情報処理装置およびメモリ管理装置の動作確認方法

【課題】仮想アドレスを物理アドレスに変換するメモリ管理装置が正常に動作しているか否かを確認可能とする。
【解決手段】情報処理装置1は、メモリ11と、メモリ11の物理アドレス又はそれに対応する仮想アドレスを指定することで、メモリ11の物理アドレスに対してデータの読み出し又は書き込みを行うためのシステムプログラムと、システムプログラムを実行するプロセッサ10と、プロセッサ10からのメモリ11に対する仮想アドレスを指定した読み出し及び書き込みにおいて、仮想アドレスを物理アドレスに変換するメモリ管理装置14を備える。プロセッサ10は、システムプログラムによって、物理アドレスを指定してデータの書き込みを実施した後、その物理アドレスに対応する仮想アドレスを指定してデータの読み出しを実施して、書き込んだデータと、読み出したデータが一致するか否かを判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサからメモリに対するアクセスにおいて指定された仮想アドレスを物理アドレスに変換するメモリ管理装置を利用した情報処理装置およびメモリ管理装置の動作確認方法に関する。
【背景技術】
【0002】
サービスロボットは、外界センサや自己診断装置によって安全状態を常時監視し、何らかの危険を検知した場合に適切な安全制御ロジックを実行することで、機能安全を確保する必要がある。
【0003】
上述したサービスロボットのほか、運輸機器等の電気的な原理で動作するシステムを対象とした機能安全に関する国際標準としてIEC 61508が制定されている。IEC 61508では、機能安全の確保のために設けられるシステムのことを安全関連系と呼んでいる。IEC 61508は、マイクロプロセッサ及びPLC(Programmable Logic Controller)等のハードウェアとコンピュータプログラム(ソフトウェア)によって安全関連系を構築するための様々な技法を定めている。IEC 61508で定められている技法を用いることで、コンピュータシステムを用いて安全関連系を構築することが可能となる。
【0004】
一方で、近年、マイクロプロセッサ等のプログラマブル電子機器の処理能力が向上している。このため、マルチタスクOS(Operating System)を利用し、1つのコンピュータシステム上で様々なアプリケーションプログラムを並列実行することで、サービスロボット及び自動車等の機器に搭載されている複数用途のコンピュータシステムを統合することができる。
【0005】
例えば特許文献1に、機能安全の確保に関するアプリケーションプログラム(以下、安全関連アプリケーションと呼ぶ)を、その他のアプリケーションプログラム(以下、非安全関連アプリケーションと呼ぶ)と共に1つのコンピュータシステム上で動作させる技術が開示されている。
【0006】
IEC 61508で定められている技法を、安全関連アプリケーションおよび非安全関連アプリケーションを含むソフトウェア全体に適用すると、非安全関連アプリケーションにまで適用する必要性が生じる。このため、ソフトウェア開発コストが増大するという問題がある。
【0007】
そこで、特許文献1に開示される技術では、システムプログラムのタイム・パーティションニングによって、安全関連アプリケーション(安全監視プログラム及び安全制御プログラム)を非安全関連アプリケーション(通常制御プログラム)から独立させている。このため、通常制御プログラムを安全関連系から除外することができ、コンピュータシステムを用いて構成される安全関連系の低コスト化に寄与することができる。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2010−271759号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
ここで、特許文献1に開示の技術では、リソース・パーティショニングという技術を採用している。この技術では、実行用メモリ等の固定的な資源をリソースパーティションと言われるパーティションにパーティショニングしている。そして、アプリケーションは、予め割り当てられたリソースパーティションを超えて他のリソースにアクセスすることが禁止される。
【0010】
本願出願人は、上述したリソース・パーティショニングを、MMU(Memory Management Unit)を利用して実現することを検討するにあたり、以下に説明する課題を見出した。以下、その課題について説明する。なお、以下に説明する内容は、本願出願人が新たに検討した内容であって、従来技術を説明したものではない。
【0011】
タイム・パーティショニングを採用するオペレーティングシステムでは、図24に例示するように、タイムパーティションを切り替えることで、動作するアプリケーションも切り替えられる。図24では、「TP1」、「TP2」、「TP3」は、タイムパーティションを示し、「T1」、「T2」、「T3」のそれぞれは、TP1〜TP3のそれぞれに属するタスクを示している。なお、タスクは、非安全関連アプリケーション又は安全関連アプリケーションを実行することによって生成されているものとする。
【0012】
このような場合、アプリケーションの切り替えの組み合わせとして、以下の4パターンが考えられる。
1)非安全関連アプリケーションから安全関連アプリケーション
2)安全関連アプリケーションから安全関連アプリケーション
3)安全関連アプリケーションから非安全関連アプリケーション
4)非安全関連アプリケーションから非安全関連アプリケーション
【0013】
図24では、TP1に属するT1は、非安全関連アプリケーションによって生成されており、TP2に属するT2は、安全関連アプリケーションによって生成されているものとする。この場合、機能安全上、非安全関連系であるTP1に属するT1は、安全関連系であるTP2のリソースパーティションにアクセスすることを抑止する必要がある。
【0014】
これに対して、MMUが有するメモリ保護機能を利用すれば、タイムパーティションのそれぞれに、そのタイムパーティションに対応するリソースパーティションに対するアクセス権限を付与することで、リソース・パーティショニングを行うことができる。具体的には、TP1に属するT1には、TP1のリソースパーティションに割り当てられたメモリの領域のみにアクセス可能なアクセス権限を付与し、TP2に属するT2には、TP2のリソースパーティションに割り当てられたメモリの領域のみにアクセス可能なアクセス権限を付与する。このようにすることで、例えば、T1が、T2のリソースパーティションに割り当てられたメモリの領域に対してアクセスした場合に、MMUによって、そのアクセスをメモリ保護違反として検出することが可能となる。これによって、あるタイムパーティションに属するタスクが、他のタイムパーティションに割り当てられたリソースパーティションにアクセスすることを抑止することが可能となる。
【0015】
ここで、MMUは、仮想記憶管理も行っている。MMUは、タスクがメモリに対してアクセスする際に指定した仮想アドレスを、その仮想アドレスに対応する物理アドレスに変換している。ここで、タスクは、不連続なメモリ領域を連続するように見せかけるためや、実際のメモリよりも大きな記憶領域を仮想的に利用可能とするために用意された仮想アドレス空間において、仮想アドレスでメモリ等のアドレスを認識して動作している。そのため、MMUは、タスクが仮想アドレスを指定してメモリに対するアクセスを行った場合に、そのアクセスにおける仮想アドレスを物理アドレスに変換することで実際のメモリに適切にアクセスすることを可能としている。
【0016】
しかしながら、MMUが故障している場合、メモリを適切に保護することができなくなってしまう可能性があるという問題がある。例えば、故障によって仮想記憶管理が適切に行われなくなってしまった場合には、アドレスが誤変換されてしまい、意図していない物理アドレスにアクセスしてしまう可能性もあるという問題がある。すなわち、T1がT1にアクセス権限が付与されているメモリの領域にアクセスしたつもりであっても、アドレスの誤変換によって、T2のみにアクセス権限が付与されているメモリの領域に対してアクセスが行われてしまう可能性がある。
【0017】
したがって、システムの信頼性をより向上するためには、このようなMMUの異常を検出して、MMUが異常な状態のままシステムが動作を継続してしまうことを防止する必要がある。そのためには、MMUが正常に動作していることを確認するための仕組みが必要である。しかしながら、MMUが正常に動作していることを確認するための技術は見当たらない。
【0018】
本発明は、上述した知見に基づいてなされたものであって、プロセッサからメモリに対するアクセスにおいて指定された仮想アドレスを物理アドレスに変換するメモリ管理装置が正常に動作しているか否かを確認することが可能となる情報処理装置及びメモリ管理装置の動作確認方法を提供することを目的とする。
【課題を解決するための手段】
【0019】
本発明の第1の態様にかかる情報処理装置は、メモリと、前記メモリの物理アドレス又は当該メモリの物理アドレスに対応する仮想アドレスを指定することによって、当該メモリの物理アドレスに対してデータの読み出し又は書き込みを行うためのシステムプログラムと、前記システムプログラムを実行するプロセッサと、前記プロセッサからの前記メモリに対する前記仮想アドレスを指定した読み出し及び書き込みにおいて、当該読み出し及び当該書き込みにおいて指定された仮想アドレスをそれに対応する物理アドレスに変換するメモリ管理装置と、を備え、前記プロセッサは、前記システムプログラムを実行することによって、前記仮想アドレスを指定して前記メモリに対してデータの読み出しもしくは書き込みを行う第1のアクセスを実施した後、当該仮想アドレスに対応する物理アドレスを指定して前記メモリに対してデータの読み出しを行う第2のアクセスを実施するか、又は、前記物理アドレスを指定して前記メモリに対してデータの読み出しもしくは書き込みを行う第1のアクセスを実施した後、当該物理アドレスに対応する仮想アドレスを指定して前記メモリに対してデータの読み出しを行う第2のアクセスを実施して、前記第1のアクセスにおいて読み出した又は書き込んだデータと、前記第2のアクセスにおいて読み出したデータが一致するか否かを判定するものである。
【0020】
本発明の第2の態様にかかるメモリ管理装置の動作確認方法は、メモリの物理アドレス又は当該メモリの物理アドレスに対応する仮想アドレスを指定することによって、当該メモリの物理アドレスに対してデータの読み出し又は書き込みを行うプロセッサからの前記メモリに対する前記仮想アドレスを指定した読み出し及び書き込みにおいて、当該読み出し及び当該書き込みにおいて指定された仮想アドレスをそれに対応する物理アドレスに変換するメモリ管理装置の動作確認方法であって、前記プロセッサが、前記仮想アドレスを指定して前記メモリに対してデータの読み出しもしくは書き込みを行う第1のアクセスを実施した後、当該仮想アドレスに対応する物理アドレスを指定して前記メモリに対してデータの読み出しを行う第2のアクセスを実施するか、又は、前記物理アドレスを指定して前記メモリに対してデータの読み出しもしくは書き込みを行う第1のアクセスを実施した後、当該物理アドレスに対応する仮想アドレスを指定して前記メモリに対してデータの読み出しを行う第2のアクセスを実施するステップと、前記プロセッサが、前記第1のアクセスにおいて読み出した又は書き込んだデータと、前記第2のアクセスにおいて読み出したデータが一致するか否かを比較するステップと、を備えたものである。
【発明の効果】
【0021】
上述した本発明の各態様によれば、プロセッサからメモリに対するアクセスにおいて指定された仮想アドレスを物理アドレスに変換するメモリ管理装置が正常に動作しているか否かを確認することが可能となる情報処理装置及びメモリ管理装置の動作確認方法を提供することができる。
【図面の簡単な説明】
【0022】
【図1】発明の実施の形態1にかかる安全制御装置の構成例を示すブロック図である。
【図2】発明の実施の形態1におけるタイム・パーティショニングの概念を説明するための図である。
【図3】発明の実施の形態1におけるリソース・パーティショニングの概念を説明するための概念図である。
【図4】発明の実施の形態1におけるパーティションスケジューラとタスクとの関係を示す図である。
【図5A】スケジューリングパターンの具体例を示す図である。
【図5B】スケジューリングパターンの具体例を示す図である。
【図6】発明の実施の形態1にかかるパーティションスケジューラの処理手順の具体例を示すフローチャートである。
【図7】発明の実施の形態1にかかるMMU確認ルーチンの処理手順の具体例を示すフローチャートである。
【図8】MMU確認ルーチンの実行タイミングの一例を示す図である。
【図9】発明の実施の形態2におけるパーティションスケジューラとタスクとの関係を示す図である。
【図10】発明の実施の形態2にかかるパーティションスケジューラの処理手順の具体例を示すフローチャートである。
【図11】発明の実施の形態3にかかる安全制御装置の構成例を示すブロック図である。
【図12】発明の実施の形態3におけるパーティションスケジューラとタスクとの関係を示す図である。
【図13A】スケジューリングパターンの具体例を示す図である。
【図13B】スケジューリングパターンの具体例を示す図である。
【図14】発明の実施の形態4におけるパーティションスケジューラとタスクとの関係を示す図である。
【図15】発明の実施の形態5にかかる安全制御装置の構成例を示すブロック図である。
【図16】発明の実施の形態5におけるパーティションスケジューラとタスクとの関係を示す図である。
【図17】発明の実施の形態5にかかるMMU確認ルーチンの処理手順の具体例を示すフローチャートである。
【図18】発明の実施の形態6におけるパーティションスケジューラとタスクとの関係を示す図である。
【図19】発明の実施の形態7にかかる安全制御装置の構成例を示すブロック図である。
【図20】発明の実施の形態7におけるパーティションスケジューラとタスクとの関係を示す図である。
【図21】発明の実施の形態8におけるパーティションスケジューラとタスクとの関係を示す図である。
【図22】その他の実施の形態にかかるパーティションスケジューラとタスクとの関係を示す図である。
【図23】その他の実施の形態にかかるパーティションスケジューラとタスクとの関係を示す図である。
【図24】課題を説明するための図である。
【発明を実施するための形態】
【0023】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【0024】
<発明の実施の形態1>
本実施の形態にかかる安全制御装置1は、サービスロボットや運輸機器等に搭載されて機能安全確保のための安全制御を実行する。安全制御装置1は、安全関連アプリケーションと非安全関連アプリケーションを同一のコンピュータシステムで実行するよう構成される。図1は、本実施の形態にかかる安全制御装置1の構成例を示すブロック図である。
【0025】
プロセッサ10は、プログラム(命令ストリーム)の取得、命令のデコード、命令のデコード結果に応じた演算処理を行う。なお、図1では、1つのプロセッサ10のみを示しているが、安全制御装置1は、複数のプロセッサ10を有するマルチプロセッサ構成であってもよい。また、プロセッサ10は、マルチコアプロセッサでもよい。プロセッサ10は、システムプログラムとしてのオペレーティングシステム(OS)100を実行することによりマルチプログラミング環境を提供する。マルチプログラミング環境とは、複数のプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するプログラムを切り替えたりすることによって、複数のプログラムがあたかも並列実行されているような環境を意味する。
【0026】
マルチプログラミングは、マルチプロセス、マルチスレッド、マルチタスク等と呼ばれる場合もある。プロセス、スレッド及びタスクは、マルチプログラミング環境で並列実行されるプログラム単位を意味する。本実施の形態のプロセッサ10が具備するマルチプログラミング環境は、マルチプロセス環境でもよいし、マルチスレッド環境でもよい。
【0027】
実行用メモリ11は、プロセッサ10によるプログラム実行のために使用されるメモリである。実行用メモリ11には、不揮発性メモリ13からロードされたプログラム(OS100及びアプリケーション101〜103等)、プロセッサ10の入出力データ等が記憶される。なお、プロセッサ10は、プログラムを不揮発性メモリ13から実行用メモリ11にロードすることなく、これらのプログラムを不揮発性メモリ13から直接実行してもよい。
【0028】
具体的には、実行用メモリ11は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)等のランダムアクセス可能な揮発性メモリとすればよい。図1の実行用メモリ11は、論理的な構成単位を示している。すなわち、実行用メモリ11は、例えば、複数のSRAMデバイスの組み合わせ、複数のDRAMデバイスの組み合わせ、又はSRAMデバイスとDRAMデバイスの組み合わせでもよい。
【0029】
I/Oポート12は、外部デバイスとの間のデータ送受信に使用される。例えば、安全制御装置1がサービスロボットに搭載される場合であれば、外部デバイスは、各種センサ及びサービスロボットを動作させるアクチュエータ等である。この場合、各種センサは、例えば、サービスロボット周囲の障害物を計測可能な視覚センサ、サービスロボットの姿勢を検知するための姿勢センサ、及びサービスロボットのアクチュエータの状態を検知するための回転センタ等のサービスロボットの内外の状態を検出するセンサを含む。
【0030】
不揮発性メモリ13は、電力の供給を受けることなく、実行用メモリ11に比べて安定的に記憶内容を維持することが可能なメモリデバイスである。例えば、不揮発性メモリ13は、ROM(Read Only Memory)、フラッシュメモリ、ハードディスクドライブ若しくは光ディスクドライブ、又はこれらの組み合わせである。不揮発性メモリ13は、OS100及びアプリケーション101〜103を格納する。なお、不揮発性メモリ13の少なくとも一部は安全制御装置1から取り外し可能に構成されてもよい。例えば、アプリケーション101〜103が格納されたメモリを取り外し可能としてもよい。また、不揮発性メモリ13の少なくとも一部は、安全制御装置1の外部に配置されてもよい。
【0031】
OS100は、プロセッサ10によって実行されることにより、プロセッサ10及び実行用メモリ11及び不揮発性メモリ13等のハードウェア資源を利用して、タスクスケジューリングを含むタスク管理、割り込み管理、時間管理、資源管理、タスク間同期およびタスク間通信機構の提供等を行う。
【0032】
さらに、機能安全の確保に関連する安全監視アプリケーション101及び安全制御アプリケーション103の通常制御アプリケーション102からの独立性を高めるため、OS100は、ハードウェア資源を、時間的および空間的に保護する機能を有する。ここで、ハードウェア資源とは、プロセッサ10、実行用メモリ11、I/Oポート12を含む。
【0033】
このうち、時間的な保護は、プロセッサ10の実行時間という時間的な資源をパーティショニングすることにより行う。具体的に述べると、時間的な保護は、プロセッサ10の実行時間をパーティショニングし、各パーティション(タイムパーティションと呼ぶ)にタスク(プロセス又はスレッド)を割り当てることにより行う。OS100のスケジューリング機能(パーティションスケジューラ21)は、各タイムパーティション(以下、TPと略称する場合がある。)に割り当てられたタスクに対して、プロセッサ10の実行時間を含む資源の利用を保証する。
【0034】
図2は、タイム・パーティショニングに関する概念図である。図2の例では、予め定められた1サイクル時間を3つのTP1、TP2及びTP3に分割する例を示している。例えば、1サイクル時間を100Tickとした場合、このうち前半の20TickがTP1、中間の30TickがTP2、後半の50TickがTP3と規定される。
【0035】
また、図2の例では、第1アプリケーション(APL1)〜第4アプリケーション(APL4)が、TP1〜TP3のいずれかに割り当てられている。OS100のスケジューリング機能(パーティションスケジューラ21)は、時間の経過に応じて、TP1〜TP3のいずれをアクティブにするかを選択・決定する。そして、アクティブなTPに割り当てられているアプリケーションが、プロセッサ10で実行される。
【0036】
一方、空間的な保護は、実行用メモリ11及びI/Oポート12を含む固定的な資源をパーティショニングし、各パーティション(リソースパーティションと呼ぶ)にタスクを割り当てることにより行う。OS100のスケジューリング機能(パーティションスケジューラ21)は、予め割り当てられたリソースパーティション(以下、RPと略称する場合がある。)を超えてタスクが他のリソースにアクセスすることを禁止する。
【0037】
図3は、リソース・パーティショニングに関する概念図である。図3の例では、2つのRP(RP1及びRP2)を示している。RP1には、実行用メモリ11及び不揮発性メモリ13の一部(A領域)と、I/Oポート12の一部(ポートA)が割り当てられている。また、RP2には、実行用メモリ11及び不揮発性メモリ13の他の一部(B領域)と、I/Oポート12の他の一部(ポートB)が割り当てられている。RP1からはRP2に割り当てられたリソースへのアクセスが禁止され、RP2からはRP1に割り当てられたリソースへのアクセスが禁止される。実行用メモリ11におけるリソース・パーティショニングは、後述するMMUのメモリ保護機能を利用して実現される。
【0038】
なお、全てのリソースがいずれかのRPに排他的に割り当てられる必要はない。つまり、複数のRPによって共有されるリソースがあってもよい。例えば、サービスロボットの安全制御を行う場合、アクチュエータには、通常制御アプリケーション102及び安全制御アプリケーション103の双方からアクセスできる必要がある。よって、通常制御アプリケーション102が属するRPと安全制御アプリケーション103が属するRPによって、アクチュエータを制御するためのI/Oポートを共有するとよい。
【0039】
図1に戻り説明を続ける。アプリケーション101〜103は、OS100及びプロセッサ10によって提供されるマルチプログラミング環境で実行される。このうち、安全監視アプリケーション101は、通常制御アプリケーション102の実行状況の監視と、安全制御アプリケーション103の実行状況の監視と、I/Oポート12への入出力データの監視と、をプロセッサ10に実行させるための命令コードを含む。さらに、安全監視アプリケーション101は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、安全監視アプリケーション101は、安全関連アプリケーションである。
【0040】
また、通常制御アプリケーション102は、サービスロボット等の制御対象に通常の機能・動作を行わせるための制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、通常制御アプリケーション102は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、通常制御アプリケーション102は、非安全関連アプリケーションである。
【0041】
また、安全制御アプリケーション103は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、安全制御アプリケーション103は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、安全制御アプリケーション103は、安全関連アプリケーションである。
【0042】
MMU14は、メモリ保護機能及び仮想記憶管理機能を有する。メモリ保護機能は、プロセッサ10から実行用メモリ11に対するアクセスを監視して、メモリ保護違反となるアクセスを検出する機能である。プロセッサ10から実行用メモリ11のあるアドレスに対するアクセスがあったときに、そのアクセスがそのアドレスに対するアクセス権限を有しているか否かを判定する。そして、そのアクセスがそのアドレスに対するアクセス権限を有していない場合には、そのアクセスをメモリ保護違反として検出するとともに、メモリ保護違反をプロセッサ10に通知する。また、この場合、MMU14は、実行用メモリ11に対するアクセスを抑止するようにしてもよい。
【0043】
MMU14は、このメモリ保護機能によって、実行用メモリ11におけるリソース・パーティショニングを実現する。具体的には、図3に例示する場合には、RP1に属するタスクには、RP1に割り当てられた実行用メモリ11の領域のみにアクセス可能なアクセス権限が付与され、RP2に属するタスクには、RP2に割り当てられた実行用メモリ11の領域のみにアクセス可能なアクセス権限が付与される。これによって、例えば、RP1に属するタスクが、RP2に割り当てられた実行用メモリ11の領域に対してアクセスした場合に、MMU14は、そのアクセスをメモリ保護違反として検出する。アクセス権限は、実行用メモリ11のページ単位に付与される。また、1ページのサイズとして、予め任意のサイズを定めることができる。
【0044】
仮想記憶管理機能は、プロセッサ10が実行用メモリ11にアクセスするときに指定された仮想アドレスを、その仮想アドレスに対応する物理アドレスに変換する機能である。すなわち、MMU14は、仮想記憶管理機能によって、プロセッサ10からの仮想アドレスを指定した実行用メモリ11へのアクセスを、その仮想アドレスが示す実行用メモリ11上のアドレスと同一のアドレスを示す物理アドレスを指定した実行用メモリ11へのアクセスに変換して、実行用メモリ11に発行する。
【0045】
ここで、アクセス権限及び仮想アドレスに対応する物理アドレスは、プロセッサ10によって、MMU14が有するTLB(Translation Look-aside Buffer)(図示せず)に設定される。TLBは、例えば、MMU14が有するレジスタ及びメモリ等の記憶装置(図示せず)に格納される。TLBは、複数のエントリを含んでいる。1エントリには、1つのページについての内容が設定される。1エントリには、ASID(アドレス空間識別子:Address Space Identification)、仮想アドレス、その仮想アドレスに対応する物理アドレス、ページに対するアクセス権限等が設定される。
【0046】
ASIDは、RPごとに一意に定められた値をとる。なお、本実施の形態では、1つのTPに1つのRPが対応することになるため、ASIDは、TPごとに一意に定められた値ともなる。TLBにおける仮想アドレスとして、仮想アドレスのうち、ページを特定可能な一定の範囲を示す仮想ページ番号が設定されることが一般的である。物理アドレスについても同様である。この場合は、仮想アドレスのうち、仮想ページ番号に該当する範囲を物理ページ番号とされているアドレスに置き換え、その他のオフセットアドレスを示す範囲をそのまま用いることで、仮想アドレスを物理アドレスに変換することができる。アクセス権限としては、データの読み出し権限、データの書き込み権限、及び、データ(命令)の実行権限の有無を設定することができる。すなわち、アクセス権限は、アクセス種別(読み出し、書き込み、又は実行)ごとに、その有無を設定することが可能である。
【0047】
例えば、実行用メモリ11上のあるページについて、あるTPに属するタスクからのデータの読み出し及び書き込みを許容する場合、エントリには、そのTPに対応するASID、そのページの仮想アドレス、そのページの物理アドレス、及び、読み出し権限及び書き込み権限を有りとしたアクセス権限等が設定される。
【0048】
プロセッサ10は、実行用メモリ11上のあるページ内のあるアドレスに対して、データの読み出し又は書き込みによるアクセスを行う場合、ASID、仮想アドレス、及びアクセス種別(読み出し又は書き込み)を指定したアクセスをMMU14に発行する。すなわち、ASID、仮想アドレス、及びアクセス種別のそれぞれを示す信号がMMU14に出力される。ASIDには、そのアクセスの発行元となったタスクに応じた値が指定される。すなわち、指定されたASIDを参照することで、どのTPに属するタスクの権限でのアクセスかを特定することができる。なお、本実施の形態では、同一のTPに属するタスクからアクセスには同一のASIDが指定されることになる。また、アクセス種別が書き込みである場合は、さらに実行用メモリ11に書き込むデータも指定される。
【0049】
MMU14は、TLBを参照して、指定されたASIDが設定されており、指定された仮想アドレスに対応する仮想アドレスが設定されており(仮想ページ番号が一致する)、かつ、指定されたアクセス種別の権限が有りに設定されているエントリを検出できた場合、そのアクセスを許容する。この場合、MMU14は、検出したエントリに基づいて、アクセスにおいて指定された仮想アドレスを物理アドレスに変換して、変換後の物理アドレスとアクセス種別を指定したアクセスを実行用メモリ11に発行する。すなわち、物理アドレス及びアクセス種別のそれぞれを示す信号が実行用メモリ11に出力される。また、アクセス種別が書き込みである場合は、さらに実行用メモリ11に書き込むデータも指定される。
【0050】
また、プロセッサ10は、実行用メモリ11上のあるページ内のあるアドレスに対して、データ(命令)の実行によるアクセスを行う場合、ASID及び仮想アドレスを指定したアクセスをMMU14に発行する。MMU14は、上述と同様に、アドレスの変換及びアクセス権限のチェックを行う。そして、MMU14は、そのアクセスを許容する場合、変換後の物理アドレスを指定したアクセスを実行用メモリ11に発行する。
【0051】
実行用メモリ11は、MMU14からのアクセスに応じて、そのアクセスに応じたデータの処理を行う。具体的には、実行用メモリ11は、読み出し又は書き込みによるアクセスであり、かつ、アクセス種別が読み出しである場合は、指定された物理アドレスのデータをプロセッサ10に出力する。実行用メモリ11は、読み出し又は書き込みによるアクセスであり、かつ、アクセス種別が書き込みである場合は、指定された物理アドレスに、指定されたデータを書き込む。実行用メモリ11は、データ(命令)の実行によるアクセスである場合、指定された物理アドレスのデータをプロセッサ10に出力する。
【0052】
一方、MMU14は、TLBを参照して、アクセスで指定された仮想アドレスに対応する仮想アドレスが設定されている(仮想ページ番号が一致する)が、指定されたASID及び指定されたアクセス種別の権限が設定されていない場合は、メモリ保護違反を検出する。なお、アクセスで指定された仮想アドレスに対応する仮想アドレスが設定されていない場合は、ページフォルトが検出されることになる。
【0053】
また、MMU14は、その有効/無効をプロセッサ10からの指示で切り替えることが可能である。すなわち、プロセッサ10がMMU14を有効にする旨の指示をMMU14に出力したとき、MMU14はその指示に応じて、上述したメモリ管理機能及び仮想記憶管理機能を有効にする。これによって、上述したメモリ保護違反の検出及びアドレスの変換が行われるようになる。一方、プロセッサ10がMMU14を無効にする旨の指示をMMU14に出力したとき、MMU14はその指示に応じて、上述したメモリ管理機能及び仮想管理機能を無効にする。これによって、上述したメモリ保護違反の検出及びアドレスの変換が行われないようになる。プロセッサ10は、MMU14を無効にしている場合、直接、物理アドレスを指定したアクセスを発行することで、実行用メモリ11に対してアクセスすることが可能である。この場合、MMU14は、アクセスで指定された物理アドレスをそのまま指定したアクセスを実行用メモリ11に発行する。
【0054】
なお、図1では、MMU14を、プロセッサ10の外部に有する場合について例示したが、プロセッサ10がMMU14を有するようにしてもよい。
【0055】
リセット回路15は、OS100からの信号に基づき、マイクロコントローラ20のリセットを行う。パーティションスケジューラ21からリセット回路15に定期的に送信信号を送信するようにし、リセット回路15は、パーティションスケジューラ21からの送信信号が途絶えた場合に、マイクロコントローラ20をリセットする。例えば、パーティションスケジューラ21は、後述するように、1Tickごとに動作するタイミングで送信信号を送信する。また、OS100で異常を検知した場合、又は、アプリケーション101〜103のいずれかから異常を示す結果通知を受けた場合に、パーティションスケジューラ21がリセット回路15にリセット信号を送信するようにして、それに応じて、リセット回路15がマイクロコントローラ20をリセットするようにしてもよい。このようにすることで、マイクロコントローラ20に不具合が発生した場合に、マイクロコントローラ20をリセットして復旧することができる。
【0056】
続いて以下では、パーティションスケジューラ21と、アプリケーション101〜103の起動により生成されるタスクと、の関係について、図4を用いて説明する。図4は、OS100によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ21とタスク24、26、28との関係を示す図である。
【0057】
マイクロコントローラ20は、プロセッサ10、実行用メモリ11、I/Oポート12、不揮発性メモリ13等を含む。なお、図4では、マイクロコントローラ20の外部にリセット回路15を備える構成を例示しているが、マイクロコントローラ20の内部にリセット回路15を含む構成としてもよい。
【0058】
マイクロコントローラ20には、外部のクロック源からのクロック信号が供給され、プロセッサ10等は、このクロック信号に基づく所定のタイマー周期で動作する。本実施の形態では、所定のタイマー周期を、1Tickであるとして説明する。このため、プロセッサ10によりOS100が実行されることで、パーティションスケジューラ21が1Tickごとに動作すると共に、各TPにおいて、タスクスケジューラ23、25、27およびタスク(安全監視タスク24、通常制御タスク26、安全制御タスク28)が1Tickごとに動作する。
【0059】
パーティションスケジューラ21は、1Tickごとに動作し、TPの切り替え(パーティション・スケジューリング)を行う。パーティションスケジューラ21は、次の1Tickの間にTP1〜TP3のいずれをアクティブにするかを選択・決定する。さらに、パーティションスケジューラ21は、選択したTPに関するタスクスケジューラの動作を開始させる。
【0060】
パーティションスケジューラ21によるパーティション・スケジューリングについて具体的に述べると、パーティションスケジューラ21は、スケジューリングテーブル22を参照し、TPの設定を定めたスケジューリングパターンに従って、パーティション・スケジューリングを行う。
【0061】
スケジューリングテーブル22は、TPの切り替え順序およびタイミングを規定したスケジューリングパターンを保持している。スケジューリングテーブル22は、例えば、実行用メモリ11に予め格納されている。なお、スケジューリングテーブル22は、少なくとも2つの異なるスケジューリングパターンを保持している。1つは、安全監視タスク24による異常検知が行われていない場合(つまり通常時)に適用されるスケジューリングパターンである。もう1つは、安全監視タスク24によって異常が検知された場合に適用されるスケジューリングパターンである。以下では、通常時に適用されるスケジューリングパターンを"通常制御スケジューリングパターン"と呼ぶ。また、異常検知時に適用されるスケジューリングパターンを"安全制御スケジューリングパターン"と呼ぶ。
【0062】
図5Aは、通常制御スケジューリングパターンの具体例を示している。図5Aでは、通常制御タスク26が属するTP2が1サイクル時間の前半(T1)に割り当てられている。また、安全監視タスク24が属するTP1が1サイクル時間の後半(T2)に割り当てられている。図5Aのスケジューリングパターンによれば、通常制御タスク26と安全監視タスク24が繰り返しスケジューリングされる。
【0063】
図5Bは、安全制御スケジューリングパターンの具体例を示している。図5Bでは、安全制御タスク28が属するTP3が1サイクル時間の前半(T3)に割り当てられている。また、安全監視タスク24が属するTP1が1サイクル時間の後半(T4)に割り当てられている。図5Bのスケジューリングパターンによれば、安全制御タスク28と安全監視タスク24が繰り返しスケジューリングされる。
【0064】
図4に戻り説明を続ける。タスクスケジューラ23、25、27は、それぞれが属するTP内でのタスクのスケジューリングを行う。各TP内でのタスクのスケジューリングには、一般的な優先度ベースのスケジューリングを適用すればよい。なお、図4では、各TPはそれぞれ1つのタスクのみを含むものとして図示しているが、1以上のタスクが含まれるようにしてもよい。例えば、通常制御用のTP2内には、通常制御タスクA及び通常制御タスクBの2つのタスクが含まれていてもよい。
【0065】
安全監視タスク24は、安全監視アプリケーション101の起動によって生成されるタスクである。図4の例では、安全監視タスク24は、TP1及びRP1に割り当てられている。安全監視タスク24は、非安全関連アプリケーションである通常制御タスク26の実行状況の監視と、安全関連アプリケーションである安全制御タスク28の実行状況の監視と、I/Oポート12の入出力データを監視する。安全監視タスク24は、自身が属するRP1に割り当てられた実行用メモリ11のリソースを使用しながら、自身の処理を実行するために必要な演算等を行う。さらに、安全監視タスク24は、タスクの実行状況を、パーティションスケジューラ21へ通知する。
【0066】
通常制御タスク26は、通常制御アプリケーション102の起動によって生成されるタスクである。図4の例では、通常制御タスク26は、TP2及びRP2に割り当てられている。通常制御タスク26は、サービスロボット等の制御対象に通常の機能・動作を行わせるための制御を行う。通常制御タスク26は、自身が属するRP2に割り当てられた実行用メモリ11のリソースを使用しながら、自身の処理を実行するために必要な演算等を行う。さらに、通常制御タスク26は、タスクの実行状況を、パーティションスケジューラ21へ通知する。
【0067】
安全制御タスク28は、安全制御アプリケーション103の起動によって生成されるタスクである。図4の例では、安全制御タスク28は、TP3及びRP3に割り当てられている。安全制御タスク28は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御を行う。安全制御タスク28は、自身が属するRP3に割り当てられた実行用メモリ11のリソースを使用しながら、自身の処理を実行するために必要な演算等を行う。さらに、安全制御タスク28は、タスクの実行状況を、パーティションスケジューラ21へ通知する。
【0068】
なお、各タスクからパーティションスケジューラ21へと結果を通知する具体的な構成としては、様々な手法を採用することができる。例えば、タスクがOS100のシステムコール(サービスコール)を呼び出し、OS100を介して、パーティションスケジューラ21に結果を通知することができる。具体的には、例えば、タスク間通信を行うシステムコールを呼び出す。また、例えば、タスクの実行状況に関するフラグを実行用メモリ11に格納するものとして、タスクがその実行状況に応じてフラグの値を設定し、パーティションスケジューラ21がフラグの設定値に応じてタスクの実行状況を判断することもできる。
【0069】
OS100は、MMU確認ルーチン29を含んでいる。MMU確認ルーチン29は、MMU14が正常に動作できているか否かを確認するルーチンである。具体的には、MMU確認ルーチン29は、MMU14の有効/無効を切り替える前に実行用メモリ11の特定のアドレスに対して書き込んだデータと、MMU14の有効/無効を切り替えた後にそのアドレスと同一のアドレスから読み出したデータとが一致するか否かによって、MMU14が正常に動作しているか否かを判定する。MMU14の有効/無効を切り替える前における書き込みで指定するアドレスと、MMU14の有効/無効を切り替えた後における読み出しで指定するアドレスは、一方が仮想アドレスとなり、他方が物理アドレスとなる。そのため、上述したデータが一致すれば、MMU14の有効時に正常にアドレスの変換が行われていることになり、MMU14が正常に動作していることが確認される。なお、このときのアクセスは、検査対象のページに対して、検査対象とするタスクによる書き込み権限及び読み出し権限を有りに設定して行うことになる。
【0070】
上述したように、パーティションスケジューラ21が1Tickごとに動作し、TP1〜TP3のいずれをアクティブにするかを選択・決定する。さらに、パーティションスケジューラ21が、選択したTPに関するタスクスケジューラの動作を開始させる。そして、タスクスケジューラ23、25、27が動作を開始することでタスクのスケジューリングが行われ、プロセッサ10が、タスクスケジューラ23、25、27によりスケジューリングされた順序に従って、TP内でのタスクを実行していく。これによって、アクティブなTPに割り当てられているアプリケーションが、プロセッサ10で実行される。
【0071】
続いて以下では、パーティションスケジューラ21によるパーティション・スケジューリングについて、図6を用いて説明する。図6は、発明の実施の形態1にかかるパーティションスケジューラ21の処理手順の具体例を示すフローチャートである。
【0072】
なお、図6では、通常制御スケジューリングパターン(例えば図5A)または安全制御スケジューリングパターン(例えば図5B)に従って、スケジューリングを実行する場合を例に説明する。すなわち、TP2またはTP3に続く次のTPはTP1であり、かつ、TP2での異常がTP1で検知された場合に、TP1からの結果を受けて次に選択・決定されるTPはTP3である場合を例に説明する。
【0073】
OS100は、1Tick経過するごとに(S11)、パーティションスケジューラ21を起動する(S12)。パーティションスケジューラ21は、スケジューリングパターンを参照して、TPの切り替えタイミングか否かを判定する(S13)。
【0074】
TPの切り替えタイミングでないと判定した場合(S13でNo)、パーティションスケジューラ21は、同一のTPXについての動作を継続させる。このため、TPの切り替えタイミングとなるまでの間、S11〜S13、S15、S16の処理が繰り返される。ここで、変数XはTPの番号を示し、Xは1〜3のうちのいずれかの値となる。すなわち、通常制御スケジューリングパターンに従ってパーティション・スケジューリングを実施している場合は、安全制御用のTP3を除いた、TP2及びTP1のいずれかを動作させる。
【0075】
一方、TPの切り替えタイミングであると判定した場合(S13でYes)、パーティションスケジューラ21は、TPの切り替えを実行する(S14)。このように、パーティションスケジューラ21は、次にアクティブにするTPを変更する(S13でYes)場合には、さらに、切り替え前のTPに属するタスクからの通知結果に応じて、切り替え前のTPが正常であったか否かを判断する。判断の結果、切り替え前のTPが異常であった場合、パーティションスケジューラ21は、次の1Tickの間にアクティブにするTPXを、安全制御スケジューリングパターンに従って、TP1及びTP3のいずれかから選択・決定する。判断の結果、正常であった場合、パーティションスケジューラ21は、次の1Tickの間にアクティブにするTPXを、通常制御スケジューリングパターンに従って、TP1及びTP2のいずれかを選択・決定する。
【0076】
パーティションスケジューラ21は、現在アクティブになっているTPXのタスクスケジューラを動作させる(S15)。S15で動作を開始したTPXのタスクスケジューラは、TPX内のタスクを優先度に応じて実行する(S16)。
【0077】
そして、1Tickが経過すると(S11)、パーティションスケジューラ21が、再びTPのスケジューリングを開始する(S12)。すなわち、パーティションスケジューラ21は、スケジューリングパターンに従って、次の1Tickの間にいずれのTPをアクティブにするかを選択・決定する。
【0078】
図6で示した処理に関して、パーティション・スケジューリングの具体例を説明する。まず、図5Aに例示した通常制御スケジューリングパターンに従って、S15においてTP2がアクティブの状態からスケジューリングを開始した場合を説明する。この場合、S15ではTPX=TP2として開始し、続くS16、S11〜S13にかけてもTPX=TP2のままである。そして、S13でNoが続く限り、TPX=TP2の状態が維持される。S13でYesとなり、S14でTP2からTP1へと変更された場合、続くS15〜S16、S11〜S13にかけてTP1のままである。そして、S13でNoが続く限り、TPX=TP1の状態が維持される。TP1がアクティブのときに、S16で、TP2に関する実行状況(データ入出力等)が正常であると判定されていた場合には、次のS14では、TPX=TP2となる(つまり、TP2から開始する通常制御スケジューリングパターンが継続される。)。一方で、S16で、TP2に関する実行状況(データ入出力等)が異常であると判定されていた場合には、次のS14で、TPX=TP3となる(つまり、TP3から開始する安全制御スケジューリングパターンに切り替わる。)。
【0079】
また、図5Bに例示した安全制御スケジューリングパターンに従って、S15においてTP3がアクティブの状態からスケジューリングを開始した場合を説明する。この場合、S15ではTPX=TP3として開始し、続くS16、S11〜S13にかけてもTPX=TP3のままである。そして、S13でNoが続く限り、TPX=TP3の状態が維持される。S13でYesとなり、S14でTP3からTP1へと変更された場合、続くS15〜S16、S11〜S13にかけてTP1のままである。そして、S13でNoが続く限り、TPX=TP1の状態が維持される。TP1がアクティブのときに、S16で、TP3に関する実行状況(データ入出力等)が正常であると判定されていた場合には、次のS14では、TPX=TP2とする(つまり、TP2から開始する通常制御スケジューリングパターンに切り替わる。)。一方で、S16で、TP3に関する実行状況(データ入出力等)に異常があると判定されていた場合には、次のS14で、TPX=TP3となる(つまり、TP3から開始する安全制御スケジューリングパターンが継続される。)。
【0080】
なお、上述の例では、スケジューリングパターンとして、3つのTP(安全監視用のTP1、通常制御用のTP2、安全制御用のTP3)のみを組み合わせた場合を例に説明したが、TP2のような通常制御用パーティションや、TP3のような安全制御用パーティションについては、それぞれ複数個存在するものとしてもよい。例えば、2つの通常制御用のTP2及びTP4と、安全監視用のTP1と、2つの安全制御用のTP3及びTP5と、が存在し、これら5つのTP(TP1〜TP5)を組み合わせてスケジューリングパターンを構成してもよい。この場合、S14では、パーティションスケジューラ21が、TPXに関する実行状況(データ入出力等)の異常状態の種類を判定し、その異常種類に応じて、安全制御用のTP3またはTP5のいずれかを選択すればよい。また、S14では、通常制御用のTP2またはTP4のいずれかを選択すればよい。
【0081】
上述したように、本実施の形態では、OS100は、安全監視用のTP1からの通知、または、各TPからの通知に応じて、次にアクティブとするパーティションを選択・決定するパーティションスケジューラ21を備えている。パーティションスケジューラ21は、各TPにおいて実行されるタスクとは独立して、所定のタイマー周期で動作する。
【0082】
独立に動作するパーティションスケジューラ21が、全てのTPから結果通知を受ける構成とすることで、パーティションスケジューラ21は、全てのTPに関する状況を一元的に把握することができる。このため、例えば、安全監視用のTP1からの結果通知に応じて、パーティションスケジューラ21が次のパーティションを決定・選択しようとする場合には、パーティションスケジューラ21は、各TPの状況を考慮した上で、正常状態にあるTPのみから次のパーティションを決定・選択することもできる。これによれば、より正確なパーティション・スケジューリングを実現することができるという効果を奏する。
【0083】
続いて、MMU確認ルーチン29によるMMU確認処理について、図7を用いて説明する。図7は、発明の実施の形態1にかかるMMU確認ルーチン29の処理手順の具体例を示すフローチャートである。OS100がMMU確認ルーチン29を実行することによって、以下に説明する処理手順が実行されることになる。なお、厳密には、以下に説明する処理は、OS100を実行するプロセッサ10によって実行されることになる。
【0084】
OS100は、検査対象とする実行用メモリ11のページと、検査対象とするTBLのエントリのそれぞれに格納されたデータのバックアップをとる(S20)。ここで、バックアップしたデータは、実行用メモリ11の他のページに格納するようにしてもよく、不揮発性メモリ13に格納するようにしてもよい。
【0085】
OS100は、検査対象のページの先頭と末尾のそれぞれにテストパターンとなるデータを書き込む(S21)。ここで、ページの先頭と末尾には、例えば4ワード等の予め任意に定めた固定長のデータを書き込むものとする。また、ここでは、MMU14が無効とされているものとする。すなわち、OS100は、物理アドレスを指定して実行用メモリ11に対する書き込みを行う。
【0086】
OS100は、検査対象のエントリに、検査対象のページに関する内容を設定する。具体的には、検査対象のエントリに、検査対象のタスクのASID、検査対象のページの仮想アドレス、検査対象のページの物理アドレス、並びに、読み出し権限及び書き込み権限を有りとしたアクセス権限等を設定する(S22)。なお、S21の前に、S22の処理を実行するようにしてもよい。
【0087】
OS100は、MMU14を有効にする(S23)。OS100は、検査対象のページの先頭と末尾のそれぞれに対して、テストパターンとなるデータを加算したデータを書き込む(S24)。具体的には、OS100は、S21では、予め定めた数値をテストパターンとして書き込んでいる。そして、OS100は、検査対象のページの先頭から書き込んだ数値を読み出して、読み出した数値とテストパターンの数値を加算する。OS100は、加算結果となる数値を、検査対象のページの先頭に書き込む。OS100は、これと同様の処理を検査対象のページの末尾に対しても行う。これによって、実行用メモリ11に対する読み出し及び書き込みが正常に行われているのであれば、予め定めた数値の2倍の値が、検査対象のページの先頭と末尾のそれぞれに書き込まれていることになる。なお、S24では、MMU14が有効にされているため、OS100は、仮想アドレスを指定して実行用メモリ11に対する読み出し及び書き込みを行う。
【0088】
OS100は、MMU14を無効にする(S25)。OS100は、検査対象のページの先頭と末尾のそれぞれから、書き込んだデータを読み出す。そして、OS100は、読み出したデータと、期待値となるデータとを比較する(S26)。すなわち、OS100は、読み出した数値が、テストパターンとなる数値の2倍の数値と一致するか否かを判定する。なお、S26では、MMU14が無効にされているため、OS100は、物理アドレスを指定して実行用メモリ11からの読み出しを行う。また、OS100は、S20において、バックアップしたデータを、検査対象のページと、検査対象のエントリに復元する(S27)。
【0089】
OS100は、比較したデータが一致する場合、MMU14が正常に動作していると判定する(S28でNo)。一方、OS100は、比較したデータが一致しない場合、MMU14が正常に動作していないと判定する(S28でYes)。この場合、OS100は、緊急停止ルーチンを実行する(S29)。
【0090】
ここで、緊急停止ルーチンは、制御対象の安全を確保するために、制御対象を緊急停止させる処理となる。例えば、図5Aに示す通常制御スケジューリングパターンに従って動作している場合、スケジューリングパターンを、図5Bに示す安全制御スケジューリングパターンに切り替えるようにしてもよい。また、パーティションスケジューラ21の次の動作タイミングで、TPを強制的にTP3に切り替えるようにしてもよい。そして、TP3へ切り替えた後は、例えば、安全制御タスク28によって制御対象を停止させる。また、OS100は、直接、制御対象を停止させるように制御するようにしてもよい。
【0091】
以上に説明したMMU確認ルーチン29の処理は、OS100に制御が移ったときにおける任意のタイミングで実行するようにしてよい。例えば、図8に示すように、TPにおいてそのTPに属する全てのタスクの実行が終了してOS100に制御が移ったときに、残りのTPの時間の間、処理を実行するようにしてもよい。このようにすることで、TPにおいて余った時間を有効利用することができる。
【0092】
なお、MMU確認ルーチン29で検査対象とするページ、タスク、及びエントリの組み合わせは、任意の組み合わせを、任意の順序で組み合わせていくようにしてよい。例えば、検査対象とするページは、実行用メモリ11の全てのページを先頭からの順番に、検査対象とするタスクは、全てのタスク24、26、28を対象として予め定めた順番に、検査対象とするエントリは、TLBの全てのエントリを先頭から順番に組み合わせて検査していくことで、全ての組み合わせに対するMMU14の動作確認を行うようにしてもよい。また、図8に示すように、TP2の余った時間でMMU14の動作確認を行う場合は、次にアクティブとなるTP1に属するタスクを検査対象としてMMU14の動作確認を行うようにしてもよい。
【0093】
以上に説明したMMU確認ルーチン29の処理手順では、物理アドレスでテストパターンの数値を書き込み、MMU14を有効にして書き込んだ数値を仮想アドレスで読み出し、読み出した数値にテストパターンの数値を加算した数値を仮想アドレスで書き込み、MMU14を無効にして書き込んだ数値を物理アドレスで読み出し、最終的に読み出した数値とテストパターンの数値の2倍の数値とを比較するようにしているが、これに限られない。例えば、物理アドレスでテストパターンの数値を書き込み、MMU14を有効にして書き込んだ数値を仮想アドレスで読み出し、読み出した数値とテストパターンの数値とを比較するとともに、仮想アドレスでテストパターンの数値を書き込み、MMU14を無効にして書き込んだ数値を物理アドレスで読み出し、読み出した数値とテストパターンの数値とを比較するようにしてもよい。そして、それらの比較のうち、どちらか一方でも一致しないと判定された場合は、MMU14が正常に動作しておらず、それらの比較のいずれも一致したと判定された場合には、MMU14が正常に動作していると判定するようにしてもよい。このようにしても、MMU14を有効にしての仮想アドレスでの読み出し及び書き込みと、MMU14を無効にしての物理アドレスでの読み出し及び書き込みの全てのパターンについて、MMU14の動作確認を行うことが可能だからである。しかしながら、好ましくは、図7で説明した処理手順とすることで、1回だけデータを比較するだけで、全てのパターンについて検証することができる。
【0094】
また、MMU確認ルーチン29として、テストパターンの数値を書き込み、MMU14の有効/無効を切り替えて、書き込んだ数値を読み出して、書き込んだ数値と読み出した数とを比較することのみを行うようにしてもよい。このようにしても、MMU14を有効又は無効のいずれかにしての書き込みと、そこからMMU14の有効/無効を切り替えた状態での読み出しとにおけるMMU14の動作確認を行うことが可能である。しかしながら、好ましくは、図7で説明した処理手順とすることで、上述したように全ての読み出し及び書き込みのパターンについて、MMU14の動作確認を行うことができる。
【0095】
以上に説明したMMU確認ルーチン29の処理手順では、ページの先頭と末尾に対して、データの書き込み及び読み出しを行っているが、これに限られない。例えば、先頭と末尾のいずれか一方に対して、データを書き込み及び読み出しするようにしてもよい。また、ページ全体に対して、データを書き込み及び読み出しするようにしてもよい。また、ページの先頭と末尾以外の任意の位置に対して、データの書き込み及び読み出しを行うようにしてもよい。しかしながら、好ましくは、上述したように、ページの先頭と末尾を対象とすることで、ページ全体を対象とする場合に比べて、書き込み及び読み出しを行うデータ量を減少させることができる。そのため、MMU14の動作確認における処理負荷を低減して、確認効率を向上することができる。また、ページの先頭と末尾を対象とすることで、境界値分析を行うこととなるため、MMU14の異常を検出する精度が向上することが期待される。
【0096】
以上に説明したMMU確認ルーチン29の処理手順では、MMU14が無効の状態から処理を開始する場合について例示したが、これに限られない。例えば、テスト開始時にMMU14が有効となっている場合は、S21で仮想アドレスでテストパターンの数値を書き込み、S23でMMU14を無効にして、S24で書き込んだ数値を物理アドレスで読み出し、読み出した数値にテストパターンの数値を加算した数値を物理アドレスで書き込み、S25でMMU14を有効にして、S26で書き込んだ数値を仮想アドレスで読み出すようにしてもよい。
【0097】
以上に説明したように、本実施の形態1では、物理アドレスを指定して実行用メモリ11に対してデータの書き込みを行った後、その物理アドレスに対応する仮想アドレスを指定してMMU14によるアドレスの変換を行って実行用メモリ11に対してデータの読み出しを行うようにしている。そして、書き込んだデータと、読み出したデータが一致するか否かを判定するようにしている。これによれば、データが一致した場合に、MMU14によるアドレスの変換が正常に行われていることを確認することができる。つまり、MMU14が正常に動作していることを確認することができる。
【0098】
また、この判定は、TLBに設定したアクセス権限通りに、メモリ保護違反が検出されて実行用メモリ11に対するアクセス抑止が行われることなく、実行用メモリ11に対してデータの書き込み及び読み出しが行えた場合に行うことができる。すなわち、本実施の形態1によれば、メモリ保護が正常に行われていることも確認することができる。
【0099】
<発明の実施の形態2>
続いて、本発明の実施の形態2にかかる安全制御装置について説明する。本実施の形態2にかかる安全制御装置の構成は、図1を参照して説明した実施の形態1にかかる安全制御装置の構成と同様であるため、その説明を省略する。以下では、パーティションスケジューラ30と、アプリケーション101〜103の起動により生成されるタスクと、の関係について、図9を用いて説明する。図9は、本実施の形態2にかかるパーティションスケジューラ30とタスク24、26、28との関係を示す図である。以下、実施の形態1と同様の内容については、適宜、その説明を省略する。
【0100】
図9に示すように、本実施の形態2は、実施の形態1と比較して、パーティションスケジューラ21に代えてパーティションスケジューラ30を有し、MMU確認ルーチン29がパーティションスケジューラ30に含まれる点が異なる。すなわち、本実施の形態2にかかるパーティションスケジューラ30は、実施の形態1にかかるパーティションスケジューラ21と比較して、MMU確認ルーチン29を実行する点が異なる。
【0101】
続いて、パーティションスケジューラ30によるパーティション・スケジューリングについて、図10を用いて説明する。図10は、発明の実施の形態2にかかるパーティションスケジューラ30の処理手順の具体例を示すフローチャートである。なお、図6を参照して説明した、実施の形態1にかかる処理手順と同様の処理手順については、同一の符号を付し、説明を省略する。本実施の形態2にかかる処理手順では、実施の形態1にかかる処理手順と比較して、S13でYesとなったときにS17を実行して、その次にS14を実行する点が異なる。
【0102】
TPの切り替えタイミングであると判定した場合(S13でYes)、パーティションスケジューラ30は、切り替え先のTPで利用するページについて、MMU確認ルーチン29を実行する(S17)。そして、パーティションスケジューラ30は、MMU確認ルーチン29を実行した後に、TPの切り替えを実行する(S14)。
【0103】
MMU確認ルーチン29における処理手順については、OS100のパーティションスケジューラ30が実行すること以外は、実施の形態1において図7を参照して説明した処理と同様となるため、その説明を省略する。ここで、本実施の形態2では、上述したように切り替え先のTPで利用するページについて、MMU確認ルーチン29を実行する。すなわち、パーティションスケジューラ30は、切り替え先のTPに属するタスクの権限(ASID)で、切り替え先のTPに属するタスクで利用するページについてMMU確認ルーチン29を実行する。具体的には、パーティションスケジューラ30は、MMU14のTLBを参照して、切り替え先のTPに対応するASIDが設定されているエントリを検索する。そして、パーティションスケジューラ30は、検索によって検出したエントリにおいて設定されているページを切り替え先のTPで利用するページとして認識する。
【0104】
ここで、通常、切り替え先のTPで利用するページについてのエントリでは、切り替え先のTPに属するタスクに対して、アクセス権限の全て(読み出し権限、書き込み権限、及び実行権限)が有りに設定されている。そのため、この場合、パーティションスケジューラ30は、S20でページのデータのみをバックアップして、S22ではTLBの設定は行わずに、S27でページのデータのみを復元することで、MMU確認ルーチン29を実施するようにしてもよい。ただし、仮に、読み出し権限及び書き込み権限のいずれかが無しに設定されている場合、パーティションスケジューラ30は、読み出し権限及び書き込み権限を有りに設定してMMU確認ルーチン29を実施する。
【0105】
以上に説明したように、本実施の形態2では、TPを切り替えるときに、切り替え先のTPで実行されるタスクがアクセスする実行用メモリ11のページについて、MMU14の動作確認を行うようにしている。これによれば、直近で使用される実行用メモリ11のページについてのMMU14の動作が正常に行われていることを確認することができる。そのため、MMU14の異常をより早く検出することが可能となり、より信頼性を向上することが可能となる。
【0106】
<発明の実施の形態3>
続いて、本発明の実施の形態3にかかる安全制御装置2について説明する。図11は、本実施の形態3にかかる安全制御装置2の構成例を示すブロック図である。以下、実施の形態1と同様の内容については、適宜、その説明を省略する。
【0107】
本実施の形態3にかかる安全制御装置2は、図1を参照して説明した実施の形態1にかかる安全制御装置1と比較して、OS100に代えてOS200を有し、さらにMMU確認アプリケーション104を有する点が異なる。
【0108】
MMU確認アプリケーション104は、MMU確認ルーチン29を実行することによって、MMU14が正常に動作しているか否かを確認する処理をプロセッサ10に実行させるための命令コードを含む。MMU確認アプリケーション104は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。MMU確認アプリケーション104は、安全関連アプリケーションである。なお、OS100とOS200との違いについては、後述する。
【0109】
続いて、パーティションスケジューラ21と、アプリケーション101〜104の起動により生成されるタスクと、の関係について、図12を用いて説明する。図12は、本実施の形態3にかかるパーティションスケジューラ21とタスク24、26、28、32との関係を示す図である。
【0110】
図11に示すように、本実施の形態3は、実施の形態1と比較して、OS100に代えてOS200を有し、スケジューリングテーブル22に代えてスケジューリングテーブル33を有し、さらにタスクスケジューラ31とMMU確認タスク32とを有する点が異なる。また、本実施の形態3は、実施の形態1と比較して、さらにTP4及びRP4が定義されている。TP4及びRP4には、タスクスケジューラ31とMMU確認タスク32とが属する。
【0111】
本実施の形態3にかかるOS200は、実施の形態1にかかるOS100と比較して、MMU確認ルーチン29を有しない点が異なる。すなわち、OS200によって、直接、MMU14の動作確認は行わない。後述するように、本実施の形態3では、OS200上で動作するMMU確認タスク32がMMU確認ルーチン29を実行する。
【0112】
タスクスケジューラ31は、タスクスケジューラ23、25、27と同様に、自身が属するTP4内のタスクのスケジューリングを行う。なお、図12では、TP4は1つのタスクのみを含むものとして図示しているが、1以上のタスクが含まれるようにしてもよい。
【0113】
MMU確認タスク32は、MMU確認アプリケーション104の起動によって生成されるタスクである。図12の例では、MMU確認タスク32は、TP4及びRP4に割り当てられている。MMU確認タスク32は、MMU確認ルーチン29を実行することによって、MMU14が正常に動作しているか否かを確認する。
【0114】
スケジューリングテーブル33は、図13A及び図13Bに示すスケジューリングパターンを保持している。図13Aは、通常制御スケジューリングパターンの具体例を示している。図13Aでは、1サイクル時間において、通常制御タスク26が属するTP2の期間(T1)、安全監視タスク24が属するTP1の期間(T2)、及びMMU確認タスク32が属するTP4の期間(T5)が割り当てられている。図13Bは、安全制御スケジューリングパターンの具体例を示している。図13Bでは、1サイクル時間において、安全監視タスク24が属するTP1の期間(T1)、安全監視タスク24が属するTP1の期間(T2)、及びMMU確認タスク32が属するTP4の期間(T6)が割り当てられている。
【0115】
MMU確認ルーチン29における処理手順については、MMU確認タスク32が実行すること以外は、実施の形態1において図7を参照して説明した処理と同様となるため、その説明を省略する。ここで、MMU確認タスク32は、TP4のタスクの権限でRP4に割り当てられたリソースしかアクセスすることができない。また、通常、OS200は、OS200上で動作するタスクからは、MMU14内のTLBのエントリへのアクセス及びMMU14の有効/無効の切り替えを実施することができないようにしている。そこで、本実施の形態3にかかるOS200は、MMU確認タスク32に対して、検査対象となるページ及びエントリへのデータのバックアップ及び復元のためのアクセスを可能とするAPI関数、検査対象となるタスクの権限(ASID)で検査対象となるページに対するデータの書き込み及び読み出しの発行を可能とするAPI関数、及び、MMU14の有効/無効の切り替えを可能とするAPI関数等を提供する。そして、MMU確認タスク32は、それぞれのAPI関数を使用して、MMU確認ルーチン29を実行する。
【0116】
また、MMU確認タスク32は、MMU14の異常を検出した場合(S28でYes)には、緊急停止ルーチン(S29)として、パーティションスケジューラ21に異常を通知する。そして、パーティションスケジューラ21は、その通知に応じて、スケジューリングパターンを、安全制御スケジューリングパターンに切り替えて、制御対象を緊急停止させる。
【0117】
以上に説明した本実施の形態3のように、MMU14の動作確認を行うための専用のTPを定義して、そのTPに属するタスクによって、MMU14の動作確認を行うようにすることもできる。
【0118】
<発明の実施の形態4>
続いて、本発明の実施の形態4にかかる安全制御装置について説明する。本実施の形態4にかかる安全制御装置の構成は、図1を参照して説明した実施の形態1にかかる安全制御装置の構成と同様であるため、その説明を省略する。以下では、パーティションスケジューラ21と、アプリケーション101〜103の起動により生成されるタスクと、の関係について、図14を用いて説明する。図14は、本実施の形態4にかかるパーティションスケジューラ21とタスク34〜36との関係を示す図である。以下、実施の形態1と同様の内容については、適宜、その説明を省略する。
【0119】
図14に示すように、本実施の形態4は、実施の形態1と比較して、OS100に代えてOS200を有し、安全監視タスク24、通常制御タスク26、及び安全制御タスク28に代えて安全監視タスク34、通常制御タスク35、及び安全制御タスク36を有する点が異なる。安全監視タスク34、通常制御タスク35、及び安全制御タスク36のそれぞれは、安全監視タスク24、通常制御タスク26、及び安全制御タスク28のそれぞれと比較して、MMU確認ルーチン29を有する点が異なる。
【0120】
本実施の形態4にかかるOS200は、実施の形態1にかかるOS100と比較して、実施の形態3にかかるOS200と同様にMMU確認ルーチン29を有しない。すなわち、OS200において、直接、MMU14の動作確認は行わない。
【0121】
本実施の形態4にかかる安全監視タスク34は、実施の形態1にかかる安全監視タスク24と比較して、さらに、MMU確認ルーチン29を実行することによって、MMU14が正常に動作しているか否かを確認する点が異なる。本実施の形態4にかかる通常制御タスク35は、実施の形態1にかかる通常制御タスク26と比較して、さらに、MMU確認ルーチン29を実行することによって、MMU14が正常に動作しているか否かを確認する点が異なる。本実施の形態4にかかる安全制御タスク36は、実施の形態1にかかる安全制御タスク28と比較して、さらに、MMU確認ルーチン29を実行することによって、MMU14が正常に動作しているか否かを確認する点が異なる。
【0122】
MMU確認ルーチン29における処理手順については、安全監視タスク34、通常制御タスク35、及び安全制御タスク36のそれぞれが実行すること以外は、実施の形態1において図7を参照して説明した処理と同様となるため、その説明を省略する。ここで、安全監視タスク34、通常制御タスク35、及び安全制御タスク36のそれぞれは、それぞれが属するTPで利用するページについて、MMU確認ルーチン29を実行する。すなわち、それぞれのタスク34〜36は、それぞれのタスク34〜36の権限(ASID)で、それぞれのタスク34〜36が利用するページについてMMU確認ルーチン29を実行することになる。ここで、それぞれのタスク34〜36が利用するページを特定する方法については、実施の形態2において説明した方法と同様であるため、説明を省略する。
【0123】
ここで、通常、タスク34〜36のそれぞれが属するTPで利用するページについてのエントリでは、それぞれのタスク34〜36に対して、アクセス権限の全て(読み出し権限、書き込み権限、及び実行権限)が有りに設定されている。そのため、この場合、それぞれのタスク34〜36は、S20でページのデータのみをバックアップして、S22ではTLBの設定は行わずに、S27でページのデータのみを復元することで、MMU確認ルーチン29を実施するようにしてもよい。ただし、仮に、読み出し権限及び書き込み権限のいずれかが無しに設定されている場合、それぞれのタスク34〜36は、読み出し権限及び書き込み権限を有りに設定してMMU確認ルーチン29を実施する。
【0124】
また、通常、OS200は、OS200上で動作するタスクからは、MMU14内のTLBのエントリへのアクセス及びMMU14の有効/無効の切り替えを実施することができないようにしている。そこで、本実施の形態4にかかるOS200は、実施の形態3にかかるOS200と同様に、各タスク34〜36に対して、検査対象となるページ及びエントリへのデータのバックアップ及び復元のためのアクセスを可能とするAPI関数、及び、MMU14の有効/無効の切り替えを可能とするAPI関数等を提供する。そして、各タスク34〜36は、それぞれのAPI関数を使用して、MMU確認ルーチン29を実行する。
【0125】
また、各タスク34〜36は、MMU14の異常を検出した場合(S28でYes)には、緊急停止ルーチン(S29)として、パーティションスケジューラ21に異常を通知する。そして、パーティションスケジューラ21は、その通知に応じて、スケジューリングパターンを、安全制御スケジューリングパターンに切り替えて、制御対象を緊急停止させる。
【0126】
以上に説明したように、本実施の形態4では、TP1〜3のそれぞれにおいて、それぞれのTPに属するタスクによって、それぞれのTPに対応するRPに割り当てられた実行用メモリ11のページについてMMU14の動作確認を行うようにすることもできる。
【0127】
<発明の実施の形態5>
続いて、本発明の実施の形態5にかかる安全制御装置について説明する。図15は、本実施の形態5にかかる安全制御装置3の構成例を示すブロック図である。以下、実施の形態1と同様の内容については、適宜、その説明を省略する。
【0128】
本実施の形態5にかかる安全制御装置3は、図1を参照して説明した実施の形態1にかかる安全制御装置1と比較して、MMU14に代えてMMU16を有し、さらにROM17を有する点が異なる。
【0129】
本実施の形態5にかかるMMU16は、実施の形態1にかかるMMU14と比較して、実行用メモリ11に代えてROM17を管理対象とする点が異なる。すなわち、本実施の形態5では、MMU16のメモリ保護機能及び仮想記憶管理機能によって、ROM17が管理される場合について説明する。
【0130】
MMU16は、メモリ保護機能によって、実施の形態1にかかるMMU14と同様に、ROM17におけるリソース・パーティショニングを実現する。すなわち、プロセッサ10からROM17のあるアドレスに対するアクセスがあったときに、そのアクセスがそのアドレスに対するアクセス権限を有しているか否かを判定する。そして、そのアクセスがそのアドレスに対するアクセス権限を有していない場合には、そのアクセスをメモリ保護違反として検出するとともに、メモリ保護違反をプロセッサ10に通知する。また、この場合、MMU16は、ROM17に対するアクセスを抑止するようにしてもよい。
【0131】
また、MMU16は、仮想記憶管理機能によって、実施の形態1にかかるMMU14と同様に、プロセッサ10がROM17にアクセスするときに指定されたアドレスを、仮想アドレスから物理アドレスに変換する。すなわち、MMU16は、仮想記憶管理機能によって、プロセッサ10からの仮想アドレスを指定したROM17へのアクセスを、物理アドレスを指定したROM17へのアクセスに変換して、実行用メモリ11に発行する。
【0132】
なお、これらの処理は、MMU16が有するTLB(図示せず)を参照することで行われるが、その具体的な処理内容については、実施の形態1にかかるMMU14と同様であるため、その説明を省略する。
【0133】
ROM17は、マスクROM、PROM(Programmable ROM)等の読み出しアクセスのみが可能なメモリである。図15のROM17は、論理的な構成単位を示している。すなわち、ROM17は、例えば、複数のマスクROMデバイスの組み合わせ、複数のPROMデバイスの組み合わせ、又はマスクROMデバイスとPROMデバイスの組み合わせであってもよい。
【0134】
続いて、パーティションスケジューラ21と、アプリケーション101〜104の起動により生成されるタスクと、の関係について、図16を用いて説明する。図16は、本実施の形態5にかかるパーティションスケジューラ21とタスク24、26、28との関係を示す図である。
【0135】
図16に示すように、本実施の形態5は、実施の形態1と比較して、MMU確認ルーチン29に代えてMMU確認ルーチン37を有する点が異なる。MMU確認ルーチン37は、MMU16が正常に動作できているか否かを確認するルーチンである。具体的には、MMU確認ルーチン37は、MMU16の有効/無効を切り替える前にROM17の特定のアドレスから読み出したデータと、MMU16の有効/無効を切り替えた後にそのアドレスと同一のアドレスから読み出したデータとが一致するか否かによって、MMU16が正常に動作しているか否かを判定する。MMU16の有効/無効を切り替える前における書き込みで指定するアドレスと、MMU16の有効/無効を切り替えた後における読み出しで指定するアドレスは、一方が仮想アドレスとなり、他方が物理アドレスとなる。そのため、上述したデータが一致すれば、MMU16の有効時に正常にアドレスの変換が行われていることになり、MMU16が正常に動作していることが確認される。なお、このときのアクセスは、検査対象のページに対して、検査対象とするタスクによる読み出し権限を有りに設定して行うことになる。
【0136】
続いて、MMU確認ルーチン37によるMMU確認処理について、図17を用いて説明する。図17は、発明の実施の形態5にかかるMMU確認ルーチン37の処理手順の具体例を示すフローチャートである。OS100がMMU確認ルーチン37を実行することによって、以下に説明する処理手順が実行されることになる。なお、厳密には、以下に説明する処理は、プロセッサ10によって実行されることになる。
【0137】
ここで、OS100は、MMU確認ルーチン37を実行する以前に、予め定めた任意のタイミングでROM17の全域にわたって、事前にデータを読み出しておく。例えば、OS100の起動時にデータを読み出しておく。なお、ここでは、MMU16を無効としてROM17のデータを読み出しているものとする。このとき、OS100は、予め任意に定めた固定長ずつでデータを読み出して、読み出したデータのそれぞれのCRC(Cyclic Redundancy Check)を算出する。そして、OS100は、算出したCRCを実行用メモリ11又は不揮発性メモリ13に格納しておく。
【0138】
OS100は、検査対象とするTBLのエントリに格納されたデータのバックアップをとる(S30)。ここで、バックアップしたデータは、実行用メモリ11に格納するようにしてもよく、不揮発性メモリ13に格納するようにしてもよい。なお、ここでは、MMU16は、無効にされているものとする。
【0139】
OS100は、検査対象のTBLのエントリにおいて、検査対象のページに関する内容を設定する。具体的には、エントリに、検査対象のタスクのASID、検査対象のページの仮想アドレス、検査対象のページの物理アドレス、及び、読み出し権限を有りとしたアクセス権限等を設定する(S31)。
【0140】
OS100は、MMU14を有効にする(S32)。OS100は、検査対象のページから、上述した固定長のデータを読み出して、読み出したデータのCRCを算出する(S33)。なお、ここでは、例えば、前回に読み出したデータに続くデータを読み出すものとする。また、S32では、MMU14が有効にされているため、OS100は、仮想アドレスを指定して実行用メモリ11に対する読み出しを行う。
【0141】
OS100は、MMU14を無効にする(S34)。OS100は、S30において、バックアップしたデータを、検査対象のエントリに復元する(S35)。OS100は、読み出したデータのCRCの算出が完了したとき(S36でYes)、算出したCRCと、そのCRCを算出したデータを読み出した仮想アドレスが示すROM17上のアドレスと同一のアドレスを示す物理アドレスから事前に読み出して算出していたCRCとを比較する(S37)。
【0142】
OS100は、比較したCRCが一致する場合(S37でYes)、MMU16が正常に動作していると判定する。一方、OS100は、比較したCRCが一致しない場合(37でNo)、MMU16が正常に動作していないと判定する。この場合、OS100は、緊急停止ルーチンを実行する(S29)。
【0143】
以上に説明したMMU確認ルーチン37の処理は、OS100に制御が移ったときにおける任意のタイミングで実行するようにしてよい。例えば、図8に示すように、TPにおいてそのTPに属する全てのタスクの実行が終了してOS100に制御が移ったときに、残りのTPの時間の間、実行するようにしてもよい。このようにすることで、TPにおいて余った時間を有効利用することができる。
【0144】
MMU確認ルーチン37で検査対象とするページ、タスク、及びエントリの組み合わせは、任意の組み合わせを、任意の順序で組み合わせていくようにしてよい。例えば、検査対象とするページは、ROM17の全てのページを先頭からの順番に、検査対象とするタスクは、全てのタスク24、26、28を対象として予め定めた順番に、検査対象とするエントリは、TLBの全てのエントリを先頭から順番に組み合わせて検査していくことで、全ての組み合わせに対するMMU16の動作確認を行うようにしてもよい。さらに、ROM17の全てのページを先頭から順番に検査していく場合、ROM17の先頭から上述したように固定長ずつデータを読み出して検査を行っていくようにしてもよい。この場合、1ページの先頭から末尾まで全てのデータについての検査が終わってから、検査対象とするページをそのページの次のページに切り替えることになる。また、図8に示すように、TP2の余った時間でMMU16の動作確認を行う場合は、次にアクティブとなるTP1に属するタスクを検査対象としてMMU16の動作確認を行うようにしてもよい。また、実施の形態1と同様に、ページの先頭と末尾の所定サイズのデータについてのみ、検査を行うようにしてもよい。
【0145】
以上に説明したMMU確認ルーチン37の処理手順では、事前にMMU16が無効の状態で物理アドレスでデータを読み出してCRCを算出しておき、MMU16を有効にしてデータを読み出してCRCを算出しているが、これに限られない。例えば、事前にMMU16が有効の状態で仮想アドレスでデータを読み出してCRCを算出しておき、S32でMMU16を無効にして、S33で物理アドレスでデータを読み出してCRCを算出するようにしてもよい。この場合、S34でMMU16を有効にすることになる。
【0146】
以上に説明したMMU確認ルーチン37の処理手順では、事前にROM17の全てデータを読み出してCRCを算出するようにしているが、これに限られない。例えば、S31とS32の間で、物理アドレスでデータを読み出してCRCを算出し、S32でMMU16を無効にして、S33で仮想アドレスでデータを読み出してCRCを算出するようにしてもよい。すなわち、その都度、比較するデータの双方を読み出すようにしてもよい。しかしながら、好ましくは、上述した処理手順のように、事前にROM17の全てのデータを読み出すことで、データの読み出し回数を低減することができる。そのため、MMU16の動作確認における処理負荷を低減して、確認効率を向上することができる。これは、検査対象がROM17であり、それに格納されるデータが不変であることを利用している。
【0147】
以上に説明したMMU確認ルーチン37の処理手順では、CRCを算出して比較するようにしているが、これに限られない。読み出したデータそのものを比較するようにしてもよい。しかしながら、好ましくは、上述した処理手順のように、読み出したデータからCRCを算出してそれを保持しておくようにすることで、読み出したデータそのものを保持するよりも、必要な記憶容量を低減することができる。また、データの同一性を検証するためにCRC以外の誤り検出符号を使用するようにしてもよい。誤り検出符号として、例えば、CRC(Cyclic Redundancy Check)、パリティ、チェックサム、ハッシュ関数等を使用することができる。
【0148】
以上に説明したように、本実施の形態5では、物理アドレスを指定してROM17に対してデータの読み出しを行った後、その物理アドレスに対応する仮想アドレスを指定してMMU16によるアドレスの変換を行ってROM17に対してデータの読み出しを行うようにしている。そして、読み出したデータが一致するか否かを判定するようにしている。これによれば、データが一致した場合に、MMU16によるアドレスの変換が正常に行われていることを確認することができる。つまり、MMU16が正常に動作していることを確認することができる。
【0149】
<発明の実施の形態6>
続いて、本発明の実施の形態6にかかる安全制御装置について説明する。本実施の形態6にかかる安全制御装置の構成は、図1を参照して説明した実施の形態1にかかる安全制御装置の構成と同様であるため、その説明を省略する。以下では、パーティションスケジューラ30と、アプリケーション101〜103の起動により生成されるタスクと、の関係について、図18を用いて説明する。図18は、本実施の形態6にかかるパーティションスケジューラ30とタスク24、26、28との関係を示す図である。以下、実施の形態5と同様の内容については、適宜、その説明を省略する。
【0150】
図18に示すように、本実施の形態6は、実施の形態1と比較して、実施の形態2と同様にパーティションスケジューラ21に代えてパーティションスケジューラ30を有し、MMU確認ルーチン37がパーティションスケジューラ30に含まれる点が異なる。すなわち、パーティションスケジューラ30は、実施の形態1にかかるパーティションスケジューラ21と比較して、MMU確認ルーチン37を実行する点が異なる。
【0151】
パーティションスケジューラ30の処理手順については、MMU確認ルーチン29に代えてMMU確認ルーチン37を実行すること以外は、実施の形態2において図10を参照して説明した処理と同様となるため、その説明を省略する。また、MMU確認ルーチン37における処理手順については、OS100のパーティションスケジューラ30が実行すること以外は、実施の形態5において図17を参照して説明した処理と同様となるため、その説明を省略する。
【0152】
ここで、本実施の形態6では、実施の形態2と同様に切り替え先のTPで利用するページについて、MMU確認ルーチン37を実行する。ここで、通常、切り替え先のTPで利用するページについてのエントリでは、切り替え先のTPに属するタスクに対して、アクセス権限の全て(読み出し権限、書き込み権限、及び実行権限)が有りに設定されている。そのため、この場合は、パーティションスケジューラ30は、S30、S31、及びS35は行わずに、MMU確認ルーチン37を実施するようにしてもよい。ただし、仮に、読み出し権限が無しに設定されている場合、パーティションスケジューラ30は、読み出し権限を有りに設定してMMU確認ルーチン37を実施する。
【0153】
以上に説明したように、本実施の形態6では、TPを切り替えるときに、切り替え先のTPで実行されるタスクがアクセスするROM17のページについて、MMU16の動作確認を行うようにしている。これによれば、直近で使用されるROM17のページについてのMMU16の動作が正常に行われていることを確認することができる。そのため、MMU16の異常をより早く検出することが可能となり、より信頼性を向上することが可能となる。
【0154】
<発明の実施の形態7>
続いて、本発明の実施の形態7にかかる安全制御装置4について説明する。図19は、本実施の形態7にかかる安全制御装置9の構成例を示すブロック図である。以下、実施の形態5と同様の内容については、適宜、その説明を省略する。
【0155】
本実施の形態7にかかる安全制御装置2は、図15を参照して説明した実施の形態5にかかる安全制御装置3と比較して、OS100に代えてOS200を有し、さらにMMU確認アプリケーション104を有する点が異なる。
【0156】
本実施の形態7にかかるMMU確認アプリケーション104は、MMU確認ルーチン29に代えてMMU確認ルーチン37を実行すること以外は、実施の形態3にかかるMMU確認アプリケーション104と同様である。なお、OS100とOS200との違いについては、後述する。
【0157】
続いて、パーティションスケジューラ21と、アプリケーション101〜104の起動により生成されるタスクと、の関係について、図20を用いて説明する。図20は、本実施の形態7にかかるパーティションスケジューラ21とタスク24、26、28、32との関係を示す図である。
【0158】
図20に示すように、本実施の形態7は、実施の形態5と比較して、実施の形態3と同様に、OS100に代えてOS200を有し、スケジューリングテーブル22に代えてスケジューリングテーブル33を有し、さらにタスクスケジューラ31とMMU確認タスク32とを有する点が異なる。また、本実施の形態7は、実施の形態5と比較して、実施の形態3と同様に、さらにTP4及びRP4が定義されている。TP4及びRP4には、タスクスケジューラ31とMMU確認タスク32とが属する。
【0159】
本実施の形態7にかかるOS200は、実施の形態1にかかるOS100と比較して、実施の形態3にかかるOS200と同様にMMU確認ルーチン37を有しない点が異なる。すなわち、OS200によって、直接、MMU16の動作確認は行わない。後述するように、本実施の形態7では、OS200上で動作するMMU確認タスク32がMMU確認ルーチン37を実行する。
【0160】
本実施の形態7にかかるタスクスケジューラ31は、実施の形態3にかかるタスクスケジューラ31と同様である。本実施の形態7にかかるMMU確認タスク32は、MMU確認ルーチン29に代えてMMU確認ルーチン37を実行すること以外は、実施の形態3にかかるMMU確認タスク32と同様である。本実施の形態7にかかるスケジューリングテーブル33は、図13A及び図13Bを参照して説明した、実施の形態3にかかるスケジューリングテーブル33と同様である。
【0161】
MMU確認ルーチン37における処理手順については、MMU確認タスク32が実行すること以外は、実施の形態5において図17を参照して説明した処理と同様となるため、その説明を省略する。また、本実施の形態7にかかるOS200は、本実施の形態3にかかるOS200と同様に、MMU確認タスク32に対して、各種API関数を提供する。そして、MMU確認タスク32は、それぞれのAPI関数を使用して、MMU確認ルーチン37を実行する。
【0162】
以上に説明した本実施の形態7のように、MMU16の動作確認を行うための専用のTPを定義して、そのTPに属するタスクによって、MMU16の動作確認を行うようにすることもできる。
【0163】
<発明の実施の形態8>
続いて、本発明の実施の形態8にかかる安全制御装置について説明する。本実施の形態8にかかる安全制御装置の構成は、図15を参照して説明した実施の形態5にかかる安全制御装置の構成と同様であるため、その説明を省略する。以下では、パーティションスケジューラ21と、アプリケーション101〜103の起動により生成されるタスクと、の関係について、図21を用いて説明する。図21は、本実施の形態8にかかるパーティションスケジューラ21とタスク34〜36との関係を示す図である。以下、実施の形態5と同様の内容については、適宜、その説明を省略する。
【0164】
図21に示すように、本実施の形態8は、実施の形態5と比較して、実施の形態4と同様に、OS100に代えてOS200を有し、安全監視タスク24、通常制御タスク26、及び安全制御タスク28に代えて安全監視タスク34、通常制御タスク35、及び安全制御タスク36を有する点が異なる。安全監視タスク34、通常制御タスク35、及び安全制御タスク36のそれぞれは、安全監視タスク24、通常制御タスク26、及び安全制御タスク28のそれぞれと比較して、MMU確認ルーチン37を有する点が異なる。すなわち、本実施の形態8にかかる安全監視タスク34、通常制御タスク35、及び安全制御タスク36のそれぞれは、MMU確認ルーチン29に代えてMMU確認ルーチン37を有する点以外は、本実施の形態4にかかる安全監視タスク34、通常制御タスク35、及び安全制御タスク36と同様である。
【0165】
本実施の形態8にかかるOS200は、実施の形態1にかかるOS100と比較して、実施の形態7にかかるOS200と同様にMMU確認ルーチン37を有しない。すなわち、OS200において、直接、MMU16の動作確認は行わない。
【0166】
MMU確認ルーチン37における処理手順については、安全監視タスク34、通常制御タスク35、及び安全制御タスク36のそれぞれが実行すること以外は、実施の形態5において図17を参照して説明した処理と同様となるため、その説明を省略する。ここで、本実施の形態8にかかる安全監視タスク34、通常制御タスク35、及び安全制御タスク36のそれぞれは、実施の形態4にかかる安全監視タスク34、通常制御タスク35、及び安全制御タスク36と同様に、それぞれが属するTPで利用するページについて、MMU確認ルーチン37を実行する。
【0167】
また、本実施の形態8にかかるOS200は、本実施の形態7にかかるOS200と同様に、各タスク34〜36に対して、各種API関数を提供する。そして、各タスク34〜36は、それぞれのAPI関数を使用して、MMU確認ルーチン37を実行する。
【0168】
以上に説明したように、本実施の形態8では、TP1〜3のそれぞれにおいて、それぞれのTPに属するタスクによって、それぞれのTPに対応するRPに割り当てられたROM17のページについてMMU16の動作確認を行うようにすることもできる。
【0169】
発明の他の実施の形態.
本実施の形態では、TPのそれぞれに属するタスクが、それぞれ安全監視タスク24、33、通常制御タスク26、34及び安全制御タスク28、35である場合について例示したが、タスクの種類は、これに限られない。安全監視タスク24、通常制御タスク26及び安全制御タスク28に限られず、その他の任意の制御対象の制御に関する処理を実行するタスクを有するようにしてもよい。
【0170】
例えば、図22に示すようなタスク38〜40を有するようにしてもよい。なお、この場合、安全制御装置は、アプリケーション101〜103に代えて、タスク38〜40に対応するアプリケーションを有する必要があるが、その点は自明であるため図示及び説明を省略する。
【0171】
監視制御タスク38は、制御対象を制御する。具体的には、監視制御タスク38は、通常制御タスク39及び安全制御タスク40からの指令値に基づいて、制御対象のアクチュエータを制御する。通常制御タスク39は、制御対象に通常の機能・動作を行わせるための制御計算を行う。具体的には、通常制御タスク39は、通常制御におけるアクチュエータの制御計算をして、アクチュエータの指令値を算出する。通常制御タスク39は、算出した指令値を監視制御タスク38に出力する。安全制御タスク40は、機能安全を確保するために定められた制御計算を行う。具体的には、安全制御タスク40は、安全制御におけるアクチュエータの制御計算をして、アクチュエータの指令値を算出する。安全制御タスク40は、算出した指令値を監視制御タスク38に出力する。監視制御タスク38は、通常制御タスク39又は安全制御タスク40から出力された指令値に基づいてアクチュエータを制御する。
【0172】
さらに、監視制御タスク38は、制御対象のセンサから、センサ値を取得する。監視制御タスク38は、取得したセンサ値を通常制御タスク39及び安全制御タスク40に出力する。通常制御タスク39及び安全制御タスク40のそれぞれは、監視制御タスク38から出力されたセンサ値に基づいて、アクチュエータの制御計算を行うようにしてもよい。
【0173】
また、その他に、例えば、図23に示すようなタスク41〜43を有するようにしてもよい。なお、この場合、安全制御装置は、アプリケーション101〜103に代えて、タスク41〜43に対応するアプリケーションを有する必要があるが、その点は自明であるため図示及び説明を省略する。
【0174】
監視タスク41は、制御対象のセンサから、センサ値を取得する。このセンサには、上述したように制御対象の姿勢を検知するための姿勢センサを含む。ここで説明する例では、制御対象として、人が搭乗することができる走行装置に適用した場合について説明する。この場合、監視タスク41は、搭乗者による重心移動を姿勢センサにより検知することができる。監視タスク41は、取得したセンサ値をHMI(Human Machine Interface)タスク39に出力する。
【0175】
HMIタスク43は、監視タスク41から出力されたセンサ値に基づいて、制御対象のアクチュエータの制御計算をして、アクチュエータの指令値を算出する。HMIタスク43は、算出した指令値を制御タスク42に出力する。制御タスク42は、HMIタスク43から出力された指令値に基づいて、アクチュエータを制御する。
【0176】
これによれば、搭乗者の操作に応じて制御対象が制御されるというHMIを実現することができる。例えば、搭乗者が重心を前後に移動させることで制御対象が前後後退を行い、搭乗者が重心を左右に移動させることで制御対象が左右旋回を行うといった制御が可能となる。これについては、実施の形態1〜8及び図22によって説明した例についても同様のことが言える。具体的には、安全監視タスク24、33又は監視制御タスク38が取得したセンサ値に応じて、通常制御タスク26、34及び安全制御タスク28、35、もしくは、通常制御タスク39及び安全制御タスク40が同様の制御をすることで、HMIを実現することが可能である。また、本実施の形態によれば、より信頼性を向上した制御対象の制御を行うことが可能となる。そのため、以上に説明したように、人が搭乗することができる走行装置を制御対象として適用することで、より安全性を向上した制御対象の制御を行うことが可能となる。
【0177】
なお、走行装置として、例えば、立ち乗り方の同軸二輪車とすることもできる。その場合は、アクチュエータを制御することで、車輪が回転動作をすることになる。また、安全制御装置自体も制御対象に搭載される構成としてもよい。
【0178】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【0179】
本実施の形態では、OSが、TP1〜TP3を有する場合について例示したが、TPの種類及び数は、これに限られない。スケジューリングパターンについても、本実施の形態に例示したものに限られない。
【0180】
本実施の形態では、タスクの数が3つである場合について例示したが、タスクの数は、これに限られない。例えば、本実施の形態では、TPがTP1〜TP3の3つである場合について例示したが、TPの数を3つ以外の数とし、それぞれのTPが1つ以上の任意の数のタスクを有するようにしてもよい。
【0181】
本実施の形態では、TP(RP)ごとに異なるアクセス権限を付与する場合について例示した。すなわち、本実施の形態では、同一のTPに属するタスクに対して同一のアクセス権限を付与する場合について例示したが、これに限られない。例えば、タスクごとに異なるアクセス権限を付与するようにしてもよい。この場合は、タスクごとにASIDが一意に定義されることになる。また、この場合は、実施の形態2、6において、切り替え先のTPに属するタスクのそれぞれで利用するページについて、MMU確認ルーチン29を実行するようにすればよい。
【0182】
本実施の形態では、タイム・パーティショニングを採用したマルチタスクOSについて例示したが、これに限られない。タイム・パーティショニングを採用していないマルチタスクOSに適用することもできる。この場合は、タスクごとにASIDが一意に定義されることになる。
【0183】
本実施の形態では、実施の形態1〜4におけるMMU14の管理対象をRAMである実行用メモリ11とし、実施の形態5〜8の管理対象をROM17とした場合について例示したが、MMUが管理対象とする記憶装置は、RAM及びROMのいずれかに限られない。例えば、本実施の形態1〜4及び実施の形態5〜8を組み合わせて、RAM及びROMの双方を管理しているMMUの動作確認を行うようにしてもよい。
【0184】
また、MMU確認ルーチンを実施前に、プロセッサ10に対するMMUに関連しない割り込みを抑止して、MMU確認ルーチンの実施後に、割り込み抑止を解除するようにしてもよい。このようにすることで、ページ及びTLBのエントリに検査時のデータが格納されたまま、他の処理が行われることを防止することができる。
【符号の説明】
【0185】
1、2、3、4 安全制御装置
10 プロセッサ
11 実行用メモリ
12 I/Oポート
13 不揮発性メモリ
14、16 MMU
15 リセット回路
17 ROM
20 マイクロコントローラ
21、30 パーティションスケジューラ
22、33 スケジューリングテーブル
23、25、27、31 タスクスケジューラ
24、34 安全監視タスク
26、35、39 通常制御タスク
28、36、40 安全制御タスク
29、37 MMU確認ルーチン
32 MMU確認タスク
38 監視制御タスク
41 監視タスク
42 制御タスク
43 HMIタスク
100、200 オペレーティングシステム
101 安全監視アプリケーション
102 通常制御アプリケーション
103 安全制御アプリケーション
104 MMU確認アプリケーション

【特許請求の範囲】
【請求項1】
メモリと、
前記メモリの物理アドレス又は当該メモリの物理アドレスに対応する仮想アドレスを指定することによって、当該メモリの物理アドレスに対してデータの読み出し又は書き込みを行うためのシステムプログラムと、
前記システムプログラムを実行するプロセッサと、
前記プロセッサからの前記メモリに対する前記仮想アドレスを指定した読み出し及び書き込みにおいて、当該読み出し及び当該書き込みにおいて指定された仮想アドレスをそれに対応する物理アドレスに変換するメモリ管理装置と、を備え、
前記プロセッサは、前記システムプログラムを実行することによって、
前記仮想アドレスを指定して前記メモリに対してデータの読み出しもしくは書き込みを行う第1のアクセスを実施した後、当該仮想アドレスに対応する物理アドレスを指定して前記メモリに対してデータの読み出しを行う第2のアクセスを実施するか、
又は、
前記物理アドレスを指定して前記メモリに対してデータの読み出しもしくは書き込みを行う第1のアクセスを実施した後、当該物理アドレスに対応する仮想アドレスを指定して前記メモリに対してデータの読み出しを行う第2のアクセスを実施して、
前記第1のアクセスにおいて読み出した又は書き込んだデータと、前記第2のアクセスにおいて読み出したデータが一致するか否かを判定する、
情報処理装置。
【請求項2】
前記情報処理装置は、制御対象を制御する制御装置であって、
前記システムプログラムは、前記制御対象を制御するとともに、それに伴って前記仮想アドレスを指定して前記メモリに対してデータの読み出しもしくは書き込みを行う制御関連タスクを実行する、
請求項1に記載の情報処理装置。
【請求項3】
前記システムプログラムは、前記制御関連タスクが実行される制御関連タイムパーティションを含む複数のタイムパーティションのスケジューリング内容を示すスケジューリング情報に従って、前記制御関連タスクをスケジューリングして実行し、
前記システムプログラムは、前記タイムパーティションを前記制御関連タイムパーティションに切り替えるとき、当該制御関連タイムパーティションで実行される制御関連タスクがアクセスする仮想アドレスについて、前記判定を前記プロセッサに実行させる、
請求項2に記載の情報処理装置。
【請求項4】
前記プロセッサは、前記システムプログラムを実行することによって、
前記第1のアクセスでは前記仮想アドレスを指定して前記データの書き込みを実施した後、前記第2のアクセスでは当該仮想アドレスに対応する物理アドレスを指定して前記データの読み出しを実施するとともに、前記物理アドレスを指定して前記メモリに対してデータの書き込みを行う第3のアクセスを実施した後、当該物理アドレスに対応する仮想アドレスを指定して前記メモリに対してデータの読み出しを行う第4のアクセスを実施するか、
又は、
前記第1のアクセスでは前記物理アドレスを指定して前記データの書き込みを実施した後、前記第2のアクセスでは当該物理アドレスに対応する仮想アドレスを指定して前記データの読み出しを実施するとともに、前記仮想アドレスを指定して前記メモリに対してデータの書き込みを行う第3のアクセスを実施した後、当該仮想アドレスに対応する物理アドレスを指定して前記メモリに対してデータの読み出しを行う第4のアクセスを実施して、
前記第1のアクセスにおいて書き込んだデータと、前記第2のアクセスにおいて読み出したデータが一致するか否か、及び、前記第3のアクセスにおいて書き込んだデータと、前記第4のアクセスにおいて読み出したデータが一致するか否かを判定する、
請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記プロセッサは、
前記第2のアクセスを実施した後に、前記第3のアクセスを実施するものであり、
前記第1のアクセスでは、所定の値を示すデータを書き込み、
前記第3のアクセスでは、前記第2のアクセスで読み出したデータが示す値に、前記所定の値を加算した値を示すデータを書き込み、
前記判定では、前記第4のアクセスで読み出したデータが示す値が、前記所定の値の2倍の値を示すデータとなっている場合に、前記第1のアクセスにおいて書き込んだデータと、前記第2のアクセスにおいて読み出したデータが一致し、かつ、前記第3のアクセスにおいて書き込んだデータと、前記第4のアクセスにおいて読み出したデータが一致すると判定する、
請求項4に記載の情報処理装置。
【請求項6】
前記メモリは、ROM(Read Only Memory)であり、
前記プロセッサは、前記第1のアクセスでは、前記メモリに対してデータの読み出しを行う、
請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項7】
前記第1のアクセスは、前記ROMに格納される全てのデータを予め読み出すものであり、
前記プロセッサは、前記第2のアクセスと前記判定を繰り返すことによって、前記第1のアクセスにおいて読み出したデータと、前記第2のアクセスにおいて読み出したデータが一致するか否かを順次判定する、
請求項6に記載の情報処理装置。
【請求項8】
前記プロセッサは、前記第1のアクセスによって読み出した全てのデータのそれぞれについて誤り検出符号を算出しておき、前記第2のアクセスによって前記データを読み出す毎に、当該読み出したデータの誤り検出符号を算出し、
前記判定では、前記第1のアクセスにおいて読み出したデータから算出された誤り検出符号と、前記第2のアクセスにおいて読み出したデータから算出された誤り検出符号が一致するか否かによって、前記第1のアクセスにおいて読み出したデータと、前記第2のアクセスにおいて読み出したデータが一致するか否かを判定する、
請求項7に記載の情報処理装置。
【請求項9】
メモリの物理アドレス又は当該メモリの物理アドレスに対応する仮想アドレスを指定することによって、当該メモリの物理アドレスに対してデータの読み出し又は書き込みを行うプロセッサからの前記メモリに対する前記仮想アドレスを指定した読み出し及び書き込みにおいて、当該読み出し及び当該書き込みにおいて指定された仮想アドレスをそれに対応する物理アドレスに変換するメモリ管理装置の動作確認方法であって、
前記プロセッサが、
前記仮想アドレスを指定して前記メモリに対してデータの読み出しもしくは書き込みを行う第1のアクセスを実施した後、当該仮想アドレスに対応する物理アドレスを指定して前記メモリに対してデータの読み出しを行う第2のアクセスを実施するか、
又は、
前記物理アドレスを指定して前記メモリに対してデータの読み出しもしくは書き込みを行う第1のアクセスを実施した後、当該物理アドレスに対応する仮想アドレスを指定して前記メモリに対してデータの読み出しを行う第2のアクセスを実施するステップと、
前記プロセッサが、前記第1のアクセスにおいて読み出した又は書き込んだデータと、前記第2のアクセスにおいて読み出したデータが一致するか否かを比較するステップと、
を備えたメモリ管理装置の動作確認方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2013−109392(P2013−109392A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−251605(P2011−251605)
【出願日】平成23年11月17日(2011.11.17)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】