(57)【特許請求の範囲】
【請求項１】
ホストから転送されてきたデータを記憶するデータ記憶装置であって、
前記データ記憶装置の記憶するデータを読み出すためのReadコマンドを前記ホストから受信すると、該データ記憶装置のディスク媒体からデータを読み出す準備を完了しデータ転送可能となるタイミングを算出するタイミング算出手段と、
前記ディスク媒体からデータを読み出す準備を行っている間に実行可能な、複数のNCQコマンドのData Serviceについて、それぞれのData Serviceの実行終了時刻が算出された前記タイミング以前である場合に該Data Serviceを実行する制御手段と、
を含むデータ記憶装置。
【請求項２】
前記制御手段は、
前記NCQコマンドのData Serviceが実行されていない場合でかつ算出された前記タイミングに基づいて前記ホストへのインタフェースをパワーセーブ状態にする時間があると判断される場合には該インタフェースをパワーセーブ状態にし、該インタフェースがデータの転送が不可能なパワーセーブ状態にある場合には、算出された前記タイミングに合わせてデータ転送可能な状態に復帰させる第２の制御手段と、
を含む請求項１記載のデータ記憶装置。
【請求項３】
ホストから転送されてきたデータを記憶するデータ記憶装置の制御方法であって、
前記データ記憶装置の記憶するデータを読み出すためのReadコマンドを前記ホストから受信すると、該データ記憶装置のディスク媒体からデータを読み出す準備を完了しデータ転送可能となるタイミングを算出し、
前記ディスク媒体からデータを読み出す準備を行っている間に実行可能な、複数のNCQコマンドのData Serviceについて、それぞれのData Serviceの実行終了時刻が算出された前記タイミング以前である場合に該Data Serviceを実行する、
データ記憶装置の制御方法。
【請求項４】
前記NCQコマンドのData Serviceが実行されていない場合でかつ算出された前記タイミングに基づいて前記ホストへのインタフェースをパワーセーブ状態にする時間があると判断される場合には該インタフェースをパワーセーブ状態にし、該インタフェースがデータの転送が不可能なパワーセーブ状態にある場合には、算出された前記タイミングに合わせてデータ転送可能な状態に復帰させる、
請求項３記載のデータ記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストからのReadコマンドを処理する際のデータ記憶装置の制御に関する。
【背景技術】
【０００２】
光ディスク、磁気テープ、半導体メモリなど様々な形態のデータ記憶装置が知られている。その中で、磁気ディスクで構成されるハードディスク装置（Hard Disk Drive：以下ＨＤＤ）は、最も基本的かつコンピュータシステムには必須なデータ記憶装置の一つである。
【０００３】
ＨＤＤを構成する磁気ディスクは同心円状に形成された複数のトラックを有し、各トラックは複数のセクタに分割されている。各セクタにはセクタのアドレス情報とデータが記憶される。磁気ディスクが毎分数千回転もの速度で回転し、アクセスアームがセクタのアドレス情報に基づいて中心方向または外側へ移動し、アクセスアームの先端のヘッドからデータが読み取られる（図１２参照）。データは信号として読み出され、信号処理回路によって波形整形や復号処理などの所定の信号処理が施され、ホストに送信される。ホストから書き込みデータなどが転送されてくる場合には、信号処理回路等によってデータが同様に処理され、磁気ディスクに書き込まれる。
【０００４】
ＨＤＤとホスト間のデータ転送のためのインタフェースとして、SCSIインタフェースやATAインタフェースなどのプロトコルが一般に使用されている。特にATAインタフェースにおいては、近年、従来採用されていたパラレル転送方式をシリアル転送方式に変更したSerial ATA（以下、SATA）が提案されている。これにより、シンプルなケーブルで高速な転送速度を実現することが可能となっている。
【０００５】
しかしながら、SATAでは、ホストとの間でシリアル通信を維持するため、従来のパラレル転送方式の場合の消費電力に加え、新たな電力が必要となる。そのために、SATAにおいては、パラレル転送方式の場合と同程度の消費電力に抑えるためのPower Save機能が備わっている。そのPower Save機能のうちの一つとして、Device Initiated SATA Power Management(DIPM)がある。DIPMは、常に電力を消費しているInterface  信号を、通信が行われていないときに必要最小限にして電力を抑えるものである。
【０００６】
DIPMの制御方法は、Read Seek内でPower Saveが実施されると、ターゲットセクタがReadできたときにPower Save状態から復帰(Wake up)するというものである。このWake UP（Power Save状態からの復帰）時間がオーバヘッドとなり、ホストへのデータ転送（Data transfer）の開始が遅れてしまう。その結果、特に小セクタサイズのReadコマンドのパフォーマンスが低下してしまう。
【０００７】
このようなReadコマンドのパフォーマンスの低下の例を図１３に示す。図１３内のRatio INTとは、Read Seekなどの磁気ディスクからのデータ読み出しの準備が完了し、ホストへのデータ転送が開始可能となったタイミングを意味しており、ホスト／ディスクそれぞれの転送レートに関係している。
【０００８】
図１３に示すように、Read Seek内でDIPMのPower Saveが行われ、ターゲットセクタがReadできたタイミングでRatio INTとなり、Power Save状態から復帰（Wake up）している。この復帰（Wake UP）時間はデータ転送を行うことはできないため、その分遅延（Delay）が生じてしまっている。このように、従来のDIPM制御方法では、Ratio INTのタイミングでPower Save状態から復帰するため、データ転送開始が遅れ、パフォーマンスが低下し
てしまうという問題があった。
【０００９】
また、ＨＤＤのパフォーマンスを向上させる技術としてNative Command Queuing（以下、NCQ）がある。NCQとは、ホストがＨＤＤへ発行する制御コマンドのひとつで、ＨＤＤの命令をキューに蓄えていき、ＨＤＤの回転やヘッドシーク動作を最小限に抑えるよう命令を並べかえて実行することで、データのアクセス速度を向上させる技術である。
【００１０】
NCQの制御方法は、Read Seek中およびRatio INT前であれば、無条件にNCQコマンドのData Serviceを実行するというものである。図１４にNCQによるReadコマンドのパフォーマンスの低下の例を示す。
【００１１】
図１４において、Read Seek中およびRatio INT前であるためNCQコマンドのData Service-1〜Data Service-3を実行している。これにより、ターゲットセクタをReadし、データ転送可能であってもData Serviceを継続してしまい、Readコマンドのホストへのデータ転送開始が遅れて（Delay）しまっている。このように、本来ＨＤＤのパフォーマンスを向上させるはずの技術が、逆にＨＤＤのパフォーマンスを低下させてしまう問題が発生していた。
【００１２】
特許文献１、特許文献２、特許文献３は、ＨＤＤのパフォーマンスの低下を防止しながら消費電力を低減させる方法について開示している。特許文献１および特許文献２は、バスを開放している時間内に実施できる作業を選ぶことでＨＤＤのパフォーマンスを低下させない方法を提案しており、特許文献３はHOST Initiated SATA Power Management(HIPM)におけるＨＤＤのパフォーマンスの低下を防止するパワー・セーブ・モードを提案している。
【特許文献１】特開２００６−１３９５４８号公報
【特許文献２】特開２００６−１３９４５９号公報
【特許文献３】特開２００６−１６４０１２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明の課題は、SATA ＨＤＤにおいて、Read Seek動作中に実行される機能について改善し、ＨＤＤのパフォーマンス向上を図るとともに消費電力をできる限り抑えることにある。
【００１４】
詳しくは、SATA ＨＤＤのRead Seek動作中に実行されるDIPMのPower Saveをパフォーマンスを維持しつつ実行可能なＨＤＤを提供することにある。
また、SATA ＨＤＤのRead Seek動作中に実行されるNCQコマンドのData Serviceについて、ＨＤＤのパフォーマンスを低下させることなく実行するＨＤＤを提案する。
【課題を解決するための手段】
【００１５】
このＨＤＤの特徴は、ホストからReadコマンドを受信した時点で、Ratio INTのタイミングを算出し、算出したRatio INTのタイミングがデータ転送可能なタイミングになるようにPower Save状態から復帰（Wake UP）するところにある。これにより、データ転送が可能となるタイミングでデータ転送を開始できるため、ＨＤＤのRead コマンドのパフォーマンスを低下させることがない。
【００１６】
また、このＨＤＤの特徴は、ホストからReadコマンドを受信した時点で、Ratio INTのタイミングを算出し、キューに溜まっているData Serviceの実行終了時刻と算出したRatio INTのタイミングを比較し、Data ServiceがRatio INTのタイミングの前に実行可能であれば該Data Serviceを実行するところにある。これにより、データ転送が可能となるタイミングでデータ転送を開始できるため、NCQコマンドのData Serviceの実行によってＨＤＤのReadコマンドのパフォーマンスを低下させることがない。
【発明の効果】
【００１７】
従来のDIPMのPower Saveでは、ＨＤＤのRead コマンドにおいてデータ転送開始に遅延が発生するというように、パフォーマンスを犠牲にして消費電力を削減する場合があった。しかし、実施例のＨＤＤによれば、ホストからReadコマンドを受信した時点で、Ratio INTのタイミングを算出し、算出したRatio INTのタイミングがデータ転送可能なタイミングになるように、Power Save状態から復帰（Wake UP）するため、パフォーマンスを維持しながら効率よく消費電力を低減することができる。
【００１８】
また、従来のNCQコマンドのData Serviceでは、Read Seek動作中のBusが使用されていない間にData Serviceを行うため、パフォーマンス改善には効果的であったが、使用を誤ると却ってパフォーマンスを低下させてしまう場合があった。実施例のＨＤＤによれば、ホストからReadコマンドを受信した時点で、Ratio INTのタイミングを算出し、キューに溜まっているData Serviceの実行終了時刻とRatio INTのタイミングを比較し、Data ServiceがRatio INTのタイミングの前に実行可能であれば該Data Serviceを実行し、実行不可の場合には実行せずにバスをキープしRatio INTのタイミングで即データ転送を始められるため、ＨＤＤのパフォーマンスを低下させることがない。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して、本発明の実施の形態について説明する。
尚、本発明は以下の実施の形態に限定されるものではなく、これから説明する各構成と同等の機能を実現するものであればいずれのものであってもよいことは言うまでもない。
【００２０】
まず、図１に本発明の実施の形態であるＨＤＤのハードウェア構成を示す。
ＨＤＤ（ハードディスクドライブ）１は、コンピュータやデジタル・カメラなど、データ処理を行う上位機器(ホスト)１７からSATA Interface１８を介して伝送されたデータを記憶する記憶装置である。
【００２１】
ＨＤＤ１は、ディスク媒体１５と、ディスク媒体１５の記録面に対応するRead/Write用の磁気ヘッド１４、ヘッドアクチュエータを実際に動かすヴォイスコイルモータ（ＶＣＭ）１２、ディスクを回転させるスピンドルモータ（ＳＰＭＭ）１３、を備え、ディスク媒体１５へのデータの書き込み及びディスク媒体１５のデータ読み出しのために、これらの要素を制御するコントローラとしてサーボ制御部１１およびヘッドＩＣ７を備えている。
【００２２】
また、更に、ホスト１７とのインタフェースであるSATA Interface１８を制御するホストインタフェース（ＩＦ）制御部２、ディスク媒体１５に書き込むデータやディスク媒体１５から読み出されたデータやホストから転送されてきたデータを一時的に保存するバッファメモリ４および該バッファメモリ４を制御するバッファ制御部３、ホスト１７から転送されたデータまたはホスト１７へ転送されるデータに必要なデータ処理を行うフォーマット制御部５、データの書き込み、読み出しに合わせてデータをライト信号またはリード信号に変換するリード／ライトチャネル６、を備えている。そして、これらのＨＤＤ１の各要素は、バス１６で相互に接続しており、ＭＰＵ（Micro Processor Unit）８が、不揮発メモリ（ＦＲＯＭ）１０に格納された制御用プログラムを、メモリ９を用いて実行することで制御される。尚、メモリ９はＭＰＵ８の処理に用いられるとともに、制御用データなども格納されている。
【００２３】
本実施例は、ＭＰＵ８が制御用プログラムを実行することによって実現されるもので、Readコマンドをホストから受信した際にディスク媒体１５からデータを読み出し可能とな
るタイミングにあわせて、ＨＤＤ１がデータ転送可能となるようにＨＤＤ１を動作させることでＨＤＤ１のパフォーマンスの低下を防いで消費電力を削減するものである。
【００２４】
図２に、ＭＰＵ８で実行されるプログラムの構成を示す。
すなわち、ＭＰＵ８で実行されるプログラムは、タイミング算出手段２１、DIPM制御手段２２、NCQ制御手段２３を備える。
【００２５】
タイミング算出手段２１は、ホスト１７から、ＨＤＤ１のディスク媒体１５からデータを読み出すためのReadコマンドを受信すると、ディスク媒体１５からデータを読み出しデータ転送可能となるRatio INTのタイミング、および、該算出したRatio INTに基づいて、DIPM（Device Initiated SATA Power Management）機能によるPower Saveを行う場合にRatio INTにあわせてデータ転送可能となるようにWake UP（復帰）するタイミング（Wake UP Timing）を算出する。
【００２６】
DIPM制御手段２２はDIPMのPower Saveの実行や、タイミング算出手段２１が算出したタイミングに基づいてホストＩＦ制御部２に制御命令を送信しDIPMのPower Saveを停止してWake UP（復帰）させるなどの制御を行う。
【００２７】
NCQ制御手段２３は、タイミング算出手段２１が算出したタイミングに基づいて、Read Seek動作中に実行するためにメモリ９にキューイングされたNCQコマンドの実行を制御する。
【００２８】
さて、以下に図１に示したＨＤＤ１の動作を制御する図２の制御プログラムについて、実施例１〜実施例３を示して詳細に説明する。
実施例１は、図２のタイミング算出手段２１とDIPM制御手段２２に注目して説明するものであり、実施例２はタイミング算出手段２１とNCQ制御手段２３に注目して説明するものであり、実施例３は具体的な動作例を示すものである。
【００２９】
さて、まず実施例１について、図３〜図５を参照して説明する。
まず、ＨＤＤ１がホスト１７からReadコマンドを受信すると、ＨＤＤ１のＭＰＵ８はＶＣＭ１２やＳＰＭＭ１３、ヘッド１４を動作させるための制御プログラムの実行や、制御命令のサーボ制御部１１やヘッドＩＣ７への送信を行い、ディスク媒体１５からデータ読み出し可能となるようにRead Seek動作を始めるが、ここではその説明は省略する。
【００３０】
ＨＤＤ１のRead Seek動作が開始すると、タイミング算出手段２１は、Disk Read動作におけるデータ転送を開始可能となるタイミング、Ratio INT（図３のRatio INT参照）を算出する。また、DIPMのPower Saveを行った場合に、算出したRatio INTに合わせてSATA Interface１８にデータ転送を開始できるようにWake UP（復帰）するタイミング（図３のWake UP Timingを参照）を算出する。
【００３１】
一方、DIPM制御手段２２はＨＤＤ１がホスト１７からReadコマンドを受信すると、SATA
Interface１８へのInterface信号を必要最小限とするパワーセーブ状態となるようにホストＩＦ制御部２を制御する。そして、タイミング算出手段２１が算出したWake UP Timingに合わせて、SATA Interface１８へのInterface信号がデータ転送に必要な状態となるようにホストＩＦ制御部２を制御する。
【００３２】
以下に、タイミング算出手段２１が算出するRatio INTおよびWake UP Timingについて説明する。
図３において、ディスク媒体１５からデータを読み出す処理時間について説明したものがDisk Read（図３上側）である。Disk Readの処理時間は、Seek Time(t0), Rotation Wa
it(t1),  Disk Read(t3)から成る。
【００３３】
図３のSeek Time(t0)は、ＶＣＭ１２やＳＰＭＭ１３などのモータの性能などによって予め決定されているシリンダ移動時間である。このシリンダ移動時間は、ＨＤＤ１のメモリ９に予め格納されている。
【００３４】
また、Rotation Wait(t1)は、Seek後、ターゲットセクタに到達するまでの回転待ち時間である。図４に基本的な考え方を示す。Rotation Wait(t1)は、Seek 開始時のセクタおよびターゲットセクタのそれぞれの物理位置から求められる移動時間(t2)から、Seek Time(t0)を引いた時間で求められる（図４、Case-1およびCase-2参照）。なお、移動時間(t2) > Seek Time(t0)  の場合は単純にRotation Wait (t1) = 移動時間(t2) -Seek Time(t0)でよいが、移動時間(t2) < Seek Time(t0)の場合には、Rotation Wait(t1) = ディスク１回転時間 - (移動時間(t2) - Seek Time(t0))によって計算される。尚、精度が落ちてしまうが、Rotation Wait(t1)として固定値を使用してもよい。この場合は、Seek Time(t0)と同様にＨＤＤ１のメモリ９に固定値が予め格納されている。
Disk Read(t3)は、ターゲットセクタが位置するトラックの記録密度から算出される時間である。ディスク媒体の記録密度にはばらつきがあるが、メモリ９にはトラック毎の記録密度を記憶しておくテーブル等が備えられており、該テーブルを参照してターゲットセクタが位置するトラックの記録密度を取得し、読み出し時間Disk Read(t3)を求める。
以上のようにDisk Readの処理時間に関する時間Seek Time(t0), Rotation Time (t1),
Disk Read(t3)が求められる。
【００３５】
更に、Ratio INTは、Disk Readの処理時間からSATA Interfaceのデータ転送時間Data transfer(t5)を引いたもので求められる。データ転送時間は、SATA  Interfaceの速度(例えば、SATA=1.5G/3.0G BPS)から求められる。（このSATA Interfaceのスペックもメモリ９に格納されている。）
よって、
Ratio INT= Seek Time(t0)+Rotation Time(t1)+(Disk Read(t3)-Data transfer(t5))    
・・・式（１）
となる。
以上のように、タイミング算出手段２１は予め与えられた値などからRatio INTを算出する。
【００３６】
次に、算出したRatio INTに基づいてWake UP  Timingを求める。
図３に示したDisk Controlのうち図３（１）に示す処理時間のように、従来、データ転送が可能となるRatio INTのタイミングでWake UP（復帰）させていたため、復帰にかかる時間分だけデータ転送時間に遅延(delay)が生じていた。
【００３７】
よって、復帰にかかる時間Wake UP(t4)だけ早い時刻にWake UP Timingを設定すればよい。Wake UP(t4)は、ＨＤＤのスペックなどでパワーセーブ状態から復帰するまでの時間で、固定値である。ちなみに、SATA  ＨＤＤのスペック上では、Partial:10μｓ以内、Slumber:10ms以内と規格化されているが、パワーセーブの方法によって復帰時間が変わるため、決定されたパワーセーブ方法に対応する復帰時間を使用する。いずれにしてもWake UP(t4)は、シリンダ移動時間等と同様にメモリ９に格納されている値である。
よって、
Wake UP Timing  = Ratio INT - Wake UP(t4)            ・・・式（２）
を求めることができる。
【００３８】
以上のように、タイミング算出手段２１でRatio INTおよびWake UP Timingが算出され
、DIPM制御手段２２はWake UP TimingタイミングでSATA Interface１８を介してデータ転送可能となるように、必要最小限だったインタフェース信号を復旧させるようにホストＩＦ制御部２を制御する。
【００３９】
実施例１の動作例を図３（２）に示す。実施例１の動作では、Ratio INTのタイミングでデータ転送(Data transfer)が可能となっているため、遅延(delay)は発生せず、Read コマンドのパフォーマンスを維持したまま、効率よく消費電力を削減することが可能であることがわかる。
【００４０】
図５に、実施例１の場合のＨＤＤ１の動作フローを示す。
まず、Ｓ５１でReadコマンドを受信すると、Ｓ５２でRead Seekを開始する。Ｓ５３で、常に電力を消費しているInterface信号を、通信が行われていないときには必要最小限にするという、DIPMのPower Saveが開始される。Ｓ５４で、タイミング算出手段２１がRatio INTをおよびWake UP Timingを算出する。その後、DIPM制御手段２２は、Ｓ５５でWake UP Timingか否かを判断し、Wake UP Timingでなければ（Ｎ）そのままPower Saveを維持する。Wake UP Timingとなれば（Ｙ）、Ｓ５６で、Interface信号を通信が行われる状態に復帰させるようにホストＩＦ制御部２を制御する。これにより、ＨＤＤ１は、Ｓ５７でディスク媒体１５から読み出したデータのデータ転送を開始し、Ｓ５８でReadコマンドの処理を終了することができる。
【００４１】
次に、実施例２について図６、図７を参照して説明する。
実施例２は、Read Seek 動作中に実行されるNCQコマンドのData Serviceを開始するときに、実行中のReadコマンドのデータ転送の開始が遅延しないように、Data Serviceの実行がRatio INTの以前に終了するか否かを判断する。そしてRatio INTの以前に終了する場合には該Data Serviceを実行し、以前に終了しない場合には該Data Serviceを実行しない、という制御を行うものである。これについて図６を参照して説明する。
【００４２】
従来は、図６（１）の処理時間で示すように、ＨＤＤ１がReadコマンド受信後Read Seek中にキューにたまっているNCQコマンドのData Serviceを順次実行していた。図６（１）では、Data Service-1〜Data Service-3までを実行してしまっているため、データ転送が可能になったタイミングRatio INTになってもData Service-3の実行が終了していないため、データ転送を開始することができず、ＨＤＤ１のパフォーマンスが低下してしまっている。
【００４３】
よって、Read Seek中にNCQコマンドのData Serviceを実行する際に、該Data Serviceの実行終了時刻がデータ転送開始可能となるタイミングであるRatio INTより以前かどうかを判断して、Ratio INTより以前にData Serviceが終了するのであればそのデータサービスを実行するように制御すれば、ＨＤＤ１のパフォーマンスを維持することができる。このような制御を行うNCQ制御手段２３の動作について説明する。
【００４４】
NCQ制御手段２３は、各Data Serviceにかかる時間(Data Service(t))をもとめる。Data
Service(t)は、Data transfer(t5)と同様、SATA  Interfaceの速度(例えば、SATA=1.5G/3.0G BPS)を用いて算出される。すなわち、
Data Service(t) = SATA Interfaceの速度  ＋  α
、で求められる。“+α”はData Serviceまでに必要なコントロール時間である。Data Serviceの時間(Data Service(t))は、それぞれのData Serviceによって異なるが、これについてもメモリ９それぞれのData Serviceに対応する必要なコントロール時間がテーブル等で保存されており、これを用いてそれぞれのData Serviceの時間が算出される。
【００４５】
NCQ制御手段２３は、ＨＤＤ１でReadコマンドが受信されると、実施例１と同様にタイ
ミング算出手段２１が算出したRatio INTとData Serviceの終了時刻を比較し、Data Serviceの終了時刻がRatio INTのタイミングよりも以前であるならばそのData Serviceを実行するという制御を行う。また、他のData Serviceが発見されると、再度Ratio INTのタイミングと新なたなData Serviceの終了時刻とを比較し実行可能かを判断する。
【００４６】
つまり、NCQ制御手段２３は、
Ratio INT ≧  Data Service 終了時刻     ・・・式（３）の場合には、そのData Serviceを実行する。
【００４７】
Ratio INT ＜  Data Service 終了時刻  ・・・式（４）の場合には、そのData Serviceを実行せず、実行可能な対象コマンドを探し続ける。
という処理を行う。Ratio INTとData Serviceの終了時刻を比較し、実行可能であればData Serviceを実行するという動作は、複数回実行可能で、Ratio INT到達までにData Serviceを何回でも実行することが可能である。そして、Data Serviceが実行できる時間がなくなったときに、Ratio INTを待って、Read コマンドのデータ転送を開始する。
【００４８】
図６（２）は、実施例２の処理時間例を示すものである。実施例２の動作では、Data Serviceを実行する前に、実行するData Serviceの終了時刻がRatio INTの前か後かを判断するため、Data Service-1およびData Service-2は実行可能であるが、その後Data Service-3は実行せず、そのままバスをキープ（Bus Keep）し、Ratio INTを待つ。そのため、Readコマンドのデータ転送可能になるタイミングにあわせてデータ転送を開始することが可能で、遅延が生じることなくReadコマンドのデータ転送を行うことができることがわかる。
このように、実施例２によれば、Readコマンドのパフォーマンスの低下を防ぐとともに、効率よくNCQコマンドのData Serviceを実行することが可能である。
【００４９】
図７に、実施例２の場合のＨＤＤ１の動作フローを示す。
まず、Ｓ７０でReadコマンドを受信すると、Ｓ７１でRead Seekを開始する。Ｓ７２でタイミング算出手段２１がRatio INTを算出する。Ｓ７３でNCQ制御手段２３がキューにNCQコマンドのData Serviceがあるかどうか判断する。Data Serviceがある場合（Ｙ）、Ｓ７４に進み、Ｓ７４でData Serviceを実行可能であるか否か判断する。つまり、上述の式（３）、式（４）で実行可能かを判断し、実行可能の場合（Ｙ）にはＳ７５でData Serviceを実行し、Ｓ７６でData Serviceが終了するとＳ７３に戻る。Ｓ７４で、Data Serviceの実行が不可能であると判断された場合（Ｎ）にはＳ７７に進む。Ｓ７７では、Ratio INTであるかどうかを判断し、Ratio INTではない場合（Ｎ）には、そのままバスキープ（Bus Keep）の状態となる。Ratio INTとなると（Ｙ）、Ｓ７８に進み、ディスク媒体１５から読み出したデータの転送を開始し、Ｓ７９でRead コマンドの処理が終了する。
【００５０】
次に、実施例３について図８、図９を参照して説明する。実施例３はDIPM制御手段２２とNCQ制御手段２３の両方を含んだ構成である。
従来より、Read Seek動作中に実行するNCQコマンドのData ServiceとDIPM制御は同一タイミングで実行され、NCQコマンドを保持しているとき、つまりキューにNCQコマンドがたまっているとき、DIPM制御は実施しないという制御がなされている。しかし、Read Seek動作中にNCQコマンドのData Serviceが実行された後、実行可能なData Serviceが存在しない場合、十分な時間があればDIPMのPower Saveを実行し、消費電力を削減することが考えられる。そこで、上記実施例１および実施例２を組み合わせ、NCQコマンドのData Serviceの実行とDIPMのPower Saveの実行の両方を併用し、性能の向上および消費電力の削減に努める。
【００５１】
実施例３は、まずRead Seek動作中、NCQコマンドのData Serviceを開始し、その後、Read Seek動作中にData Serviceをこれ以上実行できなくなった際に、Power Saveする時間があればPower Saveを行う、というものである。
【００５２】
具体的には、次のようになる。
まず、タイミング算出手段２１は、実施例１および実施例２と同様にRatio INTおよびWake UP Timingを算出する。一方で、NCQ制御手段２３は、実施例２と同様にキューにたまっているNCQコマンドの Data Serviceについて、実行するのにかかる時間Data Service(t)を求める。そして、
Ratio INT ≧  Data Service 終了時刻     ・・・式（５）の場合には、そのData Serviceを実行させ、
Ratio INT ＜  Data Service 終了時刻  ・・・式（６）の場合には、そのData Serviceを実行しない、
という処理を行う。
【００５３】
更に、式（６）の場合（Data Serviceを実行させない）、DIPM制御手段２２がRatio INTまでにPower Save(t6)とWake UP(t4)の時間を確保できるかどうかを判断する。尚Power Save(t6)はPower Saveを行うために必要なコントロール時間のことで、予め規定されている値であり、メモリ９に格納されている。
【００５４】
DIPM制御手段２２は、
Ratio INT ≧ Power Save(t6) + Wake UP(t4) ・・・式（７）の場合には、Power Saveを実行させ、
Ratio INT ＜ Power Save(t6) + Wake UP(t4) ・・・式（８）の場合には、Power Saveを諦め、Ratio INTまでBus Keepし、Read コマンドのデータ転送(Data transfer)を開始する、
という処理を行う。
尚、式（７）でPower Saveを実行した場合には、実施例１のようにタイミング算出手段２１で算出されたWake UP TimingでWake UP（復帰）する。
【００５５】
図８に実施例３の動作例を示す。
まず、図８（１）の示す処理時間についてであるが、Seek動作中にNCQコマンドのData Service-1およびData Service-2を実行し、その後Bus KeepをしてRatio INTを待ちデータ転送(Data Transfer)を開始している。よって、データ転送に遅延は生じていないが、Bus
Keepをするため消費電力が削減されない。
【００５６】
次に、図８（２）の示す処理時間についてであるが、これは本実施例の処理時間を図８（１）に比較して示すものである。Read Seek動作中にNCQコマンドのData Service-1およびData Service-2を実行し、その後Power Saveする時間があるためPower Saveを実行し、その後Ratio INTのタイミングですぐにデータ転送が可能になるようにWake UP（復帰） している。これにより遅延を生ずることなくデータ転送を行っている。よって、ＨＤＤ１のパフォーマンスを低下させることなく、消費電力の削減が可能である。
【００５７】
また図８（３）の示す処理時間についてであるが、NCQコマンドのData Serviceの実行とDIPMによるPower Saveを単純に実行した場合の従来例である。NCQコマンドのData Service-1、Data Service-2を実行した後、Power Saveのコントロールに必要な時間を考慮せず、Power Saveをした後、Ratio INTのタイミングでWake UP（復帰）しているためにデータ転送開始までに遅延（Delay）が発生してしまっている。
【００５８】
これに対し、図８（４）に示す処理時間では、NCQコマンドのData Service-1、Data Service-2を実行した後、Power Saveのコントロールに必要な時間を考慮するため、Power Saveを実行せず、そのままバスキープ（Bus Keep）を行い、Ratio INTのタイミングでデータ転送が可能となっている。この場合には、消費電力の削減には貢献できないが、Ratio INTのタイミングでデータ転送を開始できるため、ＨＤＤ１のパフォーマンスを低下するのを防ぐことができる。
【００５９】
図９に、実施例３の図８に対応するＨＤＤ１の動作フローを示す。
まず、Ｓ９０でReadコマンドを受信すると、Ｓ９１でRead Seekを開始する。Ｓ９２で、タイミング算出手段２１がRatio  INTおよびWake UP Timingを算出し、Ｓ９３でNCQ制御手段２３がキューにNCQコマンドのData Serviceがあるかどうか判断する。Data Serviceがある場合（Ｙ）、Ｓ９４に進みData Serviceを実行可能であるか否か判断する。詳細は実施例２のＳ７４と同様である。実行可能の場合（Ｙ）にはＳ９５でData Serviceを実行し、Ｓ９６でData Serviceが終了するとＳ９３に戻る。Ｓ９４で、Data Serviceの実行が不可能であると判断された場合（Ｎ）にはＳ９７に進む。Ｓ９７では、DIPM制御手段２１が、DIPMのPower Saveのコントロールに必要な時間をRatio INTのタイミングまでに取れるか否かを判断する。つまり、式（７）および式（８）の条件式に基づいて判断する。Ｓ９７で、DIPMのPower Saveが可能であると判断された場合（Ｙ）にはＳ９８に進み、Ｓ９７で可能でないと判断された場合（Ｎ）にはＳ９９に進む。Ｓ９９では、Ratio INTであるかどうかを判断し、Ratio INTではない場合（Ｎ）には、そのままバスキープ（Bus Keep）の状態となる。Ratio INTとなると（Ｙ）Ｓ１０２に進み、ディスク媒体１５から読み出したデータの転送を開始し、Ｓ１０３でRead コマンドの処理が終了する。
【００６０】
Ｓ９７で、DIPMのPower Saveが可能であると判断され（Ｙ）、Ｓ９８に進んだ場合には、Ｓ９８でDIPMのPower Saveが実行される。その後、Ｓ１００で、Wake UP Timingか否かが判断される。これは、実施例１のＳ５５と同様の処理である。Ｓ１００でWake UP Timingではないと判断された場合（Ｎ）そのままPower Save状態を維持し、Ｓ１００でWake UP  Timingであると判断された場合（Ｙ）、Ｓ１０１に進みWake UP（復帰）する。その後ＨＤＤ１は、Ｓ１０２でディスク媒体１５から読み出したデータのデータ転送を開始し、Ｓ１０３でReadコマンドの処理を終了することができる。
【００６１】
更に、DIPM制御手段２２とNCQ制御手段２３を備える実施例３のＨＤＤ１の構成において、別の動作例について以下に述べる。図８に示した動作例は、ホスト１７からRead コマンドをＨＤＤ１が受信した際にキューにNCQコマンドがたまっていた場合であったが、Readコマンドを受信した際にはNCQコマンドがキューにたまっておらず、DIPMによるPower Saveを実行後NCQコマンドを受信した場合の動作例を図１０および図１１に示す。
【００６２】
まず、図１０（１）に示す処理時間についてであるが、従来Read Seek中のDisk ControlにおけるPower Save状態のときにNCQコマンドを受信すると、無条件に受信したNCQコマンドを実行していた。これにより、Data ServiceがRatio INTを跨ぐ形となり、実施するべきデータ転送（Data Transfer）の開始が遅れてしまい、ＨＤＤ１のパフォーマンスが低下してしまうことがあった。
【００６３】
図１０（２）および図１０（３）は実施例３によって、このような場合にパフォーマンスを改善できることを示したものである。
図１０（２）は、ＨＤＤ１がReadコマンドを受信した際にはNCQコマンドのData ServiceがキューにはなかったためPower Saveを実行し、途中でNCQコマンドのData Serviceを受信した場合を示すもので、該受信したNCQコマンドのData Serviceの実行がRatio INTの前に終了するため、そのData Serviceを実行した例を示したものである。
【００６４】
図１０（３）は、図１０（２）と同様に、ＨＤＤ１がReadコマンドを受信した際にはNCQコマンドのData Serviceがキューにはなく、途中でNCQコマンドのData Serviceを受信した場合で、該受信したNCQコマンドのData Serviceの実行がRatio INTの前に終了しないため、そのData Serviceの実行しなかった例を示すものである。更に、図１０（３）では、Data Serviceを実行する時間はなかったが、Power Saveをする時間はあったため（Ratio INT ≧ Power Save(t6) + Wake UP(t4)）に、Power Saveを実行している。また、Power Saveを実行した後、Ratio INTのタイミングでデータ転送可能となるようにWake UP（復帰）している。
【００６５】
このように、Read コマンド受信直後、NCQコマンドのData Serviceがキューに存在せずPower Saveを実行し、Power Save中にNCQコマンドを受信した場合に、該NCQコマンドを実行する時間がRatio INTまでに取ることができればそのコマンドを実行することが可能となり、ＨＤＤ１のパフォーマンスを向上させることができる。
【００６６】
また、図１０（４）は、従来例で、ＨＤＤ１がReadコマンドを受信した際にはNCQコマンドのData ServiceがキューにはなかったためPower Saveを実行し、途中でNCQコマンドのData Serviceを受信した場合で、NCQコマンドのData Serviceを実行する時間がなかったためにPower Saveをしたが、Wake UP（復帰）するまでに時間がかかり遅延(Delay)が発生してしまった場合を示している。
【００６７】
図１０（５）は、このような場合にもＨＤＤのパフォーマンスを改善できることを示したものである。
図１０（５）では、NCQコマンド受信の際、Power SaveしWake UP（復帰）するタイミングがRatio INTのタイミングに間に合うか否かが判断され、間に合わないと判断されたためそのままバスキープ（Bus Keep）してRatio INTのタイミングを待っている。これにより、ディスク媒体からデータを読み出しデータ転送が開始可能となったタイミングで遅延なくデータ転送を行っている。
【００６８】
以上のように、NCQコマンド受信後に、Data Serviceまたは、Power Saveが実行可能かどうかを判断してそれぞれの制御を実行することで、Read Seek動作中にホストからのRead コマンドに対応したデータ転送開始を遅延することなくことが可能である。
このように実施例３の構成のＨＤＤ１は、パフォーマンスを維持しながら、最適に消費電力の削減を行うことが可能である。
【００６９】
図１１に、図１０に対応するＨＤＤ１の動作フローを示す。
まず、Ｓ１１０でRead コマンドをホストから受信する。Ｓ１１１でRead Seekを開始する。Ｓ１１２でタイミング算出手段２１がRatio INTおよびWake UP Timingを算出する。Ｓ１１３でData Serviceが有るかどうか判断し、Data Serviceがある場合（Ｙ）には、Ｓ１１４に進む。Ｓ１１４では、Data Serviceが実行可能かどうか判断する。詳細は実施例２のＳ７４と同様である。実行可能の場合（Ｙ）、Ｓ１１５に進みData Serviceを実行し、Ｓ１１６でData Serviceを終了してＳ１１３に戻る。
【００７０】
Ｓ１１４で、Data Serviceが可能でない場合（Ｎ）には、Ｓ１１７に進む。Ｓ１１７では、図９のＳ９７と同様にDIPM制御手段２１が、DIPMのPower Saveのコントロールに必要な時間をRatio INTのタイミングまでに取れるか否かを判断する。必要な時間をとれず、実行可能でない場合（Ｎ）、Ｓ１１８に進む。Ｓ１１８はRatio INTのタイミングかどうかを判断し、そうでなければ（Ｎ）そのままバスキープし、Ｓ１１８でRatio INTのタイミングであると判断された場合（Ｙ）、Ｓ１２７に進む。
【００７１】
Ｓ１１７で、DIPMのPower Saveが実行可能である場合（Ｙ）、Ｓ１１９でPower Save状態となる。Power Saveの状態の間にNCQコマンドが受信されるとＳ１２０でData Serviceがあると判断され（Ｙ）、Ｓ１２１に進む。Ｓ１２１では、Data Serviceが実行可能かどうか判断され、実行可能な場合（Ｙ）、Ｓ１２２に進みWake UP（復帰）して、Ｓ１２３でData Serviceを実行する。そして、Ｓ１２４でData Serviceを終了し、Ｓ１１３に戻る。
【００７２】
Ｓ１２０でData Serviceがないと判断された場合（Ｎ）、Ｓ１２５に進み、Wake UP Timingかどうか判断される。Wake UP Timingでなければ（Ｎ）、そのままPower Saveの状態を維持し、Ｓ１２０に戻る。Ｓ１２５でWake UP Timingであると判断されると（Ｙ）、Ｓ１２６に進みWake UP（復帰）し、Ｓ１２７で読み出されたデータの転送を開始し、Ｓ１２８でReadコマンドを終了する。
【００７３】
以上のように、DIPM制御手段２２とNCQ制御手段２３を備える実施例３のＨＤＤ１は、様々な場合に対応可能で、ＨＤＤ１のパフォーマンスを低下させずに可能な限り消費電力を削減できる、と言える。
【００７４】
従来のDIPMのPower Saveでは、ＨＤＤのRead コマンドにおいてデータ転送開始に遅延が発生するというように、パフォーマンスを犠牲にして消費電力を削減する場合があった。しかし、実施例のＨＤＤによれば、ホストからＨＤＤがReadコマンドを受信した時点で、Ratio INTのタイミングを算出し、算出したRatio INTのタイミングがデータ転送可能なタイミングになるように、Power Save状態から復帰（Wake UP）するため、パフォーマンスを維持しながら効率よく消費電力を低減することができる。
【００７５】
また、従来のNCQコマンドのData Serviceでは、Read Seek動作中のBusが使用されていない間にData Serviceを行うため、パフォーマンス改善には効果的であったが、使用を誤ると却ってパフォーマンスを低下させてしまう場合があった。上述した本実施例のＨＤＤによれば、ホストからReadコマンドを受信した時点で、Ratio INTのタイミングを算出し、キューに溜まっているData Serviceの実行終了時刻とRatio INTのタイミングを比較し、Data ServiceがRatio INTのタイミングの前に実行可能であれば該Data Serviceを実行し、実行不可の場合には実行せずにバスをキープしRatio INTのタイミングで即データ転送を始められるため、ＨＤＤのパフォーマンスを低下させることがない。
【００７６】
特にノートパソコンなどに用いられるＨＤＤは、消費電力とパフォーマンスが重要な要素である。従来の技術では、パフォーマンスを犠牲にして消費電力を低減するような傾向にあった。本実施の形態によれば、パフォーマンスを低下させることなく、消費電力を低減させることが可能で、非常に有効であると言える。
【００７７】
以上の実施例１〜３を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  ホストから転送されてきたデータを記憶するデータ記憶装置であって、
前記データ記憶装置の記憶するデータを読み出すためのReadコマンドを前記ホストから受信すると、該データ記憶装置のディスク媒体からデータを読み出す準備を完了しデータ転送可能となるタイミングを算出するタイミング算出手段と、
前記算出されたタイミングに合わせて、前記ディスク媒体から読み出されたデータを前記ホストに転送可能となるように、前記データ記憶装置を制御する制御手段と、
を含むことを特徴とするデータ記憶装置。
(付記２)  前記制御手段は、前記算出されたタイミングに合わせて、データ転送が不可能なパワーセーブ状態にある前記ホストへのインタフェースを、データ転送可能な状態に復帰させる第１の制御手段を含むことを特徴とする付記１記載のデータ記憶装置。
（付記３）  前記制御手段は、前記ディスク媒体からデータを読み出す準備を行っている
間に実行可能な、複数のNCQコマンドのData Serviceについて、それぞれのData Serviceの実行終了時刻が前記算出されたタイミング以前である場合にのみ該Data Serviceを実行する第２の制御手段を含むことを特徴とする付記１記載のデータ記憶装置。
（付記４）  前記制御手段は、
前記ディスク媒体からデータを読み出す準備を行っている間に実行可能な、複数のNCQコマンドのData Serviceについて、それぞれのData Serviceの実行終了時刻が前記算出されたタイミング以前である場合にのみ該Data Serviceを実行する第２の制御手段と、
前記NCQコマンドのData Serviceが実行されていない場合でかつ前記算出されたタイミングに基づいて前記ホストへのインタフェースをパワーセーブ状態にする時間があると判断される場合には該インタフェースをパワーセーブ状態にし、該インタフェースがデータの転送が不可能なパワーセーブ状態にある場合には、前記算出されたタイミングに合わせてデータ転送可能な状態に復帰させる第１の制御手段と、
を含むことを特徴とする付記１記載のデータ記憶装置。
（付記５）  ホストから転送されてきたデータを記憶するデータ記憶装置の制御方法であって、
前記データ記憶装置の記憶するデータを読み出すためのReadコマンドを前記ホストから受信すると、該データ記憶装置のディスク媒体からデータを読み出す準備を完了しデータ転送可能となるタイミングを算出し、
前記算出されたタイミングに合わせて、前記ディスク媒体から読み出されたデータを前記ホストに転送可能となるように、前記データ記憶装置を制御する、
ことを特徴とする制御方法。
（付記６）  前記データ記憶装置を制御するにおいて、
前記算出されたタイミングに合わせて、データ転送が不可能なパワーセーブ状態にある前記ホストへのインタフェースを、データ転送可能な状態に復帰させることを特徴とする付記５記載の制御方法。
（付記７）  前記データ記憶装置を制御するにおいて、
前記ディスク媒体からデータを読み出す準備を行っている間に実行可能な、複数のNCQコマンドのData Serviceについて、それぞれのData Serviceの実行終了時刻が前記算出されたタイミング以前である場合にのみ該Data Serviceを実行することを特徴とする付記５記載の制御方法。
（付記８）  前記データ記憶装置を制御するにおいて、
前記ディスク媒体からデータを読み出す準備を行っている間に実行可能な、複数のNCQコマンドのData Serviceについて、それぞれのData Serviceの実行終了時刻が前記算出されたタイミング以前である場合にのみ該Data Serviceを実行し、
前記NCQコマンドのData Serviceが実行されていない場合でかつ前記算出されたタイミングに基づいて前記ホストへのインタフェースをパワーセーブ状態にする時間があると判断される場合には該インタフェースをパワーセーブ状態にし、該インタフェースがデータの転送が不可能なパワーセーブ状態にある場合には、前記算出されたタイミングに合わせてデータ転送可能な状態に復帰させる、
ことを特徴とする付記５記載の制御方法。
【図面の簡単な説明】
【００７８】
【図１】本実施の形態のＨＤＤのハードウェア構成を示す図である。
【図２】本実施の形態においてＭＰＵで実行されるプログラムの構成を示す図である。
【図３】実施例１のＨＤＤの動作を処理時間で示した図である。
【図４】Seek Time(t0), Rotation wait(t1), 移動時間(t2)を説明する図である。
【図５】実施例１のＨＤＤの動作フローを示す図である。
【図６】実施例２のＨＤＤの動作を処理時間で示した図である。
【図７】実施例２のＨＤＤの動作フローを示す図である。
【図８】実施例３のＨＤＤの動作例を示す図である。
【図９】図８に対応する動作フローを示す図である。
【図１０】実施例３のＨＤＤの動作例を示す図である。
【図１１】図１０に対応する動作フローを示す図である。
【図１２】ＨＤＤの内部構造を示す図である。
【図１３】Read コマンドのパフォーマンスが低下してしまう例を示す図である。
【図１４】NCQによるReadコマンドのパフォーマンスの低下の例を示す図である。
【符号の説明】
【００７９】
１      ＨＤＤ
２      ホストＩＦ制御部
３      バッファ制御部
４      バッファメモリ
５      フォーマット制御部
６      リード／ライトチャネル
７      ヘッドＩＣ
８      ＭＰＵ
９      メモリ
１０      不揮発メモリ
１１      サーボ制御部
１２      ＶＣＭ
１３      ＳＰＭＭ
１４      磁気ヘッド
１５      ディスク媒体
１６      バス
１７      ホスト
１８      SATA Interface
２１      タイミング算出手段
２２      DIPM制御手段
２３      NCQ制御手段
【図２】
0004991605.tif 000002
【図５】
0004991605.tif 000003
【図６】
0004991605.tif 000004
【図７】
0004991605.tif 000005
【図８】
0004991605.tif 000006
【図９】
0004991605.tif 000007
【図１０】
0004991605.tif 000008
【図１１】
0004991605.tif 000009
【図１２】
0004991605.tif 000010
【図１３】
0004991605.tif 000011
【図１４】
0004991605.tif 000012
【図１】
0004991605.tif 000013
【図３】
0004991605.tif 000014
【図４】
0004991605.tif 000015