(57)【要約】【課題】ハードウェアの数を抑制し、装置全体の構成を簡易化させる。【解決手段】  マルチプロセッサシステム１は、マスタープロセッサ１０と１つ又は複数のスレーブプロセッサ２０とからなり、マスタープロセッサ１０は、マスタープロセッサ及びスレーブプロセッサの起動プログラムを記憶するプログラムＲＯＭ１４と、マスタープロセッサの起動プログラムを展開するマスターＲＡＭ１２と、展開された起動プログラムに基づき起動処理を行うマスターＣＰＵ１１と、スレーブプロセッサの起動プログラムをスレーブプロセッサ２０に転送するマスター側データＩ／Ｆ１３とを備える。スレーブプロセッサ２０は、スレーブプロセッサの起動プログラムをマスター側データＩ／Ｆ１３から受信するスレーブ側データＩ／Ｆ２３と、受信した起動プログラムを展開するスレーブＲＡＭ２２と、展開された起動プログラムに基づき起動処理を行うスレーブＣＰＵ２１とを備える。【選択図】図２
2013041436.tif 000002
【特許請求の範囲】
【請求項１】
マスタープロセッサと該マスタープロセッサに接続された１つ又は複数のスレーブプロセッサとからなるマルチプロセッサシステムであって、
前記マスタープロセッサ及び前記スレーブプロセッサの起動プログラムを記憶するプログラムＲＯＭと、
前記マスタープロセッサの起動プログラムを展開する第１のＲＡＭと、
前記プログラムＲＯＭに記憶され、前記第１のＲＡＭ上に展開された前記マスタープロセッサの起動プログラムに基づき起動処理を行う第１のＣＰＵと、
前記プログラムＲＯＭに記憶された前記スレーブプロセッサの起動プログラムを前記スレーブプロセッサに対して転送する第１のデータＩ／Ｆとを備えるマスタープロセッサと、
前記スレーブプロセッサの起動プログラムを前記第１のデータＩ／Ｆから受信する第２のデータＩ／Ｆと、
前記スレーブプロセッサの起動プログラムを展開する第２のＲＡＭと、
前記第２のＲＡＭ上に展開された前記スレーブプロセッサの起動プログラムに基づき起動処理を行う第２のＣＰＵとを備えるスレーブプロセッサとからなることを特徴とするマルチプロセッサシステム。
【請求項２】
前記スレーブプロセッサは、該スレーブプロセッサの起動プログラムを受信した後に、前記第２のＣＰＵのリセット状態を解除することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記第１のデータＩ／Ｆ及び前記第２のデータＩ／Ｆは、前記起動プログラムを一時的に記憶する記憶領域を有することを特徴とする請求項１又は２に記載のマルチプロセッサシステム。
【請求項４】
マスタープロセッサと該マスタープロセッサに接続された１つ又は複数のスレーブプロセッサとからなるマルチプロセッサシステムにおけるスレーブプロセッサの起動方法であって、
前記マスタープロセッサに設けられた該マスタープロセッサ及び前記スレーブプロセッサの起動プログラムを記憶するプログラムＲＯＭから読み出された前記スレーブプロセッサの起動プログラムを受信し、
受信した前記スレーブプロセッサの起動プログラムをＲＡＭ上に展開し、
前記ＲＡＭ上に展開された前記スレーブプロセッサの起動プログラムに基づき、ＣＰＵで起動処理を行うことを特徴とするスレーブプロセッサの起動方法。
【請求項５】
前記スレーブプロセッサの起動プログラムの前記ＲＡＭ上への展開が完了した後、前記ＣＰＵのリセット状態を解除して前記起動処理を行うことを特徴とする請求項４に記載のスレーブプロセッサの起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを有するマルチプロセッサシステム及び起動方法に関し、特に、マスター／スレーブ型のマルチプロセッサシステム及びスレーブプロセッサの起動方法に関する。
【背景技術】
【０００２】
近年、組み込みシステムや汎用サーバの開発において、システムの高性能化に伴い、複数のＣＰＵ（Central Processing Unit）を有するマルチプロセッサシステムが注目されている。一般に、１つのＣＰＵに複数のコアを封入したマルチコアプロセッサや、上述した複数のＣＰＵを有するマルチプロセッサを用いたシステムは、プロセッサの処理速度を向上させることに加えて、シングルプロセッサと比較して省電力であるという利点がある。
【０００３】
ただし、基幹システムに利用されるサーバや組み込みシステムにおいては、性能の向上だけでなく、継続して稼働し続けることができる信頼性が必要となる。これは、基幹システムにおいて致命的なエラー等が発生した場合に、エラー発生箇所を本体から速やかに切り離すと共に、早急に復旧して再起動させなければならないからである。
【０００４】
ここで、従来の組み込みシステム等に用いられるマルチプロセッサシステムの構成の一例について、図５及び図６を参照して説明する。図５に示すように、マルチプロセッサシステム１００は、マスタープロセッサ１１０と、１つ又は複数のスレーブプロセッサ１２０とで構成され、各々のプロセッサが互いに接続される。
【０００５】
マスタープロセッサ１１０は、図６に示すように、各部を制御するマスターＣＰＵ１１１と、マスターＣＰＵ１１１の主記憶装置として設けられたマスターＲＡＭ（Random Access Memory）１１２と、スレーブプロセッサ１２０との間で各種データの送受信を行うマスター側データインターフェース（Ｉ／Ｆ）１１３と、起動プログラム等が記憶されたマスター側プログラムＲＯＭ（Read Only Memory）１１４とを備え、各部がデータバスによって互いに接続される。
【０００６】
スレーブプロセッサ１２０は、各部を制御するスレーブＣＰＵ１２１と、スレーブＣＰＵ１２１の主記憶装置として設けられたスレーブＲＡＭ１２２と、マスタープロセッサ１１０との間で各種データの送受信を行うスレーブ側データインターフェース（Ｉ／Ｆ）１２３と、起動プログラム等が記憶されたスレーブ側プログラムＲＯＭ１２４とを備え、各部がデータバスによって互いに接続される。尚、図６に示す例では、一例として、マスタープロセッサ１１０と１つのスレーブプロセッサ１２０とが接続された場合を示す。
【０００７】
このように構成されたマルチプロセッサシステム１００では、図７に示すように、マスタープロセッサ１１０及びスレーブプロセッサ１２０に設けられたマスター側プログラムＲＯＭ１１４及びスレーブ側プログラムＲＯＭ１２４に記憶された各々の起動プログラムを読み出し、読み出した起動プログラムをマスターＲＡＭ１１２及びスレーブＲＡＭ１２２上に展開することにより、マスターＣＰＵ１１１及びスレーブＣＰＵ１２１が起動処理を行う。
【０００８】
上述したように、従来のマルチプロセッサシステムでは、各プロセッサが独立して起動処理を行うため、マスタープロセッサ及びスレーブプロセッサが各々共通するハードウェア（プログラムＲＯＭ）を保有しなければならない。そのため、並列に設けられたプロセッサの数が増加するに従って、必要なハードウェアの数も増加し、大規模なマルチプロセッサシステムでは、ハードウェア数の増加によるシステムの複雑化が問題となる。
【０００９】
そこで、最近では、システムの複雑化を避けるために様々な方法が提案されている。例えば、特許文献１には、スレーブプロセッサに設けられるプログラムＲＯＭを削除し、マスタープロセッサ及びスレーブプロセッサの起動プログラムをマスタープロセッサに設けられたプログラムＲＯＭで一括管理する方法が記載されている。特許文献１に記載のシステムでは、スレーブプロセッサに対してローダと呼ばれるハードウェアを追加し、スレーブプロセッサは、このローダを用いてマスターＣＰＵとプロセッサ間の通信を行い、スレーブプロセッサの起動プログラムをスレーブプロセッサに設けられたＲＡＭへ展開する。
【００１０】
また、特許文献２には、スレーブプロセッサの起動プログラムをマスタープロセッサに設けられたプログラムＲＯＭから取得する方法が記載されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００７−２１３２９２号公報
【特許文献２】特開平１０−３２０３６６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、特許文献１に記載のシステムでは、スレーブプロセッサの起動プログラムを取得するためにローダを新たに追加する必要があるため、スレーブプロセッサを構成するハードウェアの数が増加し、システムの複雑化を抑制することができないという問題があった。
【００１３】
また、特許文献１に記載のシステムでは、ローダとマスターＣＰＵとの間でプロセッサ間通信による命令の交換を行う。そのため、ローダによるダウンロード命令に関する制御が必要となり、開発コストが増大するという問題があった。
【００１４】
さらに、特許文献１に記載のシステムでは、ローダの制御をハードウェアによって行う。そのため、例えばローダが故障した際には、ハードウェアを修復する必要があり、システム全体の復旧に時間を要するという問題があった。
【００１５】
一方、特許文献２に記載のシステムでは、同種のプロセッサを複数実装するホモジニアス構成のマルチプロセッサを前提としているため、異種のプロセッサを複数実装するヘテロジニアス構成のマルチプロセッサに適用することができないという問題があった。また、特許文献２に記載のシステムでは、ハードウェアの数を削減していないため、システムの複雑化を抑制することができない。
【００１６】
そこで、本発明は、上記従来の技術における問題点に鑑みてなされたものであって、ハードウェアの数を抑制し、装置全体の構成を簡易化させることが可能なマルチプロセッサシステム及び起動方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明は、マスタープロセッサと該マスタープロセッサに接続された１つ又は複数のスレーブプロセッサとからなるマルチプロセッサシステムであって、前記マスタープロセッサ及び前記スレーブプロセッサの起動プログラムを記憶するプログラムＲＯＭと、前記マスタープロセッサの起動プログラムを展開する第１のＲＡＭと、前記プログラムＲＯＭに記憶され、前記第１のＲＡＭ上に展開された前記マスタープロセッサの起動プログラムに基づき起動処理を行う第１のＣＰＵと、前記プログラムＲＯＭに記憶された前記スレーブプロセッサの起動プログラムを前記スレーブプロセッサに対して転送する第１のデータＩ／Ｆとを備えるマスタープロセッサと、前記スレーブプロセッサの起動プログラムを前記第１のデータＩ／Ｆから受信する第２のデータＩ／Ｆと、前記スレーブプロセッサの起動プログラムを展開する第２のＲＡＭと、前記第２のＲＡＭ上に展開された前記スレーブプロセッサの起動プログラムに基づき起動処理を行う第２のＣＰＵとを備えるスレーブプロセッサとからなることを特徴とする。
【００１８】
そして、本発明によれば、マスタープロセッサに設けられたプログラムＲＯＭにマスタープロセッサ及びスレーブプロセッサの起動プログラムを予め記憶し、スレーブプロセッサの起動プログラムをプログラムＲＯＭから読み出して第２のＲＡＭ上に展開することにより、スレーブプロセッサの起動処理を行うため、スレーブプロセッサに対して起動プログラムを記憶するためのプログラムＲＯＭが不要となり、従来と比較してハードウェアの数を削減することが可能になる。
【００１９】
上記マルチプロセッサシステムにおいて、前記スレーブプロセッサは、該スレーブプロセッサの起動プログラムを受信した後に、前記第２のＣＰＵのリセット状態を解除することができる。
【００２０】
上記マルチプロセッサシステムにおいて、前記第１のデータＩ／Ｆ及び前記第２のデータＩ／Ｆは、前記起動プログラムを一時的に記憶する記憶領域を有することができる。
【００２１】
また、本発明は、マスタープロセッサと該マスタープロセッサに接続された１つ又は複数のスレーブプロセッサとからなるマルチプロセッサシステムにおけるスレーブプロセッサの起動方法であって、前記マスタープロセッサに設けられた該マスタープロセッサ及び前記スレーブプロセッサの起動プログラムを記憶するプログラムＲＯＭから読み出された前記スレーブプロセッサの起動プログラムを受信し、受信した前記スレーブプロセッサの起動プログラムをＲＡＭ上に展開し、前記ＲＡＭ上に展開された前記スレーブプロセッサの起動プログラムに基づき、ＣＰＵで起動処理を行うことを特徴とする。本発明によれば、前記発明と同様に、従来と比較してハードウェアの数を削減することが可能になる。
【００２２】
上記スレーブプロセッサの起動方法において、前記スレーブプロセッサの起動プログラムの前記ＲＡＭ上への展開が完了した後、前記ＣＰＵのリセット状態を解除して前記起動処理を行うことができる。
【発明の効果】
【００２３】
以上のように、本発明によれば、ハードウェアの数を抑制し、装置全体の構成を簡略化させることが可能になる。
【図面の簡単な説明】
【００２４】
【図１】本発明にかかるマルチプロセッサシステムの一実施の形態を示すブロック図である。
【図２】マルチプロセッサシステムにおけるマスタープロセッサ及びスレーブプロセッサの構成の一例を示すブロック図である。
【図３】マスタープロセッサ及びスレーブプロセッサの動作について説明するためのブロック図である。
【図４】マスタープロセッサ及びスレーブプロセッサの動作について説明するためのフローチャートである。
【図５】従来のマルチプロセッサシステムの構成の一例を示すブロック図である。
【図６】従来のマルチプロセッサシステムにおけるマスタープロセッサ及びスレーブプロセッサの構成の一例を示すブロック図である。
【図７】従来のマスタープロセッサ及びスレーブプロセッサの動作について説明するためのブロック図である。
【発明を実施するための形態】
【００２５】
次に、本発明を実施するための形態について、図面を参照しながら詳細に説明する。
【００２６】
図１は、本発明にかかるマルチプロセッサシステムの一実施の形態を示し、このマルチプロセッサシステム１は、マスタープロセッサ１０と、１つ又は複数のスレーブプロセッサ２０とで構成され、各々のプロセッサが互いに接続される。
【００２７】
マスタープロセッサ１０は、図２に示すように、マスターＣＰＵ１１、マスターＲＡＭ１２、マスター側データインターフェース（Ｉ／Ｆ）１３及びプログラムＲＯＭ１４を備え、データバスによって互いに接続されることにより、各部の間でデータの伝送を行う。
【００２８】
スレーブプロセッサ２０は、スレーブＣＰＵ２１、スレーブＲＡＭ２２及びスレーブ側データインターフェース（Ｉ／Ｆ）２３を備え、データバスによって互いに接続されることにより、各部の間でデータの伝送を行う。尚、図２においては、説明を容易とするため、マスタープロセッサ１０と１つのスレーブプロセッサ２０とが接続された場合を例にとって説明する。
【００２９】
マスターＣＰＵ１１は、プログラムＲＯＭ１４に予め格納されたプログラムに従い、マスターＲＡＭ１２をワークメモリとしてデータバスに接続された各部を制御すると共に、後述するプログラムＲＯＭ１４に記憶された起動プログラムをマスターＲＡＭ１２上に展開し、マスタープロセッサ１０を起動させる機能を備える。また、マスターＣＰＵ１１は、プログラムＲＯＭ１４に記憶されたスレーブプロセッサ２０の起動プログラムを、マスター側データＩ／Ｆ１３を介してスレーブプロセッサ２０に設けられたスレーブＲＡＭ２２にコピーする機能を備える。
【００３０】
マスターＲＡＭ１２は、マスターＣＰＵ１１を動作させるための主記憶装置として設けられる。このマスターＲＡＭ１２は、スレーブプロセッサ２０と共有するようにしてもよい。マスター側データＩ／Ｆ１３は、所定の記憶領域を有し、プログラムＲＯＭ１４から供給されたデータを一時的に記憶する。また、マスター側データＩ／Ｆ１３は、スレーブプロセッサ２０に設けられたスレーブ側データＩ／Ｆ２３と接続され、マスタープロセッサ１０とスレーブプロセッサ２０との間で各種データの送受信を行う。プログラムＲＯＭ１４は、起動プログラム等のマスタープロセッサ１０を動作させるための各種プログラムを記憶する。また、プログラムＲＯＭ１４には、マスタープロセッサ１０に接続されたスレーブプロセッサ２０の起動プログラムが記憶される。
【００３１】
スレーブＣＰＵ２１は、マスターＲＡＭ１２をワークメモリとしてデータバスに接続された各部を制御する。スレーブＣＰＵ２１は、スレーブ側データＩ／Ｆ２３を介してマスタープロセッサ１０から受け取り、スレーブＲＡＭ２２上に展開された起動プログラムに基づき、スレーブプロセッサ２０を起動させる機能を備える。
【００３２】
スレーブＲＡＭ２２は、スレーブＣＰＵ２１を動作させるための主記憶装置として設けられる。スレーブ側データＩ／Ｆ２３は、マスタープロセッサ１０に設けられたマスター側データＩ／Ｆ１３と接続され、マスタープロセッサ１０とスレーブプロセッサ２０との間で各種データの送受信を行う。また、スレーブ側データＩ／Ｆ２３は、所定の記憶領域を有し、マスター側データＩ／Ｆ１３から供給されたデータを一時的に記憶する。
【００３３】
次に、上記構成を有するマルチプロセッサシステム１の動作について、図３及び図４を参照して説明する。まず、マスタープロセッサ１０では、図３（ａ）に示すように、マスターＣＰＵ１１がプログラムＲＯＭ１４に記憶されたマスタープロセッサ１０の起動プログラムを読み出し、マスターＲＡＭ１２上に展開することにより起動を完了する。これにより、マスタープロセッサ１０は、起動完了状態又は稼動状態となる（図４のステップＳ１１）。
【００３４】
一方、スレーブプロセッサ２０では、システム内部にスレーブプロセッサ２０の起動プログラムが記憶されていないため、スレーブＣＰＵ２１は、電源が供給された後、リセットタイミングを待ち続けるリセット状態となり、リセットの解除要求を受けるまでリセット状態を継続する（ステップＳ２１）。
【００３５】
次に、マスターＣＰＵ１１は、図３（ｂ）に示すように、スレーブプロセッサ２０の起動プログラムの転送コード数及び転送モードをプログラムＲＯＭ１４から読み出し、マスター側データＩ／Ｆ１３に転送する（図４のステップＳ１２）。マスター側データＩ／Ｆ１３は、プログラムＲＯＭ１４から転送されたスレーブプロセッサ２０の起動プログラムの転送コード数及び転送モードを、所定の記憶領域に一時的に記憶する。そして、マスター側データＩ／Ｆ１３は、記憶された起動プログラムの転送コード数及び転送モードを、接続されたスレーブプロセッサ２０のスレーブ側データＩ／Ｆ２３に対して転送する（ステップＳ１３）。
【００３６】
スレーブプロセッサ２０の起動プログラムの転送コード数及び転送モードがスレーブ側データＩ／Ｆ２３に転送されると、スレーブ側データＩ／Ｆ２３は、受信した起動プログラムの転送コード数及び転送モードを所定の記憶領域に一時的に記憶する（ステップＳ２２）。
【００３７】
次に、マスターＣＰＵ１１は、スレーブプロセッサ２０の起動プログラムをプログラムＲＯＭ１４から読み出し、マスター側データＩ／Ｆ１３に転送する（ステップＳ１４）。マスター側データＩ／Ｆ１３は、プログラムＲＯＭ１４から受け取った起動プログラムをスレーブ側データＩ／Ｆ２３に対して転送する（ステップＳ１５）。
【００３８】
スレーブプロセッサ２０の起動プログラムがスレーブ側データＩ／Ｆ２３に転送されると、スレーブ側データＩ／Ｆ２３は、受信した起動プログラムをスレーブＲＡＭ２２上に展開する（ステップＳ２３）。そして、スレーブ側データＩ／Ｆ２３は、記憶領域に記憶された起動プログラムの転送コード数に基づき、起動プログラムの展開が正常に行われたか否かを精査し（ステップＳ２４）、起動プログラムの展開が正常に行われたと判断した場合には、スレーブＣＰＵ２１のリセット状態を解除する（ステップＳ２５）。
【００３９】
これにより、スレーブプロセッサ２０では、システムの起動が開始される。そして、起動完了後、スレーブプロセッサ２０は、マスタープロセッサ１０に対して起動完了を示すメッセージ（起動完了通知）を通知し（ステップＳ２６）、マスタープロセッサ１０は、スレーブプロセッサ２０からの起動完了通知を受けて、スレーブプロセッサ２０の状態の更新を確認する（ステップＳ１６）。
【００４０】
以上のように、本実施の形態によれば、マスタープロセッサに設けられたプログラムＲＯＭにマスタープロセッサ及びスレーブプロセッサの起動プログラムを予め記憶し、スレーブプロセッサの起動プログラムをプログラムＲＯＭから読み出してスレーブプロセッサのスレーブＲＡＭ上に展開することにより、スレーブプロセッサの起動処理を行うため、スレーブプロセッサに対して起動プログラムを記憶するためのプログラムＲＯＭが不要となり、従来と比較してハードウェアの数を削減することができる。
【００４１】
また、本実施の形態によれば、スレーブプロセッサを起動する際に、プロセッサ間の特別な通信を行う必要がないため、スレーブプロセッサの起動処理を簡易化することができる。
【００４２】
さらに、本実施の形態によれば、ローダ等の特別なハードウェアが不要であるため、不具合等が発生した場合に、ソフトウェアによって改修を行うことができ、システム全体の復旧に要する時間を短縮することができる。さらにまた、ホモジニアス構成だけでなく、ヘテロジニアス構成に対しても起動処理を行うことができる。
【符号の説明】
【００４３】
１  マルチプロセッサシステム
１０  マスタープロセッサ
１１  マスターＣＰＵ
１２  マスターＲＡＭ
１３  マスター側データインターフェース
１４  プログラムＲＯＭ
２０  スレーブプロセッサ
２１  スレーブＣＰＵ
２２  スレーブＲＡＭ
２３  スレーブ側データインターフェース
【図１】
2013041436.tif 000003
【図２】
2013041436.tif 000004
【図３】
2013041436.tif 000005
【図４】
2013041436.tif 000006
【図５】
2013041436.tif 000007
【図６】
2013041436.tif 000008
【図７】
2013041436.tif 000009