(57)【要約】【課題】異常が発生している箇所を把握することを目的とする。【解決手段】メイン制御部と、末端にストレージ装置が接続されるように前記ストレージ装置とカスケード接続された制御部と、を含む情報処理装置であって、前記メイン制御部は、前記制御部に対して、異常を検出するテストを行う診断モードへの移行を指示する指示手段と、前記指示手段による指示に応じて前記診断モードに切り替わった前記制御部で実行されたテストの結果を取得する取得手段と、を有する。【選択図】図４
2018055472.tif 000002
【特許請求の範囲】
【請求項１】
メイン制御部と、末端にストレージ装置が接続されるように前記ストレージ装置とカスケード接続された制御部と、を含む情報処理装置であって、
前記メイン制御部は、
前記制御部に対して、異常を検出するテストを行う診断モードへの移行を指示する指示手段と、
前記指示手段による指示に応じて前記診断モードに切り替わった前記制御部で実行されたテストの結果を取得する取得手段と、
を有する情報処理装置。
【請求項２】
前記制御部は、第１の制御部と、前記第１の制御部及び前記ストレージ装置と接続された第２の制御部と、であり、
前記第１の制御部は、
前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記第１の制御部と前記第２の制御部とを繋ぐインターフェース又は前記第２の制御部に生じた異常を検出するテストを実行する第１のテスト手段を有し、
前記第２の制御部は、
前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記第２の制御部と前記ストレージ装置とを繋ぐインターフェース又は前記ストレージ装置に生じた異常を検出するテストを実行する第２のテスト手段を有する請求項１記載の情報処理装置。
【請求項３】
前記第１のテスト手段は、前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記第２の制御部との間で差動信号を用いた通信を正常に行うことができるか否かを確認することで、前記第１の制御部と前記第２の制御部とを繋ぐインターフェース又は前記第２の制御部に生じた異常を検出するテストを実行し、
前記第２のテスト手段は、前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記ストレージ装置との間で差動信号を用いた通信を正常に行うことができるか否かを確認することで、前記第２の制御部と前記ストレージ装置とを繋ぐインターフェース又は前記ストレージ装置に生じた異常を検出するテストを実行する請求項２記載の情報処理装置。
【請求項４】
前記第１のテスト手段は、前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記第２の制御部との間で省電力モードへの移行を指示する信号の通信を正常に行うことができるか否かを確認することで、前記第１の制御部と前記第２の制御部とを繋ぐインターフェース又は前記第２の制御部に生じた異常を検出するテストを実行し、
前記第２のテスト手段は、前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記ストレージ装置との間で前記省電力モードへの移行を指示する信号の通信を正常に行うことができるか否かを確認することで、前記第１の制御部と前記第２の制御部とを繋ぐインターフェース又は前記ストレージ装置に生じた異常を検出するテストを実行する請求項２記載の情報処理装置。
【請求項５】
前記第２の制御部は、
前記診断モードであり、前記ストレージ装置を省電力モードへ移行させる指示を受付けた場合、前記ストレージ装置を、前記省電力モードに移行させないように制御する制御手段を更に有する請求項４記載の情報処理装置。
【請求項６】
前記メイン制御部は、
前記取得手段により取得された前記制御部で実行されたテストの結果を出力する出力手段を更に有する請求項１乃至５何れか１項記載の情報処理装置。
【請求項７】
前記情報処理装置は、印刷装置である請求項１乃至６何れか１項記載の情報処理装置。
【請求項８】
デバイスであって、
異常を検出するテストを行う診断モードへの移行の指示に応じて、前記診断モードに移行し、異常を検出するテストを実行するテスト手段と、
前記診断モードであり、前記デバイスと接続されたストレージ装置を省電力モードへ移行させる指示を受付けた場合、前記ストレージ装置を前記省電力モードに移行させないように制御する制御手段と、
有するデバイス。
【請求項９】
メイン制御部と、末端にストレージ装置が接続されるように前記ストレージ装置とカスケード接続された制御部と、を含む情報処理装置が実行する情報処理方法であって、
前記メイン制御部が、前記制御部に対して、異常を検出するテストを行う診断モードへの移行を指示する指示ステップと、
前記メイン制御部が、前記指示ステップでの指示に応じて前記診断モードに切り替わった前記制御部で実行されたテストの結果を取得する取得ステップと、
を含む情報処理方法。
【請求項１０】
コンピュータを、請求項１記載の情報処理装置の各手段として、機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、デバイス、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
デジタル商用印刷機を用いたＰＯＤ（Ｐｒｉｎｔ  Ｏｎ  Ｄｅｍａｎｄ）市場等において、エンドユーザから依頼された印刷物を納期までに確実に届けること（デリバリ）が重視される。デリバリを実現するため、デジタル印刷機に求められることとの一つとしてダウンタイム削減がある。このように、様々な市場において用いられるデジタル印刷機等の情報処理装置は、故障が少ないことが望ましいことは言うまでもなく、万一、故障しても速やかに修理できることが望ましい。
情報処理装置の中で、故障しやすいユニットの一つとして、画像データ等を記憶するストレージが挙げられる。ストレージは、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）や、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）で構成される場合がある。ストレージは、データ密度が高く、かつ、データ伝送が高速なので、わずかな特性変化で故障となる。ＨＤＤは、駆動部に精密なメカ制御を要し、振動や衝撃によってヘッドやディスク（プラッタ）が傷つき易い。更に、ＨＤＤは、磁性体やモータやベアリングが摩耗することがある。ＳＳＤは、フラッシュメモリの劣化、つまり、消去・書き込み回数の制限超過によって、故障する可能性がある。また、ＳＳＤは、長期間読み込まれないデータが消失する可能性がある。ボードは、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）コントローラ等のデバイスの故障、デバイスの実装不良、基板パターンの断線、コネクタの実装不良や破損等の原因で、故障する可能性がある。また、デバイスの接続に用いられるケーブルは、曲げによるストレスや、曲げ伸ばしの繰り返しや、振動等によって、断線することがある。
従来から、ストレージの故障診断による、ダウンタイム削減が知られている。例えば、特許文献１に、ＨＤＤ故障を予測して、故障しても影響が少ない動作に切り替える技術が開示されている。特許文献１の技術は、ＨＤＤ搭載の自己診断機能と状態監視サーバを用いて、劣化による故障が近いと予測できる状態になったときに、ＨＤＤを読み取りのみ可能な状態にして、バックアップ及び交換をするまで寿命をもたせる技術である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１４８２２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の技術は、ＨＤＤ故障の予測及び予防を行う技術であり、故障が発生した場合の故障した箇所を特定するものではない。そのため、特許文献１の技術では、ＨＤＤの読取ができない等の異常が発生した場合、ボード、ケーブル、ストレージ等のうちの何れに異常が発生したのかが分からない。異常が発生している箇所を特定しないで修理を開始すると、異常が発生した箇所を特定するために、修理者による試行錯誤が必要となり、修理に時間がかかってしまう。
特に、近年のセキュリティ意識の高まりによって、除法処理装置においては、データを暗号化してストレージに記憶することがある。暗号化した場合、ハードウェアが正常でも正しくセキュリティ認証しないとストレージに記憶したデータに正しくアクセスできない。そのため、修理者は、例えば、ストレージが故障しているか否かを調べるため、そのストレージからデータを取得することになる。ストレージ内のデータが暗号化されている場合、修理者は、取得したデータが、壊れたデータであるか暗号化されたデータであるかを判別することが困難であり、ストレージが故障しているか否かの特定が困難となる。
本発明は、異常が発生している箇所を把握することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、メイン制御部と、末端にストレージ装置が接続されるように前記ストレージ装置とカスケード接続された制御部と、を含む情報処理装置であって、前記メイン制御部は、前記制御部に対して、異常を検出するテストを行う診断モードへの移行を指示する指示手段と、前記指示手段による指示に応じて前記診断モードに切り替わった前記制御部で実行されたテストの結果を取得する取得手段と、を有する。
【発明の効果】
【０００６】
本発明によれば、異常が発生している箇所を把握することができる。
【図面の簡単な説明】
【０００７】
【図１】印刷装置のメインコントローラのハードウェア構成の一例を示す図である。
【図２】ストレージ装置との接続の一例を示す図である。
【図３】ＳＡＴＡホスト制御部等のハードウェア構成等の一例を示す図である。
【図４】メインコントローラの処理の一例を示すフローチャートである。
【図５】ＳＡＴＡホスト制御部の処理の一例を示すフローチャートである。
【図６】ＳＡＴＡブリッジ制御部の処理の一例を示すフローチャートである。
【図７】レジスタＨに記憶される情報の一例を示す図である。
【図８】ＳＡＴＡブリッジ制御部に送信されるコマンドの一例を示す図である。
【図９】ＳＡＴＡホスト制御部の処理の一例を示すフローチャートである。
【図１０】ＳＡＴＡブリッジ制御部の処理の一例を示すフローチャートである。
【図１１】ＤＥＶＳＬＰ信号の波形の一例を示す図である。
【図１２】ＳＡＴＡホスト制御部の処理の一例を示すフローチャートである。
【図１３】ＳＡＴＡブリッジ制御部の処理の一例を示すフローチャートである。
【図１４】ＳＡＴＡブリッジ制御部の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面に基づいて説明する。
【０００９】
＜実施形態１＞
本実施形態では、印刷装置のメインコントローラ１００と接続されているストレージとストレージコントローラとの故障判定処理について説明する。メインコントローラ１００は、印刷装置を制御するコントローラである。メインコントローラ１００を含む印刷装置は、情報処理装置の一例である。
図１は、印刷装置のメインコントローラ１００のハードウェア構成の一例を示す図である。メインコントローラ１００は、メインＣＰＵ１０１、メモリ制御部１０２、Ｆｌａｓｈメモリ１０３、ＤＲＡＭ１０４、ＬＡＮ‐ＩＦ部１０５、Ｒｅａｄｅｒ‐ＩＦ部１０８、画像処理部１１０を含む。また、メインコントローラ１００は、ＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２、パネルＩＦ部１１５、ビデオ出力ＩＦ部１１７、ＧＰＩＯ１２０を含む。メインコントローラ１００の各ハードウェア構成要素は、ＳＡＴＡブリッジ制御部１１２等を除き、メインバス１１９を介して相互に接続されている。
【００１０】
メインＣＰＵ１０１は、印刷装置の制御や各種演算処理を行う。メモリ制御部１０２は、各種メモリデバイスへの入出力制御やＤＭＡ（ダイレクト・メモリ・アクセス）制御等を行う。メインＣＰＵ１０１は、印刷装置のメイン制御部の一例である。ＦＬＡＳＨメモリ１０３は、書き換え可能な不揮発性メモリであり、印刷装置全体の制御プログラムや制御パラメータ等が格納される。ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）１０４は、ＤＤＲ（Ｄｏｕｂｌｅ‐Ｄａｔａ‐Ｒａｔｅ）メモリに代表される揮発性の書き換え専用メモリである。ＤＲＡＭ１０４は、メインＣＰＵ１０１によるプログラムの作業領域や印刷データの格納領域、各種テーブル情報格納領域等の用途に用いられる。メモリ制御部１０２は、各種メモリデバイスを、独立に制御する。
ＬＡＮ‐ＩＦ部１０５は、ローカル・エリア・ネットワーク（ＬＡＮ）等のネットワーク１０６を介して、外部の装置との間での情報の入出力制御を行う。ＬＡＮ‐ＩＦ部１０５は、例えば、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）プロトコルを用いた通信を行う。メインコントローラ１００は、ネットワークケーブル、ＬＡＮ‐ＩＦ部１０５等を介してＨＯＳＴコンピュータ１０７等の外部のネットワーク対応装置と接続される。そして、メインコントローラ１００は、ＨＯＳＴコンピュータ１０７等からネットワーク経由でプリント処理の指示を受信すると、指示に応じたプリント処理を行うことができる。
【００１１】
Ｒｅａｄｅｒ‐ＩＦ部１０８は、スキャナ装置１０９との通信制御を行う。Ｒｅａｄｅｒ‐ＩＦ部１０８は、スキャナ装置１０９によってスキャンされた入力画像データを印字させることでコピー機能を実現する。画像処理部１１０は、ＬＡＮ‐ＩＦ部１０５、Ｒｅａｄｅｒ‐ＩＦ部１０８等を介して取り込まれた画像データに対して各種画像処理を行う。
ＳＡＴＡホスト制御部１１１は、メインコントローラ１００のメインＡＳＩＣ２０１に含まれる制御部である。ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格に準拠したＩＦを有するデバイスとのデータ入出力制御を行う。ＳＡＴＡブリッジ制御部１１２は、ＳＡＴＡホスト制御部１１１に接続されている。また、ＳＡＴＡブリッジ制御部１１２は、ストレージ装置と接続するためのインターフェースを複数有し、ストレージ装置１１３、１１４と接続される。本実施形態では、ストレージ装置１１３、１１４は、それぞれ、ＨＤＤ又はＳＳＤとする。ＳＡＴＡブリッジ制御部１１２は、ＲＡＩＤ制御やデータ暗号化等の機能を有する。本実施形態では、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２とは、それぞれ独立したＡＳＩＣ（特定用途向け集積回路）としてメインコントローラ１００に搭載されている。本実施形態では、ＳＡＴＡブリッジ制御部１１２は、図２で後述するサブＡＳＩＣにより構成されている。ＳＡＴＡホスト制御部１１１は、ストレージ装置１１３、１１４とカスケード接続される第１の制御部の一例である。ＳＡＴＡブリッジ制御部１１２は、ストレージ装置１１３、１１４とカスケード接続される第２の制御部の一例である。
【００１２】
パネルＩＦ部１１５は、パネル装置１１６との通信制御を行う。パネル装置１１６は、液晶画面やボタン等を含む。ユーザは、パネル装置１１６を介して、液晶画面の表示やボタン等を、ＵＩ（ユーザ・インターフェイス）として、操作することにより、印刷装置に対して入力を行ったり、各種設定及び状態（モード）の確認をしたりできる。ビデオ出力ＩＦ部１１７は、印字部１１８との間でのコマンド／ステータスの通信制御や印刷データの転送制御を行う。印字部１１８は、印刷装置本体が含む印字系の部分と、印刷装置に装着される給紙系及び排紙系の部分と、を含み、主にビデオ出力ＩＦ部１１７からのコマンド情報に従い、印刷データを紙に印刷する。
メインバス１１９は、バスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現されたバスである。メインバス１１９には、例えば、ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）やＡＳＩＣの内部バス等が含まれる。ＧＰＩＯ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ、汎用入出力）１２０は、ＳＡＴＡホスト制御部１１１やＳＡＴＡブリッジ制御部１１２と接続され、通信を行うためのインターフェースである。
メインＣＰＵ１０１が、ストレージ装置１１３、１１４、Ｆｌａｓｈメモリ１０３、ＤＲＡＭ１０４等に記憶されたプログラムに基づき処理を実行することによって、メインコントローラ１００の機能及び図４で後述するフローチャートの処理が実現される。
【００１３】
図２は、ストレージ装置１１３、１１４との接続の一例を示す図である。本実施形態では、図２が示すように、ストレージ装置１１３、１１４が接続の末端となるように、ＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２、ストレージ装置１１３、１１４がカスケード接続されている。
メインＡＳＩＣ２０１は、ＳＡＴＡホスト制御部１１１を含むメインコントローラ１００全体を制御するＡＳＩＣである。ＳＡＴＡホスト制御部１１１は、１個のＳＡＴＡ‐ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）２０２をホストＩＦとして含む。サブＡＳＩＣは、ＳＡＴＡブリッジ制御部１１２そのものであり、メインコントローラ１００上に独立したＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）として実装されている。ＳＡＴＡブリッジ制御部１１２は、３個のＳＡＴＡ‐ＩＰ２０３〜２０５を含む。メインＡＳＩＣ２０１とサブＡＳＩＣとは、メインコントローラ１００の単一のメインボード上に実装されている。
ＳＡＴＡ‐ＩＰ（Ｈｏｓｔ）２０２とＳＡＴＡ‐ＩＰ（Ｄｅｖｉｃｅ）２０３とは、Ｈ‐Ｈｏｓｔ‐ＩＦ２０６とを介して、接続されている。Ｈ‐Ｈｏｓｔ‐ＩＦ２０６は、ＳＡＴＡ‐ＩＰ（Ｈｏｓｔ）２０２とＳＡＴＡ‐ＩＰ（Ｄｅｖｉｃｅ）２０３との接続に利用されるケーブル等のインターフェースである。また、ＳＡＴＡ‐ＩＰ（Ｈｏｓｔ１）２０４とストレージ装置１１３とは、Ｂ‐Ｈｏｓｔ１‐ＩＦ２０７を介して、接続されている。Ｂ‐Ｈｏｓｔ１‐ＩＦ２０７は、ＳＡＴＡ‐ＩＰ（Ｈｏｓｔ１）２０４とストレージ装置１１３との接続に利用されるケーブル等のインターフェースである。ＳＡＴＡ‐ＩＰ（Ｈｏｓｔ２）２０５とストレージ装置１１４とは、Ｂ‐Ｈｏｓｔ２‐ＩＦ２０８を介して、接続されている。Ｂ‐Ｈｏｓｔ２‐ＩＦ２０８は、ＳＡＴＡ‐ＩＰ（Ｈｏｓｔ２）２０５とストレージ装置１１４との接続に利用されるケーブル等のインターフェースである。
【００１４】
ＳＡＴＡ‐ＩＰ２０２〜２０５は、ＳＡＴＡリンク層及び物理層において構成されている。ＳＡＴＡ‐ＩＰ２０２〜２０５は、各種ＳＡＴＡのレジスタの設定に応じて、インターフェース２０６〜２０８を介して接続されるデバイスに対して物理的な（電気信号としての）ＳＡＴＡ規格のコマンド発行やステータス受信を行う。以下では、ＳＡＴＡ規格のコマンドを、ＳＡＴＡコマンドとする。
また、ＳＡＴＡブリッジ制御部１１２は、電源制御部２０９と制御信号を通信するためのインターフェース２１４を介して接続されている。電源制御部２０９は、メインコントローラ１００のメインボード上に搭載され、メインコントローラ１００に含まれる各機能モジュールやそれに接続される各種装置への電力供給の有無を決定し、印刷装置全体としての電源制御を行う。電源制御部２０９から出ている一点鎖線で示される電源線２１０〜２１３は、メインＡＳＩＣ２０１、ＳＡＴＡブリッジ制御部１１２、ストレージ装置１１３、１１４に対しての電源ラインを示す。
なお、本実施形態では、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との間のインターフェースを１個、ＳＡＴＡブリッジ制御部１１２とストレージ装置１１３、１１４との間のインターフェースを２個とする。しかし、各インターフェースの数は、任意の個数でもよい。
【００１５】
図３は、ＳＡＴＡホスト制御部１１１及びＳＡＴＡブリッジ制御部１１２のハードウェア構成等の一例を示す図である。
ＳＡＴＡホスト制御部１１１は、ＨＣＰＵ３０１、メモリ制御部３０２、Ｆｌａｓｈメモリ３０３、ＳＲＡＭ３０４、割り込み制御部３０５、レジスタＨ３０６、ＤＭＡＣ３０７、タイマ３０８、バスブリッジ回路３０９、Ｏｔｈｅｒｓ３１０を含む。ＳＡＴＡホスト制御部１１１の各ハードウェア構成要素は、Ｈバス３１１を介して相互に接続されている。
ＨＣＰＵ３０１は、ＳＡＴＡコマンド発行処理、送受信データの転送処理及びステータス受信処理等のＳＡＴＡコントローラとしての制御を行う。メモリ制御部３０２は、Ｆｌａｓｈメモリ３０３やＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）３０４との入出力制御を行う。Ｆｌａｓｈメモリ３０３は、ブートプログラムやＳＡＴＡコントローラとしての制御プログラムを格納する。ＳＲＡＭ３０４は、ＨＣＰＵ３０１の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファ等に利用される。図３では、ＳＲＡＭ３０４は、１ポートＲＡＭ、２ポートＲＡＭ、ＦＩＦＯ（Ｆｉｒｓｔ‐ＩＮ  Ｆｉｒｓｔ‐ＯＵＴ）メモリ等を簡略化して記載されているが、それぞれ独立に制御され複数個所にＳＲＡＭが存在してもよい。
【００１６】
割り込み制御部３０５は、ＨＣＰＵ３０１に対する割り込み信号の入力の受信や出力処理、割り込み信号に対するマスク処理等の処理を行う。レジスタＨ３０６は、ＦＣＴ（Ｆｕｎｃｔｉｏｎａｌ  Ｃｈｅｃｋｉｎｇ  Ｔｏｏｌ）関連の制御パラメータ等を一時的に記憶するためのレジスタであり、図７で後述する。ＦＣＴとは、自己診断機能である。ＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）３０７は、ＨＣＰＵ３０１によって決定され、レジスタに記憶された転送元及び転送先の先頭アドレス及びサイズの情報に基づいて、起動が掛けられると所定のメモリ間でのデータ転送を行う。
タイマ３０８は、タイムアウトを判断するためのタイマである。図３のＨバス３１１は、バスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現されたバスである。バスブリッジ回路３０９は、メインバス１１９とＨバス３１１との間のバスプロトコルを相互に変換するバスブリッジ回路である。
ＨＣＰＵ３０１が、ストレージ装置１１３、１１４、Ｆｌａｓｈメモリ３０３、ＳＲＡＭ３０４等に記憶されたプログラムに基づき処理を実行することで、ＳＡＴＡホスト制御部１１１の機能及び図５、９、１２で後述するフローチャートの処理が実現される。
【００１７】
ＳＡＴＡブリッジ制御部１１２は、ＢＣＰＵ３２０、メモリ制御部３２１、Ｆｌａｓｈメモリ３２２、ＳＲＡＭ３２３、レジスタＢ３２４、電源ＩＦ部３２５、Ｏｔｈｅｒｓ３２６、タイマ３２９を含む。ＳＡＴＡブリッジ制御部１１２の各ハードウェア構成要素は、Ｂバス３２７を介して相互に接続されている。
ＢＣＰＵ３２０は、ＳＡＴＡコマンド発行処理、送受信データの転送処理及びステータス受信処理等のＳＡＴＡコントローラとしての制御を行う。メモリ制御部３２１は、Ｆｌａｓｈメモリ３２２やＳＲＡＭ３２３との入出力制御を行う。Ｆｌａｓｈメモリ３２２には、ブートプログラムやＳＡＴＡコントローラとしての制御プログラムが記憶されている。また、ＳＲＡＭ３２３は、ＢＣＰＵ３２０の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファ等に利用される。ＳＲＡＭ３２３は、１ポートＲＡＭ、２ポートＲＡＭ、ＦＩＦＯメモリ等で構成される。ＳＡＴＡブリッジ制御部１１２は、ＳＲＡＭ３２３の代わりに、それぞれ独立に制御される１ポートＲＡＭ、２ポートＲＡＭ、ＦＩＦＯメモリ等の複数のＳＲＡＭを含んでもよい。
レジスタＢ３２４は、ＦＣＴ関連の制御パラメータ等の情報を一時的に記憶するレジスタである。電源ＩＦ部３２５は、電源制御部２０９とインターフェース２１４を介して接続され、ストレージ装置１１３、１１４に対する電源のＯＦＦ／ＯＮの要求信号の制御を行う。Ｏｔｈｅｒｓ３２６は、ＳＡＴＡブリッジ制御部１１２のその他の機能を有するハードウェア構成要素である。Ｏｔｈｅｒｓ３２６は、例えば、ＲＡＩＤ処理やデータ暗号化処理等を行う機能を有する。タイマ３２９は、タイムアウトを判断するためのタイマである。図３のＢバス３２７は、バスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現されたバスである。
【００１８】
ＢＣＰＵ３２０が、ストレージ装置１１３、１１４、Ｆｌａｓｈメモリ３２２、ＳＲＡＭ３２３等に記憶されたプログラムに基づき処理を実行することで、以下の機能及び処理が実現される。即ち、ＳＡＴＡブリッジ制御部１１２の機能及び図６、１０、１３、１４で後述するフローチャートの処理が実現される。
また、ＳＡＴＡホスト制御部１１１のＳＡＴＡ‐ＩＰ（Ｈｏｓｔ）２０２とＳＡＴＡブリッジ制御部１１２のＳＡＴＡ‐ＩＰ（Ｄｅｖｉｃｅ）２０３とは、Ｈ‐Ｈｏｓｔ‐ＩＦ２０６を介して接続される。ＳＡＴＡ‐ＩＰ（Ｈｏｓｔ１）２０４とストレージ装置１１３とは、Ｂ‐Ｈｏｓｔ１‐ＩＦ２０７を介して、接続される。ＳＡＴＡ‐ＩＰ（Ｈｏｓｔ２）２０５とストレージ装置１１４とは、Ｂ‐Ｈｏｓｔ２‐ＩＦ２０８を介して、接続される。
インターフェース２３０は、ＧＰＩＯ１２０との接続に利用されるインターフェースである。インターフェース２３０を介して、ＦＣＴ動作の開始を示すｉｎｔＦｃｔ信号等の信号が、割り込み制御部３０５に入力される。
【００１９】
インターフェース２１４は、電源制御部２０９の制御に利用される電源制御線である。電源線２１２、２１３は、それぞれストレージ装置１１３、１１４への電源供給に利用される電源線である。電源制御部２０９は、インターフェース２１４を介して、電源ＩＦ部３２５から受信した信号に応じて、ストレージ装置１１３、１１４に電源を供給する。
インターフェース２１５〜２１７は、ＤＥＶＳＬＰ信号の通信に利用されるインターフェースである。ＤＥＶＳＬＰ信号とは、こまめに電力を削減するため、ＳＡＴＡ規格で規定されている信号である。インターフェース２１６、２１７は、ストレージ装置１１３及び１１４のＳＡＴＡ電源コネクタに接続されている。
ＤＥＶＳＬＰ信号による省電力動作は、以下のようにして行われる。ＳＡＴＡホスト制御部１１１が、省電力モードへの移行を要求するコマンドであるＰＭＲＥＱ＿Ｓコマンド、ＰＭＲＥＱ＿Ｐコマンド等を、ＳＡＴＡブリッジ制御部１１２に発行する。その後、ＳＡＴＡホスト制御部１１１が、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号をＨｉにすると、ＳＡＴＡブリッジ制御部１１２を省電力モードにする。逆に、ＳＡＴＡホスト制御部１１１が、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号をＬｏにして、ＣＯＭＷＡＫＥコマンドを発行することで、ＳＡＴＡブリッジ制御部１１２を通常モードに復帰させる。省電力モードとは、通常モードよりも電力の消費を抑えたモードである。
また、ＳＡＴＡブリッジ制御部１１２が、省電力モードへの移行を要求するコマンドであるＰＭＲＥＱ＿Ｓコマンド、ＰＭＲＥＱ＿Ｐコマンド等を、ストレージ装置１１３、１１４に発行する。その後、ＳＡＴＡブリッジ制御部１１２が、インターフェース２１６、２１７を介して伝達されるＤＥＶＳＬＰ信号をＨｉにすると、ストレージ装置１１３、１１４を省電力モードにする。逆に、ＳＡＴＡブリッジ制御部１１２が、インターフェース２１６、２１７を介して伝達されるＤＥＶＳＬＰ信号をＬｏにして、ＣＯＭＷＡＫＥコマンドを発行することで、ストレージ装置１１３、１１４を通常モードに復帰させる。ＳＡＴＡブリッジ制御部１１２は、ＳＡＴＡホスト制御部１１１から省電力モードへの移行を要求するコマンドやＤＥＶＳＬＰ信号を受信すると、受信したコマンドやＤＥＶＳＬＰ信号を、ストレージ装置１１３、１１４に伝達する。
【００２０】
図４は、メインコントローラ１００の処理の一例を示すフローチャートである。メインＣＰＵ１０１は、例えば、パネル装置１１６を介したサービスマン等の操作に基づいて、メインコントローラ１００を、ＦＣＴ機能に関する処理を行うＦＣＴモードにする。以下では、ＦＣＴ機能に関する処理を、ＦＣＴ処理とする。ＦＣＴモードは、異常を検出するテストを行う診断モードの一例である。メインＣＰＵ１０１は、ＦＣＴモードである場合、印刷機への電源の投入を検知した際に、ＦＣＴ処理を開始する。本実施形態では、ＦＣＴ処理には、メインＣＰＵ１０１によるＳＡＴＡホスト制御部１１１やＳＡＴＡブリッジ制御部１１２への異常を検出する設定されたテストの実行の指示処理が含まれる。また、本実施形態では、ＦＣＴ処理には、メインＣＰＵ１０１からの指示に応じた、ＳＡＴＡホスト制御部１１１やＳＡＴＡブリッジ制御部１１２によるその設定されたテストの実行処理等も含まれる。本実施形態では、メインＣＰＵ１０１は、ＦＣＴモードにおいて、ＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２、ストレージ装置１１３、１１４の異常を診断する処理を行う。まず、メインＣＰＵ１０１は、メインＣＰＵ１０１とＳＡＴＡホスト制御部１１１との間をテストする。メインＣＰＵ１０１は、例えば、ＳＡＴＡホスト制御部１１１に応答信号を要求する信号を送信し、正常に応答信号が返ってきた場合、ＳＡＴＡホスト制御部１１１が正常であると確認する。また、メインＣＰＵ１０１は、応答信号が返ってこなかったり、異常な応答信号が返ってきたりした場合、ＳＡＴＡホスト制御部１１１が異常であると確認する。メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１が正常であると確認した場合、図４の処理を開始する。
図４を用いて、ＦＣＴモードのメインコントローラ１００の処理を説明する。
Ｓ４０１において、メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１を介して、ＳＡＴＡブリッジ制御部１１２に対して、ＦＣＴモードへの移行を指示し、ＦＣＴモードで実行されるテストを指定する。メインＣＰＵ１０１は、ＳＡＴＡブリッジ制御部１１２に対してコマンドを送信することで、ＦＣＴモードへの移行を指示し、ＦＣＴモードで実行されるテストを指定する。メインＣＰＵ１０１は、例えば、ＳＡＴＡブリッジ制御部１１２に対して、レジスタＢ３２４に実行するテストの情報を記憶するように指示することで、ＦＣＴモードで実行されるテストを指定する。
【００２１】
Ｓ４０２において、メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１に対して、ＦＣＴモードへの移行を指示し、ＦＣＴモードで実行されるテストを指定する。メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１に対してコマンドを送信することで、ＦＣＴモードへの移行を指示し、ＦＣＴモードで実行されるテストを指定する。メインＣＰＵ１０１は、例えば、ＳＡＴＡホスト制御部１１１に対して、レジスタＨ３０６に実行するテストの情報を記憶するように指示することで、ＦＣＴモードで実行されるテストを指定する。
Ｓ４０３において、メインＣＰＵ１０１は、Ｓ４０１で指定したテストの実行を、ＳＡＴＡブリッジ制御部１１２に指示する。メインＣＰＵ１０１は、例えば、自己診断機能に関する処理を開始することを指示するコマンドの一例であるＳｅｔｕｐ‐ＦＣＴ‐Ｍｏｄｅコマンドを、ＳＡＴＡブリッジ制御部１１２に送信することでＦＣＴ処理の開始を指示する。
Ｓ４０４において、メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１にＦＣＴ処理の開始を指示する。メインＣＰＵ１０１は、ＧＰＩＯ１２０を介して、インターフェース２３０を経由して、Ｈｉを示すｉｎｔＦｃｔ信号を、ＳＡＴＡホスト制御部１１１に送信することで、ＦＣＴ処理の開始をＳＡＴＡホスト制御部１１１に指示する。メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１に対して、レジスタＨ３０６に記憶されているテストの情報に対応するテストの開始を指示することで、ＦＣＴ処理の開始をＳＡＴＡホスト制御部１１１に指示してもよい。
【００２２】
Ｓ４０５において、メインＣＰＵ１０１は、Ｓ４０３とＳ４０４とで実行を指示したＦＣＴ処理の完了を待機する。メインＣＰＵ１０１は、設定された期間待機した後、Ｓ４０３とＳ４０４とで実行を指示したＦＣＴ処理が完了したか否かを判定する。メインＣＰＵ１０１は、例えば、ＳＡＴＡホスト制御部１１１及びＳＡＴＡブリッジ制御部１１２からＦＣＴ処理の完了を示す通知を受信した場合、Ｓ４０３とＳ４０４とで実行を指示したＦＣＴ処理が完了したと判定する。また、メインＣＰＵ１０１は、例えば、レジスタＨ３０６及びレジスタＢ３２４を設定された間隔で周期的に読み込み、ＦＣＴ処理が完了したことを示す情報を読み取ることができた場合、ＦＣＴ処理が完了したと判定してもよい。
ＨＣＰＵ３０１がＳＡＴＡブリッジ制御部１１２からＳ４０３で指示されたＦＣＴ処理の完了を示す通知を受信した後に、メインＣＰＵ１０１にＳ４０４で指示されたＦＣＴ処理の完了を示す通知を送信する場合、メインＣＰＵ１０１は、以下のようにする。即ち、メインＣＰＵ１０１は、Ｓ４０５で、ＳＡＴＡホスト制御部１１１からＳ４０４で指示したＦＣＴ処理の完了を示す通知を受信した場合、Ｓ４０３とＳ４０４とで実行を指示したＦＣＴ処理が完了したと判定する。
【００２３】
メインＣＰＵ１０１は、Ｓ４０３とＳ４０４とで実行を指示したＦＣＴ処理が完了したと判定した場合、Ｓ４０６の処理に進み、Ｓ４０３とＳ４０４とで実行を指示したＦＣＴ処理が完了していないと判定した場合、Ｓ４０５の処理を繰り返す。
ＳＡＴＡホスト制御部１１１は、ＦＣＴ処理の完了を示す通知を、例えば、ＰＣＩ  ＥｘｐｒｅｓｓのＭＳＩ（Ｍｅｓｓａｇｅ  Ｓｉｇｎａｌｅｄ  Ｉｎｔｅｒｒｕｐｔ）割り込みで通知する。ＳＡＴＡホスト制御部１１１は、他の割り込み信号線、又は他の信号線を介して通知してもよい。
【００２４】
Ｓ４０６において、メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１に対して、ＦＣＴ処理の実行の解除を指示する。メインＣＰＵ１０１は、ＧＰＩＯ１２０を介して、インターフェース２３０を経由して、Ｌｏを示すｉｎｔＦｃｔ信号を、ＳＡＴＡホスト制御部１１１に送信することで、ＦＣＴ処理の実行を解除する。メインＣＰＵ１０１がＦＣＴ処理の実行の解除の指示を送信しない場合、ＳＡＴＡホスト制御部１１１は、例えば、Ｓ４０４で送信された指示を受信した後、設定された期間が経過したらＦＣＴ処理の実行を解除するようにしてもよい。
Ｓ４０７において、メインＣＰＵ１０１は、ＳＡＴＡブリッジ制御部１１２に対して、ＦＣＴ処理の実行の解除を指示する。メインＣＰＵ１０１は、例えば、ＳＡＴＡブリッジ制御部１１２に対して、ＦＣＴ処理の結果を返すことを要求するコマンドの一例であるＧｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドを送信することで、ＦＣＴ処理の実行の解除を指示する。ＳＡＴＡブリッジ制御部１１２は、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドを受信すると、ＦＣＴ処理を停止し、ＦＣＴ処理の結果を、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドの送信元に送信する。メインＣＰＵ１０１がＦＣＴ処理の実行の解除の指示を送信しない場合、ＳＡＴＡブリッジ制御部１１２は、例えば、Ｓ４０３で送信された指示を受信した後、設定された期間が経過したらＦＣＴ処理の実行を解除するようにしてもよい。
Ｓ４０８において、メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１のＦＣＴ処理の結果を取得する。メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１のレジスタＨ３０６に記憶されているＦＣＴ処理の結果を示す情報を読み込むことで、ＦＣＴ処理の結果を取得する。メインＣＰＵ１０１は、ＧＰＩＯ１２０を介して、ＳＡＴＡホスト制御部１１１から送信されるＦＣＴ処理の結果を示す情報を取得することとしてもよい。
【００２５】
Ｓ４０９において、メインＣＰＵ１０１は、ＳＡＴＡブリッジ制御部１１２のＦＣＴ処理の結果を取得する。メインＣＰＵ１０１は、ＳＡＴＡブリッジ制御部１１２から、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドの返り値を取得することで、ＦＣＴ処理の結果を示す情報を取得することとしてもよい。メインＣＰＵ１０１は、ＧＰＩＯ１２０を介して、ＳＡＴＡホスト制御部１１１から送信されるＦＣＴ処理の結果を示す情報を取得することとしてもよい。
Ｓ４１０において、メインＣＰＵ１０１は、Ｓ４０８及びＳ４０９で取得したＳＡＴＡホスト制御部１１１及びＳＡＴＡブリッジ制御部１１２におけるＦＣＴ処理の結果を出力する。メインＣＰＵ１０１は、例えば、パネルＩＦ部１１５経由で、パネル装置１１６にＦＣＴ処理の結果を示す情報を表示する。メインＣＰＵ１０１は、ＦＣＴ処理の結果が、問題が無いことを示す結果ならば、パネル装置１１６に、テスト内容と問題がないことを示すオブジェクト（例えば、「ＯＫ」、「ＰＡＳＳ」等の文字列等）とを表示する。
メインＣＰＵ１０１は、ＦＣＴ処理の結果に問題があれば、パネル装置１１６にテスト内容と、問題があることを示すオブジェクト（例えば、「ＮＧ」等の文字列等）と、を表示する。そして、メインＣＰＵ１０１は、メインコントローラボードの交換指示（エラーコード）をパネル装置１１６に表示する。メインＣＰＵ１０１は、パネル装置１１６にではなく、ＬＡＮ‐ＩＦ部１０５やＵＳＢポートやシリアルポート等に接続された表示装置に、ＦＣＴ処理の結果を示す情報を表示してもよい。また、メインＣＰＵ１０１は、ＦＣＴ処理の結果を示す情報を、印字部１１８を介して、紙等に印刷することで、出力してもよい。Ｓ４１０での出力処理により、ユーザは、メインコントローラボードが故障しているか否か、つまり交換すべきか否かを知ることができる。
【００２６】
次に、図５を用いて、ＦＣＴモードにおけるＳＡＴＡホスト制御部１１１の処理を説明する。図５は、ＦＣＴモードにおけるＳＡＴＡホスト制御部１１１の処理の一例を示すフローチャートである。
Ｓ４１１において、ＨＣＰＵ３０１は、Ｓ４０２で送信されるＦＣＴ処理の実行の指示を待機する。ＨＣＰＵ３０１は、例えば、インターフェース２３０を介して、Ｈｉを示すｉｎｔＦｃｔ信号が送信されるまで、待機する。また、ＨＣＰＵ３０１は、レジスタＨ３０６にＦＣＴ処理の開始を示す情報が記憶されるまで、待機することとしてもよい。
Ｓ４１２において、ＨＣＰＵ３０１は、Ｓ４０２で送信された指示が示すテストが、何のテストであるかを判断する。ＨＣＰＵ３０１は、例えば、レジスタＨ３０６に記憶されているＦＣＴ処理に関する設定情報の値を参照して、実行するテストを判断する。ＨＣＰＵ３０１は、例えば、レジスタＨ３０６に記憶されているＦＣＴ処理に関する設定情報の設定された第１のビットの値がＨｉ（１）ならば、実行するテストをＳＡＴＡ差動信号テストと判断し、Ｓ４１３の処理に進む。また、ＨＣＰＵ３０１は、例えば、レジスタＨ３０６に記憶されているＦＣＴ処理に関する設定情報のうち、設定された第２のビットの値がＨｉ（１）ならば、実行するテストをＤＥＶＳＬＰ信号テストと判断し、Ｓ４１４の処理に進む。
ＳＡＴＡ差動信号テストとは、デバイス間で行われる差動信号のやり取りによる通信が正常に行われているか否かを確認するためのテストであり、詳細については、図９、１０で後述する。ＤＥＶＳＬＰ信号テストとは、デバイス間で行われる省電力モードへの移行を指示する信号のやり取りが正常に行われているか否かを確認するためのテストであり、詳細については、図１１〜１３で後述する。本実施形態では、ＨＣＰＵ３０１は、実行するテストを、２つのテストのうちの何れかであると判断したが、３つ以上のテストから実行するテストを判断してもよい。
【００２７】
Ｓ４１３において、ＨＣＰＵ３０１は、ＳＡＴＡ差動信号テストを実行する。
Ｓ４１４において、ＨＣＰＵ３０１は、ＤＥＶＳＬＰ信号テストを実行する。
Ｓ４１５において、ＨＣＰＵ３０１は、ＦＣＴ処理の完了をメインＣＰＵ１０１に通知する。ＨＣＰＵ３０１は、例えば、ＰＣＩ  ＥｘｐｒｅｓｓのＭＳＩを発行することで、通知する。メインＣＰＵ１０１は、Ｓ４０５で、Ｓ４１５での通知を待機する。
このように、ＳＡＴＡホスト制御部１１１が、指定されたテストを実行し、テスト結果をレジスタＨ３０６等に記憶し、テスト終了をメインコントローラ１００に通知する。これにより、メインコントローラ１００は、メインコントローラ１００及びＳＡＴＡホスト制御部１１１の間の動作が正常か否かを確認できる。これによって、ユーザは、メインコントローラボードが故障しているか否か、つまり交換すべきか否かを知ることができる。
【００２８】
次に、図６を用いて、ＦＣＴモードにおけるＳＡＴＡブリッジ制御部１１２の処理を説明する。図６は、ＦＣＴモードにおけるＳＡＴＡブリッジ制御部１１２の処理の一例を示すフローチャートである。
Ｓ４２１において、ＢＣＰＵ３２０は、Ｓ４０３で送信されるＦＣＴ処理の実行の指示を待機する。ＢＣＰＵ３２０は、例えば、メインＣＰＵ１０１から、ＦＣＴ処理の実行の指示として、Ｓｅｔｕｐ‐ＦＣＴ‐Ｍｏｄｅコマンドが送信されるのを待機する。
Ｓ４２２において、ＢＣＰＵ３２０は、Ｓ４０３で送信された指示が示すテストが、何のテストであるかを判断する。ＢＣＰＵ３２０は、例えば、メインＣＰＵ１０１から送信されたＳｅｔｕｐ‐ＦＣＴ‐Ｍｏｄｅコマンドを参照して、実行するテストを判断する。ＢＣＰＵ３２０は、Ｓｅｔｕｐ‐ＦＣＴ‐Ｍｏｄｅコマンドのデータ部の設定された第１のビットがＨｉならば、実効するテストをＳＡＴＡ差動信号テストと判断し、Ｓ４２３の処理に進む。ＢＣＰＵ３２０は、Ｓｅｔｕｐ‐ＦＣＴ‐Ｍｏｄｅコマンドのデータ部の設定された第２のビットがＨｉならば、実効するテストをＤＥＶＳＬＰ信号テストと判断し、Ｓ４２４の処理に進む。
【００２９】
Ｓ４２３において、ＢＣＰＵ３２０は、ＳＡＴＡ差動信号テストを実行する。
Ｓ４２４において、ＢＣＰＵ３２０は、ＤＥＶＳＥＬ信号テストを実行する。
Ｓ４２７において、ＢＣＰＵ３２０は、Ｓ４２３、Ｓ４２４の何れかで実行したテストの結果を示す情報を、Ｆｌａｓｈメモリ３２２、ＳＲＡＭ３２３、レジスタＢ３２４等に記憶する。
Ｓ４２８において、ＢＣＰＵ３２０は、Ｓ４２３、Ｓ４２４の何れかで実行したテストの結果の問い合わせを受信したか否かを判定する。ＢＣＰＵ３２０は、例えば、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドを受信した場合、Ｓ４２３、Ｓ４２４の何れかで実行したテストの結果の問い合わせを受信したと判定する。ＢＣＰＵ３２０は、Ｓ４２３、Ｓ４２４の何れかで実行したテストの結果の問い合わせを受信したと判定した場合、Ｓ４２９の処理に進む。ＢＣＰＵ３２０は、Ｓ４２３、Ｓ４２４の何れかで実行したテストの結果の問い合わせを受信していないと判定した場合、Ｓ４２２の処理に進む。
【００３０】
Ｓ４２９において、ＢＣＰＵ３２０は、Ｓ４２３、Ｓ４２４の何れかで実行したテストの結果を出力する。ＢＣＰＵ３２０は、例えば、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドの送信元に対して、Ｓ４２３、Ｓ４２４の何れかで実行したテストの結果を示す情報をメインコントローラ１００に送信することで、出力する。
このように、ＳＡＴＡブリッジ制御部１１２は、指定されたテストを実行し、テストの結果を記憶し、テストの結果を示す情報をメインＣＰＵ１０１に送信する。これにより、メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２、ストレージ装置１１３、１１４の間の動作が正常化否かを確認できる。ユーザは、送信されたテストの結果の情報によって、メインコントローラボード（ＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２）が故障しているか否か、交換すべきか否かを知ることができる。
【００３１】
図７は、ＳＡＴＡホスト制御部１１１のレジスタＨ３０６に記憶される情報の一例を示す図である。メインＣＰＵ１０１は、レジスタＨ３０６に記憶される情報を参照することで、ＦＣＴ処理に関する設定情報、ＦＣＴ処理の結果の情報等を確認することができる。
図７において、ビット列８０１は、ＦＣＴ処理に関する設定情報を示すビット列である。ビット列８０１の各ビットは、それぞれ特定のテストに対応する。ビット列８０１内のあるテストに対応するビットに"１"を書き込むと、そのテストが実行され、そのビットに"０"を書き込むと、そのテストの実行が停止されることになる。メインＣＰＵ１０１は、ビット列８０１を読み込み、あるビットの値が"１"ならば該当するテストが実行中であり、そのビットの値が"０"ならば該当するテストが停止中であることを確認できる。
ビット８０２は、ビット列８０１に含まれるビットであり、ＳＡＴＡ差動信号テストが実行中であるか、停止中であるかを示すビットである。
ビット８０３は、ビット列８０１に含まれるビットであり、ＤＥＶＳＬＰ信号テストが実行中であるか、停止中であるかを示すビットである。
【００３２】
ビット列８１１は、テストの結果を示すビット列である。ビット列８１１に含まれるあるビットが"１"であることは、そのビットに対応するテストの結果、問題がないことを示す。ビット列８１１に含まれるあるビットが"０"であることは、そのビットに対応するテストの結果、問題があることを示す。メインＣＰＵ１０１は、ビット列８１１を読み込み、あるビットの値が"１"ならば該当するテストの結果、問題ないことを確認し、そのビットの値が"０"ならば該当するテストの結果、問題があることを確認する。
ビット８１２は、ビット列８１１に含まれるビットであり、ＳＡＴＡ差動信号テストの結果を示すビットである。
ビット８０３は、ビット列８１１に含まれるビットであり、ＤＥＶＳＬＰ信号テストの結果を示すビットである。
ビット列８２１は、実行されるテストにかかる期間を示す。例えば、ビット列８１１が１００を示す場合、ＤＥＶＳＬＰ信号テストの際のＤＥＶＳＬＰ信号におけるＨｉ／Ｌｏのパルス幅がそれぞれ１００ｍｓｅｃとなる。
また、ＳＡＴＡブリッジ制御部１１２は、レジスタＢ３２４に、図７と同様のビット列を記憶し、記憶したビット列にＳＡＴＡブリッジ制御部１１２が実行するテストの情報やテストの結果の情報を記憶することとしてもよい。
【００３３】
図８は、メインＣＰＵ１０１からＳＡＴＡブリッジ制御部１１２に送信されるコマンドの一例を示す図である。ＳＡＴＡ規格で定義された空コマンドであるベンダユニークなコマンド（例えば、Ｆ０ｈコマンド）に対して、独自のコマンドが定義される。例えば、図８の第１行目左から示されるように拡張コマンド名称７０１、ＣＭＤ（サブコマンド）番号７０２、転送タイプ７０３により、拡張コマンドが独自に定義される。ここで、ＣＭＤ番号７０２は、ベンダユニークなコマンド（例えば、Ｆ０ｈ）に対するＦｅａｔｕｒｅレジスタに設定されるサブコマンド番号を示す。また、ＳＡＴＡ規格では基本的な転送タイプとして、データを伴わないＮｏｎ‐Ｄａｔａ（ＮＤ）転送、単発データ転送を実行するＰＩＯ‐Ｉｎ（ＰＩ）・ＰＩＯ‐Ｏｕｔ（ＰＯ）転送、連続データ転送を実行するＤＭＡ転送等の転送タイプが定義されている。転送タイプ７０３は、ＣＭＤ番号７０２に対する転送タイプを示す。例えば、Ｓｅｔｕｐ‐ＦＣＴ‐Ｍｏｄｅコマンド７０６は、ＣＭＤ番号：０１ｈ（７０７）、転送タイプ：ＰＯ（７０８）で定義されている。同様にＧｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンド７１０は、ＣＭＤ番号：０２ｈ（７１１）、転送タイプ：ＰＩ（７１２）で定義されている。
Ｓｅｔｕｐ‐ＦＣＴ‐Ｍｏｄｅコマンド７０６は、ＳＡＴＡブリッジ制御部１１２に実行されるＦＣＴのテスト内容を指示するために用いられるコマンドである。Ｓｅｔｕｐ‐ＦＣＴ‐Ｍｏｄｅコマンド７０６は、例えば、ビット列８０１の実行を指示したいテストに対応するビットに１を割当てるように指示するコマンドである。
【００３４】
Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンド７１０は、テスト結果又は処理結果を要求する際に利用されるコマンドである。ＳＡＴＡブリッジ制御部１１２は、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンド７１０受信すると、ビット列８１１に含まれるビットのうち、実行されたテストに対応するビットの値に対応する情報を、コマンドの送信元に送信する。ＳＡＴＡブリッジ制御部１１２は、ビット列８１１に含まれるビットのうち、実行されたテストに対応するビットの値が"１"の場合、問題ないことを示す情報を送信し、"０"の場合、問題があることを示す情報を送信する。ＳＡＴＡブリッジ制御部１１２は、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンド７１０を受信するまでＦＣＴモードを継続し、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンド７１０を受信したら通常モードに復帰する。
以下では、拡張コマンド以外のＡＴＡ規格で定義されたコマンドを、ＡＴＡコマンドとする。ＳＡＴＡホスト制御部１１１及びＳＡＴＡブリッジ制御部１１２は、拡張コマンドだけを処理するのではなく、ＡＴＡコマンドも処理できる。ＡＴＡコマンドの例として、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンド７１４がある。ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンド７１４は、ＣＭＤ番号：ＥＣｈ（７１５）、転送タイプ：ＰＩ（７１６）で定義されている。ＳＡＴＡホスト制御部１１１又はＳＡＴＡブリッジ制御部１１２がＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンド７１４をストレージ装置に送信すると、ストレージ装置は、ストレージ装置の名前や記憶容量等の情報（例えば、５１２ｂｙｔｅ等の情報）を応答する。
【００３５】
次に図９を用いて、Ｓ４１３等で実行されるＳＡＴＡ差動信号テスト処理の詳細を説明する。図９は、ＳＡＴＡ差動信号テストにかかる処理の一例を示すフローチャートである。図９の処理は、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との間のＨ‐Ｈｏｓｔ‐ＩＦ２０６を介したＳＡＴＡ差動信号のやり取りに関する動作が正常か否かをテストするためのサブルーチン化された処理である。Ｓ４１３でのＳＡＴＡ差動信号テストは、Ｈ‐Ｈｏｓｔ‐ＩＦ２０６を介して伝達される信号の値を"１"、"０"と変化させることで行われるテストである。
本実施形態では、ＳＡＴＡホスト制御部１１１は、ＦＣＴモードにおいて、ＳＡＴＡブリッジ制御部１１２との間で、差動信号のやり取りによる通信を試みることで、ＳＡＴＡ差動信号テストを実行する。正常に通信できた場合、ＳＡＴＡブリッジ制御部１１２、及びＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との接続に利用されるケーブル等が正常であることが確認されることになる。また、正常に通信できなかった場合、ＳＡＴＡブリッジ制御部１１２、又は、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との接続に利用されるケーブル等に異常が発生していることが確認されることになる。
【００３６】
Ｓ４３１において、ＨＣＰＵ３０１は、タイマ３０８を初期化する。ＨＣＰＵ３０１は、このタイマ３０８を用いて、タイムアウトを判断する。ＨＣＰＵ３０１は、タイマ３０８以外のタイマを用いて、タイムアウトを判断してもよい。
Ｓ４３２において、ＨＣＰＵ３０１は、ＳＡＴＡブリッジ制御部１１２との間で、ＳＡＴＡ差動信号テストを実行する。ＨＣＰＵ３０１は、例えば、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドをＳＡＴＡブリッジ制御部１１２に送信することで、ＳＡＴＡ差動信号テストを実行する。ＨＣＰＵ３０１は、ＳＡＴＡホスト制御部１１１からＳＡＴＡブリッジ制御部１１２への送信側（トランスミッタ側）のＳＡＴＡ差動信号が変化するテストであれば、他のテストでもよい。ＨＣＰＵ３０１は、例えば、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンド以外のＳＡＴＡブリッジ制御部１１２からの応答を要求するコマンドをＳＡＴＡブリッジ制御部１１２に送信することで、ＳＡＴＡ差動信号テストを実行してもよい。
【００３７】
Ｓ４３３において、ＨＣＰＵ３０１は、ＳＡＴＡブリッジ制御部１１２からＳ４３２で送信したコマンドに対するＳＡＴＡホスト制御部１１１への応答があったか否かを判定する。ＨＣＰＵ３０１は、応答があったと判定した場合、Ｓ４３４の処理に進み、応答がなかったと判定した場合、Ｓ４３５の処理に進む。ＨＣＰＵ３０１は、例えば、ＳＡＴＡブリッジ制御部１１２からのＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドの応答を受信する。ＨＣＰＵ３０１は、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンド以外のコマンドをＳＡＴＡブリッジ制御部１１２に送信した場合、そのコマンドの応答を受信することとしてもよい。即ち、ＨＣＰＵ３０１は、ＳＡＴＡブリッジ制御部１１２からＳＡＴＡホスト制御部１１１への受信側（レシーバ側）のＳＡＴＡ差動信号が変化するテストであれば、どのようなテストを実行してもよい。
Ｓ４３４において、ＨＣＰＵ３０１は、Ｓ４３２〜Ｓ４３３で行われたテストの結果をレジスタＨ３０６等に記憶する。ＨＣＰＵ３０１は、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との間のＳＡＴＡ差動信号テストの結果、正常であることが確認されたことを示す情報を記憶する。ＨＣＰＵ３０１は、例えば、レジスタＨ３０６に記憶されているビット列８１１のＳＡＴＡ差動信号テストに対応するビットの値を、テスト成功を示す"１"にする。また、ＨＣＰＵ３０１は、Ｓ４３３で送信されたと判断したＳＡＴＡブリッジ制御部１１２からの応答の全部又は一部をレジスタＨ３０６に記憶してもよい。
【００３８】
Ｓ４３５において、ＨＣＰＵ３０１は、タイマ３０８を用いて、タイムアウトか否かを判断する。ＨＣＰＵ３０１は、例えば、タイマ３０８の経過時間が設定された期間（例えば１０秒）以内なら、タイムアウトしていないと判断し、Ｓ４３３の処理に進む。また、ＨＣＰＵ３０１は、タイマ３０８の経過時間が設定された期間（例えば１０秒）を超えていたら、タイムアウトと判断し、Ｓ４３６の処理に進む。
Ｓ４３６において、ＨＣＰＵ３０１は、Ｓ４３２〜Ｓ４３３で行われたテストの結果をレジスタＨ３０６等に記憶する。ＨＣＰＵ３０１は、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との間のＳＡＴＡ差動信号テストの結果、異常であることが確認されたことを示す情報を記憶する。ＨＣＰＵ３０１は、例えば、レジスタＨ３０６に記憶されているビット列８１１のＳＡＴＡ差動信号テストに対応するビットの値を、テスト失敗を示す"０"にする。
【００３９】
次に、図１０を用いてＳＡＴＡ差動信号テストの際のＳＡＴＡブリッジ制御部１１２の処理を説明する。図１０は、ＳＡＴＡ差動信号テストの際のＳＡＴＡブリッジ制御部１１２の処理の一例を示すフローチャートである。
Ｓ４４０において、ＢＣＰＵ３２０は、タイマ３２９を初期化する。ＢＣＰＵ３２０は、タイマ３２９を用いて、タイムアウトしたか否かを判断する。ＢＣＰＵ３２０は、タイマ３２９以外のタイマを用いて、タイムアウトしたか否かを判断してもよい。
ＳＡＴＡブリッジ制御部１１２は、Ｂ‐Ｈｏｓｔ１‐ＩＦ２０７と、Ｂ‐Ｈｏｓｔ２‐ＩＦ２０８と、の２つのストレージＩＦを持ち、それぞれのストレージＩＦを介して、２つのストレージ装置に対して、同様のテストを行う。本実施形態では、ＢＣＰＵ３２０は、２つのストレージ装置に対して、並行してテストを行うこととする。
【００４０】
Ｓ４４１において、ＢＣＰＵ３２０は、Ｂ‐Ｈｏｓｔ１‐ＩＦ２０７を介して、ストレージ装置１１３との間で、ＳＡＴＡ差動信号テストを実行する。ＢＣＰＵ３２０は、例えば、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドを、ストレージ装置１１３に送信することで、ＳＡＴＡ差動信号テストを実行する。ＢＣＰＵ３２０は、ＳＡＴＡブリッジ制御部１１２からストレージ装置１１３への送信側（トランスミッタ側）のＳＡＴＡ差動信号が変化するテストであれば、他のテストでもよい。ＢＣＰＵ３２０は、例えば、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンド以外のストレージ装置１１３からの応答を要求するコマンドをストレージ装置１１３に送信することで、ＳＡＴＡ差動信号テストを実行してもよい。
Ｓ４４２において、ＢＣＰＵ３２０は、ストレージ装置１１３からＳ４４１で送信したコマンドに対するＳＡＴＡブリッジ制御部１１２への応答があったか否かを判定する。ＢＣＰＵ３２０は、応答があったと判定した場合、Ｓ４４３の処理に進み、応答がなかったと判定した場合、Ｓ４４４の処理に進む。ＢＣＰＵ３２０は、例えば、ストレージ装置１１３からのＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドの応答を受信する。ＢＣＰＵ３２０は、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンド以外のコマンドをストレージ装置１１３に送信した場合、そのコマンドの応答を受信することとしてもよい。即ち、ＢＣＰＵ３２０は、ストレージ装置１１３からＳＡＴＡブリッジ制御部１１２への受信側（レシーバ側）のＳＡＴＡ差動信号が変化するテストであれば、どのようなテストを実行してもよい。
【００４１】
Ｓ４４３において、ＢＣＰＵ３２０は、Ｓ４４１〜Ｓ４４２で行われたテストの結果をレジスタＢ３２４等に記憶する。ＢＣＰＵ３２０は、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との間のＳＡＴＡ差動信号テストの結果、正常であることが確認されたことを示す情報を記憶する。ＢＣＰＵ３２０は、例えば、ビット列８１１と同様にテストの結果の情報を格納するレジスタＢ３２４に記憶されているビット列のＳＡＴＡ差動信号テストに対応するビットの値を、テスト成功を示す"１"にする。また、ＢＣＰＵ３２０は、Ｓ４３３で送信されたと判断したＳＡＴＡブリッジ制御部１１２からの応答の全部又は一部をレジスタＢ３２４に記憶してもよい。
Ｓ４４４において、ＢＣＰＵ３２０は、タイマ３２９を用いて、タイムアウトか否かを判断する。ＢＣＰＵ３２０は、例えば、タイマ３２９の経過時間が設定された期間（例えば１０秒）以内なら、タイムアウトしていないと判断し、Ｓ４４２の処理に進む。また、ＢＣＰＵ３２０は、タイマ３２９の経過時間が設定された期間（例えば１０秒）を超えていたら、タイムアウトと判断し、Ｓ４４５の処理に進む。
【００４２】
Ｓ４４５は、ＢＣＰＵ３２０は、Ｓ４４１〜Ｓ４４２で行われたテストの結果をレジスタＢ３２４等に記憶する。ＢＣＰＵ３２０は、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との間のＳＡＴＡ差動信号テストの結果、異常であることが確認されたことを示す情報を記憶する。ＢＣＰＵ３２０は、例えば、ビット列８１１と同様にテストの結果の情報を格納するレジスタＢ３２４に記憶されているビット列のＳＡＴＡ差動信号テストに対応するビットの値を、テスト失敗を示す"０"にする。
ＢＣＰＵ３２０は、Ｓ４４１'〜Ｓ４４５'で、Ｂ‐Ｈｏｓｔ２‐ＩＦ２０８を介して、ストレージ装置１１４に対して、Ｓ４４１〜Ｓ４４５と同様の処理を行う。
また、本実施形態では、ＢＣＰＵ３２０は、並行して、Ｓ４４１〜Ｓ４４５の処理、及び、Ｓ４４１'〜Ｓ４４５'の処理を行うこととしたが、Ｓ４４１〜Ｓ４４５の処理を行った後に、Ｓ４４１'〜Ｓ４４５'の処理を行う等のように、順次処理を行ってもよい。
【００４３】
次に図１１を用いて、ＤＥＶＳＬＰ信号の波形の一例を説明する。図１１は、ＤＥＶＳＬＰ信号の波形の一例を示す図である。ＳＡＴＡブリッジ制御部１１２は、インターフェース２１５を介して、ＳＡＴＡホスト制御部１１１からＤＥＶＳＬＰ信号を受信している。図１１のＨ‐ＤＥＶＳＬＰで示される信号の波形は、ＳＡＴＡホスト制御部１１１からＳＡＴＡブリッジ制御部１１２に送信されるＤＥＶＳＬＰ信号の一例である。ストレージ装置１１３、１１４は、インターフェース２１６、２１７を介して、ＳＡＴＡブリッジ制御部１１２からＤＥＶＳＬＰ信号を受信している。図１１のＢ‐ＤＥＶＳＬＰ１／２で示される信号の波形は、ＳＡＴＡブリッジ制御部１１２からストレージ装置１１３、１１４に送信されるＤＥＶＳＬＰ信号の一例である。
ＳＡＴＡホスト制御部１１１からＳＡＴＡブリッジ制御部１１２にＰＭＲＥＱ＿Ｐコマンド又はＰＭＲＥＱ＿Ｓコマンドが送信された場合、ＢＣＰＵ３２０は、以下の処理を行う。即ち、ＢＣＰＵ３２０は、受信したＰＭＲＥＱ＿Ｐコマンド又はＰＭＲＥＱ＿Ｓコマンドを、ストレージ装置１１３、１１４に送信して、省エネモードに移行させる。
【００４４】
ＦＣＴモードにおいて、ＳＡＴＡホスト制御部１１１又はＳＡＴＡブリッジ制御部１１２のチップ端子、又はコネクタ端子と基板パターンがハンダ付け部分の接触不良、隣の基板パターンのショート等の実装不良、又は基板の断線等の異常を検出する。そのため、インターフェース２１５を介して伝達されるＨ−ＤＥＶＳＬＰ信号を"１"、"０"と変化させる必要がある。
しかし、ＳＡＴＡブリッジ制御部１１２にストレージ装置１１３、１１４が接続されている場合、ストレージ装置１１３、１１４について、省電力モードと通常電力モードとを頻繁に切り替えると、以下のような問題がある。即ち、ストレージ装置１１３、１１４がＨＤＤである場合、省電力モードと通常電力モードとが頻繁に切り替わると、モータやベアリングの駆動や停止の際に負荷がかかり、ストレージ装置１１３、１１４の寿命が短くなる。また、ストレージ装置１１３、１１４がＳＳＤである場合、省電力モードと通常電力モードとが頻繁に切り替わると、モードの切り替わりに応じて、フラッシュメモリへの情報の読書きが発生し、フラッシュメモリの寿命が短くなってしまう。
【００４５】
そうならならないよう、ＢＣＰＵ３２０は、以下のような処理を行う。即ち、ＢＣＰＵ３２０は、ＦＣＴモードにおいて、ＳＡＴＡホスト制御部１１１やメインＣＰＵ１０１から省電力モードへの移行を指示する信号を受信した場合でも、ストレージ装置１１３、１１４に対して、省電力モードへの移行を指示しない。即ち、ＢＣＰＵ３２０は、ＦＣＴモードであり、ストレージ装置１１３、１１４を省電力モードに移行させる指示を受付けた場合に、ストレージ装置１１３、１１４を省電力モードにしないように制御する。例えば、ＢＣＰＵ３２０は、省電力モードへの移行を指示するコマンドを、ストレージ装置１１３、１１４に対して発行しない。より具体的には、ＳＡＴＡブリッジ制御部１１２にインターフェース２１５を介してＨｉであるＤＥＶＳＬＰ信号が伝達され、かつ、ＰＭＲＥＱ＿Ｐコマンド又はＰＭＲＥＱ＿Ｓコマンドが入力された場合、ＢＣＰＵ３２０は、以下の処理を行う。即ち、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４が省エネモードにならないよう、ＳＡＴＡブリッジ制御部１１２は、ストレージ装置１１３又は１１４にＰＭＲＥＱ＿ＰコマンドまたはＰＭＲＥＱ＿Ｓコマンドを発行しない。
ＳＡＴＡブリッジ制御部１１２は、インターフェース２１６を介して伝達するＤＥＶＳＬＰ信号を変化させることで、ストレージ装置１１３との間でＤＥＶＳＬＰ信号のやり取りを正常に行えるか否かの確認を行う。また、ＳＡＴＡブリッジ制御部１１２は、インターフェース２１７を介して伝達するＤＥＶＳＬＰ信号を変化させることで、ストレージ装置１１４との間でＤＥＶＳＬＰ信号のやり取りを正常に行えるか否かの確認を行う。
【００４６】
図１１において、時点Ｔ０は、ＦＣＴモードに移行する時点である。
時点Ｔ１は、ＤＥＶＳＬＰ信号がＬｏ（通常電力）からＨｉ（ＤｅｖＳｌｅｅｐ）に移行する時点である。メインＣＰＵ１０１がＧＰＩＯ１２０を介して、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号を変化させると、ＨＣＰＵ３０１に割り込みが入る。通常モードでは、省電力モードへの移行の際に、ＨＣＰＵ３０１は、ＰＭＲＥＱ＿Ｓコマンドを発行した後、インターフェース２１６、２１７を介して伝達されるＤＥＶＳＬＰ信号を変化させる。ＢＣＰＵ３２０は、ＦＣＴモードでは、ストレージの寿命が短くならないよう、接続されたストレージ装置に合わせて、ＤＥＶＳＬＰ信号を動作確認する。
時点Ｔ２は、ＤＥＶＳＬＰ信号がＨｉ（ＤｅｖＳｌｅｅｐ）からＬｏ（通常電力）に移行する時点である。通常電力にするため、ＳＡＴＡホスト制御部１１１は、ＳＡＴＡブリッジ制御部１１２に対して、ＣＯＭＷＡＫＥコマンドを発行する。また、ＳＡＴＡブリッジ制御部１１２は、ストレージ装置１１３、１１４に対して、ＣＯＭＷＡＫＥコマンドを発行する。
【００４７】
時点Ｔｎは、Ｔ１と同様に、ＤＥＶＳＬＰ信号がＬｏ（通常電力）からＨｉ（ＤｅｖＳｌｅｅｐ）に移行する時点である。
時点Ｔｎ＋１は、Ｔ２と同様に、ＤＥＶＳＬＰ信号がＨｉ（ＤｅｖＳｌｅｅｐ）からＬｏ（通常電力）に移行する時点である。
時点Ｔｎ＋２は、ＦＣＴ終了の際の時点である。ストレージ装置１１３にプログラムやデータが記憶されている場合、ストレージ装置１１３へのＤＥＶＳＬＰ信号がＨｉ（ＤｅｖＳｌｅｅｐ）のままでは、プログラムやデータにアクセスできない。そこで、ＢＣＰＵ３２０は、ストレージ装置１１３へのＤＥＶＳＬＰ信号をＬｏ（通常電力）にした後で、ＦＣＴモードから通常モードに移行する。
【００４８】
次に、図１２を用いて、ＤＥＶＳＬＰ信号テストの際のＳＡＴＡホスト制御部１１１の処理を説明する。図１２は、ＤＥＶＳＬＰ信号テストの際のＳＡＴＡホスト制御部１１１の処理の一例を示すフローチャートである。
Ｓ５０１において、ＨＣＰＵ３０１は、インターフェース２１５を介して、値がＨｉであるＨ‐ＤＥＶＳＬＰ信号を、ＳＡＴＡブリッジ制御部１１２に送信する。
Ｓ５０２において、ＨＣＰＵ３０１は、設定された時間だけ待機する。この設定された時間の情報は、予め、レジスタＨ３０６に記憶されている。
Ｓ５０３において、ＨＣＰＵ３０１は、インターフェース２１５を介して、値がＬｏであるＨ‐ＤＥＶＳＬＰ信号を、ＳＡＴＡブリッジ制御部１１２に送信する。
Ｓ５０４において、ＨＣＰＵ３０１は、設定された時間だけ待機する。この設定された時間の情報は、予め、レジスタＨ３０６に記憶されている。
【００４９】
Ｓ５０５において、ＨＣＰＵ３０１は、ＤＥＶＳＬＰ信号テストが完了したか否かを判定する。ＨＣＰＵ３０１は、例えば、レジスタＨ３０６に記憶されているビット列８０１に含まれるＤＥＶＳＬＰ信号テストに対応するビットの値が"１"のままだったら、ＤＥＶＳＬＰテストが完了していないと判定し、Ｓ５０１の処理に進む。ＨＣＰＵ３０１は、例えば、レジスタＨ３０６に記憶されているビット列８０１に含まれるＤＥＶＳＬＰ信号テストに対応するビットの値が"０"だったら、ＤＥＶＳＬＰテストが完了したと判定し、図１２の処理を終了する。
本実施形態では、ＨＣＰＵ３０１は、Ｓ５０２、Ｓ５０４において、同じ時間（１００ｍｓｅｃ）だけ待機するとしたが、Ｓ５０２とＳ５０４とで、異なる時間だけ待機することとしてもよい。また、ＨＣＰＵ３０１は、Ｓ５０２、Ｓ５０４において、レジスタＨ３０６に記憶された情報が示す時間だけ待機するとしたが、予め決定された待ち時間を待機することとしてもよい。
図１２の処理により、ＨＣＰＵ３０１は、インターフェース２１５を介してＳＡＴＡブリッジ制御部１１２に伝達されるＤＥＶＳＬＰ信号の値を、Ｈｉ／Ｌｏで変化させる。ＳＡＴＡブリッジ制御部１１２が、図１２の処理によるＤＥＶＳＬＰ信号の変化を検知できたら、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との間のＤＥＶＳＬＰ信号の通信が正常に行われていることになる。
【００５０】
次に、図１３を用いてＤＥＶＳＬＰ信号テストの際のＳＡＴＡブリッジ制御部１１２の処理を説明する。図１３の処理において、ＳＡＴＡホスト制御部１１１と、ＳＡＴＡブリッジ制御部１１２の間のインターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号のテストが行われる。図１３は、ＤＥＶＳＬＰ信号テストの際のＳＡＴＡブリッジ制御部１１２の処理の一例を示すフローチャートである。ここで、図１２で説明したように、説明のため、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号の値がＬｏ、Ｈｉと変化を繰り返すことを期待しているとして、図１３を説明する。
Ｓ５１１において、ＢＣＰＵ３２０は、タイマ３２９を初期化する。ＢＣＰＵ３２０は、タイマ３２９を用いて、タイムアウトしたか否かを判断する。
Ｓ５１２において、ＢＣＰＵ３２０は、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号の値がＨｉであるか否かを判定する。ＢＣＰＵ３２０は、例えば、インターフェース２１５を介して、入力された信号がＨｉならば、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号の値がＨｉであると判定して、Ｓ５１６の処理に進む。また、ＢＣＰＵ３２０は、インターフェース２１５を介して、入力された信号がＨｉでないならば、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号の値がＨｉでないと判定して、Ｓ５１３の処理に進む。
Ｓ５１３において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰ信号テストが完了したか否かを判定する。ＢＣＰＵ３２０は、例えば、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドを受信した場合、ＤＥＶＳＬＰ信号テストが完了したと判定し、Ｓ５１５の処理に進む。ＢＣＰＵ３２０は、例えば、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドを受信していない場合、ＤＥＶＳＬＰ信号テストが完了していないと判定し、Ｓ５１４の処理に進む。
【００５１】
Ｓ５１４において、ＢＣＰＵ３２０は、タイムアウトしたか否かを判断する。ＢＣＰＵ３２０は、例えば、タイマ３２９の経過時間が設定された閾値（例えば、５００ミリ秒）以下なら、タイムアウトしていないと判断し、Ｓ５１２の処理に進む。ＢＣＰＵ３２０は、例えば、タイマ３２９の経過時間が設定された閾値（例えば、５００ミリ秒）を超えているなら、タイムアウトしていると判断し、Ｓ５１５の処理に進む。この設定された閾値の情報は、例えば、レジスタＢ３２４に記憶される。メインＣＰＵ１０１は、パネル装置１１６を介したユーザの操作に基づいて、レジスタＢ３２４に記憶されているこの閾値の情報を変更できる。
Ｓ５１５において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰ信号テストの結果として、異常が確認されたことを示す情報（例えば、ＮＧを示す情報等）を、レジスタＢ３２４等に記憶する。ＢＣＰＵ３２０は、Ｓ５１３でＧｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドを受けている場合、Ｓ４２８と同様に、ＤＥＶＳＬＰ信号テストの結果である異常が確認されたことを示す情報をＧｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドの送信元に送信する。
Ｓ５１６において、ＢＣＰＵ３２０は、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号の値がＬｏであるか否かを判定する。ＢＣＰＵ３２０は、例えば、インターフェース２１５を介して、入力された信号がＬｏならば、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号の値がＬｏであると判定して、Ｓ５１７の処理に進む。また、ＢＣＰＵ３２０は、インターフェース２１５を介して、入力された信号がＬｏでないならば、インターフェース２１５を介して伝達されるＤＥＶＳＬＰ信号の値がＬｏでないと判定して、Ｓ５１２の処理に進む。
【００５２】
Ｓ５１７において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰ信号テストが完了したか否かを判定する。ＢＣＰＵ３２０は、例えば、ＳＡＴＡブリッジ制御部１１２とストレージ装置１１３、１１４の間での図１４で後述するテストが完了したら、ＤＥＶＳＬＰ信号テストが完了したと判定し、Ｓ５１９の処理に進む。またＢＣＰＵ３２０は、例えば、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドを受信した場合、ＤＥＶＳＬＰ信号テストが完了したと判定し、Ｓ５１９の処理に進むこととしてもよい。ＢＣＰＵ３２０は、例えば、Ｇｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドを受信していない場合、ＤＥＶＳＬＰ信号テストが完了していないと判定し、Ｓ５１８の処理に進む。
Ｓ５１８において、ＢＣＰＵ３２０は、タイムアウトしたか否かを判断する。ＢＣＰＵ３２０は、例えば、タイマ３２９の経過時間が設定された閾値（例えば、５００ミリ秒）以下なら、タイムアウトしていないと判断し、Ｓ５１６の処理に進む。ＢＣＰＵ３２０は、例えば、タイマ３２９の経過時間が設定された閾値（例えば、５００ミリ秒）を超えているなら、タイムアウトしていると判断し、Ｓ５１５の処理に進む。この設定された閾値の情報は、例えば、レジスタＢ３２４に記憶される。
Ｓ５１９において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰ信号テストの結果として、正常であることが確認されたことを示す情報（例えば、ＯＫを示す情報等）を、レジスタＢ３２４等に記憶する。ＢＣＰＵ３２０は、Ｓ５１７でＧｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドを受けている場合、Ｓ４２８と同様に、ＤＥＶＳＬＰ信号テストの結果である正常であることが確認されたことを示す情報をＧｅｔ‐ＦＣＴ‐Ｓｔａｔｕｓコマンドの送信元に送信する。
【００５３】
ＢＣＰＵ３２０は、ストレージ装置１１３、１１４との間で、ＤＥＶＳＬＰ信号テストを行う。即ち、ＢＣＰＵ３２０は、ストレージ装置１１３、１１４との間で、インターフェース２１６、２１７を介して、伝達されるＤＥＶＳＬＰ信号の値を変化させて、ＤＥＶＳＬＰ信号の伝達が正常に行われるか否かを確認するテストを行う。それにより、ＢＣＰＵ３２０は、ストレージ装置１１３、１１４又はインターフェース２１６、２１７に異常が発生しているか否かを確認する。
また、ストレージ装置の中には、ＤＥＶＳＬＰ信号の受信機能がないものがある。ＢＣＰＵ３２０は、そのようなストレージ装置に対して、以下のような処理を行ってもよい。即ち、ＢＣＰＵ３２０は、ストレージ装置にＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドを発行し、応答として返ってきたデバイスの特定情報を取得する。そして、ＢＣＰＵ３２０は、予め、ＳＲＡＭ３２３、レジスタＢ３２４等に記憶されたＤＥＶＳＬＰ信号の受信機能を有さないデバイスの特定情報の一覧に基づいて、取得した特定情報に対応するデバイスがＤＥＶＳＬＰ信号の受信機能を有するか否かを判定する。そして、ＢＣＰＵ３２０は、取得した特定情報に対応するデバイスがＤＥＶＳＬＰ信号の受信機能を有さないと判定した場合、そのストレージ装置に対するＤＥＶＳＬＰ信号テストをスキップすることとしてもよい。
【００５４】
図１４は、ＤＥＶＳＬＰ信号テストの際のＳＡＴＡブリッジ制御部１１２の処理の一例を示すフローチャートである。図１４を用いてＤＥＶＳＬＰ信号テストの際のＳＡＴＡブリッジ制御部１１２の動作をステップ毎に説明する。図１４の処理では、ＳＡＴＡブリッジ制御部１１２と、ストレージ装置１１３、１１４との間でインターフェース２１５、２１５を介して伝達されるＤＥＶＳＬＰ信号をテストが行われる。ＢＣＰＵ３２０は、ストレージ装置１１３、１１４それぞれに対して、図１４の処理を実行する。
図１４の処理において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰに対応するか否か、又は、ストレージ装置が接続されたか否かに応じて、ＤＥＶＳＬＰテストの処理を切り替える。ＨＤＤには、磁気ディスク部の寿命を縮める可能性があるため、ＤＥＶＳＬＰに対応していないものがある。また、大多数のＳＳＤは、ＤＥＶＳＬＰに対応する。
Ｓ６００において、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４にＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドを発行する。Ｓ６００の処理で発行するＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドは、図８のＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンド７１４と同様である。
【００５５】
Ｓ６０１において、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４からのＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドに対する応答に応じて、処理を分岐する。ＢＣＰＵ３２０は、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドに対する応答として、ストレージ装置１１３又は１１４の型番（Ｍｏｄｅｌ  Ｎｕｍｂｅｒ）を取得する。そして、ＢＣＰＵ３２０は、取得した型番と、非図示の型番リストと比較して、取得した型番に対応するストレージ装置がＨＤＤかＳＳＤかを判断する。非図示の型番リストは、ストレージ装置１１３又は１１４、Ｆｌａｓｈメモリ３２２、ＳＲＡＭ３２３等に予め記憶される。ＢＣＰＵ３２０は、取得した型番に対応するストレージ装置をＨＤＤと判断した場合、Ｓ６０２の処理に進む。ＢＣＰＵ３２０は、取得した型番に対応するストレージ装置をＳＳＤと判断した場合、Ｓ６１０の処理に進む。ＢＣＰＵ３２０は、取得した型番に対応するストレージ装置を型番リストに載っていないストレージ装置と判断した場合や型番を取得できなかった場合、エラーと判断し、Ｓ６３１の処理に進む。
Ｓ６０２は、ＢＣＰＵ３２０がＳ６０１で取得した型番に対応するストレージ装置をＨＤＤと判断した場合に進むステップである。
Ｓ６０３において、ＢＣＰＵ３２０は、Ｓ６００で発行したＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドに対する応答として取得した型番に対応するストレージ装置がＤＥＶＳＬＰに対応するか否かを判断して、処理を分岐する。ＢＣＰＵ３２０は、例えば、ＤＥＶＳＬＰに対応するＨＤＤの型番リストに基づいて、取得した型番に対応するストレージ装置が、ＤＥＶＳＬＰに対応するか否かを判断する。ＤＥＶＳＬＰに対応するＨＤＤの型番リストは、ストレージ装置１１３又は１１４、Ｆｌａｓｈメモリ３２２、ＳＲＡＭ３２３等に予め記憶される。ＢＣＰＵ３２０は、取得した型番に対応するストレージ装置がＤＥＶＳＬＰに対応すると判断した場合、Ｓ６０４の処理に進む。ＢＣＰＵ３２０は、取得した型番に対応するストレージ装置がＤＥＶＳＬＰに対応しないと判断した場合、Ｓ６０６の処理に進む。
【００５６】
Ｓ６０４において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰ動作の間隔（ＬｏとＨｉとの信号の切り替えの間隔）を設定された値に決定する。この設定された値が示す期間は、Ｓ６１１で後述する設定された値が示す期間よりも長い期間である。
Ｓ６０５において、ＢＣＰＵ３２０は、タイムアウトまでの期間を設定された値に決定する。この設定された値が示す期間は、Ｓ６１２で後述する設定された値が示す期間よりも長い期間である。
Ｓ６０６において、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４に対するＤＥＶＳＬＰ信号テストをスキップする。そして、ＢＣＰＵ３２０は、レジスタＢ３２４にテスト結果ＮＧを示す情報を記憶する。また、ＢＣＰＵ３２０は、Ｇｅｔ−ＦＣＴ−Ｓｔａｔｕｓコマンドを受けたら、コマンドの発行元に対して、ＤＥＶＳＬＰ信号テストがＳＫＩＰされたことを示す情報を応答する。
【００５７】
Ｓ６１０は、ＢＣＰＵ３２０がＳ６０１で取得した型番に対応するストレージ装置をＳＳＤと判断した場合に進むステップである。
Ｓ６１１において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰ動作の間隔（ＬｏとＨｉとの信号の切り替えの間隔）を設定された値に決定する。この設定された値が示す期間は、Ｓ６０４で説明した設定された値が示す期間よりも短い期間である。
Ｓ６１２において、ＢＣＰＵ３２０は、タイムアウトまでの期間を設定された値に決定する。この設定された値が示す期間は、Ｓ６０５で説明した設定された値が示す期間よりも短い期間である。
ＳＳＤは、ＨＤＤに比べて、比較的早く、ＤＥＶＳＬＰに移行可能である。そのため、ＢＣＰＵ３２０は、Ｓ６１１、Ｓ６１２において、Ｓ６０４、Ｓ６０５の場合よりも、短い期間を示す値を決定する。
【００５８】
Ｓ６１３において、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４に対して、ＰＭＲＥＱ＿Ｓコマンドを発行する。ＢＣＰＵ３２０は、ＤＥＶＳＬＰに移行する準備のため、ストレージ装置１１３又は１１４がＰＭＲＥＱ＿Ｓコマンドに対して了承を示すコマンドであるＰＭＡＣＫを応答するまで、ＰＭＲＥＱ＿Ｓコマンドを発行し続ける。これにより、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４をＳＡＴＡ規格のＳｌｕｍｂｅｒ電力制御ステートに移行させる。ストレージ装置１１３又は１１４がＳｌｕｍｂｅｒステートに移行すると、ストレージ装置１１３又は１１４のＳＡＴＡのＰＨＹ（物理層）の電源が切れる。
Ｓ６１４において、ＢＣＰＵ３２０は、インターフェース２１６又は２１７を介して伝達されるＤＥＶＳＬＰ信号をＨｉにすることで、ストレージ装置１１３又は１１４をＤｅｖＳｌｅｅｐ電力制御ステートに移行させる。
Ｓ６１５において、ＢＣＰＵ３２０は、設定された時間、待機することで、Ｓ６０４又はＳ６１１で決定した値が示す期間（ＤＥＶＳＬＰ間隔）を待機する。ＳＳＤは、ＤｅｖＳｌｅｅｐ電力制御ステートへの移行が、ＨＤＤよりも速いので、Ｓ６０４で決定された値が示す期間よりもＳ６１１で決定された値が示す期間の方が短い。
【００５９】
Ｓ６１６において、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４に対して、コマンドを発行するステップである。ＢＣＰＵ３２０は、例えば、ストレージ装置１１３又は１１４に対して、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドを発行する。
Ｓ６１７において、ＢＣＰＵ３２０は、Ｓ６１６で発行したコマンドの応答に応じて、処理を分岐する。ＢＣＰＵ３２０は、Ｓ６１６で発行したコマンドに対して、ストレージ装置１１３又は１１４から応答があれば、以下のような処理を行う。即ち、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４がＤｅｖＳｌｅｅｐ電力制御ステートへ移行していないと判断し、Ｓ６２２の処理に進む。また、ＢＣＰＵ３２０は、Ｓ６１６で発行したコマンドに対して、ストレージ装置１１３又は１１４から応答がなければ、以下のような処理を行う。即ち、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４がＤｅｖＳｌｅｅｐ電力制御ステートへ移行していると判断し、Ｓ６１８の処理に進む。
Ｓ６１８において、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４を、ＤｅｖＳｌｅｅｐ電力制御ステートから通常電力制御ステートに復帰させる。ＢＣＰＵ３２０は、インターフェース２１６又は２１７を介して伝達されるＤＥＶＳＬＰ信号をＬｏにして、ストレージ装置１１３又は１１４のＰＨＹの電源を入れる。次に、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４との間で、ＯＯＢ（Ｏｕｔ  ｏｆ  Ｂａｎｄ）データを送受信し、ストレージ装置１１３又は１１４を通常電力制御ステートに復帰させる。
【００６０】
Ｓ６１９において、ＢＣＰＵ３２０は、ストレージ装置１１３又は１１４に対して、コマンドを発行する。ＢＣＰＵ３２０は、例えば、ストレージ装置１１３又は１１４に対して、ＩｄｅｎｔｉｆｙＤｅｖｉｃｅコマンドを発行する。
Ｓ６２０において、ＢＣＰＵ３２０は、Ｓ６１９で発行したコマンドに対する応答に応じて、処理を分岐する。ＢＣＰＵ３２０は、応答がなければ、ストレージ装置１１３又は１１４が通常電力制御ステートに復帰しておらず、ＤｅｖＳｌｅｅｐ電力制御ステートのままであると判断し、Ｓ６２２の処理に進む。ＢＣＰＵ３２０は、応答があれば、ストレージ装置１１３又は１１４が通常電力制御ステートに復帰できたと判断し、Ｓ６２１の処理に進む。
Ｓ６２１において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰ信号テストの結果がＯＫであるとして、ＤＥＶＳＬＰ信号テストの結果がＯＫであることを示す情報をレジスタＢ３２４等に記憶する。ＢＣＰＵ３２０は、Ｇｅｔ−ＦＣＴ−Ｓｔａｔｕｓコマンドを受けたら、ＤＥＶＳＬＰ信号テストの結果がＯＫであることを示す情報を応答する。
Ｓ６２２において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰ信号テストの結果がＮＧであるとして、ＤＥＶＳＬＰ信号テストの結果がＮＧであることを示す情報をレジスタＢ３２４等に記憶する。ＢＣＰＵ３２０は、Ｇｅｔ−ＦＣＴ−Ｓｔａｔｕｓコマンドを受けたら、ＤＥＶＳＬＰ信号テストの結果がＮＧであることを示す情報を応答する。
【００６１】
Ｓ６３１は、ＢＣＰＵ３２０がＳ６０１で取得した型番が型番リストになかった場合やＳ６０１で型番を取得できなかった場合に進むステップである。
Ｓ６３２において、ＢＣＰＵ３２０は、ＤＥＶＳＬＰ信号テストの結果をＮＧであるとして、ＤＥＶＳＬＰ信号テストの結果がＮＧであることを示す情報をレジスタＢ３２４等に記憶する。ＢＣＰＵ３２０は、Ｇｅｔ−ＦＣＴ−Ｓｔａｔｕｓコマンドを受けたら、ＤＥＶＳＬＰ信号テストの結果がＮＧであることを示す情報を応答する。
ＢＣＰＵ３２０は、Ｓ６０６、Ｓ６２１、Ｓ６２２、Ｓ６３２で、ＤＥＶＳＬＰ信号テストの結果を示す情報を応答する際、図８で説明したように拡張ＡＴＡコマンドを介して応答してもよい。また、ＢＣＰＵ３２０は、図７で説明したようにレジスタＢ３２４を介して、ＤＥＶＳＬＰ信号テストの結果を通知先に通知してもよい。
【００６２】
以上、本実施形態では、メインコントローラ１００は、ストレージ装置１１３、１１４とカスケード接続されたＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２、に対して、異常を検出するためのテストの実行を指示することとした。ＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２は、ＳＡＴＡ差動信号テストやＤＥＶＳＬＰ信号テスト等の設定されたテストを実行する。そして、メインコントローラ１００は、ＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２から、テストの実行結果を取得する。これにより、メインコントローラ１００は、異常が発生している箇所を把握することができる。
本実施形態では、ＤＥＶＳＬＰ信号テストは、デバイス間で伝達されるＤＥＶＳＬＰ信号を一旦、Ｈｉにし、その後、ＤＥＶＳＬＰ信号をＬｏにすることにより行われるテストであるとした。しかし、ＤＥＶＳＬＰ信号テストは、デバイス間で伝達されるＤＥＶＳＬＰ信号を少なくとも１回以上、変化させるテストであれば、他のテストでもよい。
本実施形態では、メインコントローラ１００は、ＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２から、テストの実行結果を取得することとした。しかし、メインＣＰＵ１０１は、取得したテストの実行結果に基づいて、異常が発生している箇所を特定することとしてもよい。例えば、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２とが、ＦＣＴモードにおいて、ＳＡＴＡ差動信号テストを実行した場合、メインＣＰＵ１０１は、ＳＡＴＡ差動信号テストの結果を取得する。そして、メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１から取得したテストの結果が、異常が検出されたことを示す結果である場合、Ｈ‐Ｈｏｓｔ‐ＩＦ２０６又はＳＡＴＡブリッジ制御部１１２に異常が発生していることを特定する。また、メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１から取得したテストの結果が、異常がないことを示し、ＳＡＴＡブリッジ制御部１１２から取得したテストの結果が、ストレージ装置１１３について、異常があることを示す場合、以下の処理を行う。即ち、メインＣＰＵ１０１は、Ｂ‐Ｈｏｓｔ１‐ＩＦ２０７又はストレージ装置１１３に異常が発生していることを特定する。
また、メインＣＰＵ１０１は、ストレージ装置とカスケード接続されているデバイスそれぞれから取得したテストの結果の何れかが異常があることを示す結果である場合、以下のような処理を行うこととしてもよい。即ち、メインＣＰＵ１０１は、ストレージ装置とカスケード接続されているデバイスが設置されているメインボードに異常が発生していることを特定することとしてもよい。
このような処理により、メインコントローラ１００は、異常が発生している箇所を特定することができる。また、メインコントローラ１００は、特定した異常が発生している箇所を示す情報を、表示装置に表示したり、ストレージ装置１１３、１１４等に記憶したりして、出力してもよい。
本実施形態では、メインＣＰＵ１０１は、ストレージ装置１１３、１１４が末端となるようにカスケード接続されたＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との２つのデバイスに対して、ＦＣＴモードへの移行を指示した。しかし、メインＣＰＵ１０１は、ストレージ装置１１３、１１４が末端となるようにカスケード接続された１つのデバイスに対して、ＦＣＴモードへの移行を指示して、そのデバイスからテスト結果を取得することとしてもよい。また、メインＣＰＵ１０１は、ストレージ装置１１３、１１４が末端となるようにカスケード接続された３つ以上のデバイスに対して、ＦＣＴモードへの移行を指示して、それらのデバイスからテスト結果を取得することとしてもよい。
【００６３】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００６４】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
例えば、上述したメインコントローラ１００の機能構成の一部又は全てをハードウェアとしてメインコントローラ１００に実装してもよい。
【符号の説明】
【００６５】
１００  メインコントローラ
１１１  ＳＡＴＡホスト制御部
１１２  ＳＡＴＡブリッジ制御部
【図１】
2018055472.tif 000003
【図２】
2018055472.tif 000004
【図３】
2018055472.tif 000005
【図４】
2018055472.tif 000006
【図５】
2018055472.tif 000007
【図６】
2018055472.tif 000008
【図７】
2018055472.tif 000009
【図８】
2018055472.tif 000010
【図９】
2018055472.tif 000011
【図１０】
2018055472.tif 000012
【図１１】
2018055472.tif 000013
【図１２】
2018055472.tif 000014
【図１３】
2018055472.tif 000015
【図１４】
2018055472.tif 000016