説明

マルチプロセッサ処理システム

【課題】 OSプログラムを短時間で起動する「マルチプロセッサ処理システム」を提供する。
【解決手段】 本発明に係るマルチプロセッサ処理システムは、フラッシュメモリに記憶されたOSプログラムをメモリにロードし、ロードされたOSプログラムを実行する。フラッシュメモリ20は、OSプログラムを複数のプログラムファイルa、b、c、dに分割した記憶するための記憶空間72、74、76、78を有する。マスタープロセッサ10aにプログラムファイルaを実行させ、この実行に応答して、スレーブプロセッサ10b、10c、10dにプログラムファイルb、c、dを並列にロードさせる。これにより、OSプログラムのロード時間を短縮し、OSプログラムを起動するまでの時間を短くする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサによりプログラムを処理するマルチプロセッサ処理システムに関し、特に、マルチプロセッサ処理システムの起動方法に関する。
【背景技術】
【0002】
マルチプロセッサ処理システムは、複数のプロセッサによるプログラムの並行処理を可能にし、これにより、プログラムの処理速度の向上を図っている。一般に、マルチプロセッサ処理システムは、全てのプロセッサにプログラムの処理を分担させる対称型マルチプロセッサ(Symmetric Multiple Processor)と、特定のプロセッサに特別な処理を分担させる非対称型マルチプロセッサ(ASymmetric Multiple Processor)とに大別される。
【0003】
特許文献1は、主従関係にある複数のプロセッサを備えたマルチプロセッサシステムにおいて、マスタープロセッサとスレーブプロセッサの両方が実行できる共通プログラムを設定し、稼動情況に応じて両プロセッサが実行する共通プログラムの配分を調整する技術を開示している。
【0004】
【特許文献1】特開平5−28120
【発明の開示】
【発明が解決しようとする課題】
【0005】
図1は、コンピュータ装置等の典型的なオペレーティングシステム(OS)の起動動作を示したフローチャートである。まず、コンピュータ装置の電源がオンされ、プロセッサに電力が供給されると(ステップS1)、プロセッサは、フラッシュメモリあるいはハードディスク装置等の記憶装置に記憶されたブートローダプログラムを実行する(ステップS2)。次いで、プロセッサは、ブートローダプログラムに従い記憶装置からOSプログラムファイルを検出し、これをメモリにロードし(ステップS3)、OSプログラムを起動する(ステップS4)。
【0006】
図2は、ブートローダプログラムの詳細な動作を説明するフローチャートである。プロセッサは、記憶装置の特定の記憶領域に記憶された情報を参照し、プログラムファイルを検出する(ステップS101)。
【0007】
プログラムファイルには、データ長とチェックサムデータが含まれており、プロセッサは、プログラムファイルのチェックサムを算出し(ステップS102)、この値がブートローダプログラムに規定された値と一致するか否かを比較する(ステップS103)。
【0008】
チェックサムが一致すればOSプログラムファイルが正しいと判定され、プロセッサは、記憶装置からOSプログラムファイルを読出し、これをメモリに書き込み、プログラムファイルをロードする(ステップS104)。メモリは、例えば、DRAMやSRAMキャッシュ等であり、リード/ライトのアクセス時間が十分に速いものである。一方、チェックサムが一致しなかった場合には、プログラムファイルが正しくないと判定され、再度、プログラムファイルの検出が行われる(ステップS105)。
【0009】
従来のナビゲーションシステムでは、1つのプロセッサが記憶装置からOSプログラムファイルをシーケンシャルにロードするため、OSプログラムのロード時間が長くなり、その結果、ナビゲーションシステムの起動に時間がかかるという課題があった。
【0010】
ナビゲーションシステムを起動するとき、図3(a)に示すように、フラッシュメモリ20に記憶されたOSプログラムファイル24がメモリ30にロードされる。図3(b)は、OSプログラムファイルがロードされるときのタイミングチャートである。
【0011】
図3(b)に示すように、ナビゲーションシステムの電源が投下されると(時刻T1)、それに応答してプロセッサが起動される(時刻T2)。起動されたプロセッサは、フラッシュメモリ20からロードしたブートローダプログラム22を初期化したのち、ブートローダプログラム22に従いOSプログラムファイルの検出およびチェックを行い、その後、OSプログラムファイルをメモリ20へロードする(時刻T3)。
【0012】
OSプログラムファイルのチェックおよびロードに要する時間は、ファイルサイズに比例して増加する。例えば図3(b)で言えば、システムの起動までの時間である時刻T1から時刻T3までの時間が、プログラムサイズに比例して長くかかってしまう。
【0013】
特許文献1等に開示されるマルチプロセッサ処理システムは、プログラムの実行時の処理時間を短縮するものであり、装置あるいはシステムの起動時間を短縮するための解決策を何ら開示するものではない。
【0014】
そこで本発明は、上記従来の課題を解決し、プログラムを起動するまでの時間を短縮することできるマルチプロセッサ処理システムを提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明に係るマルチプロセッサ処理システムは、記憶装置に記憶されたプログラムをメモリにロードし、当該メモリにロードされたプログラムを実行する複数のプロセッサを備えたものであって、前記記憶装置は、前記プログラムを複数に分割した分割プログラムをそれぞれ記憶するための複数の記憶空間を有し、各記憶空間に記憶された分割プログラムは前記複数のプロセッサにそれぞれ割り当てられ、前記複数のプロセッサの中の選択された1つのプロセッサは、起動時に前記複数の記憶空間の中の特定の記憶空間に記憶された特定の分割プログラムを前記メモリにロードし、当該特定の分割プログラムを実行し、選択された1つのプロセッサによる前記特定の分割プログラムの実行に応答して、前記複数のプロセッサの他のプロセッサは、前記複数の記憶空間の対応する記憶空間から分割プログラムを前記メモリにロードする。
【0016】
好ましくは特定の分割プログラムは、少なくともプログラムを起動に必要なプログラムと、他のプロセッサが対応する記憶空間から分割プログラムをロードするためのプログラムとを含む。好ましくはプログラムは、オペレーティングシステムを実行するものであり、特定の分割プログラムは、カーネルプログラムを含む。好ましくは、選択された1のプロセッサがカーネルプログラムを起動した後に、他のプロセッサが分割プログラムを前記メモリにロードする。好ましくは、前記メモリは、複数のプロセッサに対応するメモリ空間にロードされた分割プログラムを記憶する。
【0017】
本発明に係るマルチプロセッサ処理システムにおけるプログラムの起動方法は、記憶装置に記憶されたプログラムをメモリにロードし、当該メモリにロードされたものであって、前記プログラムを複数に分割した分割プログラムを前記記憶装置の複数の記憶空間にそれぞれ格納しておき、前記複数のプロセッサの中の選択された1のプロセッサは、起動時に前記記憶装置の前記複数の記憶空間の中の特定の記憶空間に記憶された特定の分割プログラムを前記メモリにロードし、当該特定の分割プログラムを実行し、前記選択された1のプロセッサによる前記特定の分割プログラムの実行に応答して、前記複数のプロセッサの他のプロセッサは、前記複数の記憶空間の対応する記憶空間から分割プログラムを前記メモリにロードする。
【発明の効果】
【0018】
本発明によれば、記憶装置にはプログラムを複数に分割した分割プログラムが記憶されており、複数のプロセッサが割り当てられた分割プログラムをメモリに並列にロードすることで、従来のように1つのプロセッサがプログラムをシーケンシャルにロードする場合と比較して、プログラムをロードする時間が短縮され、プログラムを起動するまでの時間が短縮される。さらに、最初に実行される分割プログラムに基本プログラム(例えばカーネルプログラム)を含ませれば、すべての分割プログラムをロードする前に実質的にプログラムの起動を開始させることができる。
【発明を実施するための最良の形態】
【0019】
本発明の最良の実施の形態について図面を参照して詳細に説明する。
【実施例】
【0020】
図4は、本発明の実施例に係るマルチプロセッサ処理システムの概略構成を示すブロック図である。本実施例のマルチプロセッサ処理システム1は、4つのプロセッサ10a、10b、10c、10dと、予めOSプログラムを記憶するフラッシュメモリ20と、システムの起動時にフラッシュメモリ20からロードされたOSプログラムを記憶する読み書き可能なメモリ30と、これらを接続するバス40とを含む。
【0021】
マルチプロセッサ処理システム1は、例えば、ナビゲーションシステム、オーディオシステム、ビデオシステム、あるいはこれらを統合したようなシステムにおいて用いられる。図4は、主要な構成しか示していないが、バス40には、ディスプレイ、キーボード、通信装置、ストレージ等の周辺機器を接続することができる。各プロセッサ10a〜10dは、それぞれ個別の基板上に実装されていてもよいし、共通の基板上に実装されていてもよい。さらに、各プロセッサ10a〜10dは、個別の半導体パッケージ内に収容されていてもよいし、単一の半導体パッケージ内に収容されるものであってもよい。
【0022】
ここでは、フラッシュメモリ20がOSプログラムを記憶する例を示しているが、フラッシュメモリの他にもハードディスク、DVD、その他の記憶媒体がOSプログラムを記憶するものであってもよい。メモリ30は、例えば、S−DRAM、DDR-DRAM、DRAM等のリード/ライトのアクセス時間が速いものが用いられる。
【0023】
マルチプロセッサ処理システム1は、電源オン時に、フラッシュメモリ20に記憶されていたOSプログラムをメモリ30へロードし、各プロセッサ10a〜10dは、メモリ30にロードされたOSプログラムを並列処理する。本実施例では、フラッシュメモリ20に記憶されるOSプログラムを複数に分割し、分割されたプログラムを複数のプロセッサによりメモリに並列にロードさせ、OSプログラムを起動する。この際、複数のプロセッサの中の最初に起動されるプロセッサを主たるプロセッサ(以下、プロセッサ10aをマスタープロセッサと称す)とし、その後に起動される他のプロセッサを従たるプロセッサ(以下、プロセッサ10b〜10dをスレーブプロセッサと称す)とする。OSプログラムの起動後は、プロセッサ10a〜10dは、対称型(SMP)または非対称型(ASMP)のいずれとしても用いることができる。
【0024】
図5は、プロセッサの内部構成を示すブロック図である。各プロセッサ10a〜10dは、CPU50、キャッシュメモリ52、これらを接続する内部バス54を有する。CPU50は、プログラムによって様々な数値演算、情報処理及び機器制御を行う中央処理ユニットである。キャッシュメモリ52は、使用頻度の高いデータを記憶し、フラッシュメモリ20またはメモリ30へのアクセス回数を減らし、プログラム処理の高速化を図る。
【0025】
図6は、フラッシュメモリの記憶空間を説明する図である。フラッシュメモリ20は、システム起動時にマスタープロセッサ10aが最初にアクセスする記憶空間70にブートローダプログラムを格納している。さらに記憶空間72には、マスタープロセッサ10aに割り当てられたプログラムファイルaが格納され、記憶空間74、76、78には、スレーブプロセッサ10b、10c、10dに割り当てられたプログラムファイルb、c、dがそれぞれ格納されている。すなわち、1つのOSプログラムは、4つのプログラムファイルa、b、c、dに分割されてフラッシュメモリ20に記憶され、4つのプログラムファイルは、対応する4つのプロセッサよりメモリ30に並列にロードされ、かつ実行される。
【0026】
4つのプログラムファイルのサイズは、ほぼ同程度であることが好ましいが、異なるサイズであってもよい。また、マスタープロセッサ10aによって最初に実行されるプログラムファイルaは、少なくともOSプログラムの基本機能を有するカーネルプログラム80と、各スレーブプロセッサ10b〜10dにプログラムファイルb〜dをロードさせるための起動プログラム82とを含む。但し、プログラムファイルaは、上記のプログラムファイル以外にも、各種デバイスを駆動するデバイスドライバ等を含むようにしてもよい。スレーブプロセッサ10b、10c、10dに割り当てられるプログラムファイルb、c、dは、OSプログラムの非本質的なプログラムを含む。
【0027】
次に、本実施例のマルチプロセッサ処理システムの起動方法について説明する。図7は、本実施例に係るOSの起動動作を示すフローチャート、図8は、分割されたプログラムファイルを並列にロードするときのタイミングチャートである。図8において、プログラムのチェックサムを単一線の矩形で示し、プログラムファイルのロードを二重枠の矩形で示している。
【0028】
先ず、時刻T1でマルチプロセッサ処理システムの電源がONされると(ステップS201)、時刻T2でマスタープロセッサ10aが起動される(ステップS202)。マスタープロセッサ10aは、起動時にフラッシュメモリ20の記憶空間70をアクセスし、ブートローダプログラムをロードし、これを実行する(ステップS203)。ブートローダプログラムは、マスタープロセッサ10aが実行すべきプログラムに関する情報として、例えば、プログラムファイルaのサイズ、格納位置、チェックサムの値等を含んでいる。
【0029】
マスタープロセッサ10aは、SoC(搭載されたチップセット等)を初期化し(ステップS204)、ブートローダプログラムに従って、フラッシュメモリ20の記憶空間72をアクセスし、そこに記憶されているプログラムファイルaを検出する(ステップS205)。
【0030】
マスタープロセッサ10aは、検出されたプログラムファイルaのチェックサムを算出し(ステップS206)、算出されたチェックサムが予め決められた値と一致すれば、プログラムファイルが正しいと判定し、プログラムファイルaのロードを開始する(ステップS207)。プログラムファイルは、フラッシュメモリ20に格納されているときは、テキスト形式以外のバイナリ形式で保存されており、メモリ30へ書き込むとき、プログラムファイルは実行ファイル形式に変換される。
【0031】
マスタープロセッサ10aは、プログラムファイルaのロードを完了すると、プログラムファイルaを実行する(ステップS208)。プログラムファイルaは、OSの中核であるカーネルプログラム80を含んでいるため、時刻T3において、カーネルプログラム80が初期化され、カーネルが起動する(ステップS209)。これにより、他のプログラムファイルb〜dがロードされる前に、OSの基本動作を先行して実施することができる。
【0032】
さらにマスタープロセッサ10aが起動プログラム82を実行することに応答して、時刻T4においてスレーブプロセッサ10b、10c、10dが起動される(ステップS210)。スレーブプロセッサ10b、10c、10dは、それぞれ初期化され、次に、スレーブプロセッサプロセッサ10b、10c、10dは、フラッシュメモリ20をアクセスし、記憶空間74、76、78に格納されているプログラムファイルb、c、dをそれぞれ検出する(ステップS211)。
【0033】
次に、チェックサムにより検出されたプログラムファイルb、c、dが正しいか否かの判定が行われ(ステップS212)、正しいと判定されると、各スレーブプロセッサ10b、10c、10dは、プログラムファイルb、c、dをメモリ30に並列にロードする(ステップS213)。プログラムファイルb、c、dは、プログラムファイルaと同様に実行ファイル形式に変換されてメモリ30に記憶される。
【0034】
プログラムファイルb〜dのロードが完了すると、スレーブプロセッサ10b〜10dは、時刻T5でプログラムファイルb〜dを実行する(ステップS214)。なお、図8では、プログラムファイルb、c、dのサイズがほぼ均等であると仮定し、各スレーブプロセッサ10b〜10dが同じタイミングでプログラムを実行している。
【0035】
そして、カーネルプログラムが分割されたプログラムファイルを参照することができるようにするため、各スレーブプロセッサ10b〜10dは、マスタープロセッサ10aに対し、分割されたプログラムファイルのアドレス情報を提供する(ステップS215)。以上の動作により、OSプログラムの全体が起動され(ステップS216)、プロセッサ10a〜10dは、OSプログラムの並列処理を実行することが可能となる。
【0036】
このように本実施例では、OSプログラムを分割してフラッシュメモリに格納しておき、マルチプロセッサ処理システムの起動時に、分割されたプログラムファイルを並列にロードするようにしたので、OSプログラムを起動するまでの時間を従来よりも短縮することができる。さらに、マスタープロセッサが最初に実行するプログラムファイルにカーネルプログラムを含ませることで、OSの基本的な動作を、他のプログラムファイルがロードを開始される時刻T4の前の時刻T3(図8を参照)から開始させることができる利点がある。
【0037】
以上、本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。例えば上記実施例では、4つのプロセッサを用いる例を示したが、プロセッサの数は、適宜変更することが可能である。
【0038】
本発明に係るマルチプロセッサ処理システムは、カーナビゲーションシステムなどの車載用電子装置に利用することができる。本発明を適用することで、ナビゲーションシステムの起動時間が短縮化され、かつ、マルチプロセッサの並列処理によって、ナビゲーション機能、リアカメラ表示、ラストモード画面の表示、オーディオ処理などの処理を高速化させることができる。
【図面の簡単な説明】
【0039】
【図1】典型的なオペレーティングの起動動作を示すフローチャートである。
【図2】ブートローダプログラムの詳細な動作を説明するフローチャートである。
【図3】図3(a)は、従来のナビゲーションシステムのOSプログラムファイルのロードを説明する図であり、図3(b)は、OSプログラムファイルがロードされるときのタイミングチャートである。
【図4】本発明の実施例に係るマルチプロセッサ処理システムの概略構成を示すブロック図である。
【図5】図4に示すプロセッサの内部構成を示す図である。
【図6】本実施例に係るフラッシュメモリの記憶空間を示す図である。
【図7】本実施例に係るOS起動動作を説明するフローチャートである。
【図8】本実施例に係るOS起動動作を説明する図である。
【符号の説明】
【0040】
1:マルチプロセッサ処理システム
10a、10b、10c、10d:プロセッサ
20:フラッシュメモリ 30:メモリ
40:バス 50:CPU
52:キャッシュメモリ 54:内部バス
70、72、74、76、78:記憶空間

【特許請求の範囲】
【請求項1】
記憶装置に記憶されたプログラムをメモリにロードし、当該メモリにロードされたプログラムを実行する複数のプロセッサを備えたマルチプロセッサ処理システムであって、
前記記憶装置は、前記プログラムを複数に分割した分割プログラムをそれぞれ記憶するための複数の記憶空間を有し、各記憶空間に記憶された分割プログラムは前記複数のプロセッサにそれぞれ割り当てられ、
前記複数のプロセッサの中の選択された1つのプロセッサは、起動時に前記複数の記憶空間の中の特定の記憶空間に記憶された特定の分割プログラムを前記メモリにロードし、当該特定の分割プログラムを実行し、
選択された1つのプロセッサによる前記特定の分割プログラムの実行に応答して、前記複数のプロセッサの他のプロセッサは、前記複数の記憶空間の対応する記憶空間から分割プログラムを前記メモリにロードする、
マルチプロセッサ処理システム。
【請求項2】
前記特定の分割プログラムは、少なくとも前記プログラムを起動するのに必要なプログラムと、前記他のプロセッサに分割プログラムをロードさせるためのプログラムとを含む、請求項1に記載のマルチプロセッサ処理システム。
【請求項3】
前記プログラムは、オペレーティングシステムを実行するものであり、前記特定の分割プログラムは、カーネルプログラムを含む、請求項2に記載のマルチプロセッサ処理システム。
【請求項4】
前記選択された1のプロセッサがカーネルプログラムを起動した後に、前記他のプロセッサが分割プログラムを前記メモリにロードする、請求項3に記載のマルチプロセッサ処理システム。
【請求項5】
前記メモリは、複数のプロセッサに割り当てられたメモリ空間を有し、それぞれのメモリ空間にロードされた分割プログラムが記憶される、請求項1に記載のマルチプロセッサ処理システム。
【請求項6】
請求項1ないし5いずれか1つに記載のマルチプロセッサ処理システムを用いたナビゲーションシステム。
【請求項7】
記憶装置に記憶されたプログラムをメモリにロードし、当該メモリにロードされたプログラムを実行する複数のプロセッサを備えたマルチプロセッサ処理システムにおけるプログラムの起動方法であって、
前記プログラムを複数に分割した分割プログラムを前記記憶装置の複数の記憶空間にそれぞれ格納しておき、
前記複数のプロセッサの中の選択された1のプロセッサは、起動時に前記記憶装置の前記複数の記憶空間の中の特定の記憶空間に記憶された特定の分割プログラムを前記メモリにロードし、当該特定の分割プログラムを実行し、
前記選択された1のプロセッサによる前記特定の分割プログラムの実行に応答して、前記複数のプロセッサの他のプロセッサは、前記複数の記憶空間の対応する記憶空間から分割プログラムを前記メモリにロードする、
マルチプロセッサ処理システムにおけるプログラムの起動方法。
【請求項8】
前記複数のプロセッサは、分割プログラムが適正か否かのチェックを行った後に分割プログラムを前記メモリにロードする、請求項7に記載の起動方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−175904(P2009−175904A)
【公開日】平成21年8月6日(2009.8.6)
【国際特許分類】
【出願番号】特願2008−12191(P2008−12191)
【出願日】平成20年1月23日(2008.1.23)
【出願人】(000101732)アルパイン株式会社 (2,424)
【Fターム(参考)】