(57)【要約】【課題】デバッグ時にＩ２Ｃアクセスの衝突を防止すること。【解決手段】部品ドライバが実現する処理部３００は、コマンド発行部３０２と、コマンド実行部３０４とを有する。コマンド発行部３０２は、システムボードが備える部品にアクセスを行う場合、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行する。コマンド実行部３０４は、部品がアクセス要求を許可した旨を示す応答を、システムボードから受信した場合に、該部品にアクセスする。【選択図】図３
2014038436.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置を制御するシステム制御装置において、
前記情報処理装置が備える部品にアクセスを行う場合、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行する発行部と、
前記部品が前記アクセス要求を許可した旨を示す応答を、前記情報処理装置から受信した場合に、該部品にアクセスする実行部と
を有することを特徴とするシステム制御装置。
【請求項２】
前記発行部は、前記アドレスを指定する情報の一部を、前記回数を示す情報に用いることを特徴とする請求項１に記載のシステム制御装置。
【請求項３】
前記発行部は、前記部品へのアクセス要求が許可されなかった旨を示す応答を、前記情報処理装置から受信した場合に、前記アドレス情報と前記回数情報とを含むアクセス要求を再発行することを特徴とする請求項１または２に記載のシステム制御装置。
【請求項４】
情報処理装置と、該情報処理装置を制御するシステム制御装置とを有する情報処理システムにおいて、
前記システム制御装置は、
前記情報処理装置が備える部品にアクセスを行う場合、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行する発行部と、
前記部品が前記アクセス要求を許可した旨を示す応答を、前記システム制御装置が、前記情報処理装置から受信した場合に、該部品にアクセスする実行部とを有し、
前記情報処理装置が備える部品は、
アクセス要求を許可された前記システム制御装置によって該アクセス要求に含められた前記回数情報に対応する回数を保持するカウンタと、
前記システム制御装置からアクセスされるごとに、前記カウンタが保持した回数を減算する減算部と、
アクセス要求を前記システム制御装置から受信した場合、前記カウンタが保持した回数が、該受信したアクセス要求以外のアクセスを実行中ではないことを示すかを判定する判定部と、
前記判定部による判定結果に基づき、前記アクセス要求を許可する旨又は前記アクセス要求を許可しない旨を応答する応答部とを有する
ことを特徴とする情報処理システム。
【請求項５】
情報処理装置を制御するシステム制御装置の制御方法において、
前記システム制御装置が有する発行部が、前記情報処理装置が備える部品にアクセスを行う場合、前記発行部が、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行し、
前記部品が前記アクセス要求を許可した旨を示す応答を、前記システム制御装置が、前記情報処理装置から受信した場合に、前記システム制御装置が有する実行部が、該部品にアクセスすることを特徴とするシステム制御装置の制御方法。
【請求項６】
情報処理装置を制御するシステム制御装置の制御プログラムにおいて、
前記システム制御装置が有する発行部が、前記情報処理装置が備える部品にアクセスを行う場合、前記発行部に、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行させ、
前記部品が前記アクセス要求を許可した旨を示す応答を、前記システム制御装置が、前記情報処理装置から受信した場合に、前記システム制御装置が有する実行部に、該部品にアクセスさせることを特徴とするシステム制御装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム制御装置、情報処理システム、システム制御装置の制御方法およびシステム制御装置の制御プログラムに関する。
【背景技術】
【０００２】
ＨＰＣ（High  Performance  Computing）モデルなど、複数のシステムボード（以下ＳＢ）をラック等に実装した大規模な計算機システムがある。このような計算機システムは、各ＳＢに多数の部品を高密度に実装することで、設置面積を削減する。
【０００３】
例えば、各ＳＢは、電源制御素子、記憶素子、演算素子および通信素子などの複数の部品を備える。これらの部品は、計算機システムが有するシステム制御装置(サービスプロセッサ、以下ＳＰ)によって、システム運用のための制御やデバッグ用途の制御を受ける。
【０００４】
図８を用いて、従来技術に係るＳＰによる部品の制御について説明する。図８は、従来技術に係るＳＰおよびＳＢの構成の一例を示すブロック図である。図８に示すように、計算機システム９００は、ＳＰ９１０とＳＢ９２０とを有する。ＳＰ９１０は、部品制御用のソフトウェア実行部９１１を有する。ＳＢ９２０は、Ｉ２Ｃ（Inter-Integrated  Circuit、登録商標、以下同様）制御回路９２１と、電源制御素子９２２、演算素子９２３、記憶素子９２４および通信素子９２５を有する。なお、電源制御素子９２２、演算素子９２３、記憶素子９２４および通信素子９２５のことを区別しない場合には、「部品」と称する。
【０００５】
Ｉ２Ｃ制御回路９２１は、間接アクセス用レジスタ９２１ａを有し、各部品は、Ｉ２Ｃ制御回路９２２ｂ〜９２５ｂと、内部レジスタ９２２ａ〜９２５ａとを有する。また、ＳＰ９１０とＳＢ９２０との間は、Ｉ２Ｃバス９０１により接続される。また、ＳＢ９２０において、Ｉ２Ｃ制御回路９２１と各部品との間は、Ｉ２Ｃバス９０２により接続される。
【０００６】
ＳＰ９１０のソフトウェア実行部９１１は、ＳＢ９２０の部品に対する制御を実行する場合、制御用のコマンドをＩ２Ｃ制御回路９２１に送信する。そして、Ｉ２Ｃ制御回路９２１は、ソフトウェア実行部９１１から受信したコマンドを間接アクセス用レジスタ９２１ａに設定することで、部品に対して制御を実施する。
【０００７】
例えば、Ｉ２Ｃ制御回路９２１は、演算素子９２３が有する内部レジスタ９２３ａのアドレス「０ｘ００００＿０００８」にデータをライトする要求をソフトウェア実行部９１１から受付けた場合、以下の処理を実行する。すなわち、Ｉ２Ｃ制御回路９２１は、間接アクセス用レジスタ９２１ａのアドレスレジスタに、内部レジスタ９２３ａのアドレス「０ｘ００００＿０００８」をＩ２Ｃアクセスでライトする。そして、間接アクセス用レジスタ９２１ａにライトされたアドレスは、演算素子９２３が有するＩ２Ｃ制御回路９２３ｂにより、Ｉ２Ｃ制御回路９２３ｂが有する間接アクセス用レジスタ９２３ｃにライトされた後、内部レジスタ９２３ａにライトされる。
【０００８】
Ｉ２Ｃ制御回路９２１は、演算素子９２３が有するＩ２Ｃ制御回路９２３ｂからライトの完了を応答された場合、間接アクセス用レジスタ９２１ａのデータレジスタ［６３：３２］に、ソフトウェア実行部９１１から受付けたデータをＩ２Ｃアクセスでライトする。続いて、Ｉ２Ｃ制御回路９２１は、間接アクセス用レジスタ９２１ａのデータレジスタ［３１：０］に、ソフトウェア実行部９１１から受付けたデータをＩ２Ｃアクセスでライトする。
【０００９】
この結果、演算素子９２３が有する内部レジスタ９２３ａのアドレス「０ｘ００００＿０００８」に、データレジスタ［６３：３２］、データレジスタ［３１：０］の値がライトされる。そして、演算素子９２３は、内部レジスタ９２３ａのアドレス「０ｘ００００＿０００８」にデータがライトされたことによる結果をＳＰ９１０に対して応答する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平６−３０９２１９号公報
【特許文献２】特開平５−１３４９１８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した従来の技術では、デバッグ時にＩ２Ｃアクセスが衝突する場合がある。
【００１２】
部品の内部レジスタへのリードあるいはライトは、Ｉ２Ｃでのアクセスが複数回行われる場合がある。また、ハードウェアの初期デバッグ時には、部品制御用のソフトウェアの他に、Ｉ２Ｃ制御回路９２１の間接アクセス用レジスタ９２１ａを直接リードあるいはライトするスクリプトが使用される。
【００１３】
このため、部品制御用のソフトウェアによるアクセスとスクリプトによるアクセスとが衝突して、部品の内部レジスタに対して正常にリードあるいはライトできない場合がある。
【００１４】
一例として、内部レジスタ９２３ａのアドレス「０ｘ００００＿０００８」にデータをライトする部品制御用のソフトウェア実行部９１１と、内部レジスタ９２３ａのアドレス「０ｘ００００＿００１０」にデータをライトするスクリプトとが衝突する場合をあげる。
【００１５】
ソフトウェア実行部９１１が間接アクセス用レジスタ９２１ａのアドレスレジスタに内部レジスタ９２３ａのアドレス「０ｘ００００＿０００８」をＩ２Ｃアクセスでライトする。続いて、スクリプトが間接アクセス用レジスタ９２１ａのアドレスレジスタに内部レジスタ９２３ａのアドレス「０ｘ００００＿００１０」をＩ２Ｃアクセスでライトする。そして、ソフトウェア実行部９１１が、間接アクセス用レジスタ９２１ａのデータレジスタ［６３：３２］、データレジスタ［３１：０］にライトしたい値をＩ２Ｃアクセスでライトすると、内部レジスタ「０ｘ００００＿００１０」にデータレジスタの値がライトされる。このような場合、ＳＢ９２０において誤動作が起こる。また、部品内の複数ブロックに対して並列的にデバッグを行う場合にも、デバッグ用スクリプト同士が衝突する場合がある。
【００１６】
１つの側面では、本発明は、デバッグ時にＩ２Ｃアクセスの衝突を防止することができるシステム制御装置、情報処理システム、システム制御装置の制御方法およびシステム制御装置の制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本願の開示するシステム制御装置は、一つの態様において、情報処理装置を制御するシステム制御装置であり、発行部と、実行部とを有する。発行部は、情報処理装置が備える部品にアクセスを行う場合、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行する。実行部は、部品がアクセス要求を許可した旨を示す応答を、情報処理装置から受信した場合に、該部品にアクセスする。
【発明の効果】
【００１８】
１実施形態におけるシステム制御装置によれば、デバッグ時にＩ２Ｃアクセスの衝突を防止することができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施例に係る計算機システムの構成の一例を示す図である。
【図２】図２は、部品の構成の一例を示す図である。
【図３】図３は、ＳＰにより部品ドライバを用いて実現される処理部の機能構成を示す機能ブロック図である。
【図４】図４は、部品ドライバにより実現される処理部によるリード処理の処理手順を示すフローチャートである。
【図５】図５は、部品ドライバにより実現される処理部によるライト処理の処理手順を示すフローチャートである。
【図６】図６は、Ｉ２Ｃドライバにより実現される処理部による処理の処理手順を示すフローチャートである。
【図７】図７は、Ｉ２Ｃ制御回路による処理の処理手順を示すフローチャートである。
【図８】図８は、従来技術に係るＳＰおよびＳＢの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００２０】
以下に、本願の開示するシステム制御装置、情報処理システム、システム制御装置の制御方法およびシステム制御装置の制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例】
【００２１】
実施例では、情報処理システムとして、計算機システムを例とする。この計算機システムは、システム制御装置として機能するサービスプロセッサと、情報処理装置として機能するシステムボードとを有する。
【００２２】
［実施例に係る計算機システムの構成］
図１を用いて実施例に係る計算機システム１００の構成について説明する。図１は、実施例に係る計算機システム１００の構成の一例を示す図である。図１に示すように、実施例に係る計算機システム１００は、サービスプロセッサ（Service  Processor、以下「ＳＰ」と記す）１１０とシステムボード（System  Board、以下「ＳＢ」と記す）１２０とを有する。
【００２３】
また、図１に示すように、計算機システム１００では、ＳＰ１１０とＳＢ１２０とがＩ２Ｃ（Inter-Integrated  Circuit、登録商標、以下同様）バス１０１を介して接続する。なお、ＳＰ１１０とＳＢ１２０との接続はＩ２Ｃバスに限定されるものではない。例えば、ＳＰ１１０とＳＢ１２０との接続は、ＳＰＩ（Serial  Peripheral  Interface、登録商標）、ＭｉｃｒｏＷｉｒｅ（登録商標）、ＩＥＥＥ１１４９．１で規定されるＪＴＡＧ（Joint  Test  Architecture  Grroup）などの他のバスであってもよい。
【００２４】
［実施例に係るＳＢの構成］
次に、実施例に係るＳＢの構成を説明する。図１に示すように、ＳＢ１２０は、Ｉ２Ｃ制御回路１２１と、電源制御素子１２２と、演算素子１２３と、記憶素子１２４と、通信素子１２５とを有する。なお、電源制御素子１２２、演算素子１２３、記憶素子１２４および通信素子１２５のことを区別しない場合には、「部品２００」と称する。また、ＳＢ１２０において、Ｉ２Ｃ制御回路１２１と各部品２００との間は、Ｉ２Ｃバス１０２により接続される。
【００２５】
ここで、電源制御素子１２２は、ＳＢ１２０の電源を制御する。演算素子１２３は、ＳＢ１２０において各種演算処理を実行する。記憶素子１２４は、ＳＢ１２０で用いられるデータやプログラムを記憶する。通信素子１２５は、ＳＢ１２０と他装置との情報の送受信を制御する。
【００２６】
また、各部品２００は、内部レジスタ２０３と、Ｉ２Ｃ制御回路２０４とを有する。例えば、電源制御素子１２２は、内部レジスタ１２２ａと、Ｉ２Ｃ制御回路１２２ｂとを有し、演算素子１２３は、内部レジスタ１２３ａと、Ｉ２Ｃ制御回路１２３ｂとを有する。記憶素子１２４は、内部レジスタ１２４ａと、Ｉ２Ｃ制御回路１２４ｂとを有し、通信素子１２５は、内部レジスタ１２５ａと、Ｉ２Ｃ制御回路１２５ｂとを有する。
【００２７】
内部レジスタ２０３は、アドレスに対応付けて各種の設定値やデータを記憶する。Ｉ２Ｃ制御回路２０４は、間接アクセス用レジスタ２０２を有し、内部レジスタ２０３とＩ２Ｃ制御回路１２１との間のデータの読出し、およびデータの書込みを制御する。なお、内部レジスタ２０３、Ｉ２Ｃ制御回路２０４および間接アクセス用レジスタ２０２の詳細については、図２を用いて後述する。
【００２８】
Ｉ２Ｃ制御回路１２１は、間接アクセス用レジスタ１２１ａを有し、この間接アクセス用レジスタ１２１ａを介してＳＰ１１０と各部品２００との間のデータの読出し、およびデータの書込みを制御する。なお、間接アクセス用レジスタ１２１ａは、アドレスレジスタ記憶領域（以下、「アドレスレジスタ」と記す）と、データレジスタ記憶領域（以下、「データレスレジスタ」と記す）とを有する。
【００２９】
例えば、Ｉ２Ｃ制御回路１２１は、ＳＰ１１０からアクセス要求を受付けた場合、要求された部品２００が有するＩ２Ｃ制御回路２０４にアクセスを許可するか否かを問い合わせる。そして、Ｉ２Ｃ制御回路１２１は、アクセスが許可された場合、間接アクセス用レジスタ１２１ａのアドレスレジスタに、アクセスを要求された部品２００が有する内部レジスタ２０３のアドレスを書込む。
【００３０】
そして、アクセス要求がリード要求であった場合、部品２００が有する内部レジスタ２０３のアドレスに保持されるデータが、部品２００が有するＩ２Ｃ制御回路２０４を介して、間接アクセス用レジスタ１２１ａのデータレジスタに書込まれる。Ｉ２Ｃ制御回路１２１は、ＳＰ１１０からリード要求を受付けた場合、データレジスタに書込まれた値を応答する。
【００３１】
また、Ｉ２Ｃ制御回路１２１は、アクセス要求がライト要求であった場合、要求されたデータをＳＰ１１０から受信する。そして、Ｉ２Ｃ制御回路１２１は、間接アクセス用レジスタ１２１ａのデータレジスタに、ＳＰ１１０から受信したデータを書込む。この結果、部品２００が有する内部レジスタ２０３にＳＰ１１０からライトを要求されたデータが書込まれる。
【００３２】
なお、Ｉ２Ｃ制御回路１２１、電源制御素子１２２、演算素子１２３、記憶素子１２４、通信素子１２５は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）、その他の集積回路である。
【００３３】
［実施例に係るＳＰの構成］
次に、実施例に係るＳＰの構成を説明する。図１に示すように、ＳＰ１１０は、フラッシュメモリ１１１と、ＲＡＭ（Random  Access  Memory）１１２と、Ｉ２Ｃインターフェース１１３と、ＣＰＵ（Central  Processing  Unit）１１４とを有する。
【００３４】
フラッシュメモリ１１１は、アプリケーション１１１ａと、部品ドライバ１１１ｂと、Ｉ２Ｃドライバ１１１ｃと、スクリプト１１１ｄとを記憶する。アプリケーション１１１ａは、各種の業務処理を実行するプログラムである。このアプリケーション１１１ａは、ＲＡＭ１１２とＣＰＵ１１４とが協働して実行される。
【００３５】
部品ドライバ１１１ｂは、アプリケーション１１１ａにより部品へのアクセス要求を受付けた場合に、要求された部品へのアクセスを制御するプログラムである。この部品ドライバ１１１ｂは、ＲＡＭ１１２とＣＰＵ１１４とが協働して実行される。これにより、部品ドライバ１１１ｂは、処理部３００を実現する。
【００３６】
例えば、処理部３００は、自装置が制御するＳＢ１２０に備えられる部品２００にアクセス要求を発行する場合、以下の処理を実行する。すなわち、処理部３００は、部品２００が有する内部レジスタ２０３内のアドレスを指定する情報と、アクセス要求で部品２００にアクセスする回数を示す情報とを含めて、部品２００へのアクセス要求を発行する。処理部３００は、部品２００へのアクセス要求が許可されたことを示す応答をＳＢ１２０から受信した場合に、部品２００へアクセスする。なお、部品ドライバ１１１ｂにより実現される処理部３００の詳細な構成については、図３を用いて後述する。
【００３７】
Ｉ２Ｃドライバ１１１ｃは、ＳＰ１１０とＳＢ１２０との間のＩ２Ｃアクセスを制御するプログラムである。このＩ２Ｃドライバ１１１ｃは、ＲＡＭ１１２とＣＰＵ１１４とが協働して実行される。これにより、Ｉ２Ｃドライバ１１１ｃは、処理部４００を実現する。
【００３８】
例えば、処理部４００は、部品ドライバ１１１ｂからコマンドを受付けた場合、間接アクセス用レジスタ１２１ａにアクセスを実行する。そして、処理部４００は、Ｉ２Ｃ制御回路２０４から受信した応答がＡＣＫ応答である場合、ＡＣＫ応答を部品ドライバ１１１ｂに応答する。一方、処理部４００は、Ｉ２Ｃ制御回路２０４から受信した応答がＮＡＣＫ応答である場合、ＮＡＣＫ応答を部品ドライバ１１１ｂに応答する。
【００３９】
スクリプト１１１ｄは、デバッグ時にアプリケーション１１１ａや部品ドライバ１１１ｂとは独立してＩ２Ｃドライバ１１１ｃを制御するプログラムである。このスクリプト１１１ｄは、ＲＡＭ１１２とＣＰＵ１１４とが協働して実行される。これにより、スクリプト１１１ｄは、処理部５００を実現する。
【００４０】
例えば、処理部５００は、自装置が制御するＳＢ１２０に備えられる部品にアクセスを行う場合、以下の処理を実行する。すなわち、処理部５００は、部品２００が有する内部レジスタ２０３内のアドレスを指定するアドレス情報と、このアクセスで部品２００にアクセスする回数を示す回数情報とを含むアクセス要求を、部品２００に対して発行する。処理部５００は、部品２００がアクセス要求を許可した旨を示す応答を、ＳＢ１２０から受信した場合に、部２００品にアクセスする。
【００４１】
ＲＡＭ１１２は、ＣＰＵ１１４がフラッシュメモリ１１１から読出したアプリケーション１１１ａ、部品ドライバ１１１ｂ、Ｉ２Ｃドライバ１１１ｃ及びスクリプト１１１ｄを記憶する。
【００４２】
Ｉ２Ｃインターフェース１１３は、Ｉ２ＣコマンドをＳＢ１２０に送信する。また、Ｉ２Ｃインターでフェース１１３は、Ｉ２ＣコマンドをＳＢ１２０から受信する。ＣＰＵ１１４は、各種演算処理を実行するとともに、フラッシュメモリ１１１が記憶するアプリケーション１１１ａ、部品ドライバ１１１ｂ、Ｉ２Ｃドライバ１１１ｃ及びスクリプト１１１ｄを実行する。
【００４３】
［部品２００の構成］
次に、図２を用いて、部品２００の構成を説明する。図２は、部品２００の構成の一例を示す図である。図２に示すように、部品２００は、アクセス回数カウンタ２０１と、間接アクセス用レジスタ２０２と、内部レジスタ２０３と、Ｉ２Ｃ制御回路２０４とを有する。
【００４４】
内部レジスタ２０３は、アドレスに対応付けて各種の設定値やデータを記憶する。図２に示すように、内部レジスタ２０３は、アドレスごとに６４ビットのデータを記憶する。
【００４５】
アクセス回数カウンタ２０１は、アクセス要求を許可されたＳＰ１１０によってアクセス要求に含められた回数情報に対応する回数を保持する。言い換えると、アクセス回数カウンタ２０１は、アクセス要求を許可されたＳＰ１１０が、アクセス要求でアクセスする回数を保持する。アクセス回数カウンタ２０１が保持するアクセスする回数は、ＳＰ１１０によりアクセスが実行されるごとに減算される。
【００４６】
間接アクセス用レジスタ２０２は、アドレスレジスタと、データレジスタ[６３：３２]と、データレジスタ[３１：０]とを有する。アドレスレジスタには、ＳＰ１１０からアクセスを要求される部品２００の内部レジスタ２０３のアドレスが格納される。ここで、アドレスレジスタの下位３ビットがアクセス回数セット部として用いられる。
【００４７】
データレジスタ[６３：３２]は、アクセスを要求された内部レジスタ２０３のアドレスに書込まれるデータあるいは、アクセスを要求された内部レジスタ２０３のアドレスから読出されたデータのうち、６３ビット目から３２ビット目の値が格納される。データレジスタ[３１：０]は、アクセスを要求された内部レジスタ２０３のアドレスに書込まれるデータあるいは、アクセスを要求された内部レジスタ２０３のアドレスから読出されたデータのうち、３１ビット目から０ビット目の値が格納される。
【００４８】
Ｉ２Ｃ制御回路２０４は、Ｉ２Ｃリード要求またはＩ２Ｃライト要求を、Ｉ２Ｃ制御回路１２１を介してＳＰ１１０から受信し、受信したリード要求またはライト要求に対して応答する。
【００４９】
例えば、Ｉ２Ｃ制御回路２０４は、アクセス要求をＳＰ１１０から受信した場合、アクセス回数カウンタ２０１が保持した回数が、受信したアクセス要求以外のアクセスを実行中ではないことを示すかを判定する。言い換えると、Ｉ２Ｃ制御回路２０４は、アクセス回数カウンタ２０１の保持する値が他のアクセスを実行中ではないことを示す情報であるか否かを判定する。例えば、Ｉ２Ｃ制御回路２０４は、アクセス回数カウンタ２０１の保持する値が「０」であるか否かを判定する。そして、Ｉ２Ｃ制御回路２０４は、アクセス回数カウンタ２０１の保持する値が「０」である場合、他のアクセスが実行中ではないと判定する。一方、Ｉ２Ｃ制御回路２０４は、アクセス回数カウンタ２０１の保持する値が「０」ではない場合、他のアクセスが実行中であると判定する。
【００５０】
そして、Ｉ２Ｃ制御回路２０４は、判定結果に基づき、アクセス要求を許可する旨又はアクセス要求を許可しない旨を応答する。Ｉ２Ｃ制御回路２０４は、他のアクセスを実行中ではないと判定する場合、アクセス要求を許可する旨を示すＡＣＫ応答を応答するとともに、アクセス要求に含まれるアクセス回数をアクセス回数カウンタ２０１に保持させる。
【００５１】
また、Ｉ２Ｃ制御回路２０４は、間接アクセス用レジスタ２０２にアドレスを設定する。ここで、アクセス要求がリード要求である場合、設定した内部レジスタ２０３のアドレスに保持されるデータが間接アクセス用レジスタ２０２に格納される。そして、Ｉ２Ｃ制御回路２０４は、リードアクセスが実行されると、間接アクセス用レジスタ２０２に格納されるデータをＳＰ１１０に応答する。
【００５２】
また、Ｉ２Ｃ制御回路２０４は、アクセス要求がライト要求である場合に、ライトアクセスが実行されると、ＳＰ１１０からデータを受信し、間接アクセス用レジスタ２０２に受信したデータを格納する。これにより、間接アクセス用レジスタ２０２に格納されたデータが、内部レジスタ２０３に書込まれる。
【００５３】
また、Ｉ２Ｃ制御回路２０４は、ＳＰ１１０からアクセスされるごとに、アクセス回数カウンタ２０１が保持した回数を減算する。言い換えると、Ｉ２Ｃ制御回路２０４は、ＳＰ１１０からリードアクセスまたはライトアクセスが実行されるごとに、アクセス回数カウンタ２０１に保持される回数を減算する。
【００５４】
また、Ｉ２Ｃ制御回路２０４は、他のアクセスを実行中であると判定する場合、アクセス要求を許可しない旨を示すＮＡＣＫ応答を応答する。
【００５５】
［部品ドライバ１１１ｂにより実現される処理部３００の機能構成］
次に、図３を用いて、実施例１に係るＳＰ１１０により部品ドライバ１１１ｂを用いて実現される処理部の機能構成を説明する。図３は、ＳＰ１１０により部品ドライバ１１１ｂを用いて実現される処理部の機能構成を示す機能ブロック図である。なお、ＳＰ１１０により実行される部品ドライバ１１１ｂは、ＲＡＭ１１２と、ＣＰＵ１１４とが協働して実現される。
【００５６】
図３に示すように、部品ドライバ１１１ｂにより実現される処理部３００は、要求受付部３０１と、コマンド発行部３０２と、応答判定部３０３と、コマンド実行部３０４とを有する。
【００５７】
要求受付部３０１は、部品２００の内部レジスタ２０３からデータを読出す要求であるリード要求または部品２００の内部レジスタ２０３にデータを書込む要求であるライト要求をアプリケーション１１１ａから受付ける。そして、要求受付部３０１は、コマンド発行部３０２にアクセス要求の発行を依頼する。
【００５８】
コマンド発行部３０２は、ＳＢ１２０が備える部品２００にアクセスを行う場合、以下の処理を実行する。すなわち、コマンド発行部３０２は、部品２００が有するレジスタ内のアドレスを指定するアドレス情報と、このアクセスで部品２００にアクセスする回数を示す回数情報とを含むアクセス要求を、部品２００に対して発行する。
【００５９】
例えば、コマンド発行部３０２は、アクセスがリードアクセスであるかライトアクセスであるかを示す情報をコマンドに含める。また、コマンド発行部３０２は、アドレスを指定する情報の一部を、回数を示す情報に用いる。一例をあげると、コマンド発行部３０２は、アドレスを指定する情報の下位の２ビットまたは３ビットを用いて、アクセスする回数を示す情報を指定する。なお、ここでは、下位の３ビットを用いて、アクセスする回数を示す情報を指定するものとして説明する。
【００６０】
応答判定部３０３は、Ｉ２Ｃドライバ１１１ｃから受信する応答がＡＣＫ応答であるかＮＡＣＫ応答であるかを判定する。応答判定部３０３は、Ｉ２Ｃドライバ１１１ｃから受信する応答がＡＣＫ応答であると判定する場合、コマンド実行部３０４にアクセスの実行を依頼する。
【００６１】
また、応答判定部３０３は、Ｉ２Ｃドライバ１１１ｃから受信する応答がＮＡＣＫ応答であると判定する場合、コマンド発行部３０２にアクセス要求の再発行を依頼する。この結果、コマンド発行部３０２は、アドレス情報と回数情報とを含むアクセス要求を再発行する。
【００６２】
コマンド実行部３０４は、リード制御部３０５と、ライト制御部３０６とを有し、部品２００がアクセス要求を許可した旨を示す応答を、ＳＢ１２０から受信した場合に、部品２００にアクセスする。
【００６３】
リード制御部３０５は、アプリケーション１１１ａからリード要求を受信した場合、Ｉ２Ｃドライバ１１１ｃにリードアクセスの実行を依頼して、部品２００の内部レジスタ２０３からデータを読出す。そして、リード制御部３０５は、読出したデータをアプリケーション１１１ａに応答する。
【００６４】
ライト制御部３０６は、アプリケーション１１１ａからライト要求を受信した場合、ライトデータを受信する。そして、ライト制御部３０６は、Ｉ２Ｃドライバ１１１ｃに受信したデータのライトアクセスを依頼する。
【００６５】
［部品ドライバ１１１ｂにより実現される処理部３００による処理の処理手順］
次に図４および図５を用いて、部品ドライバ１１１ｂにより実現される処理部３００による処理の処理手順を説明する。ここでは、図４を用いて、リード処理を説明し、図５を用いて、ライト処理を説明する。
【００６６】
（リード処理）
図４は、部品ドライバ１１１ｂにより実現される処理部３００によるリード処理の処理手順を示すフローチャートである。図４に示すように、要求受付部３０１は、部品２００の内部レジスタ２０３からデータを読出す要求であるリード要求をアプリケーション１１１ａから受付けたか否かを判定する（ステップＳ１０１）。コマンド発行部３０２は、リード要求をアプリケーション１１１ａから受付けたと要求受付部３０１により判定される場合（ステップＳ１０１、Ｙｅｓ）、アクセス回数をアドレスに含めたアクセス要求コマンドを生成する（ステップＳ１０２）。
【００６７】
そして、コマンド発行部３０２は、生成したアクセス要求コマンドを送信する（ステップＳ１０３）。続いて、応答判定部３０３は、アクセス許可を受信したか否かを判定する（ステップＳ１０４）。ここで、コマンド発行部３０２は、アクセス許可を受信していないと応答判定部３０３により判定された場合（ステップＳ１０４、Ｎｏ）、ステップＳ１０３に移行してアクセス要求コマンドを送信する。
【００６８】
リード制御部３０５は、アクセス許可を受信したと応答判定部３０３により判定された場合（ステップＳ１０４、Ｙｅｓ）、部品２００の内部レジスタ２０３からデータを読出すリード要求をＩ２Ｃドライバ１１１ｃに実行する（ステップＳ１０５）。そして、リード制御部３０５は、部品２００の内部レジスタ２０３から読出されたリードデータをＩ２Ｃドライバ１１１ｃから受信する（ステップＳ１０６）。
【００６９】
続いて、リード制御部３０５は、要求したデータのうち未受信のデータがあるか否かを判定する（ステップＳ１０７）。ここで、リード制御部３０５は、要求したデータのうち未受信のデータがあると判定する場合（ステップＳ１０７、Ｙｅｓ）、ステップＳ１０５に移行して、部品２００の内部レジスタ２０３から読出されたリードデータをＩ２Ｃドライバ１１１ｃから受信する。
【００７０】
リード制御部３０５は、要求したデータのうち未受信のデータがないと判定する場合（ステップＳ１０７、Ｎｏ）、部品２００の内部レジスタ２０３から読出されたリードデータをアプリケーション１１１ａに応答し（ステップＳ１０８）、リード処理を終了する。
【００７１】
なお、要求受付部３０１は、リード要求をアプリケーションから受付けていないと判定する場合（ステップＳ１０１、Ｎｏ）、引き続き、リード要求をアプリケーション１１１ａから受付けたか否かを判定する。
【００７２】
（ライト処理）
図５は、部品ドライバ１１１ｂにより実現される処理部３００によるライト処理の処理手順を示すフローチャートである。図５に示すように、要求受付部３０１は、部品２００の内部レジスタ２０３にデータを書込む要求であるライト要求をアプリケーション１１１ａから受付けたか否かを判定する（ステップＳ２０１）。そして、要求受付部３０１は、アプリケーション１１１ａからライト要求を受付けたと判定する場合（ステップＳ２０１、Ｙｅｓ）、ライトデータをアプリケーション１１１ａから受信する（ステップＳ２０２）。
【００７３】
続いて、コマンド発行部３０２は、アクセス回数をアドレスに含めたアクセス要求コマンドを生成する（ステップＳ２０３）。
【００７４】
そして、コマンド発行部３０２は、生成したアクセス要求コマンドを送信する（ステップＳ２０４）。続いて、応答判定部３０３は、アクセス許可を受信したか否かを判定する（ステップＳ２０５）。ここで、コマンド発行部３０２は、アクセス許可を受信していないと応答判定部３０３により判定された場合（ステップＳ２０５、Ｎｏ）、ステップＳ２０４に移行してアクセス要求コマンドを送信する。
【００７５】
ライト制御部３０６は、アクセス許可を受信したと応答判定部３０３により判定された場合（ステップＳ２０５、Ｙｅｓ）、部品２００の内部レジスタ２０３にライトデータを書込むライト要求をＩ２Ｃドライバ１１１ｃに実行する（ステップＳ２０６）。
【００７６】
続いて、ライト制御部３０６は、ライト要求したデータのうち未送信のデータがあるか否かを判定する（ステップＳ２０７）。ここで、ライト制御部３０６は、要求したデータのうち未送信のデータがあると判定する場合（ステップＳ２０７、Ｙｅｓ）、ステップＳ２０６に移行して、部品２００の内部レジスタ２０３にライトデータを書込むライト要求をＩ２Ｃドライバ１１１ｃに実行する。
【００７７】
ライト制御部３０６は、要求したデータのうち未送信のデータがないと判定する場合（ステップＳ２０７、Ｎｏ）、ライトデータの書込みが完了したことをアプリケーション１１１ａに応答し（ステップＳ２０８）、ライト処理を終了する。
【００７８】
なお、要求受付部３０１は、ライト要求をアプリケーション１１１ａから受付けていないと判定する場合（ステップＳ２０１、Ｎｏ）、引き続き、ライト要求をアプリケーション１１１ａから受付けたか否かを判定する。
【００７９】
［Ｉ２Ｃドライバ１１１ｃにより実現される処理部４００による処理の処理手順］
次に図６を用いて、Ｉ２Ｃドライバ１１１ｃにより実現される処理部４００による処理の処理手順を説明する。図６は、Ｉ２Ｃドライバ１１１ｃにより実現される処理部４００による処理の処理手順を示すフローチャートである。
【００８０】
処理部４００は、部品ドライバ１１１ｂからコマンドを受付けたか否かを判定する（ステップＳ３０１）。ここで、処理部４００は、部品ドライバ１１１ｂからコマンドを受付けたと判定する場合（ステップＳ３０１、Ｙｅｓ）、間接アクセス用レジスタ１２１ａにアクセスを実行する（ステップＳ３０２）。
【００８１】
そして、処理部４００は、Ｉ２Ｃ制御回路２０４から応答を受信する（ステップＳ３０３）。続いて、処理部４００は、Ｉ２Ｃ制御回路２０４から受信した応答がＡＣＫ応答であるか否かを判定する（ステップＳ３０４）。ここで、処理部４００は、Ｉ２Ｃ制御回路２０４から受信した応答がＡＣＫ応答であると判定する場合（ステップＳ３０４、Ｙｅｓ）、ＡＣＫ応答を部品ドライバ１１１ｂに応答し（ステップＳ３０５）、処理を終了する。
【００８２】
一方、処理部４００は、Ｉ２Ｃ制御回路２０４から受信した応答がＡＣＫ応答ではないと判定する場合（ステップＳ３０４、Ｎｏ）、ＮＡＣＫ応答を部品ドライバ１１１ｂに応答し（ステップＳ３０６）、処理を終了する。
【００８３】
［Ｉ２Ｃ制御回路２０４による処理の処理手順］
次に図７を用いて、Ｉ２Ｃ制御回路２０４による処理の処理手順を説明する。図７は、Ｉ２Ｃ制御回路２０４による処理の処理手順を示すフローチャートである。
【００８４】
図７に示すように、Ｉ２Ｃ制御回路２０４は、Ｉ２Ｃドライバ１１１ｃからコマンドを受信したか否かを判定する（ステップＳ４０１）。ここで、Ｉ２Ｃ制御回路２０４は、Ｉ２Ｃドライバ１１１ｃからコマンドを受信したと判定する場合（ステップＳ４０１、Ｙｅｓ）、受信したコマンドがアドレス設定要求であるか否かを判定する（ステップＳ４０２）。
【００８５】
Ｉ２Ｃ制御回路２０４は、受信したコマンドがアドレス設定要求であると判定する場合（ステップＳ４０２、Ｙｅｓ）、アクセス回数カウンタ２０１のカウント値が０であるか否かを判定する（ステップＳ４０３）。例えば、Ｉ２Ｃ制御回路２０４は、カウント値セット信号をアクセスカウンタ２０１に入力する。
【００８６】
そして、Ｉ２Ｃ制御回路２０４は、アクセス回数カウンタ２０１のカウント値が０ではないと判定する場合（ステップＳ４０３、Ｎｏ）、ＮＡＣＫ応答をＩ２Ｃドライバ１１１ｃに応答する（ステップＳ４０４）。
【００８７】
また、Ｉ２Ｃ制御回路２０４は、アクセス回数カウンタ２０１のカウント値が０であると判定する場合（ステップＳ４０３、Ｙｅｓ）、間接アクセス用レジスタ２０２にアドレスを設定する（ステップＳ４０５）。続いて、Ｉ２Ｃ制御回路２０４は、アクセス回数カウンタ２０１にカウント値を設定し（ステップＳ４０６）、ＡＣＫ応答をＩ２Ｃドライバ１１１ｃに応答する（ステップＳ４０７）。
【００８８】
Ｉ２Ｃ制御回路２０４は、受信したコマンドがアドレス設定要求ではないと判定する場合（ステップＳ４０２、Ｎｏ）、受信したコマンドがリード要求であるか否かを判定する（ステップＳ４０８）。Ｉ２Ｃ制御回路２０４は、受信したコマンドがリード要求であると判定する場合（ステップＳ４０８、Ｙｅｓ）、データを読出す（ステップＳ４０９）。そして、Ｉ２Ｃ制御回路２０４は、アクセス回数カウンタ２０１にカウント値減算信号を入力する（ステップＳ４１０）。Ｉ２Ｃ制御回路２０４は、ステップＳ４１０の処理の終了後、ステップＳ４０７を実行する。
【００８９】
Ｉ２Ｃ制御回路２０４は、受信したコマンドがリード要求ではないと判定する場合（ステップＳ４０８、Ｎｏ）、データを書込む（ステップＳ４１１）。Ｉ２Ｃ制御回路２０４は、ステップＳ４１１の処理の終了後、ステップＳ４１０を実行する。また、Ｉ２Ｃ制御回路２０４は、ステップＳ４０４の処理の終了後またはステップＳ４０７の処理の終了後、処理を終了する。
【００９０】
［実施例の効果］
上述してきたように、実施例に係るＳＰ１１０は、同一の部品２００に対する複数のＩ２Ｃアクセスの衝突を防止することができる。例えば、実施例に係るＳＰ１１０は、ハードウェアの初期デバッグ用スクリプトとシステムボート制御用のファームウェアとを衝突を考慮せずにアクセスが可能となる。
【００９１】
また、本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更してもよい。
【００９２】
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されることを要しない。例えば、処理部３００では、要求受付部３０１とコマンド発行部３０２とが統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００９４】
（付記１）情報処理装置を制御するシステム制御装置において、
前記情報処理装置が備える部品にアクセスを行う場合、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行する発行部と、
前記部品が前記アクセス要求を許可した旨を示す応答を、前記情報処理装置から受信した場合に、該部品にアクセスする実行部と
を有することを特徴とするシステム制御装置。
【００９５】
（付記２）前記発行部は、前記アドレスを指定する情報の一部を、前記回数を示す情報に用いることを特徴とする付記１に記載のシステム制御装置。
【００９６】
（付記３）前記発行部は、前記部品へのアクセス要求が許可されなかった旨を示す応答を、前記情報処理装置から受信した場合に、前記アドレス情報と前記回数情報とを含むアクセス要求を再発行することを特徴とする付記１または２に記載のシステム制御装置。
【００９７】
（付記４）アクセス要求を許可された前記システム制御装置によって該アクセス要求に含められた前記回数情報に対応する回数を保持するカウンタと、
前記システム制御装置からアクセスされるごとに、前記カウンタが保持した回数を減算する減算部と、
アクセス要求を前記システム制御装置から受信した場合、前記カウンタが保持した回数が、該受信したアクセス要求以外のアクセスを実行中ではないことを示すかを判定する判定部と、
前記判定部による判定結果に基づき、前記アクセス要求を許可する旨又は前記アクセス要求を許可しない旨を応答する応答部と
を有することを特徴とする被制御装置。
【００９８】
（付記５）情報処理装置と、該情報処理装置を制御するシステム制御装置とを有する情報処理システムにおいて、
前記システム制御装置は、
前記情報処理装置が備える部品にアクセスを行う場合、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行する発行部と、
前記部品が前記アクセス要求を許可した旨を示す応答を、前記システム制御装置が、前記情報処理装置から受信した場合に、該部品にアクセスする実行部とを有し、
前記情報処理装置が備える部品は、
アクセス要求を許可された前記システム制御装置によって該アクセス要求に含められた前記回数情報に対応する回数を保持するカウンタと、
前記システム制御装置からアクセスされるごとに、前記カウンタが保持した回数を減算する減算部と、
アクセス要求を前記システム制御装置から受信した場合、前記カウンタが保持した回数が、該受信したアクセス要求以外のアクセスを実行中ではないことを示すかを判定する判定部と、
前記判定部による判定結果に基づき、前記アクセス要求を許可する旨又は前記アクセス要求を許可しない旨を応答する応答部とを有する
ことを特徴とする情報処理システム。
【００９９】
（付記６）情報処理装置を制御するシステム制御装置の制御方法において、
前記システム制御装置が有する発行部が、前記情報処理装置が備える部品にアクセスを行う場合、前記発行部が、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行し、
前記部品が前記アクセス要求を許可した旨を示す応答を、前記システム制御装置が、前記情報処理装置から受信した場合に、前記システム制御装置が有する実行部が、該部品にアクセスすることを特徴とするシステム制御装置の制御方法。
【０１００】
（付記７）前記発行する処理は、前記アドレスを指定する情報の一部を、前記回数を示す情報に用いることを特徴とする付記６に記載のシステム制御装置の制御方法。
【０１０１】
（付記８）前記発行する処理は、前記部品へのアクセス要求が許可されなかった旨を示す応答を、前記情報処理装置から受信した場合に、前記アドレス情報と前記回数情報とを含むアクセス要求を再発行することを特徴とする付記６または７に記載のシステム制御装置の制御方法。
【０１０２】
（付記９）情報処理装置を制御するシステム制御装置の制御プログラムにおいて、
前記システム制御装置が有する発行部が、前記情報処理装置が備える部品にアクセスを行う場合、前記発行部に、該部品が有するレジスタ内のアドレスを指定するアドレス情報と、該アクセスで該部品にアクセスする回数を示す回数情報とを含むアクセス要求を、該部品に対して発行させ、
前記部品が前記アクセス要求を許可した旨を示す応答を、前記システム制御装置が、前記情報処理装置から受信した場合に、前記システム制御装置が有する実行部に、該部品にアクセスさせることを特徴とするシステム制御装置の制御プログラム。
【０１０３】
（付記１０）前記発行する処理は、前記アドレスを指定する情報の一部を、前記回数を示す情報に用いることを特徴とする付記９に記載のシステム制御装置の制御プログラム。
【０１０４】
（付記１１）前記発行する処理は、前記部品へのアクセス要求が許可されなかった旨を示す応答を、前記情報処理装置から受信した場合に、前記アドレス情報と前記回数情報とを含むアクセス要求を再発行することを特徴とする付記９または１０に記載のシステム制御装置の制御プログラム。
【符号の説明】
【０１０５】
１００  計算機システム
１０１、１０２  Ｉ２Ｃバス
１１０  ＳＰ
１１１  フラッシュメモリ
１１１ａ  アプリケーション
１１１ｂ  部品ドライバ
１１１ｃ  Ｉ２Ｃドライバ
１１１ｄ  スクリプト
１１２  ＲＡＭ
１１３  Ｉ２Ｃインターフェース
１１４  ＣＰＵ
１２０  ＳＢ
１２１  Ｉ２Ｃ制御回路
１２１ａ  間接アクセス用レジスタ
１２２  電源制御素子
１２３  演算素子
１２４  記憶素子
１２５  通信素子
２００  部品
２０１  アクセス回数カウンタ
２０２  間接アクセス用レジスタ
２０３  内部レジスタ
２０４  Ｉ２Ｃ制御回路
３００、４００、５００  処理部
３０１  要求受付部
３０２  コマンド発行部
３０３  応答判定部
３０４  コマンド実行部
３０５  リード制御部
３０６  ライト制御部
【図１】
2014038436.tif 000003
【図２】
2014038436.tif 000004
【図３】
2014038436.tif 000005
【図４】
2014038436.tif 000006
【図５】
2014038436.tif 000007
【図６】
2014038436.tif 000008
【図７】
2014038436.tif 000009
【図８】
2014038436.tif 000010