(57)【要約】【課題】システム全体の起動時間の高速化を図ることができる起動制御方法、情報処理装置及びプログラムを提供すること【解決手段】本発明にかかる起動制御方法は、第１のＯＳ１００の起動処理を分担して実行する複数の第１のＣＰＵ８０、８１と、第２のＯＳ１０１の起動処理を実行し、第１のＣＰＵ８０、８１とメインメモリ２０を共有する第２のＣＰＵ８２の起動制御方法である。複数の第１のＣＰＵ８０、８１のうち、第１のＯＳ１００の起動処理を最後に開始するＣＰＵ８１が、起動処理を開始するまでの期間において、第１のＣＰＵ８０、８１及び第２のＣＰＵ８２からのメインメモリ２０へのアクセスの衝突状況を検出する衝突状況検出ステップと、衝突状況に応じて、制限期間を決定する制限期間決定ステップと、第１のＯＳ１００と第２のＯＳ１０１の起動処理を実行する場合に、制限期間の間、第２のＣＰＵ８２の動作を制限する動作制限ステップを備える。【選択図】図１
2010198165.tif 000002
【特許請求の範囲】
【請求項１】
第１のＯＳの起動処理を分担して実行する複数の第１のＣＰＵと、第２のＯＳの起動処理を実行し、前記第１のＣＰＵとメインメモリを共有する第２のＣＰＵの起動制御方法であって、
前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの起動開始前期間において、前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突状況を検出する衝突状況検出ステップと、
検出された衝突状況に応じて、制限期間を決定する制限期間決定ステップと、
前記第１のＯＳと前記第２のＯＳの起動処理を実行する場合に、前記制限期間の間、前記第２のＣＰＵの動作を制限する動作制限ステップを備えた起動制御方法。
【請求項２】
前記衝突状況検出ステップは、前記起動開始前期間を所定期間のそれぞれに区分した区分期間のそれぞれにおいて、前記衝突状況を検出し、
前記制限期間決定ステップは、前記区分期間のそれぞれにおける前記衝突状況に応じて、当該区分期間を前記制限期間として決定する請求項１に記載の起動制御方法。
【請求項３】
前記衝突状況は、前記メインメモリへのアクセスの衝突が発生した回数に基づいた値である請求項１又は２に記載の起動制御方法。
【請求項４】
前記制限期間決定ステップは、前記衝突が発生した回数に基づいた値が所定の閾値に達している場合に、前記区分期間を前記制限期間として決定する請求項２に従属する請求項３に記載の起動制御方法。
【請求項５】
前記動作制限ステップは、前記制限期間において、前記第２のＣＰＵの動作を停止させる請求項１乃至４のいずれかに記載の起動制御方法。
【請求項６】
前記第２のＯＳは、前記第２のＣＰＵの動作を制限しない場合において、前記１のＯＳよりも起動開始から起動完了までにかかる時間が短いＯＳである請求項１乃至５のいずれかに記載の起動制御方法。
【請求項７】
前記起動制御方法は、前記第１のＯＳ及び前記第２のＯＳが起動完了するまでの起動時間と、前回の起動時における前記起動時間のそれぞれを取得する起動時間取得ステップをさらに備え、
前記制限期間決定ステップは、前記起動時間および前回の起動時における前記起動時間に基づいて、前記制限期間を決定するかしないかを判断する請求項１乃至６のいずれかに記載の起動制御方法。
【請求項８】
第１のＯＳの起動処理を行う複数の第１のＣＰＵと、
第２のＯＳの起動処理を行う第２のＣＰＵと、
前記第１のＣＰＵ及び前記第２のＣＰＵから共有されるメインメモリと、
前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの期間を所定期間のそれぞれに区分した区分期間のそれぞれにおいて、前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突状況を検出する衝突状況検出部と、
前記区分期間のそれぞれにおける前記衝突状況を表示する表示部を備えた情報処理装置。
【請求項９】
第１のＯＳの起動処理を行う複数の第１のＣＰＵと、
第２のＯＳの起動処理を行う第２のＣＰＵと、
前記第１のＣＰＵ及び前記第２のＣＰＵから共有されるメインメモリと、
前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの起動開始前期間において、前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突状況を検出する衝突状況検出部と、
検出された衝突状況に応じて、制限期間を決定する制限期間決定部と、
前記第１のＯＳと前記第２のＯＳの起動処理を実行する場合に、前記制限期間の間、前記第２のＣＰＵの動作を制限する動作制限部を備えた情報処理装置。
【請求項１０】
第１のＯＳの起動処理を行う複数の第１のＣＰＵ及び第２のＯＳの起動処理を行う第２のＣＰＵが共有するメインメモリのアクセス状況を監視するプログラムであって、
前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの期間を所定期間のそれぞれに区分した区分期間のそれぞれにおいて、前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突状況を検出するステップと、
前記区分期間のそれぞれにおける前記衝突状況を記憶するステップをコンピュータに実行させるプログラム。
【請求項１１】
第１のＯＳの起動処理を分担して実行する複数の第１のＣＰＵと、第２のＯＳの起動処理を実行し、前記第１のＣＰＵとメインメモリを共有する第２のＣＰＵの制御内容を決定するプログラムであって、
前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの期間を所定期間のそれぞれに区分した区分期間のそれぞれにおける前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突が発生した回数に基づいた値を、所定の閾値と比較するステップと、
前記比較した結果に基づいて、前記第２のＣＰＵの動作を制限する制限期間を決定するステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、起動制御方法、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
組み込みシステムにおいて、リアルタイム性が求められる処理もしくはスケーラビリティが求められる処理等の性質の異なる処理を動作させることが必要となる場合がある。そのため、開発現場においては、異なるベンダにより開発された異なる性質の複数のＯＳ(Operating System)が組み込みシステムに搭載される場合がある(以下、このように複数のＯＳが搭載されたシステムを「ハイブリッドＯＳシステム」とする)。このようなハイブリッドＯＳシステムの異種ＯＳ間において、補助記憶装置のような周辺装置を共有して利用するための仕組みや機構が提案され、実装されてきている。
【０００３】
一方、このような異種ＯＳの起動シーケンスは、各ＯＳのベンダが個別に高速化を図っており、メモリバスのような共有リソースに関する制御を最適化する手法は提案されていない。また、各ＯＳのベンダが個別に高速化を図ったとしても、ユーザがシステムを利用可能となるのは、最も起動に時間がかかるＯＳの起動が完了してからである。
このようなことから、ハイブリッドＯＳシステムは、システム全体の起動時間の高速化が十分に図れていない。
【０００４】
なお、特許文献１には、複数種のオペレーティング・システムにおいて、ユーザインタフェース装置を使用するオペレーティング・システムを情報処理装置の稼働中に切り替えることを可能とする技術が開示されている。
【０００５】
また、特許文献２には、データチャネル装置(以下「ＣＨ」とする)がＣＰＵ(Central Processing Unit)から送られる起動元中央処理装置番号をもとに競合処理を行い、ＣＰＵ間の競合発生有無、受信オーダの正否を同一制御レジスタ上に設定することにより、ＣＰＵがＣＨを起動する時の状態チェックを１回のみで可能とする技術が開示されている。
【０００６】
さらに、特許文献３には、上位のプロセッサがメモリアクセスを行う場合に、下位のプロセッサに対して動作停止指示信号を送出することにより、２つのプロセッサ間のメモリアクセス競合を簡単に防止することができる技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−３５０９５６号公報
【特許文献２】特開昭６１−１６６６６９号公報
【特許文献３】特開平０３−０８０３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
背景技術として説明したように、ハイブリッドＯＳシステムは、システム全体の起動時間の高速化が十分に図れていないという問題がある。
【０００９】
本発明の目的は、上述のような課題を解決するためになされたものであり、システム全体の起動時間の高速化を図ることができる起動制御方法、情報処理装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明にかかる起動制御方法は、第１のＯＳの起動処理を分担して実行する複数の第１のＣＰＵと、第２のＯＳの起動処理を実行し、前記第１のＣＰＵとメインメモリを共有する第２のＣＰＵの起動制御方法であって、前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの起動開始前期間において、前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突状況を検出する衝突状況検出ステップと、検出された衝突状況に応じて、制限期間を決定する制限期間決定ステップと、前記第１のＯＳと前記第２のＯＳの起動処理を実行する場合に、前記制限期間の間、前記第２のＣＰＵの動作を制限する動作制限ステップを備えたものである。
【００１１】
本発明にかかる情報処理装置は、第１のＯＳの起動処理を行う複数の第１のＣＰＵと、第２のＯＳの起動処理を行う第２のＣＰＵと、前記第１のＣＰＵ及び前記第２のＣＰＵから共有されるメインメモリと、前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの期間を所定期間のそれぞれに区分した区分期間のそれぞれにおいて、前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突状況を検出する衝突状況検出部と、前記区分期間のそれぞれにおける前記衝突状況を表示する表示部を備えたものである。
【００１２】
他方、本発明にかかる情報処理装置は、第１のＯＳの起動処理を行う複数の第１のＣＰＵと、第２のＯＳの起動処理を行う第２のＣＰＵと、前記第１のＣＰＵ及び前記第２のＣＰＵから共有されるメインメモリと、前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの起動開始前期間において、前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突状況を検出する衝突状況検出部と、検出された衝突状況に応じて、制限期間を決定する制限期間決定部と、前記第１のＯＳと前記第２のＯＳの起動処理を実行する場合に、前記制限期間の間、前記第２のＣＰＵの動作を制限する動作制限部を備えたものである。
【００１３】
本発明にかかるプログラムは、第１のＯＳの起動処理を行う複数の第１のＣＰＵ及び第２のＯＳの起動処理を行う第２のＣＰＵが共有するメインメモリのアクセス状況を監視するプログラムであって、前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの期間を所定期間のそれぞれに区分した区分期間のそれぞれにおいて、前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突状況を検出するステップと、前記区分期間のそれぞれにおける前記衝突状況を記憶するステップをコンピュータに実行させるものである。
【００１４】
他方、本発明にかかるプログラムは、第１のＯＳの起動処理を分担して実行する複数の第１のＣＰＵと、第２のＯＳの起動処理を実行し、前記第１のＣＰＵとメインメモリを共有する第２のＣＰＵの制御内容を決定するプログラムであって、前記複数の第１のＣＰＵのうち、前記第１のＯＳの起動処理を最後に開始するＣＰＵが、当該起動処理を開始するまでの期間を所定期間のそれぞれに区分した区分期間のそれぞれにおける前記第１のＣＰＵ及び前記第２のＣＰＵからの前記メインメモリへのアクセスの衝突が発生した回数に基づいた値を、所定の閾値と比較するステップと、前記比較した結果に基づいて、前記第２のＣＰＵの動作を制限する制限期間を決定するステップをコンピュータに実行させるものである。
【発明の効果】
【００１５】
本発明により、システム全体の起動時間の高速化を図ることができる起動制御方法、情報処理装置及びプログラムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】発明の実施の形態１にかかるハイブリッドＯＳシステムの概念図である。
【図２】発明の実施の形態２にかかるハイブリッドＯＳシステムの概念図である。
【図３】発明の実施の形態２にかかるハイブリッドＯＳシステムを通常起動した場合における各ＣＰＵコアのＯＳ起動処理区間を示す図である。
【図４】発明の実施の形態２にかかるハイブリッドＯＳシステムのメインメモリへのアクセスの衝突回数を取得する区間を示す図である。
【図５】発明の実施の形態２にかかるハイブリッドＯＳシステムの処理を示すシーケンス図である。
【図６】発明の実施の形態３にかかるハイブリッドＯＳシステムの概念図である。
【図７】発明の実施の形態３にかかるハイブリッドＯＳシステムの処理を示すシーケンス図である。
【発明を実施するための形態】
【００１７】
発明の実施の形態１．
図１を参照して、本発明の実施の形態１にかかるハイブリッドＯＳシステムの処理の概要について説明する。
【００１８】
図１は、本発明の実施の形態１にかかるハイブリッドＯＳシステム１及びハイブリッドＯＳシステム１上において動作するプログラム２を示す概念図である。
ハイブリッドＯＳシステム１は、ＣＰＵ８０、８１、８２及びメインメモリ２０を備える。
【００１９】
ＣＰＵ８０、８１、８２は、メインメモリ２０を共有しながら、ＯＳ１００、１０１の起動処理を行う。ＣＰＵ８０、８１は、ＯＳ１００の起動処理を行い、ＣＰＵコア８２は、ＯＳ１０１の起動処理を行う。なお、本実施の形態１におけるＣＰＵ８０、８１、８２とは、それぞれがシングルコアＣＰＵであってもよく、マルチコアＣＰＵに含まれるＣＰＵコアのそれぞれであってもよい。
メインメモリ２０は、ＣＰＵ８０、８１、８２がＯＳ１００、１０１の起動処理を行うために必要な情報を記憶する。
【００２０】
動作制限部１０２は、ＯＳ１００、１０１の起動処理を実行する場合に、ＣＰＵ８２の動作を制限する制限期間の間、ＣＰＵ８２の動作を制限する処理を行う。
衝突状況検出部１０３は、ＣＰＵ８０、８１、８２からのメインメモリ２０へのアクセスの衝突状況を検出する処理を行う。
制限期間決定部１０４は、衝突状況検出部１０３が検出した衝突状況に応じて、ＣＰＵ８２の動作を制限する制限期間を決定する処理を行う。
【００２１】
続いて、本発明の実施の形態１にかかるハイブリッドＯＳシステムの処理について説明する。
【００２２】
まず、ハイブリッドＯＳシステム１の電源の投入もしくは再起動が行われると、ＣＰＵコア８０、８２は、ＯＳ１００、１０１の起動処理を開始する。また、ＣＰＵコア８１は、動作制御部１０２及び衝突状況検出部１０３を動作させる。
次に、衝突状況検出部１０３は、ＣＰＵ８１がＯＳ１００の起動処理を開始するまでの期間において、ＣＰＵ８０、８１、８２からのメインメモリ２０へのアクセスの衝突状況を検出する。
また、動作制限部１０２は、ＣＰＵ８１がＯＳ１００の起動処理を開始するまでの期間のうち、ＣＰＵ８２の動作を制限する制限期間において、ＣＰＵ８２の動作を制限する。
次に、ＯＳ１００の起動が完了すると、ＯＳ１００は、制限期間決定部１０４を動作させる。起動制限期間決定部１０４は、検出した衝突状況に応じて、制限期間を決定する。
【００２３】
発明の実施の形態２．
図２を参照して、本発明の実施の形態２にかかるハイブリッドＯＳシステムについて説明する。
【００２４】
図２は、本発明の実施の形態２にかかるハイブリッドＯＳシステム１及びハイブリッドＯＳシステム１上において動作するプログラム２を示す概念図である。
ハイブリッドＯＳシステム１は、ＣＰＵコア１０、１１、１２、１３、メインメモリ２０、バスコントローラ２１、記憶装置２２、表示装置３０を備える。
【００２５】
ＣＰＵコア１０、１１、１２、１３は、メインメモリ２０を共有しながら、ＯＳ１００、１０１の起動処理を行う。ＣＰＵコア１０、１１は、ＯＳ１００の起動処理を行い、ＣＰＵコア１２、１３は、ＯＳ１０１の起動処理を行う。
メインメモリ２０は、ＣＰＵコア１０、１１、１２、１３がＯＳ１００、１０１の起動処理を行うために必要な情報を記憶する。
バスコントローラ２１は、ＣＰＵコア１０、１１、１２、１３からのメインメモリ２０へのアクセスを制御する。また、バスコントローラ２１は、ＣＰＵコア１０、１１、１２、１３からのメインメモリ２０へのアクセスの衝突を検出し、ラウンドロビンによって、メインメモリ２０にアクセスするＣＰＵコアを決定するとともに、検出した衝突の回数をカウントして自身の有するレジスタ(図示せず)に記憶する。
【００２６】
記憶装置２２は、ＯＳ１００、１０１のプログラム、ＣＰＵコア停止プログラム１１０、衝突回数取得プログラム１１１及び衝突回数出力プログラム１１２を格納する。記憶装置２２は、例えば、フラッシュメモリ又はＨＤＤ(Hard Disc Drive)等により構成される。
ＣＰＵコア停止プログラム１１０は、ＣＰＵコアの動作を停止する処理を行う。ＣＰＵコア停止プログラム１１１は、動作制限部として機能する。
衝突回数取得プログラム１１１は、ＣＰＵコア１０、１１、１２、１３からのメインメモリ２０へのアクセスの衝突回数を取得する処理を行う。なお、ＣＰＵコア停止プログラム１１０及び衝突回数取得プログラム１１１は、別々のプログラムとせず、１つのプログラムとしてもよい。衝突回数取得プログラム１１１及びバスコントローラ２１は、衝突状況検出部として機能する。
衝突回数出力プログラム１１２は、衝突回数取得プログラム１１１が取得した衝突回数を表示装置３０に出力する処理を行う。
表示装置３０は、衝突回数出力プログラム１１２から出力された内容を表示する処理を行う。表示装置３０は、例えば、ＣＲＴ(Cathode Ray Tube)、プラズマディスプレイ又は液晶ディスプレイ等により構成される。
【００２７】
続いて、図３を参照して、本発明の実施の形態２にかかるハイブリッドＯＳシステムを通常起動した場合におけるＯＳ起動処理について説明する。ここで、通常起動した場合におけるＯＳ起動処理とは、ＯＳ起動処理において、ＣＰＵコア停止プログラム１１１によってＣＰＵコアを停止させることがない場合におけるＯＳ起動処理である。
【００２８】
図３は、本発明の実施の形態２にかかるハイブリッドＯＳシステムの通常起動した場合における各ＣＰＵコアのＯＳ起動処理区間を示す図である。
まず、図３に示す時刻６０において、ハイブリッドＯＳシステム１の電源の投入もしくは再起動が行われると、ＯＳ１００側ではＣＰＵコア１０のみを使用して起動処理４０を開始し、ＯＳ１０１側ではＣＰＵコア１２のみを使用して起動処理５０を開始する。このように、複数のＣＰＵコアによって動作するＯＳは、起動処理を開始するＣＰＵコアを確定しておくことにより、安定した起動処理を行うようになっている。また、このようなＯＳは、ドライバのロード等のＯＳ上で動作するプロセスが使用するハードウェアに対する初期化処理が完了してから、プロセスのスケジューラを起動して、複数のＣＰＵコアを使用してプロセスの協調動作を行うことが可能となる。
【００２９】
図３においては、ＯＳ１００は、時刻６３までハードウェアに対する初期化処理を行っており、ＯＳ１０１は、時刻６１までハードウェアに対する初期化処理を行っている。そのため、ＯＳ１００は、時刻６３となってからＣＰＵコア１１を初期化し、ＣＰＵコア１１を使用して起動処理４１を行うことが可能となり、ＯＳ１０１は、時刻６１となってからＣＰＵコア１３を初期化し、ＣＰＵコア１３を使用して起動処理５１を行うことが可能となる。
【００３０】
ここで、ＯＳ１００は、時刻６４に起動が完了し、ＯＳ１０１は、時刻６２に起動が完了する。ＯＳ１００が時刻６４に起動完了し、ＯＳ１０１がそれよりも早い時刻６２に起動完了しているが、ユーザがハイブリッドＯＳシステムを使用可能となるのは、時刻６４からとなる。
本実施の形態１では、この起動処理を行っていない期間が最も長いＣＰＵコア１１を利用することによって、ハイブリッドＯＳシステムの起動時間の高速化を実現する。
【００３１】
続いて、図４を参照して、本発明の実施の形態２にかかるハイブリッドＯＳシステムのメインメモリ２０へのアクセスの衝突回数の取得方法およびＣＰＵコアを停止させる区間の決定方法について説明する。
【００３２】
図４は、本発明の実施の形態２にかかるハイブリッドＯＳシステムのメインメモリ２０におけるアクセスの衝突回数を取得する区間を示す図である。
メインメモリ２０におけるアクセスの衝突回数は、ＣＰＵコア１１が実行する衝突回数取得プログラム１１１が取得する。衝突回数取得プログラム１１１は、図４に示すように、時刻６０を基準として、所定の時間間隔ｔ毎に区分した区間７０、７１、７２のそれぞれにおいて、ＣＰＵコア１０、１１、１２、１３からのメインメモリ２０へのアクセスの衝突回数を取得する。なお、区間７２の次以降の区間は図示を省略している。
【００３３】
衝突回数取得プログラム１１１は、ＣＰＵコア１１がＯＳ１００の起動処理を行っていない時刻６０から時刻６３の期間に実行され、各区間７０、７１、７２における衝突回数を取得する。衝突回数取得プログラム１１１は、レジスタ及びキャッシュメモリ(図示せず)にロードされて実行される。つまり、衝突回数取得プログラム１１１は、ＣＰＵコア１１内のレジスタ及びキャッシュメモリに収まるサイズのプログラムである。そのため、衝突回数取得プログラム１１１を実行するＣＰＵコア１１からのメインメモリ２０へのアクセスによる衝突は発生しない。
【００３４】
衝突回数取得プログラム１１１は、バスコントローラ２１のレジスタに記憶されている衝突回数のカウント値を参照することにより、各区間７０、７１、７２における衝突回数を取得する。例えば、各区間７０、７１、７２の終了時点と開始時点におけるカウント値の差分により衝突回数が分かる。このように、メインメモリ２０へのアクセスの衝突状況を衝突回数として検出する。
【００３５】
ここで、衝突回数が多い区間は、ＣＰＵコア１０、１１、１２、１３のメインメモリ２０へのアクセス待ちとなる状況が多く発生していることとなる。よって、アクセス待ちとなっているＣＰＵコア１０、１１、１２、１３は、待ち時間の間にＯＳ１００、１０１の起動処理を行うことができなくなっている。
そこで、衝突回数が多い区間の間、起動完了が早いＯＳ１０１の起動処理を行うＣＰＵコア１２、１３の動作を停止するように決定する。このように、衝突回数が多い区間において、起動完了が早いＯＳ１０１の起動処理を行うＣＰＵコア１２、１３の動作を制限することにより、起動完了が遅いＯＳ１００の起動処理を行うＣＰＵコア１０、１１のメインメモリ２０へのアクセス待ち時間を低減し、ハイブリッドＯＳシステムの起動時間を高速化することができる。
【００３６】
なお、バスコントローラ２１は、ＣＰＵコア１２とＣＰＵコア１３とによるメインメモリ２０へのアクセスの衝突も衝突回数としてカウントしている。しかし、ＯＳ１０１のように起動完了が早いＯＳは、一般に起動完了が遅いＯＳ１００と比較してコードサイズがコンパクトであり、メインメモリ２０へのアクセス回数も少ない。そのため、大半の衝突は、ＯＳ１００の起動処理を行うＣＰＵコア１０、１１からのアクセスを含んだものであるため、ＣＰＵコア１０、１１のアクセス待ち時間を有効に低減することができる。
【００３７】
具体的に、各区間７０、７１、７２において、ＣＰＵコア１２、１３を停止させるかどうかの判断は、式（１）によって行う。式（１）は、衝突回数の閾値Ｎを算出する式である。ｎは、１回のメインメモリ２０のアクセスにかかる時間である。ｔは、図４に示す所定の時間間隔ｔである。ｐは、ＣＰＵコア１０、１１、１２、１３がラウンドロビンによりメインメモリ２０へのアクセスが待たされる確率である。
【００３８】
Ｎ＝(ｐ×ｔ)／ｎ・・・(１)
【００３９】
なお、ｐは、ユーザが任意に定めた値でよい。例えば、ハイブリッドＯＳシステム１の構成や実測した性能等に基づいて定める。具体的に例えると、本実施の形態２では、ＣＰＵコア１１がＯＳ１００の起動処理を開始するまでには、最大で３つのＣＰＵコア１０、１２、１３がＯＳ１００、１０１の起動処理を行っている。そのため、待たされないでメインメモリ２０にアクセスできる確率を１／３として、アクセスが待たされる確率ｐを２／３(１−１／３)としてもよい。
【００４０】
つまり、各区間７０、７１、７２において、閾値Ｎを超えている区間は、以降のハイブリッドＯＳシステム１の起動処理において、ＣＰＵコア１２、１３の動作を停止するＣＰＵ動作停止区間とする。ＣＰＵコア１２、１３の動作の停止は、ＣＰＵコア１２、１３を停止させるコードをＣＰＵコア停止プログラム１１０に追加することにより行えるようになる。
【００４１】
続いて、図５を参照して、本発明の実施の形態２にかかるハイブリッドＯＳシステムの処理について説明する。
【００４２】
まず、ハイブリッドＯＳシステム１の電源の投入もしくは再起動が行われると、ＣＰＵコア１０、１２は、ＯＳ１００、１０１の起動処理を開始する。また、ＣＰＵコア１１は、ＣＰＵコア停止プログラム１１０及び衝突回数取得プログラム１１１の実行を開始する(Ｓ３００)。
次に、衝突回数取得プログラム１１１は、各区間７０、７１、７２において、ＣＰＵ１０、１１、１２、１３からのメインメモリ２０へのアクセスの衝突回数を取得する(Ｓ３０１)。この処理は、ＣＰＵコア１１がＯＳ１００の起動処理を開始するまで繰り返し行われる。そして、衝突回数取得プログラム１１１は、取得した各区間７０、７１、７２における衝突回数をＣＰＵコア１１内のレジスタ又はキャッシュメモリに記憶する。
また、ＣＰＵコア停止プログラム１１０は、ＣＰＵコア１２、１３の動作を停止させるＣＰＵ動作停止区間となった場合、ＣＰＵ動作停止区間の間、ＣＰＵコア１２、１３の動作を停止する(Ｓ３０２)。ＣＰＵコア１２、１３の動作の停止は、例えば、ＣＰＵコア１２、１３に対して割り込みを発行することにより行う。この処理も、ＣＰＵコア１１がＯＳ１００の起動処理を開始するまで繰り返し行われる。
【００４３】
次に、ＣＰＵコア１１がＯＳ１００の起動処理を開始できるようになると、ＣＰＵコア１１は、ＯＳ１００の起動処理を開始する(Ｓ３０３)。このときに、ＣＰＵコア１１が初期化され、ＣＰＵコア停止プログラム１１０及び衝突回数取得プログラム１１１の実行が終了される(Ｓ３０４)。また、このときに、ＯＳ１００は、ＣＰＵコア１１内のレジスタ又はキャッシュメモリに記憶されている衝突回数をメインメモリ２０に退避する。
次に、ＯＳ１００及びＯＳ１０１の起動が完了すると、ＯＳ１００は、衝突回数出力プログラム１１２の実行を開始する(Ｓ３０５)。また、ＯＳ１００は、起動に要した時間を記憶装置２２に記憶する。ここで、起動が遅いＯＳ１００の起動に要した時間は、システムの起動に要した時間となる。
【００４４】
衝突回数出力プログラム１１２は、メインメモリ２０に記憶されている衝突回数を取得し、表示装置３０に出力して表示する。また、衝突回数出力プログラム１１２は、システムの起動に要した時間を記憶装置２２から取得する。さらに、衝突回数出力プログラム１１２は、前回のシステム起動時のシステムの起動に要した時間が記憶装置２２に記憶されている場合は、その時間も取得する。そして、起動時間がどのぐらい短縮されたかを示す短縮率を算出し、算出した短縮率を表示装置３０に出力して表示する(Ｓ３０６)。短縮率は、例えば、前回のシステムの起動時間と今回のシステムの起動時間の差分である。
このときに、衝突回数出力プログラム１１２は、各区間７０、７１、７２における衝突回数が閾値Ｎを超えているかどうかも併せて表示するようにしてもよい。
【００４５】
ユーザは、表示装置３０に表示された各区間７０、７１、７２のうち、衝突回数が閾値を超えている区間をＣＰＵ動作停止区間として決定し、この区間においてＣＰＵコア１２、１３を停止させるコードをＣＰＵコア停止プログラム１１０に追加する。そして、ハイブリッドＯＳシステム１を再度起動することを繰り返す。なお、この操作の繰り返しは、短縮率に基づいて、前回のシステムの起動時間から今回のシステムの起動時間があまり短縮されておらず、高速化が収束したと判断することができるまで行うとよい。このようにすることで、起動完了が遅いＯＳ１００の起動処理を行うＣＰＵコア１０、１１のメインメモリ２０へのアクセス待ち時間を低減していき、ハイブリッドＯＳシステム１の起動時間を高速化することができる。
【００４６】
以上に説明したように、本実施の形態２によれば、ユーザは、表示装置３０に表示された各区間７０、７１、７２におけるメインメモリ２０へのアクセスの衝突回数を把握することができるようになる。また、これに基づいて、衝突回数が多い区間において、起動完了が早いＯＳ１０１の起動処理を行うＣＰＵコア１２、１３の動作を制限することにより、起動完了が遅いＯＳ１００の起動処理を行うＣＰＵコア１０、１１のメインメモリ２０へのアクセス待ち時間を低減し、ハイブリッドＯＳシステムの起動時間を高速化することができる。
【００４７】
また、メインメモリ２０へのアクセスの衝突が発生した場合には、アクセスを許可するＣＰＵコアを決定するためのオーバヘッドが発生してしまうが、本実施の形態２によれば、このオーバヘッドが発生する回数を低減することができ、それによってもハイブリッドＯＳシステム１の起動時間を高速化することができる。
【００４８】
発明の実施の形態３．
図６を参照して、本発明の実施の形態２にかかるハイブリッドＯＳシステムについて説明する。
【００４９】
図６は、本発明の実施の形態３にかかるハイブリッドＯＳシステム１及びハイブリッドＯＳシステム１上において動作するプログラム２を示す概念図である。
本実施の形態３にかかるハイブリッドＯＳシステム１は、図２に示す本実施の形態２にかかるハイブリッドＯＳシステム１のように記憶装置２２に衝突回数出力プログラム１１２を格納せず、図６に示すように記憶装置２２に停止区間決定プログラム１１３を格納する点において、実施の形態２と異なり、その他の構成要素は同様である。そのため、停止区間決定プログラム１１３以外の構成要素については、説明を省略する。
【００５０】
停止区間決定プログラム１１３は、衝突回数取得プログラム１１１が取得したＣＰＵコア１０、１１、１２、１３からのメインメモリ２０へのアクセスの衝突回数に基づいて、ＣＰＵコア１２、１３の動作を停止するＣＰＵ動作停止区間を決定する。停止区間決定プログラム１１３は、制限期間決定部として機能する。
【００５１】
なお、ハイブリッドＯＳシステムを通常起動した場合におけるＯＳ起動処理、メインメモリ２０へのアクセスの衝突回数の取得方法およびＣＰＵコアを停止させる区間の決定方法については、実施の形態２と同様であるため、説明を省略する。
【００５２】
続いて、図７を参照して、本発明の実施の形態３にかかるハイブリッドＯＳシステムの処理について説明する。なお、ステップＳ３００、３０１、３０２、３０３、３０４における処理は、実施の形態と同様であるため、説明を省略する。
【００５３】
ステップＳ３０４まで処理が終了すると、ＯＳ１００は、停止区間決定プログラム１１３の実行を開始する(Ｓ３１０)。
停止区間決定プログラム１１３は、前回のシステムの起動時間と今回のシステムの起動時間を記憶装置２２から取得する。そして、短縮率を算出し、算出した短縮率からハイブリッドＯＳシステム１の起動時間の高速化が収束したかどうかを判断する(Ｓ３１１)。この判断は、例えば、前回のシステムの起動時間と今回のシステムの起動時間の差分が、予め定めておいた値を下回っているかどうかにより判断する。
【００５４】
起動時間の高速化が収束したと判断した場合、停止区間決定プログラム１１３は、処理を終了する。
起動時間の高速化が収束していないと判断した場合、停止区間決定プログラム１１３は、メインメモリ２０に記憶されている衝突回数を取得する。そして、停止区間決定プログラム１１３は、各区間７０、７１、７２のうち、衝突回数が閾値を超えている区間をＣＰＵ動作停止区間として決定し、この区間においてＣＰＵコア１２、１３を停止させるコードをＣＰＵコア停止プログラム１１０に追加する(Ｓ３１２)。
そして、停止区間決定プログラム１１３は、ＯＳ１００に再起動を指示することにより、ハイブリッドＯＳシステム１を再度起動する(Ｓ３１３)。
【００５５】
このようにして、高速化が収束したと判断されるまで、上述の処理が繰り返される。なお、実施の形態２と同様に、衝突回数および短縮率を表示装置３０に表示するようにしてもよい。
なお、高速化が収束したと判断した場合には、衝突回数取得プログラム１１１及び停止区間決定プログラム１１３を以降のハイブリッドＯＳシステム１の起動処理において、実行させないようにしてもよい。
【００５６】
なお、周辺装置が固定化されている組み込みシステムでは、ＯＳの起動処理におけるアセンブラレベルでの命令の実行順序が固定されているため、起動処理のうちの、メインメモリ２０へのアクセスが行われる位置も常に同じとなる。そのため、本発明は特に組み込みシステムに適用すると有効である。
【００５７】
以上に説明したように、本実施の形態３によれば、実施の形態２と同様に、衝突回数が多い区間において、起動完了が早いＯＳ１０１の起動処理を行うＣＰＵコア１２、１３の動作を制限することにより、起動完了が遅いＯＳ１００の起動処理を行うＣＰＵコア１０、１１のメインメモリ２０へのアクセス待ち時間を低減し、ハイブリッドＯＳシステムの起動時間を高速化することができ、さらに起動時間の高速化を自動化することができる。
【００５８】
なお、本発明は上述の実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施の形態では、起動完了が早いＯＳの起動処理を行う全てのＣＰＵの動作を制限しているが、そのうちの一部のＣＰＵのみの動作を制限してもよい。
【００５９】
以上に説明した本発明にかかるハイブリッドＯＳシステムは、上述の実施の形態の機能を実現するプログラムを記憶した記憶媒体をシステムもしくは装置に供給し、システムあるいは装置の有するコンピュータ又はＣＰＵ、ＭＰＵ（Micro Processing Unit）がこのプログラムを実行することによって、構成することが可能である。
また、このプログラムは様々な種類の記憶媒体に格納することが可能であり、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＢＤ（Blu-ray Disc）、ＲＯＭ（Read Only Memory）カートリッジ、バッテリバックアップ付きＲＡＭ（Random Access Memory）メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジを含む。また、通信媒体には、電話回線の有線通信媒体、マイクロ波回線の無線通信媒体を含み、インターネットも含まれる。
【００６０】
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、コンピュータ上で稼動しているＯＳ（Operating System）もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【符号の説明】
【００６１】
１    ハイブリッドＯＳシステム
２    ハイブリッドＯＳシステム上において動作するプログラム
１０、１１、１２、１３    ＣＰＵコア
２０    メインメモリ
２１    バスコントローラ
２２    記憶装置
３０    表示装置
４０、４１、５０、５１    ＯＳ起動処理区間
６０、６１、６２、６３    時刻
７０、７１、７２        時間間隔ｔ毎に区分した区間
８０、８１、８２    ＣＰＵ
１００、１０１    ＯＳ
１０２    動作制御部
１０３    衝突状況検出部
１０４    制限期間決定部
１１０    ＣＰＵコア停止プログラム
１１１    衝突回数取得プログラム
１１２    衝突回数出力プログラム
１１３    停止区間決定プログラム
【図１】
2010198165.tif 000003
【図２】
2010198165.tif 000004
【図３】
2010198165.tif 000005
【図４】
2010198165.tif 000006
【図５】
2010198165.tif 000007
【図６】
2010198165.tif 000008
【図７】
2010198165.tif 000009