JP5773064B2 - 検出装置、通知方法、および通知プログラム - Google Patents
検出装置、通知方法、および通知プログラム Download PDFInfo
- Publication number
- JP5773064B2 JP5773064B2 JP2014505848A JP2014505848A JP5773064B2 JP 5773064 B2 JP5773064 B2 JP 5773064B2 JP 2014505848 A JP2014505848 A JP 2014505848A JP 2014505848 A JP2014505848 A JP 2014505848A JP 5773064 B2 JP5773064 B2 JP 5773064B2
- Authority
- JP
- Japan
- Prior art keywords
- processing
- driver
- time
- execution
- coprocessor
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は、検出装置、通知方法、および通知プログラムに関する。
従来、たとえば、マルチコアプロセッサシステムにおいて、特定のプロセッサが、各プロセッサの負荷を分散するために、各プロセッサの負荷を予測する技術が知られている(たとえば、下記特許文献1参照。)。
また、従来、たとえば、マルチコアプロセッサシステムにおいて、プロセッサの稼働率により負荷分散が行われる技術が知られている(たとえば、下記特許文献2参照。)。
また、従来、たとえば、マルチコアプロセッサシステムにおいて、デバイスドライバを使用するすべてのプロセッサが該デバイスドライバを搭載し、排他制御によっていずれのプロセッサが該デバイスドライバを実行するかが決定される技術が知られている(たとえば、下記特許文献3参照。)。これにより、各プロセッサは常にドライバの実行要求を待ち受けることにより、応答性能の向上を図ることができる。
しかしながら、各プロセッサは排他制御、負荷分散を行うことにより、ドライバの実行を継続させることができるが、各プロセッサには排他制御、負荷分散にかかる処理による負荷量が増大する問題点がある。
本発明は、上述した従来技術による問題点を解消するため、排他制御、負荷分散を行わなくともドライバの実行を継続させることができる検出装置、通知方法、および通知プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサのうち、複数のセンサの各々に応じた処理を順に繰り返し実行する特定のプロセッサが、前記各々に応じた処理に対応する第1の処理にかかる処理時間と、前記各々に応じた処理に対応する第2の処理にかかる処理時間と、前記各々に応じた処理に対応する制約時間と、を記憶する記憶部に、前記各々に応じた処理の実行切り替え時に前記各々に応じた処理に対応した実行開始時刻を格納し、前記各々に応じた処理のうちの実行中の処理が前記第2の処理を行う場合に、前記各々に応じた処理のうち前記実行中の処理を除いた残余の処理に対応した前記記憶部に記憶された実行開始時刻と、前記実行中の処理が前記第2の処理を行う開始時刻との差分値に、前記実行中の処理の前記第2の処理にかかる処理時間と、前記残余の処理の前記第1の処理にかかる処理時間と、を前記各々に応じた処理の実行順序に基づいて加え、前記残余の処理に対応して算出された時間が、前記記憶部に記憶された前記残余の処理に対応する制約時間を遵守するか否かを判断し、前記制約時間を遵守しないと判断された処理の実行依頼を、前記複数のプロセッサのうちの前記特定のプロセッサ以外の他のプロセッサに通知する検出装置、通知方法、および通知プログラムが提案される。
本発明の一側面によれば、排他制御、負荷分散を行わなくともドライバの実行を継続させることができるという効果を奏する。
以下に添付図面を参照して、本発明にかかる検出装置、通知方法、および通知プログラムの実施の形態を詳細に説明する。ここで、検出装置は、複数のセンサと、センサによって検知されたデータに応じた処理を実行するコプロセッサと、を有するセンサアーキテクチャである。検出装置は、センサによって検知された検知データの異常をコプロセッサによって検出したり、検知データを解析したりする。通知プログラムは、コプロセッサによって実行されるスケジューラである。
(センサアーキテクチャのハードウェア構成例)
図1は、検出装置のハードウェア構成例を示すブロック図である。センサアーキテクチャ100は、複数のコプロセッサ101−1〜101−nと、複数のバックアップ・コプロセッサ101−n+1〜101−mと、複数のローカルメモリ102と、複数のセンサ(センサA,センサB,センサC・・・)と、電源供給回路103と、を有している。「n≧1」であり、「m≧n+1」である。さらに、センサアーキテクチャ100は、CPU(Central Processing Unit)105と、メインメモリ107と、を有している。複数のセンサと、複数のコプロセッサ101と、複数のローカルメモリ102と、はセンサバス104によって接続されている。
図1は、検出装置のハードウェア構成例を示すブロック図である。センサアーキテクチャ100は、複数のコプロセッサ101−1〜101−nと、複数のバックアップ・コプロセッサ101−n+1〜101−mと、複数のローカルメモリ102と、複数のセンサ(センサA,センサB,センサC・・・)と、電源供給回路103と、を有している。「n≧1」であり、「m≧n+1」である。さらに、センサアーキテクチャ100は、CPU(Central Processing Unit)105と、メインメモリ107と、を有している。複数のセンサと、複数のコプロセッサ101と、複数のローカルメモリ102と、はセンサバス104によって接続されている。
ここで、コプロセッサ101と、コプロセッサ101の数と、バックアップ・コプロセッサ101について説明する。本実施の形態では、センサアーキテクチャ100が有するコプロセッサ101とバックアップ・コプロセッサ101とは、センサのドライバを実行するためのプロセッサであり、他のアプリケーションの処理を実行しない。センサのドライバではセンサの制約さえ遵守されれば応答性能が無視されてもよい。センサの制約とは、センサのドライバ実行要求が発生してから実際にドライバが実行されるまでの時間に対する制約のことである。
そこで、複数のコプロセッサ101−1〜101−nは、排他制御、負荷分散を行うことなく、ドライバの実行を行う。各コプロセッサ101には、各センサのドライバの第1の処理である通常処理の処理時間に基づいて処理可能なドライバが割り当てられる。そして、コプロセッサ101は、実行中のドライバが第2の処理であるCPU呼出処理が行われると、ドライバの制約時間を遵守できない場合に、他のコプロセッサ101に制約時間を遵守できないドライバの実行依頼を通知する。具体的には、たとえば、コプロセッサ101は、他のコプロセッサ101への実行依頼の通知をIPC(Inter−Processor Communication)によって行う。第1の処理である通常処理と第2の処理であるCPU呼出処理については後述する。これにより、各コプロセッサ101は、排他制御、負荷分散にかかる負荷量を低減させることができる。
コプロセッサ101およびバックアップ・プロセッサ101は、最大負荷の場合にすべてのセンサの制約を遵守させるために足る数だけ準備される。「最大負荷」とは、各センサのドライバがすべてCPU呼出処理を実行した場合である。そのため、最大負荷時以外では余剰コプロセッサ101が発生し無駄な電力を消費してしまう。そこで、たとえば、運用開始時のドライバは、センサアーキテクチャ100の設計者によって最小負荷の場合を仮定してすべてのセンサの制約が守れる最少のコプロセッサ101数で均等に配置される。「負荷が最少」とは、すべてのセンサのドライバの実行において、通常処理が行われる場合である。
ここで、全コプロセッサ101の数が三つであり(m=3)、センサが八つあり(センサA〜センサH)、各センサのドライバの負荷が最少であると仮定した場合を例に挙げる。コプロセッサ101が一つですべてのセンサのドライバが実行可能であるならば、すべてのドライバが一つのコプロセッサ101に割り当てられる。そして、残りの二つのコプロセッサ101は、バックアップ・コプロセッサ101となり、電源が落とされて停止状態になる。同様の条件において、コプロセッサ101が二つですべてのセンサのドライバが実行可能であるならば、二つのコプロセッサ101には四つずつドライバが割り当てられる。残りの一つのコプロセッサ101はバックアップ・コプロセッサ101として電源が落とされて停止状態になる。これにより、センサアーキテクチャ100は、消費電力を低減させることができる。つぎに、たとえば、起動中のコプロセッサ101だけではすべてのドライバの制約を遵守できない場合に、バックアップ・コプロセッサ101が起動される。
各コプロセッサ101は、スケジューラ121と、割り当てられたセンサのドライバと、を実行する。スケジューラ121は、コプロセッサ101に割り当てられたドライバの実行を制御する。スケジューラ121は、ディスパッチループ131を有しており、ディスパッチループ131にドライバの識別情報が登録されることにより、ドライバがコプロセッサ101に割り当てられたことになる。コプロセッサ101が実行するスケジューラ121とバックアップ・コプロセッサ101が実行するスケジューラ121とは異なるが、それぞれの詳細については、後述する。上述したように、バックアップ・コプロセッサ101は、センサアーキテクチャ100の起動時には電源供給回路103から電源が供給されず、停止状態になっている。
電源供給回路103は、各部に電源を供給する。ここで、たとえば、電源供給回路103は、コプロセッサ101またはバックアップ・コプロセッサ101からの指示により各部への電源の供給を遮断したり、電源の供給を開始することができる。
複数のセンサ(センサA,センサB,センサC・・・)は、それぞれの機能に応じてデータを検知する。たとえば、センサとしては、方位を検知する方位計、体温、気温を検知する温度センサ、湿度を検知する湿度センサ、心拍数を計測する心拍計が挙げられる。
センサのドライバは、センサに応じた処理に関するソフトウェアである。たとえば、温度センサであれば、センサのドライバは、温度センサによって検知された温度が基準値以下であるか否かを判断してもよい。センサのドライバは、予めセンサアーキテクチャ100の設計者によって割り当てられていてもよい。たとえば、センサアーキテクチャ100の電源投入時に、各コプロセッサ101は、決められたドライバを立ち上げてもよい。
各センサのドライバは、通常処理と、CPU呼出処理と、を有している。上述したように、通常処理が第1の処理であり、CPU呼出処理が第2の処理である。通常処理は、取得処理と、解析処理と、検出処理と、を有している。ここで、各センサのドライバが行うCPU呼出処理と、CPUが行う特定の処理と、を応用処理と称する。
取得処理は、センサによって検知されたデータをセンサのバッファから取得する。解析処理は、取得されたデータを解析する。検出処理は、取得されたデータの変化を検出する。CPU呼出処理は、データの変化が検出された場合、検出した変化に応じた処理を行う。CPU105はCPU呼出処理により呼び出されると、特定の処理を行う。CPU呼出処理は、特定の処理の終了を待って終了してもよい。たとえば、心拍数を計測するセンサを例に挙げると、解析処理は、たとえば、対象者の現在の心拍数を求める。つぎに、検出処理は、たとえば、心拍数が閾値以上に変化することを検出する。そして、CPU呼出処理は、心拍数が閾値以上であることが検出された場合、CPU105に対して心拍数が閾値以上である旨を通知する。さらに、CPU105は、たとえば、病院のサーバに通知してもよいし、警報を鳴らす処理を行ってもよい。
コプロセッサ101−1〜コプロセッサ101−nとバックアップ・コプロセッサ101−(n+1)〜バックアップ・コプロセッサ101−mは、それぞれローカルメモリ102−1〜ローカルメモリ102−mを有している。各コプロセッサ101は、ローカルメモリ102をワークエリアとして使用する。
ローカルメモリ102としては、たとえば、RAM(Randam Access Memory)、ROM(Read Only Memory)が挙げられる。さらに、ローカルメモリ102には、割り当てられたドライバの実行コードと、割り当てられたドライバのそれぞれの通常処理にかかる処理時間と、CPU呼出処理にかかる処理時間と、ドライバの制約時間と、ドライバの実行開始時刻と、が記憶される。各処理時間と制約時間と実行開始時刻との記憶例については、図面を用いて後述する。実行コードとは、アセンブリ言語などのコプロセッサ101、CPU105が識別可能な情報である。
CPU105と、メインメモリ107と、センサバス104と、はメインバス108によって接続されている。これに限らず、たとえば、CPU105およびメインメモリ107と、センサバス104とは、I/F(InterFace)を介して接続されてもよい。I/Fは、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、このネットワークを介して他の装置に接続される。そして、I/Fは、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/Fとしては、たとえばモデムやLANアダプタなどを採用することができる。
CPU105は、複数のコプロセッサ101がCPU呼出処理を行った場合、該CPU呼出処理に基づく処理を実行する。たとえば、温度センサに応じた処理を実行するコプロセッサ101が、温度が基準値以上であると判断した場合、異常温度であることをCPU105へ通知する処理を実行する。そして、CPU105は、コプロセッサ101から異常温度であることを通知された場合、利用者に異常温度である旨を通知する。たとえば、利用者への通知方法としては、ディスプレイにエラーを表示したり、ブザーを鳴らしてもよい。または、たとえば、CPU105は、コプロセッサ101から異常温度であることを通知された場合、空調設備の温度設定を変更してもよい。
メインメモリ107は、CPU105のワークエリアとして使用される。メインメモリ107としては、たとえば、RAMが挙げられる。ストレージ106は、CPU105が実行するOS(Operating System)、アプリケーションのプログラムが記憶されている。ストレージ106としては、たとえば、ROM、ハードディスクが挙げられる。ストレージ106は、たとえば、センサのドライバに関するプログラムを記憶していてもよい。複数のコプロセッサ101の起動時に、各コプロセッサ101は、割り当てられたドライバに関するプログラムをストレージ106から読み出してもよい。
ここで、たとえば、各センサは、一定の間隔でセンシングしてデータをバッファに書き込むポーリング型のセンサと、所定のイベントでセンシングしてデータをバッファに書き込む割り込み型のセンサと、の二つに大別することができる。図2を用いてポーリング型のセンサと割り込み型のセンサのそれぞれの制約例について説明する。
図2は、ポーリング型のセンサと割り込み型のセンサの各制約例を示す説明図である。ポーリング型のセンサとしては、たとえば、温度センサが挙げられる。図2の上側に示すように、ポーリング型のセンサについては、コプロセッサ101は、センサのバッファからセンサによって検知されたデータの取得を一定の間隔で行う。一定の間隔は、センサの処理能力によって異なるため、センサごとに定められている。したがって、ポーリング型のセンサでは、該一定の間隔が制約時間となる。
割り込み型のセンサは、たとえば、ボタン、マウスが挙げられる。図2の下側に示すように、割り込み型のセンサがイベントの発生を検出すると、割り込み信号をコプロセッサ101に対して出力する。そして、コプロセッサ101は、割り込み信号の出力から所定時間以内にセンサのバッファに記憶されたデータを取り出す。所定時間とは、センサの機能によって異なるため、センサごとに定められている。したがって、割り込み型のセンサでは、該所定時間が制約となる。
以降、コプロセッサ101に割り当てられたドライバは、ポーリング型のセンサのドライバである。割り込み型のセンサのドライバについては、たとえば、コプロセッサ101に固定で割り当てることとし、図面を用いた詳細な例を省略する。
(コプロセッサ101による動作例)
各コプロセッサ101は、CPU呼出処理が行われることにより、ドライバの制約時間を遵守できない場合に、他のコプロセッサ101に制約を遵守できないドライバの実行を依頼する。ここで、図3〜6ではn=2、m=3の場合を例に挙げて説明する。
各コプロセッサ101は、CPU呼出処理が行われることにより、ドライバの制約時間を遵守できない場合に、他のコプロセッサ101に制約を遵守できないドライバの実行を依頼する。ここで、図3〜6ではn=2、m=3の場合を例に挙げて説明する。
図3は、コプロセッサ101による一動作例を示す説明図である。コプロセッサ1011−1には、センサA、センサB、センサCのそれぞれに対応するドライバA、ドライバB、ドライバCが割り当てられている。割り当てられたドライバA、ドライバB、ドライバCは、ディスパッチループ131−1に登録されて、スケジューラ121−1によって順に繰り返して実行される。コプロセッサ101−2には、センサD、センサEのそれぞれに対応するドライバD、ドライバEが割り当てられている。割り当てられたドライバD、ドライバEは、ディスパッチループ131−2に登録されて、スケジューラ121−2によって順に繰り返して実行される。
センサアーキテクチャ100において、センサのドライバを実行するすべてのコプロセッサ101が該ドライバを搭載する場合、あるドライバを複数のコプロセッサ101が同時に実行すると、該ドライバの実行により得られるデータが壊れてしまう可能性がある。そのため、排他制御が行われなければならない。本実施の形態では、コプロセッサ101−1およびコプロセッサ101−2は、割り当てられたセンサのドライバを搭載し、他のコプロセッサ101に割り当てられたドライバは搭載しない。そのため、排他制御が行われなくてもよい。
各スケジューラ121−1およびスケジューラ121−2は、ドライバの実行が切り替わるときに、切り替え時の時刻を取得して、ドライバの識別情報と、該現時刻を関連付けてそれぞれのローカルメモリ102に格納する。時刻は、たとえば、各コプロセッサ101が有するタイマから取得される。
図3では、スケジューラ121−1は、ドライバAを実行中にCPU呼出処理が実行される条件を満たしたか否かを判断する。図3の例では、「A’」がドライバAのCPU呼出処理を示している。たとえば、温度センサのドライバであれば、温度センサによって検知された温度が閾値以上または閾値以下となると、CPU呼出処理が実行される。そのため、スケジューラ121−1は、温度センサのドライバはCPU呼出処理が実行される条件を満たしたと判断する。CPU呼出処理が実行される条件が満たされた場合、スケジューラ121−1は、ドライバAのCPU呼出処理にかかる処理時間と、ドライバB、ドライバCのそれぞれの制約時間、ドライバB、ドライバCの通常処理にかかる処理時間と、をローカルメモリ102−1から取得する。さらに、スケジューラ121−1は、ドライバB、ドライバCのそれぞれの実行開始時刻をローカルメモリ102−1から取得する。さらに、スケジューラ121−1は、現時刻tcを取得する。現時刻tcは、たとえば、各コプロセッサ101が有するタイマから取得される。
そして、スケジューラ121−1は、実行中のドライバがCPU呼出処理を行う場合に、割り当てられたドライバのうち実行中のドライバを除いた残余のドライバごとにローカルメモリ102に記憶された実行開始時刻と現時刻tcとの差分値を算出する。実行中のドライバはドライバAであり、残余のドライバは、ドライバBとドライバCである。スケジューラ121−1は、残余のドライバごとに算出された差分値に実行中の処理のCPU呼出処理にかかる処理時間と、ドライバの実行順序に基づいて残余のドライバの通常処理にかかる処理時間と、を加える。
具体的には、たとえば、スケジューラ121−1は、ドライバBの実行開始時刻tsbと現時刻tcとの差分値を算出する。ここで、ドライバAとドライバBとドライバCの実行順序は、ディスパッチループ131−1の登録順によって決まる。図3の例では、ドライバBはドライバAのつぎに実行されるため、スケジューラ121−1は、算出した差分値に、ドライバAのCPU呼出処理にかかる処理時間t2aを加算する。これにより、ローカルメモリ102に記憶されたドライバBの実行開始時刻tsbから、つぎにドライバBが実行されるまでにかかる時間tebが算出される。
具体的には、たとえば、スケジューラ121−1は、ドライバCの実行開始時刻tscと現時刻tcとの差分値を算出する。ここで、ドライバAとドライバBとドライバCの実行順序は決まっている。図3の例では、ドライバBはドライバAのつぎに実行され、ドライバCは、ドライバBのつぎに実行される。そのため、スケジューラ121−1は、算出した差分に、ドライバAのCPU呼出処理にかかる処理時間t2aとドライバBの通常処理にかかる処理時間t1bとを加算する。これにより、ローカルメモリ102に記憶されたドライバCの実行開始時刻tscから、つぎにドライバCが実行されるまでにかかる時間tecが算出される。
つぎに、スケジューラ121−1は、残余のドライバに対応して算出された時間が、ローカルメモリ102に記憶された残余のドライバの制約時間を遵守するか否かを判断する。具体的には、たとえば、スケジューラ121−1は、時間tebがドライバBの制約時間tpb以下であるか否かを判断する。時間tebがドライバBの制約時間tpb以下の場合、スケジューラ121−1は、時間tebがドライバBの制約時間tpbを遵守していると判断する。具体的には、たとえば、スケジューラ121−1は、時間tecがドライバCの制約時間tpc以下であるか否かを判断する。時間tecがドライバCの制約時間tpc以下の場合、スケジューラ121−1は、時間tecがドライバCの制約時間tpcを遵守していると判断する。ここでは、たとえば、時間tecがドライバCの制約時間tpcを遵守していないと判断する。
そして、スケジューラ121−1は、起動中の他のコプロセッサ101にドライバCの実行依頼を通知する。具体的には、たとえば、スケジューラ121−1は、他のコプロセッサ101への実行依頼の通知をIPCによって行う。ここでは、起動中の他のコプロセッサ101は、コプロセッサ101−2である。たとえば、実行依頼は、ドライバCの実行開始時刻tscと、ドライバCの制約時間tpcと、ドライバCの通常処理にかかる処理時間t1cと、を有している。
これにより、センサアーキテクチャは、排他制御、分散処理を行わなくても、センサのドライバを継続して実行させることができる。
図4は、コプロセッサ101による実行依頼を受け付けた場合の動作例を示す説明図である。スケジューラ121−2は、スケジューラ121−1からドライバCの実行依頼を受け付ける。
つぎに、スケジューラ121−2は、実行依頼の対象となるドライバの通常処理にかかる処理時間と、割り当てられたすべてのドライバの通常処理にかかる処理時間と、の合計値を算出する。具体的には、たとえば、合計値totalは、ドライバDの通常処理にかかる処理時間t1dと、ドライバEの通常処理にかかる処理時間t1eと、ドライバCの通常処理にかかる処理時間t1cと、の加算結果である。
そして、スケジューラ121−2は、合計値totalが実行依頼の対象となるドライバの制約時間および割り当てられた各ドライバの制約時間を遵守するか否かを判断する。具体的には、たとえば、スケジューラ121−2は、合計値totalが実行依頼の対象となるドライバCの制約時間tpcおよび割り当てられたドライバD、ドライバEのそれぞれの制約時間tpd、tpe以下であるか否かを判断する。
合計値totalが制約時間tpc、tpd、tpe以下である場合、スケジューラ121−2は、合計値totalが制約時間tpcおよび制約時間tpd、tpeを遵守すると判断する。一方、制約時間tpcと制約時間tpdと制約時間tpeのうちいずれか一つの制約時間であっても合計値totalより小さい場合、スケジューラ121−2は、制約時間tpc、tpd、tpeを遵守しないと判断する。
いずれか一つのドライバの制約時間であっても遵守することができないと判断された場合、スケジューラ121−2は、実行依頼の通知元であるスケジューラ121−1に実行不可を通知する。スケジューラ121−2は、すべてのドライバの制約時間を遵守することができると判断した場合、実行依頼の通知元であるスケジューラ121−1に実行受託を通知する。具体的には、たとえば、スケジューラ121−2は、実行依頼の通知元への実行不可または実行受託の通知をIPCによって行う。
これにより、センサアーキテクチャ100は、排他制御、負荷分散を行わずにすべてのセンサのドライバの制約時間を遵守させることができる。したがって、センサアーキテクチャ100は、運用中に排他制御および負荷分散にかかる処理の負荷量を低減させることができる。
また、図4の例では、各ドライバの通常処理にかかる処理時間の合計値によって各ドライバの制約時間が遵守されるか判断している。これに限らず、スケジューラ121−2は、各ドライバの格納された実行開始時刻tsd、tse、tscに基づいてドライバごとにつぎの実行開始時刻を詳細に予測してもよい。そして、ドライバごとに格納された実行開始時刻と予測された実行開始時刻との差分値が制約時間を遵守するか否かが判断されてもよい。これにより、センサアーキテクチャ100は、制約時間を遵守できるか否かの判断の精度を向上させることができる。
(バックアップ・コプロセッサ101)
上述したように、センサアーキテクチャ100の設計者によってドライバの割り当てが行われなかったコプロセッサ101については、バックアップ・コプロセッサ101として停止させておく。これにより、センサアーキテクチャ100は、消費電力を低減させることができる。そして、起動中のコプロセッサ101だけではすべてのドライバの制約時間を遵守できない場合に、バックアップ・コプロセッサ101が起動され、バックアップ・コプロセッサ101にドライバが割り当てられる。
上述したように、センサアーキテクチャ100の設計者によってドライバの割り当てが行われなかったコプロセッサ101については、バックアップ・コプロセッサ101として停止させておく。これにより、センサアーキテクチャ100は、消費電力を低減させることができる。そして、起動中のコプロセッサ101だけではすべてのドライバの制約時間を遵守できない場合に、バックアップ・コプロセッサ101が起動され、バックアップ・コプロセッサ101にドライバが割り当てられる。
図5は、バックアップ・コプロセッサ101に実行指示を通知する例を示す説明図である。スケジューラ121−1は、スケジューラ121−2から実行不可を受け付けた場合、バックアップ・コプロセッサ101−3を起動させる。具体的には、たとえば、スケジューラ121−1は、電源供給回路103にバックアップ・コプロセッサ101−3へ電源を供給させる指示を通知する。そして、たとえば、電源供給回路103は、該指示を受け付けると、バックアップ・コプロセッサ101−3に電源を供給する。これにより、バックアップ・コプロセッサ101−3は起動する。スケジューラ121−1は、バックアップ・コプロセッサ101−3へドライバCの実行指示を通知する。
たとえば、ドライバCの実行指示は、ドライバCの実行コードと、ドライバCの実行開始時刻tscと、ドライバCの通常処理にかかる処理時間t1cと、ドライバCのCPU呼出処理にかかる処理時間t2cと、ドライバCの制約時間tpcと、を有している。起動後のバックアップ・コプロセッサ101−3が実行するスケジューラ121−3は、ドライバCの実行指示を受け付けると、ドライバCを実行する。
したがって、センサアーキテクチャ100は、センサのドライバを継続して実行させることができ、信頼性を向上させることができる。
図6は、バックアップ・コプロセッサ101による実行依頼例を示す説明図である。スケジューラ121は、一定時間ごとに割り当てられたドライバCの実行依頼をコプロセッサ101−1、コプロセッサ101−2へ通知する。
スケジューラ121−3からの実行依頼を受け付けたスケジューラ121−1とスケジューラ121−2は、図3に示したように、割り当てられたドライバと実行依頼を受け付けたドライバとのそれぞれの制約時間を遵守できるか否かを判断する。スケジューラ121−1またはスケジューラ121−2は、割り当てられたドライバと実行依頼を受け付けたドライバとのそれぞれの制約時間を遵守できる場合、実行依頼の通知元であるバックアップ・コプロセッサ101−3に実行受託を通知する。一方、スケジューラ121−1またはスケジューラ121−2は、割り当てられたドライバと実行依頼を受け付けたドライバとのいずれか一つの制約時間であっても遵守できない場合、実行依頼の通知元であるバックアップ・コプロセッサ101−3に実行不可を通知する。たとえば、スケジューラ121−1またはスケジューラ121−2は、実行不可または実行受託の通知をIPCによって行う。
スケジューラ121−3は、実行受託をいずれかのコプロセッサ101から受け付けたら、ドライバCの実行指示を実行受託の通知元のコプロセッサ101に通知する。スケジューラ121−3は、ドライバCの実行指示の通知をIPCによって行う。そして、スケジューラ121−3は、バックアップ・コプロセッサ101−3を停止させる。
これにより、センサアーキテクチャ100は、コプロセッサ101に余力のない場合にセンサのドライバの制約時間を遵守させるためにバックアップ・コプロセッサ101を動作させる。そして、センサアーキテクチャ100は、コプロセッサ101に余力があればバックアップ・コプロセッサ101を停止させることができる。これにより、センサアーキテクチャ100は、各ドライバの実行を継続して動作させることができる。したがって、センサアーキテクチャ100は、信頼性を向上させつつ、消費電力を低減させることができる。
(処理時間、制約時間、実行開始時刻の記憶例)
つぎに、ドライバごとに記憶される通常処理にかかる処理時間と、CPU呼出処理にかかる制約時間と、実行開始時刻と、の記憶例について説明する。
つぎに、ドライバごとに記憶される通常処理にかかる処理時間と、CPU呼出処理にかかる制約時間と、実行開始時刻と、の記憶例について説明する。
図7は、ドライバの処理時間と制約時間と実行開始時刻の記憶例を示す説明図である。ドライバテーブル700は、コプロセッサ101ごとにローカルメモリ102に記憶されており、割り当てられたドライバに関するドライバ情報が記憶されている。図7では、ドライバテーブル700−1は、コプロセッサ101−1に割り当てられたドライバA、ドライバB、ドライバCについての情報が記述されている。ドライバテーブル700−2は、コプロセッサ101−2に割り当てられたドライバD、ドライバEについての情報が記述されている。
各ドライバテーブル700は、ドライバID、通常処理の処理時間、CPU呼出処理の処理時間、制約時間、実行開始時刻のフィールドを有している。ドライバIDは、複数のコプロセッサ101の実行対象となるドライバの識別子である。本実施の形態では、ドライバの識別子とセンサの識別子とを同一にしている。第1の処理時間は、各ドライバの通常処理にかかる処理時間である。第2の処理時間は、各ドライバのCPU呼出処理にかかる処理時間である。
上述したように、制約時間は、センサごとに定められたセンサのバッファからセンサによって検知されたデータの取得を行う一定の間隔である。実行開始時刻は、ドライバの実行開始時に記憶される時刻である。実行開始時刻のフィールドは、割当先のコプロセッサ101によって実行される都度、更新される。
ドライバテーブル700−1では、各フィールドに情報が設定されることにより、ドライバ情報(たとえば、701−1、701−2、701−3)がレコードとして記憶される。ドライバテーブル700−2では、各フィールドに情報が設定されることにより、ドライバ情報(たとえば、702−1、702−2)がレコードとして記憶される。
ドライバテーブル700に付された「−番号」は、ローカルメモリ102の「−番号」と同一であり、各ドライバテーブル700は、同一番号の付されたローカルメモリ102に記憶されていることとする。
各スケジューラ121は、他のコプロセッサ101に対して実行指示を行う場合に、実行指示の対象となるドライバのドライバ情報を実行指示に付与して通知する。そして、各コプロセッサ101は、実行指示後に、該実行指示の対象となるドライバの実行コードと共にドライバ情報を自ローカルメモリ102のドライバテーブル700から削除する。したがって、割り当て先のコプロセッサ101が、割り当てられたドライバの実行コード、ドライバ情報を有していればよいため、排他制御が不要となる。
(各センサの機能例)
図8は、センサの機能例を示す説明図である。たとえば、図8に示すセンサは、バッファ801と、制御部803と、センシング部802と、を有している。たとえば、図8に示すセンサはセンサAからセンサEである。たとえば、センシング部802は、センサxの機能に応じて検知処理を行う。たとえば、制御部803は、検知処理によって検知されたデータがバッファに記憶されたら、各コプロセッサ101に割り込み信号を出力する。ポーリング型のセンサの場合、制御部803は割り込み信号を出力しなくてもよい。たとえば、バッファ801が複数ある場合に、制御部803は、センシング部802によって検知されたデータを記憶させるバッファを切り替える機能を有していてもよい。
図8は、センサの機能例を示す説明図である。たとえば、図8に示すセンサは、バッファ801と、制御部803と、センシング部802と、を有している。たとえば、図8に示すセンサはセンサAからセンサEである。たとえば、センシング部802は、センサxの機能に応じて検知処理を行う。たとえば、制御部803は、検知処理によって検知されたデータがバッファに記憶されたら、各コプロセッサ101に割り込み信号を出力する。ポーリング型のセンサの場合、制御部803は割り込み信号を出力しなくてもよい。たとえば、バッファ801が複数ある場合に、制御部803は、センシング部802によって検知されたデータを記憶させるバッファを切り替える機能を有していてもよい。
温度センサを例に挙げると、温度センサのセンシング部は、たとえば、温度を検知する。そして、温度センサのセンシング部802は、たとえば、検知した温度を示すアナログのデータをデジタルのデータに変換してバッファ801に記憶する。
(各スケジューラの機能例)
図9は、各スケジューラの機能例を示すブロック図である。コプロセッサ101と、バックアップ・コプロセッサ101とによってスケジューラの機能が異なる。バックアップ用でないコプロセッサ101−iのスケジューラ121−iは、制御部901−iと、判断部920−iと、移管部903−iと、を有している。図3〜6の例では、iは1および2である。バックアップ・コプロセッサ101−jのスケジューラ121−jは、受付部951−jと、制御部952−jと、通知部953−jと、停止部954−jと、を有している。図3〜図6の例では、jは3である。
図9は、各スケジューラの機能例を示すブロック図である。コプロセッサ101と、バックアップ・コプロセッサ101とによってスケジューラの機能が異なる。バックアップ用でないコプロセッサ101−iのスケジューラ121−iは、制御部901−iと、判断部920−iと、移管部903−iと、を有している。図3〜6の例では、iは1および2である。バックアップ・コプロセッサ101−jのスケジューラ121−jは、受付部951−jと、制御部952−jと、通知部953−jと、停止部954−jと、を有している。図3〜図6の例では、jは3である。
制御部901−iから移管部903−iの処理は、たとえば、ローカルメモリ102−iまたはストレージ106などの記憶装置に記憶されたスケジューラ121−iにコーディングされている。コプロセッサ101−iが該スケジューラ121−iを記憶装置からロードし、スケジューラ121−iにコーディングされた処理を実行することにより、制御部901−iから移管部903−iの機能が実現される。
受付部951−jから停止部954−jの処理は、たとえば、ローカルメモリ102−jまたはストレージ106などの記憶装置に記憶されたスケジューラ121−jにコーディングされている。コプロセッサ101−jが該スケジューラ121−jを記憶装置からロードし、スケジューラ121−jにコーディングされた処理を実行することにより、受付部951−jから停止部954−jの機能が実現される。
各機能部の処理結果は、たとえば、それぞれのローカルメモリ102の作業領域に記憶される。以降の説明において、各機能部に付された“−番号”はコプロセッサ101に付された番号に対応しており、各コプロセッサ101のスケジューラの機能部であることを示している。
たとえば、制御部901−iは、割り当てられたセンサのドライバの実行を制御する。具体的には、制御部901−iは、選択部911−iと、格納部912−iと、実行部913−iと、検出部914−iと、を有している。たとえば、選択部911−iは、センサアーキテクチャ100の起動後に、予め割り当てられたセンサのドライバをすべてディスパッチループ131−iに入れて、ディスパッチループ131−iから順にドライバを選択する。
たとえば、格納部912−iは、ローカルメモリ102−iに記憶されたドライバテーブル700−iから、選択部911−iによって選択されたドライバの識別情報に基づいて選択されたドライバに対応するドライバ情報を検索する。たとえば、格納部912−iは、コプロセッサ101−iが有するタイマから現時刻を取得する。たとえば、格納部912−iは、検索されたドライバ情報の実行開始時刻のフィールドに取得した現時刻を格納する。
そして、たとえば、実行部913−iは、選択されたドライバの実行を開始する。たとえば、検出部914−iは、選択されたドライバの通常処理を実行中に、特定の条件を満たすか否かを検出する。特定の条件とは、CPU呼出処理が実行される条件でありドライバごとに定められている。
たとえば、判断部902−iは、検出部914−iによって特定の条件を満たすことが検出された場合、実行中のドライバのCPU呼出処理が実行されても、ディスパッチループ131−iに登録されたドライバの制約を遵守できるか否かを判断する。具体的には、判断部902−iは、算出部921−iと、判断部922−iと、を有している。
たとえば、算出部921−iは、ドライバテーブル700−iから、ディスパッチループ131−iに登録されたドライバのうち、実行中のドライバを除く残余のドライバごとに実行開始時刻を取得する。そして、たとえば、算出部921−iは、現時刻を取得する。算出部921−iは、残余のドライバごとに実行開始時刻と現時刻との差分値を算出する。
つぎに、たとえば、算出部921−iは、ドライバテーブル700−iから、残余のドライバの通常処理にかかる処理時間と、実行中のドライバのCPU呼出処理にかかる処理時間と、を取得する。上述したように、通常処理にかかる処理時間は、ドライバテーブル700−iの第1の処理時間のフィールドに登録され、CPU呼出処理にかかる処理時間は、ドライバテーブル700−iの第2の処理時間のフィールドに登録されている。算出部921−iは、残余のドライバごとの差分値に、取得した実行中のドライバのCPU呼出処理にかかる処理時間を加える。そして、算出部921−iは、残余のドライバごとの加算結果にディスパッチループ131−iに登録された順に基づいて残余のドライバの通常処理にかかる処理時間を加える。これにより、残余のドライバごとに残余のドライバが最後に実行された実行開始時刻からつぎに実行されると予測される実行開始時刻までの時間が算出される。
そして、判断部922−iは、残余のドライバごとに算出部921−iによって算出された時間がローカルメモリ102−iに記憶された残余のドライバの制約時間を遵守するか否かを判断する。具体的には、たとえば、判断部922−iは、ドライバテーブル700−iから、残余のドライバごとに残余のドライバの制約時間を取得する。そして、たとえば、判断部922−iは、残余のドライバごとに算出部921−iによって算出された時間が取得した制約時間以下であるか否かを判断する。残余のドライバごとに算出された時間が取得した制約時間以下である場合、判断部922−iは、制約時間を遵守していると判断する。一方、残余のドライバごとに算出された時間が取得した制約時間以下でない場合、判断部922−iは、制約時間を遵守していないと判断する。
移管部903−iは、判断部922−iによって制約時間を遵守しないと判断されたドライバの実行依頼を、複数のコプロセッサ101のうち他のコプロセッサ101に通知する。具体的には、たとえば、移管部903−iは、通知部931−iと、受付部932−iと、を有している。
たとえば、通知部931−iは、該実行依頼をコプロセッサ101に通知する。上述したように、たとえば、実行依頼には、依頼対象となるドライバの実行コードと、ドライバのドライバ情報と、が付されている。そして、受付部932−iは、該コプロセッサ101からの実行受託または実行不可の通知を受け付ける。通知部931は、受付部932によって実行受託が受け付けられた場合、実行受託の通知元のコプロセッサ101に対して、実行指示を通知する。
一方、通知部931−iは、受付部932−iによって実行不可が受け付けられた場合、バックアップ・コプロセッサ101を起動させる。バックアップ・コプロセッサ101の起動後に、通知部931−iは、制約時間を遵守しないと判断されたドライバの実行指示をバックアップ・コプロセッサ101に通知する。
実行指示の対象となるドライバの実行コードおよびドライバ情報は実行指示の通知先のローカルメモリ102に格納されるため、ドライバの移管完了後に、通知部931−iは、該ドライバの実行コードおよびドライバ情報をローカルメモリ700−iから削除する。これにより、各ドライバの実行コードおよびドライバ情報は、コプロセッサ101と起動中のバックアップ・コプロセッサ101のうちのいずれか一つのコプロセッサ101のローカルメモリ102に格納される。したがって、コプロセッサ101および起動中のバックアップ・コプロセッサ間で排他制御が行わなくても、ドライバの実行を継続させることができる。さらに、通知部931−iは、ドライバの移管完了後に、ディスパッチループ131−iから移管されたドライバを削除する。
また、受付部932−iは、他のコプロセッサ101からの実行依頼を受け付ける。そして、判断部902−iは、受付部932−iによって他のコプロセッサ101からの実行依頼を受け付けられた場合、実行依頼の対象となるドライバと、割り当てられたドライバと、のすべての制約を遵守できるか否かを判断する。
具体的には、たとえば、算出部921−iは、実行依頼の対象となるドライバの通常処理にかかる処理時間と、割り当てられたドライバの通常処理にかかる処理時間と、の合計値を算出する。判断部902−iは、合計値が各ドライバの制約時間以下であるか否かを判断する。これにより、実行依頼の対象となるドライバと割り当てられたドライバとの制約時間を遵守できるか否かが判断される。
そして、判断部902−iによって実行依頼の対象となるドライバと割り当てられたドライバとの制約が遵守されると判断された場合、通知部931−iは、実行依頼の通知元に実行受託を通知する。一方、判断部902−iによって実行依頼の対象となるドライバと割り当てられたドライバとの制約のうちいずれかの制約が遵守されないと判断された場合、通知部931−iは、実行依頼の通知元に実行不可を通知する。具体的に、通知部931−iは、IPCによって通知する。
つぎに、バックアップ・コプロセッサ101−jが実行するスケジューラ121−jの機能について説明する。コプロセッサ101−iがバックアップ・コプロセッサ101−jを起動させる。受付部951−jは、コプロセッサ101−iから実行指示を受け付ける。上述したように、たとえば、実行指示には、依頼対象となるドライバの実行コードと、ドライバのドライバ情報と、が付されている。受付部951−jは、受け付けた実行指示に含まれるドライバ情報および実行コードをローカルメモリ102−jに格納する。
そして、制御部952−jは、実行指示を受け付けると、実行指示の対象となるドライバをディスパッチループ131に登録する。制御部952−jは、ディスパッチループ131−j内のドライバを順に繰り返して実行する。
具体的には、たとえば、制御部952−jは、選択部961−jと、格納部962−jと、実行部963−jと、を有している。選択部961−jは、ディスパッチループ131−j内のドライバを順に選択する。格納部962−jは、選択部961−jによってあらたにドライバが選択されると、現時刻を取得する。格納部962−jは、ドライバテーブル700の実行開始時刻のフィールドに取得した時刻を格納する。実行部963−jは、選択されたドライバを実行する。
さらに、通知部953−jは、受付部951−jによって実行受託を受け付けるまで、一定時間ごとにバックアップ・コプロセッサ101でないコプロセッサ101に対して割り当てられたドライバの実行依頼を通知する。一定時間については、たとえば、センサアーキテクチャ100の設計者が定めてもよいし、バックアップ・コプロセッサ101が有するタイマによるタイマ割り込みのタイミングであってもよい。
そして、通知部953−jは、受付部951−jによって実行受託を受け付けると、実行受託の通知元に実行指示をIPCにより通知する。停止部954−jは、ディスパッチループ131が空の場合、電源を落とすことにより停止する。具体的には、たとえば、停止部954−jは、電源供給回路103にバックアップ・コプロセッサ101−jに供給する電源を0[V]に設定する指示を通知してもよい。
(スケジューラ121−iが行う処理手順)
図10および図11は、スケジューラ121−iが行う処理手順を示すフローチャートである。スケジューラ121−iは、コプロセッサ101−iが実行する。コプロセッサ101−iには、センサアーキテクチャ100の設計者によって予めドライバが割り当てられている。スケジューラ121−iは、初期化を行う(ステップS1001)。つぎに、スケジューラ121−iは、ディスパッチループ131−iから順にドライバを選択する(ステップS1002)。ここでは、選択されたドライバを選択ドライバと称する。
図10および図11は、スケジューラ121−iが行う処理手順を示すフローチャートである。スケジューラ121−iは、コプロセッサ101−iが実行する。コプロセッサ101−iには、センサアーキテクチャ100の設計者によって予めドライバが割り当てられている。スケジューラ121−iは、初期化を行う(ステップS1001)。つぎに、スケジューラ121−iは、ディスパッチループ131−iから順にドライバを選択する(ステップS1002)。ここでは、選択されたドライバを選択ドライバと称する。
そして、スケジューラ121−iは、タイマから現時刻を取得し(ステップS1003)、取得された現時刻と選択ドライバとを関連付けてローカルメモリ102−iに出力する(ステップS1004)。スケジューラ121−iは、選択ドライバを実行する(ステップS1005)。
つぎに、スケジューラ121−iは、CPU呼出処理が行われるか否かを判断する(ステップS1006)。上述したように、温度センサのドライバであれば、検知された温度が閾値以上、閾値未満であると判断された場合、CPU呼出処理があらたに行われると判断される。ここでは、ステップS1006において、CPU呼出処理が行われる条件を満たしたことが検出されると、CPU呼出処理が行われると判断される。そのため、CPU呼出処理が実行中の場合にはCPU呼出処理が行われると判断されない。
CPU呼出処理が行われない場合(ステップS1006:No)、スケジューラ121−iは、選択ドライバの実行が終了したか否かを判断する(ステップS1007)。選択ドライバの実行が終了していない場合(ステップS1007:No)、ステップS1006へ戻る。選択ドライバの実行が終了した場合(ステップS1007:Yes)、スケジューラ121−iは、選択ドライバをディスパッチループ131の最後尾に登録し(ステップS1008)、ステップS1002へ戻る。
ステップS1006において、CPU呼出処理が行われる場合(ステップS1006:Yes)、ステップS1009へ移行する。そして、スケジューラ121−iは、ディスパッチループ131内のドライバの通常処理にかかる処理時間と、選択ドライバのCPU呼出処理にかかる処理時間と、各ドライバの制約時間と、をローカルメモリ102−iから取得する(ステップS1009)。
つぎに、スケジューラ121−iは、ディスパッチループ131内のドライバの各々について、取得した情報に基づき、記憶された実行開始時刻からつぎの実行開始時刻までの時間を算出する(ステップS1010)。スケジューラ121−iは、各ドライバの制約を遵守できるか否かを判断する(ステップS1011)。
各ドライバの制約が遵守される場合(ステップS1011:Yes)、ステップS1007へ戻る。各ドライバの制約時間が遵守されない場合(ステップS1011:No)、スケジューラ121−iは、制約時間を遵守できないと判断されたドライバの実行依頼を他のコプロセッサ101に通知する(ステップS1012)。
スケジューラ121−iは、応答を受け付けたか否かを判断する(ステップS1013)。応答が受け付けられていない場合(ステップS1013:No)、ステップS1013へ戻る。応答が受け付けられた場合(ステップS1013:Yes)、スケジューラ121−iは、応答が実行受託通知であるか否かを判断する(ステップS1014)。
応答が実行受託通知の場合(ステップS1014:Yes)、スケジューラ121−iは、受託通知の通知元にIPCによりドライバを送信し(ステップS1015)、ステップS1007へ戻る。応答が実行受託通知でない場合(ステップS1014:No)、スケジューラ121−iは、バックアップ・コプロセッサ101−jを起動させる(ステップS1016)。そして、スケジューラ121−iは、バックアップ・コプロセッサ101−jにIPCによりドライバを送信し(ステップS1017)、ステップS1007へ戻る。
(スケジューラ121−iが行う処理手順)
図12は、スケジューラ121−iが行う実行依頼または実行指示を受付時の処理手順を示すフローチャートである。スケジューラ121−iは、実行依頼または実行指示を受け付けたか否かを判断する(ステップS1201)。実行依頼および実行指示が受け付けられていない場合(ステップS1201:No)、ステップS1201へ戻る。実行依頼が受け付けられた場合(ステップS1201:実行依頼)、スケジューラ121−iは、実行依頼の対象となるドライバの通常処理にかかる処理時間と、割り当てられたドライバの通常処理にかかる処理時間と、の合計値を算出する(ステップS1202)。
図12は、スケジューラ121−iが行う実行依頼または実行指示を受付時の処理手順を示すフローチャートである。スケジューラ121−iは、実行依頼または実行指示を受け付けたか否かを判断する(ステップS1201)。実行依頼および実行指示が受け付けられていない場合(ステップS1201:No)、ステップS1201へ戻る。実行依頼が受け付けられた場合(ステップS1201:実行依頼)、スケジューラ121−iは、実行依頼の対象となるドライバの通常処理にかかる処理時間と、割り当てられたドライバの通常処理にかかる処理時間と、の合計値を算出する(ステップS1202)。
そして、スケジューラ121−iは、合計値が、実行依頼の対象となるドライバの制約時間および割り当てられたドライバの制約時間以下であるか否かを判断することにより、制約が遵守されるか否かを判断する(ステップS1203)。
制約が遵守されない場合(ステップS1203:No)、スケジューラ121−iは、実行不可を実行依頼の通知元に通知し(ステップS1204)、ステップS1201へ戻る。一方、制約が遵守される場合(ステップS1203:Yes)、スケジューラ121−iは、実行受託を実行依頼の通知元に通知し(ステップS1205)、ステップS1201へ戻る。
実行指示が受け付けられた場合(ステップS1201:実行指示)、スケジューラ121−iは、実行指示の対象となるドライバをディスパッチループ131に登録し(ステップS1206)、ステップS1201へ戻る。
(スケジューラ121−jが行う処理手順)
図13は、スケジューラ121−jが行う実行依頼を受付時の処理手順を示すフローチャートである。スケジューラ121−jは、バックアップ・コプロセッサ101−jが実行する。バックアップ・コプロセッサ101−jには、センサアーキテクチャ100の設計者によって予めドライバが割り当てられていない。まず、スケジューラ121−jは、実行指示を受け付けたか否かを判断する(ステップS1301)。実行指示が受け付けられていない場合(ステップS1301:No)、ステップS1304へ移行する。
図13は、スケジューラ121−jが行う実行依頼を受付時の処理手順を示すフローチャートである。スケジューラ121−jは、バックアップ・コプロセッサ101−jが実行する。バックアップ・コプロセッサ101−jには、センサアーキテクチャ100の設計者によって予めドライバが割り当てられていない。まず、スケジューラ121−jは、実行指示を受け付けたか否かを判断する(ステップS1301)。実行指示が受け付けられていない場合(ステップS1301:No)、ステップS1304へ移行する。
実行指示が受け付けられた場合(ステップS1301:Yes)、スケジューラ121−jは、実行指示の対象となるドライバをディスパッチループ131に登録する(ステップS1302)。そして、スケジューラ121−jは、ディスパッチループ131内のドライバを順に実行する(ステップS1303)。
スケジューラ121−jは、一定時間経過したか否かを判断する(ステップS1304)。一定時間経過していない場合(ステップS1304:No)、ステップS1301へ戻る。一方、一定時間経過した場合(ステップS1304:Yes)、スケジューラ121−jは、ディスパッチループ131内のドライバの実行依頼を通知する(ステップS1305)。たとえば、ディスパッチループ131内のドライバが複数ある場合、スケジューラ121−jは、ディスパッチループ131内からドライバを一つ選択し、選択したドライバについて実行依頼を通知してもよい。
つぎに、スケジューラ121−jは、実行受託を受け付けたか否かを判断する(ステップS1306)。実行受託が受け付けられない場合(ステップS1306:No)、ステップS1304へ戻る。一方、実行受託が受け付けられた場合(ステップS1306:Yes)、スケジューラ121−jは、受託通知の通知元にIPCによりドライバを送信する(ステップS1307)。たとえば、スケジューラ121−jは、実行受託の応答が最も速いコプロセッサ101にドライバを送信してもよい。
スケジューラ121−jは、ディスパッチループ131が空か否かを判断する(ステップS1308)。ディスパッチループ131が空である場合(ステップS1308:Yes)、スケジューラ121−jは、電源供給回路103にスケジューラ121−jへの電源供給を停止させることにより、停止する(ステップS1309)。一方、ディスパッチループ131が空でない場合(ステップS1308:No)、ステップS1304へ戻る。
以上説明したように、コプロセッサは、各ドライバが通常処理を行えば制約を遵守するが、一のドライバがCPU呼出処理を行うと他のドライバの制約を遵守しない場合、他のドライバを他のコプロセッサに実行させる。これにより、センサアーキテクチャは、排他制御、分散処理を行わなくても、センサのドライバを継続して実行させることができる。したがって、センサアーキテクチャは、信頼性を向上させることができる。
また、コプロセッサは最大負荷の場合にすべてのセンサの制約を守るに足る数だけ準備される。運用開始時のドライバは、センサアーキテクチャの設計者によってドライバ実行の負荷が最少の場合を仮定してすべてのセンサの制約が守れる最少のコプロセッサ数に配置される。そして、運用開始時に割り当てがないコプロセッサは、バックアップ・コプロセッサとして停止させておく。これにより、検出装置は、余剰なコプロセッサを停止させることにより、消費電力を低減させることができる。
また、コプロセッサは、起動中のプロセッサだけではすべてのドライバの制約を遵守できない場合、バックアップ・コプロセッサを起動させ、ドライバを実行させる。これにより、すべてのドライバの制約を遵守させることができる。これにより、センサアーキテクチャは、センサのドライバを継続して実行させることができる。したがって、センサアーキテクチャは、信頼性を向上させることができる。
また、バックアップ・コプロセッサは、コプロセッサの能力に余剰があれば、割り当てられたドライバをコプロセッサに実行させ、自バックアップ・コプロセッサを停止する。これにより、消費電力を低減させることができる。
なお、本実施の形態で説明した通知方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通知プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通知プログラムは、インターネット等のネットワークを介して配布してもよい。
100 センサアーキテクチャ
101−1〜101−n コプロセッサ
101−(n+1)〜101−m バックアップ・コプロセッサ
A〜E,x センサ
912−i 格納部
921−i 算出部
922−i 判断部
931−i 通知部
953−j 通知部
954−j 停止部
101−1〜101−n コプロセッサ
101−(n+1)〜101−m バックアップ・コプロセッサ
A〜E,x センサ
912−i 格納部
921−i 算出部
922−i 判断部
931−i 通知部
953−j 通知部
954−j 停止部
Claims (6)
- 複数のプロセッサを有し、前記複数のプロセッサのうちの特定のプロセッサが複数のセンサの各々に応じた処理を順に繰り返し実行する検出装置であって、
前記特定のプロセッサがアクセス可能である、前記各々に応じた処理に対応する第1の処理にかかる処理時間と、前記各々に応じた処理に対応する第2の処理にかかる処理時間と、前記各々に応じた処理に対応する制約時間と、を記憶する記憶部と、
前記特定のプロセッサによって、前記各々に応じた処理の実行切り替え時に、前記各々に応じた処理に対応した実行開始時刻を前記記憶部に格納する格納部と、
前記各々に応じた処理のうちの実行中の処理が前記第2の処理を行う場合に、前記特定のプロセッサによって、前記各々に応じた処理のうち前記実行中の処理を除いた残余の処理に対応した前記記憶部に記憶された実行開始時刻と前記実行中の処理が前記第2の処理を行う開始時刻との差分値に、前記実行中の処理の前記第2の処理にかかる処理時間と、前記残余の処理の前記第1の処理にかかる処理時間と、を前記各々に応じた処理の実行順序に基づいて加える算出部と、
前記特定のプロセッサによって、前記算出部によって前記残余の処理に対応して算出された時間が前記記憶部に記憶された前記残余の処理に対応する制約時間を遵守するか否かを判断する判断部と、
前記特定のプロセッサによって、前記判断部によって前記制約時間を遵守しないと判断された処理の実行依頼を、前記複数のプロセッサのうちの前記特定のプロセッサ以外の他のプロセッサに通知する通知部と、
を有することを特徴とする検出装置。 - 前記他のプロセッサは、前記複数のセンサのうちのいずれのセンサに応じた処理も割り当てられていない場合に、停止していることを特徴とする請求項1に記載の検出装置。
- 前記通知部は、
前記複数のプロセッサのうち起動中のいずれのプロセッサであっても前記制約時間を遵守しないと判断された処理を実行できない場合、前記特定のプロセッサによって、前記複数のプロセッサのうち、前記他のプロセッサを起動させ、起動後の前記他のプロセッサに前記制約時間を遵守しないと判断された処理の実行指示を通知することを特徴とする請求項2に記載の検出装置。 - 前記他のプロセッサによって、前記実行依頼が受け付けられた後、前記実行依頼の対象となる処理を実行中に、前記実行依頼の対象となる処理の実行依頼を前記特定のプロセッサに通知する通知部と、
前記特定のプロセッサが前記通知部により通知された実行依頼を受託した場合、前記他のプロセッサによって、前記他のプロセッサを停止する停止部と、
を有することを特徴とする請求項3に記載の検出装置。 - 複数のプロセッサのうち、複数のセンサの各々に応じた処理を順に繰り返し実行する特定のプロセッサが、
前記各々に応じた処理に対応する第1の処理にかかる処理時間と、前記各々に応じた処理に対応する第2の処理にかかる処理時間と、前記各々に応じた処理に対応する制約時間と、を記憶する記憶部に、前記各々に応じた処理の実行切り替え時に前記各々に応じた処理に対応した実行開始時刻を格納し、
前記各々に応じた処理のうちの実行中の処理が前記第2の処理を行う場合に、前記各々に応じた処理のうち前記実行中の処理を除いた残余の処理に対応した前記記憶部に記憶された実行開始時刻と、前記実行中の処理が前記第2の処理を行う開始時刻との差分値に、前記実行中の処理の前記第2の処理にかかる処理時間と、前記残余の処理の前記第1の処理にかかる処理時間と、を前記各々に応じた処理の実行順序に基づいて加え、
前記残余の処理に対応して算出された時間が、前記記憶部に記憶された前記残余の処理に対応する制約時間を遵守するか否かを判断し、
前記制約時間を遵守しないと判断された処理の実行依頼を、前記複数のプロセッサのうちの前記特定のプロセッサ以外の他のプロセッサに通知する、
処理を実行することを特徴とする通知方法。 - 複数のプロセッサのうち、複数のセンサの各々に応じた処理を順に繰り返し実行する特定のプロセッサに、
前記各々に応じた処理に対応する第1の処理にかかる処理時間と、前記各々に応じた処理に対応する第2の処理にかかる処理時間と、前記各々に応じた処理に対応する制約時間と、を記憶する記憶部に、前記各々に応じた処理の実行切り替え時に前記各々に応じた処理に対応した実行開始時刻を格納し、
前記各々に応じた処理のうちの実行中の処理が前記第2の処理を行う場合に、前記各々に応じた処理のうち前記実行中の処理を除いた残余の処理に対応した前記記憶部に記憶された実行開始時刻と、前記実行中の処理が前記第2の処理を行う開始時刻との差分値に、前記実行中の処理の前記第2の処理にかかる処理時間と、前記残余の処理の前記第1の処理にかかる処理時間と、を前記各々に応じた処理の実行順序に基づいて加え、
前記残余の処理に対応して算出された時間が、前記記憶部に記憶された前記残余の処理に対応する制約時間を遵守するか否かを判断し、
前記制約時間を遵守しないと判断された処理の実行依頼を、前記複数のプロセッサのうちの前記特定のプロセッサ以外の他のプロセッサに通知する、
処理を実行させることを特徴とする通知プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014505848A JP5773064B2 (ja) | 2012-03-19 | 2012-03-19 | 検出装置、通知方法、および通知プログラム |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014505848A JP5773064B2 (ja) | 2012-03-19 | 2012-03-19 | 検出装置、通知方法、および通知プログラム |
PCT/JP2012/057064 WO2013140517A1 (ja) | 2012-03-19 | 2012-03-19 | 検出装置、通知方法、および通知プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2013140517A1 JPWO2013140517A1 (ja) | 2015-08-03 |
JP5773064B2 true JP5773064B2 (ja) | 2015-09-02 |
Family
ID=49222011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014505848A Expired - Fee Related JP5773064B2 (ja) | 2012-03-19 | 2012-03-19 | 検出装置、通知方法、および通知プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US9465646B2 (ja) |
JP (1) | JP5773064B2 (ja) |
CN (1) | CN104169880B (ja) |
WO (1) | WO2013140517A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6365224B2 (ja) * | 2014-10-21 | 2018-08-01 | 富士通株式会社 | センシング制御プログラム及び携帯端末装置 |
JP7163002B2 (ja) * | 2016-05-25 | 2022-10-31 | キヤノン株式会社 | プロセッサに接続されるデバイスから通知される復帰時間に応じてプロセッサの省電力のレベルを決定する情報処理装置及びプロセッサの省電力方法 |
WO2020161788A1 (ja) * | 2019-02-05 | 2020-08-13 | 三菱電機株式会社 | 情報処理装置、情報処理システム、プログラム及び情報処理方法 |
JP7374588B2 (ja) * | 2019-02-06 | 2023-11-07 | キヤノン株式会社 | Pciデバイスに接続される省電力状態に移行可能なデバイスを備える電子機器およびその制御方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63223860A (ja) | 1987-03-12 | 1988-09-19 | Matsushita Electric Ind Co Ltd | 複数プロセツサ構成装置 |
JP3244982B2 (ja) * | 1995-01-30 | 2002-01-07 | 株式会社日立製作所 | 分散制御システム |
US6317774B1 (en) * | 1997-01-09 | 2001-11-13 | Microsoft Corporation | Providing predictable scheduling of programs using a repeating precomputed schedule |
US7165252B1 (en) * | 1999-06-21 | 2007-01-16 | Jia Xu | Method of scheduling executions of processes with various types of timing properties and constraints |
JP2002342098A (ja) | 2001-05-16 | 2002-11-29 | Mitsubishi Electric Corp | 管理装置、データ処理システム、管理方法及び管理方法をコンピュータに実行させるためのプログラム |
JP2002049405A (ja) | 2001-06-01 | 2002-02-15 | Hitachi Ltd | 分散制御装置、システム及びコントローラ |
JP4580845B2 (ja) * | 2005-08-24 | 2010-11-17 | パナソニック株式会社 | タスク実行装置 |
US8209682B2 (en) * | 2006-07-26 | 2012-06-26 | Hewlett-Packard Development Company, L.P. | System and method for controlling aggregate CPU usage by virtual machines and driver domains over a plurality of scheduling intervals |
JP2008140191A (ja) | 2006-12-01 | 2008-06-19 | Canon Inc | ファイルシステム |
US9189282B2 (en) * | 2009-04-21 | 2015-11-17 | Empire Technology Development Llc | Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter |
JP2011141782A (ja) * | 2010-01-08 | 2011-07-21 | Toyota Motor Corp | 情報処理装置、電子制御ユニット、タスク割り当て方法 |
EP2600245A4 (en) * | 2010-07-30 | 2013-11-06 | Fujitsu Ltd | MULTIKERNPROZESSORSYSTEM, ASSIGNMENT PROGRAM, CONTROL PROGRAM, ASSIGNMENT PROCEDURES AND CONTROL PROCEDURES |
-
2012
- 2012-03-19 JP JP2014505848A patent/JP5773064B2/ja not_active Expired - Fee Related
- 2012-03-19 WO PCT/JP2012/057064 patent/WO2013140517A1/ja active Application Filing
- 2012-03-19 CN CN201280071526.8A patent/CN104169880B/zh not_active Expired - Fee Related
-
2014
- 2014-09-04 US US14/477,667 patent/US9465646B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN104169880A (zh) | 2014-11-26 |
WO2013140517A1 (ja) | 2013-09-26 |
CN104169880B (zh) | 2017-08-22 |
US9465646B2 (en) | 2016-10-11 |
US20140380333A1 (en) | 2014-12-25 |
JPWO2013140517A1 (ja) | 2015-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101561496B1 (ko) | 이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링 | |
KR100880470B1 (ko) | 스레드 라이브록 유닛 | |
KR101518440B1 (ko) | 프로세싱 노드의 동적 성능 제어 | |
US8935698B2 (en) | Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors | |
US20160224351A1 (en) | Processor with hybrid pipeline capable of operating in out-of-order and in-order modes | |
KR101834195B1 (ko) | 다중코어 시스템 및 로드 밸런싱 방법 | |
JP4982578B2 (ja) | リソース割当装置、リソース割当方法、およびリソース割当制御プログラム | |
CN105765541B (zh) | 用于机动车的控制器 | |
US9436464B2 (en) | Instruction-issuance controlling device and instruction-issuance controlling method | |
JP5773064B2 (ja) | 検出装置、通知方法、および通知プログラム | |
US9035956B1 (en) | Graphics power control with efficient power usage during stop | |
KR20130061747A (ko) | 코어 마다의 전압 및 주파수 제어 제공 | |
US8898390B2 (en) | Scheduling workloads based on cache asymmetry | |
Qian et al. | Jade: Reducing energy consumption of android app | |
JP5345990B2 (ja) | 特定のプロセスを短時間で処理する方法およびコンピュータ | |
JPWO2013140518A1 (ja) | スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法 | |
JP2019527867A (ja) | モバイルデバイス上でのエネルギー効率のためのウェイクロックアウェアシステム全体のジョブスケジューリング | |
JP6666555B2 (ja) | 情報処理装置、ジョブ投入方法、およびジョブ投入プログラム | |
JPWO2011155047A1 (ja) | マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム | |
CN113157043B (zh) | 基于强化学习的异构多核处理器动态电压调节方法及系统 | |
US20180217875A1 (en) | Data processing system and data processing method | |
KR20210013707A (ko) | 메타데이터를 사용하여 신경망에서 기회주의적 로드 밸런싱을 위한 방법 및 시스템 | |
KR101892273B1 (ko) | 스레드 프로그레스 트래킹 방법 및 장치 | |
WO2012147168A1 (ja) | システム、および検出方法 | |
JP2004192052A (ja) | ソフトウェア処理方法およびソフトウェア処理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20150602 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150615 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5773064 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |