JP2013161299A - 情報処理装置、インタフェースアクセス方法 - Google Patents

情報処理装置、インタフェースアクセス方法 Download PDF

Info

Publication number
JP2013161299A
JP2013161299A JP2012023447A JP2012023447A JP2013161299A JP 2013161299 A JP2013161299 A JP 2013161299A JP 2012023447 A JP2012023447 A JP 2012023447A JP 2012023447 A JP2012023447 A JP 2012023447A JP 2013161299 A JP2013161299 A JP 2013161299A
Authority
JP
Japan
Prior art keywords
access
program
interface
port
processing apparatus
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.)
Pending
Application number
JP2012023447A
Other languages
English (en)
Inventor
Wataru Kanda
渉 神田
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 JP2012023447A priority Critical patent/JP2013161299A/ja
Publication of JP2013161299A publication Critical patent/JP2013161299A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】特別なハードウェアを用いることなく適切な量の管理情報を使用することでI/Oポートを保護できる情報処理装置を提供すること。
【解決手段】複数のプログラムが記憶されたプログラム記憶手段13と、前記プログラムを実行する1つ以上の演算手段11と、外部の回路と通信可能な複数のインタフェース20と、を有する情報処理装置100であって、前記プログラムがアクセス可能な前記インタフェースが登録されたインタフェース登録テーブル34と、前記インタフェースにアクセス要求した前記プログラムが、前記インタフェースにアクセスすることが許可されている場合、前記プログラムの代わりに前記インタフェースにアクセスするアクセス制御手段33と、を有する。
【選択図】図2

Description

本発明は、I/Oポートを有する情報処理装置に関し、システムやアプリ毎にI/Oポートへのアクセスを制御可能な情報処理装置に関する。
マイコンなどの情報処理装置では、複数のタスクがそれぞれ独立に実行される場合がある。複数のタスクがそれぞれ専用のI/Oにアクセスすべき場合に、あるタスクが別のタスク専用のI/Oにアクセスするようなことが生じることは好ましくない。このため、従来から、タスクによるI/Oへのアクセスを保護する技術が知られている。
従来のマイコンでは、ハードウェアのメモリアクセス保護資源(例えばメモリ管理ユニット)によりタスクのI/Oポートへのアクセスを制限している。しかしながら、マイコンが提供するメモリ保護資源はページ又はブロックと呼ばれる単位(例えば512バイト〜4kバイト)でメモリ保護を提供している。これに対し、I/Oポートのレジスタは数バイト(例えば1〜4バイト)で構成されているため、従来の方法ではI/Oポート単位でアクセス制御することができない(1ページ又は1ブロックのメモリ保護で複数のI/Oポートにアクセス制限してしまう)。
また、新たにハードウェアを追加することでタスクのI/Oポートへのアクセスを制限する技術も考えられている(例えば、特許文献1参照。)。図12は、特許文献1に開示されたアクセス保護を説明する図の一例である。特許文献1では、OS(Operating System)が各アプリのプロセッサバスアドレス空間へのアクセス権をページ単位で管理している。また、プロセッサバスアドレス空間とI/Oアドレス空間を変換器が変換し、I/Oアドレス空間の各I/Oポートを、プロセッサバスアドレス空間にマッピングする。OSはアプリがI/Oへのアクセス権を有する場合に、変換器にI/Oへのアクセスを許可するので、アプリの不正なアクセスを防止できる。
特開平7−191904号公報
しかしながら、特許文献1に開示された技術又は従来の技術では以下のような問題がある。
1.変換器を追加する必要がある。
サーバやワークステーション向けのプロセッサと異なり車両等の組み込み用のプロセッサでは、変換器を有していないことが多いため、変換器を追加する必要が生じてしまう。または、変換器を搭載したマイコンへ変更しなければならない。
2.変換器を追加すると、アプリ側から見えるI/Oポートのアドレスが変更される。
すなわち、変換器の追加前までアプリがプロセッサバスアドレスに出力したI/Oのアドレスが変換器により変わってしまう。このため、アプリを修正する必要が生じてしまう。1つのアプリだけなら修正も可能だが、例えば、仮想化技術で複数のアプリを1つの仮想環境に実装した場合、仮想化による統合のメリットが失われてしまう。
3.メモリ保護の単位を細かくするとOSが保持するアクセス権に関する情報が増加する
上記のハードウェアのメモリアクセス保護資源を用いる場合、ハードウェアの制約によりシステム全体で同じ単位(例えば4バイト)でメモリ保護する必要がある。このため、メモリアクセス保護資源を用いてI/Oポートに最適な粒度(例えば4バイト)でメモリ保護する場合、保護単位毎にアクセス権の設定が必要になってしまう。例えば、1ページを4kバイトとした場合、1ページだけで1000個のアクセス権の設定が必要になる。したがって、保護単位に反比例してOSの管理情報が増加してしまう。
本発明は、上記課題に鑑み、特別なハードウェアを用いることなく適切な量の管理情報を使用することでI/Oポートを保護できる情報処理装置を提供することを目的とする。
本発明は、複数のプログラムが記憶されたプログラム記憶手段と、前記プログラムを実行する1つ以上の演算手段と、外部の回路と通信可能な複数のインタフェースと、を有する情報処理装置であって、前記プログラムがアクセス可能な前記インタフェースが登録されたインタフェース登録テーブルと、前記インタフェースにアクセス要求した前記プログラムが、前記インタフェースにアクセスすることが許可されている場合、前記プログラムの代わりに前記インタフェースにアクセスするアクセス制御手段と、を有する。
特別なハードウェアを用いることなく適切な量の管理情報を使用することでI/Oポートを保護できる情報処理装置を提供することができる。
I/Oポートへのアクセス制御を説明する図の一例である。 マイコンのハードウェア構成図の一例である。 仮想化技術による2つのシステムの統合を説明する図の一例である。 メモリ保護機構の機能を模式的に説明する図の一例である。 システム1,2によるI/Oポートへのアクセスを禁止する際のPTEの設定例を示す図である。 ハイパーバイザの機能ブロック図の一例である。 システム実行情報等の一例を示す図である。 アクセス履歴テーブルの一例を示す図である。 マイコンの動作手順を示すフローチャート図の一例である。 アクセスタイミングの予測を説明する図の一例である。 マイコンの動作手順を示すフローチャート図の一例である。 特許文献1に開示されたアクセス保護を説明する図の一例である。
以下、本発明を実施するための形態について図面を参照しながら説明する。
図1は、本実施例のI/Oポートへのアクセス制御を説明する図の一例である。
1.まず、システムの起動時に、例えばハイパーバイザ31は、メモリ保護機構32に対しアプリ1、アプリ2がI/Oポートにアクセスすることを禁止する。なお、ハイパーバイザ31は全てのI/Oポートにアクセスすることができる。
2.アプリ1又はアプリ2がI/Oポートにアクセスしようとすると、メモリ保護機構32がアクセス違反(例外を発生させる)を検出する。
3.ハイパーバイザ31は、メモリ保護機構32からアクセスしたアプリとI/Oポートの情報を取得して、アプリがI/Oポートにアクセスする権限を有しているか否かを判定する。
4.アプリにI/Oポートへのアクセス権がある場合、ハイパーバイザ31が該アプリの代わりにI/Oポートへアクセスする。
5.アプリにI/Oポートへのアクセス権がない場合、ハイパーバイザ31はアクセスしようとしたアプリに対しアクセス違反を通知する。
したがって、変換器などの新たなハードウェアを追加することなく、各アプリのI/Oアクセスを保護できる。論理アドレスから物理アドレスの変換はメモリ保護機構32が行うので、アプリが指定するI/Oポートのアドレスには変更が必要ない。また、メモリ保護機構32に対し、全てのI/Oポートのアクセスを禁止すればよいので、ハイパーバイザ31の管理情報が増大することもない。
〔構成例〕
図2は、マイコン100のハードウェア構成図の一例である。マイコン100は、メインバス21に接続された、CPU11、RAM12、ROM13、INTC14、WDT15、及び、DMAC16を有し、周辺バス22に接続されたCAN(Controller Area Network)コントローラ18、ADC19及びI/Oポート20を有する。メインバス21と周辺バス22はブリッジ17を介して接続されている。
CPU11は、好ましくは複数のコアを有し、ROM13に記憶されたプログラムを実行することでマイコン100の全体を制御する。CPUはメモリ保護機構32を有している。RAM12は、CPU11がプログラムを実行する際の作業メモリである。また、フラッシュROM13にはハイパーバイザ31や各システム(OS、デバイスドライバ、ミドルウェア及びアプリ)が記憶されている。
INTC14は割込みレジスタを監視して、周辺機器からの割り込み要求を割込みの優先順位に基づき調停してCPU11に通知する。これによりCPU11は、例えばISR(Interrupt Service Routine)を実行して、割込みした周辺機器に応じて定められているタスクを起床させる。
WDT15は、動作クロックをカウントして計測した時間が予め定められたリセット時間に達すると(オーバーフローすると)、異常検出(マイコンリセット、CPU割込み等)する回路である。
DMAC16は、RAM12と周辺回路の間や、RAM12内で、CPU11を介することなくデータを移動する。CPU11がI/Oポート20から外部にデータを送信する場合、CPU11はRAM12に記憶されているデータのアドレスと送信先の周辺回路のアドレスを指示する。DMAC16は、RAM12から読み出したデータを周辺回路のアドレスに対応するI/Oポート20に書き込む。また、CPU11が外部からデータを受信する場合、I/Oポート20にデータが到達すると、DMAC16がそれを検出してRAM12にデータを転送する。受信が終了するとDMAC16はINTC14に割込み要求することで、CPU11はRAM12のデータを読み出すことができる。
ブリッジ17は、メインバス21と周辺バス22の間の周波数の違いを吸収し、メインバス21に接続された回路と周辺バス22に接続された回路とを通信可能に接続する。CANコントローラ18は、マイコン100がCANバス43に接続された他のECU(Electronic Control Unit)と通信するための通信回路である。CANコントローラ18はCANフレームの受信をDMAC16に通知すると、DMAC16がCANコントローラ18の受信バッファからCANフレームを読み出しRAM12に記憶する。受信が終了するとDMAC16はINTC14に割込み要求することで、CPU11にCANフレームの受信を通知する。
ADC(A/Dコントーラ)19は、マイコン100に接続されたセンサのアナログ信号をデジタル信号に変換して、アクチュエータ等に制御信号を出力する。I/Oポート20は周辺回路と入出力のインタフェースであり、周辺回路毎に複数用意されている。I/Oポート20には、例えばセンサ、アクチュエータ、スイッチ等が接続されている。本実施例では、I/Oポート1をシステム1がI/Oポート2をシステム2がそれぞれ使用する。
マイコン100は各種の電子制御装置に搭載される。本実施例では、異なる電子制御装置に搭載されていたシステム1,2を1つの電子制御装置に搭載することも可能ため、電子制御装置が単一の機能のみを有しているとは限らない。しかし、電子制御装置の機能としては、例えば、HV−ECU、エンジンECU、ブレーキECU、ナビECU等、種々のものがある。本実施例のマイコン100はこれらの機能の1つ以上を提供する。
〔システムの統合〕
図3は、仮想化技術による2つのシステムの統合を説明する図の一例である。ECU1に搭載されたアプリ1とOS1をシステム1、ECU2に搭載されたアプリ2とOS2をシステム2と称する。ECU1とECU2のマイコンは同じものである必要はなく、OS1とOS2も同じものである必要はない。
仮想化技術を利用することで、2つのシステム1,2をそのまま1つのマイコン100に搭載することができる。システムの変更が不要なので低コスト、短期間にシステム統合が可能となる。ところで、車両の機能安全にはASIL(Automotive Safety Integrity Level)という指標の安全性レベルがあり、ASILに応じた機能安全が達成されることが求められる。システム1,2の統合の際、システム1と2のASILが異なる場合があると考えられるが、ASILが異なる場合、ASILが高いシステムのI/Oポート20をASILが低いシステムから保護することが要求される。本実施例ではこのI/Oポート20の保護をハイパーバイザ31とメモリ保護機構32を利用して実現する
ハイパーバイザ31は、マイコン1,2のハードウェアをエミュレートするソフトウェアである。マイコン1,2は一般的なハードウェア(CPU、メモリ、I/Oポート等)を有している。例えば、マイコン1,2のメモリをエミュレートする場合、ハイパーバイザ32にはマイコン1,2に搭載されているROM、RAMの領域を確保する処理(一連の命令)が記述されている。マイコン100がマイコン1,2のプログラムを実行する際は、この確保した領域をマイコン1,2のメモリとしてアクセスすることで、マイコン1,2の動作をエミュレートする。すなわち、確保された領域には、マイコン1,2がシステム1,2を動作させた場合と同じデータが記憶される。
CPUをエミュレートする場合、ハイパーバイザ32には、CPUが持つレジスタ(汎用レジスタ、プログラムカウンタ、フラグレジスタ、スタックポインタ)に対応した領域をマイコン100のRAM12に確保する処理が記述されている。また、ハイパーバイザ32には、エミュレートしたメモリから命令を1つずつ読み出す、解読する、実行する、という処理の繰り返し、及び、実行結果に応じてRAM12に確保したレジスタの値を更新する処理が記述されている。解読する際には、マイコン1,2のCPUが実行可能な全ての命令のうちどの命令に相当するかを特定する。そして解読結果に応じて、確保されたレジスタを操作する処理が記述されている。実行の内容としては、メモリからレジスタへのデータのコピー(例えばLoad命令の場合)、レジスタからメモリへのデータのコピー(例えばStore命令の場合)、レジスタの値の加減乗除、論理演算、等がある。したがって、RAM12に確保されたレジスタには、マイコン1,2がシステム1,2を動作させた場合にマイコン1,2のCPUのレジスタに格納されるデータと同じデータが記憶される。
I/Oポートをエミュレートする場合、ハイパーバイザ32には、入出力が指示されたI/Oポートに応じた処理が記述されている。すなわち、解読の結果、マイコン1,2のI/Oポートを操作する命令である場合、マイコン100のI/Oポートにアクセスする処理が記述されている。例えば、入力ポートの指定に対し、その入力ポートに対応するI/Oポート20からデータを読み出す処理が記述されている。よって、例えばマイコン1,2でセンサが接続されていた入力ポートが指定された場合、その入力ポートに接続されていたセンサが接続されているマイコン100のI/Oポート20からデータを読み出す、処理が記述されている。
出力ポートの指定に対し、その出力ポートにデータを書き込む、処理が記述されている。よって、例えばマイコン1,2でアクチュエータが接続されていた出力ポートが指定された場合、その出力ポートに接続されていたアクチュエータが接続されているマイコン100のI/Oポート20にデータを書き出す、処理が記述されている。
なお、本実施例ではマイコン1,2がメモリマップドI/O(I/Oポートをアドレスに割り当ててアクセスするI/O指定方式)によりI/Oポート20にアクセスしている。したがって、上記した入力ポート又は出力ポートへのアクセス命令を検出することは、アクセス先のI/Oポート20に対応するアドレス(解読した命令のアクセス先のアドレス(オペランド)を検出することで行われる。
システム1,2のようにOSも含めて1つのマイコン100に搭載する場合、OS1,2が実行する命令がCPU11の特権モードでのみ実行が許可される命令の場合がある。特権モードとはCPU11の動作モードであり、対比されるモードにユーザモードがある。一般的なアプリはシステムの安定性やセキュリティを維持するためユーザモードでのみ実行が許可される。
しかし、マイコン100のハイパーバイザ31上で実行されるOS1,2はユーザモードで実行されているので、ハイパーバイザ31がOS1、2の実行をエミュレートできないおそれがある(そのまま実行すると例外が発生してしまう)。このため、ハイパーバイザ31はOS1,2の特定の命令を、ユーザモードのまま実行できるように別の命令に変換する。
特権モードからユーザモードへは、マイコン100に用意されている特定の命令を実行することで変更される。逆に、ユーザモードから特権モードへは、ハイパーバイザ31が特殊な命令を実行した場合に変更されるので、システム1,2が特権モードに切り替えることはできない。
この他、マイコン1,2が搭載するCANコントローラによる通信も、ハイパーバイザ31はマイコン1,2をエミュレートすることができる。すなわち、ハイパーバイザ31には、命令の解読によりCANコントローラによる通信を検出し、マイコン100のCANコントローラで通信する処理が記述されている。
ハイパーバイザ31は、システム1,2をアプリケーションとして実行するので、システム1,2を1つのタスクやスレッドなどの実行単位として、実行管理する。したがって、少なくともCPU11がどちらのシステムを実行しているかを検出している。CPU11がシングルコアであれば、ハイパーバイザ31は例えば時分割的にシステム1と2を切り替えてCPU11に割り当てる。CPU11がマルチコアであれば、ハイパーバイザ31は例えばコア1とコア2にそれぞれシステム1と2を割り当てる。
〔メモリ保護〕
このように、仮想化技術によりシステム1,2を変更することなくハイパーバイザ31上でシステム1,2が動作する。マイコン100は例えばベースアドレス指定によりシステム1,2を再配置可能にRAMにロードする。再配置可能なプログラムが指定するアドレスを論理アドレスという。これに対しRAM上におけるシステム1,2のアドレスを物理アドレスという。システム1,2のRAMのアドレスは不定であるが、システム1,2の命令に含まれるアドレスは固定なので、マイコン100は、メモリ保護機構32を用いて、システム1,2が出力する論理アドレスとRAMの物理アドレスを対応づける。
図4は、メモリ保護機構32の機能を模式的に説明する図の一例である。ハイパーバイザ31はシステム1、2の起動を特定の命令の実行などから検出して、システム毎にページテーブルエントリ(PTE)とページテーブルを作成する。メモリ保護機構32は、RAMなどの物理アドレスをページ単位に分割し、論理アドレスのアドレス空間を同じサイズのページ単位に分割する。そして、物理ページのページ番号と論理ページのページ番号を対応付ける。
PTEには、論理ページ番号に対応づけてページテーブルのアドレス、無効フラグ、R/Wフラグ、及び、U/Hフラグなどが登録されている。ページテーブルのアドレスは、システム別に用意されたページテーブルの先頭アドレスである。無効フラグは対応する物理ページの有無を示す。R/Wフラグはリード/ライトの許可を示す。U/Hフラグは、ユーザモードと特権モード(ハイパーバイザモード)のどちらでアクセスが許可されているかを示す。
論理アドレスの先頭の所定数のビットが論理ページ番号で、残りがページ内のオフセットである。メモリ保護機構32は、PTEを参照してページテーブルを参照し、システム1,2の命令に含まれる論理ページ番号に対応づけられた物理ページ番号を特定する。この物理ページ番号とオフセットを統合したアドレスが物理アドレスになる。システム毎にページテーブルが異なるので、論理アドレスが同じでも、物理アドレスが重複することがない。
システム1,2が論理アドレスをメモリ保護機構32に出力すると、メモリ保護機構32は実行中のシステムを特定して、システムに固有のページテーブルを参照する。よって、システム1,2はRAMのシステム1,2の領域にアクセスすることができる。I/Oポート20もアドレス空間の一部に割り当てられるので、RAMと同様にアクセスできる。
また、システム1がRAMにマッピングされていない論理アドレスを指定した場合、メモリ保護機構32は例外を発生する。マッピングされているかどうかは無効フラグにより判定される。また、リード/ライトの許可がない物理アドレスに変換される論理アドレスを指定した場合、特権モードでのみアクセスが許可される物理アドレスに変換される論理アドレスを指定した場合も同様である。このように、メモリ保護機構32によりシステム1、2がアクセスするメモリが保護される。
そして、システム1,2がI/Oポート20にアクセスする場合、I/Oポート20に割り当てられた論理アドレスを指定する。従来であればメモリ保護機構32はこの論理アドレスも物理アドレスに変換するが、本実施例では、システム1,2がI/Oポート20に直接、アクセスすることが禁止される。
図5は、システム1,2によるI/Oポート20へのアクセスを禁止する際のPTEの設定例を示す図である。フラグ=“1”で許可であるとする。
・R/Wフラグ=1/1
・U/Hフラグ=0/1
R/Wフラグによれば、いずれも“1”なので、このPTEが指示する論理ページに対応するI/Oポート20に対しリードすることもライトすることも可能である。しかしながら、U/Hフラグが“0/1”なので、ユーザモードではリード/ライトが許可されない。すなわち、システム1,2はI/Oポート20にアクセスすることはできない。一方、特権モードではリード/ライトが許可されるので、ハイパーバイザ31はI/Oポート20にアクセスすることができる。
したがって、例えばハイパーバイザ31がマイコン100の起動時に、論理アドレスがI/Oポート20を含む論理ページのPTEについて、図5のように設定することで、システム1,2がI/Oポート20にアクセスすることを禁止できる。なお、I/Oポート20の論理アドレスはシステム1,2の構成から明らかであるし、開発者にとって既知である。
システム1,2がI/Oポート20にアクセスする命令を実行した場合、メモリ保護機構32は例外を発生する(この例外の発生をアクセス違反という場合がある。)。これにより、ハイパーバイザ31はシステム1,2によるI/Oポート20へのアクセスを検出する。
このように本実施例ではページ単位でI/Oポート20にアクセス制限すればよいので(全てのI/Oポートをアクセス禁止にすればよいので)、ページテーブルエントリの数が多くなりすぎることがない。
〔機能構成〕
図6は、ハイパーバイザ31の機能ブロック図の一例を示す。ハイパーバイザ31は主にアクセス制御部33、I/Oアクセス管理情報34、及び、システム実行情報35を有している。
システム実行情報35は、アクセス違反が通知された場合に、実行中のシステム(OS又はアプリ)を特定するための情報である。システム1,2のどちらもI/Oポート20へのアクセスが禁止されているので、どちらがアクセスしたか特定する必要があるためである。
図7(a)はシステム実行情報35の一例を示す図である。システム実行情報35としては、例えば、マイコン100で実行中のシステムの識別情報、例外を発生させたプログラムのアドレスが挙げられる。マイコン100で実行中のシステムの識別情報は、ハイパーバイザ31が定常的に管理している。ハイパーバイザ31は、CPU11に割り当てているシステムをテーブルなどに登録してあるので、このテーブルを参照することでシステムを特定できる。
例外を発生させたプログラムのアドレスは、エミュレートされたプログラムカウンタに設定されている。プログラムカウンタの値は論理アドレスなので、ページテーブルを参照して物理アドレスを特定すれば、それがシステム1の領域かシステム2の領域かを判別できる。プログラムカウンタに設定されているアドレスは、ハイパーバイザ31がエミュレートにより取得しているので容易に特定できる。そして、プログラムカウンタに設定されているアドレスから、システム1,2が実行した命令が分かるので、システム1,2がI/Oポート1又はI/Oポート2のどちらにアクセスしたかが判明する。
なお、メモリ保護機構は、論理アドレスから物理アドレスを出力するので(アドレスに関する変換を行うので)、例外を発生させたプログラムの論理アドレス、アクセス違反が発生した時のI/Oポート20の物理アドレス、システムが書き込む予定のデータ(又はそのアドレス)が設定される。したがって、メモリ保護機構からシステム実行情報と同等の情報を取得することもできる。
I/Oアクセス管理情報34は、各I/Oポート1,2に対する各システムのアクセス権が登録された情報である。すなわち、メモリ保護機構32では禁止されているが、統合前のシステムではアクセスが許可されていたI/Oポート1,2がシステムに対応づけて登録されている。
図7(b)はI/Oアクセス管理情報34の一例を示す図である。図示するように、例えば、I/Oポート1にはシステム1が対応づけられ、I/Oポート2にはシステム2が対応づけられている。I/Oアクセス管理情報34は静的な情報なので、開発者等がハイパーバイザ31のビルド時に設定しておくことができる。また、マイコン100の起動時に、ハイパーバイザ31が動的に設定してもよい。この方法は、システム1,2がI/Oポート1,2のどちらを使用してもよい場合に採用できる。例えばシステム1,2の起動順にI/Oポート1,2を割り当てる。
アクセス制御部33は、ハイパーバイザ31内部の機能である。すなわち、特権モードで動作する。アクセス制御部33は、メモリ保護機構32の例外の発生により起動される。アクセス制御部33は、例外発生時のプログラムカウンタの値により実行された命令を特定し、命令がI/Oポート20に対応するアドレスへのアクセスによるものであるか否かを判定する。
例外がI/Oポート20へのアクセスにより発生した場合、アクセス制御部33はアクセス制御を行う。すなわち、システム実行情報35に基づき例外が発生した時のシステムを特定し、I/Oアクセス管理情報34において、該システムのアクセスが許可されているか否かを判定する。アクセスが許可されている場合は、システムの代わりにI/Oポート20にアクセスし、アクセスが許可されていない場合は、システムに対しアクセス違反を通知する。
統合前のシステム1、2ではI/Oポートのアクセス違反は生じないとしてよい。しかし、I/Oポートに限定しなければ、アクセス違反が生じた場合、マイコン1,2に搭載されているメモリ保護機構32が例外の発生を割込みなどでOSに通知する。システム1,2はOS1,2が備える例えば、例外ハンドラ等を実行することで、例外発生に対応した処理を行う。この処理はOS1,2により統合前から決まっている。よって、アクセス制御部33としては、システム1,2に例外ハンドラを実行させることで例外の発生をOS1,2に通知できる。具体的には、例外ハンドラが記述されたシステム1,2のアドレスからシステム1,2の命令の解読(エミュレート)を再開する。
また、アクセス制御部33は、統合の影響によりアクセス違反がどの程度生じているかを管理するため、アクセスの履歴を記録する。
図8は、アクセス履歴テーブルの一例を示す図である。アクセス制御部33は、例えば、I/Oポート20にアクセスしたシステム、アクセス時刻、アクセス時に実行された命令の物理アドレス、アクセス先のI/Oポート1,2、例外発生の有無等を記録する。発生時刻は例えば起動時からの経過時間であるが、絶対時刻でもよい。
このような記録により、開発者等は、システム1,2がどのくらいの頻度でどのI/Oポート1,2にアクセスするか、及び、周期性などを検証できる。また、システム1とシステム2のアクセスのパターン(例えば、システム1が2回アクセスするとシステム1が1回アクセスする、システム1とシステム2が連続してアクセスする)の有無を検証できる。また、例外が発生した場合には、例えば特定の物理アドレスの命令で例外が起こりやすいこと、例外発生の前後のアクセスのパターン(例えば、システム1又は2が連続してアクセスすると例外が発生する)の有無を検証できる。
〔例外発生によりアクセス制御部33がI/Oポートへのアクセスを代替することのメリット〕
ハイパーバイザ31はシステム1,2が実行する命令を解析しているので、I/Oポート20へのアクセスを検出した場合に、例外発生を待つことなくI/Oポート20にアクセスすることも可能である。この場合、メモリ保護機構32によりユーザモードのI/Oポート20へのアクセスを禁止しない方法と、禁止する方法が考えられる。I/Oポート20へのアクセスを禁止しない方法では、想定していないプログラムが追加されることなどでI/Oポート20へアクセスされるおそれがあるため好ましくない。
I/Oポート20へのアクセスを禁止する方法では、I/Oポート20へのアクセスを検出した場合、特権モードに切り替える処理等をハイパーバイザ32に記述する必要が生じ、ハイパーバイザ31の修正が必要になってしまう(ハイパーバイザ31の汎用性が低下してしまう。)。これに対し、例外発生によりアクセス制御部33がI/Oポート20にアクセスする場合、ハイパーバイザ32に例外処理用のモジュールを追加すればよいので、ハイパーバイザ33の汎用性が低下しにくいというメリットがある。
したがって、本実施例の手法が好適であるが、I/Oポート20へのアクセスを検出した場合に、例外発生を待つことなくI/Oポート20にアクセスすることも可能である。
〔動作手順〕
図9(a)はマイコン100の動作手順を示すフローチャート図の一例を、図9(b)はマイコン100の動作を矢印で示す図の一例である。なお、図9(a)と図9(b)の括弧付きの番号は互いに対応している。
まず、ハイパーバイザ31は例えば起動時にユーザモードにおけるI/Oポート20へのアクセスを禁止する(S10)。この後、システム1,2がハイパーバイザ31上で実行される。
例えばシステム1がI/Oポート20にアクセスする命令を実行したものとする(S20)。
メモリ保護機構32はアクセス違反を検出して例外を発生させる(S30)。例外の発生は、CPU11が例外発生時に実行するプログラムの実行によりハイパーバイザ31に通知される。
ハイパーバイザ31のアクセス制御部33は、メモリ保護機構32からアクセスに関する以下の情報を取得する(S40)。
・アクセス違反が発生したI/Oポートの物理アドレス
・システムが書き込む予定のデータ(又はそのアドレス)
・例外を発生させたプログラムのアドレス
そして、システム実行情報35又はステップ40で取得した情報に基づき実行中のシステム及びI/Oポート20を特定する(S50)。
なお、例外の発生により、ハイパーバイザ31は少なくとも例外を発生させたシステム1のエミュレーションを停止し、システム1のコンテキスト(エミュレート内容)を退避しておく。これにより、システム1はI/Oポート20へのアクセスを行った後は命令を実行しない。
アクセス制御部33は、特定したシステム1がI/Oポート20へのアクセス権を有するか否かを、I/Oアクセス管理情報34を参照することで判定する(S60)。
システム1がI/Oポート20へのアクセス権を有している場合(S60のYes)、アクセス制御部33はシステム1の代わりにI/Oポート20へアクセスする(S70)。アクセス制御部33は、プログラムカウンタに設定されているアドレスから、システムが実行した命令を特定し、その命令を実行する。システムが実行した命令そのものを実行するのではなく、データの記憶元を該命令から特定し、そのデータをI/Oポート20に書き込む命令を実行してもよい。これにより、システム1がI/Oポート20にアクセスしようとした命令をハイパーバイザ31が実行できる。
I/Oポート20へのアクセスが書き込みだった場合、ハイパーバイザ31はシステム1の代わりにI/Oポート20にアクセスした後、コンテキストを復帰させる。これにより、システム1は、例外の発生後の命令から実行を再開できる。
I/Oポート20へのアクセスが読み出しだった場合、ハイパーバイザ31はシステム1の代わりにI/Oポート20にアクセスした後、DMACからの割込みを待つ。DMACはメモリ保護機構32が出力した物理アドレスのI/Oポート20にアクセスして、I/Oポート20の受信バッファからデータを読み出しRAMに書き込む。DMACは、I/Oポート20からRAMへの転送が終了するとCPU11に受信割り込みするので、その割り込みによりハイパーバイザ31は中断したシステム1のコンテキストを復帰させる。システム1は、例外の発生後の命令から実行を再開し、I/Oポート20から読み出されたデータをRAMから読み出すことができる。
システム1がI/Oポート20へのアクセス権を有していない場合(S60のNo)、アクセス制御部33はシステム1にアクセス違反を通知する(S80)。すなわち、例外ハンドラを実行させ、実行後、ハイパーバイザ31は中断したシステム1のコンテキストを復帰させる。これにより、システム1は統合前と同様にアクセス違反を検出できる。
以上のように、本実施例のマイコン100は、統合前にアクセスするI/Oポート20が定められている複数のシステム1,2を1つのマイコン100に統合した場合、アクセス制御部33がI/Oポート20へのアクセスを制御する。よって、システム1,2のアクセス違反を防止できる。システム1,2には変更が必要なく、新たなハードウェアの追加も必要ない。また、統合対象のシステムが増加しても、アクセス制御部33やメモリ保護機構32の設定を修正するだけで対応することができる。
本実施例ではシステムの優先度に基づきシステム1,2のアクセスを制御するマイコン100について説明する。
機能ブロック図は実施例1の図6と同様である。しかし、本実施例のアクセス制御部33はシステム1,2の優先度に基づき、優先度の高い方のシステムのI/Oポート20へのアクセスを優先する。このような優先制御は、異なるシステム1,2が同じI/Oポート20にアクセスする場合に有効である。
システム1、2の優先度は統合時に開発者等に既知の場合と、アクセス制御部33が動的に決定する場合がある。ASILに基づき優先度を決定する場合、ASIL QM<A<B<C<Dの順に優先度が高い。したがって、開発者等がアクセス制御部33にシステム1,2の優先度を予め設定しておくことができる。
優先度を動的に決定する場合、例えば、アクセス違反の頻度から決定する。ASILが高いシステムは高度に設計・検証が行われているので、アクセス違反することが少ない。したがって、アクセス違反が少ないシステムは優先度が高いシステムであることが推定される。アクセス制御部33は、図8のアクセス履歴テーブルを参照して、過去の全て又は所定時間のアクセス違反の頻度に基づき各システムの優先度を動的に決定する。
そして、アクセス制御部33は、システム1,2の過去のアクセス履歴に基づき、次のアクセスタイミングを予測する。
図10は、アクセスタイミングの予測を説明する図の一例である。システムが同じI/Oポート20にアクセスする周期をアクセス間隔Ta、I/Oポート20を占有する時間をアクセス時間Tbとする。図示するように、システム1のアクセス間隔はTa1、システム2のアクセス間隔はTa2,システム1アクセス時間はTb1、システム2のアクセス時間はTb2、である。本実施例では優先度の高いシステム1を優先すればよいので、システム1のアクセス間隔Ta1と、システム2のアクセス時間Tb2とが特定できていればよい。よって、システム2のアクセス間隔Tbは不定期でもよい。
システム1のアクセス間隔Ta1に規則性があるので、アクセス制御部33はシステム1のアクセスタイミングを予測できる。すなわち、時刻t1にシステム1がアクセスした場合、次回のアクセスタイミングは「時刻t2=時刻t1+アクセス間隔Ta1」、時刻t2にシステム1がアクセスした場合、次回のアクセスタイミングは「時刻t4=時刻t2+アクセス間隔Ta1」である。
例えば、時刻t3に、優先度が低いシステム2がI/Oポート20にアクセスした場合、実施例1にて説明したように、アクセス制御部33は例外の発生によりアクセス要求を検出する。アクセス制御部33はシステム2によるI/Oポート20の占有が、システム1がアクセスするまでに完了するか否かを判定する。具体的には以下を判定する。
時刻t4>現在時刻+アクセス時間Tb2
時刻t4の方が、「現在時刻+アクセス時間Tb2」よりも大きい場合、システム2によるI/Oポート20のアクセスは、システム1がI/Oポート20にアクセスを開始するまでに完了する。この場合、アクセス制御部33はシステム2のアクセス要求を、待機することなく実行する。
時刻t4の方が、「現在時刻+アクセス時間Tb2」よりも大きくない場合、システム2によるI/Oポート20のアクセスは、システム1がI/Oポート20にアクセスを開始するまでに完了しない。この場合、アクセス制御部33は、システム1のI/Oポート20のアクセスを優先するため、システム2のアクセス要求を、システム1のアクセスが完了するまで待機させる。こうすることで、統合によりシステム1,2が同じI/Oポート20にアクセスする状況が生じても、優先が高いシステム1を優先できる。
図11(a)はマイコン100の動作手順を示すフローチャート図の一例を、図11(b)はマイコン100の動作を矢印で示す図の一例である。なお、図11(a)と図11(b)の括弧付きの番号は互いに対応している。
図11の手順のうちステップS10〜S60までの処理は図9と同様であるが、本実施例では優先度が低いシステム2がアクセスするものとする。特定したシステム2がI/Oポート20へのアクセス権を有していない場合、実施例1と同様にアクセス制御部33はアクセス違反を通知する(S80)。
特定したシステム2がI/Oポート20へのアクセス権を有している場合(S60のYes)、アクセス制御部33は、アクセス履歴テーブルにより、システム1のアクセス間隔Ta1と、システム2のアクセス時間Tb2を特定する(S62)。アクセス間隔やアクセス時間は、予め更新されていることが好ましいが、アクセス要求がある度に算出してもよい。
アクセス制御部33は、システム2よりも優先度が高いシステム1が、システム2のアクセス完了までにI/Oポート20にアクセスするか否かを判定する(S64)。
システム2のアクセス完了までにシステム1がI/Oポート20にアクセスしない場合(S64のNo)、アクセス制御部33はシステム2の代わりにI/Oポート20へアクセスする(S82)。
システム2のアクセス完了までにシステム1がI/Oポート20にアクセスする場合(S64のYes)、アクセス制御部33はシステム2のアクセスよりもシステム1のアクセスを先に行い、その後、システム2の代わりにI/Oポート20へアクセスする(S84)。
こうすることで、優先度の異なるシステムが同じI/Oポート20を共有する場合、優先度の高いシステムを優先することができ、システム1は統合前と同程度のタイミングでI/Oポート20にアクセスすることが可能になる。
以上説明したように、本実施例のマイコン100によれば、実施例1の効果に加え、優先度が高いシステム1のI/Oポート20のアクセスを優先度が低いシステム2よりも優先できる。
31 ハイパーバイザ
32 メモリ保護機構
33 アクセス制御部
34 I/Oアクセス管理情報
35 システム実行情報
100 マイコン

Claims (8)

  1. 複数のプログラムが記憶されたプログラム記憶手段と、
    前記プログラムを実行する1つ以上の演算手段と、
    外部の回路と通信可能な複数のインタフェースと、を有する情報処理装置であって、
    前記プログラムがアクセス可能な前記インタフェースが登録されたインタフェース登録テーブルと、
    前記インタフェースにアクセス要求した前記プログラムが、前記インタフェースにアクセスすることが許可されている場合、前記プログラムの代わりに前記インタフェースにアクセスするアクセス制御手段と、
    を有する情報処理装置。
  2. 複数の前記プログラムのそれぞれが前記インタフェースにアクセスすることを禁止するアクセス禁止手段を有し、
    前記アクセス制御手段は、前記アクセス禁止手段から前記プログラムが前記インタフェースにアクセス要求したことを検出する、
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記インタフェースにアクセスした前記プログラム及び前記インタフェースを識別するためのプログラム識別情報を有し、
    前記アクセス制御手段は、前記プログラムが前記インタフェースにアクセス要求した際、前記プログラム識別情報に基づき、前記プログラム及び前記インタフェースを特定する、
    ことを特徴とする請求項1又は2記載の情報処理装置。
  4. 前記プログラム識別情報は、前記アクセス禁止手段が、前記プログラムが前記インタフェースにアクセス要求したことを検出した際に前記演算手段が実行していた前記プログラムのアドレスである、
    ことを特徴とする請求項3記載の情報処理装置。
  5. 複数の前記プログラムが同じ前記インタフェースにアクセスする場合、
    前記アクセス制御手段は、第一のプログラムによる前記インタフェースへのアクセスが、前記第一のプログラムよりも優先度が低い第二のプログラムにより待機状態となることを予測した場合、前記第二のプログラムの前記インタフェースへのアクセスを行う前に、前記第一のプログラムの前記インタフェースへのアクセスを行い、前記第一のプログラムの前記インタフェースへのアクセスが完了した後、前記第二のプログラムの前記インタフェースへのアクセスを行う、
    ことを特徴とする請求項1〜4いずれか1項記載の情報処理装置。
  6. 前記アクセス制御手段は、前記インタフェースにアクセス要求した前記プログラム及びアクセスが許可されたか否かを記録しておき、アクセスが許可されていないという記録が多い方の前記プログラムの優先度が、アクセスが許可されていないという記録が少ない前記プログラムよりも低いと決定する、
    ことを特徴とする請求項5記載の情報処理装置。
  7. 前記アクセス制御手段は、前記プログラムが動作していた個々のハードウェアをエミュレートするハイパーバイザが有する機能であり、
    前記ハイパーバイザは、複数の前記プログラムの各命令を解析した結果に基づき、前記ハードウェア上で前記プログラムが実行された場合の前記ハードウェアのメモリ、CPUのレジスタ、及び、入出力インタフェースのエミュレート状態を更新することで、複数の前記プログラムを実行する、
    ことを特徴とする請求項1〜6いずれか1項記載の情報処理装置。
  8. 複数のプログラムが記憶されたプログラム記憶手段と、
    前記プログラムを実行する1つ以上の演算手段と、
    外部の回路と通信可能な複数のインタフェースと、を有する情報処理装置のインタフェースアクセス方法であって、
    アクセス制御手段が、前記プログラムがアクセス可能な前記インタフェースが登録されたインタフェース登録テーブルを参照して、前記インタフェースにアクセス要求した前記プログラムが、前記インタフェースにアクセスすることが許可されている場合、前記プログラムの代わりに前記インタフェースにアクセスする、
    インタフェースアクセス方法。
JP2012023447A 2012-02-06 2012-02-06 情報処理装置、インタフェースアクセス方法 Pending JP2013161299A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012023447A JP2013161299A (ja) 2012-02-06 2012-02-06 情報処理装置、インタフェースアクセス方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012023447A JP2013161299A (ja) 2012-02-06 2012-02-06 情報処理装置、インタフェースアクセス方法

Publications (1)

Publication Number Publication Date
JP2013161299A true JP2013161299A (ja) 2013-08-19

Family

ID=49173480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012023447A Pending JP2013161299A (ja) 2012-02-06 2012-02-06 情報処理装置、インタフェースアクセス方法

Country Status (1)

Country Link
JP (1) JP2013161299A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015025597A1 (ja) * 2013-08-22 2015-02-26 日立オートモティブシステムズ株式会社 車両制御装置
WO2015045507A1 (ja) * 2013-09-30 2015-04-02 日立オートモティブシステムズ株式会社 車両用制御装置
WO2017056725A1 (ja) * 2015-09-30 2017-04-06 日立オートモティブシステムズ株式会社 車載制御装置
CN106716617A (zh) * 2014-09-19 2017-05-24 东京毅力科创株式会社 基板搬送方法和处理***
JP2017204286A (ja) * 2017-06-28 2017-11-16 日立オートモティブシステムズ株式会社 車両用制御装置
JP2017207952A (ja) * 2016-05-19 2017-11-24 日本電信電話株式会社 処理装置、アクセス制御方法およびアクセス制御プログラム
JP2021111083A (ja) * 2020-01-09 2021-08-02 株式会社デンソー 電子制御装置
WO2023119652A1 (ja) * 2021-12-24 2023-06-29 日立Astemo株式会社 電子制御装置、及びアクセス制御方法

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015025597A1 (ja) * 2013-08-22 2015-02-26 日立オートモティブシステムズ株式会社 車両制御装置
JP2015039983A (ja) * 2013-08-22 2015-03-02 日立オートモティブシステムズ株式会社 車両制御装置
CN105636832A (zh) * 2013-08-22 2016-06-01 日立汽车***株式会社 车辆控制装置
US9610906B2 (en) 2013-08-22 2017-04-04 Hitachi Automotive Systems, Ltd. Vehicle control device
WO2015045507A1 (ja) * 2013-09-30 2015-04-02 日立オートモティブシステムズ株式会社 車両用制御装置
JP2015067107A (ja) * 2013-09-30 2015-04-13 日立オートモティブシステムズ株式会社 車両用制御装置
CN106716617B (zh) * 2014-09-19 2020-02-07 东京毅力科创株式会社 基板搬送方法和处理***
CN106716617A (zh) * 2014-09-19 2017-05-24 东京毅力科创株式会社 基板搬送方法和处理***
JPWO2017056725A1 (ja) * 2015-09-30 2018-03-15 日立オートモティブシステムズ株式会社 車載制御装置
US10552368B2 (en) 2015-09-30 2020-02-04 Hitachi Automotive Systems, Ltd. In-vehicle control device
WO2017056725A1 (ja) * 2015-09-30 2017-04-06 日立オートモティブシステムズ株式会社 車載制御装置
JP2017207952A (ja) * 2016-05-19 2017-11-24 日本電信電話株式会社 処理装置、アクセス制御方法およびアクセス制御プログラム
JP2017204286A (ja) * 2017-06-28 2017-11-16 日立オートモティブシステムズ株式会社 車両用制御装置
JP2021111083A (ja) * 2020-01-09 2021-08-02 株式会社デンソー 電子制御装置
JP7322715B2 (ja) 2020-01-09 2023-08-08 株式会社デンソー 電子制御装置
WO2023119652A1 (ja) * 2021-12-24 2023-06-29 日立Astemo株式会社 電子制御装置、及びアクセス制御方法

Similar Documents

Publication Publication Date Title
JP2013161299A (ja) 情報処理装置、インタフェースアクセス方法
CN109643290B (zh) 用于具用扩展分段的面向对象的存储器管理的技术
EP1966706B1 (en) Identifier associated with memory locations for managing memory accesses
JP5870206B2 (ja) 効率的なメモリ及びリソース管理
JP5914145B2 (ja) メモリ保護回路、処理装置、およびメモリ保護方法
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
US8595487B2 (en) Virtualization hardware for device driver isolation
JP5571208B2 (ja) パフォーマンスカウンタの仮想化
GB2531844B (en) Hardware-protective data processing systems and methods using an application executing in a secure domain
US20120331465A1 (en) Virtual machine system, virtual machine control method, virtual machine control application, and semiconductor integrated circuit
US7523229B2 (en) Memory protection during direct memory access
US9318167B2 (en) Information processing apparatus
JPWO2010097925A1 (ja) 情報処理装置
JP2009009232A (ja) コンピュータとカーネル保護方法並びにコンピュータソフトウエア
JP5999216B2 (ja) データ処理装置
JP5925288B2 (ja) 計算機、アクセス管理方法およびアクセス管理プログラム
JP6679419B2 (ja) メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ
JP2016018555A (ja) 動作環境の切換方法、コンピュータ、およびコンピュータ・プログラム
WO2015122007A1 (ja) 計算機、及び、ハイパバイザによる資源スケジューリング方法
JP2014074995A (ja) 情報処理装置
Farrall et al. Hardware and software support for mixed-criticality multicore systems
JP5703505B2 (ja) バスパーティション構造を備えるコンピュータ
EP4372551A1 (en) Virtual machine management method and related system, and storage medium
JP2009266050A (ja) 情報処理装置
Dibble et al. Programming embedded systems: interacting with the embedded platform