(57)【要約】【課題】より短時間でマルチプロセッサシステムの起動を完了させることができるようにする。【解決手段】マルチプロセッサシステムが起動される場合、期間１５１において、主プロセッサの起動処理が行われ、次に、副プロセッサのそれぞれは、自分が実行すべきプログラムの転送処理を開始する。このとき、バス調停装置によるアービトレーションが行われるので、副CPU起動用プログラム１２１の転送、副CPU起動用プログラム１２２の転送、および副CPU起動用プログラム１２３の転送が、期間１５２、期間１５４、および期間１５６において、並行して行われることになる。副CPU起動用プログラム１２１乃至副CPU起動用プログラム１２３の転送が完了すると、期間１５３、期間１５５、期間１５７において、それぞれ副プロセッサ１０６の起動処理が行われる。【選択図】図６
2009098769.tif 000002
【特許請求の範囲】
【請求項１】
主プロセッサと、複数の副プロセッサとがバスにより接続されたマルチプロセッサシステムであって、
前記複数の副プロセッサのそれぞれの起動用プログラムが記憶され、前記主プロセッサにより制御される第１の記憶手段と、
前記複数の副プロセッサのそれぞれにより制御される複数の第２の記憶手段と、
前記複数の副プロセッサのそれぞれの起動用プログラムのプログラムサイズ、および前記複数の副プロセッサのそれぞれの起動時間を表す情報に基づいて、前記複数の副プロセッサのそれぞれが、対応する起動用プログラムを転送するために利用可能な前記バスの帯域の割り当てを制御する帯域割り当て制御手段とを備え、
自分が起動されるとき、
前記複数の副プロセッサのそれぞれが、前記帯域割り当て制御手段により割り当てられた前記バスの帯域を利用して、対応する起動用プログラムを前記第１の記憶手段からそれぞれの前記第２の記憶手段に転送し、
前記転送の処理が完了した後、それぞれの前記第２の記憶手段に記憶された起動用プログラムを実行して起動する
マルチプロセッサシステム。
【請求項２】
前記割り当て制御手段は、
前記複数の副プロセッサのそれぞれが、前記帯域割り当て制御手段により割り当てられた前記バスの帯域を利用して、対応する起動用プログラムを前記第１の記憶手段からそれぞれの前記第２の記憶手段に転送する処理と、前記転送の処理が完了した後、それぞれの前記第２の記憶手段に記憶された起動用プログラムを実行して起動する処理とに要する時間が、全て同じになるように、前記バスの帯域を割り当てる
請求項１に記載のマルチプロセッサ。
【請求項３】
前記第１の記憶手段に記憶される前記複数の副プロセッサのそれぞれの起動用プログラムには、それぞれプログラムサイズ、および前記複数の副プロセッサのそれぞれの起動時間を表す情報が付加されている
請求項１に記載のマルチプロセッサシステム。
【請求項４】
主プロセッサと、複数の副プロセッサとがバスにより接続されたマルチプロセッサシステムの起動方法であって、
前記マルチプロセッサシステムが、
前記複数の副プロセッサのそれぞれの起動用プログラムが記憶され、前記主プロセッサにより制御される第１の記憶手段と、
前記複数の副プロセッサのそれぞれにより制御される複数の第２の記憶手段とを有し、
前記マルチプロセッサシステムが起動されるとき、
前記複数の副プロセッサのそれぞれの起動用プログラムのプログラムサイズ、および前記複数の副プロセッサのそれぞれの起動時間を表す情報に基づいて、前記複数の副プロセッサのそれぞれが、対応する起動用プログラムを転送するために利用可能な前記バスの帯域の割り当てを制御し、
前記複数の副プロセッサのそれぞれが、前記割り当てられた前記バスの帯域を利用して、対応する起動用プログラムを前記第１の記憶手段からそれぞれの前記第２の記憶手段に転送し、
前記転送の処理が完了した後、それぞれの前記第２の記憶手段に記憶された起動用プログラムを実行して起動するステップ
を含む起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムおよび起動方法に関し、特に、より短時間でマルチプロセッサシステムの起動を完了させることができるようにするマルチプロセッサシステムおよび起動方法に関する。
【背景技術】
【０００２】
電子機器における各種の演算処理を効率的に行うシステムとしてマルチプロセッサシステムを採用するものがある。
【０００３】
マルチプロセッサシステムは、複数のプロセッサと記憶装置とがバスによって接続され、全てのプロセッサのプログラムを格納する記憶装置を有する主プロセッサと、上記バスに接続された複数の副プロセッサとにより構成されている。
【０００４】
マルチプロセッサシステムにおいては、主プロセッサの記憶装置に記憶された所定のプログラムを、それぞれ各副プロセッサの記憶装置に転送して起動させるため、プログラムの転送および各プロセッサの起動に時間がかかる。
【０００５】
そこで、各プロセッサのメモリ内に、種類フラグを新設して、起動要求をしているプロセッサの種類フラグによって必要なプログラムの種類を判断し、同報方式によって同じプログラムを一斉に転送することで起動に要する時間の無駄を生じさせないようにする技術が提案されている（例えば、特許文献１参照）。
【０００６】
【特許文献１】特開平１０−２７５１３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のマルチプロセッサシステムでは、各副プロセッサの起動には、逐次起動方式が使用されている。逐次起動方式は、主プロセッサが起動した後に、副プロセッサに対するプログラムの転送と起動処理を、副プロセッサ毎に順次実行する方式である。
【０００８】
従って、例えば、特許文献１の技術のように、転送するプログラムをフラグにより選択可能としても、転送すべきプログラムの数が多ければ、全てのプロセッサの起動完了に要する時間はあまり短くならない。
【０００９】
すなわち、逐次起動方式では、マルチプロセッサシステムが起動するまでに要する時間は、主プロセッサの起動時間、全ての副プロセッサへのデータ転送時間、および全ての副プロセッサの起動時間の総和となるため、プロセッサの総数と、プログラムの大きさに比例して、システムの起動時間が遅くなってしまう。
【００１０】
本発明はこのような状況に鑑みてなされたものであり、より短時間でマルチプロセッサシステムの起動を完了させることができるようにするものである。
【課題を解決するための手段】
【００１１】
本発明の一側面は、主プロセッサと、複数の副プロセッサとがバスにより接続されたマルチプロセッサシステムであって、前記複数の副プロセッサのそれぞれの起動用プログラムが記憶され、前記主プロセッサにより制御される第１の記憶手段と、前記複数の副プロセッサのそれぞれにより制御される複数の第２の記憶手段と、前記複数の副プロセッサのそれぞれの起動用プログラムのプログラムサイズ、および前記複数の副プロセッサのそれぞれの起動時間を表す情報に基づいて、前記複数の副プロセッサのそれぞれが、対応する起動用プログラムを転送するために利用可能な前記バスの帯域の割り当てを制御する帯域割り当て制御手段とを備え、自分が起動されるとき、前記複数の副プロセッサのそれぞれが、前記帯域割り当て制御手段により割り当てられた前記バスの帯域を利用して、対応する起動用プログラムを前記第１の記憶手段からそれぞれの前記第２の記憶手段に転送し、前記転送の処理が完了した後、それぞれの前記第２の記憶手段に記憶された起動用プログラムを実行して起動するマルチプロセッサシステムである。
【００１２】
前記割り当て制御手段は、前記複数の副プロセッサのそれぞれが、前記帯域割り当て制御手段により割り当てられた前記バスの帯域を利用して、対応する起動用プログラムを前記第１の記憶手段からそれぞれの前記第２の記憶手段に転送する処理と、前記転送の処理が完了した後、それぞれの前記第２の記憶手段に記憶された起動用プログラムを実行して起動する処理とに要する時間が、全て同じになるように、前記バスの帯域を割り当てるようにすることができる。
【００１３】
前記第１の記憶手段に記憶される前記複数の副プロセッサのそれぞれの起動用プログラムには、それぞれプログラムサイズ、および前記複数の副プロセッサのそれぞれの起動時間を表す情報が付加されているようにすることができる。
【００１４】
本発明の一側面は、主プロセッサと、複数の副プロセッサとがバスにより接続されたマルチプロセッサシステムの起動方法であって、前記マルチプロセッサシステムが、前記複数の副プロセッサのそれぞれの起動用プログラムが記憶され、前記主プロセッサにより制御される第１の記憶手段と、前記複数の副プロセッサのそれぞれにより制御される複数の第２の記憶手段とを有し、前記マルチプロセッサシステムが起動されるとき、前記複数の副プロセッサのそれぞれの起動用プログラムのプログラムサイズ、および前記複数の副プロセッサのそれぞれの起動時間を表す情報に基づいて、前記複数の副プロセッサのそれぞれが、対応する起動用プログラムを転送するために利用可能な前記バスの帯域の割り当てを制御し、前記複数の副プロセッサのそれぞれが、前記割り当てられた前記バスの帯域を利用して、対応する起動用プログラムを前記第１の記憶手段からそれぞれの前記第２の記憶手段に転送し、前記転送の処理が完了した後、それぞれの前記第２の記憶手段に記憶された起動用プログラムを実行して起動するステップを含む起動方法である。
【００１５】
本発明の一側面においては、第１の記憶手段に、前記複数の副プロセッサのそれぞれの起動用プログラムが記憶され、複数の第２の記憶手段が、前記複数の副プロセッサのそれぞれにより制御され、前記複数の副プロセッサのそれぞれの起動用プログラムのプログラムサイズ、および前記複数の副プロセッサのそれぞれの起動時間を表す情報に基づいて、前記複数の副プロセッサのそれぞれが、対応する起動用プログラムを転送するために利用可能な前記バスの帯域の割り当てが制御され、自分が起動されるとき、前記複数の副プロセッサのそれぞれが、前記割り当てられた前記バスの帯域を利用して、対応する起動用プログラムを前記第１の記憶手段からそれぞれの前記第２の記憶手段に転送し、前記転送の処理が完了した後、それぞれの前記第２の記憶手段に記憶された起動用プログラムを実行して起動する。
【発明の効果】
【００１６】
本発明によれば、より短時間でマルチプロセッサシステムの起動を完了させることができる。
【発明を実施するための最良の形態】
【００１７】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００１８】
本発明の一側面のマルチプロセッサシステムは、主プロセッサと、複数の副プロセッサとがバスにより接続されたマルチプロセッサシステムであって、前記複数の副プロセッサのそれぞれの起動用プログラム（例えば、図５の副CPU起動用プログラム１２１乃至１２３）が記憶され、前記主プロセッサにより制御される第１の記憶手段（例えば、図４の記憶装置１０２）と、前記複数の副プロセッサのそれぞれにより制御される複数の第２の記憶手段（例えば、図４の記憶装置１０７乃至１０９）と、前記複数の副プロセッサのそれぞれの起動用プログラムのプログラムサイズ、および前記複数の副プロセッサのそれぞれの起動時間を表す情報（例えば、図５のプログラムサイズ情報１２１ａ乃至１２３ａおよび起動時間情報１２１ｂ乃至１２３ｂ）に基づいて、前記複数の副プロセッサのそれぞれが、対応する起動用プログラムを転送するために利用可能な前記バスの帯域の割り当てを制御する帯域割り当て制御手段（例えば、図４のバス調停装置１１１）とを備え、自分が起動されるとき、前記複数の副プロセッサのそれぞれが、前記帯域割り当て制御手段により割り当てられた前記バスの帯域を利用して、対応する起動用プログラムを前記第１の記憶手段からそれぞれの前記第２の記憶手段に転送し、前記転送の処理が完了した後、それぞれの前記第２の記憶手段に記憶された起動用プログラムを実行して起動する。
【００１９】
本発明の一側面の起動方法は、主プロセッサと、複数の副プロセッサとがバスにより接続されたマルチプロセッサシステムの起動方法であって、前記マルチプロセッサシステムが、前記複数の副プロセッサのそれぞれの起動用プログラム（例えば、図５の副CPU起動用プログラム１２１乃至１２３）が記憶され、前記主プロセッサにより制御される第１の記憶手段（例えば、図４の記憶装置１０２）と、前記複数の副プロセッサのそれぞれにより制御される複数の第２の記憶手段（例えば、図４の記憶装置１０７乃至１０９）とを有し、前記マルチプロセッサシステムが起動されるとき、前記複数の副プロセッサのそれぞれの起動用プログラムのプログラムサイズ、および前記複数の副プロセッサのそれぞれの起動時間を表す情報（例えば、図５のプログラムサイズ情報１２１ａ乃至１２３ａおよび起動時間情報１２１ｂ乃至１２３ｂ）に基づいて、前記複数の副プロセッサのそれぞれが、対応する起動用プログラムを転送するために利用可能な前記バスの帯域の割り当てを制御し（例えば、図７のステップＳ１３の処理）、前記複数の副プロセッサのそれぞれが、前記割り当てられた前記バスの帯域を利用して、対応する起動用プログラムを前記第１の記憶手段からそれぞれの前記第２の記憶手段に転送し（例えば、図７のステップＳ１４、Ｓ１９、およびＳ２４の処理）、前記転送の処理が完了した後、それぞれの前記第２の記憶手段に記憶された起動用プログラムを実行して起動する（例えば、ステップＳ１６、Ｓ２１、およびＳ２６の処理）ステップを含む。
【００２０】
以下、図面を参照して、本発明の実施の形態について説明する。
【００２１】
最初に、マルチプロセッサシステムについて説明する。図１は、従来のマルチプロセッサシステムの構成例を示すブロック図である。
【００２２】
同図に示されるマルチプロセッサシステム１は、１つの主プロセッサ（図中主CPU（Central Processing Unit）と表記）と、３つの副プロセッサ（図中副CPUと表記）を持つマルチプロセッサシステムとされている。
【００２３】
副プロセッサ１４乃至副プロセッサ１６は、それぞれ自分が実行するプログラムを記憶する記憶装置１７乃至記憶装置１９を有している。副プロセッサ１４乃至副プロセッサ１６が実行するそれぞれのプログラムは、主プロセッサ１１の記憶装置１２に格納されている。なお、記憶装置１２、および記憶装置１７乃至記憶装置１９は、それぞれRAM（Random Access Memory）などにより構成される。
【００２４】
主プロセッサ１１、および副プロセッサ１４乃至副プロセッサ１６は、バス１３により相互に接続されている。主プロセッサ１１は、バス１３を介して記憶装置１２に記憶されているプログラムを、副プロセッサ１４乃至副プロセッサ１６のそれぞれに転送することができ、副プロセッサ１４乃至副プロセッサ１６に転送されたプログラムは、それぞれ記憶装置１７乃至記憶装置１９に記憶されるようになされている。
【００２５】
副プロセッサ１４乃至副プロセッサ１６のそれぞれは、主プロセッサ１１からの起動指示に基づいて、記憶装置１７乃至記憶装置１９に記憶されたプログラムを実行して起動するようになされており、起動が完了したとき、その旨を、バス１３を介して主プロセッサ１１に通知するようになされている。
【００２６】
図２は、記憶装置１２に記憶されているソフトウェアの構成例を示す図である。同図に示されるように、記憶装置１２の所定の領域には、副CPU起動用プログラム２１乃至副CPU起動用プログラム２３が格納されている。この例では、記憶装置１２のアドレスAからアドレスBまでの記憶領域に、副CPU起動用プログラム２１乃至副CPU起動用プログラム２３が格納されている。副CPU起動用プログラム２１は、副プロセッサ１４が実行するプログラムとされ、副CPU起動用プログラム２２は、副プロセッサ１５が実行するプログラムとされ、副CPU起動用プログラム２３は、副プロセッサ１６が実行するプログラムとされる。
【００２７】
なお、図示されていないが、記憶装置１２には、主プロセッサ１１が実行するプログラムも当然記憶されている。
【００２８】
次に、マルチプロセッサシステム１が起動される手順について説明する。図３は、横軸を時間とし、マルチプロセッサシステム１が起動される過程を表した図である。
【００２９】
マルチプロセッサシステム１が起動される場合、最初に主プロセッサ１１の起動処理が行われる。図３においては、期間３１において、主プロセッサ１１の起動処理が行われ、この期間に記憶装置１２にロードされた主プロセッサ１１用のプログラムを、主プロセッサ１１が実行する。
【００３０】
主プロセッサ１１の起動処理が完了すると、次に、主プロセッサ１１の制御に基づいて副CPU起動用プログラム２１の転送が行われる。図３においては、期間３２において、副CPU起動用プログラム２１の転送が行われ、この期間に記憶装置１２に記憶されている副CPU起動用プログラム２１が、バス１３を介して記憶装置１７に転送される。
【００３１】
副CPU起動用プログラム２１の転送が完了すると、次に、主プロセッサ１１が起動指示のコマンドを、バス１３を介して副プロセッサ１４に供給し、副プロセッサ１４の起動処理が行われる。図３においては、期間３３において、副プロセッサ１４の起動処理が行われ、この期間に記憶装置１７にロードされた副CPU起動用プログラム２１を、副プロセッサ１４が実行する。
【００３２】
副プロセッサ１４の起動処理が完了すると、次に、主プロセッサ１１の制御に基づいて副CPU起動用プログラム２２の転送が行われる。図３においては、期間３４において、副CPU起動用プログラム２２の転送が行われ、この期間に記憶装置１２に記憶されている副CPU起動用プログラム２２が、バス１３を介して記憶装置１８に転送される。
【００３３】
副CPU起動用プログラム２２の転送が完了すると、次に、主プロセッサ１１が起動指示のコマンドを、バス１３を介して副プロセッサ１５に供給し、副プロセッサ１５の起動処理が行われる。図３においては、期間３５において、副プロセッサ１５の起動処理が行われ、この期間に記憶装置１８にロードされた副CPU起動用プログラム２２を、副プロセッサ１５が実行する。
【００３４】
副プロセッサ１５の起動処理が完了すると、次に、主プロセッサ１１の制御に基づいて副CPU起動用プログラム２３の転送が行われる。図３においては、期間３６において、副CPU起動用プログラム２３の転送が行われ、この期間に記憶装置１２に記憶されている副CPU起動用プログラム２３が、バス１３を介して記憶装置１９に転送される。
【００３５】
副CPU起動用プログラム２３の転送が完了すると、次に、主プロセッサ１１が起動指示のコマンドを、バス１３を介して副プロセッサ１６に供給し、副プロセッサ１６の起動処理が行われる。図３においては、期間３７において、副プロセッサ１６の起動処理が行われ、この期間に記憶装置１９にロードされた副CPU起動用プログラム２３を、副プロセッサ１６が実行する。
【００３６】
そして、副プロセッサ１６の起動処理が完了すると、マルチプロセッサシステム１の起動が完了する。
【００３７】
このように、マルチプロセッサシステム１の起動には、期間３１の開始時点である時刻ｔ１から期間３７の終了時点である時刻ｔ２までの時間がかかることになる。
【００３８】
従来のマルチプロセッサシステムにおいては、図３を参照して上述したように、主プロセッサが起動した後に、副プロセッサに対するプログラムの転送と起動処理を、副プロセッサ毎に順次行う逐次起動方式が採用されていた。逐次起動方式では、マルチプロセッサシステムが起動するまでに要する時間は、主プロセッサの起動時間、全ての副プロセッサの記憶装置へのプログラムの転送時間、および全ての副プロセッサの起動時間の総和となるため、プロセッサの総数と、プログラムの大きさに比例して、システムの起動時間が遅くなってしまう。従って、転送すべきプログラムの数が多い場合、または転送すべきプログラムのサイズ（データ量）が大きい場合、マルチプロセッサシステム全体の起動完了に要する時間は、極めて長くなってしまう。
【００３９】
そこで、本発明においては、副CPU起動用プログラムを転送するにあたって、転送されるプログラムのサイズと、副プロセッサの起動処理に要する時間とに基づいて、バスの帯域の割り当てを動的に行い、マルチプロセッサシステム全体の起動完了に要する時間が短くなるようにする。
【００４０】
図４は、本発明の一実施の形態に係るマルチプロセッサシステムの構成例を示すブロック図である。
【００４１】
同図に示されるマルチプロセッサシステム１００は、１つの主プロセッサ（図中主CPUと表記）と、３つの副プロセッサ（図中副CPUと表記）を持つマルチプロセッサシステムとされている。
【００４２】
副プロセッサ１０４乃至副プロセッサ１０６は、それぞれ自分が実行するプログラムを記憶する記憶装置１０７乃至記憶装置１０９を有している。副プロセッサ１０４乃至副プロセッサ１０６が実行するそれぞれのプログラムは、主プロセッサ１０１の記憶装置１０２に格納されている。なお、記憶装置１０２、および記憶装置１０７乃至記憶装置１０９は、それぞれRAM（Random Access Memory）などにより構成される。
【００４３】
主プロセッサ１０１に接続されるバス調停装置１１１、および副プロセッサ１０４乃至副プロセッサ１０６は、バス１０３により相互に接続されている。
【００４４】
バス調停装置１１１は、副プロセッサ１０４乃至副プロセッサ１０６のそれぞれが、主プロセッサ１０１とバス１０３を介してデータを送受信するとき、予め定められた方式により、タイムスロットを割り当てることにより、副プロセッサ１０４乃至副プロセッサ１０６のそれぞれに、所定の量のバスの帯域を割り当てる。
【００４５】
副プロセッサ１０４乃至副プロセッサ１０６のそれぞれは、バス１０３を介して主プロセッサ１０１と通信を行い、記憶装置１０２に記憶されているプログラムを読み出して、記憶装置１０７乃至記憶装置１０９にそれぞれ転送させることができるようになされている。
【００４６】
副プロセッサ１０４乃至副プロセッサ１０６のそれぞれは、主プロセッサ１０１の記憶装置１０２から転送されて、記憶装置１０７乃至記憶装置１０９に記憶されたプログラムを実行して起動するようになされており、起動が完了したとき、その旨を、バス１０３を介して主プロセッサ１０１に通知するようになされている。
【００４７】
図５は、記憶装置１０２に記憶されているソフトウェアの構成例を示す図である。同図に示されるように、記憶装置１０２の所定の領域には、副CPU起動用プログラム１２１乃至副CPU起動用プログラム１２３が格納されている。この例では、記憶装置１２のアドレスＸからアドレスＹまでの記憶領域に、副CPU起動用プログラム１２１乃至副CPU起動用プログラム１２３が格納されている。
【００４８】
副CPU起動用プログラム１２１は、副プロセッサ１０４が実行するプログラムとされ、副CPU起動用プログラム１２２は、副プロセッサ１０５が実行するプログラムとされ、副CPU起動用プログラム１２３は、副プロセッサ１０６が実行するプログラムとされる。
【００４９】
なお、図示されていないが、記憶装置１０２には、主プロセッサ１０１が実行するプログラムも当然記憶されている。
【００５０】
同図に示されるように、副CPU起動用プログラム１２１は、プログラムサイズ情報１２１ａ、起動時間情報１２１ｂ、および副CPU起動用プログラムデータ１２１ｃを含む構成とされている。
【００５１】
プログラムサイズ情報１２１ａは、副CPU起動用プログラム１２１のデータ量（例えば、バイト数）を表す情報とされる。起動時間情報１２１ｂは、副CPU起動用プログラム１２１が記憶装置１０７にロードされた後、副プロセッサ１０４により実行されて、副プロセッサ１０４の起動処理が完了するまでに要する時間を表す情報とされる。副CPU起動用プログラムデータ１２１ｃは、実際に副プロセッサ１０４により実行されるコードなどのデータ（プログラム本体）とされる。
【００５２】
同様に、副CPU起動用プログラム１２２は、プログラムサイズ情報１２２ａ、起動時間情報１２２ｂ、および副CPU起動用プログラムデータ１２２ｃを含む構成とされ、副CPU起動用プログラム１２３は、プログラムサイズ情報１２３ａ、起動時間情報１２３ｂ、および副CPU起動用プログラムデータ１２３ｃを含む構成とされている。
【００５３】
主プロセッサ１１は、自分の起動処理が完了した後、副プロセッサ１０４乃至副プロセッサ１０６のそれぞれに対して、同時に起動指示のコマンドを、バス１３を介して供給するようになされている。
【００５４】
副プロセッサ１０４乃至副プロセッサ１０６のそれぞれは、起動指示のコマンドを取得すると、自分が実行すべきプログラムの転送処理を開始する。上述したように、主プロセッサ１１は、３つの副プロセッサに対して同時に起動指示を出すので、プログラムの転送処理が開始されるとき、バス１０３の利用について競合が発生することになる。このとき、バス調停装置１１１は、後述するようにアービトレーションを行い、３つの副プロセッサによるプログラム転送処理は並行して実行されることになる。
【００５５】
ここで、バス調停装置１１１のアービトレーションのアルゴリズムの例を説明する。
【００５６】
各副プロセッサの起動時間は、２つの要素に分解することができる。すなわち、プログラムのデータ量およびプログラムの転送速度によって定まるプログラム転送時間という要素と、プログラムを実行開始してから、起動処理が終了するまでの起動処理実行時間という要素である。
【００５７】
プログラムの転送時間は、バス調停装置１１１によって割り当てられるバスの帯域によって制御される。起動処理実行時間は、プログラムのサイズとそのプログラムによる起動処理の内容に依存する。従って、転送速度が一定である場合、プログラムのサイズとそのプログラムによる起動処理の内容によって、プログラム転送時間が長く、起動処理実行時間が短くなったり、その逆に、プログラム転送時間が短く、起動処理実行時間が長くなったりする。
【００５８】
仮に転送速度を変えることができるとすれば、プログラム転送時間が短く、起動処理実行時間が長い場合、転送速度を上げてもその副プロセッサ起動時間はあまり短くならない。これに対して、プログラム転送時間が長く、起動処理実行時間が短い場合、転送速度を上げるとその副プロセッサ起動時間が大幅に短縮される。
【００５９】
例えば、副プロセッサ１０４乃至副プロセッサ１０６の起動時間が全て同じになるように、転送速度を設定すれば、マルチプロセッサシステム１００全体の起動時間をより短くすることができる。転送速度は、副プロセッサ１０４乃至副プロセッサ１０６に割り当てられるタイムスロットの数を多くしたり、少なくしたりすることで制御することが可能である。
【００６０】
図５を参照して上述したように、本発明においては、副CPU起動用プログラム１２１乃至副CPU起動用プログラム１２３には、それぞれプログラムサイズ情報１２１ａ乃至プログラムサイズ情報１２３ａと、起動時間情報１２１ｂ乃至起動時間情報１２３ｂとが含まれている。これらの情報に基づいて、主プロセッサ１０１が予め副プロセッサ１０４乃至副プロセッサ１０６のそれぞれに割り当てるべき帯域を演算しておく。この演算は、例えば、式（１）および式（２）に基づいてなされる。
【００６１】
RA=R1+R2+R3・・・（１）
【００６２】
S1/R1+T1 = S2/R2+T2 = S3/R3+T3・・・（２）
【００６３】
ここで、RAは、バス１０３の総帯域であり、R1が副プロセッサ１０４に割り当てるべき帯域とされ、R２が副プロセッサ１０５に割り当てるべき帯域とされ、R３が副プロセッサ１０６に割り当てるべき帯域とされる。
【００６４】
また、S1は、副CPU起動用プログラム１２１のプログラムサイズとされ、S２は、副CPU起動用プログラム１２２のプログラムサイズとされ、S３は、副CPU起動用プログラム１２３のプログラムサイズとされる。
【００６５】
さらに、T1は、副CPU起動用プログラム１２１が記憶装置１０７にロードされた後、副プロセッサ１０４により実行されて、副プロセッサ１０４の起動処理が完了するまでに要する時間とされ、T２は、副CPU起動用プログラム１２２が記憶装置１０８にロードされた後、副プロセッサ１０５により実行されて、副プロセッサ１０５の起動処理が完了するまでに要する時間とされ、T３は、副CPU起動用プログラム１２３が記憶装置１０９にロードされた後、副プロセッサ１０６により実行されて、副プロセッサ１０６の起動処理が完了するまでに要する時間とされる。
【００６６】
RAの値は予め定められているものとし、S１乃至S３の値をプログラムサイズ情報１２１ａ乃至プログラムサイズ情報１２３ａに基づいて特定し、T１乃至T３の値を起動時間情報１２１ｂ乃至起動時間情報１２３ｂに基づいて特定し、主プロセッサ１０１は、式（１）および式（２）に基づいてR1乃至R３の値を演算する。
【００６７】
そしてバス調停装置１１１は、主プロセッサ１０１により演算された、R1乃至R３の値に対応するタイムスロットの数（単位時間当たりのタイムスロット数）を、副プロセッサ１０４乃至副プロセッサ１０６のそれぞれに割り当てる。
【００６８】
このようにして、バス調停装置１１１のアービトレーションが行われる。
【００６９】
図６は、横軸を時間とし、マルチプロセッサシステム１が起動される過程を表した図である。
【００７０】
マルチプロセッサシステム１００が起動される場合、最初に主プロセッサ１０１の起動処理が行われる。図６においては、期間１５１において、主プロセッサ１０１の起動処理が行われ、この期間に記憶装置１０２にロードされた主プロセッサ１０１用のプログラムを、主プロセッサ１０１が実行する。
【００７１】
主プロセッサ１０１の起動処理が完了すると、次に、主プロセッサ１０１は、副プロセッサ１０４乃至副プロセッサ１０６のそれぞれに起動指示のコマンドを同時に供給する。これにより、副プロセッサ１０４乃至副プロセッサ１０６のそれぞれは、自分が実行すべきプログラムの転送処理を開始する。
【００７２】
このとき、上述したように、バス調停装置１１１によるアービトレーションが行われるので、副CPU起動用プログラム１２１の転送、副CPU起動用プログラム１２２の転送、および副CPU起動用プログラム１２３の転送が並行して行われることになる。図６においては、期間１５２、期間１５４、および期間１５６において、それぞれ副CPU起動用プログラム１２１の転送、副CPU起動用プログラム１２２の転送、および副CPU起動用プログラム１２３の転送が行われ、この期間に記憶装置１０２に記憶されている副CPU起動用プログラム１２１乃至副CPU起動用プログラム１２３が、バス１０３を介してそれぞれ記憶装置１０７乃至記憶装置１０９に転送される。
【００７３】
副プロセッサ１０４乃至副プロセッサ１０６のそれぞれは、副CPU起動用プログラム１２１乃至副CPU起動用プログラム１２３の転送が完了すると、自身の起動処理を行う。図６においては、期間１５３において、副プロセッサ１０４の起動処理が行われ、この期間に記憶装置１０７にロードされた副CPU起動用プログラム１２１を、副プロセッサ１０４が実行する。また、期間１５５において、副プロセッサ１０５の起動処理が行われ、この期間に記憶装置１０８にロードされた副CPU起動用プログラム１２２を、副プロセッサ１０５が実行する。さらに、期間１５７において、副プロセッサ１０６の起動処理が行われ、この期間に記憶装置１０９にロードされた副CPU起動用プログラム１２３を、副プロセッサ１０６が実行する。
【００７４】
このように、マルチプロセッサシステム１００の起動には、期間１５１の開始時点である時刻ｔ１１から期間１５３、期間１５５、および期間１５７の終了時点である時刻ｔ１２までの時間がかかることになる。
【００７５】
図１に示される従来のマルチプロセッサシステム１と、図４に示される本発明のマルチプロセッサシステム１００において、主プロセッサおよび各副プロセッサの処理能力およびバスの転送速度が同じであり、かつ、各副CPU起動用プログラムのそれぞれのプログラムサイズとそのプログラムによる起動処理の内容が同じであった場合、図３に示される時刻t1から時刻T2までの時間より、図６に示される時刻t11から時刻t12までの時間の方が短くなる。
【００７６】
すなわち、各副CPU起動用プログラムのプログラムサイズと各副プロセッサの起動時間とに基づいてバス１０３の帯域を適切に割り当てたことにより、マルチプロセッサシステム１００全体の起動処理に要する時間を短縮することが可能となる。
【００７７】
例えば、マルチプロセッサシステムが組み込まれた録画装置などにおいて、電源を投入してから、システムが利用可能になるまでにかかる時間が長くなると、ユーザからの録画開始の要求に対して、実際に録画を開始するまでの反応が遅くなり、ユーザの利便性を損なうことになる。本発明を適用したマルチプロセッサシステムを、録画装置などに組み込むことにより、よりユーザの利便性を向上させることができる。
【００７８】
次に、図７のフローチャートを参照してマルチプロセッサシステム１００の起動処理について説明する。
【００７９】
ステップＳ１１において、主プロセッサ１０１は、自分の起動処理を行う。この処理は、図６の期間１５１に対応するものであり、記憶装置１０２にロードされた主プロセッサ１０１用のプログラムが、主プロセッサ１０１により実行される。
【００８０】
ステップＳ１１の処理により、主プロセッサ１０１の起動が完了した後、ステップＳ１２において、主プロセッサ１０１は、起動指示のコマンドを供給する。このとき、バス１０３を介して副プロセッサ１０４乃至副プロセッサ１０６のそれぞれに起動指示のコマンドが同時に供給される。
【００８１】
ステップＳ１３において、バス調停装置１１１は、上述したようにアービトレーションを行い、副プロセッサ１０４乃至副プロセッサ１０６のそれぞれにバス１０３の帯域を割り当てる。
【００８２】
ステップＳ１３の処理の後、ステップＳ１４、ステップＳ１９、およびステップＳ２４の処理が同時に実行される。
【００８３】
ステップＳ１４において、副プロセッサ１０４は、副CPU起動用プログラム１２１の転送を行う。この処理は、図６の期間１５２に対応するものである。
【００８４】
ステップＳ１５において、副プロセッサ１０４は、副CPU起動用プログラム１２１の転送が完了したか否かを判定し、転送が完了したと判定されるまで待機する。記憶装置１０７に、副CPU起動用プログラム１２１が記憶された場合、ステップＳ１５で転送が完了と判定され、処理は、ステップＳ１６に進む。
【００８５】
ステップＳ１６において、副プロセッサ１０４は、自分を起動する。この処理は、図６の期間１５３に対応するものであり、記憶装置１０７にロードされた副CPU起動用プログラム１２１が副プロセッサ１０４により実行される。
【００８６】
ステップＳ１７において、副プロセッサ１０４は、自分の起動処理が完了したか否かを判定し、完了したと判定されるまで待機する。ステップＳ１７において、自分の起動処理が完了したと判定された場合、処理は、ステップＳ１８に進む。
【００８７】
ステップＳ１８において、副プロセッサ１０４は、自分の起動が完了した旨を、主プロセッサ１０１に通知する。
【００８８】
ステップＳ１９乃至ステップＳ２３の処理は、ステップＳ１４乃至ステップＳ１８の処理と同様なので詳細な説明は省略するが、ステップＳ１９乃至ステップＳ２３の処理は、副プロセッサ１０５により実行されることになる。また、ステップＳ２４乃至ステップＳ２８の処理は、やはりステップＳ１４乃至ステップＳ１８の処理と同様なので詳細な説明は省略するが、ステップＳ２４乃至ステップＳ２８の処理は、副プロセッサ１０６により実行されることになる。
【００８９】
そして、ステップＳ１８、ステップＳ２３、およびステップＳ２８の処理が終了したとき、マルチプロセッサシステム１００の起動処理が終了する。
【００９０】
このようにして、マルチプロセッサシステム１００が起動される。
【００９１】
なお、上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
【００９２】
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【００９３】
【図１】従来のマルチプロセッサシステムの構成例を示すブロック図である。
【図２】図１の記憶装置に記憶されるソフトウェアの構成例を示す図である。
【図３】図１のマルチプロセッサシステムが起動される過程を表した図である。
【図４】本発明の一実施の形態に係るマルチプロセッサシステムの構成例を示すブロック図である。
【図５】図４の記憶装置に記憶されるソフトウェアの構成例を示す図である。
【図６】図４のマルチプロセッサシステムが起動される過程を表した図である。
【図７】マルチプロセッサシステムの起動処理を説明するフローチャートである。
【符号の説明】
【００９４】
１００  マルチプロセッサシステム，  １０１  主プロセッサ，  １０２  記憶装置，  １０３  バス，  １０４  副プロセッサ，  １０５  副プロセッサ，  １０６  副プロセッサ，  １０７  記憶装置，  １０８  記憶装置，  １０９  記憶装置，  １１１  バス調停装置，  １２１ａ  プログラムサイズ情報，  １２１ｂ  起動時間情報，  １２２ａ  プログラムサイズ情報，  １２２ｂ  起動時間情報，  １２３ａ  プログラムサイズ情報，  １２３ｂ  起動時間情報
【図１】
2009098769.tif 000003
【図２】
2009098769.tif 000004
【図３】
2009098769.tif 000005
【図４】
2009098769.tif 000006
【図５】
2009098769.tif 000007
【図６】
2009098769.tif 000008
【図７】
2009098769.tif 000009