(57)【特許請求の範囲】
【請求項１】
記憶装置に記憶されたプログラムをメモリにロードし、当該メモリにロードされたプログラムを実行する複数のプロセッサを備えたマルチプロセッサ処理システムであって、
前記複数のプロセッサは、マスタープロセッサとそれ以外の複数のスレーブプロセッサを含み、
前記記憶装置は、起動時にマスタープロセッサが最初にアクセスする記憶空間にブートローダプログラムを記憶し、さらに前記プログラムを複数に分割した分割プログラムをそれぞれ記憶するための複数の記憶空間を有し、各記憶空間に記憶された分割プログラムは前記マスタープロセッサと前記複数のスレーブプロセッサにそれぞれ割り当てられ、前記マスタープロセッサに割り当てられた分割プログラムは、少なくとも前記プログラムを起動するのに必要なプログラムと前記複数のスレーブプロセッサに分割プログラムをロードさせるためのプログラムとを含み、
前記マスタープロセッサは、起動時にブートローダプログラムをロードし、当該ブートローダプログラムを実行することにより、前記マスタープロセッサに割り当てられた分割プログラムを前記メモリにロードし、
前記マスタープロセッサが前記分割プログラムを実行したことに応答して前記複数のスレーブプロセッサが起動され、かつ前記複数のスレーブプロセッサは、前記複数の記憶空間の対応する記憶空間から割り当てられた分割プログラムを前記メモリにそれぞれロードする、
マルチプロセッサ処理システム。
【請求項２】
前記プログラムは、オペレーティングシステムを実行するものであり、前記マスタープロセッサに割り当てられた分割プログラムは、カーネルプログラムを含む、請求項１に記載のマルチプロセッサ処理システム。
【請求項３】
前記マスタープロセッサがカーネルプログラムを起動した後に、前記複数のスレーブプロセッサが分割プログラムを前記メモリにロードする、請求項２に記載のマルチプロセッサ処理システム。
【請求項４】
請求項１ないし３いずれか１つに記載のマルチプロセッサ処理システムを用いたナビゲーションシステム。
【請求項５】
記憶装置に記憶されたプログラムをメモリにロードし、当該メモリにロードされたプログラムを実行する複数のプロセッサを備えたマルチプロセッサ処理システムにおけるプログラムの起動方法であって、
起動時にマスタープロセッサが最初にアクセスする記憶空間にブートローダプログラム、および前記プログラムを複数に分割した分割プログラムを前記記憶装置の複数の記憶空間にそれぞれ格納しておき、各分割プログラムは、前記マスタープロセッサと複数のスレーブプロセッサにそれぞれ割り当てられ、前記マスタープロセッサに割り当てられた分割プログラムは、少なくとも前記プログラムを起動するのに必要なプログラムと前記複数のスレーブプロセッサに分割プログラムをロードさせるためのプログラムとを含み、
前記マスタープロセッサは、起動時にブートローダプログラムをロードし、当該ブートローダプログラムを実行することにより、前記マスタープロセッサに割り当てられた分割プログラムをメモリにロードし、
前記マスタープロセッサが前記分割プログラムを実行したことに応答して前記複数のスレーブプロセッサが起動され、かつ前記複数のスレーブプロセッサは、前記複数の記憶空間の対応する記憶空間から割り当てられた分割プログラムを前記メモリにロードする、
マルチプロセッサ処理システムにおけるプログラムの起動方法。
【請求項６】
前記マスタープロセッサおよび複数のスレーブプロセッサは、分割プログラムが適正か否かのチェックを行った後に分割プログラムを前記メモリにロードする、請求項５に記載の起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサによりプログラムを処理するマルチプロセッサ処理システムに関し、特に、マルチプロセッサ処理システムの起動方法に関する。
【背景技術】
【０００２】
マルチプロセッサ処理システムは、複数のプロセッサによるプログラムの並行処理を可能にし、これにより、プログラムの処理速度の向上を図っている。一般に、マルチプロセッサ処理システムは、全てのプロセッサにプログラムの処理を分担させる対称型マルチプロセッサ（Symmetric Multiple Processor）と、特定のプロセッサに特別な処理を分担させる非対称型マルチプロセッサ（ASymmetric Multiple Processor）とに大別される。
【０００３】
特許文献１は、主従関係にある複数のプロセッサを備えたマルチプロセッサシステムにおいて、マスタープロセッサとスレーブプロセッサの両方が実行できる共通プログラムを設定し、稼動情況に応じて両プロセッサが実行する共通プログラムの配分を調整する技術を開示している。
【０００４】
【特許文献１】特開平５−２８１２０
【発明の開示】
【発明が解決しようとする課題】
【０００５】
図１は、コンピュータ装置等の典型的なオペレーティングシステム（ＯＳ）の起動動作を示したフローチャートである。まず、コンピュータ装置の電源がオンされ、プロセッサに電力が供給されると（ステップＳ１）、プロセッサは、フラッシュメモリあるいはハードディスク装置等の記憶装置に記憶されたブートローダプログラムを実行する（ステップＳ２）。次いで、プロセッサは、ブートローダプログラムに従い記憶装置からＯＳプログラムファイルを検出し、これをメモリにロードし（ステップＳ３）、ＯＳプログラムを起動する（ステップＳ４）。
【０００６】
図２は、ブートローダプログラムの詳細な動作を説明するフローチャートである。プロセッサは、記憶装置の特定の記憶領域に記憶された情報を参照し、プログラムファイルを検出する（ステップＳ１０１）。
【０００７】
プログラムファイルには、データ長とチェックサムデータが含まれており、プロセッサは、プログラムファイルのチェックサムを算出し（ステップＳ１０２）、この値がブートローダプログラムに規定された値と一致するか否かを比較する（ステップＳ１０３）。
【０００８】
チェックサムが一致すればＯＳプログラムファイルが正しいと判定され、プロセッサは、記憶装置からＯＳプログラムファイルを読出し、これをメモリに書き込み、プログラムファイルをロードする（ステップＳ１０４）。メモリは、例えば、ＤＲＡＭやＳＲＡＭキャッシュ等であり、リード／ライトのアクセス時間が十分に速いものである。一方、チェックサムが一致しなかった場合には、プログラムファイルが正しくないと判定され、再度、プログラムファイルの検出が行われる（ステップＳ１０５）。
【０００９】
従来のナビゲーションシステムでは、１つのプロセッサが記憶装置からＯＳプログラムファイルをシーケンシャルにロードするため、ＯＳプログラムのロード時間が長くなり、その結果、ナビゲーションシステムの起動に時間がかかるという課題があった。
【００１０】
ナビゲーションシステムを起動するとき、図３（ａ）に示すように、フラッシュメモリ２０に記憶されたＯＳプログラムファイル２４がメモリ３０にロードされる。図３（ｂ）は、ＯＳプログラムファイルがロードされるときのタイミングチャートである。
【００１１】
図３（ｂ）に示すように、ナビゲーションシステムの電源が投下されると（時刻Ｔ１）、それに応答してプロセッサが起動される（時刻Ｔ２）。起動されたプロセッサは、フラッシュメモリ２０からロードしたブートローダプログラム２２を初期化したのち、ブートローダプログラム２２に従いＯＳプログラムファイルの検出およびチェックを行い、その後、ＯＳプログラムファイルをメモリ２０へロードする（時刻Ｔ３）。
【００１２】
ＯＳプログラムファイルのチェックおよびロードに要する時間は、ファイルサイズに比例して増加する。例えば図３（ｂ）で言えば、システムの起動までの時間である時刻Ｔ１から時刻Ｔ３までの時間が、プログラムサイズに比例して長くかかってしまう。
【００１３】
特許文献１等に開示されるマルチプロセッサ処理システムは、プログラムの実行時の処理時間を短縮するものであり、装置あるいはシステムの起動時間を短縮するための解決策を何ら開示するものではない。
【００１４】
そこで本発明は、上記従来の課題を解決し、プログラムを起動するまでの時間を短縮することできるマルチプロセッサ処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明に係るマルチプロセッサ処理システムは、記憶装置に記憶されたプログラムをメモリにロードし、当該メモリにロードされたプログラムを実行する複数のプロセッサを備えたものであって、前記記憶装置は、前記プログラムを複数に分割した分割プログラムをそれぞれ記憶するための複数の記憶空間を有し、各記憶空間に記憶された分割プログラムは前記複数のプロセッサにそれぞれ割り当てられ、前記複数のプロセッサの中の選択された１つのプロセッサは、起動時に前記複数の記憶空間の中の特定の記憶空間に記憶された特定の分割プログラムを前記メモリにロードし、当該特定の分割プログラムを実行し、選択された１つのプロセッサによる前記特定の分割プログラムの実行に応答して、前記複数のプロセッサの他のプロセッサは、前記複数の記憶空間の対応する記憶空間から分割プログラムを前記メモリにロードする。
【００１６】
好ましくは特定の分割プログラムは、少なくともプログラムを起動に必要なプログラムと、他のプロセッサが対応する記憶空間から分割プログラムをロードするためのプログラムとを含む。好ましくはプログラムは、オペレーティングシステムを実行するものであり、特定の分割プログラムは、カーネルプログラムを含む。好ましくは、選択された1のプロセッサがカーネルプログラムを起動した後に、他のプロセッサが分割プログラムを前記メモリにロードする。好ましくは、前記メモリは、複数のプロセッサに対応するメモリ空間にロードされた分割プログラムを記憶する。
【００１７】
本発明に係るマルチプロセッサ処理システムにおけるプログラムの起動方法は、記憶装置に記憶されたプログラムをメモリにロードし、当該メモリにロードされたものであって、前記プログラムを複数に分割した分割プログラムを前記記憶装置の複数の記憶空間にそれぞれ格納しておき、前記複数のプロセッサの中の選択された1のプロセッサは、起動時に前記記憶装置の前記複数の記憶空間の中の特定の記憶空間に記憶された特定の分割プログラムを前記メモリにロードし、当該特定の分割プログラムを実行し、前記選択された1のプロセッサによる前記特定の分割プログラムの実行に応答して、前記複数のプロセッサの他のプロセッサは、前記複数の記憶空間の対応する記憶空間から分割プログラムを前記メモリにロードする。
【発明の効果】
【００１８】
本発明によれば、記憶装置にはプログラムを複数に分割した分割プログラムが記憶されており、複数のプロセッサが割り当てられた分割プログラムをメモリに並列にロードすることで、従来のように１つのプロセッサがプログラムをシーケンシャルにロードする場合と比較して、プログラムをロードする時間が短縮され、プログラムを起動するまでの時間が短縮される。さらに、最初に実行される分割プログラムに基本プログラム（例えばカーネルプログラム）を含ませれば、すべての分割プログラムをロードする前に実質的にプログラムの起動を開始させることができる。
【発明を実施するための最良の形態】
【００１９】
本発明の最良の実施の形態について図面を参照して詳細に説明する。
【実施例】
【００２０】
図４は、本発明の実施例に係るマルチプロセッサ処理システムの概略構成を示すブロック図である。本実施例のマルチプロセッサ処理システム１は、４つのプロセッサ１０ａ、１０ｂ、１０ｃ、１０ｄと、予めＯＳプログラムを記憶するフラッシュメモリ２０と、システムの起動時にフラッシュメモリ２０からロードされたＯＳプログラムを記憶する読み書き可能なメモリ３０と、これらを接続するバス４０とを含む。
【００２１】
マルチプロセッサ処理システム１は、例えば、ナビゲーションシステム、オーディオシステム、ビデオシステム、あるいはこれらを統合したようなシステムにおいて用いられる。図４は、主要な構成しか示していないが、バス４０には、ディスプレイ、キーボード、通信装置、ストレージ等の周辺機器を接続することができる。各プロセッサ１０ａ〜１０ｄは、それぞれ個別の基板上に実装されていてもよいし、共通の基板上に実装されていてもよい。さらに、各プロセッサ１０ａ〜１０ｄは、個別の半導体パッケージ内に収容されていてもよいし、単一の半導体パッケージ内に収容されるものであってもよい。
【００２２】
ここでは、フラッシュメモリ２０がＯＳプログラムを記憶する例を示しているが、フラッシュメモリの他にもハードディスク、ＤＶＤ、その他の記憶媒体がＯＳプログラムを記憶するものであってもよい。メモリ３０は、例えば、Ｓ−ＤＲＡＭ、ＤＤＲ-ＤＲＡＭ、ＤＲＡＭ等のリード／ライトのアクセス時間が速いものが用いられる。
【００２３】
マルチプロセッサ処理システム１は、電源オン時に、フラッシュメモリ２０に記憶されていたＯＳプログラムをメモリ３０へロードし、各プロセッサ１０ａ〜１０ｄは、メモリ３０にロードされたＯＳプログラムを並列処理する。本実施例では、フラッシュメモリ２０に記憶されるＯＳプログラムを複数に分割し、分割されたプログラムを複数のプロセッサによりメモリに並列にロードさせ、ＯＳプログラムを起動する。この際、複数のプロセッサの中の最初に起動されるプロセッサを主たるプロセッサ（以下、プロセッサ１０ａをマスタープロセッサと称す）とし、その後に起動される他のプロセッサを従たるプロセッサ（以下、プロセッサ１０ｂ〜１０ｄをスレーブプロセッサと称す）とする。ＯＳプログラムの起動後は、プロセッサ１０ａ〜１０ｄは、対称型（ＳＭＰ）または非対称型（ＡＳＭＰ）のいずれとしても用いることができる。
【００２４】
図５は、プロセッサの内部構成を示すブロック図である。各プロセッサ１０ａ〜１０ｄは、ＣＰＵ５０、キャッシュメモリ５２、これらを接続する内部バス５４を有する。ＣＰＵ５０は、プログラムによって様々な数値演算、情報処理及び機器制御を行う中央処理ユニットである。キャッシュメモリ５２は、使用頻度の高いデータを記憶し、フラッシュメモリ２０またはメモリ３０へのアクセス回数を減らし、プログラム処理の高速化を図る。
【００２５】
図６は、フラッシュメモリの記憶空間を説明する図である。フラッシュメモリ２０は、システム起動時にマスタープロセッサ１０ａが最初にアクセスする記憶空間７０にブートローダプログラムを格納している。さらに記憶空間７２には、マスタープロセッサ１０ａに割り当てられたプログラムファイルａが格納され、記憶空間７４、７６、７８には、スレーブプロセッサ１０ｂ、１０ｃ、１０ｄに割り当てられたプログラムファイルｂ、ｃ、ｄがそれぞれ格納されている。すなわち、１つのＯＳプログラムは、４つのプログラムファイルａ、ｂ、ｃ、ｄに分割されてフラッシュメモリ２０に記憶され、４つのプログラムファイルは、対応する４つのプロセッサよりメモリ３０に並列にロードされ、かつ実行される。
【００２６】
４つのプログラムファイルのサイズは、ほぼ同程度であることが好ましいが、異なるサイズであってもよい。また、マスタープロセッサ１０ａによって最初に実行されるプログラムファイルａは、少なくともＯＳプログラムの基本機能を有するカーネルプログラム８０と、各スレーブプロセッサ１０ｂ〜１０ｄにプログラムファイルｂ〜ｄをロードさせるための起動プログラム８２とを含む。但し、プログラムファイルａは、上記のプログラムファイル以外にも、各種デバイスを駆動するデバイスドライバ等を含むようにしてもよい。スレーブプロセッサ１０ｂ、１０ｃ、１０ｄに割り当てられるプログラムファイルｂ、ｃ、ｄは、ＯＳプログラムの非本質的なプログラムを含む。
【００２７】
次に、本実施例のマルチプロセッサ処理システムの起動方法について説明する。図７は、本実施例に係るＯＳの起動動作を示すフローチャート、図８は、分割されたプログラムファイルを並列にロードするときのタイミングチャートである。図８において、プログラムのチェックサムを単一線の矩形で示し、プログラムファイルのロードを二重枠の矩形で示している。
【００２８】
先ず、時刻Ｔ１でマルチプロセッサ処理システムの電源がＯＮされると（ステップＳ２０１）、時刻Ｔ２でマスタープロセッサ１０ａが起動される（ステップＳ２０２）。マスタープロセッサ１０ａは、起動時にフラッシュメモリ２０の記憶空間７０をアクセスし、ブートローダプログラムをロードし、これを実行する（ステップＳ２０３）。ブートローダプログラムは、マスタープロセッサ１０ａが実行すべきプログラムに関する情報として、例えば、プログラムファイルａのサイズ、格納位置、チェックサムの値等を含んでいる。
【００２９】
マスタープロセッサ１０ａは、ＳｏＣ(搭載されたチップセット等)を初期化し（ステップＳ２０４）、ブートローダプログラムに従って、フラッシュメモリ２０の記憶空間７２をアクセスし、そこに記憶されているプログラムファイルａを検出する（ステップＳ２０５）。
【００３０】
マスタープロセッサ１０ａは、検出されたプログラムファイルａのチェックサムを算出し（ステップＳ２０６）、算出されたチェックサムが予め決められた値と一致すれば、プログラムファイルが正しいと判定し、プログラムファイルａのロードを開始する（ステップＳ２０７）。プログラムファイルは、フラッシュメモリ２０に格納されているときは、テキスト形式以外のバイナリ形式で保存されており、メモリ３０へ書き込むとき、プログラムファイルは実行ファイル形式に変換される。
【００３１】
マスタープロセッサ１０ａは、プログラムファイルａのロードを完了すると、プログラムファイルａを実行する（ステップＳ２０８）。プログラムファイルａは、ＯＳの中核であるカーネルプログラム８０を含んでいるため、時刻Ｔ３において、カーネルプログラム８０が初期化され、カーネルが起動する（ステップＳ２０９）。これにより、他のプログラムファイルｂ〜ｄがロードされる前に、ＯＳの基本動作を先行して実施することができる。
【００３２】
さらにマスタープロセッサ１０ａが起動プログラム８２を実行することに応答して、時刻Ｔ４においてスレーブプロセッサ１０ｂ、１０ｃ、１０ｄが起動される（ステップＳ２１０）。スレーブプロセッサ１０ｂ、１０ｃ、１０ｄは、それぞれ初期化され、次に、スレーブプロセッサプロセッサ１０ｂ、１０ｃ、１０ｄは、フラッシュメモリ２０をアクセスし、記憶空間７４、７６、７８に格納されているプログラムファイルｂ、ｃ、ｄをそれぞれ検出する（ステップＳ２１１）。
【００３３】
次に、チェックサムにより検出されたプログラムファイルｂ、ｃ、ｄが正しいか否かの判定が行われ（ステップＳ２１２）、正しいと判定されると、各スレーブプロセッサ１０ｂ、１０ｃ、１０ｄは、プログラムファイルｂ、ｃ、ｄをメモリ３０に並列にロードする（ステップＳ２１３）。プログラムファイルｂ、ｃ、ｄは、プログラムファイルａと同様に実行ファイル形式に変換されてメモリ３０に記憶される。
【００３４】
プログラムファイルｂ〜ｄのロードが完了すると、スレーブプロセッサ１０ｂ〜１０ｄは、時刻Ｔ５でプログラムファイルｂ〜ｄを実行する（ステップＳ２１４）。なお、図８では、プログラムファイルｂ、ｃ、ｄのサイズがほぼ均等であると仮定し、各スレーブプロセッサ１０ｂ〜１０ｄが同じタイミングでプログラムを実行している。
【００３５】
そして、カーネルプログラムが分割されたプログラムファイルを参照することができるようにするため、各スレーブプロセッサ１０ｂ〜１０ｄは、マスタープロセッサ１０ａに対し、分割されたプログラムファイルのアドレス情報を提供する（ステップＳ２１５）。以上の動作により、ＯＳプログラムの全体が起動され（ステップＳ２１６）、プロセッサ１０ａ〜１０ｄは、ＯＳプログラムの並列処理を実行することが可能となる。
【００３６】
このように本実施例では、ＯＳプログラムを分割してフラッシュメモリに格納しておき、マルチプロセッサ処理システムの起動時に、分割されたプログラムファイルを並列にロードするようにしたので、ＯＳプログラムを起動するまでの時間を従来よりも短縮することができる。さらに、マスタープロセッサが最初に実行するプログラムファイルにカーネルプログラムを含ませることで、ＯＳの基本的な動作を、他のプログラムファイルがロードを開始される時刻Ｔ４の前の時刻Ｔ３（図８を参照）から開始させることができる利点がある。
【００３７】
以上、本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。例えば上記実施例では、４つのプロセッサを用いる例を示したが、プロセッサの数は、適宜変更することが可能である。
【００３８】
本発明に係るマルチプロセッサ処理システムは、カーナビゲーションシステムなどの車載用電子装置に利用することができる。本発明を適用することで、ナビゲーションシステムの起動時間が短縮化され、かつ、マルチプロセッサの並列処理によって、ナビゲーション機能、リアカメラ表示、ラストモード画面の表示、オーディオ処理などの処理を高速化させることができる。
【図面の簡単な説明】
【００３９】
【図１】典型的なオペレーティングの起動動作を示すフローチャートである。
【図２】ブートローダプログラムの詳細な動作を説明するフローチャートである。
【図３】図３（ａ）は、従来のナビゲーションシステムのＯＳプログラムファイルのロードを説明する図であり、図３（ｂ）は、ＯＳプログラムファイルがロードされるときのタイミングチャートである。
【図４】本発明の実施例に係るマルチプロセッサ処理システムの概略構成を示すブロック図である。
【図５】図４に示すプロセッサの内部構成を示す図である。
【図６】本実施例に係るフラッシュメモリの記憶空間を示す図である。
【図７】本実施例に係るＯＳ起動動作を説明するフローチャートである。
【図８】本実施例に係るＯＳ起動動作を説明する図である。
【符号の説明】
【００４０】
１：マルチプロセッサ処理システム
１０ａ、１０ｂ、１０ｃ、１０ｄ：プロセッサ
２０：フラッシュメモリ              ３０：メモリ
４０：バス                          ５０：ＣＰＵ
５２：キャッシュメモリ              ５４：内部バス
７０、７２、７４、７６、７８：記憶空間
【図１】
0005106147.tif 000002
【図２】
0005106147.tif 000003
【図３】
0005106147.tif 000004
【図４】
0005106147.tif 000005
【図５】
0005106147.tif 000006
【図６】
0005106147.tif 000007
【図７】
0005106147.tif 000008
【図８】
0005106147.tif 000009