(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024074607
(43)【公開日】2024-05-31
(54)【発明の名称】故障動作制御システム、故障動作制御方法、非一時的コンピュータ可読媒体
(51)【国際特許分類】
G06F 11/07 20060101AFI20240524BHJP
【FI】
G06F11/07 193
【審査請求】未請求
【請求項の数】17
【出願形態】OL
(21)【出願番号】P 2022185885
(22)【出願日】2022-11-21
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】神田 健太
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA11
5B042JJ29
5B042KK17
5B042MA08
5B042MC22
(57)【要約】
【課題】マルチデバイスに適した故障動作制御システムなどを提供する。
【解決手段】
デバイス状態監視部111Aは、通常動作時において、第1デバイスの資源の使用に関する状態を監視し、監視情報を記憶する。デバイス状態監視部111Bは、第2デバイス10Bの状態を監視し、監視情報を記憶する。第2デバイス10Bで故障が発生したことが検出された場合、比較部112Aは、記憶された監視情報に基づき、第2デバイスで故障の発生前に実行していたタスクが使用する第2デバイスのハードウェア資源情報と、第1デバイスの資源情報を比較して差分情報を算出する。処理決定部113Aは、算出した差分情報に応じて、故障動作に対する対策方法を決定し、実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1プロセッサおよび、前記第1プロセッサによって実行されるように構成された命令を記憶する第1メモリ、を含む第1デバイスと、
前記第1プロセッサとは異なる第2プロセッサおよび、第2プロセッサによって実行されるように構成された命令を記憶する第2メモリ、を含む第2デバイスと、
を備えるマルチデバイスにおける故障動作制御システムであって、
前記命令は、
通常動作時において、前記第1プロセッサは、前記第1デバイスの資源の使用に関する状態を監視し、監視情報を記憶領域に記憶させ、
前記第2プロセッサは、前記第2デバイスの状態を監視し、監視情報を記憶領域に記憶させ、
前記第2デバイスで故障が発生したことが検出された場合、前記第1プロセッサは、記憶された監視情報に基づき、前記第2デバイスで前記故障の発生前に実行していたタスクが使用する前記第2デバイスのハードウェア資源情報と、前記第1デバイスの資源情報を比較して差分情報を算出し、
算出した前記差分情報に応じて、故障動作に対する対策方法を決定し、実行することを含む、故障動作制御システム。
【請求項2】
前記第1プロセッサと前記第2プロセッサは、ヘテロジニアス構成である、請求項1に記載の故障動作制御システム。
【請求項3】
前記マルチデバイスは、更に、前記第1プロセッサとは異なる第3プロセッサと、第3プロセッサによって実行されるように構成された命令を記憶する第3メモリと、を含む第3デバイスと、
を備え、
前記故障動作に対する対策方法は、前記第1デバイスと前記第2デバイスとの仕様差分及び前記第1デバイスと前記第3デバイスとの仕様差分それぞれに対応してデータベースに記憶されている、請求項1に記載の故障動作制御システム。
【請求項4】
前記故障動作に対する対策方法は、前記第1デバイス及び前記第2デバイスで実行していたタスクごとにデータベースに記憶されている、請求項1に記載の故障動作制御システム。
【請求項5】
前記命令は、前記第2デバイスで実行するタスクのオフロード先を前記第1デバイスに変更し、前記第2デバイスで実行する前記タスクの優先度に基づいて、前記第1デバイスにオフロードすることを更に含む、請求項1に記載の故障動作制御システム。
【請求項6】
前記マルチデバイスは、更に、前記第1プロセッサとは異なる第3プロセッサと、第3プロセッサによって実行されるように構成された命令を記憶する第3メモリと、を含む第3デバイスと、
を備え、
前記命令は、算出された前記差分情報から、差分のないデバイスが前記第1デバイス及び前記第3デバイスであると判定された場合、前記命令は、最も負荷の低いデバイスを代替デバイスとして選択し、前記第2デバイスのタスクをオフロードすることを更に含む、
請求項1に記載の故障動作制御システム。
【請求項7】
前記故障動作に対する対策方法は、システムを安全に止めるためのフェールセーフ処理を含む、請求項1に記載の故障動作制御システム。
【請求項8】
前記命令は、
故障を検出した直後に、前記第1プロセッサは、第2デバイスのRTOS管理情報から、第2デバイスで実行するタスクのReady-to-Run許容時間と、タスク実行の許容時間と、タスクの状態を取得し、タスクがReady状態の場合に、前記第1プロセッサは、前記第2デバイスで実行するタスクのReady-to-Run許容時間をタイマに設定し、前記タスクがRunning状態の場合は、前記第1プロセッサは、前記第2デバイスで実行するタスク実行の許容時間をタイマに設定することを更に含む、請求項1に記載の故障動作制御システム。
【請求項9】
前記命令は、前記第1プロセッサは、代替先の候補となるデバイスの識別情報を取得した後に、タスクのReady-to-Run時間の許容時間から、最も適切な負荷状態のデバイスをタスク割当先候補に選定することを更に含む、請求項8に記載の故障動作制御システム。
【請求項10】
第1プロセッサおよび第1メモリを含む第1デバイスと、前記第1プロセッサとは異なる第2プロセッサおよび第2メモリを含む第2デバイスと、を備えるマルチデバイスにおける故障動作制御方法であって、
通常動作時において、前記第1プロセッサは、前記第1デバイスの資源の使用に関する状態を監視し、監視情報を記憶領域に記憶させ、
前記第2プロセッサは、前記第2デバイスの状態を監視し、監視情報を記憶領域に記憶させ、
前記第2デバイスで故障が発生したことが検出された場合、前記第1プロセッサは、記憶された監視情報に基づき、前記第2デバイスで前記故障の発生前に実行していたタスクが使用する前記第2デバイスのハードウェア資源情報と、前記第1デバイスの資源情報を比較して差分情報を算出し、
算出した前記差分情報に応じて、故障動作に対する対策方法を決定し、実行する、
故障動作制御方法。
【請求項11】
前記マルチデバイスは、更に、前記第1プロセッサとは異なる第3プロセッサと、第3プロセッサによって実行されるように構成された命令を記憶する第3メモリと、を含む第3デバイスと、
を備え、
前記故障動作に対する対策方法は、前記第1デバイスと前記第2デバイスとの仕様差分及び前記第1デバイスと前記第3デバイスとの仕様差分それぞれに対応してデータベースに記憶されている、請求項10に記載の故障動作制御方法。
【請求項12】
前記故障動作に対する対策方法は、前記第1デバイス及び前記第2デバイスで実行していたタスクごとにデータベースに記憶されている、請求項10に記載の故障動作制御方法。
【請求項13】
故障を検出した直後に、前記第1プロセッサは、第2デバイスのRTOS管理情報から、第2デバイスで実行するタスクのReady-to-Run許容時間と、タスク実行の許容時間と、タスクの状態を取得し、タスクがReady状態の場合に、前記第1プロセッサは、前記第2デバイスで実行するタスクのReady-to-Run許容時間をタイマに設定し、前記タスクがRunning状態の場合は、前記第1プロセッサは、前記第2デバイスで実行するタスク実行の許容時間をタイマに設定することを更に含む、請求項10に記載の故障動作制御方法。
【請求項14】
第1プロセッサおよび第1メモリを含む第1デバイスと、前記第1プロセッサとは異なる第2プロセッサおよび第2メモリを含む第2デバイスと、を備えるマルチデバイスにおける故障動作制御方法をコンピュータに実行させるプログラムを記憶する非一時的コンピュータ可読媒体であって、前記故障動作制御方法は、
通常動作時において、前記第1プロセッサは、前記第1デバイスの資源の使用に関する状態を監視し、監視情報を記憶領域に記憶させ、
前記第2プロセッサは、前記第2デバイスの状態を監視し、監視情報を記憶領域に記憶させ、
前記第2デバイスで故障が発生したことが検出された場合、前記第1プロセッサは、記憶された監視情報に基づき、前記第2デバイスで前記故障の発生前に実行していたタスクが使用する前記第2デバイスのハードウェア資源情報と、前記第1デバイスの資源情報を比較して差分情報を算出し、
算出した前記差分情報に応じて、故障動作に対する対策方法を決定し、実行する、
非一時的コンピュータ可読媒体。
【請求項15】
前記マルチデバイスは、更に、前記第1プロセッサとは異なる第3プロセッサと、第3プロセッサによって実行されるように構成された命令を記憶する第3メモリと、を含む第3デバイスと、
を備え、
前記故障動作に対する対策方法は、前記第1デバイスと前記第2デバイスとの仕様差分及び前記第1デバイスと前記第3デバイスとの仕様差分それぞれに対応してデータベースに記憶されている、請求項14に記載の非一時的コンピュータ可読媒体。
【請求項16】
前記故障動作に対する対策方法は、前記第1デバイス及び前記第2デバイスで実行していたタスクごとにデータベースに記憶されている、請求項14に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記故障動作制御方法は、
故障を検出した直後に、前記第1プロセッサは、第2デバイスのRTOS管理情報から、第2デバイスで実行するタスクのReady-to-Run許容時間と、タスク実行の許容時間と、タスクの状態を取得し、タスクがReady状態の場合に、前記第1プロセッサは、前記第2デバイスで実行するタスクのReady-to-Run許容時間をタイマに設定し、前記タスクがRunning状態の場合は、前記第1プロセッサは、前記第2デバイスで実行するタスク実行の許容時間をタイマに設定することを更に含む、請求項14に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、故障動作制御システム、故障動作制御方法、非一時的コンピュータ可読媒体に関する。
【背景技術】
【0002】
車載システムでは、自動運転Lv2からLv4まで対応するために、車載システムの柔軟な拡張性、及び最大で700TOPSにも及ぶ高速な処理性能が求められる。これらの要求を満たすためには、シングルデバイスの性能改善のみでは不十分である。従来はシングルデバイス構成で閉じていたソフトウェア(SW)の動的な性能最適化を、マルチデバイス構成まで拡張する必要がある。
【0003】
特許文献1は、複数の処理部の異常を検出して異常検出信号を生成する複数の異常検出回路と、複数の異常検出回路のいずれかからの異常検出信号に応答して、複数の処理部のうちの、異常状態にある異常処理部以外の少なくとも1つの正常処理部を、異常救済処理を実行するように制御する異常監視制御部を開示する。これにより、複数の処理部のうち1つが動作不能になったとしても、その処理部で行われるべき処理が他の処理部により実行されることができる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
マルチデバイス構成の動的なソフトウェアSW性能最適化を行うためのフレームワークとして、マルチデバイスフレームワークが提唱されている。マルチデバイスフレームワークは、車載システムに搭載されるヘテロジニアスなマルチデバイス間の動的な負荷分散を行うことで、車載システムの性能を最大限に引き出すための最適化を行うことを目的としたSWのフレームワークである。
【0006】
一方、従来の車載システムの安全性を担保するための仕組みは、マルチデバイスフレームワークが搭載された車載システムでも同様に担保する必要がある。そのための仕組みとして、あるデバイスが故障した場合に、故障先で処理していたタスクを別のデバイスに割り振ることで故障を隠蔽する(フェールソフト)、又は安全に動作を停止する(フェールセーフ)フェール動作機構をマルチデバイスフレームワークに実装する必要がある。
【0007】
従来の一般的な負荷分散システムにおけるフェール動作機構は、ホモジニアスなマルチデバイス構成であり、かつバックアップ用のデバイスが存在することを前提としたフェールソフトとなっている。
【0008】
このため、ヘテロジニアス構成の車載システムに故障が発生した場合においては、車載システムの持続性を高めることができないという問題がある。
【0009】
本開示は、このような問題点を解決するためになされたものであり、マルチデバイスに適した故障動作制御システム、故障動作制御方法などを提供することを目的とする。
【0010】
その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0011】
一実施の形態にかかる故障動作制御システムは、マルチデバイスからなるシステムである。具体的には、故障動作制御システムは、第1プロセッサと、第1プロセッサによって実行されるように構成された命令を記憶する第1メモリと、を含む第1デバイスと、第1プロセッサとは異なる第2プロセッサと、第2プロセッサによって実行されるように構成された命令を記憶する第2メモリと、を含む第2デバイスと、を備える。通常動作時において、第1プロセッサは、第1デバイスの資源の使用に関する状態を監視し、監視情報を記憶領域に記憶させ、第2プロセッサは、第2デバイスの状態を監視し、記憶領域に監視情報を記憶させる。第2デバイスで故障が発生したことが検出された場合、第1プロセッサは、記憶された監視情報に基づき、第2デバイスで故障の発生前に実行していたタスクが使用する第2デバイスのハードウェア資源情報と、第1デバイスの資源情報を比較して差分情報を算出し、算出した差分情報に応じて、故障動作に対する対策方法を決定し、実行することを含む。
【0012】
一実施の形態にかかる故障動作制御方法は、第1プロセッサおよび第1メモリを含む第1デバイスと、第1プロセッサとは異なる第2プロセッサおよび第2メモリを含む第2デバイスと、を備えるマルチデバイスにおける故障動作制御方法である。通常動作時において、第1プロセッサは、第1デバイスの資源の使用に関する状態を監視し、監視情報を記憶領域に記憶させ、第2プロセッサは、第2デバイスの状態を監視し、監視情報を記憶領域に記憶させる。第2デバイスで故障が発生したことが検出された場合、第1プロセッサは、記憶された監視情報に基づき、第2デバイスで故障の発生前に実行していたタスクが使用する第2デバイスのハードウェア資源情報と、第1デバイスの資源情報を比較して差分情報を算出し、算出した差分情報に応じて、故障動作に対する対策方法を決定し、実行する。
【0013】
一実施の形態にかかる非一時的コンピュータ可読媒体は、第1プロセッサおよび第1メモリを含む第1デバイスと、第1プロセッサとは異なる第2プロセッサおよび第2メモリ、を含む第2デバイスと、を備えるマルチデバイスにおける上述した故障動作制御方法をコンピュータに実行させるプログラムを記憶する非一時的コンピュータ可読媒体である。
【発明の効果】
【0014】
一実施の形態によれば、マルチデバイスに適した故障動作制御システム、故障動作制御方法などを提供することができる。
【図面の簡単な説明】
【0015】
【
図1】
図1は、実施の形態1にかかる故障動作制御システムのブロック図である。
【
図2】
図2は、実施の形態2にかかるマルチデバイスシステムの構成例を示す。
【
図3】
図3は、実施の形態2にかかるマルチデバイスSWフレームワーク及びその記憶領域の構成例を示す。
【
図4】
図4は、実施の形態2にかかるマルチデバイスSWフレームワークの制御フロー、データアクセスのフロー、及びデータベースの構成例を示す。
【
図5】
図5は、実施の形態2にかかるマルチデバイスSWフレームワークの制御フロー、データアクセスのフロー、及びデータベースの他の構成例を示す。
【
図6A】
図6Aは、実施の形態2にかかる故障動作制御方法の動作フローを示す。
【
図6B】
図6Bは、実施の形態2にかかる故障動作制御方法の動作フローを示す。
【
図7】
図7は、実施の形態3にかかるマルチデバイスシステムの構成例を示す。
【
図8】
図8は、実施の形態3にかかるマルチデバイスSWフレームワーク及びその記憶領域の構成例を示す。
【
図9】
図9は、実施の形態3にかかるマルチデバイスSWフレームワークの制御フロー、データアクセスのフロー、及びデータベースの構成例を示す。
【
図10A】
図10Aは、実施の形態3にかかる故障動作制御方法の動作フローを示す。
【
図10B】
図10Bは、実施の形態3にかかる故障動作制御方法の動作フローを示す。
【
図10C】
図10Cは、実施の形態3にかかる故障動作制御方法の動作フローを示す。
【
図11】
図11は、故障動作制御方法を適用する際に考慮すべきケースを説明する図である。
【
図12】
図12は、故障動作制御方法を適用する際に考慮すべきケースを説明する図である。
【
図13】
図13は、故障動作制御方法を適用する際に考慮すべきケースを説明する図である。
【
図14】
図14は、各デバイスのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【0016】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0017】
実施の形態1
図1は、実施の形態1にかかる故障動作制御システムのブロック図である。
故障動作制御システムは、2つ以上のデバイスからなるマルチデバイスに適したフェール動作機構を備える。
【0018】
故障動作制御システムは、第1プロセッサ(
図1では、制御部11A)と、前記第1プロセッサによって実行されるように構成された命令を記憶する第1メモリ(
図1では、記憶部12A)と、を含む第1デバイス10Aと、第1プロセッサとは異なる第2プロセッサ(
図1では、制御部11B)と、第2プロセッサによって実行されるように構成された命令を記憶する第2メモリ(
図1では、記憶部12B)と、を含む第2デバイス10Bと、を備える。
【0019】
プロセッサがプログラムを実行することにより、デバイス10Aの制御部11Aは、デバイス状態監視部111A、比較部112A、及び処理決定部113Aとして機能する。同様に、プロセッサがプログラムを実行することにより、デバイス10Bの制御部11Bは、デバイス状態監視部111B、比較部112B、及び処理決定部113Bとして機能する。
【0020】
デバイス状態監視部111Aは、通常動作時において、第1デバイスの資源の使用に関する状態を監視し、(例えば、記憶部12A及び12B、又は第1プロセッサ及び第2プロセッサによってアクセス可能な他の記憶部などに)当該監視情報を記憶する。
【0021】
デバイス状態監視部111Bは、第2デバイス10Bの状態を監視し、(例えば、記憶部12A及び12Bに、又は第1プロセッサ及び第2プロセッサによってアクセス可能な他の記憶部などに)当該監視情報を記憶する。
【0022】
第2デバイス10Bで故障が発生したことが検出された場合、比較部112Aは、記憶された監視情報に基づき、第2デバイスで故障の発生前に実行していたタスクが使用する第2デバイスのハードウェア資源情報と、第1デバイスの資源情報を比較して差分情報を算出する。処理決定部113Aは、算出した差分情報に応じて、故障動作に対する対策方法を決定し、実行する。
【0023】
いくつかの実施形態では、故障動作に対する対策方法は、デバイス間の細かい仕様差分に対して綿密に対応することができるように、デバイス間の仕様差分ごとに対応して、設けられている。また、他の実施形態では、故障動作に対する対策方法は、実行中又は実行予定のタスクの処理内容に対して性能面で最適な対応することができるように、デバイスで実行していたタスクごとに設けられている。
【0024】
また、一実施形態は、上記故障動作制御システムを用いた故障動作制御方法、又は故障動作制御方法をコンピュータにより実行させるプログラムであり得る。
【0025】
上述の例において、プログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的コンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、RAM(Random-Access Memory)、ROM(Read-Only Memory)、フラッシュメモリ、SSD(Solid-State Drive)又はその他のメモリ技術、CD-ROM、DVD(Digital Versatile Disc)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
【0026】
以上説明した実施の形態1にかかる構成によれば、マルチデバイスフレームワークが搭載されたシステム(特に、ヘテロジニアスな構成)でも、最適なフェール機構を備えることができる。
【0027】
実施の形態2
図2は、本実施形態2にかかるマルチデバイスシステムを示す。マルチデバイスシステムは、デバイス10Aと、デバイス10Bを備える。マルチデバイスシステムは、後述するように、マルチデバイスシステムに適した新たなフェール機構を備えるので、本明細書においては故障動作制御システムとも称される場合がある。デバイス10Aは、プロセッサエレメント(以降、PEと呼ぶ)101A~103Aと、画像処理などの専用処理を行うコプロセッサ(以降、HW-IPと呼ぶ)107A,108Aと、デバイス間の通信処理を行うためのインタフェースであるPCIe109Aと、メモリ150Aと、を備える。全てのPE101A~103A及びHW-IP107A,108Aは、メモリ150Aにアクセスできるように接続されている。なお、本明細書では、PE101A~103A及びHW-IP107A,108Aは、プロセッサ100Aと総称される場合がある。
【0028】
同様に、デバイス10Bは、PE101B~103Bと、画像処理などの専用処理を行うHW-IP107B,108Bと、デバイス間の通信処理を行うためのインタフェースであるPCIe109Bと、メモリ150Bと、を備える。全てのPE101B~103B及びHW-IP107B,108Bは、メモリ150Bにアクセスできるように接続されている。なお、本明細書では、PE101B~103B及びHW-IP107B,108Bは、プロセッサ100Bと総称される場合がある。
【0029】
なお、本実施形態にかかるマルチデバイスシステムは、2つのデバイス10A、10Bを備えるが、他の実施形態では、3つ以上のデバイス(例えば、10A、10B、10C・・・)を備えてもよい。本実施形態にかかる各デバイス(例えば、デバイス10A)は、3つのPE(例えば、101A~103A)を含むが、これに限定されず、2つ以上の任意の数のPEを含んでもよい。また、本実施形態にかかる各デバイス(例えば、デバイス10A)は、2つのHW-IP(例えば、107A,108A)を含むが、これに限定されず、3つ以上のHW-IPを含んでもよい。デバイス10Cは、第3プロセッサとメモリを含み得る。
【0030】
また、本実施形態では、PE101A~103AとPE101B~103Bは異種のプロセッサエレメントであり、HW-IP107A,108AとHW-IP107B,118Bは異種のコプロセッサである。すなわち、プロセッサ100Aとプロセッサ100Bは、それぞれ異なる専門的な処理機能を有するヘテロジニアスプロセッサであり得る。実施形態に係る故障動作制御システムは、特に、ヘテロジニアスなマルチデバイスシステムにおいて有効であるが、ホモジニアスなマルチデバイスシステムにおいても適用可能である。
【0031】
図2に示すように、メモリ150Aにはユーザアプリケーションプログラム154AとマルチデバイスSWフレームワーク155AとマルチデバイスSWフレームワーク記憶領域156Aが搭載される。同様に、メモリ150Bにはユーザアプリケーションプログラム154BとマルチデバイスSWフレームワーク155BとマルチデバイスSWフレームワーク記憶領域156Bが搭載される。なお、3つ以上のデバイスを備えるマルチデバイスシステムでは、各メモリは、メモリ150Aと同様の、対応する構成を有し得る。
【0032】
各プロセッサ(例えば、プロセッサ100A、100B)が処理する様々なタスクは、ユーザアプリケーションプログラム(例えば、ユーザアプリケーションプログラム154A、154B)に含まれる。ユーザアプリケーションプログラム(例えば、154A、154B)とマルチデバイスSWフレームワーク(例えば、156A、156B)は、各PE(例えば、PE101A~103A、PE101B~103B)によって読み出され、処理されることが可能である。また、一方のマルチデバイスSWフレームワーク記憶領域(例えば、156A)はメインフレームとして動作し、他方のマルチデバイスSWフレームワーク記憶領域(例えば、156B)はサブフレームとして動作することができる。
【0033】
図3は本実施形態にかかるマルチデバイスSWフレームワークの構成を示す。マルチデバイスSWフレームワーク155Aは、デバイス状態監視部201Aと故障動作処理決定部202Aとタスクスケジュール管理制御部203Aを含む。マルチデバイスSWフレームワーク記憶領域156Aはそれぞれのデバイス間(例えば、デバイス10Aとデバイス10B)の差分情報に応じて予め定められた対策内容等を格納するデータベース204Aと、各タスクが使用するデバイス資源情報205Aと、各デバイス(例えば、デバイス10A、デバイス10B)のデバイス資源情報206Aを含む。ここでいう差分情報とは、あるデバイス(例えば、デバイス10A)で実行している、又は実行予定のタスクが使用する当該デバイスの資源と、当該タスクを退避可能なデバイス(例えば、デバイス10B又はデバイス10Cなど)の使用可能な資源との差分をいう。
【0034】
また、図示していないが、デバイス10BのマルチデバイスSWフレームワーク155Bは、
図3に示すマルチデバイスSWフレームワーク155Aと同様に、デバイス状態監視部201Bと故障動作処理決定部202Bとタスクスケジュール管理制御部203Bを含む。図示していないが、デバイス10BのマルチデバイスSWフレームワーク記憶領域156Bは、
図3に示すマルチデバイスSWフレームワーク記憶領域156Aと同様に、それぞれのデバイス間の差分情報に応じて予め定められた対策内容等を保持するデータベース204Bと、各タスクが使用するデバイス資源情報205Bと、各デバイス(例えば、デバイス10A、デバイス10B)のデバイス資源情報206Bを含む。
【0035】
3つ以上のデバイスを備える実施形態では、他のマルチデバイスSWフレームワークも、上記のマルチデバイスSWフレームワーク155Aと同様であり得、他のマルチデバイスSWフレームワーク記憶領域も、マルチデバイスSWフレームワーク記憶領域156Aと同様であり得る。
【0036】
図4は、マルチデバイスSWフレームワークのデータの構成と、マルチデバイスSWフレームワークの処理フローとデータアクセスフローを示す。
図4に示すデータベース204A_1は、各デバイスの仕様差分毎に定められた対策方法(例えば、デバイス10Aと10Bとの差分、デバイス10Aと10Cとの差分、及びデバイス10Bと10Cとの差分に対応する対策方法)を有する。
【0037】
マルチデバイスSWフレームワーク155Aは、前述した通り、デバイス状態監視部201A、故障動作処理決定部202A、タスクスケジューラ管理制御部203Aを含む。
【0038】
デバイス状態監視部201Aは、デバイス10Aの状態、すなわち、プロセッサ100Aの負荷状況やプロセッサの故障の有無等を監視する。デバイス状態監視部201Aは、プロセッサ100Aにより処理されるタスクが使用するデバイス資源情報を、メモリ150Aのデバイス資源情報205A及びメモリ150Bのデバイス資源情報205Bに記憶する。他の実施形態では、デバイス状態監視部201Aは、デバイス10A及びデバイス10Bの状態、すなわち、プロセッサ100A及びプロセッサ100Bの負荷状況やプロセッサの故障の有無等を監視してもよい。
【0039】
また、メモリ150Aのデバイス資源情報205Aには、
図4に示すように、デバイス10Bのプロセッサ100Bにより処理されるタスクが使用するデバイス資源情報が、デバイス10Bのデバイス状態監視部201Bにより記憶される。これにより、デバイス10Bのプロセッサ100Bに故障が発生した場合も、デバイス10Aのプロセッサ100Aは、故障前のプロセッサ100Bにより処理されていたタスク情報を取得することができる。
【0040】
記憶されるデバイス資源情報205Aとしては、
図4に示すように、コア情報、OS情報、割り込み情報、HW-IP情報、通信IP情報、HW機能情報などが挙げられるが、これらに限定されない。また、これらの情報は、故障が発生した複数のPE又は複数のHW-IPのいずれかを識別するために使用され得る。こうしたデバイス資源情報205Aが各デバイスのタスクごとに記憶される。
【0041】
デバイス状態監視部201Aは、前述のPE101A~103A及びHW-IP107A,108Aに対してHeartbeat信号を送信し、PE101A~103A又はHW-IP107A,108Aのいずれかに対する故障の有無を確認することができる。デバイス状態監視部201Aは、前述のPE又はHW-IPのいずれかに対する故障を検出した場合、故障動作処理決定部202Aに対して、故障が発生したPE又はHW-IPの識別情報を通知する。
【0042】
他の実施の形態では、デバイス状態監視部201Aは、前述のPE101A~103A及びHW-IP107A,108A、並びにデバイス10BのPE101B~103B及びHW-IP107Bに対して、Heartbeat信号を送信してもよい。これにより、デバイス状態監視部201Aは、PE101A~103A又はHW-IP107A,108A、並びに、PE101B~103B及びHW-IP107Bのいずれかに対する故障の有無を確認してもよい。
【0043】
故障動作処理決定部202Aは、デバイス状態監視部201Aから送信された「故障が発生したPE又はHW-IPの識別情報」を基に、故障が発生したデバイス10Bで実行中、又は実行予定のタスクが使用するデバイス資源情報205AをマルチデバイスSWフレームワーク記憶領域156Aから取得することができる。
【0044】
次に、故障動作処理決定部202Aは、マルチデバイスSWフレームワークが管理するデバイス(
図4では、デバイス10A、10B、10C)の資源情報を、デバイス資源情報206Aから取得する。次に、故障動作処理決定部202Aは、故障先のデバイス10Bで実行中(又は実行予定)のタスクが使用するデバイス資源情報205Bと、マルチデバイスSWフレームワークが管理するデバイス10Aの資源情報206Aの比較を行う。比較を行った結果、資源の差分がないデバイス(例えば、デバイス10A)が存在する場合、故障先デバイス10Bで実行中(又は実行予定)だったタスクのオフロード先の候補としてデバイス10Aを選定し、デバイス10Aの識別情報を取得して、タスクスケジューラ管理制御部203Aに通知する。
【0045】
比較の結果、資源の差分がないデバイスが存在せず、かつデータベース204からタスクをオフロードするための対策方法も取得できない場合は、故障動作処理決定部202は故障先デバイス10Bで実行中(又は実行予定)のタスク205Bを代替で処理可能なデバイスが他に存在しない。そのため、マルチデバイスシステムを安全に止める為のフェールセーフ処理を行うことを、タスクスケジューラ管理制御部203Aに通知する。
【0046】
タスクスケジューラ管理制御部203Aは、マルチデバイスSWフレームワークが管理するマルチデバイスシステム上で故障が発生していない場合は、デバイス状態監視部201Aから取得したデバイスの負荷情報に基づいて、タスクをオフロードするデバイスを決定する。
【0047】
なお、データベース204の構成について、各デバイスの仕様差分毎に対策方法を持つ(
図4を用いて説明した)構成と、タスク毎に各デバイスで動作させる場合の対策方法を管理する(
図5を用いて以下に説明する)構成の2通りの実施例が考えられる。
【0048】
図5は、マルチデバイスSWフレームワークの制御フロー、データアクセスのフロー、及びデータベースの他の構成例を示す。
図5に示すデータベースは、
図4に示すデータベースと異なり、タスク毎に各デバイスで動作させる場合の対策方法を管理する。
【0049】
図4に示すデバイス仕様差分毎の対策方法を持つデータベースの実施例と
図5に示すタスク毎の対策方法を持つデータベースの実施例は、それぞれの以下のメリット/デメリットを有し得る。
【0050】
図4に示す実施例は、それぞれのデバイス間の仕様差分毎(例えば、デバイス10Aとデバイス10Bの仕様差分、もしあれば、デバイス10Aとデバイス10Cの仕様差分)に対策方法を持つため、デバイス間の細かい仕様差分に対して綿密に対応することが可能となる。また、
図4に示すデータベース情報を更新する頻度は、マルチデバイスSW FMKの初期化時、及びマルチデバイスSW FMKの管理下に置くデバイスを追加したタイミングとなり、
図5に示すデータベースよりも、データベースの更新頻度が少ないことが想定される。このため、
図4に示すデータベースの実施例は、
図5に示すデータベースの実施例と比較すると、データベースの更新にかかるオーバーヘッドが小さくなる。
【0051】
しかし、
図4に示すデータベースの実施例の場合、デバイスの仕様差分に着目した対策方法を管理しており、実行中又は実行予定のタスクの処理内容を考慮していないため、タスクの処理内容に合わせた最適化を行うことはできない。
【0052】
一方、
図5に示すデータベースの実施例の場合、タスクの処理内容に着目して、デバイス毎の最適な対策方法をデータベースとして持つため、実行中又は実行予定のタスクの処理内容に対して性能面で最適な対応することが可能となる。
【0053】
しかし、
図5に示すデータベースの実施例の場合、データベース情報の更新は、マルチデバイスSW FMKの初期化時だけでなく、マルチデバイスSW FMKの管理下のアプリケーションを追加するタイミングも必要となる。そのため、データベース情報を更新する頻度は、
図4に示すデータベースの実施例より頻繁にデータベースの更新頻度が大きいことが想定される。このため、
図5に示すデータベースの実施例は、
図4に示す実施例と比較すると、データベースの更新にかかるオーバーヘッドが大きくなる。
【0054】
図6A及び
図6Bは、本実施形態にかかる故障動作制御方法の動作フローを示す。具体的には、マルチデバイスSWフレームワークの動作フローを示す。デバイス状態監視部201Aは、ある一定周期の間隔で自動的に起動される。デバイス状態監視部201Aは、前述のPE101A~103A及びHW-IP107A,108Aに対してHeartbeat信号を送信し、いずれかのPE101A~103A又はHW-IP107A,108Aに対する故障の有無を確認する(ステップS100)。また、デバイス状態監視部201Aは、前述のPE101B~103B及びHW-IP107B,108Bに対してHeartbeat信号を送信し、いずれかのPE101B~103B又はHW-IP107B,108Bに対する故障の有無を確認する(ステップS100)。
【0055】
デバイス状態監視部201Aは、PE101A~103A及びHW-IP107A,108Aの故障がないこと、及び、PE101B~103B及びHW-IP107B,108Bの故障がないことを確認できた場合(ステップS101でNO)、PE又はHW-IPの負荷情報を取得し、タスクスケジューラ管理制御部203Aに通知する(ステップS102)。各デバイス状態監視部は、自身のPE又はHW-IPの負荷情報を、自身のデバイスのメモリだけでなく、他のデバイスのメモリにも記憶させることで、負荷情報を互いに共有することができる。例えば、デバイス状態監視部201Aは、自身のPE101A~103A又はHW-IP107A,108Aの負荷情報を、自身のデバイス10Aのメモリ150Aだけでなく、他のデバイス10Bのメモリ150Bにも記憶させることで、負荷情報を共有することができる。詳細は、
図4を用いて後述する。同様に、デバイス状態監視部201Bは、自身のPE101A~103B又はHW-IP107B,108Bの負荷情報を、自身のデバイス10Bのメモリ150Bだけでなく、他のデバイス10Aのメモリ150Aにも記憶させることで、負荷情報を共有することができる。次いで、通常動作が実施される(ステップS103)。
【0056】
一方、デバイス状態監視部201Aは、前述のPE又はHW-IPのいずれかに対する故障を検出した場合(ステップS101でYES)、故障動作処理決定部202Aに対して故障が発生したPE又はHW-IPの識別情報を通知する(ステップS104)。本例では、デバイス10BのPE101B~103B又はHW-IP107B,108Bのいずれかに対する故障を検出した例を説明する。
【0057】
故障動作処理決定部202Aは、デバイス状態監視部201Aから送信された「故障が発生したPE又はHW-IPの識別情報」を基に、故障が発生したデバイス10Bで実行中、又は実行予定のタスクが使用するデバイス資源情報205BをマルチデバイスSWフレームワーク記憶領域156Aから取得する(ステップS105)。
【0058】
次に、故障動作処理決定部202Aは、マルチデバイスSWフレームワーク155Aが管理するデバイスの資源情報を、デバイス資源情報206から取得する(ステップS106)。次に、故障動作処理決定部202Aは、故障先デバイス10Bで実行中(又は実行予定)のタスクが使用するデバイス資源情報と、マルチデバイスSWフレームワークが管理するデバイスの資源情報と、を比較する(ステップS107)。
【0059】
比較を行った結果、資源の差分がないデバイス(例えば、デバイス10A)が存在する場合(ステップS108でYES)、故障動作処理決定部202Aは、故障先デバイス(例えば、デバイス10B)で実行中(又は実行予定)だったタスクのオフロード先の候補として当該デバイス(例えば、デバイス10A)を選定し、タスクに関する識別情報を取得して、タスクスケジューラ管理制御部203Aに通知する(ステップS120)。
【0060】
比較の結果、差分がないデバイスが存在しない場合(ステップS108でNO)、故障動作処理決定部202Aは、差分情報を抽出して、故障先デバイス(例えば、10B)で実行中(又は実行予定)のタスクをオフロードするための対策方法を、データベース204Aから取得を試みる(ステップS110)。故障動作処理決定部202Aは、差分が発生した情報を基に、データベース参照用のIDを生成し、データベース204Aにアクセスする。データベース204Aから対策方法を取得できた場合(ステップS111でYES)、故障動作処理決定部202Aはデータベース204Aから取得した対策方法に従った処置を行う。その後、対策方法を取得できたデバイス10Aを故障先デバイス10Bで実行中(又は実行予定)だったタスクのオフロード先の候補として選定し、識別情報を取得して、タスクスケジューラ管理制御部203Aに通知する(ステップS112)。
【0061】
比較の結果、資源の差分がないデバイスが存在せず(ステップS108でNO)、かつデータベース204からタスクをオフロードするための対策方法も取得できない場合は(ステップS111でNO)、故障動作処理決定部202Aは故障先デバイス10Bで実行中(又は実行予定)のタスクを代替で処理可能なデバイスが存在しないため、マルチデバイスシステム1を安全に停止するためのフェールセーフ処理を行うように、タスクスケジューラ管理制御部203Aに通知する(ステップS113)。タスクスケジューラ管理制御部203Aは、マルチデバイスシステムを安全に止めるためのフェールセーフ処理を行うための専用タスクを起動する(ステップS114)。
【0062】
タスクスケジューラ管理制御部203Aは、マルチデバイスSWフレームワークが管理するマルチデバイスシステム上で故障が発生していない場合は、デバイス状態監視部201Aから取得したデバイスの負荷情報に基づいて、タスクをオフロードするデバイスを決定する。
【0063】
マルチデバイスシステム上のいずれかのデバイスが故障していることを、前述の流れで検知し、タスクスケジューラ管理制御部203Aは、故障動作処理決定部202Aから、故障先デバイスで実行するタスクの代替先デバイスの識別情報を受け取った場合、タスクスケジューラ管理制御部203Aは、故障先デバイス10Bで実行するタスクのオフロード先を代替先デバイス10Aに変更し、タスクの優先度に基づいて代替先デバイスにオフロードする(ステップS123)。
【0064】
故障先デバイス10Bで実行するタスクの複数の代替先デバイス(例えば、デバイス10A、10C)の識別情報がある場合(ステップS121でYES)、タスクスケジューラ管理制御部203Aは、それぞれの代替先デバイス(例えば、デバイス10A、10C)の負荷情報をデバイス状態管理制御部201Aから取得する(ステップS122)。タスクスケジューラ管理制御部203Aは、最も負荷の低い代替先デバイス(例えば、デバイス10A)をタスクのオフロード先に選定し、その後、タスクをオフロードする(ステップS122)。
【0065】
なお、本開示では故障を検出した場合の故障動作処理を対象とするため、故障がない場合のタスクスケジューラ管理制御部の振る舞いの説明は割愛する。
【0066】
実施の形態2に係る故障動作制御装置(マルチデバイスソフトウェアフレームワークとも呼ばれる)は、
図3に示すように、デバイス状態監視部201、故障動作処置決定部202、タスクスケジューラ管理制御部203を備える(なお、各デバイスは、同様の構成を有するので、各デバイスを識別するA,B、C・・・は省略する)。
【0067】
具体的には、デバイス状態監視部201は、マルチデバイスSWフレームワークが管理対象とするデバイスの故障有無を一定間隔で監視する。故障動作処理決定部202は、故障を検出した時に、故障に対する処置を決定する。タスクスケジューラ管理制御部203は、デバイス状態監視部201又は故障動作処置決定部202から通知されたデバイスの負荷情報と代替先デバイスの識別情報を基に、タスクのオフロード先を決定する。また、実施の形態2に係る故障動作制御装置は、タスクが使用するHW資源情報205と、デバイス資源情報206と、を比較して資源の差分情報を抽出する。更に、故障動作制御装置は、差分情報から生成したデータベースIDを基に、データベース204を参照して、差分情報に対する対策方法を取得して差分に対する対策を行うことを特徴とする。本開示の特徴により、ヘテロジニアス構成なマルチデバイスシステムにおいても、HW資源の追加なしに縮退動作を可能となる。
【0068】
上記した実施の形態では、デバイス10Bに故障が発生した場合を説明したが、デバイス10A又はデバイス10Cなど他のデバイスにおいて故障が発生した場合も、本開示は、同様に適用可能である。
【0069】
実施の形態3
図7は、実施の形態3にかかるマルチデバイスシステムの構成例を示す。実施の形態3にかかるマルチデバイスシステムは、実施の形態3にかかる各メモリ150A、150Bには、RTOS(Real-time operating system)154A,154Bと、RTOS管理情報158A,158Bが追加されている。それ以外の構成は、
図2と同様であるので、詳細な説明は省略する。
【0070】
図8は、実施の形態3にかかるマルチデバイスSWフレームワークの構成を示す。デバイス10Aにおいて、マルチデバイスSWフレームワーク155Aには、タスク時間保護機能管理制御部401Aが追加されている。また、RTOS管理情報158AのタスクのReady-to-Run許容時間412と、タスクの実行時間許容時間413が追加されている。それ以外の構成は、
図3と同様であるので、詳細な説明は省略する。
【0071】
また、図示していないが、デバイス10Bにおいて、マルチデバイスSWフレームワーク155Bには、タスク時間保護機能管理制御部401Bが追加されている。また、RTOS管理情報158BのタスクのReady-to-Run許容時間412Bと、タスクの実行時間許容時間413Bが追加されている。
【0072】
図9は、実施の形態3にかかるマルチデバイスSWフレームワークのデータの構成と、マルチデバイスSWフレームワークの処理フローとデータアクセスフローを示す。
図9では、
図4に示すデータの構成に、RTOS管理情報が追加されている。RTOS管理情報は、タスクのReady-to-Run許容時間402と、タスクの実行時間許容時間403を含む。
【0073】
図10A~
図10Cは、実施の形態3にかかるマルチデバイスSWフレームワークの動作フローを示す。本実施の形態3では、実施の形態2の動作に加え、デバイス状態監視部201Aが故障を検出した直後に、タスク時間保護管理制御部401Aは、故障先デバイス10BのRTOS管理情報157から、故障先デバイス10Bで実行するタスクのReady-to-Run許容時間402と、タスク実行の許容時間403と、タスクの状態404を取得する。次に、タスクがReady状態の場合に、タスク時間保護管理制御部401Aは、故障先デバイス10Bで実行するタスクのReady-to-Run許容時間402をタイマに設定する。タスクがRunning状態の場合は、タスク時間保護管理制御部204は、故障先デバイス10Bで実行するタスク実行の許容時間403をタイマに設定する。
【0074】
また、故障動作処理決定部202は代替先の候補となるデバイス(例えば、デバイス10A,10Cなど)の識別情報を取得した後に、タスクスケジューラ管理制御部203Aは、タスクのReady-to-Run時間の許容時間402以内に収まると想定されるデバイス(例えば、デバイス10A又は10Cなど)をタスク割当先候補に選定する。
【0075】
タスク割当先候補がまだ複数ある場合、かつ、故障先デバイスで実行するタスクの代替先デバイスの識別情報が複数ある場合、タスクスケジューラ管理制御部203は、タスクの実行時間の許容時間403から、最も性能が高い処理性能のデバイスをタスク割当先候補に選定する。次に、タスク時間保護管理制御部402は、故障先デバイスで実行するタスクの状態がReadyでもRunningでもない場合、Ready-to-Run許容時間402とタスクの実行時間の許容時間403を代替先デバイスのタイマに設定する。
【0076】
最後に、マルチデバイスSWフレームワークは、タスクの実行時間監視タイマからの割り込みを受け付けた場合、時間保護違反用のフックルーチンを起動し、実行時間監視タイマをオフに設定し、タスクの実行時間監視タイマからの割り込みを受け付ける前に、故障先タスクの終了通知を受け取った場合は、時間保護違反用のフックルーチンは起動せずに、タスクの実行時間監視タイマをオフにする。
【0077】
図10A~
図10Cを参照して、具体的に、動作フローを説明する。
デバイス状態監視部201Aは、ある一定周期の間隔で自動的に起動される。デバイス状態監視部201Aは、前述のPE101A~103A及びHW-IP107A,108Aに対してHeartbeat信号を送信し、いずれかのPE101A~103A又はHW-IP107A,108Aに対する故障の有無を確認する(ステップS100)。また、デバイス状態監視部201Aは、前述のPE101B~103B及びHW-IP107B,108Bに対してHeartbeat信号を送信し、いずれかのPE101B~103B又はHW-IP107B,108Bに対する故障の有無を確認する(ステップS100)。
【0078】
デバイス状態監視部201Aは、PE101A~103A及びHW-IP107A,108Aの故障がないこと、及び、PE101B~103B及びHW-IP107B,108Bの故障がないことを確認できた場合(ステップS101でNO)、PE又はHW-IPの負荷情報を取得し、タスクスケジューラ管理制御部203Aに通知する(ステップS102)。各デバイス状態監視部は、自身のPE又はHW-IPの負荷情報を、自身のデバイスのメモリだけでなく、他のデバイスのメモリにも記憶させることで、負荷情報を互いに共有することができる。例えば、デバイス状態監視部201Aは、
図4を用いて説明したように、自身のPE101A~103A又はHW-IP107A,108Aの負荷情報を、自身のデバイス10Aのメモリ150Aだけでなく、他のデバイス10Bのメモリ150Bにも記憶させることで、負荷情報を共有することができる。同様に、デバイス状態監視部201Bは、自身のPE101A~103B又はHW-IP107B,108Bの負荷情報を、自身のデバイス10Bのメモリ150Bだけでなく、他のデバイス10Aのメモリ150Aにも記憶させることで、負荷情報を共有することができる。次いで、通常動作が実施される(ステップS103)。
【0079】
一方、デバイス状態監視部201Aは、前述のPE又はHW-IPのいずれかに対する故障を検出した場合(ステップS101でYES)、タスク時間保護管理制御部204Aは、故障先デバイス10Bに関するRTOS管理情報157から、故障先デバイス10Bで実行するタスクのReady-to-Run許容時間402Bと、タスク実行の許容時間403Bと、タスクの状態404Bを取得する(ステップS201)。
【0080】
ついで、タスク時間保護管理制御部204Aは、対象タスクの状態は、Ready状態であるか否かを判定する(ステップS2011)。
【0081】
対象タスクの状態は、Ready状態である場合は(ステップS2011でYES)、タスク時間保護管理制御部401Aは、故障先デバイス10Bで実行するタスクのReady-to-Run許容時間402をタイマに設定する(ステップS202)。
【0082】
タスク時間保護管理制御部204は、故障先デバイス10Bで実行するタスク実行の許容時間403Bをタイマに設定する(ステップS203)。
【0083】
一方、対象タスクの状態は、Ready状態でない場合は(ステップS2011でNO)、タスク時間保護管理制御部204は、対象タスクの状態がRunning状態であるか否かを判定する(ステップS2012)。対象タスクの状態がRunning状態である場合は(ステップS2012でYES)、ステップS202を経ずに、ステップS203において、タスク時間保護管理制御部204は、故障先デバイス10Bで実行するタスク実行の許容時間403Bをタイマに設定する(ステップS203)。対象タスクの状態がRunning状態でない場合は(ステップS2012でNO)、ステップS202及びステップS203を経ずに、処理はステップS104に進む。
【0084】
デバイス状態監視部201Aは、故障動作処理決定部202Aに対して故障が発生したPE又はHW-IPの識別情報を通知する(ステップS104)。本例では、デバイス10BのPE101B~103B又はHW-IP107B,108Bのいずれかに対する故障を検出した例を説明する。
【0085】
故障動作処理決定部202Aは、デバイス状態監視部201Aから送信された「故障が発生したPE又はHW-IPの識別情報」を基に、故障が発生したデバイス10Bで実行中、又は実行予定のタスクが使用するデバイス資源情報205BをマルチデバイスSWフレームワーク記憶領域156Aから取得する(ステップS105)。
【0086】
次に、故障動作処理決定部202Aは、マルチデバイスSWフレームワーク155Aが管理するデバイスの資源情報を、デバイス資源情報206から取得する(ステップS106)。次に、故障動作処理決定部202Aは、故障先デバイス10Bで実行中(又は実行予定)のタスクが使用するデバイス資源情報と、マルチデバイスSWフレームワークが管理するデバイスの資源情報と、を比較する(ステップS107)。
【0087】
比較を行った結果、資源の差分がないデバイス(例えば、デバイス10A)が存在する場合(ステップS108でYES)、故障動作処理決定部202Aは、故障先デバイス(例えば、デバイス10B)で実行中(又は実行予定)だったタスクのオフロード先の候補として当該デバイス(例えば、デバイス10A)を選定し、タスクに関する識別情報を取得して、タスクスケジューラ管理制御部203Aに通知する(ステップS120)。
【0088】
一方、比較の結果、資源の差分がないデバイスが存在しない場合(ステップS108でNO)、故障動作処理決定部202Aは、差分情報を抽出して、故障先デバイス10Bで実行中(又は実行予定)のタスクをオフロードするための対策方法を、データベース204Aから取得を試みる(ステップS110)。故障動作処理決定部202Aは、差分が発生した情報を基に、データベース参照用のIDを生成し、データベース204Aにアクセスする。データベース204Aから対策方法を取得できた場合(ステップS111でYES)、故障動作処理決定部202Aはデータベース204Aから取得した対策方法に従った処置を行った後、対策方法を取得できたデバイス10Aを故障先デバイス10Bで実行中(又は実行予定)だったタスクのオフロード先の候補として選定し、識別情報を取得して、タスクスケジューラ管理制御部203Aに通知する(ステップS112)。
【0089】
比較の結果、資源の差分がないデバイスが存在せず(ステップS108でNO)、かつデータベース204からタスクをオフロードするための対策方法も取得できない場合は(ステップS111でNO)、故障動作処理決定部202Aは故障先デバイス10Bで実行中(又は実行予定)のタスクを代替で処理可能なデバイスが存在しないため、マルチデバイスシステム1を安全に停止するためのフェールセーフ処理を行うように、タスクスケジューラ管理制御部203Aに通知する(ステップS113)。タスクスケジューラ管理制御部203Aは、マルチデバイスシステムを安全に止めるためのフェールセーフ処理を行うための専用タスクを起動する(ステップS114)。
【0090】
タスクスケジューラ管理制御部203Aは、マルチデバイスSWフレームワークが管理するマルチデバイスシステム上で故障が発生していない場合は、デバイス状態監視部201Aから取得したデバイスの負荷情報に基づいて、タスクをオフロードするデバイスを決定する。
【0091】
一方、ステップS112又はステップS120を経た後は、複数のデバイス候補が存在するか否かを判定する(ステップS121)。
故障先デバイス10Bで実行するタスクの複数の代替先デバイス(例えば、デバイス10A、10C)の識別情報がある場合(ステップS121でYES)、すタスクスケジューラ管理制御部203は、タスクのReady-to-Run時間の許容時間402から、最も適切な負荷状態のデバイスをタスク割当先候補に選定する(ステップS204)。ついで、故障先デバイス10Bで実行するタスクの複数の代替先デバイス(例えば、デバイス10A、10C)の識別情報がある場合(ステップS2041でYES)、タスクスケジューラ管理制御部203は、タスクの実行時間の許容時間403から、最も適切な処理性能のデバイスをタスク割当先候補に選定する(ステップS205)。タスク時間保護管理制御部204は、故障先デバイスで実行するタスクの状態がReadyでもRunningでもない場合、Ready-to-Run許容時間402とタスクの実行時間の許容時間403を代替先デバイスのタイマに設定する(ステップS206)。
【0092】
一方、故障先デバイス10Bで実行するタスクの複数の代替先デバイス(例えば、デバイス10A、10C)の識別情報がない場合(ステップS121でNO)、ステップS204,S2041,S205を経ずに、処理は、ステップS206に進む。
【0093】
タスクスケジューラ管理制御部203Aは、それぞれの代替先デバイス(例えば、デバイス10A、10C)の負荷情報をデバイス状態管理制御部201Aから取得する(ステップS122)。タスクスケジューラ管理制御部203Aは、最も負荷の低い代替先デバイス(例えば、デバイス10A)をタスクのオフロード先に選定し、その後、タスクをオフロードする(ステップS122)。
【0094】
タスクスケジューラ管理制御部203は、タイマ割り込みを受け付けたか否かを判定する(ステップS207)。タイマ割り込みを受け付けた場合は(ステップS207でYES)、タスクスケジューラ管理制御部203は、時間保護違反用のフックルーチンを起動し、実行時間監視タイマをオフに設定する(ステップS208)。
【0095】
タスクスケジューラ管理制御部203は、タイマ割り込みを受け付けていない場合は(ステップS207でNO)、タスクの実行時間監視タイマをオフにする(ステップS209)。
【0096】
図11~
図13を参照して、実施の形態3の固有の効果を説明する。実施の形態3は、実施の形態2の課題を解決する。実施の形態2では、故障先デバイスのタスクを代替先のデバイスへ委託しようとしたときに、タスクに求められる実行時間に対する制約情報を考慮できていないという課題がある。
【0097】
タスクの実行時間に対する制約情報として、一般的にはタスクがReady状態になってから、実際にRunning状態になるまでのReady-to-Run時間の長さや、TaskがRunning状態になってから、終了するまでのタスク実行許容時間が挙げられる。
【0098】
Ready-to-Run時間と、タスク実行許容時間に対する最悪時間を守らなければならないタスクが本開示の故障動作の対象となった場合に、以下の3つのケースを考慮すべきである。
【0099】
ケース1:タスクのReady-to-Run時間が、故障動作処理時間により許容時間を違反する(
図11又は
図13参照)。
ケース2:故障先デバイスと、代替先デバイスとの性能差分によりタスクの実行時間が許容範囲を超えてしまう(
図11参照)。
ケース3:タスクの実行時間が、故障動作処理時間により許容時間を違反する(
図12又は
図13参照)。
【0100】
上記のケースを考慮して、実施の形態3は、実施の形態2にかかるマルチデバイスSWフレームワーク106に、
図8に示すタスク時間保護機能管理制御部401を追加し、また、RTOS管理情報158のタスクのReady-to-Run許容時間402と、タスクの実行時間許容時間403を追加したことを特徴とする。タスク時間保護機能管理制御部401が、故障先デバイスのRTOSに代わり、故障先タスクに対する時間保護を行う。これにより、実施の形態2で故障先タスクを代替先のデバイスにオフロードする際に、タスクに求められる実行時間に対する制約情報を考慮することができる。
【0101】
図14は、デバイス10A及び10B・・・(以下、デバイス10等とする)のハードウェア構成例を示すブロック図である。
図14を参照すると、デバイス10等は、ネットワーク・インターフェース1201、プロセッサ1202、及びメモリ1203を含む。ネットワーク・インターフェース1201は、通信システムを構成する他のネットワークノード装置と通信するために使用される。ネットワーク・インターフェース1201は、無線通信を行うために使用されてもよい。例えば、ネットワーク・インターフェース1201は、IEEE 802.11 seriesにおいて規定された無線LAN通信、もしくは3GPP(登録商標)(3rd Generation Partnership Project)において規定されたモバイル通信を行うために使用されてもよい。もしくは、ネットワーク・インターフェース1201は、例えば、IEEE 802.3 seriesに準拠したネットワークインターフェースカード(NIC)を含んでもよい。
【0102】
プロセッサ1202は、メモリ1203からソフトウェア(コンピュータプログラム)を読み出して実行することで、上述の実施形態においてフローチャートもしくはシーケンスを用いて説明されたデバイス10等の処理を行う。プロセッサ1202は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)又はCPU(Central Processing Unit)であってもよい。プロセッサ1202は、複数のプロセッサを含んでもよい。
【0103】
メモリ1203は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ1203は、プロセッサ1202から離れて配置されたストレージを含んでもよい。この場合、プロセッサ1202は、図示されていないI/Oインタフェースを介してメモリ1203にアクセスしてもよい。
【0104】
図14の例では、メモリ1203は、ソフトウェアモジュール群を格納するために使用される。プロセッサ1202は、これらのソフトウェアモジュール群をメモリ1203から読み出して実行することで、上述の実施形態において説明されたデバイス10等の処理を行うことができる。
【0105】
図6又は
図10等のフローチャートを用いて説明したように、デバイス10等が有するプロセッサの各々は、図面を用いて説明されたアルゴリズムをコンピュータに行わせるための命令群を含む1又は複数のプログラムを実行する。
【0106】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【0107】
1 マルチデバイスシステム
10 デバイス
11 制御部
12 記憶部
100 プロセッサ
101 プロセッサエレメント
102 プロセッサエレメント
103 プロセッサエレメント
107 HW-IP
108 HW-IP
109 PCIe
111 デバイス状態監視部
112 比較部
113 処理決定部
121 プログラム
150 メモリ
154 ユーザアプリケーションプログラム
155 マルチデバイスSWフレームワーク
156 マルチデバイスSWフレームワーク記憶領域
157 RTOS
158 RTOS管理情報
201 デバイス状態監視部
202 故障動作処理決定部
203 タスクスケジューラ管理制御部
205 デバイス資源情報
206 デバイス資源情報
207 タスクスケジュール管理情報
401 タスク時間保護管理制御部
412 タスクのReady-to-Run許容時間
413 タスクの実行時間許容時間
1011 負荷情報
1012 識別情報
1021 負荷情報
1022 識別情報
1031 負荷情報
1032 識別情報
1071 負荷情報
1072 識別情報
1081 負荷情報
1082 識別情報