(57)【要約】      （修正有）【課題】省電力状態からの復帰に伴うＨＤＤの寿命消費を回避する情報処理装置を提供する。【解決手段】ＳＡＴＡ規格に準拠したインタフェースを有する第１制御部と、第１制御部と記憶装置との間に介在しＳＡＴＡ規格に準拠したインタフェースを有する第２制御部と、情報処理装置の電力状態に応じて第１、第２制御部、記憶装置の省電力状態を設定する主制御部と、第２制御部により制御され、少なくとも主制御部、第１、第２制御部、記憶装置への電源供給を制御する電源制御部とを有する情報処理装置であって、第１制御部は、主制御部からの移行要求に応じて省電力状態に移行し、第２制御部は第１制御部が移行した省電力状態に応じて省電力状態に移行し、第１制御部は主制御部からの割り込みに応じて省電力状態からの復帰処理を開始し、第２制御部が記憶装置の電源制御を実施中かどうかに基づいて記憶装置へのアクセスを伴う前処理を実行するかどうか決定する。【選択図】図１６
2019127017.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格に準拠したインタフェースを有する第１制御手段と、
前記第１制御手段と記憶装置との間に介在し前記ＳＡＴＡ規格に準拠したインタフェースを有する第２制御手段と、
前記情報処理装置が取り得る電力状態に対応づけて前記第１及び第２制御手段及び前記記憶装置の省電力状態を設定する主制御手段と、
前記第２制御手段により制御され、少なくとも前記主制御手段、前記第１及び第２制御手段、及び前記記憶装置への電源供給を制御する電源制御部と、を有し、
前記第１制御手段は、前記主制御手段からの移行要求に応じて前記設定に従って省電力状態に移行し、
前記第２制御手段は、前記第１制御手段が移行した前記省電力状態に応じて、前記設定に従って省電力状態に移行し、
前記第１制御手段は前記主制御手段からの割り込みに応じて前記省電力状態からの復帰処理を開始し、前記第２制御手段が前記記憶装置の電源制御を実施中かどうかに基づいて、前記記憶装置へのアクセスを伴う前処理を実行するかどうか決定することを特徴とする情報処理装置。
【請求項２】
前記情報処理装置が取り得る電力状態は、少なくとも、直ちに起動できる第１の状態、スリープ状態である第２の状態、及び前記第２の状態よりも更に消費電力を削減した第３の状態を含み、前記設定は、前記第１〜第３の状態のそれぞれに対応して前記ＳＡＴＡ規格で定義された前記第１及び第２制御部及び前記記憶装置の省電力状態を設定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶装置の省電力状態の設定は、前記記憶装置への電源供給の停止を含むことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第１及び第２制御手段及び前記記憶装置は、前記第３の状態で全て電源供給が停止された状態であることを特徴とする請求項２又は３に記載の情報処理装置。
【請求項５】
前記第１制御手段は、前記第１の状態〜前記第３の状態のいずれかに対応する省電力状態から復帰する際、前記第２制御手段が前記記憶装置の電源制御を実施中でないときは前記前処理を実行しないことを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記第１制御手段は、前記第３の状態に対応する省電力状態から復帰する際、前記第２制御手段が前記記憶装置の電源制御を実施中でなくても、前記記憶装置がリビルド処理中であれば、前記前処理を実行することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記第２制御手段は、前記第１の状態、或いは前記第２の状態に対応する省電力状態から復帰する際、前記記憶装置への電源供給が停止されているときは、前記記憶装置への電源供給の開始を含む復帰処理を実行することを特徴とする請求項２乃至５のいずれか１項に記載の情報処理装置。
【請求項８】
前記第２制御手段は、前記第３の状態に対応する省電力状態から復帰する際、前記電源制御部が前記記憶装置の電源制御を実施中でない場合、前記電源制御部に対して前記記憶装置への電源供給を開始するように要求することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記主制御手段は、前記第２制御手段に対して、前記第１〜第３の状態のそれぞれに対応して前記ＳＡＴＡ規格で定義された前記第１及び第２制御部及び前記記憶装置の省電力状態に移行させる条件を設定することを特徴とする請求項２乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記第２制御手段が前記記憶装置の電源制御を実施中かどうかは、前記電源制御手段から前記記憶装置への電力供給状態を示すモニタ信号と、前記第２制御手段が前記電源制御手段に電源制御を要求する要求信号に基づいて判定されることを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記前処理は、少なくとも前記記憶装置のパスワードロックの解除処理を含むことを特徴とする請求項１乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格に準拠したインタフェースを有する第１制御部と、前記第１制御部と記憶装置との間に介在し前記ＳＡＴＡ規格に準拠したインタフェースを有する第２制御部と、情報処理装置が取り得る電力状態に対応づけて前記第１及び第２制御部及び前記記憶装置の省電力状態を設定する主制御部と、前記第２制御部により制御され、少なくとも前記主制御部、前記第１及び第２制御部、及び前記記憶装置への電源供給を制御する電源制御部とを有する情報処理装置の制御方法であって、
前記主制御部からの移行要求に応じて前記設定に従って前記第１制御部を省電力状態に移行させ、
前記第１制御部が移行した前記省電力状態に応じて、前記第２制御部を前記設定に従って省電力状態に移行させ、
前記主制御部からの割り込みに応じて、前記第１制御部に前記省電力状態からの復帰処理を開始させ、前記第２制御部が前記記憶装置の電源制御を実施中かどうかに基づいて、前記第１制御部に前記記憶装置へのアクセスを伴う前処理を実行させるかどうか決定することを特徴とする制御方法。
【請求項１３】
コンピュータに、請求項１２に記載の制御方法の各工程を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置とその制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、地球温暖化等の環境問題に対処するために、省電力に関する各国の規制は年々厳しくなってきている。印刷装置においても例外ではなく、各種エネルギー関連規格への積極的な取り組みが求められている。例えば、印刷装置に搭載されるハードディスク装置（以下、ＨＤＤ）においても、印刷装置の電力状態の如何に拘らず、印刷装置が使用されていない場合には制御部も含めて省電力状態にし、ＨＤＤの電源をオフにするのが望ましいとされている。
【０００３】
一方で、ＨＤＤのセキュリティを担保する簡易的な方法として、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格で策定されているＨＤＤパスワードロックが、組み込み機器で標準的に利用されている。これは一度、ＨＤＤの電源をオフするとロックが掛り、次回電源オンした際に正しいパスワードをＨＤＤに設定しないと、ＨＤＤのユーザ領域へアクセスできないというものである。然しながら、毎回、ＨＤＤの電源オンする毎にパスワードを設定する必要があるため、利便性の面では煩わしさが伴う。その煩雑さを軽減する方法として、例えば特許文献１には、ＨＤＤに格納されているデータの重要度に応じて、省電力からの復帰時にロックの解除時間を短縮する方法が提案されている。これによると、ＨＤＤに格納されているデータの機密性が低いと判断した場合は直ちにロックを解除し、機密性が高いと判断した場合には利用者の照合を行ってからロックが解除される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１７８８７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら上記従来技術では、印刷装置本体がスタンバイ状態であってもＨＤＤを使用しない場合はＨＤＤの電源をオフし、ＳＴＡ制御系も省電力状態に移行させて待機電力の削減を目指している。従って、ＳＡＴＡ制御系を省電力状態に移行させた後は、必要となるまで省電力状態から復帰させないように制御する必要がある。特に、ＨＤＤでは電源オフ／オンの回数の制限があるため、省電力状態から復帰させる回数が多くなるとＨＤＤの寿命を消費してしまう危険性もある。
【０００６】
本発明の目的は、上記従来技術の課題を解決することにある。
【０００７】
本発明の目的は、ＳＡＴＡ規格のインタフェースで接続された記憶装置に対する寿命を考慮しつつ、効率的に消費電力を削減できる技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
情報処理装置であって、
ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格に準拠したインタフェースを有する第１制御手段と、
前記第１制御手段と記憶装置との間に介在し前記ＳＡＴＡ規格に準拠したインタフェースを有する第２制御手段と、
前記情報処理装置が取り得る電力状態に対応づけて前記第１及び第２制御手段及び前記記憶装置の省電力状態を設定する主制御手段と、
前記第２制御手段により制御され、少なくとも前記主制御手段、前記第１及び第２制御手段、及び前記記憶装置への電源供給を制御する電源制御部と、を有し、
前記第１制御手段は、前記主制御手段からの移行要求に応じて前記設定に従って省電力状態に移行し、
前記第２制御手段は、前記第１制御手段が移行した前記省電力状態に応じて、前記設定に従って省電力状態に移行し、
前記第１制御手段は前記主制御手段からの割り込みに応じて前記省電力状態からの復帰処理を開始し、前記第２制御手段が前記記憶装置の電源制御を実施中かどうかに基づいて、前記記憶装置へのアクセスを伴う前処理を実行するかどうか決定することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ＳＡＴＡ規格のインタフェースで接続された記憶装置に対する寿命を考慮しつつ、効率的に消費電力を削減できるという効果がある。
【００１０】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１１】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】実施形態に係る印刷装置と、その印刷装置を含むシステム構成を説明する図。
【図２】ＳＡＴＡ制御系の構成を説明する図。
【図３】実施形態に係るＳＡＴＡブリッジ制御部と電源制御部との間でＨＤＤの電源制御を行う制御信号を、より詳しく説明する図。
【図４】実施形態に係る制御信号ＩＮ、ＯＵＴＡ及びＯＵＴＢのタイミングチャート。
【図５】実施形態に係るＳＡＴＡホスト制御部及びＳＡＴＡブリッジ制御部の内部構成例を説明するブロック図。
【図６】実施形態に係るメインコントローラの電力ステート（電力状態）を横軸に、ＳＡＴＡ系の省電力状態と省電力移行条件を縦軸に示す図。
【図７】図６で説明した省電力移行条件を予めＳＡＴＡブリッジ制御部に設定するための拡張コマンドを説明する図。
【図８】実施形態に係るＡＴＡコマンドの一例を説明する図。
【図９】実施形態に係るＳＡＴＡホスト制御部とＳＡＴＡブリッジ制御部の省電力制御の初期設定を説明するフローチャート。
【図１０】実施形態に係るＳＡＴＡホスト制御部が省電力に移行するときの処理を説明するフローチャート。
【図１１】実施形態に係るＳＡＴＡブリッジ制御部が省電力に移行するときの処理を説明するフローチャート。
【図１２】実施形態に係るＳＡＴＡホスト制御部がＰＳ０又はＰＳ１から復帰するときの処理を説明するフローチャート。
【図１３】実施形態に係るＳＡＴＡブリッジ制御部がＰＳ０又はＰＳ１から復帰するときの処理を説明するフローチャート。
【図１４】実施形態に係るＳＡＴＡブリッジ制御部がＰＳ２のＤｅｅｐ状態から復帰するときの処理を説明するフローチャート。
【図１５】ＧｅｔＳｔａｔｕｓで報告される状態の一例を説明する図。
【図１６】実施形態に係るＳＡＴＡホスト制御部がＰＳ２のＤｅｅｐ状態から復帰するときの処理を説明するフローチャート。
【図１７】実施形態に係るメインコントローラのメインＣＰＵが、省電力状態ＰＳ０のときにＳＡＴＡブリッジ制御部の内部状態をポーリングする処理を説明するフローチャート。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。尚、以下に説明する実施形態では、印刷装置を例に本発明に係る情報処理装置の実施形態を説明するが、この情報処理装置は印刷装置に限らず、例えばパーソナルコンピュータ（ＰＣ）や通信装置、携帯端末等のＨＤＤ／ＳＳＤを使用する機器に適用できる。
【００１３】
図１は、実施形態に係る印刷装置と、その印刷装置を含むシステム構成を説明する図である。
【００１４】
この印刷装置は、メインコントローラ（主制御部）１２０、スキャナ１０９、操作パネル１１６、印刷部（プリンタエンジン）１１８、及びＨＤＤ又はＳＳＤ（Solid State Drive）１１３，１１４を含んでいる。
【００１５】
メインＣＰＵ（中央処理演算器）１０１は、システム制御や各種演算処理を行う。メモリ制御部１０２は、各種メモリデバイスへの入出力制御やＤＭＡ（ダイレクトメモリアクセス）制御を行う。フラッシュメモリ１０３は、書き換え可能な不揮発性メモリであり、システム全体の制御プログラムや制御パラメータ等を格納している。ＤＲＡＭ（ダイナミック・ランダムアクセスメモリ）１０４は、ＤＤＲ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ）メモリに代表される揮発性の書き換え専用メモリである。ＤＲＡＭ１０４は、プログラムの展開領域、作業領域、印刷データの格納領域、各種テーブル情報の格納領域等の用途に用いられる。ここでメモリ制御部１０２と各種メモリデバイスとの関係は簡略化して表現したものであって、一般的には独立に制御される。ＬＡＮ−ＩＦ（ネットワークインタフェース）１０５は、印刷装置に接続されるローカル・エリア・ネットワーク（ＬＡＮ）１０６との入出力制御を行う。一般的にはＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）プロトコルに対応する。ＬＡＮ−ＩＦ１０５は、ネットワークケーブルを介して外部のコンピュータ１０７などのネットワーク対応機器と接続され、ネットワーク経由でのプリントを行うことができる。
【００１６】
リーダＩＦ（リーダインタフェース）１０８は、スキャナ１０９とメインコントローラ１２０とを接続し、その間の通信制御を行う。スキャナ１０９が原稿を読み取って得られた画像データを印刷部１１８で印刷することでコピー機能を実現できる。画像処理部１１０は、ＬＡＮ−ＩＦ１０５、リーダＩＦ１０８を介して取り込んだ画像データに対して各種画像処理を行う。
【００１７】
ＳＡＴＡホスト制御部１１１は、ＳＡＴＡ規格に準拠したインタフェースを有するデバイスとのデータの入出力制御を行う。ＳＡＴＡブリッジ制御部１１２は、上流側のＳＡＴＡホスト制御部１１１にデバイスとして接続され、下流側には複数のホストＩＦ２０７，２０８（図２）を有し、ＨＤＤ又はＳＳＤ（以下、単にＨＤＤ）１１３，１１４と接続される。ＳＡＴＡブリッジ制御部１１２には、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ Ｉｎｅｘｐｅｎｓｉｖｅ Ｄｉｓｋ）制御やデータ暗号化など付加価値としての機能が搭載されている。
【００１８】
実施形態では、上位側のＳＡＴＡホスト制御部１１１と下位側のＳＡＴＡブリッジ制御部１１２は、それぞれ独立したＡＳＩＣ（特定用途向け集積回路）としてメインコントローラ１２０に搭載されていることを前提として説明する。パネルＩＦ１１５は、タッチパネル機能を有する操作パネル１１６との通信制御を行う。ここでは図示しないがＵＩ（ユーザインターフェイス）として、操作パネル１１６の画面やボタン等を操作することにより、印刷装置の各種設定及び状態の確認ができる。ビデオ出力ＩＦ１１７は、印刷部１１８とのコマンド／ステータスの通信制御や印刷データの転送を行う。印刷部１１８は、ここでは図示しないが給紙系及び排紙系の機構を有し、主にビデオ出力ＩＦ１７からのコマンド情報に従ってシートに画像を印刷する。メインバス１１９はバスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。代表例としてＰＣＩｅ（ＰＣＩ Ｅｘｐｒｅｓｓ）やＡＳＩＣの内部バスなども含まれる。
【００１９】
図２は、ＳＡＴＡ制御系の構成を説明する図である。
【００２０】
メインＡＳＩＣ２０１は、ＳＡＴＡホスト制御部１１１を含むメインコントローラ１２０のシステム全体を制御する中心的なＡＳＩＣである。ＳＡＴＡホスト制御部１１１は、１個のＳＡＴＡ−ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）２０２をホストＩＦとして持つ。サブＡＳＩＣは、ＳＡＴＡホスト制御部１１１の下位側に接続されるＳＡＴＡブリッジ制御部１１２そのものであり、メインコントローラ１２０から独立したＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）として実装されている。
【００２１】
ＳＡＴＡブリッジ制御部１１２は、３個のＳＡＴＡ−ＩＰ２０３〜２０５を有し、デバイスであるＨＤＤ１１３とＳＡＴＡホスト制御部１１１との間に介在している。ブリッジ構成での上流側では、Ｈ−Ｈｏｓｔ−ＩＦ２０６を介して、ＳＡＴＡ−ＩＰ（Ｈｏｓｔ）２０２とＳＡＴＡ−ＩＰ（Ｄｅｖｉｃｅ）２０３とが接続されている。また下流側では、ＳＡＴＡ−ＩＰ（Ｈｏｓｔ１）２０４がＢ−Ｈｏｓｔ１−ＩＦ２０７を介してＨＤＤ１１３と、ＳＡＴＡ−ＩＰ（Ｈｏｓｔ２）２０５がＢ−Ｈｏｓｔ２−ＩＦ２０８を介してＨＤＤ１１４と接続されている。ここで、ＳＡＴＡ−ＩＰ２０２〜２０５は、ＳＡＴＡリンク層及び物理層から構成されている。そして、各種ＳＡＴＡレジスタの設定に応じてＳＡＴＡ−ＩＦ２０６〜２０８で接続されるＳＡＴＡデバイスに対して物理的な（電気信号としての）ＳＡＴＡ規格のコマンドの発行やステータスの受信を行う。
【００２２】
またＳＡＴＡブリッジ制御部１１２は、電源制御部２０９と制御信号２１４で接続されている。電源制御部２０９は、メインコントローラ１２０を実装しているメインボード上に搭載されている。電源制御部２０９は、メインコントローラ１２０に含まれる各機能モジュールやそれに接続される各種装置への電力供給の有無を決定し、印刷装置全体としての電源制御を担っている。電源制御部２０９から出ている一点鎖線２１０〜２１３は、ＳＡＴＡブリッジ部の各構成要素に電源を供給している電源ラインを示している。
【００２３】
尚、実施形態では、ＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２との間のＩＦを１個、ＳＡＴＡブリッジ制御部１１２とＨＤＤ１１３，１１４との間のＩＦを２個として説明するが、これらは任意個数の接続形態であっても構わない。
【００２４】
図３は、実施形態に係るＳＡＴＡブリッジ制御部１１２と電源制御部２０９との間でＨＤＤの電源制御を行う制御信号２１４を、より詳しく説明する図である。
【００２５】
制御信号ＩＮ３０５は、ＳＡＴＡブリッジ制御部１１２への入力信号、ＯＵＴＡ３０１及びＯＵＴＢ３０２は、ＳＡＴＡブリッジ制御部１１２から電源制御部２０９に出力する出力信号である。また電源制御部２０９から、ＨＤＤ１１３，１１４へ電力を供給する電源回路３０４に対して、電力供給を制御するＥＮ信号３０３が出力されている。電源回路３０４の例として、ここでは図示しないがＤＣ−ＤＣ電源（直流入力−直流出力電源）やＦＥＴ（電界効果トランジスタ）などが挙げられる。ＥＮ信号３０３はＩＮ３０５と接続されていて、ＩＮ３０５は、ＨＤＤ１１３，１１４への電力供給状態、即ち、電源オフかオンかの判定用モニタ信号としてＳＡＴＡブリッジ制御部１１２に入力されている。ＯＵＴＡ３０１及びＯＵＴＢ３０２は、ＨＤＤ１１３，１１４の電源をオフ／オンするように電源制御部２０９に要求する要求信号である。
【００２６】
図４は、実施形態に係る制御信号ＩＮ３０５、ＯＵＴＡ３０１及びＯＵＴＢ３０２のタイミングチャートである。
【００２７】
ここでは全ての信号は、Ｔ１の開始点でロウレベル（Ｌｏｗ）開始から処理されることを前提としている。ＩＮ３０５は、ＨＤＤ１１３，１１４の電源のオフ又はオン状態を示すモニタ信号であり、起動後、Ｔ２の時点でＨＤＤ１１３，１１４の電源がオンされたことを表している。ＯＵＴＡ３０１は、電源制御部２０９に対してＨＤＤ１１３，１１４の電源のオフ又はオンを要求する有効期間を示す信号である。この信号３０１がハイレベルの区間、即ち、Ｔ３〜Ｔ５の区間が電源制御部２０９に対してＨＤＤ１１３，１１４の電源のオフ又はオンを要求する期間である。ＯＵＴＢ３０２は、ＨＤＤ１１３，１１４の電源に対するオン又はオフを要求する信号である。ＯＵＴＢ３０２がハイレベルのときはオン要求、ロウレベルのときはオフ要求を示している。図４の例では、開始点Ｔ３では、ＯＵＴＡがハイレベル、ＯＵＴＢがロウレベルなのでＨＤＤ１１３，１１４は電源オフされ、その期間はＯＵＴＢがハイレベルとなるＴ４までの区間である。区間Ｔ３〜Ｔ４では、モニタ信号であるＩＮがロウレベルとなっていて、ＨＤＤ１１３，１１４の電源がオフされているのが分かる。同様にＯＵＴＡがハイレベルの有効期間にＯＵＴＢ３０２をハイレベル／ロウレベルに変化させた結果に連動して、ＩＮ３０５も同様にハイレベル／ロウレベルに変化しているのが分かる。
【００２８】
尚、図３及び図４を参照して説明した例では、モニタ信号であるＩＮ３０５及び電源オフ／オン要求信号であるＯＵＴＢ３０２は１対１の関係であったが本発明はこれに限定されない。例えば、ＳＡＴＡブリッジ制御部１１２に接続される複数のストレージデバイスのそれぞれに対してモニタ信号（ＥＮ信号）：ＩＮｎと、電源オフ／オン要求信号：ＯＵＴＢｎ（ｎ≧２）として、番号ｎに対応させて各デバイスを制御しても構わない。
【００２９】
図５は、実施形態に係るＳＡＴＡホスト制御部１１１及びＳＡＴＡブリッジ制御部１１２の内部構成例を説明するブロック図である。尚、図５において、前述の図１、図２と共通する部分は同じ参照番号で示している。
【００３０】
まずＳＡＴＡホスト制御部１１１の構成を説明する。ＨＣＰＵ５０１は、ＳＡＴＡコマンド発行処理、送受信データの転送処理及びステータス受信処理等ＳＡＴＡコントローラとしての全般的な制御を行う。メモリ制御部５０２は、フラッシュメモリ５０３やＳＲＡＭ（スタティック・ランダムアクセスメモリ）５０４との入出力制御を行う。フラッシュメモリ５０３には、ブートプログラムやＳＡＴＡコントローラとしての制御プログラムが格納されている。ＳＲＡＭ５０４は、ＨＣＰＵ５０１の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファなどに使用される。ここでＳＲＡＭ５０４は、１ポートＲＡＭ、２ポートＲＡＭ、ＦＩＦＯ（ファーストインファーストアウト）メモリ等の制御を簡略化して記載しているのであって、それぞれ独立に制御され複数個所にＳＲＡＭが存在しても構わない。割り込み制御部５０５は、ＨＣＰＵ５０１に対する割り込み信号の入力や出力処理、割り込み信号に対するマスク処理などを行う。レジスタＨ５０６は、省電力関連の制御パラメータなどを一時的に記憶するためのレジスタである。ＤＭＡＣ５０７は、ここでは図示しないがＨＣＰＵ５０１によって所定のレジスタに転送元及び転送先の先頭アドレス及びサイズが設定され、起動が掛けられると所定のメモリ間でＤＭＡデータ転送を行う。Ｈバス５０８はバスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。バスブリッジ回路５０９は、メインバス１１９とＨバス５０８との間のバスプロトコルを相互に変換するバスブリッジ回路である。
【００３１】
次にＳＡＴＡブリッジ制御部１１２の構成を説明する。ＢＣＰＵ５１０は、ＳＡＴＡコマンド発行処理、送受信データの転送処理及びステータス受信処理等、ＳＡＴＡコントローラとしての全般的な制御を行う。メモリ制御部５１１は、フラッシュメモリ５１２やＳＲＡＭ５１３との入出力制御を行う。フラッシュメモリ５１２には、ブートプログラムやＳＡＴＡコントローラとしての制御プログラムが格納されている。ＳＲＡＭ５１３はＢＣＰＵ５１０の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファなどに使用される。ここでＳＲＡＭ５１３は、１ポートＲＡＭ、２ポートＲＡＭ、ＦＩＦＯメモリ等の制御を簡略化して記載しているのであって、それぞれ独立に制御され複数個所にＳＲＡＭが存在しても構わない。レジスタＢ５１４は、省電力関連の制御パラメータなどを一時的に記憶するためのレジスタである。電源ＩＦ５１５は、電源制御部２０９と制御信号２１４で接続され、ＨＤＤ１１３，１１４への電源オフ／オン要求信号の制御を行う。その他５１６は、ＳＡＴＡブリッジ制御部１１２としての他の機能ブロック、例えばＲＡＩＤ処理やデータ暗号化処理等をまとめて示したものであるが、本発明の本質とは関係ないので説明を省略する。Ｂバス５１７はバスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。また、図２で説明したようにＳＡＴＡホスト制御部１１１のＳＡＴＡ−ＩＰ（Ｈｏｓｔ）２０２とＳＡＴＡブリッジ制御部１１２のＳＡＴＡ−ＩＰ（Ｄｅｖｉｃｅ）２０３とは、Ｈ−Ｈｏｓｔ−ＩＦ２０６で接続されている。更にＳＡＴＡ−ＩＰ（Ｈｏｓｔ１／２）２０４及び２０５はそれぞれ、Ｂ−Ｈｏｓｔ１／２−ＩＦ２０７，２０８を介して、ＨＤＤ１１３，１１４に接続されている。
【００３２】
図６は、実施形態に係るメインコントローラ１２０の電力ステート（電力状態）を横軸に、ＳＡＴＡ系の省電力状態と省電力移行条件を縦軸に示す図である。
【００３３】
第１行目は、印刷装置全体としての上位電力ステート６０１を示しており、消費電力が高い順にＳｔａｎｄｂｙモード６０２、Ｓｌｅｅｐモード６０３、Ｄｅｅｐモード６０４と定義する。Ｓｔａｎｄｂｙモード６０２は、印刷装置が直ちにジョブを受け付けて実行できるスタンバイ状態である。この状態では、メインコントローラ１２０、スキャナ１０９、操作パネル１１６、印刷部１１８及びＨＤＤ１１３，１１４は全て通電され、基本的にアイドル状態である。Ｓｌｅｅｐモード６０３及びＤｅｅｐモード６０４は、印刷装置が省電力状態であり、ジョブ実行をしていない期間の待機電力削減を目的とする。Ｓｌｅｅｐモード６０３では、Ｓｔａｎｄｂｙモード６０２で説明した部位には通電されているが、基本的に省電力であるスリープ状態である。Ｄｅｅｐモード６０４は、大半部分の電力供給をカットした状態で、メモリ制御部１０２及びＤＲＡＭ１０４、ＬＡＮ−ＩＦ１０５、パネルＩＦ１１５及び操作パネル１１６には通電されている。このＤｅｅｐモード６０４は、Ｓｌｅｅｐモード６０３での各部省電力状態よりも更に消費電力を削減した省電力状態に印刷装置をおき、それら以外は全て電源供給がオフされている状態である。ＳＡＴＡホスト制御部１１１、ＳＡＴＡブリッジ制御部１１２及び接続デバイスであるＨＤＤ１１３，１１４も、Ｄｅｅｐモード６０４では全て電源オフされた状態であることを前提としている。
【００３４】
更に次世代のＳＡＴＡ省電力制御に対応するために、上位電力ステート６０１に対応するＳＡＴＡ系省電力状態としてＰｏｗｅｒＳａｖｅ０（ＰＳ０）６０７、ＰｏｗｅｒＳａｖｅ１（ＰＳ１）６０８及びＰｏｗｅｒＳａｖｅ２（ＰＳ２）６０９を定義する。ＰＳ０（６０７）〜ＰＳ２（６０９）は、図６に示すように上位電力ステートに対応したものであり、電力削減効果としてはＰＳ０＜ＰＳ１＜ＰＳ２（電源オフ）の関係となる。また、そのトレードオフとして復帰時間は不等号が逆転する関係となる。即ち、ＰＳ２は復帰時間が最も長く、ＰＳ０は復帰時間が最も短くなる。
【００３５】
各ＳＡＴＡ系省電力状態におけるＨ−Ｈｏｓｔ−ＩＦ２０６の省電力移行条件を６１１〜６１３、Ｂ−Ｈｏｓｔ１／２−ＩＦ２０７及び２０８の省電力移行条件を６１５〜６１７、ＨＤＤ本体の省電力移行条件を６１９〜６２１として定義する。各項目６１１〜６１３，６１５〜６１７，６１９〜６２１の設定値で、「／」で区切られた内容は、その中のいずれか一つが設定されることを示している。但し、設定値の個数（即ち、取り得る状態数）は任意に追加しても構わない。
【００３６】
また、図６の省電力設定値としてのＨ−Ｈｏｓｔ−ＩＦ状態６１０、Ｂ−Ｈｏｓｔ−ＩＦ状態６１４、ＨＤＤ本体の状態６１８の対応個所を図２を参照して説明する。これらは、それぞれＨ−Ｈｏｓｔ−ＩＦ２０６（２０２及び２０３含む）、Ｂ−Ｈｏｓｔ１／２−ＩＦ２０７及び２０８（２０４及び２０５含む）、ＨＤＤ１１３及び１１４に対応する。そしてＰＳ０（６０７）〜ＰＳ２（６０９）の状態に遷移した場合、項目６１１〜６１３，６１５〜６１７，６１９〜６２１の設定値の状態に、各対応する部分がおかれることを意味する。
【００３７】
次に、省電力移行条件としてとり得る省電力状態について説明する。
【００３８】
ＡＩ：Ａｃｔｉｖｅ−Ｉｄｌｅ、ＬＰＩ：Ｌｏｗ−Ｐｏｗｅｒ−Ｉｄｌｅであり、アイドル状態におけるＳＡＴＡ−ＩＦと接続デバイス本体のＡＴＡ規格で定義されている電力状態を示す。既に説明したように、Ｐａｒｔｉａｌ／ＳｌｕｍｂｅｒはＳＡＴＡ−ＩＦとして、ＤｅｖＳｌｅｅｐはＳＡＴＡ−ＩＦ及びデバイス本体の両方の省電力状態をＳＡＴＡ規格で定義したものである。またＯｆｆＬｉｎｅは、ＳＡＴＡ−ＩＰとしての無効（停止）状態を示す。一般的にＳＡＴＡ−ＩＦの省電力として効果が高い順番に並べるとＯｆｆＬｉｎｅ＞ＤｅｖＳｌｅｅｐ＞Ｓｌｕｍｂｅｒ＞Ｐａｒｔｉａｌ＞ＬＰＩ＞ＡＩとなる。同様に、デバイス本体の省電力は、電源オフ＞ＤｅｖＳｌｅｅｐ＞ＬＰＩ＞ＡＩの順となる。
【００３９】
ここで、接続するデバイスの電源オフ指示の設定条件に、電源オフ−１と電源オフ−２を項目６１９及び６２０に設け、次の定義を与える。電源オフ−１は、次回復帰時にデバイス本体の電源オンを伴わない（省電力及び寿命優先）。また電源オフ−２は、次回復帰と同時にデバイス本体も電源オンする（利便性優先）。電源オフ−１及び電源オフ−２によって、特にＨＤＤの電源オフ／オン寿命を配慮した省電力制御が可能となる。図を参照して後述するが、これら省電力移行条件は、ＳＡＴＡホスト制御部１１１及びＳＡＴＡブリッジ制御部１１２の起動時に予め設定されることになる。
【００４０】
またＳＡＴＡホスト制御部１１１のＨＣＰＵシステム及びＳＡＴＡブリッジ制御部１１２のＢＣＰＵシステム自身の各省電力効果も一般的には復帰時間とのトレードオフとしてＰＳ０＜ＰＳ１＜ＰＳ２（電源オフ）の関係と同じとするのが最適解である。しかし、ＰＳ０≦ＰＳ１＜ＰＳ２の関係でも構わない。ＨＣＰＵ５０１及びＢＣＰＵ５１０自身の省電力の手法として、ここでは図示しないがクロックゲートや電源分離による部分的な電源供給カットなどの方法がある。また、Ｄｅｅｐモード６０４のＨＤＤに設定値はなく、復帰時の電源オン又はオフは、電源制御部２０９に依存する。ここでもＰＳ０（６０７）及びＰＳ１（６０８）の場合と同様に、ＤｅｅｐモードからＳｌｅｅｐモードに復帰する時にはＨＤＤの電源オンを伴わない電源オフ−１と、電源オンを伴う電源オフ−２の２つが含まれることを示す。
【００４１】
尚、図６で説明した例では、印刷装置全体の電力ステート数を３段階、それに対応するＳＡＴＡ系省電力状態を３段階としたが、電力ステート数やＳＡＴＡ系省電力状態数は任意であって構わない。更に、Ｂ−Ｈｏｓｔ１／２−ＩＦ２０７及び２０８の省電力移行条件を示す項目６１５〜６１７、ＨＤＤ本体の省電力移行条件を示す項目６１９〜６２１は、接続ポート単位で個別に設定してもよい。
【００４２】
図７は、図６で説明した省電力移行条件を予めＳＡＴＡブリッジ制御部１１２に設定するための拡張コマンドを説明する図である。
【００４３】
ＳＡＴＡ規格で定義された空コマンドであるベンダユニーク・コマンド（例えば、Ｆ０ｈ）に対して、図７の第１行目の左から示すように拡張コマンド名称７０１、ＣＭＤ（サブコマンド）番号７０２、転送タイプ７０３として省電力系拡張コマンドを独自に定義する。ここでＣＭＤ番号７０２は、ベンダユニーク・コマンド（例えば、Ｆ０ｈ）に対するＦｅａｔｕｒｅレジスタに設定されるサブコマンド番号を示す。またＳＡＴＡ規格では基本的な転送タイプとして、データを伴わないＮｏｎ−Ｄａｔａ（ＮＤ）転送、単発データ転送を実行するＰＩＯ−Ｉｎ（ＰＩ）又はＰＩＯ−Ｏｕｔ（ＰＯ）転送、連続データ転送を実行するＤＭＡ転送などの転送タイプが定義されている。図７の転送タイプ７０３は、ＣＭＤ番号７０２に対する転送タイプを定義している。例えば、ＳｅｔｕｐＰｏｗｅｒＣｏｎｆｉｇコマンド７０５は、ＣＭＤ番号「０１ｈ」、転送タイプ「ＰＯ」を含む。同様にＴｏＳｌｅｅｐコマンド７０９は、ＣＭＤ番号「０２ｈ」、転送タイプ「ＮＤ」を含み、ＴｏＤｅｅｐコマンド７１３は、ＣＭＤ番号「０３ｈ」、転送タイプ「ＮＤ」を含む。またＧｅｔＳｔａｔｕｓコマンド７１７は、ＣＭＤ番号「０４ｈ」、転送タイプ「ＰＩ」で定義されている。
【００４４】
ＳｅｔｕｐＰｏｗｅｒＣｏｎｆｉｇコマンド７０５は、ＳＡＴＡブリッジ制御部１１２に、Ｈ−Ｈｏｓｔ−ＩＦ２０６の省電力移行条件の項目６１１〜６１３、Ｂ−Ｈｏｓｔ１／２−ＩＦ２０７及び２０８の省電力移行条件の項目６１５〜６１７、ＨＤＤ本体の省電力移行条件の項目６１９〜６２１を設定するために用いられる。
【００４５】
ＴｏＳｌｅｅｐコマンド７０９は、上位電力ステートがＳｌｅｅｐモード６０３へ移行することをＳＡＴＡブリッジ制御部１１２に通知するコマンドである。同様にＴｏＤｅｅｐコマンド７１３は、上位電力ステートがＤｅｅｐモードに移行することをＳＡＴＡブリッジ制御部１１２に通知するコマンドである。ＧｅｔＳｔａｔｕｓコマンド７１７は、ＳＡＴＡブリッジ制御部１１２全般のステータス取得のための拡張コマンドである。直接的な省電力関連の拡張コマンドではないが、例えば省電力移行処理が完了したことを上位システムが取得する場合に用いられる。ＧｅｔＧＰＩＯＩｎｆｏコマンド７２１は、ＳＡＴＡブリッジ制御部１１２と電源制御部２０９との間の制御信号であるＩＮ、ＯＵＴＡ、ＯＵＴＢの制御ポートを含む、ＳＡＴＡブリッジ制御部１１２の保有する全ＧＰＩＯ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）の状態を取得するコマンドである。
【００４６】
尚、上記各拡張コマンドの内部定義については、本発明とは関係しないので省略する。以後、拡張コマンド以外のＡＴＡ規格で定義されたコマンドを区別して表現する場合には、ＡＴＡコマンドと呼ぶことにする。
【００４７】
図８は、実施形態に係るＡＴＡコマンドの一例を説明する図である。
【００４８】
ＣＭＤ番号８０２及び転送タイプ８０３はＡＴＡ規格での実番号を示す。ＩＤＥＮＴＩＦＹ  ＤＥＶＩＣＥコマンド８０５は、デバイスの各種パラメータを読み出すコマンドである。このコマンドにより、デバイスのシリアル番号・容量・セキュリティ状態（パスワードロック）などの情報を取得できる。ＳＥＣＵＲＩＴＹ  ＳＥＴ  ＰＡＳＳＷＯＲＤコマンド８０９は、対象デバイス（ＨＤＤ）にパスワードを設定するコマンドである。対象デバイスが電源オフされるとパスワードによるロック状態となり、次回起動時のユーザ領域へのアクセスは、このロックを解除を実施しないとできない。ＳＥＣＵＲＩＴＹ  ＵＮＬＯＣＫコマンド８１３は、対象デバイスに送付することにより、パスワードによりセットしたロックを解除する。それによって、ユーザ領域でのリード／ライト処理が可能となる。
【００４９】
更に、幾つかのフローチャートを参照して実施形態に係る制御を説明する。尚、ここでは説明の煩雑性を避けるため、本発明に関係しないエラー処理については基本的に説明を省略する。
【００５０】
図９は、実施形態に係るＳＡＴＡホスト制御部１１１とＳＡＴＡブリッジ制御部１１２の省電力制御の初期設定を説明するフローチャートである。尚、このフローチャートで示す処理は、メインＣＰＵ１０１がフラッシュメモリ１０３に格納されているプログラムをＤＲＡＭ１０４に展開し、その展開したプログラムを実行することにより達成される。
【００５１】
先ずＳ９０１でメインＣＰＵ１０１は、メインコントローラ１２０の起動（コールドブート）時に、ＳＡＴＡホスト制御部１１１に対して、図６で説明したＨ−Ｈｏｓｔ−ＩＦ２０６のＰＳ０〜ＰＳ２での省電力移行条件（項目６１１〜６１３）を設定する。次にＳ９０２に進みメインＣＰＵ１０１は、ＳＡＴＡブリッジ制御部１１２に対して、図６で説明したＢ−Ｈｏｓｔ１／２−ＩＦ２０７及び２０８の省電力移行条件（項目６１５〜６１７）、ＨＤＤ本体の省電力移行設定条件（項目６１９〜６２１）を設定する。このときメインＣＰＵ１０１は、ＳｅｔｕｐＰｏｗｅｒＣｏｎｆｉｇコマンド７０５をＳＡＴＡホスト制御部１１１から発行させることにより、ＳＡＴＡブリッジ制御部１１２に対して設定する。
【００５２】
このＳｅｔｕｐＰｏｗｅｒＣｏｎｆｉｇコマンド７０５を受信したＳＡＴＡブリッジ制御部１１２のＢＣＰＵ５１０は、所定の場所に省電力移行条件を記録する。ここで、ＳＡＴＡホスト制御部１１１及びＳＡＴＡブリッジ制御部１１２における省電力移行条件の記憶場所は、レジスタＨ５０６やレジスタＢ５１４、ＳＲＡＭ５０４や５１３、フラッシュメモリ５０３や５１２等である。但し、省電力移行処理時に、その設定を読み出せる格納場所であれば特に限定はしない。また上記では、メインコントローラ１２０起動時における初期設定について説明したが、印刷装置がＳｔａｎｄｂｙモード６０２であれば、同じ設定方法で、任意のタイミングで省電力移行条件を再設定しても構わない。
【００５３】
尚、本実施形態に係る印刷装置の起動（コールドブート）時は、一旦、上位電力ステートがＳｔａｎｄｂｙモード、ＳＡＴＡ制御系及びそれに接続されるストレージデバイスがアイドル状態に遷移することを前提とする。更に、印刷装置の運用開始前の初期設定時に、図８のＳＥＣＵＲＩＴＹ  ＳＥＴ  ＰＡＳＳＷＯＲＤコマンド８０９により、ＨＤＤのパスワードロック機能が有効化されている。そしてＨＤＤ電源オフ→オン後、ＨＤＤのユーザ領域にアクセスする前に、ＳＥＣＵＲＩＴＹ  ＵＮＬＯＣＫコマンド８１３でパスワードを送付してロックを解除しておく必要があることを前提として説明する。
【００５４】
図１０は、実施形態に係るＳＡＴＡホスト制御部１１１が省電力に移行するときの処理を説明するフローチャートである。尚、このフローチャートで示す処理は、ＨＣＰＵ５０１がフラッシュメモリ５０３に格納されているプログラムをＳＲＡＭ５０４に展開し、その展開したプログラムを実行することにより達成される。
【００５５】
まずＳ１００１でＨＣＰＵ５０１は、アイドル（待機）状態でメインＣＰＵ１０１からの割り込み待ちである。そして割込み信号を受信するとＳ１００２に進みＨＣＰＵ５０１は、その割り込み信号を判定する。Ｓ１００２でＨＣＰＵ５０１は、ＰＳ０移行要求の割り込みであると判定するとＳ１００３に進む。Ｓ１００３でＨＣＰＵ５０１は、Ｈ−Ｈｏｓｔ−ＩＦ２０６を、予め設定されたＰＳ０（図６）による省電力状態への移行処理を実行する。そしてＳ１００４に進みＨＣＰＵ５０１は、ＨＣＰＵ５０１のシステム自体をＰＳ０にして省電力状態に遷移し、移行処理を完了する。
【００５６】
一方、Ｓ１００２でＰＳ０移行要求の割り込みでないときはＳ１００５に進みＨＣＰＵ５０１は、ＰＳ１移行要求割り込みかどうか判定し、そうであればＳ１００６に進む。Ｓ１００６でＨＣＰＵ５０１は、Ｈ−Ｈｏｓｔ−ＩＦ２０６を、予め設定されたＰＳ１（図６）による省電力状態へ移行させる。そしてＳ１００７に進みＨＣＰＵ５０１は、ＨＣＰＵ５０１のシステム自体をＰＳ１にして省電力状態に遷移して、移行処理を完了する。
【００５７】
またＳ１００５でＰＳ１移行要求割り込みでないときはＳ１００８に進みＨＣＰＵ５０１は、ＰＳ２移行要求割り込みかどうか判定し、そうであればＳ１００９に進む。Ｓ１００９でＨＣＰＵ５０１は、Ｈ−Ｈｏｓｔ−ＩＦ２０６を、予め設定されたＰＳ２（図６）での省電力状態へ移行させる。そしてＳ１０１０に進みＨＣＰＵ５０１は、ＨＣＰＵ５０１のシステム自体をＰＳ２での省電力状態に遷移して、移行処理を完了する。またＳ１００８でＰＳ２移行要求割り込みでない場合はＳ１０１１に進む。Ｓ１０１１でＨＣＰＵ５０１は、省電力移行要求以外の割り込みに応じた処理、例えば通常のデータ転送時のライトコマンド発行処理などを実行する。そして、その処理を完了した後に再びＳ１００１に戻りアイドル状態に入る。尚、ここでは図示しないがＨＣＰＵ５０１は、要求のあった省電力状態に移行した後に、移行完了割り込みをメインＣＰＵ１０１に通知すると同時に、レジスタＨ５０６の一部を省電力状態のステータスレジスタとして報告する。
【００５８】
ここで、ＰＳ０〜ＰＳ２で設定されたＨ−Ｈｏｓｔ−ＩＦ２０６の省電力移行条件の幾つかにについて説明する。Ｐａｒｔｉａｌ及びＳｌｕｍｂｅｒは、ＳＡＴＡ規格で定義されたリクエストパケットを送信し、送信先が許可すればＳＡＴＡ−ＩＦに対する省電力状態に入ることができる。また、ＤｅｖＳｌｅｅｐは、まずＳＡＴＡ−ＩＦをＳｌｕｍｂｅｒに入れて、更にシングルエンド信号であるＤＥＶＳＬＰ信号をイネーブル状態にすることで、接続デバイス本体の消費電力を削減できる。
【００５９】
図１１は、実施形態に係るＳＡＴＡブリッジ制御部１１２が省電力に移行するときの処理を説明するフローチャートである。尚、このフローチャートで示す処理は、ＢＣＰＵ５１０がフラッシュメモリ５１２に格納されているプログラムをＳＲＡＭ５１３に展開し、その展開したプログラムを実行することにより達成される。
【００６０】
まずＳ１１０１でＢＣＰＵ５１０は、アイドル状態として待機中で、ＳＡＴＡホスト制御部１１１のＨＣＰＵ５０１からの割り込み指示待ちの状態である。割り込み指示を受付けるとＳ１１０２に進みＢＣＰＵ５１０は、その割り込み信号がＨ−Ｈｏｓｔ−ＩＦ２０６が省電力に移行する通知かどうか判定する。そうであればＳ１１０９に進むが、そうでないときはＳ１１０３へ進む。Ｓ１１０３でＢＣＰＵ５１０は、受信した割り込み信号が省電力系の拡張コマンドかどうか判定する。そうであればＳ１１０５に進むが、そうでないときはＳ１１０４に進む。Ｓ１１０４でＢＣＰＵ５１０は、他の割り込み処理、例えばＡＴＡコマンド処理などを実行して、再びＳ１１０１のアイドル状態に戻る。
【００６１】
Ｓ１１０５でＢＣＰＵ３０１は、受信した省電力系コマンドがＴｏＳｌｅｅｐコマンド７０９かどうか判定する。そうであればＳ１１０６に進みＢＣＰＵ５１０は、上位電力ステートをＳｌｅｅｐモード６０３としてレジスタＢ５１４やＳＲＡＭ５１３等に登録してＳ１１０１に進む。一方、Ｓ１１０５でＴｏＳｌｅｅｐコマンド７０９でないと判定するとＳ１１０７に進む。Ｓ１１０７でＢＣＰＵ５１０は、受信した省電力系コマンドがＴｏＤｅｅｐコマンド７１３であると判断し、上位電力ステートをＤｅｅｐモード６０３としてレジスタＢ５１４やＳＲＡＭ５１３等に登録する。そしてＳ１１０８に進みＢＣＰＵ５１０は、Ｄｅｅｐモード６０３への移行準備を行う。Ｄｅｅｐモード６０３では、基本的に電源制御部２０９による電源オフ処理を前提としている。このため、特に瞬断を許さないストレージデバイス（ＨＤＤやＳＳＤ）及びフラッシュメモリを内蔵するＳＡＴＡブリッジ制御部１１２のようなタイプのＩＣは電源オフ準備を行い、準備完了後に電源オフタイミングを通知する必要がある。ＰＳ２状態としての電源オフ準備が完了したかどうかは、ＧｅｔＳｔａｔｕｓコマンド７１７によって取得することが可能である。
【００６２】
尚、ここでは図示しないがメインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１やＳＡＴＡブリッジ制御部１１２が電源オフ準備完了したことを確認した後、電源制御部２０９に電源オフの許可を通知する。また、一例としてＨＤＤ電源オフ時の準備として、ＡＴＡ規格のＦＬＵＳＨ  ＣＡＣＨＥコマンド及びＳＬＥＥＰコマンドを発行し、データ退避や物理的なヘッダの退避等を行うようにしても良い。
【００６３】
一方、Ｓ１１０２で、受信した割り込み信号がＨ−Ｈｏｓｔ−ＩＦ２０６の省電力移行の通知であった場合はＳ１１０９に進む。Ｓ１１０９でＢＣＰＵ５１０は、上位電力ステートがＳｔａｎｄｂｙモード６０２と、予め設定されているＨ−Ｈｏｓｔ−ＩＦ２０６の省電力移行条件の項目６１１とから、ＰＳ０（図６）に移行すべきかどうか判定する。ここでＰＳ０に移行すべきと判定するとＳ１１１０に進む。Ｓ１１１０でＢＣＰＵ５１０は、予め設定されているＢ−Ｈｏｓｔ１／２−ＩＦ２０７及び２０８の省電力移行条件の項目６１５、ＨＤＤ本体の省電力移行条件の項目６１９とに基づいてＰＳ０への移行処理を実行する。そして最後にＢＣＰＵ５１０のシステム自身をＰＳ０での省電力状態に遷移して、この移行処理を完了する。
【００６４】
またＳ１１０９でＰＳ０への移行でないと判定するとＳ１１１１へ進む。Ｓ１１１１でＢＣＰＵ５１０は、上位電力ステートがＳｌｅｅｐモード６０３と、予め設定されているＨ−Ｈｏｓｔ−ＩＦ２０６の省電力移行条件の項目６１２から、ＰＳ１に移行すべきかどうか判定する。ここでＰＳ１に移行すべきと判定するとＳ１１１２に進む。Ｓ１１１２でＢＣＰＵ５１０は、予め設定されているＢ−Ｈｏｓｔ１／２−ＩＦ２０７及び２０８の省電力移行条件の項目６１６、ＨＤＤ本体の省電力移行条件の項目６２０に基づいてＰＳ１への移行処理を実行する。そして最後に、ＢＣＰＵ５１０のシステム自身をＰＳ１での省電力状態に遷移して、この移行処理を完了する。
【００６５】
またＳ１１１１でＰＳ１への移行でないと判定するとＳ１１１３へ進む。Ｓ１１１３でＢＣＰＵ５１０は、上位電力ステートがＤｅｅｐモード６０４と、予め設定されているＨ−Ｈｏｓｔ−ＩＦ２０６の省電力移行条件の項目６１３から、ＰＳ２に移行すべきかどうか判定する。ここでＰＳ２に移行すべきと判定するとＳ１１１４に進む。Ｓ１１１４でＢＣＰＵ５１０は、予め設定されているＢ−Ｈｏｓｔ１／２−ＩＦ２０７及び２０８の省電力移行条件の項目６１７、ＨＤＤ本体の省電力移行条件の項目６２１とに基づいてＰＳ２への移行処理を実行する。そして最後に、ＢＣＰＵシステム自身をＰＳ２での省電力状態に遷移して、この移行処理を完了する。
【００６６】
またＳ１１１３でＰＳ２に移行すべきでないと判定するとＳ１１１５へ進む。Ｓ１１１５でＢＣＰＵ５１０は、省電力移行が失敗したとしてエラー処理を行う。このとき上位へのステータス通知等を実行するが説明は省略する。
【００６７】
ここでまでをまとめると、ＳＡＴＡブリッジ制御部１１２でＰＳ０〜ＰＳ２のいずれかの省電力状態に移行するかどうかの判定では、上位電力ステート（Ｓｔａｎｄｂｙモード６０２、Ｓｌｅｅｐモード６０３、Ｄｅｅｐモード６０４）情報とＨ−Ｈｏｓｔ−ＩＦ２０６の省電力状態の２つから、ＰＳ０〜ＰＳ２のいずれかであるかが判定される。
【００６８】
ここで、特にＰＳ０又はＰＳ１において、ＨＤＤ本体の省電力移行条件の項目６１９〜６２１が電源オフ指示（電源オフ−１又は電源オフ−２）であった場合、図３及び図４で説明したようにＢＣＰＵ５１０は、電源制御部２０９に対してＨＤＤ電源のオフ要求（ＯＵＴＢをロウレベルにする）を行う。
【００６９】
図１２は、実施形態に係るＳＡＴＡホスト制御部１１１がＰＳ０又はＰＳ１から復帰するときの処理を説明するフローチャートである。尚、このフローチャートで示す処理は、ＨＣＰＵ５０１がフラッシュメモリ５０３に格納されているプログラムをＳＲＡＭ５０４に展開し、その展開したプログラムを実行することにより達成される。
【００７０】
まずＳ１２０１で上位の電力ステートは、Ｓｔａｎｄｂｙモード６０２又はＳｌｅｅｐモード６０３であるものとする。また、この時、Ｓ１２０２でＨＣＰＵ５０１は、ＰＳ０又はＰＳ１の省電力状態である。ここで、Ｓｔａｎｄｂｙ状態でＨＤＤにアクセスできるのは当然であるが、上位の電力ステートがＳｌｅｅｐ状態であってもＨＤＤへのアクセスが必要となる場合がある。その場合は、Ｓｌｅｅｐ状態であってもＳＡＴＡ制御系が部分的に復帰することになる。これは例えば、ＨＤＤの寿命関係のパラメータ（オフ・オン回数や不良セクタ数など）を得るためのスマート情報を取得する場合などが考えられる。逆にＳｌｅｅｐ状態からの復帰時に、ＨＤＤを使用する予定がなければ、ＨＤＤの電源をオフにしたままＳＡＴＡ制御系のみ電源オンする場合もあり得る。
【００７１】
そしてＳ１２０３に進みＨＣＰＵ５０１は、メインＣＰＵ１０１からの割り込み要求待ち状態にあり、割り込み要求がなければ、ＰＳ０又はＰＳ１の省電力状態を継続する。Ｓ１２０３でＨＣＰＵ５０１は、コマンド転送要求の割り込みを受信するとＳ１２０４へ進み、ＨＣＰＵ５０１は、自身の復帰処理（ブート）を実行する。そしてＳ１２０５及びＳ１２０６において、Ｈ−Ｈｏｓｔ−ＩＦ２０６の復帰処理を実行する。具体的には、Ｓ１２０５でＨＣＰＵ５０１は、ＳＡＴＡ規格で定義されたリセット信号であるＣｏｍＲｅｓｅｔ信号の発行を開始し、規格で規定されたＯＯＢ（Ｏｕｔ  Ｏｆ  Ｂａｎｄ）やスピードネゴシエーションの所定シーケンスを経て、コマンド発行可能となるまでのリンク確立処理を行う。そしてＳ１２０６でＨＣＰＵ５０１は、ＳＡＴＡ規格で定義されたＲｅｇＤＨ（Ｒｅｇｉｓｔｅｒ  Ｄｅｖｉｃｅ  ｔｏ  Ｈｏｓｔ）を受信するまで待機する。Ｓ１２０６でＨＣＰＵがＲｅｇＤＨを受信し、そのステータスがｒｅａｄｙ状態であると判定した場合に、コマンド発行可能なリンクを確立したと認識してＳ１２０７に進む。
【００７２】
Ｓ１２０７でＨＣＰＵ５０１は、ＧｅｔＧＰＩＯＩｎｆｏコマンド７２１を発行して、ＳＡＴＡブリッジ制御部１１２のＧＰＩＯ情報を取得する。次にＳ１２０８に進みＨＣＰＵ５０１はＧｅｔＳｔａｔｕｓコマンド７１７を発行して、ＳＡＴＡブリッジ制御部１１２の内部状態を取得してＳ１２０９に進む。Ｓ１２０９でＨＣＰＵ５０１は、受信したコマンドがＡＴＡコマンドであるかどうか判定する。ここでＡＴＡコマンドでない場合はＳ１２１３に進み、受信したコマンドの処理を行う。一方、Ｓ１２０９でＡＴＡコマンドを受信したと判定するとＳ１２１０に進む。Ｓ１２１０，Ｓ１２１１でＨＣＰＵ５０１は、ＧＰＩＯ情報に含まれるＯＵＴＡ３０１，ＩＮ３０５によりＨＤＤへのアクセスが伴う復帰後の前処理を実行するかどうか判定する。Ｓ１２１０及びＳ１２１１でＨＣＰＵ５０１は、ＯＵＴＡ３０１がハイレベルで、且つＩＮ３０５がロウレベルであると判定するとＳ１２１２に進む。即ち、ＳＴＡブリッジ制御部１１２のＢＣＰＵ５１０が明示的にＨＤＤの電源制御を実施中で、意図的にＨＤＤの電源をオフ状態にしている場合には、即座に前処理を実行する。一方、ＯＵＴＡ３０１がロウレベル、又はＩＮ３０５がハイレベルであればＳ１２１２をスキップしてＳ１２１３に進む。
【００７３】
尚、Ｓ１２１２の前処理には、図９で説明した通り、少なくともＨＤＤのパスワードロックの解除処理が含まれる。図８で説明したＩＤＥＮＴＩＦＹ  ＤＥＶＩＣＥコマンド８０５でデバイスの状態を確認し、ロック状態であればＳＥＣＵＲＩＴＹ  ＵＮＬＯＣＫコマンド８１３をＨＤＤに送付することになる。この時、前処理を実行するとＢＣＰＵ５１０はＡＴＡコマンドを送付するためにＯＵＴＡ３０１，ＯＵＴＢ３０２及びＩＮ３０５を制御してＨＤＤの電源をオンしなければならない。
【００７４】
Ｓ１２１３でＨＣＰＵ５０１は、受信したＡＴＡコマンド処理を実施し、処理完了後にＳ１２０３に戻り、再びコマンド転送要求の割り込み待ち状態に入る。ここでは詳細の図示は省略するが、Ｓ１２０３においてＨＣＰＵ５０１は、受信コマンドが所定時間経過しても受信しない場合はＳ１２１４に進む。
【００７５】
Ｓ１２１４でＨＣＰＵ５０１は、省電力状態であるＰＳ０／ＰＳ１への移行要求があるかどうか判定し、以降要求が無ければＳ１２０３に戻り、再びアイドル状態でのコマンド要求待ち状態に入る。一方、Ｓ１２１４でＰＳ０／ＰＳ１への移行要求があると判定するとＳ１２１５に進む。Ｓ１２１５でＨＣＰＵ５０１は、電源をオフ（ＰＳ２）する否か判定する。ここで電源をオフ（ＰＳ２）しないと判定した場合はＳ１２１６に進みＨＣＰＵ５０１は、ＳＡＴＡ制御系をＰＳ０又はＰＳ１の省電力へ移行する処理を実施してＳ１２０３に進んで、省電力状態でのコマンド待機状態に入る。またＳ１２１５で電源をオフ（ＰＳ２）すると判定したときはＳ１２１７に進みＨＣＰＵ５０１は、電源オフ処理（シャットダウン処理）を実施した後、一連のＳＡＴＡ制御を停止し、電源制御部２０９が電源オフされるまで待機する。
【００７６】
図１３は、実施形態に係るＳＡＴＡブリッジ制御部１１２がＰＳ０又はＰＳ１から復帰するときの処理を説明するフローチャートである。尚、このフローチャートで示す処理は、ＢＣＰＵ５１０がフラッシュメモリ５１２に格納されているプログラムをＳＲＡＭ５１３に展開し、その展開したプログラムを実行することにより達成される。
【００７７】
Ｓ１３０１でＢＣＰＵ５１０は、ＰＳ０又はＰＳ１の省電力状態である。またＳ１３０２でＢＣＰＵ５１０は、割り込み要求待ち状態であり、割り込み要求がなければ（即ち、Ｓ１３０２でＮｏであれば）Ｓ１３０１に戻り、ＰＳ０又はＰＳ１の省電力状態を継続する。Ｓ１３０２でＢＣＰＵ５１０は、Ｈ−Ｈｏｓｔ−ＩＦ２０６がアイドル状態に復帰する処理開始の割り込みを受信するとＳ１３０３へ進む。ここで、復帰処理の開始を示す割込の検知は、図１２で説明したＤＥＶＳＬＰ信号がディイネーブルとなるレベル変化の検知や、ＣｏｍＲｅｓｅｔ（又はＣｏｍＷａｋｅ）を要因として発行される割り込み信号に依るものである。Ｓ１３０３でＢＣＰＵ５１０は、自身の復帰処理を行う。次にＳ１３０４に進みＢＣＰＵ５１０は、Ｈ−Ｈｏｓｔ−ＩＦ２０６の復帰処理を実行する。具体的にはＳＡＴＡ規格で規定されたＯＯＢ（Ｏｕｔ  Ｏｆ  Ｂａｎｄ）やスピードネゴシエーションの所定シーケンスを経て、コマンド発行可能となるまでのリンク確立処理を行う。
【００７８】
次にＳ１３０５に進みＢＣＰＵ５１０は、前回の省電力移行時の本体の移行設定条件が、ＨＤＤの電源オンを伴う電源オフ−２であったかどうか判定する。この判定のためにＢＣＰＵ５１０は、前回の省電力移行時のデバイス本体の移行設定条件が電源オフ−１又は電源オフ−２なのかを、次回復帰時に判定可能なように記録しておく必要がある。ＰＳ０やＰＳ１では、少なくともＨＣＰＵ５０１やＢＣＰＵ５１０のＳＡＴＡ制御部は省電力状態には移行するが、電源オフにはならないことを前提としている。従って、電源オフ−１か電源オフ−２の判定情報を、例えばレジスタＨ５０６やレジスタＢ５１４などに記憶しておくことにより、この判定の際に参照できる。尚、この記憶した情報は、次回の省電力からの復帰時のみ利用され、復帰した後にクリアされるものとする。
【００７９】
Ｓ１３０５でＢＣＰＵ５１０は電源オフ−２であると判定し、且つ、ＩＮ３０５がロウレベルであればＳ１３０６に進む。Ｓ１３０６でＢＣＰＵ５１０は、接続デバイスの復帰処理を行う。このときＢＣＰＵ５１０は、接続デバイスであるＨＤＤ１１３，１１４の電源をオフしていた場合、図３及び図４で説明したように電源制御部２０９に対してＨＤＤ電源のオン要求を行う。次にＳ１３０７に進みＢＣＰＵ５１０は、Ｂ−Ｈｏｓｔ１／２−ＩＦ２０７及び２０８の復帰処理を実行する。この復帰処理に関しては、図１２で説明したＨ−Ｈｏｓｔ−ＩＦ２０６の復帰処理と同様であるため、その説明を省略する。こうしてＳ１３０７の処理が完了するか、又はＳ１３０５で電源オフ−２でないと判定した場合はＳ１３０８に進む。Ｓ１３０８でＢＣＰＵ５１０は、リンクが確立したことを確認すると、コマンド受信待ちに移行する。この時点で省電力状態からアイドル状態への復帰は完了したことになる。
【００８０】
Ｓ１３０８でＢＣＰＵ５１０は、コマンドを受信していない期間はＳ１３０８に留まり、コマンドを受信するとＳ１３０９へ進む。Ｓ１３０９でＢＣＰＵ５１０は、受信したコマンドがＡＴＡコマンドかどうか判定する。ＡＴＡコマンドを受信したときはＳ１３１１へ進むが、そうでないときはＳ１３１０に進む。Ｓ１３１０でＢＣＰＵ５１０は、他の拡張コマンド処理を実行した後にＳ１３１６へ進む。
【００８１】
Ｓ１３１１でＢＣＰＵ５１０は、前回の省電力移行時のデバイス本体の移行設定条件が、ＨＤＤの電源オンを伴わない電源オフ−１であったかどうか判定する。Ｓ１３１１で電源オフ−１で、且つ、ＩＮ３０５がロウレベルであればＳ１３１２へ進む。Ｓ１３１２及びＳ１３１３における接続デバイス及びＳＡＴＡ−ＩＦの復帰処理は、既に説明したので省略する。Ｓ１３１３の処理が完了するか、或いはＳ１３１１で電源オフ−１でないとき判定した場合はＳ１３１４に進む。Ｓ１３１４でＢＣＰＵ５１０は、ＡＴＡコマンド処理を実行する。次にＳ１３１５に進みＢＣＰＵ５１０は、ＨＤＤ１１３，１１４からのＳｔａｔｕｓ（ステータス）の受信待ちに入る。Ｓｔａｔｕｓが未受信の間はＳ１３１５で待機し、Ｓｔａｔｕｓを受信するとＳ１３１６に進む。Ｓ１３１６でＢＣＰＵ５１０は、ＨＤＤから受信したステータス情報、又はＳ１３１０の他の拡張コマンドにて処理した結果を、ＳＡＴＡ規格で定義されたステータスパケットに反映してＳＡＴＡ−ＩＰ（Ｈｏｓｔ）２０１へ送信する。こうして一連のコマンド処理を終了する。そしてＳ１３１７に進みＢＣＰＵ５１０は、メインＣＰＵ１０１によって再び省電力移行要求が発行されるまでの間、アイドル状態を継続する。
【００８２】
図１４は、実施形態に係るＳＡＴＡブリッジ制御部１１２がＰＳ２のＤｅｅｐ状態から復帰するときの処理を説明するフローチャートである。尚、このフローチャートで示す処理は、ＢＣＰＵ５１０がフラッシュメモリ５１２に格納されているプログラムをＳＲＡＭ５１３に展開し、その展開したプログラムを実行することにより達成される。尚、ここでの説明では、接続デバイスとしてＨＤＤを前提として説明を行う。
【００８３】
まずＳ１４０１でＨＣＰＵ５０１及びＢＣＰＵ５１０は、前回のＰＳ２移行処理により電源オフ状態である。その後、電源制御部２０９は、ＳＡＴＡホスト制御部１１１及びＳＡＴＡブリッジ制御部１１２への電源供給（即ち、電源オン）を開始する。Ｓ１４０２でＢＣＰＵ５１０は、自身の復帰処理（ブート処理）を実行する。次にＳ１４０３に進みＢＣＰＵ５１０は、Ｈ−Ｈｏｓｔ−ＩＦ２０６の復帰処理を実行する。具体的には、ＢＣＰＵ５１０のブート処理と同時にＨＣＰＵ５０１のブート処理も開始される。そしてＨ−Ｈｏｓｔ−ＩＦ２０６の復帰処理では、既に説明したようにＳＡＴＡ−ＩＰ（Ｈｏｓｔ）２０２からＳＡＴＡ−ＩＰ（Ｄｅｖｉｃｅ）２０３へのＣｏｍＲｅｓｔ信号を基点としたＯＯＢ及びスピードネゴシエーション処理を経てリンクが確立される。
【００８４】
こうしてＳ１４０３でリンクを確立した後、ＢＣＰＵ５１０は、ＳＡＴＡ下層のリンク確立を実行する。Ｓ１４０４でＢＣＰＵ５１０は、ＨＤＤへの電源供給状態をモニタするＩＮ３０５がハイレベルかどうか判定し、ＨＤＤ電源のオフ／オン判定を行う。Ｓ１４０４でＩＮ３０５がハイレベルと判定するとＳ１４０５に進む。Ｓ１４０５でＢＣＰＵ５１０は、電源オフ−２（ＨＤＤの電源オンを伴う復帰）と認識してＳ１４０７に進む。一方、Ｓ１４０４でＩＮがロウレベルと判定するとＳ１４０６に進みＢＣＰＵ５１０は、電源オフ−１（ＨＤＤの電源オンを伴わない復帰）として認識してＳ１４０７に進む。
【００８５】
ここで、ＧｅｔＳｔａｔｕｓ７１７では省電力への移行確認だけでなく、ＨＤＤの接続状況なども取得可能である。メインＣＰＵ１０１は、ＳＡＴＡホスト制御部１１１及びＳＡＴＡブリッジ制御部１１２の起動後、所定時間内にＨＤＤ接続ＯＫ（リンク確立状態）とならない場合にはエラーとして扱う。実施形態では、ＧｅｔＳｔａｔｕｓ７１７によるＨＤＤ接続状態の確認で、例えば未接続状態１（接続エラー）／未接続状態２（電源オフ−１としての未接続）を判別できるようにする。
【００８６】
図１５は、ＧｅｔＳｔａｔｕｓ７１７で報告される状態の一例を説明する図である。
【００８７】
ＧｅｔＳｔａｔｕｓ７１７での報告内容の一部として、デバイス１接続状態１５０２とデバイス２接続状態１５０３とを設け、更に状態定義１５０４を含める。例えば、意図的な電源オフ状態での復帰時は、状態「０１」（未接続２）としてメインＣＰＵ１０１に報告される。ＢＣＰＵ５１０は、Ｓ１４０５又はＳ１４０６での認識によって、ＧｅｔＳｔａｔｕｓ７１７によるＨＤＤの接続状態報告を、「未接続２」（ＨＤＤの電源オフ状態での復帰）として適切に示すことができる。この「未接続２」を確認したメインＣＰＵ１０１は、この場合意図的な未接続として認識し、エラー処理対象としない。
【００８８】
次にＳ１４０７でＢＣＰＵ５１０は、上位層がリンク確立したことを確認すると、コマンドの受信待ちに移行する。この時点で省電力状態からアイドル状態への復帰は完了したことになる。Ｓ１４０７でＢＣＰＵ５１０は、コマンド未受信の間はＳ１４０７に滞在し、コマンドを受信するとＳ１４０８に進む。Ｓ１４０８でＢＣＰＵ５１０は、受信したコマンドがＡＴＡコマンドかどうか判定する。そうであればＳ１４１０へ進みＢＣＰＵ５１０は、ＨＤＤの電源供給状態をモニタするＩＮ３０５がロウレベルかどうか、即ち、ＨＤＤ電源がオフかどうか判定する。Ｓ１４１０でＩＮ３０５がロウレベル、即ち、ＨＤＤ電源がオフの場合はＳ１４１１に進み、そうでないときはＳ１４１３に進む。Ｓ１４１１，Ｓ１４１２でＢＣＰＵ５１０は、電源制御部２０９へのＨＤＤの電源オン要求と接続ＩＦの復帰処理を実行してＳ１４１３へ進む。Ｓ１４１１及びＳ１４１２での処理については既に説明したので省略する。
【００８９】
Ｓ１４１３でＢＣＰＵ５１０は、ＡＴＡコマンド処理を実行する。次にＳ１４１４に進みＢＣＰＵ５１０は、ＨＤＤ１１３，１１４からのステータスの受信待ちに移行する。ステータスを未受信の間はそのまま待機し、ステータスを受信するとＳ１４１５に進む。またＳ１４０８で受信コマンドが、ＡＴＡコマンド以外の拡張コマンドであると判定した場合はＳ１４０９に進む。Ｓ１４０９でＢＣＰＵ５１０は、拡張コマンド処理を実行した後にＳ１４１５へ進む。Ｓ１４１５でＢＣＰＵ５１０は、ＨＤＤ１１３，１１４から受信したステータス情報、又は拡張コマンドで処理した結果を、ＳＡＴＡ規格で定義されたステータスパケットに反映してＳＡＴＡ−ＩＰ（Ｈｏｓｔ）２０１へ送信する。こうして一連のコマンド処理を終了する。そしてＳ１４１６に進み、メインＣＰＵ１０１によって再び省電力移行要求が発行されるまでの間、ＳＡＴＡブリッジ制御部１１２はアイドル状態を継続する。
【００９０】
図１６は、実施形態に係るＳＡＴＡホスト制御部１１１がＰＳ２のＤｅｅｐ状態から復帰するときの処理を説明するフローチャートである。尚、このフローチャートで示す処理は、ＨＣＰＵ５０１がフラッシュメモリ５０３に格納されているプログラムをＳＲＡＭ５０４に展開し、その展開したプログラムを実行することにより達成される。
【００９１】
Ｓ１６０１でメインＣＰＵ１０１は、省電力のＤｅｅｐ状態（ＰＳ２）からＳｔａｎｄｂｙ状態に復帰している。そしてＳ１６０２でＨＣＰＵ５０１は、ＰＳ２からの復帰処理を開始する。Ｓ１６０３でＨＣＰＵ５０１は、自身の復帰（ブート）処理を実行する。このとき同時に、ＳＡＴＡブリッジ制御部１１２のＢＣＰＵ５１０がブートしている。こうしてＨＣＰＵ５０１の復帰処理が完了するとＳ１６０４に進み、Ｈ−Ｈｏｓｔ−ＩＦ２０６の復帰処理（リンク確立）を実行する。そしてＳ１６０５に進みＨＣＰＵ５０１は、ＧｅｔＧＰＩＯＩｎｆｏコマンドを発行し、Ｓ１６０６でＧｅｔＳｔａｔｕｓコマンドによってＳＡＴＡブリッジ制御部１１２のＧＰＩＯ情報及び内部状態を取得する。そしてＳ１６０３〜Ｓ１６０６の処理は、既に図１２で説明したので、その詳細な説明は省略する。
【００９２】
次にＳ１６０７，Ｓ１６０８でＨＣＰＵ５０１は、ＯＵＴＡ３０１がハイレベルで、且つＩＮ３０５がロウレベル、即ち、ＢＣＰＵ５１０が明示的にＨＤＤの電源の制御を実施中で、意図的にＨＤＤ電源をオフ状態にしている場合はＳ１６０９に進む。それ以外の場合はＳ１６１０に進む。Ｓ１６０９でＨＣＰＵ５０１は、ＧｅｔＳｔａｔｕｓコマンドで取得したＳＡＴＡブリッジ制御部１１２の状態がミラーリングモードでリビルド処理中（例えば、ＨＤＤ１１３→ＨＤＤ１１４へのコピー処理、或いはＢＣＰＵ５１０によるバックグラウンド処理）かどうか判定する。そうであればＳ１６１０に進む。即ち、電源制御部２０９がＨＤＤの電源オフして起動する場合、又はＢＣＰＵ５１０が意図的にＨＤＤの電源をオンして起動した場合で、更にリビルド処理中である場合は、リビルド処理を優先する。そしてＳ１６１０で前処理を実施してＳ１６１１に進み、それ以外の条件ではＨＤＤの電源はオフのまま維持される。
【００９３】
Ｓ１６１１でＨＣＰＵ５０１は、コマンド転送要求の割り込みの受信待ちに入る。これは既に説明したので詳細は省略するが、Ｓ１６１１でＨＣＰＵ５０１は、所定時間（短時間）でＳＡＴＡへのアクセスがなければ、再び省電力状態に入った状態で、Ｓ１６１１にてコマンド要求割り込みを待つ。Ｓ１６１１で割り込みの受信を受付けるとＳ１６１２に進み、省電力状態ＰＳ０／ＰＳ１かどうか判定する。ここでＰＳ０／ＰＳ１と判定するとＳ１６１３に進みＨＣＰＵ５０１は、ＰＳ０又はＰＳ１からの復帰処理を実施してＳ１６１４に進む。またＳ１６１２でＰＳ０／ＰＳ１でないと判定するとＳ１６１４に進む。
【００９４】
Ｓ１６１４及びＳ１６１５においてＨＣＰＵ５０１は、ＧｅｔＧＰＩＯＩｎｆｏコマンド７２１及びＧｅｔＳｔａｔｕｓコマンド７１７で、ＳＡＴＡブリッジ制御部１１２のＧＰＩＯ情報及び内部状態を取得する。そしてＳ１６１６に進みＨＣＰＵ５０１は、受信したコマンドがＡＴＡコマンドであるかどうか判定する。ＡＴＡコマンドでないと判定したときはＳ１６２０に進んで、拡張コマンドの処理を行う。
【００９５】
一方、Ｓ１６１６でＡＴＡコマンドと判定するとＳ１６１７に進む。Ｓ１６１７及びＳ１６１８でＨＣＰＵ５０１は、ＧＰＩＯ情報に含まれるＯＵＴＡ３０１，ＩＮ３０５に基づいて、ＨＤＤへのアクセスが伴う復帰後の前処理を実行するかどうか判定する。即ち、Ｓ１６１７及びＳ１６１８でＨＣＰＵ５０１は、ＯＵＴＡ３０１がハイレベルで、且つＩＮ３０５がロウレベル、又はＯＵＴＡ３０１がロウレベルであると判定するとＳ１６１９に進む。即ち、ＢＣＰＵ５１０が明示的にＨＤＤの電源の制御を実施中で、意図的にＨＤＤの電源をオフ状態にしている場合、もしくは電源制御部２０９による制御中の場合には、即座に前処理を実行する。一方、ＯＵＴＡ３０１がハイレベルで、且つＩＮ３０５がハイレベルであるならば、Ｓ１６１９の前処理をスキップしてＳ１６２０に進む。
【００９６】
Ｓ１６２０でＨＣＰＵ５０１は、受信したＡＴＡコマンドの処理を実行する。そしてＡＴＡコマンドの処理が完了するとＳ１６１１に進み、アイドル状態で次回のコマンド要求割り込みを待つ。Ｓ１６１１において、ここでは図示しないが、所定時間が経過してもコマンド転送要求を受信しない場合はＳ１６２１へ進む。Ｓ１６２１でＨＣＰＵ５０１は、省電力状態ＰＳ０又はＰＳ１への移行要求があるかどうか判定し、移行要求がなければＳ１６１１に戻り、アイドル状態でのコマンド要求待ち状態に入る。一方、Ｓ１６２１で移行要求があるときはＳ１６２２に進みＨＣＰＵ５０１は、電源オフ（ＰＳ２）するかどうか判定し、電源オフ（ＰＳ２）すると判定したときはＳ１６２４に進む。Ｓ１６２４でＨＣＰＵ５０１は、電源オフ処理（ＰＳ２処理）を実施した後、一連のＳＡＴＡ制御を停止し、外部電源制御部２０９が電源オフされるまで待機する。またＳ１６２２でＨＣＰＵ５０１は、電源オフ（ＰＳ２）でなくＰＳ０／ＰＳ１の省電力状態に移行すると判定したＳ１６２３に進み、ＳＡＴＡ制御系のＰＳ０又は１への省電力移行処理を実施してＳ１６１１に進み、省電力状態でのコマンド待機状態に入る。
【００９７】
図１７は、実施形態に係るメインコントローラ１２０のメインＣＰＵ１０１が、省電力状態ＰＳ０のときにＳＡＴＡブリッジ制御部１１２の内部状態をポーリングする処理を説明するフローチャートである。尚、このフローチャートで示す処理は、メインＣＰＵ１０１がフラッシュメモリ１０３に格納されているプログラムをＤＲＡＭ１０４に展開し、その展開したプログラムを実行することにより達成される。
【００９８】
メインＣＰＵ１０１のＳｔａｎｄｂｙ状態では、メインＣＰＵ１０１はシステムの末端に位置する制御系であるＳＡＴＡブリッジ制御部１１２の内部状態をＧｅｔＳｔａｔｕｓコマンドにより定期的に取得する。例えば、ＳＡＴＡブリッジ制御部１１２がオプションとして別ボードに搭載されていた場合、ＳＡＴＡ−ＩＦ以外の制御信号（例えばステータス割り込み信号など）をサイドバンド信号として別経由で接続するとコストアップに繋がる。このため、ＧｅｔＳｔａｔｕｓコマンドを定期的に送信するポーリング方式で、ＳＡＴＡブリッジ制御部１１２の内部状態を取得する。この場合、折角、ＳＡＴＡ制御系が省電力状態であるにも拘らず、その都度、ＳＡＴＡ制御系が省電力状態から復帰させられてしまうことになる。図１７では、これを回避する方法を説明する。
【００９９】
まずＳ１７０１でメインＣＰＵ１０１は、起動完了後のＳｔａｎｄｂｙ状態で安定するとＳＡＴＡブリッジ制御部１１１の内部状態を定期的に確認するＧｅｔＳｔａｔｕｓコマンドによるポーリングを開始する。次にＳ１７０２に進みメインＣＰＵ１０１は、ＳＡＴＡ系が省電力状態かどうかを示すフラグを、例えばレジスタＨ５０６から取得する。次にＳ１７０３に進みメインＣＰＵ１０１は、そのフラグがＰＳ０状態を示しているかどうか判定し、そうであればＳ１７０２に進んで、ポーリング処理を保留状態にする。一方、Ｓ１７０３でＰＳ０状態を示していなければＳ１７０４に進みメインＣＰＵ１０１は、ＷＤ（ウォッチドッグ）タイマに所定時間をセットする。そしてＳ１７０５に進みメインＣＰＵ１０１は、所定時間が経過したかどうか判定し、所定時間が経過したと判定するとＳ１７０６に進みメインＣＰＵ１０１は、ＧｅｔＳｔａｔｕｓコマンドを送信してＳＡＴＡブリッジ制御部１１１の内部状態を取得する。その後、Ｓ１７０７に進みメインＣＰＵ１０１は、電源オフの要求があるかどうか判定し、その要求があればＳ１７０８に進んで、電源オフの準備（ポーリング処理の停止など）を行って、この処理を終了する。一方、Ｓ１７０７で電源オフの要求が無いときはＳ１７０２に戻る。
【０１００】
このように、ＳＡＴＡ系が省電力状態かどうか確認した後、次のＧｅｔＳｔａｔｕｓコマンドの送信を行う。この処理により、ＳＡＴＡ系が省電力状態である場合に、ＳＡＴＡ制御系が省電力状態から復帰しないようにして、省電力状態を維持することができる。
【０１０１】
以上説明したように実施形態によれば、アイドル状態と省電力状態との間において、省電力状態（例えば、ＰＳ１⇔ＰＳ２）の遷移に際して、ＨＤＤを必要とする場合にのみＨＤＤの電源をオンするように制御できる。これにより、ＨＤＤに対する省電力制御、及び電源オフ／オンの回数を減らして最適な省電力制御を実施することが可能となる。具体的には、ＨＤＤにおいて移行条件に電源オフ−１を設定しておくことにより、ＡＴＡコマンドの受信時（即ち、真にＨＤＤを必要とする場合）のみにＨＤＤの電源をオンするよう制御できる。
【０１０２】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１０３】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【０１０４】
１０１…メインＣＰＵ、１０９…スキャナ、１１０…画像処理部、１１１…ＳＡＴＡホスト制御部、１１２…ＳＡＴＡブリッジ制御部、１１３，１１４…ＨＤＤ／ＳＤＤ、１１６…操作パネル、１１８…印刷部、２０９…電源制御部
【図１】
2019127017.tif 000003
【図２】
2019127017.tif 000004
【図３】
2019127017.tif 000005
【図４】
2019127017.tif 000006
【図５】
2019127017.tif 000007
【図６】
2019127017.tif 000008
【図７】
2019127017.tif 000009
【図８】
2019127017.tif 000010
【図９】
2019127017.tif 000011
【図１０】
2019127017.tif 000012
【図１１】
2019127017.tif 000013
【図１２】
2019127017.tif 000014
【図１３】
2019127017.tif 000015
【図１４】
2019127017.tif 000016
【図１５】
2019127017.tif 000017
【図１６】
2019127017.tif 000018
【図１７】
2019127017.tif 000019