(57)【要約】【課題】ＣＰＵコアに異常が発生しても、優先度の高い処理を継続させるためのマルチコアＣＰＵのオペレーティング・システムに関する技術を提供する。【解決手段】各ＣＰＵコア（１）５０〜ＣＰＵコア（４）５６に異常が発生したことを検出し、ＣＰＵコア（１）に異常が発生した場合、ＣＰＵコア（１）に割り当てられているＡＭＰ及び運転支援ソフトを他のＣＰＵコア（例えば、ＣＰＵコア（２）５２）に再割当てする。ＣＰＵコア（２）５２〜ＣＰＵコア（４）５６に割り当てられていたＳＭＰ及びマルチメディア・ソフトをＣＰＵコア（１）５０及びＣＰＵコア（２）５２以外のＣＰＵコア（例えば、ＣＰＵコア（３）５４及びＣＰＵコア（４）５６）に再割当てする。このようにして、ＣＰＵコア（１）５０に異常が発生した場合でも、車両の安全走行に関連の大きい運転支援ソフトを通常の性能で実行させることより、車両走行時の安全が確保できる。【選択図】図８
2008123439.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵコアから構成され、各ＣＰＵコアに処理が割り当てられて実行される移動体用マルチコアＣＰＵ用のオペレーティング・システムであって、
前記複数のＣＰＵコアの何れかに正常に演算を実行できない異常が発生したか否かを検出する異常検出処理と、
前記異常検出処理によって前記複数のＣＰＵコアの何れかに正常に演算を実行できない異常が検出された場合、前記異常が検出されたＣＰＵコアに割り当てられている処理を予め定められた処理の優先順位に応じて前記異常が検出されたＣＰＵコア以外のＣＰＵコアに割り当てる割当処理と、
を備えたことを特徴とする移動体用マルチコアＣＰＵ用のオペレーティング・システム。
【請求項２】
請求項１に記載の移動体用マルチコアＣＰＵ用のオペレーティング・システムにおいて、
前記割当処理は、前記異常検出処理において前記複数のＣＰＵコアのすべてに前記複数のＣＰＵコアに正常に演算を実行できない異常が検出された場合、前記複数のＣＰＵコアに割り当てられているすべての処理を終了するために必要となる処理を行った後に、前記複数のＣＰＵコアでの処理をすべて停止させることを特徴とする移動体用マルチコアＣＰＵ用のオペレーティング・システム。
【請求項３】
請求項１又は請求項２に記載の移動体用マルチコアＣＰＵ用のオペレーティング・システムとしての機能を、移動体用マルチコアＣＰＵを備えた移動体用コンピュータに実行させるためのプログラム。
【請求項４】
請求項１又は請求項２に記載の移動体用マルチコアＣＰＵ用のオペレーティング・システムを備えた移動体操縦支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵコアから構成されるマルチコアＣＰＵのオペレーティング・システムに関する。
【背景技術】
【０００２】
従来、マルチコアＣＰＵを用いたシステムにおいては、複数のＣＰＵコアを同列に扱って仮想的に１つのＣＰＵに見せる対象型マルチプロセッシング・オペレーティング・システム（以下、ＳＭＰ型ＯＳとも呼ぶ。ＳＭＰは、Symmetric Multi-Processingの略）が適用されることが多い。
【０００３】
そのようなＳＭＰ型ＯＳをマルチコアＣＰＵに適用したシステムでは、システム機能を実現するためのソフト実行の合間に、各ＣＰＵコアの故障診断ソフトを実行するサイクルを設け、システム機能実現ソフトとＣＰＵコアの故障ソフトを並列実行させている。
【０００４】
そして、特定のＣＰＵコアが故障と診断された場合にはそのＣＰＵコアをパージして、残りのＣＰＵコアのみでＳＭＰ型ＯＳを構成してシステム動作を継続することを可能としている（例えば、特許文献１参照）。
【特許文献１】特開２００５−１２９０５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、上記ＳＭＰ型ＯＳは、ソフトの重要性に応じたＣＰＵリソースの配分を行うようには考えられていない。したがって、ＣＰＵコア故障時にはＳＭＰ型ＯＳへ割り当てられているＣＰＵコアの数が減少するので、マルチコアＣＰＵ全体としては、ソフトの処理能力が低下するという問題がある。
【０００６】
例えば、車両の運転支援を行う運転支援装置などに上記ＳＭＰ型ＯＳを適用した場合、あるＣＰＵコアが故障すると、その故障が発生する前の処理を残りのＣＰＵコアで実行する。
【０００７】
したがって、処理負荷の高い動画データの映像デコード処理にＣＰＵリソースが占有され、運転支援などの安全性に直結する重要な機能のソフト処理が間に合わないといった問題、例えば、エンジンＥＣＵとの連携動作をするための通信処理が決められた時間内に終えられないため運転支援機能が停止するというような問題が発生するのである。
【０００８】
本発明は、このような問題に鑑みなされたものであり、ＣＰＵコアに異常が発生しても、優先度の高い処理を継続させるためのマルチコアＣＰＵのオペレーティング・システムに関する技術を提供することを目的としている。
【課題を解決するための手段】
【０００９】
かかる問題を解決するためになされた請求項１に記載の発明は、複数のＣＰＵコア（５０，５２，５４，５６：この欄においては、発明に対する理解を容易にするため、必要に応じて「発明を実施するための最良の形態」欄において用いた符号を付すが、この符号によって請求の範囲を限定することを意味するものではない。）から構成され、各ＣＰＵコア（５０〜５６）に処理が割り当てられて実行される移動体用マルチコアＣＰＵ用のオペレーティング・システムであって、異常検出処理と割当処理とを備えていることを特徴としている。
【００１０】
異常検出処理は、複数のＣＰＵコア（５０〜５６）の何れかに正常に演算を実行できない異常が発生したか否かを検出する。
割当処理は、異常検出処理によって複数のＣＰＵコア（５０〜５６）の何れかに正常に演算を実行できない異常が検出された場合、異常が検出されたＣＰＵコア（５０）に割り当てられている処理を予め定められた処理の優先順位に応じて異常が検出されたＣＰＵコア以外（５２〜５６）のＣＰＵコアに割り当てる。
【００１１】
このような移動体用マルチコアＣＰＵ（１０）用のオペレーティング・システムによれば、移動体用マルチコアＣＰＵ（１０）に正常に演算を実行できない異常が発生しても、優先度の高い処理の性能を低下させることなく実行することができる。以下、詳細に説明する。
【００１２】
車両などの移動体は、比較的早い速度で移動するために、周囲環境、特に周囲温度の変化が大きい。また、移動体に搭載されている機器は、高温や振動あるいは衝撃といった環境にさらされる場合が多い。移動体に搭載されるＣＰＵは、このような周囲温度の変化、振動、衝撃といった環境下で正常に作動することが必要である。
【００１３】
また、移動体用ＣＰＵでは、種々の処理が実行されている。例えば、安全運転支援のための制御処理や表示処理、経路案内処理、オーディオ装置制御処理などが１つのＣＰＵで実行されている。そして、これら移動体用ＣＰＵで実行される処理には優先度があるというのも移動体用ＣＰＵの特徴である。移動体用ＣＰＵで実行される処理においては、移動体の安全性を確保するという観点から、安全運転のための制御処理や表示処理は優先度が高く、オーディオ装置制御処理などは優先度が低い。
【００１４】
したがって、移動体用ＣＰＵが上記のような種々の環境にさらされ、演算が正常に行なわれない等の異常が発生した場合には、ＣＰＵでソフトウエアが正常に実行されないので、もし異常が発生したＣＰＵが安全運転のための機能を提供するためのソフトウエアを実行している場合には、移動体の安全を確保することが困難になるおそれがある。
【００１５】
ところが、請求項１に記載の移動体用マルチコアＣＰＵ（１０）用のオペレーティング・システムによれば、ＣＰＵコア（５０〜５６）の何れかに正常に演算を実行できない異常が検出された場合、そのＣＰＵコア（５０）で実行されていた処理を別のＣＰＵコア（５２〜５６）に優先度に応じて割り当てる。
【００１６】
したがって、最も優先度が高い処理が割り当てられたＣＰＵコア（５０）に前述の異常が発生しても、そこで実行されていた処理は別のＣＰＵコア（５２〜５６）に割り当てられるので、正常に作動しているＣＰＵコアが１個でもあれば、最も優先度の高い処理は停止されずに実行される。
【００１７】
例えば、処理の優先度の高い順に、車両の安全走行制御処理、経路案内処理、オーディオ機器制御処理が各ＣＰＵコア（５０，５２，５４，５６）に割り当てられているとする。
【００１８】
その場合、ＣＰＵコア（５０）に正常に演算を実行できない異常が生じた場合、処理の優先度が最も高い車両の安全走行制御処置が割り当てられたＣＰＵコア（５０）以外のＣＰＵコア（５２，５４，５６）の１つに、その処理（安全走行制御処理）を割り当てる。
【００１９】
このようにして、処理の優先度の最も高い処理が割り当てられたＣＰＵコア（５０）に異常が発生したときに、その処理を他のＣＰＵコア（５２〜５４）で実行させることができるので、優先度が最も高い処理が通常に実行される。つまり、例えば、車両の安全走行制御を通常と同じ性能で実行することができる。
【００２０】
なお、このとき、処理の優先度の最も低い処理は、割り当てるＣＰＵコアがなくなるので、実行されなくなる。
なお、ここでいう「オペレーティング・システム」とは、必ずしもプログラム（コンピュータに対する指令であって、一の結果を得ることができるように組み合わされたもの）によってのみ実現されるだけでなく、機能の全部又は一部をハードウエアによって実現するものであってもよい。
【００２１】
ところで、複数のＣＰＵコア（５０〜５６）のうち、正常に作動するものがない場合に、そのまま処理を継続すると処理エラーが発生する場合がある。特に、優先順位が高い処理にエラーが発生すると問題が大きい。
【００２２】
そこで、請求項２に記載のように、割当処理は、異常検出処理において複数のＣＰＵコア（５０〜５６）のすべてに、それらの正常に演算を実行できない異常が検出された場合、複数のＣＰＵコア（５０〜５６）に割り当てられているすべての処理を終了するために必要となる処理を行った後に、複数のＣＰＵコア（５０〜５６）での処理をすべて停止させるようにするとよい。
【００２３】
このようにすると、各ＣＰＵコア（５０〜５６）で必要な終了処理が実行された後に、すべてのＣＰＵコア（５０〜５６）の処理が停止されるので、不測の処理エラーが発生しない。
【００２４】
例えば、前述のような本オペレーティング・システムが適用された車両の運転支援装置であれば、終了処理ですべてのＣＰＵコア（５０〜５６）に異常が発生した旨の通知を運転支援処理側に行うようにする。そして、運転支援処理側では、通常の運転支援処理を行わず、運転者に対して、運転支援を行うことができない旨の表示などを行えば、車両の安全運転支援処理にエラーが発生することがなくなるので、安全性を確保できる。
【００２５】
ところで、請求項１又は２に記載のオペレーティング・システムは、プログラムとして、その機能をコンピュータに実行させることができる。したがって、請求項３に記載のように、請求項１又は請求項２に記載のオペレーティング・システムを移動体用マルチコアＣＰＵ（１０）を備えたコンピュータに実行させるプログラムとしてもよい。
【００２６】
このようなプログラムによれば、移動体用マルチコアＣＰＵ（１０）を備えたコンピュータに、マルチコアＣＰＵ（１０）を構成する複数のＣＰＵコア（５０〜５６）の何れかに、その性能を低下させる異常が発生したときに、優先順位の高い処理を正常なＣＰＵに割り当て、優先順位の低い処理を行わないようにすることによって、優先順位が高い処理を通常と同じ性能で実行可能とすることができる。
【００２７】
例えば、車両の安全走行処理、経路案内処理、オーディオ機器制御処理などの移動体で行われる処理のうち、車両の安全走行処理を実行しているＣＰＵコア（５０）に異常が発生した場合、他のＣＰＵコア（５２〜５６）の１つにその処理を割り当てる。そして、車両の安全走行に関連の低いオーディオ機器制御処理などの機能を行わないようにすることによって、車両の安全走行制御処理を通常と同じ性能で実行できるようになる。
【００２８】
なお、「移動体用コンピュータ」とは、単にコンピュータ（例えば、携帯型パーソナルコンピュータ）が移動体内に置かれて使用者が個人的に使用するものを意味しているのではなく、移動体の有する機能と関連付けられてその機能を発揮させる処理を実行するために移動体に搭載されているコンピュータを意味している。
【００２９】
請求項４に記載の移動体操縦支援装置は、請求項１又は請求項２に記載のオペレーティング・システムが備えられていることを特徴としている。
このように移動体操縦支援装置に請求項１又は請求項２に記載のオペレーティング・システムが備えられていれば、例えば、車両の安全走行に必要となる情報を運転者に提示したり、あるいは車両の安全運転のための自動走行制御運転を行う装置などでは、その装置に組み込まれているマルチコアＣＰＵ（１０）を構成する複数のＣＰＵコア（５０〜５６）の何れかに、正常に演算を実行できないような異常が発生しても、移動体操縦支援機能が通常の性能通りに働く。したがって、移動体の移動時の安全を確保することができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明が適用された実施形態について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【００３１】
（カーナビゲーション装置１の構成）
図１は、カーナビゲーション装置１のシステムイメージを示す図である。カーナビゲーション装置１は、マイクロコンピュータ３、ディスプレイ４０、スピーカ４２、スイッチ４４から構成されている。
【００３２】
カーナビゲーション装置１は、ディスプレイ４０の表示やスピーカ４２の音声出力／音出力によって、経路案内のようなナビゲーション機能やオーディオ／ＴＶといったマルチメディア機能に加え、運転者の安全運転に寄与できる図示しない周辺カメラ画像の表示や図示しない前方監視レーダによって得られる障害物警告といった運転支援情報も提供する。
【００３３】
ここで、ナビゲーション機能やオーディオ機能といった、たとえサービス品質が低下あるいは停止してしまっても車両走行時の安全性に直結しない機能は、総括してマルチメディア機能と呼び、車両周辺監視や前方障害物検知といった、運転者の運転時における安全性を向上させるための機能を運転支援機能と呼ぶこととする。
【００３４】
経路案内のための経路案内処理、マルチメディア機能を実現するためのマルチメディア制御処理及び運転支援機能を実現するための運転支援処理は、カーナビゲーション装置１のマイクロコンピュータ３において、同時に単一ハードウエア上で複合的に実行され、各々の機能が実現される。
【００３５】
（カーナビゲーション装置１のハードウエア構成）
次に、図２に基づいてカーナビゲーション装置１のハードウエア構成を説明する。図２は、カーナビゲーション装置１の概略のハードウエア構成を示すブロック図である。
【００３６】
カーナビゲーション装置１は、図２に示すように、マイクロコンピュータ３、ディスプレイ４０、スピーカ４２及びスイッチを備えている。
マイクロコンピュータ３は、図２に示すように、マルチコアＣＰＵ１０、Ｉ／Ｏ１４、ＦＬＡＳＨ・ＲＯＭ１６、ＲＡＭ１８、描画ＬＳＩ２０、Ｄ／Ａコンバータ２２、ＰＩＯ２４を備えている。
【００３７】
マルチコアＣＰＵ１０は、複数（本実施形態では４個）のＣＰＵコア５０，５２，５４，５６から構成される移動体用のＣＰＵであり、各ＣＰＵコア５０〜５６に、前述した経路案内処理、マルチメディア制御処理及び運転支援処理などが割り当てられて実行される。マルチコアＣＰＵ１０の詳細については後述する。
【００３８】
なお、４個のＣＰＵコアを特定して説明する必要があるときは、「ＣＰＵコア」という用語の後に括弧で括って番号を付ける。また、特にどのＣＰＵコアであるかを特定する必要がない場合には、括弧で括って示した各ＣＰＵコアの番号を省略して説明する。
【００３９】
ディスプレイ４０は、マイクロコンピュータ３で実行される経路案内処理、マルチメディア制御処理あるいは安全運転支援処理の結果を表示するためのものであり、液晶ディスプレイやＣＲＴなどが用いられる。
【００４０】
スピーカ４２は、マイクロコンピュータ３で実行される経路案内処理、マルチメディア制御処理あるいは安全運転支援処理の結果を音声で運転者等に報知するためのものである。
【００４１】
スイッチ４４は、運転者等がマイクロコンピュータ３に対して種々の入力を行うためのものであり、具体的にはディスプレイ４０の画面上に配置されたタッチセンサなどである。
（カーナビゲーション装置１のソフトウエア構成）
次に、カーナビゲーション装置１におけるソフトウエア構成について図２基づき説明する。
【００４２】
カーナビゲーション装置１のマイクロコンピュータ３には、図２に模式的に示すように、マイクロコンピュータ３を作動させるためのオペレーティングシステム３４（以下、ＯＳ３４とも呼ぶ。）やアプリケーション・ソフト３６が内蔵されている。
【００４３】
ＯＳ３４は、複数のＣＰＵコアの何れかに正常に演算を実行できない異常が発生したか否かを検出する異常検出処理と、異常検出処理によって複数のＣＰＵコア５０〜５６の何れかに正常に演算を実行できない異常が検出された場合、異常が検出されたＣＰＵコア５０に割り当てられている処理を予め定められた処理の優先順位に応じて前記異常が検出されたＣＰＵコア５２〜５６以外のＣＰＵコアに割り当てる割当処理と、を備えている。
【００４４】
なお、割当処理に使用されるＣＰＵコア番号と、ＣＰＵコアの正常／異常状態を記憶しているＣＰＵ状態情報は、ＦＬＡＳＨ・ＲＯＭ１６に記憶される。このようにすればシステム電源がオフされても次回の起動時にも利用できるため異常ＣＰＵコア５０〜５６を再確認することなく、システム的に切り離すことが可能となる。
【００４５】
複数のＣＰＵコア５０〜５６に処理を割り当てて実行させるためのＯＳ３４の実装技術としては、次の３つに代表されるものがある。
（１）ＡＭＰ（Asymmetric Multiprocessing：非対称型マルチプロセッシング）＝特定の単一ＣＰＵコアに特定のソフト（タスク）を静的に割り当てて実行する。特定ソフト（タスク）が単一ＣＰＵコア上で走るためにリアルタイム性や信頼性を保証しやすい。
【００４６】
（２）ＳＭＰ（Symmetric Multi-processing：対象型マルチプロセッシング）＝複数のＣＰＵコアにソフト（タスク）を動的に割り当てて実行する。ソフト（タスク）が複数のＣＰＵコア上で並列実行されるためパフォーマンスを得やすい反面、リアルタイム性や信頼性を保証しにくい。ＳＭＰでは各ＣＰＵコアに隣接しているキャッシュの一貫性（コヒーレンシ）を複数のＣＰＵコアで保つ必要があり、この場合にマルチコアＣＰＵ内部のキャッシュ同期手段で一貫性が保証されるように実装する。
【００４７】
（３）ＢＭＰ（Bound Multiprocessing：ＡＭＰとＳＭＰのハイブリッド構成で、一部のＣＰＵコアをＡＭＰに割り当て、別のＣＰＵコアをＳＭＰに割り当てる。
カーナビゲーション装置１においては、信頼性を要求される運転支援機能はＡＭＰで、パフォーマンスが要求されるマルチメディア機能はＳＭＰで実装できるＢＭＰが一般的には最適とされている。 本実施形態ではＯＳとしてＢＭＰを採用することとして説明を行う。
【００４８】
本実施形態では、図２に示すように、ＡＭＰにＣＰＵコア（１）を、ＳＭＰにＣＰＵコア（２）５２〜ＣＰＵコア（４）５６を割り当て、ＡＭＰ上で運転支援ソフト、ＳＭＰ上でマルチメディア・ソフトが実行される。ただしＣＰＵコア（１）５０〜ＣＰＵコア（４）５６の異常の際にはこの割当ては動的に変化していく。
【００４９】
（ＯＳ３４の処理）
次に、図３〜図７に基づいて、ＣＰＵコア５０〜５６に異常が発生した際に実行されるＯＳ３４の処理について説明する。図３は、メイン処理のフローチャートであり、図４〜図７は、メイン処理から呼び出されるサブルーチンのフローチャートである。
【００５０】
ＯＳ３４は、ＡＭＰあるいはＳＭＰの基本タイマから定期的に起動するようにしてもよいし、各ＣＰＵコア５０〜５６に基本タイマを設定し、定期割り込みから定期的に実行されるようにしてもよい。ＯＳ３４の実行権として特権モードが指定できるＣＰＵにおいては、ＯＳ３４以外のソフトがバグによってシステムが不安定にならないようにＯＳ３４だけを特権モードで実行するように実装することが望ましい。
【００５１】
ＯＳ３４は、あらかじめどのＣＰＵコア５０〜５６がＡＭＰあるいはＳＭＰに割り当てられているかを内部情報として保持しているものとする。
ＯＳ３４のメイン処理は、図３に示すように、Ｓ１００において、ＣＰＵコア（１）５０〜ＣＰＵコア（４）５６の番号を表す変数ｎが１に設定される。続く、Ｓ１０５にて、ＣＰＵコア（１）５０の異常検出処理（処理内容は後述する。）が実行される。
【００５２】
続く、Ｓ１１０にて、ＣＰＵコア（１）が正常であるか否かが判定される。ＣＰＵコア（１）５０が正常であると判定された場合は（Ｓ１１０：Ｙｅｓ）、Ｓ１２０へ処理が移行され、ＣＰＵコア（１）５０が正常でない（つまり、ＣＰＵコア（１）５０が異常）と判定された場合には（Ｓ１１０：Ｎｏ）、Ｓ１１５へ処理が移行される。
【００５３】
Ｓ１１５では、再割当処理（処理内容は後述する。）が実行され、Ｓ１２０では、変数ｎが１増加される。そして、続くＳ１２５において、変数ｎがＣＰＵコア（１）５０〜ＣＰＵコア（４）５６の数を超えたか否かが判定される。
【００５４】
Ｓ１２５にて、変数ｎがＣＰＵコア（１）５０〜ＣＰＵコア（４）５６の数を超えていないと判定された場合は（Ｓ１２５：Ｎｏ）Ｓ１００に処理が移行され、次のＣＰＵコア（２）について処理が行われる。一方、変数ｎがＣＰＵコア（１）５０〜ＣＰＵコア（４）５６の数を超えていると判定された場合には、処理が終了される。
【００５５】
このように、すべてのＣＰＵコア（１）５０〜ＣＰＵコア（４）５６に対して本処理が実行される。
（異常検出処理）
次に、図４に基づき、異常検出処理の流れについて説明する。図４は、異常検出処理の流れを示すフローチャートである。
【００５６】
異常検出処理では、図４に示すように、Ｓ２００において「１＋１」の加算が行われ、加算結果が「２」であるか否かが判定される。加算結果が「２」でない場合は（Ｓ２００：Ｎｏ）、Ｓ２２０にてＣＰＵコア（ｎ）に関して「異常」である旨がＦＬＡＳＨ・ＲＯＭ１６に記憶される。
【００５７】
一方、加算結果が「２」である場合には（Ｓ２００：Ｙｅｓ）、Ｓ２０５において、「２×２」の乗算が行われ、乗算結果が「４」であるか否かが判定される。そして、乗算結果が「４」でない場合は、（Ｓ２０５：Ｎｏ）、Ｓ２２０にてＣＰＵコア（ｎ）に関して「異常」である旨がＦＬＡＳＨ・ＲＯＭ１６に記憶される。
【００５８】
一方、乗算結果が「４」である場合には（Ｓ２０５：Ｙｅｓ）、Ｓ２１０において、「１．０１＋０．９９」という総数点を含む加算が行われ、加算結果が「２．００」であるか否かが判定される。そして、加算結果が「２．００」でない場合は（Ｓ２１０：Ｎｏ）、Ｓ２２０にてＣＰＵコア（ｎ）に関して「異常」である旨がＦＬＡＳＨ・ＲＯＭに記憶される。
【００５９】
一方、加算結果が「２．００」である場合には（Ｓ２１０：Ｙｅｓ）、続くＳ２１５にてＣＰＵコア（ｎ）に関して「正常」である旨がＦＬＡＳＨ・ＲＯＭ１６に記憶される。
このように、異常検出処理では、結果の分かっている処理を各ＣＰＵコア５０〜５６において種々行い、その処理のうち１つでも正常でないＣＰＵコアがあれば、そのＣＰＵコアは異常であるとする。
【００６０】
（再割当処理）
次に、図５に基づき、再割当処理の流れについて説明する。図５は、再割当処理の流れを示すフローチャートである。
【００６１】
再割当処理では、Ｓ３００において、ＳＭＰ側ＣＰＵの再割当処理を行い、続くＳ３０５にて異常ＣＰＵコア（ｎ）は、ＡＭＰ側に割り当てられているものであるか否かが判定される。
【００６２】
Ｓ３０５にて、異常ＣＰＵコア（ｎ）がＡＭＰ側に割り当てられている場合は（Ｓ３０５：Ｙｅｓ）、続くＳ３１０において、ＡＭＰ側のに割り当てられているＣＰＵコア（ｎ）の再割当処理が行われる。一方、Ｓ３０５にて、異常ＣＰＵコア（ｎ）がＡＭＰ側に割り当てられていない場合には（Ｓ３０５：Ｎｏ）、処理が終了される。
【００６３】
このようにして、再割当処理においては、異常が発生したＣＰＵコア（ｎ）にはＡＭＰ及びＳＭＰが割り当てられず、最も優先度の高い運転支援ソフトを実行するために、正常なＣＰＵコア（ｎ以外）にＡＭＰ及びＳＭＰが割り当てられる。
【００６４】
（ＳＭＰ側ＣＰＵコア再割当処理）
次に、図６に基づいて、ＳＭＰ側ＣＰＵコア再割当処理について説明する。図６は、ＳＭＰ側ＣＰＵコア再割当処理の流れを示すフローチャートである。
【００６５】
ＳＭＰ側ＣＰＵコア再割当処理では、図６に示すように、まずＳ４００において、ＳＭＰ側に割り当てられているＣＰＵコアの数が２以上であるか否かが判定される。割り当てられているＣＰＵコアの数が２以上の場合は（Ｓ４００：Ｙｅｓ）、Ｓ４０５において特定のＣＰＵコアがＳＭＰ側から切り離される。つまり、特定のＣＰＵコアがＳＭＰに割り当てられないようにされる。その後、処理がＳ４２０へ移行される。
【００６６】
一方、割り当てられているＣＰＵコアの数が２未満である場合には（Ｓ４００：Ｎｏ）、Ｓ４１０にて、ＳＭＰ側に割り当てられているＣＰＵコアの数が１であるか否かが判定される。
【００６７】
そして、割り当てられているＣＰＵコアの数が１個の場合は（Ｓ４１０：Ｙｅｓ）、続くＳ４１５にてＳＭＰの処理を停止し、処理がＳ４２０へ移行される。割り当てられているＣＰＵコアの数が１個でない場合には（Ｓ４１０：Ｎｏ）、処理が終了される。
【００６８】
Ｓ４２０では、Ｓ４０５においてＣＰＵコアが切り離されたり、Ｓ４１５においてＳＭＰの処理が停止されているので、切り離されたり、処理の停止対象となったＣＰＵコアを除いて、ＳＭＰ側の割り当てられるＣＰＵコアの構成番号が更新される。
【００６９】
例えば、ＳＭＰ側にＣＰＵコア（２）５２〜ＣＰＵコア（４）５２が割り当てられており、Ｓ４０５においてＣＰＵコア（２５２）が切り離された場合には、ＣＰＵコア（３）５４がＣＰＵコア（２）５４となり、ＣＰＵコア（４）５６がＣＰＵコア（３）５６となる。
【００７０】
そして、ＣＰＵコアの構成番号が更新された後、処理が終了される。
（ＡＭＰ側ＣＰＵコア再割当処理）
次に、図７に基づいて、ＡＭＰ側ＣＰＵコア再割当処理について説明する。図７は、ＡＭＰ側ＣＰＵコア再割当処理の流れを示すフローチャートである。
【００７１】
ＡＭＰ側ＣＰＵコア再割当処理では、図７に示すように、まずＳ５００において、割当て可能なＣＰＵコアがあるか否かが判定される。これは、ＳＭＰ側にＳＭＰから切り離し可能な数のＣＰＵコアがあるか否かによって判定される。
【００７２】
そして、割当て可能なＣＰＵがない場合は（Ｓ５００：Ｎｏ）、Ｓ５３０に処理が移行され、割当て可能なＣＰＵコアがある場合には（Ｓ５００：Ｙｅｓ）、Ｓ５０５にて、その割当て可能なＣＰＵコアへの切替の終了を待ち、切替が終了するとＳ５１０へ処理が移行される。
【００７３】
なお、切替可能なＣＰＵコアが複数ある場合には、ＣＰＵコアの構成番号の少ない方へＣＰＵコアの切替が行われる。例えば、切替可能なＣＰＵコアとして、ＣＰＵコア（２）５２とＣＰＵコア（３）５４とがある場合、ＣＰＵコア（２）５２へ切り替えられる。
【００７４】
Ｓ５１０では、切替元のＣＰＵコアのキャッシュメモリ６０〜６６の内容が切替先のＣＰＵコアのキャッシュメモリ６０〜６６へコピーされ、切替先のＣＰＵコアの動作情報が切替元のＣＰＵコアの動作情報と同一にされる。
【００７５】
続くＳ５１５で、切替元のＣＰＵコアの図示しないレジスタの内容が切替先のＣＰＵコアの図示しないレジスタへコピーされ、切替先のＣＰＵコアの動作情報が切替元のＣＰＵコアの動作情報と同一にされる。
【００７６】
そして、続くＳ５２０にて、メモリコントローラ７０が操作されメモリ空間が切替元のＣＰＵコアでの実行環境と同一なものとされた後、Ｓ５２５にて、ＣＰＵコアの構成番号が更新されて処理が終了される。
【００７７】
Ｓ５３０では、システム終了処理が行われる。この処理では、すべてのＣＰＵコア５０〜５６に異常が発生したことがアプリケーション・ソフト（運転支援ソフト及びマルチメディアソフト）に通知される。
【００７８】
（作動の例）
以上の処理によって、図２の状態からＣＰＵコア（１）５０に異常が発生した場合に、マイクロコンピュータ３におけるソフトウエア構成がどのようになるかを図８に基づいて説明する。
【００７９】
ＣＰＵコア（１）５０に異常が発生した場合、元々ＣＰＵコア（１）５０で実行されていたＡＭＰ及びＡＭＰ側アプリケーション・ソフト（運転支援ソフト）はＣＰＵコア（２）５２で実行され、ＣＰＵコア（２）５２〜ＣＰＵコア（４）５６で実行されていたＳＭＰ／ＳＭＰ側アプリケーション・ソフト（マルチメディア・ソフト）はＣＰＵコア（３）５４〜ＣＰＵコア（４）５６で実行される。
【００８０】
前述したように運転支援ソフトはドライバの安全性に直結しているため、確実にソフトが実行される必要があるが、本実施形態のＯＳ３４によれば、元々ＣＰＵコア（１）５０で実行されていた運転支援ソフトは、ＣＰＵコア（１）５０が故障してもＣＰＵコア（２）５２に切り替わるだけで、ＣＰＵコア（１）５０とＣＰＵコア（２）５２とは同等の処理能力があるため、ドライバに対して変わらないサービスを提供できる。
【００８１】
次に図９に基づいて、マルチコアＣＰＵ１０が正常に作動している状態から各ＣＰＵコアに異常が発生した場合のオペレーティング・システム及びアプリケーション・ソフトの割当て状態の遷移関係を説明する。
【００８２】
正常時には図９（ａ）に示すように、運転支援ソフトは、ＡＭＰの制御下でＣＰＵコア（１）５０にて実行され、マルチメディアソフトは、ＳＭＰの制御下でＣＰＵコア（２）５２〜ＣＰＵコア（４）５６で実行される。
【００８３】
そして、図９（ｂ）に示すように、ＣＰＵコア（１）に異常が発生した場合には、運転支援ソフトとＡＭＰとはＣＰＵコア（２）５２に割り当てられ、マルチメディアソフトとＳＭＰとはＣＰＵコア（３）とＣＰＵコア（４）とに割り当てられて実行される。
【００８４】
さらに、図９（ｃ）に示すように、ＣＰＵコア（２）５２に異常が発生した場合は、ＣＰＵコア（３）５４に運転支援ソフトとＡＭＰとが割り当てられ、ＣＰＵコア（４）５６にはＳＭＰとマルチメディアソフトとが割り当てられて実行される。
【００８５】
以下、図９（ｄ）〜図（ｆ）に示すように、ＣＰＵコア（１）５０〜ＣＰＵコア（４）５６に発生した異常に応じて、運転支援ソフトとＡＭＰ及びマルチメディアソフトとＳＭＰが、異常が発生していないＣＰＵコアに割り当てられていく。
【００８６】
このように、ＯＳ３４によって、各ＣＰＵコアに割り当てられる運転支援ソフトやマルチメディアソフトが動的に遷移していくことによって、様々な異常に対して運転支援ソフトは最優先で扱われ、システム全体として安全性が確保できる構成になっている。
（アプリケーション・ソフト３６の処理）
ＣＰＵコア５０〜５６の何れかに異常が発生した場合、ハードウエアに何らかの障害が発生していることを運転者等に伝達すると同時に、故障による機能低下を運転者等に意識させない作りが可能であれば、そのようにすることが望ましい。このためのアプリケーション・ソフト３６における制御処理のフローチャートを図１０に示す。
【００８７】
この制御処理は、アプリケーション・ソフト３６において、定期的に実行され、まず、Ｓ６００において、各ＣＰＵコア５０〜５６の状態がＯＳ３４から取得され、何れかのＣＰＵコア５０〜５６に異常が発生しているか否かが判定される。
【００８８】
何れかのＣＰＵコア５０〜５６において異常が発生していなかった場合（Ｓ６００：Ｎｏ）は、Ｓ６０５に処理が移行され、何れかのＣＰＵコア５０〜５６において異常が発生していた場合（Ｓ６００：Ｙｅｓ）には、Ｓ６１０へ処理が移行される。
【００８９】
Ｓ６０５では、アプリケーション・ソフト３６に通常の処理を実行させる。一方、Ｓ６１０では、ハードウエアに故障が発生した旨がディスプレイ４０に表示され、続くＳ６１５において、ＣＰＵコア５０〜５６に対して、アプリケーション・ソフト３６の処理が軽減される処理が行われる。
【００９０】
例えば、アプリケーション・ソフト３６開発時において、ＣＰＵコア５０〜５６が正常な場合の他に、ＣＰＵコア５０〜５６の何れかに異常が発生した場合でも処理が実行しきれるように処理負荷を軽減した処理手順を準備しておき、ＣＰＵコア５０〜５６の何れかに異常が発生した場合には軽負荷の処理に切り替えることによって、自身の成立性が損なわれないようにすることが考えられる。
【００９１】
具体的には、マルチメディア・ソフトのＤＶＤ再生を例に取ると、ＣＰＵコア５０〜５６が正常である場合にはフレームレート３０Ｈｚ、５．１ｃｈサラウンド音声を再生できるように作り込んでおき、ＣＰＵコア５０〜５６の何れかに異常が発生した場合には、フレームレート１５Ｈｚ、２ｃｈステレオ音声に切り替えて実行するように実装し、ＣＰＵコア５０〜５６の何れかに異常が発生した場合には、動画表示がコマ落ちしたり音声が途切れ途切れにならずに違和感のないサービスを提供するのである。
【００９２】
（カーナビゲーション装置１の特徴）
カーナビゲーション装置１によれば、ＣＰＵコア５０〜５６の何れかに正常に演算を実行できない異常が検出された場合、そのＣＰＵコア５０で実行されていた処理を別のＣＰＵコア５２〜５６に優先度に応じて割り当てる。
【００９３】
したがって、最も優先度が高い処理（運転支援ソフト）が割り当てられたＣＰＵコア５０に前述の異常が発生しても、そこで実行されていた処理は別のＣＰＵコア５２〜５６に割り当てられるので、正常に作動しているＣＰＵコアが１個でもあれば、最も優先度の高い運転支援ソフトは停止されずに実行される。
【００９４】
このようにして、処理の優先度の最も高い運転支援ソフトが割り当てられたＣＰＵコア５０に異常が発生したときに、その処理を他のＣＰＵコア５２〜５６で実行させることができるので、優先度が最も高い運転支援ソフトが通常に実行される。つまり、車両の安全走行制御を通常と同じ性能で実行することができる。
【００９５】
また、すべてのＣＰＵコア５０〜５６に異常が発生した場合には、システム終了処理（Ｓ５３０）において、アプリケーション・ソフト３６に対し、システムが正常に作動しない旨の通知が行われる（図７のＳ５３０）。
【００９６】
したがって、アプリケーション・ソフト３６側でその通知を受け、運転支援ソフトを作動させないようにし、ディスプレイ４０に運転支援を行わないように表示を行えば、運転支援処理においてエラーが発生することがなくなるので、車両の安全性を確保できる。
【００９７】
（その他の実施形態）
以上、本発明の実施形態について説明したが、本発明は、本実施形態に限定されるものではなく、種々の態様を採ることができる。
【００９８】
（１）上記実施形態では、結果が分かっている単純な加算や乗算を行い、その結果が正しいことを判定して、ＣＰＵコア５０〜５６に限定して異常検出を行ったが、ＣＰＵコア５０〜５６に限定せず、マルチコアＣＰＵにおけるＣＰＵコア周りの、例えばキャッシュ・メモリのような複数の同等回路が備わっており、故障時には別の回路に切替え可能な要素について検出対象を拡大してもよい。
【００９９】
ただし、その場合、異常検出に要する時間中は、検出中のＣＰＵコア５０〜５６がカーナビゲーション装置１の機能を実現するソフト処理は行えないため、検出の正確性とシステム・パフォーマンスはトレードオフの関係にあり、どこまで検出すべきかはカーナビゲーション装置１自体に求められる信頼性レベルによってシステム設計時に決定する必要がある。
【０１００】
また、システム・パフォーマンスが許せば、ＣＰＵコアを構成する、フェッチ回路、デコード回路、演算回路、外部アクセス回路、レジスタ等の構成要素を網羅的に検出するようにしてもよい。
【０１０１】
（２）上記実施形態では、アプリケーション・ソフト３６の負荷を軽減させる方法として、ＤＶＤ再生の際のフレームレートを低減させていたが、ナビゲーション・ソフトの処理負荷の高い３Ｄ地図表示をクロック周波数の低減中には規制し、主として２次元地図を表示するようにしてもよい。
【図面の簡単な説明】
【０１０２】
【図１】カーナビゲーション装置１のシステムイメージを示す図である。
【図２】カーナビゲーション装置１の概略のハードウエア構成を示すブロック図である。
【図３】オペレーティング・システム３４のメイン処理のフローチャートである。
【図４】異常検出処理の流れを示すフローチャートである。
【図５】再割当処理の流れを示すフローチャートである。
【図６】ＳＭＰ側ＣＰＵコア再割当処理の流れを示すフローチャートである。
【図７】ＡＭＰ側ＣＰＵコア再割当処理の流れを示すフローチャートである。
【図８】ＣＰＵコア（１）５０に異常が発生した時のマイクロコンピュータ３におけるソフトウエア構成を示した図である。
【図９】マルチコアＣＰＵ１０が正常に作動している状態から各ＣＰＵコアに異常が発生した場合のオペレーティング・システム及びアプリケーション・ソフトの割当て状態の遷移関係を示す図である。
【図１０】アプリケーション・ソフト３６における制御処理のフローチャートである。
【符号の説明】
【０１０３】
１…カーナビゲーション装置、３…マイクロコンピュータ、１０…マルチコアＣＰＵ、１４…Ｉ／Ｏ、１６…ＦＬＡＳＨ・ＲＯＭ、１８…ＲＡＭ、２０…描画ＬＳＩ、２２…Ｄ／Ａコンバータ、３４…オペレーティングシステム（ＯＳ）、３６…アプリケーション・ソフト、４０…ディスプレイ、４２…スピーカ、４４…スイッチ、５０，５２，５４，５６…ＣＰＵコア、６０，６２，６４，６６…キャッシュメモリ、６８…キャッシュ同期部、７０…メモリ・コントローラ。
【図２】
2008123439.tif 000003
【図３】
2008123439.tif 000004
【図４】
2008123439.tif 000005
【図５】
2008123439.tif 000006
【図６】
2008123439.tif 000007
【図７】
2008123439.tif 000008
【図８】
2008123439.tif 000009
【図９】
2008123439.tif 000010
【図１０】
2008123439.tif 000011
【図１】
2008123439.tif 000012