以下、本発明をシリアルATAインタフェース(以下、SATAインタフェースと称する)を持つ磁気ディスクドライブを備えたシステムに適用した一実施形態につき図面を参照して説明する。図1は本発明の一実施形態に係る磁気ディスクドライブ(以下、HDDと称する)10を備えたシステムの構成を示すブロック図である。HDD10は、従来から知られている、ATAインタフェースを用いてパラレルデータ転送を行うHDDの構成であるHDD本体11に加えて、SATAインタフェース制御回路12を備えている。SATAインタフェース制御回路12は、HDD本体11とATAバス(パラレルATAバス)13を介して接続されると共に、ホスト(ホストシステム)20とSATAバス(シリアルATAバス)30を介して接続される周辺機器用のSATAブリッジである。SATAインタフェース制御回路12は、ATAインタフェースとSATAインタフェースとの間のインタフェース変換を行う例えば1チップのLSI(Large Scale Integlated Circuit)である。SATAインタフェース制御回路12は特に、SATAバス30を介して与えられた指示をATAバス13(ATAインタフェース)の信号規則に変換し、当該ATAバス13を介してHDD本体11に送信する機能を有する。
ホスト20はHDD10を記憶装置として利用する電子機器であり、例えばパーソナルコンピュータである。ホスト20は、従来から知られている、ATAインタフェースを用いてパラレルデータ転送を行うホストの構成であるホスト本体21に加えて、SATAインタフェース制御回路22を備えている。SATAインタフェース制御回路22は、ホスト本体21とATAバス(パラレルATAバス)23を介して接続されると共に、HDD10とSATAバス(シリアルATAバス)30を介して接続される、ATAバス接続のホスト型ブリッジである。SATAインタフェース制御回路22は、HDD10内のSATAインタフェース制御回路12と同様に、ATAインタフェースとSATAインタフェースとの間のインタフェース変換を行う1チップのLSIである。SATAインタフェース制御回路22は特に、ホスト20側のATAバス23を介して与えられた指示をSATAバス30(SATAインタフェース)の信号規則に変換し、当該SATAバス30を介してHDD10に送信する機能を有する。
SATAインタフェース制御回路12,22は、それぞれ、物理層処理部121,221と、リンク/トランスポート層処理部122,222とを備えている。物理層処理部121,221は、SATAバス30を介して高速のシリアルデータ転送(送受信)を実行する機能を有する。ここでのデータ転送速度は、1.5Gbps(ギガビット/秒)である。物理層処理部121,221は、SATAバス30から受信した内容を解釈してリンク/トランスポート層処理部122,222(中のリンク層処理部)に伝達する。また物理層処理部121,221は、リンク/トランスポート層処理部122,222(中のリンク層処理部)からの要求に応じてシリアルデータ信号を出力(送信)する。リンク/トランスポート層処理部122,222は、リンク層処理部とトランスポート層処理部(図示せず)とを備えている。リンク層処理部は、トランスポート層処理部からの要求内容に応じて物理層処理部121,221に信号出力の要求を出し、また物理層処理部121,221からの受信入力をトランスポート層処理部へ伝達する。トランスポート層処理部はATAインタフェースとSATAインタフェースとの間のインタフェース変換を行う。
なお、ATAバス13,23に代えて、当該ATAバスに準じたバス、例えばPCIバス(Peripheral Component Interconnect Bus)を用いることも可能である。この場合、SATAインタフェース制御回路12,22(を構成するSATAブリッジ)をPCIブリッジ内に設けることが可能である。また、SATAインタフェース制御回路12,22(を構成するSATAブリッジ)には、SATAバス30との間でシリアルATAインタフェースの信号を送受信する機能を持たせれば良い。
図2は、図1中のHDD本体11の構成を示すブロック図である。HDD本体11は、記録媒体としてのディスク111を備えている。このディスク111の2つのディスク面の少なくとも一方のディスク面は、データが磁気記録される記録面をなしている。この記録面をなす、ディスク111の一方のディスク面に対応して、ヘッド(磁気ヘッド)112が配置されている。なお、図1では、作図の都合上、ヘッド112が1つであるHDD10の例が示されている。しかし、一般には、ディスク111の2つのディスク面が共に記録面をなしており、各々のディスク面に対応してヘッドが配置される。また図1の構成では、単一枚のディスク111を備えたHDD10を想定している。しかし、ディスク111が複数枚積層配置されたHDDであっても構わない。
ディスク111はスピンドルモータ(以下、SPMと称する)113により高速に回転させられる。ヘッド112は、ディスク111へのデータ書き込み(データ記録)及びディスク111からのデータ読み出し(データ再生)に用いられる。ヘッド112は、アクチュエータ114の先端に取り付けられている。アクチュエータ114は、当該アクチュエータ114の駆動源となるボイスコイルモータ(以下、VCMと称する)115を有している。アクチュエータ114は、このVCM115により駆動されて、ヘッド112をディスク111の半径方向に移動する。これにより、ヘッド112は、目標トラック上に位置付けられる。SPM113及びVCM115は、モータドライバIC116からそれぞれ供給される駆動電流(SPM電流及びVCM電流)により駆動される。モータドライバIC116は、CPU121から指定された量のSPM電流をSPM113に対して供給する。またモータドライバIC116は、CPU121から指定された量のVCM電流をVCM115に対して供給する。
ヘッド112はヘッドIC(ヘッドアンプ回路)117と接続されている。ヘッドIC117はヘッド112により読み出されたリード信号を増幅するリードアンプ、及びライトデータをライト電流に変換するライトアンプを含む。ヘッドIC117は、リード/ライトIC(リード/ライトチャネル)118と接続されている。リード/ライトIC118は、リード信号に対するA/D(アナログ/デジタル)変換処理、ライトデータの符号化処理及びリードデータの復号化処理等の各種の信号処理を実行する信号処理デバイスである。リード/ライトIC118はディスクコントローラ(以下、HDCと称する)119と接続されている。
HDC119は当該HDC119とディスク111との間のデータ転送を制御するディスク制御機能を有する。HDC119はまた、ATAインタフェースを持つ。即ちHDC119は、ホスト20との間で、ATAバス13を介してコマンド(リード/ライトコマンド等)、及びデータをATAインタフェースにより送受信するATAインタフェース制御機能を有する。但し、HDD10がSATAインタフェースを持つ本実施形態では、HDC119は、従来のHDDとは異なって、ATAバス13を介してSATAインタフェース制御回路12と接続され、当該SATAインタフェース制御回路12及びSATAバス30を介してホスト20と接続されている。HDC119はまた、バッアァRAM120を制御するバッファ制御機能を有する。HDC119は、HDD10の状態をホスト20に通知するためのステータスレジスタ119aを含む。
バッファRAM120の記憶領域の一部は、ホスト20とHDD10内のHDC119との間で転送されるデータを一時格納するデータバッファのための領域に用いられる。バッアァRAM120の記憶領域の別の一部は、後述するSATAパワーセーブ不可フラグFを記憶するフラグ記憶領域120aと、受信コマンドの受信時刻を表す時刻情報を記憶するコマンド受信時刻記憶領域120bとに用いられる。コマンド受信時刻記憶領域120bは最新の一定数の受信コマンドの受信時刻情報を記憶するリングバッファとして用いられる。
CPU130は、制御プログラムが予め格納された図示せぬ不揮発性メモリ(例えば書き換えが可能な不揮発性メモリであるフラッシュROM)を有している。CPU130は、この不揮発性メモリに格納されている制御プログラムに従ってHDD10内の各部を制御する。特にCPU130は、HDC119によって受信されたホスト20からのコマンドがATAインタフェースのパワーセーブモード(以下、ATAパワーセーブモードと称する)を指定する特定コマンド(ATAパワーセーブコマンド)の場合に、HDD10を当該コマンドで指定されたATAパワーセーブモードに設定する。またCPU130は、ATAパワーセーブモードの設定時に、そのモードに予め対応付けられたSATAパワーセーブモードをHDC119、ATAバス13を介してSATAインタフェース制御回路12によって設定させる。
図3は、本実施形態で適用されるATAパワーセーブモード(ATAインタフェース規格に準拠したパワーセーブの状態)の状態遷移を示す図である。本実施形態では、ATAパワーセーブモードとして、アクティブ・アイドルモードM1、パフォーマンス・アイドルモードM2、ローパワー・アイドルモードM3、スタンバイモードM4及びスリープモードM5の5種類が用意されている。また、ATAインタフェースのモードとして、これらのパワーセーブ系のモードM1〜M5の他に、リード/ライトコマンドが実行可能なリード/ライトモード(アクティブモード)M0が用意される。ここで、消費電力は、リード/ライトモードM0→アクティブ・アイドルモードM1→パフォーマンス・アイドルモードM2→ローパワー・アイドルモードM3→スタンバイモードM4→スリープモードM5の順に小さくなる。
HDD10(内のHDD本体11)では、リード/ライトモードM0におけるリード/ライトコマンドに従うリード/ライトの実行が終了すると、当該HDD10での消費電力の節約のために、CPU130の制御によってアクティブ・アイドルモードM1に遷移させられる。アクティブ・アイドルモードM1に遷移した後一定時間T1が経過してもホスト20から新たなコマンドが送られなかった場合には、当該HDD10での消費電力の一層の節約のために、CPU130の制御によってパフォーマンス・アイドルモードM2に自動的に遷移させられる。モードM1及びM2は、製造者側で任意に規定されたATAパワーセーブモードである。
パフォーマンス・アイドルモードM2に遷移した後一定時間T2が経過してもホスト20から新たなコマンドが送られなかった場合には、当該HDD10での消費電力の一層の節約のために、CPU130の制御によってローパワー・アイドルモードM3に遷移させられる。このモードM3は、ATAインタフェース規格の“IDLE(アイドル)”に相当する。このため、上記各モードM1,M2においてホスト20からアイドルコマンドが送られた場合、HDD10のATAパワーセーブモードは、当該コマンドに従ってローパワー・アイドルモードM3に遷移される。同様に、上記各モードM1,M2,M3においてホスト20からスタンバイコマンドが送られた場合、HDD10のATAパワーセーブモードは、当該コマンドに従ってスタンバイモードM4に遷移される。なお、スタンバイコマンドの一種に、スタンバイモードに遷移するまでの時間を指定可能なスタンバイ・イミーディエット(Standby Immediate)コマンドが知られている。スタンバイ・イミーディエットコマンドの場合には、当該コマンドで指定された時間後に、スタンバイモードM4に遷移される。また、上記各モードM1,M2,M3,M4においてホスト20からスリープコマンドが送られた場合、HDD10のATAパワーセーブモードは、当該コマンドに従ってスリープモードM5に遷移される。また、上記各モードM1,M2,M3,M4,M5においてホスト20からリード/ライトコマンドが送られた場合、HDD10のATAパワーセーブモードは、当該コマンドに従ってリード/ライトモードM0に遷移される。
図4は、上記各モードM0〜M5と当該モードM0〜M5におけるHDD本体11内の各回路の電源OFF状態との対応関係を示す。リード/ライトモードM0では、HDD本体11内の各回路に、当該HDD本体11にてリード/ライト動作を即時に実行できるように電源が供給される。アクティブ・アイドルモードM1、パフォーマンス・アイドルモードM2及びローパワー・アイドルモードM3の各アイドルモードでは、HDD本体11内の一部の回路への電源供給が遮断(OFF)される。アクティブ・アイドルモードM1では、ディスク111はSPM113により回転されており、ヘッド112は、サーボ制御によりディスク111上のあるトラックに位置決めされている。パフォーマンス・アイドルモードM2では、ディスク111はSPM113により回転されており、ヘッド112はサーボ制御されずにディスク111上の任意のトラック上に存在する。ローパワー・アイドルモードM3では、ディスク111はSPM113により回転されているが、ヘッド112はディスク111から外れた退避箇所に移動されている。このためアクティブ・アイドルモードM1ではリード/ライトIC118内の一部の回路(ライトチャネル)への電源供給だけが遮断される。これに対し、パフォーマンス・アイドルモードM2ではモータドライバIC116内の一部の回路(VCMドライバ)及びリード/ライトIC118内の一部の回路への電源供給が遮断される。また、ローパワー・アイドルモードM3では、モータドライバIC116内の一部の回路への電源供給が遮断されると共に、ヘッドIC117及びリード/ライトIC118への電源供給が遮断される。リード/ライトモードM0に復帰するまでの時間(つまり、リード/ライトを再び実行可能とするまでの復帰時間)は、上記各アイドルモードによって異なり、アクティブ・アイドルモードM1→パフォーマンス・アイドルモードM2→ローパワー・アイドルモードM3の順に長くなる。上記各アイドルモードで必要となる消費電力は、アクティブ・アイドルモードM1→パフォーマンス・アイドルモードM2→ローパワー・アイドルモードM3の順に小さくなり、復帰時間が長い方が小さい。
スタンバイモードM4では、SPM113の回転は停止される。ここでは、SPM113、モータドライバIC116、ヘッドIC117、リード/ライトIC118及びバッアァRAM120への電源供給が遮断される。このため、スタンバイモードM4での消費電力は、ローパワー・アイドルモードM3よりも更に小さくなり、逆に復帰時間は長くなる。
スリープモードM5では、HDC119内の一部の回路(リセット処理回路)だけに電源が供給されるだけで、殆どの回路への電源供給が遮断される。ここでは、リード/ライトモードM0への復帰はリセット動作によってのみ可能であり、復帰時間はスタンバイモードM4から復帰する場合と同程度である。スリープモードM5における消費電力は、上記各モードM0〜M5の中で最も小さい。
図5は、上記各モードM1〜M5からリード/ライトモードM0に復帰するのに要する時間の一例を示す。
図6は、上記モードM0〜M5と、HDD10が当該モードM0〜M5に設定された場合に、当該HDD10内のCPU130の制御によって設定されるSATAパワーセーブモードとの関係を示す。図6の例では、ATAパワーセーブモード(ATAインタフェースモード)がリード/ライトモードM0の場合、SATAパワーセーブモード(SATAインタフェースモード)はアイドル(Idle)モードM11に設定される。また、ATAパワーセーブモードがアクティブ・アイドルモードM1またはパフォーマンス・アイドルモードM2の場合、SATAパワーセーブモードはパーシャル(Partial)モードM12に設定される。但し、パフォーマンス・アイドルモードM2はアクティブ・アイドルモードM1からしか遷移しないため、パフォーマンス・アイドルモードM2への遷移時には、パーシャルモードM12が継続されることになる。また、ATAパワーセーブモードがローパワー・アイドルモードM3、スタンバイモードM4またはスリープモードM5の場合、SATAパワーセーブモードはスランバ(Slumber)モードM13に設定される。
次に、図1のシステムにおける動作を、HDD10内のHDD本体11においてホスト20からのコマンドを受信した場合に行われるパワー制御を例に、図7のフローチャートを参照して説明する。
今、ホスト20のホスト本体21からATAバス23にATAインタフェース規格に準拠したHDD10宛てのコマンドが送出されたものとする。このATAバス23上のコマンドはホスト20のSATAインタフェース制御回路22で受信される。SATAインタフェース制御回路22のリンク/トランスポート層処理部222は、受信コマンドをSATAインタフェース規格に準拠したコマンド(SATAバス30の信号規則)に変換してSATAバス30に送出する。このSATAバス30上のコマンドはHDD10のSATAインタフェース制御回路12で受信される。SATAインタフェース制御回路12のリンク/トランスポート層処理部122は、受信コマンドをATAインタフェース規格に準拠したコマンド(ATAバス13の信号規則)に変換してATAバス13に送出する。このATAバス13上のコマンドはHDD10のHDD本体11に設けられたHDC119で受信される。HDC119からは、SATAインタフェース制御回路12がホストとして認識される。HDC119によって受信されたコマンドはCPU130に渡される。
CPU130は、HDC119から渡されたコマンドを受け取ると、当該コマンドの受信時刻を表すコマンド受信時刻情報をバッアァRAM120内のコマンド受信時刻記憶領域120bに格納する(ステップS1)。次にCPU130は、受信コマンドが予め定められたコマンドの1つであるか否かを判定する(ステップS2)。ここで、予め定められたコマンドは、パワーセーブに関係するコマンドであり、アイドルコマンド、スタンバイコマンド、及びスリープコマンドである。
受信コマンドが予め定められたコマンドの1つである場合、CPU130は以下に述べる処理を実行する。まずCPU130は、受信コマンドを解釈して当該コマンドの指示する動作を実行する(ステップS3)。つまり、受信コマンドがアイドルコマンドである場合、CPU130はHDD10のATAパワーセーブモードをローパワー・アイドルモードM3に遷移させる。また、受信コマンドがスタンバイコマンドである場合、CPU130はHDD10のATAパワーセーブモードをスタンバイモードM4に遷移させる。また、受信コマンドがスリープコマンドである場合、CPU130はHDD10のATAパワーセーブモードをスリープモードM5に遷移させる。
CPU130は、受信コマンドを実行し終えて、当該コマンドの実行完了を確認すると、当該コマンドの実行完了をホスト20に報告するための処理を行う(ステップS4)。即ちCPU130は、コマンド実行完了を示す応答ステータスをステータスレジスタ119aに設定して、ATAバス13に割り込み信号を送出する。SATAインタフェース制御回路12は、この割り込み信号に応じて、HDC119内のステータスレジスタ119aの内容をリードする。SATAインタフェース制御回路12は、リードしたステータスレジスタ119aの内容をもとに、SATAインタフェース規格に準拠したコマンド実行完了報告をSATAバス30を介してホスト20に送出する。ホスト20内のSATAインタフェース制御回路22は、SATAバス30上のコマンド実行完了報告を受信すると、ホスト本体21に対してATAバス23を介して割り込み信号を送出する。ホスト本体21は、この割り込み信号に応じてSATAインタフェース制御回路22からコマンド実行完了報告(コマンド完了応答)を受け取る。
さて本実施形態では、ホスト20からHDD10に送られたコマンドが、予め定められたコマンド、即ちパワーセーブに関係するコマンドの1つである場合、CPU130はSATAインタフェース制御回路12に対し、SATAパワーセーブモードの制御(つまりATAバス13のパワー制御)を実行する。ここでは、アイドルコマンド、スタンバイコマンド、またはスリープコマンドの場合、いずれもスランバモードM13に遷移するように制御される。
CPU130によるSATAパワーセーブモードの制御は、SATAインタフェース規格に準拠したSATAパワーセーブモードを指定する信号パターンが設定されたプリミティブをATAバス13を介してSATAインタフェース制御回路12のリンク/トランスポート層処理部122(に含まれているリンク処理部)に送信することにより実現される。なお、SATAインタフェース制御回路12内にSATAパワーセーブモードの制御のための制御レジスタを設け、当該レジスタをCPU130から制御することにより、SATAバス30を目的のSATAパワーセーブモードに遷移させても良い。
本実施形態では以下に示す理由により、ATAパワーセーブに関係するコマンドの実行完了の報告(コマンド完了応答)後、対応するSATAパワーセーブモードに直ちに遷移させる構成を適用していない。まず、コマンド実行完了報告後に、SATAバス30を即時にスランバモードM13に遷移させると、当該スランバモードM13の定義から、コマンドの応答に対して最大10msの復帰時間を要する。ここで、ホスト20がスタンバイコマンド、例えばスタンバイ・イミーディエットコマンドをHDD10に対して発行し、しかる後にチェックパワーモードコマンドを用いてHDD10内のSPM113の停止を確実に監視しようという場合を想定する。この場合、スタンバイ・イミーディエットコマンドの実行完了報告(コマンド完了応答)後、SATAパワーセーブモードを即時にスランバモードM13に移行してしまうと、引き続くチェックパワーモードコマンドに対する完了応答の速度が低下してしまう。このため本実施形態では、コマンド完了応答後にSATAバス30を無条件で即時にスランバモードM13に遷移させることはしない。
このことについて、更に詳細に説明する。まず、スタンバイ・イミーディエットコマンドの終了時点で即時にスランバモードM13に遷移した場合に、その直後にホスト20がHDD10に対してチェックパワーモードコマンドを発行したものとする。この場合、チェックパワーモードコマンドの発行時点には、SATAバス30は既にスランバモードM13移行している。この状態でSATAバス30を通してホスト20からHDD10のHDC119にコマンドが伝達されるためには、当該SATAバス30が通信可能な状態、つまりアイドルモードM11に復帰されなければならない。このとき、ホスト20内のSATAインタフェース制御回路22では、チェックパワーモードコマンドに応じて、SATAインタフェースの状態遷移規則に従って復帰手順が実施される。この場合、ホスト20では、チェックパワーモードコマンドの完了応答が、SATAバス30の復帰時間だけ遅くなったように認識される。
さて、ホスト20から発行されたコマンド(チェックパワーモードコマンド)は、当該コマンドの発行に応じて、SATAバス30の状態がスランバモードM13(パワーセーブ状態)からアイドルモードM11に復帰し、ホスト20とHDD10との間の交信が可能となった後にHDD10に到達する。そして、SATAインタフェース制御回路12のリンク/トランスポート層処理部122(に含まれているトランスポート層処理部)が作動して、HDD10内のHDC119に対してコマンドを発行する。このため、ホスト20から発行されたコマンドは、SATAバス30の復帰時間だけ遅れてHDD10内のHDC119に到達する。しかし、HDC119は、その遅れを認識できない。
そこで本実施形態では、HDD10内のCPU130は、SATAパワーセーブモードを制御しようとする場合、まずバッアァRAM120のコマンド受信時刻記憶領域120bに記憶されているコマンド受信時刻情報の示す例えば一定個数のコマンド受信時刻の系列から、コマンドの受信頻度を算出する(ステップS7)。ここで、コマンド受信頻度には、例えばコマンド受信時刻系列で示されるコマンド受信時間間隔の平均値、或いは最も確率の高いコマンド受信時間間隔を用いることができる。なお、一定個数のコマンド受信時刻の系列に代えて、現在時刻を基準とする一定時間内に受信されたコマンド受信時刻の系列を用いても構わない。
CPU130は、算出されたコマンド受信頻度(コマンド受信時間間隔)から、今回受信したコマンドで決まるSATAパワーセーブモードに遷移するタイミングを決定し、そのタイミングが到来するのを待って、当該SATAパワーセーブモードへの遷移を制御する(ステップS8)。ここでは、算出されたコマンド受信頻度、つまりコマンド受信時間間隔をTcとすると、CPU130は時間Tcを待っても次のコマンドがHDC119で受信されなかった場合に、SATAバス30を、今回受信したコマンドで決まるSATAパワーセーブモードにSATAインタフェース制御回路12によって遷移させる(ステップS9)。これにより、ATAパワーセーブ系のコマンドの実行時に、当該コマンドで決まるSATAパワーセーブモードへの遷移を制御しても、ホスト20から次のコマンドが送られた場合に、当該次のコマンドに対する完了応答が遅れることを防止できる。
なお、ATAパワーセーブ系のコマンドの後にホスト20からHDD10にチェックパワーモードコマンドが発行される可能性が高いことを考慮して、ATAパワーセーブ系のコマンドの完了応答後に、CPU130がSPM113の停止状態を確認し、その確認時点から予め定められた一定時間後にスランバモードM13への遷移を制御するようにしても、次のコマンドに対する完了応答が遅れることを防止できる。また、SPM113の再起動を必要としないコマンドを最も最近に受信した時点から一定時間後にスランバモードM13への遷移を制御するようにしても良い。また本実施形態では、ホスト20からのATAパワーセーブ系のコマンドが、アイドルコマンド、スタンバイコマンドコマンドまたはスリープコマンドのいずれの場合にも、SATAパワーセーブモードをスランバモードM13としている。しかし、コマンドの種類、或いはSATAインタフェース制御回路12の構成(アイドルモードM11に復帰する能力)によっては、より短時間で復帰できるパーシャルモードM12に遷移するようにしても良い。
さて本実施形態では、HDD10における消費電力を低減するために、図3に示すように、ホスト20からのATAパワーセーブ系のコマンドとは別に、HDD10内部で自律的にATAパワーセーブモードの遷移が行われる構成が適用されている。つまり、HDD10内のCPU130は、リード/ライトモードM0でのリード/ライト実行が終了すると、直ちにリード/ライトモードM0からアクティブ・アイドルモードM1に遷移させる。またアクティブ・アイドルモードM1への遷移後、一定時間T1を経過してもホスト20から新たなコマンドが送られなかった場合には、HDD10内のCPU130はアクティブ・アイドルモードM1からパフォーマンス・アイドルモードM2に遷移させる。またパフォーマンス・アイドルモードM2への遷移後、一定時間T2を経過してもホスト20から新たなコマンドが送られなかった場合には、CPU130はパフォーマンス・アイドルモードM2からローパワー・アイドルモードM3に遷移させる。ここで、上記時間T1,T2を、先に述べたコマンド受信頻度(コマンド受信時間間隔)から、例えば一定周期で動的に変更すると良い。
本実施形態では、このHDD10内部でのCPU130の制御による自律的なATAパワーセーブモードの遷移時に、図3に示すように、その遷移に連動してSATAパワーセーブモードも遷移させている。具体的には、リード/ライトモードM0からアクティブ・アイドルモードM1への遷移時に、アイドルモードM11からパーシャルモードM12に遷移される。また、アクティブ・アイドルモードM1からパフォーマンス・アイドルモードM2に遷移した場合には、パーシャルモードM12が継続される。また、パフォーマンス・アイドルモードM2からローパワー・アイドルモードM3の遷移時には、パーシャルモードM12からスランバモードM13に遷移される。ローパワー・アイドルモードM3では、ヘッド112はディスク111から外れた退避箇所に移動される。HDD10が、この状態になると、その後ホスト20からリード/ライトコマンドが与えられた場合に、リード/ライトモードM0に復帰するにのに要する時間は30ms以上(図6参照)と比較的長い。そこで、このような場合に、本実施形態のようにSATAバス30をスランバモードM13に設定してSATAバス30(SATAインタフェース)での消費電力を抑えることは有効である。
ホスト20からHDD10へのアクセスは時系列的に集中、或いは分散の傾向がある。例えばコマンド受信時間間隔が非常に短い状態が続いた後に、一定時間を超えてコマンドが受信されないことがある。このような場合、CPU130が、ホスト20におけるアプリケーションの実行が終了したものと推定して、比較的短時間で消費電力を下げるATAパワーセーブモードに設定すると良い。また、コマンド受信時間間隔は比較的長いものの、その状態が長時間続く場合、つまり継続してHDD10がアクセスされる場合には、CPU130が消費電力を下げる状態にするまでの時間が比較的長いATAパワーセーブモードに設定すると良い。ここでも、これらのSATAパワーセーブモードと連動してSATAパワーセーブモードを制御すると良い。
また、本実施形態では、SATAパワーセーブモード(SATAバス30のパワーセーブ)がHDD10内のCPU130によって制御される。しかし、この制御が、SATAインタフェース制御回路12によって行われる構成とすることも可能である。図8は、SATAインタフェース制御回路12によってSATAパワーセーブモードが制御される場合の状態遷移を示す。今、ホスト20からのコマンドがSATAインタフェース制御回路12で受信された結果、SATAバス30がアイドルモードM11に遷移(復帰)したものとする。このアイドルモードM11への遷移時点から一定時間Tを経過しても新たなコマンドがホスト20から送られなかった場合、SATAインタフェース制御回路12は、SATAバス30をアイドルモードM11からパーシャルモードM12に遷移させる制御を行う。このパーシャルモードM12への遷移時点から一定時間Tを経過しても新たなコマンドがホスト20から送られなかった場合、SATAインタフェース制御回路12は、SATAバス30をパーシャルモードM12からスランバモードM13に遷移させる制御を行う。このスランバモードM13は、新たなコマンドがホスト20から送られるまで継続される。ここで、一定時間Tは、タイマ(時間計測手段)を用いて計測すれば良い。なお、アイドルモードM11からパーシャルモードM12に遷移した場合、新たなコマンドがホスト20から送られるまで当該パーシャルモードM12が継続される構成としても良い。またアイドルモードM11から直接スランバモードM13に遷移させる構成とすることも可能である。また、このSATAインタフェース制御回路12によるSATAパワーセーブモード制御機能を、HDD10内のHDC119に持たせることも可能である。
本実施形態では、SATAパワーセーブモードの制御(SATAバス30のパワーセーブ)がHDD10側から(つまりHDD10の主導により)行われる。このSATAパワーセーブモードの制御のためには、HDD10側のSATAインタフェース制御回路12だけでなく、ホスト20側のSATAインタフェース制御回路22も共にSATAパワーセーブモードに対応していること(つまりSATAパワーセーブ機能をサポートしていること)が必要となる。もし、SATAインタフェース制御回路22がSATAパワーセーブモード(パーシャルモードM12及びスランバモードM13の各モード)に対応していない場合、指示されたSATAパワーセーブモードへの遷移は不可能となる。この状態については、SATAバスにより相互接続されたSATAインタフェース制御回路(本実施形態では、SATAインタフェース制御回路12及び22)相互の動作で知ることができる方法が、SATAインタフェース規格で定義されている。今、HDD10がSATAバス30を介して接続されているホスト20が、スランバモードM13に対応していない(SATAインタフェース制御回路22を含む)ものとする。この場合、HDD10側からスランバモードM13への移行指示(を表すパターンを含むプリミティブ)がホスト20に発行される都度、当該ホスト20(内のSATAインタフェース制御回路22)からはスランバモードM13への移行不能の応答が返される。このように、HDD10がSATAバス30を介して接続されているホスト20がSATAパワーセーブモードに対応していない場合、HDD10側からホスト20に対してSATAパワーセーブモードへの移行指示を発行しても、ホスト20からは常に移行不能の応答が返されるだけであり、SATAパワーセーブモードの制御は失敗する。つまり、HDD10がSATAパワーセーブモードに対応していないホスト20とSATAバス30を介して接続されている場合、HDD10がSATAパワーセーブモードの制御を実行することは無駄である。
そこで本実施形態では、ホスト20から指示されたSATAパワーセーブモードへの移行不能の応答が返された場合、つまりSATAパワーセーブモードの制御に失敗した場合、HDD10内のCPU130は、バッアァRAM120内のフラグ記憶領域120aに記憶されているSATAパワーセーブ不可フラグFをON状態にする(ステップS9,S10)。これにより、次にSATAパワーセーブモードの制御が必要となった場合、CPU130はSATAパワーセーブ不可フラグFの状態を参照することで、SATAパワーセーブが不可であるか否かを判定することができる(ステップS5,S6)。SATAパワーセーブ不可フラグFがON状態にある場合、CPU130はSATAパワーセーブが不可であると判定する。この場合、CPU130はSATAパワーセーブモードの制御の実行(ステップS7,S8)を控える。これにより、ホスト20のSATAインタフェース制御回路22がSATAパワーセーブモードに対応していないにも拘わらずに、不要なSATAパワーセーブモードの状態遷移のための制御が行われることを防止でき、シリアルATAバス30の動作を安定させることができる。
HDD10及びホスト20の双方がSATAパワーセーブモードに対応している場合、ホスト20側から(つまりホスト20の主導により)SATAパワーセーブモードを制御することも可能である。しかし、HDD10内では、ホスト20からのATAパワーセーブ系のコマンドとは別に自律的にATAパワーセーブモードへの状態遷移が行われている。したがって、このHDD10内のATAパワーセーブモードに無関係にホスト20側からSATAバス30のSATAパワーセーブモードを制御するよりも、上記実施形態のようにHDD10内のATAパワーセーブモードに連動させてHDD10側からSATAバス30のSATAパワーセーブモードを制御する方が、HDD10内のATAパワーセーブモードに適したSATAパワーセーブモードを設定することができる。
上記実施形態では、本発明をHDD(磁気ディスクドライブ)を備えたシステムに適用した場合について説明した。しかし本発明は、光ディスクドライブ、光磁気ディスクドライブなどHDD以外のディスクドライブを備えたシステム、更にはディスクドライブ以外の電子機器を備えたシステムでも、SATAインタフェースを持つ電子機器を備えたシステムであれば、適用可能である。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。