JP2013140477A - 情報処理装置及びメモリアクセス管理方法 - Google Patents

情報処理装置及びメモリアクセス管理方法 Download PDF

Info

Publication number
JP2013140477A
JP2013140477A JP2012000087A JP2012000087A JP2013140477A JP 2013140477 A JP2013140477 A JP 2013140477A JP 2012000087 A JP2012000087 A JP 2012000087A JP 2012000087 A JP2012000087 A JP 2012000087A JP 2013140477 A JP2013140477 A JP 2013140477A
Authority
JP
Japan
Prior art keywords
task
authority
access
authority information
safety
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.)
Granted
Application number
JP2012000087A
Other languages
English (en)
Other versions
JP5845902B2 (ja
Inventor
Tetsuya Taira
哲也 平
Koji Bito
浩司 尾藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2012000087A priority Critical patent/JP5845902B2/ja
Publication of JP2013140477A publication Critical patent/JP2013140477A/ja
Application granted granted Critical
Publication of JP5845902B2 publication Critical patent/JP5845902B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】特定のタスクによるメモリアクセスが遅延する確率を低減すること。
【解決手段】本発明にかかる情報処理装置は、複数の領域を含むメモリと、複数のタスクを実行するタスク実行部と、タスクによる領域に対するアクセス権限を示す権限情報を格納する記憶部と、タスクによる領域に対するアクセスがあったとき、そのタスクによるその領域に対するアクセス権限を示す権限情報が記憶部に格納されている場合は、その権限情報に基づいてアクセス権限を判定し、その権限情報が格納されていない場合は、そのタスクによるその領域に対するアクセス権限を示す権限情報を記憶部に格納するアクセス管理部を備える。アクセス管理部は、第1のタスクに関する権限情報を記憶部に格納するときに、第1のタスクに関する権限情報と、第1のタスクよりも実行の遅延が許容される第2のタスクに関する権限情報のうち、第2のタスクに関する権限情報を優先的に上書きする。
【選択図】図1

Description

本発明は、情報処理装置及びメモリアクセス管理方法に関し、特に複数のタスクのいずれかによる、メモリに含まれる複数の領域のいずれかに対するアクセス権限を示す権限情報を、所定数だけ格納して、タスクからのメモリアクセスを管理する情報処理装置及びメモリアクセス管理方法に関する。
サービスロボットは、外界センサや自己診断装置によって安全状態を常時監視し、何らかの危険を検知した場合に適切な安全制御ロジックを実行することで、機能安全を確保する必要がある。
上述したサービスロボットのほか、運輸機器等の電気的な原理で動作するシステムを対象とした機能安全に関する国際標準としてIEC 61508が制定されている。IEC 61508では、機能安全の確保のために設けられるシステムのことを安全関連系と呼んでいる。IEC 61508は、マイクロプロセッサ及びPLC(Programmable Logic Controller)等のハードウェアとコンピュータプログラム(ソフトウェア)によって安全関連系を構築するための様々な技法を定めている。IEC 61508で定められている技法を用いることで、コンピュータシステムを用いて安全関連系を構築することが可能となる。
一方で、近年、マイクロプロセッサ等のプログラマブル電子機器の処理能力が向上している。このため、マルチタスクOS(Operating System)を利用し、1つのコンピュータシステム上で様々なアプリケーションプログラムを並列実行することで、サービスロボット及び自動車等の機器に搭載されている複数用途のコンピュータシステムを統合することができる。
例えば特許文献1に、機能安全の確保に関するアプリケーションプログラム(以下、安全関連アプリケーションと呼ぶ)を、その他のアプリケーションプログラム(以下、非安全関連アプリケーションと呼ぶ)と共に1つのコンピュータシステム上で動作させる技術が開示されている。
IEC 61508で定められている技法を、安全関連アプリケーションおよび非安全関連アプリケーションを含むソフトウェア全体に適用すると、非安全関連アプリケーションにまで適用する必要性が生じる。このため、ソフトウェア開発コストが増大するという問題がある。
そこで、特許文献1に開示される技術では、システムプログラムのタイム・パーティションニングによって、安全関連アプリケーション(安全監視プログラム及び安全制御プログラム)を非安全関連アプリケーション(通常制御プログラム)から独立させている。このため、通常制御プログラムを安全関連系から除外することができ、コンピュータシステムを用いて構成される安全関連系の低コスト化に寄与することができる。
特開2010−271759号公報
ここで、特許文献1に開示の技術では、リソース・パーティショニングという技術を採用している。この技術では、実行用メモリ等の固定的な資源をリソースパーティションと言われるパーティションにパーティショニングしている。そして、アプリケーションは、予め割り当てられたリソースパーティションを超えて他のリソースにアクセスすることが禁止される。
本願出願人は、上述したリソース・パーティショニングを、MMU(Memory Management Unit)又はMPU(Memory Protection Unit)を利用して実現することを検討するにあたり、以下に説明する課題を見出した。以下、その課題について説明する。なお、以下に説明する内容は、本願出願人が新たに検討した内容であって、従来技術を説明したものではない。
タイム・パーティショニングを採用するオペレーティングシステムでは、図14に例示するように、タイムパーティションを切り替えることで、動作するアプリケーションも切り替えられる。図14では、「TP1」、「TP2」、「TP3」は、タイムパーティションを示し、「T1」、「T2」、「T3」のそれぞれは、TP1〜TP3のそれぞれに属するタスクを示している。なお、タスクは、非安全関連アプリケーション又は安全関連アプリケーションを実行することによって生成されているものとする。
図14では、TP1に属するT1は、非安全関連アプリケーションによって生成されており、TP2に属するT2は、安全関連アプリケーションによって生成されているものとする。この場合、機能安全上、非安全関連系であるTP1に属するT1は、安全関連系であるTP2のリソースパーティションにアクセスすることを抑止する必要がある。
これに対して、MMU又はMPUが有するメモリ保護機能を利用すれば、タイムパーティションのそれぞれに、そのタイムパーティションに対応するリソースパーティションに対するアクセス権限を付与することで、リソース・パーティショニングを行うことができる。具体的には、図15に示すように、TP1に属するT1には、TP1のリソースパーティションに割り当てられたメモリの領域のみにアクセス可能なアクセス権限を付与し、TP2に属するT2には、TP2のリソースパーティションに割り当てられたメモリの領域のみにアクセス可能なアクセス権限を付与する。このようにすることで、例えば、T1が、T2のリソースパーティションに割り当てられたメモリの領域に対してアクセスした場合に、MMU又はMPUによって、そのアクセスをメモリ保護違反として検出することが可能となる。これによって、あるタイムパーティションに属するタスクが、他のタイムパーティションに割り当てられたリソースパーティションにアクセスすることを抑止することが可能となる。
ここで、MMU及びMPUは、アクセス権限が定義されたテーブルを参照することによって、あるタスクがメモリ上のある領域にアクセスしたときに、そのタスクがその領域に対するアクセス権限を有しているか否かを判定して、メモリを保護している。このテーブルは、一般的には、複数のエントリを有しており、1つのエントリは、いずれか1つのタスクによる、メモリ内のいずれか1つのページ(領域)に対するアクセス権限を示す情報が含まれている。このテーブルは、MMUでは、TLB(Translation Look-aside Buffer)と呼ばれている。
以下、MMUの場合について説明する。MMUは、あるタスクからメモリ上のあるページに対するアクセスがあったとき、TLBを参照して、そのタスクがそのページに対してアクセス権限を有しているか否かを判定する。そして、MMUは、アクセス権限を有していないと判定した場合、そのアクセスをTLB保護違反(メモリ保護違反)として検出する。
しかしながら、MMUは、あるタスクからメモリ上のあるページに対するアクセスがあったときに、そのタスクによるそのページに対するアクセス権限を示すエントリがTLBに存在しない場合、それをTLBミスヒットとして検出する。TLBミスヒットを検出した場合には、そのアクセス権限を示す情報を作成して、TLBのいずれかのエントリに格納するという処理が発生してしまう。そして、再度、同一のメモリアクセスが発行され、新たに格納した情報に基づいてアクセス権限を判定する、ということが行われている。このように、TLBミスヒットが発生した場合には、メモリアクセスが、少なくとも、そのアクセス権限を示す情報を作成して、TLBに格納するまでは遅延することになる。また、この情報を作成するための処理時間は不確定である。そのため、直ぐに実行する必要がある処理が遅延してしまうという問題があった。例えば、安全関連アプリケーションのタスクは、機能安全の確保に関する処理を実行する関係上、その処理が遅延してしまうことは好ましくない。
ここで、MMUとMPUは、アクセス権限の無いメモリアクセスを検出するメモリ保護機能を有する点で共通する。それに対して、一般的に、MMUとMPUは、仮想アドレスを物理アドレスに変換する仮想記憶管理機能を、MMUとMPUのうち、MMUのみが有するという点で異なる。
本発明は、上述した知見に基づいてなされたものであって、特定のタスクによるメモリアクセスが遅延する確率を低減することができる情報処理装置及びメモリアクセス管理方法を提供することを目的とする。
本発明の第1の態様にかかる情報処理装置は、複数の領域を含むメモリと、複数のタスクを実行するタスク実行部と、前記複数のタスクのいずれかによる前記複数の領域のいずれかに対するアクセス権限を示す権限情報を、所定数だけ格納可能な記憶部と、前記タスク実行部から前記タスクによる前記領域に対するアクセスがあったとき、当該タスクによる当該領域に対するアクセス権限を示す権限情報が前記記憶部に格納されているか否かを判定して、当該権限情報が格納されている場合は、当該権限情報に基づいて前記アクセス権限を判定し、当該権限情報が格納されていない場合は、前記アクセス権限の判定を可能とするために、当該タスクによる当該領域に対するアクセス権限を示す権限情報を前記記憶部に格納するアクセス管理部と、を備え、前記複数のタスクは、第1のタスクと、当該第1のタスクよりも実行の遅延が許容される第2のタスクとを含み、前記アクセス管理部は、前記第1のタスクに関する権限情報を前記記憶部に格納するときに、前記記憶部に格納された権限情報のいずれかを上書きする必要がある場合は、前記第1のタスクに関する権限情報と前記第2のタスクに関する権限情報のうち、前記第2のタスクに関する権限情報を優先的に上書きするものである。
本発明の第2の態様にかかるメモリアクセス管理方法は、複数のタスクのうちのいずれかのタスクから、メモリに含まれる複数の領域のうちのいずれか領域に対するアクセスがあったとき、当該タスクによる当該領域に対するアクセス権限を示す権限情報が、前記複数のタスクのいずれかによる前記複数の領域のいずれかに対するアクセス権限を示す権限情報を所定数だけ格納可能な記憶部に格納されているか否かを判定する情報判定ステップと、前記権限情報が格納されている判定した場合は、当該権限情報に基づいて前記アクセス権限を判定する権限判定ステップと、前記権限情報が格納されていないと判定した場合は、前記アクセス権限の判定を可能とするために、前記アクセスをしたタスクによる前記アクセス先の領域に対するアクセス権限を示す権限情報を前記記憶部に格納する情報格納ステップと、を備え、前記複数のタスクは、第1のタスクと、当該第1のタスクよりも実行の遅延が許容される第2のタスクとを含み、前記情報格納ステップでは、前記第1のタスクに関する権限情報を前記記憶部に格納するときに、前記記憶部に格納された権限情報のいずれかを上書きする必要がある場合は、前記第1のタスクに関する権限情報と前記第2のタスクに関する権限情報のうち、前記第2のタスクに関する権限情報を優先的に上書きするものである。
上述した本発明の各態様によれば、特定のタスクによるメモリアクセスが遅延する確率を低減することができる情報処理装置及びメモリアクセス管理方法を提供することができる。
発明の実施の形態にかかる安全制御装置の構成例を示すブロック図である。 発明の実施の形態におけるタイム・パーティショニングの概念を説明するための図である。 発明の実施の形態におけるリソース・パーティショニングの概念を説明するための概念図である。 発明の実施の形態にかかるMMUの構成例を示すブロック図である。 発明の実施の形態にかかるTLBの一例を示す図である。 発明の実施の形態にかかるASIDのWildへの変換例を示す図である。 発明の実施の形態におけるパーティションスケジューラとタスクとの関係を示す図である。 スケジューリングパターンの具体例を示す図である。 スケジューリングパターンの具体例を示す図である。 発明の実施の形態にかかるパーティションスケジューラの処理手順の具体例を示すフローチャートである。 本発明の実施の形態にかかるエントリ情報登録処理の処理手順の具体例を示すフローチャートである。 本発明の実施の形態にかかるメモリアクセス処理の処理手順の具体例を示すフローチャートである。 その他の実施の形態にかかるパーティションスケジューラとタスクとの関係を示す図である。 その他の実施の形態にかかるパーティションスケジューラとタスクとの関係を示す図である。 課題を説明するための図である。 課題を説明するための図である。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
<発明の実施の形態>
本実施の形態にかかる安全制御装置1は、サービスロボットや運輸機器等に搭載されて機能安全確保のための安全制御を実行する。安全制御装置1は、安全関連アプリケーションと非安全関連アプリケーションを同一のコンピュータシステムで実行するよう構成される。図1は、本実施の形態にかかる安全制御装置1の構成例を示すブロック図である。
プロセッサ10は、プログラム(命令ストリーム)の取得、命令のデコード、命令のデコード結果に応じた演算処理を行う。なお、図1では、1つのプロセッサ10のみを示しているが、安全制御装置1は、複数のプロセッサ10を有するマルチプロセッサ構成であってもよい。また、プロセッサ10は、マルチコアプロセッサでもよい。プロセッサ10は、システムプログラムとしてのオペレーティングシステム(OS)100を実行することによりマルチプログラミング環境を提供する。マルチプログラミング環境とは、複数のプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するプログラムを切り替えたりすることによって、複数のプログラムがあたかも並列実行されているような環境を意味する。
マルチプログラミングは、マルチプロセス、マルチスレッド、マルチタスク等と呼ばれる場合もある。プロセス、スレッド及びタスクは、マルチプログラミング環境で並列実行されるプログラム単位を意味する。本実施の形態のプロセッサ10が具備するマルチプログラミング環境は、マルチプロセス環境でもよいし、マルチスレッド環境でもよい。
実行用メモリ11は、プロセッサ10によるプログラム実行のために使用されるメモリである。実行用メモリ11には、不揮発性メモリ13からロードされたプログラム(OS100及びアプリケーション101〜103等)、プロセッサ10の入出力データ等が記憶される。なお、プロセッサ10は、プログラムを不揮発性メモリ13から実行用メモリ11にロードすることなく、これらのプログラムを不揮発性メモリ13から直接実行してもよい。
具体的には、実行用メモリ11は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)等のランダムアクセス可能な揮発性メモリとすればよい。図1の実行用メモリ11は、論理的な構成単位を示している。すなわち、実行用メモリ11は、例えば、複数のSRAMデバイスの組み合わせ、複数のDRAMデバイスの組み合わせ、又はSRAMデバイスとDRAMデバイスの組み合わせでもよい。
I/Oポート12は、外部デバイスとの間のデータ送受信に使用される。例えば、安全制御装置1がサービスロボットに搭載される場合であれば、外部デバイスは、各種センサ及びサービスロボットを動作させるアクチュエータ等である。この場合、各種センサは、例えば、サービスロボット周囲の障害物を計測可能な視覚センサ、サービスロボットの姿勢を検知するための姿勢センサ、及びサービスロボットのアクチュエータの状態を検知するための回転センタ等のサービスロボットの内外の状態を検出するセンサを含む。
不揮発性メモリ13は、電力の供給を受けることなく、実行用メモリ11に比べて安定的に記憶内容を維持することが可能なメモリデバイスである。例えば、不揮発性メモリ13は、ROM(Read Only Memory)、フラッシュメモリ、ハードディスクドライブ若しくは光ディスクドライブ、又はこれらの組み合わせである。不揮発性メモリ13は、OS100及びアプリケーション101〜103を格納する。なお、不揮発性メモリ13の少なくとも一部は安全制御装置1から取り外し可能に構成されてもよい。例えば、アプリケーション101〜103が格納されたメモリを取り外し可能としてもよい。また、不揮発性メモリ13の少なくとも一部は、安全制御装置1の外部に配置されてもよい。
OS100は、プロセッサ10によって実行されることにより、プロセッサ10及び実行用メモリ11及び不揮発性メモリ13等のハードウェア資源を利用して、タスクスケジューリングを含むタスク管理、割り込み管理、時間管理、資源管理、タスク間同期およびタスク間通信機構の提供等を行う。
さらに、機能安全の確保に関連する安全監視アプリケーション101及び安全制御アプリケーション103の通常制御アプリケーション102からの独立性を高めるため、OS100は、ハードウェア資源を、時間的および空間的に保護する機能を有する。ここで、ハードウェア資源とは、プロセッサ10、実行用メモリ11、I/Oポート12を含む。
このうち、時間的な保護は、プロセッサ10の実行時間という時間的な資源をパーティショニングすることにより行う。具体的に述べると、時間的な保護は、プロセッサ10の実行時間をパーティショニングし、各パーティション(タイムパーティションと呼ぶ)にタスク(プロセス又はスレッド)を割り当てることにより行う。OS100のスケジューリング機能(パーティションスケジューラ21)は、各タイムパーティション(以下、TPと略称する場合がある。)に割り当てられたタスクに対して、プロセッサ10の実行時間を含む資源の利用を保証する。
図2は、タイム・パーティショニングに関する概念図である。図2の例では、予め定められた1サイクル時間を3つのTP1、TP2及びTP3に分割する例を示している。例えば、1サイクル時間を100Tickとした場合、このうち前半の20TickがTP1、中間の30TickがTP2、後半の50TickがTP3と規定される。
また、図2の例では、第1アプリケーション(APL1)〜第4アプリケーション(APL4)が、TP1〜TP3のいずれかに割り当てられている。OS100のスケジューリング機能(パーティションスケジューラ21)は、時間の経過に応じて、TP1〜TP3のいずれをアクティブにするかを選択・決定する。そして、アクティブなTPに割り当てられているアプリケーションが、プロセッサ10で実行される。
一方、空間的な保護は、実行用メモリ11及びI/Oポート12を含む固定的な資源をパーティショニングし、各パーティション(リソースパーティションと呼ぶ)にタスクを割り当てることにより行う。OS100のスケジューリング機能(パーティションスケジューラ21)は、予め割り当てられたリソースパーティション(以下、RPと略称する場合がある。)を超えてタスクが他のリソースにアクセスすることを禁止する。
図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のメモリ保護機能を利用して実現される。
なお、全てのリソースがいずれかのRPに排他的に割り当てられる必要はない。つまり、複数のRPによって共有されるリソースがあってもよい。例えば、サービスロボットの安全制御を行う場合、アクチュエータには、通常制御アプリケーション102及び安全制御アプリケーション103の双方からアクセスできる必要がある。よって、通常制御アプリケーション102が属するRPと安全制御アプリケーション103が属するRPによって、アクチュエータを制御するためのI/Oポートを共有するとよい。
図1に戻り説明を続ける。アプリケーション101〜103は、OS100及びプロセッサ10によって提供されるマルチプログラミング環境で実行される。このうち、安全監視アプリケーション101は、通常制御アプリケーション102の実行状況の監視と、安全制御アプリケーション103の実行状況の監視と、I/Oポート12への入出力データの監視と、をプロセッサ10に実行させるための命令コードを含む。さらに、安全監視アプリケーション101は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、安全監視アプリケーション101は、安全関連アプリケーションである。
また、通常制御アプリケーション102は、サービスロボット等の制御対象に通常の機能・動作を行わせるための制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、通常制御アプリケーション102は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、通常制御アプリケーション102は、非安全関連アプリケーションである。
また、安全制御アプリケーション103は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御手順をプロセッサ10に実行させるための命令コードを含む。さらに、安全制御アプリケーション103は、パーティションスケジューラ21への結果通知をプロセッサ10に実行させるための命令コードを含む。つまり、安全制御アプリケーション103は、安全関連アプリケーションである。
MMU14は、メモリ保護機能及び仮想記憶管理機能を有する。メモリ保護機能は、プロセッサ10から実行用メモリ11に対するアクセスを監視して、メモリ保護違反となるアクセスを検出する機能である。プロセッサ10から実行用メモリ11のあるアドレスに対するアクセスがあったときに、そのアクセスがそのアドレスに対するアクセス権限を有しているか否かを判定する。そして、そのアクセスがそのアドレスに対するアクセス権限を有していない場合には、そのアクセスをTLB保護違反(メモリ保護違反)として検出するとともに、TLB保護違反をプロセッサ10に通知する。また、この場合、MMU14は、実行用メモリ11に対するアクセスを抑止するようにしてもよい。
MMU14は、このメモリ保護機能によって、実行用メモリ11におけるリソース・パーティショニングを実現する。具体的には、図3に例示する場合には、RP1に属するタスクには、RP1に割り当てられた実行用メモリ11の領域のみにアクセス可能なアクセス権限が付与され、RP2に属するタスクには、RP2に割り当てられた実行用メモリ11の領域のみにアクセス可能なアクセス権限が付与される。これによって、例えば、RP1に属するタスクが、RP2に割り当てられた実行用メモリ11の領域に対してアクセスした場合に、MMU14は、そのアクセスをTLB保護違反として検出する。アクセス権限は、実行用メモリ11のページ単位に付与される。また、1ページのサイズとして、予め任意のサイズを定めることができる。
仮想記憶管理機能は、プロセッサ10が実行用メモリ11にアクセスするときに指定された仮想アドレスを、その仮想アドレスに対応する物理アドレスに変換する機能である。すなわち、MMU14は、仮想記憶管理機能によって、プロセッサ10からの仮想アドレスを指定した実行用メモリ11へのアクセスを、その仮想アドレスが示す実行用メモリ11上のアドレスと同一のアドレスを示す物理アドレスを指定した実行用メモリ11へのアクセスに変換して、実行用メモリ11に発行する。
図4は、MMU14の構成例を示すブロック図である。MMU14は、制御部141及びTLB142を有する。ここで、アクセス権限及び仮想アドレスに対応する物理アドレスは、プロセッサ10によって、MMU14が有するTLB142に設定される。TLB142は、例えば、MMU14が有するレジスタ及びメモリ等の記憶装置である。TLB142は、複数のエントリを含んでいる。なお、図4では、TLB142のエントリ数が64の場合について例示しているが、TLB142のエントリ数は、これに限られない。1エントリには、1つのページについての内容が設定される。1エントリには、ASID(アドレス空間識別子:Address Space Identification)、仮想アドレス、その仮想アドレスに対応する物理アドレス、そのASIDのタスクによるその物理アドレスのページに対するアクセス権限等が設定される。
ASIDは、RPごとに一意に定められた値をとる。なお、本実施の形態では、1つのTPに1つのRPが対応することになるため、ASIDは、TPごとに一意に定められた値ともなる。TLB142における仮想アドレスとして、仮想アドレスのうち、ページを特定可能な一定の範囲を示す仮想ページ番号が設定されることが一般的である。物理アドレスについても同様である。この場合は、仮想アドレスのうち、仮想ページ番号に該当する範囲を物理ページ番号とされているアドレスに置き換え、その他のオフセットアドレスを示す範囲をそのまま用いることで、仮想アドレスを物理アドレスに変換することができる。アクセス権限としては、データの読み出し権限、データの書き込み権限、及び、データ(命令)の実行権限の有無を設定することができる。すなわち、アクセス権限は、アクセス種別(読み出し、書き込み、又は実行)ごとに、その有無を設定することが可能である。
例えば、実行用メモリ11上のあるページについて、あるTPに属するタスクからのデータの読み出し及び書き込みを許容する場合、エントリには、そのTPに対応するASID、そのページの仮想アドレス、そのページの物理アドレス、及び、読み出し権限及び書き込み権限を有りとしたアクセス権限等が設定される。
プロセッサ10は、実行用メモリ11上のあるページ内のあるアドレスに対して、データの読み出し又は書き込みによるアクセスを行う場合、ASID、仮想アドレス、及びアクセス種別(読み出し又は書き込み)を指定したアクセスをMMU14に発行する。すなわち、ASID、仮想アドレス、及びアクセス種別のそれぞれを示す信号がMMU14に出力される。ASIDには、そのアクセスの発行元となったタスクに応じた値が指定される。すなわち、指定されたASIDを参照することで、どのTPに属するタスクの権限でのアクセスかを特定することができる。なお、本実施の形態では、同一のTPに属するタスクからアクセスには同一のASIDが指定されることになる。また、アクセス種別が書き込みである場合は、さらに実行用メモリ11に書き込むデータも指定される。
MMU14の制御部141は、TLB142を参照して、指定されたASIDが設定されており、指定された仮想アドレスが設定されており(又は仮想ページ番号が一致する)、かつ、指定されたアクセス種別の権限が有りに設定されているエントリを検出できた場合、そのアクセスを許容する。この場合、制御部141は、検出したエントリに基づいて、アクセスにおいて指定された仮想アドレスを物理アドレスに変換して、変換後の物理アドレスとアクセス種別を指定したアクセスを実行用メモリ11に発行する。すなわち、物理アドレス及びアクセス種別のそれぞれを示す信号が実行用メモリ11に出力される。また、アクセス種別が書き込みである場合は、さらに実行用メモリ11に書き込むデータも指定される。
また、プロセッサ10は、実行用メモリ11上のあるページ内のあるアドレスに対して、データ(命令)の実行によるアクセスを行う場合、ASID及び仮想アドレスを指定したアクセスをMMU14に発行する。制御部141は、上述と同様に、アドレスの変換及びアクセス権限のチェックを行う。すなわち、ここでのチェックでは、データ(命令)の実行権限の有無が判定される。そして、制御部141は、そのアクセスを許容する場合、変換後の物理アドレスを指定したアクセスを実行用メモリ11に発行する。
実行用メモリ11は、MMU14からのアクセスに応じて、そのアクセスに応じたデータの処理を行う。具体的には、実行用メモリ11は、読み出し又は書き込みによるアクセスであり、かつ、アクセス種別が読み出しである場合は、指定された物理アドレスのデータをプロセッサ10に出力する。実行用メモリ11は、読み出し又は書き込みによるアクセスであり、かつ、アクセス種別が書き込みである場合は、指定された物理アドレスに、指定されたデータを書き込む。実行用メモリ11は、データ(命令)の実行によるアクセスである場合、指定された物理アドレスのデータをプロセッサ10に出力する。
一方、制御部141は、TLB142を参照して、アクセスで指定された仮想アドレスが設定されており(又は仮想ページ番号が一致する)、かつ、指定されたASIDが設定されているエントリを検出したが、そのエントリにおいて、指定されたアクセス種別の権限が有りに設定されていない場合は、TLB保護違反を検出する。なお、アクセスで指定された仮想アドレス及び指定されたASIDが設定されているエントリを検出できなかった場合は、TLBミスヒットが検出されることになる。
制御部141は、TLBミスヒットを検出した場合、TLBミスヒットをプロセッサ10に通知する。また、制御部141は、TLBのエントリの中から、更新対象となるエントリを選択する。プロセッサ10は、制御部141からのTLBミスヒットの通知に応じて、TLBミスヒットとなったアクセスで指定していたASID及び仮想アドレスに基づいて、TLB142のエントリの情報(以下、「エントリ情報」とも呼ぶ)を作成する。この情報は、TLBミスヒットとなったアクセスで指定していたASID及び仮想アドレス、その仮想アドレスに対応する物理アドレス、そのASIDによるその物理アドレスで示されるページに対するアクセス権限を示す情報となる。プロセッサ10は、作成した情報をMMU14に出力する。制御部141は、プロセッサ10から出力された情報で、更新対象として選択したエントリを更新する。そして、プロセッサ10は、TLBミスヒットとなったアクセスと同一のアクセスを、再度、MMU14に発行する。これによって、TLBミスヒットが発生することなく、アクセス権限の判定が行われるようになる。
ここで、本実施の形態では、遅延無く実行することが好ましいタスクに関するエントリには、図5に示すように、ASIDとして、そのようなタスクであることを示す値を設定する。以下、この値を「Wild」と呼ぶ。なお、遅延無く実行することが好ましいタスクとして、安全関連アプリケーションを実行することによって生成されるタスクが該当する。すなわち、安全関連アプリケーションから生成された安全関連のタスクのASIDは、Wildに変換されてTLBのエントリに格納される。制御部141は、更新対象となるエントリを選択する場合、ASIDとしてWildが設定されていないエントリを優先的に選択する。これによれば、遅延無く実行することが好ましい安全関連のタスクに関するエントリがTLB142に存在する確率を高めることができる。すなわち、エントリの更新のために安全関連のタスクによるメモリアクセスが遅延する確率を低減することができる。また、安全関連のタスクによるメモリアクセスが待たされて、安全関連のタスクにおける処理が遅延する確率を低減することができる。
ここで、図5では、TLB142のエントリにおいて、仮想アドレスと物理アドレスに同一のアドレスが設定されている場合について例示しているが、異なるアドレスを設定するようにしてもよい。また、このように、仮想アドレスから物理アドレスへの変換が不要である場合は、MMU14の仮想記憶管理機能を無効にして、MMU14を利用するようにしてもよい。この場合、プロセッサ10は、物理アドレスを指定してメモリアクセスを発行することになる。また、この場合、制御部141は、プロセッサ10からのアクセスで指定された物理アドレスをそのまま指定したアクセスを実行用メモリ11に発行する。この場合は、TLB142には、例えば、図5に示すように、仮想アドレスに物理アドレスと同一のアドレスを設定しておけばよい。または、MMU14がTLB142の物理アドレスを参照して、上述したエントリの検出を行うようにしてもよい。
ここで、図6を参照して、ASIDからのWildの生成方法について説明する。Wildは、ASIDの値のうち、予め定められた位置のビット値をオン"1"に変化させた値として生成される。例えば、ASIDの下位から17ビット目を変化させる場合、図6に示すように、ASIDが"0x0001"である場合は、Wildとして"0x0101"が生成され、ASIDが"0x0002"である場合は、Wildとして"0x0102"が生成される。これは、例えば、下位から17ビット目の値を反転させることによって生成するようにしてもよく、下位から17ビット目がオンとなっている値"0x0100"との論理和として生成するようにしてもよい。プロセッサ10は、安全関連のタスクに関するエントリの情報を生成する場合には、このようにASIDをWildに変換してエントリの情報を生成する。
制御部141は、プロセッサ10からのメモリアクセスで指定されたASIDを検出する場合には、Wildであることを示すビット"1"を"0"にマスクしてから、指定されたASIDと比較する。例えば、図6に示す例では、下位から17ビット目の値を反転させることによってマスクするようにしてもよく、下位から17ビット目がオンとなっている値"0x0100"との論理和としてマスクするようにしてもよい。
なお、Wildの生成方法は、通常のASIDの値との違いを識別することができれば、上述した生成方法に限られない。例えば、図6の例では、1ビットのみの値を変化させた場合について例示したが、複数のビット値をオン"1"に変化させるようにしてもよい。また、ASIDの特定のビット位置のビット値を参照することで、Wildの値と、それ以外の値とを区別することができれば、これらにも限定されない。例えば、Wildである場合には、特定のビット値がオフ"0"となっており、Wildでない場合には、そのビット値がオン"1"となっているようにしてもよい。
なお、図1では、MMU14を、プロセッサ10の外部に有する場合について例示したが、プロセッサ10がMMU14を有するようにしてもよい。すなわち、プロセッサ10が、制御部141及びTLB142を有するようにしてもよい。
リセット回路15は、OS100からの信号に基づき、マイクロコントローラ20のリセットを行う。パーティションスケジューラ21からリセット回路15に定期的に送信信号を送信するようにし、リセット回路15は、パーティションスケジューラ21からの送信信号が途絶えた場合に、マイクロコントローラ20をリセットする。例えば、パーティションスケジューラ21は、後述するように、1Tickごとに動作するタイミングで送信信号を送信する。また、OS100で異常を検知した場合、又は、アプリケーション101〜103のいずれかから異常を示す結果通知を受けた場合に、パーティションスケジューラ21がリセット回路15にリセット信号を送信するようにして、それに応じて、リセット回路15がマイクロコントローラ20をリセットするようにしてもよい。このようにすることで、マイクロコントローラ20に不具合が発生した場合に、マイクロコントローラ20をリセットして復旧することができる。
続いて以下では、パーティションスケジューラ21と、アプリケーション101〜103の起動により生成されるタスクと、の関係について、図7を用いて説明する。図7は、OS100によって提供されるマルチプログラミング環境で起動される、パーティションスケジューラ21とタスク24、26、28との関係を示す図である。
マイクロコントローラ20は、プロセッサ10、実行用メモリ11、I/Oポート12、不揮発性メモリ13、MMU14等を含む。なお、図7では、マイクロコントローラ20の外部にリセット回路15を備える構成を例示しているが、マイクロコントローラ20の内部にリセット回路15を含む構成としてもよい。
マイクロコントローラ20には、外部のクロック源からのクロック信号が供給され、プロセッサ10等は、このクロック信号に基づく所定のタイマー周期で動作する。本実施の形態では、所定のタイマー周期を、1Tickであるとして説明する。このため、プロセッサ10によりOS100が実行されることで、パーティションスケジューラ21が1Tickごとに動作すると共に、各TPにおいて、タスクスケジューラ23、25、27およびタスク(安全監視タスク24、通常制御タスク26、安全制御タスク28)が1Tickごとに動作する。
パーティションスケジューラ21は、1Tickごとに動作し、TPの切り替え(パーティション・スケジューリング)を行う。パーティションスケジューラ21は、次の1Tickの間にTP1〜TP3のいずれをアクティブにするかを選択・決定する。さらに、パーティションスケジューラ21は、選択したTPに関するタスクスケジューラの動作を開始させる。
パーティションスケジューラ21によるパーティション・スケジューリングについて具体的に述べると、パーティションスケジューラ21は、スケジューリングテーブル22を参照し、TPの設定を定めたスケジューリングパターンに従って、パーティション・スケジューリングを行う。
スケジューリングテーブル22は、TPの切り替え順序およびタイミングを規定したスケジューリングパターンを保持している。スケジューリングテーブル22は、例えば、実行用メモリ11に予め格納されている。なお、スケジューリングテーブル22は、少なくとも2つの異なるスケジューリングパターンを保持している。1つは、安全監視タスク24による異常検知が行われていない場合(つまり通常時)に適用されるスケジューリングパターンである。もう1つは、安全監視タスク24によって異常が検知された場合に適用されるスケジューリングパターンである。以下では、通常時に適用されるスケジューリングパターンを"通常制御スケジューリングパターン"と呼ぶ。また、異常検知時に適用されるスケジューリングパターンを"安全制御スケジューリングパターン"と呼ぶ。
図8Aは、通常制御スケジューリングパターンの具体例を示している。図8Aでは、通常制御タスク26が属するTP2が1サイクル時間の前半(T1)に割り当てられている。また、安全監視タスク24が属するTP1が1サイクル時間の後半(T2)に割り当てられている。図8Aのスケジューリングパターンによれば、通常制御タスク26と安全監視タスク24が繰り返しスケジューリングされる。
図8Bは、安全制御スケジューリングパターンの具体例を示している。図8Bでは、安全制御タスク28が属するTP3が1サイクル時間の前半(T3)に割り当てられている。また、安全監視タスク24が属するTP1が1サイクル時間の後半(T4)に割り当てられている。図8Bのスケジューリングパターンによれば、安全制御タスク28と安全監視タスク24が繰り返しスケジューリングされる。
図7に戻り説明を続ける。タスクスケジューラ23、25、27は、それぞれが属するTP内でのタスクのスケジューリングを行う。各TP内でのタスクのスケジューリングには、一般的な優先度ベースのスケジューリングを適用すればよい。なお、図7では、各TPはそれぞれ1つのタスクのみを含むものとして図示しているが、1以上のタスクが含まれるようにしてもよい。例えば、通常制御用のTP2内には、通常制御タスクA及び通常制御タスクBの2つのタスクが含まれていてもよい。
安全監視タスク24は、安全監視アプリケーション101の起動によって生成されるタスクである。図7の例では、安全監視タスク24は、TP1及びRP1に割り当てられている。安全監視タスク24は、非安全関連アプリケーションである通常制御タスク26の実行状況の監視と、安全関連アプリケーションである安全制御タスク28の実行状況の監視と、I/Oポート12の入出力データを監視する。安全監視タスク24は、自身が属するRP1に割り当てられた実行用メモリ11のリソースを使用しながら、自身の処理を実行するために必要な演算等を行う。さらに、安全監視タスク24は、タスクの実行状況を、パーティションスケジューラ21へ通知する。
通常制御タスク26は、通常制御アプリケーション102の起動によって生成されるタスクである。図7の例では、通常制御タスク26は、TP2及びRP2に割り当てられている。通常制御タスク26は、サービスロボット等の制御対象に通常の機能・動作を行わせるための制御を行う。通常制御タスク26は、自身が属するRP2に割り当てられた実行用メモリ11のリソースを使用しながら、自身の処理を実行するために必要な演算等を行う。さらに、通常制御タスク26は、タスクの実行状況を、パーティションスケジューラ21へ通知する。
安全制御タスク28は、安全制御アプリケーション103の起動によって生成されるタスクである。図7の例では、安全制御タスク28は、TP3及びRP3に割り当てられている。安全制御タスク28は、何らかの異常が検出された場合に対応して、機能安全を確保するために定められた制御を行う。安全制御タスク28は、自身が属するRP3に割り当てられた実行用メモリ11のリソースを使用しながら、自身の処理を実行するために必要な演算等を行う。さらに、安全制御タスク28は、タスクの実行状況を、パーティションスケジューラ21へ通知する。
なお、各タスクからパーティションスケジューラ21へと結果を通知する具体的な構成としては、様々な手法を採用することができる。例えば、タスクがOS100のシステムコール(サービスコール)を呼び出し、OS100を介して、パーティションスケジューラ21に結果を通知することができる。具体的には、例えば、タスク間通信を行うシステムコールを呼び出す。また、例えば、タスクの実行状況に関するフラグを実行用メモリ11に格納するものとして、タスクがその実行状況に応じてフラグの値を設定し、パーティションスケジューラ21がフラグの設定値に応じてタスクの実行状況を判断することもできる。
以上より、安全監視タスク24及び安全制御タスク28は、タスクの実行状況及び制御対象等の監視や、機能安全を確保するために定められた制御等のように、制御対象の機能安全の確保に関する処理を実行するタスクとなる。それに対して、通常制御タスク26は、その他の制御対象の制御に関する処理を実行するタスクとなる。そのため、安全監視タスク24及び安全制御タスク28は、遅延無く実行することが好ましい安全関連のタスクとなり、通常制御タスク26は、安全監視タスク24及び安全制御タスク28と比較して、実行の遅延が許容される非安全関連のタスクとなる。
OS100は、TLB管理ルーチン29を含んでいる。TLB管理ルーチン29は、OS100の起動時、又は、MMU14からのTLBミスヒットの通知時などに、TLB142のエントリ情報を作成するルーチンである。具体的には、TLB管理ルーチン29は、MMU14からTLBミスヒットが通知されたときに、上述したように、そのTLBミスヒットを引き起こしたアクセスにおいて指定していたASID及び仮想アドレスに基づいて、TLB142のエントリ情報を作成する。そして、TLB管理ルーチン29は、作成したエントリ情報をMMU14に出力する。その結果、上述したように、制御部141によって、TLB142のいずれかのエントリがTLB管理ルーチン29から出力されたエントリ情報によって更新される。
上述したように、パーティションスケジューラ21が1Tickごとに動作し、TP1〜TP3のいずれをアクティブにするかを選択・決定する。さらに、パーティションスケジューラ21が、選択したTPに関するタスクスケジューラの動作を開始させる。そして、タスクスケジューラ23、25、27が動作を開始することでタスクのスケジューリングが行われ、プロセッサ10が、タスクスケジューラ23、25、27によりスケジューリングされた順序に従って、TP内でのタスクを実行していく。これによって、アクティブなTPに割り当てられているアプリケーションが、プロセッサ10で実行される。
続いて以下では、パーティションスケジューラ21によるパーティション・スケジューリングについて、図9を用いて説明する。図9は、発明の実施の形態1にかかるパーティションスケジューラ21の処理手順の具体例を示すフローチャートである。
なお、図9では、通常制御スケジューリングパターン(例えば図8A)または安全制御スケジューリングパターン(例えば図8B)に従って、スケジューリングを実行する場合を例に説明する。すなわち、TP2またはTP3に続く次のTPはTP1であり、かつ、TP2での異常がTP1で検知された場合に、TP1からの結果を受けて次に選択・決定されるTPはTP3である場合を例に説明する。
OS100は、1Tick経過するごとに(S11)、パーティションスケジューラ21を起動する(S12)。パーティションスケジューラ21は、スケジューリングパターンを参照して、TPの切り替えタイミングか否かを判定する(S13)。
TPの切り替えタイミングでないと判定した場合(S13でNo)、パーティションスケジューラ21は、同一のTPXについての動作を継続させる。このため、TPの切り替えタイミングとなるまでの間、S11〜S13、S15、S16の処理が繰り返される。ここで、変数XはTPの番号を示し、Xは1〜3のうちのいずれかの値となる。すなわち、通常制御スケジューリングパターンに従ってパーティション・スケジューリングを実施している場合は、安全制御用のTP3を除いた、TP2及びTP1のいずれかを動作させる。
一方、TPの切り替えタイミングであると判定した場合(S13でYes)、パーティションスケジューラ21は、TPの切り替えを実行する(S14)。このように、パーティションスケジューラ21は、次にアクティブにするTPを変更する(S13でYes)場合には、さらに、切り替え前のTPに属するタスクからの通知結果に応じて、切り替え前のTPが正常であったか否かを判断する。判断の結果、切り替え前のTPが異常であった場合、パーティションスケジューラ21は、次の1Tickの間にアクティブにするTPXを、安全制御スケジューリングパターンに従って、TP1及びTP3のいずれかから選択・決定する。判断の結果、正常であった場合、パーティションスケジューラ21は、次の1Tickの間にアクティブにするTPXを、通常制御スケジューリングパターンに従って、TP1及びTP2のいずれかを選択・決定する。
パーティションスケジューラ21は、現在アクティブになっているTPXのタスクスケジューラを動作させる(S15)。S15で動作を開始したTPXのタスクスケジューラは、TPX内のタスクを優先度に応じて実行する(S16)。
そして、1Tickが経過すると(S11)、パーティションスケジューラ21が、再びTPのスケジューリングを開始する(S12)。すなわち、パーティションスケジューラ21は、スケジューリングパターンに従って、次の1Tickの間にいずれのTPをアクティブにするかを選択・決定する。
図9で示した処理に関して、パーティション・スケジューリングの具体例を説明する。まず、図8Aに例示した通常制御スケジューリングパターンに従って、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から開始する安全制御スケジューリングパターンに切り替わる。)。
また、図8Bに例示した安全制御スケジューリングパターンに従って、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から開始する安全制御スケジューリングパターンが継続される。)。
なお、上述の例では、スケジューリングパターンとして、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のいずれかを選択すればよい。
上述したように、本実施の形態では、OS100は、安全監視用のTP1からの通知、または、各TPからの通知に応じて、次にアクティブとするパーティションを選択・決定するパーティションスケジューラ21を備えている。パーティションスケジューラ21は、各TPにおいて実行されるタスクとは独立して、所定のタイマー周期で動作する。
独立に動作するパーティションスケジューラ21が、全てのTPから結果通知を受ける構成とすることで、パーティションスケジューラ21は、全てのTPに関する状況を一元的に把握することができる。このため、例えば、安全監視用のTP1からの結果通知に応じて、パーティションスケジューラ21が次のパーティションを決定・選択しようとする場合には、パーティションスケジューラ21は、各TPの状況を考慮した上で、正常状態にあるTPのみから次のパーティションを決定・選択することもできる。これによれば、より正確なパーティション・スケジューリングを実現することができるという効果を奏する。
続いて、図10を参照して、本発明の実施の形態にかかるエントリ情報登録処理の処理手順について説明する。図10は、本発明の実施の形態にかかるエントリ情報登録処理の処理手順の具体例を示すフローチャートである。
OS100は、その起動時に、TLB管理ルーチン29を実行することによって、TLB142のエントリ情報の作成及び登録のための処理を開始する(S21)。なお、以降の処理は、OS100の起動時以外にも、TLBミスヒットが発生した場合にも実行される。まず、OS100は、TLB142のエントリ情報を作成する(S22)。このとき、OS100は、安全関連のTP(TP1、TP3)に属するタスクに関するエントリ情報(以下、「安全関連のTPのエントリ情報」も呼ぶ)を作成する場合には、上述したように、ASIDをWildに変換したエントリ情報を作成する。OS100は、作成したエントリ情報をMMU14に出力する。
MMU14の制御部141は、OS100によってプロセッサ10から出力されたエントリ情報が、安全関連のTPに関するエントリ情報であるか否かを判定する(S23)。安全関連のTPに関するエントリ情報であるか否かは、例えば、エントリ情報のASIDがWildか否かによって判定する。
エントリ情報が安全関連のTPに関するエントリ情報でない場合(S23でNo)、制御部141は、TLB142のエントリに空きがあるか否かを判定する(S24)。TLB142のエントリに空きがある場合(S24でYes)、制御部141は、空いているエントリのいずれかに、プロセッサ10から出力されたエントリ情報を格納する(S25)。これによって、ASIDがWildでない通常(非安全関連)のTP(TP2)に属するタスクに関するエントリ情報(以下、「通常のTPに関するエントリ情報」と呼ぶ)がTLB142に登録される。TLB142のエントリに空きがない場合(S24でNo)、制御部141は、通常のTPに関するエントリ情報のいずれかを排除して、そのエントリにプロセッサ10から出力されたエントリ情報を格納する(S26)。すなわち、制御部141は、通常のTPに関するエントリ情報が格納されたエントリのいずれかを更新対象のエントリとして選択し、選択したエントリを、プロセッサ10から出力されたエントリ情報で上書きする。これによって、ASIDがWildでない通常のTPのエントリ情報がTLB142に登録される。
エントリ情報が安全関連のTPに関するエントリ情報である場合(S23でYes)、制御部141は、TLB142に、安全関連のTPのエントリ情報が登録されていないエントリが2つ以上あるか否かを判定する(S27)。すなわち、通常のTPが格納されているエントリ及び空いているエントリが合計で2つ以上あるか否かを判定する。
安全関連のTPのエントリ情報が登録されていないエントリが2つ以上ない場合(S27でNo)、制御部141は、安全関連のTPに関するエントリ情報のうち、実行回数が少ないアクセスに関するエントリ情報を排除して、そのエントリにプロセッサ10から出力されたエントリ情報を格納する(S28)。すなわち、制御部141は、安全関連のTPに関するエントリ情報のうち、実行回数が少ないアクセスに関するエントリ情報が格納されたエントリを更新対象のエントリとして選択し、選択したエントリを、プロセッサ10から出力されたエントリ情報で上書きする。これによって、ASIDがWildである安全関連のTPのエントリ情報がTLB142に登録される。
ここで、アクセスの実行回数は、実測値を用いてもよく、推定値を用いてもよい。例えば、実測値を用いる場合は、プロセッサ10から実行用メモリ11に対するアクセスがあったときに、そのアクセスで指定されたASID及び仮想アドレスから検出したエントリのエントリ情報に関するアクセスの実行回数をカウントアップすることで計測する。計測した実行回数は、エントリ情報と関連付けて、MMU14が有する記憶装置に格納しておき、S28での判定時に制御部141が参照可能としておけばよい。MMU14が有する記憶装置としては、レジスタ又はメモリ等の任意の記憶装置を用いてよい。
また、例えば、推定値を用いる場合は、スケジューリングテーブル22に基づいて、スケジューリングパターンの1サイクルのうちで、TPがアクティブになる回数が多いTPに属するタスクは、アクセスの実行回数が多いと推定する。この場合、OS100が、さらに推定した実行回数も、その実行回数に対応するタスクのASIDを含むエントリ情報に設定するようにして、制御部141がそれを参照して判定するようにすればよい。なお、これらの実測値及び推定値は、一例であり、その他の方法で計測した実測値又は推定した推定値を利用するようにしてもよい。
安全関連のTPのエントリ情報が登録されていないエントリが2つ以上ある場合(S27でYes)、制御部141は、TLB142のエントリに空きがあるか否かを判定する(S29)。TLB142のエントリに空きがある場合(S29でYes)、制御部141は、空いているエントリのいずれかに、プロセッサ10から出力されたエントリ情報を格納する(S30)。これによって、ASIDがWildである安全関連のTPのエントリ情報がTLB142に登録される。TLB142のエントリに空きがない場合(S29でNo)、制御部141は、通常のTPに関するエントリ情報のいずれかを排除して、そのエントリにプロセッサ10から出力されたエントリ情報を格納する(S31)。すなわち、制御部141は、通常のTPに関するエントリ情報が格納されたエントリのいずれかを更新対象のエントリとして選択し、選択したエントリを、プロセッサ10から出力されたエントリ情報で上書きする。これによって、ASIDがWildである安全関連のTPのエントリ情報がTLB142に登録される。
一方、OS100は、全てのエントリ情報の登録(作成)が終わったか否かを判定する(S32)。全てのエントリの登録が終わっていない場合(S32でNo)、OS100は、次に登録するエントリ情報を作成する(S22)。以降、上述と同様の処理が繰り返される。全てのエントリの登録が終わった場合(S32でYes)、OS100は、TLB142のエントリ情報の作成を終了する(S33)。ここで、TLBミスヒットに応じて、以上に説明した処理が実行された場合は、1つのエントリ情報を登録したら、処理を終了することになる(S32でYes、S33)。
以上に説明した処理手順によれば、S31のように、通常のTPに関するエントリ情報を優先的に排除して、安全関連のTPに関するエントリ情報を優先的に登録するようにしている。これによれば、遅延無く実行することが好ましい安全関連のタスクに関するエントリがTLB142に存在する確率を高めることができる。すなわち、エントリの更新のために安全関連のタスクによるメモリアクセスが遅延する確率を低減することができる。また、安全関連のタスクによるメモリアクセスが待たされて、安全関連のタスクにおける処理が遅延する確率を低減することができる。
ここで、上述した処理手順では、S27において、安全関連のTPに関するエントリ情報が登録されていないエントリが2つ以上ある場合に、それらのエントリのいずれかに安全関連のTPに関するエントリ情報を登録し、そうでない場合には、安全関連のTPに関するエントリ情報が登録されているエントリのいずれかにエントリ情報を登録するようにしている。これによって、全てのエントリに対して安全関連のTPに関するエントリ情報が優先的に登録され、通常のTPに関するエントリ情報が登録されなくならないようにしている。
例えば、図4に例示するようにTLB142のエントリ数が64である場合、63個のエントリまでは、通常のTPに関するエントリ情報を優先的に排除して安全関連のTPに関するエントリ情報を登録するが、安全関連のTPに関するエントリ情報が登録されていないエントリが残り1個となった場合には、そのエントリは通常のTPに関するエントリ情報を登録するために残されることになる。すなわち、この例では、安全関連のTPに関するエントリ情報を登録することができるエントリの上限数が63となる。
ここで、S27で判定するエントリ数は、2つ以上か否かには限られない。例えば、上述した例では、安全関連のTPに関するエントリ情報が上限数まで格納された場合、通常のTPに関するエントリ情報は、1つだけしかTLB142に格納されないことになる。例えば、このようにすると、通常のTPに関するエントリ情報の更新が頻発してしまい、悪影響がでてしまうような場合は、安全関連のTPに関するエントリ情報の上限数を下げるようにしてもよい。例えば、S27で判定するエントリ数を、4つ以上か否かとしてもよい。すなわち、安全関連のTPに関するエントリ情報の上限数として、任意の数を予め定めることができる。
また、以上に説明したようにして、安全関連のTPに関するエントリ情報の上限数を超える登録を抑止するようにしているが、その方法は、上述した方法には限られない。例えば、安全関連のTPに関するエントリ情報の登録が上限数に達するまでは、通常のTPに関するエントリ情報を優先的に排除して安全関連のTPに関するエントリ情報を登録するようにし、安全関連のTPに関するエントリ情報の登録が上限数に達しているときには、単純に、更新対象のエントリをランダムに選択する、実行回数が少ないエントリを選択する、又は、FIFO(First In First Out)で選択する等して更新対象のエントリを選択するようにしてもよい。
続いて、図11を参照して、本発明の実施の形態にかかるメモリアクセス処理の処理手順について説明する。図11は、本発明の実施の形態にかかるメモリアクセス処理の処理手順の具体例を示すフローチャートである。
アクティブになっているTPにおいて実行されているタスクが実行用メモリ11のあるページに対してアクセスする場合、OS100は、そのTPに対応するASID、そのページのアドレスを指定したアクセスをMMU14に発行する。MMU14の制御部141は、OS100によってプロセッサ10から発行されたアクセスにおいて指定されているASID及びアドレスと、同一のASID及びアドレスを示すエントリ情報が格納されているエントリを検索する(S41)。
該当するエントリを検出できた場合(S42でNo)、制御部141は、検出したエントリの情報によって、発行されたアクセスのアクセス権限をチェックする(S43)。発行されたアクセスがアクセス権限を有していると判定した場合(S45でNo)、制御部141は、メモリアクセスを実行する(S46)。すなわち、制御部141は、指定されたアドレスを仮想アドレスから物理アドレスに変換してから、実行用メモリ11に対するアクセスを発行する。
発行されたアクセスがアクセス権限を有していないと判定した場合(S45でYes)、制御部141は、TLB保護違反例外の通知をプロセッサ11に出力する(S47)。OS100は、MMU14からのTLB保護違反例外の通知に応じて、異常処置を行う。異常処置としては、任意の処理を実装するようにしてもよい。例えば、パーティションスケジューラ21が、スケジューリングパターンを安全制御スケジューリングパターンに切り替えて、安全制御タスク28によって制御対象を緊急停止させるように制御するようにしてもよい。
一方、該当するエントリを検出できなかった場合(S42でYes)、制御部141は、TLBミスヒット例外の通知をプロセッサ11に出力する(S44)。OS100は、MMU14からのTLBミスヒットの通知に応じて、TLB管理ルーチン29を実行する。これによって、以下に説明する処理を実行する。
OS100は、TLBミスヒット例外が発生したアクセスのアクセス権限をチェックする(S48)。ここで、一般的に、TLB142のエントリ情報を作成するのはOS100であるため、OS100は、各タスクのASID、各タスクがアクセスするページ(仮想アドレス及び物理アドレス)、及び各タスクの各ページに対するアクセス権限の情報を有している、又は、参照可能である。そのため、その情報に基づいて、アクセス権限を判定すればよい。
アクセス権限を有していないと判定した場合(S49でYes)、OS100は、TLB保護違反例外ハンドラへジャンプする(S51)。例えば、TLB保護違反例外ハンドラとして、上述したように異常処置を行う。
アクセス権限を有していると判定した場合(S49でNo)、OS100は、TLBミスヒット例外を発生させたアクセスにおいて指定していたASID及びアドレスと、そのASIDによるそのアドレスに対するアクセス権限とを示すエントリ情報を作成する(S50)。OS100は、作成したエントリ情報をMMU14に出力する(S51)。これによって、MMU14の制御部141は、TLB142からエントリ情報の格納先のエントリを選択して、選択したエントリのエントリ情報を、OS100によってプロセッサ10から出力されたエントリ情報に差し替える。すなわち、エントリ情報を上書きする。このときに、図10を参照して説明したエントリ情報登録処理が実行されることになる。
なお、MMU14は、更新対象のエントリをプロセッサ10からのエントリ情報の出力に応じて選択するようにしてもよく、TLBミスヒットを検出したときに、前もって選択しておくようにしてもよい。
プロセッサ10は、TLBミスヒット例外を起こした命令(アドレス)に帰還する(S52)。すなわち、プロセッサ10は、TLBミスヒット例外を起こしたメモリアクセスを、再度、MMU14に発行する。これによって、TLBミスヒットが発生することなく(S42でNo)、アクセス権限の判定(S45)が行われるようになる。
<発明の他の実施の形態>
本実施の形態では、TPのそれぞれに属するタスクが、それぞれ安全監視タスク24、通常制御タスク26、及び安全制御タスク28である場合について例示したが、タスクの種類は、これに限られない。安全監視タスク24、通常制御タスク26及び安全制御タスク28に限られず、その他の制御対象の制御に関する任意の処理を実行するタスクを有するようにしてもよい。
例えば、図12に示すようなタスク30〜32を有するようにしてもよい。なお、この場合、安全制御装置は、アプリケーション101〜103に代えて、タスク30〜32に対応するアプリケーションを有する必要があるが、その点は自明であるため図示及び説明を省略する。
監視制御タスク30は、制御対象を制御する。具体的には、監視制御タスク30は、通常制御タスク31及び安全制御タスク32からの指令値に基づいて、制御対象のアクチュエータを制御する。通常制御タスク31は、制御対象に通常の機能・動作を行わせるための制御計算を行う。具体的には、通常制御タスク31は、通常制御におけるアクチュエータの制御計算をして、アクチュエータの指令値を算出する。通常制御タスク31は、算出した指令値を監視制御タスク30に出力する。安全制御タスク32は、機能安全を確保するために定められた制御計算を行う。具体的には、安全制御タスク32は、安全制御におけるアクチュエータの制御計算をして、アクチュエータの指令値を算出する。安全制御タスク32は、算出した指令値を監視制御タスク30に出力する。監視制御タスク30は、通常制御タスク31又は安全制御タスク32から出力された指令値に基づいてアクチュエータを制御する。
さらに、監視制御タスク30は、制御対象のセンサから、センサ値を取得する。監視制御タスク30は、取得したセンサ値を通常制御タスク31及び安全制御タスク32に出力する。通常制御タスク31及び安全制御タスク32のそれぞれは、監視制御タスク30から出力されたセンサ値に基づいて、アクチュエータの制御計算を行うようにしてもよい。
図12の例では、監視制御タスク30及び安全制御タスク32は、制御対象の監視や、機能安全を確保するために定められた制御計算等のように、制御対象の機能安全の確保に関する処理を実行するタスクとなる。それに対して、通常制御タスク31は、その他の制御対象の制御に関する処理を実行するタスクとなる。そのため、監視制御タスク30及び安全制御タスク32は、遅延無く実行することが好ましい安全関連のタスクとなり、通常制御タスク31は、監視制御タスク30及び安全制御タスク32と比較して、実行の遅延が許容される非安全関連のタスクとなる。すなわち、図12に示す場合は、図10に示すエントリ情報登録処理において、監視制御タスク30及び安全制御タスク32は、安全関連のTPに属するタスクとして処理され、通常制御タスク31は、通常(非安全関連)のTPに属するタスクとして処理される。
また、その他に、例えば、図13に示すようなタスク33〜35を有するようにしてもよい。なお、この場合、安全制御装置は、アプリケーション101〜103に代えて、タスク33〜35に対応するアプリケーションを有する必要があるが、その点は自明であるため図示及び説明を省略する。
監視タスク33は、制御対象のセンサから、センサ値を取得する。このセンサには、上述したように制御対象の姿勢を検知するための姿勢センサを含む。ここで説明する例では、制御対象として、人が搭乗することができる走行装置に適用した場合について説明する。この場合、監視タスク33は、搭乗者による重心移動を姿勢センサにより検知することができる。監視タスク33は、取得したセンサ値をHMI(Human Machine Interface)タスク35に出力する。
HMIタスク35は、監視タスク33から出力されたセンサ値に基づいて、制御対象のアクチュエータの制御計算をして、アクチュエータの指令値を算出する。HMIタスク35は、算出した指令値を制御タスク34に出力する。制御タスク34は、HMIタスク35から出力された指令値に基づいて、アクチュエータを制御する。
図13の例では、監視タスク33、HMIタスク35及び制御タスク34によって、制御対象の監視、それに応じた制御計算、制御計算結果に基づいた制御対象の制御を行うことで、状況によっては制御対象の機能安全の確保に関する処理を実行する。そのため、監視タスク33、HMIタスク35及び制御タスク34は、遅延無く実行することが好ましい安全関連のタスクとなる。この場合には、TP1〜TP3以外のTP(図示せず)に属する、その他の制御対象の制御に関する処理を実行するタスクが、監視タスク33、HMIタスク35及び制御タスク34と比較して、実行の遅延が許容される非安全関連のタスクとなる。すなわち、図13に示す場合は、図10に示すエントリ情報登録処理において、監視タスク33、HMIタスク35及び制御タスク34は、安全関連のTPに属するタスクとして処理される。
ここで、図13において説明した構成によれば、搭乗者の操作に応じて制御対象が制御されるというHMIを実現することができる。例えば、搭乗者が重心を前後に移動させることで制御対象が前後後退を行い、搭乗者が重心を左右に移動させることで制御対象が左右旋回を行うといった制御が可能となる。これについては、実施の形態及び図12によって説明した例についても同様のことが言える。具体的には、安全監視タスク24又は監視制御タスク34が取得したセンサ値に応じて、通常制御タスク26及び安全制御タスク28、もしくは、通常制御タスク31及び安全制御タスク32が同様の制御をすることで、HMIを実現することが可能である。また、本実施の形態によれば、安全関連のタスクの実行遅延確率を低減して、より信頼性を向上した制御対象の制御を行うことが可能となる。そのため、以上に説明したように、人が搭乗することができる走行装置を制御対象として適用することで、より安全性を向上した制御対象の制御を行うことが可能となる。
なお、走行装置として、例えば、立ち乗り方の同軸二輪車とすることもできる。その場合は、アクチュエータを制御することで、車輪が回転動作をすることになる。また、安全制御装置自体も制御対象に搭載される構成としてもよい。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
本実施の形態では、OSが、TP1〜TP3を有する場合について例示したが、TPの種類及び数は、これに限られない。スケジューリングパターンについても、本実施の形態に例示したものに限られない。
本実施の形態では、タスクの数が3つである場合について例示したが、タスクの数は、これに限られない。例えば、本実施の形態では、TPがTP1〜TP3の3つである場合について例示したが、TPの数を3つ以外の数とし、それぞれのTPが1つ以上の任意の数のタスクを有するようにしてもよい。
本実施の形態では、TP(RP)ごとに異なるアクセス権限を付与する場合について例示した。すなわち、本実施の形態では、同一のTPに属するタスクに対して同一のアクセス権限を付与する場合について例示したが、これに限られない。例えば、タスクごとに異なるアクセス権限を付与するようにしてもよい。この場合は、タスクごとにASIDが一意に定義されることになる。
本実施の形態では、タイム・パーティショニングを採用したマルチタスクOSについて例示したが、これに限られない。タイム・パーティショニングを採用していないマルチタスクOSに適用することもできる。この場合は、タスクごとにASIDが一意に定義されることになる。
本実施の形態では、MMU14の管理対象をRAMである実行用メモリ11とした場合について例示したが、これに限られない。例えば、MMUが管理対象とする記憶装置は、ROMであってもよい。また、MMUが管理対象とする記憶装置は、RAM及びROMの組み合わせであってもよい。
本実施の形態では、MMUによってメモリ保護機能を実装する場合について例示したが、これに限られない。例えば、MPUによってメモリ保護機能を実装するようにしてもよい。MPUによって実装する場合、仮想記憶管理機能を有していないため、MPUが有するテーブルのエントリには、ASID、アドレス、そのASIDのタスクによるそのアドレスのページに対するアクセス権限等が設定されることになる。
本実施の形態では、安全関連のタスクのASIDを、Wildに変換するようにしているが、Wildへの変換を行わないようにしてもよい。この場合、MMU14が安全関連のタスクのASIDを認識しておくようにすることで、優先的に排除してもよいエントリ情報を判定することを可能とする。例えば、MMU14が、安全関連のタスクのASIDの一覧を記憶する記憶装置を有するようにし、それらのASIDと照合することで安全関連のタスクのASIDが設定されたエントリを判定するようにすればよい。なお、この場合、安全関連のタスクのASIDの一覧は、MMU14が、OS100から取得して記憶装置に格納するようにすればよい。また、MMU14が、安全関連以外のタスクのASIDの一覧を記憶する記憶装置を有するようにし、それらのASIDと照合することで安全関連のASIDが設定されたエントリを判定するようにしてもよい。ただし、好ましくは、本実施の形態のように、安全関連のタスクのASIDを、予め定められた位置のビット値を変化させた値とすることで、そのビット値のみを確認するだけで、優先的に排除してもよいエントリ情報が判定可能となる。これによれば、安全関連のタスクに関するエントリ情報を判定する処理を簡易にすることができる。
本実施の形態では、MMU14が更新対象のエントリを選択するようにしているが、これに限られない。例えば、OS100(TLB管理ルーチン29)で、更新対象のエントリを選択して、選択したエントリにエントリ情報を格納するようにMMU14に指示するようにしてもよい。
本実施の形態では、制御対象の機能安全の確保に関する処理を実行する安全関連のタスクと、その他の制御対象の制御に関する処理を実行する非安全関連のタスクとで、TLB142にエントリ情報を優先的に残すタスクとそうでないタスクとを区分するようにしているが、この区分はこれに限られない。これ以外でも、遅延無く実行することが好ましいタスクと、そのタスクよりも実行の遅延が許容されるタスクとが存在するシステムであれば、同様にして適用することができる。
1 安全制御装置
10 プロセッサ
11 実行用メモリ
12 I/Oポート
13 不揮発性メモリ
14 MMU
15 リセット回路
20 マイクロコントローラ
21 パーティションスケジューラ
22 スケジューリングテーブル
23、25、27 タスクスケジューラ
24 安全監視タスク
26、31 通常制御タスク
28、32 安全制御タスク
29 TLB管理ルーチン
30 監視制御タスク
33 監視タスク
34 制御タスク
35 HMIタスク
100 オペレーティングシステム
101 安全監視アプリケーション
102 通常制御アプリケーション
103 安全制御アプリケーション
141 制御部
142 TLB

Claims (10)

  1. 複数の領域を含むメモリと、
    複数のタスクを実行するタスク実行部と、
    前記複数のタスクのいずれかによる前記複数の領域のいずれかに対するアクセス権限を示す権限情報を、所定数だけ格納可能な記憶部と、
    前記タスク実行部から前記タスクによる前記領域に対するアクセスがあったとき、当該タスクによる当該領域に対するアクセス権限を示す権限情報が前記記憶部に格納されているか否かを判定して、当該権限情報が格納されている場合は、当該権限情報に基づいて前記アクセス権限を判定し、当該権限情報が格納されていない場合は、前記アクセス権限の判定を可能とするために、当該タスクによる当該領域に対するアクセス権限を示す権限情報を前記記憶部に格納するアクセス管理部と、を備え、
    前記複数のタスクは、第1のタスクと、当該第1のタスクよりも実行の遅延が許容される第2のタスクとを含み、
    前記アクセス管理部は、前記第1のタスクに関する権限情報を前記記憶部に格納するときに、前記記憶部に格納された権限情報のいずれかを上書きする必要がある場合は、前記第1のタスクに関する権限情報と前記第2のタスクに関する権限情報のうち、前記第2のタスクに関する権限情報を優先的に上書きする、
    情報処理装置。
  2. 前記アクセス管理部は、前記第2のタスクに関する権限情報を前記記憶部に格納するときに、前記記憶部に格納された権限情報のいずれかを上書きする必要がある場合は、前記第1のタスクに関する権限情報と前記第2のタスクに関する権限情報のうち、前記第2のタスクに関する権限情報を優先的に上書きする、
    請求項1に記載の情報処理装置。
  3. 前記アクセス管理部は、前記第1のタスクに関する権限情報を前記記憶部に格納するときに、すでに所定の上限数、前記第1のタスクに関する権限情報が前記記憶部に格納されている場合は、前記第1のタスクに関する権限情報の上書きを許容する、
    請求項1又は2に記載の情報処理装置。
  4. 前記アクセス管理部は、すでに所定の上限数、前記第1のタスクに関する権限情報が前記記憶部に格納されている場合は、前記記憶部に格納された前記第1のタスクに関する権限情報のうち、より少ない回数のアクセスに関する権限情報を、より優先的に上書きする、
    請求項3に記載の情報処理装置。
  5. 前記権限情報は、前記タスクを識別する識別値と、当該タスクによる前記領域に対するアクセス権限とを示す情報であり、
    前記第1のタスクに関する権限情報と前記第2のタスクに関する権限情報とでは、前記識別値の所定のビット位置のビット値が異なる値となっており、
    前記アクセス管理部は、前記所定のビット位置のビット値に基づいて、前記権限情報が前記第1のタスクに関する権限情報か否かを判定する、
    請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記複数のタスクのそれぞれは、複数のタイムパーティションのいずれかにおいて実行され、
    前記タスク実行部は、前記複数のタイムパーティションのスケジューリング内容を示すスケジューリング情報に従って、前記複数のタスクをスケジューリングして実行する、
    請求項1乃至5のいずれか1項に記載の情報処理装置。
  7. 前記情報処理装置は、制御対象を制御する制御装置であって、
    前記複数のタスクのそれぞれは、前記制御対象の制御に関する処理を実行するタスクである、
    請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 前記第1のタスクは、前記制御対象の機能安全の確保に関する処理を実行するタスクであり、
    前記第2のタスクは、その他の前記制御対象の制御に関する処理を実行するタスクである、
    請求項7に記載の情報処理装置。
  9. 前記タスク実行部は、前記プロセッサであり、
    前記アクセス管理部は、MMU(Memory Management Unit)又はMPU(Memory Protection Unit)である、
    請求項1乃至8のいずれか1項に記載の情報処理装置。
  10. 複数のタスクのうちのいずれかのタスクから、メモリに含まれる複数の領域のうちのいずれか領域に対するアクセスがあったとき、当該タスクによる当該領域に対するアクセス権限を示す権限情報が、前記複数のタスクのいずれかによる前記複数の領域のいずれかに対するアクセス権限を示す権限情報を所定数だけ格納可能な記憶部に格納されているか否かを判定する情報判定ステップと、
    前記権限情報が格納されている判定した場合は、当該権限情報に基づいて前記アクセス権限を判定する権限判定ステップと、
    前記権限情報が格納されていないと判定した場合は、前記アクセス権限の判定を可能とするために、前記アクセスをしたタスクによる前記アクセス先の領域に対するアクセス権限を示す権限情報を前記記憶部に格納する情報格納ステップと、を備え、
    前記複数のタスクは、第1のタスクと、当該第1のタスクよりも実行の遅延が許容される第2のタスクとを含み、
    前記情報格納ステップでは、前記第1のタスクに関する権限情報を前記記憶部に格納するときに、前記記憶部に格納された権限情報のいずれかを上書きする必要がある場合は、前記第1のタスクに関する権限情報と前記第2のタスクに関する権限情報のうち、前記第2のタスクに関する権限情報を優先的に上書きする、
    メモリアクセス管理方法。
JP2012000087A 2012-01-04 2012-01-04 情報処理装置及びメモリアクセス管理方法 Active JP5845902B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012000087A JP5845902B2 (ja) 2012-01-04 2012-01-04 情報処理装置及びメモリアクセス管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012000087A JP5845902B2 (ja) 2012-01-04 2012-01-04 情報処理装置及びメモリアクセス管理方法

Publications (2)

Publication Number Publication Date
JP2013140477A true JP2013140477A (ja) 2013-07-18
JP5845902B2 JP5845902B2 (ja) 2016-01-20

Family

ID=49037859

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012000087A Active JP5845902B2 (ja) 2012-01-04 2012-01-04 情報処理装置及びメモリアクセス管理方法

Country Status (1)

Country Link
JP (1) JP5845902B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016031659A (ja) * 2014-07-29 2016-03-07 株式会社デンソー 電子制御装置
JP2017068334A (ja) * 2015-09-28 2017-04-06 ルネサスエレクトロニクス株式会社 データ処理装置
WO2018084024A1 (ja) * 2016-11-02 2018-05-11 日立オートモティブシステムズ株式会社 車両制御装置

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03211643A (ja) * 1989-11-13 1991-09-17 Ross Technol Inc 並行例外検査及び更新バイパスを有する変換索引バッファ
JPH05257811A (ja) * 1992-01-16 1993-10-08 Toshiba Corp メモリ管理装置
JPH0784885A (ja) * 1993-09-09 1995-03-31 Hitachi Ltd キャッシュメモリ制御装置
JPH11501744A (ja) * 1995-03-03 1999-02-09 富士通株式会社 アドレス変換速度アップのための並列アクセスマイクロ−tlb
US20020144077A1 (en) * 2001-03-30 2002-10-03 Andersson Peter Kock Mechanism to extend computer memory protection schemes
JP2003521781A (ja) * 2000-02-01 2003-07-15 シラス ロジック、インコーポレイテッド キャッシュされた情報を安全にする方法および回路
JP2003228518A (ja) * 2002-02-06 2003-08-15 Ip Flex Kk キャッシュシステムの制御方法
US6766419B1 (en) * 2000-03-31 2004-07-20 Intel Corporation Optimization of cache evictions through software hints
JP2006338426A (ja) * 2005-06-03 2006-12-14 Hitachi Ltd 計算機システム
WO2008120537A1 (ja) * 2007-03-19 2008-10-09 Toyota Jidosha Kabushiki Kaisha 情報処理装置
JP2010198610A (ja) * 2009-02-20 2010-09-09 Arm Ltd データ処理装置および方法
US20100268905A1 (en) * 2007-12-17 2010-10-21 Freescale Semiconductor, Inc. Memory mapping system, request controller, multi-processing arrangement, central interrupt request controller, apparatus, method for controlling memory access and computer program product

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03211643A (ja) * 1989-11-13 1991-09-17 Ross Technol Inc 並行例外検査及び更新バイパスを有する変換索引バッファ
JPH05257811A (ja) * 1992-01-16 1993-10-08 Toshiba Corp メモリ管理装置
JPH0784885A (ja) * 1993-09-09 1995-03-31 Hitachi Ltd キャッシュメモリ制御装置
JPH11501744A (ja) * 1995-03-03 1999-02-09 富士通株式会社 アドレス変換速度アップのための並列アクセスマイクロ−tlb
JP2003521781A (ja) * 2000-02-01 2003-07-15 シラス ロジック、インコーポレイテッド キャッシュされた情報を安全にする方法および回路
US6766419B1 (en) * 2000-03-31 2004-07-20 Intel Corporation Optimization of cache evictions through software hints
US20020144077A1 (en) * 2001-03-30 2002-10-03 Andersson Peter Kock Mechanism to extend computer memory protection schemes
JP2003228518A (ja) * 2002-02-06 2003-08-15 Ip Flex Kk キャッシュシステムの制御方法
JP2006338426A (ja) * 2005-06-03 2006-12-14 Hitachi Ltd 計算機システム
WO2008120537A1 (ja) * 2007-03-19 2008-10-09 Toyota Jidosha Kabushiki Kaisha 情報処理装置
US20100268905A1 (en) * 2007-12-17 2010-10-21 Freescale Semiconductor, Inc. Memory mapping system, request controller, multi-processing arrangement, central interrupt request controller, apparatus, method for controlling memory access and computer program product
JP2010198610A (ja) * 2009-02-20 2010-09-09 Arm Ltd データ処理装置および方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6015016806; 村田 和信: '"マルチタスク・システムの基礎と実際 マルチタスク・モニタの考え方"' インターフェース 第16巻、第1号, 19900101, p.114-161, CQ出版株式会社 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016031659A (ja) * 2014-07-29 2016-03-07 株式会社デンソー 電子制御装置
JP2017068334A (ja) * 2015-09-28 2017-04-06 ルネサスエレクトロニクス株式会社 データ処理装置
US10552347B2 (en) 2015-09-28 2020-02-04 Renesas Electronics Corporation Data processor
WO2018084024A1 (ja) * 2016-11-02 2018-05-11 日立オートモティブシステムズ株式会社 車両制御装置
US10967813B2 (en) 2016-11-02 2021-04-06 Hitachi Automotive Systems, Ltd. Vehicle control device

Also Published As

Publication number Publication date
JP5845902B2 (ja) 2016-01-20

Similar Documents

Publication Publication Date Title
JP5446447B2 (ja) 安全制御装置および安全制御方法
US8880201B2 (en) Safety controller and safety control method
US8706265B2 (en) Safety controller and safety control method
US8756606B2 (en) Safety controller and safety control method in which time partitions are scheduled according to a scheduling pattern
EP2677377B1 (en) Safety control device and safety control method
US8457766B2 (en) Safety controller and safety control method
JP5664530B2 (ja) 制御装置およびメモリ保護装置の動作確認方法
JP5845902B2 (ja) 情報処理装置及びメモリアクセス管理方法
JP5621857B2 (ja) 安全制御装置および安全制御方法
JP5834935B2 (ja) 安全制御装置及び安全制御方法
JP2013140476A (ja) 情報処理装置、アクセス権限付与方法、プログラム生成装置、及びその方法
JP5906584B2 (ja) 制御装置及び制御方法
JP2014211689A (ja) 安全制御装置および安全制御方法
JP5633501B2 (ja) 制御装置および制御方法
JP5712907B2 (ja) 制御装置、情報処理装置およびメモリ管理装置の動作確認方法
JP6004057B2 (ja) 情報処理装置およびdmaコントローラの動作確認方法
JP5803689B2 (ja) 情報処理装置およびdmaコントローラの動作確認方法
JP5811865B2 (ja) 制御装置及びプログラム実行方法
JP5849731B2 (ja) 情報処理装置及びデータ格納方法
JP5853716B2 (ja) 情報処理装置およびタスク制御方法
JP5699910B2 (ja) 制御装置および制御方法
JP4340669B2 (ja) 入出力制御装置,入出力制御方法,プロセス制御装置及びプロセス制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140821

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151027

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151109

R151 Written notification of patent or utility model registration

Ref document number: 5845902

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151