【課題】ディスク装置の繁忙期または閑散期を予測して、予測に基づいてモードを選択し、省電力モードの際の外部からのコマンドに対して従来に比して応答を早めることができるディスク装置を提供する。
【解決手段】実施形態によれば、ディスク装置は、第1バッファと、ディスク媒体と、制御部と、を備える。第1バッファは、リードアクセスに関する履歴情報に基づいて記憶されたデータを有する。ディスク媒体は、アクセスがある時は第1回転状態で回転し、アクセスがない時は前記第1回転状態よりも回転数が少ない第2回転状態で回転する。制御部は、ディスク媒体が第2回転状態にある場合に、ホスト装置から第1バッファに記憶されている第1データを読み出すリードコマンドを受信し、第1回転状態に遷移せずに、第1バッファから第1データをホスト装置に送信して、リードコマンドの実行を完了した後で、ディスク媒体を第1回転状態に遷移させる。
前記制御部は、単位期間ごとの前記アクセスの状況および前記第1バッファおよび前記第2バッファの記憶容量に対するアクセスデータ量の割合である繁閑レベルを含む前記履歴情報に基づいて、前記第1バッファ、前記第2バッファおよび前記ディスク媒体に対する設定を行う請求項2に記載のディスク装置。
前記制御部は、前記第1回転状態から前記第2回転状態への遷移のタイマ設定が無効の場合でも、過去の単位期間の前記履歴情報の前記繁閑レベルが100%未満の場合には、前記ディスク媒体を前記第2回転状態に遷移させる請求項3に記載のディスク装置。
前記制御部は、過去の単位期間の前記履歴情報の前記繁閑レベルが100%未満の場合には、前記第1回転状態から前記第2回転状態への遷移のタイマ設定にしたがって前記ディスク媒体を前記第2回転状態に遷移させる請求項3に記載のディスク装置。
前記制御部は、前記繁閑レベルが100%以上の前記単位期間に、前記ディスク媒体のデータの記録状態の検査処理の開始設定がされている場合に、前記検査処理を実行しない請求項3に記載のディスク装置。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態にかかるディスク装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0008】
図1は、実施形態によるディスク装置の概略構成の一例を模式的に示すブロック図である。ディスク装置として、Hard Disk Drive(HDD)などを例示することができる。
【0009】
ディスク装置10は、ディスク11と、スピンドルモータ12と、Head Stack Assembly(以下、HSAという)13と、ヘッドアンプ集積回路(以下、ヘッドアンプICという)14と、Random Access Memory(以下、RAMという)15と、リード/ライトチャネル(以下、R/Wチャネルという)16と、Hard Disk Controller(以下、HDCという)17と、プロセッサの一例であるCentral Processing Unit(以下、CPUという)18と、モータドライバIC20と、を備える。
【0010】
ディスク11は、データが記録される記録面Sを有し、スピンドルモータ12によって回転駆動されるディスク媒体である。ディスク装置10には、複数のディスク11が設けられる。また、ディスク装置10に含まれるすべての記録面Sには、記録面S上の物理位置を示す位置情報である物理アドレスが設定されている。物理アドレスは、たとえばセクタ単位で割り当てられる。スピンドルモータ12は、モータドライバIC20から供給される電流(または電圧)によって駆動される。
【0011】
HSA13は、ヘッドHと、ヘッドサスペンション131と、Voice Coil Motor(以下、VCMという)132と、を有する。ヘッドHは、ディスク11の記録面S毎に設けられる。ヘッドHは、ディスク11へのデータの書き込みに用いるライトヘッドと、ディスク11からのデータの読み出しに用いるリードヘッドとを有している。
【0012】
ヘッドサスペンション131は、ヘッドHを支持し、それぞれのヘッドHに対して設けられる。VCM132は、モータドライバIC20から供給される電流(または電圧)によって駆動される。ヘッドサスペンション131とVCM132とは、アクチュエータを構成する。アクチュエータは、VCM132の駆動によって、ヘッドサスペンション131に支持されているヘッドHをディスク11の記録面S上の所定の位置まで移動制御する。このようなHSA13の構成によって、ヘッドHはディスク11の記録面Sの半径方向に移動可能となる。
【0013】
ヘッドアンプIC14は、R/Wチャネル16から入力されるライトデータに応じたライト信号(電流)をヘッドHに流す。また、ヘッドアンプIC14は、ヘッドHから出力されたリード信号(ヘッドHによりディスク11から読み出されたリードデータ)を増幅して、R/Wチャネル16に伝送する。
【0014】
RAM15は、一時記憶領域として使用され、DRAM(Dynamic RAM)またはSRAM(Static RAM)などの揮発性メモリによって構成される。RAM15には、ホスト装置HCからのアクセス処理の際にアクセス対象のデータをバッファリングする領域、ディスク装置10を制御するのに用いられる管理情報を記憶する領域、後述する履歴情報を取得する際に使用される領域などが設けられる。
【0015】
R/Wチャネル16は、信号処理回路である。R/Wチャネル16は、HDC17から入力されたライトデータを符号化(コード変調)してヘッドアンプIC14に出力する。また、R/Wチャネル16は、ヘッドアンプIC14から伝送されたリード信号からリードデータを復号化(コード復調)してHDC17に出力する。
【0016】
HDC17は、ホスト装置HCとの通信を可能とする通信インタフェースである。具体的には、HDC17は、ホスト装置HCからライトコマンドを受信した場合には、ライトデータをRAM15のバッファ151に格納し、書き込み処理が終了するとホスト装置HCに応答を返す。また、HDC17は、ホスト装置HCからリードコマンドを受信した場合には、読み出し処理によってバッファ151に格納されたリードデータをホスト装置HCに返す。
【0017】
本実施形態では、HDC17は、ディスク装置10のアクセス状況を監視し、監視した結果を統計処理した情報および監視結果に基づいて、ディスク装置10の設定を行う。この処理の詳細については、後述する。
【0018】
CPU18は、ディスク装置10のメインコントローラであり、ヘッドHによるライトデータの書き込みおよびリードデータの読み出しの制御処理、ディスク11の記録面S上におけるヘッドHの位置を制御するサーボ制御処理等の各種処理を実行する。なお、CPU18は、図示しないRead Only Memory(ROM)およびディスク11等の不揮発性の記憶媒体に記憶されたプログラムにより、上記の各種処理を実行する。
【0019】
また、CPU18は、ディスク装置10の電力状態(パワーステート)を制御する。本実施形態では、ディスク装置10は、ホスト装置HCからのコマンドにしたがって処理を実行するアクティブモードと、アクティブモードの状態でホスト装置HCからのコマンドが来ない状態が所定の時間継続した時に遷移する省電力モードと、の間で遷移するものとする。省電力モードは、一例として、ディスク11の回転数をアクティブモードの場合よりも低くしている状態である。アクティブモードから省電力モードへ遷移するか否かは、設定によって行われる。省電力モードへの遷移が行われる場合には、ホスト装置HCからのコマンドが来ない状態の継続時間が設定され、継続時間をタイマによって計時されると、CPU18は、省電力モードへと遷移する。
【0020】
モータドライバIC20は、スピンドルモータ12に電流または電圧を供給し、スピンドルモータ12を所定の回転速度で駆動する。また、モータドライバIC20は、CPU18から指定された電流または電圧をVCM132に供給することで、アクチュエータを駆動する。
【0021】
たとえば、R/Wチャネル16と、HDC17と、CPU18とは、1チップに集積されたSoC(System on Chip)と呼ばれる集積回路19に組み込まれている。この集積回路19が、広義のコントローラとして機能する。
【0022】
つぎに、
図2は、実施形態によるディスク装置の機能構成の一例を模式的に示すブロック図である。なお、ここでは、本実施形態に関連する機能処理部のみを示している。ディスク装置10は、RAM15と、ディスク11と、コントローラ19aと、が、バスライン25を介して接続される。ここで、コントローラ19aは、R/Wチャネル16、HDC17およびCPU18によって構成される。
【0023】
RAM15には、バッファ151と、履歴情報記憶領域152と、管理情報記憶領域153と、が設けられる。バッファ151は、ライトバッファ151aと、リードバッファ151bと、を有する。ライトバッファ151aは、ディスク11へのライトデータの書き込みを指示するコマンド(以下、ライトコマンドという)によってディスク11へと書き込まれるデータを一時的に格納する。リードバッファ151bは、ディスク11からのリードデータの読み出しを指示するコマンド(以下、リードコマンドという)によってディスク11から読み出されるデータを一時的に格納する。
【0024】
ここで、ライトコマンドは、ディスク11で管理される論理セクタ(ブロック)のうちライトデータの書込み先の論理セクタの開始Logical Block Address(以下、LBAという)およびライトデータ長を含む。また、リードコマンドは、ディスク11で管理される論理セクタのうち読み出すリードデータが記憶される論理セクタの開始LBAおよびリードデータ長を含む。
【0025】
履歴情報記憶領域152は、ディスク装置10での所定の収集期間(以下、単位期間という)におけるアクセス状況である履歴情報152aを記憶する。
図3は、実施形態による履歴情報の一例を示す図である。履歴情報152aは、単位期間におけるライトアクセスおよびリードアクセスのそれぞれについて、アクセス先である開始LBAおよび転送量を含む。転送量として、転送ブロック数または転送バイト数を用いることができる。ただし、転送バイト数を用いる場合には、転送量の記憶容量が多くなるので、より記憶容量を抑えられる転送ブロック数を用いることが望ましい。以下の例では、転送ブロック数を用いる場合を例に挙げる。
図3の例では、8バイトの開始LBAと4バイトの転送ブロック数とを組として、単位期間内のアクセス状況をすべて記憶している。開始LBAの最上位ビット(63ビット目)はリードまたはライトであることを示す。たとえば63ビット目が0である場合はリードであることを示し、1である場合はライトであることを示す。詳細は後述するが、ここでの単位期間はたとえば1時間である。
【0026】
管理情報記憶領域153は、ディスク装置10を制御するのに必要な管理情報を記憶する。本実施形態では、管理情報には、単位期間入出力(以下、IOという)スループット情報153aおよび前履歴情報153bが含まれる。単位期間IOスループット情報153aは、過去の単位期間におけるアクセス状況の概要を示す情報であり、詳細については後述する。前履歴情報153bは、過去の単位期間における履歴情報152aであり、現時点を含む単位期間でのディスク装置10へのアクセスの予測に使用される情報である。
【0027】
ディスク11には、システムエリア111と、ユーザエリア112と、が設けられる。システムエリア111は、ディスク装置10の制御に用いられるシステム情報が記憶される。システム情報は、たとえばアクセス管理情報111aおよびIOスループット情報111bを含む。ユーザエリア112は、ホスト装置HCからの指示によって書き込まれるデータなどを記憶する領域である。
【0028】
アクセス管理情報111aは、RAM15の履歴情報記憶領域152で記憶された履歴情報152aを、所定の測定対象期間分保存した情報である。詳細は後述するが、測定対象期間は、単位期間を複数まとめたものである。たとえば測定対象期間を1日とし、単位期間を1時間とすると、24時間分の履歴情報152aがまとめられたものがアクセス管理情報111aとなる。アクセス管理情報111aの内容は、
図3に示した内容を、単位期間を示す識別情報に対応付けたものとなる。
【0029】
IOスループット情報111bは、履歴情報記憶領域152で記憶された履歴情報152aから統計処理によって生成された単位期間IOスループット情報153aを、測定対象期間分保存した情報である。
図4は、実施形態によるIOスループット情報の一例を示す図である。IOスループット情報111bは、測定対象期間内での単位期間を識別する識別情報、識別情報で識別される単位期間における繁閑レベル、リード系コマンドのアクセスブロック総数およびライト系コマンドのアクセスブロック総数を含む。繁閑レベルは、次式(1)によって求められる。
繁閑レベル=(単位期間内でのデータ転送量/データバッファ容量)×100[%] ・・・(1)
【0030】
(1)式で100%未満の場合、すなわちデータ転送量がデータバッファ容量未満の場合には、閑散期であるとし、100%以上の場合、すなわちデータ転送量がデータバッファ容量以上の場合には、繁忙期であるとする。リード系コマンドのアクセスブロック総数は、単位期間の履歴情報152a中のリード系コマンドの転送ブロック数の総和である。ライト系コマンドのアクセスブロック総数は、単位期間の履歴情報152a中のライト系コマンドの転送ブロック数の総和である。
【0031】
図4で、各単位期間における繁閑レベル、リード系コマンドのアクセスブロック総数およびライト系コマンドのアクセスブロック総数を単位期間IOスループット情報153aとしている。すなわち、IOスループット情報111bは、測定対象期間内のすべての単位期間についての単位期間IOスループット情報153aを含む。
【0032】
コントローラ19aは、アクセス監視部191と、統計処理部192と、状態設定部193と、アクセス処理部194と、を備える。
【0033】
アクセス監視部191は、ホスト装置HCからのコマンドを監視し、ホスト装置HCからコマンドを受信すると、コマンドからアクセス先に関する情報を取得し、その内容を履歴情報記憶領域152の履歴情報152aに記憶する。具体的には、アクセス監視部191は、ホスト装置HCからコマンドを受信すると、リードコマンドであるかライトコマンドであるかを判断し、リードコマンドである場合には、リードコマンド中の開始LBAおよびリードデータ長を取得して、それを履歴情報152aに記憶する。ライトコマンドである場合には、ライトコマンド中の開始LBAおよびライトデータ長を取得して、それを履歴情報152aに記憶する。
【0034】
アクセス監視部191は、単位期間が終了すると、履歴情報記憶領域152の履歴情報152aを、システムエリア111のアクセス管理情報111aに、単位期間を識別する識別情報を含めて保存する。アクセス監視部191によって保存されるアクセス管理情報111aの一例が
図3でもある。ここで、単位期間および測定対象期間について説明する。測定対象期間および単位期間は、任意に設定することができる。たとえば、ディスク装置10へのアクセスに周期性がある場合には、その周期に合わせて測定対象期間を設定することができる。また、測定対象期間中のアクセス頻度の傾向に合わせて単位期間を設定することができる。たとえば、毎日同じ時刻でのアクセスの状況に類似性が認められる場合には、測定対象期間を1日とし、単位期間を1日の0時00分00秒から始まる1時間ごとの期間とする。以下では、00分00秒から始まる1時間を単位期間とする場合を例に挙げるが、実施形態がこれに限定されるものではない。たとえば、単位期間を30分としてもよいし、他の長さとしてもよい。また、1週間の同じ曜日の同じ時刻でアクセスの状況に類似性が認められる場合には、単位期間を1時間として、測定対象期間を日曜日の0時00分00秒からつぎの土曜日の23時59分59秒までの1週間としてもよい。
【0035】
統計処理部192は、単位期間が終了すると、履歴情報記憶領域152中の履歴情報152aから単位期間IOスループット情報153aを生成し、単位期間を識別する識別情報を付してシステムエリア111のIOスループット情報111bに保存する。ここでは、統計処理部192は、履歴情報152aからリード系コマンドの転送ブロック数を抽出し、その総和を算出する。統計処理部192は、履歴情報152aからライト系コマンドの転送ブロック数を抽出し、その総和を算出する。また、統計処理部192は、リード系コマンドの転送ブロック数の総和とライト系コマンドの転送ブロック数の総和との和から転送ブロック総数を算出し、算出した転送ブロック総数とバッファ151の容量とから、(1)式を用いて繁閑レベルを算出する。統計処理部192は、算出したリード系コマンドの転送ブロック数の総和と、ライト系コマンドの転送ブロック数の総和と、繁閑レベルと、をシステムエリア111のIOスループット情報111b内の対応する単位期間の格納位置に保存する。保存時に、以前に保存されたデータが書き込まれている場合には、上書き保存する。
【0036】
状態設定部193は、システムエリア111のIOスループット情報111bに、前の測定対象期間での現在の時刻に対応する単位期間(以下、前単位期間という)の単位期間IOスループット情報153aが存在するかを判定し、単位期間IOスループット情報153aが存在する場合には、前単位期間の単位期間IOスループット情報153aをディスク11から読み出して、管理情報記憶領域153に展開する。状態設定部193は、管理情報記憶領域153中の単位期間IOスループット情報153aから繁閑レベルを読み出し、繁閑レベルに応じてディスク装置10の動作モードを設定する。
【0037】
繁閑レベルが100%以上の繁忙期である場合には、状態設定部193は、ディスク装置10をアクティブモードの状態にする。アクティブモードでは、定常回転数でディスク11は回転しているので、状態設定部193は、ディスク11の回転数が定常回転数となるように設定する。
【0038】
繁閑レベルが100%未満の閑散期である場合には、状態設定部193は、ディスク装置10を省電力モードの状態にするとともに、前単位期間での履歴情報、すなわち前履歴情153bを予測情報として、ホスト装置HCからのアクセスに備えた準備を行う。ここでは、前単位期間の履歴情報を、現時点での単位期間(以下、本単位期間という)のホスト装置HCからのアクセスの予測に用いる。すなわち、リードコマンドの場合には、前単位期間でのアクセス先へのアクセスが本単位期間でも行われ、ライトコマンドの場合には、前単位期間でのアクセスブロック総数が本単位期間のアクセスブロック総数と略等しいと仮定した処理を行う。
【0039】
具体的には、状態設定部193は、システムエリア111のアクセス管理情報111aから、現在の時刻に対応する前単位期間の履歴情報を読み出し、管理情報記憶領域153にロードする。そして、ロードした前履歴情報153b中のすべてのリードコマンドについて、その開始LBAおよびリードデータ長で指定されるディスク11のユーザエリア112からデータを読み出してバッファ151に記憶する。このデータが記憶された領域を含む領域がリードバッファ151bとなる。また、単位期間IOスループット情報153a中のライト系コマンドのアクセスブロック総数を読み出し、バッファ151にアクセスブロック総数分の容量を確保する。この確保された領域を含む領域がライトバッファ151aとなる。なお、繁閑レベルが100%未満であるので、読み出したデータの総量と確保した容量との合計は、バッファ151に割り当てられる容量よりも小さいものとなる。
【0040】
また、状態設定部193は、ディスク11の回転数が定常回転数よりも低い回転数となるように設定する。このとき、状態設定部193は、繁閑レベルの値に応じて、ディスク11の回転数を変えてもよい。
図5は、実施形態による繁閑レベルに応じたディスク回転数の設定値の一例を示す図である。ここでは、繁閑レベルが100%以上の場合には、定常回転(7200回転)である場合を例に挙げている。繁閑レベルが低くなるにしたがってディスクの回転数も低くなるようにし、繁閑レベルが0%の場合に4000回転となるようにしている。ただし、ホスト装置HCからコマンドを受信し、アクティブモードに遷移して応答を返す場合に、ホスト装置HCによってコマンドタイムアウトが検出されないように、回転数が調整されている。
【0041】
繁閑レベルに応じてディスク11の回転数を変化させることによって、繁閑レベルが100%未満の閑散期の場合には、アクセス頻度に応じてさらに省電力モードにおける消費電力を抑えることができる。このように、繁閑レベルに応じてディスク回転数を変化させる場合には、
図5の情報は、たとえば管理情報記憶領域153に記憶される。また、ここでは、
図5の情報は、繁閑レベルとディスク11の回転数とが対応付けられるものであれば、どのような形の情報であってもよい。なお、状態設定部193は、システムエリア111のIOスループット情報111bに、前単位期間の単位期間IOスループット情報153aが存在しない場合には、予測データ(履歴情報)に基づいた状態設定は行わない。
【0042】
アクセス処理部194は、アクティブモードにある場合には、ホスト装置HCから受信したコマンドにしたがって処理を行う。たとえば、リードコマンドを受信した場合には、指定される開始LBAから指定されるリードデータ長の長さのデータを読み出し、ホスト装置HCに返す。また、ライトコマンドを受信した場合には、指定された開始LBAから指定されるデータ長のデータを書き込む。
【0043】
アクセス処理部194は、省電力モードにある場合には、なるべくアクティブモードに遷移しないでコマンド処理を実行し、ホスト装置HCへの完了の信号を送信した後に、アクティブモードへと遷移する。たとえば、上記のように状態設定部193によってリードバッファ151bおよびライトバッファ151aが準備されているので、アクセス先のデータがリードバッファ151bに存在するリードコマンドを受信した場合、またはライトデータ長がライトバッファ151aの空き容量の範囲内であるライトコマンドを受信した場合には、アクティブモードに遷移せずに、コマンドに対する処理を実行し、その後にアクティブモードに遷移する。なお、アクセス処理部194は、リードコマンドおよびライトコマンド以外のコマンドを受信した場合には、アクティブモードに遷移しないでコマンド処理を実行し、ホスト装置HCへの完了の信号を送信した後に、省電力モードを維持する。
【0044】
アクセス処理部194は、アクセス先のデータがリードバッファ151bに存在しないリードコマンドを受信した場合、またはライトデータ長がライトバッファ151aの空き容量の範囲を超えるライトコマンドを受信した場合には、アクティブモードに遷移して、コマンドを実行する。
【0045】
つぎに、このようなディスク装置10での処理について説明する。
図6は、実施形態によるディスク装置の起動時の処理手順の一例を示すフローチャートである。まず、ディスク装置10の電源が投入されると(ステップS11)、コントローラは、現在時刻の把握を行う(ステップS12)。たとえばホスト装置HCからディスク装置10に対して発行されるSet Time StampコマンドによってUNIX(登録商標)時間が通知され、ディスク装置10では現在の時刻を把握することができる。
【0046】
ついで、コントローラは、現在時刻がX時0分0秒であるかを判定する(ステップS13)。現在時刻がX時0分0秒でない場合(ステップS13でNoの場合)には、待ち状態となる。現在時刻がX時0分0秒である場合(ステップS13でYesの場合)には、測定対象期間測定ループ処理に移る(ステップS14)。この測定対象期間測定ループ処理での処理の開始はX時であり、処理の終了はX−1時である。ただし、Xは0から23の整数であり、Xが0時の場合には、X−1時は23時であるものとする。すなわち、この例での測定対象期間測定ループ処理は、1日を測定対象期間としている。
【0047】
その後、単位期間測定ループ処理に移る(ステップS15)。単位期間測定ループ処理での処理の開始は0分0秒であり、処理の終了は59分59秒である。すなわち、この例での単位期間測定ループ処理は、1時間を単位期間としている。そして、ホスト装置HCからコマンドを受信すると、アクセス処理部194は、コマンドに基づいた処理を実行するとともに(ステップS16)、アクセス監視部191は、履歴情報記憶領域152の履歴情報152aに受信したコマンドの種別、開始LBAおよび転送ブロック数を記録する(ステップS17)。アクセス監視部191は、時刻が59分59秒になったかを判定し(ステップS18)、時刻が59分59秒になるまで、ステップS16〜S17の処理を実行する。
【0048】
時刻が59分59秒になると、統計処理部192は、ステップS15〜S18の単位期間測定ループで取得した履歴情報152aから、単位期間内のリード系コマンドの転送ブロック総数、単位期間内のライト系コマンドの転送ブロック総数、および単位期間での繁閑レベルを算出する(ステップS19〜S21)。その後、統計処理部192は、算出したリード系コマンドの転送ブロック総数、ライト系コマンドの転送ブロック総数および繁閑レベルを、システムエリア111内のIOスループット情報111bに単位期間に関連付けて保存する(ステップS22)。また、アクセス監視部191は、履歴情報152aをシステムエリア111のアクセス管理情報111aに、単位期間に関連付けして保存する(ステップS23)。
【0049】
その後、アクセス監視部191は、終了時刻(この場合には、X−1時)になったかを判定する(ステップS24)。終了時刻になっていない場合には、測定対象期間中のつぎの単位期間(この場合には、X+1時)について、ステップS14〜S24までの処理が繰り返し実行される。
【0050】
また、終了時刻になった場合には、コントローラは、予測データに基づいた動作処理を実行する(ステップS25)。以上で、処理が終了する。
【0051】
図7は、予測データに基づいた動作処理の手順の一例を示すフローチャートである。この処理では、コントローラは、現在時刻がX時0分0秒になったかを判定する(ステップS31)。X時0分0秒になっていない場合(ステップS31でNoの場合)には、待ち状態となる。X時0分0秒になると(ステップS31でYesの場合)、状態設定部193は、システムエリア111のIOスループット情報111bから前単位期間の単位期間IOスループット情報153aを、管理情報記憶領域153にロードする(ステップS32)。
【0052】
状態設定部193は、前単位期間の単位期間IOスループット情報153aに基づいて、現在の単位期間は閑散期であるかを判定する(ステップS33)。ここでは、状態設定部193は、一予測対象期間前の現在時刻に対応する単位期間(すなわち、前単位期間)の繁閑レベルを、現在の単位期間の繁閑状態とする。つまり、状態設定部193は、単位期間IOスループット情報153aの繁閑レベルを読み込み、繁閑レベルが100%未満であるかを判定する。
【0053】
現在の単位期間が閑散期である場合(ステップS33でYesの場合)には、状態設定部193は、システムエリア111のアクセス管理情報111aから現在時刻に対応する前単位期間の履歴情報を、管理情報記憶領域153に前履歴情報153bとしてロードする(ステップS34)。ここでは、リードコマンドに関しては、前単位期間で読み出されたデータが、読み出されるものと予測する。また、ライトコマンドに関しては、前単位期間で書き込みされたデータと同じ量のデータが、書き込まれるものと予測する。つまり、状態設定部193は、前履歴情報153bを参照し、リードコマンドの開始LBAからリードデータ長を有するデータをユーザエリア112から読み出してバッファ151に書き込む。これを履歴情報152a中のすべてのリードコマンドについて行い、リードバッファ151bにリードデータを準備する(ステップS35)。また、状態設定部193は、前履歴情報153bあるいは単位期間IOスループット情報153aを参照し、ライトバッファ151aにライト系コマンドの転送ブロック総数分の領域を確保する(ステップS36)。さらに、状態設定部193は、繁閑レベルに応じてディスク11の回転数を変更する(ステップS37)。たとえば、状態設定部193は、
図5に示される繁閑レベルとディスク回転数とを対応付けたディスク回転数情報を参照して、繁閑レベルに対応するディスク回転数となるように設定する。このように、閑散期であると予測された場合には、状態設定部193は、ディスク装置10が省電力モードとなるように設定する。
【0054】
一方、ステップS33で現在の単位期間は閑散期でない場合(ステップS33でNoの場合)、すなわち、繁閑レベルが100%以上である場合には、状態設定部193はディスク11の回転数を定常回転数に設定する(ステップS38)。つまり、繁忙期であると予測された場合には、状態設定部193は、ディスク装置10をアクティブモードに設定する。
【0055】
その後またはステップS37の後は、
図6のステップS15〜S24と同様の処理が実行される(ステップS39〜S47)。そして、処理がステップS31へと戻る。
【0056】
なお、ステップS33で現在の単位期間が閑散期であり、かつ省電力モードへのタイマが無効である場合でも、省電力モードへと状態遷移させ、積極的に消費電力の低減を行ってもよい。
【0057】
また、ステップS33で現在の単位期間が閑散期であり、かつ省電力モードへのタイマが有効である場合には、タイマにしたがって省電力モードへと遷移させつつ、段階的に回転数を下げてもよい。これによって、積極的に消費電力を低減することができる。
【0058】
ここで、状態設定部193によってディスク装置10が省電力モードに設定された場合のステップS40でのコマンド処理について説明する。
図8は、実施形態による省電力モード時のコマンド処理の手順の一例を示すフローチャートである。
【0059】
アクセス処理部194は、コマンドを受信すると(ステップS71)、コマンドの種類を判定する。すなわち、受信したコマンドがリードコマンドまたはライトコマンドであるかを判定する(ステップS72)。リードコマンドまたはライトコマンドである場合(ステップS72でYesの場合)には、受信したコマンドがリードコマンドであるかを判定する(ステップS73)。
【0060】
リードコマンドである場合(ステップS73でYesの場合)には、アクセス処理部194は、キャッシュヒットしたかを判定する(ステップS74)。すなわち、リードコマンドで指示される開始LBAからリードデータ長のデータがバッファ151に記憶されているかを判定する。
【0061】
キャッシュヒットしていない場合(ステップS74でNoの場合)、すなわちリードコマンドで指示されるデータがバッファ151に記憶されていない場合には、アクセス処理部194はディスク装置10をアクティブモードに復帰させ(ステップS76)、ディスク11が定常回転に戻った後にコマンドを実行する(ステップS77)。そして、処理が終了する。
【0062】
また、キャッシュヒットした場合(ステップS74でYesの場合)、すなわちリードコマンドで指示されるデータがバッファ151に記憶されている場合には、アクセス処理部194は、省電力モードのままコマンドを実行し、コマンドの実行が完了した後にホスト装置HCに応答を送信する(ステップS78)。その後、アクセス処理部194は、ディスク装置10をアクティブモードに復帰させ(ステップS79)、処理が終了する。
【0063】
ステップS73でリードコマンドでない場合(ステップS73でNoの場合)、すなわちコマンドがライトコマンドである場合には、アクセス処理部194は、ライトコマンドで指示されたライトデータ量を記憶することができるだけの空き容量がバッファ151にあるかを判定する(ステップS75)。バッファ151に空きがない場合(ステップS75でNoの場合)には、ステップS76に処理が移る。また、バッファ151に空きがある場合(ステップS75でYesの場合)には、ステップS78に処理が移る。このとき、ステップS79では、バッファ151に記憶されたデータが所定のタイミングでディスク11のユーザエリア112に保存される。
【0064】
また、ステップS72で受信したコマンドがリードコマンドおよびライトコマンドではない場合(ステップS72でNoの場合)、すなわち、リードバッファ151bまたはライトバッファ151aに対するコマンドなどのディスク11を使用しないコマンドの場合には、アクセス処理部194は、省電力モードのままコマンドを実行し、コマンドの実行が完了した後にホスト装置HCに応答を送信する(ステップS80)。その後、省電力モードを維持し(ステップS81)、処理が終了する。以上のように、省電力モード時の場合に、コマンドが実行される。
【0065】
なお、予測データからつぎの単位期間が閑散期であり、コントローラ19aの動作が明らかに少ない場合に、繁忙期のスループットを向上させるため、媒体データの記録状態を検査する処理を実施してもよい。媒体データの記録状態を検査する処理として、BMS(Background Medium Scan)処理またはATI(Adjacent Track Interference)対策処理を例示することができる。BMS処理は、アイドル期間中にBackground Taskとして、全ユーザデータ中のLBAをシーケンシャルにスキャンし、将来不良セクタになる可能性があるセクタを早期に検出する処理である。ATI処理は、ディスク11へのデータ書き込み動作により発生するサイドイレーズなどの影響をデータの書き直しにより修復し、データの消失を防ぐ処理である。このとき、BMS処理またはATI対策処理の開始時間でなくても、閑散期であれば、BMS処理またはATI対策処理を実施できるようにしてもよい。
【0066】
また、予測データからつぎの単位期間が繁忙期であり、コントローラ19aの動作が明らかに多い場合に、スループットを向上させるため、BMS処理の動作時刻を、繁忙期からずらしたり、緊急時以外のATI対策処理を抑止したりしてもよい。さらに、より消費電力の低いパワーステートに遷移しないように、状態遷移の期間(Interval)を、予め設定された時間よりも長く設定してもよい。
【0067】
図9は、ディスク装置におけるアクセス頻度とディスクの回転との間の関係の一例を示す図であり、(a)はアクセス頻度の推移の一例を示す図であり、(b)はディスクの回転数の一例を示す図である。ここでは、測定対象期間を1日とし、単位期間を1時間とした場合を示している。
図9(a)で、横軸は単位期間(時間)を示しており、縦軸は繁閑レベル(%)を示している。また、繁閑レベルが100%以上の場合は100%と表示している。
図9(b)で、横軸は単位期間(時間)を示しており、縦軸はディスク回転数[rpm]を示している。
【0068】
図9(a)に示されるように、0時〜7時までは繁閑レベルは10%以下となっているが、7時〜10時にかけて繁閑レベルは急激に上昇し、10時〜19時は100%となっている。その後、22時まで繁閑レベルは急激に減少し、22時で15%になり、その後24時にかけて繁閑レベルは徐々に減少し、24時で約0%となる。
【0069】
本実施形態では、
図5のディスク回転情報を参照してディスク11の回転数を繁閑レベルに応じて設定する。そのため、0時〜7時までは、ディスク11の回転数は4000回転であり、その後、繁閑レベルの上昇に合わせてディスク11の回転数も、5280回転、6240回転、そして定常回転の7200回転と上昇していく。その後、19時から24時にかけて、ディスク11の回転数は5920回転、5280回転、4320回転、4000回転と回転数が落ちていく。
【0070】
このように、繁閑レベルが100%に近い単位期間ではディスク11の回転数をより定常回転数に近い値としている。これによって、ホスト装置HCからアクセスがあった場合に、ディスク11を定常回転数にするまでの時間を短縮し、処理を早めることができる。一方、繁閑レベルが0%に近い単位期間ではディスク11の回転数をより低くしている。これは、ホスト装置HCからのアクセス頻度が少ないため、ディスク11を定常回転数にするまでの時間を多少長くしても処理の遅延が問題にならないからである。
【0071】
実施形態では、状態設定部193は、前単位期間が閑散期である場合に、前履歴情報153bから、前単位期間で読み出したデータをバッファ151に保存するとともに、ディスク11の回転数を繁閑レベルに応じた値にする。この状態で、ホスト装置HCからリードコマンドを受信した場合に、リードコマンドの指示するデータがバッファ151に存在する場合には、ディスク11の回転数を維持したまま、アクセス処理部194はコマンド処理を実行し、処理が終了後にホスト装置HCに応答を返し、その後に、アクティブモードへと遷移させる。これによって、ディスク11が定常回転数にない場合でも、ホスト装置HCからのコマンドに対して迅速に対応することができるとともに、ディスク装置10の消費電力を抑制することができるという効果を有する。
【0072】
また、前単位期間のデータを予測情報として用いるので、ある測定対象期間で繰り返し同じようなアクセスがある場合に、消費電力を抑えながら、ホスト装置HCへの応答を早めることができるという効果も有する。
【0073】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。