IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧 ▶ 東芝デバイス&ストレージ株式会社の特許一覧

特許7234098磁気ディスク装置及びリオーダリング処理の方法
<>
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図1
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図2
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図3
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図4
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図5
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図6
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図7
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図8
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図9
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図10
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図11
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図12
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図13
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図14
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図15
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図16
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図17
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図18
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図19
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図20
  • 特許-磁気ディスク装置及びリオーダリング処理の方法 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-27
(45)【発行日】2023-03-07
(54)【発明の名称】磁気ディスク装置及びリオーダリング処理の方法
(51)【国際特許分類】
   G11B 20/10 20060101AFI20230228BHJP
   G11B 21/08 20060101ALI20230228BHJP
   G11B 21/10 20060101ALI20230228BHJP
   G11B 21/02 20060101ALI20230228BHJP
【FI】
G11B20/10 D
G11B21/08 B
G11B21/08 G
G11B21/08 N
G11B21/10 E
G11B21/02 601L
【請求項の数】 7
(21)【出願番号】P 2019204808
(22)【出願日】2019-11-12
(65)【公開番号】P2021077434
(43)【公開日】2021-05-20
【審査請求日】2021-12-17
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】須藤 大輔
【審査官】中野 和彦
(56)【参考文献】
【文献】特開2001-043640(JP,A)
【文献】特開2001-351310(JP,A)
【文献】特開2018-026187(JP,A)
【文献】特開2003-308176(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11B 20/10
G11B 21/08
G11B 21/10
G11B 21/02
(57)【特許請求の範囲】
【請求項1】
第1ディスクと、
第2ディスクと、
前記第1ディスクに対してデータをライトし、前記第1ディスクからデータをリードする第1ヘッドと、
前記第2ディスクに対してデータをライトし、前記第2ディスクからデータをリードする第2ヘッドと、
前記第1ヘッドを有する第1アクチュエータと、
前記第2ヘッドを有する第2アクチュエータと、
前記第1アクチュエータに対応する第1キューに格納したコマンドの第1リオーダリング処理を実行する第1演算部と、
前記第2アクチュエータに対応する第2キューに格納したコマンドの第2リオーダリング処理を実行する第2演算部と、を備え、
前記第1演算部は、前記第2リオーダリング処理を実行し、
前記第2演算部は、前記第1リオーダリング処理を実行する、磁気ディスク装置であって、
前記第1演算部は、前記第1リオーダリング処理を実行するための第1演算リソースに空きがある場合、前記第2リオーダリング処理を実行し、
前記第2演算部は、前記第2リオーダリング処理を実行するための第2演算リソースに空きがある場合、前記第1リオーダリング処理を実行する磁気ディスク装置。
【請求項2】
前記第1演算部は、前記第1キューに格納したコマンド数が第1下限値以下であり、且つ前記第2キューに格納されたコマンド数が第1上限値以上である場合、前記第2リオーダリング処理を実行し、
前記第2演算部は、前記第2キューに格納したコマンド数が第2下限値以下であり、且つ前記第1キューに格納されたコマンド数が第2上限値以上である場合、前記第1リオーダリング処理を実行する、請求項1に記載の磁気ディスク装置。
【請求項3】
前記第1演算部は、前記第2キューに格納したコマンド数が前記第2下限値以下であり、且つ前記第1キューに格納されたコマンド数が前記第2上限値以上である場合、前記第1リオーダリング処理のための第1情報を前記第2演算部に転送し、
前記第2演算部は、前記第1キューに格納したコマンド数が第1下限値以下であり、且つ前記第2キューに格納されたコマンド数が第1上限値以上である場合、前記第2リオーダリング処理のための第2情報を前記第1演算部に転送する、請求項に記載の磁気ディスク装置。
【請求項4】
前記第1情報は、前記第1ヘッドが配置されている前記第1ディスクのデータセクタの位置の情報、前記第1キューに格納された複数のコマンドでそれぞれ指定される前記第1ディスクの複数のデータセクタの位置の情報を含み、
前記第2情報は、前記第2ヘッドが配置されている前記第2ディスクのデータセクタの位置の情報、前記第2キューに格納された複数のコマンドでそれぞれ指定される前記第2ディスクの複数のデータセクタの位置の情報を含む、請求項に記載の磁気ディスク装置。
【請求項5】
前記第1下限値は、前記第1上限値よりも小さく、前記第2下限値は、前記第2上限値よりも小さい、請求項乃至のいずれか1項に記載の磁気ディスク装置。
【請求項6】
前記第1下限値及び前記第2下限値は、ゼロである、請求項乃至のいずれか1項に記載の磁気ディスク装置。
【請求項7】
前記第1演算部は、前記第2キューに格納された複数のコマンドに基づいて、前記第2キューに格納された複数のコマンドにそれぞれ対応する複数のデータセクタの位置から前記第2キューに格納された複数のコマンドの内の複数の異なるコマンドにそれぞれ対応する複数の異なるデータセクタの位置に前記第2ヘッドをそれぞれ配置するまでの時間に相当する複数の第1アクセスコストを計算し、前記複数の第1アクセスコストを前記第2演算部に転送し、
前記第2演算部は、前記第2キューに複数のコマンドを格納し、前記第2ヘッドの現在のデータセクタの位置から前記第2キューに格納された複数のデータセクタの位置に前記第2ヘッドをそれぞれ配置するまでの時間に相当する複数の第2アクセスコストをそれぞれ計算し、前記複数の第1アクセスコスト及び前記複数の第2アクセスコストに基づいて次に処理するコマンドを選択する、請求項乃至のいずれか1項に記載の磁気ディスク装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、磁気ディスク装置及びリオーダリング処理の方法に関する。
【背景技術】
【0002】
磁気ディスク装置は、ホスト等から転送された複数のコマンドをキューに格納し、キューに格納した複数のコマンドを処理する順番を入れ替えるリオーダリング処理を実行する。近年、複数のアクチュエータを有するスプリットアクチュエータ磁気ディスク装置が提案されている。スプリットアクチュエータ磁気ディスク装置は、複数のアクチュエータをそれぞれ独立して制御する。スプリットアクチュエータ磁気ディスク装置は、各アクチュエータに対応する各キューに各アクチュエータに対応する複数のコマンドを格納し、各アクチュエータに対応する各キューに格納した複数のコマンドをリオーダリング処理する。
【先行技術文献】
【特許文献】
【0003】
【文献】米国特許第10042785号明細書
【文献】米国特許第6789132号明細書
【文献】米国特許第6690549号明細書
【文献】米国特許第9830939号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の実施形態が解決しようとする課題は、アクセス性能を向上可能な磁気ディスク装置及びリオーダリング処理の方法を提供することである。
【課題を解決するための手段】
【0005】
本実施形態に係る磁気ディスク装置は、第1ディスクと、第2ディスクと、前記第1ディスクに対してデータをライトし、前記第1ディスクからデータをリードする第1ヘッドと、前記第2ディスクに対してデータをライトし、前記第2ディスクからデータをリードする第2ヘッドと、前記第1ヘッドを有する第1アクチュエータと、前記第2ヘッドを有する第2アクチュエータと、前記第1アクチュエータに対応する第1キューに格納したコマンドの第1リオーダリング処理を実行する第1演算部と、前記第2アクチュエータに対応する第2キューに格納したコマンドの第2リオーダリング処理を実行する第2演算部と、を備え、前記第1演算部は、前記第2リオーダリング処理を実行し、前記第2演算部は、前記第1リオーダリング処理を実行し、前記第1演算部は、前記第1リオーダリング処理を実行するための第1演算リソースに空きがある場合、前記第2リオーダリング処理を実行し、前記第2演算部は、前記第2リオーダリング処理を実行するための第2演算リソースに空きがある場合、前記第1リオーダリング処理を実行する。
【図面の簡単な説明】
【0006】
図1図1は、第1実施形態に係る磁気ディスク装置の構成の一例を示す模式図である。
図2図2は、ディスクに対するヘッドの配置の一例を示す平面図である。
図3図3は、キューの一例を示す模式図である。
図4図4は、合成キューの一例を示す模式図である。
図5図5は、合成キューの一例を示す模式図である。
図6図6は、判定テーブルの一例を示す模式図である。
図7図7は、第1実施形態に係るバイパス演算処理の状態の判定方法の一例を示す模式図である。
図8図8は、第1実施形態に係るバイパス演算処理の状態の判定方法の一例を示す模式図である。
図9図9は、第1実施形態に係るバイパス演算処理の状態の判定方法の一例を示す模式図である。
図10図10は、キューに格納したキューコマンドの処理方法の一例を示す模式図である。
図11図11は、図10に示したキューコマンドに対するリオーダリング演算処理の一例を示す模式図である。
図12図12は、所定のアクチュエータに対応するリオーダリングテーブルの一例を示す模式図である。
図13図13は、リオーダリング演算処理の一例を示す模式図である。
図14図14は、リオーダリング演算処理の一例を示す模式図である。
図15図15は、図10に示したキューコマンドに対するバイパス演算処理の一例を示す模式図である。
図16図16は、図10に示したキューコマンドに対するバイパス演算処理の一例を示す模式図である。
図17図17は、バイパス演算処理の一例を示す模式図である。
図18図18は、バイパス演算処理の一例を示す模式図である。
図19図19は、第1実施形態に係るリオーダリング演算処理の方法の一例を示すフローチャートである。
図20図20は、変形例1に係る磁気ディスク装置の構成の一例を示す模式図である。
図21図21は、変形例2に係る磁気ディスク装置の構成の一例を示す模式図である。
【発明を実施するための形態】
【0007】
以下、実施の形態について図面を参照して説明する。なお、図面は、一例であって、発明の範囲を限定するものではない。
(第1実施形態)
図1は、第1実施形態に係る磁気ディスク装置1の構成の一例を示す模式図である。
磁気ディスク装置1は、筐体HSと、ヘッドディスクアセンブリ(HDA)10と、ドライバIC20と、ヘッドアンプ集積回路(以下、ヘッドアンプIC、又はプリアンプ)30と、揮発性メモリ70と、バッファメモリ(バッファ)80と、不揮発性メモリ90と、1チップの集積回路であるシステムコントローラ130とを備える。また、磁気ディスク装置1は、ホストシステム(以下、単に、ホストと称する)100と接続される。磁気ディスク装置1は、複数の後述するアクチュエータACをそれぞれ独立して駆動できるスプリットアクチュエータ磁気ディスク装置である。磁気ディスク装置1は、複数、例えば、2つのアクチュエータAC(後述するアクチュエータAC1及びAC2)を有している。なお、磁気ディスク装置1は、3つ以上のアクチュエータACを有していてもよい。
【0008】
筐体HSは、底壁HSBを有している。図1には筐体HSが底壁HSBのみを有しているように示しているが、実際には、筐体HSは、例えば、底壁HSBと、底壁HSBの周縁に沿って立設された側壁と、底壁HSB及び側壁で構成されたベースの開口を閉塞するカバーとを有している。
【0009】
HDA10は、磁気ディスク(以下、ディスクと称する)DKと、ヘッドHDと、スピンドル12を回転させるスピンドルモータ(以下、SPMと称する)13と、アームAMと、アクチュエータブロックBKと、ボイスコイルモータ(以下、VCMと称する)14と、ヘッドHDを搭載しているマイクロアクチュエータ(以下、MAと称する)15とを有する。なお、HDA10は、MA15を有していなくともよい。HDA10にMA15に備えられていない場合、ヘッドHDは、アームAMに搭載されていてもよい。図1には、HDA10の断面を示している。
【0010】
SPM13は、底壁HSBに取り付けられている。SPM13の中心部分には、スピンドル12が取り付けられている。ディスクDKは、複数のディスクDKを有している。ディスクDKは、スピンドル12に取り付けられ、SPM13の駆動により回転する。図1に示した例では、ディスクDKは、ディスクDK1及びDK2を有している。ディスクDK1及びDK2は、スピンドル12に取り付けられている。ディスクDK2は、例えば、ディスクDK1と底壁HSBとの間に配置されている。なお、ディスクDK1は、複数のディスクDK1を有していてもよい。また、ディスクDK2は、複数のディスクDK2を有していてもよい。以下、ディスクDKの円周に沿った方向を円周方向と称し、円周方向に直交する方向を半径方向と称する。半径方向は、ディスクDKにおいて内周側及び外周側へ向かう方向に相当する。
【0011】
ヘッドHDは、複数のヘッドHDを有している。ヘッドHDは、ディスクDKに対向している。ヘッドHDは、ディスクDKにデータをライトするライトヘッドWHと、ディスクDKにライトされたデータをリードするリードヘッドRHとを有している。以下、“ディスクDKにデータをライトする処理”を“ライト処理”と称し、“ディスクDKからデータをリードする処理”を“リード処理”と称する場合もある。また、“ディスクDKの所定の領域にデータをライトする”ことや、“ディスクDKの所定の領域からデータをリードする”こと等を“アクセスする”と称する場合もある。図1に示した例では、ヘッドHDは、ヘッドHD1及びHD2を有している。ヘッドHD1は、例えば、ディスクDK1の主面に対向するヘッドHD1と、ディスクDK1の主面と反対側の対向面に対向するヘッドHD1とを有している。なお、ヘッドHD1は、1つのヘッドHD1のみを有していてもよいし、3つ以上のヘッドHD1を有していてもよい。ヘッドHD1は、ディスクDK1にデータをライトするライトヘッドWH1と、ディスクDK1にライトされたデータをリードするリードヘッドRH1とを有している。ヘッドHD2は、例えば、ディスクDK2の主面に対向するヘッドHD2と、ディスクDK2の主面と反対側の対向面に対向するヘッドHD2とを有している。なお、ヘッドHD2は、1つのヘッドHD2のみを有していてもよいし、3つ以上のヘッドHD2を有していてもよい。ヘッドHD2は、ディスクDK2にデータをライトするライトヘッドWH2と、ディスクDK2にライトされたデータをリードするリードヘッドRH2とを有している。
【0012】
アクチュエータブロックBKは、複数のアクチュエータブロックBKを含む。アクチュエータブロックBKは、底壁HSBに立設された軸受BRに回転可能に取り付けられている。図1に示した例では、アクチュエータブロックBKは、アクチュエータブロックBK1及びBK2を含む。アクチュエータブロックBK1及びBK2は、底壁HSBに立設された軸受BR1に回転可能に取り付けられている。アクチュエータブロックBK2は、底壁HSBとアクチュエータブロックBK1との間に位置している。
【0013】
アームAMは、複数のアームAMを含む。アームAMは、アクチュエータブロックBKに接続されている。図1に示した例では、アームAMは、アームAM1及びAM2を有している。アームAM1は、例えば、ディスクDK1の主面側に位置しているアームAM1と、ディスクDK1の対向面側に位置しているアームAM1とを有している。なお、アームAM1は、ヘッドHD1の数に応じて、1つのアームAM1のみを有していてもよいし、3つ以上のアームAM1を有していてもよい。アームAM1は、アクチュエータブロックBK1に接続されている。アームAM2は、例えば、ディスクDK2の主面側に位置しているアームAM2と、ディスクDK2の対向面側に位置しているアームAM2とを含んでいる。なお、アームAM2は、ヘッドHD2の数に応じて、1つのアームAM2のみを含んでいてもよいし、3つ以上のアームAM2を含んでいてもよい。アームAM2は、アクチュエータブロックBK2に接続されている。アームAM2は、アームAM1と筐体HSの底壁HSBとの間に配置されている。
【0014】
VCM14は、複数のVCM14を含む。VCM14は、アクチュエータブロックBKにおいてアームAMと反対側に接続されている。図1に示した例では、VCM14は、VCM141及び142を含む。VCM141は、アクチュエータブロックBK1においてアームAM1と反対側に接続されている。VCM142は、アクチュエータブロックBK2においてアームAM2と反対側に接続されている。
【0015】
MA15は、複数のMA15を含む。MA15は、アクチュエータブロックBKに接続されたアームAMの一端部と反対側のアームAMの先端部に取り付けられている。MA15は、アームAMに接続された一端部と反対側の先端部にヘッドHDが搭載されている。MA15は、半径方向におけるヘッドHDの動作を微細に制御する。例えば、MA15は、半径方向におけるヘッドHDの動作をVCM14による半径方向のヘッドHDの動作よりも微細に制御する。図1に示した例では、MA15は、MA151及びMA152を含む。MA151は、例えば、ディスクDK1の主面側に位置しているアームAM1に取り付けられ、且つディスクDK1の主面に対向するヘッドHD1を搭載するMA151と、ディスクDK1の対向面側に位置しているアームAM1に取り付けられ、且つディスクDK1の対向面に対向するヘッドHD1を搭載するMA151とを有している。なお、MA151は、ヘッドHD1の数に応じて、1つのMA151のみを有していてもよいし、3つ以上のMA151を有していてもよい。MA151は、アクチュエータブロックBK1に接続されたアームAM1の一端部と反対側のアームAM1の先端部に取り付けられている。MA151は、アームAM1に接続された一端部と反対側のアームAM1の先端部にヘッドHD1が搭載されている。MA151は、半径方向におけるヘッドHD1の動作を微細に制御する。例えば、MA151は、半径方向におけるヘッドHD1の動作をVCM141による半径方向のヘッドHD1の動作よりも微細に制御する。MA152は、例えば、ディスクDK2の主面側に位置しているアームAM2に取り付けられ、且つディスクDK2の主面に対向するヘッドHD2を搭載するMA152と、ディスクDK2の対向面側に位置しているアームAM2に取り付けられ、且つディスクDK2の主面に対向するヘッドHD2を搭載するMA152とを有している。なお、MA152は、ヘッドHD2の数に応じて、1つのMA152のみを有していてもよいし、3つ以上のMA152を有していてもよい。MA152は、アクチュエータブロックBK2に接続されたアームAM2の一端部と反対側のアームAM2の先端部に取り付けられている。MA152は、アームAM2に接続された一端部と反対側のアームAM2の先端部にヘッドHD2が搭載されている。MA152は、半径方向におけるヘッドHD2の動作を微細に制御する。例えば、MA152は、半径方向におけるヘッドHD2の動作をVCM142による半径方向のヘッドHD2の動作よりも微細に制御する。
【0016】
アクチュエータACは、複数のアクチュエータACを有している。複数のアクチュエータACは、それぞれ、軸受BRに回動自在(又は、回転自在)に取り付けられている。言い換えると、複数のアクチュエータACは、それぞれ、軸受BR周りで独立して回動する。複数のアクチュエータACは、それぞれ、MA15、アームAM、アクチュエータブロックBK、及びVCM14により構成されている。複数のアクチュエータACは、それぞれ、軸受BR周りでVCM14を駆動し、且つMA15を微細に駆動することにより、MA15に搭載されたヘッドHDをディスクDKの所定の位置に位置決めする。なお、MA15が備えられていない場合、複数のアクチュエータACは、それぞれ、軸受BR周りでVCM14を駆動することにより、アームAMに搭載されたヘッドHDをディスクDKの所定の位置に位置決めする。図1に示した例では、アクチュエータACは、アクチュエータAC1及びAC2を有している。なお、アクチュエータACは、3つ以上設けられていてもよい。アクチュエータAC1は、軸受BR1に回転自在に取り付けられている。アクチュエータAC1は、MA151、アームAM1、アクチュエータブロックBK1、及びVCM141により構成されている。アクチュエータAC1は、軸受BR1の回転軸周りでVCM141を駆動し、且つMA151を微細に駆動することにより、MA151に搭載されたヘッドHD1をディスクDK1の所定の位置に位置決めする。なお、MA151を備えていない場合、アクチュエータAC1は、軸受BR1周りでVCM141を駆動することにより、アームAM1に搭載されたヘッドHD1をディスクDK1の所定の位置に位置決めする。アクチュエータAC2は、軸受BR1に回転自在に取り付けられている。アクチュエータAC2は、底壁HSBとアクチュエータAC1との間に配置されている。アクチュエータAC2は、MA152、アームAM2、アクチュエータブロックBK2、及びVCM142により構成されている。アクチュエータAC2は、軸受BR1の回転軸周りでVCM142を駆動し、且つMA152を微細に駆動することにより、MA152に搭載されたヘッドHD2をディスクDK2の所定の位置に位置決めする。なお、MA152を備えていない場合、アクチュエータAC2は、軸受BR1周りでVCM142を駆動することにより、アームAM2に搭載されたヘッドHD2をディスクDK2の所定の位置に位置決めする。
【0017】
図2は、ディスクDKに対するヘッドHDの配置の一例を示す平面図である。図2に示すように、半径方向においてディスクDKの外周に向かう方向を外方向(外側)と称し、外方向と反対方向を内方向(内側)と称する。また、図2に示すように、円周方向において、ディスクDKに対して右回り(時計回り)方向を右方向と称し、右回り方向と反対(反時計回り)方向を左方向と称する。円周方向において、ディスクDKの回転する方向を回転方向と称する。なお、図2に示した例では、回転方向は、左方向(反時計回り方向)で示しているが、逆向き(右方向又は時計回り方向)であってもよい。
【0018】
ディスクDKは、そのデータをライト可能な領域に、ユーザから利用可能なユーザデータ領域DKaと、システム管理に必要な情報(以下、システム情報と称する場合もある)をライトするシステムエリアDKbとが割り当てられている。以下、ディスクDKの半径方向の所定の位置を半径位置と称し、ディスクDKの円周方向の所定の位置を円周位置と称する場合もある。半径位置及び円周位置をまとめて単に位置と称する場合もある。例えば、半径位置は、トラック又はセクタ(データセクタ)の半径方向の位置に相当し、円周位置は、所定のトラックにおけるセクタの円周方向の位置に相当する。例えば、位置は、ディスクDKにおけるセクタ(データセクタ)の位置に相当する。セクタ(データセクタ)の位置は、所定のセクタを含むシリンダ(トラック)番号、所定のセクタにアクセスするヘッドHDのヘッド番号、所定のセクタのセクタ番号、ディスクDKにおける所定のセクタの半径位置、及び所定のセクタのディスク角度の内の少なくとも1つで示され得る。例えば、セクタの位置は、所定のセクタを含むシリンダ(トラック)番号、所定のセクタにアクセスするヘッドHDのヘッド番号、所定のセクタのセクタ番号、ディスクDKにおける所定のセクタの半径位置、及び所定のセクタのディスク角度の内の2つの組み合わせで示される。ディスクDKには、少なくとも1つのトラックが配置され得る。以下で、“トラック”は、“ディスクDKを半径方向に区分した複数の領域の内の1つの領域”、“ディスクDKの円周方向に沿ってライトされた1周分のデータ”、“ディスクDKの円周方向に沿って1周する経路”や、その他の種々の意味で用いる。トラックは、複数のセクタを含む。“セクタ”は、“トラックを円周方向に区分した複数の領域の内の1つの領域”、“トラックを円周方向に区分した複数の領域の内の1つの領域にライトされたデータ”や、その他の種々の意味で用いる。図2に示した例では、ディスクDK1は、ユーザデータ領域DKa1と、システムエリアDKb1とが割り当てられている。
【0019】
ディスクDKは、図示しない複数のサーボ領域(以下、サーボパターンと称する場合もある)を有している。複数のサーボパターンは、例えば、ディスクDKの半径方向に放射状に延出して円周方向に所定の間隔を空けて離散的に配置されている。サーボパターンには、プリアンブル(Preamble)、サーボマーク(Servo Mark)、グレイコード(Gray Code)、PAD、バーストデータ、及びポストコード(Post Code)等を含むサーボデータがライトされている。サーボパターン以外のユーザデータ領域DKaにはユーザデータがライトされる。
【0020】
ヘッドHDは、例えば、シーク時において、軸受BR周りでアクチュエータACが回転することによりディスクDKの水平面内でスライドする。図2に示した例では、ヘッドHD1は、例えば、シーク時において、軸受BR1周りでアクチュエータAC1が回転することによりディスクDK1の水平面でスライドする。
【0021】
ドライバIC20は、システムコントローラ130(詳細には、後述するMPU50又はHDC60)の制御に従って、SPM13及びVCM14(VCM141及び142)の駆動を制御する。ドライバIC20は、SPM13及びVCM14(VCM141及び142)に電気的に接続されている。ドライバIC20は、SPM制御部210と、第1VCM制御部221と、第2VCM制御部222と、第1マイクロアクチュエータ(MA)制御部231と、第2マイクロアクチュエータ(MA)制御部232とを備えている。SPM制御部210は、SPM13の回転を制御する。第1VCM制御部221は、VCM141に供給する電流(又は電圧)を制御することでVCM141の駆動を制御する。第2VCM制御部222は、VCM142に供給する電流(又は電圧)を制御することでVCM142の駆動を制御する。第1MA制御部231は、MA151に供給する電流(又は電圧)を制御することでMA151の駆動を制御する。第2MA制御部232は、MA152に供給する電流(又は電圧)を制御することでMA152の駆動を制御する。なお、ドライバIC20の構成の一部(例えば、SPM制御部210、第1VCM制御部221、第2VCM制御部222、第1MA制御部231、及び第2MA制御部232)は、システムコントローラ130に備えられていてもよい。アクチュエータAC1にMA151が備えられておらず、且つアクチュエータAC2にMA152が備えられていない場合、第1MA制御部231及び第2MA制御部232はなくともよい。また、ドライバIC20は、アクチュエータACの数に応じて2つ以上設けられていてもよい。
【0022】
ヘッドアンプIC(プリアンプ)30は、ディスクDKからリードされたリード信号を増幅して、システムコントローラ130(詳細には、後述するリード/ライト(R/W)チャネル40)に出力する。ヘッドアンプIC30は、各ヘッドHD、例えば、ヘッドHD1及びヘッドHD2に電気的に接続されている。また、ヘッドアンプIC30は、R/Wチャネル40から出力される信号に応じたライト電流をヘッドHDに出力する。ヘッドアンプIC30は、第1リードヘッド選択部321と、第2リードヘッド選択部322と、第1リード信号検出部331と、第2リード信号検出部332とを備えている。第1リードヘッド選択部321は、アクチュエータAC1においてディスクDK1からデータをリードするリードヘッドRH1を選択する。第2リードヘッド選択部322は、アクチュエータAC2においてディスクDK2からデータをリードするリードヘッドRH2を選択する。第1リード信号検出部331は、ディスクDK1からリードヘッドRH1によりリードされた信号(リード信号)を検出する。第2リード信号検出部332は、ディスクDK2からリードヘッドRH2によりリードされた信号(リード信号)を検出する。なお、ヘッドアンプIC30の構成の一部(例えば、第1リードヘッド選択部321、第2リードヘッド選択部322、第1リード信号検出部331、及び第2リード信号検出部332)は、システムコントローラ130に備えられていてもよい。また、ヘッドアンプIC30は、アクチュエータACの数に応じて2つ以上設けられていてもよい。
【0023】
揮発性メモリ70は、電力供給が断たれると保存しているデータが失われる半導体メモリである。揮発性メモリ70は、磁気ディスク装置1の各部での処理に必要なデータ等を格納する。揮発性メモリ70は、例えば、DRAM(Dynamic Random Access Memory)、又はSDRAM(Synchronous Dynamic Random Access Memory)である。
バッファメモリ80は、磁気ディスク装置1とホスト100との間で送受信されるデータ等を一時的に記録する半導体メモリである。なお、バッファメモリ80は、揮発性メモリ70と一体に構成されていてもよい。バッファメモリ80は、例えば、DRAM、SRAM(Static Random Access Memory)、SDRAM、FeRAM(Ferroelectric Random Access memory)、又はMRAM(Magnetoresistive Random Access Memory)等である。
不揮発性メモリ90は、電力供給が断たれても保存しているデータを記録する半導体メモリである。不揮発性メモリ90は、例えば、NOR型またはNAND型のフラッシュROM(Flash Read Only Memory :FROM)である。
【0024】
システムコントローラ(コントローラ)130は、例えば、複数の素子が単一チップに集積されたSystem-on-a-Chip(SoC)と称される大規模集積回路(LSI)を用いて実現される。システムコントローラ130は、リード/ライト(R/W)チャネル40と、マイクロプロセッサ(MPU)50と、ハードディスクコントローラ(HDC)60とを含む。システムコントローラ130は、ドライバIC20、ヘッドアンプIC30、揮発性メモリ70、バッファメモリ80、不揮発性メモリ90、及びホストシステム100に電気的に接続されている。なお、システムコントローラ130は、SPM制御部210、第1VCM制御部221、第2VCM制御部222、第1リードヘッド選択部321、第2リードヘッド選択部322、第1リード信号検出部331、及び第2リード信号検出部332を有していてもよい。システムコントローラ130は、ドライバIC20及びヘッドアンプIC30を含んでいてもよい。また、システムコントローラ130は、アクチュエータACの数に応じて、2つ以上設けられていてもよい。
【0025】
R/Wチャネル40は、後述するMPU50からの指示に応じて、ディスクDKからホスト100に転送されるリードデータ及びホスト100から転送されるライトデータの信号処理を実行する。R/Wチャネル40は、リードデータの信号品質を測定する回路、又は機能を有している。R/Wチャネル40は、例えば、ヘッドアンプIC30、MPU50、及びHDC60等に電気的に接続されている。なお、R/Wチャネル40は、アクチュエータACの数に応じて、2つ以上設けられていてもよい。
【0026】
MPU50は、ホスト100等からの指示に応じて、磁気ディスク装置1の各部を制御するメインコントローラである。MPU50は、ドライバIC20を介してアクチュエータACを制御し、ヘッドHDの位置決めを行なうサーボ制御を実行する。MPU50は、ディスクDKへのデータのライト動作を制御すると共に、ライトデータの保存先を選択する。また、MPU50は、ディスクDKからのデータのリード動作を制御すると共に、リードデータの処理を制御する。MPU50は、磁気ディスク装置1の各部に接続されている。MPU50は、例えば、ドライバIC20、R/Wチャネル40、及びHDC60等に電気的に接続されている。なお、MPU50は、アクチュエータACの数に応じて、2つ以上設けられていてもよい。
【0027】
HDC60は、MPU50からの指示に応じて、リード/ライト処理を制御し、ホスト100とR/Wチャネル40との間のデータ転送を制御する。HDC60は、例えば、R/Wチャネル40、MPU50、揮発性メモリ70、バッファメモリ80、及び不揮発性メモリ90等に電気的に接続されている。なお、HDC60は、アクチュエータACの数に応じて、2つ以上設けられていてもよい。
【0028】
HDC60は、サーボ制御部610、及びコマンド制御部620を備えている。HDC60は、これら各部、例えば、サーボ制御部610、及びコマンド制御部620等の処理をファームウェア上で実行する。なお、HDC60は、これら各部を回路として備えていてもよい。また、HDC60の構成の一部は、MPU50に備えられていてもよい。例えば、サーボ制御部610、及びコマンド制御部620は、MPU50に設けられていてもよい。
【0029】
サーボ制御部610は、ヘッドHDの位置を制御する。言い換えると、サーボ制御部610は、ディスクDKの所定の領域へのヘッドHDによるアクセスを制御する。サーボ制御部610は、トラッキング制御部6101と、シーク制御部6102とを有している。なお、サーボ制御部610は、アクチュエータACの数に応じて、2つ以上設けられていてもよい。
【0030】
トラッキング制御部6101は、ディスクDKの所定のトラックへのヘッドHDのトラッキングを制御する。“ディスクDKの所定のトラックにヘッドHDをトラッキングする”ことを単に“トラッキング”と称する場合もある。“トラッキング”は、“ディスクDKにデータをライトする際に所定の経路、例えば、所定のトラックを追従すること”や、 “ディスクDKからデータをリードする際に所定の経路、例えば、所定のトラックを追従すること”を含む。
シーク制御部6102は、ディスクDKにおいて所定のトラックから目標とするトラックへのヘッドHDのシークを制御する。
【0031】
コマンド制御部620は、ホスト100等から受けたコマンドを制御する。例えば、コマンド制御部620は、ホスト100等から受けたコマンドをホスト100等から受けた順番で待ち行列(キュー:queue)に格納し、キューに格納した少なくとも1つのコマンドの内の所定のコマンドに基づいてサーボ制御部610を介してこのコマンドで指定される位置又は領域、例えば、セクタにアクセスする。以下、“所定のコマンドに基づいてこのコマンドで指定される位置又は領域にアクセスする、又は”ことを“コマンドを処理する”と称する場合もある。 “キューに格納したコマンド”を“キューコマンド”と称する場合もある。また、“キューコマンドを処理する”ことを“キューイング(queuing)”と称する場合もある。
【0032】
コマンド制御部620は、所定のキューコマンド(以下、現在のコマンドと称する場合もある)を処理している際に、ヘッドHDが現在配置されているディスクDKの位置、例えば、ヘッドHDが現在配置されているディスクDKのデータセクタの位置(以下、単に、現在の位置と称する場合もある)とホスト100等から受けた順番でキューに格納した複数のキューコマンドとに基づいて演算処理を実行し、この演算処理の結果に基づいてこれら複数のキューコマンドから所定のコマンドを選択し、選択したコマンドの順番を現在のコマンドの次に処理するコマンドの順番(以下、次の順番と称する場合もある)に入れ替えて、現在のコマンドを処理した後に選択したコマンドを処理する。以下、“複数のコマンドの処理する順番を入れ替える”ことや、“論理-物理マップを変更する”こと等を“リオーダリング”と称する場合もある。“所定の演算(計算)処理を実行し、この所定の演算(計算)処理結果に基づいて複数のコマンドから所定のコマンドを選択し、これら複数のコマンドから選択したコマンドの順番をリオーダリングする処理”を“リオーダリング演算処理”、“リオーダリング演算”、又は“リオーダリング処理”と称する場合もある。また、“現在のコマンドの次に処理するコマンド”を“次回処理コマンド”と称する場合もある。
【0033】
例えば、コマンド制御部620は、現在のコマンドを処理している際に、現在の位置とホスト100等から受けた順番でキューに格納した複数のキューコマンドとヘッドHDのシーク距離とシーク時間との関係を示すテーブル(以下、リオーダリングテーブル又はシークプロファイルテーブルと称する場合もある)とに基づいて、現在の位置からこれらキューコマンドでそれぞれ指定されるディスクDKの複数のセクタ(データセクタ)の位置(以下、単に位置と称する場合もある)にそれぞれアクセスする複数の時間をそれぞれ計算する。以下、“ディスクDKの所定の位置、例えば、セクタ(データセクタ)からディスクDKのこの位置と異なる位置、例えば、セクタ(データセクタ)にヘッドHDでアクセスする時間(ヘッドHDを配置するまでの時間)”を“アクセスコスト”と称する場合もある。アクセスコストは、ディスクDKの所定のトラックからディスクDKのこのトラックと異なるトラックにヘッドHDをシークする時間(以下、シーク時間と称する場合もある)と、ディスクDKのこのトラックと異なるトラックの所定の位置にヘッドHDを配置するまでの回転待ち時間とを含む。リオーダリングテーブルは、例えば、ヘッドHD毎又はアクチュエータAC毎に異なっていてもよいし、複数のヘッドHDの内の幾つかのヘッドHD又は複数のアクチュエータACの内の幾つかのアクチュエータで同じであってもよいし、全てのヘッドHD及び全てのアクチュエータACで同じであってもよい。コマンド制御部620は、磁気ディスク装置1の振動や消費電力の影響を低減するために、計算したアクセスコストに重み付け(例えば、所定の値を乗算、又は除算)したり、ヘッドHDの移動を開始するディスクDKの位置やヘッドHDを移動させるディスクDKの位置を半径方向にオフセット(例えば、所定の値を加算、又は減算)してアクセスコストを計算したり、することなどによりアクセスコストを調整してもよい。
【0034】
コマンド制御部620は、これらアクセスコストの計算処理の計算結果に基づいて、現在の位置から他のキューコマンドで指定される位置へのアクセスコストと比較して短い(又は小さい)アクセスコストでアクセス可能な位置を指定するコマンド(以下、低コストコマンドと称する場合もある)をこれらキューコマンドから次回処理コマンドとして選択し、これらキューコマンドにおいて選択した低コストコマンドの順番を次の順番にリオーダリングする。以下、ヘッドHDの現在の位置の情報、複数のキューコマンドの情報、複数のキューコマンドでそれぞれ指定される複数の位置の情報、リオーダリングテーブル、及びヘッドHDの現在の位置から複数のキューコマンドでそれぞれ指定されるディスクDKの複数の位置にそれぞれシークする際の情報等のリオーダリング演算処理のための情報をリオーダリング情報と称する場合もある。なお、リオーダリング情報は、リオーダリングテーブルを含んでいなくともよい。また、リオーダリング情報は、これらの情報以外の情報を含んでいてもよい。位置の情報は、例えば、ヘッド、トラック、セクタ、半径位置、及びディスク角度の少なくとも1つの情報、又はこれらの組み合わせで構成される情報に相当する。以下、説明の便宜上、“所定の位置から他の位置へのアクセスコスト”を“所定のコマンドのアクセスコスト”又は“所定のコマンドに対応するアクセスコスト”と称する場合もある。コマンド制御部620は、前述したように、リオーダリング情報に基づいてこれらアクセスコストの計算処理を実行し、これらアクセスコストの計算処理の計算結果に基づいてこれらキューコマンドから低コストコマンドを選択し、選択した低コストコマンドの順番を次の順番にリオーダリングするリオーダリング演算処理を実行し、現在のコマンドを処理した後にこの低コストコマンドを処理する。コマンド制御部620は、リオーダリング情報を所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。なお、コマンド制御部620は、リオーダリングテーブル以外のリオーダリング情報を所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。この場合、コマンド制御部620は、リオーダリングテーブルをリオーダリング情報とは別に所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。また、コマンド制御部620は、リオーダリングテーブルを計算により算出してもよい。
【0035】
例えば、コマンド制御部620は、現在のコマンドを処理している際に、リオーダリング情報に基づいて、これらキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算し、これらアクセスコストの計算処理の結果に基づいてこれらキューコマンドから現在の位置から最も短い(又は最も小さい)アクセスコストでアクセス可能な位置を指定するコマンド(以下、最低コストコマンドと称する場合もある)を次回処理コマンドとして選択し、これらキューコマンドにおいて選択した最低コストコマンドの順番を次の順番にリオーダリングする。コマンド制御部620は、前述したように、リオーダリング情報に基づいてこれらキューコマンドの計算処理を実行し、アクセスコストの計算処理の結果に基づいてこれらキューコマンドから最低コストコマンドを選択し、選択した最低コストコマンドの順番を次の順番にリオーダリングするリオーダリング演算処理を実行し、現在のコマンドを処理した後にこの最低コストコマンドを処理する。なお、コマンド制御部620は、リオーダリングテーブル以外のリオーダリング情報に基づいて、複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算し、これらアクセスコストの計算処理の結果に基づいてこれらキューコマンドから低コストコマンド(又は最低コストコマンド)を選択し、これらキューコマンドにおいて選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングしてもよい。
【0036】
コマンド制御部620は、キューコマンドの数(以下、キューコマンド数と称する場合もある)をカウントする。コマンド制御部620は、少なくとも1つのキューコマンドの内の各アクチュエータACに対応する各キューコマンド数をカウントする。コマンド制御部620は、複数のアクチュエータACの内の所定のアクチュエータACに対応するキューコマンド数が多く、且つこの所定のアクチュエータACと異なる他のアクチュエータACに対応するキューコマンド数が所定のアクチュエータACに対応するキューコマンド数よりも少ない場合、他のアクチュエータACに対応するリオーダリング演算処理に使用可能な演算リソースの内の余剰の演算リソースを使用して所定のアクチュエータACに対応する複数のキューコマンドにリオーダリング演算処理に関連する演算処理を実行する。演算リソースは、物理的な物体であってもよいし、物理的な領域であってもよいし、論理的な領域であってもよいし、時間的な領域であってもよい。演算リソースは、例えば、回路、ファームウェアのリオーダリングを処理するための容量、リオーダリングの演算処理で使用するメモリの記録容量、及びMPU50及びHDC60等のシステムコントローラ130の計算能力等を含む。以下、“所定のアクチュエータACに対応するリオーダリング演算処理に使用可能な演算リソースの内の余剰の演算リソース”を“所定のアクチュエータACに対応する余剰演算リソース”と称する場合もある。また、“所定のアクチュエータACに対応する余剰演算リソースを使用して実行するこの所定のアクチュエータACと異なる他のアクチュエータACに対応する複数のキューコマンドのリオーダリング演算処理に関連する演算処理“を”バイパス演算処理“、”バイパス演算“、又は”バイパス処理“と称する場合もある。
【0037】
コマンド制御部620は、格納部6201と、コマンド数判定部6202と、バイパス演算判定部6211と、通信部6212と、アクチュエータAC1に対応する複数のキューコマンドのリオーダリング演算処理を実行する第1リオーダリング演算部6221と、アクチュエータAC2に対応する複数のキューコマンドのリオーダリング演算処理を実行する第2リオーダリング演算部6222と、アクチュエータAC1に対応する余剰演算リソースによりバイパス演算処理を実行する第1バイパス演算部6231と、アクチュエータAC2に対応する余剰演算リソースによりバイパス演算処理を実行する第2バイパス演算部6232と、を有している。なお、コマンド制御部620は、アクチュエータACの数に応じて、2つ以上設けられていてもよい。
【0038】
格納部6201は、キューを有している。格納部6201は、複数のアクチュエータACにそれぞれ対応する複数のキューを有していてもよいし、複数のアクチュエータACに対応するキューを組み合わせた1つのキュー(以下、合成キューと称する場合もある)を有していてもよい。例えば、格納部6201は、アクチュエータAC1に対応するキューとアクチュエータAC2に対応するキューとをそれぞれ有していてもよいし、アクチュエータAC1に対応するキューとアクチュエータAC2に対応するキューとを組み合わせた1つの合成キューを有していてもよい。
【0039】
格納部6201は、ホスト100等から受けたコマンドをキューに格納する。例えば、格納部6201は、ホスト100等から受けたアクチュエータAC1に対応する複数のコマンドとホスト100等から受けたアクチュエータAC2に対応する複数のコマンドとをそれぞれホスト等から受けた順で同じ方向から合成キューに格納してもよい。格納部6201は、ホスト100等から受けたアクチュエータAC1に対応する複数のコマンドをホスト100等から受けた順で合成キューに格納し、ホスト100等から受けたアクチュエータAC2に対応する複数のコマンドをホスト100等から受けた順でアクチュエータAC1に対応する複数のコマンドと反対方向から合成キューに格納してもよい。
【0040】
格納部6201は、ホスト100等に指定されたキューに格納できるコマンド数(以下、キューの深さ(queue Depth:QD)と称する場合もある)分のコマンドをキューに格納できる。格納部6201は、所定のアクチュエータACに対応するキューコマンド数がこのアクチュエータACに対応するQD分のコマンド数である場合、ホスト100等からこのアクチュエータACに対応するコマンドを受けない。格納部6201は、所定のアクチュエータACに対応するキューコマンド数がこのアクチュエータACに対応するQDよりも小さいコマンド数である場合、ホスト100等から受けたこのアクチュエータACに対応するコマンドをキューに格納する。例えば、格納部6201は、アクチュエータAC1に対応するQDが3であり、且つアクチュエータAC1に対応するキューコマンド数が3である場合、ホスト100等からアクチュエータAC1に対応するコマンドを受けない。また、格納部6201は、アクチュエータAC1に対応するQDが3であり、且つアクチュエータAC1に対応するキューコマンド数が2である場合、ホスト100等から受けたアクチュエータAC1に対応するコマンドをアクチュエータAC1に対応するキューに格納する。例えば、所定のアクチュエータACに対応するQDとこのアクチュエータACに対応するキューコマンド数の差分値、つまり、このアクチュエータACに対応するキューの空きの数が、このアクチュエータACに対応する演算リソースの空き(余剰演算リソース)に対応する。一例では、所定のアクチュエータACに対応するキューの空きの数が多ければ、このアクチュエータACに対応する余剰演算リソースも増大する。また、所定のアクチュエータACに対応するキューの空きの数が少なければ、このアクチュエータACに対応する余剰演算リソースも減少する。
【0041】
図3は、キューQ1及びQ2の一例を示す模式図である。図3において、格納部6201は、アクチュエータAC1に対応するコマンドを格納するキューQ1と、アクチュエータAC2に対応するコマンドを格納するキューQ2とを含む。図3に示した例では、キューQ1及びQ2のQDは、3である。なお、キューQ1及びQ2のQDは、2以下であってもよいし、4以上であってもよい。図3において、LUN1は、アクチュエータAC1のLUN(論理ユニット番号:Logical Unit Number)を示し、LUN2は、アクチュエータAC2のLUNを示している。Cmd1、Cmd2、及びCmd3は、コマンドを示している。コマンドCmd1、コマンドCmd2、及びコマンドCmd3の番号1、2、及び3は、ホスト100等から転送された順番を示し、小さい方が大きい方よりもコマンドから転送された順番が早いことを示している。コマンドLUN1Cmd1、コマンドLUN1Cmd2、及びコマンドLUN1Cmd3は、アクチュエータAC1に対応するコマンドに相当する。コマンドLUN1Cmd1、コマンドLUN1Cmd2、及びコマンドLUN1Cmd3は、これら記載の順にホスト100等から格納部6201に転送されてキューQ1に格納されている。コマンドLUN2Cmd1、及びコマンドLUN2Cmdは、これら記載の順にホスト100等から格納部6201に転送されてキューQ2に格納されている。図3には、キューQ1にコマンドを格納する方向(以下、格納方向と称する場合もある)CD1と、キューQ2にコマンドを格納する格納方向CD2とを示している。
【0042】
図3に示した例では、格納部6201は、格納方向CD1に沿って、コマンドLUN1Cmd1、コマンドLUN1Cmd2、及びコマンドLUN2Cmd3をこれら記載の順にキューQ1に格納し、格納方向CD2に沿って、コマンドLUN2Cmd1及びコマンドLUN2Cmd2をこれら記載の順にキューQ2に格納する。
【0043】
格納部6201は、キューQ1に格納されたアクチュエータAC1に対応するキューコマンド数(=3)がQD分のコマンド数(=3)であるため、ホスト100等からアクチュエータAC1に対応するコマンドを受けない。格納部6201は、キューQ2に格納されたアクチュエータAC2に対応するキューコマンド数(=2)がQD(=3)よりも小さいため、ホスト100等からアクチュエータAC2に対応するコマンドを受けてキューQ2に格納し得る。
【0044】
図4は、合成キューQ10の一例を示す模式図である。図4において、格納部6201は、アクチュエータAC1及びAC2に対応するコマンドを格納する合成キューQ10を含む。合成キューQ10は、例えば、図3に示したキューQ1及びQ2を組み合わせたキューに相当する。図4では、合成キューQ10のQDは、アクチュエータAC1に対応するキューのQD、例えば、3とアクチュエータAC2に対応するキューのQD、例えば、3とを足したQD、例えば、6である。なお、合成キューQ10は、5以下であってもよいし、7以上であってもよい。図4において、アクチュエータAC1に対応するキューのQDは、例えば、3であり、アクチュエータAC2に対応するキューのQDは、例えば、3である。図4において、格納方向CD1と、格納方向CD2とは、同じ方向である。
【0045】
格納部6201は、格納方向CD1に沿って、コマンドLUN1Cmd1及びコマンドLUN1Cmd2をこれら記載の順にキューQ1に格納する。格納部6201は、コマンドLUN1Cmd2の後にコマンドLUN2Cmd1を受けて、格納方向CD2に沿って、コマンドLUN1Cmd2の後にコマンドLUN2Cmd1を合成キューQ10に格納する。格納部6201は、コマンドLUN2Cmd1の後にコマンドLUN1Cmd3を受けて、格納方向CD1に沿って、コマンドLUN2Cmd1の後にコマンドLUN1Cmd3を合成キューQ10に格納する。格納部6201は、コマンドLUN1Cmd3の後にコマンドLUN2Cmd2を受けて、格納方向CD2に沿って、コマンドLUN1Cmd3の後にコマンドLUN2Cmd2を合成キューQ10に格納する。
【0046】
格納部6201は、合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数がQD(=3)であるため、アクチュエータAC1に対応するコマンドを受けない。格納部6201は、合成キューQ10に格納されたアクチュエータAC2に対応するキューコマンド数がQD(=3)よりも小さいため、アクチュエータAC2に対応するコマンドを受けて合成キューQ10に格納し得る。
【0047】
図5は、合成キューQ10の一例を示す模式図である。図5において、格納部6201は、アクチュエータAC1及びAC2に対応するコマンドを格納する合成キューQ10を含む。合成キューQ10は、例えば、図5に示したキューQ1及びQ2を組み合わせたキューに相当する。図5では、合成キューQ10のQDは、アクチュエータAC1に対応するキューのQD、例えば、3とアクチュエータAC2に対応するキューのQD、例えば、3とを足したQD、例えば、6である。なお、合成キューQ10は、5以下であってもよいし、7以上であってもよい。図5において、アクチュエータAC1に対応するキューのQDは、例えば、3であり、アクチュエータAC2に対応するキューのQDは、例えば、3である。図5において、格納方向CD1と、格納方向CD2とは、互いに逆方向である。
【0048】
格納部6201は、格納方向CD1に沿って、コマンドLUN1Cmd1、コマンドLUN1Cmd2、及びコマンドLUN1Cmd3をこれら記載の順に合成キューQ10に格納し、格納方向CD2に沿って、コマンドLUN2Cmd1及びコマンドLUN2Cmd2をこれら記載の順に合成キューQ10に格納する。
【0049】
格納部6201は、合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数がQD(=3)であるため、アクチュエータAC1に対応するコマンドを受けない。格納部6201は、合成キューQ10に格納されたアクチュエータAC2に対応するキューコマンド数がQD(=3)よりも小さいため、アクチュエータAC2に対応するコマンドを受けて合成キューQ10に格納し得る。
【0050】
コマンド数判定部6202は、各アクチュエータACに対応する各キューコマンド数をカウントする。コマンド数判定部6202は、例えば、各アクチュエータACに対応する各キューコマンド数をLUNと関連付けてテーブル等に記録してもよい。なお、この各アクチュエータACに対応するキューコマンド数を含むテーブルは、例えば、コマンド数判定部6202に備えられていてもよいし、所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録されていてもよい。
【0051】
コマンド数判定部6202は、各アクチュエータACに対応する各キューコマンド数に応じて各アクチュエータACに対応するキューコマンド数の多さ(以下、キューコマンド数のレベルと称する場合もある)を判定する。コマンド数判定部6202は、各アクチュエータACに対応する各キューコマンド数が所定の閾値(以下、上限値と称する場合もある)以上であるか、上限値よりも小さいかを判定する。以下で、各アクチュエータに対応する各キューコマンド数の各上限値は、同じであるものとして説明するが、異なっていてもよい。コマンド数判定部6202は、所定のアクチュエータACに対応するキューコマンド数が上限値以上であると判定した場合、この所定のアクチュエータACに対応するキューコマンド数の多さが多いと判定する。言い換えると、コマンド数判定部6202は、所定のアクチュエータACに対応するキューコマンド数が上限値以上であると判定した場合、この所定のアクチュエータACに対応するキューコマンド数のレベルが高レベルであると判定する。上限値は、例えば、QDに相当する。コマンド数判定部6202は、各アクチュエータACに対応する各キューコマンドが所定の閾値(以下、下限値と称する場合もある)以下であるか、下限値よりも大きいかを判定する。以下で、各アクチュエータに対応する各キューコマンド数の各下限値は、同じであるものとして説明するが、異なっていてもよい。コマンド数判定部6202は、所定のアクチュエータACに対応するキューコマンド数が下限値以下であると判定した場合、この所定のアクチュエータACに対応するキューコマンド数の多さが少ないと判定する。言い換えると、コマンド数判定部6202は、所定のアクチュエータACに対応するキューコマンド数が下限値以下であると判定した場合、この所定のアクチュエータACに対応するキューコマンド数のレベルが低レベルであると判定する。下限値は、例えば、0(ゼロ)に相当する。例えば、所定のアクチュエータACに対応するキューコマンド数が下限値である場合、このアクチュエータACは、アイドル状態である。コマンド数判定部6202は、所定のアクチュエータに対応するキューコマンド数が上限値よりも小さく、且つ下限値よりも大きいと判定した場合、このアクチュエータACに対応するキューコマンド数の多さが多くも少なくもないと判定する。言い換えると、コマンド数判定部6202は、所定のアクチュエータACに対応するキューコマンド数のレベルが中レベルであると判定する。
【0052】
例えば、コマンド数判定部6202は、アクチュエータAC1(又はアクチュエータAC2)に対応するキューコマンド数の上限値が3であり、且つアクチュエータAC1(又はアクチュエータAC2)に対応するキューコマンド数が3である場合、アクチュエータAC1に対応するキューコマンド数のレベルが高レベルであると判定する。例えば、コマンド数判定部6202は、アクチュエータAC1(又はアクチュエータAC2)に対応するキューコマンド数の下限値が1であり、且つアクチュエータAC1(又はアクチュエータAC2)に対応するキューコマンド数が1である場合、アクチュエータAC1(又はアクチュエータAC2)に対応するキューコマンド数のレベルが低レベルであると判定する。例えば、コマンド数判定部6202は、アクチュエータAC1(又はアクチュエータAC2)に対応するキューコマンド数が3であり、アクチュエータAC1(又はアクチュエータAC2)に対応するキューコマンド数の下限値が1であり、且つアクチュエータAC1(又はアクチュエータAC2)に対応するキューコマンド数が2である場合、アクチュエータAC1(又はアクチュエータAC2)に対応するキューコマンド数のレベルが中レベルであると判定する。
【0053】
バイパス演算判定部6211は、複数のアクチュエータACにそれぞれ対応するキューコマンド数のレベルに基づいてバイパス演算処理が有効か無効かを判定する。バイパス演算判定部6211は、複数のアクチュエータACにそれぞれ対応するキューコマンド数のレベルに基づいてバイパス演算処理が有効であると判定した場合、バイパス演算処理を有効にするフラグ(以下、有効フラグと称する場合もある)と、リオーダリング情報を転送する方向を示すフラグ(以下、転送方向フラグと称する場合もある)とを生成し、有効フラグ及び転送方向フラグを出力する。バイパス演算判定部6211は、複数のアクチュエータACにそれぞれ対応するキューコマンド数のレベルに基づいてバイパス演算処理が無効であると判定した場合、バイパス演算処理を無効にするフラグ(以下、無効フラグと称する場合もある)を生成し、無効フラグを出力する。
【0054】
バイパス演算判定部6211は、例えば、複数のアクチュエータACにそれぞれ対応するキューコマンド数のレベル、バイパス演算処理の状態、及びリオーダリング情報の転送方向等を含むテーブル(以下、判定テーブルと称する場合もある)と、複数のアクチュエータACにそれぞれ対応する複数のキューコマンド数のレベルとに基づいて、バイパス演算処理が有効か無効かを判定する。判定テーブルは、バイパス演算判定部6211に備えられていてもよいし、所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録されていてもよい。
【0055】
図6は、判定テーブルTB1の一例を示す模式図である。図6において、判定テーブルTB1は、LUN1のアクチュエータAC1に対応するキューコマンド数のレベルと、LUN2のアクチュエータAC2に対応するキューコマンド数のレベルと、バイパス演算処理の状態と、リオーダリング情報の転送方向とを含む。図6に示した判定テーブルTB1において、番号は、LUN1の(アクチュエータAC1に対応する)キューコマンド数のレベル、LUN2の(アクチュエータAC2に対応する)キューコマンド数のレベル、バイパス演算処理の状態、及びリオーダリング情報の転送方向の組み合わせの通し番号を示している。図6に示した判定テーブルTB1のLUN1及びLUN2のキューコマンド数のレベルにおいて、0:Lowは、キューコマンド数のレベルが低レベルであることを示し、1:Middleは、キューコマンド数のレベルが中レベルであることを示し、2:Highは、キューコマンド数のレベルが高レベルであることを示している。図6に示した判定テーブルTB1のバイパス演算処理の状態において、0:Disableは、バイパス演算処理が無効であることを示し、1:Enableは、バイパス演算処理が有効であることを示している。図6に示した判定テーブルTB1のリオーダリング情報の転送方向において、0(Invalid)は、バイパス演算処理が無効であるためにリオーダリング情報の転送がないことを示し、-1(R2→B1)は、アクチュエータAC2に対応するリオーダリング情報を第2リオーダリング演算部6222から第1バイパス演算部6231に転送することを示し、1(R1→B2)は、アクチュエータAC1に対応するリオーダリング情報を第1リオーダリング演算部6221から第2バイパス演算部6232に転送することを示している。判定テーブルTB1は、バイパス演算判定部6211に備えられていてもよいし、所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録されていてもよい。
【0056】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが低レベル(0:Low)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが低レベル(0:Low)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が無効(0:Disable)であると判定する。この場合、バイパス演算判定部6211は、無効(0:Disable)フラグを生成し、無効(0:Disable)フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0057】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが低レベル(0:Low)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが中レベル(1:Middle)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が無効(0:Disable)であると判定する。この場合、バイパス演算判定部6211は、無効(0:Disable)フラグを生成する。バイパス演算判定部6211は、生成した無効(0:Disable)フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0058】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが低レベル(0:Low)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが高レベル(2:High)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が有効(1:Enable)であると判定する。この場合、バイパス演算判定部6211は、アクチュエータAC1に対応する余剰演算リソースによりバイパス演算処理を有効にする有効(1:Enable)フラグと、アクチュエータAC2に対応するリオーダリング情報を第2リオーダリング演算部6222から第1バイパス演算部6231に転送することを示す転送方向フラグを生成する。バイパス演算判定部6211は、生成した有効フラグ及び転送方向フラグを第2リオーダリング演算部6222、及び第1バイパス演算部6231に出力する。なお、バイパス演算判定部6211は、生成した有効フラグ及び転送方向フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力してもよい。
【0059】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが中レベル(1:Middle)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが低レベル(0:Low)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が無効(0:Disable)であると判定する。この場合、バイパス演算判定部6211は、無効(0:Disable)フラグを生成し、無効(0:Disable)フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0060】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが中レベル(1:Middle)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが中レベル(1:Middle)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が無効(0:Disable)であると判定する。この場合、バイパス演算判定部6211は、無効(0:Disable)フラグを生成し、無効(0:Disable)フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0061】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが中レベル(1:Middle)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが高レベル(2:High)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が無効(0:Disable)であると判定する。この場合、バイパス演算判定部6211は、無効(0:Disable)フラグを生成し、無効(0:Disable)フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0062】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが中レベル(1:Middle)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが低レベル(0:Low)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が無効(0:Disable)であると判定する。この場合、バイパス演算判定部6211は、無効(0:Disable)フラグを生成し、無効(0:Disable)フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0063】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが高レベル(2:High)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが低レベル(0:Low)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が有効(1:Enable)であると判定する。この場合、バイパス演算判定部6211は、アクチュエータAC2に対応する余剰演算リソースによりバイパス演算処理を有効にする有効(1:Enable)フラグと、アクチュエータAC1に対応するリオーダリング情報を第1リオーダリング演算部6221から第2バイパス演算部6232に転送することを示す転送方向フラグを生成する。バイパス演算判定部6211は、生成した有効フラグ及び転送方向フラグを第1リオーダリング演算部6221及び第2バイパス演算部6232に出力する。なお、バイパス演算判定部6211は、生成した有効フラグ及び転送方向フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力してもよい。
【0064】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが高レベル(2:High)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが中レベル(1:Middle)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が無効(0:Disable)であると判定する。この場合、バイパス演算判定部6211は、無効(0:Disable)フラグを生成し、無効(0:Disable)フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0065】
図6に示した例では、バイパス演算判定部6211は、コマンド数判定部6202によりLUN1のアクチュエータAC1に対応するキューコマンド数のレベルが高レベル(2:High)であり且つLUN2のアクチュエータAC2に対応するキューコマンド数のレベルが高レベル(2:High)であると判定された場合、判定テーブルTB1を参照してバイパス演算処理が無効(0:Disable)であると判定する。この場合、バイパス演算判定部6211は、無効(0:Disable)フラグを生成し、無効(0:Disable)フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0066】
図7は、本実施形態に係るバイパス演算処理の状態の判定方法の一例を示す模式図である。図7において、格納部6201は、図3に示したキューQ1及びQ2を含む。図7において、キューQ1及びQ2のQDは、それぞれ、3である。図7において、格納方向CD1及びCD2は、同じ方向であるが、反対方向であってもよい。図7には、アクチュエータAC1及びAC2に対応するキューコマンド数の上限値thHと、アクチュエータAC1及びAC2に対応する下限値thLとを示している。図7において、上限値thHは、3であり、下限値thLは、0である。なお、上限値thHは、3以外の値であってもよいし、下限値thLは、0以外の値であってもよい。図7では、キューQ1に格納されたアクチュエータAC1に対応するキューコマンド数は、3であり、キューQ2に格納されたアクチュエータAC2に対応するキューコマンド数は、0である。
【0067】
図7に示した例では、コマンド数判定部6202は、格納部6201のキューQ1に格納されたアクチュエータAC1に対応するキューコマンド数(=3)と格納部6201のキューQ2に格納されたアクチュエータAC2に対応するキューコマンド数(=0)とをそれぞれカウントする。なお、コマンド数判定部6202は、カウントしたアクチュエータAC1に対応するキューコマンド数とアクチュエータAC2に対応するキューコマンド数とをLUNと関連付けてテーブルにそれぞれ記録してもよい。
【0068】
図7に示した例では、コマンド数判定部6202は、格納部6201のキューQ1に格納されたアクチュエータAC1に対応するキューコマンド数(=3)が上限値thH(=3)以上であり、格納部6201のキューQ2に格納されたアクチュエータAC2に対応するキューコマンド数(=0)が下限値thL(=0)以下である場合、アクチュエータAC1に対応するキューコマンド数のレベルが高レベルであり、且つアクチュエータAC2に対応するキューコマンド数のレベルが低レベルであると判定する。
【0069】
図7に示した例では、バイパス演算判定部6211は、コマンド数判定部6202により、アクチュエータAC1に対応するキューコマンド数のレベルが高レベルであり、且つアクチュエータAC2に対応するキューコマンド数のレベルが低レベルであると判定された場合、図6に示した判定テーブルTB1等を参照してバイパス演算が有効であると判定する。バイパス演算判定部6211は、アクチュエータAC2に対応する余剰演算リソースを使用したバイパス演算処理を有効にする有効フラグと、アクチュエータAC1に対応するリオーダリング情報を第1リオーダリング演算部6221から第2バイパス演算部6232に転送することを示す転送方向フラグとを生成する。バイパス演算判定部6211は、生成した有効フラグ及び転送方向フラグを第1リオーダリング演算部6221及び第2バイパス演算部6232に出力する。なお、バイパス演算判定部6211は、生成した有効フラグ及び転送方向フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力してもよい。
【0070】
図8は、本実施形態に係るバイパス演算処理の状態の判定方法の一例を示す模式図である。図8において、格納部6201は、図4に示した合成キューQ10を含む。図8において、合成キューQ10のQDは、6である。図8では、アクチュエータAC1に対応するキューのQDは、3であり、アクチュエータAC2に対応するキューのQDは、3である。図8において、格納方向CD1及びCD2は、同じ方向であるが、反対方向であってもよい。図8には、アクチュエータAC1及びAC2に対応するキューコマンド数の上限値thHと、アクチュエータAC1及びAC2に対応する下限値thLとを示している。図8において、上限値thHは、3であり、下限値thLは、0である。なお、上限値thHは、3以外の値であってもよいし、下限値thLは、0以外の値であってもよい。図8では、合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数は、3であり、合成キューQ10に格納されたアクチュエータAC2に対応するキューコマンド数は、2である。図8には、LUN(LUN1)に関連付けた合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数と、LUN(LUN2)に関連付けた合成キューQ10に格納されたアクチュエータAC2に対応するキューコマンド数とを含むテーブルTB2を示している。
【0071】
図8に示した例では、コマンド数判定部6202は、格納部6201の合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数(=3)とアクチュエータAC2に対応するキューコマンド数(=2)とをそれぞれカウントし、カウントしたアクチュエータAC1に対応するキューコマンド数とアクチュエータAC2に対応するキューコマンド数とをLUNと関連付けてテーブルTB2にそれぞれ記録する。
【0072】
図8に示した例では、コマンド数判定部6202は、格納部6201の合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数(=3)が上限値thH(=3)以上であり、格納部6201の合成キューQ10に格納されたアクチュエータAC2に対応するキューコマンド数(=2)が下限値thL(=0)より大きい場合、アクチュエータAC1に対応するキューコマンド数のレベルが高レベルであり、且つアクチュエータAC2に対応するキューコマンド数のレベルが中レベルであると判定する。
【0073】
図8に示した例では、バイパス演算判定部6211は、コマンド数判定部6202により、アクチュエータAC1に対応するキューコマンド数のレベルが高レベルであり、且つアクチュエータAC2に対応するキューコマンド数のレベルが中レベルであると判定された場合、図6に示した判定テーブルTB1等を参照してバイパス演算が無効であると判定する。バイパス演算判定部6211は、無効フラグを生成する。バイパス演算判定部6211は、生成した無効フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0074】
図9は、本実施形態に係るバイパス演算処理の状態の判定方法の一例を示す模式図である。図9において、格納部6201は、図5に示した合成キューQ10を含む。図9において、合成キューQ10のQDは、6である。図9では、アクチュエータAC1に対応するキューのQDは、3であり、アクチュエータAC2に対応するキューのQDは、3である。図9において、格納方向CD1及びCD2は、互いに反対方向であるが、同じ方向であってもよい。図9には、アクチュエータAC1及びAC2に対応するキューコマンド数の上限値thHと、アクチュエータAC1及びAC2に対応する下限値thLとを示している。図9において、上限値thHは、3であり、下限値thLは、0である。なお、上限値thHは、3以外の値であってもよいし、下限値thLは、0以外の値であってもよい。図9では、合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数は、3であり、合成キューQ10に格納されたアクチュエータAC2に対応するキューコマンド数は、2である。図9には、LUN(LUN1)に関連付けた合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数と、LUN(LUN2)に関連付けた合成キューQ10に格納されたアクチュエータAC2に対応するキューコマンド数とを含むテーブルTB2を示している。
【0075】
図9に示した例では、コマンド数判定部6202は、格納部6201の合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数(=3)とアクチュエータAC2に対応するキューコマンド数(=2)とをそれぞれカウントし、カウントしたアクチュエータAC1に対応するキューコマンド数とアクチュエータAC2に対応するキューコマンド数とをLUNと関連付けてテーブルTB2にそれぞれ記録する。
【0076】
図9に示した例では、コマンド数判定部6202は、格納部6201の合成キューQ10に格納されたアクチュエータAC1に対応するキューコマンド数(=3)が上限値thH(=3)以上であり、格納部6201の合成キューQ10に格納されたアクチュエータAC2に対応するキューコマンド数(=2)が下限値thL(=0)よりも大きい場合、アクチュエータAC1に対応するキューコマンド数のレベルが高レベルであり、且つアクチュエータAC2に対応するキューコマンド数のレベルが中レベルであると判定する。
【0077】
図9に示した例では、バイパス演算判定部6211は、コマンド数判定部6202により、アクチュエータAC1に対応するキューコマンド数のレベルが高レベルであり、且つアクチュエータAC2に対応するキューコマンド数のレベルが中レベルであると判定された場合、図6に示した判定テーブルTB1等を参照してバイパス演算が無効であると判定する。バイパス演算判定部6211は、無効フラグを生成する。バイパス演算判定部6211は、生成した無効フラグを第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232に出力する。
【0078】
通信部6212は、情報を転送する。通信部6212は、例えば、第1リオーダリング演算部6221と第2バイパス演算部6232との間でリオーダリング情報を転送する。通信部6212は、例えば、第2リオーダリング演算部6222と第1バイパス演算部6231との間でリオーダリング情報を転送する。なお、通信部6212は、第1リオーダリング6221と第2リオーダリング6222との間で情報を転送してもよいし、第1バイパス演算部6231と第2バイパス演算部6232との間で情報を転送してもよい。通信部6212は、磁気ディスク装置1の各部とコマンド制御部620の各部との間で情報を転送してもよい。また、通信部6212は、ホスト100とコマンド制御部620の各部との間で情報を転送してもよい。
【0079】
第1リオーダリング演算部6221は、アクチュエータAC1に対応する複数のキューコマンドにリオーダリング演算処理を実行する。例えば、第1リオーダリング演算部6221は、現在のコマンドを処理している際に、ホスト100等から受けたアクチュエータAC1に対応する複数のキューコマンドにリオーダリング演算処理を実行する。
【0080】
一例では、第1リオーダリング演算部6221は、ヘッドHD1の現在の位置の情報、アクチュエータAC1に対応する複数のキューコマンドの情報、及びアクチュエータAC1に対応するリオーダリングテーブル等のアクチュエータAC1に対応するリオーダリング情報に基づいて、ヘッドHD1の現在の位置からアクチュエータAC1に対応する複数のキューコマンドの内の現在のコマンドの次に処理する可能性のある複数のキューコマンド(以下、次回処理見込みコマンドと称する場合もある)でそれぞれ指定される複数の位置までのアクセスコスト(以下、次回推定コストと称する場合もある)をそれぞれ計算する。なお、第1リオーダリング演算部6221は、磁気ディスク装置1の振動や消費電力の影響を低減するために、計算したアクセスコスト(次回推定コスト)に重み付け(例えば、所定の値を乗算、又は除算)したり、ヘッドHD1の移動を開始するディスクDKの位置やヘッドHD1を移動させるディスクDKの位置を半径方向にオフセット(例えば、所定の値を加算、又は減算)してアクセスコスト(次回推定コスト)を計算したり、することなどによりアクセスコスト(次回推定コスト)を調整してもよい。第1リオーダリング演算部6221は、これら次回推定コストの計算処理の結果に基づいて、これら次回処理見込みコマンドから低コストコマンド(又は最低コストコマンド)を選択し、これら次回処理見込みコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。
【0081】
一例では、第1リオーダリング演算部6221は、アクチュエータAC1に対応するリオーダリング情報に基づいて次回推定コストをそれぞれ計算し、アクチュエータAC1に対応するリオーダリング情報に基づいてアクチュエータAC1に対応する複数のキューコマンドの内の複数の次回処理見込みコマンドでそれぞれ指定される複数の位置からこれら複数のキューコマンドの内の現在のコマンドの次の次に処理する可能性がある複数のキューコマンド(以下、次々回処理見込みコマンドと称する場合もある)でそれぞれ指定される複数の位置までの複数のアクセスコスト(以下、次々回推定コストと称する場合もある)をそれぞれ計算する。言い換えると、第1リオーダリング演算部6221は、アクチュエータAC1に対応するリオーダリング情報に基づいて次回推定コストをそれぞれ計算し、アクチュエータAC1に対応するリオーダリング情報に基づいてアクチュエータAC1に対応する複数のキューコマンドの内の複数の次回処理見込みコマンドでそれぞれ指定される複数の位置から複数のキューコマンドの内の次回処理見込みコマンドと異なる複数の次々回処理見込みコマンドでそれぞれ指定される複数のディスクDKの異なる位置までの複数の次々回推定コストをそれぞれ計算する。なお、第1リオーダリング演算部6221は、磁気ディスク装置1の振動や消費電力の影響を低減するために、計算したアクセスコスト(次々回推定コスト)に重み付け(例えば、所定の値を乗算、又は除算)したり、ヘッドHD1の移動を開始するディスクDKの位置やヘッドHD1を移動させるディスクDKの位置を半径方向にオフセット(例えば、所定の値を加算、又は減算)してアクセスコスト(次々回推定コスト)を計算したり、することなどによりアクセスコスト(次々回推定コスト)を調整してもよい。第1リオーダリング演算部6221は、これら次回推定コスト及び次々回推定コストの計算処理の結果に基づいてこれら次回処理見込みコマンドから低コストコマンド(又は最低コストコマンド)を選択し、これら次回処理見込みコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。
【0082】
第1リオーダリング演算部6221は、例えば、アクチュエータAC1に対応するリオーダリング情報を所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。なお、第1リオーダリング演算部6221は、アクチュエータAC1に対応するリオーダリングテーブル以外のアクチュエータAC1に対応するリオーダリング情報を所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。この場合、第1リオーダリング演算部6221は、アクチュエータAC1に対応するリオーダリングテーブルをアクチュエータAC1に対応するリオーダリング情報とは別に所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。第1リオーダリング演算部6221は、各アクチュエータACに対応するリオーダリングテーブル、例えば、アクチュエータAC1に対応するリオーダリングテーブルとアクチュエータAC2に対応するリオーダリングテーブルとを所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。第1リオーダリング演算部6221は、複数のアクチュエータACに対応するリオーダリングテーブル、例えば、アクチュエータAC1及びAC2に対応するリオーダリングテーブルを所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。第1リオーダリング演算部6221は、アクチュエータAC1に対応するリオーダリングテーブルを計算により算出してもよい。第1リオーダリング演算部6221は、アクチュエータAC1に対応するリオーダリングテーブルとアクチュエータAC2に対応するリオーダリングテーブルとを計算により算出してもよい。また、第1リオーダリング演算部6221は、アクチュエータAC1及びAC2に対応するリオーダリングテーブルを計算により算出してもよい。
【0083】
第1リオーダリング演算部6221は、例えば、アクチュエータAC2に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC1に対応するリオーダリング情報を第2バイパス演算部6232に転送する転送方向フラグとが入力された場合、通信部6212を介してアクチュエータAC1に対応するリオーダリング情報を第2バイパス演算部6232に転送する。なお、第1リオーダリング演算部6221は、アクチュエータAC2に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC1に対応するリオーダリング情報を第2バイパス演算部6232に転送する転送方向フラグとが入力された場合、通信部6212を介してアクチュエータAC1に対応するリオーダリングテーブル以外のリオーダリング情報を第2バイパス演算部6232に転送してもよい。また、第1リオーダリング演算部6221は、アクチュエータAC1に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC2に対応するリオーダリング情報を第1バイパス演算部6231に転送する転送方向フラグとが入力された場合、通信部6212を介して各アクチュエータに対応するリオーダリング情報を第1バイパス演算部6231に転送してもよい。
【0084】
第1リオーダリング演算部6221は、アクチュエータAC1に対応する複数のキューコマンドのそれぞれの複数のアクセスコストの計算処理の計算結果と第2バイパス演算部6232から転送されたアクチュエータAC1に対応する複数のキューコマンドのそれぞれの複数のアクセスコストを計算したバイパス演算処理の計算結果とに基づいてアクチュエータAC1に対応するこれら複数のキューコマンドから低コストコマンド(又は最低コストコマンド)を選択し、これら複数のキューコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。
【0085】
一例では、第1リオーダリング演算部6221は、アクチュエータAC1に対応する複数のキューコマンドの内の幾つかの次回処理見込みコマンドのそれぞれの幾つかの次回推定コストの計算処理の計算結果と第2バイパス演算部6232から転送されたアクチュエータAC1に対応する複数のキューコマンドの内の幾つかの次回処理見込みコマンドのそれぞれの幾つかの次回推定コストの計算処理の計算結果とに基づいて、アクチュエータAC1に対応するこれら複数の次回処理見込みコマンドから低コストコマンド(又は最低コストコマンド)を選択し、アクチュエータAC1に対応するこれら複数の次回処理見込みコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。
【0086】
一例では、第1リオーダリング演算部6221は、アクチュエータAC1に対応する複数の次回処理見込みコマンドのそれぞれの複数の次回推定コストをそれぞれ計算した計算結果と、第2バイパス演算部6232から転送されたアクチュエータAC1に対応する複数の次々回処理見込みコマンドのそれぞれの複数の次々回推定コストをそれぞれ計算した計算結果とに基づいて、アクチュエータAC1に対応するこれら次回処理見込みコマンドから低コストコマンド(又は最低コストコマンド)を選択し、アクチュエータAC1に対応するこれら複数の次回処理見込みコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。
【0087】
第2リオーダリング演算部6222は、アクチュエータAC2に対応する複数のキューコマンドにリオーダリング演算処理を実行する。例えば、第2リオーダリング演算部6222は、現在のコマンドを処理している際に、ホスト100等から受けたアクチュエータAC2に対応する複数のキューコマンドにリオーダリング演算処理を実行する。
【0088】
一例では、第2リオーダリング演算部6222は、ヘッドHD2の現在の位置の情報、アクチュエータAC2に対応する複数のキューコマンドの情報、及びアクチュエータAC2に対応するリオーダリングテーブル等のアクチュエータAC2に対応するリオーダリング情報に基づいて、ヘッドHD2の現在の位置からアクチュエータAC2に対応する複数のキューコマンドの内の複数の次回処理見込みコマンドでそれぞれ指定される複数の位置までの複数の次回推定コストをそれぞれ計算する。なお、第2リオーダリング演算部6222は、磁気ディスク装置1の振動や消費電力の影響を低減するために、計算したアクセスコスト(次回推定コスト)に重み付け(例えば、所定の値を乗算、又は除算)したり、ヘッドHD2の移動を開始するディスクDKの位置やヘッドHD1を移動させるディスクDKの位置を半径方向にオフセット(例えば、所定の値を加算、又は減算)してアクセスコスト(次回推定コスト)を計算したり、することなどによりアクセスコスト(次回推定コスト)を調整してもよい。第2リオーダリング演算部6222は、これら次回推定コストの計算処理の結果に基づいて、これら次回処理見込みコマンドから低コストコマンド(又は最低コストコマンド)を選択し、これら次回処理見込みコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。アクチュエータAC2に対応するリオーダリングテーブルは、アクチュエータAC1に対応するリオーダリングテーブルと同じであってもよいし、異なっていてもよい。
【0089】
一例では、第2リオーダリング演算部6222は、アクチュエータAC2に対応するリオーダリング情報に基づいて次回推定コストをそれぞれ計算し、アクチュエータAC2に対応するリオーダリング情報に基づいてアクチュエータAC2に対応する複数のキューコマンドの内の次々回処理見込みコマンドのそれぞれの複数の次々回推定コストをそれぞれ計算する。言い換えると、第2リオーダリング演算部6222は、アクチュエータAC2に対応するリオーダリング情報に基づいて次回推定コストをそれぞれ計算し、アクチュエータAC2に対応するリオーダリング情報に基づいてアクチュエータAC2に対応する複数のキューコマンドの内の複数の次回処理見込みコマンドでそれぞれ指定される複数の位置から複数のキューコマンドの内の次回処理見込みコマンドと異なる複数の次々回処理見込みコマンドでそれぞれ指定される複数のディスクDKの異なる位置までの複数の次々回推定コストをそれぞれ計算する。なお、第2リオーダリング演算部6222は、磁気ディスク装置1の振動や消費電力の影響を低減するために、計算したアクセスコスト(次々回推定コスト)に重み付け(例えば、所定の値を乗算、又は除算)したり、ヘッドHD1の移動を開始するディスクDKの位置やヘッドHD1を移動させるディスクDKの位置を半径方向にオフセット(例えば、所定の値を加算、又は減算)してアクセスコスト(次々回推定コスト)を計算したり、することなどによりアクセスコスト(次々回推定コスト)を調整してもよい。第2リオーダリング演算部6222は、これら次回推定コスト及び次々回推定コストの計算処理の結果に基づいてこれら次回処理見込みコマンドから低コストコマンド(又は最低コストコマンド)を選択し、これら次回処理見込みコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。
【0090】
第2リオーダリング演算部6222は、例えば、アクチュエータAC2に対応するリオーダリング情報を所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。なお、第2リオーダリング演算部6222は、アクチュエータAC2に対応するリオーダリングテーブル以外のアクチュエータAC2に対応するリオーダリング情報を所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。この場合、第2リオーダリング演算部6222は、アクチュエータAC2に対応するリオーダリングテーブルをアクチュエータAC2に対応するリオーダリング情報とは別に所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。第2リオーダリング演算部6222は、各アクチュエータACに対応するリオーダリングテーブル、例えば、アクチュエータAC1に対応するリオーダリングテーブルとアクチュエータAC2に対応するリオーダリングテーブルとを所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。第2リオーダリング演算部6222は、複数のアクチュエータACに対応するリオーダリングテーブル、例えば、アクチュエータAC1及びAC2に対応するリオーダリングテーブルを所定の記録領域、例えば、ディスクDKのシステムエリアDKb、揮発性メモリ70、バッファメモリ80、又は不揮発性メモリ90等に記録していてもよい。第2リオーダリング演算部6222は、アクチュエータAC2に対応するリオーダリングテーブルを計算により算出してもよい。第2リオーダリング演算部6222は、アクチュエータAC1に対応するリオーダリングテーブルとアクチュエータAC2に対応するリオーダリングテーブルとを計算により算出してもよい。また、第2リオーダリング演算部6222は、アクチュエータAC1及びAC2に対応するリオーダリングテーブルを計算により算出してもよい。
【0091】
第2リオーダリング演算部6222は、例えば、アクチュエータAC1に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC2に対応するリオーダリング情報を第1バイパス演算部6231に転送する転送方向フラグとが入力された場合、通信部6212を介してアクチュエータAC2に対応するリオーダリング情報を第1バイパス演算部6231に転送する。なお、第2リオーダリング演算部6222は、アクチュエータAC1に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC2に対応するリオーダリング情報を第1バイパス演算部6231に転送する転送方向フラグとが入力された場合、通信部6212を介してアクチュエータAC2に対応するリオーダリングテーブル以外のリオーダリング情報を第1バイパス演算部6231に転送してもよい。また、第2リオーダリング演算部6222は、アクチュエータAC2に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC1に対応するリオーダリング情報を第2バイパス演算部6232に転送する転送方向フラグとが入力された場合、通信部6212を介して各アクチュエータに対応するリオーダリング情報を第2バイパス演算部6232に転送してもよい。
【0092】
第2リオーダリング演算部6222は、アクチュエータAC2に対応する複数のキューコマンドのそれぞれの複数のアクセスコストの計算処理の計算結果と第1バイパス演算部6231から転送されたアクチュエータAC2に対応する複数のキューコマンドのそれぞれの複数のアクセスコストを計算したバイパス演算処理の計算結果とに基づいてアクチュエータAC2に対応するこれら複数のキューコマンドから低コストコマンド(又は最低コストコマンド)を選択し、これら複数のキューコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。
【0093】
一例では、第2リオーダリング演算部6222は、アクチュエータAC2に対応する複数のキューコマンドの内の幾つかの次回処理見込みコマンドのそれぞれの幾つかの次回推定コストの計算処理の計算結果と第1バイパス演算部6231から転送されたアクチュエータAC2に対応する複数のキューコマンドの内の幾つかの次回処理見込みコマンドのそれぞれの幾つかの次回推定コストの計算処理の計算結果とに基づいて、アクチュエータAC2に対応するこれら複数のキューコマンドから低コストコマンド(又は最低コストコマンド)を選択し、アクチュエータAC2に対応するこれら複数の次回処理見込みコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。
【0094】
一例では、第2リオーダリング演算部6222は、アクチュエータAC2に対応する複数の次回処理見込みコマンドのそれぞれの複数の次回推定コストをそれぞれ計算した計算結果と、第1バイパス演算部6231から転送されたアクチュエータAC2に対応する複数の次々回処理見込みコマンドのそれぞれの複数の次々回推定コストをそれぞれ計算した計算結果とに基づいて、アクチュエータAC2に対応するこれら次回処理見込みコマンドから低コストコマンド(又は最低コストコマンド)を選択し、アクチュエータAC2に対応するこれら複数の次回処理見込みコマンドから選択した低コストコマンド(又は最低コストコマンド)の順番を次の順番にリオーダリングする。
【0095】
第1バイパス演算部6231は、アクチュエータAC1に対応する余剰演算リソースによりバイパス演算処理を実行し、バイパス演算処理の演算結果を転送する。言い換えると、第1バイパス演算部6231は、アクチュエータAC1に対応する演算リソースに空き(余剰演算リソース)がある場合、アクチュエータAC2に対応するリオーダリング演算処理(又はリオーダリング演算処理の一部の演算処理に相当するバイパス演算処理)を実行する。例えば、第1バイパス演算部6231は、アクチュエータAC1に対応する余剰演算リソースにより、第2リオーダリング演算部6222から転送されたアクチュエータAC2に対応するリオーダリング情報に基づいてアクチュエータAC2に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第2リオーダリング演算部6222に転送する。
【0096】
一例では、第1バイパス演算部6231は、アクチュエータAC1に対応する余剰演算リソースにより、アクチュエータAC2に対応するリオーダリング情報に基づいてアクチュエータAC2に対応する複数のキューコマンドの内の少なくとも1つの次回処理見込みコマンドのそれぞれの少なくとも1つの次回推定コストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算(計算)結果を第2リオーダリング演算部6222に転送する。言い換えると、第1バイパス演算部6231は、アクチュエータAC1に対応する余剰演算リソースにより、アクチュエータAC2に対応するリオーダリング情報に基づいて、アクチュエータAC2に対応する複数のキューコマンドの内の第2リオーダリング演算部6222で処理しない少なくとも1つの次回処理見込みコマンドのそれぞれの少なくとも1つの次回推定コストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算(計算)結果を第2リオーダリング演算部6222に転送する。なお、第1バイパス演算部6231は、磁気ディスク装置1の振動や消費電力の影響を低減するために、計算したアクセスコスト(次回推定コスト)に重み付け(例えば、所定の値を乗算、又は除算)したり、ヘッドHD2の移動を開始するディスクDKの位置やヘッドHD2を移動させるディスクDKの位置を半径方向にオフセット(例えば、所定の値を加算、又は減算)してアクセスコスト(次回推定コスト)を計算したり、することなどによりアクセスコスト(次回推定コスト)を調整してもよい。
【0097】
一例では、第1バイパス演算部6231は、アクチュエータAC1に対応する余剰演算リソースにより、アクチュエータAC2に対応するリオーダリング情報に基づいてアクチュエータAC2に対応する複数の次々回処理見込みコマンドのそれぞれの複数の次々回推定コストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第2リオーダリング演算部6222に転送する。なお、第1バイパス演算部6231は、アクチュエータAC1に対応する余剰演算リソースにより、第2リオーダリング演算部6222から転送されたアクチュエータAC2に対応するリオーダリング情報と第1リオーダリング演算部6221から入力されたアクチュエータAC2に対応するリオーダリングテーブルとに基づいて、アクチュエータAC2に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第2リオーダリング演算部6222に転送してもよい。第1バイパス演算部6231は、アクチュエータAC1に対応する余剰演算リソースにより、第2リオーダリング演算部6222から転送されたアクチュエータAC2に対応するリオーダリング情報と第1リオーダリング演算部6221から入力された各アクチュエータACに対応するリオーダリングテーブルとに基づいて、アクチュエータAC2に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第2リオーダリング演算部6222に転送してもよい。第1リオーダリング演算部6221及び第1バイパス演算部6231は、例えば、アクチュエータAC1に対応する演算リソースに対応していてもよい。第1バイパス演算部6231は、例えば、アクチュエータAC1に対応する余剰演算リソースに対応していてもよい。第1バイパス演算部6231は、第1リオーダリング演算部6221に含まれていてもよい。また、第1バイパス演算部6231は、磁気ディスク装置1の振動や消費電力の影響を低減するために、計算したアクセスコスト(次々回推定コスト)に重み付け(例えば、所定の値を乗算、又は除算)したり、ヘッドHD2の移動を開始するディスクDKの位置やヘッドHD2を移動させるディスクDKの位置を半径方向にオフセット(例えば、所定の値を加算、又は減算)してアクセスコスト(次回推定コスト)を計算したり、することなどによりアクセスコスト(次回推定コスト)を調整してもよい。
【0098】
第2バイパス演算部6232は、アクチュエータAC2に対応する余剰演算リソースによりバイパス演算処理を実行し、バイパス演算処理の演算結果を転送する。言い換えると、第2バイパス演算部6232は、アクチュエータAC2に対応する演算リソースに空き(余剰演算リソース)がある場合、アクチュエータAC1に対応するリオーダリング演算処理(又はリオーダリング演算処理の一部の演算処理に相当するバイパス演算処理)を実行する。例えば、第2バイパス演算部6232は、アクチュエータAC2に対応する余剰演算リソースにより、第1リオーダリング演算部6221から転送されたアクチュエータAC1に対応するリオーダリング情報に基づいてアクチュエータAC1に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第1リオーダリング演算部6221に転送する。
【0099】
一例では、第2バイパス演算部6232は、アクチュエータAC2に対応する余剰演算リソースにより、アクチュエータAC1に対応するリオーダリング情報に基づいてアクチュエータAC1に対応する複数のキューコマンドの内の少なくとも1つの次回処理見込みコマンドのそれぞれの少なくとも1つの次回推定コストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算(計算)結果を第1リオーダリング演算部6221に転送する。言い換えると、第2バイパス演算部6232は、アクチュエータAC2に対応する余剰演算リソースにより、アクチュエータAC1に対応するリオーダリング情報に基づいて、アクチュエータAC1に対応する複数のキューコマンドの内の第1リオーダリング演算部6221で処理しない少なくとも1つの次回処理見込みコマンドのそれぞれの少なくとも1つの次回推定コストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算(計算)結果を第1リオーダリング演算部6221に転送する。なお、第2バイパス演算部6232は、磁気ディスク装置1の振動や消費電力の影響を低減するために、計算したアクセスコスト(次々回推定コスト)に重み付け(例えば、所定の値を乗算、又は除算)したり、ヘッドHD1の移動を開始するディスクDKの位置やヘッドHD1を移動させるディスクDKの位置を半径方向にオフセット(例えば、所定の値を加算、又は減算)してアクセスコスト(次々回推定コスト)を計算したり、することなどによりアクセスコスト(次々回推定コスト)を調整してもよい。
【0100】
一例では、第2バイパス演算部6232は、アクチュエータAC2に対応する余剰演算リソースにより、アクチュエータAC1に対応するリオーダリング情報に基づいてアクチュエータAC1に対応する複数の次々回処理見込みコマンドのそれぞれの複数の次々回推定コストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第1リオーダリング演算部6221に転送する。なお、第2バイパス演算部6232は、アクチュエータAC2に対応する余剰演算リソースにより、第1リオーダリング演算部6221から転送されたアクチュエータAC1に対応するリオーダリング情報と第2リオーダリング演算部6222から入力されたアクチュエータAC1に対応するリオーダリングテーブルとに基づいて、アクチュエータAC1に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第1リオーダリング演算部6221に転送してもよい。第2バイパス演算部6232は、アクチュエータAC2に対応する余剰演算リソースにより、第1リオーダリング演算部6221から転送されたアクチュエータAC1に対応するリオーダリング情報と第2リオーダリング演算部6222から入力された各アクチュエータACに対応するリオーダリングテーブルとに基づいて、アクチュエータAC1に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第1リオーダリング演算部6221に転送してもよい。第2リオーダリング演算部6222及び第2バイパス演算部6232は、例えば、アクチュエータAC2に対応する演算リソースに対応していてもよい。第2バイパス演算部6232は、例えば、アクチュエータAC2に対応する余剰演算リソースに対応していてもよい。第2バイパス演算部6232は、第2リオーダリング演算部6222に含まれていてもよい。また、第2バイパス演算部6232は、磁気ディスク装置1の振動や消費電力の影響を低減するために、計算したアクセスコスト(次々回推定コスト)に重み付け(例えば、所定の値を乗算、又は除算)したり、ヘッドHD1の移動を開始するディスクDKの位置やヘッドHD1を移動させるディスクDKの位置を半径方向にオフセット(例えば、所定の値を加算、又は減算)してアクセスコスト(次々回推定コスト)を計算したり、することなどによりアクセスコスト(次々回推定コスト)を調整してもよい。
【0101】
図10は、キューQnに格納したキューコマンドの処理方法の一例を示す模式図である。図10には、ホスト100及び磁気ディスク装置1を示している。図10において、磁気ディスク装置1は、HDC60及びヘッドHDを含む。図10では、HDC60は、サーボ制御部610、及びコマンド制御部620を含む。図10において、コマンド制御部620は、所定のアクチュエータAC、例えば、アクチュエータAC1又はAC2に対応するキューQnを有している。図10において、横軸は、時間を示している。図10では、時間の横軸の矢印の先端に向かって時間が経過する。図10には、時間t0、及び時間t4を示している。時間t4は、時間t0よりも遅い(後の)時間に相当する。図10において、コマンドCmdn、Cmdn+1、Cmdn+2、Cmdn+3、及びCmdn+4は、所定のアクチュエータACに対応するコマンドである。コマンドCmdnは、コマンドCmdn+1よりも早く(前に)ホスト100からコマンド制御部620に転送されて所定のアクチュエータACのキューQnに格納されたキューコマンドに相当する。コマンドCmdn+1は、コマンドCmdn+2よりも早く(前に)ホスト100からコマンド制御部620に転送されて所定のアクチュエータACのキューQnに格納されたキューコマンドに相当する。コマンドCmdn+2は、コマンドCmdn+3よりも早く(前に)ホスト100からコマンド制御部620に転送されて所定のアクチュエータACのキューQnに格納されたキューコマンドに相当する。コマンドCmdn+3は、コマンドCmdn+4よりも早く(前に)ホスト100からコマンド制御部620に転送されて所定のアクチュエータACのキューQnに格納されたキューコマンドに相当する。図10では、所定のアクチュエータACに対応するキューQnのQDは、4である。
【0102】
図10に示した例では、磁気ディスク装置1は、キューコマンドCmdn、Cmdn+1、及びCmdn+2にリオーダリング演算処理を実行し、最低コストコマンドとして選択したキューコマンドCmdn+1を処理する。磁気ディスク装置1は、キューコマンドCmdn+1に基づいて、所定のアクチュエータAC、例えば、アクチュエータAC1(又はアクチュエータAC2)に対応するヘッドHDのシーク動作の制御を開始し、ヘッドHD、例えば、ヘッドHD1(又はヘッドHD2)が現在配置されているトラック(以下、現在のトラックと称する場合もある)のセクタ(以下、現在のセクタと称する場合もある)からキューコマンドCmdn+1で指定される所定のトラックの所定のセクタにヘッドHDのシーク動作を開始する。磁気ディスク装置1は、現在のトラックからキューコマンドCmdn+1で指定される所定のトラックにヘッドHDをシークした際に所定のセクタにヘッドHDを位置決めするために回転待ちをし、所定のセクタにヘッドHDを位置決めした際にキューコマンドCmdn+1で指定されるデータをこのセクタにライトする、又はキューコマンドCmdn+1で指定されるこのセクタにライトされたデータをリードする。
【0103】
磁気ディスク装置1は、キューコマンドCmdn+1を処理している時間t0に、ホスト100から転送された所定のアクチュエータACに対応するコマンドCmdn+2を受ける。磁気ディスク装置1は、所定のアクチュエータACに対応するキューQnのQDが4であり、且つ所定のアクチュエータACに対応するキューコマンド数が3であるため、ホスト100から受けたアクチュエータACに対応するコマンドCmdn+3を所定のアクチュエータACに対応するキューQnに格納する。磁気ディスク装置1は、キューコマンドCmdn+1を処理している際に、キューコマンドCmdn、Cmdn+2、及びCmdn+3にリオーダリング演算処理を実行し、最低コストコマンドとしてCmdnを選択する。
【0104】
磁気ディスク装置1は、キューコマンドCmdn+1の処理が完了した後の時間t4に、Cmdnの処理を開始する。磁気ディスク装置1は、キューコマンドCmdnに基づいて、所定のアクチュエータACに対応するヘッドHDのシーク動作の制御を開始し、ヘッドHDが現在のセクタからキューコマンドCmdnで指定される所定のトラックの所定のセクタにヘッドHDのシーク動作を開始する。
【0105】
磁気ディスク装置1は、キューコマンドCmdnを処理している際に、ホスト100から転送された所定のアクチュエータACに対応するコマンドCmdn+4を受ける。磁気ディスク装置1は、所定のアクチュエータACに対応するキューQnのQDが4であり、且つ所定のアクチュエータACに対応するキューコマンド数が3であるために、ホスト100から受けた所定にアクチュエータACに対応するコマンドCmdn+4を所定のアクチュエータACに対応するキューQnに格納する。
【0106】
図11は、図10に示したキューコマンドに対するリオーダリング演算処理の一例を示す模式図である。図11において、HDC60は、コマンド制御部620を含む。図11では、コマンド制御部620は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)を含む。図11において、横軸は、時間を示し、縦軸は、アクセスコストの計算処理の数(以下、アクセスコスト計算数と称する場合もある)を示している。図11の横軸において、時間は、横軸の矢印の先端に進むに従って時間が経過する。図11の横軸には、時間t0、時間t1、時間t3、及び時間t4を示している。図11において、時間t0は、図10に示した時間t0に対応し、時間t4は、図10に示した時間t4に対応する。図11では、時間t1は、時間t0よりも遅い(後の)時間に相当し、時間t3は、時間t1よりも遅い(後の)時間に相当し、時間t4は、時間t3よりも遅い(後の)時間に相当する。図11において、時間間隔OHT1は、時間t0及び時間t1の時間間隔に相当し、時間間隔CPT1は、時間t3及び時間t4の時間間隔に相当する。時間間隔OHT1は、オーバーヘッドが生じている時間に相当する。時間間隔CPT1は、所定のアクチュエータAC、例えば、アクチュエータAC1(又はアクチュエータAC2)に対応する複数の次回処理見込みコマンドから次回処理コマンドを選択している時間に相当する。図11の縦軸において、アクセスコスト計算数は、縦軸の矢印の先端に進むに従って大きくなる。図11の縦軸には、アクセスコスト計算数N1を示している。図11において、アクセスコスト計算数N1は、時間t1から時間t3の間に第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)により計算可能なアクセスコスト計算数に相当する。図11には、時間に対するアクセスコスト計算数の変化(以下、単に、アクセスコスト計算数の変化と称する場合もある)RCL1を示している。図11には、HDC60を示している。
【0107】
図11に示した例では、第1リオーダリング演算部6221(又は第2リオーダリング演算部6222)は、図10に示したようにホスト100からアクチュエータAC1(又は、アクチュエータAC2)に対応するコマンドCmdn+3を時間t0に受けて、時間t0から時間間隔OHT1後の時間t1までオーバーヘッドが生じる。第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、時間t1から時間t3まで、アクチュエータAC1(又はアクチュエータAC2)に対応するリオーダリング情報に基づいて、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次回推定コスト及び複数の次々回推定コストをアクセスコスト計算数N1分計算する。例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、時間t1から時間t3の間に計算可能なアクセスコスト計算数N1では、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次回推定コスト及び複数の次々回推定コストの全ての計算処理を完了できない可能性がある。
【0108】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクセスコスト計算数N1分の次回推定コスト及び次々回推定コストの計算処理を完了した時間t3から時間間隔CPT1の後の時間t4まで、アクセスコスト計算数N1分の次回推定コスト及び次々回推定コストに基づいて、複数の次回処理見込みコマンド、例えば、キューコマンドCmdn、Cmdn+1、及びCmdn+2から次回処理コマンド(低コストコマンド又は最低コストコマンド)としてキューコマンドCmdnを選択する。
【0109】
図12は、所定のアクチュエータACに対応するリオーダリングテーブルROTの一例を示す模式図である。図12に示した例では、縦軸は、シーク時間を示し、横軸は、シーク距離を示している。図12の縦軸において、シーク時間は、縦軸の矢印の先端に進むに従って時間が経過する。図12の横軸において、シーク距離は、横軸の矢印の先端に進むに従って大きくなる。図12は、シーク距離に対するシーク時間の変化(以下、単に、シーク時間の変化と称する場合もある)STLを示している。図12では、シーク時間の変化STLは、連続した曲線であるが、離散的に配置された複数の点の集合であってもよい。
【0110】
HDC60(第1リオーダリング演算部6221、第2リオーダリング演算部6222、第1バイパス演算部6231、及び第2バイパス演算部6232等)は、図12に示した所定のアクチュエータAC、例えば、アクチュエータAC1又はAC2に対応するリオーダリングテーブルROTに基づいて、所定のアクチュエータACに対応する複数のキューコマンドにリオーダリング演算処理を実行する。例えば、HDC60は、図12に示した所定のアクチュエータACに対応するリオーダリングテーブルROT、及び所定のアクチュエータACに対応するヘッドHDの所定の位置から所定のアクチュエータACに対応する複数のキューコマンドでそれぞれ指定されるディスクDKの複数の位置までのそれぞれの複数の距離(シーク距離)の情報等のリオーダリング情報に基づいて、所定のアクチュエータACに対応するヘッドHDの所定の位置から所定のアクチュエータACに対応する複数のキューコマンドでそれぞれ指定される複数の位置までのそれぞれの複数のアクセスコスト(シーク時間)をそれぞれ計算する。なお、図12に示したリオーダリングテーブルROTのシーク時間の変化STLが離散的に配置された複数の点の集合である場合、HDC60は、図12に示したシーク時間の変化STLにおいて所定のアクチュエータACに対応するヘッドHDの所定の位置から所定のアクチュエータACに対応する複数のキューコマンドでそれぞれ指定されるディスクDKの複数の位置までのそれぞれの距離(シーク距離)に対応するシーク時間を補間計算(例えば、線形補間計算、又は多項式近似計算等)で算出してもよい。
【0111】
図13は、リオーダリング演算処理の一例を示す模式図である。図13には、HDC60(コマンド制御部620)を示している。HDC60(コマンド制御部620)は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)を含む。図13において、Pos0は、所定のアクチュエータ、例えば、アクチュエータAC1又はAC2に対応するヘッドHD、例えば、ヘッドHD1又はHD2の位置(セクタ)に相当する。図13には、所定のアクチュエータACに対応するキューに格納された次回処理見込みコマンドCmdA、CmdB、CmdC、及びCmdDを示している。図13において、次回推定コストT0aは、位置(セクタ)Pos0から次回処理見込みコマンドCmdAで指定される位置(セクタ)までのアクセスコストに相当する。次回推定コストT0bは、位置(セクタ)Pos0から次回処理見込みコマンドCmdAで指定される位置(セクタ)までのアクセスコストに相当する。次回推定コストT0cは、位置(セクタ)Pos0から次回処理見込みコマンドCmdCで指定される位置(セクタ)までのアクセスコストに相当する。図13において、PosCは、次回処理見込みコマンドCmdCを次回処理コマンドとして処理した場合の所定のアクチュエータAC、例えば、アクチュエータAC1又はAC2に対応するヘッドHD、例えば、ヘッドHD1又はHD2の位置(セクタ)に相当する。図13において、次回推定コストTcaは、位置(セクタ)PosCから次回処理見込みコマンドCmdAで指定される位置(セクタ)PosAまでのアクセスコストに相当する。次回推定コストTcbは、位置(セクタ)PosCから次回処理見込みコマンドCmdBで指定される位置(セクタ)PosBまでのアクセスコストに相当する。次回推定コストTcdは、位置(セクタ)PosCから次回処理見込みコマンドCmdDで指定される位置(セクタ)PosDまでのアクセスコストに相当する。
【0112】
図13に示した例では、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又はヘッドHD2)の位置Pos0からアクチュエータAC1(又はアクチュエータAC2)に対応する次回処理見込みコマンドCmdA、CmdB、及びCmdCのそれぞれの次回推定コストT0a、T0b、及びT0cをそれぞれ計算する。第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、これら次回処理見込みコマンドCmdA、CmdB、及びCmdCのそれぞれの複数の次回推定コストT0a、T0b、及びT0cのそれぞれの計算結果に基づいて、これら次回処理見込みコマンドから次回処理コマンド(低コストコマンド又は最低コストコマンド)としてキューコマンドCmdCを選択し、選択したキューコマンドCmdCの順番を次の順番にリオーダリングする。
【0113】
図13に示した例では、キューコマンドCmdCを処理した後に、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又はヘッドHD2)の位置PosCからアクチュエータAC1(又はアクチュエータAC2)に対応する次回処理見込みコマンドCmdA、CmdB、及びCmdDのそれぞれの次回推定コストTca、Tcb、及びTcdをそれぞれ計算する。
【0114】
図14は、リオーダリング演算処理の一例を示す模式図である。図14には、HDC60(コマンド制御部620)を示している。HDC60(コマンド制御部620)は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)を含む。図14において、キューコマンドCmdA、CmdB、CmdC、及びCmdDは、それぞれ、次回処理見込みコマンド又は次々回処理見込みコマンドに相当する。図14において、次々回推定コストTabは、位置(セクタ)PosAから位置(セクタ)PosBまでのアクセスコストに相当する。次々回推定コストTacは、位置(セクタ)PosAから位置(セクタ)PosCまでのアクセスコストに相当する。次々回推定コストTbaは、位置(セクタ)PosBから位置(セクタ)PosAまでのアクセスコストに相当する。次々回推定コストTbcは、位置(セクタ)PosBから位置(セクタ)PosCまでのアクセスコストに相当する。次々回推定コストTcaは、位置(セクタ)PosCから位置(セクタ)PosAまでのアクセスコストに相当する。次々回推定コストTcbは、位置(セクタ)PosCから位置(セクタ)PosBまでのアクセスコストに相当する。次々回推定コストTadは、位置(セクタ)PosAから位置(セクタ)PosDまでのアクセスコストに相当する。次々回推定コストTbdは、位置(セクタ)PosBから位置(セクタ)PosDまでのアクセスコストに相当する。次々回推定コストTdaは、位置(セクタ)PosDから位置(セクタ)PosAまでのアクセスコストに相当する。次々回推定コストTdbは、位置(セクタ)PosDから位置(セクタ)PosBまでのアクセスコストに相当する。
【0115】
図14に示した例では、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又は、ヘッドHD2)の位置Pos0からアクチュエータAC1(又は、アクチュエータAC2)に対応する次回処理見込みコマンドCmdA、CmdB、及びCmdCのそれぞれの次回推定コストT0a、T0b、及びT0cをそれぞれ計算する。第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、複数の次回処理見込みコマンドCmdA、CmdB、及びCmdCでそれぞれ指定されるディスクDKの複数の位置から次々回処理見込みコマンドCmdA、CmdB、及びCmdCでそれぞれ指定されるディスクDKの複数の位置までの複数の次々回推定コストTab、Tac、Tba、Tbc、Tca、及びTcbをそれぞれ計算する。
【0116】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、これら次回推定コスト及びこれら次々回推定コストの計算処理の結果に基づいて、複数の次回推定コストとこれら次回推定コストにそれぞれ対応する複数の次々回推定コストとそれぞれ足した総和(以下、トータルコストと称する場合もある)を算出する。
【0117】
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストT0abを算出する。
T0ab = k1×T0a + k2×Tab (1)
ここで、k1、k2は、それぞれ、重み付け係数である。k1及びk2は、同じであってもよいし、異なっていてもよい。なお、k1、k2は、なくともよい。
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストT0acを算出する。
T0ac = k1×T0a + k2×Tac (2)
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストT0baを算出する。
T0ba = k1×T0b + k2×Tba (3)
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストT0bcを算出する。
T0bc = k1×T0b + k2×Tbc (4)
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストT0caを算出する。
T0ca = k1×T0c + k2×Tca (5)
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストT0cbを算出する。
T0cb = k1×T0c + k2×Tcb (6)
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、式(1)乃至式(6)で示した複数のトータルコストの内の最も小さいトータルコスト(以下、最低トータルコストと称する場合もある)T0caに対応する次回処理見込みコマンドCmdCを次回処理コマンド(低コストコマンド又は最低コストコマンド)として選択し、選択したキューコマンドCmdCの順番を次の順番にリオーダリングする。
【0118】
図14に示した例では、キューコマンドCmdCを処理した後に、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、キューコマンドCmdCを選択したリオーダリング演算処理で算出したアクセスコストTca、Tcb、Tab、及びTba以外のアクセスコストを計算する。
【0119】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又は、ヘッドHD2)の位置PosCからアクチュエータAC1(又は、アクチュエータAC2)に対応する次回処理見込みコマンドCmdDの次回推定コストTcdを計算する。
【0120】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、次回処理見込みコマンドCmdAで指定される位置から次々回処理見込みコマンドCmdDで指定される位置までの次々回推定コストTadを計算する。第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、次回処理見込みコマンドCmdBで指定される位置から次々回処理見込みコマンドCmdDで指定される位置までの次々回推定コストTbdを計算する。第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、次回処理見込みコマンドCmdDで指定される位置から次々回処理見込みコマンドCmdA及びCmdBでそれぞれ指定されるディスクDKの複数の位置までの複数の次々回推定コストTda及びTdbをそれぞれ計算する。
【0121】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、これら次回推定コスト及びこれら次々回推定コストの計算処理の結果に基づいて、複数の次回推定コストと複数の次々回推定コストとをそれぞれ足した総和(トータルコスト)を算出する。
【0122】
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストTcabを算出する。
Tcab = k1×Tca + k2×Tab (7)
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストTcadを算出する。
Tcad = k1×Tca + k2×Tad (8)
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストTcbaを算出する。
Tcba = k1×Tcb + k2×Tba (9)
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストTcbdを算出する。
Tcbd = k1×Tcb + k2×Tbd (10)
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストTcdaを算出する。
Tcda = k1×Tcd + k2×Tda (11)
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、以下の式よりトータルコストT0cbを算出する。
Tcdb = k1×Tcd + k2×Tdb (12)
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、式(7)乃至式(12)の複数のトータルコストの内の最も小さいトータルコスト(以下、最低トータルコストと称する場合もある)Tcbdに対応する次回処理見込みコマンドCmdBを次回処理コマンド(最低コストコマンド)として選択し、選択したキューコマンドCmdBの順番を次の順番にリオーダリングする。
【0123】
図15は、図10に示したキューコマンドに対するバイパス演算処理の一例を示す模式図である。図15には、HDC60を示している。図15において、HDC60は、コマンド制御部620を含む。図15では、コマンド制御部620は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)と、第2バイパス演算部632(又は、第1バイパス演算部6231)を含む。図15において、横軸は、時間を示し、縦軸は、アクセスコスト計算数を示している。図15の横軸において、時間の矢印の先端に進むに従って時間が経過する。図15の横軸には、時間t0、時間t1、時間t2、時間t3、及び時間t4を示している。図15において、時間t0は、図10に示した時間t0に対応し、時間t1は、図11に示した時間t1に対応し、時間t3は、図11に示した時間t3に対応し、時間t4は、図10に示した時間t4に対応する。図15では、時間t2は、時間t1よりも遅い(後の)時間に相当し、時間t3は、時間t2よりも遅い(後の)時間に相当する。図15において、時間間隔CMT1は、時間t1及び時間t2の時間間隔に相当する。時間間隔CMT1は、通信処理の時間に相当する。図15の縦軸において、アクセスコスト計算数は、縦軸の矢印の先端に進むに従って大きくなる。図15の縦軸には、アクセスコスト計算数N1及びN2を示している。アクセスコスト計算数N2は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)及び第2バイパス演算部(又は、第1バイパス演算部)によるアクセスコスト計算数の総和に相当する。アクセスコスト計算数N2は、アクセスコスト計算数N1よりも大きい。図15には、アクセスコスト計算数の変化RCL1及びRCL2を示している。
【0124】
図15に示した例では、第1リオーダリング演算部6221(又は第2リオーダリング演算部6222)は、図10に示したようにホスト100からアクチュエータAC1(又は、アクチュエータAC2)に対応するコマンドCmdn+3を時間t0に受けて、時間t0から時間間隔OHT1後の時間t1までオーバーヘッドが生じる。第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、時間t1から時間t3まで、アクチュエータAC1(又はアクチュエータAC2)に対応するリオーダリング情報に基づいて、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次回推定コストをアクセスコスト計算数N1分計算する。例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、時間t1から時間t3の間に計算可能なアクセスコスト計算数N1で、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次回推定コストの計算処理を完了できる。
【0125】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクセスコスト計算数N1分の次回推定コストを完了した時間t3から時間間隔CPT1の後の時間t4まで、アクセスコスト計算数N1分の次回推定コストに基づいて、複数の次回処理見込みコマンド、例えば、キューコマンドCmdn、Cmdn+1、及びCmdn+2から次回処理コマンド(低コストコマンド又は最低コストコマンド)としてキューコマンドCmdnを選択する。
【0126】
図15に示した例では、第2バイパス演算部6232(又は、第1バイパス演算部6231)は、時間t0から時間間隔OHT1後の時間t1までオーバーヘッドが生じる。第2バイパス演算部6232は、時間t1から時間間隔CMT1後の時間t2までに第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)から転送されたアクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報の通信処理を実行する。第2バイパス演算部6232は、時間t2後に、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次々回推定コストをアクセスコスト計算数N2からアクセスコスト計算数N1を引いた差分値DFV分計算する。例えば、第2バイパス演算部6232(又は、第1バイパス演算部6231)は、時間t2後に計算可能なアクセスコスト計算数DFVで、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次々回推定コストの計算処理を完了できる。
【0127】
第2バイパス演算部6232(又は、第1バイパス演算部6231)は、差分値DFV分の複数の次々回推定コストの計算処理を完了した後に、差分値DFV分の複数の次々回推定コストの計算処理結果を第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)に転送する通信処理を実行する。
【0128】
図16は、図10に示したキューコマンドに対するバイパス演算処理の一例を示す模式図である。図16には、HDC60を示している。図16において、HDC60は、コマンド制御部620を含む。図16では、コマンド制御部620は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)と、第2バイパス演算部632(又は、第1バイパス演算部6231)を含む。図16において、横軸は、時間を示し、縦軸は、アクセスコスト計算数を示している。図16の横軸において、時間の矢印の先端に進むに従って時間が経過する。図16の横軸には、時間t23を示している。図16において、時間t23は、時間t2よりも遅い(後の)時間に相当し、時間t3は、時間t23よりも遅い(後の)時間に相当する。図16において、時間間隔CMT2は、時間t23及び時間t3の時間間隔に相当する。時間間隔CMT2は、通信処理の時間に相当する。図16の縦軸において、アクセスコスト計算数は、縦軸の矢印の先端に進むに従って大きくなる。
【0129】
図16に示した例では、第1リオーダリング演算部6221(又は第2リオーダリング演算部6222)は、図10に示したようにホスト100からアクチュエータAC1(又は、アクチュエータAC2)に対応するコマンドCmdn+3を時間t0に受けて、時間t0から時間間隔OHT1後の時間t1までオーバーヘッドが生じる。第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、時間t1から時間t3まで、アクチュエータAC1(又はアクチュエータAC2)に対応するリオーダリング情報に基づいて、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次回推定コストをアクセスコスト計算数N1分計算する。例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、時間t1から時間t3の間に計算可能なアクセスコスト計算数N1で、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次回推定コストの計算処理を完了できる。
【0130】
第2バイパス演算部6232(又は、第1バイパス演算部6231)は、時間t0から時間間隔OHT1後の時間t1までオーバーヘッドが生じる。第2バイパス演算部6232は、時間t1から時間間隔CMT1後の時間t2までに第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)から転送されたアクチュエータAC1(又は、アクチュエータAC2)に対応するリオ―ダリング情報の通信処理を実行する。第2バイパス演算部6232は、時間t2から時間t23まで、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次々回推定コストをアクセスコスト計算数N2からアクセスコスト計算数N1を引いた差分値DFV分計算する。例えば、第2バイパス演算部6232(又は、第1バイパス演算部6231)は、時間t2後に計算可能なアクセスコスト計算数DFVで、キューコマンドCmdn、Cmdn+2、及びCmdn+3のそれぞれの複数の次々回推定コストの計算処理を完了できる。
【0131】
第2バイパス演算部6232(又は、第1バイパス演算部6231)は、差分値DFV分の複数の次々回推定コストの計算処理を完了した後の時間t23から時間間隔CMT2後の時間t3までに、差分値DFV分の複数の次々回推定コストの計算処理結果を第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)に転送する通信処理を実行する。
【0132】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクセスコスト計算数N1分の次回推定コストの計算処理が完了した時間t3から時間間隔CPT1後の時間t4まで、第2バイパス演算部6232(又は、第1バイパス演算部6231)から受けた差分値DFV分の次々回推定コストの計算処理結果とアクセスコスト計算数N1分の次回推定コストの計算処理結果とに基づいて、アクセスコスト計算数N2分の次回推定コスト及び次々回推定コストに基づいて、複数の次回処理見込みコマンド、例えば、キューコマンドCmdn、Cmdn+1、及びCmdn+2から次回処理コマンド(低コストコマンド又は最低コストコマンド)としてキューコマンドCmdnを選択する。
【0133】
図17は、バイパス演算処理の一例を示す模式図である。図17には、HDC60(コマンド制御部620)を示している。HDC60(コマンド制御部620)は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)と、第2バイパス演算部6232(又は、第1バイパス演算部6231)とを含む。図17において、キューコマンドCmdA、CmdB、CmdC、及びCmdDは、それぞれ、次回処理見込みコマンド又は次々回処理見込みコマンドに相当する。
【0134】
一例では、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、図15に示したように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又はヘッドHD2)の位置Pos0からアクチュエータAC1(又はアクチュエータAC2)に対応する次回処理見込みコマンドCmdA、CmdB、及びCmdCのそれぞれの次回推定コストT0a、T0b、及びT0cをそれぞれ計算する。第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、これら次回処理見込みコマンドのそれぞれの複数の次回推定コストT0a、T0b、及びT0cのそれぞれの計算結果に基づいて、これら次回処理見込みコマンドから次回処理コマンド(低コストコマンド又は最低コストコマンド)としてキューコマンドCmdCを選択し、選択したキューコマンドCmdCの順番を次の順番にリオーダリングする。
【0135】
第2バイパス演算部6232(又は、第1バイパス演算部6231)は、図15に示したように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、複数の次回処理見込みコマンドCmdA、CmdB、及びCmdCでそれぞれ指定されるディスクDKの複数の位置から次々回処理見込みコマンドCmdA、CmdB、及びCmdCでそれぞれ指定されるディスクDKの複数の位置までの次々回推定コストTab、Tac、Tba、Tbc、Tca、及びTcbをそれぞれ計算する。第2バイパス演算部6232(又は、第1バイパス演算部6231)は、図15に示したように、複数の次々回推定コストの計算結果、例えば、次々回推定コストTab、Tac、Tba、Tbc、Tca、及びTcbを第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)に転送する。
【0136】
キューコマンドCmdCを処理した後に、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、キューコマンドCmdCを選択したリオーダリング演算処理中に第2バイパス演算部6232(又は、第1バイパス演算部6231)で算出したアクセスコストTca及びTcb以外のアクセスコストを計算する。
【0137】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、図15に示すように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又はヘッドHD2)の位置PosCからアクチュエータAC1(又はアクチュエータAC2)に対応する次回処理見込みコマンドCmdDの次回推定コストTcdを計算する。第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、複数の次回処理見込みコマンド、例えば、CmdA、CmdB、及びCmdDのそれぞれの複数の次回推定コストTca、Tcb、及びTcdのそれぞれの計算結果に基づいて、これら次回処理見込みコマンドから次回処理コマンド(低コストコマンド又は最低コストコマンド)としてキューコマンドCmdBを選択し、選択したキューコマンドCmdBの順番を次の順番にリオーダリングする。
【0138】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)でキューコマンドCmdCが処理された後に、第2バイパス演算部6232(又は、第1バイパス演算部6231)は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)によりキューコマンドCmdCを選択したリオーダリング演算処理中に算出したアクセスコストTab及びTba以外のアクセスコストを計算する。
【0139】
第2バイパス演算部6232(又は、第1バイパス演算部6231)は、図15に示したように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、次回処理見込みコマンドCmdAで指定される位置から次々回処理見込みコマンドCmdDで指定される位置までの次々回推定コストTadを計算する。第2バイパス演算部6232(又は、第1バイパス演算部6231)は、図15に示したように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、次回処理見込みコマンドCmdBで指定される位置から次々回処理見込みコマンドCmdDで指定される位置までの次々回推定コストTbdを計算する。第2バイパス演算部6232(又は、第1バイパス演算部6231)は、図15に示したように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、次回処理見込みコマンドCmdDで指定される位置から複数の次々回処理見込みコマンドCmdA及びCmdBでそれぞれ指定されるディスクDKの複数の位置までの複数の次々回推定コストTda及びTdbをそれぞれ計算する。
【0140】
一例では、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、図16に示したように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又は、ヘッドHD2)の位置Pos0からアクチュエータAC1(又は、アクチュエータAC2)に対応する次回処理見込みコマンドCmdA、CmdB、及びCmdCのそれぞれの次回推定コストT0a、T0b、及びT0cをそれぞれ計算する。
【0141】
第2バイパス演算部6232(又は、第1バイパス演算部6231)は、図16に示したように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、複数の次回処理見込みコマンドCmdA、CmdB、及びCmdCでそれぞれ指定されるディスクDKの複数の位置から次々回処理見込みコマンドCmdA、CmdB、及びCmdCでそれぞれ指定されるディスクDKの複数の位置までの複数の次々回推定コストTab、Tac、Tba、Tbc、Tca、及びTcbをそれぞれ計算する。第2バイパス演算部6232(又は、第1バイパス演算部6231)は、図16に示したように、複数の次々回推定コストの計算結果、例えば、次々回推定コストTab、Tac、Tba、Tbc、Tca、及びTcbを第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)に転送する。
【0142】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、複数の次回推定コストと第2バイパス演算部6232(又は、第1バイパス演算部6231)から受けた複数の次々回推定コストとの計算結果に基づいて、複数の次回推定コストと複数の次回推定コストにそれぞれ対応する複数の次々回推定コストとそれぞれ足した総和(トータルコスト)を算出する。
【0143】
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、式(1)乃至式(6)で示した複数のトータルコストの内の最も小さいトータルコスト(以下、最低トータルコストと称する場合もある)T0caに対応する次回処理見込みコマンドCmdCを次回処理コマンド(低コストコマンド又は最低コストコマンド)として選択し、選択したキューコマンドCmdCの順番を次の順番にリオーダリングする。
【0144】
キューコマンドCmdCを処理した後に、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、キューコマンドCmdCを選択したリオーダリング演算処理で算出したアクセスコストTca及びTcb以外のアクセスコストを計算する。
【0145】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、図16に示したように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又は、ヘッドHD2)の位置PosCからアクチュエータAC1(又は、アクチュエータAC2)に対応する次回処理見込みコマンドCmdDの次回推定コストTcdを計算する。
【0146】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)でキューコマンドCmdCが処理された後に、第2バイパス演算部6232(又は、第1バイパス演算部6231)は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)によりキューコマンドCmdCを選択したリオーダリング演算処理中に算出したアクセスコストTab及びTba以外のアクセスコストを計算する。
【0147】
第1バイパス演算部6231(又は、第2バイパス演算部6232)は、図16に示したように、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、次回処理見込みコマンドCmdAで指定される位置から次々回処理見込みコマンドCmdDで指定される位置までの次々回推定コストTadを計算する。第1バイパス演算部6231(又は、第2バイパス演算部6232)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、次回処理見込みコマンドCmdBで指定される位置から次々回処理見込みコマンドCmdDで指定される位置までの次々回推定コストTbdを計算する。第1バイパス演算部6231(又は、第2バイパス演算部6232)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、次回処理見込みコマンドCmdDで指定される位置から次々回処理見込みコマンドCmdA及びCmdBでそれぞれ指定されるディスクDKの複数の位置までの複数の次々回推定コストTda及びTdbをそれぞれ計算する。第2バイパス演算部6232(又は、第1バイパス演算部6231)は、図16に示したように、複数の次々回推定コストの計算結果、例えば、次々回推定コストTad、Tbd、Tda、及びTdbを第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)に転送する。
【0148】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、これら次回推定コスト及びこれら次々回推定コストの計算処理の結果に基づいて、複数の次回推定コストと複数の次々回推定コストとをそれぞれ足した総和(トータルコスト)を算出する。
【0149】
例えば、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、式(7)乃至式(12)で示した複数のトータルコストの内の最も小さいトータルコスト(以下、最低トータルコストと称する場合もある)Tcbdに対応する次回処理見込みコマンドCmdBを次回処理コマンド(最低コストコマンド)として選択し、選択したキューコマンドCmdBの順番を次の順番にリオーダリングする。
【0150】
図18は、バイパス演算処理の一例を示す模式図である。図18には、HDC60(コマンド制御部620)を示している。HDC60(コマンド制御部620)は、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)と、第2バイパス演算部6232(又は、第1バイパス演算部6231)とを含む。図18において、キューコマンドCmdA、CmdB、及びCmdCは、それぞれ、次回処理見込みコマンドに相当する。
【0151】
図18に示した例では、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又はヘッドHD2)の位置Pos0からアクチュエータAC1(又はアクチュエータAC2)に対応する次回処理見込みコマンドCmdA及びCmdBのそれぞれの次回推定コストT0a及びT0bをそれぞれ計算する。
【0152】
第2バイパス演算部6232(又は、第1バイパス演算部6231)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又はヘッドHD2)の位置Pos0からアクチュエータAC1(又はアクチュエータAC2)に対応する次回処理見込みコマンドCmdCの次回推定コストT0cを計算する。第2バイパス演算部6232(又は、第1バイパス演算部6231)は、次回推定コストの計算結果、例えば、次回推定コストT0cを第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)に転送する。
【0153】
第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、これら次回処理見込みコマンドCmdA、CmdB、及びCmdCのそれぞれの複数の次回推定コストT0a、T0b、及びT0cのそれぞれの計算結果に基づいて、これら次回処理見込みコマンドから次回処理コマンド(低コストコマンド又は最低コストコマンド)としてキューコマンドCmdCを選択し、選択したキューコマンドCmdCの順番を次の順番にリオーダリングする。
【0154】
図18に示した例では、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又はヘッドHD2)の位置PosCからアクチュエータAC1(又はアクチュエータAC2)に対応する次回処理見込みコマンドCmdA及びCmdBのそれぞれの次回推定コストTca及びTcbをそれぞれ計算する。
【0155】
第2バイパス演算部6232(又は、第1バイパス演算部6231)は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、ヘッドHD1(又はヘッドHD2)の位置PosCからアクチュエータAC1(又はアクチュエータAC2)に対応する次回処理見込みコマンドCmdDの次回推定コストTcdを計算する。第2バイパス演算部6232(又は、第1バイパス演算部6231)は、次回推定コストの計算結果、例えば、次回推定コストTcdを第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)に転送する。
【0156】
図19は、本実施形態に係るリオーダリング演算処理の方法の一例を示すフローチャートである。
システムコントローラ130は、複数のアクチュエータACにそれぞれ対応する複数のキューコマンド数をカウントする(B1901)。例えば、システムコントローラ130は、アクチュエータAC1に対応するキューコマンド数と、アクチュエータAC2に対応するキューコマンド数とをそれぞれカウントする。システムコントローラ130は、複数のアクチュエータACにそれぞれ対応する複数のキューコマンド数のレベルをそれぞれ判定する(B1902)。システムコントローラ130は、複数のアクチュエータACにそれぞれ対応する複数のキューコマンド数のレベルに基づいてバイパス演算処理が有効か無効かを判定する(B1903)。バイパス演算処理が有効でない、つまり、無効であると判定した場合(B1903のNO)、システムコントローラ130は、処理を終了する。バイパス演算処理が有効であると判定した場合(B1903のYES)、システムコントローラ130は、リオーダリング情報を転送する(B1904)。例えば、アクチュエータAC2(又は、アクチュエータAC1)に対応する余剰演算リソースによるバイパス演算処理が有効であると判定した場合、システムコントローラ130は、アクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報を第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)から第2バイパス演算部6232(又は、第1バイパス演算部6231)に転送する。システムコントローラ130は、バイパス演算処理を実行する(B1905)。例えば、システムコントローラ130は、アクチュエータAC2(又は、アクチュエータAC1)に対応する余剰演算リソースにより、第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)から転送されたアクチュエータAC1(又は、アクチュエータAC2)に対応するリオーダリング情報に基づいて、アクチュエータAC1(又は、アクチュエータAC2)に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行する。システムコントローラ130は、バイパス演算処理の演算結果を転送し(B1906)、処理を終了する。例えば、第2バイパス演算部6232(又は、第1バイパス演算部6231)でバイパス演算処理を実行した場合、システムコントローラ130は、第2バイパス演算部6232(又は、第1バイパス演算部6231)で実行したバイパス演算処理の演算結果を第1リオーダリング演算部6221(又は、第2リオーダリング演算部6222)に転送する。
【0157】
本実施形態によれば、磁気ディスク装置1は、複数のアクチュエータACを有している。磁気ディスク装置1は、複数のアクチュエータACにそれぞれ対応するキューコマンド数をカウントする。磁気ディスク装置1は、複数のアクチュエータACにそれぞれ対応する複数のキューコマンド数のレベルをそれぞれ判定する。磁気ディスク装置1は、複数のアクチュエータACにそれぞれ対応する複数のキューコマンド数のレベルに基づいてバイパス演算処理が有効か無効かを判定する。複数のアクチュエータの内のキューコマンド数のレベルが低レベルであるアクチュエータACに対応する余剰演算リソースを使用したバイパス演算処理が有効であると判定した場合、磁気ディスク装置1は、複数のアクチュエータの内のキューコマンド数のレベルが高レベルであるアクチュエータACに対応するリオーダリング情報をキューコマンド数のレベルが低レベルであるアクチュエータACの余剰演算リソースに転送する。磁気ディスク装置1は、キューコマンド数のレベルが高レベルであるアクチュエータACに対応するリオーダリング情報に基づいてキューコマンド数のレベルが低レベルであるアクチュエータACの余剰演算リソースによりバイパス演算処理を実行する。磁気ディスク装置1は、キューコマンド数のレベルが低レベルであるアクチュエータACの余剰演算リソースによるバイパス演算処理の演算結果をキューコマンド数のレベルが高レベルであるアクチュエータACの演算リソースに転送する。磁気ディスク装置1は、所定の時間内におけるアクセスコスト計算数を増加させることができる。そのため、磁気ディスク装置1は、アクセス性能を向上することができる。
【0158】
次に、第1実施形態の変形例に係る磁気ディスク装置について説明する。変形例において、前述の実施形態と同一の部分には同一の参照符号を付してその詳細な説明を省略する。
(変形例1)
変形例1の磁気ディスク装置1の構成は、前述した第1実施形態の構成と異なる。
図20は、変形例1に係る磁気ディスク装置1の構成の一例を示す模式図である。
磁気ディスク装置1は、コントローラ通信部150をさらに備えている。
ドライバIC20は、ドライバIC20A及び20Bを有している。ドライバIC20Aは、例えば、SPM13及びVCM141の駆動を制御する。ドライバIC20Aは、SPM13及びVCM141に電気的に接続されている。ドライバIC20Aは、SPM制御部210と、第1VCM制御部221と、第1MA制御部231とを備えている。なお、ドライバIC20Aは、SPM13の駆動を制御できなくともよい。SPM13の駆動を制御しない場合、ドライバIC20Aは、SPM13に電気的に接続されていなくともよく、且つSPM制御部210を備えていなくともよい。ドライバIC20Bは、例えば、VCM142の駆動を制御する。第2VCM制御部222と、第2MA制御部232とを備えている。ドライバIC20Bは、VCM142に電気的に接続されている。なお、ドライバIC20Bは、SPM13の駆動を制御してもよい。SPM13の駆動を制御する場合、ドライバIC20Bは、SPM13に電気的に接続されていてもよく、且つSPM制御部210を備えていてもよい。
【0159】
ヘッドアンプIC30は、ヘッドアンプIC30A及び30Bを有している。ヘッドアンプIC30Aは、例えば、ディスクDK1からリードされたリード信号を増幅して、後述するシステムコントローラ130A(詳細には、後述するR/Wチャネル40A)に出力する。ヘッドアンプIC30Aは、例えば、ヘッドHD1に電気的に接続されている。ヘッドアンプIC30Aは、R/Wチャネル40Aから出力される信号に応じたライト電流をヘッドHD1に出力する。ヘッドアンプIC30Aは、第1リードヘッド選択部321と、第1リード信号検出部331とを備えている。ヘッドアンプIC30Bは、例えば、ディスクDK2からリードされたリード信号を増幅して、後述するシステムコントローラ130B(詳細には、後述するR/Wチャネル40B)に出力する。ヘッドアンプIC30Bは、例えば、ヘッドHD2に電気的に接続されている。ヘッドアンプIC30Bは、R/Wチャネル40Bから出力される信号に応じたライト電流をヘッドHD2に出力する。ヘッドアンプIC30Bは、第2リードヘッド選択部322と、第2リード信号検出部332とを備えている。
【0160】
システムコントローラ130は、システムコントローラ130A及び130Bを有している。システムコントローラ130Aは、R/Wチャネル40に含まれるR/Wチャネル40Aと、MPU50に含まれるMPU50Aと、HDC60に含まれるHDC60Aとを含む。
【0161】
システムコントローラ130Aは、ドライバIC20A、ヘッドアンプIC30A、揮発性メモリ70、バッファメモリ80、不揮発性メモリ90、ホスト100、及びコントローラ通信部150に電気的に接続されている。なお、システムコントローラ130Aは、SPM制御部210、第1VCM制御部221、第1MA制御部231、第1リードヘッド選択部321、及び第1リード信号検出部331を有していてもよい。システムコントローラ130Aは、ドライバIC20A及びヘッドアンプIC30Aを含んでいてもよい。また、システムコントローラ130Aは、揮発性メモリ70、バッファメモリ80、及び不揮発性メモリ90に接続されていなくともよい。
【0162】
R/Wチャネル40Aは、R/Wチャネル40に含まれている。R/W40Aは、後述するMPU50Aからの指示に応じて、ディスクDK1からホスト100に転送されるリードデータ及びホスト100から転送されるライトデータの信号処理を実行する。R/Wチャネル40Aは、例えば、ヘッドアンプIC30A、MPU50A、及びHDC60A等に電気的に接続されている。
【0163】
MPU50Aは、ドライバIC20Aを介してアクチュエータAC1を制御し、ヘッドHD1の位置決めを行なうサーボ制御を実行する。MPU50Aは、ディスクDK1へのデータのライト動作を制御すると共に、ライトデータの保存先を選択する。また、MPU50Aは、ディスクDK1からのデータのリード動作を制御すると共に、リードデータの処理を制御する。MPU50Aは、磁気ディスク装置1の各部に接続されている。MPU50Aは、例えば、ドライバIC20A、R/Wチャネル40A、及びHDC60A等に電気的に接続されている。
【0164】
HDC60Aは、MPU50Aからの指示に応じて、リード/ライト処理を制御し、ホスト100とR/Wチャネル40Aとの間のデータ転送を制御する。HDC60Aは、例えば、R/Wチャネル40A、MPU50A、揮発性メモリ70、バッファメモリ80、不揮発性メモリ90、及びコントローラ通信部150等に電気的に接続されている。なお、HDC60Aは、揮発性メモリ70、バッファメモリ80、及び不揮発性メモリ90に電気的に接続されていなくともよい。
【0165】
HDC60Aは、サーボ制御部610に含まれるサーボ制御部610A、及びコマンド制御部620に含まれるコマンド制御部620Aを備えている。HDC60Aは、これら各部、例えば、サーボ制御部610A、及びコマンド制御部620A等の処理をファームウェア上で実行する。なお、HDC60Aは、これら各部を回路として備えていてもよい。また、HDC60Aの構成の一部は、MPU50Aに備えられていてもよい。例えば、サーボ制御部610A、及びコマンド制御部620Aは、MPU50Aに設けられていてもよい。
【0166】
サーボ制御部610Aは、ヘッドHD1の位置を制御する。言い換えると、サーボ制御部610Aは、ディスクDK1の所定の領域へのヘッドHD1によるアクセスを制御する。サーボ制御部610Aは、トラッキング制御部6101に含まれるトラッキング制御部6101Aと、シーク制御部6102に含まれるシーク制御部6102Aとを有している。トラッキング制御部6101Aは、ディスクDK1の所定のトラックへのヘッドHD1のトラッキングを制御する。シーク制御部6102Aは、ディスクDK1において所定のトラックから目標とするトラックへのヘッドHD1のシークを制御する。
【0167】
コマンド制御部620Aは、コマンド制御部620に含まれている。コマンド制御部620Aは、格納部6201に含まれる格納部6201Aと、コマンド数判定部6202に含まれるコマンド数判定部6202Aと、バイパス演算判定部6211に含まれるバイパス演算判定部6211Aと、第1リオーダリング演算部6221と、第1バイパス演算部6231とを有している。格納部6201Aは、ホスト100等から受けたアクチュエータAC1に対応するコマンドをアクチュエータAC1に対応するキューに格納する。コマンド数判定部6202Aは、アクチュエータAC1に対応するキューコマンド数に応じてアクチュエータAC1に対応するキューコマンド数のレベルを判定する。なお、コマンド制御部620Aは、格納部6201Aと、コマンド数判定部6202Aと、バイパス演算判定部6211Aと、第1リオーダリング演算部6221と、第1バイパス演算部6231と、第2リオーダリング演算部6222と、第2バイパス演算部6232とを有していてもよい。また、コマンド制御部620Aは、バイパス演算判定部6211Aを有していなくともよい。
【0168】
システムコントローラ130Bは、R/Wチャネル40に含まれるR/Wチャネル40Bと、MPU50に含まれるMPU50Bと、HDC60に含まれるHDC60Bとを含む。システムコントローラ130Bは、ドライバIC20B、ヘッドアンプIC30B、ホスト100、及びコントローラ通信部150に電気的に接続されている。なお、システムコントローラ130Bは、第2VCM制御部222、第2MA制御部232、第2リードヘッド選択部322、及び第2リード信号検出部332を有していてもよい。システムコントローラ130Bは、ドライバIC20B及びヘッドアンプIC30Bを含んでいてもよい。また、システムコントローラ130Bは、揮発性メモリ70、バッファメモリ80、及び不揮発性メモリ90に接続されていてもよい。
【0169】
R/Wチャネル40Bは、R/Wチャネル40に含まれている。R/W40Bは、後述するMPU50Bからの指示に応じて、ディスクDK2からホスト100に転送されるリードデータ及びホスト100から転送されるライトデータの信号処理を実行する。R/Wチャネル40Bは、例えば、ヘッドアンプIC30B、MPU50B、及びHDC60B等に電気的に接続されている。
【0170】
MPU50Bは、ドライバIC20Bを介してアクチュエータAC2を制御し、ヘッドHD2の位置決めを行なうサーボ制御を実行する。MPU50Bは、ディスクDK2へのデータのライト動作を制御すると共に、ライトデータの保存先を選択する。また、MPU50Bは、ディスクDK2からのデータのリード動作を制御すると共に、リードデータの処理を制御する。MPU50Bは、磁気ディスク装置1の各部に接続されている。MPU50Bは、例えば、ドライバIC20B、R/Wチャネル40B、及びHDC60B等に電気的に接続されている。
【0171】
HDC60Bは、MPU50Bからの指示に応じて、リード/ライト処理を制御し、ホスト100とR/Wチャネル40Bとの間のデータ転送を制御する。HDC60Bは、例えば、R/Wチャネル40B、MPU50B、及びコントローラ通信部150等に電気的に接続されている。なお、HDC60Bは、揮発性メモリ70、バッファメモリ80、及び不揮発性メモリ90に電気的に接続されていてもよい。
【0172】
HDC60Bは、サーボ制御部610に含まれるサーボ制御部610B、及びコマンド制御部620に含まれるコマンド制御部620Bを備えている。HDC60Bは、これら各部、例えば、サーボ制御部610B、及びコマンド制御部620B等の処理をファームウェア上で実行する。なお、HDC60Bは、これら各部を回路として備えていてもよい。また、HDC60Bの構成の一部は、MPU50Bに備えられていてもよい。例えば、サーボ制御部610B、及びコマンド制御部620Bは、MPU50Bに設けられていてもよい。
【0173】
サーボ制御部610Bは、ヘッドHD2の位置を制御する。言い換えると、サーボ制御部610Bは、ディスクDK2の所定の領域へのヘッドHD2によるアクセスを制御する。サーボ制御部610Bは、トラッキング制御部6101に含まれるトラッキング制御部6101Bと、シーク制御部6102に含まれるシーク制御部6102Bとを有している。トラッキング制御部6101Bは、ディスクDK1の所定のトラックへのヘッドHD2のトラッキングを制御する。シーク制御部6102Bは、ディスクDK2において所定のトラックから目標とするトラックへのヘッドHD2のシークを制御する。
【0174】
コマンド制御部620Bは、コマンド制御部620に含まれている。コマンド制御部620Bは、格納部6201に含まれる格納部6201Bと、コマンド数判定部6202に含まれるコマンド数判定部6202Bと、バイパス演算判定部6211に含まれるバイパス演算判定部6211Bと、第2リオーダリング演算部6222と、第2バイパス演算部6232とを有している。格納部6201Bは、ホスト100等から受けたアクチュエータAC2に対応するコマンドをアクチュエータAC2に対応するキューに格納する。コマンド数判定部6202Bは、アクチュエータAC2に対応するキューコマンド数に応じてアクチュエータAC2に対応するキューコマンド数のレベルを判定する。なお、コマンド制御部620Bは、格納部6201Bと、コマンド数判定部6202Bと、第1リオーダリング演算部6221と、第1バイパス演算部6231と、第2リオーダリング演算部6222と、第2バイパス演算部6232とを有していてもよい。
コントローラ通信部150は、システムコントローラ130、例えば、システムコントローラ130A及び130Bの間の情報の転送を制御する。コントローラ通信部150は、通信部6212を有している。なお、システムコントローラ130は、R/Wチャネル40A及び40Bと、MPU50A及び50Bと、HDC60A及び60Bと、コントローラ通信部150とを有していてもよい。
【0175】
変形例1によれば、磁気ディスク装置1は、複数のアクチュエータACと、複数のアクチュエータにそれぞれ対応する複数のドライバIC20と、複数のアクチュエータにそれぞれ対応する複数のヘッドアンプIC30と、複数のアクチュエータACにそれぞれ対応する複数のシステムコントローラ130と、複数のシステムコントローラの間の情報、例えば、リオーダリング情報等の転送を制御するコントローラ通信部150とを備えている。磁気ディスク装置1は、所定の時間内におけるアクセスコスト計算数を増加させることができる。そのため、磁気ディスク装置1は、アクセス性能を向上することができる。
【0176】
(変形例2)
変形例2の磁気ディスク装置1は、複数の軸受BRにそれぞれ複数のアクチュエータACが設けられている点が前述した第1実施形態及び変形例1の磁気ディスク装置1と異なる。
【0177】
図21は、変形例2に係る磁気ディスク装置1の構成の一例を示す模式図である。
図21に示した例では、ヘッドHDは、ヘッドHD3及びHD4をさらに有している。ヘッドHD1及びヘッドHD3は、例えば、スピンドル12を軸として対称に設けられている。ヘッドHD3は、例えば、ディスクDK1の主面に対向するヘッドHD3と、ディスクDK1の対向面に対向するヘッドHD3とを有している。なお、ヘッドHD3は、1つのヘッドHD3のみを有していてもよいし、3つ以上のヘッドHD3を有していてもよい。ヘッドHD3は、ディスクDK1にデータをライトするライトヘッドWH3と、ディスクDK1にライトされたデータをリードするリードヘッドRH3とを有している。ヘッドHD4は、例えば、ディスクDK2の主面に対向するヘッドHD4と、ディスクDK2の対向面に対向するヘッドHD4とを有している。なお、ヘッドHD4は、1つのヘッドHD4のみを有していてもよいし、3つ以上のヘッドHD4を有していてもよい。ヘッドHD4は、ディスクDK4にデータをライトするライトヘッドWH4と、ディスクDK4にライトされたデータをリードするリードヘッドRH4とを有している。
【0178】
図21に示した例では、アクチュエータブロックBKは、アクチュエータブロックBK3及びBK4をさらに含む。アクチュエータブロックBK3及びBK4は、底壁HSBに立設された軸受BR2に回転可能に取り付けられている。アクチュエータブロックBK4は、底壁HSBとアクチュエータブロックBK3との間に位置している。軸受BR1及び軸受BR2は、互いに底壁HSBの異なる位置に立設されている。軸受BR1及び軸受BR2は、例えば、スピンドル12を軸として対称に設けられている。
【0179】
図21に示した入れでは、アームAMは、アームAM3及びAM4をさらに有している。アームAM1及びアームAM3は、例えば、スピンドル12を軸として対称に設けられている。アームAM3は、例えば、ディスクDK1の主面側に位置しているアームAM3と、ディスクDK1の対向面側に位置しているアームAM3とを有している。なお、アームAM3は、ヘッドHD3の数に応じて、1つのアームAM3のみを有していてもよいし、3つ以上のアームAM3を有していてもよい。アームAM3は、アクチュエータブロックBK3に接続されている。アームAM2及びアームAM4は、例えば、スピンドル12を軸として対称に設けられている。アームAM4は、例えば、ディスクDK2の主面側に位置しているアームAM4と、ディスクDK2の対向面側に位置しているアームAM4とを有している。なお、アームAM4は、ヘッドHD4の数に応じて、1つのアームAM4のみを有していてもよいし、3つ以上のアームAM4を有していてもよい。アームAM4は、アクチュエータブロックBK4に接続されている。
【0180】
図21に示した例では、VCM14は、VCM143及び144をさらに有している。VCM143は、アクチュエータブロックBK3においてアームAM3と反対側に接続されている。VCM144は、アクチュエータブロックBK4においてアームAM4と反対側に接続されている。
【0181】
図21に示した例では、MA15は、MA153及び154をさらに含む。MA153は、例えば、ディスクDK1の主面側に位置しているアームAM3に取り付けられ、且つディスクDK1の主面に対向するヘッドHD3を搭載するMA153と、ディスクDK1の対向面側に位置しているアームAM3に取り付けされた、且つディスクDK1の対向面側に対向するヘッドHD3を搭載するMA153とを有している。なお、MA153は、ヘッドHD3の数に応じて、1つのMA153のみを有していてもよいし、3つ以上のMA153を有していてもよい。MA153は、アクチュエータブロックBK3に接続されたアームAM3の一端部と反対側のアームAM3の先端部に取り付けられている。MA153は、アームAM3に接続された一端部と反対側のアームAM3の動作を微細に制御部する。例えば、MA153は、半径方向におけるヘッドHD3の動作をVCM143による半径方向のヘッドHD3の動作よりも微細に制御する。MA154は、例えば、ディスクDK2の主面側に位置しているアームAM4に取り付けられ、且つディスクDK2の主面に対向するヘッドHD4を搭載するMA154と、ディスクDK1の対向面側に位置しているアームAM4に取り付けされた、且つディスクDK2の対向面側に対向するヘッドHD4を搭載するMA154とを有している。なお、MA154は、ヘッドHD4の数に応じて、1つのMA154のみを有していてもよいし、3つ以上のMA154を有していてもよい。MA154は、アクチュエータブロックBK4に接続されたアームAM4の一端部と反対側のアームAM4の先端部に取り付けられている。MA154は、アームAM4に接続された一端部と反対側のアームAM4の動作を微細に制御部する。例えば、MA154は、半径方向におけるヘッドHD4の動作をVCM144による半径方向のヘッドHD4の動作よりも微細に制御する。
【0182】
図21に示した例では、アクチュエータACは、アクチュエータAC3及びAC4をさらに有している。アクチュエータAC3は、軸受BR2に回転自在に取り付けされている。アクチュエータAC3は、MA153、アームAM3、アクチュエータブロックBK3、及びVCM143により構成されている。アクチュエータAC3は、軸受BR2の回転軸周りでVCM143を駆動し、且つMA153を微細に駆動することにより、MA153に搭載されたヘッドHD3をディスクDK1の所定の位置に位置決めする。なお、MA153を備えていない場合、アクチュエータAC3は、軸受BR2周りでVCM143を駆動することにより、アームAM3に搭載されたヘッドHD3をディスクDK1の所定の位置に位置決めする。アクチュエータAC4は、軸受BR2に回転自在に取り付けされている。アクチュエータAC4は、MA154、アームAM4、アクチュエータブロックBK4、及びVCM144により構成されている。アクチュエータAC4は、軸受BR2の回転軸周りでVCM144を駆動し、且つMA154を微細に駆動することにより、MA154に搭載されたヘッドHD4をディスクDK2の所定の位置に位置決めする。なお、MA154を備えていない場合、アクチュエータAC4は、軸受BR2周りでVCM144を駆動することにより、アームAM4に搭載されたヘッドHD4をディスクDK2の所定の位置に位置決めする。
【0183】
ドライバIC20は、システムコントローラ130(詳細には、後述するMPU50又はHDC60)の制御に従って、SPM12及びVCM14(VCM141、142、143、及び144)の駆動を制御する。ドライバIC20は、SPM13及びVCM14(VCM141、142、143、及び144)に電気的に接続されている。ドライバIC20は、第3VCM制御部223と、第4VCM制御部224と、第3マイクロアクチュエータ(MA)制御部233と、第4マイクロアクチュエータ(MA)制御部234とをさらに備えている。第3VCM制御部223は、VCM143に供給する電流(又は電圧)を制御することでVCM143の駆動を制御する。第4VCM制御部224は、VCM144に供給する電流(又は電圧)を制御することでVCM144の駆動を制御する。第3MA制御部233は、MA153に供給する電流(又は電圧)を制御することでMA153の駆動を制御する。第4MA制御部234は、MA154に供給する電流(又は電圧)を制御することでMA154の駆動を制御する。なお、ドライバIC20の構成の一部(例えば、第3VCM制御部223、第4VCM制御部224、第3MA制御部233、及び第4MA制御部234)は、システムコントローラ130に備えられていてもよい。また、アクチュエータAC3にMA153が備えられておらず、且つアクチュエータAC4にMA154が備えられていない場合、第3MA制御部233及び第4MA制御部234はなくともよい。
【0184】
ヘッドアンプIC30は、第3リードヘッド選択部323と、第4リードヘッド選択部324と、第3リード信号検出部333と、第4リード信号検出部334とをさらに備えている。第3リードヘッド選択部323は、アクチュエータAC3においてディスクDK3からデータをリードするリードヘッドRH3を選択する。第4リードヘッド選択部324は、アクチュエータAC4においてディスクDK2からデータをリードするリードヘッドRH4を選択する。第3リード信号検出部333は、ディスクDK3からリードヘッドRH3によりリードされた信号を検出する。第4リード信号検出部334は、ディスクDK2からリードヘッドRH4によりリードされた信号を検出する。なお、ヘッドアンプIV30の構成の一部(例えば、第3リードヘッド選択部323、第4リードヘッド選択部324、第3リード信号検出部333、及び第4リード信号検出部334)は、システムコントローラ130に備えられていてもよい。
【0185】
コマンド制御部620は、アクチュエータAC3に対応する複数のキューコマンドのリオーダリング演算処理を実行する第3リオーダリング演算部6223と、アクチュエータAC4に対応する複数のキューコマンドのリオーダリング演算処理を実行する第4リオーダリング演算部6224と、アクチュエータAC3に対応する余剰演算リソースによりバイパス演算処理を実行する第3バイパス演算部6233と、アクチュエータAC4に対応する余剰演算リソースによりバイパス演算処理を実行する第4バイパス演算部6234と、をさらに有している。
【0186】
第1リオーダリング演算部6221は、例えば、アクチュエータAC3又はAC4に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC1に対応するリオーダリング情報を第3バイパス演算部6233又は第4バイパス演算部6234に転送する転送方向フラグとが入力された場合、通信部6212を介してアクチュエータAC1に対応するリオーダリング情報を第3バイパス演算部6233又は第4バイパス演算部6234に転送する。
【0187】
第2リオーダリング演算部6222は、例えば、アクチュエータAC3又はAC4に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC2に対応するリオーダリング情報を第3バイパス演算部6233又は第4バイパス演算部6234に転送する転送方向フラグとが入力された場合、通信部6212を介してアクチュエータAC1に対応するリオーダリング情報を第3バイパス演算部6233又は第4バイパス演算部6234に転送する。
【0188】
第3リオーダリング演算部6223は、例えば、アクチュエータAC1、AC2、又はAC4に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC3に対応するリオーダリング情報を第1バイパス演算部6231、第2バイパス演算部6232、又は第4バイパス演算部6234に転送する転送方向フラグとが入力された場合、通信部6212を介してアクチュエータAC3に対応するリオーダリング情報を第1バイパス演算部6231、第2バイパス演算部6232、又は第4バイパス演算部6234に転送する。
【0189】
第4リオーダリング演算部6224は、例えば、アクチュエータAC1、AC2、又はAC3に対応する余剰演算リソースによるバイパス演算を有効にする有効フラグとアクチュエータAC4に対応するリオーダリング情報を第1バイパス演算部6231、第2バイパス演算部6232、又は第3バイパス演算部6233に転送する転送方向フラグとが入力された場合、通信部6212を介してアクチュエータAC4に対応するリオーダリング情報を第1バイパス演算部6231、第2バイパス演算部6232、第3バイパス演算部6233、又は第4バイパス演算部6234に転送する。
【0190】
例えば、第1バイパス演算部6231は、アクチュエータAC1に対応する余剰演算リソースにより、第3リオーダリング演算部6223又は第4リオーダリング演算部6224から転送されたアクチュエータAC3又はAC4に対応するリオーダリング情報に基づいてアクチュエータAC3又はAC4に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第3リオーダリング演算部6223又は第4リオーダリング演算部6224に転送する。
【0191】
例えば、第2バイパス演算部6232は、アクチュエータAC2に対応する余剰演算リソースにより、第3リオーダリング演算部6223又は第4リオーダリング演算部6224から転送されたアクチュエータAC3又はAC4に対応するリオーダリング情報に基づいてアクチュエータAC3又はAC4に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第3リオーダリング演算部6223又は第4リオーダリング演算部6224に転送する。
【0192】
例えば、第3バイパス演算部6233は、アクチュエータAC3に対応する余剰演算リソースにより、第1リオーダリング演算部6221、第2リオーダリング演算部6222、又は第4リオーダリング演算部6224から転送されたアクチュエータAC1、AC2、又はAC4に対応するリオーダリング情報に基づいてアクチュエータAC1、AC2、又はAC4に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第1リオーダリング演算部6221、第2リオーダリング演算部6222、又は第4リオーダリング演算部6224に転送する。なお、第3バイパス演算部6233は、第3リオーダリング演算部6223に含まれていてもよい。
【0193】
例えば、第4バイパス演算部6234は、アクチュエータAC4に対応する余剰演算リソースにより、第1リオーダリング演算部6221、第2リオーダリング演算部6222、又は第3リオーダリング演算部6223から転送されたアクチュエータAC1、AC2、又はAC3に対応するリオーダリング情報に基づいてアクチュエータAC1、AC2、又はAC3に対応する複数のキューコマンドのそれぞれの複数のアクセスコストをそれぞれ計算するバイパス演算処理を実行し、通信部6212を介してバイパス演算処理の演算結果を第1リオーダリング演算部6221、第2リオーダリング演算部6222、又は第3リオーダリング演算部6223に転送する。なお、第4バイパス演算部6234は、第4リオーダリング演算部6224に含まれていてもよい。
【0194】
変形例2によれば、磁気ディスク装置1は、軸受BR1に対してスピンドル12を軸に対称に設けられた軸受BR2に回転自在に取り付けられたアクチュエータAC3及びAC4と、アクチュエータAC3に対応する複数のキューコマンドのリオーダリング演算処理を実行する第3リオーダリング演算部6223と、アクチュエータAC4に対応する複数のキューコマンドのリオーダリング演算処理を実行する第4リオーダリング演算部6224と、アクチュエータAC3に対応する余剰演算リソースによりバイパス演算処理を実行する第3バイパス演算部6233と、アクチュエータAC4に対応する余剰演算リソースによりバイパス演算処理を実行する第4バイパス演算部6234とをさらに備えている。磁気ディスク装置1は、所定の時間内におけるアクセスコスト計算数を増加させることができる。そのため、磁気ディスク装置1は、アクセス性能を向上することができる。
【0195】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0196】
1…磁気ディスク装置、HS…筐体、DK、DK1、DK2…磁気ディスク、12…スピンドル、13…スピンドルモータ(SPM)、14、141、142、143、144…ボイスコイルモータ(VCM)、HD、HD1、HD2、HD3、HD4…ヘッド、AM、AM1、AM2、AM3、AM4…アーム、20、20A、20B…ドライバIC、30、30A、30B…ヘッドアンプIC、40、40A、40B…リード/ライト(R/W)チャネル、50、50A、50B…マイクロプロセッサ(MPU)、60、60A、60B…ハードディスクコントローラ(HDC)、70…揮発性メモリ、80…バッファメモリ、90…不揮発性メモリ、100…ホストシステム(ホスト)、130…システムコントローラ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21