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