(57)【要約】【課題】スレーブプロセッサの起動時間を短縮できる情報処理装置、情報処理方法及び情報処理プログラムを提供する。【解決手段】情報処理装置１０００は、第１の演算部１０２と、第１の演算部１０２からデータが書込まれる第１のレジスタ部１０３とを有するマスタプロセッサ１０１と、第２の演算部２０２と、少なくとも第２の演算部２０２からデータが書込まれる第２のレジスタ部２０３とを有するスレーブプロセッサ２０１とを有する。マスタプロセッサ１０１は、第１の起動信号に基づき、第１の演算部１０２及び第１のレジスタ１０３を起動すると共に第２のレジスタ部２０３を起動し、スレーブプロセッサ２０１は、マスタプロセッサ１０１からの第２の起動信号に基づき、第２の演算部２０１を起動する。【選択図】図１
2014013544.tif 000002
【特許請求の範囲】
【請求項１】
第１の演算部と、前記第１の演算部からデータが書込まれる第１のレジスタ部とを有するマスタプロセッサと、
第２の演算部と、少なくとも前記第２の演算部からデータが書込まれる第２のレジスタ部とを有するスレーブプロセッサとを有し、
前記マスタプロセッサは、第１の起動信号に基づき、前記第１の演算部及び前記第１のレジスタ部を起動すると共に前記第２のレジスタ部を起動し、
前記スレーブプロセッサは、前記マスタプロセッサからの第２の起動信号に基づき、前記第２の演算部を起動する
情報処理装置。
【請求項２】
前記マスタプロセッサの前記第１の演算部は、前記第１の起動信号により前記第１及び第２のレジスタ部にデータを書込み、
前記スレーブプロセッサの前記２の演算部は、前記第２の起動信号により、前記第１の演算部に替えて前記第２のレジスタ部にデータを書込む
請求項１記載の情報処理装置。
【請求項３】
前記スレーブプロセッサは、前記第１の演算部又は前記第２の演算部から入力されるデータのいずれか一方を前記第２のレジスタ部に出力するレジスタ書込制御部をさらに有し、
前記レジスタ書込制御部は、前記第２の起動信号により前記データの入力元を前記第１の演算部から前記第２の演算部に切り替える
請求項２記載の情報処理装置。
【請求項４】
前記マスタプロセッサは、前記第１の演算部がリセット解除命令コードを実行すると、前記第２の起動信号を出力する
請求項１乃至３いずれか１項記載の情報処理装置。
【請求項５】
前記第１の演算部に供給される命令コードを取得する判定部をさらに有し、
前記判定部は、前記第１の起動信号により前記第１の演算部が起動した後、前記命令コードが所定の命令コードと一致する場合、前記第２の起動信号を出力する
請求項１乃至３いずれか１項記載の情報処理装置。
【請求項６】
前記第１及び第２の演算部は、前記所定の命令コードを実行すると、それぞれ異なる値を出力する
請求項５記載の情報処理装置。
【請求項７】
第１のリセット解除信号に応じ、マスタプロセッサの第１の演算部及び第１のレジスタ部をリセット解除するとともに、スレーブプロセッサの第２のレジスタ部をリセット解除する第１の起動処理と、
前記第１の起動処理の後、第２のリセット解除信号に応じ、前記スレーブプロセッサの第２の演算部をリセット解除する第２の起動処理とにより、前記マスタプロセッサ及び前記スレーブプロセッサを順次起動させる
情報処理方法。
【請求項８】
前記第１の起動処理後、前記第２の起動処理までは、前記第１の演算部から前記第２のレジスタ部にデータが書込まれ、前記第２の起動処理後は、前記第２の演算部から前記第２のレジスタ部にデータが書込まれる
請求項７記載の情報処理方法。
【請求項９】
前記第２の起動処理の際、前記第２のリセット解除信号に応じ、前記第１の演算部又は前記第２の演算部から入力されるデータのいずれか一方を前記第２のレジスタ部に出力するレジスタ書込制御部が、前記データの入力元を前記第１の演算部から前記第２の演算部に切替える
請求項８記載の情報処理方法。
【請求項１０】
前記第２のリセット解除信号は、前記第１の演算部がリセット解除命令コードを実行すると、前記マスタプロセッサが出力する
請求項７乃至９いずれか１項記載の情報処理方法。
【請求項１１】
前記第１の起動処理後、前記第１の演算部に所定の命令コードが入力されると、前記第２のリセット解除信号が前記スレーブプロセッサに出力される
請求項７乃至９いずれか１項記載の情報処理方法。
【請求項１２】
前記所定の命令コードは、前記第１の演算部及び前記第２の演算部に、その実行結果としてそれぞれ異なる値を出力させるＣＰＵＩＤリード命令である
請求項１１記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関し、特に複数のＣＰＵを搭載したマイクロコンピュータの起動制御に関する。
【背景技術】
【０００２】
近年、マイクロコンピュータの処理能力の向上については、クロックの高速化による対応は物理的な限界が近づいてきている。一方、複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を搭載し並列処理を行うことで処理能力を向上させたマルチＣＰＵマイコンが台頭してきている。このようなマイクロコンピュータでは、電源投入時、搭載する複数のＣＰＵを起動する処理を行う。
【０００３】
複数のＣＰＵの起動手順としては、例えば全てのＣＰＵを同時に起動する方法が考えられる。しかしながら、この方法によれば、マイクロコンピュータの起動時に多大な消費電流が必要となるという問題がある。そこで、複数のＣＰＵを順次起動する方法が提案されている。
【０００４】
例えば、特許文献１には、電源投入時に複数のプロセッサを起動するマイクロコンピュータが開示されている。このマイクロコンピュータは、まず複数のプロセッサのうちの１つ（メインプロセッサ）を起動し、メインプロセッサにより他の１つのプロセッサを起動し、起動されたプロセッサにより他の１つのプロセッサを起動することで、順次全てのプロセッサを起動する。起動されたプロセッサは、自己認識コードを記憶手段に順次格納し、メインプロセッサは、記憶手段に格納された自己認識コードの個数によって起動されたプロセッサの個数を認識する。
【０００５】
このマイクロコンピュータは、プロセッサ１〜４の４つのプロセッサを有しており、このうちプロセッサ１がメインプロセッサである。プロセッサ１〜４は、アドレス・データバスを介して、ＢｏｏｔＲＯＭ、アドレスラッチ、主記憶装置、ハードディスクと接続されている。ＢｏｏｔＲＯＭはリードオンリーメモリで構成されており、プロセッサ１〜４用のプログラムが格納されている。アドレスラッチは、ＢｏｏｔＲＯＭに供給されるアドレスの一部をラッチする。主記憶装置は、データ記憶エリアと、プロセッサのＩＤを格納するためのＩＤエリアを有する。ハードディスクは、Ｍａｉｎプログラムを格納している。また、プロセッサ１からプロセッサ２へ、プロセッサ２からプロセッサ３へ、またプロセッサ３からプロセッサ４へ、それぞれＨＡＬＴ出力信号が供給されている。
【０００６】
以上のように構成されたマイクロコンピュータの電源投入時の各プロセッサの起動方法を説明する。
【０００７】
電源が投入されて所定時間後、プロセッサ１が起動する。この時プロセッサ２〜４はＨＡＬＴ状態である。まず、プロセッサ１はＢｏｏｔＲＯＭの所定領域に格納されているプロセッサ１用の第１のプログラムを実行する。プロセッサ１は、主記憶装置のクリアを行い、主記憶装置上のＩＤエリアにデータ"１"を書込み、ハードディスクの中に格納されているＭａｉｎプログラムを主記憶装置のデータ記憶エリアにロードする。次に、プロセッサ１はＭａｉｎプログラムを実行し、アドレスラッチの出力を"１"に変更し、プロセッサ２へのＨＡＬＴ出力信号を解除する。これによりプロセッサ２が起動し、プロセッサ１はタイマー（図示せず）を起動してＷａｉｔ状態に移行する。起動されたプロセッサ２はＢｏｏｔＲＯＭをアクセスする。ここで、アドレスラッチの出力が"１"に変更されている場合、プロセッサによってアクセスされるＢｏｏｔＲＯＭの領域は第２のプログラムが格納されている領域となる。そこで、プロセッサ２はその領域に格納されている第２のプログラムを実行する。プロセッサ２は主記憶装置のＩＤエリアをチェックし、ＩＤエリアの内容に１をプラスした値を自分のＩＤとして認識する。この場合、自分のＩＤは、［ＩＤエリアの内容］＋１＝１＋１＝２となる。つづいて、プロセッサ２は、その自分のＩＤ"２"を再度ＩＤエリアに書込み、プロセッサ３へのＨＡＬＴ出力信号を解除する。これによりプロセッサ３が起動する。以後全てのプロセッサにおいて第２のプログラムが実行され、プロセッサ２と同様の処理が行われる。このようにして、プロセッサ１〜４は自分のＩＤを認識する。全てのプロセッサが起動を完了した時点で、プロセッサ１がセットしたタイマーがタイムアウトする。プロセッサ１は主記憶装置のＩＤエリアの内容をチェックして、プロセッサの個数を認識する。この例の場合は"４"である。これによりマイクロコンピュータの電源立上げ時の前処理が完了し、プロセッサ１はＭａｉｎプログラムの次の処理を続行する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０４−１８８３５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ＣＰＵを複数搭載する従来のマイクロコンピュータであって、これらのＣＰＵを順次起動するマイクロコンピュータにおいては、電源投入時、搭載する全てのＣＰＵについて順次起動処理を実行する必要があるため、立ち上げに時間がかかるという問題があった。
【課題を解決するための手段】
【００１０】
本発明にかかる情報処理装置は、第１の演算部と、前記第１の演算部からデータが書込まれる第１のレジスタ部とを有するマスタプロセッサと、第２の演算部と、少なくとも前記第２の演算部からデータが書込まれる第２のレジスタ部とを有するスレーブプロセッサとを有し、前記マスタプロセッサは、第１の起動信号に基づき、前記第１の演算部及び前記第１のレジスタ部を起動すると共に前記第２のレジスタ部を起動し、前記スレーブプロセッサは、前記マスタプロセッサからの第２の起動信号に基づき、前記第２の演算部を起動するものである。
【００１１】
本発明においては、マスタプロセッサが、第１の起動信号に基づき、第１の演算部及び第１のレジスタ部を起動すると共に、スレーブプロセッサの第２のレジスタ部を起動するため、スレーブプロセッサは、第２の起動信号に基づき、第２の演算部を起動するだけで起動が完了する。よって、本発明は、特許文献１記載の発明に比べ、第２のレジスタ部の起動時間分、スレーブプロセッサの起動時間を短縮することができる。
【００１２】
本発明にかかる情報処理方法は、第１のリセット解除信号に応じ、マスタプロセッサの第１の演算部及び第１のレジスタ部をリセット解除するとともに、スレーブプロセッサの第２のレジスタ部をリセット解除する第１の起動処理と、前記第１の起動処理の後、第２のリセット解除信号に応じ、前記スレーブプロセッサの第２の演算部をリセット解除する第２の起動処理とにより、マスタプロセッサ及びスレーブプロセッサを順次起動させるものである。
【００１３】
本発明においては、第２のレジスタ部が、第１のリセット解除信号に応じ、マスタプロセッサの第１の演算部並びに第１のレジスタ部とともにリセット解除されるため、スレーブプロセッサは、第２のリセット解除信号に応じ、スレーブプロセッサの第２の演算部をリセット解除するだけで起動が完了する。よって、本発明は、特許文献１記載の発明に比べ、第２のレジスタ部の起動時間分、スレーブプロセッサの起動時間を短縮することができる。
【００１４】
また、本発明にかかるプログラムは、マスタプロセッサを起動する第１の起動命令群と、スレーブプロセッサを起動する第２の起動命令群と、前記マスタプロセッサの起動後に前記スレーブプロセッサを起動する際に前記マスタプロセッサ及び前記スレーブプロセッサに入力され、前記マスタプロセッサ及び前記スレーブプロセッサにその実行結果としてプロセッサの識別情報として使用するためのそれぞれ異なる値を出力させる識別情報生成命令とを有するものである。
【００１５】
本発明においては、マスタプロセッサ及びスレーブプロセッサが識別情報生成命令を実行し、その実行結果である値により、第１の命令群又は第２の命令群を実行する。よって、本発明は、特許文献１記載の発明に比べ、プロセッサＩＤの認識に要する時間を短縮することができる。
【００１６】
本発明においては、さらに、スレーブプロセッサを起動する際にマスタプロセッサ及びスレーブプロセッサに識別情報生成命令が入力される。すなわち、スレーブプロセッサは、識別情報生成命令をトリガとして起動する。このため、スレーブプロセッサ起動のための専用の命令を実行することなく、スレーブプロセッサを起動することができる。よって、本発明は、特許文献１記載の発明に比べ、スレーブプロセッサの起動に要する時間を短縮することができる。
【発明の効果】
【００１７】
本発明によれば、スレーブプロセッサの起動時間を短縮することができる情報処理装置、情報処理方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態１のマイクロコンピュータの構成を示す図である。
【図２】本発明の実施の形態１のマイクロコンピュータの構成を示す図である。
【図３】本発明の実施の形態１のマイクロコンピュータの構成を示す図である。
【図４】本発明の実施の形態１のマイクロコンピュータの構成を示す図である。
【図５】本発明の実施の形態１のマイクロコンピュータの構成を示す図である。
【図６】本発明の実施の形態１のマイクロコンピュータの動作のタイムチャートを示す図である。
【図７】本発明の実施の形態２のマイクロコンピュータの構成図である。
【図８】本発明の実施の形態２のマイクロコンピュータの構成図である。
【図９】本発明の実施の形態２のマイクロコンピュータの構成図である。
【図１０】本発明の実施の形態２のマイクロコンピュータの構成図である。
【図１１】本発明の実施の形態２のマイクロコンピュータの動作のタイムチャートを示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を複数のプロセッサを搭載するマイクロコンピュータに適用したものである。
【００２０】
＜実施の形態１＞
図１は、本発明にかかるマイクロコンピュータ１０００の基本構成を示すブロック図である。また、図２乃至図５は、本発明の実施の形態１におけるマイクロコンピュータ１０００の回路構成を示している。
【００２１】
図1に示すように、マイクロコンピュータ１０００は、マスタプロセッサとしての第１ＣＰＵ１０１、及びスレーブプロセッサとしての第２ＣＰＵ２０１を有する。
【００２２】
第１ＣＰＵ１０１は、第１の演算部としての演算部１０２と、第１のレジスタ部としてのレジスタ部１０３とを有している。
【００２３】
演算部１０２は、第１ＣＰＵ１０１の外部から、マイクロコンピュータ１０００の動作プログラムの命令コードの供給を受け、その命令コードにしたがって演算を実行し、演算結果をレジスタ部１０３に記録する。
【００２４】
本実施の形態では、図２に示すように、プログラムＲＯＭ３０１に動作プログラムが格納されている。プログラムＲＯＭ３０１は、第１ＣＰＵ１０１及び第２ＣＰＵ２０１のそれぞれと命令アドレス及びフェッチバス１０６及び２０６を介して双方向に接続されている。プログラムＲＯＭ３０１は、それぞれのバス１０６及び２０６を経由してそれぞれのＣＰＵ１０１及び２０１からアドレスを受信し、それぞれのＣＰＵ１０１及び２０１へそのアドレスに対応する命令コードを出力することができる。
【００２５】
レジスタ部１０３は、図１に示すように、演算部１０２とレジスタ書込バス１０５とレジスタ読出バス１０４によって相互接続されており、演算部１０２の演算結果など一時的な保存が必要でかつ高速なアクセスが必要なデータを記録する。
【００２６】
このレジスタ書込バス１０５は、さらに、後述する第２ＣＰＵ２０１のレジスタ部２０３へも接続されている。すなわち、演算部１０２は、第１ＣＰＵ１０１のレジスタ部１０３に接続されるとともに、第２ＣＰＵ２０１のレジスタ部２０３にも接続されており、これらレジスタ部１０３、２０３に同時に同じデータの書込みを行うことができる。
【００２７】
第２ＣＰＵ２０１は、第２の演算部としての演算部２０２と、第２のレジスタ部としてのレジスタ部２０３とを有している。
【００２８】
演算部２０２、レジスタ部２０３は、それぞれ第１ＣＰＵ１０１の演算部１０２、レジスタ部１０３と同等の機能を有するものである。
【００２９】
レジスタ部２０３は、図１に示すように、レジスタ読出バス２０４を介して演算部２０２と接続されている。また、２本のレジスタ書込バス２０５及び１０５を介して演算部２０２及び第１ＣＰＵ１０１の演算部１０２と接続されている。このため、レジスタ部２０３は、第１ＣＰＵ１０１の演算部１０２から送られるレジスタ書込信号、又は、第２ＣＰＵ２０１の演算部２０２から送られるレジスタ書込信号のいずれかを選択的に受信し、データを記録することができる。
【００３０】
本実施の形態においては、レジスタ書込制御部２０７がレジスタ書込信号の選択を実行する。図４に示すように、レジスタ書込バス２０５及び１０５は、レジスタ書込制御部２０７を介して演算部２０２及び演算部１０２と接続され、さらにレジスタ書込制御部２０７は、レジスタ書込制御後データバス２０８によりレジスタ部２０３と接続される。レジスタ書込制御部２０７は、設定により、演算部２０２及び演算部１０２から入力されるデータのいずれか一方をレジスタ部２０３に出力することができる。ここで、図５に示すように、レジスタ書込制御部２０７は、例えば２入力１出力のセレクタ４０１により構成することができる。
【００３１】
マイクロコンピュータ１０００の各ブロックは、初期状態はリセット状態、すなわち動作が抑制された状態である。これらの各ブロックは、リセット解除信号が入力されることによりリセット解除が行われる。すなわち、各ブロックが動作を開始する。本実施の形態においては、第１ＣＰＵ１０１の演算部１０２及びレジスタ部１０３、並びに第２ＣＰＵ２０１のレジスタ部２０３は、マイクロコンピュータ１０００の外部から、第１の起動信号又は第１のリセット解除信号としてのシステムリセット信号３０２を受けられるようになっており（図２及び図３）、このシステムリセット信号３０２によってリセット解除、すなわち第１ＣＰＵ１０１の起動が行われる。一方、第２ＣＰＵ２０１レジスタ部２０３は、第１ＣＰＵ１０１から送出される第２の起動信号又は第２のリセット解除信号としてのリセット解除信号３０３を受けられるようになっており（図２及び図４）、このリセット解除信号３０３によってリセット解除、すなわち第２ＣＰＵ２０１の起動が行われる。
【００３２】
つづいて、実施の形態１にかかるマイクロコンピュータ１０００の動作を、図６のタイミングチャートを用いて説明する。図６は、マイクロコンピュータ１０００において、第１ＣＰＵ１０１がリセット解除されてから、第１ＣＰＵ１０１と第２ＣＰＵ２０１が並列動作を開始するまでの動作を示すタイミングチャートである。
【００３３】
時刻Ｔ１
まず、マイクロコンピュータ１０００の外部から供給されるシステムリセット信号３０２が「１（Ｈｉｇｈ）」となることにより、第１ＣＰＵ１０１の演算部１０２、レジスタ部１０３、第２ＣＰＵ２０１のレジスタ部２０３のリセット解除が実施される。このとき、第２ＣＰＵ２０１の演算部２０２はまだリセット解除されない。
【００３４】
時刻Ｔ１〜時刻Ｔ２
第１ＣＰＵ１０１は、レジスタ部１０３へ書込信号を送り、初期値データの書込みを行うことで、レジスタ部１０３の初期化を行う。
【００３５】
このレジスタ部１０３の初期化処理は以下のように行われる。
【００３６】
第１ＣＰＵ１０１はリセット解除された後、命令アドレスバス及びフェッチバス１０６を介し、プログラムＲＯＭ３０１に対しプログラムの先頭アドレスを送付し、そのアドレスに応じた命令コードを受取る（以下、フェッチという）。一般的にＣＰＵの命令コードには多くの種類が存在するが、本実施の形態では説明上、レジスタ書込命令６０１、リセット解除命令６０２、および前述の２つ以外の命令（演算命令やジャンプ命令など）６０３の３種類で表記する。
【００３７】
演算部１０２は、命令コードをフェッチし、命令コードの内容がレジスタ書込命令６０１であった場合は、レジスタ書込バス１０５を介して、レジスタ部１０３への初期化データの書込み、すなわちレジスタ初期化を行う。図６ではこの初期化データをｗ１と示している。
【００３８】
このとき第２ＣＰＵ２０１においては、レジスタ書込制御部２０７に、レジスタ書込バス１０５を介して第１ＣＰＵ１０１の演算部１０２から初期化データｗ１が入力される。レジスタ書込制御部２０７は初期状態では第１ＣＰＵ１０１の演算部１０２からの書込信号を選択してレジスタ部２０３に入力するよう設定されている。よって、レジスタ書込制御部２０７は、レジスタ書込制御後データバス２０８を介してレジスタ部２０３に初期化データｗ１を書込む。すなわち、第１ＣＰＵ１０１のレジスタ部１０３と連動して、同じ値が、第２ＣＰＵ２０１のレジスタ部２０３に記録される。このように、第１ＣＰＵ１０１の演算部１０２は、第１ＣＰＵ１０１のレジスタ部１０３と、第２ＣＰＵ２０１のレジスタ部２０３とのレジスタ初期化を、同時に実施する。
【００３９】
このレジスタ初期化処理において、レジスタ書込制御部２０７が例えばデータｗ１、データｗ２及びデータｗ３を書込んだ場合のタイムチャートを図６に示す。時刻Ｔ１〜Ｔ２の期間においては、第１ＣＰＵ１０１のレジスタ部１０３への書込みが行われる度に、同一の値が、第２ＣＰＵ２０１のレジスタ部２０３に書込まれている。
【００４０】
時刻Ｔ２〜時刻Ｔ３
レジスタ書込み以外の処理で、スレーブプロセッサ（第２ＣＰＵ２０１）の起動前にマスタプロセッサ（第１ＣＰＵ１０１）が実施すべき処理が実行される期間である。例えば第１ＣＰＵ１０１に周辺マクロ群３０５が接続されていれば、周辺マクロ群３０５の初期化処理等が行われる。周辺マクロ群３０５とは、例えばタイマーや、ＡＤや、センサーや、外部Ｉ／Ｏなどである。典型的には、図２に示すように、周辺マクロ群３０５は第１ＣＰＵ１０１及び第２ＣＰＵ２０１のそれぞれと周辺バス３０４を介して双方向に接続される。第１ＣＰＵ１０１及び第２ＣＰＵ２０１は周辺マクロ群３０５へ各周辺マクロを動作させるための命令を出力し、周辺マクロ群３０５は各周辺マクロが動作した結果得られた測定データなどを第１ＣＰＵ１０１及び第２ＣＰＵ２０１へ出力する。
【００４１】
時刻Ｔ３〜時刻Ｔ４
時刻Ｔ３にて、命令アドレスバス及びフェッチバス１０６を介し、プログラムＲＯＭ３０１から第１ＣＰＵ１０１の演算部１０２に、リセット解除命令コードとしてのリセット解除命令６０２が取出される。演算部１０２がこの命令を実行すると、第１ＣＰＵ１０１は第２ＣＰＵ２０１に対しリセット解除信号３０３を送出する。
【００４２】
時刻Ｔ４
時刻Ｔ４においては、リセット解除信号３０３により、第２ＣＰＵ２０１の演算部２０２のリセット解除が行われる。また、レジスタ書込制御部２０７が切替わり、レジスタ部２０３への書込経路が変化する。すなわち、レジスタ書込制御部２０７は第２ＣＰＵ２０１の演算部２０２からの書込信号を選択してレジスタ部２０３に入力するように設定が変更され、時刻Ｔ４以降、第２ＣＰＵ２０１のレジスタ部２０３は、第２ＣＰＵ２０１の演算部２０２により書込みが行われるようになる。
【００４３】
このようにレジスタ書込制御部２０７が切替わると、第１ＣＰＵ１０１及び第２ＣＰＵ２０１は、以後それぞれ独立して動作する回路構成となる。
【００４４】
本実施の形態においては、第１ＣＰＵ１０１が、システムリセット信号３０２に基づき、第１ＣＰＵ１０１の演算部１０２及びレジスタ部１０３を起動すると共に、第２ＣＰＵ２０１のレジスタ部１０３を起動する（時刻Ｔ１〜Ｔ２）。よって、第２ＣＰＵ２０１は、リセット解除信号３０３（時刻Ｔ４）受信後、レジスタ部２０３の初期化作業（時刻Ｔ１〜Ｔ２）を行う必要がなく、演算部２０２のリセット解除を行うだけでよい。これにより、スレーブプロセッサの起動時間を短縮し、従来技術の課題であったメインプログラム実行までの時間を短縮することができる。
【００４５】
＜実施の形態２＞
図７乃至図１０は、本発明の実施の形態２にかかるマイクロコンピュータ１０００の回路構成図である。
【００４６】
図７に示すように、実施の形態２にかかるマイクロコンピュータ１０００は、実施の形態１に係る構成に加えて、判定部としてのＣＰＵＩＤリード判定回路３０６を備えている。また、図８及び図１０に示すように、第１ＣＰＵ１０１及び第２ＣＰＵ２０１は、内部にプリフェッチコード格納部１０７及び２０９をさらに備えている。このうち第１ＣＰＵ１０１のプリフェッチコード格納部１０７からの出力が、ＣＰＵＩＤリード判定回路３０６に入力される。また、ＣＰＵＩＤリード判定回路３０６からの出力は、第２ＣＰＵ２０１のレジスタ書込制御部２０７に入力される。
【００４７】
プリフェッチコード格納部１０７及び２０９について、図８及び図１０を用いて説明する。
【００４８】
プリフェッチコード格納部１０７及び２０９はいずれも、プリフェッチ処理、すなわち、将来利用すると予想される命令コードのアドレスを予め演算部１０２及び２０２から受取り、そのアドレスに対応する命令コードを予めプログラムＲＯＭ３０１から読出しておき、その命令コードを演算部１０２及び２０２に供給する処理を行う。
【００４９】
これに加えて、第１ＣＰＵ１０１のプリフェッチコード格納部１０７は、プログラムＲＯＭ３０１からフェッチした命令コード１０９を、ＣＰＵＩＤリード判定回路３０６へ出力する処理を行う。なお、プリフェッチコード格納部１０７は、当該マイクロコンピュータの外部からのシステムリセット信号３０２によってリセット動作を行う。ここで、本実施の形態におけるプログラムＲＯＭ３０１は、第１ＣＰＵ１０１を起動する第１の起動命令群と、第２ＣＰＵ２０１を起動する第２の起動命令群と、第１ＣＰＵ１０１の起動後に第２ＣＰＵ２０１を起動する際に第１ＣＰＵ１０１及び第２ＣＰＵ２０１に入力され、第１ＣＰＵ１０１及び第２ＣＰＵ２０１にそれぞれ異なる値を出力させる後述する識別情報生成命令としてのＣＰＵＩＤリード命令とを有する。
【００５０】
つぎに、ＣＰＵＩＤリード判定回路３０６について説明する。
【００５１】
第１ＣＰＵ１０１のプリフェッチコード格納部１０７から命令コード１０９を受取ったＣＰＵＩＤリード判定回路３０６は、その命令コード１０９が予め定められた信号パターンに一致するか否かを判定する機能を有し、命令コード１０９がＣＰＵＩＤリード命令であるか否かを判定する。また、命令コード１０９がＣＰＵＩＤリード命令であった場合は、第２ＣＰＵ２０１へリセット解除信号３０３を出力する。
【００５２】
このように、本実施の形態では、ＣＰＵＩＤリード判定回路３０６を、命令コード１０９がＣＰＵＩＤリード命令であった場合に、リセット解除信号３０３を出力するよう構成する。ＣＰＵＩＤリード命令とは、ＣＰＵの判別を行うための命令コードであり、ＣＰＵ毎にその命令の実行結果が異なる命令コードである。マイクロプロセッサ１０００の動作プログラムは、この実行結果を各ＣＰＵの識別情報として利用することで各ＣＰＵを判別し、ＣＰＵ毎に異なる処理を実行させることができる。このＣＰＵＩＤリード命令がフェッチされたことを、リセット解除信号を発するためのトリガとして利用すれば、ＣＰＵ毎に異なる処理を行う必要が生じる直前に、スレーブプロセッサを自動的に起動することができる。
【００５３】
この命令コード１０９の一致判定を行うための回路構成の一例を図９に示す。ＣＰＵＩＤリード判定回路３０６は、命令コード比較器５０１と、論理和ゲート５０５と、判定結果保持フリップフロップ５０４とを有するとともに、ＣＰＵＩＤリード命令コード５０２を保持している。このＣＰＵＩＤリード命令コード５０２は固定値であって、プログラムＲＯＭ３０１が保持している命令コードの１つであるＣＰＵＩＤリード命令と同じ値である。図９には、８ビットのＣＰＵＩＤリード命令コード５０２を、ＰｕｌｌＵｐ抵抗及びＰｕｌｌＤｏｗｎ抵抗等により設定した例を示している。
【００５４】
命令コード比較器５０１は、第１ＣＰＵ１０１のプリフェッチコード格納部１０７から受取った命令コード１０９と、予め保持しているＣＰＵＩＤリード命令コード５０２とを比較する。比較結果が一致した場合、出力信号５０３のレベルを「１（Ｈｉｇｈ）」とする。論理和ゲート５０５には、命令コード比較器５０１の出力信号５０３と、当該ＣＰＵＩＤリード判定回路３０６の出力であるリセット解除信号３０３とが入力される。判定結果保持フリップフロップ５０４は、論理和ゲート５０５の出力をデータ入力（Ｄ入力）とし、当該ＣＰＵＩＤリード判定回路３０６の出力であるリセット解除信号３０３をデータ出力（Ｑ出力）として出力する。なお、判定結果保持フリップフロップ５０４は、システムリセット信号３０２によってリセット動作を行う。
【００５５】
つづいて、本実施の形態におけるレジスタ書込制御部２０７の動作について、図１０を用いて説明する。
【００５６】
レジスタ書込制御部２０７においては、リセット解除信号３０３がセレクト信号、すなわち書込経路を変更するための信号として用いられる。セレクタ４０１は、リセット解除信号３０３が「０（Ｌｏｗ）」のときは、第１ＣＰＵ１０１からのレジスタ書込バス１０５をレジスタ部２０３の入力として選択する。他方、リセット解除信号３０３が「１（Ｈｉｇｈ）」のときは、演算部２０２からのレジスタ書込バス２０５をレジスタ部２０３の入力として選択する。セレクタ４０１は、選択した入力から受取るデータを、レジスタ書込制御後データバス２０８を介してレジスタ部２０３に出力する。
【００５７】
実施の形態２にかかるマイクロコンピュータ１０００の動作を、図１１のタイミングチャートを用いて説明する。
【００５８】
時刻Ｔ１
システムリセット信号３０２が「１（Ｈｉｇｈ）」になると、ＣＰＵＩＤリード判定回路３０６のリセット解除が実施される。また、実施の形態１と同様に、第１ＣＰＵ１０１の演算部１０２、レジスタ部１０３及び第２ＣＰＵ２０１のレジスタ部２０３のリセット解除が同時に行われる。
【００５９】
時刻Ｔ１〜時刻Ｔ２
実施の形態１と同様に、第１ＣＰＵ１０１のレジスタ部１０３及び第２ＣＰＵ２０１のレジスタ部２０３の初期化が行われる。
【００６０】
なお、本実施の形態においては、第１ＣＰＵ１０１の演算部１０２はフェッチ動作を行う際、実施の形態１のようにプログラムＲＯＭ３０１から直接命令コードを受取るのではなく、プリフェッチコード格納部１０７を介して命令コードを受取る。具体的には、演算部１０２はアドレスバス及び命令コードバス１０８を介してプリフェッチコード格納部１０７にアドレスを送る。プリフェッチコード格納部１０７は、プリフェッチコード格納部１０７自身がそのアドレスに応じた命令コードを既に持っている場合、すなわち命令アドレスバス及びフェッチバス１０６を介してプログラムＲＯＭ３０１から予め命令コードを取得している場合はその命令コードを演算部１０２に返す。一方、その命令コードを持っていない場合はプログラムＲＯＭ３０１にアドレスを送り、命令コードを取得する。
【００６１】
ＣＰＵＩＤリード判定回路３０６は、プリフェッチコード格納部１０７に格納された命令コードを読取り、その命令コードと内蔵するＣＰＵＩＤリード命令コード５０２とが一致するかの判定を開始する。
【００６２】
時刻Ｔ２〜時刻Ｔ３
実施の形態１と同様、第１ＣＰＵ１０１において、演算部１０２からレジスタ部１０３、２０３への書込み以外の処理が実行される。
【００６３】
時刻Ｔ３〜時刻Ｔ４
プログラムＲＯＭ３０１からＣＰＵＩＤリード命令６０２が読出され、命令アドレスバス及びフェッチバス１０６を介してプリフェッチコード格納部１０７に格納される。
【００６４】
ＣＰＵＩＤリード判定回路３０６は、プリフェッチコード格納部１０７に格納されたＣＰＵＩＤリード命令６０２を読出す。ＣＰＵＩＤリード判定回路３０６は、内蔵するＣＰＵＩＤリード命令コード５０２と命令コード６０２が一致すると判定し、リセット解除信号３０３として「１」を出力する。
【００６５】
このリセット解除信号３０３を出力するＣＰＵＩＤリード判定回路３０６の動作を以下に示す。
【００６６】
ＣＰＵＩＤリード判定回路３０６の命令コード比較器５０１が、プリフェッチ命令出力バス１０９から出力される命令コード、すなわちＣＰＵＩＤリード命令６０２と、内蔵するＣＰＵＩＤリード命令コード５０２の一致を検出すると、プリフェッチ命令比較結果５０３として「１」が出力される。プリフェッチ命令比較結果５０３が「１」となることで論理和ゲート５０５の出力も「１」となり、判定結果保持フリップフロップ５０４の出力であるリセット解除信号３０３も「１」に変化する。
【００６７】
よって、時刻Ｔ４以降、リセット解除信号３０３は「１」の状態を維持する。
【００６８】
時刻Ｔ４
リセット解除信号３０３が「１」になると、この信号が第２ＣＰＵ２０１の演算部２０２に入力され、演算部２０２のリセット解除が実施される。リセット解除信号３０３は同時にレジスタ書込制御部２０７にも入力され、セレクタ４０１（図５）が切替わることにより、第２ＣＰＵ２０１におけるレジスタ部２０３への書込経路が切替わる。よって、時刻Ｔ４以降、第２ＣＰＵ２０１のレジスタ部２０３は、第２ＣＰＵ２０１の演算部２０２により書込みが行われるようになる。
【００６９】
セレクタ４０１（図５）が切替わることにより、第１ＣＰＵ１０１及び第２ＣＰＵ２０１は、それぞれ独立して動作する回路構成となる。したがって、時刻Ｔ４以降、第１ＣＰＵ１０１及び第２ＣＰＵ２０１はそれぞれ独立にフェッチ動作を行う。命令アドレスバス及びフェッチバス１０６と命令アドレスバス及びフェッチバス２０６によって送られるデータも、それぞれ異なる値となる。
【００７０】
時刻Ｔ４〜時刻Ｔ５
第１ＣＰＵ１０１及び第２ＣＰＵ２０１それぞれにおいて、演算部１０２及び２０２がプリフェッチコード格納部１０７及び２０９を介してＣＰＵＩＤリード命令をフェッチする。
【００７１】
ＣＰＵＩＤリード命令とは、ＣＰＵの判別を行うための命令コードであり、ＣＰＵ毎にその命令の実行結果が異なる命令コードである。本実施の形態では、この命令コードが第１ＣＰＵ１０１にて実行された場合は「１」が、第２ＣＰＵにて実行された場合は「２」が、実行結果として得られるものとする。
【００７２】
時刻Ｔ５〜時刻Ｔ６
第１ＣＰＵ１０１及び第２ＣＰＵ２０１それぞれにおいて、つぎの命令コードが実行される。この命令コードは、時刻Ｔ４〜時刻Ｔ５にて実行されたＣＰＵＩＤリード命令の実行結果に応じて別々のアドレスに分岐する、すなわち別々のアドレスの命令をフェッチする処理を演算部１０２及び演算部２０２に実行させる命令である。例えば、演算部１０２及び演算部２０２は、ＣＰＵＩＤリード命令の結果が「１」である場合には「１０００」というアドレスをプログラムＲＯＭ３０１に要求し、「２」である場合には「２００」というアドレスをプログラムＲＯＭ３０１に要求する。
【００７３】
このように、第１ＣＰＵ１０１及び第２ＣＰＵ２０１は、ＣＰＵＩＤリード命令を実行した時刻Ｔ６以降、異なる命令コードをフェッチし、実行するようになる。
【００７４】
時刻Ｔ６〜時刻Ｔ７
第１ＣＰＵ１０１及び第２ＣＰＵ２０１は、プログラムＲＯＭ３０１から異なるアドレスの命令コードをフェッチする。典型的には、第１ＣＰＵ１０１は第１ＣＰＵ用のプログラムが記憶されているアドレス領域（プログラム領域）の命令コードをフェッチし、第２ＣＰＵ２０１は第２ＣＰＵ用のプログラム領域の命令コードをフェッチする。すなわち、ＣＰＵごとに別のプログラムをフェッチし、実行する。
【００７５】
レジスタ部に対しても、時刻Ｔ６以降、それぞれのＣＰＵの演算部からのデータが書込まれる。図１１のタイムチャートは、第１ＣＰＵ１０１ではｗ４、ｗ５、ｗ６、ｗ７というレジスタ書込命令が実行され、第２ＣＰＵ２０１ではｗＡ、ｗＢ、ｗＣというレジスタ書込命令が実行されたことを示している。
【００７６】
本実施の形態においては、ＣＰＵＩＤリード命令がフェッチされたことを、リセット解除信号を発するためのトリガとして利用する。これにより、実施の形態１のようにリセット解除のための専用の命令を実行することなく、各ＣＰＵに処理が分岐する直前にスレーブプロセッサを起動することができるため、より短時間で第２ＣＰＵ２０１の演算部２０２をリセット解除することができる。よって、メインプログラム実行までの時間をより短縮することができる。
【００７７】
また、本実施の形態においては、第１ＣＰＵ１０１及び第２ＣＰＵ２０１がＣＰＵＩＤリード命令を実行し、その実行結果である値により、第１ＣＰＵ１０１又は第２ＣＰＵ２０１用のプログラムを実行する。よって、プロセッサの識別に要する時間を短縮することができる。
【００７８】
＜その他の実施の形態＞
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【００７９】
例えば、実施の形態１及び２においては、２個のＣＰＵを搭載したマイクロコンピュータを想定したが、本発明は、３個以上のＣＰＵを搭載したマイクロコンピュータにも適用が可能である。例えば、３個目以降のＣＰＵについても第２ＣＰＵ２０１と同じ構造とし、第１ＣＰＵ１０１からのレジスタ書込信号１０５と、ＣＰＵＩＤリード判定回路３０６からのリセット解除信号３０３とを接続する。これにより、３個目以降のＣＰＵにおいても、第２ＣＰＵ２０１と同様の動作をさせることができる。すなわち、第１ＣＰＵ１０１のリセット解除から第１ＣＰＵ１０１がＣＰＵＩＤリード命令をフェッチするまでは、演算部はリセット状態であり、ＣＰＵＩＤリード判定回路３０６がリセット解除信号３０３を「１」にするタイミング（図７における時刻Ｔ４）で、演算部はリセット解除される。その後、ＣＰＵＩＤリード命令の実行結果に従い、それぞれのＣＰＵ向けのプログラムに分岐するよう、構成することができる。
【００８０】
また、上述のプログラムＲＯＭ３０１に格納されているコンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００８１】
１０００  マイクロコンピュータ
１０１  第１ＣＰＵ
１０２  演算部
１０３  レジスタ部
１０４  レジスタ読出バス
１０５  レジスタ書込バス
１０６  命令アドレスバス及びフェッチバス
１０７  プリフェッチコード格納部
１０８  アドレスバス及び命令コードバス
１０９  プリフェッチ命令出力バス
２０１  第２ＣＰＵ
２０２  演算部
２０３  レジスタ部
２０４  レジスタ読出バス
２０５  レジスタ書込バス
２０６  命令アドレスバス及びフェッチバス
２０７  レジスタ書込制御部
２０８  レジスタ書込制御後データバス
２０９  プリフェッチコード格納部
２１０  アドレスバス及び命令コードバス
３０１  プログラムＲＯＭ
３０２  システムリセット信号
３０３  リセット解除信号
３０４  周辺バス
３０５  周辺マクロ群
３０６  ＣＰＵＩＤリード判定回路
４０１  セレクタ
５０１  命令コード比較器
５０２  ＣＰＵＩＤリード命令コード
５０３  プリフェッチ命令比較結果
５０４  判定結果保持フリップフロップ
５０５  論理和ゲート
６０１  レジスタ書込命令
６０２  リセット解除命令
６０３  その他の命令
【図１】
2014013544.tif 000003
【図２】
2014013544.tif 000004
【図３】
2014013544.tif 000005
【図４】
2014013544.tif 000006
【図５】
2014013544.tif 000007
【図６】
2014013544.tif 000008
【図７】
2014013544.tif 000009
【図８】
2014013544.tif 000010
【図９】
2014013544.tif 000011
【図１０】
2014013544.tif 000012
【図１１】
2014013544.tif 000013