(57)【要約】【課題】  マルチプロセッサで構成された情報処理装置のプロセッサ間のリセット動作を調停する制御装置を提供する。【解決手段】  プロセッサのリセット中、その起動を指示するリセット解除指示をマスクするか否かを他のプロセッサからも設定可能な第１のマスク設定手段と、装置全体がリセット状態にあるとき、第１のマスク設定手段のうちいずれか１つをマスクしないように設定する第１の初期設定手段と、周辺装置のリセットを指示するためのリセット指示をマスクするか否かを他のプロセッサから設定可能な第２のマスク設定手段と、各プロセッサからのリセット指示に対し第２のマスク設定手段でマスクされた後の結果に基づいて周辺装置をリセットするプロセッサ制御装置を備える。【選択図】  図１
2008041059.tif 000002
【特許請求の範囲】
【請求項１】
周辺装置を共有する複数のプロセッサ間を制御する装置であって、
プロセッサ毎に設けられ、該プロセッサのリセット中、その起動を指示するリセット解除指示をマスクするか否かを、該他のプロセッサからも設定可能な第１のマスク設定手段と、
前記装置全体がリセット状態にあるとき、前記第１のマスク設定手段のうちいずれか１つのマスク設定手段をマスクしないように設定する第１の初期設定手段と、
プロセッサ毎に設けられ、該プロセッサが前記周辺装置のリセットを指示するためのリセット指示をマスクするか否かを、他のプロセッサからも設定可能な第２のマスク設定手段と、
前記装置全体がリセット状態にあるとき、マスクしないように全ての前記第２のマスク設定手段を設定する第２の初期設定手段と、
各プロセッサが指示する、前記第２のマスク設定手段でマスクされた後のリセット指示に基づいて、前記周辺装置に指示するリセット指示を生成する周辺装置リセット手段と
を備えたことを特徴とするプロセッサ制御装置。
【請求項２】
前記第１のマスク設定手段によりリセット解除指示がマスクされていないプロセッサは起動後に、リセット解除指示をマスクするように設定された前記第１のマスク設定手段のうち少なくとも一つをマスクしないように設定することを特徴とする請求項１に記載のプロセッサ制御装置。
【請求項３】
前記プロセッサ毎に設けられ、他のプロセッサからもアドレス情報を設定することが可能なアドレス情報設定手段と、
前記プロセッサがプログラムコードを読み出すアドレスを、該プロセッサ毎に設けられた前記アドレス情報設定手段に設定されたアドレス情報を用いて変換するアドレス変換手段と、
前記プロセッサが送出するアドレス情報が、リセット後再起動時に読み出すブートコードが格納されたブートアドレス領域に該当するか否かを判断し、ブートアドレス領域に含まれる場合には前記アドレス変換手段が変換したアドレス情報を、それ以外の場合には前記アドレス情報を、該プロセッサが送出するアドレス情報として選択しアドレスバスに送出するための、プロセッサ毎に設けられたマルチプレクサと、
をさらに備えたことを特徴とする請求項１に記載のプロセッサ制御装置。
【請求項４】
前記アドレス情報設定手段は、いずれかのプロセッサからアドレス情報を設定されるまでは、あらかじめ前記アドレス変換手段が変換後のアドレス情報が前記プロセッサの送出するアドレス情報と同じになる値を設定することを特徴とする、請求項３に記載のプロセッサ制御装置。
【請求項５】
複数のプロセッサと、
前記プロセッサが共有する周辺装置と、
プロセッサ毎に設けられ、該プロセッサのリセット中、その起動を指示するリセット解除指示をマスクするか否かを、該他のプロセッサからも設定可能な第１のマスク設定手段と、
全体がリセット状態にあるとき、前記第１のマスク設定手段のうちいずれか１つのマスク設定手段をマスクしないように設定する第１の初期設定手段と、
プロセッサ毎に設けられ、該プロセッサが前記周辺装置のリセットを指示するためのリセット指示をマスクするか否かを、他のプロセッサからも設定可能な第２のマスク設定手段と、
全体がリセット状態にあるとき、マスクしないように全ての前記第２のマスク設定手段を設定する第２の初期設定手段と、
各プロセッサが指示する、前記第２のマスク設定手段でマスクされた後のリセット指示に基づいて、前記周辺装置に指示するリセット指示を生成する周辺装置リセット手段と
を備えたことを特徴とする情報処理装置。
【請求項６】
前記第１のマスク設定手段によりリセット解除指示がマスクされていないプロセッサは、該プロセッサの再起動後に、リセット解除指示をマスクするように設定された前記第１のマスク設定手段のうち少なくとも一つをマスクしないように設定することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記プロセッサ毎に設けられ、他のプロセッサからもアドレス情報を設定することが可能なアドレス情報設定手段と、
前記プロセッサがプログラムコードを読み出すアドレスを、該プロセッサ毎に設けられた前記アドレス情報設定手段に設定されたアドレス情報を用いて変換するアドレス変換手段と、
前記プロセッサが送出するアドレス情報が、リセット後再起動時に読み出すブートコードが格納されたブートアドレス領域に該当するか否かを判断し、ブートアドレス領域に含まれる場合には前記アドレス変換手段が変換したアドレス情報を、それ以外の場合には前記アドレス情報を、該プロセッサが送出するアドレス情報として選択しアドレスバスに送出するための、プロセッサ毎に設けられたマルチプレクサと、
をさらに備えたことを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記アドレス情報設定手段は、いずれかのプロセッサからアドレス情報を設定されるまでは、あらかじめ前記アドレス変換手段が変換後のアドレス情報が前記プロセッサの送出するアドレス情報と同じになる値を設定することを特徴とする、請求項７に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサの制御装置に関し、特にプロセッサと周辺装置のリセット制御に関する。
【背景技術】
【０００２】
近年の家電製品などではマルチメディア化が進み、より高度な処理能力が要求されるようになってきた。現在の製造技術でこれを補うために、一つの装置内に複数（マルチ）のプロセッサを搭載する情報処理装置が提案されている。
【０００３】
しかしながら、周辺装置を扱う際の各プロセッサ間の調停など考慮すべき課題も多い。
【０００４】
たとえば読み込むブート用のプログラムコードを適宜入れ替えスレーブプロセッサの立ち上げを制御する方法が提案されている（特許文献１を参照）。
【特許文献１】特開平８−１６１２８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
情報処理装置をマルチプロセッサとすることで、現行のプロセッサを用いながらも処理能力を高めることができる。
【０００６】
しかしながら、たとえば情報処理装置のリセットをする場合、複数のプロセッサが勝手なタイミングで周辺装置をリセット及び再設定したのでは全体として正常な動作が行われない。
【０００７】
本発明は上記問題に鑑みてなされたもので、マルチプロセッサで構成された情報処理装置のプロセッサ間のリセット動作を調停する制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明にかかるプロセッサ制御装置とすれば、周辺装置を共有する複数のプロセッサ間を制御する装置であって、プロセッサ毎に設けられ、該プロセッサのリセット中、その起動を指示するリセット解除指示をマスクするか否かを、該他のプロセッサからも設定可能な第１のマスク設定手段と、前記装置全体がリセット状態にあるとき、前記第１のマスク設定手段のうちいずれか１つのマスク設定手段をマスクしないように設定する第１の初期設定手段と、プロセッサ毎に設けられ、該プロセッサが前記周辺装置のリセットを指示するためのリセット指示をマスクするか否かを、他のプロセッサからも設定可能な第２のマスク設定手段と、前記装置全体がリセット状態にあるとき、マスクしないように全ての前記第２のマスク設定手段を設定する第２の初期設定手段と、各プロセッサが指示する、前記第２のマスク設定手段でマスクされた後のリセット指示に基づいて、前記周辺装置に指示するリセット指示を生成する周辺装置リセット手段とを備えたことを特徴とするプロセッサ制御装置が提供される。
【０００９】
また、本発明にかかる情報処理装置とすれば、複数のプロセッサと、前記プロセッサが共有する周辺装置と、プロセッサ毎に設けられ、該プロセッサのリセット後、その再起動を指示するリセット解除指示をマスクするか否かを、該他のプロセッサからも設定可能な第１のマスク設定手段と、全体がリセット状態にあるとき、前記第１のマスク設定手段のうちいずれか１つのマスク設定手段をマスクしないように設定する第１の初期設定手段と、プロセッサ毎に設けられ、該プロセッサが前記周辺装置のリセットを指示するためのリセット指示をマスクするか否かを、他のプロセッサからも設定可能な第２のマスク設定手段と、全体がリセット状態にあるとき、マスクしないように全ての前記第２のマスク設定手段を設定する第２の初期設定手段と、各プロセッサが指示する、前記第２のマスク設定手段でマスクされた後のリセット指示に基づいて、前記周辺装置に指示するリセット指示を生成する周辺装置リセット手段とを備えたことを特徴とする情報処理装置が提供される。
【発明の効果】
【００１０】
本発明によれば、マルチプロセッサで構成された情報処理装置のプロセッサ間のリセット動作を調停する制御装置を提供することで、マルチプロセッサ構成の情報処理装置を実現できる。
【発明を実施するための最良の形態】
【００１１】
図１は、本実施形態にかかる情報処理装置のブロック図の一例を示す図である。図１では、情報処理装置１００、CPU0１０１、CPU1１０２、ブートアドレス変換部１０３、内部バス１０４、周辺装置部１０５、CPUリセット部１０６、周辺装置リセット部１０７及びデバッガ１０８が示されている。
【００１２】
情報処理装置１００は、たとえばパーソナルコンピュータ（PC）やテレビ、ビデオといった家電製品などに相当する。複数のCPU（Central Processing Unit）を内蔵し、あらかじめ記述されたプログラムコード(図示しない)を実行することで所定の処理を実現するように構成されている。
【００１３】
CPU0１０１及びCPU1１０２は、情報処理装置１００に内蔵されたCPUであり、プログラムコードに従い情報処理装置１００を制御する。本実施形態のCPU0１０１CPU1１０２は構成として同等のインタフェースを有し、どちらも情報処理装置１００内のマスタプロセッサになることができる。このときマスタプロセッサとなったCPUのもう一方はスレーブプロセッサとなる。
【００１４】
ブートアドレス変換部１０３は、CPU0１０１及びCPU1１０２のそれぞれ別個に設けられた、それぞれのCPUのブート時にそのCPUがプログラムコード（ブートコード）を読み出そうとするアドレスを変換する機能を有する。通常、CPUはリセット直後にはメモリ上のあらかじめ決まったアドレス（ブートアドレス）に記憶されたプログラムコードを自動的に読み出して、立ち上げプロセスを実行するように構成されている。このCPUの利用者は、リセット時にCPUに行わせたい処理を記述したブートコードを、そのブートアドレスに割り当てておくことで所望の動作をさせることができる。本実施形態のブートアドレス変換部１０３は、複数のCPUそれぞれで異なるブートコードを処理させたい場合に用いられる。
【００１５】
内部バス１０４は、CPU0１０１やCPU1１０２と情報処理装置１００内の構成モジュール間の通信を実現するバスである。
【００１６】
周辺装置部１０５は、たとえば磁気ディスク装置（HDD）やメモリなどの記憶装置や、ディスプレイ、キーボード、マウスなどの入出力装置に相当する。そしてこれらの装置はリセットが入力されると初期状態にリセットされる装置を想定している。リセット後に初期状態になると、CPUから改めてネゴシエーションや使用時の設定が行われてはじめて所望の使用状態にすることができる。情報処理装置１００の全体もしくは一部分をLSI（Large Scale Integration）で実現する場合は、外部装置１０５の制御用回路等に内蔵されるCPUがこれを行う。
【００１７】
CPUリセット部１０６は、CPU0１０１及びCPU1１０２を選択的、あるいは同時にリセットする機能を有する。
【００１８】
周辺装置リセット部１０７は、外部またはCPUからのリセット入力に基づいて周辺装置部１０５をリセットする機能を有する。
【００１９】
デバッガ１０８は、情報処理装置１００の動作検証（デバッグ）の際に検証を支援するための装置である。情報処理装置１００の通常の使用状態では必要としない。デバッガ１０８は、デバッグ時CPU0１０１、CPU1１０２に対し所定の指示を与える機能を有する。
【００２０】
図２は、本実施形態にかかるCPUリセット部１０６の回路図の一例を示す図である。図２ではマスタCPU選択入力とCPUリセット入力とから、CPU0リセット信号とCPU1リセット信号を生成する。ここでCPU0及びCPU1のリセットは、"L"信号がアサート（assert）、"H"信号がネゲート（negate）となっていることが前提となる。つまりリセット入力が"H"から"L"になるとリセットされ、その後この入力が"H"になることでリセット状態が解除され所定の立ち上げ動作が開始される。
【００２１】
図中、FF２００は入力に応じて出力をプリセットするリセット入力を備え、またCPU0１０１やCPU1１０２など複数のCPUから出力値を設定することが可能なフリップフロップ（Flip-Flop）である。CPUから出力値を設定するには、専用の命令を用いることで出力値が変化するCPUの信号線を接続する方法、あるいは内部バス１０４上で特定のアドレスを割り当て、その割り当てたアドレスへのアクセスをトリガにして値を設定する方法などが考えられる。ANDゲート２０１は、両方の入力が"H "のときだけ出力が"H"になる回路を示している。NOTゲート２０２は入力反転を示し、これは入力信号を反転出力するように機能する。
【００２２】
以下、動作の詳細を説明する。
【００２３】
マスタCPU選択入力はCPU0１０１あるいはCPU1１０２のどちらかをマスタプロセッサとするかを指示する入力である。この入力は２つのFF２００に入力されるが、その一方にはNOTゲート２０２を介して伝達されるため、たとえば、この入力が"H"ならばCPU0１０１が、"L"ならばCPU1１０２がマスタプロセッサとなることを指示するように選択的に機能させることができる。
【００２４】
マスタCPU選択入力が"H"、CPUリセット入力が"H"（ネゲート）のときを考える。CPU0リセット側について考えると、FF２００は"H"が入力されることから"H"がANDゲート２０１に出力される。ANDゲート２０１の入力はそれぞれ"H"と"H"であるから"H"を出力する。この場合CPU0リセットはネゲート状態である。一方、CPU1リセット側は"L"となりアサート状態となる。
【００２５】
このときCPUリセットをすべく、CPUリセット入力を"H"から"L"（アサート）に落とすと、FF２００の出力する値はマスタCPU選択入力に基づく値にリセットされる。この場合であってもFF２００が出力する値に関わらずCPU0リセットは"H"から"L"に、CPU1リセットは"L"を維持する。暫時の後、CPUリセット入力が"L"から"H"（ネゲート）になると、CPU0リセットは"L"から"H"（ネゲート）になるものの、CPU1側のFF２００は"L"であるからCPU1リセットは"L"（アサート）のままにすることができる。
【００２６】
マスタCPU選択入力の値を"L"としたときにはCPU0リセット、CPU1リセット信号の遷移の仕方が入れ替わる。
【００２７】
CPUリセット入力がネゲートされたときに、CPUリセット入力がネゲートされる側のCPUをマスタプロセッサとし、マスタプロセッサが然るべきタイミングでスレーブプロセッサ側のCPUに対応するFF２００の出力値を"H"に書き換えれば、スレーブプロセッサの立ち上げタイミングをマスタプロセッサが自由に制御することが可能となる。
【００２８】
このように構成すると、マスタプロセッサがスレーブプロセッサの立ち上げを任意の時期までマスクすることができる。
【００２９】
図３は、本実施形態にかかる周辺装置リセット部１０７の回路図の一例を示す図である。図３には、FF３００、ORゲート３０１及びANDゲート３０２が示されている。
【００３０】
FF３００は、先のFF２００と同様、入力に応じて出力をプリセットするリセット入力を備えた、CPU0１０１やCPU1１０２など複数のCPUから出力値を設定することもできるフリップフロップ（Flip-Flop）である。ここでCPU0側のFF３００と、CPU1側のFF３００はそれぞれ別の出力値を設定可能である。ORゲート３０１は、どちらかの入力が"H"になると"H"を出力する回路を示している。ANDゲート３０２は、全ての入力が"H "のときだけ出力が"H"になる回路を示している。
【００３１】
CPUリセット入力、コールドリセット入力の両方が"H"（ネゲート）の場合を考える。このときFF３００は初期値が"L"、CPU0、CPU1からの信号は"H"（ネゲート）であると仮定する。
【００３２】
FF３００の出力は"L"、CPU0またはCPU1からの信号は"H"であるため、ORゲート３０１は"H"となる。よってAND３０２の入力は全て"H"であるから周辺装置部リセットは"H"（ネゲート）となっている。
【００３３】
CPUリセット入力が"H"から"L"（アサート）に落ちると、ANDゲート３０２の１つの入力が"L"となるため周辺装置部リセットは"L"、つまり周辺装置部１０５のリセットがアサート状態となる。暫時の後、CPUリセット入力が"L"から"H"（ネゲート）になると、周辺装置部１０５は初期状態で立ち上がる。
【００３４】
CPU0、CPU1からORゲート３０１に入っている信号は、各CPUがこの信号を"H"から"L"（アサート）にすることで、周辺装置部１０５をリセットすることを可能とする信号である。このときFF３００の出力を"H"に設定すれば、そのFF３００が割り当てられたCPUから周辺装置部１０５のリセットがアサートされてもORゲート３０１の出力は"H"（ネゲート）を維持する。よって所定のCPUからのリセット指示を他のCPUからマスクすることができる。
【００３５】
コールドリセット入力が"H"から"L"（アサート）になると、FF３００は設定された値に関わらず初期値"L"を出力するようにリセットされ、上記マスク状態は解除される。
【００３６】
このように構成すると各CPUで共有する周辺装置部１０５のリセットをCPU毎に指示あるいはマスク制御することができる。
【００３７】
図４は、本実施形態にかかるブートアドレス変換部１０３のブロック図の一例を示す図である。ブートアドレス変換部１０３はCPU毎に設けられている。他のCPUでも同様な構成となるため、図４ではCPU0１０１に割り当てられたブートアドレス変換部１０３についてのみ説明している。比較器４００、ブートアドレス変換情報設定レジスタ４０１、変換器４０２及びマルチプレクサ４０３が示されている。
【００３８】
比較器４００は、CPU0１０１が周辺装置部１０５をアクセスするために出力したアドレス情報を入力とし、そのアドレスがブートアドレス領域に含まれるか否かを比較する機能を有する。ここでいうブートアドレスにはある程度のサイズ（たとえば４MBなど）に渡ってブートアドレス領域と判断するようにしても良い。
【００３９】
ブートアドレス変換情報設定レジスタ４０１は、CPUの設計上設定された本来のブートアドレスを変換するための情報を保持するレジスタである。初期値は変換後のアドレスが元のアドレスと同じ値になるように設定される。ここでいう初期値はアドレス変換の方法により異なるが、たとえば元のブートアドレスの該当ビットと同じビット列や、全ビットがゼロとなっている値などが考えられる。このレジスタは各CPUが他のCPUに割り当てられたレジスタを含め自由に設定することができる。
【００４０】
変換器４０２は、CPU0１０１が出力するアドレスをブートアドレス変換情報設定レジスタ４０１に保持したアドレス情報に基づいて変換する機能を有する。アドレス変換の方法は、たとえばアドレスの上位ビットの一部をレジスタに保持したアドレス情報に置換する方法や、そのアドレス情報の値と加算する方法などが考えられる。
【００４１】
マルチプレクサ４０３は、比較器４００からの信号に従ってCPU0が出力するアドレス情報か、変換器４０２が出力するアドレス情報のどちらかを選択し、アドレスバスに送出する機能を有する。このアドレス情報の選択は、比較器４００がブートアドレスであると判断した場合には変換器４０２が出力する値を、それ以外の場合にはCPU0の出力するアドレス情報を選択するように構成される。
【００４２】
情報処理装置１００の立ち上げ初期の段階ではブートアドレス変換情報設定レジスタ４０１は初期値にリセットされており、各CPUとも出力したアドレス情報がそのままアドレスバスに送出される。
【００４３】
このときCPUリセット部１０６によりマスタプロセッサに指定されたCPUのみが立ち上がり、このCPUが他のスレーブプロセッサとなるべきCPUに割り当てられたブートアドレス変換情報設定レジスタ４０１を、変換器４０２でアドレス変換をすると所望のブートコードの置かれたアドレスになるような値に設定する。その後、CPUリセット部１０６の、スレーブプロセッサとなるべきCPUに割り当てられたFF２００が"H"となるようにそのFF２００を設定する。するとスレーブプロセッサとなるCPUを、マスタプロセッサが望むプログラムコードをブートコードとして立ち上げることができる。
【００４４】
このように構成するとマスタプロセッサがスレーブプロセッサのブートアドレスを任意に設定することができ、異なるブートコードによるスレーブプロセッサの立ち上げを実現することができる。
【００４５】
図５は、本実施形態にかかるCPUリセット信号のタイミングの一例を示す図である。
【００４６】
CPUリセット入力、CPU0リセット入力及びCPU1リセット入力の入力が時系列で示されている。
【００４７】
ここでCPU0リセット入力は、図３で示すCPU0１０１から入力されるリセット信号であり、CPU1リセット入力は同じくCPU1１０２から入力されるリセット信号である。これらCPUから入力される信号は、たとえばデバッガ１０８がデバッグのためにCPUをリセットすることを指示するリセット信号と、CPUリセット部１０６から入力されるそのCPUのリセット信号の論理積により周辺装置部１０５のリセットを制御するケースが考えられる。
【００４８】
まずCPUリセット入力がアサート（"L"）状態からネゲート（"H"）状態になると同時に、マスタプロセッサに指定されているCPU0１０１のリセット入力がネゲートされる。リセット入力がネゲートになったCPU0１０１は自身の立ち上げ処理を実行し、然るべき後、CPU1１０２に割り当てられたブートアドレス変換情報設定レジスタ４０１を所望の値に設定しCPU1１０２のマスクを解除する。この解除処理は、CPUリセット部１０６のCPU1１０２に割り当てられたFF２００の出力を"H"となるように設定することで行われる。
【００４９】
本実施形態のようにリセットの調停及びブートアドレス変換機能を備えることで、プロセッサのブートアドレスが固定されていたとしても、複数のプロセッサでメモリ空間あるいは周辺装置部を共有できる情報処理装置が実現可能となる。
【００５０】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００５１】
【図１】本実施形態にかかる情報処理装置のブロック図の一例を示す図である。
【図２】本実施形態にかかるCPUリセット部の回路図の一例を示す図である。
【図３】本実施形態にかかる周辺装置リセット部の回路図の一例を示す図である。
【図４】本実施形態にかかるブートアドレス変換部のブロック図の一例を示す図である。
【図５】本実施形態にかかるCPUリセット信号のタイミングの一例を示す図である。
【符号の説明】
【００５２】
１００・・・情報処理装置、１０１・・・CPU0、１０２・・・CPU1、１０３・・・ブートアドレス変換部、１０４・・・内部バス、１０５・・・周辺装置部、１０６・・・CPUリセット部、１０７・・・周辺装置リセット部、１０８・・・デバッガ、２００・・・FF、２０１・・・ANDゲート、２０２・・・NOTゲート、３００・・・FF、３０１・・・ORゲート、３０２・・・ANDゲート、４００・・・比較器、４０１・・・ブートアドレス変換情報設定レジスタ、４０２・・・変換器、４０３・・・マルチプレクサ
【図１】
2008041059.tif 000003
【図２】
2008041059.tif 000004
【図３】
2008041059.tif 000005
【図４】
2008041059.tif 000006
【図５】
2008041059.tif 000007