(57)【要約】【課題】本発明は、マルチプロセッサシステムが有している各ＯＳの起動を高速化できる、オペレーティングシステムの起動制御方法の提供を目的とする。【解決手段】複数のプロセッサに電源が投入されたことにより起動したＩＰＬ（０）〜（Ｎ）のうち、特定のプロセッサのＩＰＬ（０）のみ動作を継続させ、それ以外の他のプロセッサのＩＰＬ（１）〜（Ｎ）を停止させるステップと、ＩＰＬ（０）によって、複数のプロセッサが共有するハードウェア資源を管理するＯＳブリッジを起動させるステップと、起動したＯＳブリッジによって、特定のプロセッサに対応するＯＳ−０及び他のプロセッサに対応するＯＳ−１〜ＯＳ−Ｎを起動させるステップと、を備えることを特徴とする、オペレーティングシステムの起動制御方法。【選択図】図３
2008186175.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサのそれぞれによって処理されるオペレーティングシステムの起動を制御する、オペレーティングシステムの起動制御方法であって、
前記複数のプロセッサに電源が投入されたことにより起動したイニシャルプログラムローダのうち、特定のプロセッサのイニシャルプログラムローダのみ動作を継続させ、前記特定のプロセッサ以外の他のプロセッサのイニシャルプログラムローダの動作を停止させるステップと、
前記特定のプロセッサのイニシャルプログラムローダによって、前記複数のプロセッサが共有するハードウェア資源を管理する管理プログラムを起動させるステップと、
前記起動した管理プログラムによって、前記特定のプロセッサに対応するオペレーティングシステム及び前記他のプロセッサに対応するオペレーティングシステムを起動させるステップと、を備えることを特徴とする、オペレーティングシステムの起動制御方法。
【請求項２】
請求項１に記載のオペレーティングシステムの起動制御方法であって、
前記複数のプロセッサのそれぞれに対応するオペレーティングシステムが同じ場合、
前記特定のプロセッサのイニシャルプログラムローダによって、前記管理プログラムを起動させないまま、前記特定のプロセッサに対応するオペレーティングシステムを起動させた後に、
前記特定のプロセッサに対応するオペレーティングシステムによって、前記他のプロセッサに対応するオペレーティングシステムを起動させる、オペレーティングシステムの起動制御方法。
【請求項３】
請求項１又は２に記載のオペレーティングシステムの起動制御方法であって、
前記複数のプロセッサは、マルチコアプロセッサ内のプロセッサコアである、オペレーティングシステムの起動制御方法。
【請求項４】
電源が投入されたことによりイニシャルプログラムローダが起動するプロセッサを複数有する、情報処理装置であって、
前記複数のプロセッサのうち、
前記起動したイニシャルプログラムローダの動作が継続する特定のプロセッサと、
前記起動したイニシャルプログラムローダの動作が停止する他のプロセッサとを備え、
前記特定のプロセッサのイニシャルプログラムローダによって、前記複数のプロセッサが共有するハードウェア資源を管理する管理プログラムを起動させるとともに、
前記起動した管理プログラムによって、前記特定のプロセッサに対応するオペレーティングシステム及び前記他のプロセッサに対応するオペレーティングシステムを起動させる、ことを特徴とする、情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、
前記複数のプロセッサのそれぞれに対応するオペレーティングシステムが同じ場合、
前記特定のプロセッサのイニシャルプログラムローダによって、前記管理プログラムを起動させないまま、前記特定のプロセッサに対応するオペレーティングシステムを起動させた後に、
前記特定のプロセッサに対応するオペレーティングシステムによって、前記他のプロセッサに対応するオペレーティングシステムを起動させる、情報処理装置。
【請求項６】
請求項４又は５に記載の情報処理装置であって、
前記複数のプロセッサは、マルチコアプロセッサ内のプロセッサコアである、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のオペレーティングシステム（ＯＳ：Operating  System）を起動させる技術に関する。
【背景技術】
【０００２】
従来、複数のプロセッサを並列に動作させる技術が知られている（例えば、特許文献１参照）。特許文献１の開示内容によると、起動時に、システム全体を管理するプライマリプロセッサが、プライマリシステムディスク内のＯＳを読み込んで、プライマリプロセッサからの動作要求に応じてグループ全体を動作管理する各グループマスタプロセッサに対して並列に起動をかけている。そして、起動した各グループマスタプロセッサが、グループシステムディスク内のＯＳを読み込んで、自グループ内の各セカンダリプロセッサを起動している。このように動作させることによって、各グループマスタプロセッサや各セカンダリプロセッサを並列起動することを行っている。
【０００３】
また、複数のＯＳを並行して稼働させる技術として、仮想マシンシステムが知られている。仮想マシンシステムは、プロセッサや記憶装置などの実ハードウェア（物理資源）を仮想化して、複数のハードウェア環境（仮想マシン）を生成し、各仮想マシンにおいて個々のＯＳを動作させることができるシステムである。
【特許文献１】特開平１０−１１６２６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、複数のプロセッサコアから構成されるマルチコアプロセッサを搭載する又は複数のプロセッサを搭載するマルチプロセッサシステムにおいて、ＯＳの起動を高速化する技術の開発が進められている。
【０００５】
この点、上述の特許文献１に開示の従来技術では、プライマリプロセッサ、各グループマスタプロセッサ、各セカンダリプロセッサというように、順次起動していくため、マルチプロセッサシステムが有している各ＯＳの起動の高速化には限界がある。
【０００６】
一方、上述の従来の仮想マシンシステムでは、ホストＯＳがシステムの共有ハードウェアを一元管理する機能を担うため、ホストＯＳはゲストＯＳよりも先に起動が完了している必要がある。その結果、マルチプロセッサシステムが有している各ＯＳの起動の高速化を図ることができず、処理の高速化を図るためにマルチプロセッサシステムを採用したとしても、その利点を生かすことができなかった。
【０００７】
そこで、本発明は、マルチプロセッサシステムが有している各ＯＳの起動を高速化できる、オペレーティングシステムの起動制御方法及び情報処理装置の提供を目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、第１の発明は、
複数のプロセッサのそれぞれによって処理されるオペレーティングシステムの起動を制御する、オペレーティングシステムの起動制御方法であって、
前記複数のプロセッサに電源が投入されたことにより起動したイニシャルプログラムローダのうち、特定のプロセッサのイニシャルプログラムローダのみ動作を継続させ、前記特定のプロセッサ以外の他のプロセッサのイニシャルプログラムローダの動作を停止させるステップと、
前記特定のプロセッサのイニシャルプログラムローダによって、前記複数のプロセッサが共有するハードウェア資源を管理する管理プログラムを起動させるステップと、
前記起動した管理プログラムによって、前記特定のプロセッサに対応するオペレーティングシステム及び前記他のプロセッサに対応するオペレーティングシステムを起動させるステップと、を備えることを特徴としている。
【０００９】
また、第２の発明は、第１の発明に係るオペレーティングシステムの起動制御方法であって、前記複数のプロセッサのそれぞれに対応するオペレーティングシステムが同じ場合、前記特定のプロセッサのイニシャルプログラムローダによって、前記管理プログラムを起動させないまま、前記特定のプロセッサに対応するオペレーティングシステムを起動させた後に、前記特定のプロセッサに対応するオペレーティングシステムによって、前記他のプロセッサに対応するオペレーティングシステムを起動させる、ことを特徴としている。
【００１０】
また、第３の発明は、第１又は第２の発明に係るオペレーティングシステムの起動制御方法であって、前記複数のプロセッサは、マルチコアプロセッサ内のプロセッサコアであることを特徴としている。
【００１１】
一方、上記目的を達成するため、第４の発明は、
電源が投入されたことによりイニシャルプログラムローダが起動するプロセッサを複数有する、情報処理装置であって、
前記複数のプロセッサのうち、
前記起動したイニシャルプログラムローダの動作が継続する特定のプロセッサと、
前記起動したイニシャルプログラムローダの動作が停止する他のプロセッサとを備え、
前記特定のプロセッサのイニシャルプログラムローダによって、前記複数のプロセッサが共有するハードウェア資源を管理する管理プログラムを起動させるとともに、
前記起動した管理プログラムによって、前記特定のプロセッサに対応するオペレーティングシステム及び前記他のプロセッサに対応するオペレーティングシステムを起動させる、ことを特徴としている。
【００１２】
また、第５の発明は、第４の発明に係る情報処理装置であって、
前記複数のプロセッサのそれぞれに対応するオペレーティングシステムが同じ場合、前記特定のプロセッサのイニシャルプログラムローダによって、前記管理プログラムを起動させないまま、前記特定のプロセッサに対応するオペレーティングシステムを起動させた後に、前記特定のプロセッサに対応するオペレーティングシステムによって、前記他のプロセッサに対応するオペレーティングシステムを起動させる、ことを特徴としている。
【００１３】
また、第６の発明は、第４又は第５に係る情報処理装置であって、前記複数のプロセッサは、マルチコアプロセッサ内のプロセッサコアであることを特徴としている。
【発明の効果】
【００１４】
本発明によれば、本発明は、マルチプロセッサシステムが有している各ＯＳの起動を高速化できる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照しながら、本発明を実施するための最良の形態の説明を行う。図１は、本発明に係る情報処理装置の実施形態であるコンピュータ１００のハードウェア構成の一例を示した図である。コンピュータ１００は、例えば、車両制御機能を担うコンピュータ（制御系ＥＣＵ）やマルチメディア機能を担うコンピュータ（情報系ＥＣＵ）である。制御系ＥＣＵの具体例として、エンジンを制御するエンジンＥＣＵ、操舵動作を制御するステアリングＥＣＵ、制動動作を制御するブレーキＥＣＵなどが挙げられる。情報系ＥＣＵの具体例として、カーナビゲーション用コンピュータ、ＤＶＤやビデオ用コンピュータ、インターネットアクセス用コンピュータ、他車や路側インフラや管理センター等の車外通信設備と通信するための通信用コンピュータなどが挙げられる。
【００１６】
コンピュータ１００は、図１に示されるように、ＯＳやそのＯＳ上で動作する上述の車両制御機能やエンジン制御機能を実現するアプリケーションプログラムなどのプログラムを記憶するＲＯＭ（不揮発性メモリ）３０と、そのプログラムを処理するマルチコアプロセッサ１０と、そのプログラムの作業領域であるＲＡＭ（揮発性メモリ）２０と、図示しない入力回路や出力回路などの外部装置との間で信号を送受するためのインターフェースであるＩ／Ｏ４０などを有する。
【００１７】
コンピュータ１００は、図１に示されるように、プロセッサコアを複数有するマルチコアプロセッサ１０を有している。マルチコアプロセッサは、２つ以上のプロセッサコアを１個のパッケージに集積したマイクロプロセッサである。マルチコアプロセッサ内のプロセッサコアは、互いに独立して動作する。マルチコアプロセッサ１０には、プロセッサコア０，１，２，３の４つのプロセッサコアが内蔵される。コア０，１，２，３のそれぞれによって、独立に又は連携して、ＯＳやそのＯＳ上で動作する上述の車両制御機能やエンジン制御機能を実現するアプリケーションプログラムなどのプログラムが処理される。コア０，１，２，３のそれぞれは、プログラムの実行を指示する割り込みが発生すると、そのプログラムをＲＯＭ３０からＲＡＭ２０に読み込んで実行する。
【００１８】
コア０，１，２，３によって処理されるＯＳの具体例として、リアルタイムＯＳ（以下、「ＲＴ−ＯＳ」という）やマルチメディアＯＳ（以下、「ＭＭ−ＯＳ」という）などが挙げられる。各コアによって処理されるＯＳは、必ずしも同じＯＳとは限らず、異なるＯＳでもよい。マルチプロセッサシステムをその構成プロセッサ毎に独立して運用可能なシステム（パーティション）に分割することにより複数のＯＳを並列に運用可能にすることによって、システムの多様化や大規模化に対応することができる。
【００１９】
ＲＴ−ＯＳは、処理をリアルタイムに実行することを重視するため、バッチ処理やＴＳＳ（Time  Sharing  System）などの機能が優れたＯＳである。車両制御を行う制御系ＥＣＵに用いられる制御プログラムでは制御応答性や安全性の確保などの観点から所定の処理をリアルタイムに実行する必要があるため、要求されるリアルタイム性を実現できるＲＴ−ＯＳが制御系ＥＣＵには使用される。ＲＴ−ＯＳの具体例として、ＯＳＥＣ、ＩＴＲＯＮなどが挙げられる。
【００２０】
ＭＭ−ＯＳは、ＭＰＥＧのＣｏｄｅｃ等の圧縮／伸張処理、ＧＵＩ（Graphical  User  Interface）等のユーザインターフェース処理、セキュリティ管理を含むインターネット接続処理などのマルチメディア処理がＲＴ−ＯＳに比べ優れたＯＳである。要求されるマルチメディア処理を実現できるＭＭ−ＯＳが情報系ＥＣＵには使用される。ＭＭ−ＯＳの具体例として、Ｌｉｎｕｘ（登録商標）、ＱＮＸ（登録商標）などが挙げられる。
【００２１】
マルチコアプロセッサ１０に電源回路（不図示）から電源が供給されると、その内蔵のコア０，１，２，３にも電源が供給される。電源が供給されたコア０，１，２，３のうち、コア０のＩＰＬ（Initial  Program  Loader）は、ＲＯＭ３０に記憶されたＯＳブリッジ５０（プログラム）をＲＡＭ２０に読み込んで起動する。ＩＰＬは、ブート段階においてメモリの初期化等のＯＳ起動のための準備処理を行うプログラムである。
【００２２】
図２は、ＯＳブリッジ５０の概念図である。ＯＳブリッジ５０は、ＲＡＭ２０やＩ／Ｏ４０などの各コアが共有するハードウェア資源を管理し、それらのハードウェア資源に対する排他的アクセス制御を実行する（共有ハードウェア管理機能）。すなわち、ＯＳブリッジ５０は、例えば所定のタスク切り替えの発生タイミングや所定の周期に応じて、コア０によって動作するＯＳ−０，コア１によって動作するＯＳ−１，・・・，コアＮによって動作するＯＳ−Ｎのそれぞれに、共有するハードウェア資源を割り当てる処理を実行する。また、ＯＳブリッジ５０は、各ＯＳを起動する機能を有する。さらに、ＯＳブリッジ５０が各ＯＳを起動した後でも、起動した各ＯＳはＯＳブリッジ５０を呼び出してその共有ハードウェア管理機能を利用可能な構成とする。
【００２３】
図３は、本発明に係るオペレーティングシステムの起動制御方法の概要を説明するための図である。図３は、マルチプロセッサシステムをその構成プロセッサ毎にＮ個のパーティションに分割していることを表現している。マルチプロセッサシステムへの電源の投入によって（ステップ１０）、電源が供給された各コアのＩＰＬは起動する（ステップ１２，１４，１６）。システム電源の投入後、コア０以外のコア１のＩＰＬ（１）〜コアＮのＩＰＬ（Ｎ）は停止し（ステップ１８，２０）、コア０のＩＰＬ（０）は最低限のメモリシステムの初期化などの動作環境の設定後にＯＳブリッジ（０）を起動する（ステップ２２）。ＩＰＬ（０）によって起動したＯＳブリッジ（０）は、コア間の通信に必要なシステムの初期化を行った後に、停止している他のコア（１）〜（Ｎ）を起床させる（ステップ２４，２６）。起床した他のコア（１）〜（Ｎ）のそれぞれは、最低限のメモリシステムの初期化などの動作環境の設定後にＯＳブリッジ（１）〜（Ｎ）を起動する。これによって、コア毎にＯＳブリッジが並列に動作することとなる。
【００２４】
次に、各コアによって動作するＯＳブリッジのそれぞれは、ＲＯＭ３０等の不揮発性メモリから自コアのコア番号を取得し、コア番号とコアに搭載されるべきＯＳとの既定の対応関係に基づいて起動すべきＯＳを選択し、選択されたＯＳのエントリポイントに制御を移す。そして、各コアは、並列して、自コアに対応するＯＳの起動処理を開始する。各ＯＳの起動処理において、ＯＳ間で共有するハードウェア資源にアクセスする場合には、ＯＳブリッジの共有ハードウェア管理によって排他アクセス制御を行うことでハードウェア資源の競合を回避する。
【００２５】
図４は、２コア構成のマルチコアプロセッサで２つのＯＳを並列に起動する場合の処理フローである。コア０用のＩＰＬを格納する格納装置がコア０に接続されているとともに、コア１用のＩＰＬを格納する格納装置がコア１に接続されている。これらの格納装置は、例えばＲＯＭ２０である。システム電源投入後（ステップ４０）、ＯＳの起動準備を行うブート段階において、電源の投入がされたコア０でコア０用のＩＰＬ（０）が起動し（ステップ４２）、電源が投入されたコア１でコア１用のＩＰＬ（１）が起動する（ステップ４４）。そして、ＩＰＬ（１）は、必要最小限の初期設定をした後に、一旦、コア１を待機状態に休眠させる。一方、ＩＰＬ（０）は、ＲＯＭ３０からＯＳブリッジをＲＡＭ２０に読み込むことでＯＳブリッジ（０）を起動する（ステップ４６）。コア０によって動作するＯＳブリッジ（０）は、休眠しているコア１を起床させる。起床したコア１のＩＰＬ（１）は、ＲＯＭ３０からＯＳブリッジをＲＡＭ２０に読み込むことでＯＳブリッジ（１）を起動する（ステップ４８）。この段階で、コア０とコア１のそれぞれで、ＯＳブリッジが並列に動作している。
【００２６】
そして、ＯＳブリッジ（０）は、コア０に対応するＯＳ−０を選択し、ＯＳ−０のエントリポイントに移ることによって、ＯＳ−０を起動する。これによって、コア０によってＯＳ−０（０）の起動処理が開始する。並行して、同様に、ＯＳブリッジ（１）は、コア１に対応するＯＳ−１を選択し、ＯＳ−１のエントリポイントに移ることによって、ＯＳ−１を起動する。これによって、コア１によってＯＳ−１（１）の起動処理が開始する。
【００２７】
それぞれのＯＳの起動処理が開始すると、周知のＯＳ起動処理の通り、カーネルの処理化とユーザインターフェース部の初期化が行われる。カーネルの初期化段階では、ハードウェアに依存する部分から依存しない部分に順番に初期化が行われ、ＣＰＵアーキテクチャ依存部の初期化（ステップ５０，５２）、システム依存部の初期化（ステップ５６，５８）、ハードウェア非依存部の初期化（ステップ６２，６４）が行われる。ここで、コア０によって起動中のＯＳ−０（０）とコア１によって起動中のＯＳ−１（１）のそれぞれは、ＣＰＵアーキテクチャ依存部やシステム依存部の初期化段階において、ＯＳブリッジを呼び出してその共有ハードウェア機能を利用することによって、ハードウェア資源が競合することを回避する（ステップ５４，６０）。
【００２８】
そして、ユーザインターフェース部の初期化段階において、スケジューリングが開始する（ステップ６６，６８）。スケジューリングの開始によって実行定常状態に移行し（ステップ７０，７２）、ＯＳによるサービスが起動する。すなわち、ＯＳの起動が完了する。
【００２９】
図５は、２コア構成のマルチコアプロセッサで２つのＯＳが同じ場合に並列に起動する場合の処理フローである。マルチコアプロセッサを有するシステムにおいて、複数のコアで同一のＯＳを並列で実行する場合には、ＩＰＬからＯＳブリッジをスキップして直接ＯＳ起動することが可能となる。この場合、ＯＳブリッジではなくＯＳ自身が休眠する他のコアを活性化し、ＣＰＵ−ＩＤを判定の上、どのハードウェアを使用するかなどのコア毎の動作を変えることができる。図４の場合と同様に、各ＯＳが同時並列で初期化処理を行う上で、共有ハードウェアの排他アクセス制御を行うために、ＯＳ実行中でもＯＳブリッジの共有ハードウェア管理機能の呼び出しを可能にする。
【００３０】
図４の場合と同様に、システム電源投入後（ステップ８０）、ＯＳの起動準備を行うブート段階において、電源の投入がされたコア０でコア０用のＩＰＬ（０）が起動し（ステップ８２）、電源が投入されたコア１でコア１用のＩＰＬ（１）が起動する（ステップ８４）。そして、ＩＰＬ（１）は、必要最小限の初期設定をした後に、一旦、コア１を待機状態に休眠させる。
【００３１】
そして、ＩＰＬ（０）は、自コアのコア番号を取得することによってＩＤ判定を行うことによってコア０に対応するＯＳ−０を選択する。そして、ＩＰＬ（０）は、ＯＳ−０のエントリポイントへの移動によって、ＯＳ−０を起動する。これによって、コア０によってＯＳ−０（０）の起動処理が開始する。コア０によって動作するＯＳ−０（０）は、休眠しているコア１のコア番号を取得することによってＩＤ判定を行うことによってコア１に対応するＯＳ−０を選択し、ＯＳ−０のエントリポイントに移ることによって、ＯＳ−０を起動する（ステップ８８）。これによって、コア１によってＯＳ−０（１）の起動処理が開始する。それぞれのＯＳの起動処理が開始すると、その後は、図４と同様のため、説明を省略する。つまり、プロセッサ間でＯＳが同一である図５の場合、起動したＯＳの中で休眠しているコアのＯＳを起動している一方で、プロセッサ間でＯＳが異なる図４の場合、ＯＳが起動する前に休眠しているコアのＯＳを起動している。
【００３２】
したがって、上述の実施例によれば、複数のプロセッサコアを並行して起動する場合、共有ハードウェア管理機能をＯＳブリッジとしてＯＳから取り出すことによって、各コアの起動の高速化（すなわち、各コアの起動タイミングの前だし）を図ることができる。例えば、コア０がホストＯＳを動作させ、それ以外の他のコアがゲストＯＳを動作させる場合、従来ホストＯＳに含まれていた共有ハードウェア管理機能をホストＯＳから分離することによって、コア０のホストＯＳ起動が完了していなくても他のコアのゲストＯＳを起動することができるとともに、共有ハードウェア管理機能を有するＯＳブリッジで各ＯＳによるハードウェア資源の競合を回避することができる。
【００３３】
また、複数のコアが同一のＯＳを使用する場合には、ＯＳブリッジによる起動処理をスキップしてコア０のＯＳが他のＯＳを起動するので、より一層に起動の高速化を図ることができる。
【００３４】
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
【００３５】
例えば、上述の実施例では、マルチコアプロセッサ内の複数のプロセッサコアを対象としていたが、複数のシングルコアプロセッサを対象としてもよい。また、上述の実施例のコアの数に特に限定しなくてもよい。
【図面の簡単な説明】
【００３６】
【図１】本発明に係る情報処理装置の実施形態であるコンピュータ１００のハードウェア構成の一例を示した図である。
【図２】ＯＳブリッジ５０の概念図である。
【図３】本発明に係るオペレーティングシステムの起動制御方法の概要を説明するための図である。
【図４】２コア構成のマルチコアプロセッサで２つのＯＳを並列に起動する場合の処理フローである。
【図５】２コア構成のマルチコアプロセッサで２つのＯＳが同じ場合に並列に起動する場合の処理フローである。
【符号の説明】
【００３７】
１０  マルチコアプロセッサ
２０  ＲＡＭ
３０  ＲＯＭ
４０  入出力装置（Ｉ／Ｏ）
５０  ＯＳブリッジ
【図１】
2008186175.tif 000003
【図２】
2008186175.tif 000004
【図３】
2008186175.tif 000005
【図４】
2008186175.tif 000006
【図５】
2008186175.tif 000007