特許第6048507号(P6048507)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6048507変換装置、変換方法、および情報処理システム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6048507
(24)【登録日】2016年12月2日
(45)【発行日】2016年12月21日
(54)【発明の名称】変換装置、変換方法、および情報処理システム
(51)【国際特許分類】
   G06F 9/445 20060101AFI20161212BHJP
【FI】
   G06F9/06 610J
【請求項の数】6
【全頁数】37
(21)【出願番号】特願2014-537967(P2014-537967)
(86)(22)【出願日】2012年9月27日
(86)【国際出願番号】JP2012074989
(87)【国際公開番号】WO2014049798
(87)【国際公開日】20140403
【審査請求日】2015年4月1日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】山下 浩一郎
(72)【発明者】
【氏名】山内 宏真
(72)【発明者】
【氏名】鈴木 貴久
(72)【発明者】
【氏名】栗原 康志
(72)【発明者】
【氏名】大友 俊也
【審査官】 長谷川 篤男
(56)【参考文献】
【文献】 特開平11−338678(JP,A)
【文献】 特開昭60−091460(JP,A)
【文献】 特開2010−218103(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
プロセッサがブートのためにアクセスする各論理アドレスと、前記各論理アドレスの変換先の各物理アドレスと、の対応関係を示す対応情報を、前記プロセッサをブートさせるイベントの種別ごとに関連付けて記憶する記憶部と、
前記プロセッサをブートさせる第1のイベントが発生した場合に、前記記憶部を参照して前記第1のイベントの種別に関連する対応情報を選択し、前記第1のイベントの発生による前記プロセッサのブートが終了する前に前記第1のイベントより優先して前記プロセッサをブートさせる第2のイベントが発生した場合に、前記記憶部を参照して前記第2のイベントの種別に関連する対応情報を選択する選択部と、
前記第2のイベントの発生によって前記プロセッサが前記第2のイベントに応じた前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記選択部によって選択された前記第2のイベントの種別に関連する対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定し、前記第2のイベントの発生による前記プロセッサのブートが終了した後に、前記第1のイベントによって前記プロセッサが前記第1のイベントに応じた前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記選択部によって選択された前記第1のイベントの種別に関連する対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定する特定部と、
前記特定部によって特定された物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムを前記プロセッサに取得させる制御部と、
を有することを特徴とする変換装置。
【請求項2】
プロセッサがブートのためにアクセスする各論理アドレスの中で前記プロセッサをブートさせるイベントの種別に固有の各論理アドレスと、前記固有の各論理アドレスの変換先であって記憶装置内で前記イベントの種別に固有のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す第1の対応情報を前記イベントの種別ごとに関連付けて記憶するとともに、前記各論理アドレスの中で前記イベントの各種別に共通の各論理アドレスと、前記共通の各論理アドレスの変換先であって前記記憶装置内で前記イベントの各種別に共通のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す第2の対応情報を記憶する記憶部と、
前記イベントが発生した場合に、前記記憶部を参照して発生した前記イベントの種別に関連する前記第1の対応情報を選択する選択部と、
前記プロセッサが発生した前記イベントの種別に固有の各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記選択部によって選択された前記第1の対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定し、前記プロセッサが前記共通の各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記記憶部に記憶された前記第2の対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定する特定部と、
前記特定部によって特定された物理アドレスが示す前記記憶装置内の記憶領域に記憶されたプログラムを前記プロセッサに取得させる制御部と、
を有することを特徴とする変換装置。
【請求項3】
プロセッサがブートのためにアクセスする各論理アドレスと、前記各論理アドレスの変換先の各物理アドレスと、の対応関係を示す対応情報を、前記プロセッサをブートさせるイベントの種別ごとに関連付けて記憶する記憶部にアクセス可能な変換装置が、
前記プロセッサをブートさせる第1のイベントが発生した場合に、前記記憶部を参照して前記第1のイベントの種別に関連する対応情報を選択し、前記第1のイベントの発生による前記プロセッサのブートが終了する前に前記第1のイベントより優先して前記プロセッサをブートさせる第2のイベントが発生した場合に、前記記憶部を参照して前記第2のイベントの種別に関連する対応情報を選択し、
前記第2のイベントの発生によって前記プロセッサが前記第2のイベントに応じた前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記第2のイベントの種別に関連する対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定し、前記第2のイベントの発生による前記プロセッサのブートが終了した後に、前記第1のイベントによって前記プロセッサが前記第1のイベントに応じた前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記第1のイベントの種別に関連する対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定し、
特定した物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムを前記プロセッサに取得させる、
処理を実行することを特徴とする変換方法。
【請求項4】
プロセッサがブートのためにアクセスする各論理アドレスの中で前記プロセッサをブートさせるイベントの種別に固有の各論理アドレスと、前記固有の各論理アドレスの変換先であって記憶装置内で前記イベントの種別に固有のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す第1の対応情報を前記イベントの種別ごとに関連付けて記憶するとともに、前記各論理アドレスの中で前記イベントの各種別に共通の各論理アドレスと、前記共通の各論理アドレスの変換先であって前記記憶装置内で前記イベントの各種別に共通のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す第2の対応情報を記憶する記憶部にアクセス可能な変換装置が、
前記イベントが発生した場合に、前記記憶部を参照して発生した前記イベントの種別に関連する前記第1の対応情報を選択し、
前記プロセッサが発生した前記イベントの種別に固有の各論理アドレスに含まれる論理アドレスにアクセスする場合に、選択した前記第1の対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定し、前記プロセッサが前記共通の各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記記憶部に記憶された前記第2の対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定し、
特定した物理アドレスが示す前記記憶装置内の記憶領域に記憶されたプログラムを前記プロセッサに取得させる、
処理を実行することを特徴とする変換方法。
【請求項5】
プロセッサと、前記プロセッサがアクセスする論理アドレスを物理アドレスに変換する変換装置と、イベントの発生を検出するコントローラと、を含む情報処理システムであって、
前記コントローラは、
前記プロセッサをブートさせる第1のイベントの発生を検出した場合に、起動要求を前記プロセッサに送信するとともに、発生した前記第1のイベントの種別を示す第1種別情報を前記変換装置に送信し、前記第1のイベントの発生による前記プロセッサのブートが終了する前に前記第1のイベントより優先して前記プロセッサをブートさせる第2のイベントの発生を検出した場合に、前記起動要求を前記プロセッサに送信するとともに、発生した前記第2のイベントの種別を示す第2種別情報を前記変換装置に送信し、
前記変換装置は、
前記コントローラから前記第1種別情報を受信した場合に、前記プロセッサによってブートのためにアクセス要求される各論理アドレスと、前記各論理アドレスの変換先の各物理アドレスと、の対応関係を示す対応情報を、前記イベントの種別ごとに関連付けて記憶する記憶部を参照して、前記第1種別情報が示す種別に関連する対応情報を選択し、前記コントローラから前記第2種別情報を受信した場合に、前記記憶部を参照して前記第2のイベントの種別に関連する対応情報を選択し、
前記プロセッサは、
前記コントローラから前記起動要求を受信した場合に、前記各論理アドレスに含まれる論理アドレスのアクセス要求を出力し、
前記変換装置は、
前記第2のイベントの発生によって前記プロセッサが前記第2のイベントに応じた前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記第2のイベントの種別に関連する対応情報を用いて前記プロセッサが出力したアクセス要求の論理アドレスの変換先の物理アドレスを特定し、前記第2のイベントの発生による前記プロセッサのブートが終了した後に、前記第1のイベントによって前記プロセッサが前記第1のイベントに応じた前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記第1のイベントの種別に関連する対応情報を用いて前記プロセッサが出力したアクセス要求の論理アドレスの変換先の物理アドレスを特定し、
前記プロセッサは、
前記変換装置によって特定された物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムを取得して実行する、
ことを特徴とする情報処理システム。
【請求項6】
プロセッサと、前記プロセッサがアクセスする論理アドレスを物理アドレスに変換する変換装置と、イベントの発生を検出するコントローラと、を含む情報処理システムであって、
前記コントローラは、
前記プロセッサをブートさせるイベントの発生を検出した場合に、起動要求を前記プロセッサに送信するとともに、発生した前記イベントの種別を示す種別情報を前記変換装置に送信し、
前記変換装置は、
前記コントローラから前記種別情報を受信した場合に、
プロセッサがブートのためにアクセスする各論理アドレスの中で前記イベントの種別に固有の各論理アドレスと、前記固有の各論理アドレスの変換先であって記憶装置内で前記イベントの種別に固有のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す第1の対応情報を前記イベントの種別ごとに関連付けて記憶するとともに、前記各論理アドレスの中で前記イベントの各種別に共通の各論理アドレスと、前記共通の各論理アドレスの変換先であって前記記憶装置内で前記イベントの各種別に共通のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す第2の対応情報を記憶する記憶部を参照して、前記種別情報が示す種別に関連する第1の対応情報を選択し、
前記プロセッサは、
前記コントローラから前記起動要求を受信した場合に、前記各論理アドレスに含まれる論理アドレスのアクセス要求を出力し、
前記変換装置は、
前記プロセッサが発生した前記イベントの種別に固有の各論理アドレスに含まれる論理アドレスにアクセスする場合に、発生した前記イベントの種別に応じて選択した前記第1の対応情報を用いて前記プロセッサが出力したアクセス要求の論理アドレスの変換先の物理アドレスを特定し、前記プロセッサが前記共通の各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記第2の対応情報を用いて前記プロセッサの出力したアクセス要求の論理アドレスの変換先の物理アドレスを特定し、
前記プロセッサは、
前記変換装置によって特定された物理アドレスが示す前記記憶装置内の記憶領域に記憶されたプログラムを取得して実行する、
ことを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、変換装置、変換方法、および情報処理システムに関する。
【背景技術】
【0002】
複数のセンサー付無線端末(以下、「センサーノード」と称す)を設置領域に設置して、各センサーノードが協調して外部環境や物理的状況を示す情報を採取するセンサーネットワーク(WSN:Wireless Sensor Networks)が知られている。
【0003】
また、情報処理装置における消費電力の低減化に関する従来技術として、例えば、プロセッサおよび周辺回路への電力供給を停止しておき、割り込みコントローラにおいてイベントの発生を検出した場合にプロセッサおよび周辺回路に電力供給を開始する技術がある(例えば、下記特許文献1参照)。また、OS(Operating System)のカーネルを主記憶装置に再ロードする場合に、主記憶装置内の無停止モジュールに関する記憶内容を再ロードの対象から外しておく技術がある(例えば、下記特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平10−333790号公報
【特許文献2】特開平11−024943号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した従来技術では、イベントの発生を契機としたプロセッサの起動において、発生したイベントの種別に応じた処理を実行するための分岐処理により、プロセッサの起動が完了するまでの起動時間が長くなるという問題がある。
【0006】
本発明は、プロセッサの起動時間を短縮することを目的とする。
【課題を解決するための手段】
【0007】
本発明の一側面によれば、プロセッサがブートのためにアクセスする各論理アドレスと、各論理アドレスの変換先の各物理アドレスと、の対応関係を示す対応情報を、プロセッサをブートさせるイベントの種別ごとに関連付けて記憶する記憶部を有し、イベントが発生した場合に、記憶部を参照して発生したイベントの種別に関連する対応情報を選択し、イベントの発生によってプロセッサが各論理アドレスに含まれる論理アドレスにアクセスする場合に、選択した対応情報を用いてプロセッサがアクセスする論理アドレスの変換先の物理アドレスを特定し、特定した物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムをプロセッサに取得させる変換装置、および変換方法が提案される。
【0008】
また、本発明の一側面によれば、プロセッサと、プロセッサがアクセスする論理アドレスを物理アドレスに変換する変換装置と、イベントの発生を検出するコントローラと、を含む情報処理システムであって、コントローラは、プロセッサをブートさせるイベントの発生を検出した場合に、起動要求をプロセッサに送信するとともに、発生したイベントの種別を示す種別情報を変換装置に送信し、変換装置は、コントローラから種別情報を受信した場合に、プロセッサによってブートのためにアクセス要求される各論理アドレスと、各論理アドレスの変換先の各物理アドレスと、の対応関係を示す対応情報を、イベントの種別ごとに関連付けて記憶する記憶部を参照して、種別情報が示す種別に関連する対応情報を選択し、プロセッサは、コントローラから起動要求を受信した場合に、各論理アドレスに含まれる論理アドレスのアクセス要求を出力し、変換装置は、選択した対応情報を用いてプロセッサが出力したアクセス要求の論理アドレスの変換先の物理アドレスを特定し、プロセッサは、変換装置によって特定された物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムを取得して実行する情報処理システムが提案される。
【発明の効果】
【0009】
本発明の一側面によれば、プロセッサの起動時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【0010】
図1図1は、センサーノードにおけるMCU起動の流れの一例を示す説明図である。
図2図2は、センサーノード100を含むセンサーネットワークの構成例を示す図である。
図3図3は、センサーノード100の内部構成例を示すブロック図である。
図4図4は、図3に示した割り込みコントローラ101、アドレス変換回路103、およびMCU102の詳細な構成例を示す説明図である。
図5図5は、図4に示したメモリ104の記憶内容の一例を示す説明図である。
図6図6は、変換テーブル430の記憶内容の一例を示す説明図である。
図7図7は、変換装置の機能的構成例を示すブロック図である。
図8図8は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その1)である。
図9図9は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その2)である。
図10図10は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その3)である。
図11図11は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その4)である。
図12図12は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その5)である。
図13図13は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その6)である。
図14図14は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その7)である。
図15図15は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その8)である。
図16図16は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その9)である。
図17図17は、センサーノード100におけるMCU102の起動の内容例1を示す説明図(その10)である。
図18図18は、センサーノード100におけるMCU起動処理の処理手順の一例を示すシーケンス図である。
図19図19は、ステップS1805に示したMCU102におけるブート処理の処理手順の一例を示すシーケンス図である。
図20図20は、センサーノード100におけるMCU102の起動の内容例2を示す説明図(その1)である。
図21図21は、センサーノード100におけるMCU102の起動の内容例2を示す説明図(その2)である。
図22図22は、センサーノード100におけるMCU102の起動の内容例2を示す説明図(その3)である。
図23図23は、センサーノード100におけるMCU102の起動の内容例2を示す説明図(その4)である。
図24図24は、センサーノード100におけるMCU102の起動の内容例2を示す説明図(その5)である。
図25図25は、センサーノード100におけるMCU102の起動の内容例2を示す説明図(その6)である。
図26図26は、センサーノード100におけるMCU102の起動の内容例2を示す説明図(その7)である。
図27図27は、センサーノード100におけるMCU102の起動の内容例2を示す説明図(その8)である。
図28図28は、センサーノード100における多重割り込み処理の処理手順の一例を示すシーケンス図である。
【発明を実施するための形態】
【0011】
以下に添付図面を参照して、本発明にかかる変換装置、変換方法、および情報処理システムの実施の形態を詳細に説明する。開示の変換装置は、イベントが発生した場合に、当該イベントに応じた変換元の論理アドレスと、当該イベントに応じたプログラムの記憶領域を示す変換先の物理アドレスと、の組み合わせを選択しておく。そして、開示の変換装置は、プロセッサが変換元の論理アドレスにアクセスする場合に、選択しておいた組み合わせを用いて当該論理アドレスを変換先の物理アドレスに変換して、当該イベントに応じたプログラムをプロセッサに取得させる。
【0012】
ここで、プロセッサが、複数のイベントの各々のイベントに応じたプログラムの中から、発生したイベントに応じたプログラムを実行するために、分岐処理を実行する構成が考えられる。分岐処理とは、例えば、どのようなイベントが発生したかを特定し、特定したイベントに応じたプログラムを選択する処理である。しかしながら、この構成では、分岐処理に時間がかかりプロセッサの起動時間が長くなる。一方で、開示の変換装置によれば、プロセッサは、上述した分岐処理を実行しなくても、発生したイベントに応じたプログラムを実行することができる。結果として、プロセッサにおいて、分岐処理にかかる時間が削減され、起動時間が短縮化される。以降では、本発明にかかる変換装置を含み、本発明にかかる情報処理システムを実現するセンサーノードを例に挙げて、実施の形態について説明する。
【0013】
(センサーノードにおけるMCU起動の流れ)
図1は、センサーノードにおけるMCU起動の流れの一例を示す説明図である。図1のように、センサーノード100は、割り込みコントローラ101と、マイクロプロセッサ(MCU:Micro Control Unit)102と、アドレス変換回路(変換装置)103と、メモリ104と、を含む。
【0014】
割り込みコントローラ101は、MCU102をブートさせるトリガになるイベントの発生を検出する装置である。イベントは、例えば、タイマーの計時やセンサーの変位量の検出により発生する。イベントとは、プロセッサにブートを実行させ当該イベントに応じたプログラムを実行させるトリガである。イベントは、例えば、タイマーやセンサーにより発生される。
【0015】
割り込みコントローラ101は、イベントの発生を検出した場合に、アドレス変換回路103に起動要求と検出されたイベントの種別とを送信する。また、割り込みコントローラ101は、イベントの発生を検出した場合に、MCU102に起動要求を送信する。
【0016】
MCU102は、起動要求を受信した場合にブートする装置である。MCU102は、例えば、論理アドレスを初期値「0x0000」から順次アドレスバス110に出力する。MCU102は、論理アドレスを出力した結果として、メモリ104からデータバス120に出力されるプログラムを取得して実行することによりブートする。
【0017】
アドレス変換回路103は、論理アドレスを物理アドレスに変換する装置である。アドレス変換回路103は、複数のイベントの各々のイベントの種別に関連付けて、変換元の論理アドレスと変換先の物理アドレスとの対応関係を示す対応情報を記憶する。ここで、アドレス変換回路103は、例えば、図6を用いて後述する変換テーブルとして、対応情報を記憶する。
【0018】
メモリ104は、MCU102のブートのためのプログラムを記憶する。MCU102のブートのためのプログラムは、例えば、発生したイベントに関わらず、共通して実行すべき共通部カーネルコアを含む。また、MCU102のブートのためのプログラムは、例えば、発生したイベントに応じて実行すべきイベント固有のプログラムを含む。メモリ104は、例えば、ROM(Read Only Memory)や不揮発メモリにより実現される。
【0019】
図1において、(1)割り込みコントローラ101は、MCU102をブートさせるトリガになるイベントE1の発生を検出する。割り込みコントローラ101は、イベントE1の発生を検出すると、アドレス変換回路103に起動要求を送信する。次に、割り込みコントローラ101は、検出されたイベントE1の種別を示す種別情報をアドレス変換回路103に送信する。(2)また、割り込みコントローラ101は、イベントの発生を検出すると、MCU102に起動要求を送信する。
【0020】
(3)アドレス変換回路103は、起動要求を受信して起動する。次に、アドレス変換回路103は、種別情報を受信すると、受信した種別情報が示す種別に関連する対応情報を選択しておく。種別に関連する対応情報は、例えば、変換元の論理アドレス「0x0100〜0x01ff」と、種別に固有のプログラム(図1の例ではイベントE1用のプログラム)が記憶された記憶領域を示す変換先の物理アドレス「0x1100〜0x11ff」と、の対応関係を示す。
【0021】
(4)MCU102は、起動要求を受信してブートを開始する。MCU102は、例えば、ブートのために、論理アドレスの初期値「0x0000」から順にアドレスバス110に出力する。そして、MCU102は、アドレスバス110に出力した結果、メモリ104からデータバス120に出力されるプログラムを取得して実行する。結果として、MCU102は、論理アドレスの初期値「0x0000」から、ブートが終了する論理アドレス「0x02ff」までの論理アドレスをシーケンシャルに出力する。
【0022】
(5)ここで、アドレス変換回路103は、MCU102からアドレスバス110に論理アドレスが出力される都度、出力された論理アドレスを取得する。アドレス変換回路103は、(3)において選択しておいた対応情報を用いて、取得した論理アドレスを物理アドレスに変換してアドレスバス110に出力する。これにより、アドレス変換回路103は、アドレスバス110に出力した物理アドレスが示す記憶領域に記憶されたプログラムを、メモリ104からデータバス120に出力させ、(4)においてMCU102に取得させる。
【0023】
アドレス変換回路103は、例えば、対応情報が示す変換元の論理アドレス「0x0100〜0x01ff」がアドレスバス110に出力された場合には、対応情報を参照して、物理アドレス「0x1100〜0x11ff」に変換する。
【0024】
一方、アドレス変換回路103は、対応情報が示す論理アドレス以外「0x0000〜0x00ff、0x0200〜」がアドレスバス110に出力された場合には、従来技術を用いて物理アドレス「0x0000〜0x00ff、0x0200〜」に変換する。ここでは、アドレス変換回路103は、ページテーブルを用いて論理アドレスを物理アドレスに変換することになるが、従来技術であるため詳細な説明を省略する。
【0025】
換言すれば、MCU102がアドレスバス110に出力した論理アドレス「0x0000〜0x02ff」は、アドレス変換回路103により物理アドレス「0x0000〜0x00ff、0x1100〜0x11ff、0x0200〜0x02ff」に変換される。そして、アドレス変換回路103によって物理アドレス「0x0000〜0x00ff、0x1100〜0x11ff、0x0200〜0x02ff」がアドレスバス110に出力される。
【0026】
(6)また、メモリ104は、アドレスバス110に出力された物理アドレスが示す記憶領域の内容をデータバス120に出力する。メモリ104は、例えば、物理アドレス「0x0000〜0x00ff」の示す記憶領域に記憶された共通部カーネルコアをデータバス120に出力する。
【0027】
また、メモリ104は、物理アドレス「0x1100〜0x11ff」の示す記憶領域に記憶されたイベントE1用のプログラムをデータバス120に出力する。また、メモリ104は、物理アドレス「0x0200〜0x02ff」の示す記憶領域に記憶された共通部カーネルコアをデータバス120に出力する。
【0028】
これにより、MCU102は、出力された共通部カーネルコアとイベントE1用のプログラムとを実行してブートすることができる。結果として、MCU102は、どのようなイベントが発生したかを判定しなくても、論理アドレスの初期値「0x0000」からシーケンシャルにアクセスすれば、発生したイベントに応じたプログラムを実行してブートすることができる。そのため、MCU102は、発生したイベントに応じたプログラムを選択して実行するための分岐処理を削減して、起動時間を短縮化することができる。
【0029】
また、MCU102において分岐処理を削減することができるため、メモリ104は分岐処理に関するプログラムを記憶しておかなくてもよい。そのため、メモリ104は、分岐処理に関するプログラムを削減して、メモリ使用量を抑制することができる。
【0030】
(センサーネットワークの構成)
図2は、センサーノード100を含むセンサーネットワークの構成例を示す図である。図2に示すセンサーネットワーク200は、所定の設置領域210内に配置されたチップ状の複数のセンサーノード100と、設置領域210内の複数のセンサーノード100のセンサー出力を無線等により受信する親ノード201とを含む。設置領域210は、例えば、コンクリート、土、水、空気などの物質で満たされた領域である。または、設置領域210は、宇宙空間などの真空の領域であってもよい。
【0031】
センサーノード100は、設置領域210内の各設置箇所における所定の変位量を検出し、親ノード201に検出した情報を無線通信により送信する。親ノード201は、設置領域210に設けられた複数のセンサーノード100から得られた情報を集約し、外部装置としてのサーバーへの情報のアップロードを行う。また、親ノード201は、外部装置としての利用者端末に対し設置箇所においてセンサーノード100が検出したデータの通知等を行ってもよい。
【0032】
センサーノード100(図2の黒丸)は、図2に示すように、設置領域210内に大量に設置される。また、親ノード201(図2の白丸)は、設置領域210内のいずれかの箇所に1台設置される。実施の形態におけるセンサーノード100は、近距離の無線通信能力、少なくとも隣接するセンサーノード100に到達可能な無線電波を出力できればよい。このため、親ノード201から遠いセンサーノード100aは、隣接する他の一つまたは複数のセンサーノード100bを介してデータをリレー転送させる。各センサーノード100は、このリレー転送により、検出したデータを親ノード201に届けるようになっている(図2矢印参照)。
【0033】
(センサーノード100の内部構成例)
図3は、センサーノード100の内部構成例を示すブロック図である。センサーノード100は、タイマー301と、複数のセンサー302−1〜302−n(nは自然数)と、割り込みコントローラ101と、MCU102と、アドレス変換回路103と、RAM(Random Access Memory)303と、ROM304と、不揮発メモリ305と、無線通信回路306と、を含む。また、センサーノード100は、ハーベスタ311と、バッテリ312と、PMU(Power Management Unit)313と、を含む。以降では、任意のセンサーを「センサー302−i」と称す(iは1〜n)。
【0034】
タイマー301と、センサー302−iと、割り込みコントローラ101と、MCU102と、アドレス変換回路103と、RAM303と、ROM304と、不揮発メモリ305と、無線通信回路306と、は、内部バス309により接続されている。内部バス309には、上述したアドレスバス110やデータバス120が含まれる。
【0035】
タイマー301は、クロック(CLK)により発生したパルス信号をカウントし、経過時間を測定する。タイマー301は、一定時間ごとにイベントを発生し、割り込みコントローラ101に対して専用線を介して割込信号を送信する。以降では、タイマーが発生するイベントを「イベントE0」と称す。
【0036】
センサー302−iは、設置箇所における所定の変位量を検出する。センサー302−iは、例えば、設置箇所の圧力を検出する圧電素子や、光を検出する光電素子等を用いることができる。センサー302−iは、検出した変位量に基づいてイベントを発生し、割り込みコントローラ101に対して専用線を介して割込信号を送信する。以降では、センサー302−iが発生するイベントを「イベントEi」と称す(iは1〜n)。
【0037】
割り込みコントローラ101は、タイマー301やセンサー302−iから専用線を介して割込信号を受信する。割り込みコントローラ101は、割込信号を受信すると、MCU102やアドレス変換回路103への電力供給が停止されていれば、PMU313にMCU102やアドレス変換回路103への電力供給の開始要求を送信する。また、割り込みコントローラ101は、割込信号を受信すると、MCU102に対して専用線を介して起動要求を送信するとともに、アドレス変換回路103に対して専用線を介して起動要求や発生したイベントの種別を示す種別情報を送信する。
【0038】
MCU102は、割り込みコントローラ101から起動要求を受信すると、論理アドレスの初期値から順次アクセスすることにより、ブートを開始する。MCU102は、ブートを開始することによりデバイスドライバの初期化を実行し、バッチ処理やセンサー302−iが検出したデータの処理を開始する。
【0039】
アドレス変換回路103は、MCU102がアクセスする論理アドレスを物理アドレスに変換することによって、ROM304やRAM303等のメモリ104における物理アドレスが示す記憶領域に記憶されたプログラムをMCU102に取得させる。アドレス変換回路103は、例えば、論理アドレスを発生したイベントの種別に応じた物理アドレスに変換することにより、発生したイベントに応じたプログラムをMCU102に取得させる。
【0040】
RAM303は、MCU102における処理の一時データを格納する。ROM304は、MCU102が実行する処理プログラム等を格納する。不揮発メモリ305は、電力供給が途絶えたとき等においても書き込まれた所定のデータを保持する。
【0041】
無線通信回路(RF)306は、アンテナ320を有する。無線通信回路306は、受信した無線電波を受信信号として出力し、送信信号を無線電波としてアンテナ320を介して送信する。アンテナ320は、親ノード201と無線通信する電波を送受信する。
【0042】
ハーベスタ311は、センサーノード100の設置箇所における外部環境、例えば、光、振動、温度、無線電波(受信電波)等のエネルギー変化に基づき発電を行う。バッテリ312は、ハーベスタ311により発電された電力を蓄える。PMU313は、バッテリ312に蓄えられた電力を、センサーノード100の各部の駆動電源として供給する。換言すれば、センサーノード100は、二次電池や外部電源等が不要であり、動作に必要な電力をセンサーノード100内部で生成する。
【0043】
センサーノード100は、例えば、バッテリ312に蓄えられた電力に制限があるため、イベントが発生するまでは、MCU102やアドレス変換回路103等への電力供給を停止しておき、消費電力を低減してもよい。
【0044】
(割り込みコントローラ101、アドレス変換回路103、およびMCU102の詳細な構成例)
次に、図4を用いて、図3に示した割り込みコントローラ101、アドレス変換回路103、およびMCU102の詳細な構成例について説明する。
【0045】
図4は、図3に示した割り込みコントローラ101、アドレス変換回路103、およびMCU102の詳細な構成例を示す説明図である。割り込みコントローラ101は、割込制御レジスタ410−0〜410−nと、ORゲート411と、を有する。以降では、任意の割込制御レジスタを、「割込制御レジスタ410−j」と称す(jは0〜n)。
【0046】
割込制御レジスタ410−jは、各種デバイス(タイマー301やセンサー302−i)に対応し、割り込みの有無を示す割り込みフラグを記憶する。例えば、割込制御レジスタ410−0は、タイマー301に対応し、タイマー301が発生させたイベントE0による割り込みの有無を示す割り込みフラグを記憶する。また、割込制御レジスタ410−1は、センサー302−1に対応し、センサー302−1が発生させたイベントE1による割り込みの有無を示す割り込みフラグを記憶する。同様に、割込制御レジスタ410−2〜410−nは、各々、センサー302−2〜302−nの各々に対応し、センサー302−2〜302−nの各々が発生させたイベントE2〜Enによる割り込みの有無を示す割り込みフラグを記憶する。
【0047】
割込制御レジスタ410−jは、対応するデバイスと専用線を介して接続されている。割込制御レジスタ410−jの割り込みフラグは、対応するデバイスから専用線を介して送信された割込信号によって、「割り込みあり」に設定される。割込制御レジスタ410−jには、例えば、「割り込みなし」の場合は割り込みフラグとして「0」が設定され、「割り込みあり」の場合は割り込みフラグとして「1」が設定される。
【0048】
割り込みコントローラ101は、割込制御レジスタ410−jに「割り込みあり」を示す割り込みフラグが設定された場合に、MCU102へ電力供給されていなければ、MCU102への電力供給の開始要求をPMU313に送信する。また、割り込みコントローラ101は、割込制御レジスタ410−jに「割り込みあり」を示す割り込みフラグが設定された場合に、アドレス変換回路103へ電力供給されていなければ、アドレス変換回路103への電力供給の開始要求をPMU313に送信する。
【0049】
ORゲート411は、入力信号の論理和を出力する論理回路である。ORゲート411は、割込制御レジスタ410−1〜410−nの割り込みフラグを入力信号とし、論理和を出力する。換言すれば、ORゲート411は、割込制御レジスタ410−1〜410−nの少なくともいずれかに「割り込みあり」を示す割り込みフラグ「1」が設定された場合に論理和「1」を出力する。
【0050】
割り込みコントローラ101は、タイマー301により割込制御レジスタ410−0に「割り込みあり」を示す割り込みフラグ「1」が設定された場合は、当該割り込みフラグ「1」を起動要求としてMCU102に送信する。また、割り込みコントローラ101は、センサー302−iにより割込制御レジスタ410−iに「割り込みあり」を示す割り込みフラグが設定された場合は、ORゲート411から出力される論理和「1」を起動要求としてMCU102に送信する。ここで、起動要求は、専用線412を介して送信される。
【0051】
また、割り込みコントローラ101は、割込制御レジスタ410−jに「割り込みあり」を示す割り込みフラグが設定された場合、割込制御レジスタ410−0〜410−nの割り込みフラグを種別情報としてアドレス変換回路103に送信する。ここで、種別情報は、専用線413を介して送信される。
【0052】
MCU102は、プログラムカウンタ420を有する。プログラムカウンタ420は、アクセス先の論理アドレスを記憶するレジスタである。MCU102は、割り込みコントローラ101から起動要求を受信すると、プログラムカウンタ420に記憶された論理アドレスを、アドレスバス110に出力する。MCU102は、論理アドレスを出力した結果、メモリ104からデータバス120に出力されたプログラムを取得して実行する。そして、MCU102は、取得したプログラムの分、プログラムカウンタ420の論理アドレスをインクリメントして、プログラムカウンタ420に記憶された論理アドレスを、アドレスバス110に出力する。このようにして、MCU102は、プログラムカウンタ420の初期値から順次アクセスを行う。
【0053】
アドレス変換回路103は、変換テーブル430と、複数の索引レジスタ440−0〜440−nと、絶対レジスタ450と、比較器460と、ALU(Arithmetic Logic Unit)470と、参照レジスタ480と、初期値レジスタ490と、を有する。具体的には、例えば、アドレス変換回路103は、論理積回路であるANDゲート、否定論理回路であるINVERTERゲート、ORゲートや、ラッチ回路であるFF(Flip Flop)などの素子によって形成されてもよい。変換テーブル430は、変換元の論理アドレスと変換先の物理アドレスとの対応関係を示す対応情報を、イベントの種別ごとに関連付けて記憶するテーブルである。変換テーブル430の記憶内容については、図6を用いて後述する。
【0054】
また、複数の索引レジスタ440−0〜440−nは、多重割り込みに対応するために、対応情報のキーを記憶するレジスタである。索引レジスタ440−0〜440−nは、複数のイベントが発生した場合に、各々のイベントに応じた対応情報のキーを、処理すべき順序に従って記憶する。索引レジスタ440−0〜440−nは、対応情報自体を記憶してもよい。
【0055】
索引レジスタ440−0〜440−nは、例えば、スタックを実現し、LIFO(Last In First Out)の構造で、各々のイベントに応じた対応情報のキーを記憶する。以降では、任意の索引レジスタを「索引レジスタ440−k」と称す。また、kの値が小さい索引レジスタ440−kに記憶された対応情報から順に処理することとする。多重割り込みに対応しない場合は、索引レジスタ440−kは一つであってもよい。
【0056】
また、絶対レジスタ450は、MCU102からアドレスバス110に出力された論理アドレスを記憶するレジスタである。比較器460は、絶対レジスタ450に記憶された論理アドレスが、索引レジスタ440−0に記憶されたキーにより識別される対応情報が示す変換元の論理アドレス群に含まれるか否かを判定する論理回路である。
【0057】
また、ALU470は、絶対レジスタ450に記憶された論理アドレスと、索引レジスタ440−0に記憶されたキーにより識別される対応情報と、を入力とし、絶対レジスタ450に記憶された論理アドレスの変換先の物理アドレスを算出する演算装置である。また、参照レジスタ480は、ALU470により算出された変換先の物理アドレスを記憶するレジスタである。また、初期値レジスタ490は、索引レジスタ440−kを初期化するための初期値「0」を記憶するレジスタである。
【0058】
アドレス変換回路103は、割り込みコントローラ101から種別情報を受信すると、変換テーブル430を参照して、受信した種別情報が示すイベントの種別に関連する対応情報を選択する。アドレス変換回路103は、選択した対応情報のキーを索引レジスタ440−0に記憶する。アドレス変換回路103は、例えば、キーとして、変換先の各物理アドレスの中の先頭物理アドレスを採用してもよい。
【0059】
ここで、アドレス変換回路103は、索引レジスタ440−0に他のキーが記憶してある場合、索引レジスタ440−0〜440−(n−1)に記憶されたキーを、各々、後段の索引レジスタ440−1〜440−nに移行する。次に、アドレス変換回路103は、選択した対応情報のキーを索引レジスタ440−0に記憶する。
【0060】
その後、アドレス変換回路103は、例えば、MCU102からアドレスバス110に出力された論理アドレスを取得し、取得した論理アドレスを絶対レジスタ450に記憶する。次に、アドレス変換回路103は、比較器460を用いて、絶対レジスタ450に記憶された論理アドレスが、索引レジスタ440−0に記憶されたキーにより識別される対応情報が示す変換元の論理アドレス群に含まれるか否かを判定する。
【0061】
そして、アドレス変換回路103は、変換元の論理アドレス群に含まれると判定した場合に、索引レジスタ440−0に記憶されたキーにより識別される対応情報とALU470を用いて、絶対レジスタ450に記憶された論理アドレスを物理アドレスに変換する。次に、アドレス変換回路103は、変換した物理アドレスを参照レジスタ480に記憶する。
【0062】
そして、アドレス変換回路103は、参照レジスタ480に記憶された物理アドレスをアドレスバス110に出力する。これにより、アドレス変換回路103は、メモリ104に、アドレスバス110へと出力された物理アドレスが示す記憶領域に記憶されたプログラムをデータバス120へと出力させることができる。
【0063】
アドレス変換回路103は、MCU102のブートが終了した場合に、索引レジスタ440−0を初期化するために索引レジスタ440−0に初期値レジスタ490に記憶された初期値「0」を設定する。ここで、アドレス変換回路103は、索引レジスタ440−1〜440−nにキーが記憶されている場合は、索引レジスタ440−1〜440−nに記憶されたキーを、各々、前段の索引レジスタ440−0〜440−(n−1)に移行する。
【0064】
(メモリ104の記憶内容)
次に、図5を用いて、図4に示したメモリ104の記憶内容の一例について説明する。
【0065】
図5は、図4に示したメモリ104の記憶内容の一例を示す説明図である。図5に示すように、メモリ104は、MCU102のブート処理のためのプログラムとして、発生したイベントに関わらず実行すべき共通部カーネルコアを記憶する。共通部カーネルコアは、MCU102の初期化ルーチンに関するプログラムと、デバイスインターフェースに関するプログラムと、デバイス後処理に関するプログラムと、を含む。
【0066】
共通部カーネルコアは、物理アドレス「0x0000〜0x02ff」が示す記憶領域510に記憶されている。共通部カーネルコアのうち初期化ルーチンに関するプログラムは、物理アドレス「0x0000〜0x004f」が示す記憶領域511に記憶されている。共通部カーネルコアのうちデバイスインターフェースに関するプログラムは、物理アドレス「0x0050〜0x00ff」が示す記憶領域512に記憶されている。共通部カーネルコアのうちデバイス後処理に関するプログラムは、物理アドレス「0x0200〜0x02ff」が示す記憶領域513に記憶されている。
【0067】
また、メモリ104は、タイマー301によりイベントE0が発生した場合にのみ実行すべきイベントE0用のプログラムP0を記憶する。プログラムP0は、イベントE0が発生した場合に初期化すべきデバイスドライバに関するプログラムと、イベントE0が発生した場合に実行すべきデバイス処理に関するプログラムと、を含む。
【0068】
プログラムP0は、物理アドレス「0x1000〜0x10ff」が示す記憶領域520に記憶されている。プログラムP0のうちデバイスドライバに関するプログラムは、物理アドレス「0x1000〜0x100f」が示す記憶領域521に記憶されている。プログラムP0のうちデバイス処理に関するプログラムは、物理アドレス「0x1010〜0x10ff」が示す記憶領域522に記憶されている。
【0069】
また、メモリ104は、センサー302−iごとに、当該センサー302−iにおいてイベントEiが発生した場合にのみ実行すべきイベントEi用のプログラムPiを記憶する。プログラムPiは、イベントEiが発生した場合に初期化すべきデバイスドライバに関するプログラムと、イベントEiが発生した場合に実行すべきデバイス処理に関するプログラムと、を含む。
【0070】
例えば、イベントE1が発生した場合にのみ実行すべきイベントE1用のプログラムP1は、物理アドレス「0x1100〜0x11ff」が示す記憶領域530に記憶されている。プログラムP1のうちデバイスドライバに関するプログラムは、物理アドレス「0x1100〜0x110f」が示す記憶領域531に記憶されている。プログラムP1のうちデバイス処理に関するプログラムは、物理アドレス「0x1110〜0x11ff」が示す記憶領域532に記憶されている。
【0071】
同様に、イベントE2が発生した場合にのみ実行すべきイベントE2用のプログラムP2は、記憶領域540に記憶されている。イベントE3が発生した場合にのみ実行すべきイベントE3用のプログラムP3は、記憶領域550に記憶されている。
【0072】
ここでは、共通部カーネルコアと各イベント用のプログラムとは分割して記憶されているが、これに限らない。例えば、イベントごとに、共通部カーネルコアと当該イベント用のプログラムとを結合したプログラムを記憶しておいてもよい。
【0073】
(変換テーブル430の記憶内容)
次に、図6を用いて、変換テーブル430の記憶内容の一例について説明する。変換テーブル430は、イベントの種別ごとに、変換元の論理アドレスと変換先の物理アドレスとの対応関係を示す対応情報を記憶したテーブルである。変換テーブル430は、例えば、アドレス変換回路103内のROMやRAM等によって実現される。
【0074】
図6は、変換テーブル430の記憶内容の一例を示す説明図である。図6に示すように、変換テーブル430は、イベント項目に関連付けて、物理アドレス項目と、論理アドレス項目と、を有し、イベントの種別ごとに各項目に情報が設定されることによりレコード(例えば、601〜604など)を構成する。
【0075】
イベント項目には、MCU102がブートを開始するトリガになるイベントの種別を示す種別情報が記憶される。イベント項目には、例えば、タイマー301が発生したイベントE0の種別情報「Timer」が記憶されたり、センサー302−iが発生したイベントEiの種別情報「Event Ei」が記憶されたりする。
【0076】
物理アドレス項目には、イベント項目が示す種別のイベントが発生した場合に、MCU102がブートのためにアクセスする論理アドレス群の各論理アドレスの変換先の各物理アドレスを示す物理アドレス情報が記憶される。物理アドレス項目には、例えば、変換先の各物理アドレスの中で先頭にある物理アドレスを記憶する。
【0077】
論理アドレス項目には、イベント項目が示す種別のイベントが発生した場合に、MCU102がブートのためにアクセスする論理アドレス群の各論理アドレスを示す論理アドレス情報が記憶される。論理アドレス項目には、例えば、論理アドレス群の範囲が記憶される。
【0078】
例えば、レコード601は、タイマー301が発生したイベントE0に関連する対応情報を示す。レコード601の対応情報は、変換元の論理アドレス群の各論理アドレス「0x0100〜0x01ff」と、変換先の各物理アドレス「0x1000〜0x10ff」の中の先頭物理アドレス「0x1000」と、を示す。
【0079】
図6の例では、各々のイベントに応じた論理アドレス項目に記憶された論理アドレス群は同一であるが、これに限らない。例えば、論理アドレス項目には、各々のイベントに応じて、異なる論理アドレス群が記憶されていてもよい。
【0080】
(変換装置の機能的構成例)
次に、図7を用いて、変換装置の機能的構成例について説明する。図7は、変換装置の機能的構成例を示すブロック図である。変換装置700は、記憶部701と、選択部702と、特定部703と、制御部704と、を含む。
【0081】
ここで、変換装置700は、割り込みコントローラ101が多重割り込みを禁止している場合に対応する動作(以降、動作例1と称す)を実行してもよい。また、変換装置700は、割り込みコントローラ101が多重割り込みを行う場合に対応する動作(以降、動作例2と称す)を実行してもよい。
【0082】
<変換装置700の動作例1>
まず、変換装置700の動作例1を実現する機能について説明する。動作例1では、割り込みコントローラ101は、イベントの発生を検出した場合に、起動要求をプロセッサに送信するとともに、発生したイベントの種別を示す種別情報を変換装置700に送信する。
【0083】
また、割り込みコントローラ101は、複数のイベントの発生を検出した場合、多重割り込みを禁止しているため、発生順序が最先のイベントによるプロセッサのブートの終了を待つ。次に、割り込みコントローラ101は、最先のイベントによるプロセッサのブートが終了した後に、2番目に発生したイベントについて起動要求をプロセッサに送信し、2番目に発生したイベントの種別を示す種別情報を変換装置700に送信する。
【0084】
ここで、プロセッサとは、センサーノード100全体の動作を制御する装置であって、例えば、上述したMCU102である。イベントとは、図1に上述したように、プロセッサにブートを実行させ当該イベントに応じたプログラムを実行させるトリガである。イベントとは、例えば、上述したタイマー301が発生するイベントE0やセンサー302−iが発生するイベントEiである。起動要求とは、プロセッサにブートを開始させる要求である。変換装置700とは、論理アドレスを物理アドレスに変換する装置であって、例えば、上述したアドレス変換回路103である。
【0085】
記憶部701は、プロセッサがブートのためにアクセスする各論理アドレスと、各論理アドレスの変換先の各物理アドレスと、の対応関係を示す対応情報を、プロセッサをブートさせるイベントの種別ごとに関連付けて記憶する。ここで、プロセッサが論理アドレスにアクセスするとは、プロセッサがアドレスバス110に論理アドレスを出力し、アドレス変換回路103にメモリ104の読み出し要求を送信することをいう。
【0086】
ブートのためにアクセスする各論理アドレスとは、プロセッサがアクセス可能な論理アドレス空間の中でプロセッサがブートのためにアクセスする論理アドレス群であって、論理アドレスの初期値から順次シーケンシャルにアクセスされる論理アドレス群である。ブートのためにアクセスする各論理アドレスとは、例えば、論理アドレスの初期値「0x0000」から終了処理が記憶された論理アドレス「0x02ff」までの論理アドレス群「0x0000〜0x02ff」である。
【0087】
記憶部701は、例えば、第1の対応情報をイベントの種別ごとに関連付けて記憶する。ここで、第1の対応情報とは、各論理アドレスの中でイベントの種別に固有の各論理アドレスと、固有の各論理アドレスの変換先であって記憶装置内でイベントの種別に固有のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す。第1の対応情報とは、例えば、図6を用いて上述した変換テーブル430に記憶された対応情報である。
【0088】
各論理アドレスの中でイベントの種別に固有の各論理アドレスとは、例えば、図5においてタイマー301が発生するイベントE0に固有のプログラムが記憶された物理アドレス群の変換元の論理アドレス群「0x0100〜0x01ff」である。各論理アドレスの中でイベントの種別に固有の各論理アドレスは、例えば、図6のレコード601の物理アドレス項目に設定されて、記憶される。
【0089】
イベントの種別に固有のプログラムの記憶領域を示す各物理アドレスとは、例えば、図5においてタイマー301が発生するイベントE0に固有のプログラムが記憶された物理アドレス群「0x1000〜0x10ff」である。イベントの種別に固有のプログラムの記憶領域を示す各物理アドレスは、例えば、図6のレコード601の論理アドレス項目に設定されて、記憶される。
【0090】
また、記憶部701は、第2の対応情報を記憶する。ここで、第2の対応情報とは、各論理アドレスの中でイベントの各種別に共通の各論理アドレスと、共通の各論理アドレスの変換先であって記憶装置内でイベントの各種別に共通のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す。第2の対応情報とは、例えば、従来技術にかかるページテーブルに記憶された論理アドレスと物理アドレスとの対応関係を示す情報である。
【0091】
各論理アドレスの中でイベントの各種別に共通の各論理アドレスとは、例えば、図5において共通部カーネルコアが記憶された物理アドレス群の変換元の論理アドレス群「0x0000〜0x00ff、0x0200〜0x02ff」である。イベントの種別に固有のプログラムの記憶領域を示す各物理アドレスとは、例えば、図5において共通部カーネルコアが記憶された物理アドレス群「0x0000〜0x00ff、0x0200〜0x02ff」である。
【0092】
記憶部701は、例えば、アドレス変換回路103内のROMやRAM等に記憶された変換テーブル430によって実現される。これにより、選択部702は、記憶部701を参照して、発生したイベントの種別に関連する対応情報を選択することができる。
【0093】
選択部702は、イベントが発生した場合に、記憶部701を参照して発生したイベントの種別に関連する対応情報を選択する。選択部702は、例えば、変換テーブル430を参照して、割り込みコントローラ101から受信した種別情報が示す種別に関連する対応情報を選択する。次に、選択部702は、選択した対応情報を識別する識別情報をレジスタに格納する。
【0094】
ここで、識別情報とは、対応情報のキーであって、例えば、上述した先頭物理アドレスである。レジスタとは、例えば、上述した索引レジスタ440−0である。また、選択部702は、選択した対応情報自体をレジスタに格納してもよい。また、選択部702は、MCU102が変換元の論理アドレスにアクセスする前に対応情報を選択しておけばよく、イベントが発生した直後に対応情報を選択しなくてもよい。これにより、選択部702は、MCU102が変換元の論理アドレスにアクセスする前に、論理アドレスの変換に使用する対応情報を選択しておく。選択部702は、例えば、索引レジスタ440−kにより実現される。
【0095】
特定部703は、イベントの発生によってプロセッサが各論理アドレスに含まれる論理アドレスにアクセスする場合に、選択部702によって選択された対応情報を用いてプロセッサがアクセスする論理アドレスの変換先の物理アドレスを特定する。特定部703は、例えば、プロセッサが発生したイベントの種別に固有の各論理アドレスに含まれる論理アドレスにアクセスする場合に、当該種別に応じた第1の対応情報を用いてプロセッサがアクセスする論理アドレスの変換先の物理アドレスを特定する。
【0096】
特定部703は、より具体的には、MCU102が論理アドレス群「0x0100〜0x01ff」の論理アドレス「0x0100」にアクセスする場合に、タイマー301が発生するイベントE0に応じた対応情報を取得する。ここで、特定部703は、例えば、取得する対応情報を、選択部702によって索引レジスタ440−0に格納されたキーにより識別する。
【0097】
次に、特定部703は、対応情報が示す論理アドレス群の先頭論理アドレス「0x0100」からMCU102がアクセスする論理アドレス「0x0100」までの差分「0」を特定する。そして、特定部703は、特定した差分「0」と、対応情報が示す先頭物理アドレス「0x1000」と、の加算により、MCU102がアクセスする論理アドレス「0x0100」の変換先の物理アドレス「0x1000(0x1000+0)」を特定する。
【0098】
また、特定部703は、プロセッサが共通の各論理アドレスに含まれる論理アドレスにアクセスする場合に、第2の対応情報を用いてプロセッサがアクセスする論理アドレスの変換先の物理アドレスを特定する。特定部703は、例えば、MCU102が論理アドレス群「0x0000〜0x00ff」の論理アドレスにアクセスする場合に、ページテーブルを用いて変換先の物理アドレスを特定する。
【0099】
また、特定部703は、特定した物理アドレスを参照レジスタ480に記憶しておく。これにより、特定部703は、MCU102に取得させるプログラムの記憶領域を特定することができる。特定部703は、例えば、索引レジスタ440−kと、絶対レジスタ450と、比較器460と、ALU470と、参照レジスタ480と、により実現される。
【0100】
制御部704は、特定部703によって特定された物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムをプロセッサに取得させる。制御部704は、例えば、特定部703によって特定された物理アドレスをアドレスバス110に出力し、メモリ104にアドレスバス110の物理アドレスが示す記憶領域のプログラムをデータバス120へと出力させる要求を送信する。
【0101】
制御部704は、例えば、参照レジスタ480により実現される。これにより、メモリ104は、物理アドレスが示す記憶領域に記憶されたプログラムをデータバス120に出力する。一方で、MCU102は、変換装置700によって特定された物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムをデータバス120から取得して実行する。これにより、MCU102は、ブートして、発生したイベントに固有のプログラムを実行することができる。制御部704は、例えば、参照レジスタ480により実現される。
【0102】
<変換装置700の動作例2>
次に、変換装置700の動作例2を実現する機能について説明する。動作例2では、割り込みコントローラ101は、過去に発生したイベントによるプロセッサのブートが終了する前に新たにイベントの発生を検出した場合に、MCU102にブートを中止させて新たに発生したイベントによるブートを開始させる。次に、割り込みコントローラ101は、新たに発生したイベントによるプロセッサのブートが終了した後に、過去に発生したイベントによるブートをMCU102に初めから開始させる。
【0103】
また、割り込みコントローラ101は、各々のイベントに優先度が設定されている場合は、優先度の高いイベントから順に、イベントによるMCU102のブートを開始させてもよい。割り込みコントローラ101は、例えば、MCU102をブートさせているイベントより優先度の高いイベントが発生した場合は、MCU102にブートを中止させ優先度の高いイベントによるブートを開始させてもよい。次に、割り込みコントローラ101は、優先度の高いイベントによるプロセッサのブートが終了した後に、ブートを中止させたイベントによるブートをMCU102に初めから開始させてもよい。
【0104】
ここでは、割り込みコントローラ101が、新たに発生したイベントによるブートを優先的にMCU102に実行させる場合を例に挙げて、動作例2について説明する。また、動作例2にかかる記憶部701および制御部704の機能は、各々、動作例1にかかる記憶部701および制御部704の機能と同様のため、ここでは説明を省略する。
【0105】
選択部702は、プロセッサをブートさせる第1のイベントが発生した場合に、記憶部701を参照して第1のイベントの種別に関連する対応情報を選択する。また、選択部702は、第1のイベントの発生によるプロセッサのブートが終了する前に第1のイベントより優先してプロセッサをブートさせる第2のイベントが発生した場合に、記憶部701を参照して第2のイベントの種別に関連する対応情報を選択する。ここで、第1のイベントは、過去に発生したイベントであり、例えば、タイマー301が発生するイベントE0である。第2のイベントは、第1のイベントの発生後に発生したイベントであり、例えば、センサー302−1が発生するイベントE1である。
【0106】
選択部702は、例えば、割り込みコントローラ101がタイマー301からのイベントE0の発生を検出した場合に、割り込みコントローラ101から送信されたイベントE0の種別情報に関連する対応情報(例えば、図6のレコード601の対応情報)を選択する。次に、選択部702は、選択した対応情報のキーを、索引レジスタ440−0に記憶しておく。
【0107】
その後、選択部702は、割り込みコントローラ101がセンサー302−1からのイベントE1の発生を検出した場合に、割り込みコントローラ101から送信されたイベントE1の種別情報に関連する対応情報(例えば、図6のレコード602の対応情報)を選択する。ここで、選択部702は、索引レジスタ440−0にキーを記憶するため、索引レジスタ440−0〜440−(n−1)に記憶されたキーを、各々、後段の索引レジスタ440−1〜440−nに移行する。次に、選択部702は、選択した対応情報のキーを、索引レジスタ440−0に記憶しておく。
【0108】
特定部703は、第2のイベントの発生によってプロセッサが第2のイベントに応じた各論理アドレスに含まれる論理アドレスにアクセスするのを待つ。そして、特定部703は、プロセッサが第2のイベントに応じた各論理アドレスに含まれる論理アドレスにアクセスする場合に、第2のイベントの種別に関連する対応情報を用いてプロセッサがアクセスする論理アドレスの変換先の物理アドレスを特定する。
【0109】
次に、特定部703は、第2のイベントの発生によるプロセッサのブートが終了した後に、第1のイベントによってプロセッサが第1のイベントに応じた各論理アドレスに含まれる論理アドレスにアクセスするのを待つ。そして、特定部703は、プロセッサが第1のイベントに応じた各論理アドレスに含まれる論理アドレスにアクセスする場合に、第1のイベントの種別に関連する対応情報を用いてプロセッサがアクセスする論理アドレスの変換先の物理アドレスを特定する。
【0110】
特定部703は、例えば、イベントE1の発生によってMCU102がブートする場合に、索引レジスタ440−0に記憶されたキーが識別する対応情報を用いて、論理アドレスから変換先の物理アドレスを特定する。次に、特定部703は、イベントE1の発生によるMCU102のブートが終了した後に、索引レジスタ440−1〜440−nに記憶されたキーを、各々、前段の索引レジスタ440−0〜440−(n−1)に移行する。そして、特定部703は、索引レジスタ440−0に記憶されたキーが識別する対応情報を用いて、再びブートを開始したMCUがアクセスする論理アドレスから、変換先の物理アドレスを特定する。
【0111】
(センサーノード100におけるMCU102の起動の内容例1)
次に、図8図17を用いて、センサーノード100におけるMCU102の起動の内容例1について説明する。図8図17では、センサーノード100内のアドレス変換回路103が、上述した動作例1のように動作する場合を示している。
【0112】
図8図17は、センサーノード100におけるMCU102の起動の内容例1を示す説明図である。図8において、センサーノード100では、消費電力の低減化のため、アドレス変換回路103、MCU102、およびメモリ104への電力供給が停止されている。
【0113】
(11)ここで、センサー302−1は、割り込みコントローラ101の割込制御レジスタ410−1に、専用線を介して割込信号を送信する。これにより、割込制御レジスタ410−1に「割り込みあり」を示す割り込みフラグ「1」が設定される。次に、図9の説明に移行する。
【0114】
図9において、(12)割り込みコントローラ101は、割込制御レジスタ410−1に割り込みフラグ「1」が設定されたため、アドレス変換回路103、MCU102、およびメモリ104への電力供給の開始要求をPMU313に送信する。これにより、アドレス変換回路103、MCU102、およびメモリ104への電力供給が開始される。次に、図10の説明に移行する。
【0115】
図10において、(13)割り込みコントローラ101は、電力が供給されたアドレス変換回路103に、発生したイベントの種別を示す種別情報を送信する。(14)また、割り込みコントローラ101は、電力が供給されたMCU102に、起動要求を送信する。次に、図11の説明に移行する。
【0116】
図11において、(15)アドレス変換回路103は、変換テーブル430を参照して、種別情報が示す種別に関連する対応情報を選択する。(16)次に、アドレス変換回路103は、選択した対応情報を識別するキーとして、索引レジスタ440−0に、選択した対応情報が示す先頭物理アドレス「0x1000」を記憶しておく。(17)また、MCU102は、ブートを開始し、プログラムカウンタ420に記憶された論理アドレスの初期値「0x0000」をアドレスバス110に出力する。次に、図12の説明に移行する。
【0117】
図12において、(18)アドレス変換回路103は、MCU102からアドレスバス110に出力された論理アドレス「0x0000」を取得し、取得した論理アドレス「0x0000」を絶対レジスタ450に記憶する。
【0118】
(19)次に、アドレス変換回路103は、索引レジスタ440−0に記憶された物理アドレス「0x1000」をキーとして用いることにより識別される対応情報が示す変換元の論理アドレス群を特定する。そして、アドレス変換回路103は、絶対レジスタ450に記憶された論理アドレス「0x0000」が、特定した変換元の論理アドレス群に含まれるか否かを判定する。
【0119】
(20)ここで、アドレス変換回路103は、変換元の論理アドレス群に含まれないため、従来技術にかかるページテーブルを用いて、論理アドレス「0x0000」を物理アドレス「0x0000」に変換して、参照レジスタ480に記憶する。次に、図13の説明に移行する。
【0120】
図13において、(21)アドレス変換回路103は、参照レジスタ480に記憶された物理アドレス「0x0000」を、アドレスバス110に出力する。(22)また、メモリ104は、アドレスバス110に出力された物理アドレス「0x0000」を取得する。(23)次に、メモリ104は、取得した物理アドレス「0x0000」が示す記憶領域に記憶された共通部カーネルコアをデータバス120に出力する。(24)また、MCU102は、データバス120に出力された共通部カーネルコアを取得する。次に、図14の説明に移行する。
【0121】
図14において、(25)MCU102は、プログラムカウンタ420をインクリメントして、(11)〜(24)と同様にして、プログラムを取得する。以降、MCU102は、プログラムカウンタ420を順次インクリメントして、プログラムを取得していく。ここで、インクリメントにより、プログラムカウンタ420の論理アドレスが「0x0100」になったとして、図15の説明に移行する。
【0122】
図15において、MCU102は、プログラムカウンタ420の論理アドレスが「0x0100」をアドレスバス110に出力する。(26)アドレス変換回路103は、MCU102からアドレスバス110に出力された論理アドレス「0x0100」を取得し、取得した論理アドレス「0x0100」を絶対レジスタ450に記憶する。
【0123】
(27)次に、アドレス変換回路103は、索引レジスタ440−0に記憶された物理アドレス「0x1000」をキーとして用いることにより識別される対応情報が示す変換元の論理アドレス群「0x0100〜0x01ff」を特定する。そして、アドレス変換回路103は、絶対レジスタ450に記憶された論理アドレス「0x0100」が、特定した変換元の論理アドレス群「0x0100〜0x01ff」に含まれるか否かを判定する。
【0124】
(28)ここで、アドレス変換回路103は、変換元の論理アドレス群に含まれるため、論理アドレス「0x0100」を物理アドレス「0x1000」に変換して、参照レジスタ480に記憶する。
【0125】
アドレス変換回路103は、例えば、変換元の論理アドレス群の先頭論理アドレス「0x0100」から絶対レジスタ450に記憶された論理アドレス「0x0100」までの差分「0」を特定する。次に、アドレス変換回路103は、差分「0」を、索引レジスタ440−0に記憶された先頭物理アドレス「0x1000」に加算する。そして、アドレス変換回路103は、加算後の物理アドレス「0x1000」を参照レジスタ480に記憶する。次に、図16の説明に移行する。
【0126】
図16において、(29)アドレス変換回路103は、参照レジスタ480に記憶された物理アドレス「0x1000」を、アドレスバス110に出力する。(30)また、メモリ104は、アドレスバス110に出力された物理アドレス「0x1000」を取得する。
【0127】
(31)次に、メモリ104は、取得した物理アドレス「0x1000」が示す記憶領域に記憶されたイベントE1用のプログラムP1をデータバス120に出力する。(32)また、MCU102は、データバス120に出力されたイベントE1用のプログラムP1を取得する。次に、図17の説明に移行する。
【0128】
図17において、MCU102は、ブートを終了したとする。(33)割り込みコントローラ101は、MCU102がブートを終了すると、割込制御レジスタ410−1に「割り込みなし」を示す割り込みフラグ「0」を記憶する。
【0129】
(34)また、アドレス変換回路103は、MCU102がブートを終了すると、索引レジスタ440−0に初期値「0」を代入し、索引レジスタ440−0を初期化する。(35)また、MCU102は、ブートを終了すると、プログラムカウンタ420を初期化する。
【0130】
ここで、割り込みコントローラ101は、MCU102がブートを終了した場合に、消費電力の低減化のため、アドレス変換回路103、MCU102、およびメモリ104への電力供給の停止要求を、PMU313に送信してもよい。
【0131】
これにより、MCU102は、発生したイベントの種別に応じたプログラムを実行するための分岐処理を実行することなく、論理アドレスの初期値からシーケンシャルにアクセスすれば、発生したイベントの種別に応じたプログラムを実行することができる。結果として、MCU102は、分岐処理を削減することができ、起動時間を短縮化することができる。
【0132】
また、MCU102は、分岐処理を削減することができるため、メモリ104において分岐処理に関するプログラムを記憶しておかなくてもよい。そのため、メモリ104は、分岐処理に関するプログラムを削減して、メモリ使用量を抑制することができる。
【0133】
(センサーノード100におけるMCU起動処理)
次に、図18を用いて、センサーノード100におけるMCU起動処理の処理手順の一例について説明する。図18に示すMCU起動処理は、図8図17を用いて説明した割り込みコントローラ101、MCU102、およびアドレス変換回路103の処理手順を示す。
【0134】
図18は、センサーノード100におけるMCU起動処理の処理手順の一例を示すシーケンス図である。図18において、まず、デバイス(タイマー301やセンサー302−i)は、イベントの発生を検出すると、割り込みコントローラ101に割込信号を送信する(ステップS1801)。
【0135】
次に、割り込みコントローラ101は、センサー302−iから割込信号を受信すると、アドレス変換回路103にイベントの種別を示す種別情報を送信する(ステップS1802)。また、割り込みコントローラ101は、センサー302−iから割込信号を受信すると、MCU102に起動要求を送信する(ステップS1803)。
【0136】
次に、アドレス変換回路103は、割り込みコントローラ101から種別情報を受信すると、変換テーブル430を参照して、受信した種別情報が示す種別に関連する対応情報を選択し、選択した対応情報のキーを索引レジスタ440−0に記憶する(ステップS1804)。また、MCU102は、ブート処理を開始する(ステップS1805)。ステップS1805のブート処理については図19に後述する。
【0137】
(MCU102におけるブート処理)
次に、図19を用いて、ステップS1805においてMCU102により開始されるブート処理の処理手順の一例について説明する。
【0138】
図19は、ステップS1805に示したMCU102におけるブート処理の処理手順の一例を示すシーケンス図である。図19において、まず、MCU102は、プログラムカウンタ420に記憶された論理アドレスを、アドレスバス110に出力する(ステップS1901)。
【0139】
次に、アドレス変換回路103は、アドレスバス110に出力された論理アドレスを取得する。そして、アドレス変換回路103は、取得した論理アドレスを物理アドレスに変換する。次に、アドレス変換回路103は、変換した物理アドレスをアドレスバス110に出力する(ステップS1902)。
【0140】
そして、メモリ104は、アドレスバス110に出力された物理アドレスを取得する。次に、メモリ104は、取得した物理アドレスが示す記憶領域に記憶されたプログラムをデータバス120に出力する(ステップS1903)。
【0141】
そして、MCU102は、データバス120に出力されたプログラムを取得する。次に、MCU102は、取得したプログラムに従って処理を実行する(ステップS1904)。そして、MCU102は、プログラムカウンタ420をインクリメントする(ステップS1905)。
【0142】
次に、MCU102は、ステップS1904において実行した処理が終了処理であるか否かを判定する(ステップS1906)。ここで、終了処理ではない場合(ステップS1906:No)、MCU102は、ステップS1901に戻る。
【0143】
一方、終了処理である場合(ステップS1906:Yes)、MCU102は、ブート処理を終了する。これにより、MCU102は、論理アドレスの初期値からシーケンシャルにアクセスして、ブート処理を実行することができる。
【0144】
(センサーノード100におけるMCU102の起動の内容例2)
次に、図20図27を用いて、センサーノード100におけるMCU102の起動の内容例2について説明する。図20図27では、センサーノード100内のアドレス変換回路103が、上述した動作例2のように動作する場合を示している。
【0145】
図20図27は、センサーノード100におけるMCU102の起動の内容例2を示す説明図である。図20において、(41)MCU102は、ブートを実行中であって、図14に示したように、プログラムカウンタ420を順次インクリメントして、プログラムを取得しているとする。
【0146】
(42)ここで、センサー302−2は、割り込みコントローラ101の割込制御レジスタ410−2に、専用線を介して割込信号を送信する。これにより、割込制御レジスタ410−2に「割り込みあり」を示す割り込みフラグ「1」が設定される。
【0147】
(43)割り込みコントローラ101は、アドレス変換回路103に、発生したイベントの種別を示す種別情報を送信する。(44)また、割り込みコントローラ101は、MCU102に、起動要求を送信する。次に、図21の説明に移行する。
【0148】
図21において、(45)アドレス変換回路103は、変換テーブル430を参照して、種別情報が示す種別に関連する対応情報を選択する。(46)次に、アドレス変換回路103は、選択した対応情報を識別するキーとして、選択した対応情報が示す先頭物理アドレス「0x1100」を採用する。ここで、アドレス変換回路103は、索引レジスタ440−0に、他の先頭物理アドレス「0x1000」が記憶されているため、索引レジスタ440−0〜440−(n−1)の記憶内容を、各々、後段の索引レジスタ440−1〜440−nに移行する。
【0149】
次に、アドレス変換回路103は、索引レジスタ440−0に、キーとして、先頭物理アドレス「0x1100」を記憶する。(47)また、MCU102は、起動要求を受信すると、ブートを中止してブートを再び開始するため、プログラムカウンタ420を初期化する。次に、MCU102は、ブートを開始し、プログラムカウンタ420に記憶された論理アドレスの初期値「0x0000」をアドレスバス110に出力する。次に、図22の説明に移行する。
【0150】
図22において、(48)アドレス変換回路103は、MCU102からアドレスバス110に出力された論理アドレス「0x0000」を取得し、取得した論理アドレス「0x0000」を絶対レジスタ450に記憶する。
【0151】
(49)次に、アドレス変換回路103は、索引レジスタ440−0に記憶された物理アドレス「0x1100」をキーとして用いることにより識別される対応情報が示す変換元の論理アドレス群を特定する。そして、アドレス変換回路103は、絶対レジスタ450に記憶された論理アドレス「0x0000」が、特定した変換元の論理アドレス群に含まれるか否かを判定する。
【0152】
(50)ここで、アドレス変換回路103は、変換元の論理アドレス群に含まれないため、従来技術にかかるページテーブルを用いて、論理アドレス「0x0000」を物理アドレス「0x0000」に変換して、参照レジスタ480に記憶する。次に、図23の説明に移行する。
【0153】
図23において、(51)アドレス変換回路103は、参照レジスタ480に記憶された物理アドレス「0x0000」を、アドレスバス110に出力する。(52)また、メモリ104は、アドレスバス110に出力された物理アドレス「0x0000」を取得する。(53)次に、メモリ104は、取得した物理アドレス「0x0000」が示す記憶領域に記憶された共通部カーネルコアをデータバス120に出力する。(54)また、MCU102は、データバス120に出力された共通部カーネルコアを取得する。次に、図24の説明に移行する。
【0154】
図24において、(55)MCU102は、プログラムカウンタ420をインクリメントして、(41)〜(54)と同様にして、プログラムを取得する。以降、MCU102は、プログラムカウンタ420を順次インクリメントして、プログラムを取得していく。ここで、インクリメントにより、プログラムカウンタ420の論理アドレスが「0x0100」になったとして、図25の説明に移行する。
【0155】
図25において、MCU102は、プログラムカウンタ420の論理アドレス「0x0100」をアドレスバス110に出力する。(56)アドレス変換回路103は、MCU102からアドレスバス110に出力された論理アドレス「0x0100」を取得し、取得した論理アドレス「0x0100」を絶対レジスタ450に記憶する。
【0156】
(57)次に、アドレス変換回路103は、索引レジスタ440−0に記憶された物理アドレス「0x1100」をキーとして用いることにより識別される対応情報が示す変換元の論理アドレス群「0x0100〜0x01ff」を特定する。そして、アドレス変換回路103は、絶対レジスタ450に記憶された論理アドレス「0x0100」が、特定した変換元の論理アドレス群「0x0100〜0x01ff」に含まれるか否かを判定する。
【0157】
(58)ここで、アドレス変換回路103は、変換元の論理アドレス群に含まれるため、論理アドレス「0x0100」を物理アドレス「0x1100」に変換して、参照レジスタ480に記憶する。次に、図26の説明に移行する。
【0158】
図26において、(59)アドレス変換回路103は、参照レジスタ480に記憶された物理アドレス「0x1100」を、アドレスバス110に出力する。(60)また、メモリ104は、アドレスバス110に出力された物理アドレス「0x1100」を取得する。(61)次に、メモリ104は、取得した物理アドレス「0x1100」が示す記憶領域に記憶されたイベントE2用のプログラムP2をデータバス120に出力する。(62)また、MCU102は、データバス120に出力されたイベントE2用のプログラムP2を取得する。次に、図27の説明に移行する。
【0159】
図27において、MCU102は、ブートを終了したとする。(63)割り込みコントローラ101は、MCU102がブートを終了すると、割込制御レジスタ410−2に「割り込みなし」を示す割り込みフラグ「0」を記憶する。次に、割り込みコントローラ101は、アドレス変換回路103にブートの終了通知を送信する。そして、割り込みコントローラ101は、割込制御レジスタ410−1に「割り込みあり」を示す割り込みフラグ「1」が記憶されているため、再びMCU102に起動要求を送信する。
【0160】
(64)また、アドレス変換回路103は、終了通知を受信すると、索引レジスタ440−0に初期値「0」を代入し初期化する。次に、アドレス変換回路103は、索引レジスタ440−1に先頭物理アドレスが記憶されているため、索引レジスタ440−1〜440−nの記憶内容を、各々、前段の索引レジスタ440−0〜440−(n−1)に移行する。これにより、索引レジスタ440―0には、キーとして、先頭物理アドレス「0x1000」が記憶される。
【0161】
(65)また、MCU102は、割り込みコントローラ101から再び送信された起動要求を受信すると、プログラムカウンタ420を初期化して、再びブートを開始する。これにより、アドレス変換回路103は、割り込ませるべき順番で、論理アドレスの変換に使用する対応情報を選択することができる。
【0162】
従って、MCU102は、イベントE1に応じた処理の実行中において、イベントE2に応じた処理を割り込ませて実行することができる。その後、MCU102は、イベントE1に応じた処理を実行し直すことができる。結果として、メモリ104に、割り込み順序を制御するための割り込みハンドラを記憶しておかなくてもよく、メモリ使用量の増大を抑制することができる。
【0163】
(センサーノード100における多重割り込み処理)
次に、図28を用いて、センサーノード100における多重割り込み処理の処理手順の一例について説明する。
【0164】
図28は、センサーノード100における多重割り込み処理の処理手順の一例を示すシーケンス図である。図28において、まず、センサー302−iは、イベントの発生を検出すると、割り込みコントローラ101に割込信号を送信する(ステップS2801)。
【0165】
次に、割り込みコントローラ101は、センサー302−iから割込信号を受信すると、アドレス変換回路103にイベントの種別を示す種別情報を送信する(ステップS2802)。また、割り込みコントローラ101は、センサー302−iから割込信号を受信すると、MCU102に起動要求を送信する(ステップS2803)。
【0166】
次に、アドレス変換回路103は、割り込みコントローラ101から種別情報を受信すると、変換テーブル430を参照して、受信した種別情報が示す種別に関連する対応情報を選択し、選択した対応情報のキーを索引レジスタ440−0に記憶する(ステップS2804)。また、MCU102は、図19に示したブート処理を開始する(ステップS2805)。
【0167】
ここで、ステップS2805のブート処理が終了する前に、センサー302−iにおいてイベントが発生したとする。センサー302−iは、イベントの発生を検出すると、割り込みコントローラ101に割込信号を送信する(ステップS2806)。
【0168】
次に、割り込みコントローラ101は、センサー302−iから割込信号を受信すると、アドレス変換回路103にイベントの種別を示す種別情報を送信する(ステップS2807)。また、割り込みコントローラ101は、センサー302−iから割込信号を受信すると、MCU102に起動要求を送信する(ステップS2808)。
【0169】
次に、アドレス変換回路103は、割り込みコントローラ101から種別情報を受信すると、変換テーブル430を参照して、受信した種別情報が示す種別に関連する対応情報を選択し、選択した対応情報のキーを索引レジスタ440−0に記憶する(ステップS2809)。ここで、アドレス変換回路103は、索引レジスタ440−kの記憶内容を、各々、後段の索引レジスタ440−(k+1)に移行しておく。また、MCU102は、ステップS2805のブート処理を中止し、図19に示したブート処理を再び開始する(ステップS2810)。
【0170】
ここで、ステップS2810のブート処理が終了したとする。MCU102は、ブート処理が終了すると、割り込みコントローラ101に終了通知を送信する(ステップS2811)。割り込みコントローラ101は、終了通知を受信すると、割り込み処理が終了していないイベントがあるため、アドレス変換回路103に終了通知を送信する(ステップS2812)。また、割り込みコントローラ101は、終了通知を受信すると、割り込み処理が終了していないイベントがあるため、MCU102に起動要求を送信する(ステップS2813)。
【0171】
次に、アドレス変換回路103は、割り込みコントローラ101から終了通知を受信すると、索引レジスタ440−1のキーを索引レジスタ440−0に記憶する(ステップS2814)。ここで、アドレス変換回路103は、例えば、索引レジスタ440−kの記憶内容を、各々、前段の索引レジスタ440−(k−1)に移行することにより、キーを記憶し直す。また、MCU102は、図19に示したブート処理を再び開始する(ステップS2815)。
【0172】
これにより、アドレス変換回路103は、MCU102がブートを開始する都度、処理すべき順序で、対応情報を選択することができ、選択した対応情報により論理アドレスの変換を実行することができる。そのため、MCU102は、ブートを開始する都度、処理すべき順序で、イベントに応じたプログラムを実行することができる。換言すれば、アドレス変換回路103は、多重割り込みに対応した動作を実行することができる。
【0173】
以上説明したように、開示の変換装置700は、イベントが発生した場合に、当該イベントに応じた変換元の論理アドレスと変換先の物理アドレスとの対応関係を示す対応情報を選択しておく。そして、開示の変換装置700は、選択しておいた対応情報が示す対応関係を用いて、MCU102が変換元の論理アドレスにアクセスする場合に、当該論理アドレスを変換先の物理アドレスに変換する。これにより、開示の変換装置700は、当該イベントに応じたプログラムをMCU102に取得させて実行させることができる。
【0174】
従って、MCU102は、当該イベントに応じたプログラムを選択して実行するための分岐処理を実行しなくても、当該イベントに応じたプログラムを実行することができる。結果として、MCU102において、分岐処理にかかる時間が削減され、起動時間が短縮化される。また、メモリ104は、分岐処理に関するプログラムを記憶しなくてもよく、メモリ使用量の増大を抑制することができる。
【0175】
また、MCU102の起動時間が短縮化されるため、MCU102の消費電力の増大を抑制することができる。そのため、センサーノード100は、ハーベスタ311からの電力供給量が限られていても、限られた電力供給量の範囲内でMCU102を動作させることができる。
【0176】
また、過去に発生したイベントによるMCU102のブートの終了前に、新たにイベントが発生して、過去に発生したイベントによるブートを中止して、新たに発生したイベントによるMCU102のブートが開始される場合がある。この場合、開示の変換装置700は、過去に発生したイベントの種別に関連する対応情報を記憶しつつ、新たに発生したイベントに関連する対応情報を選択する。そして、開示の変換装置700は、選択した対応情報を用いて、MCU102がアクセスする論理アドレスを物理アドレスに変換する。
【0177】
開示の変換装置700は、新たに発生したイベントによるMCU102のブートが終了した後、過去に発生したイベントにより再びMCU102がブートされる場合に、記憶しておいた過去に発生したイベントに関連する対応情報を取得する。そして、開示の変換装置700は、取得した対応情報を用いて、MCU102がアクセスする論理アドレスを物理アドレスに変換する。これにより、開示の変換装置700は、割り込みにより優先的に処理するイベントから順に、当該イベントに関連する対応情報を選択して、MCU102にイベントに応じたプログラムを実行させることができる。結果として、MCU102における割り込みの順序を制御する割込ハンドラを削減して、メモリ104の使用量を削減することができる。
【0178】
また、開示の変換装置700は、選択した対応情報のキーを索引レジスタ440−kに記憶しておく。これにより、対応情報自体を記憶する場合よりも、索引レジスタ440−kの物理的サイズを小さくでき、開示の変換装置700の製造コストを低減することができる。また、開示の変換装置700は、選択した対応情報のキーを、開示の変換装置700内の不揮発メモリに記憶せず、索引レジスタ440−kに記憶することにより、不揮発メモリからの読み出し回数を低減化して、消費電力の増大を抑制することができる。
【0179】
また、メモリ104は、各々のイベントに共通する処理を記述した共通部カーネルコアと、各々のイベントに固有の処理を記述したプログラムと、を分割して記憶する。そして、開示の変換装置700は、共通部カーネルコアと、発生したイベントに応じたプログラムと、を組み合わせて、MCU102に取得させる。これにより、メモリ104に、イベントごとに、共通部カーネルコアと当該イベント用のプログラムとを結合したプログラムを記憶する場合と比べて、メモリ104の使用量を削減することができる。
【0180】
また、開示の変換装置700は、変換元の各論理アドレスの先頭論理アドレスからMCU102がアクセスする論理アドレスまでの差分と、変換先の各物理アドレスの先頭物理アドレスと、を加算する。そして、開示の変換装置700は、加算により、MCU102がアクセスする論理アドレスの変換先の物理アドレスを特定する。そのため、対応情報は、変換先の各物理アドレスを示さなくてもよく、変換先の各物理アドレスの先頭物理アドレスを示せばよい。結果として、開示の変換装置700において、対応情報を記憶するために使用する記憶領域のサイズを低減化することができる。
【0181】
また、センサーノードが、イベントの種別ごとに当該種別に応じた処理のみを実行するMCUを有し、発生したイベントの種別に応じたMCUを起動して処理を実行させることにより、MCUの起動時間を短縮する構成が考えられる。しかしながら、この構成では、センサーノードの製造コストが増大したり、センサーノードの物理的サイズが増大して設置領域への設置が困難になったりする。一方で、開示の変換装置700によれば、図2のようにMCU102が一つであっても、発生したイベントの種別に応じた処理を当該MCU102に実行させることができ、センサーノード100の製造コストや物理的サイズの増大を抑制することができる。
【0182】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0183】
(付記1)プロセッサがブートのためにアクセスする各論理アドレスと、前記各論理アドレスの変換先の各物理アドレスと、の対応関係を示す対応情報を、前記プロセッサをブートさせるイベントの種別ごとに関連付けて記憶する記憶部と、
前記イベントが発生した場合に、前記記憶部を参照して発生した前記イベントの種別に関連する対応情報を選択する選択部と、
前記イベントの発生によって前記プロセッサが前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記選択部によって選択された対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定する特定部と、
前記特定部によって特定された物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムを前記プロセッサに取得させる制御部と、
を有することを特徴とする変換装置。
【0184】
(付記2)前記選択部は、
前記プロセッサをブートさせる第1のイベントが発生した場合に、前記記憶部を参照して前記第1のイベントの種別に関連する対応情報を選択し、前記第1のイベントの発生による前記プロセッサのブートが終了する前に前記第1のイベントより優先して前記プロセッサをブートさせる第2のイベントが発生した場合に、前記記憶部を参照して前記第2のイベントの種別に関連する対応情報を選択し、
前記特定部は、
前記第2のイベントの発生によって前記プロセッサが前記第2のイベントに応じた前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記第2のイベントの種別に関連する対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定し、前記第2のイベントの発生による前記プロセッサのブートが終了した後に、前記第1のイベントによって前記プロセッサが前記第1のイベントに応じた前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記第1のイベントの種別に関連する対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定する、
ことを特徴とする付記1に記載の変換装置。
【0185】
(付記3)前記選択部は、
選択した前記対応情報を識別する識別情報をレジスタに格納し、
前記特定部は、
前記選択部によって前記レジスタに格納された識別情報により識別される対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定する、
ことを特徴とする付記1または2に記載の変換装置。
【0186】
(付記4)前記記憶部は、
前記各論理アドレスの中で前記イベントの種別に固有の各論理アドレスと、前記固有の各論理アドレスの変換先であって前記記憶装置内で前記イベントの種別に固有のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す第1の対応情報を前記イベントの種別ごとに関連付けて記憶するとともに、
前記各論理アドレスの中で前記イベントの各種別に共通の各論理アドレスと、前記共通の各論理アドレスの変換先であって前記記憶装置内で前記イベントの各種別に共通のプログラムの記憶領域を示す各物理アドレスと、の対応関係を示す第2の対応情報を記憶し、
前記特定部は、
前記プロセッサが発生した前記イベントの種別に固有の各論理アドレスに含まれる論理アドレスにアクセスする場合に、発生した前記イベントの種別に応じた前記第1の対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定し、前記プロセッサが前記共通の各論理アドレスに含まれる論理アドレスにアクセスする場合に、前記第2の対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定する、
ことを特徴とする付記1〜3のいずれか一つに記載の変換装置。
【0187】
(付記5)前記対応情報は、前記各論理アドレスの先頭論理アドレスと、前記先頭論理アドレスの変換先の先頭物理アドレスと、を示し、
前記特定部は、
前記先頭論理アドレスから前記プロセッサがアクセスする前記論理アドレスまでの差分と、前記先頭物理アドレスと、の加算により、前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定する、
ことを特徴とする付記1〜4のいずれか一つに記載の変換装置。
【0188】
(付記6)プロセッサがブートのためにアクセスする各論理アドレスと、前記各論理アドレスの変換先の各物理アドレスと、の対応関係を示す対応情報を、前記プロセッサをブートさせるイベントの種別ごとに関連付けて記憶する記憶部にアクセス可能な変換装置が、
前記イベントが発生した場合に、前記記憶部を参照して発生した前記イベントの種別に関連する対応情報を選択し、
前記イベントの発生によって前記プロセッサが前記各論理アドレスに含まれる論理アドレスにアクセスする場合に、選択した対応情報を用いて前記プロセッサがアクセスする前記論理アドレスの変換先の物理アドレスを特定し、
特定した物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムを前記プロセッサに取得させる、
処理を実行することを特徴とする変換方法。
【0189】
(付記7)プロセッサと、前記プロセッサがアクセスする論理アドレスを物理アドレスに変換する変換装置と、イベントの発生を検出するコントローラと、を含む情報処理システムであって、
前記コントローラは、
前記プロセッサをブートさせるイベントの発生を検出した場合に、起動要求を前記プロセッサに送信するとともに、発生した前記イベントの種別を示す種別情報を前記変換装置に送信し、
前記変換装置は、
前記コントローラから前記種別情報を受信した場合に、前記プロセッサによってブートのためにアクセス要求される各論理アドレスと、前記各論理アドレスの変換先の各物理アドレスと、の対応関係を示す対応情報を、前記イベントの種別ごとに関連付けて記憶する記憶部を参照して、前記種別情報が示す種別に関連する対応情報を選択し、
前記プロセッサは、
前記コントローラから前記起動要求を受信した場合に、前記各論理アドレスに含まれる論理アドレスのアクセス要求を出力し、
前記変換装置は、
選択した前記対応情報を用いて前記プロセッサが出力したアクセス要求の論理アドレスの変換先の物理アドレスを特定し、
前記プロセッサは、
前記変換装置によって特定された物理アドレスが示す記憶装置内の記憶領域に記憶されたプログラムを取得して実行する、
ことを特徴とする情報処理システム。
【符号の説明】
【0190】
101 割り込みコントローラ
102 MCU
103 アドレス変換回路
104 メモリ
700 変換装置
701 記憶部
702 選択部
703 特定部
704 制御部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28