(57)【要約】【課題】  記憶媒体への連続したアクセスを効果的に実現するとともに、待機時間が長いコマンドを優先的に実行する制御装置または記憶装置を提供する。【解決手段】  保持部１０１は、実行順位が予め割り当てられた複数のコマンドと、コマンドが保持されてからの経過時間を示す待機時間を複数のコマンド毎に保持する。選択部１０２は、複数のコマンドの内待機時間が長いものからＮ個のコマンドを選択する。分類部１０３は、保持部１０１に保持されている複数のコマンドをＮ＋１個の複数のグループに分類する。変更部１０４はＮ個のコマンドの待機時間に基づいて複数のグループに優先順位を割り当てる。変更部１０４はまた、優先順位の高いグループに属するコマンドから実行されるように複数のコマンドの実行順位を変更する。【選択図】  図３
2010140380.tif 000002
【特許請求の範囲】
【請求項１】
実行順位が予め割り当てられた複数のコマンドを保持し、コマンドが保持されてからの経過時間を示す待機時間を前記複数のコマンド毎に保持するメモリと、
前記複数のコマンドの内、前記待機時間が長いものからＮ個（Ｎは１以上の整数）のコマンドを選択する選択部と、
前記選択部により選択されたＮ個のコマンドがそれぞれ別のグループに属するように、前記複数のコマンドをＮ＋１個の複数のグループに分類する分類部と、
前記選択部により選択された前記Ｎ個のコマンドの待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順位を変更する変更部と
を備える制御装置。
【請求項２】
請求項１に記載の制御装置において、
前記変更部は、１つのグループに複数のコマンドが属する場合には、前記予め割り当てられた実行順位に従って前記複数のコマンドの実行順位を変更することを特徴とする制御装置。
【請求項３】
実行順位が予め割り当てられた複数のコマンドを保持するメモリと、
前記複数のコマンド毎に、実行順位が隣り合ったコマンド間の関係を示す関係値を算出する関係値算出部と、
前記複数のコマンド毎の関係値に基づいて前記複数のコマンドを複数のグループに分類する分類部と、
前記複数のグループ毎に、前記メモリに保持されてからの経過時間を示す待機時間が最も長いコマンドを抽出する抽出部と、
前記抽出部により抽出された待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順序を変更する変更部と
を備える制御装置。
【請求項４】
請求項３に記載の制御装置において、
前記変更部は、１つのグループに複数のコマンドが属する場合には、前記予め割り当てられた実行順位に従って前記複数のコマンドの実行順位を変更することを特徴とする制御装置。
【請求項５】
請求項３または請求項４に記載の制御装置において、
前記関係値算出部は、実行順位が隣接するコマンドの内、実行順位が先のコマンドの終了から実行順位が後のコマンドが実行されるまでの移行時間を前記関係値として算出することを特徴とする制御装置。
【請求項６】
請求項３または請求項４に記載の制御装置において、
前記関係値算出部は、実行順位が隣接するコマンドの内、実行順位が先のコマンドによりアクセスされる論理アドレスと、実行順位が後のコマンドによりアクセスされる論理アドレスとの差を前記関係値として算出することを特徴とする制御装置。
【請求項７】
実行順位が予め割り当てられた複数のコマンドを保持し、コマンドが保持されてからの経過時間を示す待機時間を前記複数のコマンド毎に保持するメモリと、
前記複数のコマンドの内、前記待機時間が長いものからＮ個（Ｎは１以上の整数）のコマンドを選択する選択部と、
前記選択部により選択されたＮ個のコマンドがそれぞれ別のグループに属するように、前記複数のコマンドをＮ＋１個の複数のグループに分類する分類部と、
前記選択部により選択された前記Ｎ個のコマンドの待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順位を変更する変更部と、
前記変更部によって変更された実行順位に従って前記複数のコマンドを順次実行するコマンド実行部と
を備える記憶装置。
【請求項８】
実行順位が予め割り当てられた複数のコマンドを保持するメモリと、
前記複数のコマンド毎に、実行順位が隣り合ったコマンド間の関係を示す関係値を算出する関係値算出部と、
前記複数のコマンド毎の関係値に基づいて前記複数のコマンドを複数のグループに分類する分類部と、
前記複数のグループ毎に、前記メモリに保持されてからの経過時間を示す待機時間が最も長いコマンドを抽出する抽出部と、
前記抽出部により抽出された待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順序を変更する変更部と、
前記変更部によって変更された実行順位に従って前記複数のコマンドを順次実行するコマンド実行部と
を備える記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子機器で実行されるコマンドの実行順序を変更する技術に関し、特に、磁気ディスクなどの記憶媒体にアクセスするコマンドの実行順序を変更するリオーダリング技術に関する。
【背景技術】
【０００２】
上位装置（ホストコンピュータ）と接続されたディスク装置において、上位装置により発行された複数のコマンドを装置内部に保持し、ディスク装置自身が実行順序を判定する処理、いわゆるリオーダリング処理が知られている。リオーダリング処理として、Ｓｅｒｉａｌ  ＡＴＡインターフェイスで実行されるＮＣＱ(Native Command Queuing）コマンドが知られている。また、シーク時間などの待機時間に基づいて、短い時間で処理を実行するための実行順序を算出する技術もある（特許文献１）。このリオーダリング処理では、ディスク上のコマンドのアクセス先に基づいて、ディスク装置内部に保持されるコマンドの実行順序が決定される。決定された実行順序によれば、記録ディスクへの連続したアクセスが効果的に実行される。
【０００３】
また、リオーダリング処理として、ディスク装置が保持したままのコマンド、言い換えれば、実行までの待機時間が長いコマンドを優先的に実行するための技術が知られている。こういった技術は、音声データの再生処理に有用である。音飛びの発生防止に寄与する。具体的には、コマンドの実行回数に基づいて、所定の実行回数が経過する毎に保持されているコマンドの優先順位を上げる、という技術がある（特許文献２）。また、コマンドによる処理が所定の時間以上待たされた場合、このコマンドによる処理を優先的に行う技術がある（特許文献３）。
【特許文献１】特開２００３−３０８１７６号公報
【特許文献２】特開平５−１３４８１０号公報
【特許文献３】特開２００１−２４９７７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
近年、ハードウェア技術などの向上によりＮＣＱの装置内で保持されるコマンドの数（コマンドキューイング数）が増加しており、今後さらに増加する可能性もある。このため、音飛び発生の原因となる、待機時間の長いコマンドが同時に複数個保持されている状態も予想される。こういった場合、記憶媒体への連続したアクセスを効果的に行うだけでは、音飛びが発生する虞がある。その一方で、待機時間の長いコマンドのみを優先的に実行するだけでは、記憶媒体への連続したアクセスを効果的に行えない可能性がある。このため、記憶媒体への連続したアクセスを効果的に実現するとともに、実行までの待機時間が長いコマンドを優先的に実行することができる技術が望まれている。
【０００５】
本発明は、上述した問題点を解決するためになされたものであり、記憶媒体への連続したアクセスを効果的に実現するとともに、実行までの待機時間が長いコマンドを優先的に実行することができる技術を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上述した問題を解決するため、本発明に係る制御装置は、実行順位が予め割り当てられた複数のコマンドを保持し、コマンドが保持されてからの経過時間を示す待機時間を前記複数のコマンド毎に保持するメモリと、前記複数のコマンドの内、前記待機時間が長いものからＮ個（Ｎは１以上の整数）のコマンドを選択する選択部と、前記選択部により選択されたＮ個のコマンドがそれぞれ別のグループに属するように、前記複数のコマンドをＮ＋１個の複数のグループに分類する分類部と、前記選択部により選択された前記Ｎ個のコマンドの待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順位を変更する変更部とを備える。
【０００７】
前記変更部は、１つのグループに複数のコマンドが属する場合には、前記予め割り当てられた実行順位に従って前記複数のコマンドの実行順位を変更してもよい。
【０００８】
本発明に係る他の制御装置は、実行順位が予め割り当てられた複数のコマンドを保持するメモリと、前記複数のコマンド毎に、実行順位が隣り合ったコマンド間の関係を示す関係値を算出する関係値算出部と、前記複数のコマンド毎の関係値に基づいて前記複数のコマンドを複数のグループに分類する分類部と、前記複数のグループ毎に、前記メモリに保持されてからの経過時間を示す待機時間が最も長いコマンドを抽出する抽出部と、前記抽出部により抽出された待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順序を変更する変更部とを備える。
【０００９】
前記変更部は、１つのグループに複数のコマンドが属する場合には、前記予め割り当てられた実行順位に従って前記複数のコマンドの実行順位を変更してもよい。
【００１０】
前記関係値算出部は、実行順位が隣接するコマンドの内、実行順位が先のコマンドの終了から実行順位が後のコマンドが実行されるまでの移行時間を前記関係値として算出してもよい。前記関係値算出部は、実行順位が隣接するコマンドの内、実行順位が先のコマンドによりアクセスされる論理アドレスと、実行順位が後のコマンドによりアクセスされる論理アドレスとの差を前記関係値として算出してもよい。
【００１１】
本発明に係る記憶装置は、実行順位が予め割り当てられた複数のコマンドを保持し、コマンドが保持されてからの経過時間を示す待機時間を前記複数のコマンド毎に保持するメモリと、前記複数のコマンドの内、前記待機時間が長いものからＮ個（Ｎは１以上の整数）のコマンドを選択する選択部と、前記選択部により選択されたＮ個のコマンドがそれぞれ別のグループに属するように、前記複数のコマンドをＮ＋１個の複数のグループに分類する分類部と、前記選択部により選択された前記Ｎ個のコマンドの待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順位を変更する変更部と、前記変更部によって変更された実行順位に従って前記複数のコマンドを順次実行するコマンド実行部とを備える。
【００１２】
本発明に係る他の記憶装置は、実行順位が予め割り当てられた複数のコマンドを保持するメモリと、前記複数のコマンド毎に、実行順位が隣り合ったコマンド間の関係を示す関係値を算出する関係値算出部と、前記複数のコマンド毎の関係値に基づいて前記複数のコマンドを複数のグループに分類する分類部と、前記複数のグループ毎に、前記メモリに保持されてからの経過時間を示す待機時間が最も長いコマンドを抽出する抽出部と、前記抽出部により抽出された待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順序を変更する変更部と、前記変更部によって変更された実行順位に従って前記複数のコマンドを順次実行するコマンド実行部とを備える。
【発明の効果】
【００１３】
本発明によれば、記憶媒体への連続したアクセスを効果的に実現するとともに、実行までの待機時間が長いコマンドを優先的に実行することができる。
【発明を実施するための最良の形態】
【００１４】
（第１の実施の形態）
以下、本発明の第１の実施の形態について図面を参照して説明する。
【００１５】
まず、第１の実施の形態に係る記憶装置としてハードディスク装置（ＨＤＤ）の構成について説明する。図１は、上位装置（ホストコンピュータ）２に接続されたＨＤＤ１の構成を示すブロック図を示す。
【００１６】
図１に示されるように、上位装置２とＨＤＤ１はホストインターフェイス（ＩＦ）３を介して接続されている。上位装置２は記憶装置としてＨＤＤ１を備えるパーソナルコンピュータであり、データの読み書きにおいて、ＨＤＤ１に対してコマンドを発行する。
【００１７】
ＨＤＤ１は、ホストＩＦ（インターフェイス）制御部１１、バッファ制御部１２、バッファメモリ１３、フォーマット制御部１４、リードチャネル１５、ヘッドＩＣ(Integrated Circuit)１６、ＭＰＵ(Microprocessor Unit)１７、メモリ１８、不揮発性メモリ１９、サーボ制御部２０、ＶＣＭ(Voice Coil Motor)２１、ＳＰＭ(Spindle Motor)２２、リードライトヘッド２３、ディスク媒体２４、バス２５、および、ホストＩＦ（インターフェイス）３を有する。
【００１８】
ホストＩＦ３は、ＨＤＤ１と上位装置２との間でデータやコマンドを送受するための通信に寄与する。ホストＩＦ制御部１１はホストＩＦ３を介して送られる上位装置２へのデータやコマンドを制御する。また、ホストＩＦ制御部１１は上位装置２から送られてホストＩＦ３で受け取られたデータやコマンドを制御する。バッファ制御部１２は、バッファメモリ１３に記憶されるデータの書き込みや読み出しを制御する。バッファメモリ１３は、ディスク媒体２４に書き込まれるデータや、ディスク媒体２４から読み出されたデータを一時的に記憶する。フォーマット制御部１４はディスク媒体２４に書き込まれるデータの書き込みフォーマットを生成する。リードチャネル１５は、ディスク媒体２４に書き込まれるデータを信号に変換したり、ディスク媒体２４から読み出された信号をデータに変換したりする。
【００１９】
ヘッドＩＣ１６は、リードライトヘッド２３によりディスク媒体２４に書き込まれる信号やディスク媒体２４から読み出された信号を増幅する。ＭＰＵ１７はＨＤＤ１全体の動作を制御する。ＭＰＵ１７は、後述するコマンドメモリ１７ａを含む。メモリ１８は揮発性のメモリである。不揮発性メモリ１９は、ＨＤＤを制御するためのプログラムを記憶する。サーボ制御部２０は、ＶＣＭ２１およびＳＰＭ２２の動作を制御する。ＶＣＭ２１はリードライトヘッド２３を駆動する。ＳＰＭ２２は、ディスク媒体２４を回転駆動する。リードライトヘッド２３はディスク媒体２４にデータとしての信号を書き込んだり、ディスク媒体２４に記録されているデータを信号として読み出したりする。ディスク媒体２４はデータを記録するための記憶媒体である。バス２５は、ホストＩＦ制御部１１、バッファ制御部１２、フォーマット制御部１４、リードチャネル１５、ヘッドＩＣ１６、ＭＰＵ１７、メモリ１８、不揮発性メモリ１９、および、サーボ制御部２０との間のデータやコマンドなどの情報の送受に寄与する。
【００２０】
次に、送受信されるデータや、受信されたコマンドの伝送経路を簡単に説明する。先ず、ディスク媒体２４からデータが読み出される場合のデータの伝送経路を簡単に説明する。リードライトヘッド２３により、データとしての信号がディスク媒体２４から読み出される。読み出された信号は、ヘッドＩＣ１６を経由してリードチャネル１５に送られる。リードチャネル１５に送られた信号はデータに変換される。変換されたデータは、フォーマット制御部１４、バッファ制御部１２を経由してバッファメモリ１３に送られ、ここで一時的に記憶される。バッファメモリ１３に記憶されたデータは、ホストＩＦ制御部１１の制御の元、ホストＩＦ３を経由して上位装置へ送出される。
【００２１】
次に、ディスク媒体２４にデータが書き込まれる場合のデータの伝送経路を簡単に説明する。上位装置２から送出されたデータは、ホストＩＦ３、ホストＩＦ制御部１１、バッファ制御部１２を経由してバッファメモリ１３に一時的に記憶される。バッファメモリ１３に記憶されたデータは、書き込みに適当なタイミングで、フォーマット制御部１４、リードチャネル１５、ヘッドＩＣ１７を経由してリードライトヘッド２３に送られる。リードチャネル１５では、データは書き込みのための信号に変換される。リードライトヘッド２３は、変換された信号をディスク媒体２４に書き込む。
【００２２】
次に、上位装置２から送られるコマンドの経路について簡単に説明する。上位装置２からは、データの書き込みや読み出しを指示するコマンドがＨＤＤ１に送られる。コマンドはホストＩＦ３で受信され、ホストＩＦ制御部１１により、ＭＰＵ１７に送られる。ＭＰＵ１７は受け取ったコマンドをコマンドメモリ１７ａに記憶する。ＭＰＵ１７は、コマンド毎に、データの受け取りから経過した時間をカウントする。複数のコマンドがコマンドメモリ１７ａに保持されている場合、ＭＰＵ１７はコマンド毎に割り当てられた実行順位に従ってコマンドを実行する。
【００２３】
次に、ＭＰＵ１７のコマンドメモリ１７ａについて説明する。図２は、コマンドメモリ１７ａに記憶されて保持されるコマンド、および、コマンドに関連するデータの一例を示す。前述したように、コマンドメモリ１７ａは複数のコマンドを保持することができる。この第１の実施の形態では、実行中のコマンド(current)以外に１０個のコマンド(Command＿1〜Command＿10)を一度に記憶し、保持することができる。図２に示されるように、実行中以外のコマンドには予定順序を示す実行順位が割り当てられている。この実行順位の割り当ては、ＭＰＵ１７により随時実行されるＮＣＱ(Native Command Queuing）によって実現される。コマンドメモリ１７ａでは、コマンドの実行によりアクセスされる論理アドレスブロック（ＬＡＢ）がコマンド毎に保持されている。さらに、コマンドの実行により書き込み、または、読み出しされるデータのサイズ（ＳＩＺＥ）も保持されている。例えば、実行中のコマンドの次に実行されるのはCommand＿8である。受信されてから現在までの経過時間、すなわち、待機時間が一番長いのはCommand＿1である。
【００２４】
次に、この第１の実施の形態における、実行順位を変更するための機能について説明する。
【００２５】
図３は、第１の実施の形態における実行順位変更処理とコマンド実行処理とを実現するための機能ブロックを示す。実行順位変更処理は、保持部１０１、選択部１０２、分類部１０３、および、変更部１０４で遂行される。コマンド実行処理はコマンド実行部１０５で遂行される。保持部１０１は、実行順位が予め割り当てられた複数のコマンドを保持する。保持部１０１はまた、コマンドが保持されてからの経過時間を示す待機時間を複数のコマンド毎に保持する。選択部１０２は、複数のコマンドの内、待機時間が長いものから順にＮ個のコマンドを選択する。ここで、Ｎは１以上の整数である。分類部１０３は、選択部１０２により選択されたＮ個のコマンドがそれぞれ別のグループに属するように、保持部１０１に保持されている複数のコマンドをＮ＋１個の複数のグループに分類する。
【００２６】
変更部１０４は、選択部１０２により選択されたＮ個のコマンドの待機時間に基づいて、保持部１０１に保持されている複数のグループに優先順位を割り当てる。具体的には、変更部１０４は、待機時間の長いコマンドを含んだグループに高い優先順位を割り当てる。待機時間の長いコマンドが複数ある場合、最も長い待機時間のコマンドが属するグループから順に優先順位を割り当てる。変更部１０４はまた、優先順位の高いグループに属するコマンドから実行されるように保持部１０１に保持されている複数のコマンドの実行順位を変更する。変更部１０４は、１つのグループに複数のコマンドが属する場合、予め割り当てられた実行順位が反映されるように、そのグループ内のコマンドの実行順位を変更する。コマンド実行部１０５は、変更部１０４により変更された実行順位に従って、保持部１０１に保持されている複数のコマンドを順次実行する。
【００２７】
保持部１０１は前述のコマンドメモリ１７ａで実現してもよい。選択部１０２、分類部１０３、変更部１０４、および、コマンド実行部１０５は、ＭＰＵ１７が所定のプログラムを実行することで実現してもよい。
【００２８】
次に、この第１の実施の形態における、実行順位を変更するための動作を図１に示される構成と関連付けて説明する。図４は、実行順位を変更するための動作を示すフローチャートである。ここでは、ＮＣＱがＭＰＵ１７により実行され、コマンドメモリ１７ａに保持される複数のコマンドに実行順位が割り当てられていると仮定する。また、コマンドメモリ１７ａには、図２に示されるような複数のコマンドとそれらコマンドに関連するデータが保持されていると仮定する。
【００２９】
ＭＰＵ１７は、コマンドメモリ１７ａに保持されている複数のコマンドの実行順位を変更することが必要であるか否かを判定する（ステップＳ１１）。実行順位の変更が必要でないと判定された場合（ステップＳ１１，ＮＯ）、処理は終了する。変更の要否は、例えば、待機時間が所定時間以上のコマンドの有無に基づいて判定してもよい。
【００３０】
実行順位の変更が必要であると判定された場合（ステップＳ１１，ＹＥＳ）、ＭＰＵ１７は各コマンドの待機時間に基づいて、保持部１０１の保持する複数のコマンドの内、待機時間が長いものからＮ個のコマンドを選択する（ステップＳ１２）。ここで、Ｎは１以上の整数である。なお、Ｎは予め定められた個数でもよい。Ｎは、コマンドメモリ１７ａに保持されているコマンドの数に基づいて決定されてもよい。この第１の実施の形態では、ＭＰＵ１７は、コマンドメモリ１７ａに保持されているコマンドの内、待機時間が長いコマンドからＮ個のコマンドを選択する。例えば、Ｎ＝１である場合、ＭＰＵ１７はCommand＿1を選択する（図５参照）。
【００３１】
次に、ＭＰＵ１７は、選択されたＮ個のコマンドに基づいて、コマンドメモリ１７ａに保持される複数のコマンドをＮ＋１個の複数のグループに分類する（ステップＳ１３）。この第１の実施の形態では、ＭＰＵ１７は、選択されたＮ個のコマンドが、該当するグループ内で最も高い実行順位となるように、コマンドメモリ１７ａに保持される複数のコマンドを複数のグループに分類する。例えば、Ｎ＝１である場合、ＭＰＵ１７は、Command＿1に後続して実行順位が割り当てられているCommand＿10およびCommand＿9をCommand＿1と同じグループ（図５に示されるグループ２）に割り当てる。Command＿1、Command＿9、および、Command＿10を除いた他のコマンドを一つのグループ（図５に示されれるグループ１）に割り当てる。この結果、グループ１には、Command＿8、Command＿7、Command＿6、Command＿5、Command＿2、Command＿4、および、Command＿3が属する。グループ２には、Command＿1、Command＿10、および、Command＿9が属する。
【００３２】
次に、ＭＰＵ１７は、ステップＳ１２で選択されたＮ個のコマンドの待機時間に基づき、ステップＳ１３で分類された複数のグループに優先順位を割り当てる（ステップＳ１４）。Ｎ＝１の場合、ＭＰＵ１７は、ステップＳ１２で選択されたCommand＿1が属するグループ２にグループ１よりも高い優先順位を割り当てる。ここでは、グループ１には選択されたコマンドが含まれていないため、グループ２にグループ１よりも高い優先順位が割り当てられる。
【００３３】
ＭＰＵ１７はまた、グループ１および２に割り当てられた優先順位と、ＮＣＱによってコマンドに割り当てられた実行順位とに基づき、コマンドメモリ１７ａに保持されている複数のコマンドの実行順位を変更する（ステップＳ１５）。Ｎ＝１の場合、グループ２に属する複数のコマンドが早く実行されるように実行順位が割り当てられる。ただし、グループ内に複数のコマンドが含まれているため、これらのコマンドに対しては、ＮＣＱによってコマンドに割り当てられた実行順位を反映するように新しい実行順位が割り当てられる。図６は実行順位が変更された後の、コマンドメモリ１７ａに保持されるコマンドを示す図である。具体的には、Command＿1に実行順位「１」が、Command＿10に実行順位「２」が、Command＿9に実行順位「３」が割り当てられる。グループ２に属するコマンドに対する新しい実行順位の割り当てが完了すると、ＭＰＵ１７は、グループ１に属するコマンドに対して新しい実行順位の割り当てを行う。ここでも、グループ内に複数のコマンドが含まれているため、これらのコマンドに対しては、ＮＣＱによってコマンドに割り当てられた実行順位を反映するように新しい実行順位が割り当てられる。具体的には、Command＿8に実行順位「４」が、Command＿7に実行順位「５」が、Command＿6に実行順位「６」が、Command＿5に実行順位「７」が、Command＿2に実行順位「８」が、Command＿4に実行順位「９」が、Command＿3に実行順位「１０」が割り当てられる。
【００３４】
以上の動作によって実行順位を変更処理が完了する。この後、ＭＰＵ１７は、ステップＳ１５で変更された実行順位に従って、コマンドメモリ１７ａに保持されている複数のコマンドを順次実行する。
【００３５】
先の説明では、Ｎ＝１の場合の動作を具体的に説明した。ここで、Ｎ＝２の場合の動作を具体的に説明する。
【００３６】
Ｎ＝２である場合、ＭＰＵ１７は、Command＿1とCommand＿2とを選択する（ステップＳ１２、図７参照）。ステップＳ１３では、ＭＰＵ１７は、Command＿1に後続して実行順位が割り当てられているCommand＿10およびCommand＿9をCommand＿1と同じグループ（図７に示されるグループ３）に割り当てる。ＭＰＵ１７は、Command＿2に後続して実行順位が割り当てられているCommand＿4およびCommand＿3をCommand＿2と同じグループ（図７に示されるグループ２）に割り当てる。Command＿1、Command＿2、Command＿3、Command＿4、Command＿9、および、Command＿10を除いた他のコマンドを一つのグループ（図７に示されれるグループ１）に割り当てる。この結果、グループ１には、Command＿8、Command＿7、Command＿6、および、Command＿5が属する。グループ２には、Command＿2、Command＿4、および、Command＿3が属する。グループ３には、Command＿1、Command＿10、および、Command＿9が属する。
【００３７】
ステップＳ１４では、ＭＰＵ１７は、グループ３、グループ２、グループ１の順に優先順位を割り当てる。ＭＰＵ１７は、Command＿1が属するグループ３に、Command＿2が属するグループ２よりも高い優先順位を割り当てる。理由は、Command＿1の待機時間がCommand＿2のそれよりも長いためである。
【００３８】
ステップＳ１５では、先ず、グループ３に属するコマンドが早く実行されるように実行順位が割り当てられる。グループ内に複数のコマンドが含まれているため、これらのコマンドに対しては、ＮＣＱによってコマンドに割り当てられた実行順位を反映するように新しい実行順位が割り当てられる。図８は実行順位が変更された後の、コマンドメモリ１７ａに保持されるコマンドを示す図である。具体的には、Command＿1に実行順位「１」が、Command＿10に実行順位「２」が、Command＿9に実行順位「３」が割り当てられる。グループ３に属するコマンドに対する新しい実行順位の割り当てが完了すると、ＭＰＵ１７は、グループ２に属するコマンドに対して新しい実行順位の割り当てを行う。具体的には、Command＿2に実行順位「４」が、Command＿4に実行順位「５」が、Command＿3に実行順位「６」が割り当てられる。グループ２に属するコマンドに対して新しい実行順位の割り当てが完了すると、ＭＰＵ１７は、グループ１に属するコマンドに対して新しい実行順位の割り当てを行う。具体的には、Command＿8に実行順位「７」が、Command＿7に実行順位「８」が、Command＿6に実行順位「９」が、Command＿5に実行順位「１０」が割り当てられる。
【００３９】
以上説明した第１の実施の形態によれば、ＮＣＱで決定された効果的な連続アクセスを維持しながら、待機時間が長いコマンドを優先的に実行することができる。
【００４０】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して説明する。第２の実施の形態に係る記憶装置は、ハードディスク装置（ＨＤＤ）として実現することができる。このＨＤＤの構成は、前述の第１の実施の形態で説明されたものと同様の構成を有することができる。したがって、ＨＤＤを構成する個々の要素の説明は省略する。個々の要素の引用にあたっては図１と同様の参照符号を付す。
【００４１】
この第２の実施の形態における、実行順位を変更するための機能について説明する。図９は、第２の実施の形態における実行順位変更処理とコマンド実行処理とを実現するための機能ブロックを示す。実行順位変更処理は、保持部２０１、関係値算出部２０２、分類部２０３、抽出部２０４、および、変更部２０５で遂行される。コマンド実行処理はコマンド実行部２０６で遂行される。
【００４２】
保持部２０１は、実行順位が予め割り当てられた複数のコマンドを保持する。関係値算出部２０２は、保持部２０１に保持されるコマンド毎に、実行順位が隣り合ったコマンド間の関係を示す関係値を算出する。分類部２０３は、各コマンドの関係値に基づいて、保持部２０１で保持される複数のコマンドを複数のグループに分類する。抽出部２０４は、分類されたグループ毎に、保持部２０１に保持されてからの待機時間が最も長いコマンドを抽出する。変更部２０５は、抽出されたコマンドの待機時間に基づいて、分類部２０３により分類された複数のグループに優先順位を割り当てる。変更部２０５はまた、優先順位の高いグループに属するコマンドから実行されるように、保持部２０１に保持されている複数のコマンドの実行順序を変更する。具体的には、変更部２０５は、抽出されたコマンドの待機時間を比較して、待機時間の長いコマンドを含んだグループに高い優先順位を割り当てる。言い換えると、変更部２０５は、複数のグループに、抽出されたコマンドの待機時間の長い順に優先順位が割り当てる。変更部２０５はまた、優先順位の高いグループに属するコマンドから実行されるように保持部２０１に保持されている複数のコマンドの実行順位を変更する。変更部２０５は、１つのグループに複数のコマンドが属する場合、予め割り当てられた実行順位が反映されるように、そのグループ内のコマンドの実行順位を変更する。コマンド実行部２０６は、変更部２０５により変更された実行順位に従って、保持部２０１に保持されている複数のコマンドを順次実行する。
【００４３】
関係値算出部２０２は、実行順位が隣接するコマンドの内、実行順位が先のコマンドの終了から実行順位が後のコマンドが実行されるまでの移行時間を関係値として算出してもよい。
【００４４】
関係値算出部２０２は、実行順位が隣接するコマンドの内、実行順位が先のコマンドによりアクセスされる論理アドレスと、実行順位が後のコマンドによりアクセスされる論理アドレスとの差を関係値として算出してもよい。
【００４５】
保持部２０１はコマンドメモリ１７ａで実現してもよい。関係値算出部２０２、分類部２０３、抽出部２０４、変更部２０５、および、コマンド実行部２０６は、ＭＰＵ１７が所定のプログラムを実行することで実現してもよい。
【００４６】
次に、この第２の実施の形態における、実行順位を変更するための動作を図１に示される構成と関連付けて説明する。図１０は、実行順位を変更するための動作を示すフローチャートである。ここでは、ＮＣＱがＭＰＵ１７により実行され、コマンドメモリ１７ａに保持される複数のコマンドに実行順位が割り当てられていると仮定する。また、コマンドメモリ１７ａには、図２に示されるような複数のコマンドとそれらコマンドに関連するデータが保持されていると仮定する。
【００４７】
ＭＰＵ１７は、コマンドメモリ１７ａに保持されている複数のコマンドの実行順位を変更することが必要であるか否かを判定する（ステップＳ２１）。実行順位の変更が必要でないと判定された場合（ステップＳ２１，ＮＯ）、処理は終了する。
【００４８】
実行順位の変更が必要であると判定された場合（ステップＳ２１，ＹＥＳ）、ＭＰＵ１７は各コマンドの待機時間に基づいて、コマンドメモリ１７ａに保持されるコマンド毎に、実行順位が隣り合ったコマンド間の関係を示す関係値を算出する（ステップＳ２２）。ＭＰＵ１７は、実行順位が隣接するコマンドの内、実行順位が先のコマンドの終了から実行順位が後のコマンドが実行されるまでの移行時間を関係値として算出してもよい。例えば、ＮＣＱの実行にあたって、Command＿Mの処理終了からこのコマンドに後続した実行順位が割り当てられているCommand＿Nの処理対象セクタ位置へのヘッド位置づけまでに要する時間が求められている場合、この時間を関係値として使用することもできる。
【００４９】
ＭＰＵ１７はまた、実行順位が隣接するコマンドの内、実行順位が先のコマンドによりアクセスされる論理アドレスと、実行順位が後のコマンドによりアクセスされる論理アドレスとの差を関係値として算出してもよい。
【００５０】
ＭＰＵ１７は、各コマンドの関係値に基づいて、コマンドメモリ１７ａで保持される複数のコマンドを複数のグループに分類する（ステップＳ２３）。例えば、ＬＢＡを参照するとCommand＿4とCommand＿3との関係値として、0x016f0780が算出される。Command＿6とCommand＿5との関係値として、0x016f0780が算出される。こういった関係値に基づいて図１１に示されるように２つのグループに分類しても、図１３に示されるように３つのグループに分類してもよい。なお、グループ数は予め定められた個数でもよく、コマンドメモリ１７ａに保持されているコマンドの数に基づいて決定されてもよい。
【００５１】
ＭＰＵ１７は、分類されたグループ毎に、コマンドメモリ１７ａに保持されてからの待機時間が最も長いコマンドを抽出する（ステップＳ２４）。コマンドメモリ１７ａに保持される複数のコマンドが２つのグループに分類される場合、ＭＰＵ１７は、Command＿1とCommand＿2とを選択する（図１１参照）。コマンドメモリ１７ａに保持される複数のコマンドが３つのグループに分類される場合、ＭＰＵ１７は、Command＿1、Command＿2、および、Command＿6を選択する（図１３参照）。
【００５２】
ＭＰＵ１７は、抽出されたコマンドの待機時間に基づいて、ステップＳ２３で分類された複数のグループに優先順位を割り当てる（ステップＳ２５）。コマンドメモリ１７ａに保持される複数のコマンドが２つのグループに分類される場合、ＭＰＵ１７は、グループ２にグループ１より高い優先順位を割り当てる。理由はCommand＿1の待機時間がCommand＿2のそれよりも長いためである。コマンドメモリ１７ａに保持される複数のコマンドが３つのグループに分類される場合、ＭＰＵ１７は、図１３に示されるグループ１〜３に対して、グループ３、グループ２、グループ１の順に優先順位を割り当てる。ＭＰＵ１７は、Command＿1が属するグループ３に、Command＿2が属するグループ２よりも高い優先順位を割り当てる。理由はCommand＿1の待機時間がCommand＿2のそれよりも長いためである。Command＿2が属するグループ２に、Command＿6が属するグループ１よりも高い優先順位を割り当てる。理由はCommand＿2の待機時間がCommand＿6のそれよりも長いためである。
【００５３】
ＭＰＵ１７はまた、この優先順位と予め割り当てられた実行順位とに基づいて、コマンドメモリ１７ａに保持されている複数のコマンドの実行順位を変更する（ステップＳ２６）。コマンドメモリ１７ａに保持される複数のコマンドが２つのグループに分類される場合、グループ２に属する複数のコマンドが早く実行されるように実行順位が割り当てられる。ただし、グループ内に複数のコマンドが含まれているため、これらのコマンドに対しては、ＮＣＱによってコマンドに割り当てられた実行順位に従って新しい実行順位が割り当てられる。具体的には、Command＿3に実行順位「１」が、Command＿1に実行順位「２」が、Command＿10に実行順位「３」が、Command＿9に実行順位「４」が割り当てられる。グループ２に属するコマンドに対する新しい実行順位の割り当てが完了すると、ＭＰＵ１７は、グループ１に属するコマンドに対して新しい実行順位の割り当てを行う。具体的には、Command＿8に実行順位「５」が、Command＿7に実行順位「６」が、Command＿6に実行順位「７」が、Command＿5に実行順位「８」が、Command＿2に実行順位「９」が、Command＿4に実行順位「１０」が割り当てられる。この結果、図１２に示されるような新しい実行順位がコマンドメモリ１７ａに保持されるコマンドに割り当てられる。
【００５４】
コマンドメモリ１７ａに保持される複数のコマンドが３つのグループに分類される場合、グループ３に属するコマンドが早く実行されるように実行順位が割り当てられる。グループ内に複数のコマンドが含まれているため、これらのコマンドに対しては、ＮＣＱによってコマンドに割り当てられた実行順位に従って新しい実行順位が割り当てられる。具体的には、Command＿3に実行順位「１」が、Command＿1に実行順位「２」が、Command＿10に実行順位「３」が、Command＿9に実行順位「４」が割り当てられる。グループ３に属するコマンドに対する新しい実行順位の割り当てが完了すると、ＭＰＵ１７は、グループ２に属するコマンドに対して新しい実行順位の割り当てを行う。具体的には、Command＿5に実行順位「５」が、Command＿2に実行順位「６」が、Command＿4に実行順位「７」が割り当てられる。グループ２に属するコマンドに対して新しい実行順位の割り当てが完了すると、ＭＰＵ１７は、グループ１に属するコマンドに対して新しい実行順位の割り当てを行う。具体的には、Command＿8に実行順位「８」が、Command＿7に実行順位「９」が、Command＿6に実行順位「１０」が割り当てられる。この結果、図１４に示されるような新しい実行順位がコマンドメモリ１７ａに保持されるコマンドに割り当てられる。
【００５５】
以上の動作によって実行順位を変更処理が完了する。この後、ＭＰＵ１７は、ステップＳ２６で変更された実行順位に従って、コマンドメモリ１７ａに保持されている複数のコマンドを順次実行する。
【００５６】
以上説明した第２の実施の形態によれば、ＮＣＱで決定された効果的な連続アクセスを維持しながら、待機時間が長いコマンドを優先的に実行することができる。
【００５７】
次に、第１および第２の実施の形態に係る変形例を説明する。この変形例では、各グループ内で実行順位を変更することを特徴とする。
【００５８】
図３に示される機能ブロック図を参照して第１の実施の形態に係る変形例を説明する。選択部１０２は、分類対象のグループからＭ個のコマンドを選択する。ここで、Ｍは１以上の整数である。分類部１０３は、選択部１０２により選択されたＭ個のコマンドに基づいて、分類対象のグループに属する複数のコマンドをＭ＋１個の複数のサブグループに分類する。変更部１０４は、選択部１０２により選択されたＭ個のコマンドの待機時間に基づき、分類部１０３により分類された複数のサブグループに優先順位を割り当てる。選択部１０２により選択されたＭ個のコマンドの待機時間に基づいて、サブグループに優先順位を割り当てる。変更部１０４はまた、分類対象のグループ内では、優先順位の高いサブグループに属するコマンドから実行されるように保持部１０１に保持されている複数のコマンドの実行順位を変更する。
【００５９】
こういった処理は、ＭＰＵ１７が、図１５に示されるフローチャートの処理を、図４に示されるステップＳ１５の後に実行することで実現される。ＭＰＵ１７は、複数のグループの内の１つに対して、例えば、図４のステップＳ１２、Ｓ１３、Ｓ１４およびＳ１５の処理を実行する（ステップＳ３１）。この後、ＭＰＵ１７は、グループ内の優先順位の変更がなされていないグループがあるか判定する（ステップＳ３２）。変更がなされていないグループが存在する場合（ステップＳ３２，ＹＥＳ）、このグループに対して図４のステップＳ１２、Ｓ１３、Ｓ１４およびＳ１５の処理を実行する（ステップＳ３１）。ＭＰＵ１７は、全てのグループに対して実行順位の変更処理が完了すると処理を終了する（ステップＳ３２，ＮＯ）。
【００６０】
この第１の実施の形態の変形例によれば、分類されたグループ内で実行順位を変更することができる。ＨＤＤ１では、ＮＣＱで決定された効果的な連続アクセスが維持され、且つ、待機時間が長いコマンドが優先的に実行される。
【００６１】
図９に示される機能ブロック図を参照して第２の実施の形態に係る変形例を説明する。分類部２０３は、関係値に基づいて分類対象のグループを複数のサブグループに分類する。抽出部２０４は、サブグループ毎に、待機時間が最も長いコマンドを抽出する。変更部２０５は、抽出されたコマンドの待機時間に基づいて、分類部２０３によりさらに分類された複数のサブグループに優先順位を割り当てる。変更部２０５はまた、対象のグループ内では、優先順位の高いサブグループに属するコマンドから実行されるように、保持部２０１に保持されている複数のコマンドの実行順序を変更する。
【００６２】
こういった処理は、ＭＰＵ１７が、図１５に示されるフローチャートの処理を図１０に示されるステップＳ２６の後に実行することで実現される。ＭＰＵ１７は、複数のグループの内の１つに対して、例えば、図１０のステップＳ２２、Ｓ２３、Ｓ２４、Ｓ２５およびＳ１６の処理を実行する（ステップＳ３１）。この後、ＭＰＵ１７は、グループ内の優先順位の変更がなされていないグループがあるか判定する（ステップＳ３２）。変更がなされていないグループが存在する場合（ステップＳ３２，ＹＥＳ）、このグループに対して図１０のステップＳ２２、Ｓ２３、Ｓ２４、Ｓ２５およびＳ１６の処理を実行する（ステップＳ３１）。ＭＰＵ１７は、全てのグループに対して実行順位の変更処理が完了すると処理を終了する（ステップＳ３２，ＮＯ）。
【００６３】
この第２の実施の形態の変形例によれば、分類されたグループ内で実行順位を変更することができる。ＨＤＤ１では、ＮＣＱで決定された効果的な連続アクセスが維持され、且つ、待機時間が長いコマンドが優先的に実行される。
【００６４】
本発明は、その要旨または主要な特徴から逸脱することなく、他の様々な形で実施することができる。そのため、前述の実施の形態は、あらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明の範囲は、特許請求の範囲によって示すものであって、明細書本文には、何ら拘束されない。更に、特許請求の範囲の均等範囲に属する全ての変形、様々な改良、代替および改質は、全て本発明の範囲内のものである。
【００６５】
以上、本実施の形態によれば、以下の付記で示す技術的思想が開示されている。
（付記１）  実行順位が予め割り当てられた複数のコマンドを保持し、コマンドが保持されてからの経過時間を示す待機時間を前記複数のコマンド毎に保持するメモリと、
前記複数のコマンドの内、前記待機時間が長いものからＮ個（Ｎは１以上の整数）のコマンドを選択する選択部と、
前記選択部により選択されたＮ個のコマンドがそれぞれ別のグループに属するように、前記複数のコマンドをＮ＋１個の複数のグループに分類する分類部と、
前記選択部により選択された前記Ｎ個のコマンドの待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順位を変更する変更部と
を備える制御装置。
（付記２）  付記１に記載の制御装置において、
前記変更部は、１つのグループに複数のコマンドが属する場合には、前記予め割り当てられた実行順位に従って前記複数のコマンドの実行順位を変更することを特徴とする制御装置。
（付記３）  付記１に記載の制御装置において、
前記選択部は前記メモリに保持されるコマンドの数に基づいて選択するコマンドの個数Ｎを決定することを特徴とする制御装置。
（付記４）  付記１に記載の制御装置において、
前記分類部は、選択されたＮ個のコマンドが、各々属するグループ内で最も高い実行順位となるように、前記複数のコマンドを複数のグループに分類することを特徴とする制御装置。
（付記５）  付記１乃至４に記載の制御装置において、
前記メモリに保持される複数のコマンドには、ネイティブ・コマンド・キューイングに従って実行順位が予め定められていることを特徴とする制御装置。
（付記６）  実行順位が予め割り当てられた複数のコマンドを保持するメモリと、
前記複数のコマンド毎に、実行順位が隣り合ったコマンド間の関係を示す関係値を算出する関係値算出部と、
前記複数のコマンド毎の関係値に基づいて前記複数のコマンドを複数のグループに分類する分類部と、
前記複数のグループ毎に、前記メモリに保持されてからの経過時間を示す待機時間が最も長いコマンドを抽出する抽出部と、
前記抽出部により抽出された待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順序を変更する変更部と
を備える制御装置。
（付記７）  付記６に記載の制御装置において、
前記変更部は、１つのグループに複数のコマンドが属する場合には、前記予め割り当てられた実行順位に従って前記複数のコマンドの実行順位を変更することを特徴とする制御装置。
（付記８）  付記６に記載の制御装置において、
前記関係値算出部は、実行順位が隣接するコマンドの内、実行順位が先のコマンドの終了から実行順位が後のコマンドが実行されるまでの移行時間を前記関係値として算出することを特徴とする制御装置。
（付記９）  付記６に記載の制御装置において、
前記関係値算出部は、実行順位が隣接するコマンドの内、実行順位が先のコマンドによりアクセスされる論理アドレスと、実行順位が後のコマンドによりアクセスされる論理アドレスとの差を前記関係値として算出することを特徴とする制御装置。
（付記１０）  付記６に記載の制御装置において、
前記分類部は、前記関係値に基づいて分類対象のグループを複数のサブグループに分類し、
前記抽出部は、サブグループ毎に待機時間が最も長いコマンドを抽出し、
前記変更部は、前記抽出部により抽出された待機時間に基づいて前記複数のサブグループに優先順位を割り当て、優先順位の高いサブグループに属するコマンドから実行されるように前記複数のコマンドの実行順序を変更することを特徴とする制御装置。
（付記１１）  付記６に記載の制御装置において、
前記メモリに保持される複数のコマンドには、ネイティブ・コマンド・キューイングに従って前記実行順位が予め割り当てられていることを特徴とする制御装置。
（付記１２）  実行順位が予め割り当てられた複数のコマンドを保持し、コマンドが保持されてからの経過時間を示す待機時間を前記複数のコマンド毎に保持するメモリと、
前記複数のコマンドの内、前記待機時間が長いものからＮ個（Ｎは１以上の整数）のコマンドを選択する選択部と、
前記選択部により選択されたＮ個のコマンドがそれぞれ別のグループに属するように、前記複数のコマンドをＮ＋１個の複数のグループに分類する分類部と、
前記選択部により選択された前記Ｎ個のコマンドの待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順位を変更する変更部と、
前記変更部によって変更された実行順位に従って前記複数のコマンドを順次実行するコマンド実行部と
を備える記憶装置。
（付記１３）  付記１２に記載の記憶装置において、
前記変更部は、１つのグループに複数のコマンドが属する場合には、前記予め割り当てられた実行順位に従って前記複数のコマンドの実行順位を変更することを特徴とする記憶装置。
（付記１４）  付記１２に記載の記憶装置において、
前記選択部は前記メモリに保持されるコマンドの数に基づいて選択するコマンドの個数Ｎを決定することを特徴とする記憶装置。
（付記１５）  付記１２に記載の記憶装置において、
前記分類部は、選択されたＮ個のコマンドが、各々属するグループ内で最も高い実行順位となるように、前記複数のコマンドを複数のグループに分類することを特徴とする記憶装置。
（付記１６）  付記１２乃至１５に記載の記憶装置において、
前記メモリに保持される複数のコマンドには、ネイティブ・コマンド・キューイングに従って実行順位が予め定められていることを特徴とする記憶装置。
（付記１７）  実行順位が予め割り当てられた複数のコマンドを保持するメモリと、
前記複数のコマンド毎に、実行順位が隣り合ったコマンド間の関係を示す関係値を算出する関係値算出部と、
前記複数のコマンド毎の関係値に基づいて前記複数のコマンドを複数のグループに分類する分類部と、
前記複数のグループ毎に、前記メモリに保持されてからの経過時間を示す待機時間が最も長いコマンドを抽出する抽出部と、
前記抽出部により抽出された待機時間に基づいて前記複数のグループに優先順位を割り当て、優先順位の高いグループに属するコマンドから実行されるように前記複数のコマンドの実行順序を変更する変更部と、
前記変更部によって変更された実行順位に従って前記複数のコマンドを順次実行するコマンド実行部と
を備える記憶装置。
（付記１８）  付記１７に記載の記憶装置において、
前記変更部は、１つのグループに複数のコマンドが属する場合には、前記予め割り当てられた実行順位に従って前記複数のコマンドの実行順位を変更することを特徴とする記憶装置。
（付記１９）  付記１７に記載の記憶装置において、
前記関係値算出部は、実行順位が隣接するコマンドの内、実行順位が先のコマンドの終了から実行順位が後のコマンドが実行されるまでの移行時間を前記関係値として算出することを特徴とする記憶装置。
（付記２０）  付記１７に記載の記憶装置において、
前記関係値算出部は、実行順位が隣接するコマンドの内、実行順位が先のコマンドによりアクセスされる論理アドレスと、実行順位が後のコマンドによりアクセスされる論理アドレスとの差を前記関係値として算出することを特徴とする記憶装置。
（付記２１）  付記１７に記載の記憶装置において、
前記分類部は、前記関係値に基づいて分類対象のグループを複数のサブグループに分類し、
前記抽出部は、サブグループ毎に待機時間が最も長いコマンドを抽出し、
前記変更部は、前記抽出部により抽出された待機時間に基づいて前記複数のサブグループに優先順位を割り当て、優先順位の高いサブグループに属するコマンドから実行されるように前記複数のコマンドの実行順序を変更することを特徴とする記憶装置。
（付記２２）  付記１７に記載の記憶装置において、
前記メモリに保持される複数のコマンドには、ネイティブ・コマンド・キューイングに従って前記実行順位が予め割り当てられていることを特徴とする記憶装置。
【図面の簡単な説明】
【００６６】
【図１】本発明の第１の実施の形態に係るハードディスク装置の構成を示すブロック図。
【図２】コマンドメモリに記憶されているコマンド、および、コマンドに関連するデータの一例を示す図。
【図３】本発明の第１の実施の形態に係る実行順位変更処理とコマンド実行処理とを実現するための機能ブロック図。
【図４】本発明の第１の実施の形態に係る実行順位変更処理の動作を示すフローチャート。
【図５】本発明の第１の実施の形態に係るコマンドの分類を説明するための図。
【図６】本発明の第１の実施の形態に係る実行順位変更後を説明するための図。
【図７】本発明の第１の実施の形態に係るコマンドの分類を説明するための図。
【図８】本発明の第１の実施の形態に係る実行順位変更後を説明するための図。
【図９】本発明の第２の実施の形態に係る実行順位変更処理とコマンド実行処理とを実現するための機能ブロック図。
【図１０】本発明の第２の実施の形態に係る実行順位変更処理の動作を示すフローチャート。
【図１１】本発明の第２の実施の形態に係るコマンドの分類を説明するための図。
【図１２】本発明の第２の実施の形態に係る実行順位変更後を説明するための図。
【図１３】本発明の第２の実施の形態に係るコマンドの分類を説明するための図。
【図１４】本発明の第２の実施の形態に係る実行順位変更後を説明するための図。
【図１５】本発明の第１および第２の実施の形態の変形例に係る処理を説明するためのフローチャート。
【符号の説明】
【００６７】
１  ハードディスク装置、２  上位装置、３  ホストＩＦ、１１  ホストＩＦ制御部、１２  バッファ制御部、１３  バッファメモリ、１４  フォーマット制御部、１５  リードチャネル、１６  ヘッドＩＣ、１７  ＭＰＵ、１７ａ  コマンドメモリ、１８  メモリ、１９  不揮発性メモリ、２０  サーボ制御部、２１  ＶＣＭ、２２  ＳＰＭ、２３  リードライトヘッド、２４  ディスク媒体、２５  バス。
【図１】
2010140380.tif 000003
【図２】
2010140380.tif 000004
【図３】
2010140380.tif 000005
【図４】
2010140380.tif 000006
【図５】
2010140380.tif 000007
【図６】
2010140380.tif 000008
【図７】
2010140380.tif 000009
【図８】
2010140380.tif 000010
【図９】
2010140380.tif 000011
【図１０】
2010140380.tif 000012
【図１１】
2010140380.tif 000013
【図１２】
2010140380.tif 000014
【図１３】
2010140380.tif 000015
【図１４】
2010140380.tif 000016
【図１５】
2010140380.tif 000017