(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-15
(45)【発行日】2024-01-23
(54)【発明の名称】マルチプロセッサシステム
(51)【国際特許分類】
G06F 15/177 20060101AFI20240116BHJP
G06F 9/44 20180101ALI20240116BHJP
G06F 13/28 20060101ALI20240116BHJP
【FI】
G06F15/177 B
G06F9/44
G06F13/28 310A
(21)【出願番号】P 2019050905
(22)【出願日】2019-03-19
【審査請求日】2022-02-28
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】塩安 麻人
(72)【発明者】
【氏名】池田 真歩
(72)【発明者】
【氏名】谷畑 友樹
(72)【発明者】
【氏名】野田 尚志
(72)【発明者】
【氏名】野村 建太
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2011-008665(JP,A)
【文献】特開2007-206885(JP,A)
【文献】特開2018-032313(JP,A)
【文献】特開2017-021669(JP,A)
【文献】国際公開第2008/001671(WO,A1)
【文献】特表2017-503238(JP,A)
【文献】米国特許出願公開第2016/0299860(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/177
G06F 9/44
G06F 13/28
(57)【特許請求の範囲】
【請求項1】
少なくとも第1のプロセッサと第2のプロセッサとを含むマルチプロセッサシステムであって、
前記第1のプロセッサが実行する第1のプログラムと
前記第2のプロセッサが実行する第2のプログラムを記憶する
、前記第1のプロセッサと接続され、前記第2のプロセッサとは直接接続されない記憶手段と、
前記第2のプロセッサのメモリ使用領域を有する
、前記第1のプロセッサと直接接続されず、前記第2のプロセッサと直接接続されるメモリ部と、
前記第1のプロセッサ及び前記第2のプロセッサ間を接続する通信線を介して前記記憶手段及び前記メモリ部に接続され、前記記憶手段から読み出されたプログラムが前記第2のプログラムの場合に、読み出された前記第2のプログラムを前記メモリ部に格納する制御手段と、
前記第1のプロセッサと前記第2のプロセッサと
を接続し、前記通信線とは異なる経路として構成されるプロセッサ間インターフェー
スと、
を備え、
前記第1のプロセッサは、前記プロセッサ間インターフェー
スを初期化し、
前記制御手段は、
第1のプロセッサによる前記プロセッサ間インターフェー
スの初期化と同じ時刻に、
前記記憶手段から読み出される前記第2のプログラムの前記メモリ部への格納を開始し、
前記プロセッサ間インターフェースが初期化中、前記通信線を介して前記第2のプログラムを前記メモリ部へ格納し、
前記第2のプロセッサは、前記初期化後、かつ、前記第2のプログラムの前記メモリ部への格納後、前記第1のプロセッサによって起動される、
マルチプロセッサシステム。
【請求項2】
少なくとも第1のプロセッサと第2のプロセッサとを含むマルチプロセッサシステムであって、
前記第1のプロセッサが実行する第1のプログラムと
前記第2のプロセッサが実行する第2のプログラムを記憶する
、前記第1のプロセッサと接続され、前記第2のプロセッサとは直接接続されない記憶手段と、
前記第2のプロセッサのメモリ使用領域を有する
、前記第1のプロセッサと直接接続されず、前記第2のプロセッサと直接接続されるメモリ部と、
前記第1のプロセッサ及び前記第2のプロセッサ間を接続する通信線を介して前記記憶手段及び前記メモリ部に接続され、前記記憶手段から読み出されたプログラムが前記第2のプログラムの場合に、読み出された前記第2のプログラムを前記メモリ部に格納する制御手段と、
前記第1のプロセッサと前記第2のプロセッサと
を接続し、前記通信線とは異なる経路として構成されるプロセッサ間インターフェー
スと、
を備え、
前記第1のプロセッサは、前記プロセッサ間インターフェー
スを初期化し、
前記制御手段は、
前記第1のプロセッサによる前記プロセッサ間インターフェー
スの初期化開始前に、前記第2のプログラムを前記メモリ部へ格納
し、
前記プロセッサ間インターフェースの初期化中は、前記通信線を介して前記第2のプログラムを前記メモリ部へ格納し、
前記第2のプロセッサは、前記初期化後、かつ、前記第2のプログラムの前記メモリ部への格納後、前記制御手段によって起動される、
マルチプロセッサシステム。
【請求項3】
前記記憶手段に記憶されたプログラムを読み出す読み出し手段を更に備え、
前記読み出し手段は、前記プロセッサ間インターフェー
スの初期化が完了するまでに、前記記憶手段から前記第2のプログラムの読み出しを開始する、
請求項1又は請求項2に記載のマルチプロセッサシステム。
【請求項4】
少なくとも第1のプロセッサと第2のプロセッサとを含むマルチプロセッサシステムであって、
前記第1のプロセッサが実行する第1のプログラムと
前記第2のプロセッサが実行する第2のプログラムを記憶する
、前記第1のプロセッサと接続され、前記第2のプロセッサとは直接接続されない記憶手段と、
前記第2のプロセッサのメモリ使用領域を有する
、前記第1のプロセッサと直接接続されず、前記第2のプロセッサと直接接続されるメモリ部と、
前記第1のプロセッサ及び前記第2のプロセッサ間を接続する通信線を介して前記記憶手段及び前記メモリ部に接続され、前記記憶手段から読み出されたプログラムが前記第2のプログラムの場合に、読み出された前記第2のプログラムを前記メモリ部に格納する制御手段と、
前記記憶手段に記憶されたプログラムを読み出す読み出し手段と、
前記第1のプロセッサと前記第2のプロセッサとを接続し、前記通信線とは異なる経路として構成されるプロセッサ間インターフェースと、
を備え、
前記読み出し手段は、前記第1のプログラムよりも前
、かつ、前記プロセッサ間インターフェースの初期化よりも前に前記制御手段へ前記第2のプログラムを転送
し、
前記第2のプロセッサは、前記プロセッサ間インターフェースの初期化よりも前、かつ、前記第2のプログラムの前記メモリ部への格納後、前記第1のプロセッサにより起動する、
マルチプロセッサシステム。
【請求項5】
前記記憶手段には、前記第1のプロセッサ及び前記制御手段が前記通信線を介して接続されている、
請求項1から請求項
4の何れか1項に記載のマルチプロセッサシステム。
【請求項6】
前記通信線はバスである、
請求項
5に記載のマルチプロセッサシステム。
【請求項7】
前記第1のプロセッサと前記記憶手段とは、前記制御手段及び前記通信線を介して接続されている、
請求項1から請求項
4の何れか1項に記載のマルチプロセッサシステム。
【請求項8】
前記記憶手段と前記制御手段との間、及び、前記制御手段と前記第1のプロセッサとの間は、前記通信線を介して、1対1接続されている、
請求項
7に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチプロセッサシステムに関する。
【背景技術】
【0002】
特許文献1には、少なくとも第1のプロセッサと第2のプロセッサとを含むマルチプロセッサシステムであって、第1のプロセッサが実行する第1のプログラムと第2のプロセッサが実行する第2のプログラムを格納する読み出し専用メモリと、前記第1のプロセッサ及び第2のプロセッサがアクセス可能に接続され、前記第1のプロセッサのメモリ使用領域と、前記第2のプロセッサのメモリ使用領域と、前記第1のプロセッサと前記第2のプロセッサのメモリ共有使用領域とを有する前記ランダムアクセスメモリとを含み、前記読み出し専用メモリは、プログラムの分割されたコードの外にその内部にヘッダを持ち、各ヘッダ内に対応する分割のサイズ情報や起動モード毎にその転送が必要か否かを示す情報を格納しているものであり、前記第1のプロセッサは、前記読み出し専用メモリに格納された前記第2のプロセッサ用プログラムにアクセスし、その分割ごとに、前記第2のプロセッサに転送を要するか否かを判定する前提として、前記起動モードについて通常モードでの起動の指示があるか、特殊モードでの起動の指示があるかを判定し、その判定した起動モードに対応するプログラムを前記第2のプロセッサのメモリ使用領域に展開するものであることを特徴とするマルチプロセッサシステムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、第2のプロセッサを従来技術より早く起動することを可能にするマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【0005】
第1態様に係るマルチプロセッサシステムは、少なくとも第1のプロセッサと第2のプロセッサとを含むマルチプロセッサシステムであって、第1のプロセッサが実行する第1のプログラムと第2のプロセッサが実行する第2のプログラムを記憶する記憶手段と、前記第2のプロセッサのメモリ使用領域を有するメモリ部と、通信線を介して前記記憶手段及び前記メモリ部に接続され、前記記憶手段から読み出されたプログラムが前記第2のプログラムの場合に、読み出された前記第2のプログラムを前記メモリ部に格納する制御手段と、前記第1のプロセッサと前記第2のプロセッサとの間のプロセッサ間インターフェース回路と、を備え、前記第1のプロセッサは、前記プロセッサ間インターフェース回路を初期化し、前記制御手段は、第1のプロセッサによる前記プロセッサ間インターフェース回路の初期化と同じ時刻に、前記第2のプログラムの前記メモリ部への格納を開始し、前記第1のプロセッサは、前記制御手段による前記第2のプログラムの前記メモリ部への格納が完了する前に、前記プロセッサ間インターフェース回路の初期化を終了する。
第2態様に係るマルチプロセッサシステムは、少なくとも第1のプロセッサと第2のプロセッサとを含むマルチプロセッサシステムであって、第1のプロセッサが実行する第1のプログラムと第2のプロセッサが実行する第2のプログラムを記憶する記憶手段と、前記第2のプロセッサのメモリ使用領域を有するメモリ部と、通信線を介して前記記憶手段及び前記メモリ部に接続され、前記記憶手段から読み出されたプログラムが前記第2のプログラムの場合に、読み出された前記第2のプログラムを前記メモリ部に格納する制御手段と、前記第1のプロセッサと前記第2のプロセッサとの間のプロセッサ間インターフェース回路と、を備え、前記第1のプロセッサは、前記プロセッサ間インターフェース回路を初期化し、前記制御手段は、前記第1のプロセッサによる前記プロセッサ間インターフェース回路の初期化開始前に、前記第2のプログラムを前記メモリ部へ格納する。
第3態様に係るマルチプロセッサシステムは、第1態様又は第2態様に係るマルチプロセッサシステムにおいて、前記記憶手段に記憶されたプログラムを読み出す読み出し手段を更に備え、前記読み出し手段は、前記プロセッサ間インターフェース回路の初期化が完了するまでに、前記記憶手段から前記第2のプログラムの読み出しを開始する。
第4態様に係るマルチプロセッサシステムは、少なくとも第1のプロセッサと第2のプロセッサとを含むマルチプロセッサシステムであって、第1のプロセッサが実行する第1のプログラムと第2のプロセッサが実行する第2のプログラムを記憶する記憶手段と、
前記第2のプロセッサのメモリ使用領域を有するメモリ部と、通信線を介して前記記憶手段及び前記メモリ部に接続され、前記記憶手段から読み出されたプログラムが前記第2のプログラムの場合に、読み出された前記第2のプログラムを前記メモリ部に格納する制御手段と、前記記憶手段に記憶されたプログラムを読み出す読み出し手段と、を備え、前記読み出し手段は、前記第1のプログラムよりも前に前記制御手段へ前記第2のプログラムを転送する。
第5態様に係るマルチプロセッサシステムは、第4態様に係るマルチプロセッサシステムにおいて、前記第1のプロセッサと前記第2のプロセッサとの間のプロセッサ間インターフェース回路を更に備え、前記第1のプロセッサは、前記プロセッサ間インターフェース回路を初期化し、前記読み出し手段は、前記プロセッサ間インターフェース回路の初期化が完了するまでに、前記記憶手段から前記第2のプログラムの読み出しを開始する。
【0006】
第6態様に係るマルチプロセッサシステムは、第1態様から第5態様の何れかの態様に係るマルチプロセッサシステムにおいて、前記記憶手段には、前記第1のプロセッサ及び前記制御手段が前記通信線を介して接続されている。
【0007】
第7態様に係るマルチプロセッサシステムは、第6態様に係るマルチプロセッサシステムにおいて、前記通信線はバスである。
【0008】
第8態様に係るマルチプロセッサシステムは、第1態様から第5態様の何れかの態様に係るマルチプロセッサシステムにおいて、前記第1のプロセッサと前記記憶手段とは、前記制御手段及び前記通信線を介して接続されている。
【0009】
第9態様に係るマルチプロセッサシステムは、第8態様に係るマルチプロセッサシステムにおいて、前記記憶手段と前記制御手段との間、及び、前記制御手段と前記第1のプロセッサとの間は、前記通信線を介して、1対1接続されている。
【発明の効果】
【0011】
第1態様、第2態様、又は第4態様によれば、第2のプロセッサを従来技術より早く起動することができる、という効果を有する。
【0012】
第6態様によれば、マルチプロセッサシステムを簡易な構成にすることができる、という効果を有する。
【0013】
第7態様によれば、バスを用いてマルチプロセッサシステムを簡易な構成にすることができる、という効果を有する。
【0014】
第8態様によれば、制御手段がプログラム転送を一括して管理することができる、という効果を有する。
【0015】
第9態様によれば、通信速度を従来技術より早くすることができる、という効果を有する。
【0016】
第3態様又は第5態様によれば、プロセッサ間インターフェース回路の初期化が完了するまでに、記憶手段から第2のプログラムの読み出しを開始することにより、第2のプロセッサを従来技術より早く起動することができる、という効果を有する。
【図面の簡単な説明】
【0017】
【
図1】第1の実施の形態のマルチプロセッサシステムのブロック図である。
【
図2】CPU1_112がCPU1プログラムを実行することにより行われるCPU2プログラムデータ及びCPU3プログラムデータの転送処理のフローチャートである。
【
図3】Snoopコントローラ180が実行する、CPU2プログラムデータ及びCPU3プログラムデータをRAM_B108に格納するプログラムデータ格納処理のフローチャートである。
【
図4】CPU2プログラムデータ及びCPU3プログラムデータの転送処理及びプログラムデータ格納処理の際のCPU1_112、DMAC118、及びSnoopコントローラ180のタイミングチャートである。
【
図5】RAM_B108のプログラムを記憶する領域の一例を示す図である。
【
図6】第2の実施の形態のマルチプロセッサシステムのブロック図である。
【
図7】第1の変形例における、CPU2プログラムデータ及びCPU3プログラムデータの転送処理及びプログラムデータ格納処理の際のCPU1_112、DMAC118、及びSnoopコントローラ180のタイミングチャートである。
【
図8】第2の変形例における、CPU2プログラムデータ及びCPU3プログラムデータの転送処理及びプログラムデータ格納処理の際のCPU1_112、DMAC118、及びSnoopコントローラ180のタイミングチャートである。
【発明を実施するための形態】
【0018】
以下、図面を参照して、本発明を実施するための形態例を詳細に説明する。
【0019】
(第1実施形態)
図面を参照して、第1の実施の形態に係るマルチプロセッサシステムの構成を説明する。
【0020】
図1には、第1の実施の形態のマルチプロセッサシステムのブロック図が示されている。
図1に示すように、マルチプロセッサシステムは、複数のCPU(Central Processing Unit)、例えば、少なくともCPU1_112とCPU2_152とを含む。具体的には、マルチプロセッサシステムは、CPU1_112を備えるSoC(System-on-a-chip:集積回路)102と、CPU2_152及びCPU3_154を備えるASIC(Application Specific Integrated Circuit:特定用途向け集積回路)104とを備える。
CPU1_112とCPU2_152とは、本開示の技術の「第1のプロセッサ」と「第2のプロセッサ」の一例である。
【0021】
マルチプロセッサシステムは、ROM(Read Only Memory)100を備えている。ROM100には、CPU1_112が実行するCPU1プログラムデータ、CPU2_152が実行するCPU2プログラムデータ、及びCPU3_154が実行するCPU3プログラムデータが記憶されている。ROM100は、例えば、不揮発性メモリである。
ROM100は、本開示の技術の「記憶手段」の一例である。
【0022】
マルチプロセッサシステムは、CPU1_112のメモリ使用領域を有するRAM(Random Access Memory)_A106と、CPU2_152のメモリ使用領域を有するRAM_B108と、を備える。RAM_A106及びRAM_B108は、例えば、揮発性メモリ、例えば、DRAM(Dynamic Random Access Memory)である。
RAM_B108は、本開示の技術の「メモリ部」の一例である。
【0023】
SoC102は、CPU1_112、ROMコントローラ(Cont)114A、DRAMコントローラ(Cont)116、DMAC((DMA Controller))118、及びプロセッサ間コントローラ(Cont)120を備えている。これらの素子(112から120)は、バス122により通信可能に相互に接続されている。DRAMコントローラ116は、RAM_A106に接続されている。
DMAC118は、本開示の技術の「メモリ部」の一例である。
【0024】
ASIC104は、CPU2_152、CPU3_154、DRAMコントローラ(Cont)156、プロセッサ間コントローラ(Cont)158、その他の複数のコントローラ(Other1コントローラ160A、Other2コントローラ160B、Other3コントローラ160C・・・)、及びSnoopコントローラ180を備えている。DRAMコントローラ156は、RAM_B108に接続されている。
Snoopコントローラ180は、本開示の技術の「監視手段」の一例である。
【0025】
プロセッサ間コントローラ120とプロセッサ間コントローラ158とは、PCIE(PCI Express(ピーシーアイエクスプレス))105で接続されている。
プロセッサ間コントローラ120とプロセッサ間コントローラ158は、本開示の技術の「プロセッサ間インターフェース回路」の一例である。
【0026】
ROM100には、CPU1_112及びSnoopコントローラ180が通信線を介して接続されている。具体的には、Snoopコントローラ180は、ROM100とCPU1_112との間のバス101に、バス103を介して接続されている。
【0027】
詳細には後述するが、Snoopコントローラ180は、ROM100から読み出されたプログラムデータがCPU2プログラムデータ及びCPU3プログラムデータの場合に、読み出されたCPU2プログラムデータ及びCPU3プログラムデータをRAM_B108に格納する。
図5に示すように、Snoopコントローラ180は、CPU2プログラムデータをRAM_B108のあらかじめ決められたCPU2用プログラム先頭アドレスP2Aから、CPU3プログラムデータを、あらかじめ決められたCPU3用プログラム先頭アドレスP3Aから格納する。
【0028】
ROM100には、上記のように、CPU1プログラムデータ、CPU2プログラムデータ、及びCPU3プログラムデータが記憶されている。CPU1プログラムデータは、ROM100の記憶位置M1からM2の間の領域に記憶され、CPU2プログラムデータは、ROM100の記憶位置M2からM3の間の領域に記憶され、CPU3プログラムデータは、ROM100の記憶位置M3以降の領域に記憶されている。
【0029】
ROM100に記憶されているプログラムデータは、
図1に紙面上側から下側に、左側から右側に、読み出される。CPU1プログラムデータ、CPU2プログラムデータ、及びCPU3プログラムデータは、より起動優先順位の高いプログラムデータをより先頭(読み出されやすい位置)に配置しされている。これにより、CPU2_152及びCPU3_154のプログラムデータの転送順番が、当該配置でない場合より早くなり、CPU2_152及びCPU3_154が、当該配置でない場合より早く起動される。
【0030】
CPU2プログラムデータ及びCPU3プログラムデータの各々には、先頭と終わりに識別データが配置されている。具体的には、CPU2プログラムデータの先頭には、CPU2プログラムデータの先頭を示す開始識別データP2S、その終わりには、CPU2プログラムデータの終わりを示す終了識別データP2Eが配置されている。CPU3プログラムデータの先頭には、CPU3プログラムデータの先頭を示す開始識別データP3S、その終わりには、CPU3プログラムデータの終わりを示す終了識別データP3Eが配置されている。このような識別データをプログラムデータに配置すると、Snoopコントローラ180は、CPU1プログラムデータとCPU2プログラムデータとの切れ目、CPU2プログラムデータとCPU3プログラムデータとの切れ目、CPU3プログラムデータと更にその他のプログラムデータとの切れ目を判断する。なお、Snoopコントローラ180は、プログラムデータの切れ目を、当該識別データに代えて、各プログラムデータの記憶されているアドレスを用いて、判断するようにしてもよい。ASIC104内部もしくは外部の不揮発性メモリに識別データやアドレスを格納しておき、プログラムデータの識別子を可変にしたり、あらかじめ決められた値以外に設定したり、してもよい。
【0031】
次に、第1の実施の形態の作用を説明する。
【0032】
図2には、CPU1_112がCPU1プログラムを実行することにより行われるCPU2プログラムデータ及びCPU3プログラムデータの転送処理のフローチャートが示されている。
図3には、Snoopコントローラ180が実行する、CPU2プログラムデータ及びCPU3プログラムデータをRAM_B108に格納するプログラムデータ格納処理のフローチャートが示されている。
図4((A)から(C))には、CPU2プログラムデータ及びCPU3プログラムデータの転送処理及びプログラムデータ格納処理の際のCPU1_112、DMAC118、及びSnoopコントローラ180のタイミングチャートが示されている。
【0033】
SoC102及びASIC104に電源が投入されると、CPU1_112及びSnoopコントローラ180にも電源が投入される。
【0034】
電源が投入されたSnoopコントローラ180は、
図3の処理をスタートし、ステップ252で、ROM100から転送されたプログラムデータに、指定された開始識別データP2S又は開始識別データP3Sがあるか否かを判断する(
図4:時刻t0から時刻t4)。
【0035】
CPU1_112に電源が投入されて起動すると(時刻t0からt1)、ステップ202(
図2参照)で、CPU1_112は、CPU1プログラムをROM100からRAM_A106に転送するように、DMAC118を設定する(時刻t1からt2参照)。ステップ204で、CPU1_112は、CPU1プログラムの転送が終了したか否かを判断する。
【0036】
ステップ202の上記設定がされたDMAC118は、ROM100からCPU1プログラムデータを読み出し、RAM_A106に展開する(時刻t2から時刻t3の前)。DMAC118により読み出されたCPU1プログラムデータは、バス101、ROMコントローラ114、バス122、DRAMコントローラ116を介して、RAM_A106に転送され、記憶される。
【0037】
上記のようにバス101には、Snoopコントローラ180に他端が接続されたバス103の一端が接続されているので、CPU1プログラムデータは、バス101、103を介してSnoopコントローラ180にも転送される。Snoopコントローラ180は、上記のように、
図3のステップ252で、転送されたプログラムデータに、指定された開始識別データP2S又は開始識別データP3Sがあるか否かを判断する。つまり、Snoopコントローラ180は、転送されたプログラムデータが、CPU2プログラムデータなのかCPU3プログラムデータなのかを判断している。
【0038】
上記のように、時刻t2から時刻t3の前までは、CPU1プログラムデータがSnoopコントローラ180にも転送されているので、ステップ252の判定結果は、否定判定となる。この場合、Snoopコントローラ180は、転送されたプログラムデータは無視する(RAM_B108に記憶しない)。
【0039】
DMAC118は、ステータス(転送状態)を、アドレスM1からM2までのプログラムデータを読み出し、RAM_A106に展開している状態では、転送中として、当該展開が終了した場合は、CPU1プログラムの転送が終了したことを示す転送終了に切り替える。CPU1_112は、DMAC118のステータスを確認し、ステータスが転送終了であることを検出した場合、
図2のステップ204が肯定判定となる(時刻t3)。
【0040】
ステップ204が肯定判定となった場合、ステップ206で、CPU1_112は、CPU2用プログラム、続いてCPU3用プログラムを転送することを、DMAC118に設定する(時刻t3から時刻t4)。ステップ208で、CPU1_112は、PCIE105を初期化し(時刻t4から時刻t5)、ステップ210で、CPU1_112は、CPU2用プログラムの転送が終了したか否かを判断する(時刻t5から時刻t6)。
【0041】
CPU2用プログラム、続いてCPU3用プログラムを転送することが設定されたDMAC118は、ROM100からCPU2プログラムデータを読み出し、RAM_A106に展開する。DMAC118により読み出されたCPU2プログラムデータは、バス101、ROMコントローラ114A、バス122、DRAMコントローラ116を介して、RAM_A106に転送され、記憶される。
【0042】
CPU2プログラムデータは更に、バス101、103を介してSnoopコントローラ180にも転送される。この場合、DMAC118は、最初に、CPU2プログラムデータの先頭を示す開始識別データP2Sから読み出し、Snoopコントローラ180とに転送する。
【0043】
開始識別データP2SがSnoopコントローラ180に転送されると、
図3のステップ252の判定結果は肯定判定となる。ステップ252の判定結果が肯定判定となると、ステップ254で、Snoopコントローラ180は、指定されたアドレスに転送を開始する。具体的には、Snoopコントローラ180は、CPU2プログラムデータを、
図5に示すRAM_B108のアドレスP2Aから順に記憶する(時刻t4から時刻t6)。
【0044】
上記処理により、
図4に示すように、CPU1_112によりPCIE105が初期化されている間(時刻t4から時刻t5)、Snoopコントローラ180により、CPU2プログラムデータが、PCIE105ではなく、バス101、103、バス162、DRAMコントローラ156を介して、RAM_B108に転送される。このように、PCIE105の初期化が完了するまでに、CPU2プログラムデータのRAM_B108への転送が開始される。
【0045】
第1の実施の形態では、PCIE105の初期化と、CPU2プログラムデータのRAM_B108への転送とは、同じ時刻t4に開始され、PCIE105の初期化は、CPU2プログラムデータのRAM_B108への転送が完了する前に、終了する。
【0046】
上記のように
図2のステップ210で、CPU1_112は、CPU2プログラムの転送が終了したか否かを判断する(時刻t5から時刻t6)。
【0047】
DMAC118は、ステータス(転送状態)を、アドレスM2からM3までのプログラムデータを読み出し、RAM_B108に展開した場合は、CPU2プログラムの転送が終了したことに切り替える。CPU1_112は、DMAC118のステータスを確認し、ステータスが、CPU2プログラムの転送が終了したことに切り替わったことを検出した場合、
図2のステップ210が肯定判定となる(時刻t6)。
【0048】
その他、Snoopコントローラ180においても、DMAC118のステータスの切り替えと同様にステータスの切り替えを行う。CPU1_112は、Snoopコントローラ180のステータスを確認し、ステータスが、CPU2プログラムの転送が終了したことに切り替わったか否かを検出するようにしてもよい。更に、CPU1_112は、CPU2プログラムがRAM_A106に記憶されているか否かを判断するようにしてもよい。
【0049】
上記のようにPCIE105が初期化され、CPU2プログラムデータのRAM_B108への転送が完了したので、ステップ212で、CPU1_112は、CPU2_152のリセットを解除する(CPU2_152の起動開始:時刻t6から時刻t7)。具体的には、CPU1_112は、CPU2_152に、リセットの解除を通知する。これは、CPU2_152が、CPU2プログラムの全てのプログラムデータがRAM_B108に記憶される前に、CPU2プログラムを実行しようとすることを防止するためである。なお、CPU2管理部(Other2コントローラ160B)が初期化される(時刻t9)。
【0050】
ステップ214で、CPU1_112は、CPU3プログラムの転送が終了したか否かを判断する(時刻t7から時刻t8)。CPU3プログラムの転送が終了したと判断した場合、ステップ216で、CPU1_112は、CPU3_154のリセットを解除する。ステップ214、216ではCPU3プログラムについて実行する点が、ステップ210、212においてCPU2プログラムについて実行する点で、異なるだけであるので、その説明を省略する。なお、CPU3管理部(Other3コントローラ160C)が初期化される(時刻t10)。
【0051】
DMAC118は、時刻t4から時刻t6まで、CPU2プログラムの転送を行い、時刻t6から時刻t8までCPU3プログラムの転送を行う。
【0052】
Snoopコントローラ180においても、
図3のステップ254により、時刻t4から時刻t6まで、CPU2プログラムの転送を行い、時刻t6から時刻t8までCPU3プログラムの転送を行う。
【0053】
ステップ256で、Snoopコントローラ180は、バス101、103を介して転送されたプログラムデータに、指定された終了識別データP3Eがあるか否かを判断する。バス101、103を介して転送されたプログラムデータに、指定された終了識別データP3Eがあると判断されるまで、ステップ256が繰り返される。転送されたプログラムデータに、指定された終了識別データP3Eがあると判断された場合、CPU3プログラムの転送が終了したと判断し、処理を終了する。
【0054】
以上説明したように第1の実施の形態では、PCIE105の初期化と、CPU2プログラムデータのRAM_B108への転送とは、同じ時刻t4に開始される。つまり、PCIE105の初期化とは独立して、CPU2プログラムデータのRAM_B108への転送が行われる。よって、第1の実施の形態では、CPU2は、PCIEの初期化後に、CPU2プログラムデータが転送される従来技術より早く起動される。
【0055】
第1の実施の形態では、Snoopコントローラ180は、ROM100とCPU1_112との間のバス101に、1本のバス103を介して接続されている。通信線は1本にしている点で、マルチプロセッサシステムの構成は簡略されている。
【0056】
(第2の実施の形態)
第2の実施の形態に係るマルチプロセッサシステムの構成は、第1の実施の形態に係るマルチプロセッサシステムの構成と略同様であるので、同一部分には同一の符号を付してその説明を省略し、異なる部分を主として説明する。
【0057】
図6には、第2の実施の形態のマルチプロセッサシステムのブロック図が示されている。
図6に示すように、CPU1_112とROM100とは、Snoopコントローラ180及び通信線107A、107Bを介して接続されている。具体的には、ROM100とSnoopコントローラ180との間は通信線107Aにより接続され、Snoopコントローラ180とCPU1_112との間は、通信線107B、インターフェース(I/F)コントローラ114B、及びバス122により接続されている。
【0058】
ROM100とSnoopコントローラ180との間は、1対1(Peer to Peer)で接続され、Snoopコントローラ180とCPU1_112との間は、1対1(Peer to Peer)で接続されている。
【0059】
第2の実施の形態の作用は第1の実施の形態の作用と略同様であるので、その説明を省略する。なお、第2の実施の形態においては、各プログラムデータは、通信線107A、Snoopコントローラ180、及び通信線107B、及びSoC102を介して、RAM_A106に転送される。特に、CPU2プログラムデータ及びCPU3プログラムデータは更に、通信線107A、ASIC104(Snoopコントローラ180)を介して、RAM_B108に転送される。
【0060】
第2の実施の形態では、CPU2は、PCIEの初期化後に、CPU2プログラムデータが転送される従来技術より早く起動される
【0061】
ROM100とSnoopコントローラ180との間は、1対1(Peer to Peer)で接続され、Snoopコントローラ180とCPU1_112との間は、1対1(Peer to Peer)で接続されている。よって、通信速度は、バスで接続されるより、早い。
【0062】
Snoopコントローラ180が各プログラムの転送を一括して管理する。
【0063】
(変形例)
(第1の変形例)
第1の変形例を説明する。なお、第1の変形例の構成は、第1の実施の形態及び第2の実施の形態の構成の何れでもよい。
【0064】
第1の変形例の作用を説明する。
図7((A)から(C))には、第1の変形例における、CPU2プログラムデータ及びCPU3プログラムデータの転送処理及びプログラムデータ格納処理の際のCPU1_112、DMAC118、及びSnoopコントローラ180のタイミングチャートが示されている。
【0065】
第1の実施の形態及び第2の実施の形態では、CPU1が、CPU2プログラムが転送された場合に、CPU2を起動させているが、第1の変形例では、Snoopコントローラ180が、CPU2用プログラムをRAM_B108に格納した場合に、CPU2_152を起動させる。
【0066】
(第2の変形例)
第2の変形例を説明する。なお、第2の変形例は、の構成は、第1の実施の形態及び第2の実施の形態の構成の何れでもよい。
【0067】
第2の変形例の作用を説明する。
図8((A)から(C))には、第2の変形例における、CPU2プログラムデータ及びCPU3プログラムデータの転送処理及びプログラムデータ格納処理の際のCPU1_112、DMAC118、及びSnoopコントローラ180のタイミングチャートが示されている。
【0068】
第1の実施の形態及び第2の実施の形態では、PCIE105の初期化中(時刻t4から時刻t5)に、CPU2用プログラムを転送しているが、第2の変形例では、PCIE105の初期化開始(時刻T4)前に、CPU2用プログラムを転送する(時刻T2から時刻T3)。このように本開示の技術は、PCIE105の初期化と、CPU2プログラムデータのRAM_B108への転送とは独立して行われる。少なくとも、PCIE105の初期化が完了する前に、CPU2用プログラムの転送を開始する。これにより、CPU2は、PCIEの初期化後に、CPU2プログラムデータが転送される従来技術より早く起動される。
なお、第2の変形例では、CPU2プログラムが、CPU1プログラムデータの転送(時刻T6から時刻T7)よりも前に転送される(時刻T2から時刻T3)。
【0069】
その他、上記例で説明したマルチプロセッサシステムの構成(
図1、
図6参照)は一例であり、本発明の主旨を逸脱しない範囲内において不要な部分を削除したり、新たな部分を追加したりしてもよいことは言うまでもない。
【0070】
また、上記例における処理の流れ(
図2から4参照)も一例であり、本発明の主旨を逸脱しない範囲内において不要なステップを削除したり、新たなステップを追加したり、処理順序を入れ替えたりしてもよいことは言うまでもない。
【符号の説明】
【0071】
100 ROM
101 バス
103 バス
108 RAM_B
112 CPU1
118 DMAC
152 CPU2
180 Snoopコントローラ
107A、107B 通信線